amule_2.3.1+git20151120.0023527bc2.orig/0000755000175000017500000000000012624163266015510 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/BUILDING_MACOSX.txt0000644000175000017500000000146512611472361020521 0ustar morphmorphTo build on MacOSX, there are some experimental scripts located in src/utils/scripts/MacOSX An example basic flow to create an SVN build is to do the following from the root folder where this file is located: mkdir Build cd Build/ WXVERSION=svn WXPORT=cocoa MULECLEAN=YES ../src/utils/scripts/MacOSX/full_build.sh Those commands would build a MacOSX 10.6 (Snow Leopard) compatible application bundle for aMule and aMuleGUI using the architecture of the build system ( i386 or x86_64 ), with the latest SVN vesion of wxWidgets. Other parameters are explained upon execution of the script. The above command was tested on MacOSX 10.7.1 Lion on a x86_64 architecture and provided valid binaries. Unfortunately, other systems may fail silently, or loudly, and there is not much error reporting support. Good luck! amule_2.3.1+git20151120.0023527bc2.orig/Makefile.am0000644000175000017500000000224412611472361017541 0ustar morphmorphSUBDIRS = if COMPILE_NLS SUBDIRS += intl po endif SUBDIRS += docs src unittests EXTRA_DIST = amule.rc amule.ico amule.png convert.ico \ README.Debian-Packages aMule-CVS.spec aMule.spec \ amule_build_install.sh autogen.sh \ po/l10n.xsl dist_icon_DATA = icondir = $(datadir)/pixmaps dist_util_DATA = utildir = $(datadir)/applications if MONOLITHIC dist_icon_DATA += amule.xpm dist_util_DATA += amule.desktop endif if AMULE_GUI dist_icon_DATA += amulegui.xpm dist_util_DATA += amulegui.desktop endif ACLOCAL_AMFLAGS = -I m4 DISTCHECK_CONFIGURE_FLAGS = \ --enable-amulecmd \ --enable-webserver \ --enable-amule-daemon \ --enable-amule-gui \ --enable-cas \ --enable-wxcas \ --enable-plasmamule \ --enable-alc \ --enable-alcc # Avoid everything getting built when doing "make check" check-recursive: SUBDIRS = unittests MAINTAINERCLEANFILES = ABOUT-NLS \ Makefile.in \ aclocal.m4 \ config.guess \ config.h.in \ config.rpath \ config.sub \ configure \ depcomp \ install-sh \ missing \ mkinstalldirs EXTRA__DIST__SUBDIRS = aMule.app debian include $(top_srcdir)/automake/dist-hook.am amule_2.3.1+git20151120.0023527bc2.orig/README.Debian-Packages0000644000175000017500000000541012611472361021260 0ustar morphmorphThis debian rules file controls the buildprocess of the packages of aMule you can either run dpkg-buildpackage -us -uc -b -rfakeroot to build them all, or you can invoke debian/rules directly with the target you want to be build. If you run debian/rules without a target, or with the target help, this help will be printed. Other possible targets are listed below, you can combine them as you need. amule-common, the packages with the skins and i18n-en-gb are build everytime. The Theme for the webserver get build when you build the webserver. amule Builds the normal GUI-Version of aMule ed2k Builds the ed2k-client of aMule cas Builds the cas binary for commandline statistics wxcas Builds the graphical version of cas webserver Builds the webserver for controlling aMule remotegui Builds the remote GUI for controlling aMule daemon Builds the daemonized version of aMule alcc Builds the ed2k-link-creation utility of aMule alc Builds the graphical version of alcc amulecmd Builds the commandline-client for controlling aMule xas Enables the creation of the xas package plasmamule Enables creation of plasma specific parts amule-dbg Creates the debugging symbols for the amule binary ed2k-dbg Creates the debugging symbols for the ed2k binary cas-dbg Creates the debugging symbols for the cas binary wxcas-dbg Creates the debugging symbols for the wxcas binary webserver-dbg Creates the debugging symbols for the amuleweb binary remotegui-dbg Creates the debugging symbols for the amulegui binary daemon-dbg Creates the debugging symbols for the amuled binary alcc-dbg Creates the debugging symbols for the alcc binary alc-dbg Creates the debugging symbols for the alc binary amulecmd-dbg Creates the debugging symbols for the amulecmd binary plasmamule-dbg Creates the debugging symbols for the plasmamule stuff amule-utils Creates the Metapackage for the commandline utilities and all these utils * alcc * amulecmd * cas amule-utils-gui Creates the Metapackage for the graphical utilities and all these utils * alc * remotegui * wxcas i18n- Builds the coresponding i18n-packge. Lang has to be one of ar, ast, bg, ca, cs, da, de, el, es, et-ee, eu, fi, fr, gl, he, hr, hu, it, it-ch, ja, ko-kr, lt, nl, nn, pl, pt-br, pt-pt, ro, ru, sl, sq, sv, tr, uk, zh-cn or zh-tw If no i18n-package is given, all will be build. If you just want en_GB, use i18n-en-only If one of the -dbg targets is choosen, the corresponding binary will be built, too. In this case, debugging is enabled, optimising is disabled. Is no -dbg target choosen, debugging is disabled, optimising is enabled. If you choose to just build a few packages, you have to explicit activate ed2k or xas if you want to get the pkg's The targets can be given in any order and combination amule_2.3.1+git20151120.0023527bc2.orig/aMule-CVS.spec0000644000175000017500000000672312611472361020063 0ustar morphmorph%define svndate %(date +%Y%m%d) %define optflags %{nil} Summary: aMule - another eMule p2p client Name: aMule Version: SVN Release: %{svndate} License: GPL Group: Applications/Internet Packager: The aMule Team (http://forum.amule.org/) Vendor: The aMule Project URL: http://www.amule.org/ Source: %{name}-%{version}-%{release}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %description aMule is a peer to peer file sharing client, based on the well known eMule. Starting with 2.0.0 aMule works on Linux, Mac, *BSD and Windows, which makes it the first multi-platform edonkey network client. %pre echo "****************************************************************************" echo "Warning: This is a svn release!" echo "This release is made for testing purpose and it may cause several problems," echo "burn your house, kill your dog, etc, but it *should* be safe to use anyway." echo "If you would like to test some of the great new features go on and install." echo "Otherwise you may press ctrl-c within the next 10 seconds to abort the" echo "installation." echo -n "Waiting for user... " for i in $(seq 10 -1 1); do echo -n "$i, " sleep 1 done echo " 0, ok, here we go then... Muhahaha :), installing." %prep %setup -q -n amule-cvs %build %configure \ --disable-optimize \ --enable-debug \ --enable-cas \ --enable-wxcas \ --enable-amulecmd \ --enable-webserver \ --enable-ccache %{__make} %{?_smp_mflags} %install [ ! "$RPM_BUILD_ROOT" = "/" ] && %{__rm} -rf "$RPM_BUILD_ROOT" %{__make} DESTDIR="$RPM_BUILD_ROOT" install %find_lang amule %clean [ ! "$RPM_BUILD_ROOT" = "/" ] && %{__rm} -rf "$RPM_BUILD_ROOT" %files -f amule.lang %defattr(-,root,root,-) %{_bindir}/amule %{_bindir}/ed2k %{_bindir}/amulecmd %{_bindir}/cas %{_bindir}/wxcas %{_bindir}/amuleweb %{_bindir}/autostart-xas %{_libdir}/xchat/plugins/xas.pl %{_datadir}/applications/* %{_datadir}/pixmaps/* %{_mandir}/man1/* %{_mandir}/*/man1/* %docdir %{_datadir}/doc/* %{_datadir}/doc/* %{_datadir}/cas %{_datadir}/amule %changelog * Sun Dec 25 2005 Gerd78 - Really disable optimizations by defining optflags to nil. * Mon Apr 19 2005 Marcelo Jimenez - Removed curl dependency, aMule now uses wxHTTP. * Mon Mar 26 2005 Marcelo Jimenez - Added a distro test, so we know the distro. - Tests for UTF-8 enabled LANG to use UTF-8 systray. * Mon Mar 21 2005 Marcelo Jimenez - Removed krb5-libs require and krb5-devel buildprereq. curl-lib and curl-devel is enough. * Tue Mar 08 2005 Marcelo Jimenez - Made it work with cvs snapshots at their very same day. * Wed Jun 16 2004 Ariano Bertacca - added tool package. * Sat May 22 2004 Ariano Bertacca - added webserver package. * Sun Mar 28 2004 Ariano Bertacca - added libcryptopp to dependencies/BuildPreReq - getting wx-config and wxbase-config from installed rpm to avoid problems with people using wxGTK-2.5. Idea taken from aMule-2.0.0rc1.spec done by deltaHF and pure_ascii * Tue Feb 10 2004 Ariano Bertacca - modified the BuildPreReq to satisfy amulecmd build requirements. * Sat Jan 23 2004 Ariano Bertacca - initial amule.spec release amule_2.3.1+git20151120.0023527bc2.orig/aMule.app/0000755000175000017500000000000012611472361017325 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/0000755000175000017500000000000012611472361021122 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Frameworks/0000755000175000017500000000000012611472361023242 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Frameworks/libixml.2.dylib0000755000175000017500000025752412611472361026111 0ustar morphmorph T __TEXTpp__text__TEXT ^< __picsymbolstub1__TEXTl`l __cstring__TEXTnpnp__DATApp__data__DATApdp__dyld__DATAudud__la_symbol_ptr__DATAulLul__nl_symbol_ptr__DATAuu&__bss__DATAu8__LINKEDIT  HG5@executable_path/../Frameworks/libixml.2.dylib P**}d}L'" 4/usr/lib/libgcc_s.1.dylib 4X/usr/lib/libSystem.B.dylib|B}|}cx=g}| x=b$N }cxK|B}h|=kkgT}iN |B!<8c`888K8/A| <| xcgN!8!`|N |a|#yB|{x!A(x;H_||xH |]||Bt9"+A<_U):8B\| .|| N t<cx8`H<cx8` HAH<<cx8`K<cx8`K<cx8`$KcxHA;A8!`a|N |a|~xB|#x!/ApxH 9|{xxH ||xxH e+ AH<_Ti:8B\| .|| N (0(D((p(8!`xxa|K<x8^H@xxH@<x8^HH<x8^H@ydxxH@m<x8^H@]xxK<x8^8!`a|H@0xH HPdxxH@<x8^H@ xxKA<x8^H?(/A<x8^H?у(K<x8^H?xdxH?,/A <x8^H?~,xK%xH /A H /@<x8^H<x8^H?IxH xK<x8_H?)dxxH?xH /A H Q/@<x8^H<x8^H>xH |~xK8!`a|N |a|~yB|#x!A|/AtH|{xxH=||xxH+ AP8@|`4|@0p@p@dp@$H(8!`xxa|KdxxH><x8\DH> xxKE<x8\HH<x8\LH=xdxH=Հ,/A <x8\ 0/0@8` H8I(H |IxB(/@8`=$(H8`iH8`8!P|N ||~y|#x|+x!A/A+A,+@/A(xxKM/@D*|#x;b;`@@/A<```]|Ft/&A/@T8+@0/ A(8+@=&8 +@ @A8|^t8K<x8;'89H7u/A<x889H7Y/@;&8K`<x88:H71/@x<_:;;pHD/9AW 6|X;H(/FAW 6|X;HW 6|X;:~x|txH6A/@H`<x88:H6/@<_:;;lH^ :|X;Ј~x|txH5/@AT/;@L8+@0/ A(8+@<^8 +@ @A|]P8BA@p;}Hd/>AX88K8Ku/A8H 8}88|~Ky8KE/@܀}H };|dxxxK/@X|8!`x|N |9 hB|{x|#x|+x!``/À8/A?2H<_2H ;|t/A xH/||y@ܓ8```/<@T?20xH/-x|yxx%xH/Y/@>9?24A<x2,H+I|yy@cxK5/A{/AKU/zA8:2H ;|t/AxH*/@cxK/A|{/Ap<80H*/@\9 8HX/<@cxK/A4{/A(K/zA |dx8{ H/@CxK,@;zcxK/AЃ<81XxH*,@9 {8K<x80H)/Al9 8K<x2(H)/@0{ /AXK/zAP89 K8/@,0/A /88A88xK8K/AxKi/zAcxK/AЀ[/=@cxK/A|t/"A /'@xH)||y@(H||t/@ ;H /"@8c8"H"m,Ah4cA /A |t/@HD/@<}xK|{y@,Kx/@$HDB/@Ѐ8/@H  /@Kِ~ HH H,|4xKu|{y@TH/4A8`H|~yA4~~~~~ }Ku/~@xH ;`fH }/AKI/~A } /A K-/~@xKK00;`H`a@P88H|{y@|48H$a@P8DH9|{y@x|4DKuHxHa@L\4,H~xH]/A8(/@cxx8HH|{y@aH$xKӽ|{y@|4H8H|{yAHT/@\|0L{H/@cx0K̓ HxK1xxH/@cxH}4aLH/@h^8;`8\48#x(/A(/A$@,/Ad8`H\[(ixH |IxB(/@=$(H}(,}$/A88`H8`iH8`8!`A|N |a||y|#x|+x!A/A/A|#xK 8/A؃,H}xH/A(/@|0x88H |c4/|`x@cx8H/}@a8H u8fHh8x8K |~4/AHa8H IxH<}/AHcxHQ8f/}@H8iH88!p|xa|N |,|#x!AX/AP,H~xH|}yA(/@8`H$~/AHu8`H8`i8!P|N |,|#x!A(/A(/A$@,8`HP[(ixH |IxB(/@(H}(,}$/8`A8H8`i8!`A|N ||yyB|#x|+x|3x!PA/A/A/A|+x;Ki/A;A<;fCxKxHQ/a(/A"(/AI$,@<,88`($H8`i8!`a|N /M 88 =""<> > #document*/>01234567890123456789ABCDEFabcdef&#x&##cdata-section#textxmlnsxmlns:rbxmlhttp://www.w3.org/XML/1998/namespacehttp://www.w3.org/2000/xmlns/o o,o4o<no@oHoPoTnnnoXod--..09E`a@@KR`ipp   < < > L M M Q T b c f o   < < > > ? ? @ B G H K M f o p q   < < > C G H K M V W f o   > D F H J M U V f o   > C F H J M W W f o114:FFGNPY )557799>>??q 000*0/010500000000::AZ__az14>AHJ~P OQ\^1VYYa!:AJq  9 = = X a     ( * 0 2 3 5 6 8 9 Y \ ^ ^ r t     ( * 0 2 3 6 9 = = \ ] _ a     ( * 3 5 9 ` a     ( * 9 ` a.0023@E@GIi    <<>>@@LLNNPPTUYY_acceeggiimnrsuu EHMPWYY[[]]_}!&!&!*!+!.!.!!000!0)0A00011,Nף p@p@p@p @p@p@p@p@p @p$@p(@p,@p0@p4@p8@ul@up@ut@ux@u|@u@u@u@u@u@u@u@u@u@u@u@u@u@u@    / B, Z l- y. 0 1 1 2 3L 49; $<9=MOcpuppp ppppp p$p(p,p0p4p8p<r("u0HlE1h]:t-3``t"<9,P|dd ched<ee0(hEh\dbLaffc8b|`+gHgkgXa``<X%_7TQY,mX$]X^lTD ^#_ ?T0QWn]8_VlZU8Y"T\:M_sjpiiik4 i j7SlSRfRyRR# * )!X@-`T,l**88 '.)(O(Hy'`  H 0 F ]0 x   D   $ H , ?" U% l` x p "(     , =H P c u T D Q QD Q RP Q Pl /P C K R Y _ f m u }          *+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ *}*%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_ixmlAttr_free_ixmlAttr_init_ixmlCDATASection_free_ixmlCDATASection_init_ixmlCloneDOMString_ixmlDocument_createAttribute_ixmlDocument_createAttributeEx_ixmlDocument_createAttributeNS_ixmlDocument_createAttributeNSEx_ixmlDocument_createCDATASection_ixmlDocument_createCDATASectionEx_ixmlDocument_createDocument_ixmlDocument_createDocumentEx_ixmlDocument_createElement_ixmlDocument_createElementEx_ixmlDocument_createElementNS_ixmlDocument_createElementNSEx_ixmlDocument_createTextNode_ixmlDocument_createTextNodeEx_ixmlDocument_free_ixmlDocument_getElementById_ixmlDocument_getElementsByTagName_ixmlDocument_getElementsByTagNameNS_ixmlDocument_importNode_ixmlDocument_init_ixmlDocument_setOwnerDocument_ixmlDocumenttoString_ixmlDomTreetoString_ixmlElement_findAttributeNode_ixmlElement_free_ixmlElement_getAttribute_ixmlElement_getAttributeNS_ixmlElement_getAttributeNode_ixmlElement_getAttributeNodeNS_ixmlElement_getElementsByTagName_ixmlElement_getElementsByTagNameNS_ixmlElement_getTagName_ixmlElement_hasAttribute_ixmlElement_hasAttributeNS_ixmlElement_init_ixmlElement_removeAttribute_ixmlElement_removeAttributeNS_ixmlElement_removeAttributeNode_ixmlElement_setAttribute_ixmlElement_setAttributeNS_ixmlElement_setAttributeNode_ixmlElement_setAttributeNodeNS_ixmlElement_setTagName_ixmlFreeDOMString_ixmlLoadDocument_ixmlLoadDocumentEx_ixmlNamedNodeMap_addToNamedNodeMap_ixmlNamedNodeMap_free_ixmlNamedNodeMap_getItemNumber_ixmlNamedNodeMap_getLength_ixmlNamedNodeMap_getNamedItem_ixmlNamedNodeMap_init_ixmlNamedNodeMap_item_ixmlNodeList_addToNodeList_ixmlNodeList_free_ixmlNodeList_init_ixmlNodeList_item_ixmlNodeList_length_ixmlNode_allowChildren_ixmlNode_appendChild_ixmlNode_cloneAttr_ixmlNode_cloneAttrDirect_ixmlNode_cloneCDATASect_ixmlNode_cloneDoc_ixmlNode_cloneElement_ixmlNode_cloneNode_ixmlNode_cloneNodeTree_ixmlNode_cloneNodeTreeRecursive_ixmlNode_cloneTextNode_ixmlNode_compare_ixmlNode_free_ixmlNode_freeSingleNode_ixmlNode_getAttributes_ixmlNode_getChildNodes_ixmlNode_getElementsByTagName_ixmlNode_getElementsByTagNameNS_ixmlNode_getElementsByTagNameNSRecursive_ixmlNode_getElementsByTagNameRecursive_ixmlNode_getFirstChild_ixmlNode_getLastChild_ixmlNode_getLocalName_ixmlNode_getNamespaceURI_ixmlNode_getNextSibling_ixmlNode_getNodeName_ixmlNode_getNodeType_ixmlNode_getNodeValue_ixmlNode_getOwnerDocument_ixmlNode_getParentNode_ixmlNode_getPrefix_ixmlNode_getPreviousSibling_ixmlNode_hasAttributes_ixmlNode_hasChildNodes_ixmlNode_init_ixmlNode_insertBefore_ixmlNode_isAncestor_ixmlNode_isParent_ixmlNode_removeChild_ixmlNode_replaceChild_ixmlNode_setLocalName_ixmlNode_setNamespaceURI_ixmlNode_setNodeName_ixmlNode_setNodeProperties_ixmlNode_setNodeValue_ixmlNode_setPrefix_ixmlNode_setSiblingNodesParent_ixmlNodetoString_ixmlParseBuffer_ixmlParseBufferEx_ixmlPrintDocument_ixmlPrintDomTree_ixmlPrintDomTreeRecursive_ixmlPrintNode_ixmlRelaxParser_ixml_membuf_append_ixml_membuf_append_str_ixml_membuf_assign_ixml_membuf_assign_str_ixml_membuf_destroy_ixml_membuf_init_ixml_membuf_insert_fclose_fopen_fread_free_fseek_ftell_malloc_memcpy_memmove_memset_realloc_strchr_strcmp_strdup_strlen_strncasecmp_strncmp_strncpy_strstrsingle module__mh_dylib_headerdyld_stub_binding_helpercfm_stub_binding_helper__dyld_func_lookup___initialize_Cplusplus_copy_with_escape_safe_strdup_Parser_UTF8ToInt_Parser_freeElementStackItem_Parser_freeNsURI_Parser_free_Parser_skipString_Parser_skipComment_Parser_copyToken_Parser_isNameChar_Parser_skipMisc_Parser_getNextToken_Parser_getNextNode_ixml_membuf_set_sizedyld__mach_header_BEGIN_DOCTYPE_XMLDECL_WHITESPACE_END_PI_BEGIN_PI_XMLDECL2_BEGIN_COMMENT_END_COMMENT_COMPLETETAG_ENDTAG_CDSTART_CDEND_DEC_NUMBERS_HEX_NUMBERS_NameChar_Letter_g_error_char_Parser_LoadDocument_Parser_freeNodeContent_Parser_isValidXmlName_Parser_setErrorChar_Parser_setNodePrefixAndLocalName __TEXT``__text__TEXTh gSh __cstring__TEXT^-^__DATA``__data__DATA``__dyld__DATAee__bss__DATAe|__IMPORTpp__jump_table__IMPORTpdp8__LINKEDITTT H5G@executable_path/../Frameworks/libixml.2.dylibx؏| P((}h}P 4/usr/lib/libgcc_s.1.dylib 4X/usr/lib/libSystem.B.dylibXT/ZXZUWVS,[҉E$1dE"84S9SD$E$:<'>S獃DSߍKS׋Et$$J<GF;}!,[^_U8]E [uu}E4$ E4$; 4$  ~J,rE]u}T:UT$E$,:F,t'MRD$U$:ED$F,$4$t$fHuZRD$U$^RD$E$94$UT$$`RD$E$9UT$E$94$t $Ifu^RD$U$ZRD$E$@94$yQ]u}U8uu}} ][…q4$.E4$\E4$f Iȸ੘u uTu+} ]u}uE<$D$8rOD$<$}8U`uOwOD$<$V8E<$D$G8N,t!lOD$<$.8|$F,$!4$t#$fHuyOE܉D$<$7}OD$<$7yOE܉4$|$$OD$<$7E<$D$7E܉}]E u}7]u}U8uu}} ][…P4$E4$E4$f (ȸ੘u uTu } ]u}uE<$D$6MD$<$6UMMD$<$6E<$D$6F,t!MD$<$6|$F,$x4$mt$>ME܉D$<$M64$D|$$;MD$<$'6E<$D$6E܉}]E u}6]u}Uiuu}} …uD$t$<$,uȋ}U18}}][ut,u؉4$4LD$4$u5t$<$CE؋]u}U1(}}utu4$u4t$<$ Eu}U18}}][ut,u؉4$54KD$4$4t$<$`E؋]u}U1(}}utu4$3t$<$&Eu}UEEUVMu …u9tD$L$4$+i^UEt[1UEt[U(EEtD$ED$$*+EU(EEt8tD$ED$$*EÐU 1W}_U 1W}_UVutht$ZFt$ZF t$ZFt$ZFt$Z~u F4$Zu^Z^UVut.F $F($F,$u^H^UEtU1UtU1UtBUiuu}} t0F t$YF t<$ ZfF t1ҋuЋ}Uiuu}} t0Ft$YFt<$YfFt1ҋuЋ}Uuu}} Ft$GYFt<$kYfFt1ҋuЋ}U1UtB U1UtBU1UtBUiuu}} t0Ft$XFt<$XfFt1ҋuЋ}U1UtBU1UtBU1UtB U1ɉEtP ыR(uɉU1UtB$U1UtB(U1UtB0UWVu} …u1";wt|$F $u v(Ѹ^_UU E9BUE@ws0Ht( uU Bƒ E xt1Uuu }}9ttD$$uWugFD$G$_WuQG;FuIF D$G $AWu3FD$G$+WuFD$G$Wu1u}UEPP@(uU(uu}tJ$VEt7$}?0v t$<$0u v(uE E$<01u}U(uu}EtP~uJ$3VEt7$}0Cv,t$<$Cu v(uE E$3C1u}U1Ut 1z UUtzu R,u1UWV}t$UM 1t-E ff$Ut<$t $PU^_UWV}$<?Uty$^:4$D$ouLG4$D$u9G 4$D$u&G4$D$uG4$D$`t 4$1:F^_UE$Pt@4U][u$4{Tt1$9CD$4$t 4$19F ]uUWV}$8#T$.G44$D$.u^4$D$EEt}UfzuI} D$<$Ot"}t FO)ȅuEUD$$)}E U|$D$B $r}(}|,[^_UhEuU u][}EԉUutZfxuL$D$%Ot(u䍃A>t FO)ȅuuԉt$}<$(Eԅu1UԋB u}E]uu} }UWVS[,=EEUfzz}J …E L$$]Nt#u }t FO)ȅuKEUD$$$Nt#u}t FO)ȅuEUD$$'}EU |$ }D$T$G $G(E,[^_UxEuU }u}][EĉUu܉}fx@UĉEJ …L$u4$HMt&<}t FO)ȅuMu܉t$}<$ Mt%<t FO)ȅuuĉt$}؉<$&Eąu1UċB u؋}܋UE]uu}}U U$4u}aLt61 U4$D$UB4$D$4F}uU$4u}Lt61 U4$D$,UB4$D$F}uU8uuE ][}EP~ FF(_P ____04$U܉ET$F,$|U׉B,M܅E܉D$F $WUׅB tPUP@(uE܉D$F($'UB(uUP$4$jEE܉D$F($UׅB(tZP$Uu]u}u]u}[4$U܅҉t E܉D$F $G tx1]u}Uuu}Fw s`Hu tV1a4$NjE D$F,$5G,E t(E D$F $G x@(uG(E 4$D$@u}U1UM t'zu$(t@4 M U-US[u8$lI[UYE>UVS[ %=u F%uFF%=uBF%u4F%u&F ? F? %=uTF%uFF%u8F%u*F? F? F딉%=uqF%ucF%uUF%uGF%u9F? F? F? F%=F%u}F%uoF%uaF%uSF%uEF? F? F? F? Fx>t  [^UVƃt$FFt$FFFt$FF^UVƃt$rFFt$cF^UVutOt$AFFt$2FF t$#FFt$FFt E^F^UWV Et$EE$E $E@0E9EUz w<$EuEp$|EuEuU$gE ^_UjWV E…tF ?UFE0>t<$WE|$4$D$QEu҉<$;EU1 ^_U8]Eu}8j[tA4<$ED$Et!9tx-tU$DU1 ]u}UjWV }7D$:4$|DuGGtn1oP)FUE4$0DGtMt$D$$$DED$D$G$9DEGuG$CGf ^_UWVS\[…ɉE M;}E<&~QȍAƒ u$A=v =v =wE7Uƍ@ƒ uԍF=vʍ =v=vF9<뜍2D$D$<$BuE"}kr2D$D$<$Bu<Eōw2D$D$<$Bu>E뙍2D$D$<$ZBu'Ej|2D$D$<$+Bu E*3D$D$<$B3G1EȉU7}9Ủt }FỦt ỦtEȋEЈEEỦT$$xAu9}};Fƒ u(F=v =v=)}ȋE.3D$D$<$A3W1UЉE UEЍtBЋEЈE׋EĉUT$$@u9}tL};uFFƒ u$F=v =v =w)}ЋE@EF9E&ED$EGU$m&EEE؉D$E$m}BE؉?ȀEE뿁* E؉?ȀEى?ȀEE덁;E؉ ?ȀEى?ȀEډ?ȀEEJIE؉?ȀEى ?ȀEډ?ȀEۉ?ȀEEE؉?ȀEى?ȀEډ ?ȀEۉ?ȀE܉?ȀEE19}sj\[^_UWV1S[EU썃0E7‹E 9E}z A9E~u^fWU<>tLE‰EE1#tuuUGouWU GEUtw0^_U]u}EUMx[?uh Ex8t ?+Uz?+MGytD$4$:u߀?i}?<V_+4$:t$<$ED$:c+}}4$:t$<$D$:tGGȈEAƒ u$A=v =v =w}u+uȅ } F$ :UB Mȉt$$L$&:UB0*rM_ Ac+$9}EG;O+4$9t$<$D$9u E }Ex1 G+4$9t$<$D$|9;+4$\9t$<$D$Q9K+4$69t$D$E$(9G+4$ 9t$D$E$8u;C+}D$<$8A99G+$8E}UzMA8E*xx}UE@EMM<[+<$D$'7EUB|vMqAA?+} E~xUrtMD$ $6uԋE}}'*Eǹt FO)ȅM<<EUBMD$E $Yi}<$:VGGUBBA7My*I}MЋuйt FO)ȅuMyA8yuЍ'*}t FO)ȅuMA8}G8ExW+<$D$5u5UB yMtA}PEx8Kp0@E1U_1UEMA8=}O<"<'wL$4$O4u<<<&t9rE$ EP9t)]UGBztIMAu;$3}GE*@UR0Uċ}Mut FO)ȅu!MċAt$&3}GuvIu*}t FO)ȅM $aMąy}ċWt,MA$D$2u}GMUĉBMċq "Vt}G$D$2t~vu$ i2@@UBFtMAu4$ 2EċP up (w#t$1UB{MI,ɉM}w0yuAD$$1EFt8UB +MA,UD$$1tF<$D${1~|$<$d1t%v |$F$L1t vu(FtMA }G,UBBt~M!*I}MԋuԹt FO)ȅtLuԍ'*}t FO)ȅtMAA}G8j f]u}UWVS[$@-0EfEC}1E$E $ED$E $/D$D$$/4$/u4$|/E @$/Uu4$T/EfD$D$4$D/Mt$ |$D$$/M4$/UMBM $EEEEE܉$ Et"E lUEfuE܋MA4J EeUGBMytD$4$.u׋F 4$.t$<$D$.uPEN J E UFBMqtD$<$*.u׋E EjEB Ex4$.t$<$D$.umUG׃Bu5<uN!<"uAD$"$-}A…tu_EEQEM $UMEE4Ew H%EEU܃x<u @0uMA<MAAEԉD$E$D$EED$Eԉ$Eh}thUR0UT MAt|$$i,u UBuOMq |$F$C,tvuE@EEuGMQ0MruBt΅u/RuEx8uV uaF u uԋUr,Mt$A4$1E}ԋEx4:$y+t7@@@ @u4$-+Ef:Gt FtG tFu 뽋UB0Fr0ED$ED$E܉$EEMD$A41E؉D$ED$E܉$EE؋UD$B4$M܋UE}MB4p,|$$y*Qv(uMEԉD$|$ $E0ED$Eԉ$EEԋUD$D$B4$fE}u`MEI0D$M$)UMBA0Ex w<$x)uU$g)Mq4D$E$)u^FUB4B8EME $}t Ej(E@0uE܋U*Eԉ$ E M $E܉$MEEČ[^_UWVƃ @9wN9v`)‰ЋV 9BMFV )9vAUE@D$$(uGD$$x(ft }EF1҃ ^_UE@ @@U(uu}}x{O9tU EE…u`EEuLGT$)UD$$'E7D$E 4$D$'UWWEEu}U}}uu G4$D$ 't$<$D$,u}UUBD$$D$ E D$UVut%$&F FF^UM }}uuE1$4Eu$UU |$$T$&U8z}uUVu 4$&t$D$E$x^UE@U1UR@uUVE p$&u^UMVt11R@uH1;E rIF;u …ut1^UjWV} utau$%tD@6u>'Ft$j%tF8@1f^_UUWt 1_U1UtB4Ujuu}} …u"F4t$$<$ %ɉF4fuȋ}UWVM} …u#q,|$$$uF v(u1^_UiWV E} …UG0;B0w8 W8B,ƉED$$I$tv(uMu/FF$V(tx(tz$U;r,uz,UtDE0=UB(‹@(uz(W$EG$G(x,Et U1Ƀ ^_UWV E} …E<$Ep,|$$j#v(uUED$|$B0$ fEu$-#FuE$:fbEUD$D$$Lft?E$1Ft$"E$"fFu i1҃ ^_UiWVu} …u8v,|$$p"t v(uFt$""F1Ƀ^_UWVu} …1u v,|$$"tv(u^_UWVE} p,|$4$AHtv(u^_UV$uM E…tED$L$4$/E$^UM}} u…uAEt:q,1ED$F$M!u|$F $:!uF v(u1u}UiWV U} …UG0;B0G8t 9± EG8P,։U/GD$F$ uG D$F $ tv(u͋Eu*>F$V(tx(tz$E;p,ux,U1ɉ2'Ft$tF8@1f^_UWV Uu E Eug:ED$E $t v(Eu9Mkt11}u'R(@uH19v(F9…u1 ^_<>&'" =""<> > #document*/>01234567890123456789ABCDEFabcdef&#x&##cdata-section#textxmlnsxmlns:rbxmlhttp://www.w3.org/XML/1998/namespacehttp://www.w3.org/2000/xmlns/9_C_J_O_^R_Y_^_b__^^e_p_--..09E`a@@KR`ipp  < < > L M M Q T b c f o   < < > > ? ? @ B G H K M f o p q   < < > C G H K M V W f o   > D F H J M U V f o   > C F H J M W W f o 114:FFGNPY )557799>>??q 00*0/0105000000000::AZ__az14>AHJ~P OQ\^1VYYa!:AJq 9 = = X a     ( * 0 2 3 5 6 8 9 Y \ ^ ^ r t     ( * 0 2 3 6 9 = = \ ] _ a     ( * 3 5 9 ` a     ( * 9 ` a .0023@E@GIi    <<>>@@LLNNPPTUYY_acceeggiimnrsuu EHMPWYY[[]]_}&!&!*!+!.!.!!!00!0)0A00001,1N` `$`(`,`0`4`8`<`@`D`H`L`P`T`  h  | *  < &I &[ 7)x ) * * "+ N, 1 2 3 4TG3`E `T$`](`i,`q0`{4`8`<`@`D`H`L`P`T````be?)-@2D&Y+eUKU"9PXd`XW;YXZmY(\EH\dVLV[?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (}(#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~_ixmlAttr_free_ixmlAttr_init_ixmlCDATASection_free_ixmlCDATASection_init_ixmlCloneDOMString_ixmlDocument_createAttribute_ixmlDocument_createAttributeEx_ixmlDocument_createAttributeNS_ixmlDocument_createAttributeNSEx_ixmlDocument_createCDATASection_ixmlDocument_createCDATASectionEx_ixmlDocument_createDocument_ixmlDocument_createDocumentEx_ixmlDocument_createElement_ixmlDocument_createElementEx_ixmlDocument_createElementNS_ixmlDocument_createElementNSEx_ixmlDocument_createTextNode_ixmlDocument_createTextNodeEx_ixmlDocument_free_ixmlDocument_getElementById_ixmlDocument_getElementsByTagName_ixmlDocument_getElementsByTagNameNS_ixmlDocument_importNode_ixmlDocument_init_ixmlDocument_setOwnerDocument_ixmlDocumenttoString_ixmlDomTreetoString_ixmlElement_findAttributeNode_ixmlElement_free_ixmlElement_getAttribute_ixmlElement_getAttributeNS_ixmlElement_getAttributeNode_ixmlElement_getAttributeNodeNS_ixmlElement_getElementsByTagName_ixmlElement_getElementsByTagNameNS_ixmlElement_getTagName_ixmlElement_hasAttribute_ixmlElement_hasAttributeNS_ixmlElement_init_ixmlElement_removeAttribute_ixmlElement_removeAttributeNS_ixmlElement_removeAttributeNode_ixmlElement_setAttribute_ixmlElement_setAttributeNS_ixmlElement_setAttributeNode_ixmlElement_setAttributeNodeNS_ixmlElement_setTagName_ixmlFreeDOMString_ixmlLoadDocument_ixmlLoadDocumentEx_ixmlNamedNodeMap_addToNamedNodeMap_ixmlNamedNodeMap_free_ixmlNamedNodeMap_getItemNumber_ixmlNamedNodeMap_getLength_ixmlNamedNodeMap_getNamedItem_ixmlNamedNodeMap_init_ixmlNamedNodeMap_item_ixmlNodeList_addToNodeList_ixmlNodeList_free_ixmlNodeList_init_ixmlNodeList_item_ixmlNodeList_length_ixmlNode_allowChildren_ixmlNode_appendChild_ixmlNode_cloneAttr_ixmlNode_cloneAttrDirect_ixmlNode_cloneCDATASect_ixmlNode_cloneDoc_ixmlNode_cloneElement_ixmlNode_cloneNode_ixmlNode_cloneNodeTree_ixmlNode_cloneNodeTreeRecursive_ixmlNode_cloneTextNode_ixmlNode_compare_ixmlNode_free_ixmlNode_freeSingleNode_ixmlNode_getAttributes_ixmlNode_getChildNodes_ixmlNode_getElementsByTagName_ixmlNode_getElementsByTagNameNS_ixmlNode_getElementsByTagNameNSRecursive_ixmlNode_getElementsByTagNameRecursive_ixmlNode_getFirstChild_ixmlNode_getLastChild_ixmlNode_getLocalName_ixmlNode_getNamespaceURI_ixmlNode_getNextSibling_ixmlNode_getNodeName_ixmlNode_getNodeType_ixmlNode_getNodeValue_ixmlNode_getOwnerDocument_ixmlNode_getParentNode_ixmlNode_getPrefix_ixmlNode_getPreviousSibling_ixmlNode_hasAttributes_ixmlNode_hasChildNodes_ixmlNode_init_ixmlNode_insertBefore_ixmlNode_isAncestor_ixmlNode_isParent_ixmlNode_removeChild_ixmlNode_replaceChild_ixmlNode_setLocalName_ixmlNode_setNamespaceURI_ixmlNode_setNodeName_ixmlNode_setNodeProperties_ixmlNode_setNodeValue_ixmlNode_setPrefix_ixmlNode_setSiblingNodesParent_ixmlNodetoString_ixmlParseBuffer_ixmlParseBufferEx_ixmlPrintDocument_ixmlPrintDomTree_ixmlPrintDomTreeRecursive_ixmlPrintNode_ixmlRelaxParser_ixml_membuf_append_ixml_membuf_append_str_ixml_membuf_assign_ixml_membuf_assign_str_ixml_membuf_destroy_ixml_membuf_init_ixml_membuf_insert_fclose_fopen_fread_free_fseek_ftell_malloc_memcpy_memmove_memset_realloc_strchr_strcmp_strdup_strlen_strncasecmp_strncmp_strncpy_strstrsingle module__mh_dylib_headerdyld_stub_binding_helper__dyld_func_lookup_copy_with_escape_safe_strdup_Parser_UTF8ToInt_Parser_freeElementStackItem_Parser_freeNsURI_Parser_free_Parser_skipString_Parser_skipComment_Parser_copyToken_Parser_isNameChar_Parser_skipMisc_Parser_getNextToken_Parser_getNextNode_ixml_membuf_set_sizedyld__mach_header_BEGIN_DOCTYPE_XMLDECL_WHITESPACE_END_PI_BEGIN_PI_XMLDECL2_BEGIN_COMMENT_END_COMMENT_COMPLETETAG_ENDTAG_CDSTART_CDEND_DEC_NUMBERS_HEX_NUMBERS_NameChar_Letter_g_error_char_Parser_LoadDocument_Parser_freeNodeContent_Parser_isValidXmlName_Parser_setErrorChar_Parser_setNodePrefixAndLocalNameamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Frameworks/libthreadutil.2.dylib0000755000175000017500000013560412611472361027277 0ustar morphmorphM `[ H__TEXT00__text__TEXT$L__picsymbolstub1__TEXT** __cstring__TEXT-+-__literal8__TEXT//H__DATA00__data__DATA00__dyld__DATA00__la_symbol_ptr__DATA0 \0 __nl_symbol_ptr__DATA0h0h.8__LINKEDIT@@  P@executable_path/../Frameworks/libthreadutil.2.dylib@QG8 P+9EL+FFCD0@ 4/usr/lib/libgcc_s.1.dylib 4X/usr/lib/libSystem.B.dylib|B}|}cx=)l}| x=)hN }cxK|B}h|=kk)8}iN |B!<8c&88K8/A| <| xc)tN!8!`|N ,8A8 |xN |iy8`M i/@ iH#I 8B I N |,9 !AD/A0C 8B@9 C H|#xH# 9 8!P}#Kx|N ||~y8`!@H H"ɓ~/@~ 8!P|N ||~y8`!AD;0,8~8 8dK8  8`8!P|N ||~y|#x|+x!AL/AD8~Kq,A48=}i#^8B^H8`8!P|N |eyM 8 Kt||}y|+x!Ax Ap8 Ad/A\$8} D"K]/8B]A,,/A | x| x;N!H;8!Px|N |a|~y|#x8`!A@; HxexKx@88~K8`8!`a|N ,A/A cN 8`N ,A/A c N 8`N |byA/Ad8 L 8`N |`yA/AdL 8`N |a|}y|+x!A`/@x; H@0/A$| cx| xN!/AH A@;8!`xa|N ,8A|xN ||~y|#x|+x!AL/AD8~K,A48=}i#^8B^H8`8!P|N |eyM Kxd|x C|bN ||}x8et|#x!K|~yAH]8~ =} ^>~ ]=^>HU8!Px|N ||~xB!(Cl/;A? Ad<8a88x8 PH)||y@0a8H9||xH8~HxH^lAH^l@^8!`x|N ,8A89 9`8@d8'#cC# c88|xN ||~y|#x|+x!88A/A/@;8< H^l(@(xKdxxK,AH$p|P/@xH<` HP~ 8~,HyH8~HxH /@^dx8]dHE8`H8`8!`|N ||~y|#x!At/Alh/@Hр$^(8`>,~0]=} 4^8><]=h/@xH8`H8`8!P|N ,A,/A$88@8H8@|CxN ,A+A8H8|xN ,8A 8|xN ,8A 8|xN ,8A 8|xN ,8A 8|xN ,8A 8|xN ,8A 8|xN ,8A 8|xN ||~yB!AL8`H|dx<8c0H`<8cPHh<8chHd<8cHq <8c@D!@HQ $<8cА@D!@H148<8c@D!@H\<8c8HL<8cPHT<8clHသP<8cHрX<8cH<@<8c@D!@HDH<8c萁@D!@8!`|Hp8!`|N ,8A 8|xN ||}yB|#x!AX/APh/@Hex8@8pHՀ/@4<@C0lA8<<_ɢ8ɞh($ٞ H<_ /@4<@C0lA@D<_ɢ@ɞh($ٞ H<_ 0/@4<@C0lAHL<_ɢHɞ(h($ٞ4H<_4]l8}^XpTK-~`8}K!~d8}K8@~hh/@xHQ8@H8@8!`|Cx|N ||+xB|~x|#x!8a8H!] 8=`C0/]!Ё~4||JXA(<<?@ ct88cHxH8/@;8< xxdK|yy@x?@ HaHЀ}/@D8~$x;@K/@?@ >~Ё^l^p|JPP`ZH0/@ 8~K8~KxK/@ ;/A|ր^0@/@8~,HH$x8~tKU^dx8\dK4;@8!pCx!|N |A|{y|#x|+x!8A`/@;8;쓡TH8x88KA,@ ;888xK%,A|dxH(;888xK|zyAhDx]x8=} ^>~ ]=}^>~Kx8{tK)Hl[ /Ap @d J8{t*j ^>~ J*j^>~ K[ cxH 8HcxH< 8!|xA|N |A|}y!8AH;};]tHLcxK-||x/A| ~| xN!xCxK%cxx8Kр/@cx8;}KaHLcxKŃ||x/A| ~| xN!xCxKcxx8Ki/@cx8;}KHLcxK]||x/A| ~| xN!xCxKUcxx8K/@cx8K𕃝 /A0/A| || xN!xCxK 8;,;HhxHHxxHel/AxH/@xH/@CxKxHxH/@88!`|xA|N |@&||~x;#H;;`>C0H A!B8.:::?8HI^l#x;AH8B^lHxHICxHaH]La<``a<|`H8a8H<_˘tbxHAx8~tK은^8`|8B^H]A8Xɸt|P8a8l\`Xh(*|H)/@؀^p8B^pH܀^/9">@4~óx;`K8|}xx.xK)~óxH8/@@~x;`K8|}xxx.K~xx8KmHl/@~x;`Kq8|}xx.xK~xK/@^8B^?`b?8`c{McB@H/<@>l$A(/A,>lH@ ^9)#x>l8B^H,CxHiaL8~,x|ؖp8@|6p|PAH |P@Z֓DH%/@4/@(/@ /@h/A,^8`?C0ؐ8B^H%A8`ɸt|P8a8ld``h(*HCxH /AH~8!Llhmkl pltɁh]xa(}"HPm)!|p((ɡ(x(zhO@4T^\8~88B *^\TKx8~H^/AH~,!Llmk lɁ]a(}"HPm)!((ɡ((zhO@8h^p8~88B *^phKYx8~K=Kh/A^l#x9">lHd .A,^p #x;`8B^pH =xH || | xN!Kt^l8 #x8B^lH xH Y8!8`a|}p H |a|~yB|#x;`!A8;`#H |}xxH 88~,H 88~HH /@/A@\<| $^(>,~0\<<^4>8H<5^$A48'9 9`8@d 8*Jj * ~$8 8d8~t?K=?8^@8;p ||x8Xx8~0LPT\4@(<D  K9x88~K%x88~K|A;`#,&HT;p dhlHxKY|{y&@$;$A;`/&WxH = A xKQ8!`cxa|N |@&||~y|#x;A!AH /@$9@d9`9 88@ 8'9 H  ]}=]l^4~8><^(,0$@(xK].||x@$;A;.8~,H IxH AA xKY8!Pxa|}p N ||~yB|#x!A/A8;,;>;^LH ;#|}xxH 8xH8,8d#xK8~8HCx8K/@8<x8a884K88a8Kcx888K%||xxH 5/A0xHxH#xK)Cx8KH;8!x|N |!||y!8AH8;|L;<cxK1|~xHTxcxKax8|zxcxK/A| }| xN!x#x^xK/@8cx;,KQ#xKMxHHxxHa/@xH xH/@xH/@88!`|x!|N |A|}x;;@;},!H/@Ād;/@8}LK ||x^ 8`H/AAT$/A}x88K-H}x88K!x8}L8Kx8}KKl8cxx8<@ ~ [;{ ^>~[;{x8z;K HxK!/|dx@|? CxHA8!`xaA|}p N |@&|||x|#x|#x|+x|3x;`A!!AH/|A.]x;!MH |x|x~x&x!8H=|{y@DA AWZM <Z Pg `t   |`     8T$*?Upny @(!; O"`'s&P$(*4+>Sk~ :;<=>?@ABCDEFGHIJKLMNOP:;<=>?@ABCDEFGHIJKLMNOP9 !"#$%&'()*+,-./012345678*+C !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP __mh_dylib_headerdyld_stub_binding_helpercfm_stub_binding_helper__dyld_func_lookup___initialize_Cplusplus_CmpThreadPoolJob_CreateThreadPoolJob_CreateWorker_CalcWaitTime_WorkerThread_TimerThreadWorkersaveFPrestFPdyld__mach_header_FreeListAlloc_FreeListDestroy_FreeListFree_FreeListInit_ListAddAfter_ListAddBefore_ListAddHead_ListAddTail_ListDelNode_ListDestroy_ListFind_ListHead_ListInit_ListNext_ListPrev_ListSize_ListTail_TPAttrInit_TPAttrSetIdleTime_TPAttrSetJobsPerThread_TPAttrSetMaxJobsTotal_TPAttrSetMaxThreads_TPAttrSetMinThreads_TPAttrSetSchedPolicy_TPAttrSetStarvationTime_TPJobInit_TPJobSetFreeFunction_TPJobSetPriority_ThreadPoolAdd_ThreadPoolAddPersistent_ThreadPoolGetAttr_ThreadPoolGetStats_ThreadPoolInit_ThreadPoolPrintStats_ThreadPoolRemove_ThreadPoolSetAttr_ThreadPoolShutdown_TimerThreadInit_TimerThreadRemove_TimerThreadSchedule_TimerThreadShutdown_iasnprintf_iasnprintfFree___sF_fprintf$LDBL128_free_ftime_malloc_memcpy_printf$LDBL128_pthread_cond_broadcast_pthread_cond_destroy_pthread_cond_init_pthread_cond_signal_pthread_cond_timedwait_pthread_cond_wait_pthread_create_pthread_detach_pthread_mutex_destroy_pthread_mutex_init_pthread_mutex_lock_pthread_mutex_unlock_pthread_self_realloc_srand_time_vsnprintf$LDBL128single module __TEXT00__text__TEXT q __cstring__TEXT--__literal8__TEXT//__DATA00__data__DATA00__dyld__DATA00__IMPORT@@__pointers__IMPORT@@__jump_table__IMPORT@@x@@8__LINKEDITPP  P@executable_path/../Frameworks/libthreadutil.2.dylibPMV P +5T+`UUCSP 4/usr/lib/libgcc_s.1.dylib 4X/usr/lib/libSystem.B.dylibXs"w"Xg"UUtE BEB B1U1Ut u BE[2J UUM t"tB @;B} B   $21UWV}u0$17uG ^_UVutTFE F0EF,FD$dD$ $F F1FFv F^U}}uu…u.G$tE rBPG1ҋuЋ}U1UtB D$E $D$U}}utT;} tOM G 9E …u:E p@BAGL$$ROEtG,t4$1}uUWVutCUBz pU D$ET$$U9uUЃB$1^_UEt Pt@1UEt Ht@ 1UVuM …u QF 9u1^UVuM …u9u1^UWVuE t?DEpEx *EP0tFD$E$҅t U9Vt v9u1^_UUtBU}}uu…u0G$t@E 2BFVBG1ҋuЋ}U1UtE T$$D$UEPE ;PUtWV $U t9GFGFG F GFGFGFEFF $?. ^_UH]uƉ}@l[@Eԋ(t 9EE ` D$Et$ D$$.Eu'E~H$.E t$<$-E;FlFl9}EЋ]u}UUt5B %B'B BBBdUWV0uM }E…ED 4$S-Fl;(}VdE St+FpHu4$%- E F,$,FHEEt$$, uFd@Fd4$,1Ƀ0^_UWVu} …u`Fhu4$,$1ɉ(G,G0G 4G8G<G~hu 4$Q,1Ƀ^_UM|$} 4$…u9Ef1AAA|$4$UUE t wB1UUtE B1UUtE B1UUtE 1UUtE B1UUtE B 1UUtE B1UUtE B1UVSu[C$+D$$*F`D$$*FhD$$*FdD$$w*F $D$^*F $D$E*PF4$D$,*F\D$$*FLD$$*FTD$$)FPD$$)FXD$$)F<$D$)4FD$D$)[^UUtE B1UWVS}u …Ghu<$x)@D$lD$4$)F~*^F F FF~*F^F F F$F0~*F(^F4F4F8GlFXGpFT$>F`$-Fd$1ɉFhGhu <$(1Ƀ[^_UH][uΉ}ǍE܉Uԉ$(E*F V*M\Y)Ѓ}*Xt r6}uFHX@@.\XTTpXhh]u}UH}}uu ][…EEV<$';4|#D$D$+'$'(UEEEE WdXEu<$/'E FuGEЉD$$uOE Uԋ‰Uԋ‰Uԋwl+wp6HuUЍT$봋EЉD$E믉uFtUԉ;0}ދE̅u G,$I&UЍGt$T$GdU@Gd<$N&E̋]u}UWV@M}uuUE $E&Et$D$Ẻ$tEpFGFGF G FGFGFGFGT$UD$Ut$D$¸UЉ$tlpFGFGF G FGFGFGFGEЉT$D$$Et$t$U$%1Et$D$Eԉ$t_pFGFGF G FGFGFGFGT$UD$$dEt$t$EjE teE ;Bu]BGBGB G BGBGBGBGU D$Ѓt$Eǀ $U$$ @^_UWV UE$#EEEtEEE$QpNjVtF$ҋEt$$ED$|$$FEuED$$EEEE$pNjVtF$ҋEt$$ED$|$$EuED$$'EEEE$mpNjVtF$ҋEt$$ED$|$$bEuED$$E t+VtF$ҋEt$$Eǀ Eǃ,@h<$!EpHE4$D$!E@l<$!u4$!uE$E$!E$!u ^_UWVS[l}E<$!GHGlE$Y!<$!ỦU$/!!EEЋUЉ$u!EE$l!UEEUE<$&!EątEĉD$Gt$w|E$!+E*XE|E$ Op@ɉ~5U$4Ƌ@EĉUD$t$~?E$PƉUĉѺED$t$$1U$1҉Ƌ@EĉuUD$t$$봅u1?@A@BCDEFGHIJKL  !"#$%&'()*+,-./01234 +C     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL __mh_dylib_headerdyld_stub_binding_helper__dyld_func_lookup_CmpThreadPoolJob_CreateThreadPoolJob_CreateWorker_CalcWaitTime_WorkerThread_TimerThreadWorkerdyld__mach_header_FreeListAlloc_FreeListDestroy_FreeListFree_FreeListInit_ListAddAfter_ListAddBefore_ListAddHead_ListAddTail_ListDelNode_ListDestroy_ListFind_ListHead_ListInit_ListNext_ListPrev_ListSize_ListTail_TPAttrInit_TPAttrSetIdleTime_TPAttrSetJobsPerThread_TPAttrSetMaxJobsTotal_TPAttrSetMaxThreads_TPAttrSetMinThreads_TPAttrSetSchedPolicy_TPAttrSetStarvationTime_TPJobInit_TPJobSetFreeFunction_TPJobSetPriority_ThreadPoolAdd_ThreadPoolAddPersistent_ThreadPoolGetAttr_ThreadPoolGetStats_ThreadPoolInit_ThreadPoolPrintStats_ThreadPoolRemove_ThreadPoolSetAttr_ThreadPoolShutdown_TimerThreadInit_TimerThreadRemove_TimerThreadSchedule_TimerThreadShutdown_iasnprintf_iasnprintfFree___sF_fprintf_free_ftime_malloc_memcpy_printf_pthread_cond_broadcast_pthread_cond_destroy_pthread_cond_init_pthread_cond_signal_pthread_cond_timedwait_pthread_cond_wait_pthread_create_pthread_detach_pthread_mutex_destroy_pthread_mutex_init_pthread_mutex_lock_pthread_mutex_unlock_pthread_self_realloc_srand_time_vsnprintfsingle moduleamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Frameworks/libupnp.3.dylib0000755000175000017500000076256012611472361026124 0ustar morphmorph p  H__TEXT__text__TEXTN__picsymbolstub1__TEXTbb __cstring__TEXTrr__const__TEXT%__DATA __data__DATA__dyld__DATA__la_symbol_ptr__DATA__nl_symbol_ptr__DATA\__common__DATA\D__bss__DATA8__LINKEDITKK HG5@executable_path/../Frameworks/libupnp.3.dylibʜ! P**>h>8 P@executable_path/../Frameworks/libthreadutil.2.dylib H@executable_path/../Frameworks/libixml.2.dylib 4/usr/lib/libgcc_s.1.dylib 4X/usr/lib/libSystem.B.dylib|B}|}cx=~(}| x={,N }cxK|B}h|=kk}}iN |B!<8c]88K8/A| <| xcN!8!`|N ||}x8`88!9,9=]HxHQ8!P8`|N |!|~xB}Cx|#x|+x|3x!P|;x8axH])/88@]@t<_<a ~HT)<xx8HKq<x}XHK/@0/ 8@<ffbp`fg||p|P`P.A;`HUax8||dx<8c}\9|| PHL8!PaA|}p N |!|yxB|#x|+x!<c{LHOI88a888`HSxxFx'x8`98;K 8/A 8a<888K|}xa8HJ8!0x!|N |A|#xB|3x|;xx8!|~x<8V;<8xHRxxfxGx8`98;Ka8/A x888K!|}xa8HJ 8! xA|N |!|{xB|#x|+x8|3x!<8cU;L=HK1<8la@ex8V xx>HR-xxFx'x8`98;K8/A 8a<888K]|}xa8HIE8!0x!|N ||wx|@&B.8|#x|3x|;x}CxA!@8uxHEMH};`H>]8xH>Ia<x88cH9HPA<8b"H9H(]Aa<x8cH9/|~x@;;`zlHD/A)x8`8,xN!xH=8!p!|N |!|}xB|#x|+x8!<cj8H>a@xH8/|zxA`8` HB8|yyAL/:@/P:PAx<_;<8l9"IBIx8J iI Y<_y;IxY x IYHEax#xHE<#x8JHE/@$<x~x8J,HE)#xxHE/A$<xx8J8HE#xxHE<#x:at>_8JD:8:!DHEu8@8xADAPAHALEH=888laH~cxFHAj<_8jw~óxUbUk|B|X0"<|Kxc x8HExH8xH7<x8BH7E|~yA8H7/AH8)/AH8,A|dxxH=AX/@(8 |#xx}{x8 KH(8 |#xx}sx}{x8 K H/APA/AH/AP/@H8 |~Cx$xx~x8 KyH/@~Cx$x8H8/AH/A<~#xxHH9 /@@/A@/@x888KHx8K]xKE8!`|N |a||xB8`8!8H5e|~y@ ;lHP<_BX@8HGHHK8~8 H9/@ Hx;l;H/xx8 88<98H7-||y@;`}ᮀa@H15/A^;L<x8x||A@!DaH<^>ܑ~H,!<x8H,18xH,E<x8c]H,Q/A xK8! `a|N |a8B;|{x8`8!p88<@H7-83/||xA088 888H6xK<_8`88W4H6/|~x@ 8xH6qxH-83H88<8<`8H6%|iyA,8xH61xH-Ix8H6xH88@l!P!T!X!\QARx8P8H,,A48xH5xH,8xH5xH,85H <_aLaH\@xH.aL<8c:H.8H8aH8 x8H5I|`yA48xH5U8xH5IxH,axH,Y80HxDH.8D8aD8 8xH488 888xH48x8 8@`8H4/A48xH48xH4xH+xH+88H88!|xa|N ||+xB|xx|3x|#x!@|x<88:;AtX;dCxH4CxH5;=#xH5ـ`8\8`{\;NHe1xx;H7Y<_=_\`<=AD!LJT8B:9k78: xA8<_xxa<8B:$8A@<_8B;DAH<_8B;dAPHo/@ dh<x8X8;HexH68!|N |A|#xB|+x;!<<8:|8:H-e|}yAh8H./ALH.|~yA@H.||xxH.|dxcxH4%/@Cxx;H4 /A;xH-8!`xA|N |!|#xB|+x8!88H@|~yA~/A 8cH/Y||y@H* ;H ;@H45x8#\H3A|{y@x;H,[xH3;xH.|zy@x;H)H<xx;89H1xDxH2|}y@L;8"xH2,A/AxH3y;/A;xH)!CxKx;8!px!|N |a9`B||x|#x|+x|3x!p|;x}Cx?_}5Kxa@CzVL|}~|tH/8a<88H/@a8x8cH# |tyA/AT>x8@88K,A/;@@88#xK|}xa@H()/ALHx8@K,A /@d@#xK|}xa@H'/@@x;H65~xH6)A8"5H;H;zVL~H.i8!xa|N |A|#xB|#x|+x8!?_:OXH/A/ @$:Hx8~xH=/@H:Hx8 ~xH=u/AdaHL<8t887HL/@@;xH2ExH2/A<x87H1-/@x;H2%HxH<|}xxH2 /AԀ H]ALaHAL88#}+| };tHxH/,@AL;}H8cL<|P;|87| PxHK/A!HAL;iHH<_x;7xH.,@ aa|AH!L8XbI~H*M,A /f;A;<_;"8H胡/@ aXcxH)/AH)/AH(|zyAH)m/AxH//ACxH(/AH(;AH)y|dxCxH3xex8889\9!lK/@`:P<;~óx88 H2Dx8aHH3 A\~x8`l|I|LxN!a/@$<x8xO;KHȀH/A(P~óx/A<_8bO|exH`~\88d8`;AhH]McxH-;CxH/q<_=_d`x<aD8B54JO;=A8<_889k28B8 xxCxa{OH*||xCxH*wOH*=_lp<JO<_=x;8B549k289@xx~óxA8a<8He /@dOЃOxH*U|{xCxH*I>;DL8.8V+x8xD88AHKE/@a8H ]|~y@ ;H\dxH /@x;;H/@p>>;D96+<_8.x!H=?8B.8D9).ALx88!PK/@(a8KU/AH;;;zH\<<888c.K/@Ȁa8K/AH}/|}xyA;;H/@P<<888c.K/@ta8K/AdH /zAT;;;H@@a>;D88W.=?xAD<_8+8B.9).ؐHxAL<_888!p|x|N |A8B|zx|#x;8`!88H83||yAH+A ;c88@<;a<@DA=H/A`88888`H/@8xHxdx8H/A`x8H/@Hp8x>dx8T>H/@H H /0A/@<8c&TH x8HAxHY85HH8xH%xH=82H,xKYTc>/@8xHHz88`8H=/|~x@ 8xHxH 83H<8@88c&/bC@48xH!x8HxH -xH %8qHz 88!|xA|N |a|}xB;q!?K/@X8`;H|{yADxK|~y@<cxKq|~yA8{8He{H }{8HQ{H icxH !H<ex8a8;8H 88a8H <8a8:H <888c;H 5/@${8;H@8`;`cPHK/A/'@H /'@\{8;qH{8H{8H{8Hy{H {H {H {H yH8!xa|N ||~xB8!``;@<xH /AxH 8aLH!iH;Lx88<x88HK/@AP+ A$8|0pa@@p@ p@$8/8@XHL<_JH<_JH <_J/A| | xxxxN!8K888/@xHY-8xHxH xH 8!@|N |B!<_aA8@!IH}sx@~xh@@}kx|x@@|xVU9:A!U:!l!|V;8UUT|P0x!|ZH0!||S0|TH08A<9!lTA<_!A88~CxHu88~#xHe}7}x}Y}{xI4~Dx8~&x8~`xBxI4 @x ```K~xK` ~x H/AhA|0p A8}sxx8H/|{xA08` H-||y@ |Ht|;L<x8x@A>\H<x8H8xH<x8c8 H/A xHqcx8HcxH|YAx|0p A aK|XA||0p A }kxK|WA|0p A@;8~óx88x8<@DHHM|`y@|^a@4H UAa8 H%/A8}sxH}sxH8~óxH~óxH8}kxH}kxHa8HuaHaHEA8!H|N ||#x|}x|dx8)x!H ],=088}<}4]88<)^,>0~4^8H/@ 8H8!P|N ,M 8cH~xdxH/A8t ,~x8$DxxH/@.HHA$$H $@6$xK%/A xxDxHI/A;{A4~xH8!8`a|}p N ||#x|}x;!8a8H)/Ah^H/A\"4/A48@(H|CxHHKQ]8B]K8/@ |^xK|CxH8`8!`|N ||}x!``` 88K18! |N |@&|A;|#x|}x-;`A!` H0xxH/@-xHHx|x.A AHA`8a8H݀\4/AL8@@/AHHH H 8xH;KZ8BZ8!pxaA|}q }p N |A|#x|{x;;@!`` H`cxxH/@@/AHHH H ^HxKa\88B\H Hx|x/@8!`A|N |||x8d|#x!H|~yAxxHI8|8!Px|N ||#x!``cxH|}y@xHM@@;8!Px|N ||~x|#x!`cH!|}y@xH@@;8!Px|N ||}x|#x!` @A,#H@@xC | P@@|Dx"H |P @@H"}8H,@ }8H8,Ax8}H88!P|x|N |A|3y|#x|+x||x!Ax Al/Al/Ad|*K|~y@X||}|(P|dx|cHY|Dxex|}H%\<|[\H;H;8!`xA|N |||x|#x|#x!H)8!Px|exx|KK|||x|+x!`C/AP|*@|P@ P8||d|HmxPxKՀ\8|8!P|N C8|CxN 8@8C CCN ||~y!A$~H=8@8^ ^^8!P|N |a||x|+x|#x!K|8!`a|N |a|#y|+x||x!@KU;H8|+xK|}y@(/A|dxxH\8!`xa|N |||x|#x|#x!H8!Px|exx|KL|@&|a.|+x;;A!a8A8|J@,<8@`|@@Hـ/"@ 8`Hx8!`|N |a8|#x8|}x;!H88@x]Km89=8]8!`  X]Г}@``a|N |a|~x|#x;!#C| |tHH5^|b;>| |t/@^dx|bIxH^8,A |P8!`|xa|N |8 B!<_;xK8/A T`8|.8!P|x|N ||yxB|#x|+x!C#BJA|H|t8^TB>+^At?_x8zH/@\;H;|t8DTB>+^A8zH/A؈/@ A0|P9 HX/ A / @P8]H8B|t/ A/ A/@ A|P9 H(/ @08A9 / @9 8K/ 9 A/"@9=Hl 9i|t/"Ah/\@ X@@D 9i/@4HT@>+@ /@/ A/ A / @}i[x@A8`H||XP9 K$<x8cHA/A9 8KW>+@ /@089 [8`|8H8`8!`|N |88|}x;!H 88@x]Ku89=8]8!P  X]А```|N |9`B/ ||x|+x:!```HL/%@,;d|t9>+XA <_U):8Bh| .|| N ld8Ddp|8::;9;AT;|kxH8<\ @@)/8|I|ZtAA9`HxH|}xCxH9`@H9`:HĀx88;9K5/|kx@8/Kx8D88K /|kx@8/AXAH|PH`9`9;9/  HD\<@4B|H/K 9`H/ A/ @;AT;<xDxxKm/@8+A<_U):8B8| .|| N pt~́>| PH@A8@^8|I|Y~́>Ā^88`>|BZHp;<888x8K/A/A8H̀8~x|(PKi/@$ԁ>8@^| P8`K8Ht^Ԁ|P Ad"<8~Г8K/AԀ^|PK`8~x|(PKр^>8Ԑ|BJ^KtxKm/@^x~8~||(PKu8`H>8`^| P|BJ^H>Љ~X8^ԀI/^|BR^A$^+At8|0pAdHP^D/AD/0A<8+c@0@/A$/A/A/A /@88`H;d;@88xxHH1,A4#<8a88؀I A8 8!AĐ8Hp/I@dA888Xx/@~p~۳x/A@<`@Avx8vHʥ|syAX: H/f@A8.88bA0/A$<_8B| | xN!H<8HĽ/|yxAA/A/A<_؀8B| | xN!HA~p~ݳxA<@ @A0/A#x~x~ųxH,~x8~ųxHD/A,#x~xex<_B| | xN!H~x8ex&xH|~xp/cB@(xxH~x8~ųx&xHý|~x/@0A/A<~x~x88KuHA/A8 ;<<x|.x8H<x8H̥xH=x|ex|cPHxH%~x||P~x8K||xxH|~8cH~x~xx~xK@ @y@D;@H8; K/A$<_#xB| | xN!H #xH%~cxH/b@HA888`!88 8/A~xx~xK%@;|t/@~cx;H$؀8H/A(~cx; H H;8!xaa|}p N |A|~y|#x|+x!A0/A/A /A/@H,/A88`H@K/@HȀ;`H/A/A/A88`H48~8888K,@L|ex888~K/@xK/AP/AT/AL/AD8`H@/A8H$|88`H;`H^>|*H@@(/@/@8|HP^耞̀Cx||H̀^<8`./|J@$8`H88`H8`8!`A|N |/AB||x|#x|3x|;x!@|#xKUH|+xxKI;`H;`x888xKU,@\|ex88xK,@(<_>ĀBh@@\8`8H4/A/|~x@X8888xH9<8}8ՌH1i/@0$/A$/@<_8BՔ]H8`8!|N ||#xB|dx88x!H<8}8H0/@0$/A$/@<_88B]8`88H]/|~x@ ;3H08(8H/@x8Hx;4H8!Px|N |!||xB|#x|+x|3x!`?>>>>>>_>?8;aȑ̑!БAԐLH xHMEx|dxcxKi||y@#xKcxH%A8cxT6||AnH ;P88xHdxxH<x8Hy,A|;8/xHA|{yAdxH8/<=_8a<8#x8@9Jl88:K ||yA#xK%H;!x|N ||~yB|#x|+x|3x|;x!P}Cx};KxAA xHA8cxT6||AnHyEx;P|dxcxK|}y@#xKdxxH <x8H,A:8/~xH||yA~xH /8/|}xAcxH|ixcxH :z<=_<8|hx8H9J#x888KM|}yA#xKeH;!x|N ||+x|@&B/|3x|;x}Cx|#xA!!0A4/A,/A$/A8:D;T~ųxxK=|~y@/xA$x;Hxx|dxxK8`;H|}yA88;0KU8`88H-/A\;|dx;0xKu/@ }8(8H/@;4.x8KYH:0DH<x~x8K.|~xA xKx~xx88K-/@xK!/A /@Dx88<K]/@ H </@;8.HP/@;8.H4/@;.H/;@;8.H ;.~óxKAxKH;8!xa|}p N |+x|3x|;x} Cx|#x|x|Gx}h[x8KH||3xB|;x|#x|+x||x!p|> xHA8xT6||AnHqEx;a`|dxxK|}y@\~xKxcxH<cx8H,A,;c8/cxH||yAcxH/8/|bxAP:<=_+p~xa8A<@!HaD8P9J888KM|}xH/@D:<=_~x8a8A<@8\9J88K|}xHL/;@H:<=_~x8a8A<@8h9J88K|}x/A~xKH;!x|N |a/B|#x|3x!PA/A/A8|+x8H88K|~y@8`;H|{yA 8`88;0H/Ap|dxcxKM/@P{8p8H/@cx8;4H08<<cx88`K|~yAcx8K8a8K|H;8!xa|N ||#xB|+x|3x|;x|}x!P|> xHA;^`8xT6||AnHiEx;aP|dxxK||y@:P~xKxcxH<cx8H,A`;8/xH|{yAHxH8/<=_88@a<889J~x8p>tK]||y@4;~PTCx~x8hxK||yAcxKQ~xKEH/AHcx88HK/@ H(L+@;H#xxH鮀4/@ HD/@8~80Kx||x8Hx8H9v/@@;K8;!x|N |A|{xB!?_/@<_=?;弃ш;x;HU|c;@<_=?;ăф;x;H!|c;@<_=?;р; x;H|c;@<_=?;|;Hx;H|c;@<_=?;Hx;x;H|c;@8<Qbp`||.p}"P/ d|P@/A<_T:8BH /@ /Ax<_T:8B|b.Hh/@/AT<_T:8BK/@/A4<_T:8BK/@/A<_T:8BHK8`8!`A|N ||#xB8.8!H,Ah<_;C;;`D;"L|Cx|p |.Hi/@;@H@ ;}K샞H<_=?8Bx;pxH|}xxH8}H%8|}yA0<xx8HexHxxH88!`|x|N |A9 B!?[/@<_=?t<_;0;B\H@xH;x|tT:|Z.^H;; |t/@<?;l8cKq8}KixKa<_ $B <88c攓H9 /A[89 8!`}#KxA|N ||dxB!?;xK|}y@8/A(\8| //@x8KH;8!Px|N |a|{xB!<_BtHd;xH|C|}x//@xxdxH/H$xdxxH/@|//A/@8`H8`8!`a|N ||}x;!H|}|ctH|};xHA8!P8`|N |a|#x|{x!H8cH |~yAxH8cH|}y@x;HTdxxH5xxH)xK=xK5xxH,A |PxHUxHMH;8!`xa|N |a||x|#x!`/A4xH}|~yA 8cxH|~|H8!`xa|N |a9 9@B|#x|+x!!@AD!8A</A<8KE8-||xH|{yA8 <x8888@H8/@^H8H 9kK|8!p|xa|N |A||y|3xB|+x|#x88@!ApH8cH18@|{yAXxH}<cx8K/A <cx8$K/a8@cxH88@H/88A8a88@8HK/AЀ@DA@ @A/AHL/A8A@ @@A8A @ @@A1|ԐHLؐ|f@|E9<1C}"8z8(:ZxxHecxH8@H(/@/@ (A@0@@|f|E<xܐzZ8z8(x1|K/@/@HL/A@+@8AL@ @@A@8@8`zܐZ<8z8Lxx0|HK}H}'<x:ؑZ0|x8z8(xxKcxH8@8!|CxA|N ||~xB8`|#x|3x|+x!H|{yA@;>d:#xHH<_8!8B~ExK|}x+@$cxH~8cH%|{yA܀ cxHM/^8|A(W8|BB/#Ax/$A(/AXx#xH/||x@THl;cxHI+@<cx8Ke/A KcxH9xKcx~x~ųxxK/|wxAcxH H:8!p~x|N ||3yB|~x|#x8|+x!8A4/A(<_8BT| | xN!8H<8,H98|vyA<_9 :;T;@;;a<>Hx/AxK˱|}x/@;@H/A/A/A~óxHyH`8#xdx88K|ey@L8~dxK/@DxK=/|}xAH/AD/AH88H;@^@@/@`~P̀cx~x|"|H/A@ ~óxdx~x| | xN!/@8~óx| | xN!H|cx8~x~ƳxHQ/AX>/@|@p/AD<_~óxBT| | xN!H,88H ~óxH8H~óxH88!|+x|N ||~xB!<_;@xHU/A<~$K8BK>$ /A8~KxK~$H8!Px|H|B!<_0/@X<??8c;ٔ;ټKxK-xH88(xHxHxHA88!P|N |!|}xB|#x|+x|3x!p<_;xK/8`A;HxKa8a8KY8@A\//A<8a88KU/@|x8a8K1/@h8`H/|bxa\AP8?Dxexx;$KIx!XH888(xHxH8`H 8a8KxKa\H8`8!!|N ||#x;B|}x!088H/At@T&/@@8 H8`@H <x8K|dPeN ||}xT:"!H8,A\8xx8H/.@A//@|9@A|t//@ 8BH/.9+@|8A//@d/8B@8T:}c.HTH8H//A99+H(89+9T:}#.```BK}Cx}+Kx@@\B}@t/?A/#@H BH(8}"P})@A /@ 8| K8B9kB8 HM88!P|x|N |9%|@&B|+x8P||x|#x;;A!`<_ B8@EEIEH;|/.@x~@||t/:A`//AXT`1@ Tb:|B4p|TH8H0C|/@|t/.A/-Ax@|/:A;xH(;8 |}P|;`K,A}xH=|}y@ ;`HxxHa/8|A8@|]|t+A<_T :B}) 4pAt8`x8 HE/@8 H(88@ Y H؀ALD9!p8;<H"K!LIa8H<;8;@8xP\X`dhlAT8P88H/@La8|kxH$ /@K/AXk/@;H/@ HHY x;`H}H@~/@$ /@^" y  xHEy8! cxa|}p N |!|#yB|+x||x8!A|tT`1@ =?Tb:)|BJ4TH8H0C|/A<_;BHdT`1@ Tb:|B4p|TH8H0C|/@$|t/+A/-A /.@0;@$||t/:@H;8!`x!|N ||}x|#x!`cH8;xH~T02T8|`PHـ~/Ap/Ahx|xH888H0]>8|0.| 1.]>~|F}&JB|PI}ki]>|B2})2 ]>~|F}&JB|PI}ki]~^|F}fZ"|P+}JK=~^}&J}fZI$K$ |P}JK ]>|F}&J888B(9i(09I0  A8`H8`8!P|N ||~xBT`1!@(=?Tb:)l|BJ4p|TH8H~0C|/@ <x8cH8/A88!P|x|N |!|}xB|#x|+x;!?_H;@P|}|ctK!/@|8z\|tHi/@8@xK/@8!`x!|N |a|+x8||x|#x!K,A$9c88@8c}i[x] H89`8`9  |k@L|H||J//@<|\Z//@,;8 |||PK,A||H 8@8}~[x] *],]$|P8K}|~/A]//@ 8 @,|/#@ 8c8|P||K-8`H88`8!`a|N |a||y|#x! 8/8AT/AH|}xcxH 8}Ha|~yAcxH8t|dxcxKA/A H/A|#xH|~xH|tdx/A@xH8<|dxxK/@8?H}x#xH}Ń,xH{~Cx8H{ x#xH{\xHxU~x88H)-/|}xAcx;Hta8xx8cKj,@cx;HL|dx~xKwe||yA8/Acx;H 8~xHu|vy@$cx;HpCxHp#xHpH88`dHu|wy@0cx;Hp#xHpCxHp}~óxHsuxH~óxHzE<8~x8PHx8`HHu|~yA>~x8~~ ;:Hx1<8Cx8Hv݀tHu5~cx88H& /@a8xx:8cKgu|uyAKt9>|}x;a<>?>_H8`HHs|~yA\8~x8B\@ ^>HwE],8^<,~D,/@,x8cxHjQ8cxHje8cxHjyrdx8Hj|vyA< @(:H x~xKr|}x/@8:/@,xHlCxHl#xHoxHl~xHl݀tHs8!~óx|N ||~xB!0? xHsQ~D88H$i/@xa8 8cKe,A /A;^|dxCxKr|{yA;!\$xKe /@0^<AX;<<x8xHh<x8DHhx8Hi<x8cHs<8x8(HrYv4Hp~x8?|}x;a@>_>> H8`HHn|~yA\8~x8B\@^ >8Hr],8^<,D,/@,x8cxHe8lcxHe8cxHesddx8He|uyA A x~xKn |}x/@@H:/@,xHhmxHhea8Hk]CxHhU#xHhMv4Ho%8!~x|N |a|#xB|{x|#x88 !;T8xK~u/AH<x8Kp/Acxx8H-Hx88K~1/Acxx8KԀ~Ko|}y@cxx8K>|xHna8a@8TxHiCx8@H!/A xx8HIcxKm}Ha@T8cK[||xcxKm]/A$/A#xxKg|{y@xx8HwTH$A@B/A4@(xx8HcxxKhxH;ALx8ExKw/AHaLP<8<8K /A(<Cx8Ki8/A8 xHfA$x8a|3x8H];<xH^CxxH/Ax;H^HDx?H]xH]I~ijx888cxK||xxH]/@xCxH/A;;;H;@;PxHHxxHHU<x#x8dTH_-cxH`e8cH[|~y@;;HhdxH`8`;!DwxcxHX8a8$xH m/@AD;XxbKc=|~y@<8@888` hAh})},Kx8HH; c8xKuxad8a8hHR<8888` | | xN!HĀD; 8@8 8x@K4)Dxa88a<a<xpxH>q8xH><x88cz H>8H8H88!|x|N |!|}xB|#x|+x8|;x!}Cx8`<_Bk/8@|<_;u,xHGx88K/AxHG8`HHxHG/A4/A,/A$/AxdxEx&xK+H8`8!p!|N ||;xB}Cx};Kx8|}x!|#x|+x<_Bj;r|xHD#x88K/AxHD8`Ht/A/A /@ xH /A/A /@8vr|HD8`H,xHD#xxxxgx~xIxKȩ8!|N |A||xB|#x|+x8|3x!8`<_BgX/8@t<_;qtxHCx88K/AxHC8`H@/A /@xHC8`H xHCxdxxFxKe8!pA|N ||zxB|#x|+x8|3x!|;x}Cx<_8`Bf/8@>;pxHC Cx88K!/AxHC 8`Hh/A /@ xH /A/A /@8wpHB8`H(xHBCx$xxxgxxK8!|N ||zxB|#x|+x8|3x!p|;x<_Be/88@?;oxHBCx88K-/AxHB8H/A/x@/@8}oHA8H/A8}oHA8`LH@-8|~yAt8 ^dx8~ ;<8<x8PxH7<xhH78xH7<x88crH788!|x|N |a||xB|#x|+x88`!<_BdD/8@p<_;n`xH@x88K/AxH@8`H18|~yAldx8~ ;8<x8<xH5<xfH58xH5<x88cpH588!|x!|N ||}xB|#x8`8!<_BbP/8@d<_;llxH>x88K/AxH>8`H0/@xH>8`HxH>xxK58!`|N |A|{xB|#x|+x8|3x!8`<_Ba/8@|<_;kxH>!cx88K9/AxH>%8`HH/A/A /@xH=8`H xH=cxDxxxKi8!pA|N ||{xB|#x|+x8|3x!p|;x<_B`/88@?;jxH=Mcx88Ke/AxH=Q8H/A/A/A xH/@8~jH=8H8~jH= 8`LH;a8|~yAt8~Dx8~ ;<<x88xH2<xd,H28xH2<x88cmH288!|x|N ||}xB|#x8`8!<_B_x/8@T<_;ixH89 | 8WgL8B9)/A 8BB8/@H$/8 @K8`H0|zy@8y`H28`Hd;z888zH'Y8t97gL8@8y`XVlT:I.H2)8`H8`8!p|N |/B|#x!A/Ax;@8888<xK |~y@ ;HT@P<8x8FtH4a8xH/q|}xa8H*/A/f;A;H;8!x|N |||xB|#x|3x|;x}Cx!};Kx;<_BTX/@/A/A>>;^txH1TT/Ax;H`?89 | 8^e08B9)/A 8BB8/@(H/8 @K8t^t;H0mHX8`H.|wyA[/9>e08;x: TB:~I.@/@/;Ax;H3+Ax~óxH2xxK|~y@p8;7Г|t;88xH$8wx<8@H+/w|@;\$xH.̀R/Ax;H0/A /A/A/@8x\$;H.eH|?89 | 8]b8B9)/A 8BB8/@H$/8 @K8`H,e|~y@8x\$;K8]b:;;^ x;CxT:.ВH0}8|x>t88xH"8Cx8xKq|}yAx8H"H8~x<8>pH(/~|@,8x;H!р~xH({K8x\$H0~x<8>8H(8Ex~~xK'=R8x\$H,8!px|N |8`B!?O/@;@8a8xK/@ a8Kx8a;@8I!AxH"ux8|zxa |DJ.K`|H9) (@9kAN |9c|ox9}h9 |#x9;h8|  J|@*j9JTB@.U)Uk|x|Kx|[x|.9B̀h~8x|08lap9:}kxatAx|}k*aA!}`Z!=kk9kxUk8>}gZ|Xx|X8}Jx}J"}WR=J9JVUJ`>}KR|Px}iP8})x8@| })}&J=)$ 9)pU)>}*J}`Hx}BH8|Bx|B|G|I}Hx} 8|Cx|}k=k|9kUk8>}bZ}(Xx|@X8|Cx|}J=JG9J*UJ`>}KR|HPx}`P8|Cx|})=)09)FU)>}*J}hHx}@H8|Cx||B|I}Hx} 8|Cx|}k=ki9kUk8>}bZ}(Xx|@X8|Cx|}J=JE9JUJ`>}KR|HPx}`P8|Cx|})=)9)[U)>}*J}hHx}@H8|Cx||B|I}Hx} 8|Cx|}k=kk9k"Uk8>}bZ}(Xx|@X8|Cx|}J=J9JqUJ`>}KR}FP}`P8|H08|Cx|})=)y9)CU)>}*J}'H}@H8|H8}h88|Cx||B|I}@8|8|3x|}k=k9k%bUk(>}bZ} X8}hx|;x|}J=JA9J@UJH>}KR|@P8}GXx|Cx|})=)&^9)ZQU)p>}*J}`H8}(Px|;x||B|I}@8|GHx|Cx|}k=k/9k]Uk(>}bZ} X8}hx|;x|}J=JD9JSUJH>}KR|@P8}GXx|Cx|})=)آ9)U)p>}*J}`H8}(Px|;x||B|I}@8|GHx|Cx|}k=k!9kUk(>}bZ} X8}hx|;x|}J=J79JUJH>}KR|@P8}GXx|Cx|})=)9) U)p>}*J}`H8}(Px|;x||B|I}@8|GHx|Cx|}k=k9kUk(>}bZ} X8}fx|;x|}J=J9JUJH>}KR|@P8}HXx|3x|})=)go9)U)p>}*J}`H8|Cx||B|I} x}@x|}k=k9k9BUk >}bZ|@Zx} x|}J=Jr9JUJX>}KR}`Rx|@x|})=)m9)a"U)>}*J}@Jx}`x||B|I} x}@x|}k=k9kDUk >}bZ|@Zx} x|}J=JK9JϩUJX>}KR}`Rx|@x|})=)9)K`U)>}*J}@Jx}`x||B|I} x}@x|}k=k(9k~Uk >}bZ|@Zx} x|}J=J9J'UJX>}KR}`Rx|@x|})=)9)0U)>}*J}@Jx}`x||B|I} x}@x|}k=k9k9Uk >}bZ|@Zx} x|}J=J9JUJX>}KR}`Rx|@x|})=)9)|U)>}*J}@Jx}`x||B|I|@S8} x|}k*=k)9k"DUk0>}bZ}`K8|@x{}J=JC+9JUJP>}KR}@8}`x~})=)9)#U)x>}*J} [8}@x|B|I|@S8} x~}k=ke[9kYUk0>}bZ}`K8|@x|c}J=J 9J̒UJP>}KR}@8}`x9})=)9)}U)x>}*J} [8}@x||B"|I|@S8} xZ}k=ko9k~OUk0>}bZ}`K8|@x~}J=J-9JUJP>}KR}@8}`x})=)9)CU)x>}*J} [8}@x~|B|I|@S8} x~R}k=kS9k~Uk0>}bZ}`K8} :||@x}J=J;9J5UJP>}KR}@8}`x~s})=)*9)һU)x>}*J}+[8}KZx~1Z|B|I|BBG })-}JN~ 9B|N |!T8||x|+x|#x!``C|JTB@@#9)#H##@W`~@|J@|Dx;\89 H|/;\89 |Z| @8| H|H|I9)BxDx;?KHxx;@;@Ku@A88| x|@P}Z"9`|J/8B|I@8| H|X| Y9kB8!`!|N |8B|#x|}x8!8a8KT+7 8@ x<x8;Kex888KUxx8KQ9 X8@8})|8BB8!`|N |8|}x!8a8HA8<!<=@8!``aJ@|BU+8U)<})Z|BJ= |Cxa)|Bp}P}bI}|N |8 ||x8!@;xHx8Hq88aH8a8Kx8a88 K=x88Ky8!|N ||}xB!?Q /@@8a8KY88@=9+Q|xA<88IQ A8KQH=8KQ Q8!`"=``|N |B! # C C c |#x<8DH80 Au;pH=? P$/@?88@P(IP$H??:P;P0~xK~APaT@ A8|lx|KxP(H\P(+A8P(|P(8@9=P0?8a8KP/AD>8a88>88VP8 "BbB!>H/A`H>?P /@<~xKAPTTIT TK},cxaP}cbxTH-8P HTz>H$@A@@@ 8T>W>A<8WKƾY Ti>}kxa)Yy98``A=!< DAH|Ht})t;A:|t9|FtA8|tP|Jt/@ =88KPPH= P8VP89kPBB " @A<@ @A(=@aJ|~R||k||@Ku;pHy8!8`|N |A}Cx}:Kx|}x! ;XHx A !aAV AU!TaRAQPNLWSKqx8H8KxdxExKx8a8KA@U)`B0})x]=``A|N CA@A|8`N C@C@ԈC@ĈC  @8| C  @AA8c8B8`N 8`N ||wxB|#x|;x|+x|3x!``d;;HH <|exx8+XH8a8KyxKq<_~x;xH 1|zy@x~xH |vyA<8a88+`KA/@8a8xK-/@<_8a8;!xK/@xxK/@~xH /A~ijxH |~y&@Ā8~x;`H E|dyA~óxH HL8H IH |}yAlH y|~yAtH8X|dxxK/AXX/@L\`8a8K/@<8a88+hK=/@8a8xK)/@쀡l/Ah//A<<_8a8;!xK/@xxK/@lh8a8K /@hlxK/@p8A<|D//A$<8a888!K/@<8xH i|~y&@L;x/&WK|{xH8;H;/&WH;,&8`;`H CxH xK8a8K A;@;HDcxH|}yA |[//@<_;H <_;!//@;9xH#xH8}H ||y@;;@,\x&HdxHQxxH$xxHxHq;xHe+@;;@,Hl<_x~x9"+`B+` UHx~xHy~xH |zy@&;H$HDx~x|exxKm|~y&cxHxH A CxH8!x|N |B}h=k|0}N |B}h=k|/}N |B}h=k|/}N |B}h=k|/}N |B}h=k|/}N |B}h=k|/}N |B}h=k|/l}N |B}h=k|/P}N |B}h=k|/4}N |B}h=k|/}N |B}h=k|.}N |B}h=k|.}N |B}h=k|.}N |B}h=k|.}N |B}h=k|.}N |B}h=k|.p}N |B}h=k|.T}N |B}h=k|.8}N |B}h=k|.}N |B}h=k|.}N |B}h=k|-}N |B}h=k|-}N |B}h=k|-}N |B}h=k|-}N |B}h=k|-t}N |B}h=k|-X}N |B}h=k|-<}N |B}h=k|- }N |B}h=k|-}N |B}h=k|,}N |B}h=k|,}N |B}h=k|,}N |B}h=k|,}N |B}h=k|,x}N |B}h=k|,\}N |B}h=k|,@}N |B}h=k|,$}N |B}h=k|,}N |B}h=k|+}N |B}h=k|+}N |B}h=k|+}N |B}h=k|+}N |B}h=k|+|}N |B}h=k|+`}N |B}h=k|+D}N |B}h=k|+(}N |B}h=k|+ }N |B}h=k|*}N |B}h=k|*}N |B}h=k|*}N |B}h=k|*}N |B}h=k|*}N |B}h=k|*d}N |B}h=k|*H}N |B}h=k|*,}N |B}h=k|*}N |B}h=k|)}N |B}h=k|)}N |B}h=k|)}N |B}h=k|)}N |B}h=k|)}N |B}h=k|)h}N |B}h=k|)L}N |B}h=k|)0}N |B}h=k|)}N |B}h=k|(}N |B}h=k|(}N |B}h=k|(}N |B}h=k|(}N |B}h=k|(}N |B}h=k|(l}N |B}h=k|(P}N |B}h=k|(4}N |B}h=k|(}N |B}h=k|'}N |B}h=k|'}N |B}h=k|'}N |B}h=k|'}N |B}h=k|'}N |B}h=k|'p}N |B}h=k|'T}N |B}h=k|'8}N |B}h=k|'}N |B}h=k|'}N |B}h=k|&}N |B}h=k|&}N |B}h=k|&}N |B}h=k|&}N |B}h=k|&t}N |B}h=k|&X}N |B}h=k|&<}N |B}h=k|& }N |B}h=k|&}N |B}h=k|%}N |B}h=k|%}N |B}h=k|%}N |B}h=k|%}N |B}h=k|%x}N |B}h=k|%\}N |B}h=k|%@}N |B}h=k|%$}N |B}h=k|%}N |B}h=k|$}N |B}h=k|$}N |B}h=k|$}N |B}h=k|$}N |B}h=k|$|}N |B}h=k|$`}N |B}h=k|$D}N |B}h=k|$(}N |B}h=k|$ }N |B}h=k|#}N |B}h=k|#}N |B}h=k|#}N |B}h=k|#}N |B}h=k|#}N |B}h=k|#d}N |B}h=k|#H}N |B}h=k|#,}N |B}h=k|#}N |B}h=k|"}N |B}h=k|"}N |B}h=k|"}N |B}h=k|"}N |B}h=k|"}N |B}h=k|"h}N |B}h=k|"L}N __dyld_call_module_initializers_for_dylibRsdcDscsscSXcsscssccCACHE-CONTROL: max-age=EXT:LOCATION: redsonicST: USN: ssdp:alivessdp:byebyeQsssdcsdcsscsscsscSXcsscc*HOST: 239.255.255.250:NT: NTS: "ssdp:discover"%s::upnp:rootdeviceupnp:rootdevice%s::%s%imax-age = %d%0M-SEARCH * HTTP/1.1 HOST: %s:%d MAN: "ssdp:discover" MX: %d ST: %s uuid:schemas:deviceuuid:%surn%suuid::urn::service:urn:device::all:rootdeviceuuid:deviceTypeUDNserviceserviceType239.255.255.250:1900CONTENT-TYPE: text/xml; charset="utf-8" Invalid ActionAction FailedInvalid Var%dRNsDsSXccsssssEXT: s:Client UPnPError bhttp://schemas.xmlsoap.org/soap/envelope/Body"%surn:schemas-upnp-org:control-1-0 %q%i ; ns = %s-SOAPACTION%sQueryStateVariableXML errorRNsDsSXccsss RNsDsSXccbbbbOut of memory%s:%s%0M-MAN: "http://schemas.xmlsoap.org/soap/envelope/"; ns=01 01-SOAPACTION:EnvelopeQueryStateVariableResponsereturnerrorCodeerrorDescriptionFaultdetailUPnPErrorQsbcNssUccsssSOAPACTION: "urn:schemas-upnp-org:control-1-0#QueryStateVariable" <%s:%sqNssssbscUcbbbbbbbSOAPACTION: "#" ResponseqNssssbscUcbbb 127.0.0.1ShutDownmserv start: bind failedserviceListserviceIdSCPDURLcontrolURLeventSubURLdevicerootURLBaseACCEPTACCEPT-CHARSETACCEPT-ENCODINGACCEPT-LANGUAGEACCEPT-RANGESCACHE-CONTROLCALLBACKCONTENT-ENCODINGCONTENT-LANGUAGECONTENT-LENGTHCONTENT-LOCATIONCONTENT-RANGECONTENT-TYPEDATEEXTHOSTIF-RANGELOCATIONMANMXNTNTSRANGESEQSERVERSIDSOAPACTIONSTTETIMEOUTTRANSFER-ENCODINGUSER-AGENTUSNGETHEADM-POSTM-SEARCHNOTIFYPOSTSUBSCRIBEUNSUBSCRIBE ()<>@,;:\"/[]?={}%ihttp%w/%w%L%c%d . %d %d : %R%c, chunked%x%L%c%c%s %S%w%c%s %S %ihttp%w/%w%L%c%d . %dhttp/%x %s/%s, UPnP/1.0, Portable SDK for UPnP devices/1.6.1 rb0 %xTRANSFER-ENCODING: chunked %zu%qdDATE: %s%s, %02d %s %d %02d:%02d:%02d GMT%sCONNECTION: close shcCONTENT-LENGTH: SERVER: USER-AGENT: ssX-User-Agent: HTTP/%d.%d %d ssc%s%d %s%s

NTcstext/htmlssbsdsdc HTTP/.QsbcCONTENT-TYPE: //QsbcGDCUcRange: bytes=%d-%d RSCBQsbcDCUcQsbcDCUTNcQsbcDCUTKcQsbcDCUTcaudiovideoimageapplicationtextoctet-stream%s/%s,%qd%qdbytes=CONTENT-RANGE: bytes %qd-%qd/%qd CONTENT-RANGE: bytes 0-%qd/%qd trailerswbrtext/xmlindex.html/index.htmlRTGKDstcSXcCcLAST-MODIFIED: RKTDstcSXcCcRNTDstcSXcCcRTDstcSXcCcIbfIbbRTDSXcCcRNTGDstcSXcCc%itext%w/%wxml;/?:@&=+$,{}-_.!~*'()%2x <%s>%s TIMEOUT: Second-%dTIMEOUT: Second-infiniteRDSNXcsscsccSID: ssscsdccSEQ: qsbbCONTENT-TYPE: text/xml CONTENT-LENGTH: %zu NT: upnp:event NTS: upnp:propchange CONTENT-TYPE: text/xml CONTENT-LENGTH: %ld NT: upnp:event NTS: upnp:propchange upnp:event%iSecond-%d%0Second-infiniteqsscUcinfiniteqsscssccTIMEOUT: Second-qsssdscscssccCALLBACK: NT: upnp:event%d%0upnp:propchangeUPNP_E_SUCCESSUPNP_E_INVALID_HANDLEUPNP_E_INVALID_PARAMUPNP_E_OUTOF_HANDLEUPNP_E_OUTOF_CONTEXTUPNP_E_OUTOF_MEMORUPNP_E_INITUPNP_E_BUFFER_TOO_SMALLUPNP_E_INVALID_DESCUPNP_E_INVALID_URLUPNP_E_INVALID_SIDUPNP_E_INVALID_DEVICEUPNP_E_INVALID_SERVICEUPNP_E_BAD_RESPONSEUPNP_E_BAD_REQUESTUPNP_E_INVALID_ACTIONUPNP_E_FINISHUPNP_E_INIT_FAILEDUPNP_E_BAD_HTTPMSGUPNP_E_NETWORK_ERRORUPNP_E_SOCKET_WRITEUPNP_E_SOCKET_READUPNP_E_SOCKET_BINDUPNP_E_SOCKET_CONNECTUPNP_E_OUTOF_SOCKETUPNP_E_LISTENUPNP_E_EVENT_PROTOCOLUPNP_E_SUBSCRIBE_UNACCEPTEDUPNP_E_UNSUBSCRIBE_UNACCEPTEDUPNP_E_NOTIFY_UNACCEPTEDUPNP_E_INTERNAL_ERRORUPNP_E_INVALID_ARGUMENTUPNP_E_OUTOF_BOUNDSUnknown Error e:property%8.8x-%4.4x-%4.4x-%2.2x%2.2x-%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%s:%dhttp://://`SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecInternal Server ErrorNot ImplementedBad GatewayService UnavailableGateway TimeoutHTTP Version Not SupportedBad RequestUnauthorizedPayment RequiredForbiddenNot FoundMethod Not AllowedNot AcceptableProxy Authentication RequiredRequest TimeoutConflictGoneLength RequiredPrecondition FailedRequest Entity Too LargeRequest-URI Too LongUnsupported Media TypeRequested Range Not SatisfiableExpectation FailedMultiple ChoicesMoved PermanentlyFoundSee OtherNot ModifiedUse ProxyTemporary RedirectOKCreatedAcceptedNon-Authoratative InformationNo ContentReset ContentPartial ContentContinueSwitching Protocols`aifaiffaifcaiffaiffaiffasfx-ms-asfasxx-ms-asfaubasicavimsvideobmpbmpdcrx-directordibbmpdirx-directordxrx-directorgifgifhtahtahtmhtmlhtmlhtmljarjava-archivejfifpjpegjpejpegjpegjpegjpgjpegjsx-javascriptkarmidim3umpegurlmidmidimidimidimovquicktimemp2vx-mpeg2mp3mpegmpempegmpegmpegmpgmpegmpvmpegmpv2x-mpeg2pdfpdfpjpjpegpjpegjpegplghtmlplsscplspngpngqtquicktimeramx-pn-realaudiormimidrmmx-pn-realaudiortfrtfshtmlhtmlsmfmidisndbasicsplfuturesplashssmstreamingmediaswfx-shockwave-flashtartartclx-tcltextplaintiftifftifftifftxtplainulwbasicwavwavwaxx-ms-waxwmx-ms-wmwmax-ms-wmawmvx-ms-wmvwvxx-ms-wvxxbmx-xbitmapxmlxmlxslxmlzx-compresszipzipuu@uPu`wxw~(~0~@~P~`~p~~~~~ ~!~~ " $ ( ,04#<@HLX\$`h| (8PX`ht>,DXp(<Tdx8765432 4Ppq ,D\  (ul@<T@@ @@@@@ @(@0@8@@@H@P@X@`@h@p@x@@@@@@@@@@@@@@@@@@@@@ @(@0@8@@@H@P@X@`@h@p@t@x@|@@@@@@@@@@@@@@@@@@@@@ @(@0@8@@@H@P@X@`@h@p@x@@@@@@@@@@@ @@@@@ @$@(@,@0@4@8@<@@@D@H@L@P@T@X@\@`@d@h@l@p@t@x@|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@ @$@(@,@0@4@8@<@@@D@H@L@P@T@X@\@`@d@h@l@p@t@x@|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ r    $  1 64 ,;T A< R=L l> }H` I I J0 Jt Kt UW[ \/y@|Q|bu~lѴD 0 @ 8#>EKGWK_L,m (ptx|)6JS ` n }       @ X    $ 1 A N  [ q   154p!X'7F \Pb8kaa6( Hy4xm+:Hm ]nq (   D D W KU&7-O9`|xDo*  HPUUX"Ut3NLR\PnYUżƀdi^\ v#5`HWwjjwdjacwpu  \' 8 IY ,g TslT 20Hiphbd hc@-?XYWXqXH,8W9 0P>M]jL(P5G`t}T~,}|İ\۠XuvP+u@;tKUrgrD}stTsrsPss4qp$p0pdCdR dvn  |P`@()X?Z<o@9@~7\kD('";@<Qy_yj||}|l|t #0108o 8 h ) ;., P] ^Y k\ Y\   x   Ј 0)8(X7IPHI(aIxw<Jh<@A#-EBZxm !BlH`H+*@/BXj{;$?=@0d-T,#El3Ler3`&"'\$|4,:(2 62Ok/z0`67/H.*7AKU_k~ 2BVgz&-3ANV^kx!4W|  " 8 P h         2 A I Q Y a j r z        * A G P V ` h n v                 $ - 6 ? G O U \hijklmnopqrstuvwxyz{|}~hijklmnopqrstuvwxyz{|}~*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg d*>*OPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg      !"#$%&'()hijklmnopqrstuvwxyz{|}~_UpnpAcceptSubscription_UpnpAcceptSubscriptionExt_UpnpAddToAction_UpnpAddToActionResponse_UpnpAddToPropertySet_UpnpAddVirtualDir_UpnpCancelHttpGet_UpnpCloseHttpGet_UpnpCloseHttpPost_UpnpCreatePropertySet_UpnpDownloadUrlItem_UpnpDownloadXmlDoc_UpnpEnableWebserver_UpnpFinish_UpnpFree_UpnpGetErrorMessage_UpnpGetServerIpAddress_UpnpGetServerPort_UpnpGetServiceVarStatus_UpnpGetServiceVarStatusAsync_UpnpHttpGetProgress_UpnpInit_UpnpIsWebserverEnabled_UpnpMakeAction_UpnpMakeActionResponse_UpnpNotify_UpnpNotifyExt_UpnpOpenHttpGet_UpnpOpenHttpGetEx_UpnpOpenHttpGetProxy_UpnpOpenHttpPost_UpnpReadHttpGet_UpnpRegisterClient_UpnpRegisterRootDevice_UpnpRegisterRootDevice2_UpnpRemoveAllVirtualDirs_UpnpRemoveVirtualDir_UpnpRenewSubscription_UpnpRenewSubscriptionAsync_UpnpResolveURL_UpnpSdkClientRegistered_UpnpSdkDeviceRegistered_UpnpSdkInit_UpnpSearchAsync_UpnpSendAction_UpnpSendActionAsync_UpnpSendActionEx_UpnpSendActionExAsync_UpnpSendAdvertisement_UpnpSetContentLength_UpnpSetMaxContentLength_UpnpSetMaxSubscriptionTimeOut_UpnpSetMaxSubscriptions_UpnpSetVirtualDirCallbacks_UpnpSubscribe_UpnpSubscribeAsync_UpnpThreadDistribution_UpnpUnRegisterClient_UpnpUnRegisterRootDevice_UpnpUnSubscribe_UpnpUnSubscribeAsync_UpnpWriteHttpPost_ListAddTail_ListDelNode_ListDestroy_ListFind_ListHead_ListInit_ListNext_TPAttrInit_TPAttrSetIdleTime_TPAttrSetJobsPerThread_TPAttrSetMaxJobsTotal_TPAttrSetMaxThreads_TPAttrSetMinThreads_TPJobInit_TPJobSetFreeFunction_TPJobSetPriority_ThreadPoolAdd_ThreadPoolAddPersistent_ThreadPoolInit_ThreadPoolShutdown_TimerThreadInit_TimerThreadRemove_TimerThreadSchedule_TimerThreadShutdown__DefaultRuneLocale___error___maskrune___tolower___toupper_accept_asctime_atoi_bind_close_connect_fclose_fcntl_fopen_fread_free_freeaddrinfo_freeifaddrs_fseeko_fwrite_getaddrinfo_gethostname_getifaddrs_getsockname_getsockopt_gettimeofday_gmtime_inet_addr_inet_ntoa_inet_pton_ixmlCloneDOMString_ixmlDocument_createElement_ixmlDocument_createTextNode_ixmlDocument_free_ixmlDocument_getElementsByTagName_ixmlDocument_getElementsByTagNameNS_ixmlElement_free_ixmlElement_getElementsByTagName_ixmlElement_getElementsByTagNameNS_ixmlFreeDOMString_ixmlNodeList_free_ixmlNodeList_item_ixmlNodeList_length_ixmlNode_appendChild_ixmlNode_getChildNodes_ixmlNode_getFirstChild_ixmlNode_getLocalName_ixmlNode_getNamespaceURI_ixmlNode_getNextSibling_ixmlNode_getNodeName_ixmlNode_getNodeType_ixmlNode_getNodeValue_ixmlNode_setNodeValue_ixmlParseBufferEx_ixmlPrintDocument_ixmlPrintNode_listen_malloc_memcmp_memcpy_memmove_memset_perror_pthread_mutex_destroy_pthread_mutex_init_pthread_mutex_lock_pthread_mutex_unlock_pthread_rwlock_destroy_pthread_rwlock_init_pthread_rwlock_rdlock_pthread_rwlock_unlock_pthread_rwlock_wrlock_rand_realloc_recv_recvfrom_select_send_sendto_setsockopt_shutdown_sleep_snprintf$LDBL128_socket_sprintf$LDBL128_srand_sscanf$LDBL128_stat_strcasecmp_strcat_strchr_strcmp_strcpy_strdup_strlen_strncasecmp_strncmp_strncpy_strrchr_strstr_strtol_time_uname_usleepsingle module__mh_dylib_headerdyld_stub_binding_helpercfm_stub_binding_helper__dyld_func_lookup___initialize_Cplusplus_NewRequestHandler_free_ssdp_event_handler_data_ssdp_event_handler_thread_send_error_response_check_soap_body_check_soap_action_header_get_device_info_dom_cmp_name_dom_find_node_dom_find_deep_node_get_node_value_soap_request_and_response_get_response_value_free_handle_request_arg_get_port_handle_request_RunMiniServer_sock_read_write_httpmsg_compare_httpheader_free_scanner_get_token_vfmatch_match_alias_release_get_file_info_GeneratePropertySet_free_notify_struct_respond_ok_genaNotifyThread_ScheduleGenaAutoRenew_gena_unsubscribe_gena_subscribe_GenaAutoRenewSubscription_addToAction_makeAction_Encode_MD5Transformdyld__mach_header_Soap_Invalid_Action_Soap_Action_Failed_Soap_Invalid_Var_end_body.6132_start_body.6131_Http_Method_Table_Http5xxStr_Http4xxStr_Http3xxStr_Http2xxStr_Http1xxStr_gMediaTypes_gEncodedMediaTypes_PADDING_gMServState_gGetCallback_gGenaCallback_gSoapCallback_gInitialized_Http1xxCodes_Http2xxCodes_Http3xxCodes_Http4xxCodes_Http5xxCodes_gMediaTypeList_gAliasDoc_gWebMutex_saved_node.2997_inited.2996_stateInited_next_save.3778_inited.3802_inited.3788_uuids_this_tick.3787_time_last.3786_st_AdvertiseAndReply_AutoAdvertise_CheckOtherHTTPHeaders_ContentTypeHeader_CreateHTTPRangeResponseHeader_CreateServicePacket_DeviceAdvertisement_DeviceReply_DeviceShutdown_ErrorMessages_ErrotEvt_FindServiceControlURLPath_FindServiceEventURLPath_FindServiceId_FreeHandle_GetCallBackFn_GetClientHandleInfo_GetClientSubActualSID_GetClientSubClientSID_GetDeviceHandleInfo_GetFirstSubscription_GetFreeHandle_GetHandleInfo_GetNextRange_GetNextSubscription_GetSubscriptionSID_GlobalClientSubscribeMutex_GlobalHndRWLock_HandleTable_Http_Header_Names_InitHandleList_LOCAL_HOST_LOCAL_PORT_MD5Final_MD5Init_MD5Update_MakeGetMessage_MakeGetMessageEx_MakePostMessage_Make_Socket_NoBlocking_PrintHandleInfo_ReadResponseLineAndHeaders_RemoveClientSubClientSID_RemoveSubscriptionSID_SearchByTarget_SendReply_ServiceAdvertisement_ServiceReply_ServiceShutdown_SetGenaCallback_SetHTTPGetCallback_SetSoapCallback_SoapGetServiceVarStatus_SoapSendAction_SoapSendActionEx_StartMiniServer_StopMiniServer_StrStr_StrTok_ToUpperCase_addServiceTable_advertiseAndReplyThread_bWebServerState_configure_urlbase_copy_URL_list_copy_client_subscription_copy_sockaddr_in_copy_subscription_error_respond_freeClientSubList_freeService_freeServiceList_freeServiceTable_freeSubscription_freeSubscriptionList_free_URL_list_free_client_subscription_free_upnp_timeout_gDocumentRootDir_gMiniServerThreadPool_gRecvThreadPool_gSendThreadPool_gSsdpReqSocket_gTimerThread_gUUIDMutex_g_maxContentLength_genaCallback_genaInitNotify_genaInitNotifyExt_genaNotify_genaNotifyAll_genaNotifyAllExt_genaRenewSubscription_genaSubscribe_genaUnSubscribe_genaUnregisterClient_genaUnregisterDevice_gena_process_notification_event_gena_process_subscription_renewal_request_gena_process_subscription_request_gena_process_unsubscribe_request_getAllServiceList_getElementValue_getServiceList_getServiceTable_getSubElement_get_content_type_get_ieee_node_identifier_get_miniserver_sockets_get_random_info_get_sdk_info_get_ssdp_sockets_get_system_time_getlocalhostname_has_xml_content_type_http_CalcResponseVersion_http_CancelHttpGet_http_CloseHttpGet_http_CloseHttpPost_http_Connect_http_Download_http_FixStrUrl_http_FixUrl_http_HttpGetProgress_http_MakeMessage_http_OpenHttpGet_http_OpenHttpGetEx_http_OpenHttpGetProxy_http_OpenHttpPost_http_ReadHttpGet_http_RecvMessage_http_RecvPostMessage_http_RequestAndResponse_http_SendMessage_http_SendStatusResponse_http_WriteHttpPost_http_get_code_text_httpmsg_destroy_httpmsg_find_hdr_httpmsg_find_hdr_str_httpmsg_init_isFileInVirtualDir_is_escaped_is_mark_is_reserved_is_unreserved_linecopy_linecopylen_map_int_to_str_map_str_to_int_matchstr_membuffer_append_membuffer_append_str_membuffer_assign_membuffer_assign_str_membuffer_attach_membuffer_delete_membuffer_destroy_membuffer_detach_membuffer_init_membuffer_insert_membuffer_set_size_memptr_cmp_memptr_cmp_nocase_method_to_str_miniStopSockPort_namecopy_pVirtualDirList_parse_hostport_parse_port_parse_scheme_parse_uri_parse_uri_and_unescape_parse_uric_parser_append_parser_get_entity_read_method_parser_parse_parser_parse_entity_parser_parse_headers_parser_parse_responseline_parser_request_init_parser_response_init_printNodes_raw_find_str_raw_to_int_readFromSSDPSocket_removeServiceTable_remove_dots_remove_escaped_chars_replace_escaped_resolve_rel_url_searchExpired_send_search_result_soap_device_callback_sock_destroy_sock_init_sock_init_with_ip_sock_read_sock_write_ssdpStopPort_ssdp_handle_ctrlpt_msg_ssdp_handle_device_request_ssdp_request_type_ssdp_request_type1_str_alloc_token_cmp_token_string_casecmp_token_string_cmp_unique_service_name_uuid_compare_uuid_create_uuid_create_from_name_uuid_unpack_virtualDirCallback_web_server_callback_web_server_destroy_web_server_init_web_server_set_alias_web_server_set_root_dir __TEXT__text__TEXT Y __cstring__TEXT0e0e__const__TEXTy%yH__DATA __data__DATA@__dyld__DATA@@__common__DATA`__bss__DATA __IMPORT__pointers__IMPORTX__jump_table__IMPORT8__LINKEDITpEpE H5G@executable_path/../Frameworks/libupnp.3.dylib P((>f$>H] P@executable_path/../Frameworks/libthreadutil.2.dylib H@executable_path/../Frameworks/libixml.2.dylib 4/usr/lib/libgcc_s.1.dylib 4X/usr/lib/libSystem.B.dylibX{twXwUV$uD$D$F,D$D$FD$ FD$F$D$H4$W$1^U][uu}}؉<$}eEE!YUD$4E D$D$T$8UD$0'YD$,hD$(,YD$ 7YD$ET$$D$<$D$ D$$&D$p$UzX|$D$$]FJD$<$PtJD$<$P&'& ',$D$D$(U|$D$$\1Ʌt1EE0DD$E؉$ U؋}܅:UzDPB' '%w4$; L$$Rt4$E$'0R4z YB (IwH}E܋4D$E؉D$A$#Z4u܋x<$<$9CE؉t$D$,4u܋z<$Ղ<$9CE؉t$D$ǂ$ف4$D$D$迁4A(t$uD$4$D$4$o4$D$D$t$$E0T$$00`w$O&&'& '0 [^_UWVS[D$E$Z{>D$E$={@D$:$z@D$:$z@D$>D$E $zED$:$z)Ǎ|$D$4$z>Ƅ=D$E t$$7z@>D$E$mzDžtY>D$E$Hzt$ƋE )t$|$$ zE DE |$$yDžE>t$$ytP>D$E$yt7>D$E$ytD$E |$yDžEt$$ytJ>D$E$syt1>D$E$ZytD$E $y11u\[^_U][uu4$<D$x1҅<D$4$xul<D$4$xuQg<D$4$xt6z<D$4$xu l<D$4$xxu]ЋuUuu}} D$D$<$nw|$4$G4$1҉G@u GuЋ}UVut4$Ou^v^UWVS[LEt4$ wED$E $Ht'4$v\t$v1GE1t$rEDžD$E䋀|$uv$u<$uO;D$4$u4$uD$<$u{$uk$u[D$$[v4$mu<$3uZ;D$4$uD$$ u$u$#uD$$uE}u>E$D$E D$ D$1D$$3E$D$E D$D$ D$1D$$S}to Et?}}+D$E D$D$ 1D$D$E$D$D$D$E D$D$ Et+E8t#D$E$`tuuD$0E$etD$D$E$QtuCD$D$D$E D$D$ D$E$^D$E䋀$r<$r^;D$4$rDžDž<$D$yrX$\rf;D$4$;rD$$1r$5r$HrD$$ sEt_}u.E$D$ E D$D$$WE$D$ E D$D$$out5}ubM t[E $rD$D$E ${ru3D$E D$ D$D$E$$q<$1p L[^_U8][uu}4$]u~Fƒt~@j~@tf~FNM‰D$1:L$$zqus}|$D$4$JtX5D$<$0=uB~t~@u$D$ D$D$4$D$4$4$ ]u}UWVS[< uE$oDžtB;MuD$<$J<$sMD$ $=u<$1nED$Uԉ4$T$D$ D$ D$o0E؉$nEԍuE؉E܉E|$D$4$mD$4$vmD$4$kmmD$t$$Vmt<$< [^_UWVS[lD$EEED$$nE3}UED$ED$ $D$ D$nE$%UD$D$$cLsnu(ED$$JnU$l3`EED$D$ D$D$<$nt6ED$$mU$ilD$<$m<$ EEEEEEfElD$D$<$lt@D$<$|m<$kED$$amU$k5wkluEE$lEԍ1$lD$t$ D$ D$<$Elt@D$<$lUD$$l<$JkE$?k0kluE$kD$t$ D$ D$<$EmlED$D$ D$D$ <$FlED$D$ D$ D$<$lt=D$<$lUD$$k<$yjE$nj8EUB1zl[^_UWVS[ET$E50D$EE$kU$k4$=kUEDNEE܉D$ ED$B`}̉D$B\$f<$9::0UD$80D$0Et$4T$D$D$,0D$(=D$$1D$ "I<$D$ED$1D$ E܉D$ED$mu*EЋUD$Ẻ$D$ 1D$ED$f<$9Ĝ[^_U8][Uu}M܉$0T$0T$TitmD$$\itL$dit>$`i4$EPiD$E܉$6juE1D$E$jt<$h]u}UH][}׍UuMЉT$D$$B/@$@$hEu $pFD$F D$Ẻ$iFUD$#$iiEuẺ$gU<$Xip4$hEuẺ$gUȍ 0t$|$ D$$hEȋỦD$$hu<$4F ,F0,08,D$#4$veu0HEʉ)D$ -D$0 $)ЉD$Kt,0 }-D$$0uEE,0 U ED$$ct$-f E}<$c)$yc$ic$pc$T$_d4$-c$c$2c4$D$4EЉD$ ED$D$$E Iu(+4D$<$4$Dž,t$4MDžA$EЉD$D$U҉u%M $E $D.U $닕,t)4t DE $EU E1D$ EED$B`D$B\$F^ $bƍE$i1 .D$0N.D$(8D$$,D$ DT$,t$|$D$'/D$ ED$ $D$E؉D$dt $3EUD$E$D$ ,D$EԉD$ ^ $0$`1DMUEEȉ$ DžDE$}`u11Dž,D$4/D$$%`D$$`to$"`ta$-`tU$$T$ at?4$)`Džt3E܉D$4$`Džt4$_1Dž4$_t<$_Eԋ1҉D$ E؉D$D$$E e$$4L$21(+D$4$0E܋UDžDž,BL$$EԉD$U؋,t*4t DuDM ẺD$ EED$A`D$A\$Z$.4$w^  8D$$,D$ DD$&D$_ $^Ƌ"D$^D$D$ $D$6/D$ ẺD$EЉD$Uau|"D&D4$^t$$1D$( $^ <$T$D$ l^M|$ $D$D$D$ @/D$ED$/Z $\$,tM E $E/14$1\E܉$\ tM E $E$W\tE $Ej]u}UH][u}lj$h\Ƹt]t$<$2]tDED$E؉D$ %D$4$]4$D$CuE|$$\u1]u}U(u…}‰Mu.4$[:u E014$[uܸu}UWVʃ0ΉEu7u2E0EU1/EME_uF9tڋU9|ָ0^_U$[1҅t $[ɉUH}NjG][uD$UML$D$D$ D$$isExDJ$D$ D$D$<$(7M$D$4$x[D$<<$)D$ Z$D$M(uME$53ED$D$D$GD$ D$E$rtE$2]u}Uh]uƉ}ωUEEE@D[==B4$h2E܉D$$YE܉$OY}E Y# EE̍E}Ѝ}ȉUUȺ$E俘$YEU $T$XEs}pEY#} EE̍c#EЍ~#EԍEUUȺ$3E5$1WUEPUEE#1E$1#WU=ljE}uCU#MurEtf$XWUtUE}u>E1$WEE fUĉD$$}Wuyr1EbY# E}ȉUEEUE̍#EЍ#Eԍ#E؍EUȺ$\uE܉$V4$VUĉ$V]u}U]E[uu}}<$2&E4$D$mW4$D$謙H fD$@E E2D$< D$8!D$4TD$0E $WD$,D$ D$D$<$D$(ED$$ED$ t'D$ED$ED$ "D$ PYuq<$W%uHE1ɺD$D$E$}Ƌ$N.uf1Du]u}U]EU[}u$$E$$E$ UuDžqU$TXEؾD$EЉD$ D$$U$D$;ƅ UxfD$$CUD$E$`Lƅ$U<$ U T$lD$pt$hD$`T$d T$\ T$T T$D T$@D$E $t`vEEEEEЉ|B~ t8E<$D$?<$D$?tED$|$czt v$u1}uUVE$>t#$>fu4$>E^0>1^UWVE }$]>ƋE:4$f>fHu$4$U>|$$*?u E04$'>ƅu1^_UWV}G7ED$ED$$DtxED$ED$$$t E$EtE$!7E܋wD$D$E$F$t E܉G1]u}UVu$6F$6FF^UVut|t$6Ft$6Ft$&6F t$6Ft$6Ft$v6F t$|Fu^5^UWVS[LED$EEED$$*U RD$EUȉ$5E$5EEEEԋUĉD$$5EȅED$ED$$7E$uȅu rv$V$Ủ|$F$n6uAE̅t F$ỦB$ F$U BE 9puỦPF$4$E}uUEuU }xT$|$$3uE $39ǸB}uU}}uGD$E D$$3uE $39GB}uUWV}G;E wO9M v^U )‰ЋW 9B4W G+E 9v=u ֍FD$$2uE @D$$2t u w1҃^_Uuu}EH9U E…1uqUMD$ $,uVE@T$U)D$$1EUM 0T$L$4$1EUPPMu}U}}uu G4$D$ 2t$<$D$u}UUB$D$ ED$E D$UM}U u}AtI :9s1))ȋMD$:$D$0Ep$)t$ Ur0u}UUBBUE@ @@UVut%$q/F FF^Uuu}}4$E ~~u}UM }}uuE1$w@U|$$u+t!UU |$$T$/U8Ex}uUVu 4$F0t$D$E$l^UWV0EUEEߋEJUEE EEEUUU4}tUD$E؉$UD$E؉$~Fu}NuU9U~0^_U1ɉWU V}u B9t A9^_UVutF t$-u^-^UVuE D$4$D$#/Ɔ^UVuE D$4$D$.Ɔ^UEu}}=BE t$<$D$.7u}UWV }u G,$.@EG0$s.@EGFGFG F GFGFGFGFG F G$F$G(F)F(E$W-F,tiM $@-F0uF,$R,EV,G,M$D$L$-V0G0M$D$L$,F4F8 ^_U8uu][tUF,t$+F0t$+V4t(E؉D$*T$$F+u E܉$F4]uUWV}<$uw8<$g+u^_UW1VE0AU t$$,u'tF8G8F8UF84$1F8ƅu^_UWV} u|$4$v,tv8u^_UWV} uN,G $T$D$+tv8u݃^_UE@@U 1UVuE D$$+$,*¸0BEƒ^UWVƁpE $+U>=dD$D$$*D$D$$*t d UwEEE䉅Uu&D$D$ D$T$&D$ D$T$D$4$?*:@u(8t_UE쉕T$ EED$D$"D$<$(ED$D$ D$"D$<$)DžtSt$D$ <$T$);D$ t$D$<$j)tj)ƅˋED$"D$<$D$D$ 4)x[U:tW$)+)NjE8<15ED$"D$D$T$ <$(0p^_UVuEU ME u^UVuEU ME u^UUBE EBEfB1ÐUEPE ;PUVuF$TF $Iu^&U][uudždžD$D$Fd$%H$]uuUVu>u@FdD$$r%$FH$$&^UWV EdE$0%%~E <$D$tEt$$%u1 ^_UVDE uD$EԍẺD$Ed$$1҅tPt B BFD^U(uu}FtH$E D$ED$$&xF;Euv$8"uu}UVuD$D$4$%dždžƆ4$BBFXE džF@^UWV1 }GE$$2F2uG7E 4$D$%M‹G҈ t+ ^_U]E[uD$ $t$1҃tƋ]ЋuUWVS|u UB |ED$ED$}d$t=H0EE0E܉D$E$(}U܉:$,@E$@V U$2E؅uEEED$E܉D$E$uE؋UD$Eԉ$D$nt 4$F~F FEt$d$}Uǂ[u؅q MD$4$4$EE؉D$EԉD$}ƒEǀČ[^_Uxuu]}[~Xdžt~w^NtP=ND0u$AcvF@ttt tu1džE~dEED$D$<$Nt7PB EBE䍃D$E$kxdžEED$<$D$t4PB EBD$ EE$)dž.~Xt~uƆdždž]u}UWVS[UZAMYf u}/u)9Љr2v E(uŰE~D$&T$ D$4$t~ F|$)D$E$~Mu&+ǁudžE)9,E4-D$E$tM+*Ut$)D$$Mǁ5E$zUǂt$)D$$rMu).UzXǂt#zwoJtaǂZuND0u$AcvF@ttt tuEǀu}E|$D$d4$t:PB E܋BED$E܉$xUǂE|$D$4$t:PB E܋BD$ EE܉$Mǁ5u~Xt~uƆEǀUǂM $F5uẺE}UuEHvF+EЉFAUԍ0}܉UT$ |$D$4$E%D$D$ t$D$E܉$|MA E؉D$Eԉ$Fu‰wD$E؉$D$QHdž1wED$E|$4$D$ :D$HE؉D$Eԉ$M‰ȃD$E؉$D$7QHEE0E`D$ E\D$PD$E$MUljUr\J`E%D$D$ t$D$E܉$#x^DMAǁdu4$ƒN?Uǂ+Mǁudž EǀČ[^_UVEuD$E D$$u u^dž^UWVS[lu&fB4>)9Љv VG<$EED$ D$D$ctEG/ G+ED$ED$$EGu&+dždžꋎ)9<D$$t+6|$)D$$t4$udž|$)D$$q1)~Xdžt~w\NtN=ND0u$AcvF@ttt tudž5E~dEED$D$<$t7PB EBE䍃D$E$xdžEED$<$D$t7PB EBD$ EE$džx~Xt~uƆdždžEl[^_UVSUu [BFBFB F BFBFBFBFB F B$F$B(F(B,F,B0F0B4F4D$F$Cu"N$tVuF1F[^UVTE ut$D$E$KHuE4$D$ƒT^UWV} E|$$D$D$$!uf37G(D$D$4$w@u4$D$4$4R^_U8E][}} E‰uu"EuEx #}Uu 11EB$EMD$D$E$U$JMuEƋ|$4$D$jUf MT}1ED$ ET$UD$$t M $=y EU21]u}UWV} <$stwBdEMD$t$D$ $S~1D$t$$GuY<$ tt/t<$u1҃ELJM~EMD$t$D$ $~;D$t$$u<$`u tttM t^_UMVu …uEtU1^UUt ǂ1UVut2D$$4$dž4$1^U}VMuE …t EE ^U(][u}}4$^@uD$ t$<$D$]u}UWVS[\}EEEEEEEEU3EU $D$ED$E؉T$ ED$$EUf0P D$D$$iD$E$XtUD$$wUED$D$$@uE4D$$*CE܋UD$E؉$D$ D$ED$tED$$U$ŽE]u}UH]E[}}uD$<$<$D$U $A<$)ĉ<$t$0uD$4$@D$|$4$JD$4$[xD$/<$tx<$/U|$ T$(UD$$D$BD$BD$D$D$D$D$ E $_tU $~]u}U}}E ][…‰uuM…EqU EUEU 9U4$D$D$DE UD$ D$T$$Ẻ$lEt$ D$<$T$O$4D$D$$LJD$<$D$D$$u<$f0wD$$ɿt(0D$$ǿ<$3ED$D$$@u(4D$$<$DEЋD$Ẻ$D$ RD$E$D$Rt#D$$#<$E䋕D$ |$T$$Mu<$~…t<$>GDUE܉D$D$<$iu EE܋Uu E6u U u Uu EU 1:E̾$ ]u}UWVS,E[} u <$ D$<$_ƅƅUED$t$$D$ ~ED$t$<$u N;vVMHt/tu5uu*EMU1ҁ,[^_U(}}E ][…‰uE uD$ D$D$<$߿$D$E䋕D$D$<$T$ D$`U ƋED$<$Y$h<$]u}UWVS[LD$D$$t#u؉D$4$ڻt.D$4$ED$E$PE0ED$(D$E؉$@u.D$4$蕻ED$E$E4E}|$4$D$E D$ D$cEt$D$4$9ED$E$4ED$E|$ 4$D$ED$D$4$EEԃL[^_U][}}u<$U)čD$0T$<$<$D$EЉ$=|$$q߶D$$|xD$/<$4<$3/|$ D$D$D$D$$ĶD$E$D$ED$D$ t $XE T$D$ D$Eԉ$D$EЉD$Ft!$腽$EEtWED$D$$uU.u丳CEt$D$E$XU2XUu EUU\T$aUNjt$<$@D$U<$@D$7UD]u}Uh][}u}E‹MuЉMt E}ԉ<$۲E Mĉt$EFD$D$D$ L$<$u3EED$EԉD$ <D$ED$E$Ɖ<$莲]u}UWVS[<JGE74$s;}t0uꋳFGE74$K;}t0uꋳB2G E܉74$#9}܍t0uꋳ>RGHE؉74$9}؍t0uꋳ:GEԉ74$9}ԍt0uƃEQM))Ήkdu)ƃƒt dƒt Kƒt 22ƒt Rƒ1Ʉt<[^_UWVSuˍ#$3S$%C$3ǃgǃcD$$@t/1]Ћu}U(]E[}uD$,<$茯u10t%P,</uD$T$<$֭1]u}UWVS[,T}<${ƋE|/uEt$<$D$fEt$<$D$Ou E<0/tEEUu1,[^_UW1VuF$FEG$9ڃ^_UWV E$$t~E $$u 4$XE4$D$wE <$D$h4$R<$J|$4$ot)E4$E<$EE ^_UEu}8t6U <$T$tE $U Eu}U8U]u}EEEE [$D$[D$-$\ E؉D$ ED$D$<$E#E@t E#E@u3-<$&1ɉ9}6<-t.ЁwMD5t@EUM QE؋UE؋U܋M QEUMQ A뙋]u}UuE}u }]@M[ U$a@$EċUĸMEĉL$$)UčD$$DtMčD$ $+EuEĉ$OUB@EwEЉD$E؉D$E$@WU܋E9׉EU991EAUԋEЅ҉EUU9U| 9E;}|;uwEUEЉUԋUMEE+EUUMEUMt$D$T$UD$E|$L$ T$$Mĉ $jE#E@E;}< ;u1EUM+EUEUt$|$t$|$E#E@MԋUЃUM ;}H|;uwAM(ǁǁt$|$t$|$ `M+EUEUEUMEUEUt$|$t$|$D$T$ D$Uĉ$Mĉ $]u}UWVS[LEU$EЉUREUdU؉$EEE܋ypD$D$ !T$FD$$葨~v"E$F@$EVF T$UD$$FUxyD#$t*tdE܋U؉D$$E܋u܅>E @U$v D$E$tU B 뜋E$ U 놋E UԉD$ EЉT$UD$$=EXE$U$EEL[^_UWVSLu[}Et-Et$UD$$P GD$E$kLJDžƅDž t <$(ƃuƅƒtڃtՋ$E䋕D$ E D$T$$'~ID$$T$~<$tEƒt=t8%t LJLJ^ƅ9v'=+‰D$T$$UtAD$T$$R yE$RD$D$ T$$DxH9E8t5$P/LJ$$L[^_U(][uƉ}<$Ft,F$F$F$4$ۢF$$Y<$_]u}U8][u}>uV $+艢+VkE$1 E$E$]u}Uh][uu}1&EЍ}E$ۡ<$ӡE>/tD$<$譢t$<$赠$EED$E D$E$蹡E4$EE4$EĉEȉẺEЉEԉE؉E܉EE䉃1#<$E$E$w]u}UWVS[EpBD$4$@E%=@up@ =pB D$4$p1҉At$EUpQEApx@D$.4$D@1 EEDhU4hv lM $D$~ ~;}~"}NulhP|xh||$<$}D$DžttB|u|$ D$4$T$ 4$x4$Džtp$$0 DžttĜ[^_UWVS[EȉT$EDžDžDžDžGUX$6U E܉D$ Eu ED$B`D$B\$F@$\FVD$\T$$bF\E؍E؉$D$ FD$\$ =\:/tƅD\$t=\XDžT$$<U B=ƅm4$-x1|5E9E=EAEEEIEMEQE4$V\D$x$u!EEEEEEEgg $5Eu ƅƅƅhƅgE}|$$EtSEˠM|/֠EЉT$X$КTE|$$WELE3ƅƅh!ƅ" D$X$B\XT$$>BXD$D$$xUt E|/tҋE xE}utQEˠM|/֠EЉT$X$谙TEIM>UDž`3ƅhƅgEUt$lD$E pT$ $/Dž`=U f1Dž`BtGD$$ED$ D$Et$D$D$t2D$ ED$D$ED$D$}plx=D$(ED$$D$ ET$L$D$D$$D$ ED$D$ED$D$D$ E܋TD$E$D$U 1BDž`tvgDž`uh`1 uFT$腘6ƅƅƅDž`\$E$:t xt%U B`D$ B\|$D$E$M`@`GGEUD$E$D$ẺD$EȉD$D$ +D$ED$xGED$ẺD$EȉD$D$ 'D$ED$E$UD$ E$D$ED$T$1T$D$D$D$;D$ T$E̋UD$Eȉ$D$ D$ED$T$蔖X$膖[^_ÀgƅƅhpD$,ED$(D$$Et$ T$D$D$lD$DD$ E܉D$ED$T$US[$ED$ED$$褟t&D$ED$E$Yt1҃$[US[ED$?$[US[ED$$][UMU ABB BAfBABUVuFt$xFt$i^U}E} up<$9uUt$|$$‹uЋ}U}E} up<$9uUt$|$$‹uЋ}UVUu J;NuL$$D$^UES[8%u1Pw%bD6tPw D6u1[Uhuu }}]E[<>%7PUPD6@=w}D6tvED$pD$Ẻ$KHuWUF1ɉEԈU+EӍU2UԋEE;s UEUAE9wɍBU1]u}UWV1} Et$F|$$;7r1^_U]E}} [u1E;Ms/=UwD5tfUAtB̋Ef)f0]ȋu}UWV E UU$EU츘}uE.ua;Mty/u[y9}tAED$E$ƻU$D$H'uE 8uUT$<$脻 Eĉ<$D$ED$赺E:MPtt E $D$뼋Ut(f@//pE4$D$E܉D$kutEuU tT$$qEЅu EEE̋t1ɉÈ</tBrA9Mv EfF8 MW4$f@ EM܋T$GT$4$D$ EԉD$ٶ$藶;}|4$f@ @4$>U4$1L[^_UVuF@F@u6$赴F$'F$蟴F $蔴F@$艴u^|UWVSUdED$ E䉍`ED$B`[D$B\$=xt$hD$4$FDžhTIMEhDžlOUT:Džp SecDžtond-DžxinfiDž|niteE}̉<$`Et$(D$D$$D$ D$‡D$ ED$D$<$D$ED$襷t,<$ăUdD$T$$-7EЋdD$Ẻ$D$ {D$E܉D$蠰<$n[^_U(][u4$ED$E$5Ht4$ϳE$|4$谳1]uUWVS[E$赂UB0T$D$D$D$ D$D$ED$D$ $WuDžDžz$U-U||$BD$̪x1D$Eԉ$t6D$$8E;P<|yEĉ$见E|$D$D$D$ D$D$$_t.$xD$$wbE }E$uU |$T$@D$EȉD$EĉD$ D$$:t$$D$$E|$ D$D$|$$t1$詀D$$訅<$轉D$$腅$b$Tu-=t=E$UĬ[^_UWVS[lu E$VEEJ4$@$-t#U$@$Eu<$(E$Et$<$蟰UET$$荰O$ ED$E$1Ht8<$ȮU$轮E$貮O$ƯEzEt$D$E$nu8<$qU$fE$[O$oE#D$E $ztP8t8<$U$E$O$E@8EM$UEYEt<$íE$踭U$|$d}EuT(eD$T$ $U䋍E<$ t!$]$臛B AHBJ BTBL$XT\$貛EPp$t$$L$]u}U][uu }E D$D$4$suD$D$4$stt$D$EԉD$D$4$stE؃)vUt$D$$D$EԍUU}$D$E؉<$DSiFD$F<$D$htt$D$E$뜋$E܉D$E$Ht$Et$D$$6<$isED$E$Y<$Eh}tUJtET$$duUt$D$$E܋t$U;B}Et$D$$Ủ|T$D$4$&rtMED$ nD$EЉD$Ẻ$t%,nD$|$te EE܋tUt9}E}u G4$EG4UE4$tU<$T$d$9]u}U][uu }D$D$4$(quD$D$4$ qtt$D$E؉D$D$4$ptE܃)vUt$D$$ +D$E؍UU$D$6EDEȉE$fFUD$F$D$ett$D$E$떋$"ED$E$Ht$Et$D$$nU$;fvEȉD$E$:VU$ftGtE|$$aut$D$E|$$Rbt$D$U$$`]u}Uh]u1[}׉EĉM$4֕E$迕EUuȋET$$]UB,UD$B0D$E0$LE0UEĉBEB T$4$D$4$D$ד4$D$̓Et$ D$D$D$GD$ד$輓tU$E$ UBUB4]u}U][uƍE}׉M4$ED$R4$D$rE؉E$c?gD$EE|$D$D$FhD$ ED$D$$舗t E$cgED$D$ D$E܉D$E؉D$E$TƋE$hct E$lExDt $pl]u}UWVSE[҉u $XuB w D$xT$rXD$E$裓EinfiEniteEtT$<$讓<$D$Ί~}ȉ<$=bEt^ED$$#gD$ D$T$D$D$fD$4gD$ D$<$ƕED$4#gD$0=gD$,LgD$(D$D$D$D$$VD$ c<$D$OgD$D$bgD$ =vE̍T$D$D$ED$ D$$<$at$t$jED$D$$jt/Et(}؉|$D$$zjtU܅u $pT$D$ fD$E؉$xt" gD$<$]u)ED$E$ ]Uu,$Ii#$/i$iĬ[^_UWVS[ELE}$QD$E$uvU䋂te|$$bukE|$$c$UԋE؋u$Uh<$bg1$誏U䋂$b$艏L[^_UWVS[L 4$aUE䉅D$$E D$E䋀$cu4$UT$$`4$UԉE؋u$Gg$a4$诎ET$$:t4$脎EU T$$a4$cL[^_U1 WVS[|}E󫋳݋4$ UEED$$t4$p4$$ˍEU$E 14$1ʍEMEL$$ItE}Ѝu<$cFt$<$EURt$D$$袍M $΍@$EtrE 4$D$蟍$<ՌEtPp0UEB,M$L$qE@4UMA8EMEutE$藋4$菋U$脋݋$蘌$v|[^_UWVS[} $bE䉅tD$E$ t$3E|$$_ED$F4D$ $ru Eĉ$]EF44$pD$]Ƌ$踋UM$EUƋ$萋tD$E$ t'$du E$3uoE|$$_u.E$p$]$V@,$щEG,EEtE|$$H^p$]$訊Ĝ[^_UH}}]u[w 0D$t$G$F,tEt@uN94$L/EPUԋp$0t$G $ D$Uԉ<$0[]u}Ë4$ED$G$ uU]E[uu }}D$D$4$bED$4$EEEčEȉD$bt(ED$ x]D$ẺD$Eȉ$]ptt$D$<$ElD$D$4$MbtƍUЉhT$D$4$,bt\D$l$VUuh}]D$$:Utt$D$h4$ L>E܉D$$%!g$nU؍E䉕dT$`$ tt$D$<$E\D$E؋$!\pM<g$$‡g$҇d`D$$ t0t$D$<$${g$\D$E؋$w[pu't$D$<$$&$t$<$|D$p<$D$sEEE܉EE؋Ptpg$҆t$|$$ t"t$D$<$$g$虆E܉$˅]u}U(UED$ ED$B`D$B\$CED$ ED$E D$E$GUuu }}Fu@D$D$4$3_uu u}}u u}}}uu u}}uu u}}uu}}E YU十#t 9uY1U價dunY1U價dɍBmDYU卑sJ@t=u=tHUVS[Idu"r 0$跃uǃr[^UU"}UU闒U9UwUUUUUV4uM …u4Et-EL$D$4$D$ED$ 訝~ 4^UYEr@U8][u}1cEUE tEu4$p!4$pE D$ED$E$]uUH][uEOW4$>pED$E$t4$%pE tEu4$p4$o$LoƸEFE D$ $/pE<E84t$uԉD$4$mm4$D$mD$4$mZD$t$$m1]uU(][uENucV4$ oED$E$t4$n0U u4$n4$nE D$E$@]uU(][uEMuV4$znED$E$t4$anLE tEtMu4$=n(4$.nED$ ED$E D$E$]uUVS[@EHMhU4$mED$E$dt4$mE tE}…uEu4$m4$nm$LmƸEFE D$ $mEFE<E8t$uԉD$4$Xkk4$D$KkD$4$@khXD$t$$+k1@[^U(][uEKuNT4$l} |ED$E$Ht4$dlEU 4$Il1]uU(][uE}KuNS4$l} |ED$E$Ht4$kEU 4$k1]uU(][uEKu} S4$kED$E$ t4$okJU OE E Eu4$Hk#4$9kED$ED$E $%1]uUx][u}} EYJyRE$jEUUT$$dHtUf$jNE䉸tE$jU|$D$D$D$D$ D$T$$G$iE+$iEu E$U:UEPUP E$iUET$${Ht+U$iE$hU$hEuĉ4$D$D$gh4$D$g4$D$gEt$ D$D$D$D$Q$gt#U$iE$gU$g E$h]u}UVuF D$F$u^9U(uu][}F=w ?Wt$ig1]u}UH][u}GOEԉ$=hGtEEԉ$#hE$Eԉ$hED$E$uKEԉ$gwtF$f4$fED$|$$eE$euED$$eE$EǃG$Pg1ҋ]Ћu}UX][u}EFWN<$ gFu<$ff.<$fE$Ʋ<$fEEԉD$E$R<$fE䋀tD$D$D$D$ED$ D$$D$<$OfEԉD$E$u<$&fhE䋀|$seE䋀$beE䋀x$.eED$$cE$ ǃF<$e]u}YUU;T<UW1V E$dEE @EE|$$dt-EG4$D$4$d4$d4$ddu ^_UV$E$dukUFutF xu xu6u݉$c1u81@$cD$D$E$IeEƀU뿸$^U8][u}ECLu<<$fgdED$E$Hu} }fE C<$*d]u}U8][u}[CE}…{K<$cSCt<$cREHBtuUuBu$!cu<$YcwEFU džVD$D$$BadžtdždžUUǃSC4<$b1ɋ]ȋu}UM}} ][…Љu,$D$ED$ ED$D$ ${~VuT4D$$D$$bE|$$aNjE$`tftv]u}UH][u}:AE fE…wZIEԉ$a6AtUf$aHzPxBtuU u BuEԉ$$`uUԉ$"aU xhFE܉$^o>tUf$^9E} …uutE8uUܿ$^MHBtuUu BuE܉$$ ^uU܉$?^U4F džUE$T$^E FUdžtdž|džVdžxED$D$$[xdždždžUD$$t%ED$$[U$.,D$x$\|u@U俕D$$6[x$J\U$>E܉$\R+D$x$\UD$T$x$d#ǃo>E܉$\]u}U(][u;Eut$$4Hu E$Et$$uu E$RC$Z F$Z2E$xZJ$[C$[J$[;u"^J 0$Zuǃ^Jǃ;1]uUX][u}} :<iYB$*$[$[D$4$-[AID$$Z#ID$$Z4$ZEt-ED$}C$G[:J t3}C$t։4$Z4$ZS9u4$unZ4$XD$ 4$XD$4$XD$ 4$tXD$4$_XD$d4$YXEt$Eĉ$qXtǃ:Z=Dt$$BXuэGt$$,XumYǃ:$ eY$ EĉD$]B$Wtǃ:3lj$Aǃ:uNf1D1]u}U1ɉWVuS[89uD A!u덃{/[^_UVU t3ET$$՜ƸtEt$$)Y4$W1^UHEE][ɉ}…‰uι$XEMtEt$t$D$ /Et$t$D$ //D$E܉$SXE܉|$$WƋE܉$Vt fug`U 1Ʌt\$BWEE D$$VƋEtED$$V4$D$VEt$$V1]ȋu}Uh][҉}…ɉE‰u#$VE Eȅt-|$t$ |$|$-t$ |$D$Eĉ$4WED$Eĉ$}VtEĉ$UEĉ$UEEu EEE̋E8tME$Ut$EԋE$UtE|$$U4$D$UEԉt$$UEЋE9EtẼEE̋0놋E1]u}U(EUEM D$ED$E$1xU(EUEM D$ED$E$IUVEuUM EEuE ^UVEuUM EEuE 1^UWVS[|uD$I4$&,D$TM EuD$4$TU$rTUE,D$$TUNjE D$$SƋEt EUD$$S4$D$Tt$<$TE|$$S1҃|[^_U][uu}D$I4$5+D$TED$4$Suu EEEUBE:t}E$lS|'+D$E$ St$EE$RtE|$$R4$D$SEt$$SED$|$RUBE2EE9EZE1]u}UE@@#Eg@@ܺ@ vT2UWV1EU)UMAAA9rӃ^_UWVEJ(EEE@EEEE@EE EEx E,AQ A A ‹,TFu΋EU#U! ‹(Uxj׋UM!#E UV<9!#E ‹EUp $47!! ‹EUčν !ЉE! EEEȍ| !ȉE! EEE̍*ƇG<9!E! EEEЍF047!E! EEEԍF !ЉE! EEE؍ؘi !ȉE! EEE܍D<9!|! ||E[47!x! xxE䍔\ !Љt! ttE荌"k !ȉp! ppE썼q<9ЉE!$E! $$ECy47ЉE!$E!u! $$E!I ! EE!Ub% ! EEЍ@@<9!d! dEdQZ^&47!`! `E`Ƕ !Љ\! \E\]/։ !ȉX! XEXSD<9!T! TET؉47!P! PEP !ЉL! LEL! !ȉH! HEH7É<9!D! DED 47!@! @E@ZE !Љu-E$OM耋Eǃ=>5>Ef9>5>9>fF]uUSDU[BD$0BD$,B D$(B D$$B D$ B D$B D$BD$BD$BD$ D$D$E $oGD[UWVS[D$Fp=ufǃt=ǃp=EȉEU$|==uȋ}̉EEUU11 t=f=w@ft=t=UMEEUMUE=U≃|=U$N\=t]===uE=UUfME=EfEt FO)ȅt[l=u2M $ŰE E1ЉỦ$Fǃl=EfE*fǃt=u}}9}wrE9EsfEU}uEUыU}fuډUE1ҋUfBUE1ҋUf%J ?ɀfBJz frEMUuE\=M}MUDžuEUǃ\=d=h=UE==f=U=E=U=ELj=򈓎=U;h==r*w M;d=rEUEUd=h=D$)DČ[^_UM UV9t rJHAf9BuAf9BuA8BuA 8B uщ։ʹB 8F r wFBIu1^UWVEuM}EEfufU fMffuލuEEfM܉U؈EE4$EEEEEEEEEE؉D$4$D$E 4$D$ED$Et$$UEʉGEGEfGG Gff%0fGG?ȀGĐ^_UWVSLE [p@f$At$ D$ D$$BU؉$Eȉ$Ut$$AEt$$XAD$$IkD$$)K|$$ +|$$E$At$$@E؋UD$$@DžD$4$@D$$@$@$@ED$4$|A4$D$dUYED$E$D$z'D$$T$$EtU:/t=t$$t$$|UET$D$$u~ED$ED$$qu^U؋E܀|/t'D$D$$@u-U؉T$<$O?u+1$) $>Dž$>$$DžDž$?te|/tE8/<$E_?U$R?D$~>uDž*T$$?|$$>ED$$>! tп€DЍADȋ҃+$q>DžƁU1httpB://$D$B>ET$$->U$d=t3E$D$ >$D$D$jNj$L<$><t$<L[^_USN: ST: LOCATION: EXT:CACHE-CONTROL: max-age=RsdcDscsscSXcsscssccssdp:alivessdp:byebyeNTS: NT: :239.255.255.250QsssdcsdcsscsscsscSXcsscc"ssdp:discover"%s::upnp:rootdeviceupnp:rootdevice%s::%s%imax-age = %d%0HOST: %s:%d MX: %d ST: %s uuid:schemas:deviceuuid:%surn%suuid::urn::service:urn:device::all:rootdeviceuuid:deviceTypeUDNserviceserviceType239.255.255.250:1900CONTENT-TYPE: text/xml; charset="utf-8" Invalid ActionAction FailedInvalid Var%d
s:Client UPnPError EXT: RNsDsSXccsssssbBodyhttp://schemas.xmlsoap.org/soap/envelope/"%surn:schemas-upnp-org:control-1-0 %q%i ; ns = %s-SOAPACTION%sQueryStateVariableXML error RNsDsSXccsss*RNsDsSXccbbbbOut of memory%s:%s%0M-SOAPACTION:MAN: "http://schemas.xmlsoap.org/soap/envelope/"; ns=01 01-EnvelopeQueryStateVariableResponsereturnerrorCodeerrorDescriptionFaultdetailUPnPError SOAPACTION: "urn:schemas-upnp-org:control-1-0#QueryStateVariable"QsbcNssUccsss <%s:%s "#SOAPACTION: "qNssssbscUcbbbbbbbResponse qNssssbscUcbbb127.0.0.1ShutDownmserv start: bind failedserviceListserviceIdSCPDURLcontrolURLeventSubURLdevicerootURLBaseACCEPTACCEPT-CHARSETACCEPT-ENCODINGACCEPT-LANGUAGEACCEPT-RANGESCACHE-CONTROLCALLBACKCONTENT-ENCODINGCONTENT-LANGUAGECONTENT-LENGTHCONTENT-LOCATIONCONTENT-RANGECONTENT-TYPEDATEEXTHOSTIF-RANGELOCATIONMANMXNTNTSRANGESEQSERVERSIDSOAPACTIONSTTETIMEOUTTRANSFER-ENCODINGUSER-AGENTUSNGETHEADM-POSTM-SEARCHNOTIFYPOSTSUBSCRIBEUNSUBSCRIBE ()<>@,;:\"/[]?={}%ihttp%w/%w%L%c%d . %d %d : %R%c, chunked%x%L%c%c%s %S%w%c%s %S %ihttp%w/%w%L%c%d . %dhttp/%x %s/%s, UPnP/1.0, Portable SDK for UPnP devices/1.6.1 rb0 %xTRANSFER-ENCODING: chunked %zu%qdDATE: %s%s, %02d %s %d %02d:%02d:%02d GMT%sCONNECTION: close CONTENT-LENGTH: shcSERVER: USER-AGENT: ssX-User-Agent: HTTP/%d.%d %d ssc

%s%d %s%sNTcs. HTTP/ ssbsdsdcHOST: QsbcCONTENT-TYPE: //QsbcDCUcQsbcDCUTNcQsbcDCUTKcQsbcDCUTcQsbcGDCUcRange: bytes=%d-%d RSCBaudiovideoimageapplicationtextoctet-stream%s/%s,%qd%qdbytes=CONTENT-RANGE: bytes %qd-%qd/%qd CONTENT-RANGE: bytes 0-%qd/%qd trailerswbrtext/xmlindex.html/index.htmlLAST-MODIFIED: RTGKDstcSXcCcRKTDstcSXcCcRNTDstcSXcCcRTDstcSXcCcIbfIbbtext/htmlRTDSXcCcRNTGDstcSXcCc%itext%w/%wxml;/?:@&=+$,{}-_.!~*'()%2x<%s>%s TIMEOUT: Second-%dSID: redsonicRDSNXcsscsccSEQ: ssscsdccqsbbCONTENT-TYPE: text/xml CONTENT-LENGTH: %zu NT: upnp:event NTS: upnp:propchange CONTENT-TYPE: text/xml CONTENT-LENGTH: %ld NT: upnp:event NTS: upnp:propchange upnp:event%iSecond-%d%0Second-infiniteqsscUcTIMEOUT: Second-qsscssccNT: upnp:event/>CALLBACK: e:property%8.8x-%4.4x-%4.4x-%2.2x%2.2x-%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%s:%dhttp://://JanFebMarAprMayJunJulAugSepOctNovDecSunMonTueWedThuFriSatInternal Server ErrorNot ImplementedBad GatewayService UnavailableGateway TimeoutHTTP Version Not SupportedBad RequestUnauthorizedPayment RequiredForbiddenNot FoundMethod Not AllowedNot AcceptableProxy Authentication RequiredRequest TimeoutConflictGoneLength RequiredPrecondition FailedRequest Entity Too LargeRequest-URI Too LongUnsupported Media TypeRequested Range Not SatisfiableExpectation FailedMultiple ChoicesMoved PermanentlyFoundSee OtherNot ModifiedUse ProxyTemporary RedirectOKCreatedAcceptedNon-Authoratative InformationNo ContentReset ContentPartial ContentContinueSwitching Protocolsaifaiffaifcaiffaiffaiffasfx-ms-asfasxx-ms-asfaubasicavimsvideobmpbmpdcrx-directordibbmpdirx-directordxrx-directorgifgifhtahtahtmhtmlhtmlhtmljarjava-archivejfifpjpegjpejpegjpegjpegjpgjpegjsx-javascriptkarmidim3umpegurlmidmidimidimidimovquicktimemp2vx-mpeg2mp3mpegmpempegmpegmpegmpgmpegmpvmpegmpv2x-mpeg2pdfpdfpjpjpegpjpegjpegplghtmlplsscplspngpngqtquicktimeramx-pn-realaudiormimidrmmx-pn-realaudiortfrtfshtmlhtmlsmfmidisndbasicsplfuturesplashssmstreamingmediaswfx-shockwave-flashtartartclx-tcltextplaintiftifftifftifftxtplainulwbasicwavwavwaxx-ms-waxwmx-ms-wmwmax-ms-wmawmvx-ms-wmvwvxx-ms-wvxxbmx-xbitmapxmlxmlxslxmlzx-compresszipzipffgg!isDsJsVs|>0v?vUvjv~vvvvvvvww1wEwXwnw|ww8w7w6w5w4w3x2x)x?x[xyxqx xx@` PāȁL s7 ;  (08@HPX`hpxȀЀ؀ @HPX`hpx $,4<DLT\dlt|Ă̂Ԃ܂Z l     + 0 6 &8 8$ ^:5 zEC  FR hFf Fv F H R T V [ w Dz [z}-J6=L[pv n IKKOO%7 L`r@  $&(5,D@RD`Ln|@Ș̘И)ؘ9=6+P9_vA $6`b#a<aK9Waf${vPvE$wm6$lm)EVc v`YO=XīB'<34uN?Cx@mS1 0#I3Ler6F+'+(Y7=!5606O k3zi4:!9.;)31*7AKU_k~ 2BVgz&-3ANV^kx!4W| " 8 P h         2 A I Q Y a j r z        * A G P V ` h n v                    ' / 7 = D ~fghijklmnopq@rstuvwxyz{|}@@@@@@@()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeL (>(MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcde      !"#$%&'fghijklmnopqrstuvwxyz{|}~_UpnpAcceptSubscription_UpnpAcceptSubscriptionExt_UpnpAddToAction_UpnpAddToActionResponse_UpnpAddToPropertySet_UpnpAddVirtualDir_UpnpCancelHttpGet_UpnpCloseHttpGet_UpnpCloseHttpPost_UpnpCreatePropertySet_UpnpDownloadUrlItem_UpnpDownloadXmlDoc_UpnpEnableWebserver_UpnpFinish_UpnpFree_UpnpGetErrorMessage_UpnpGetServerIpAddress_UpnpGetServerPort_UpnpGetServiceVarStatus_UpnpGetServiceVarStatusAsync_UpnpHttpGetProgress_UpnpInit_UpnpIsWebserverEnabled_UpnpMakeAction_UpnpMakeActionResponse_UpnpNotify_UpnpNotifyExt_UpnpOpenHttpGet_UpnpOpenHttpGetEx_UpnpOpenHttpGetProxy_UpnpOpenHttpPost_UpnpReadHttpGet_UpnpRegisterClient_UpnpRegisterRootDevice_UpnpRegisterRootDevice2_UpnpRemoveAllVirtualDirs_UpnpRemoveVirtualDir_UpnpRenewSubscription_UpnpRenewSubscriptionAsync_UpnpResolveURL_UpnpSdkClientRegistered_UpnpSdkDeviceRegistered_UpnpSdkInit_UpnpSearchAsync_UpnpSendAction_UpnpSendActionAsync_UpnpSendActionEx_UpnpSendActionExAsync_UpnpSendAdvertisement_UpnpSetContentLength_UpnpSetMaxContentLength_UpnpSetMaxSubscriptionTimeOut_UpnpSetMaxSubscriptions_UpnpSetVirtualDirCallbacks_UpnpSubscribe_UpnpSubscribeAsync_UpnpThreadDistribution_UpnpUnRegisterClient_UpnpUnRegisterRootDevice_UpnpUnSubscribe_UpnpUnSubscribeAsync_UpnpWriteHttpPost_ListAddTail_ListDelNode_ListDestroy_ListFind_ListHead_ListInit_ListNext_TPAttrInit_TPAttrSetIdleTime_TPAttrSetJobsPerThread_TPAttrSetMaxJobsTotal_TPAttrSetMaxThreads_TPAttrSetMinThreads_TPJobInit_TPJobSetFreeFunction_TPJobSetPriority_ThreadPoolAdd_ThreadPoolAddPersistent_ThreadPoolInit_ThreadPoolShutdown_TimerThreadInit_TimerThreadRemove_TimerThreadSchedule_TimerThreadShutdown__DefaultRuneLocale___error___maskrune___tolower___toupper_accept_asctime_atoi_bind_close_connect_fclose_fcntl_fopen_fread_free_freeaddrinfo_freeifaddrs_fseeko_fwrite_getaddrinfo_gethostname_getifaddrs_getsockname_getsockopt_gettimeofday_gmtime_inet_addr_inet_ntoa_inet_pton_ixmlCloneDOMString_ixmlDocument_createElement_ixmlDocument_createTextNode_ixmlDocument_free_ixmlDocument_getElementsByTagName_ixmlDocument_getElementsByTagNameNS_ixmlElement_free_ixmlElement_getElementsByTagName_ixmlElement_getElementsByTagNameNS_ixmlFreeDOMString_ixmlNodeList_free_ixmlNodeList_item_ixmlNodeList_length_ixmlNode_appendChild_ixmlNode_getChildNodes_ixmlNode_getFirstChild_ixmlNode_getLocalName_ixmlNode_getNamespaceURI_ixmlNode_getNextSibling_ixmlNode_getNodeName_ixmlNode_getNodeType_ixmlNode_getNodeValue_ixmlNode_setNodeValue_ixmlParseBufferEx_ixmlPrintDocument_ixmlPrintNode_listen_malloc_memcmp_memcpy_memmove_memset_perror_pthread_mutex_destroy_pthread_mutex_init_pthread_mutex_lock_pthread_mutex_unlock_pthread_rwlock_destroy_pthread_rwlock_init_pthread_rwlock_rdlock_pthread_rwlock_unlock_pthread_rwlock_wrlock_rand_realloc_recv_recvfrom_select_send_sendto_setsockopt_shutdown_sleep_snprintf_socket_sprintf_srand_sscanf_stat_strcasecmp_strcat_strchr_strcmp_strcpy_strdup_strlen_strncasecmp_strncmp_strncpy_strrchr_strstr_strtol_time_uname_usleepsingle module__mh_dylib_headerdyld_stub_binding_helper__dyld_func_lookup_NewRequestHandler_free_ssdp_event_handler_data_ssdp_event_handler_thread_send_error_response_check_soap_body_check_soap_action_header_get_device_info_dom_cmp_name_dom_find_node_dom_find_deep_node_get_node_value_soap_request_and_response_get_response_value_free_handle_request_arg_handle_request_get_port_RunMiniServer_sock_read_write_httpmsg_compare_httpheader_free_scanner_get_token_vfmatch_match_alias_release_get_file_info_GeneratePropertySet_free_notify_struct_respond_ok_genaNotifyThread_ScheduleGenaAutoRenew_gena_unsubscribe_gena_subscribe_GenaAutoRenewSubscription_addToAction_makeAction_Encode_MD5Transformdyld__mach_header_Soap_Invalid_Action_Soap_Action_Failed_Soap_Invalid_Var_end_body.6465_start_body.6464_Http_Method_Table_Http5xxStr_Http4xxStr_Http3xxStr_Http2xxStr_Http1xxStr_gMediaTypes_gEncodedMediaTypes_PADDING_gMServState_gGetCallback_gGenaCallback_gSoapCallback_gInitialized_Http1xxCodes_Http2xxCodes_Http3xxCodes_Http4xxCodes_Http5xxCodes_gMediaTypeList_gAliasDoc_gWebMutex_saved_node.3331_inited.3330_stateInited_next_save.4113_inited.4137_inited.4123_uuids_this_tick.4122_time_last.4121_st_AdvertiseAndReply_AutoAdvertise_CheckOtherHTTPHeaders_ContentTypeHeader_CreateHTTPRangeResponseHeader_CreateServicePacket_DeviceAdvertisement_DeviceReply_DeviceShutdown_ErrorMessages_ErrotEvt_FindServiceControlURLPath_FindServiceEventURLPath_FindServiceId_FreeHandle_GetCallBackFn_GetClientHandleInfo_GetClientSubActualSID_GetClientSubClientSID_GetDeviceHandleInfo_GetFirstSubscription_GetFreeHandle_GetHandleInfo_GetNextRange_GetNextSubscription_GetSubscriptionSID_GlobalClientSubscribeMutex_GlobalHndRWLock_HandleTable_Http_Header_Names_InitHandleList_LOCAL_HOST_LOCAL_PORT_MD5Final_MD5Init_MD5Update_MakeGetMessage_MakeGetMessageEx_MakePostMessage_Make_Socket_NoBlocking_PrintHandleInfo_ReadResponseLineAndHeaders_RemoveClientSubClientSID_RemoveSubscriptionSID_SearchByTarget_SendReply_ServiceAdvertisement_ServiceReply_ServiceShutdown_SetGenaCallback_SetHTTPGetCallback_SetSoapCallback_SoapGetServiceVarStatus_SoapSendAction_SoapSendActionEx_StartMiniServer_StopMiniServer_StrStr_StrTok_ToUpperCase_addServiceTable_advertiseAndReplyThread_bWebServerState_configure_urlbase_copy_URL_list_copy_client_subscription_copy_sockaddr_in_copy_subscription_error_respond_freeClientSubList_freeService_freeServiceList_freeServiceTable_freeSubscription_freeSubscriptionList_free_URL_list_free_client_subscription_free_upnp_timeout_gDocumentRootDir_gMiniServerThreadPool_gRecvThreadPool_gSendThreadPool_gSsdpReqSocket_gTimerThread_gUUIDMutex_g_maxContentLength_genaCallback_genaInitNotify_genaInitNotifyExt_genaNotify_genaNotifyAll_genaNotifyAllExt_genaRenewSubscription_genaSubscribe_genaUnSubscribe_genaUnregisterClient_genaUnregisterDevice_gena_process_notification_event_gena_process_subscription_renewal_request_gena_process_subscription_request_gena_process_unsubscribe_request_getAllServiceList_getElementValue_getServiceList_getServiceTable_getSubElement_get_content_type_get_ieee_node_identifier_get_miniserver_sockets_get_random_info_get_sdk_info_get_ssdp_sockets_get_system_time_getlocalhostname_has_xml_content_type_http_CalcResponseVersion_http_CancelHttpGet_http_CloseHttpGet_http_CloseHttpPost_http_Connect_http_Download_http_FixStrUrl_http_FixUrl_http_HttpGetProgress_http_MakeMessage_http_OpenHttpGet_http_OpenHttpGetEx_http_OpenHttpGetProxy_http_OpenHttpPost_http_ReadHttpGet_http_RecvMessage_http_RecvPostMessage_http_RequestAndResponse_http_SendMessage_http_SendStatusResponse_http_WriteHttpPost_http_get_code_text_httpmsg_destroy_httpmsg_find_hdr_httpmsg_find_hdr_str_httpmsg_init_isFileInVirtualDir_is_escaped_is_mark_is_reserved_is_unreserved_linecopy_linecopylen_map_int_to_str_map_str_to_int_matchstr_membuffer_append_membuffer_append_str_membuffer_assign_membuffer_assign_str_membuffer_attach_membuffer_delete_membuffer_destroy_membuffer_detach_membuffer_init_membuffer_insert_membuffer_set_size_memptr_cmp_memptr_cmp_nocase_method_to_str_miniStopSockPort_namecopy_pVirtualDirList_parse_hostport_parse_port_parse_scheme_parse_uri_parse_uri_and_unescape_parse_uric_parser_append_parser_get_entity_read_method_parser_parse_parser_parse_entity_parser_parse_headers_parser_parse_responseline_parser_request_init_parser_response_init_printNodes_raw_find_str_raw_to_int_readFromSSDPSocket_removeServiceTable_remove_dots_remove_escaped_chars_replace_escaped_resolve_rel_url_searchExpired_send_search_result_soap_device_callback_sock_destroy_sock_init_sock_init_with_ip_sock_read_sock_write_ssdpStopPort_ssdp_handle_ctrlpt_msg_ssdp_handle_device_request_ssdp_request_type_ssdp_request_type1_str_alloc_token_cmp_token_string_casecmp_token_string_cmp_unique_service_name_uuid_compare_uuid_create_uuid_create_from_name_uuid_unpack_virtualDirCallback_web_server_callback_web_server_destroy_web_server_init_web_server_set_alias_web_server_set_root_diramule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Info.plist0000644000175000017500000000214212611472361023071 0ustar morphmorph CFBundleDevelopmentRegion English CFBundleExecutable amule CFBundleName amule CFBundleGetInfoString 2.4.0, Copyright 2003-2011 aMule Project (http://www.amule.org) CFBundleIconFile amule CFBundleIdentifier org.amule.aMule CFBundleInfoDictionaryVersion 2.4.0 CFBundlePackageType APPL CFBundleShortVersionString 2.4.0 CFBundleSignature aMul CFBundleVersion 2.4.0 NSHumanReadableCopyright Copyright 2003-2011 aMule Project (http://www.amule.org) NSMainNibFile NSMainNibFile NSPrincipalClass NSApplication amule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/MacOS/0000755000175000017500000000000012611472361022064 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/MacOS/ed2kHelperScript.app/0000755000175000017500000000000012611472361026015 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/MacOS/ed2kHelperScript.app/Contents/0000755000175000017500000000000012611472361027612 5ustar morphmorph././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/MacOS/ed2kHelperScript.app/Contents/Info.plistamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/MacOS/ed2kHelperScript.app/Contents/Info.0000644000175000017500000000171412611472361030511 0ustar morphmorph CFBundleName ed2kHelperScript CFBundleDevelopmentRegion English CFBundleExecutable applet CFBundleIdentifier org.amule.ed2kHelperScript CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType APPL CFBundleSignature aELH CFBundleURLTypes CFBundleURLName ED2K URL CFBundleURLSchemes ed2k CFBundleTypeRole Viewer LSPrefersCarbon LSUIElement 1 ././@LongLink0000644000000000000000000000014600000000000011604 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/MacOS/ed2kHelperScript.app/Contents/MacOS/amule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/MacOS/ed2kHelperScript.app/Contents/MacOS0000755000175000017500000000000012611472361030475 5ustar morphmorph././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/MacOS/ed2kHelperScript.app/Contents/MacOS/appletamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/MacOS/ed2kHelperScript.app/Contents/MacOS0000755000175000017500000010171412611472361030506 0ustar morphmorphE `#  8__PAGEZERO__TEXT00__text__TEXT+ __picsymbol_stub__TEXT5%$__symbol_stub__TEXT5%__picsymbolstub1__TEXT5% __cstring__TEXT7`0'`__DATA@0__data__DATA@0__nl_symbol_ptr__DATA@0 __la_symbol_ptr__DATA@$40$__dyld__DATA@X0X__common__DATA@48__LINKEDITP@ /usr/lib/dyld dCV/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices 4CVX/usr/lib/libSystem.B.dylibh`/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices0/usr/lib/libSystem.B.dylib F@*0X 0 `Р#Gǜx <'s?1 `Gg`(! D x~x|8`8(H-|`x8^8x^8|^88(8`-Hy|`x^88`-8H!|N |B}=|9}N |B}=|9 }N |B}=|9}N |!|> x~x|888`-H|`x@8@ xBHM<_B Ѐ88/A^8T>+A<_8b`H<_8bHHŀ!|N |B}=|9}N |B}=|9d}N |B}=|9}N |8@8!a<8a8:A9A8H8!`|N |<`apk؈ p> x0y sevsalis|Future~H+uSystem Events.appܿ> CoreServicesFԒj uuu4Future:System:Library:CoreServices:System Events.app$System Events.appFuture-System/Library/CoreServices/System Events.app/'( 'r")* )b +, +o 0 theposixpath thePosixPath ,m- - /ed2k *o 0 ed2kprogram ed2kProgram(./ .r#.01 0b#,23 2b#(45 4n#&67 61$&  strq 7o#$ 0 ed2kprogram ed2kProgram 5m&'8 8  3n(+9: 91)+  strq :o() 0theurltheURL 1o 0 thecommand theCommand/;< ;I/4= .sysoexecTEXTTEXT =o/0 0 thecommand theCommand<> >L57 "error reporting shouldReport?@? .GURLGURLnullTEXT@AB .GURLGURLnullTEXT 0theurltheURLA 0theurltheURL 0theapptheApp 0thepaththePath 0 theposixpath thePosixPath 0 ed2kprogram ed2kProgram 0 thecommand theCommandB&-8 .earsffdralis afdr  ctnr  posx  strq .sysoexecTEXTTEXT8)EOj EO ,EO,EUO%EO,%,%EOj Ohascr ޭ././@LongLink0000644000000000000000000000016500000000000011605 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/MacOS/ed2kHelperScript.app/Contents/Resources/applet.rsrcamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/MacOS/ed2kHelperScript.app/Contents/Resou0000644000175000017500000000055212611472361030634 0ustar morphmorph$$F@$$F!Fscszspshamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/PkgInfo0000644000175000017500000000001012611472361022371 0ustar morphmorphAPPLaMulamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Resources/0000755000175000017500000000000012611472361023074 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Resources/English.lproj/0000755000175000017500000000000012611472361025612 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Resources/English.lproj/MainMenu.nib/0000755000175000017500000000000012611472361030072 5ustar morphmorph././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Resources/English.lproj/MainMenu.nib/classes.nibamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Resources/English.lproj/MainMenu.nib/clas0000755000175000017500000000015412611472361030742 0ustar morphmorph{ IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }); IBVersion = 1; }././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Resources/English.lproj/MainMenu.nib/info.nibamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Resources/English.lproj/MainMenu.nib/info0000755000175000017500000000111512611472361030751 0ustar morphmorph IBDocumentLocation 126 126 356 240 0 0 1600 1178 IBEditorPositions 29 125 407 318 44 0 0 1600 1178 IBFramework Version 328.0 IBOpenObjects 21 29 IBSystem Version 7B8 ././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Resources/English.lproj/MainMenu.nib/objects.nibamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Contents/Resources/English.lproj/MainMenu.nib/obje0000755000175000017500000001226212611472361030742 0ustar morphmorph typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSMutableStringNSString+ NSApplicationi@ NSMenuItemNSMenu̔i@@@NewApplicationNSMutableArrayNSArray i@@IIi@@@@:i@About NewApplicationNSCustomResource)NSImageNSMenuCheckmarkNSMenuMixedStateServicessubmenuAction:Services_NSServicesMenuHide NewApplicationh Hide OthershShow AllQuit NewApplicationq _NSAppleMenuPreferences…, Open Recentà Clear Menu_NSRecentDocumentsMenuFile ʠNewnʠOpen...oɒʠ@ʠClosewʠSavesʠ Save As…SʠRevertʠ@ʠ Page Setup…PʠPrint…p Open RecentÆWindowZoomMinimizem璄Bring All to Front_NSWindowsMenu薄Edit Undoz󒄛@CutxCopycPastevDelete Select Alla@FindFind Find…f Find Nextg Find PreviousG Use Selection for Finde Jump to SelectionjSpelling Spelling…: Check Spelling; Check Spelling as You TypeRedoZʖʖMainMenu--Fileʆ-Edit􆒄-Window膒, _NSMainMenuHelp89NewApplication Help?-1-薜0NSWindowTemplate iiffffi@@@@@c܁hpxWindowNSWindowViewNSView) NSResponder @@@@ffffffff hhffff@cffՁ9,-;9 3-(  ʖÖʖ1  55-ʖ0-ʖ ʖ" ʖ3ʖʖ ʖC>  % -ڄ8 File's Owner3 NSMenuItem腖߄2ㄘ6 NSMenuItem1 NSMenu NSMenuItem4ʄׄ3ӄ7O-MainMenu NSMenuItem7 NSMenuItem4 NSMenuItem292% NSMenuItem81O NSMenuItem2 NSMenuItemO NSMenuItem12;O5݄10 NSMenuItem3121Ԅ1 NSMenuItem13 NSMenuItem10" NSMenuItem6 NSMenu NSMenuItem9󄙙 NSMenuItem11 NSMenuItem􄙙NSMenu NSMenuItem3( NSMenuItem,11111 NSMenuItem1>Windoẅ́9 NSMutableSetNSSetI>NSNibControlConnectorτNSNibConnector@@@텄performMiniaturize:tarrangeInFront:tㅄprint:trunPageLayout:t; showHelp:tƅclearRecentDocuments:t terminate:torderFrontStandardAboutPanel:thideOtherApplications:thide:tunhideAllApplications:tcut:tpaste:t󅄘redo:t selectAll:tundo:tcopy:t"showGuessPanel:t%checkSpelling:t(toggleContinuousSpellChecking:tԅ performClose:tdelete:t년 performZoom:tperformFindPanelAction:tperformFindPanelAction:tperformFindPanelAction:tperformFindPanelAction:tcenterSelectionInVisibleArea:]@ip|{WO˱N 9jƱ Q%9PɱM;oKR3>1S"08~űDZ\yV,g}zıIs%ʱ}JH :w'ñ5ȱC(-̚IBCocoaFrameworkamule_2.3.1+git20151120.0023527bc2.orig/aMule.app/Icon0000755000175000017500000000000012611472361020131 0ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/aMule.spec0000644000175000017500000000543412611472361017430 0ustar morphmorphSummary: aMule - another eMule p2p client Name: aMule Version: 2.2.1 Release: 0 License: GPL Group: Applications/Internet Packager: The aMule Team (http://forum.amule.org/) Vendor: The aMule Project URL: http://www.amule.org/ Source: %{name}-%{version}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) %description aMule is a peer to peer file sharing client, based on the well known eMule. Starting with 2.0.0 aMule works on Linux, Mac, *BSD and Windows, which makes it the first multi-platform edonkey network client. %prep %setup -q %build %configure \ --enable-optimize \ --disable-debug \ --enable-cas \ --enable-wxcas \ --enable-amulecmd \ --enable-webserver \ --enable-ccache %{__make} %{?_smp_mflags} %install [ ! "$RPM_BUILD_ROOT" = "/" ] && %{__rm} -rf "$RPM_BUILD_ROOT" %{__make} DESTDIR="$RPM_BUILD_ROOT" install %find_lang amule %clean [ ! "$RPM_BUILD_ROOT" = "/" ] && %{__rm} -rf "$RPM_BUILD_ROOT" %files -f amule.lang %defattr(-,root,root,-) %{_bindir}/amule %{_bindir}/ed2k %{_bindir}/amulecmd %{_bindir}/cas %{_bindir}/wxcas %{_bindir}/amuleweb %{_bindir}/autostart-xas %{_libdir}/xchat/plugins/xas.pl %{_datadir}/applications/* %{_datadir}/pixmaps/* %{_mandir}/man1/* %{_mandir}/*/man1/* %docdir %{_datadir}/doc/* %{_datadir}/doc/* %{_datadir}/cas %{_datadir}/amule %changelog * Fri May 13 2005 Marcelo Jimenez - New spec for aMule-2.0.0 compliant with Fedora Core specifications. * Mon Apr 19 2005 Marcelo Jimenez - Removed curl dependency, aMule now uses wxHTTP. * Mon Mar 26 2005 Marcelo Jimenez - Added a distro test, so we know the distro. - Tests for UTF-8 enabled LANG to use UTF-8 systray. * Mon Mar 21 2005 Marcelo Jimenez - Removed krb5-libs require and krb5-devel buildprereq. curl-lib and curl-devel is enough. * Tue Mar 08 2005 Marcelo Jimenez - Made it work with cvs snapshots at their very same day. * Wed Jun 16 2004 Ariano Bertacca - added tool package. * Sat May 22 2004 Ariano Bertacca - added webserver package. * Sun Mar 28 2004 Ariano Bertacca - added libcryptopp to dependencies/BuildPreReq - getting wx-config and wxbase-config from installed rpm to avoid problems with people using wxGTK-2.5. Idea taken from aMule-2.0.0rc1.spec done by deltaHF and pure_ascii * Tue Feb 10 2004 Ariano Bertacca - modified the BuildPreReq to satisfy amulecmd build requirements. * Sat Jan 23 2004 Ariano Bertacca - initial amule.spec release amule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/0000755000175000017500000000000012611472361017672 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Contents/0000755000175000017500000000000012611472361021467 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Contents/Info.plist0000644000175000017500000000215312611472361023440 0ustar morphmorph CFBundleDevelopmentRegion English CFBundleExecutable amulegui CFBundleName amulegui CFBundleGetInfoString 2.4.0, Copyright 2003-2011 aMule Project (http://www.amule.org) CFBundleIconFile amule CFBundleIdentifier org.amule.aMuleGUI CFBundleInfoDictionaryVersion 2.4.0 CFBundlePackageType APPL CFBundleShortVersionString 2.4.0 CFBundleSignature aMGU CFBundleVersion 2.4.0 NSHumanReadableCopyright Copyright 2003-2011 aMule Project (http://www.amule.org) NSMainNibFile NSMainNibFile NSPrincipalClass NSApplication amule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Contents/PkgInfo0000644000175000017500000000001112611472361022737 0ustar morphmorphAPPLaMGU amule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Contents/Resources/0000755000175000017500000000000012611472361023441 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Contents/Resources/English.lproj/0000755000175000017500000000000012611472361026157 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Contents/Resources/English.lproj/MainMenu.nib/0000755000175000017500000000000012611472361030437 5ustar morphmorph././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Contents/Resources/English.lproj/MainMenu.nib/classes.nibamule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Contents/Resources/English.lproj/MainMenu.nib/c0000755000175000017500000000015412611472361030607 0ustar morphmorph{ IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }); IBVersion = 1; }././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Contents/Resources/English.lproj/MainMenu.nib/info.nibamule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Contents/Resources/English.lproj/MainMenu.nib/i0000755000175000017500000000111512611472361030613 0ustar morphmorph IBDocumentLocation 126 126 356 240 0 0 1600 1178 IBEditorPositions 29 125 407 318 44 0 0 1600 1178 IBFramework Version 328.0 IBOpenObjects 21 29 IBSystem Version 7B8 ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Contents/Resources/English.lproj/MainMenu.nib/objects.nibamule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Contents/Resources/English.lproj/MainMenu.nib/o0000755000175000017500000001226212611472361030626 0ustar morphmorph typedstream@NSIBObjectDataNSObjectNSCustomObject)@@NSMutableStringNSString+ NSApplicationi@ NSMenuItemNSMenu̔i@@@NewApplicationNSMutableArrayNSArray i@@IIi@@@@:i@About NewApplicationNSCustomResource)NSImageNSMenuCheckmarkNSMenuMixedStateServicessubmenuAction:Services_NSServicesMenuHide NewApplicationh Hide OthershShow AllQuit NewApplicationq _NSAppleMenuPreferences…, Open Recentà Clear Menu_NSRecentDocumentsMenuFile ʠNewnʠOpen...oɒʠ@ʠClosewʠSavesʠ Save As…SʠRevertʠ@ʠ Page Setup…PʠPrint…p Open RecentÆWindowZoomMinimizem璄Bring All to Front_NSWindowsMenu薄Edit Undoz󒄛@CutxCopycPastevDelete Select Alla@FindFind Find…f Find Nextg Find PreviousG Use Selection for Finde Jump to SelectionjSpelling Spelling…: Check Spelling; Check Spelling as You TypeRedoZʖʖMainMenu--Fileʆ-Edit􆒄-Window膒, _NSMainMenuHelp89NewApplication Help?-1-薜0NSWindowTemplate iiffffi@@@@@c܁hpxWindowNSWindowViewNSView) NSResponder @@@@ffffffff hhffff@cffՁ9,-;9 3-(  ʖÖʖ1  55-ʖ0-ʖ ʖ" ʖ3ʖʖ ʖC>  % -ڄ8 File's Owner3 NSMenuItem腖߄2ㄘ6 NSMenuItem1 NSMenu NSMenuItem4ʄׄ3ӄ7O-MainMenu NSMenuItem7 NSMenuItem4 NSMenuItem292% NSMenuItem81O NSMenuItem2 NSMenuItemO NSMenuItem12;O5݄10 NSMenuItem3121Ԅ1 NSMenuItem13 NSMenuItem10" NSMenuItem6 NSMenu NSMenuItem9󄙙 NSMenuItem11 NSMenuItem􄙙NSMenu NSMenuItem3( NSMenuItem,11111 NSMenuItem1>Windoẅ́9 NSMutableSetNSSetI>NSNibControlConnectorτNSNibConnector@@@텄performMiniaturize:tarrangeInFront:tㅄprint:trunPageLayout:t; showHelp:tƅclearRecentDocuments:t terminate:torderFrontStandardAboutPanel:thideOtherApplications:thide:tunhideAllApplications:tcut:tpaste:t󅄘redo:t selectAll:tundo:tcopy:t"showGuessPanel:t%checkSpelling:t(toggleContinuousSpellChecking:tԅ performClose:tdelete:t년 performZoom:tperformFindPanelAction:tperformFindPanelAction:tperformFindPanelAction:tperformFindPanelAction:tcenterSelectionInVisibleArea:]@ip|{WO˱N 9jƱ Q%9PɱM;oKR3>1S"08~űDZ\yV,g}zıIs%ʱ}JH :w'ñ5ȱC(-̚IBCocoaFrameworkamule_2.3.1+git20151120.0023527bc2.orig/aMuleGUI.app/Icon0000755000175000017500000000000012611472361020476 0ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/acinclude.m40000644000175000017500000005426112611472361017704 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule Project. # # Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # m4_pattern_forbid(MULE_)dnl Check for unexpanded *MULE_* macros m4_pattern_allow(AMULE_)dnl Allow the *AMULE_* names m4_pattern_forbid(__mule_)dnl Check for unexpanded internal macros # -------------------- # # Common useful macros # # -------------------- # dnl MULE_APPEND(VARNAME, VALUE) AC_DEFUN([MULE_APPEND], [$1="$$1 $2"]) dnl MULE_PREPEND(VARNAME, VALUE) AC_DEFUN([MULE_PREPEND], [$1="$2 $$1"]) dnl MULE_ADDFLAG(FLAGTYPE, VALUE) AC_DEFUN([MULE_ADDFLAG], [MULE_APPEND([MULE[]$1[]FLAGS], [$2])]) dnl MULE_ADDCCXXFLAG(VALUE) AC_DEFUN([MULE_ADDCCXXFLAG], [ MULE_ADDFLAG([C], [$1]) MULE_ADDFLAG([CXX], [$1]) ]) dnl MULE_BACKUP(VAR) AC_DEFUN([MULE_BACKUP], [mule_backup_$1="$$1"]) dnl MULE_RESTORE(VAR) AC_DEFUN([MULE_RESTORE], [$1="$mule_backup_$1"]) # ------------------- # # Issuing diagnostics # # ------------------- # # ----------------------------------------------------------------------------- # __mule_print_final_warning(section, condition, message) # ----------------------------------------------------------------------------- m4_define([__mule_print_final_warning], [m4_divert_push($1)dnl if test [$2]; then cat <<_MULEEOT m4_pushdef([__mule_Prefix1], [* ])dnl m4_pushdef([__mule_Prefix], [ ])dnl m4_foreach([__mule_Line], m4_quote(m4_split([$3], [ ])), [m4_text_wrap(m4_defn([__mule_Line]), __mule_Prefix, __mule_Prefix1) m4_define([__mule_Prefix1], __mule_Prefix)dnl ])[]dnl m4_popdef([__mule_Prefix])dnl m4_popdef([__mule_Prefix1])dnl _MULEEOT fi m4_divert_pop()]) dnl --------------------------------------------------------------------------- dnl MULE_WARNING(MESSAGE) dnl dnl Works like AC_MSG_WARN(), but the warning will be reproduced at the end of dnl the configure run. An empty line is prepended at the final output and a dnl newline is appended for free. dnl --------------------------------------------------------------------------- m4_ifndef([_MULE_WARNINGS],[ m4_define([_m4_divert(_MULE_WARNINGS)], m4_incr(_m4_divert([BODY])))]) m4_define([_MULE_WARNCOUNT], [0]) m4_divert_push(_MULE_WARNINGS)dnl if test ${_mule_has_warnings:-no} = yes; then echo "" echo "" echo " *** Warnings during configuration ***" fi m4_divert_pop()dnl m4_define([MULE_WARNING], [AC_MSG_WARN( m4_pushdef([__mule_Prefix], [ ])dnl m4_foreach([__mule_Line], m4_quote(m4_split([$1], [ ])), [ m4_text_wrap(m4_defn([__mule_Line]), __mule_Prefix)])[]dnl m4_popdef([__mule_Prefix])dnl ) _mule_warning_[]_MULE_WARNCOUNT[]=yes _mule_has_warnings=yes __mule_print_final_warning([_MULE_WARNINGS], [${_mule_warning_]_MULE_WARNCOUNT[:-no} = yes], [$1])dnl m4_define([_MULE_WARNCOUNT], incr(_MULE_WARNCOUNT))]) dnl --------------------------------------------------------------------------- dnl MULE_DEPRECATED(OLDFLAG [, NEWFLAG]) dnl dnl Marks OLDFLAG as deprecated and produces an appropriate warning. If NEWFLAG dnl is specified and is unset the value of OLDFLAG is assigned to NEWFLAG (i.e. dnl if the user specified both OLDFLAG and NEWFLAG, NEWFLAG takes precedence; dnl if only OLDFLAG is specified it will be redirected to NEWFLAG). dnl dnl There should be no AC_ARG_* for the deprecated flag, and if the old flag is dnl deprecated in favour of a new one, MULE_DEPRECATED *MUST* precede the dnl AC_ARG_* definition of the new flag (otherwise redirection may not work). dnl --------------------------------------------------------------------------- m4_define([_MULE_DEPRECATIONWARNINGS], [incr(_MULE_WARNINGS)]) m4_define([__mule_display_option_name], [m4_if(m4_substr([$1], 0, 1), [-],, [--])m4_bpatsubst([$1], [_], [-])]) m4_define([__mule_ac_option_name], [m4_bpatsubst(m4_bpatsubst(m4_bpatsubst(m4_bpatsubst([$1], [^-+], []), [-], [_]), [^disable], [enable]), [^without], [with])]) m4_define([MULE_DEPRECATED], [if test "${__mule_ac_option_name([$1])+set}" = "set"; then _mule_has_warnings=yes m4_ifvaln([$2], [ if test "${__mule_ac_option_name([$2]):-unset}" = "unset"; then __mule_ac_option_name([$2])=$__mule_ac_option_name([$1]) fi])fi __mule_print_final_warning([_MULE_DEPRECATIONWARNINGS], ["${]__mule_ac_option_name([$1])[+set}" = set], __mule_display_option_name([$1])[ is now deprecated and ]m4_ifval([$2], [might be removed in the future without further notice. Please use ]__mule_display_option_name([$2])[ instead.], [not supported anymore.]))]) # ----------------- # # Argument handling # # ----------------- # m4_define([__mule_arg_default], [__mule_arg_[]m4_translit([$1], [-], [_])[]_default]) m4_define([__mule_arg_value], [${enable_[]m4_translit([$1], [-], [_])[]:-[]__mule_arg_default([$1])[]}]) dnl --------------------------------------------------------------------------- dnl MULE_ARG_ENABLE(FEATURE, DEFAULT-VALUE, HELP-STRING [, AUTOMAKE-CONDITIONAL]) dnl dnl Wrapper around AC_ARG_ENABLE() that supports automatically setting up a dnl conditional variable for automake, remembering default value for dnl conditionals and supplying the help string based on the default value (i.e. dnl it produce "--enable-FEATURE HELP-STRING" if the default is no, and dnl "--disable-FEATURE HELP-STRING" if the default is yes. The default value dnl *MUST* be either `yes' or `no'. dnl --------------------------------------------------------------------------- m4_define([MULE_ARG_ENABLE], [m4_if([$2], [yes],, [m4_if([$2], [no],, [m4_fatal([Default value must be either `yes' or `no'!])])])dnl m4_define(__mule_arg_default([$1]), [$2])dnl AC_ARG_ENABLE([$1], [AS_HELP_STRING(m4_if([$2], [yes], [--disable-$1], [--enable-$1]), [$3])]) m4_ifvaln([$4], [AM_CONDITIONAL([$4], [test ]__mule_arg_value([$1])[ = yes])])]) dnl --------------------------------------------------------------------------- dnl MULE_IS_ENABLED(FEATURE) dnl dnl Used in shell conditionals, tests whether the named feature is enabled or dnl not, considering also the default value. FEATURE *must* have been set up dnl using MULE_ARG_ENABLE(). dnl --------------------------------------------------------------------------- m4_define([MULE_IS_ENABLED], [m4_ifdef(__mule_arg_default([$1]), __mule_arg_value([$1])[ = yes], [m4_fatal([Unknown feature `$1'!])])]) m4_define([MULE_IS_ENABLED_ANY], [__mule_if_multi([$1], [-o])]) m4_define([MULE_IS_ENABLED_ALL], [__mule_if_multi([$1], [-a])]) dnl --------------------------------------------------------------------------- dnl MULE_ENABLEVAR(FEATURE) dnl dnl Expands to the name of the shell variable holding the enabled/disabled dnl status of FEATURE. FEATRUE *must* have been set up using MULE_ARG_ENABLE(). dnl --------------------------------------------------------------------------- m4_define([MULE_ENABLEVAR], [m4_ifdef(__mule_arg_default([$1]), [enable_[]m4_translit([$1], [-], [_])], [m4_fatal([Unknown feature `$1'!])])]) dnl --------------------------------------------------------------------------- dnl MULE_STATUSOF(FEATURE) dnl dnl Expands to the value of the shell variable holding the status of FEATURE, dnl considering default values. FEATURE *must* have been set up using dnl MULE_ARG_ENABLE(). dnl --------------------------------------------------------------------------- m4_define([MULE_STATUSOF], [m4_ifdef(__mule_arg_default([$1]), __mule_arg_value([$1]), [m4_fatal([Unknown feature `$1'!])])]) # ---------------------- # # Conditional processing # # ---------------------- # m4_define([__mule_if_multi], [m4_define([__mule_if_logic], [])dnl m4_foreach([__mule_condition], [$1], [__mule_if_logic MULE_IS_ENABLED(__mule_condition) ][m4_define([__mule_if_logic], [$2])])dnl m4_undefine([__mule_if_logic])]) dnl --------------------------------------------------------------------------- dnl MULE_IF_ENABLED(FEATURE, [ACTION-IF-ENABLED], [ACTION-IF-DISABLED]) dnl dnl Basically a wrapper around AS_IF(), the test being if FEATURE is enabled. dnl FEATURE must have been set up by MULE_ARG_ENABLE(). dnl --------------------------------------------------------------------------- m4_define([MULE_IF_ENABLED], [AS_IF([test MULE_IS_ENABLED([$1])], [$2], [$3])]) m4_define([MULE_IF_ENABLED_ALL], [AS_IF([test]__mule_if_multi([$1], [-a]), [$2], [$3])]) m4_define([MULE_IF_ENABLED_ANY], [AS_IF([test]__mule_if_multi([$1], [-o]), [$2], [$3])]) dnl --------------------------------------------------------------------------- dnl MULE_IF(CONDITION, [IF-TRUE] [, ELIF-CONDITION, [IF-TRUE]]... [, ELSE-BRANCH]) dnl dnl Works like AS_IF(), but allows elif-branches too. dnl --------------------------------------------------------------------------- m4_define([__mule_if_helper], [m4_if( [$#], 0,, [$#], 1, [m4_ifvaln([$1], [m4_n([else]) $1])], [m4_n([elif $1; then]) m4_ifvaln([$2], [$2], :)])dnl m4_if(m4_eval([$# > 2]), 1, [$0(m4_shiftn(2, $@))])]) m4_define([MULE_IF], [m4_if( [$#], 0,, [$#], 1,, [m4_n([if $1; then]) m4_ifval([$2],[$2], :) m4_if(m4_eval([$# > 2]), 1, [__mule_if_helper(m4_shiftn(2, $@))])m4_n([fi])])]) # ------------------------ # # High level helper macros # # ------------------------ # dnl --------------------------------------------------------------------------- dnl MULE_COMBINATE(ARGS, ...) dnl dnl Creates all possible combinations of ARGS, enclosed in double quotes. Order dnl of arguments is preserved during expansion, and shorter sequences always dnl come before longer ones. dnl dnl Example: dnl MULE_COMBINATE([a], [b], [c]) dnl expands to dnl "" "a" "b" "c" "a b" "a c" "b c" "a b c" dnl --------------------------------------------------------------------------- m4_define([__mule_combinate_append], [m4_if( [$#], [0],, [$#], [1], [$1], [m4_ifblank([$1], [$0(m4_shift($@))], [$1 $0(m4_shift($@))])])]) m4_define([__mule_combinate_print], ["__mule_combinate_append($@)" ]) m4_define([__mule_combinate_helper], [m4_if( [$1], [0], [__mule_combinate_print([$2])], [$1], m4_eval([$# - 2]), [__mule_combinate_print(m4_shift($@))], [$0(m4_decr([$1]), __mule_combinate_append([$2], [$3]), m4_shiftn([3], $@))$0([$1], [$2], m4_shiftn([3], $@))])]) m4_define([__mule_combinate_for], [m4_if([$1], [$2],, [__mule_combinate_helper([$1], [], m4_shiftn([2], $@))$0(m4_incr([$1]), m4_shift($@))])]) m4_define([MULE_COMBINATE], [__mule_combinate_for([0], m4_incr([$#]), $@)]) # ------------------- # # Feature test macros # # ------------------- # dnl --------------------------------------------------------------------------- dnl MULE_CHECK_SYSTEM dnl dnl Checks host system type, and sets system-specific flags accordingly. dnl Sets $SYS to the name of the host os. dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_SYSTEM], [AC_REQUIRE([AC_CANONICAL_HOST])dnl case "${host_os}" in darwin*) SYS=darwin MULECPPFLAGS="-no-cpp-precomp -D_INTL_REDIRECT_MACROS -DNOPCH"; MULELDFLAGS="-bind_at_load" touch src/Scanner.cpp ;; openbsd*) SYS=openbsd LIBS="$LIBS -L/usr/local/lib" MULECPPFLAGS="-D__OPENBSD__" ;; *cygwin* | *mingw32*) SYS=win32 MULECPPFLAGS="-DNOMINMAX" ;; solaris*) SYS=solaris RESOLV_LIB="-lresolv -lnsl" LIBS="$LIBS -lrt" ;; *netbsd*) SYS=netbsd # Now this is against autoconf recommendation that configure should not modify CPPFLAGS and LDFLAGS # However, these values in NetBSD are required even to run the tests, and this is the easiest way to do it. # Still, we prepend them, instead of adding, so the user may override them. MULE_PREPEND([CPPFLAGS], [-I/usr/pkg/include]) MULE_PREPEND([LDFLAGS], [-R/usr/pkg/lib -L/usr/pkg/lib]) ;; *irix*) SYS=irix MULECPPFLAGS="-D__IRIX__" ;; *) SYS=unknown ;; esac # -lpthread is needed by Debian but FreeBSD < 5 doesn't support it AS_IF([test ${SYS:-unknown} != win32], [ AC_MSG_CHECKING([if this is a FreeBSD 4 or earlier system]) AS_IF([test x"`uname -s`" = xFreeBSD && test 0`uname -r | cut -c 1` -lt 5], [ MULE_ADDFLAG([LD], [-pthread]) AC_MSG_RESULT(yes) ], [ MULE_ADDFLAG([LD], [-lpthread]) AC_MSG_RESULT(no) ]) ]) AC_SUBST([RESOLV_LIB])dnl AC_SUBST([MULECPPFLAGS])dnl AC_SUBST([MULECFLAGS])dnl AC_SUBST([MULECXXFLAGS])dnl AC_SUBST([MULELDFLAGS])dnl AC_SUBST([MULERCFLAGS])dnl ]) dnl --------------------------------------------------------------------------- dnl MULE_COMPILATION_FLAGS dnl dnl Checks type of compilation requested by user, and sets various flags dnl accordingly. dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_COMPILATION_FLAGS], [dnl AC_REQUIRE([MULE_CHECK_GLIBCXX])dnl MULE_ARG_ENABLE([debug], [yes], [disable additional debugging output]) MULE_ARG_ENABLE([profile], [no], [enable code profiling]) MULE_ARG_ENABLE([optimize], [no], [enable code optimization]) MULE_IF_ENABLED([debug], [ MULE_ADDFLAG([CPP], [-D__DEBUG__]) MULE_ADDCCXXFLAG([-g]) AS_IF([test ${GCC:-no} = yes], [MULE_ADDCCXXFLAG([-W -Wall -Wshadow -Wundef -ggdb -fno-inline -fmessage-length=0])]) AS_IF([test ${SYS:-unknown} = win32], [MULE_ADDFLAG([RC], [-D__DEBUG__])]) ], [ AS_IF([test ${GCC:-no} = yes], [MULE_ADDCCXXFLAG([-W -Wall -Wshadow -Wundef])]) ]) MULE_IF_ENABLED([profile], [ MULE_ADDCCXXFLAG([-pg]) MULE_ADDFLAG([LD], [-pg]) ]) MULE_IF_ENABLED([optimize], [MULE_ADDCCXXFLAG([-O2])]) MULE_ADDFLAG([CPP], [-DUSE_WX_EXTENSIONS]) ]) dnl --------------------------------------------------------------------------- dnl MULE_CHECK_GLIBCXX dnl dnl Checks whether we use the GNU C++ Library. dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_GLIBCXX], [dnl AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_CXXCPP])dnl AC_LANG_ASSERT([C++])dnl AC_MSG_CHECKING([if we're using the GNU C++ library]) AC_PREPROC_IFELSE([ AC_LANG_SOURCE([[ #include #ifndef __GLIBCXX__ #error Non-GNU C++ library found. #endif ]]) ], [GLIBCXX=yes], [GLIBCXX=no]) AC_MSG_RESULT([$GLIBCXX]) ]) dnl --------------------------------------------------------------------------- dnl MULE_CHECK_STRICT_ALIASING dnl dnl Checks whether the C++ compiler uses strict aliasing. dnl This check could use the C compiler, but the source is C++ and the two dnl compilers are not necessarily the same, or they might use different dnl compiler flags... dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_STRICT_ALIASING], [AC_LANG_ASSERT([C++])dnl AH_TEMPLATE([GCC_USES_STRICT_ALIASING], [Define to 1 if the C++ compiler is the GNU C++ compiler and it is using strict aliasing.]) AS_IF([test ${GCC:-no} = yes], [ dnl Backup current flags and turn warnings into errors MULE_BACKUP([CXXFLAGS]) MULE_APPEND([CXXFLAGS], [$MULECPPFLAGS $MULECFLAGS $MULECXXFLAGS -Werror]) AC_MSG_CHECKING([whether the C++ compiler ($CXX) uses strict aliasing]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([], [[ int a; short *b = (short*)&a; short c = *b; return c; ]]) ], [ AC_MSG_RESULT([no]) ], [ AC_MSG_RESULT([yes]) AC_DEFINE([GCC_USES_STRICT_ALIASING]) ]) dnl Restore flags MULE_RESTORE([CXXFLAGS]) ]) ]) dnl --------------------------------------------------------------------------- dnl MULE_CHECK_WX_SUPPORTS_LARGEFILE dnl dnl Test that wxWidgets is built with support for large-files. If not dnl configure is terminated. dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_WX_SUPPORTS_LARGEFILE], [AC_LANG_ASSERT([C++])dnl dnl Backup current flags and setup flags for testing MULE_BACKUP([CPPFLAGS]) MULE_APPEND([CPPFLAGS], [$WX_CPPFLAGS]) AC_MSG_CHECKING([that wxWidgets has support for large files]) AC_PREPROC_IFELSE([ AC_LANG_SOURCE([[ #include #include #ifndef wxHAS_LARGE_FILES #error No LargeFile support! #endif ]]) ], [ AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) AC_MSG_ERROR([ Support for large files in wxWidgets is required by aMule. To continue you must recompile wxWidgets with support for large files enabled.]) ]) dnl Restore backup'd flags MULE_RESTORE([CPPFLAGS]) ]) dnl -------------------------------------------------------------------------- dnl MULE_CHECK_CCACHE dnl dnl Checks if ccache is requested and available, and makes use of it dnl -------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_CCACHE], [ MULE_ARG_ENABLE([ccache], [no], [enable ccache support for fast recompilation]) AC_ARG_WITH([ccache-prefix], [AS_HELP_STRING([--with-ccache-prefix=PREFIX], [prefix where ccache is installed])]) AC_MSG_CHECKING([whether ccache support should be added]) AC_MSG_RESULT([MULE_STATUSOF([ccache])]) MULE_IF_ENABLED([ccache], [ AC_MSG_CHECKING([for ccache presence]) AS_IF([test -z "$with_ccache_prefix"], [ ccache_full=`which ccache` with_ccache_prefix=`dirname ${ccache_full}` ]) AS_IF([$with_ccache_prefix/ccache -V >/dev/null 2>&1], [ CC="$with_ccache_prefix/ccache $CC" CXX="$with_ccache_prefix/ccache $CXX" BUILD_CC="$with_ccache_prefix/ccache $BUILD_CC" ], [MULE_ENABLEVAR([ccache])=no]) AC_MSG_RESULT([MULE_STATUSOF([ccache])]) ]) ]) dnl ---------------------------------------------------- dnl MULE_CHECK_FLEX_EXTENDED dnl check if flex can produce header files dnl ---------------------------------------------------- AC_DEFUN([MULE_CHECK_FLEX_EXTENDED], [ AC_MSG_CHECKING([for extended flex capabilities]) extended_flex=`flex --help | grep header-file` AS_IF([test -n "$extended_flex"], [HAVE_FLEX_EXTENDED=yes], [HAVE_FLEX_EXTENDED=no]) AC_MSG_RESULT($HAVE_FLEX_EXTENDED) AS_IF([test $HAVE_FLEX_EXTENDED = no], [AC_MSG_NOTICE([Your flex version doesn't support --header-file flag. This is not critical, but an upgrade is recommended])]) ]) dnl ---------------------------------------------------- dnl MULE_CHECK_EXCEPTIONS dnl Checks for broken exception-handling. This is needed dnl because exception handling is broken for some archs/ dnl compilers. dnl ---------------------------------------------------- AC_DEFUN([MULE_CHECK_EXCEPTIONS], [AC_LANG_ASSERT([C++])dnl AC_MSG_CHECKING([for exception-handling]) AC_RUN_IFELSE([ AC_LANG_PROGRAM(, [[ try { throw 1; } catch (int) { return 0; } return 1; ]]) ], [ AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) AC_MSG_ERROR([Exception handling does not work. Broken compiler?]) ], [ AC_MSG_RESULT([undeterminable]) MULE_WARNING( [Cross-compilation detected, so exception handling cannot be tested. Note that broken exception handling in your compiler may lead to unexpected crashes.]) ]) ]) dnl --------------------------------------------------------------------------- dnl MULE_CHECK_CXXABI dnl dnl This function will test the header and abi::__cxa_demangle() dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_CXXABI], [AC_LANG_ASSERT([C++])dnl AC_CHECK_HEADERS([typeinfo]) AC_MSG_CHECKING([for and __cxa_demangle()]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #ifdef HAVE_TYPEINFO # include #endif #include ]], [[ int status; char * demangled = abi::__cxa_demangle("", 0, 0, &status); std::type_info *ti = abi::__cxa_current_exception_type(); ]]) ], [ AH_TEMPLATE([HAVE_CXXABI], [Define to 1 if you have the header which declares abi::__cxa_demangle()]) AC_DEFINE([HAVE_CXXABI]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl --------------------------------------------------------------------------- dnl MULE_CHECK_EXECINFO dnl dnl This function will test the header and backtrace() dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_EXECINFO], [ AC_MSG_CHECKING([for and backtrace()]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include ]], [[ void *bt[1]; int n = backtrace((void **)&bt, 1); char **bt_syms = backtrace_symbols(bt, n); ]]) ], [ AH_TEMPLATE([HAVE_EXECINFO], [Define to 1 if you have the header which declares backtrace()]) AC_DEFINE([HAVE_EXECINFO]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) ]) dnl --------------------------------------------------------------------------- dnl MULE_DENOISER dnl dnl Test for denoising level and add denoiser commands to config.status dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_DENOISER], [ AC_ARG_WITH([denoise-level], [AS_HELP_STRING([--with-denoise-level=], [Specifies denoising level (0-4):]) AS_HELP_STRING([], [0 - Do nothing]) AS_HELP_STRING([], [4 - Suppress all normal output]) AS_HELP_STRING([], [(for more information see src/utils/scripts/denoiser.rules)]) ]) AC_MSG_CHECKING([denoising level]) AS_IF([test ${with_denoise_level:-5} = yes], [with_denoise_level=5]) AS_IF([test ${with_denoise_level:-5} = no], [with_denoise_level=0]) AS_IF([test ${with_denoise_level:-5} -gt 4], [AS_IF([test "${svndate:+set}" = "set"], [with_denoise_level=0], [with_denoise_level=4])]) AC_MSG_RESULT([$with_denoise_level]) AC_CONFIG_COMMANDS([denoiser], [[if test $denoiserlevel -gt 0; then if test ! -d src/utils/scripts; then mkdir -p src/utils/scripts; fi sed -e "1{x;s/.*/1/;x;};/^[ ]*\$/d;/^#if /{/level.*$denoiserlevel/{x;s/^/1/;x;b0;};x;s/^/0/;x;:0;d;};/^#else/{x;/^1/{s/1/0/;b1;};s/0/1/;:1;x;d;};/^#endif/{x;s/.//;x;d;};/^[ ]*#/d;x;/^1/{x;b;};x;d" \ $srcdir/src/utils/scripts/denoiser.rules > src/utils/scripts/denoiser.sed for i in `find . -name 'Makefile' -print`; do if test -n "`head -n 1 $i | grep '^#'`"; then sed -f src/utils/scripts/denoiser.sed $i > $i.tmp && mv $i.tmp $i fi done fi]], [denoiserlevel=$with_denoise_level]) ]) amule_2.3.1+git20151120.0023527bc2.orig/amule.desktop0000644000175000017500000000033712611472361020204 0ustar morphmorph[Desktop Entry] Name=aMule Exec=amule Icon=amule Terminal=false Type=Application Categories=Network;P2P; Comment=A client for the eD2k network Comment[fr]=Un client pour le réseau eD2k Comment[tr]=eD2k ağı için istemci amule_2.3.1+git20151120.0023527bc2.orig/amule.ico0000644000175000017500000007753612611472361017324 0ustar morphmorphhV 00f@@((L63( @E^:GXwz~#YRMe!IyFx1R0iXsXY9WDnlmo9Z;eA#R5rMf-b&=\+OUmx9p;kH5a$Eq}%]*\/euvxAnXq5k/`I{ ??( @7zKLPo|r"R$29:gh8bFmefhZ&cF_|68=Ma4Ij[Fx^rp+J=qHsuv\_p-^TX.Q{,mZ[^L+-0Uq/XTZ&5M~=bgNvad1X}%Dk4ghlw?dHzDB2V L@PIe?m,Jq&Ynophs6mIj)CbTVY,T0j'M1r,e6U{4c.>@D(h2K?r$9TB|`adl~#Q/6?+\yz{8v?f/P"J{*X3n"Hu:vLb|6[CrJ&9Bw$_)_[|,b}v㵶(YH턪_ơ}rL8#y}!=dҼ"0ϋP7XS.[A;ZTN 4cIq-Rz2C W<[Bh ؀UUU@*:`g G""u1anmou{bRWefh>Ww$bU79=?RimVj.MDt0]EG'Isq3UDh@cY\*,0DkwfV+9N,nT\f#.T;=[>oRxIS_\vDEIPSI~UVYk?uF`~!$*+b1Y(@Fq&2Cdwyz!P#)5'EiVn*T9_DTi2Nq7uPcxN_#7UP^eSuLk?yM/26.?S::"P-Pz(h1l[\_&X;iek-Fw=>B)_Dk2U0a\n)?]jlr6`#HIe2Q&Z`bd3c%^6eph/BFSS+s+JSԏ!MM{(xAvW]]Yva#v2 Ŷ>[/n-AEEvyyv2/糧xvEyffyvAN>;IUȸ}vffǀxfm;l/`xUyjܣ//㚦LUyf,j0j,fy#_LUyf,j0jfyJt΀U,'uD{3ya_vyq"k~cMJܵ}LU&* |>[{JO2vwIg` 6K hAx8^⦨^>ܱl/x;ʾ>>>>>Лܕ9>>bd繑d z%Q?BB;R sCTpC>ojZM   )5$,j=XfF}ꄢyfff7SLyyy4 LꐄUU]ELv. E(E!@aW}v1G:\1aLeEwrAwi}rPVU#Pa?????>~(@CeMNP~Mu&86-dLj9dzz%dQdfi5Ot8:>Ey8K``*2BD3_5EZay:|JP|#5KyFxOu6V++.Vh|[F}&-;6bO1kmy%V$K6>vwyHcopp>S>f?Wr{<8LN3@RZcn<_u!Bn5w*JsH9qTo/27x0^,5D>s>w+k$_!TkGr0QIl)]:W{Xb,Ur3HfRSV :[#JzT[%(.*X8i=>Bhg0P SV8_'4dmv9f5^acf"P.Y+:R9@L@r.fjJ5ZW|8z>m~;PKJ3n29B6J_'[@r;dQ|$2E'B.F8z6u)_!6%Ac"SEsUkln"$)3X]^`=?5V6jVxF}G M)P{|}1j,M"V])-646:%It(h%SAzR"\.hDb"5Oa&O{,lAviow"VTr ),1JKN,c-Ij!Q;OhU[c,29N7wI[p :i5F`ghk4a4aBa$$&?{/NqBrKf,,-6\"N#WF%\"5]l|%,?@0mEKSedb@^~,9N Fs5q,f(aAx:|bzR&X8s3U|R_n6n3o+^3g#99;5NiM FMIIF'󫫫 +iiFF=a{>YsI??IZyޑiFMMMMĿMM MM Faƌ,?_I???xy7Ǯ#'=FIFIMFF='aa++aa'ʜM=U#Q7y5lR___TT4 TTT____?ty7ǮƞUU}Pa'=#\qdd||d{''aP+UUԞ#yy5¹TT4444ݳ4444TTT_E55y77#U}Pa'''QQ\dddԋԞQyy5l48~44N77#U}PPa'UƮd|dԋԞnj7y5l디~~~;M~88877\U}PPaaPUQdlld߆UԞƮ7y55l*~;;;A;;;;~`55y7\U}PPaaU#Ɔdllllll|Ԟ#7y55lqEgH; IHz(y7#UUPPaPUdd|llll|dԞ755lYgHHH~M;Hgߣ77ƞUUPPaU#dd|llld#Ԟznj7y5lYgfeHIIb ߣ77UUPaaUƮdddllkl|d\nj7y5lb?_;`6md5577#UUP'PƆdd|ll//kldd#Ʈ7755|b;;;8T~;*d55y77ǮƞUU}Paދqd||l///////ldԞ755dɀM~~ϔz555y7džƞUUPPaaUƆqd||k//////ldԞnj755lqp~88~48Qq555y7ƞU}PPaaUƆqdd|l//۴/ldߞԞnj7y5*~88?M8E57Ǯ#UU}PPaƆqd||l//۴/Ԟl98888~ϐ~~Ϧd\Q#UPPaƆqddl/۴/ԞQ|ll*디8Tq{{{+++'zƆqddl/۴//qMIIIIMij MaU#zƆqddl/۴//l|q aPUzƆqddl//۴//ll| M FFaUƆqdl//w۴/h0o0l||nIII󖪪 M 'Ɔqd|l////w/ u--u[0|| + MUQqdd|l/////--u ||MI MINŸ+UƆqdd|l/0--uo v06IM󫫫___㓓‰l|qܢaPUQqddd|lku-- .vvv0•:4T44T_klɆԈUƆqddd|l0-uuo .. 0\|l ???___444<l5y7#ދUƆddl[-u ..vJ___TT444~888kl55y7#UU#QƢ##QƆ|u-u ...vJ0755T4444I4;;]8l5y77z#PUmz7q1B-.... Jv17755l48`_IHHE5l5y7\z##U2PU#Qnż EEEE5lB- ...  1755l`~_Hbl5y7\QbgeT4444444444K 1-.v. .1y5l€HIITbYl55y7mQ;~44T4T4T441. .[ﮮy5lk5HHHIII~;;g dl5yy7\z84TT44T44T444T4444o[-mƮ755l3gfHݫdl5yy7Q ~4T4T4T4TT4TT44T4T4@ro}Ʈ7y5ldf;48N|l5yyg444T44TT44T444TT~H%#Ʈ7y55k5;;;;ݔ~Kٕl55G;;~4444444T4444444444~;Q755kb8IDll֌!;~444444444Ů7y5lk`~888I디888lߌGH;;44T44fQՕ~Є$];;;;;4~;Qqdդ98` HH;;;;Rnnn6ż:::_? HH;;T8;;;? HHI8888;;;;;;;H HM8888888888;;;;;;;THII8~~~888888888888;;;; H8IM~~~~~~~~8I;HH G?I~ϫHHMMϓM?HH; GHMMϹMIH 4? ݖM8IHGG? ;I?ݖ;H~MݫG 4TMIHC84M? _ C~ݓ;; ;;HHHHHHC H;;;CC M _H CCG;GC;C?jj jHHHH;_gL%C GHH *%Cj GGG CjOjg%j CTC  bg % j!NVVI&N%GO!gTUV&/^9 M%" O4&/ww;VVgN#  w&VT:L)ww&O4CO:LwwOE ///O&ETXO)////) mQO///&^ Uz &35///O&Wmz3j&9yllO3ɚU#Ʈ֣llO ydUdd|lll&&9y|dzƮdd|llllll5dEUzƆqddd||dd7FcaPƆqdddd|ddddNUUƆdddd|||||ddddaUƆdddddddddqpcaU#Ɔ\qdddžIa'aUUƆ\\q9QIi=aa'ދU#QE9&&&#==a2Pa'PUUzƆ3 Qd=i=='aPUUaa2UUUzmU7c=='aPUUpԃ'PUUUUUUz='aPUU& U'aaa}9^^dmR=aP}U# 3n'''SUzd^|z''''a}PUmp9a$xz|^zc''''aa}UUzL& Sxmm|3^m$='''aaP}Up &9:zd^קmX=a'''2}}p9 zd^1mnaa'aPPm6E9pm^^dz$aaaaaPUUp z^^dzaaaaaPUUpzzdaaaaaP}UUzm{zl^{aa}aP}UUz|^^|z2}PaP}Զz19^^|WaPaP}UmUz|^zUPP}}Umd^d1PU^ދzd^0zz{PPmzqzU2#Uz|^|zU22zd^zء22|^zzd^^|mzz||^ȧz^^zz3|^m#^qzmzd^|mmz^zخ|^}Uz^Uzmm|?????????????????????x??????amule_2.3.1+git20151120.0023527bc2.orig/amule.png0000644000175000017500000004345212611472361017324 0ustar morphmorphPNG  IHDR>a IDATxyuo{{ (Qmvb;=QrfdŞ;3sx3GdرX%96[6"  @bGcj^-#^WW[޺-oԏTfxlh4ituWCIk<O~fS7;;WUvwҷZK4ZNBL8h4wZ nw0Ze#0"Ǚ>7wnsb!qv[O q{d}?~pǒӟW*cHj1Fq3 $/+O}SW%59^u@4 2b65??_m<}N[SWXlD4.B}з={.], Q/V4Irs#GrEкWE>p`{[RZr\_ @iF7K>Y{%apʦ-Xŋ۴SMjդ)una?znjjj=ʼn=Jj˩zJ\xOxg`etZId ,6DخYON8Q|歩MGǪ$R*j.XR] ba$)B*a]^B^B0䞳.МkǼb,hPƱ,  -; O?`errr4ACNJ_-S+ G7f~^, ù4M#% xglZqlg:Jfp9e(²]НhCy膉 -'Oļv]y].lK˖(=jE^cqfC%r} _=sɻ`+x$Is_Պn0mLl鷧GZ?]*Wޟ$?k*3g ~fT!1+K@qCTc{h7D/F aT3SSSӼf?5иpvm7\sfb]Zj8xū?0Ol۶$zl۶ms/]6?#?r#$ʥ_V Qk0JΟdbO]r-aM Vk,v34sφPlkW>upK(t:Er!nj^T___D튭ՎUkO6K"Krh* J.HtiƬ eY-Xz ,FG7["SO'<V@ K366j|]\.+۶mcH~r/`0S^<44]1%a;ISN2unAedYF7&|K;xWQg?#@w[{'OZWo l46=PtCIL186?Ν;9K@=SY-=vD\62I0,'y!Bb8vbu'wӕJeE8'N/f=??r$ I08'sY(G`)..oFcL/owؕK6\%M8{6 iP.}uF} mgڅ[{O0=x~tdDwK/$ {L$I(<]4d9Jt "NfA~҅_^x#ϝ&7b5jv`u8&1Vc]W<{Yؚ( H1[rяG{w_?NXtس~$Ir\/ûFߩ(>C@9O%2d)LYY;( +i.!"p'crRH]GojЊ uW BCD.{WNƕɑݏ̜?{JRzNm['vo߲3 …KW]۶di@gpftbXc)t8_}3˳E(o+δ%!|I_H2^^g ӵ^5 ˯>]k%,>d)5&Iի#'.<闞gO !꒤&>%aQ~HkA|{{[3زsw!X;X!OI Rqƒ0Aʦk?yP+m. YZL3\zM;2iV5\Zgplm:h,.N&)d2pju˟Gyɟ1޵t^,9\4%i- )IXX)&mRU`fۑ8ܓ"L80N](ꫲ2nEe&U4Fn ьSʃ{%۴]yW^T<6>!,LNIDd$J,h-Rf4+OsYZ]vqvijla\*Ki[Rw@ TsVVbe1Q\ٺ,`yK$i6NVK7dwrNJ:9\pN:m(] Ah)hRF-.ym#8q`\/rʞEOR%[P-|GR m&``xCE "n?+ x)Bq?̇;D`@lλ]ocGjj;؂OYt\ 0.:gP:7v&C1Vv 3 04"D[T]@X $8ȣAcr/p;\ al߾~8358bjSWxeظvbc۷-}mM(%w4$qN:bVK{o}啽NǚCZ9TPcI(l(f[aHH"[µ̜9S>B; 6w`UAJ饢o?v]=@PX}}53::*A={txSc#T ;[G!xTۢfʂl-$Rwbͳp\! %W.`Ep0:ݻw9r|6o|G?]o7G;MOaػwȥ t\8 )X$%[ mcYq+iEWɛټEh8!2jύ>p+ϵmua~M~~"' Hdeх@$&6om(b#p#4k9xP(ɚ+6'])⌂EQ)J4ߴվ>}{'ӻ^ v(p1e@R(8Rߖ(Rc>2ǾU/`ET.q8[e YKO\|)Nt9y 1RORtfgf߾Mt~~aCI "aڡNBql'w?УX)gkN!%֘/gu<"̜SVjp~_nEPJI!;'U+U'^ZZrD]{>{ϡG?Χ?ϵ[&'}g{+ɻ`m@f8NW]mN1Co8{GI%[Rwp|*|ZPh4Zow,v ٦B)c'6fb5RHA@`o=}.$юr\jZ6`=CÇjC`V|3 ,]H*}>ӇU.~L1!V8~U`yh||bիQ;w vlMEb`u7`qɧ4+6H .O4c}/quw mA)+ ߚ=j;܄YE!m)6<}$sonvtv?_K~s? Ұ^_l4?'ipl<rHfiy4o;lSdv\r{/7e٠Z6F9Ek u3I~%GD$_ 0<<a@(#Eҹl8}wv˵7TY=obJк|dttԿSjm߅c:n@]}{{?!ڦK!Jj}ٳwn;կ~|c3v]7O ]p^T2000GKF>;288N2͹qlr ~_(8T#/4ܾI,;w.[;rnBs]lW t$zFgO^d~w@ Kc4Vogo- TQߣ{W.?^VMxwȬ7mCu\W a~uLC3f勄M.&I)Y i^mV'(B4F)Aw>wCtwN.\v-+컁n;ƛm*k߾}d!7@`aa%n/Њ ,iS)AXm+FӧO37=A똯iDsaCZ'Hiu#Bg)JJdEmhkN%[j cFx}叾~/?SJ5=ʩ;:XtP-WyW1kgr?2 [;G_|Ջ EфmظQdiLؘ IDATFU6OnyyڕK?wiپuWogf Cedڐ&X ?(mV7Y8}㹤 K/wpT91 @m߾j5GFF~8%N",k.biYdi/DE Ι29dEEd1Bi$ߖ J1FDn 'BR\HTV_=N='BxK s!8$+}T5*13;R:Wd&M4I% W:NA@Eu/ˋVV`|3ri$IRj( XcL$Rk<ϩq꣬Jjj4ٙlrN\cZaᕙZk2qpi^*f(cRpN[| ,vg%s2}[DzD_4Ab=bzN,Bh TiDkYBO=Ѓ/wXWN[z7[ Zg;YՑY.3c  BڊAy,O&Y<Z\sx7jH1mvQ$tÐByhi1Il;mz֋$:˰m>^!B1z]8], (=_i2$I$ i|-MTfМ'Vb]byn FXb @&qA1E\0Ķ%JZ)T^)MwKv PaILzfr@eSUBkg `B5?ɩ>ĭj4R٫Lhw) W-*KbL֭ 0DYrMiAҍRGgf m +WC7 {:pa8I1n JŢِ_.+r-reM&$wbuǸZ VR@;uūln%4Mw;G,2yEɆ͓Gw`m/A8 oHi e!'NqI>OYO\PW]+1Z a[ueD;!Rc2ӗI=o_Yǵq!:H e*#LiI804<̎=r Sjnnno+U@`{6zߣR)$)vqz_$hYv0gKPLa)@Yjw8{2T-i*L%%Бb|e1zzÐ/wqj"^e,]<84'FF-uKMےh^uPy͎՚_\y{Ys=J@,ta%)YbA"H**ܮfW[@XX.e <)}GPA"}V5p- eug l$j^;}(ZT8)f8F+Ily.,I"%RqLV$Mݒ୴4َ!9ʪ tcxEU9пb%N/Nm$#Rqa&@}b0OkYaB h#8z&G+Y-B&0t^Bҟbծ+XR!ml-\N;RyQ6RI`i~N _h`mvL_j:f.S'u;YʩbӓImitfq[ay*%;D@<;goɄg|%%ZV0gӓ<5 *sWZ+TǀJ 6[]u, aj -L(bhmN^lZmnQ$nH yBN #Z-LJ\%)>t\Cskqj֠&9ia\ ޲Kk"}=ӥ\a͙/@*@8eFk93F)CKg62(p~dMsf^)חNqnrѶ`QjQi*a"& iއŹL驋/b| 3R0 LTJE`</5f8@GS3Ds FXM/tpf50^¿f zX+@g ƶ(ѕ&pa~>I,UC`v]nt'.?w\bXᑑAt4N~Ҷt%IC&[\ZO>}NܸL1@<=3 lqno(kj)GSReFime8n/kks;NG6PݸaÃ^A<`U,-|qٿˎ ':1w_cL'%4$%3#`i|_nO;VE<)ϲbP(k+7 X荎r叏|Y-p1~KvƼ?>/n6˕r/ K[peVnx,VjݹkSϞnYu@lV\y}+OzwlgM8d )籕: d5hU"0$˜ު71x}cd\Hyj $$q07:ee\):VϿ$ {1H kݿ+`efQٳZ:ӴZ-}9377gaxtzyc2X'IZ/]NJ677 Z+wr(v#={m.%9uM+g)&L: 6)h{ ,0ˆ,1LTZ.}ԓO.j$I#˲LQeeeG,gY.-/8k@Z,`n7H^ힻp~ VW[G4wqn?{b(c&",{䆁JĖr(J$|3 2mU. ,eMĝFդgd ?RQگu3x֓bRXO7T1`+?n?'jmnbM:l8tSquRy빓$,K$lێ<_ZV䷑kR_oi`RL'>3 yXIzZ_ߎ N{>=deow0=&錨^d {B:R @ZQ*| R Y"O%*]`1ȕ)o<|bIhV%zS@g ]nJVK-z1TKw[8_wI|3[B*~Vt9̄UVWƤ)8.TIXh#R#ƶxiqqnphˏ?/*߂x޵kWxW-\t!K9C$)GU4 )U6ڔc!e )M0V)0k3\HVyʌ4UID@܌,4{c#'7Rryg#Ǒ_DdfefmIv",QҌ0|3G'JAERRS[YFY$e]x hS(V::>;:%h_Zp!.-JMgI`dPx31YQ9!~͝E*e[-͵c~|Gdڰb'bd)|d('ũ# 7m\ Dƕ9McT[BWZM)ڞ(c0iFyzJe,_~oCdE@p QQ@}+7O)7o"3,Ǔ/?@n"Ľopz-.y?э_&q}D韩(JPrJ`as@:UUxM) -g5 ]אa7rkRhSxT=M_$z3[T/ݹLj+eB`e~_ YahZf6 ,j t{}mkk<޽ǟ/r qR?bmcNUQD%«&@aVZk#%?/u+R'FתrUOFHY  8e96͠VQ.-DqFw {xr>5~|u6嵨{&?h0'=u3{ׯhDڟnnKTOa^5k  5Ij)E߂X[qPn9s`\hLXi͍zR,fj AWcbRs_XUz(.DY|)oKy1 ~ͭf}uǭ?.8#Gȍ3bhDAt,! 1>~9a .WՄ^MN Sj -8:,@K.@T8 +,{>9j§) <',Supxs/PYҢ?" 6pVGREUA%ִכ\e LL 9mz4" +YIɊ@8*j!po/ln%Mx ؞h(iO;%\An3/iS2Ma< RK-oA~5X̣&<ǠzeL6[m5qA;iJI> ´9:< 7Tk(ph,\s8EJ{Y\P@1DhYh,{l4Y kH#1hVP L5,Lg)p0Jًs$`^,wwB42l0K.Zz2p< q40^AEG 0k 6it3w$K*!$~UT!I1$%, R0DqbCe벫=~$=Ug{CAκRA s$[llYM\M,7L͑a2"S >IDATK%whRꈂ4DW&3LH\4z%CDu#͐E^J ,>|mnݟd<HH)P$r|'Irl`e>ߖY&Hl ȱtƉh6 I|ur̦z'>}c~ٝD\%몞MUǞm#IgiƖaoZp.thK}m.䳺FH7 '+B/iW4Kӕ,Y J0Π(G[8L&(fVsxJA$|%z|M&q$ ;d5(<h뱛:9=:ո8~̵kN?~?Wza?M0K~al?ܠ:V)VK}}Kn ׯFYNnqIux/_Βf8~ͫ[7o _k(qQ&pya.8I&Oz;/NfNJ37}u B9hQnsÖW<5d6t$umQ8"MO?ß'|GRuPKXtgkk{O}+h:b‚M1޼>mM7u" _4䘵TQ< zQoJ){W޼ŖɳӧOw, $;X9uׯ%)^yWmlt)QfYOqInHyҨ)1:j 'z)iPrr~nK-m/UЦHokZTMMQ`j60y(gM4l\B+[IENDB`amule_2.3.1+git20151120.0023527bc2.orig/amule.rc0000644000175000017500000000014512611472361017134 0ustar morphmorphamule ICON "amule.ico" convert ICON "convert.ico" #ifndef _MSC_VER #include #endif amule_2.3.1+git20151120.0023527bc2.orig/amule.xpm0000644000175000017500000016457612611472361017357 0ustar morphmorph/* XPM */ static const char * amule_xpm[] = { "128 128 1652 2", " c None", ". c #753B0E", "+ c #724521", "@ c #944E1B", "# c #97501C", "$ c #77614E", "% c #66462A", "& c #7C4217", "* c #B66A30", "= c #924D1D", "- c #805F45", "; c #A35722", "> c #BD7743", ", c #7F4418", "' c #795A42", ") c #6A3D17", "! c #87491C", "~ c #7E3F0F", "{ c #6B5E52", "] c #70431D", "^ c #86491B", "/ c #A45822", "( c #D18951", "_ c #AD642B", ": c #734219", "< c #715E4F", "[ c #785436", "} c #764016", "| c #924E1D", "1 c #9B5524", "2 c #6F391B", "3 c #6F6359", "4 c #784016", "5 c #88491C", "6 c #A15320", "7 c #CD8145", "8 c #894A1C", "9 c #7F471D", "0 c #716C66", "a c #68462A", "b c #7E4418", "c c #AF672F", "d c #814518", "e c #7C451C", "f c #6E3C15", "g c #814A21", "h c #99511C", "i c #A4602A", "j c #884A1C", "k c #6A492D", "l c #693C1B", "m c #7D461C", "n c #915223", "o c #804418", "p c #694E35", "q c #664F3A", "r c #794117", "s c #B96F36", "t c #CC9366", "u c #934E1D", "v c #6A523D", "w c #6A3D18", "x c #804921", "y c #784117", "z c #675A4F", "A c #6A4E36", "B c #824A21", "C c #6C6156", "D c #6F3F18", "E c #D69258", "F c #81481D", "G c #774820", "H c #6D675F", "I c #5B3B22", "J c #512D14", "K c #724F2F", "L c #7D5533", "M c #6B6660", "N c #634025", "O c #5A2E12", "P c #542B11", "Q c #5A3E26", "R c #743F16", "S c #80481D", "T c #7A4217", "U c #7D5D3F", "V c #5E3D23", "W c #5C2F12", "X c #573117", "Y c #592E11", "Z c #593216", "` c #715B45", " . c #6B4F36", ".. c #894E1E", "+. c #8A613E", "@. c #695B4E", "#. c #5F361B", "$. c #613618", "%. c #5F3518", "&. c #7E4D25", "*. c #766D65", "=. c #70411A", "-. c #754319", ";. c #886F5A", ">. c #5C341A", ",. c #67391B", "'. c #6E441D", "). c #716254", "!. c #684D35", "~. c #DD985F", "{. c #A56734", "]. c #78451C", "^. c #776E65", "/. c #4E392C", "(. c #6A3F1C", "_. c #7B5532", ":. c #756C64", "<. c #69411C", "[. c #CC573E", "}. c #9C5E28", "|. c #784B25", "1. c #6C665E", "2. c #4F4842", "3. c #563117", "4. c #71411C", "5. c #754720", "6. c #7E6753", "7. c #8A5022", "8. c #5C5C5C", "9. c #5E3C23", "0. c #523625", "a. c #713A1B", "b. c #794921", "c. c #74563B", "d. c #724723", "e. c #9E3E25", "f. c #7E5E40", "g. c #5C5044", "h. c #4C2B18", "i. c #4D2C18", "j. c #79461C", "k. c #804518", "l. c #714E2F", "m. c #7A6B5E", "n. c #77451C", "o. c #7D6D5D", "p. c #5C3B23", "q. c #552C11", "r. c #70451D", "s. c #6E5B4A", "t. c #66584B", "u. c #BB845B", "v. c #834D1F", "w. c #80471D", "x. c #7F6F61", "y. c #504B47", "z. c #4C2C18", "A. c #72461E", "B. c #7D5633", "C. c #6E6E6E", "D. c #735C46", "E. c #6D6C6A", "F. c #5A4232", "G. c #51311A", "H. c #744924", "I. c #75665A", "J. c #72553A", "K. c #7F400F", "L. c #C47537", "M. c #754924", "N. c #656464", "O. c #565554", "P. c #502F1B", "Q. c #57321B", "R. c #995D38", "S. c #764720", "T. c #7B6C5F", "U. c #71543A", "V. c #50504F", "W. c #5A493B", "X. c #946843", "Y. c #935828", "Z. c #7F4820", "`. c #675E56", " + c #6F5338", ".+ c #A7652C", "++ c #6E5F52", "@+ c #545556", "#+ c #4A2A17", "$+ c #3F2C25", "%+ c #452819", "&+ c #815734", "*+ c #A46E42", "=+ c #706962", "-+ c #714E2E", ";+ c #66605A", ">+ c #534B44", ",+ c #351E11", "'+ c #C39E7E", ")+ c #AA7243", "!+ c #7C5432", "~+ c #705339", "{+ c #754F2F", "]+ c #4D4D4D", "^+ c #564538", "/+ c #361F11", "(+ c #E8C3A4", "_+ c #775A44", ":+ c #747373", "<+ c #73553A", "[+ c #C07236", "}+ c #644B33", "|+ c #3C3B3A", "1+ c #392822", "2+ c #CBAC92", "3+ c #4E3F33", "4+ c #615750", "5+ c #665D55", "6+ c #695646", "7+ c #7D4317", "8+ c #52473C", "9+ c #393737", "0+ c #402517", "a+ c #352219", "b+ c #EDD1B9", "c+ c #EEB88A", "d+ c #905627", "e+ c #685F57", "f+ c #595656", "g+ c #5E4535", "h+ c #453023", "i+ c #4E2E1A", "j+ c #574639", "k+ c #6B5641", "l+ c #DC8E54", "m+ c #7C4720", "n+ c #434241", "o+ c #443D38", "p+ c #331E10", "q+ c #814D21", "r+ c #CB9266", "s+ c #785130", "t+ c #585959", "u+ c #392E25", "v+ c #432718", "w+ c #4D3E31", "x+ c #4E4D4D", "y+ c #5E4C39", "z+ c #74431B", "A+ c #DA9457", "B+ c #4C4D4D", "C+ c #3B3632", "D+ c #331F15", "E+ c #A67C5A", "F+ c #73431B", "G+ c #5D4B39", "H+ c #454545", "I+ c #3D2416", "J+ c #50301A", "K+ c #603E24", "L+ c #603618", "M+ c #796351", "N+ c #595755", "O+ c #3D3D3C", "P+ c #3D2B1F", "Q+ c #351F11", "R+ c #996136", "S+ c #71451E", "T+ c #5F3D24", "U+ c #563F30", "V+ c #3E2514", "W+ c #5B331A", "X+ c #874D1E", "Y+ c #734929", "Z+ c #363534", "`+ c #301F17", " @ c #241811", ".@ c #5F3517", "+@ c #AD6022", "@@ c #896A4E", "#@ c #534B45", "$@ c #311E14", "%@ c #251D1A", "&@ c #935624", "*@ c #885328", "=@ c #A46734", "-@ c #7D6C5D", ";@ c #434343", ">@ c #494745", ",@ c #221710", "'@ c #1D1816", ")@ c #824B21", "!@ c #824D21", "~@ c #895022", "{@ c #8B5327", "]@ c #9B5D28", "^@ c #7C6C5F", "/@ c #474542", "(@ c #241C19", "_@ c #17110E", ":@ c #935726", "<@ c #995726", "[@ c #9C5D28", "}@ c #9E6029", "|@ c #9D5925", "1@ c #875228", "2@ c #686463", "3@ c #474645", "4@ c #3C2A23", "5@ c #834D1E", "6@ c #884E21", "7@ c #935724", "8@ c #A4612C", "9@ c #A7652F", "0@ c #AD672F", "a@ c #AF672E", "b@ c #AA642D", "c@ c #A15C26", "d@ c #9C5723", "e@ c #925624", "f@ c #84664B", "g@ c #2A2725", "h@ c #1C1715", "i@ c #995D28", "j@ c #A8662D", "k@ c #955A36", "l@ c #696867", "m@ c #4B443E", "n@ c #4C4540", "o@ c #824B1E", "p@ c #9B5E28", "q@ c #7B6B5B", "r@ c #454342", "s@ c #221D1B", "t@ c #201B19", "u@ c #3A291D", "v@ c #4E2F19", "w@ c #B96F31", "x@ c #B96F33", "y@ c #B66A2F", "z@ c #AE652C", "A@ c #AC652C", "B@ c #A65D22", "C@ c #8F6E51", "D@ c #383636", "E@ c #292A2B", "F@ c #322921", "G@ c #4D2B14", "H@ c #894E1F", "I@ c #C07036", "J@ c #B86A30", "K@ c #B6682F", "L@ c #AE6225", "M@ c #927153", "N@ c #565655", "O@ c #483528", "P@ c #5D3417", "Q@ c #915323", "R@ c #995D26", "S@ c #A45E28", "T@ c #AD652B", "U@ c #C47536", "V@ c #C07132", "W@ c #BE6A29", "X@ c #B8682B", "Y@ c #B7682C", "Z@ c #AF682F", "`@ c #A16C41", " # c #63615F", ".# c #55351D", "+# c #CB7937", "@# c #CA7633", "## c #B86829", "$# c #AD662E", "%# c #646463", "&# c #593D25", "*# c #744219", "=# c #B8682A", "-# c #B76C30", ";# c #BB7033", "># c #C07033", ",# c #CD7A38", "'# c #D17B3F", ")# c #D6813F", "!# c #D47D39", "~# c #EFEDEA", "{# c #FEFEFE", "]# c #F6F6F5", "^# c #AE662F", "/# c #70665E", "(# c #624227", "_# c #CDC7C0", ":# c #C07134", "<# c #D78240", "[# c #A55D22", "}# c #886F59", "|# c #634932", "1# c #EFF0EF", "2# c #C07031", "3# c #CB7836", "4# c #CD7A37", "5# c #D78745", "6# c #D98745", "7# c #806F5F", "8# c #C37233", "9# c #DA8C4C", "0# c #916641", "a# c #5C5D5E", "b# c #624A38", "c# c #7D3F0F", "d# c #F6E3D5", "e# c #D37F3A", "f# c #D68745", "g# c #D98948", "h# c #DA8F51", "i# c #926742", "j# c #6C6F70", "k# c #684F3B", "l# c #D88847", "m# c #D98D4F", "n# c #DA9456", "o# c #EDB789", "p# c #A36E42", "q# c #6B6A69", "r# c #6D5A49", "s# c #D68240", "t# c #D98F4B", "u# c #DA9355", "v# c #6C6159", "w# c #705C4B", "x# c #D89150", "y# c #CE8346", "z# c #D9914B", "A# c #DA9356", "B# c #747574", "C# c #28221F", "D# c #555150", "E# c #E2E2E0", "F# c #846243", "G# c #785B44", "H# c #695F56", "I# c #824D1F", "J# c #D9D9D7", "K# c #CF7E39", "L# c #B1B5B6", "M# c #0B0806", "N# c #050402", "O# c #6F6D6B", "P# c #A88362", "Q# c #7A5C45", "R# c #606162", "S# c #655B53", "T# c #393633", "U# c #C3C4C6", "V# c #A6A5A5", "W# c #625F5D", "X# c #A99787", "Y# c #896E53", "Z# c #615E5D", "`# c #615B56", " $ c #B8B5AF", ".$ c #000000", "+$ c #4F4C4A", "@$ c #DAD6D5", "#$ c #585756", "$$ c #1B1412", "%$ c #373330", "&$ c #CACACA", "*$ c #BCAA99", "=$ c #90765F", "-$ c #5E5B5A", ";$ c #4E4C4B", ">$ c #8A6F54", ",$ c #AEAEAE", "'$ c #484542", ")$ c #957A62", "!$ c #CFCDCF", "~$ c #E7E7E7", "{$ c #CABBAA", "]$ c #A8937B", "^$ c #A89686", "/$ c #6C6B69", "($ c #47433F", "_$ c #805F41", ":$ c #957355", "<$ c #6A6867", "[$ c #302A25", "}$ c #BCBCBB", "|$ c #A48873", "1$ c #D3D3D3", "2$ c #9F9996", "3$ c #565756", "4$ c #504E4D", "5$ c #847362", "6$ c #CAC3BE", "7$ c #DCDDDD", "8$ c #C9C9C9", "9$ c #6E6D6B", "0$ c #545353", "a$ c #958272", "b$ c #D7D9DA", "c$ c #AAAAAA", "d$ c #54524F", "e$ c #555452", "f$ c #A69585", "g$ c #C0C0C0", "h$ c #AAAAA8", "i$ c #B7B7B7", "j$ c #8B8885", "k$ c #4A4846", "l$ c #5C5A59", "m$ c #A8A8A6", "n$ c #A4A19F", "o$ c #9B9B9B", "p$ c #7F7B7A", "q$ c #C8C8C8", "r$ c #646261", "s$ c #5A5754", "t$ c #BBBBBA", "u$ c #828180", "v$ c #342F2B", "w$ c #999895", "x$ c #A7A7A5", "y$ c #585553", "z$ c #565350", "A$ c #BEBEBE", "B$ c #A0A1A1", "C$ c #D6D7D9", "D$ c #363434", "E$ c #878582", "F$ c #646260", "G$ c #5B5957", "H$ c #969798", "I$ c #999696", "J$ c #ACB0B5", "K$ c #4E4948", "L$ c #3F3A38", "M$ c #525254", "N$ c #C2C3C5", "O$ c #71665D", "P$ c #706F6C", "Q$ c #817E7C", "R$ c #D7D7D5", "S$ c #999996", "T$ c #999797", "U$ c #979899", "V$ c #959595", "W$ c #918E8E", "X$ c #424140", "Y$ c #575452", "Z$ c #D9DADA", "`$ c #5C5956", " % c #807E7A", ".% c #454242", "+% c #B1B1B1", "@% c #E1E1DF", "#% c #8B8A89", "$% c #9B9A9A", "%% c #999798", "&% c #999898", "*% c #999896", "=% c #9F9F9F", "-% c #71706F", ";% c #5B5B5C", ">% c #AAAAA9", ",% c #C9CACC", "'% c #D6D7D8", ")% c #6B6866", "!% c #D1D1D1", "~% c #767371", "{% c #7A7977", "]% c #9D9C9C", "^% c #999796", "/% c #A3A09E", "(% c #D4D4D2", "_% c #5B5855", ":% c #4B4A49", "<% c #989898", "[% c #312C29", "}% c #918D8B", "|% c #999899", "1% c #BFC1C2", "2% c #C3C4C0", "3% c #CAC7C9", "4% c #CDCDCD", "5% c #7B7776", "6% c #4E4E4D", "7% c #6A6866", "8% c #585859", "9% c #5D5958", "0% c #949393", "a% c #464240", "b% c #BBBBBB", "c% c #CAC7C6", "d% c #DADBDB", "e% c #ABABAB", "f% c #474543", "g% c #5E5C5B", "h% c #81807F", "i% c #484746", "j% c #B5B5B5", "k% c #D0D1CE", "l% c #CCCACC", "m% c #514D4B", "n% c #565251", "o% c #A5A4A4", "p% c #AFAFAF", "q% c #C4C3C4", "r% c #D6D6D6", "s% c #6F6F6F", "t% c #555250", "u% c #C9C9C8", "v% c #9D9E9F", "w% c #969696", "x% c #969695", "y% c #949292", "z% c #B7B5B6", "A% c #DBDCDC", "B% c #848382", "C% c #464441", "D% c #626261", "E% c #6D6A68", "F% c #C3C4C1", "G% c #C6C3C0", "H% c #999999", "I% c #949290", "J% c #B3B1AD", "K% c #B1B0B5", "L% c #B8B7B7", "M% c #979494", "N% c #4A4C4C", "O% c #514F4C", "P% c #807F7E", "Q% c #939291", "R% c #929193", "S% c #918F8C", "T% c #918E8C", "U% c #8A8987", "V% c #B0B3B4", "W% c #ACAEA8", "X% c #B7B5B5", "Y% c #4E4B4A", "Z% c #454546", "`% c #979693", " & c #C2C3C4", ".& c #848788", "+& c #8D9193", "@& c #908D8B", "#& c #8D8D8B", "$& c #898788", "%& c #7E7E7E", "&& c #A2A09E", "*& c #A5A3A1", "=& c #AEAFAE", "-& c #AFB0AF", ";& c #888786", ">& c #4A4645", ",& c #3C3A39", "'& c #9D9E9E", ")& c #B7B5AF", "!& c #AEADAA", "~& c #8B8C8C", "{& c #888788", "]& c #888784", "^& c #838281", "/& c #A09E9D", "(& c #A4A1A1", "_& c #ACACA7", ":& c #6F6E6D", "<& c #555453", "[& c #383434", "}& c #ACACAC", "|& c #BABABA", "1& c #A8A7A7", "2& c #838585", "3& c #A09E9B", "4& c #A0A19F", "5& c #575655", "6& c #676663", "7& c #434141", "8& c #A9A9A7", "9& c #6E6B69", "0& c #9D9D9D", "a& c #A49E9B", "b& c #A7A5A3", "c& c #555556", "d& c #545251", "e& c #505253", "f& c #58595A", "g& c #4F4E4E", "h& c #4B4B4C", "i& c #494B4C", "j& c #4F4D4C", "k& c #545351", "l& c #575756", "m& c #605F5E", "n& c #626160", "o& c #676363", "p& c #6E6A6A", "q& c #2B2A29", "r& c #3F4144", "s& c #9A9A9A", "t& c #B9B9B9", "u& c #A2A3A1", "v& c #ADADAD", "w& c #7B7C7E", "x& c #969797", "y& c #A09B9B", "z& c #A9A8A3", "A& c #7C6653", "B& c #775232", "C& c #765132", "D& c #805634", "E& c #865C37", "F& c #836142", "G& c #795C45", "H& c #66635F", "I& c #645F5E", "J& c #615E5C", "K& c #5C5857", "L& c #5A5A5B", "M& c #505052", "N& c #504D4C", "O& c #444240", "P& c #453F3A", "Q& c #464341", "R& c #454341", "S& c #454240", "T& c #4D4640", "U& c #464443", "V& c #474544", "W& c #4E4C4A", "X& c #5E4C3E", "Y& c #5A483B", "Z& c #5B493C", "`& c #9C9085", " * c #9A9A99", ".* c #7F7C7E", "+* c #7F7C7D", "@* c #A3A3A1", "#* c #8D5123", "$* c #945622", "%* c #975A24", "&* c #A05E2A", "** c #A9632F", "=* c #B26732", "-* c #B76538", ";* c #C27038", ">* c #BC7642", ",* c #B68358", "'* c #898784", ")* c #888382", "!* c #928980", "~* c #54504F", "{* c #62605E", "]* c #4F4B49", "^* c #4C4947", "/* c #7E7A79", "(* c #837E79", "_* c #878281", ":* c #908C8A", "<* c #908D8D", "[* c #8A8988", "}* c #C77636", "|* c #C37539", "1* c #BE7137", "2* c #BC6930", "3* c #A9642F", "4* c #A55B21", "5* c #B7B7B5", "6* c #AEAEAA", "7* c #7B7978", "8* c #9F9C9C", "9* c #AEA498", "0* c #8A542A", "a* c #925523", "b* c #995622", "c* c #A65D25", "d* c #B6642C", "e* c #C06E31", "f* c #C27034", "g* c #CA7A38", "h* c #CF7B39", "i* c #CF7C3D", "j* c #423F3E", "k* c #3C3937", "l* c #A88059", "m* c #C47A43", "n* c #CA7A39", "o* c #CA7738", "p* c #C47336", "q* c #C06E34", "r* c #B66A2C", "s* c #B66829", "t* c #A65A1E", "u* c #BEBEC1", "v* c #AAA5A5", "w* c #959494", "x* c #9B9B99", "y* c #9E9D9D", "z* c #B7B4AE", "A* c #875C35", "B* c #905222", "C* c #935322", "D* c #9C5722", "E* c #AE6023", "F* c #B76525", "G* c #C26E2C", "H* c #CF7B38", "I* c #D17B38", "J* c #D17E39", "K* c #CE803F", "L* c #928F8C", "M* c #797876", "N* c #464342", "O* c #413D3B", "P* c #867A70", "Q* c #C37B37", "R* c #CA7C39", "S* c #CF7A37", "T* c #CA7634", "U* c #C27230", "V* c #BE6E2C", "W* c #B66A29", "X* c #A95C20", "Y* c #A8A6A4", "Z* c #9B9898", "`* c #A4A4A5", " = c #875C36", ".= c #874E21", "+= c #8A5222", "@= c #915322", "#= c #A65D23", "$= c #AE6024", "%= c #C06E2C", "&= c #C27031", "*= c #CB7934", "== c #D17B39", "-= c #CF7E3F", ";= c #B87135", ">= c #8F8C8C", ",= c #474644", "'= c #4D4A48", ")= c #C47B39", "!= c #CF7C39", "~= c #CF7A34", "{= c #C77330", "]= c #B76829", "^= c #B46324", "/= c #C4C6C9", "(= c #9D9B9B", "_= c #939190", ":= c #626465", "<= c #6A6B6D", "[= c #827F7D", "}= c #968E8E", "|= c #9B9797", "1= c #B7B5B8", "2= c #7C4D27", "3= c #875022", "4= c #A15722", "5= c #B66424", "6= c #CF7E3E", "7= c #C26F2D", "8= c #41403F", "9= c #444241", "0= c #565351", "a= c #C77533", "b= c #AC6122", "c= c #8B5022", "d= c #9FA0A0", "e= c #6B7071", "f= c #757574", "g= c #A28484", "h= c #C5BCBB", "i= c #D3534D", "j= c #7A4522", "k= c #874D22", "l= c #894D22", "m= c #C87B3B", "n= c #403E3C", "o= c #3F3E3E", "p= c #4C4847", "q= c #AE672D", "r= c #C07B39", "s= c #A05C23", "t= c #AEB0B1", "u= c #9C9A9A", "v= c #999795", "w= c #8E8D8A", "x= c #847F7A", "y= c #C6403A", "z= c #CA2934", "A= c #7C4319", "B= c #884A22", "C= c #8A4D22", "D= c #915022", "E= c #9B5522", "F= c #A65A23", "G= c #C27030", "H= c #D17A37", "I= c #C17437", "J= c #4D4847", "K= c #44403E", "L= c #BA7939", "M= c #975521", "N= c #834619", "O= c #B6B3AE", "P= c #AEAEAD", "Q= c #A2A0A0", "R= c #9A9998", "S= c #96918B", "T= c #8C8484", "U= c #6C6D6A", "V= c #73685F", "W= c #A6423D", "X= c #D14442", "Y= c #E46665", "Z= c #E47576", "`= c #915023", " - c #935222", ".- c #9C5622", "+- c #C77331", "@- c #D07E3F", "#- c #605D5A", "$- c #474441", "%- c #474746", "&- c #3D3836", "*- c #453E39", "=- c #B87032", "-- c #9C5D23", ";- c #935622", ">- c #80491D", ",- c #7B4D26", "'- c #875D37", ")- c #B6ADA4", "!- c #A19C9A", "~- c #776F69", "{- c #877564", "]- c #BD2422", "^- c #E56A70", "/- c #934F22", "(- c #9C5522", "_- c #9E5723", ":- c #D17B3A", "<- c #D07C38", "[- c #585654", "}- c #45423F", "|- c #C16F2D", "1- c #C27D3E", "2- c #9C5D22", "3- c #7E4C1E", "4- c #63391B", "5- c #C2362A", "6- c #DC5853", "7- c #E49E91", "8- c #9E4025", "9- c #9D5723", "0- c #D17A38", "a- c #D17A39", "b- c #CE7A3F", "c- c #686561", "d- c #524F4E", "e- c #46403B", "f- c #9D9186", "g- c #B27943", "h- c #CF7E3A", "i- c #995722", "j- c #74461E", "k- c #673B1B", "l- c #7B481D", "m- c #834C21", "n- c #884F21", "o- c #844E20", "p- c #AE6022", "q- c #CFAFB5", "r- c #A15723", "s- c #AE5D23", "t- c #D17A3A", "u- c #BB8051", "v- c #474241", "w- c #3D3A38", "x- c #897563", "y- c #CD7B3F", "z- c #53321A", "A- c #72431B", "B- c #79431C", "C- c #814D1F", "D- c #8A5224", "E- c #945828", "F- c #975E28", "G- c #935A29", "H- c #CB3438", "I- c #9C531D", "J- c #AE5D25", "K- c #AE6026", "L- c #CB7A39", "M- c #CC7A3F", "N- c #494544", "O- c #3B3531", "P- c #696766", "Q- c #9C7550", "R- c #D17A34", "S- c #814C1E", "T- c #6A3D1A", "U- c #75461C", "V- c #935826", "W- c #B86E32", "X- c #CB7938", "Y- c #D07838", "Z- c #AE5E27", "`- c #AE6029", " ; c #B76531", ".; c #C07034", "+; c #CB7936", "@; c #CC7939", "#; c #66615F", "$; c #4B4947", "%; c #3A3635", "&; c #D17A36", "*; c #BE6A31", "=; c #935623", "-; c #8F5122", ";; c #56341A", ">; c #72461C", ",; c #79461D", "'; c #CD7A39", "); c #D07C3B", "!; c #9B5D27", "~; c #94542B", "{; c #9C5E2E", "]; c #AF6134", "^; c #B76A37", "/; c #C27237", "(; c #CA7638", "_; c #C97B39", ":; c #3E3937", "<; c #3E3C3A", "[; c #A77243", "}; c #CB7739", "|; c #CA7636", "1; c #BE6A34", "2; c #B56933", "3; c #A85E2E", "4; c #9A5926", "5; c #7B5326", "6; c #614734", "7; c #643D1B", "8; c #75431C", "9; c #81481E", "0; c #8A5324", "a; c #AD652C", "b; c #D17E3F", "c; c #D6803F", "d; c #B35D32", "e; c #614736", "f; c #604635", "g; c #9C6436", "h; c #AA7241", "i; c #CA7937", "j; c #7B5D46", "k; c #47494C", "l; c #3C3736", "m; c #474646", "n; c #403F3E", "o; c #35312E", "p; c #D27D39", "q; c #C77C39", "r; c #654126", "s; c #3D3C3E", "t; c #56351B", "u; c #D9813F", "v; c #D98242", "w; c #C95B3C", "x; c #B65D34", "y; c #835734", "z; c #454547", "A; c #35312F", "B; c #403A35", "C; c #4F4033", "D; c #504034", "E; c #45413F", "F; c #4D4641", "G; c #403C3B", "H; c #2D2925", "I; c #413B36", "J; c #2C2824", "K; c #2B2927", "L; c #333231", "M; c #3C3C3D", "N; c #3B3938", "O; c #3A3938", "P; c #57391B", "Q; c #884E1F", "R; c #A46028", "S; c #AF6A30", "T; c #CD7E3A", "U; c #D7813F", "V; c #B86A34", "W; c #B66734", "X; c #A46134", "Y; c #312F2C", "Z; c #2E2E2E", "`; c #0E0D0C", " > c #1B1B1B", ".> c #262626", "+> c #232324", "@> c #3A3B3C", "#> c #39342F", "$> c #373231", "%> c #3D3733", "&> c #403935", "*> c #423C37", "=> c #464340", "-> c #2C2825", ";> c #232223", ">> c #2F2B27", ",> c #454340", "'> c #403730", ")> c #322D29", "!> c #312C28", "~> c #2F2A27", "{> c #363331", "]> c #282726", "^> c #030303", "/> c #1F1E1E", "(> c #412618", "_> c #57391C", ":> c #7A461C", "<> c #A46029", "[> c #D3803F", "}> c #D98D4B", "|> c #DA8A4B", "1> c #CC593E", "2> c #C16B37", "3> c #B96A36", "4> c #B66A34", "5> c #AD6A32", "6> c #54361F", "7> c #171616", "8> c #201E1E", "9> c #292726", "0> c #2A2623", "a> c #302E2B", "b> c #373533", "c> c #22201E", "d> c #282523", "e> c #332F2D", "f> c #2F2C2A", "g> c #2B2929", "h> c #201D1B", "i> c #3F3E3D", "j> c #4A4C4D", "k> c #353434", "l> c #1E1C1B", "m> c #57361C", "n> c #B66E31", "o> c #D37F3F", "p> c #D78948", "q> c #DA8E4F", "r> c #DA8E51", "s> c #DA8D4F", "t> c #D9894B", "u> c #DB803B", "v> c #CD753D", "w> c #CB7037", "x> c #C06F36", "y> c #B96F34", "z> c #B66A33", "A> c #B56A31", "B> c #795231", "C> c #1E1C1A", "D> c #444444", "E> c #373737", "F> c #0A0909", "G> c #090808", "H> c #080707", "I> c #080808", "J> c #333131", "K> c #302724", "L> c #4F2E19", "M> c #5F361C", "N> c #72431C", "O> c #A4642A", "P> c #DA9154", "Q> c #DA8D50", "R> c #D78245", "S> c #D37F3E", "T> c #CC793A", "U> c #CB7637", "V> c #CA7237", "W> c #9B6234", "X> c #2D2926", "Y> c #292420", "Z> c #232020", "`> c #29241F", " , c #28231F", "., c #2B2724", "+, c #261F1D", "@, c #26221F", "#, c #2E2C2A", "$, c #38312B", "%, c #221E1C", "&, c #1D1A18", "*, c #1E1A17", "=, c #282421", "-, c #2A2523", ";, c #2D2823", ">, c #2F2623", ",, c #512F19", "', c #A7642B", "), c #DA9151", "!, c #D9894F", "~, c #D37A3E", "{, c #B66A31", "], c #A4622D", "^, c #3D3C3C", "/, c #2C2C2B", "(, c #383634", "_, c #373432", ":, c #333232", "<, c #3A3A39", "[, c #3A3736", "}, c #343231", "|, c #413F3E", "1, c #484443", "2, c #444445", "3, c #494645", "4, c #2B2521", "5, c #827E79", "6, c #894F22", "7, c #764924", "8, c #774924", "9, c #714725", "0, c #6A4326", "a, c #6A4226", "b, c #6C4125", "c, c #6A3F21", "d, c #673A22", "e, c #533624", "f, c #72461D", "g, c #CA7637", "h, c #B86E33", "i, c #A7642C", "j, c #36322F", "k, c #3F3630", "l, c #3F362F", "m, c #403831", "n, c #413831", "o, c #413932", "p, c #514135", "q, c #504134", "r, c #34302E", "s, c #B46C2C", "t, c #B16529", "u, c #A85E26", "v, c #9C5A23", "w, c #8A5023", "x, c #894E23", "y, c #834D23", "z, c #7B4D23", "A, c #754622", "B, c #714621", "C, c #71411F", "D, c #6A3A1E", "E, c #54311A", "F, c #824A1E", "G, c #D98950", "H, c #D88745", "I, c #B86E2F", "J, c #A66734", "K, c #714524", "L, c #724621", "M, c #724620", "N, c #734622", "O, c #7B4723", "P, c #854E23", "Q, c #8E5224", "R, c #9B5924", "S, c #A65B29", "T, c #B3622A", "U, c #B66832", "V, c #BF6E33", "W, c #978474", "X, c #312A25", "Y, c #B96B2A", "Z, c #B76A29", "`, c #915222", " ' c #834D21", ".' c #7B4D21", "+' c #75461F", "@' c #71431E", "#' c #6A3A1B", "$' c #57311A", "%' c #894E21", "&' c #935723", "*' c #AE672F", "=' c #DA8D51", "-' c #D98F50", ";' c #D8894F", ">' c #AF6E2F", ",' c #AA652D", "'' c #7B4821", ")' c #834D22", "!' c #A65A24", "~' c #B66530", "{' c #BE6A33", "]' c #C77335", "^' c #CC7938", "/' c #D77F39", "(' c #42403E", "_' c #1B1513", ":' c #6C6967", "<' c #C07030", "[' c #BE6A2A", "}' c #79491F", "|' c #71431C", "1' c #512E19", "2' c #D98D51", "3' c #A6652C", "4' c #784921", "5' c #79461E", "6' c #A65A22", "7' c #C27231", "8' c #34312E", "9' c #1D1B1B", "0' c #787775", "a' c #75461E", "b' c #71461C", "c' c #71411B", "d' c #4E2C18", "e' c #A7672F", "f' c #B96E30", "g' c #7B481E", "h' c #D27B39", "i' c #282524", "j' c #656362", "k' c #25221F", "l' c #6D6B69", "m' c #AD672B", "n' c #BE6A2B", "o' c #995723", "p' c #79461F", "q' c #703A1B", "r' c #5D351B", "s' c #6A3F1B", "t' c #824A1F", "u' c #9C5828", "v' c #CD7A3F", "w' c #D27B38", "x' c #CC7A3D", "y' c #241D1B", "z' c #AD682C", "A' c #8A5021", "B' c #7B491F", "C' c #79481E", "D' c #5A341B", "E' c #AF672C", "F' c #884F23", "G' c #C47837", "H' c #383532", "I' c #4E4B49", "J' c #1C1816", "K' c #B4B1B0", "L' c #935525", "M' c #A9652C", "N' c #B86A2A", "O' c #B86A29", "P' c #814A1F", "Q' c #4F2D18", "R' c #A5652C", "S' c #D27E3F", "T' c #9F5F28", "U' c #C47937", "V' c #A7662C", "W' c #322F2C", "X' c #3E3D3C", "Y' c #221E1A", "Z' c #302B28", "`' c #915828", " ) c #A7682C", ".) c #894E22", "+) c #5D351A", "@) c #CF7A3F", "#) c #B97036", "$) c #B66F33", "%) c #AA662D", "&) c #6E431D", "*) c #B97537", "=) c #A7672E", "-) c #B8AFA6", ";) c #3D3A39", ">) c #241D1A", ",) c #8A4D1F", "') c #A36C30", ")) c #B86A2C", "!) c #55331A", "~) c #AD6830", "{) c #CB7B39", "]) c #B97438", "^) c #302B29", "/) c #353433", "() c #36312E", "_) c #9C642C", ":) c #AE6E30", "<) c #9C5A22", "[) c #81491E", "}) c #58361B", "|) c #B96E33", "1) c #BE6F36", "2) c #AA682E", "3) c #9B5723", "4) c #70451E", "5) c #C77E39", "6) c #B17737", "7) c #2F2A25", "8) c #4A4746", "9) c #272522", "0) c #9E9FA1", "a) c #8B8D8F", "b) c #A46E36", "c) c #B86E2C", "d) c #81491F", "e) c #52311A", "f) c #61371B", "g) c #8A5223", "h) c #BE7036", "i) c #AD6A2C", "j) c #A8642B", "k) c #6E421D", "l) c #C47839", "m) c #AA7343", "n) c #42352B", "o) c #25211F", "p) c #8C6F51", "q) c #B66E30", "r) c #B76E2C", "s) c #79491E", "t) c #74431C", "u) c #81481F", "v) c #BE6F33", "w) c #B96E2C", "x) c #AD672C", "y) c #6B401C", "z) c #A45823", "A) c #AA7342", "B) c #2B2825", "C) c #57361B", "D) c #583419", "E) c #71451F", "F) c #885022", "G) c #8A5323", "H) c #A7652A", "I) c #AF682C", "J) c #AD642C", "K) c #9C5E2A", "L) c #744520", "M) c #CB7B3A", "N) c #312D2B", "O) c #292625", "P) c #866944", "Q) c #B76E31", "R) c #935122", "S) c #71411E", "T) c #71421E", "U) c #6A3A1C", "V) c #5F381B", "W) c #4C2E1A", "X) c #462919", "Y) c #1A1412", "Z) c #27211E", "`) c #321F15", " ! c #513923", ".! c #7E4B21", "+! c #865323", "@! c #9B5B26", "#! c #9C5E29", "$! c #A5612C", "%! c #A7652E", "&! c #A8652D", "*! c #AF6A2F", "=! c #B76A30", "-! c #B86B31", ";! c #AF6A31", ">! c #A5652D", ",! c #965B2A", "'! c #734927", ")! c #463123", "!! c #724820", "~! c #74461D", "{! c #39312B", "]! c #312D2A", "^! c #665743", "/! c #A46531", "(! c #B6652C", "_! c #8E5122", ":! c #865022", "~ c #111111", ",~ c #252525", "'~ c #2F2F2F", ")~ c #2F2F2E", "!~ c #2A2A2A", "~~ c #201F1F", "{~ c #222221", "]~ c #313130", "^~ c #272727", "/~ c #3F3F3F", "(~ c #292928", "_~ c #181715", ":~ c #383939", "<~ c #262525", "[~ c #221F1F", "}~ c #252322", "|~ c #26201D", "1~ c #4F2F1B", "2~ c #764B28", "3~ c #94612E", "4~ c #B87537", "5~ c #9C6939", "6~ c #B8733E", "7~ c #514E4D", "8~ c #130E0C", "9~ c #332926", "0~ c #1A1311", "a~ c #191311", "b~ c #23201F", "c~ c #3A3A3B", "d~ c #2A2A2B", "e~ c #1E1D1C", "f~ c #282828", "g~ c #131312", "h~ c #131211", "i~ c #2B2A2A", "j~ c #252424", "k~ c #221D1A", "l~ c #221A18", "m~ c #422618", "n~ c #332E2A", "o~ c #443E39", "p~ c #25201D", "q~ c #5D5D5C", "r~ c #13100F", "s~ c #16100D", "t~ c #2A2826", "u~ c #262422", "v~ c #282624", "w~ c #454543", "x~ c #161515", "y~ c #29292A", "z~ c #1B1A1C", "A~ c #2B2826", "B~ c #24201E", "C~ c #1E1815", "D~ c #1A1614", "E~ c #322926", "F~ c #464242", "G~ c #201C19", "H~ c #161210", "I~ c #1C1614", "J~ c #2E2B29", "K~ c #525150", "L~ c #282625", "M~ c #110E0D", "N~ c #353333", "O~ c #1D1917", "P~ c #16110E", "Q~ c #373331", "R~ c #6C6C6C", "S~ c #303030", "T~ c #2B2C2C", "U~ c #3B3937", "V~ c #353131", "W~ c #474747", " . ", " + @ # $ ", " % & * = - ", " . ; > , ' ", " ) ! > > ~ { ", " ] ^ / ( _ : < ", " [ } | * ( 1 2 3 ", " 4 5 6 ( 7 8 9 0 ", " a b 8 c ( * d e ", " f g h > ( i j k ", " l m n _ ( 7 h o p ", " q r j h s t * u r v ", " w x u 1 ( ( _ 8 y z ", " A } B u * ( 7 6 8 y C ", " D j 8 / > E * h F G H ", " I J K r 8 h c ( ( * n d L M ", " N O P Q R S u 1 * E ( / 8 T U ", " V W X Y Z ` .r ..h c ( E s 6 8 T +. ", " @.W #.X $.%.&.*. =.S ..6 * ( E * h 8 -.;. ", " >.$.#.#.,.,.'.). !.b 8 h i > ~.7 {.u 8 ].^. ", " /.$.#.$.$.(.(.y _.:. <.S 8 6 c ( E [.}...8 |.1. ", " 2.3.$.#.$.$.,.4.T 5.6. p y B h / > E ( s 1 7.T L 8. ", " 9.#.,.0.,.a.a.b.T : c. d.d u 6 c 7 E ( c e.7.T f. ", " g.h.#.,.#.i.,.a.j.b.k.l.m. { n.8 u / * ( ~.> / u ..j.o. ", " p.q.a.,.i.#.,.a.F F T r.s. t.T 8 e.{.u.( ( * / u v.w.x. ", " y.z.i.#.a.i.,.a.A.j.F j.r B.C. D.T ..6 * ( E ( * / u 8 G E. ", " F.i.i.i.i.G.,.a.j.j.8 v.o H.I. J.K...6 L.( E 7 {.6 u S M.N. ", " O.h.i.i.P.P.Q.,.4.j.F 7.R.j S.T. U.T ..}.7 E E 7 c / n w.c.V. ", " W.i.i.i.i.i.$.,.4.j.B R.X.Y.Z.`. +T ...+( E ( > c 1 8 r ++ ", " @+#+i.i.$+%+G.,.,.A.d &+*+u.R.S.=+ -+d u _ ( E ( > c 1 8 S.;+ ", " >+,+i.%+%+%+q.a.a.b.b.R.u.'+)+!+;+ ~+T ..c E E ( > _ e.k.{+]+ ", " ^+/+%+%+%+i.i.,.a.j.B R.'+(+u._+:+ <+T ..c E E ( [+_ 6 , }+ ", " |+1+%+%+%+%+i.i.a.4.j.8 )+2+(+X.f. 3+4+5+ 6+k.d * t E ( > / n 7+8+ ", " 9+0+a+%+%+%+i.a.,.4.d R.u.b+c+d+e+ f+g+h+i+j+ k+y ..* l+E ( s / 8 m+n+ ", " o+p+a+a+a+i.X ,.a.-.q+X.'+b+r+s+t+ u+v+%+%+w+x+y+z+8 c A+E ( * 1 j f.B+ ", " C+D+a+a+%+i.Q.,.4.j.n E+(+'+F+G+H+ I+P.P.J+F.K+L+a.B u.( ( c u d M+N+ ", " O+P+Q+D+a+%+G.$.,.4.j.R.{.R+S+T+U+V+W+#.,.4.(.4.4.4.4.4.Y.{._ h n X+Y+ ", " Z+`+ @D+D+%+G.#.,.4.F j.$.G.G.W .@4.-.j.F F v.v.8 B d T -.7.{.[++@@@ ", " #@$@%@%@D+i.q.,.(.(.P.%+X ,.4.j.F v.v...7.&@{.> t '+'+{.v.*@c =@-@ ", " ;@>@,@'@'@D+i.#.#.P.%+#.(.j.F )@!@~@7.{@n &@R+*+u.(+(+(+{.F q+]@^@ ", " /@(@_@'@a+i.%+G.#.4.j.v.v.~@7.&@:@<@[@[@}@|@1 i )+u.R+n 7.1@2@ ", " 3@4@_@_@'@0.i.$.-.S 5@6@7.&@7@[@}.}.8@.+9@0@a@b@c@d@d@d@Y.e@f@ ", " g@h@'@_@a+i.$.4.F v.~@7.&@i@}.}..+c c c c c c c c c j@i }.d@k@l@ ", " m@n@_@'@0.Q.4.j.o@~@7.:@i@}..+c c c c * * * * * c c c c .+}.p@q@ ", " r@s@t@u@v@,.F v.~@7.:@i@i c c c c w@x@x@x@x@x@w@* y@c c z@A@B@C@ ", " D@E@F@G@-.v.H@7.:@i@i c c c * x@x@x@s [+[+I@x@x@w@J@K@c c L@M@N@ ", " O@P@F 8 7.Q@R@S@T@c K@* x@s [+U@L.L.U@U@U@V@W@_ X@Y@Z@_ `@ # ", " .#: B 7.7.R@}.T@c K@J@x@I@L.L.+#+#+#+#+#@#E (+(+c+u.##* $#%# ", " &#*#q+7.n d@B@_ =#-#;#>#U@L.+#,#'#)#)#!#~.~#{#{#{#]#'+##^#/# ", " (#, B ..}.t _#(+u.##:#L.L.+#'#)#)#)#)#<#b+{#{#{#{#{#]#t [#}# ", " |#n.8 X.(+{#{#{#1#t 2#3#4#'#)#)#5#6#6#~.]#{#{#{#{#{#{#(+)+7# ", " }+, *@b+{#{#{#{#{#]#~.8#)#)#)#6#6#6#9#(+{#{#{#{#{#{#{#{#( 0#a# ", " b#c#E+]#{#{#{#{#{#{#d#E e#f#5#6#g#h#A+d#{#{#{#{#{#{#{#{#c+i#j# ", " k#~ '+{#{#{#{#{#{#{#{#b+)#l#g#g#m#n#o#]#{#{#{#{#{#{#{#{#(+p#q# ", " r#r 2+{#{#{#{#{#{#{#{#{#c+s#t#t#h#u#c+{#{#]#{#{#{#{#{#{#1#*+v# ", " w#S 2+{#{#{#{#{#{#{#{#{#d#x#y#z#A#A+(+]#B#C#D#E#{#{#{#{#]#F#G# ", " H#I#'+{#{#{#{#{#{#J#~#{#{#c+K#z#h#A+(+L#M#N#N#O#{#{#{#{#{#P#Q#R# ", " S#w.'+{#{#{#{#]#B#%@T#U#{#(+)#6#z#z#c+V#M#M#N#W#{#{#{#{#{#X#Y#Z# ", " `#*#P#{#{#{#{# $M#N#.$+${#(+)#6#( 7 u.@$#$$$%$&${#{#{#{#{#*$P#=$-$ ", " ;$G >$1#{#{#{#,$M#M#N#'${#(+> E+E+)$>$*$1#!$~${#{#{#{#{#]#{$]$^$/$ ", " ($_$:$E#{#{#{#1#<$_@[$}${#'+)$P#|$X#'+*$@${#{#{#{#{#{#{#{#1$_#{$2$3$ ", " 4$5$E+_#{#{#{#{#]#1$~${#_#X#*$6$&$1$J#1$1$7$E#~#{#{#{#{#~$7$7$7$8$9$ ", " 0$a$]$*${#{#{#{#{#{#{#E#6$1$7$7$J#b$b$1$1$!$!$!$1$J#7$7$@$J#7$7$E#c$d$ ", " e$f$2+*$~${#{#{#{#{#E#@$7$1$!$&$U#g$}$ $ $ $L#L#L#,$h$,$i$i$&$&$1$J#j$k$ ", " l$m$_#_#@${#{#{#1#7$1$_#g$ $,$,$h$ $i$i$i$}$g$g$g$}$i$h$n$o$o$<$p$7$q$r$ ", " s$t$7$J#J#7$E#E#!$}$,$h$V#h$ $g$!$7$~$~#~#1#1#1#1#~#1#E#}$n$u$v$T#w$E#x$y$ ", " z$A$7$@$J#J#&$i$B$n$o$o$n$,$g$7$~$~$~$~$~$~$~$~$~$E#E#C$ $o$W#v$D$W#&$J#E$F$ ", " G$q$J#J#1$}$n$H$H$I$o$o$o$B$,$J$,$i$i$L#L#i$i$}$i$i$,$o$o$o$K$v$L$M$,$E#N$O$P$ ", " Q$R$E#1$,$I$I$H$I$o$o$I$o$I$S$T$T$T$T$o$S$o$S$S$U$V$T$o$o$W$X$v$L$Y$V#Z$7$V#`$ % ", " .%+%@%g$#%I$o$T$$%o$T$o$%%o$&%*%&%o$o$o$o$o$o$&%o$&%o$o$o$=%-%v$%$X$;%>%U#,%'%p$r$ ", " )%!%7$~%T#{%]%%%o$o$o$o$I$&%I$I$I$^%I$%%o$&%&%&%&%&%o$o$&%/%O#v$D$'$<$i$U#&$(% $_% ", " :%<%~$}$+$[%X$}%|%o$o$o$%%%%&%&%%%&%o$o$%%o$%%%%%%o$&%o$o$&%I$4$%$L$K$u$1%2%3%4%J#5%6% ", " 7%8%&$J#V#'$T#v$9%$%o$o$o$o$o$o$o$o$&%o$&%%%&%&%%%&%o$&%o$o$*%0%L$T#a%#$n$b%g$U#c%d%e%f% ", " g%h%J#1$h$D#L$T#D$u$]%o$o$o$%%&%&%%%%%&%%%%%%%^%^%%%^%^%&%&%T$#%T#L$i%u$j%i$}$g$U#k%l%m% ", " n%o%C$!$i$W#X$D$%$4$o$o$o$&%%%%%%%%%%%%%^%^%I$I$I$I$I$I$*%^%V$<$%$'$<$,$p%L#i$g$g$q%r%-% ", " s%t%g$1$u%U#u$K$L$%$%${%v%%%%%^%I$I$I$I$^%I$w%w%I$w%x%x%0%x%0%y%Y$D$9%o$+%,$,$z%i$g$g$A%B%C% ", " D%E%1$!$F%G%h$;%'$T#v$K$H$H%I$I$w%w%w%w%x%x%x%0%0%0%0%0%0%0%W$I%4$a%I$J%h$,$,$,$K%L%L%7$M%N% ", " O%P%J#&$2%g$b%#%Y$'$T#%${%o$Q%0%0%0%0%R%R%R%S%T%T%T%T%W$T%T%#%U%i%{%V%V#h$h$h$W%,$X%X%@$M%Y% ", " Z%`%7$ &g$}$i$+%.&#$'$T#'$+&@&}%}%}%#&#&#%#%#%#%#%#%#%#%#%#%$&%&+$&&*&V#V#V#h$h$h$=&-&1$;&>& ", " ,&'&J#G%g$i$)&,$!&.&Y$a%%$<$0%~&#%#%#%#%#%#%#%#%#%{&{&{&{&]&B%^&<$/&n$(&V#V#V#V#V#h$_&&$:&<& ", " [&}&J#|&}$i$)&,$h$1&I$<$L$'$#%#%#%#%$&$&{&.&.&B%B%B%B%B%B%u$u$2&{%o$3&n$n$n$4&n$(&V#V#i$5&6& ", " 7&8&J#|&L%,$,$h$h$V#1&o%{%L$9&#%B%B%B%u$u$u$u$u$u$u$u$u$u$u$u$u$u$0&o$o$o$o$o$o$a&n$b&B$M$c&d&e&f&g&h&i&j&k&l&m&n&o&p&-% ", " q&r&s&J#t&i$,$h$h$V#V#V#u&v&{%Y$u$u$u$u$u$u$u$u$u$u$u$u$u$u$p$w&u$u$x&o$o$o$o$o$o$o$y&z&A&B&B&C&D&E&F&Q#G&G&H&I&J&K&L&K&5&M&N& ", " O&P&Q&R&S&T&U&V&W&N&#@#@X&Y&Z&g+`&7$j%,$h$V#V#V#V#(&4&0& *<${%u$u$u$u$u$.*w&+*{%u${%{%B#{%{%{%{%}%&%o$o$o$o$o$o$@*]$#*$*%*&***=*-*;*>*,*'*.&)*'*'*#%!*)*~*{* ", " ]*^*/*(*_*_*:*:*<*[*>*}*|*1*2*3*4*)+!$5*6*h$V#(&4&4&4&o$o$o$u${%7*{%{%{%{%{%{%{%B#~%{%{%9&-%{%{%B#u$x%&%o$o$o$o$8*9*0*a*b*d@c*d*e*f*g*h*i*P#W$.&'*u$'*)*'*E%j* ", " k*/*o$o$o$w$w$H$+&l*m*n*o*p*q*r*s*t*{$u*v*V#4&o$o$o$o$o$o$o$}%{%{%{%{%B#{%{%{%{%-%<$B#B#~%B#~%-%B#{%w*%%x*o$&%y*z*A*B*C*D*B@E*F*G*@#H*I*J*K*> )$!*L*#%#%#%M*N* ", " O*_*W$'*.&'*)*P*E+Q*R*H*S*T*U*V*W*X*)+!$Y*n$o$o$o$o$o$o$o$&%}%{%~%B#B#B#B#B#B#O#-%B#-%-%-%-%-%~%-%-%W$%%Z*x*`* $ =.=+=@=D*#=$=%=&=*=I*I*==-=;=)+|$w$o$0%w$>=f% ", " ,='=.&.&'*#%'*>$.+* )=!=I*I*~={=G*]=^=h X#/=(=o$o$o$o$o$o$o$^%_=~%-%-%:=9&-%-%9&<$9&-%-%<$9&-%-%-%<=<=[=}=|=1=*$2=)@3=7.@=4=E*5=%=&=*=I*I*==6=7=a&L#V#V#V#n$M*8= ", " 9=0='*H$H$I$H$o$E+T@)=H*I*I*S*a=G*]=5=b=c='+/=d=o$o$o$o$o$o$^%}%~%O#-%O#<$-%e=O#-%9&9&-%<=9&-%-%<=-%9&f=g=h=i=a.j=k=l=7.C*/ $=F*G*@#S*I*I*==m=c )+9* $,$V#-%K&n= ", " o=p=:=W$h$V#V#X#X.q=r=H*I*I*I*@#G*##5=E*s=..P# $t=u=Z*o$o$o$v=w=-%O#O#-%-%<$<$O#-%-%9&-%-%-%<=-%-%e=-%-%x=i=y=z=A=B=C=D=E=F=$=W@G=@#H=I*I*==I=t X#9*i$o$#$L$J=n= ", " O&K='$'$O#h$h$|$E+)+L=h*H*I*I*@#G*G*5=E*F=M=N=*@P#h$O=P=Q=R=S=T=-%<$-%e=U=-%U=e=<$-%O#e=-%<$e=e=~%V=W=e.X=Y=Z=Y=y=w.`= -.-#=5=W@+-*=H=I*==@-G*]$i$i$i$J$0%#-$-N* ", " %-&-*-K$u$L# $i$L#|$=-)=I*I*I*~=@#G*5=E*--;-+=>-(.,-'-)$|$X#)-!-O#B#-%B#B#-%B#B#B#B#-%~-{-P*X.W=e.z=]-]-Y=^-Y=Z=Y=e./-(-_-#=F*%=@#*=H=I*:-<-)+E+w$h$h$,$i$L#K&[- ", " }-Y$,$}$i$L#i$a&*+|-1-==I*I*I*@#G*F*E*2-;-H@5@3-4.W 4--.q+7.*@B&'-F#X.X.X.X.*+*+*+*+2#{=K#5-]-z=X=6-6-Y=Y=Y=Z=7-6-8-9-#=$=W@G*@#+#0-a-b-E+!*W$0%0%I$I$o$h$c-d- ", " e--%L#h$n$n$o$f-#%P#g-h-==I*I*@#G*F*$=E*i-H@5@j-#.k-l-m-n-7.o-v.T j.d ..u h h 6 t*t*p-i Y.e.5-z=X=X=Y=Y=Y=Y=Z=q-^-e.r-s-$=W@G*@#+#,#t-u-B#p$u$u$u$.&#%!*0%c-v- ", " w--%w$L*#%#%#%'*.&.&x-y-:-==I*@#&=W@F*E*D*7.5@A.z-A-B-C-7.7.D-E-F-G-7.,-v.q+q+7.*@7.Y.1 {.* H-z=H-X=6-Y=Y=Y=^-q-7-[.I-J-K-W@&=*=+#L-M-~-<$9&-%-%~%B#{%{%u$#$N- ", " O-P-'*u$p${%{%-%~%B#e=Q-:-==I*R-@#%=F*E*D*~@S-#.T-U-F v.7.7.V-}.}._ c c W-x@x@x@[+L.+#+#X-Y-y=z=H-X=6-6-Y=Y=^-q-7-X=d@Z-`- ;.;+;X-@;)+#-#;c-#-c-<$9&O#-%~%j&$; ", " %;0=B#O#-%-%U=<$<$c-:=V=y-==I*&;T**;`-c*=;-;A.;;>;,;v.~@7.V-}.i c c c * x@x@[+L.+#+#,#H*';);[.z=H-H-X=i=6-Y=Y=7-Z=[.!;~;{;];^;/;(;_;X.4$Y$9%9%9%#-#-#;c-c-:;d- ", " <;:;c-#;#;W##-#-#-#$#$Y$[;};,#|;1;2;3;4;5;6;G.7;8;9;v.7.0;i@i a;c c * x@x@[+L.+#+#h*b;c;c;c;b-H-z=z=X=6-6-Y=^-^-^-[.d;e;a%f;f;g;h;i;j;k;4$+$4$4$D#M$#$#$D#l;m; ", " n;o;#$#$Y$M$D#+$+$+$+$i%>$p;q;{.'-e;r;s;s;T#t;(.j.v.v.7.V-i@i c c * x@x@[+L.+#,#h-)#)#)#u;6#v;[.z=z=H-X=i=6-l+^-X=w;x;y;&-z;,&A;B;C;D;E;n@F;K$K$+$K$4$4$:;G; ", " H;8=+$+$K$K$+$+$+$F;a%r;e;I;J;K;L;M;N;O;h+P;(.j.v.Q;0;R@R;.+c S;* x@x@L.+#,#T;)#)#U;6#6#6#6#6#X=z=z=H-X=6-6-X=X=V;W;X;Y;Z;`; >.>+>@>O;#>$>%>&>*>=>n@E;-> ", " ;>>>,>i%'$'$n@'>)>!>~>{>g@]> ^>/>(>_>(.:>v.7.&@R@<>.+c * x@x@[+L.+#';[>)#U;6#6#g#6#}>6#|>6-H-z=z=H-y=1>2>3>4>5>6> 7>8>9>g@0>a>b> ", " c>d>e>f>g>h>]>i>j>k> l>G.m>4.9;v.7.&@i@i .+c n>x@x@L.+#+#o>)#)#p>g#m#q>h#r>s>t>6#u>[.i=[.v>w>x>y>z>A>B>C> D>E> ", " F>G>H>I> J>K>L>M>N>9;H@7.7@}.O>a;Z@x@x@I@L.+#,#c;)#5#g#m#h#h#A+P>h#Q>t>6#R>S>T>U>V>I@x@x@* W>X> ", " Y>Z>`> ,.,0>+,@,#,$,->a>.,@,%,&, *,=,-,X>;,>,o;$+,,#.N>5@H@7.7@}.',a;Z@w@x@I@L.+#h*)#)#p>t>h#),A+A+A+P>h#!,6#5#)#~,+#U>[+x@x@{,],&-^,/, (,w-_, :,<,O;_,[,},9+|,n+1,1,2,$;3, ", " 4,5&h%/*/*/*(*(*5,(*)$i R@7.7.6,S.7,8,9,0,a,b,c,d,e,Q.%+z-#.f,9;H@7.Y.}.',a;S;x@x@I@g,+#K#)#)#5#!,h#),A+A+A+A+),m#6#5#)#e#+#+#[+s x@h,i,0.j,k,l,m,n,o,n,D;m,o+p,p,E;o+o+q,n@$-n@$-$-n@$-E;r,3, ", " )>0%o$0%w$L*0%L*0%+&P#s,t,u,v,d@w,x,y,z,A,B,C,D,,.,.#.i.E,#.f,F,7.7.7@}.',a;S;n>x@[+g,+#K#)#)#5#!,h#),A+A+A+A+h#G,H,)#)#e#+#+#[+x@x@I,J,,-K,L,M,N,O,P,Q,R,S,T,U,V,[+@#L.W,u$x=)*x=)*)*)*#%9&)> ", " X,0=#%'*'*.&.&.&.&x=*+W@Y,Z,$=#=d@D*`,x, '.'+'@'4.#',.,.i.$'#.f,9;%'7.&'}.',*'* * x@[+L.+#K#)#)#5#g#='h#A+A+A+),-';'5#)#)#h-+#+#x>x@x@>','A.A.A.A.'')'7.;-!'`-~'{']'+#^'/'u.'*#%'*.&.&#%#%#%}%8=(' ", " _':'#%.&'*)*u${-F#*@i <'['W@5=E*#=D*;-7.%'v.}'A.|'a.,.,.i.1'#.N>9; '7.7@}.i *'S;* x@[+L.+#+#)#)#f#6#t>2'h#h#h#Q>m#p>)#)#)#h-+#L.x>x@x@c 3'4'A.A.5'v.7.;-6'E*5=W@7'*=H=0-p;e#)+W,}%#%'*)*'*.&#%;%8' ", " 9'0'I$W$L*0%0%)*'-..B@['['W@5=E*#=d@=;n %' '}'a'b'c',.,.i.d'#.N>F '7.&'}.i e'c * * s [++#+#b;)#)#5#g#g#!,!,m#g#p>f#)#)#)#';+#L.x>x@f'c }.A.A.A.g'v.7.D*6'E*W@G*@#+#I*I*h'+#x@i R.{-0%L*#%#%}%~%i'j' ", " k'l'}%B$o$o$o$h$W,v.}.m'n'n'5=E*E*d@o'n %' '}'p'>;4.q',.Q.i.r's'F t'7.7.u'i e'c * * x@[+L.+#';)#)#)#5#5#p>p>p>5#f#)#)#)#v'+#L.[+x@x@y@c R@A.A.A.g'7.7.D*B@E*W@G**=H=w'I*I*x'c B@E+o$o$o$w$I$o$'*j,Z# ", " y'~*c-0%V#h$h$!*&+d R@z'n'n'Z,E*E*F=D*;-A' 'B'C'f,4.c',.#.%+D',.,;9;7.7.Y.}..+c c * w@I@L.L.+#h*)#)#)#)#f#f#)#)#)#)#)#-=+#+#L.I@x@f'c E'F'A.A.A.C-7.`,D*p-E*W@G=*=H=w'I*H*G'* }.|$,$V#B$V#,$#%<$H'I' ", " J'j&'$K$p$K',$|$)$X.L'M'N'N'O'E*p-6'D*;-7.%'P'C'A.4.4.,.#.i.Q'#.8;F '7.n }.R'c c c w@x@s L.L.+#';c;)#)#)#)#)#)#)#S'-=+#+#L.[+x@x@* c T'A.A.A.A.)'7.;-6'E*5=%=+-*=H=w'I*H*U'V'd@R+|$,$,$h$)*9%Y$W'X' ", " Y'Z'4${%B$i$K'}$U#X#`' )N'O'O'$=p-6'D*;-7..)v.C'A.N>4.,.,.#.P.+)c'F q+7.7.}.}..+c c * x@x@x>L.L.+#';v')#)#)#)#S'@)';+#+#L.[+#)x@$)S;%)q+&)A.A.5'H@7.D*6'E*F*%=@#*=I*I*I*H**)=)P#X#9*-)i${%'$X$J= , ", " ;)>)o$g$i$K'K'J$a&'-,)')r*))O'5=p-B@D*D*7..)v.B'a'N>4.,.,.#.i.!),.j.F 7.7.7.}..+.+c c * x@x@x>L.L.+#+#+#+#+#+#+#+#+#g,U@[+s x@x@* ~)R@A.A.A.A.g'.)7.D*B@E*W@G*@#~=I*I*h*{)])}.X#L#i$i$i$,$}%Y$^)/) ", " ():;K'h$V#V#n$n$L*!*:$_):)V*V*F*p-B@<)D*7.7.v.[)C'f,4.a.,.,.i.i.})4.F q+7.7.Y.}..+.+c K@|)x@x@1)I@U@L.+#+#+#g,g,|;U@[+I@x>x@x@* 2)3)A.4)A.A.5'C-.)7.D*E*5=W@G=@#+#I*J*K#5)6)i *+X#,$,$,$i$}$V#7)8) ", " 9)J=0)I$I$0%}%#%+&a)#%{-b)c)c)W*p-p-<)D*;-7. 'd)C'A.4.a.,.,.Q.i.e)f)8;F 7.7.g)}.}..+.+c y@|)x@x@x@h)[+[+[+[+U@U@[+I@x@x@x@w@i)j)Y.-.k)A.A.A.5'v..)@=D*E*F*W@&=@#S*I*==h-l)m)W,}%H$o$o$B$V#V#,$J=n) ", " o)J=W$.&)*u$u$u$p$B#B#{%p)q)r)r)E*E*6'D*;-7.%'C-s)A.4.a.,.,.Q.0.i.%+%.t)u)7.7.Q@}.}..+.+E'y@J@f'w@x@v)x@x@x@x@x@x@x@x@x@w)x)}.v.A.y)A.A.A.5'g'v.~@D*z)E*F*%=+-*=S*====h-A)x=.&.&.&W$W$}%0%I$n$0=r, ", " B)H'p${%B#-%-%-%9&O#U=<$c-*+%=%=F*E*E*d@b*7.%'C-s)A.4.a.,.C)D'Q.i.%+%+%+D)E)F)w,G)[@}.H).+x)I)y@f'w@w@x@x@x@x@x@x@x@|)J)K)F'A.(.A.L)A.A.A.5'g'v.+=D*#=5=##G*@#+#S*==:-M){-B#{%{%{%p$u$u$)*.&#%J=$, ", " N)O)O#O#9&<$#;c-#;#;W##-;%P)Q)r)F*E*#=D*R)7. 's)A.S)T)U)V)W)X)a+%@Y)(@Z)i'(@`) !.!+!@!#!$!%!&!0@*!=!-!|)x@x@;!>!,!'!0.%+)!%+G.,.(.r;U-!!~!A.5'C- 'D*F=5=##G**=+#h'h't-)+<$<$U=9&-%-%-%B#{%{%u$L${! ", " ]!h@W##-#-;%9%#-#$D#9%D#4$^!/!(!F*p-d@$*_!:!)s!t!u!v!w!i'x!y!z!A! B!C!n;D!E!F!G!H!J>I!J!K!J>J>b!L!M!K;H+N!O!P!Q!R!N!S!T!U!i>~>9!V!(@W!G.(.X!Y!Z!`! ~+;4#.~+~@~M$Y$Y$#$9%#-#-W#W#c-W#%@1, ", " #~K!D#K$K$K$K$+$K$K$K$a%*-r;$~%~s!&~*~=~-~(';~>~ ,~'~)~!~~~{~]~^~ /~(~_~P!:~<~[~}~|~(@,+1~2~3~4~5~6~Y$i%4$4$4$D#D#Y$Y$9%9%K$(@7~ ", " 8~E;+$K$i%*-T#9~C#(@Y)0~a~b~c~d~e~B!Z+ f~g~h~i~j~k~8!l~m~h+n~o~F;K$K$K$4$4$4$4$M$O)p~q~ ", " r~s~C#C#'@_@a~k~t~u~v~w~5! x~L!y~z~A~B~C~D~(@E~[%%$*-F;4$L$_@F~ ", " G~H~I~J~K~L~x~ M~N~i'O~Y>|~J'$$'@P~Q~R~ ", " S~T~9>|,U~V~W~ ", " ", " "}; amule_2.3.1+git20151120.0023527bc2.orig/amule_build_install.sh0000755000175000017500000001376612611472361022067 0ustar morphmorph#! /bin/bash # # Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) # # All rights reserved. This script is provided under the terms of the GPL. # # # Example usage: copy all tarballs to a directory, cd to it and # $ ./amule_build_install.sh # SCRIPT_VERSION="2.0.0" USERHOME=$(echo ~) DEFAULT_PREFIX="${USERHOME}/usr" DEFAULT_TARDIR=$(pwd) DEFAULT_UNTARDIR=${DEFAULT_TARDIR}/untars JOBS=4 # # This function uses three parameters: # $1 - an input parameter specifying a mask for the distribution, # e.g., 'aMule-CVS-*' for cvs tarballs or 'aMule-*' for distro tarballs. # $2 - an output parameter with the name of the variable that will # receive the full file name of the tar archive # $3 - an output parameter with the name of the variable that will # receive the basename of the distribution # function lookup_distro { # assign the filename of distribution # the following is equivalent to execute XXX_FILENAME=$(ls ${TARDIR}/$1) eval $2=$(ls ${TARDIR}/$1) # Now we use indirection to dereference $2 #echo $2 # evaluates to XXX_FILENAME #echo ${!2} # evaluates to /home/user/dir/xxx-y.z.t.tar.gz # remove the directory and the extension parts and assing it # to XXX_DISTRO in $3 case ${!2} in *.gz) eval $3=$(basename ${!2} .tar.gz) ;; *.bz2) eval $3=$(basename ${!2} .tar.bz2) ;; *.zip) eval $3=$(basename ${!2} .zip) ;; esac } function untar_distro { # $1 evaluates to /home/user/dir/xxx-y.z.t.tar.gz or .bz2 local TARCMD= case $1 in *.gz) TARCMD="tar zxf" ;; *.bz2) TARCMD="tar jxf" ;; *.zip) TARCMD="unzip -ao" ;; esac $TARCMD $1 } function init_package_versions { # # Put the software distributions in directory $TARDIR and the # script does the rest. There can even be a mixture of .tar.gz and # .tar.bz2 because the untarring routine tests it on the fly # # single quotes have to be used here to avoid expansion # lookup_distro 'cryptopp*' CRYPTOPP_FILENAME CRYPTOPP_DISTRO lookup_distro 'libupnp-*' LIBUPNP_FILENAME LIBUPNP_DISTRO lookup_distro 'wxWidgets-*.*.*.tar.*' WXWIDGETS_FILENAME WXWIDGETS_DISTRO lookup_distro 'aMule-*' AMULE_FILENAME AMULE_DISTRO echo echo "Software packacge versions:" echo " cryptopp : $CRYPTOPP_DISTRO" echo " libupnp : $LIBUPNP_DISTRO" echo " wxWidgets : $WXWIDGETS_DISTRO" echo " aMule : $AMULE_DISTRO" echo } function init_environment { echo echo aMule building script, version $SCRIPT_VERSION echo # only prompt if we're missing information if [ x$PREFIX = x ] || [ x$TARDIR = x ] || [ x$UNTARDIR = x ] ; then PREFIX=${DEFAULT_PREFIX} echo "Where to install?" read -p "[${PREFIX}]: " if [ x$REPLY != x ]; then PREFIX=${REPLY}; fi echo echo "Where are the tarballs?" TARDIR=${DEFAULT_TARDIR} read -p "[${TARDIR}]: " if [ x$REPLY != x ]; then TARDIR=${REPLY}; fi echo echo "Where to untar?" UNTARDIR=${DEFAULT_UNTARDIR} read -p "[${UNTARDIR}]: " if [ x$REPLY != x ]; then UNTARDIR=${REPLY}; fi fi # test that we have write permissions to the install dir TST_DIR=${PREFIX}/tmp TST_FILE=${TST_DIR}/test-if-has-write-permission mkdir -p ${TST_DIR} touch ${TST_FILE} if [ ! -w ${TST_FILE} ]; then echo "You don't appear to have write permissions to ${PREFIX}." echo "You must fix that before continuing." exit fi rm -f ${TST_FILE} echo echo "Building for:" echo " --prefix=${PREFIX}" echo " tarballs are at ${TARDIR}" echo " tarballs will be untarred at ${UNTARDIR}" echo # Initialize package version variables init_package_versions } # # cryptopp # function build_cryptopp { CRYPTOPP_INSTALL_DIR="${PREFIX}/cryptopp" CRYPTOPP_SOURCES_DIR="cryptopp_tmpdir" rm -rf ${CRYPTOPP_SOURCES_DIR} mkdir -p ${CRYPTOPP_SOURCES_DIR} cd ${CRYPTOPP_SOURCES_DIR} untar_distro ${CRYPTOPP_FILENAME} make -f GNUmakefile -j${JOBS} PREFIX=${CRYPTOPP_INSTALL_DIR} make install cd .. } # # libUPnP # function build_libupnp { untar_distro ${LIBUPNP_FILENAME} LIBUPNP_INSTALL_DIR="${PREFIX}/libupnp" cd libupnp-?.?.? ./configure \ --enable-debug \ --prefix=${LIBUPNP_INSTALL_DIR} \ && \ make -j${JOBS} > /dev/null && \ make install > /dev/null cd .. } # # wxWidgets # function build_wxwidgets { untar_distro ${WXWIDGETS_FILENAME} WXWIDGETS_INSTALL_DIR="${PREFIX}/wxWidgets" cd wxWidgets-?.?.? ./configure \ --enable-mem_tracing \ --enable-debug \ --disable-optimise \ --enable-debug_flag \ --enable-debug_info \ --enable-debug_gdb \ --with-opengl \ --enable-gtk2 \ --enable-unicode \ --enable-largefile \ --prefix=${WXWIDGETS_INSTALL_DIR} \ && \ make -j${JOBS} > /dev/null && make install > /dev/null cd .. } # # aMule # function build_amule { untar_distro ${AMULE_FILENAME} AMULE_INSTALL_DIR="${PREFIX}/amule" cd amule-cvs ./configure \ --enable-ccache \ --with-denoise-level=3 \ --enable-debug \ --disable-optimize \ --enable-verbose \ --enable-geoip \ --enable-cas \ --enable-wxcas \ --enable-amule-gui \ --enable-webserver \ --enable-amulecmd \ --enable-amule-daemon \ --with-wx-config=${WXWIDGETS_INSTALL_DIR}/bin/wx-config \ --prefix=${AMULE_INSTALL_DIR} \ --with-crypto-prefix=${CRYPTOPP_INSTALL_DIR} \ --with-libupnp-prefix=${LIBUPNP_INSTALL_DIR} \ && \ LD_LIBRARY_PATH=${WXWIDGETS_INSTALL_DIR}/lib make -j${JOBS} && \ LD_LIBRARY_PATH=${WXWIDGETS_INSTALL_DIR}/lib make install > /dev/null } # # Here is where the fun begins... # init_environment # # Go to ${UNTARDIR} # mkdir -p ${UNTARDIR} cd ${UNTARDIR} # # Build stuff # build_cryptopp build_libupnp build_wxwidgets build_amule # # Leave ${UNTARDIR} # cd .. echo echo Finished compilation. echo You should run aMule like this: echo '$LD_LIBRARY_PATH'=${WXWIDGETS_INSTALL_DIR}/lib:${LIBUPNP_INSTALL_DIR}/lib LANG=en_US.UTF-8 ${AMULE_INSTALL_DIR}/bin/amule echo echo Of course you may choose to use a different locale. echo amule_2.3.1+git20151120.0023527bc2.orig/amulegui.desktop0000644000175000017500000000044212611472361020706 0ustar morphmorph[Desktop Entry] Name=aMuleGUI Exec=amulegui Icon=amulegui Terminal=false Type=Application Categories=Network;P2P; Comment=aMule remote control Comment[de]=aMule-Fernsteuerung Comment[fr]=Contrôle à distance d'aMule Comment[hu]=aMule távoli vezérlő Comment[tr]=aMule uzaktan kumandası amule_2.3.1+git20151120.0023527bc2.orig/amulegui.xpm0000644000175000017500000002366412611472361020054 0ustar morphmorph/* XPM */ static const char *amule[]={ "32 32 496 2", "Qt c None", ".i c #75777a", "eQ c #d2dfed", ".h c #83878c", ".A c #c8cacc", "f# c #c8daf1", ".# c #6f7377", "fO c #a9b8c9", "ft c #bfd9f7", "eB c #d5e4f3", ".j c #777b80", ".g c #7f8388", "ca c #612809", "fL c #cae1fd", ".B c #aab4bf", "bh c #777f89", "dG c #33373d", ".a c #737980", ".f c #6b7178", "d1 c #b0cbec", "eR c #b3cdee", "eh c #abc8eb", "dH c #acc9ec", "dp c #a6c4ea", "dc c #a9c8ed", ".k c #6f7780", "c1 c #a9c9f1", ".z c #899097", "cQ c #b2cdef", "cF c #cbdaec", "cs c #bed1e7", "a3 c #a4acb6", "fa c #c1d9f7", "cb c #b3c9e4", "aM c #819aba", "b2 c #a2bcdc", "ax c #8199b3", "bS c #b9cee8", ".e c #61676f", "aj c #8b949f", "bJ c #cfdff3", ".V c #707a86", "#5 c #818a94", "bv c #bed2ea", "#N c #7a8591", "bi c #b7cde7", "fu c #c3dcfb", "#w c #747f8c", "a4 c #b0c8e5", ".b c #717e8e", "aN c #aac3e2", "ay c #9ebadd", "fN c #a5bbd5", "ak c #abc4e4", "#6 c #b4cbe8", "#d c #647180", ".l c #727e8d", "#O c #a9c3e3", "#x c #a4bfe0", "#e c #a0bde1", ".W c #94b2d8", "fA c #91a8c2", ".d c #5c6672", "fM c #c9e0fd", ".c c #6d7f95", "eS c #b7d4f9", ".m c #728499", ".y c #455161", ".C c #778aa1", "fb c #bcd9fc", ".x c #556373", "fz c #86a0bf", "fv c #c1dcfd", ".n c #768eaa", "eC c #b1d2fa", "b1 c #6c819a", "bR c #6b7f98", "bI c #697e97", "bu c #667c97", "bg c #687d97", "a2 c #626c78", "aL c #58595b", ".w c #4d5c70", ".D c #758ead", "aw c #4d525a", "ai c #5b6572", ".U c #51657d", "#4 c #677c95", "#M c #657b95", "eT c #b6d6fe", "#v c #637992", "dC c #000000", "ar c #00cb58", "aG c #02de6d", "as c #166339", "ef c #171614", "aH c #1b814e", "ad c #313928", "d0 c #32373d", "dF c #32373e", "fG c #3f3330", "ah c #40464e", "dU c #414041", "dE c #45312a", ".t c #485e78", "a1 c #4a5057", "aI c #4b3655", "at c #4b4363", "ae c #4b4b48", ".u c #4b6079", "fK c #4e5257", ".v c #506178", "ag c #525558", ".T c #536f90", "a0 c #565c64", "fF c #572d16", "aX c #575254", "aq c #59827a", "dl c #5d2d0e", "aZ c #616164", "ac c #616166", "aY c #616568", "af c #625d5d", "cm c #632809", "aF c #636e6f", ".S c #637e9e", "c# c #642909", "fp c #64676b", "#c c #647a95", "fE c #652909", "aW c #656474", "#Y c #667992", "fD c #682b09", "#3 c #6888af", ".8 c #69819f", "#q c #6982a1", ".s c #6a88ac", "bf c #6a8db8", "ee c #6b6c6f", "#1 c #6b849d", "#u c #6b86a6", "#2 c #6c85a4", ".R c #6c88a9", "#G c #6c89ac", "#L c #6c89ad", "fH c #6d7072", "#t c #6d86a5", "ba c #6d8bad", "eZ c #6e310c", "## c #6e87a6", "#a c #6e88a6", "#. c #6e88a7", "c. c #6f7d94", ".9 c #6f88a7", "bC c #6f8aac", "bP c #6f8aad", "bo c #6f8bae", "dQ c #70320e", "#s c #7089a8", "#r c #708aa8", ".O c #708bab", "#K c #708cad", "b9 c #708cae", "ci c #708caf", "cx c #708db0", "cV c #708db1", "fg c #7091b7", "cl c #717e94", "#b c #718dae", "be c #718eb1", "c7 c #718eb2", "dh c #718fb3", "dv c #718fb4", "fi c #7190b7", ".Q c #728daf", "#J c #728eb0", "bH c #728fb2", "dO c #7290b4", "cL c #737f95", "d6 c #7390b5", "#I c #7391b4", "eo c #7391b6", "eF c #7392b6", "eW c #7392b7", "fy c #7392b8", "dx c #748198", "bG c #748eaf", "bQ c #748faf", "b0 c #7490b0", "bs c #7490b2", "bd c #7492b1", "bF c #7590b0", "br c #7592b3", "#H c #7594b9", "fh c #7594bb", "#0 c #7685a2", "bZ c #7691b1", "bE c #7691b2", "bD c #7691b3", "bt c #7694b9", "cM c #77380f", "bY c #7792b3", ".P c #7792b4", "bq c #7793b5", "ck c #7892b4", "c9 c #7893b4", "cj c #7893b5", "bp c #7893b7", "cy c #7894b6", "da c #793910", "bc c #798eb3", "cX c #7994b6", "cK c #7995b6", "cW c #7995b7", "c8 c #7a95b7", "di c #7a96b8", "d7 c #7a97b9", "#Z c #7b7999", "dw c #7b96b9", "dP c #7b97ba", "fm c #7c4d2d", "eY c #7c98ba", "ep c #7c98bb", "eX c #7c99bb", "bb c #7d8bb4", ".o c #7e9bbe", ".E c #809ec3", "fC c #833f14", ".7 c #84a3c9", "cP c #86461a", "#F c #86a4ca", "#p c #86a5cb", "fs c #878889", ".p c #87a9d3", ".F c #88abd6", "#X c #89aad1", ".N c #8babd2", "cY c #8e4a1a", "dD c #8e4d1e", "b# c #8eadd4", "bn c #8faed5", ".X c #8fb9ee", "bB c #90b0d6", "fP c #914c1b", "aJ c #916c3d", "bO c #91b0d7", "ab c #91b4de", "bX c #92b1d7", "b8 c #92b2d8", "aV c #92b7e0", "ch c #93b2d8", "fx c #93b5dd", ".G c #93baeb", "cw c #94b3d9", "d8 c #954e1d", "d. c #954f1d", "cJ c #95b4da", "c6 c #96b5db", "fB c #97511e", "fI c #979797", "aE c #97aadc", "dg c #97b6dc", "#7 c #97bff0", "au c #986d3c", "du c #98b7dc", "#P c #98c0f0", "ap c #99a4d9", "dN c #99b7dd", "d5 c #99b8dd", "#y c #99bfee", "cE c #9a5522", "en c #9ab8de", "db c #9b5724", "eE c #9bb9de", "eV c #9bb9df", "bK c #9bc6fa", "fl c #9c5420", "dT c #9c9691", "ff c #9cbbe0", "#f c #9cc1f0", "al c #9cc4f4", "bw c #9ec8fb", ".q c #9fc4f1", "bj c #9fc8fa", "fn c #a0a09e", "ez c #a0a09f", "aO c #a0c8f9", "a5 c #a0c8fa", "e4 c #a15821", "#g c #a1c6f3", "bT c #a1cafd", ".H c #a1cbfe", "az c #a2c8f8", "#z c #a3c7f5", "#h c #a3c9f6", "ct c #a3ccff", "#Q c #a4caf7", "cc c #a4cdff", "fj c #a55c25", "#i c #a5cbf9", "ei c #a5cefd", "dj c #a65d24", "fk c #a65d25", "#R c #a6ccfb", "cR c #a6cefe", "dV c #a7602a", "#A c #a7cdfb", "#j c #a7cdfc", "#8 c #a7cefd", "b3 c #a7cfff", "#S c #a8cefe", "#B c #a8cffe", "aP c #a8cfff", "#k c #a8d0ff", "c2 c #a9cffe", "#9 c #a9d0ff", ".Y c #a9d2ff", "ey c #aaaaa7", "dI c #aacffe", "dq c #aad0fe", ".2 c #aad1ff", "eq c #ab6026", ".3 c #abd1ff", "fT c #ac6328", ".4 c #acd1ff", "a6 c #acd2ff", "ev c #ad6228", "#l c #add1ff", "#m c #add2ff", "b4 c #add3ff", ".1 c #add4ff", "cr c #ae6227", "c0 c #ae6327", "#C c #aed2ff", ".Z c #aed7ff", ".I c #aed9ff", "bL c #afd2ff", "#T c #afd3ff", ".0 c #afd7ff", "aQ c #b0d3ff", "#U c #b0d4ff", "a. c #b1d4ff", "dr c #b1d5ff", "bx c #b2d4ff", "am c #b2d5ff", "eg c #b3b3b0", "fJ c #b3b3b2", "a7 c #b3d5ff", "aA c #b3d6ff", "eu c #b4682c", "aB c #b4d5ff", "aR c #b4d6ff", "ej c #b4d7ff", "e0 c #b5682a", "do c #b56f36", "aS c #b5d6ff", "d2 c #b5d7ff", ".r c #b5daff", "eK c #b67139", "e5 c #b68b67", "ex c #b6b6b0", "a8 c #b6d7ff", ".J c #b6e2ff", "cA c #b7692a", "bk c #b7d7ff", ".5 c #b7d8ff", "d# c #b86b2c", "cd c #b8d7ff", "by c #b8d8ff", ".K c #b8e1ff", "bU c #b9d8ff", "#n c #b9d9ff", "e3 c #ba6c2c", "b5 c #bad9ff", "ce c #bbd9ff", "#D c #bbdaff", "cG c #bcdaff", "#V c #bcdbff", "eJ c #bd6f2e", "dZ c #bdbdb6", "cT c #bddaff", "cS c #bddbff", "ew c #be7d3f", "c3 c #bedbff", "a# c #bedcff", "av c #bf5700", "dd c #bfdcff", "an c #bfddff", "dy c #c0712f", "dJ c #c0dcff", "dK c #c0ddff", ".L c #c0e3ff", "d3 c #c1dcff", "aC c #c1ddff", "eb c #c27739", "eD c #c2ddff", "ek c #c2deff", "fQ c #c37a31", "aT c #c3deff", "fc c #c3dfff", "a9 c #c4dfff", "bl c #c5dfff", "dk c #c67530", "ec c #c68338", "bz c #c6e0ff", "cz c #c77631", "e2 c #c77731", "bM c #c7e0ff", ".6 c #c7e4ff", "bV c #c8e1ff", "e6 c #c9c2b9", "b6 c #c9e2ff", "e# c #ca7b38", "fo c #cacac6", "cf c #cae2ff", "#o c #cae6ff", "cu c #cbe3ff", "fq c #ccccc7", "cH c #cce3ff", "#E c #cce7ff", ".M c #cce9ff", "eG c #cd813f", "ed c #cdae80", "c4 c #cde3ff", "fw c #cde4ff", "cq c #ce8240", "de c #cee4ff", "ds c #cee5ff", "dR c #cf874a", "dL c #cfe5ff", "#W c #cfe9ff", "d4 c #d0e6ff", "cp c #d18849", "el c #d1e6ff", "eU c #d2e6ff", "aa c #d2ebff", "cn c #d38b4b", "cD c #d38e52", "fS c #d48c38", "cZ c #d48d4e", "er c #d48e4f", "ea c #d49259", "dW c #d4b595", "eL c #d4cdc2", "fd c #d4e8ff", "ao c #d5ecff", "e. c #d79453", "cO c #d7995a", "e1 c #d89c47", "dz c #d89f6e", "aD c #d8eeff", "eH c #d99a61", "eI c #dba06b", "aU c #dbf0ff", "d9 c #dca25c", "co c #dca36c", "dB c #dcd6d1", "e7 c #dcdcda", "aK c #de7000", "dm c #deaa7d", "fr c #dfdfdb", "b. c #dff2ff", "cN c #e1af7c", "et c #e1b17e", "bm c #e1f3ff", "eA c #e3e3e0", "bA c #e3f4ff", "fR c #e49c3f", "cC c #e4b886", "dX c #e5dcd2", "bN c #e6f5ff", "f. c #e7e7e5", "bW c #e8f7ff", "eM c #e9e9e6", "e8 c #e9e9e7", "b7 c #e9f7ff", "cB c #ebc999", "cg c #ecf9ff", "dn c #edcfb5", "eP c #eeeeec", "cv c #eefaff", "es c #efd5a7", "e9 c #efefee", "cI c #f0fbff", "cU c #f1fcff", "dY c #f2f2f1", "c5 c #f2fcff", "df c #f3fdff", "dt c #f4fdff", "dM c #f5feff", "dS c #f6e7da", "em c #f6feff", "eN c #f7f7f6", "fe c #f8ffff", "eO c #f9f9f9", "dA c #ffffff", "QtQtQtQtQtQtQtQt.#.a.b.c.d.e.f.g.hQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQt.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.AQtQtQtQtQtQtQtQtQtQtQt", ".B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.VQtQtQtQtQtQtQtQtQtQtQt", ".W.X.Y.Z.0.1.2.2.3.4.5.6.7.8.9#.###a#b#c#dQtQtQtQtQtQtQtQtQtQtQt", "#e#f#g#h#i#j#k.2#l#m#n#o#p#q#r#s###t#u#v#wQtQtQtQtQtQtQtQtQtQtQt", "#x#y#z#i#A#B.2.4#C#C#D#E#F#G#H#I#J#K#L#M#NQtQtQtQtQtQtQtQtQtQtQt", "#O#P#Q#R#S.2.3#m#T#U#V#W#X#Y#Z#0#1#2#3#4#5QtQtQtQtQtQtQtQtQtQtQt", "#6#7#i#8#9.3#m#Ca.a.a#aaabacadaeafagahaiajQtQtQtQtQtQtQtQtQtQtQt", "akal#R#9.3#m#C#TamamanaoapaqarasatauavawaxQtQtQtQtQtQtQtQtQtQtQt", "ayaz#8.2.3#C#Ta.aAaBaCaDaEaFaGaHaIaJaKaLaMQtQtQtQtQtQtQtQtQtQtQt", "aNaOaP.3#m#TaQamaRaSaTaUaVaWaXaYaZa0a1a2a3QtQtQtQtQtQtQtQtQtQtQt", "a4a5#9a6#CaQama7a8a8a9b.b#babbbcbdbebfbgbhQtQtQtQtQtQtQtQtQtQtQt", "bibj.2#m#Ta.a7aRa8bkblbmbnbobpbqbrbsbtbubhQtQtQtQtQtQtQtQtQtQtQt", "bvbw.2#C#TbxaAaSbkbybzbAbBbCbDbEbFbGbHbIbhQtQtQtQtQtQtQtQtQtQtQt", "bJbK.2bLaQamaRa8bybybMbNbObP.PbEbFbQbHbRbhQtQtQtQtQtQtQtQtQtQtQt", "bSbTa6#Ta.a7aSa8bU#nbVbWbXbo.PbYbZb0bHb1bhQtQtQtQtQtQtQtQtQtQtQt", "b2b3b4aQamaAaSbkb5b5b6b7b8b9.P.PbEbFc.c#c#c#Qtcac#c#c#c#c#c#c#ca", "cbccb4a.amaRa8cdce#DcfcgchcicjckbEclcmcnc#Qtc#c#cocpcqcqcrc#caQt", "csctb4a.a7aSbkbU#D#DcucvcwcxcycjbYc#czcAc#c#cBcCcDcqcEc#c#caQtQt", "cF.Hb4amaRa8byb5#VcGcHcIcJcxcKcjcLcmcAcMcqcNcOcpcPc#c#caQtQtQtQt", "cQcR#TamaRbkbUcecScTcHcUcJcVcWcXc#c#cYcqcZcqc0c#caQtQtQtQtQtQtQt", "c1c2#Ua7a8bk#n#Dc3c3c4c5c6c7c8cXc9c#d.d#c0c0dadbc#caQtQtQtQtQtQt", "dcc2a.aRa8byb5cGdddddedfdgdhdicWc#c#djd#dkdldmdndoc#caQtQtQtQtQt", "dpdqdraSbkbU#DcSdddddsdtdudvdwdidxc#d#dydkdzdAdBdCdDc#dEdFdFdGQt", "dHdIdraSbk#n#DcSdJdKdLdMdNdOdPdic#dQczcqczdRdSdTdUdVdWdXdYdZd0dG", "d1dqamd2byb5#Vc3d3aCd4dMd5d6dPd7c#d8cZd9e.e#dReaebecedeeefdYegdF", "eheieja8byb5cSddaCekelemeneoepdPc#eqeresetcZe#euevewexeyezdYeAdF", "eBeC#9ej#ncGcSddeDekelemeEeFepdPc#d.eGeHeIcZe#eJeveKeLeMeNeOePdF", "QteQeReSeT.5#VaCaTaTeUemeVeWeXeYc#eZe0eGeGe1e2e3e4e5e6e7e8e9f.dF", "QtQtQtQtf#fafbcGanfcfdfefffgfhfic#dac#fjfjfkfjflfmfnfofpfqfrfsdF", "QtQtQtQtQtQtQtftfufvfwcUfxfyfzfAeZcYfBfCfDfEfFfGdFfHfIfJfKdFdFdG", "QtQtQtQtQtQtQtQtQtQtfLfMfNfOQtQteZfPfQfRfSfTfEQtdGdFdFdFdFdGQtQt"}; amule_2.3.1+git20151120.0023527bc2.orig/autogen.sh0000755000175000017500000000566012611472361017513 0ustar morphmorph#!/bin/sh # Helps bootstrapping 'aMule' when checked out from the source control system. # Requires GNU autoconf, GNU automake and GNU which. WANT_AUTOMAKE="1.7" export WANT_AUTOMAKE (autoconf --version) >/dev/null 2>/dev/null || (echo "You need GNU autoconf to install from sources (ftp://ftp.gnu.org/gnu/autoconf/)"; exit 1) || exit 1 (automake --version) >/dev/null 2>/dev/null || (echo "You need GNU automake 1.7 to install from sources (ftp://ftp.gnu.org/gnu/automake/)"; exit 1) || exit 1 # Do sanity checks. # Directory check. if [ ! -e src/SharedFileList.h ]; then echo "Run ./autogen.sh from the base directory of aMule." exit 1 fi # Determine the version of automake. automake_version=`automake --version | head -n 1 | sed -e 's/[^12]*\([12]\.[0-9]+[^ ]*\).*/\1/'` # Require automake 1.7. if expr "1.7" \> "$automake_version" >/dev/null; then automake --version | head -n 1 echo "Fatal error: automake version 1.7 or higher is required." exit 1 fi # Determine version of gettext. gettext_version=`gettext --version | head -n 1 | sed -e 's/[^0]*\(0\.[0-9][^ ]*\).*/\1/'` confver=`cat configure.in | grep '^AM_GNU_GETTEXT_VERSION(' | sed -e 's/^AM_GNU_GETTEXT_VERSION(\([^()]*\))/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q` # Require version as specified in configure.in. if expr "$confver" \> "$gettext_version" >/dev/null; then gettext --version | head -n 1 echo "Fatal error: gettext version "$confver" or higher is required." exit 1 fi # Force intl regenration to get last update from installed gettext templates rm -rf intl/* #if [ ! -d intl ]; then echo "Setting up internationalization files." autopoint --force if grep -q datarootdir po/Makefile.in.in; then echo autopoint honors dataroot variable, not patching. else echo autopoint does not honor dataroot variable, patching. sed -e '/^datadir *=/a\ datarootdir = @datarootdir@' po/Makefile.in.in > po/Makefile.in.in.tmp && mv -f po/Makefile.in.in.tmp po/Makefile.in.in sed -e '/^datadir *=/a\ datarootdir = @datarootdir@' intl/Makefile.in > intl/Makefile.in.tmp && mv -f intl/Makefile.in.tmp intl/Makefile.in fi UNAME=`uname` if [ x$UNAME = x"Darwin" ]; then echo Not patching po/Makefile.in.in - sed is too old. else sed -e '/^clean:/a\ rm -f *.gmo' po/Makefile.in.in > po/Makefile.in.in.tmp && mv -f po/Makefile.in.in.tmp po/Makefile.in.in fi # if [ -f Makefile -a -x config.status ]; then # CONFIG_FILES=intl/Makefile CONFIG_HEADERS= /bin/sh ./config.status # fi # gettextize --intl -f --no-changelog # echo "restoring Makefile.am and configure.in" # cp -f Makefile.am~ Makefile.am # cp -f configure.in~ configure.in #fi echo "Running aclocal -I m4" aclocal -I m4 echo "Running autoheader" autoheader echo "Running autoconf" autoconf echo "Creating pixmaps Makefile.am" OLDPWD="`pwd`" cd src/pixmaps/flags_xpm ./makeflags.sh cd "$OLDPWD" echo "Running automake --foreign -a -c -f" automake --foreign -a -c -f amule_2.3.1+git20151120.0023527bc2.orig/automake/0000755000175000017500000000000012611472361017311 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/automake/dist-hook.am0000644000175000017500000000054612611472361021536 0ustar morphmorphdist-hook: test -z "$(EXTRA__DIST__SUBDIRS)" || \ for d in $(EXTRA__DIST__SUBDIRS) ; do \ mkdir $(distdir)/$$d ; \ for f in `find $(srcdir)/$$d -name '.svn' -prune -o -printf "%P\n"` ; do \ if test -d $(srcdir)/$$d/$$f ; then \ mkdir $(distdir)/$$d/$$f ; \ else \ cp -p $(srcdir)/$$d/$$f $(distdir)/$$d/$$f ; \ fi ; \ done ; \ done amule_2.3.1+git20151120.0023527bc2.orig/automake/manpages.am0000644000175000017500000000305112611472361021422 0ustar morphmorphinstall-data-hook: @test -z "`echo $(SELECTED_MANPAGES)`" || \ for file in $(SELECTED_MANPAGES); do \ lang=`echo $$file | sed -e 's/^[^.]*\.//'`; \ if test $$lang = 1; then \ echo " $(mkinstalldirs) $(DESTDIR)$(mandir)/man1" ; \ $(mkinstalldirs) $(DESTDIR)$(mandir)/man1 ; \ if test -f $(srcdir)/$$file; then name=$(srcdir)/$$file; \ else name=$$file; fi; \ inst=`echo $$file | sed -e "s/\.1//" -e '$(transform)'`.1 ; \ echo " $(INSTALL_DATA) $$name $(DESTDIR)$(mandir)/man1/$$inst" ; \ $(INSTALL_DATA) $$name $(DESTDIR)$(mandir)/man1/$$inst ; \ else \ locale=`echo $$lang | sed -e 's/\..*//'` ; \ echo " $(mkinstalldirs) $(DESTDIR)$(mandir)/$$locale/man1" ; \ $(mkinstalldirs) $(DESTDIR)$(mandir)/$$locale/man1 ; \ if test -f $(srcdir)/$$file; then name=$(srcdir)/$$file; \ else name=$$file; fi; \ inst=`echo $$file | sed -e "s/\.$${locale}\.1//" -e '$(transform)'`.1 ; \ echo " $(INSTALL_DATA) $$name $(DESTDIR)$(mandir)/$$locale/man1/$$inst" ; \ $(INSTALL_DATA) $$name $(DESTDIR)$(mandir)/$$locale/man1/$$inst ; \ fi; \ done uninstall-hook: @test -z "`echo $(SELECTED_MANPAGES)`" || \ for file in $(SELECTED_MANPAGES); do \ lang=`echo $$file | sed -e 's/^[^.]*\.//'`; \ if test $$lang = 1; then \ inst=`echo $$file | sed -e "s/\.1//" -e '$(transform)'`.1 ; \ rm -f $(DESTDIR)$(mandir)/man1/$$inst ; \ else \ locale=`echo $$lang | sed -e 's/\..*//'` ; \ inst=`echo $$file | sed -e "s/\.$${locale}\.1//" -e '$(transform)'`.1 ; \ rm -f $(DESTDIR)$(mandir)/$$locale/man1/$$inst ; \ fi; \ done amule_2.3.1+git20151120.0023527bc2.orig/configure.in0000644000175000017500000005425012611472361020022 0ustar morphmorph# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. # # This file is part of the aMule Project. # # Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # AC_INIT([aMule],[SVN],[admin@amule.org]) AM_INIT_AUTOMAKE m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES]) AC_PREREQ(2.59) AC_CONFIG_SRCDIR([src/amule.cpp]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) AM_MAINTAINER_MODE dnl Check host system. MULE_CHECK_SYSTEM dnl Checks for programs. dnl Workaround for these checks may alter CFLAGS and CXXFLAGS, especially if they were empty MULE_BACKUP([CFLAGS]) MULE_BACKUP([CXXFLAGS]) MULE_BACKUP([BUILD_CFLAGS]) AC_PROG_CXX AC_PROG_CXXCPP AC_PROG_CC AC_PROG_CPP AS_IF([test "$cross_compiling" = yes], [AC_PROG_BUILD_CC], [BUILD_CC="$CC" ; BUILD_EXEEXT=$EXEEXT]) MULE_RESTORE([CFLAGS]) MULE_RESTORE([CXXFLAGS]) MULE_RESTORE([BUILD_CFLAGS]) AC_PROG_AWK AC_PROG_EGREP AC_PROG_MAKE_SET AC_PROG_LEX AC_PROG_INSTALL AC_PROG_RANLIB AC_PROG_SED AC_PROG_YACC dnl Find the right ranlib, even when cross-compiling dnl And for some other tools for cross compilation AC_CHECK_TOOL(RANLIB, ranlib) AC_CHECK_TOOL(STRIP, strip) AC_CHECK_TOOL(AR, ar) AC_CHECK_TOOL(LD, ld) dnl Selectable components MULE_ARG_ENABLE([monolithic], [yes], [disable building of the monolithic aMule app], [MONOLITHIC]) MULE_ARG_ENABLE([amule-daemon], [no], [compile aMule daemon version], [AMULE_DAEMON]) MULE_ARG_ENABLE([amulecmd], [no], [compile aMule command line client], [COMPILE_CMD]) MULE_ARG_ENABLE([webserver], [no], [compile aMule WebServer], [WEB]) MULE_ARG_ENABLE([amule-gui], [no], [compile aMule remote GUI], [AMULE_GUI]) MULE_ARG_ENABLE([cas], [no], [compile C aMule Statistics], [CAS]) MULE_ARG_ENABLE([wxcas], [no], [compile aMule GUI Statistics], [WXCAS]) MULE_ARG_ENABLE([ed2k], [yes], [don't compile aMule ed2k links handler], [ED2K]) MULE_ARG_ENABLE([alc], [no], [compile aMuleLinkCreator GUI version], [ALC]) MULE_ARG_ENABLE([alcc], [no], [compile aMuleLinkCreator for console], [ALCC]) MULE_ARG_ENABLE([xas], [no], [install xas XChat2 plugin], [XAS]) MULE_ARG_ENABLE([fileview], [no], [compile aMule file viewer for console (EXPERIMENTAL)], [FILEVIEW]) MULE_ARG_ENABLE([plasmamule], [no], [compile aMule plasma applet and engine]) # Run all the tests with static linkage if we want a statically linked binary MULE_ARG_ENABLE([static], [no], [produce a statically linked executable]) MULE_IF_ENABLED([static], [MULE_APPEND([LDFLAGS], [-static])]) KDE_CONFIG_OPTIONS QT_CONFIG_OPTIONS # Default is yes, because they're most likely compatible. # However, this is only used when cross-compiling. AC_ARG_WITH( [gnu-malloc], [AS_HELP_STRING([--without-gnu-malloc], [Don't assume that we use GNU libc compatible malloc/realloc when cross-compiling])], [gnumalloc=$withval], [gnumalloc=yes]) # Checking for libs before all other stuff to break # configure as soon as possible in case of a missing one # to avoid losing too much time # Check for gd MULE_IF_ENABLED([cas], [ MULE_CHECK_GDLIB([2.0.0], [ CAS_DEFS="-D__GD__" MULE_PREPEND([GDLIB_LIBS], [-lgd]) ], [CAS_DEFS=]) AS_IF([test -z "$CAS_DEFS"], [MULE_WARNING( [gd-lib >= 2.0.0, or a functional gd.h (from gd-devel) not found. Please check that gdlib-config is in your default path, check out LD_LIBRARY_PATH or equivalent variable. Or this might also be that your gdlib-config has other name. Please try again with --with-gdlib-config=/usr/bin/gdlib-config (replace /usr/bin/gdlib-config with a valid path to your gdlib-config). If you use compiled packages check if you have devel pack installed. To download the latest version check http://www.boutell.com/gd for sources.])]) ]) AC_SUBST([CAS_DEFS])dnl dnl Tests explicitly requiring C. They test features of the C compiler. AC_HEADER_STDBOOL AC_C_CONST AC_C_INLINE AC_C_VOLATILE dnl Use C++ for all other tests, since we use C++ to actually compile the dnl sources. There might be differences between the compilers, thus if dnl something works in C it doesn't automatically mean it also works in C++. dnl dnl The only exception is cas which is written in pure C. AC_LANG_PUSH([C++]) # Check for zlib MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amulecmd, webserver, amule-gui], [MULE_CHECK_ZLIB([1.1.4],, [AC_MSG_ERROR([zlib >= 1.1.4 is required for aMule])])]) # Check for libpng MULE_IF_ENABLED([webserver], [MULE_CHECK_LIBPNG([1.2.0], [AMULEWEB_DEFS="-DWITH_LIBPNG"], [ MULE_WARNING( [libpng >= 1.2.0 not found. amuleweb will be compiled but file download progress bar images will NOT be generated.]) ]) ]) AC_SUBST([AMULEWEB_DEFS])dnl # Check for perl File::Copy AC_MSG_CHECKING([for File::Copy]) AS_IF([perl -e "require File::Copy" 2>/dev/null], [AC_MSG_RESULT([ok])], [MULE_WARNING( [File::Copy perl module is required by the mldonkey_importer script. If you want to use this script please install File::Copy from CPAN.])]) # Check for GeoIP (required for IP2Country capability) MULE_IF_ENABLED_ANY([monolithic, amule-gui], [MULE_CHECK_GEOIP]) # Check for wx MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, amulecmd, webserver, alc, alcc, wxcas, fileview], [WX_CONFIG_OPTIONS WX_STANDARD_OPTIONS([toolkit,wxshared,wxdebug,wxversion]) # Force using a static wxWidgets library if the executable is to be linked statically. MULE_IF_ENABLED([static], [WX_SHARED=0]) # Force using a unicode build of the library MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, amulecmd, webserver, fileview], [WX_UNICODE=1]) DEBUG=$WX_DEBUG WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS WX_CONFIG_CHECK([2.8.12], [wxWin=1],,, [$WXCONFIG_FLAGS]) AS_IF([test "$wxWin" != 1], [AC_MSG_ERROR([ wxWidgets must be installed on your system but wx-config script couldn't be found. Please check that wx-config is in path or specified by --with-wx-config=path flag, the directory where wxWidgets libraries are installed (returned by 'wx-config --libs' command) is in LD_LIBRARY_PATH or equivalent variable and wxWidgets version is 2.8.12 or above. ])] ) AS_IF([test "${WX_VERSION_FULL}" = "2.9.0"], [AC_MSG_ERROR([ This version of wxWidgets is known to not work with aMule. Please upgrade to a newer version.] )] ) WX_DETECT_STANDARD_OPTION_VALUES # We also need wxBase WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs adv,core,net` WXBASE_LIBS=`$WX_CONFIG_WITH_ARGS --libs net` WXBASE_CPPFLAGS="$WX_CPPFLAGS -DwxUSE_GUI=0" MULERCFLAGS=`$WX_CONFIG_WITH_ARGS --cflags | $AWK ['{ for (i = 1; i <= NF; i++) if (index($i, "-I") != 1 && index($i, "-D") != 1) $i = ""; print }']` ]) AC_SUBST([WXBASE_LIBS])dnl AC_SUBST([WXBASE_CPPFLAGS])dnl MULE_IF_ENABLED_ANY([monolithic, amule-gui, wxcas, alc], [AS_IF([test "${WX_PORT}" = base], [AC_MSG_ERROR([ The selected components need a wxWidgets library with GUI, but your installation is base-only. Please install a GUI enabled version of wxWidgets and then retry. ])] )]) dnl Resource compiler for W32 AC_ARG_VAR([RC], [Resource Compiler])dnl AC_ARG_VAR([RCFLAGS], [Resource Compiler Flags])dnl AS_IF([test ${SYS:-unknown} = win32], [AC_CHECK_TOOL([RC], [windres], [:])]) # Check for libupnp MULE_ARG_ENABLE([upnp], [yes], [do not compile UPnP code]) MULE_IF_ENABLED_ANY([monolithic, amule-daemon],, [MULE_ENABLEVAR([upnp])=no]) MULE_IF_ENABLED([upnp], [ LIBUPNP_CHECK( [1.6.6], [MULE_APPEND([LIBUPNP_CPPFLAGS], [-DENABLE_UPNP=1])], [MULE_ENABLEVAR([upnp])=disabled MULE_WARNING([UPnP code has been disabled because ${libupnp_error}.])] ) ])dnl # Check for Crypto++ MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, fileview], [MULE_CHECK_CRYPTOPP([5.1], [ # Check for CryptoPP >= 5.5 AS_IF([test $CRYPTOPP_VERSION_NUMBER -ge "5005000"], [MULE_APPEND([CRYPTOPP_CPPFLAGS], [-D__WEAK_CRYPTO__])]) ], [ AC_MSG_ERROR([ Could not find crypto++ header file "$cryptopp_file_with_version". Please try again with --with-crypto-prefix=/my_crypto_prefix (replace /my_crypto_prefix with a valid path to your crypto++ installation directory).]) ])]) MULE_COMPILATION_FLAGS dnl Checks explicitly requiring C++ MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, amulecmd, webserver, ed2k, alc, alcc, wxcas, fileview], [ dnl MULE_CHECK_GLIBCXX MULE_CHECK_STRICT_ALIASING MULE_IF_ENABLED_ANY([monolithic, amule-daemon, alc, alcc], [MULE_CHECK_WX_SUPPORTS_LARGEFILE]) # Check if the compiler is broken, wrt. exceptions. MULE_CHECK_EXCEPTIONS MULE_CHECK_CXXABI MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, amulecmd, webserver], [MULE_CHECK_BOOST([1.47])]) ]) # Ok, we have all needed libs, now checking for other stuff AS_IF([test "$LEX" = "flex"], [MULE_CHECK_FLEX_EXTENDED], [HAVE_FLEX_EXTENDED=no]) # Checks for header files. AC_FUNC_ALLOCA AC_HEADER_DIRENT AC_HEADER_STDC AC_CHECK_HEADERS([argz.h arpa/inet.h errno.h fcntl.h inttypes.h langinfo.h libintl.h limits.h locale.h malloc.h mntent.h netdb.h netinet/in.h stddef.h nl_types.h signal.h stdint.h stdio_ext.h stdlib.h string.h strings.h sys/ioctl.h sys/mntent.h sys/mnttab.h sys/mount.h sys/param.h sys/resource.h sys/select.h sys/socket.h sys/statvfs.h sys/time.h sys/timeb.h sys/types.h unistd.h]) AC_HEADER_SYS_WAIT # Checks for typedefs, structures, and compiler characteristics. AC_TYPE_MODE_T AC_TYPE_OFF_T AC_TYPE_SIZE_T AC_HEADER_TIME AC_STRUCT_TM AC_TYPE_UID_T AC_CHECK_TYPES([ptrdiff_t]) # Checks for library functions. AC_FUNC_CLOSEDIR_VOID AC_PROG_GCC_TRADITIONAL AC_FUNC_FORK AS_IF([test x$SYS != xwin32], [ AC_FUNC_GETMNTENT AC_FUNC_LSTAT AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK ]) AC_FUNC_MEMCMP AC_FUNC_SELECT_ARGTYPES AC_FUNC_SETVBUF_REVERSED AC_TYPE_SIGNAL AC_FUNC_STAT AC_FUNC_STRFTIME AC_FUNC_STRTOD AC_FUNC_VPRINTF dnl Some other functions that worth checking deeper: dnl AC_FUNC_CLOSEDIR_VOID dnl AC_FUNC_MEMCMP dnl AC_FUNC_MMAP dnl AC_FUNC_STAT dnl AC_FUNC_STRTOD dnl AC_FUNC_SETVBUF_REVERSED dnl Anyways, do we actually USE them? AS_IF([test $cross_compiling = yes -a $gnumalloc = yes], [ MULE_WARNING([configure cannot check whether malloc() and realloc() are GNU libc compatible. You have to be ABSOLUTELY sure that they are, otherwise run configure with the --without-gnu-malloc switch.]) ac_cv_func_malloc_0_nonnull=yes ac_cv_func_realloc_0_nonnull=yes ]) AC_FUNC_MALLOC AC_FUNC_REALLOC AC_CHECK_FUNCS([__argz_count __argz_next __argz_stringify endpwent floor ftruncate getcwd gethostbyaddr gethostbyname gethostname getopt_long getpass getrlimit gettimeofday inet_ntoa localeconv memmove mempcpy memset mkdir nl_langinfo pow select setlocale setrlimit sigaction socket sqrt stpcpy strcasecmp strchr strcspn strdup strerror strncasecmp strstr strtoul]) dnl This must be *before* MULE_CHECK_NLS MULE_IF_ENABLED_ANY([monolithic, amule-daemon], [MULE_CHECK_MMAP]) # Look for a way to preallocate disk space for files. MULE_IF_ENABLED_ANY([monolithic, amule-daemon], [MULE_CHECK_FALLOCATE]) dnl Use the C compiler for the gettext library checks AC_LANG_POP([C++]) # Checking Native Language Support dnl Sets gettext version. dnl AM_GNU_GETTEXT_VERSION *must not* be moved away from configure.in! AM_GNU_GETTEXT_VERSION(0.11.5) MULE_CHECK_NLS AC_LANG_PUSH([C++]) # Check for bfd.h (to have proper backtraces without using wxExecute) dnl This must be *after* MULE_CHECK_NLS MULE_CHECK_BFD MULE_CHECK_EXECINFO # aMule plasma widget MULE_IF_ENABLED([plasmamule], [PLASMAMULE_CHECKS]) # Check for readline library MULE_IF_ENABLED_ANY([amulecmd, webserver], [VL_LIB_READLINE]) dnl Tests that should be run in C mode. These tests either test features of the dnl C compiler or their results will be used in C sources only. AC_LANG_POP([C++]) # Check for strerror_r MULE_BACKUP([CPPFLAGS]) MULE_APPEND([CPPFLAGS], [-D_XOPEN_SOURCE=600]) AC_FUNC_STRERROR_R MULE_RESTORE([CPPFLAGS]) # Other tests # autoconf >= 2.60 already defines ${docdir}, but we always need it. AC_MSG_CHECKING([for docdir]) AS_IF([test -z "$docdir"], [docdir="${datadir}/doc/${PACKAGE_NAME}-${PACKAGE_VERSION}"]) AC_SUBST([docdir])dnl AC_MSG_RESULT([$docdir]) # Try to set the SVN checkout-date AC_MSG_CHECKING([for SVNDATE]) modified= MULE_IF( dnl SVNDATE for tarballs [test -f "$srcdir/.svn-revision"], [svndate="rev. `cat $srcdir/.svn-revision`"], dnl SVNDATE for Subversion checkouts [test -d "$srcdir"/.svn], [svndate="rev. `svnversion "$srcdir" | ${SED} -e 'h;s/[[0-9]][[0-9]]*:\(.*\)/\1/;s/\([[0-9]][[0-9]]*\).*/\1/;x;/.*M.*/{x;s/$/+/;b;};x'`"], dnl SVNDATE for git/git-svn clones [test -d "$srcdir"/.git], [ git_revision=`git --git-dir="$srcdir"/.git log --max-count=1 --pretty='tformat:%h'` if test -n "`git --git-dir="$srcdir"/.git --work-tree="$srcdir" status --porcelain --untracked-files=no`" ; then modified="+" fi if test -f $srcdir/.git/svn/.metadata ; then git_sha=`git --git-dir="$srcdir"/.git log --max-count=1 --pretty='tformat:%H'` svndate=`git --git-dir="$srcdir"/.git rev-list ${git_sha} | while read sha; do svn_revision=\`git --git-dir="$srcdir"/.git svn find-rev \${sha}\` if test -n "\${svn_revision}" ; then if test \${sha} = ${git_sha} ; then echo "rev. \${svn_revision}${modified}" else echo "rev. \${svn_revision}+g${git_revision}${modified}" fi break fi done` else svndate="rev. g${git_revision}${modified}" fi ], dnl SVNDATE for mercurial/hgsubversion clones [test -d "$srcdir"/.hg], [ hg_revision=`hg --cwd "$srcdir" identify --id` hg_revid=${hg_revision%+} if test ${hg_revision} != ${hg_revid} ; then modified="+" fi if test -f "$srcdir"/.hg/svn/uuid ; then svndate=`hg --cwd "$srcdir" log --follow --template='r{svnrev} {node|short}\n' | while read svn_revision hg_sha; do if test \${svn_revision} != r ; then if test \${hg_sha} = ${hg_revid} ; then echo "rev. \${svn_revision#r}${modified}" else echo "rev. \${svn_revision#r}+h${hg_revision}" fi break fi done` else svndate="rev. h${hg_revision}" fi ]) AC_MSG_RESULT(${svndate:-None required}) AS_IF([test -n "$svndate"], [ AC_DEFINE_UNQUOTED([SVNDATE], ["$svndate"], [The checkout date or svn revision number.]) MULE_ADDFLAG([RC], [-D__PRERELEASE__]) ]) AC_SUBST([SVNDATE], [$svndate])dnl dnl Set up the denoiser MULE_DENOISER # DO NOT MOVE UP... THERE'S A REASON TO BE HERE!! MULE_CHECK_CCACHE dnl --------------------------------------------------------------------------- dnl End of checks, now write the results and report dnl --------------------------------------------------------------------------- AM_CONDITIONAL(SYS_WIN32, test x$SYS = xwin32) AM_CONDITIONAL(NEED_RC, test x$SYS = xwin32 -a "$RC" != ":") AM_CONDITIONAL(NEED_CORESERVICES, test x$SYS = xdarwin) AM_CONDITIONAL(COMPILE_NLS, test x$USE_NLS = xyes) AM_CONDITIONAL(GENERATE_FLEX_HEADER, test x$HAVE_FLEX_EXTENDED = xyes) AM_CONDITIONAL(INSTALL_SKINS, test MULE_IS_ENABLED_ANY([monolithic, amule-gui])) AM_CONDITIONAL(PLASMAMULE, test MULE_IS_ENABLED([plasmamule])) AM_CONDITIONAL([COMPILE_LIB_COMMON], [test MULE_IS_ENABLED_ANY([monolithic, amule-daemon, amulecmd, webserver, amule-gui, fileview])]) AM_CONDITIONAL([COMPILE_LIB_EC], [test MULE_IS_ENABLED_ANY([monolithic, amule-daemon, amulecmd, webserver, amule-gui])]) dnl Generate the Makefiles AC_CONFIG_FILES([Makefile docs/Makefile docs/man/Makefile intl/Makefile po/Makefile.in src/Makefile src/pixmaps/Makefile src/pixmaps/flags_xpm/Makefile src/libs/Makefile src/libs/ec/Makefile src/libs/ec/cpp/Makefile src/libs/common/Makefile src/utils/Makefile src/utils/aLinkCreator/Makefile src/utils/aLinkCreator/docs/Makefile src/utils/aLinkCreator/src/Makefile src/utils/cas/Makefile src/utils/cas/docs/Makefile src/utils/fileview/Makefile src/utils/plasmamule/Makefile src/utils/wxCas/Makefile src/utils/wxCas/docs/Makefile src/utils/wxCas/src/Makefile src/utils/xas/Makefile src/utils/xas/autostart-xas src/utils/xas/docs/Makefile src/skins/Makefile src/webserver/Makefile src/webserver/src/Makefile src/webserver/default/Makefile unittests/Makefile unittests/muleunit/Makefile unittests/tests/Makefile]) AS_IF([test x$SYS = xwin32], [AC_CONFIG_FILES([version.rc])]) AC_OUTPUT AS_IF([test -n "$svndate"], [SVN_REVISION=" ($svndate)"], [SVN_REVISION=]) echo echo echo " Configure script has finished system check." echo echo " Configured aMule ${PACKAGE_VERSION}${SVN_REVISION} for '${host}'." echo echo " aMule enabled options:" echo echo " **** aMule Core ****" echo " Prefix where aMule should be installed? ${prefix:-none}" echo " Should aMule be compiled with i18n support? ${USE_NLS:-no}" echo " Should aMule be compiled in debug mode? MULE_STATUSOF([debug])" echo " Should aMule be compiled with profiling? MULE_STATUSOF([profile])" echo " Should aMule be compiled with optimizations? MULE_STATUSOF([optimize])" echo " Should aMule be compiled with UPnP support? MULE_STATUSOF([upnp])" echo " Should aMule be compiled with IP2country support? MULE_STATUSOF([geoip])" echo " Should aMule monolithic application be built? MULE_STATUSOF([monolithic])" echo " Should aMule daemon version be built? MULE_STATUSOF([amule-daemon])" echo " Should aMule remote gui be built? MULE_STATUSOF([amule-gui])" echo " Crypto++ library/headers style? ${CRYPTOPP_STYLE:-not found}" echo echo " **** aMule TextClient ****" echo " Should aMule Command Line Client be built? MULE_STATUSOF([amulecmd])" echo echo " **** aMule WebServer ****" echo " Should aMule WebServer be built? MULE_STATUSOF([webserver])" echo echo " **** aMule ED2K Links Handler ****" echo " Should aMule ED2K Links Handler be built? MULE_STATUSOF([ed2k])" echo echo " **** aMuleLinkCreator ****" echo " Should aMuleLinkCreator GUI version (alc) be built? MULE_STATUSOF([alc])" echo " Should aMuleLinkCreator for console (alcc) be built? MULE_STATUSOF([alcc])" echo echo " **** aMule Statistics ****" echo " Should C aMule Statistics (CAS) be built? MULE_STATUSOF([cas])" echo " Should aMule GUI Statistics (wxCas) be built? MULE_STATUSOF([wxcas])" echo " Should xas XChat2 plugin be installed? MULE_STATUSOF([xas])" echo " Should plasmaMule plasma-applet be build? MULE_STATUSOF([plasmamule])" echo echo " **** General Libraries and Tools ****" echo " Should ccache support be enabled? MULE_STATUSOF([ccache])" echo " Libraries aMule will use to build:" MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, amulecmd, webserver, alc, alcc, wxcas, fileview], [ wxinfo="$WX_PORT" AS_IF([test $WX_DEBUG -eq 1], [wxinfo="$wxinfo,debug"]) AS_IF([test $WX_SHARED -eq 1], [wxinfo="$wxinfo,shared"], [wxinfo="$wxinfo,static"]) echo " wxWidgets ${WX_VERSION_FULL} ($wxinfo)" ]) AS_IF([test ${with_boost:-no} != no], [MULE_IF( [test ${with_boost:-no} = disabled], [echo " boost Not detected"], [test ${boost_cv_inc_path:-yes} != yes], [echo " boost `echo ${boost_cv_lib_version} | sed -e 's/_/./g'` (in ${boost_cv_inc_path})"], [echo " boost `echo ${boost_cv_lib_version} | sed -e 's/_/./g'`"], )]) MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amule-gui, fileview], [echo " crypto++ ${CRYPTOPP_VERSION_STRING} (${CRYPTOPP_STYLE}, in ${CRYPTOPP_PREFIX})"]) MULE_IF_ENABLED([upnp], [ AS_IF([test -n "$with_libupnp_prefix"], [libupnp_place=" (in $with_libupnp_prefix)"]) echo " libupnp ${LIBUPNP_VERSION:-Not detected}${libupnp_place:-}" ]) if test ${enable_nls:-yes} = yes; then AS_IF([test x$USE_NLS = xno], [libintl_found="Not detected"], [AS_IF([test x$USE_INCLUDED_LIBINTL = xyes], [libintl_found="included"], [libintl_found="system"])]) echo " libintl $libintl_found" fi MULE_IF_ENABLED([geoip], [AS_IF([test -z "${with_geoip_headers:-}${with_geoip_lib:-}"], [geoip_style=system], [geoip_style=user]) MULE_IF_ENABLED_ANY([monolithic, amule-gui], [echo " libGeoIP ${geoip_style}"])]) MULE_IF_ENABLED([webserver], [echo " libpng ${LIBPNG_VERSION:-Not detected}"]) MULE_IF_ENABLED([cas], [echo " libgd ${GDLIB_VERSION:-Not detected}"]) MULE_IF_ENABLED_ANY([monolithic, amule-daemon, amulecmd, webserver, amule-gui], [echo " zlib ${ZLIB_VERSION:-Not detected}"]) MULE_IF_ENABLED([plasmamule], [echo " qt-moc ${QT_MOC} ${QT_MOC_VERSION}" echo " qt-core-libs ${QT_CORE_LIBS}" echo " qt-gui-libs ${QT_GUI_LIBS}" echo " kde4-config ${KDE4_CONFIG} (${KDE_CONF_VER})" echo " kde-headers ${KDE_HEADER_DIR}" echo " kde-services-path ${KDE_SERVICE_PATH}" echo " kde-module-path ${KDE_MODULE_PATH}" echo " kde-icon-path ${KDE_ICON_PATH}" echo " kde-mime-path ${KDE_MIME_PATH}" echo " kde-applinks-path ${KDE_APPLNK_PATH}" ]) amule_2.3.1+git20151120.0023527bc2.orig/convert.ico0000644000175000017500000000257612611472361017671 0ustar morphmorphh( '''777GGGWWWgggwwwLLLL&1JLr L6Lb{L1LQrLALmLLGvLL6[LL&?YrLL$3A[LL )LY L :fLL-?QkL+LHeL | | Dévai Tamás aka GonoszTopi | | Angel Vidal Veiga aka Kry | | | | Developer(s): | | Johannes Krampf aka wuischke | | Martin Brieg aka Stu Redman | | | | Web Administration: | | Angel Vidal Veiga aka Kry | | | | Graphics Designer(s): | | Matt Britt aka uberpenguin | | | | Former developer(s): | | Mikkel Schubert aka Xaignar | | Patrizio Bassi aka Hetfield | | Pedro De Oliveira aka falso | | Stefan Baldus aka stefanero | | Tobias Ottmar aka Citroklar | | Emi Rodriguez aka MalaPraxis | | Ariano Bertacca aka bootstrap | | Ken Thomases aka ken | | Leonid Froenchenko aka lfroen | | K. B. aka deltaHF | | George L. aka croaker | | JT aka lemofan | | Luca Vagnozzi aka shakraw | | Nikolay Igotti aka olonho | | Norbert Lataille aka nonal | | pure_ascii | | Santiago Gomez aka aquatroll | | Thomas Landsberger aka EmilioSandoz | | umale | | Alex Martinez aka Unleashed | | Jacobo Vilella aka Jacobo221 | | efe aka the polish | | Jayson Cowan aka hellimod | | | | Gold Member(s): | | aMule Creator: | | Stephane Colin aka Creteil or BigBob | | lmule Creator: | | Timo Kujala aka Tiku | | Guest Coder and Good Friend: | | Alo Sarv aka Madcat | | | |* *| \==================================================================================/ Original (xMule) author(s): /==================================================================================\ |* *| | Maintainer(s): | | Alo Sarv aka Madcat | | Michael Mueller aka malware | | | | Developer(s): | | Thedore R. Smith aka Un-Thesis | | Angel Vidal Veiga aka Kry | | Mikael Berglund aka MikaelB | | | | Graphics Designer(s): | | Matt Britt aka uberpenguin | |* *| \==================================================================================/ Original (lMule) author(s): /==================================================================================\ |* *| | Maintainer(s): | | Timo Kujala aka Tiku | | | | Developer(s): | | Marcelo Falero aka mfalero | | Xavier Fuentes aka furax | | pure_ascii | | Theodore R. Smith aka Un-Thesis | | Alo Serv aka Madcat | |* *| \==================================================================================/ amule_2.3.1+git20151120.0023527bc2.orig/docs/COPYING0000644000175000017500000004313312611472361017472 0ustar morphmorph GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. amule_2.3.1+git20151120.0023527bc2.orig/docs/Changelog0000644000175000017500000116557412611472361020270 0ustar morphmorphVersion 2.4.0 - The river knows. ---------- 201?-??-?? tgragnato: * Fixed ASIO compilation with libcxx Dan64: * Read AICH root hashes from binary eMuleCollection files gnazio: * Fixed configure of libpng when sh != bash GonoszTopi: * Allow any kind of file links in collections * Make UPnP log go to the appropriate category (#1681) * Use the C++ compiler to check for features we're about to use in C++ source files (#1572) * Adapt configure to handle subversion repository clones in mercurial and git * Fix bfd detection for systems missing -liberty * Add support for 'canceled.met' to the fileview tool * Implemented the missing 'show shared' command in amulecmd * Fix check for a valid locale config entry being done *after* the locale has been set iz0bbz: * Fix WinSock library version detection with MinGW-w64 * Fix compilation with MinGW-w64 kam: * WebServer serves .json, .manifest and .appacache files Mr Hyde: * Fix "Disable computer's timed standby mode" for MacOS 10.9 Mavericks * Compilation fix on Linux Slackware 64bit and MacOS 10.9.4 * Fix configure on Mac Stu Redman: * Display hashing progress in progress bars * Assertion from background thread now prints a message and not just closes the app * Backtrace (crash or assertion) is written to logfile * Fix: disabling protocol obfuscation broke Kad and triggered assertions * Fixed "Prompt on exit" preference * Fixed country flags for Turkish localization * Fixed loading of zipped IP filter (#1674) * Fixed showing of shared files to other clients * Fixed assertions in CFormat("%p") on 64 bit OS with wx 2.9 * Boost Asio can now be used as networking layer instead of wxWidgets * Fixed memory leak when AICH hashing already known files * New download links for server list and nodes.dat (with gav616 and xosevp) * Projects for Visual Studio 2013 (which is now the preferred Win32 compiler) * Fixed build with wx 3.0 (including STL build) circulosmeos: * amuleweb cookies read behind a "lowercase" proxy (http/2 compliant) -------------------------------------------------------------------------------- Version 2.3.1 - The "unobvious evil date" version. ---------- 2011-11-11 btkaos: * Show if a client shares its file list in client view freddy77: * Various optimizations of memory usage * Access files for reading/writing via mapped memory (with custom exception handling) * Fix download of files > 1GB on ucLibc * Fix autogen.sh under Ubuntu * Fixed TCP obfuscation negotiation Gnucco: * Add option to ed2k link parser to display links in emulecollection * Added test case for the CTag class GonoszTopi: * Various fixes to new colour code * Allow user to select display of transfer rates * Extendable list-control settings save/load code * Drop assumption that last search keyword is a filename extension if length == 3 * Instead of counting unicode characters in a Kad search now we use the UTF-8 byte count to determine whether the keyword is allowed or not * Use actual page size in mmap calls instead of a randomly selected number * Fix custom Crypto++ path not shown by configure * Make tags in aMuleWeb HTML 4.01 conforming * Fix HTTP proxy authentication * Use -static for the tests too, when a static binary is requested to prevent configure succeed where compilation would fail * Configure now checks only for the tools and libraries needed for the selected components * Fix aMuleGUI looking for undefined switches * Fix the "blinking" in aMuleGUI's status line * Better reporting of Kad tag reading/parsing errors * Fix the unittests * Some code reorganization * Features/fixes ported from eMule: - Implement an alternate method to estimate the real user count in the Kad network, which is not based on our local routing table (0.49b) - Add double quote to word-boundary characters (0.50a) - Drop support for Kad 1.0 (0.50a) - Try to find the closest node alive (0.50a) - Fix a bug in Kad which would not enforce the search tolerance in certain cases (0.50a) - Change Kad to work better in small LANs (0.50a) * Remove the unimplemented "Create backup for preview" option * Add variables to preview command like in user event commands * Disable 'Show all comments' in the file's context menu if there are no comments/ratings available * Enable renaming (completed) shared files * Proper handling of %-escaped UTF-8 sequences in ed2k:// URIs * Drop support for nodes.dat version 0 * Fix issue #1621: 'ed2k links containing unicode characters will cause the filename to be truncated' * Fix issue #1634: Change charset to UTF-8 in amuleweb template * Fix installation with denoiser enabled * Add support for automake's --enable-silent-rules feature (original idea by Gerd78) * Improved CFormat and enabled reordering of arguments for translators * Several fixes and improvements for the sanity checker script * Fix bfd detection * Add year bumper script * Move statistics from config to statistics.dat * New preference setting to show application version on the title * Fix man page installation for several languages Greek: * Part number is now an extra column in the download list * Improvements to preferences dialogs * Redesign skin selection Grunt: * Sort downloads by time remaining now has shortest time on top and unknown on bottom jolz: * Fixed file locking between ed2k and aMule on Windows Kry: * Reworked user interface, separating download and upload views * Fix list double-buffering causing artifacts on refresh and when showing a context menu. * Fix indexes after removing GUI items * Fixes to Windows build * Allow compilation with wxCocoa * Replace Color.h by new class implementation MuleColour * Lower class overhead and use two-level cache for pens/brushes * Added aMuleCMD project for MSVC. * Fixed UnitTests and aMuleCMD in MSVC to use _CONSOLE subsystem. * Preferences changes * Fixed problem with uploading to lowid clients (szsuj) * Sorting lists (automatically or by user interaction) doesn't clear selection anymore * Fix client version display for MLdonkeys * Added Xcode project for MacOSX build * Fixed the centering of icons and text * Enable vertical toolbar orientation on WIN32 too * Option to resume next file alphabetically, keeping in mind categories and priority * Fixed crash when column gets removed * Show remote filename in source list * Fixed crash in upload thread on shutdown * Dynamic adjustment of threshold for rarity of download files * Option to prevent the computer from sleeping while downloading in MSW and MacOSX >= 10.5 * Mac fixes * Fixed "out of memory" crashes caused by wxWidgets - so wxWidgets 2.8.12 is required now! * Show warning dialog if "Change language" is selected and no languages are installed * Added backtrace support for MacOSX * Add locale support in the mac bundle with updated scripts (translations are now supported on MacOSX builds) lfroen: * php prefix for lex/yacc LittleAbacus: * Search results can now be sorted by "knownness" state. marcell: * Fixed issue #892: Show data sizes >= 1.0 GB with three digits. * Fixed search 'Stop' button not stopping Kad searches. * Check Kademlia search results against original criteria. * Allow Kademlia searches with repetitive keywords. * Allow adding current chat partner to friend list from tab's context menu. * Allow not downloading files via HTTP if the requested file is not newer. * Removed white boxes around file rating icons * Implemented public shared directory names only containing actually shared subfolders. morph: * Patch to uniform and fix minor errors on man pages myth: * Feedback from shared files - add number of clients on queue. * New stats server Phoenix: * Fixed assertion when trying to preview files smaller than 256 K. Skolnick: * Fixed autogen.sh for Bourne Shell Stu Redman: * Sort source list on opening and add file name to A4AF files * MSVC: optional GeoIP support * Faster progress bars with less overhead (without pens/brushes) * Show log messages in remote gui * More info in the Kad tab * Improved gaplist performance * Ported chat captchas (receive and send) and "Advanced Chat Spam Filter" from eMule * Allow download of multiple search results if search list is sorted by status (thanks to DarkNRG) * Fixed CFile::SetLength for large files * Reduce file handle usage by closing part files after idle time * Speed up selection of shared directories with many subdirectories, fixed red marking of folders with shared subdirectories * Ban clients that uploaded bad data (based on CorruptionBlackBox from eMule) * Support wxWidgets 2.9 * amuled for Windows (with wx 2.9) * Friends get recognized in the friend list control even if their IP has changed * Don't kick friend upload, don't kick release prio uploads (unless they take more than half of the slots), and don't kick anybody else unless necessary (with GonoszTopi) * Fixed crash in remote gui when aMule exits * Added more media file types from eMule * Allow the user to cancel the app if Temp/Incoming is not found * Show downloads as shares in remote gui * MANY fixes/implementations for amulegui * amuleweb for Windows (with wx 2.9) * Show connected friends in blue in the friend list * Show total upload/download ratio in statistic tree * Fixed category administration in remote gui * Implement directory preferences in remote gui * MSVC build for alcc, wxCas * Fixed errors and crashes on parsing ED2K links with '/' in them * Configure option --enable-fileview * Bypass amulegui connection dialog with switch -s / --skip * Fixed Core Timer * Allow passing of ED2K links by command line to aMule, aMuled and aMulegui, making ed2k program obsolete * Don't ignore current category in amulegui when pasting a link * EC tools (amulegui, amulecmd, amuleweb) can use a local config dir now * Fixed crash in file system detection in Solaris * Fix: window size/position didn't get saved on some systems * More command line options for aMulegui * Allow webserver autostart on Windows * Fixed crash in "Out of space" user event handler * ALCC prints links to stdout now instead of stderr * Fixed memory exhaustion on high speed uploads Thanks to RRM for endless patience! * Fix: Language English was not recognized and so reverted to "System default" at any change * Fixed printf output (unicode2char()) on consoles incapable of UTF8 * Keep a list of all canceled files (canceled.met) and show them in magenta in the search list * Update status/color of search results on events from outside the search window (like download started from EC) and in amulegui * Enable update of IP filter list through aMulegui and aMulecmd * Enable setting of "Check for new version on startup" through aMulegui * Fixed crash in CClientList::ProcessDirectCallbackList that had been around for ages (hopefully) * Fixed size of large files in aMuleweb's search results * Show completed downloads in aMulegui * Fixed international file names on Windows * Fixed hangup of EC connection in aMulegui * Fixed category deletion in aMuled * Fixed several crash bugs in Webserver * Improved memory usage, load time and speed of IP filter * Load IP filter in the background on startup * Show when a Kad search is finished in aMulegui (remove '!') * Fixed "pause/cancel/resume all" in aMulecmd * EC ZLIB compression can now be turned off in remote.conf with EC/ZLIB=0 * Terminate HTTP downloads on exit * Projects for Visual Studio 2010 * Fixed crash in http download * Speed boost for reload of shared files with large list of known files * Resolve MSVC compilation problem with separate strings in GUI * Fixed splitter bars in download and share view * Allowed creation of ED2K source links in KAD-only mode * Make friendlist in chat window resizable * Removed lag (caused by language pref) when opening preferences dialog * "Swap all A4AF to this (auto)" doesn't block sources with no needed parts any more * Don't lock up in an infinite loop if all servers are not resolvable or blocked by IP filter * Clients now always get uploaded a full chunk (removed setting) * Tell the user that changes of EC settings require a restart * Deleted and readded download now get shared * Speed improvement for upload queue, and clients never have same rank anymore * Fixed ed2k links where '|' has been replaced with '%7C' * Fixed multi line stdin redirected as batch into amulecmd * Allow enable/disable of IP2Country through GUI * "Clear completed" button now only clears downloads in current category * Completed downloads can be seen and cleared in amulegui * Bold lines in log window now for Windows too * Allow setting of friend slot from client list control * Fixed saving of splitter bar positions * Get rid of "clearlooks_style_draw_box_gap" messages in console * Fixed several crash bugs caused by deleted client objects * Fix a small memory leak in Kademlia code * Fix occasionally sending junk at end of packets * Fix child items in search result getting inserted in wrong positions * Shared files don't lose all information when they get renamed * Fixed crash bug with sources which are incompatible with our encryption setting * Allow passing of links > 256 chars to amulecmd * Prevent flicker when sorting already sorted lists * Prevent creation of more than 99 categories, since that's the limit * Fixed saving of sort orders * Allow switching through files in file detail dialog * Improve performance when many small files are hashed * Fix: if a file had more than two copies shared it was hashed on every startup * Show directory in search list for "view shared files" searches * Safe writing of known.met and nodes.dat (don't overwrite existing until write is finished) * Show directory in search list for "view shared files" searches Vollstrecker: * Unify copyright lines * Fixed clean and distclean targets for make * Various Updates in debian/ see debian/changelog * Added crash handling in command-line tools * Fix for autoconf-2.64. * Make amulecmd help command work without connection * New translation concept for manpages * KDE Plasma applet to show stats * Fix warnings with latest autoconf (2.67) woutermense: * Fix 'break/continue [n]' PHP implementation * Allow multiple download links in webserver Wuischke: * Simplify browser selection * Use DoIconize() for dclick on tray icon, too * Fix minimizing from tray icon * Add option to show chat messages in log * Add option to specify amuleweb binary location * Make EC authentication procedure more secure * Add support for categories to ed2k * Backup config file on shutdown Special Thanks To: * Greek for his contributions to aMule's user interface. * btkaos for his important work finding the source of bugs. * myth for seeing when everyone else was blind and uncovering the grandfather of all fuck-ups * mirko.g for being so committed to compile aMule on Snow Leopard. -------------------------------------------------------------------------------- Version 2.2.6 - The "we don't have holidays" version. ---------- 2009-09-16 GonoszTopi: * Fixed obfuscated server UDP communication. * Fixed cross-endian Kad node verification. * Fixed name conflict in builtin PHP parser. * Fixed configure finding unwanted Crypto++ installations. Marcell: * Properly update transfers tab's bottom pane's title. mr_hyde: * Fixed a bug in detecting and using the fallocate() function. Sam Hocevar: * Now really fixed that security issue. Stu Redman: * Fixed HTTP download if server transmits no content-length * Fixed several cases of amulecmd printing zero on big endian machines * Fixed amuleweb crashing on tiny downloads * Added version resources to MSVC binaries * Fixed wrong search text in search dialog after deleting a tab * Fixed download limit in amuled (which was 50% of what was set) Wuischke: * Fix amuleweb progress bar display for files > 4GB Special Thanks To: * stefanero and his bleeding-edge system -------------------------------------------------------------------------------- Version 2.2.5 - The "never say never" version. ---------- 2009-05-16 GonoszTopi: * Fixed possible security hole when previewing filenames containing single quotes * Fixed default webserver port Stu Redman: * Fixed upload of the last part of a file which he broke in 2.2.4 * Fixed setting speed limits from remote gui's tray icon Special Thanks To: * CroMag for pointing out the upload problem -------------------------------------------------------------------------------- Version 2.2.4 - The "we didn't have a .4 version since... well... long ago" version. ---------- 2009-04-03 freddy77: * Plugged various memory leaks. FreeToGo: * Add comment to desktop file to allow autostart in Gnome gabrielix: * Compilation fix for gcc-4.3.2. Gaznevada: * Compilation fix for IRIX. * Fixed file handles on IRIX. GonoszTopi: * Fixed compilation of Format.cpp for some platforms. * Fixed wxWidgets socket library initialization. * Fixed partfile importer destroying imported data. * Separated GUI and core code in partfile importer, thus fixing occasional crashes/hangs. * Fixed GeoIP-enabled builds crashing on 64b boxes. * Added another common URN ID to the Magnet link handler. * Switch to the 'busy' cursor while bringing up the preferences window. * Ported several Kademlia fixes and improvements from eMule0.49c: - Fixes on handling incoming packets with port zero. - The Kad UDP firewalltest now asks several clients for its external port, avoiding to get a wrong "Open" state on NATs which change the source port on each request but behave like a Full-Cone otherwise. - Made sure a received Kad routing answer doesn't contain more contacts than requested. [Xin Sun] - Kad no longer allows more than 2 IPs from the same subnet within one routing query reply (except on LANs). - Kad routing query contacts are checked against the routing table. * Implemented non-interactive mode for amulecmd/amuleweb. * Fixed detection of crypto++ library for versions >= 5.6.0. * Fixed saving wrong window position when exiting while minimized. * Fixed rare case when we tried to connect to a LowID client. * MSW: detect WinSock API version needed by GeoIP. * Fixed libbfd sometimes depends on libintl, with help from PacoBell. iz0bbz: * Fixed static linking with GeoIP on MinGW/MSYS. * Fixed detecting GeoIP library when building for MinGW. * Compilation fix for GeoIP-1.4.6. Stu Redman: * Fix crash on global search on Windows * Fix splitter bar position in transfer window not restored properly * Caught some insane upload requests * Fixed finished files sometimes getting rehashed (thanks to Skolnick) * Added restart warning if the ED2K network was re-enabled. * Fixed Windows lag when opening preferences dialog * Fixed creation of ED2K links with AICH (thanks to Archmage) * Remote Gui shows a dialog box with a reason on connection failure * Changed fix for wrong ordering/placing of clients in the download window so that sort order is again like in 2.2.2. Wuischke: * Add Asturian language * Updated INSTALL file * When EC authentication fails, close connection before we send the response. * Tell the user why the EC connection failed. Special Thanks To: * wires for the strenuous testing on 64-bit -------------------------------------------------------------------------------- Version 2.2.3 - The "Late Christmas present" version. ---------- 2008-12-28 Alfred: * Fixes to compile with Sun Studio 12. Gerd78: * Fix for linking with a static bfd library. GonoszTopi: * Fixed improper handling of EC connection failures. * Fix for shells not properly handling empty lists. * POSIX fixes in shell code. * Made not finding GeoIP non-fatal. * Check if --enable-geoip-static can be fulfilled. * Fixed loading of zipped ipfilter files. Thanks to CtrlAltDel for the investigation of the problem. * Fixed alc progress bar for files >4GB. * Fixed #1056: amulegui: incorrect results when searching with min size >= 4GB * Disable automatic sorting of dowload list while there is a pop-up menu or file detail dialog displayed. * MinGW compilation fix. * Fixed GTK crash on closing search tabs. Thanks to btkaos. LittleAbacus: * Support multiple selections on CSearchListCtrl::OnMarkAsKnown(). Skolnick: * Fix alc and alcc to work with files bigger than 4GB Stu Redman: * Fix crash when last category was removed with a completed file in it * Fix wrong ordering/placing of clients in the download window * Fix available fileparts display for large files * Don't open server UDP socked if ED2K is disabled * Reordered preferences, disabled ED2K/UPnP prefs if ED2K/UPnP is disabled * MSVC: solution for MSVC 2008 Express edition, project for ed2k and fileview * Fix wrong file download rates in transfer window * Windows: fix broken core timer, use precise tickcount and so fix download limit Wuischke: * Add checks to cas to prevent segfaults * Fix wxCas save file dialog for file types * Fix a buffer overflow error in cas Special Thanks to: * btkaos and CtrlAltDel for their invaluable help in tracking off bugs. -------------------------------------------------------------------------------- Version 2.2.2 - The "Similarity." version. ---------- 2008-08-08 bomj: * Patch for alcc to improve usability Gaznevada: * implement getopt_long in cas for systems which lack it GonoszTopi: * Fixing denoiser * include before as by POSIX * Fix noinline in crypto for some systems * Fix display of ccache option * Add sources from search results for new downloads * Use output of gdlib-config for gd.h detection * Solaris mntent fix * wxMSW fix * Fix NULL pointer dereference * Fix for configure not using --with-geoip value in library check * Added pkg.m4 from pkg-config-0.23 * Ported Kademlia Protocol Version 8 from eMule0.49b. - Kad now ignores multiple IDs pointing to one IP in routing request answers - When calculating the total user count, Kad now uses (if available) the real number of firewalled clients for the calculation instead a fixed value. This will take more effect when 0.49+ nodes become common - Kad no longer tries to add UDP firewalled (and therefore mostly unreachable) nodes into its routing table, reducing overhead and increasing reliability [Idea: Netfinity] - Optimized the Kad packettracking code to only track packets which we check later, to save resources - Fixed a bug which let Kad sometimes assume a Kad2 contact to be Kad1 after probing for both versions - Did first small step in dropping Kad1 support by not probing unknown Kad contacts for Kad1 anymore to save overhead. Kad1 clients will nevertheless still be work for now. - Several changes were made to Kad in order to defy routing attacks researched by University of Minnesota guys [Peng Wang, James Tyra, Eric Chan-Tin, Tyson Malchow, Denis Foo Kune, Nicholas Hopper, Yongdae Kim], in particular: - Kad contacts will only be able to update themself in others routing tables if they provide the proper key (supported by 0.49a+ nodes) in order to make it impossible to hijack them - Kad uses now a three-way-handshake (or for older version a similar check) for new contacts, making sure they do not use a spoofed IP - Unverified contacts are not used for routing tasks - When reading a nodes.dat without any verified contacts (possible an old file version), aMule will assume all contacts to be verified to avoid slowing down the connecting process - Implemented a special nodes.dat file version suitable for mass distribution. * Fixed not sending sources for clients that did not announce their part availability. * Fixed all list columns being disabled in case of invalid data in config file. * Fixed directory tree not available. Kry: * Fixed: Incorrect SX packets sent, plus no reply to out-of-multipacket SX as a bonus MalaPraxis: * Remap colours on Windows * Add resources * Fix wrong usage of CPath::IsOk which caused an infinite loop on Import * Fix wxTempFile usage for compressed IPFilter files Phoenix: * Removed the dlopen() code from UPnP.cpp. * Added the m4 macro to test for libupnp. * Updated amule_build_install.sh to work with --with-libupnp-prefix. * Changed the UPnP code to allow the use of a service without having successfully subscribed to it. That should be enough to deal with some lazy router implementations. * Do not unregister if no service is found * Save the found service even if subscription has failed * Fix for initialization of "resultstr" in cryptopp.m4. * Fix for message "Duplicate partfile with hash..." in DonwloadQueue.cpp. It was using deleted corrupted data. * amule_build_install.sh now uses -a flag in unzip so that cryptopp files are properly converted from DOS text format. Stu Redman: * Scanner fix for MSVC compilation * Fixed crash when progress bar was resized to zero width * Fixed sharing of large files on Windows * Fixed free disc space check * Sanity check before writing nodes.dat - don't write it if there are less than 25 contacts * Download List sorted on startup * Splitter bar position in transfer window is restored again * Fixed a GDI resource leak for Windows Vollstrecker: * Made possible to deactivate xas * Various Updates in debian/ see debian/changelog Wuischke: * Show connection status in toolbar when changing skin, thanks to greek xor: * Fix window resize problem on Mac OS X * Fix for packets being lost in EC communication. Fixes aMuleGUI not updating after a while. -------------------------------------------------------------------------------- Version 2.2.1 - The "Excuse me, have you seen my 2.2.0 release anywhere?" version. ---------- 2008-06-11 Bas Zoetekouw: * Patch for debian bug #350396: "amule depletes entropy pool". brainnolo: * Patch for loading the correct path for the UPnP libraries in Mac. * Added the binaries for libUPnP for Mac to the directory aMule.app/Contents/Frameworks. * Universal Binary ed2kHelperScript update. * avoid removing libupnp libs during initial cleanup (this would defeat bundling them) . It will now remove only libwx in the Frameworks directory (which are supposed to be from an old build). centaur: * OpenBSD patch. Coronas: * Patch to show kad status in amuleweb (Bug 1103) * typo in src/webserver/default/shared.php drkirkby: * Test for gcc before including gcc specific flags on the compiler line. DLH: * amulegui.xpm icon. EastWind: * Patch to prevent overwriting of GDLIB_LIBS Gaznevada: * IRIX compatibility patches * amuleweb php IRIX patches * Make 64-bit architecture check independant of _ABI64 Gerd78: * Added autostart-xas to rpm .spec files. * Patch for autoconf >= 2.60. * Patch for redefinition of $(docdir) in docs/Makefile.am. * Patch for aMule .desktop files. * Added amulegui desktop icon (with Vollstrecker). * Patch for fixing aMule spec file in Fedora and Mandriva. * Test for perl File::Copy in configure. * Fix for building with _FORTIFY_SOURCE. Gnucco: * Workaround for string serialization bug. * Workaround for aMule does not publish new files on kad. GonoszTopi: * Added ability to compile amulecmd without thread support in wx. * Fixed source seeds handling on startup. * Proper restoration of startup locale after checking available locales. * Fixed linkage with wxMSW. * Got rid of a few more warnings. * Fixed #929: configure: BUILD_CC uses CC's CFLAGS * Implemented #962: don't display (0) when not downloading from source * Fixed #954 - added ability turn IPFilter on/off for servers/clients independently. * Added support for magnet ed2k links. * Improve cross compilation * Fixed segmentation fault in amuled * Don't allow sources coming from .seeds to be cleaned up for a while after startup * Improve accuracy for ticks * Improve debug output * Don't add clients when shutting down * Added a simple (ascii) text file reader class * Sed denoiser - removes excessive messages from compilation - Thanks to Vollstrecker for the idea and discussions. * Drop path component from logged file names. * Fix for perl v5.8.8 * wxCas compilation fixes for wxCVS * Doxyfile doesn't need to be installed, it's unusable without the sources. * Fixed #979: No win32 version information * Updated listctrl code to 2.8.7 * Fixed a buffer overflow in TextFile.cpp * Cross-compilation fixes. * Some little optimizations on configure. * Re-categorized a number of strings whether they need translation or not. * Added plurals support. * Removed a number of unused leftover files from the repositiory. * Various fixes for wxMSW builds. * Made 'make dist' work. * Fixed 'make check' for subdirectory builds. * Fixed manpages install/uninstall script to handle correctly subdirectory builds and respect the --program-transform-* switches. * Fixed a minor bug in the denoiser script. * Fixed several portability issues in scripts. * Fixed keeping the preferences in sync with tray icon existance. * Removed a check that wasn't ever valid. * Fixed #651: Wrong expansion in statistics. * Fixed #1082: Events in preferences have layout problems. * Fixed debug categories being added multiple times to the checklistbox. * Fixed translations on MSW. * Languages are not sorted anymore, but displayed in their own name. * Fixed a number of gcc4 warnings. * Fixed amuleweb compilation on MSW. * Added checks for a POSIX compliant regex library. * Fixed #1289: amule fails to build on non glibc systems (e.g. uclibc) * Hungarian translation. * Allow generating feedback from shared files. * Ported Kademlia2.0 Protocol Version 7. * Fixed 'bad file descriptor' error on Mac. * Unittest for the Kademlia::CUInt128 class. * Added kademlia and obfuscation status to the client details. * Fix for bars positioned 1 pixel too low. * Added a small debug utility to display contents of mule files (kad only yet). * Fix for #1184; fixed both ed2k and kad searches for >4GB files. * Proper detection and usage (if possible) of strerror_r() * Added English names to the language selector - for the curious ones. * Fixed some memory leaks. * Got rid of the deprecated HAVE_GETTEXT macros. * Added gettext support to amuleweb. * Added preferences option 'Allocate full size'. * Added crypt overhead to statistics, UDP only for now. * Added checks to prevent downloading large files to file systems not supporting them. * Added check for NetBSD systems. * Heavy rewrite of autoconf/automake stuff. gtoso: * Fix for GeoIP crashing if the default GeoIP.dat file cannot be found. * Patch to find GeoIP.dat in the application bundle. Hermit: * Patch for amulecmd history which ensures that when the same command is repeated several times in a row it only gets recorded in the history once. jcoy: * Set download priority in amulecmd. ken: * Fixed control-clicking (right-clicking) on tabs in notebooks on the Mac. * Compilation fix for MacOSX 10.3 * Fixed a crashing bug with static initialization order * Ship the license as required by the GPL. * Fixes linking of embedded CryptoPP (on the Mac, if nowhere else). * Quick-n-dirty hack for stats graphs on the Mac. Kry: * Protocol Obfuscation (enabled by default) * Large file support (>4GB) * Disabled auto-update of servers from clients and other servers by default. * Fixed a bug while getting sources for large files (>4GB) * Fixed mldonkey_importer to work with mldonkey >= 2.7.6 * Improve exception handling * Added a column on client view that shows if the user has reported having disabled shared files. * Disable the "Show files" option in context menu if the user has reported having disabled shared files. * Add generic CTag classes support for Kad data types * Remove kad IO classes * Safety on memfiles created from packets * Fixed publishing and sending shared files requests * Fixed Unittest * Update audio and video types * Update EC to use the equivalent of VBT tags * Fix ID sending on hello packet to use the hybrid ID instead of plain ed2k id * Fix a bug on sending info to other clients on file list request * Upgrade lex generated code * Add the --reset-config flag * Modified getclosetsto() fix, originally by tatikiran * Changes to flex parsing of search expressions. * Fix several missing variable initializations * Swap bytes for int types in EC code * Lower reask times * Fix Memleak in ECSocket * Extend amulecmd with 'show log' and 'reset' command, originally by quinox, bug #856 * Usage of HOSTCC for compile-time executions * Created translation status scripts * Move server packets to the back of the UDP queue if the server is still resolving a dynamic host * Script to wikify changelog * Separate ECTag from ECPacket * Fix crash on startup * Fix several rare memleaks * Fixes on Kademlia keyword store * Initial Kademlia 2 integration * Remove duplicated SendPacket functions in Kad * CPacket uses const CMemfile reference instead of pointer * Fix for (rare) bogus packets being send on kad * Fix for empty packets in Kad Search * Fixed server IP for EC * Don't destroy shareddir.dat on remote GUI, bug #945 * Incorrect percentage displayed by amulecmd for files > 4Gb, bug #949 * Ask user to download server list when list is empty and ed2k active * Support automake 1.10 * Reorganization of EC code * Added script to generate EC files for different programming languages (C#, Java and C++) from an abstract language * Dropped support for < wx2.8.x (in case you want to blame someone) * Added remote gui datastructure for new classes. * Fixed compilation with wx2.9, also with disabled 2.6 comatibility. * Heavily modified IP2Country code. Proper names, guards, creation on the heap... etc. * Added script to create Kad nodes files * Fixes for emule-collection support * Added some sanity checks * Source links with crypt data support. * Fix Mac build * Remember kad and ed2k urls and restore them on restart. * Force conversion to be ISO8859 for tag names, obvious from the network standards. This also fixes Kad. * Changed the inheritance for the UDP sockets to include the encrypted layer * Fix for MuleGifDecoder issue * Windows fixes * Added OnO patch for Toolbar display. * Fixed validation of preferences items for wxWidgets 2.8.4 * Fixed cryptopp version recognition on Mac. * Finish Protocol Obfuscation including GUI * Fix base for emsocket * Disable bison generation on Mac * Endian fixes * Fix compilation on wxCocoa * Make obfuscated state persistant * Change preferences order, add debug info * Fix getsources with large files * Add message on triggering new version * Fix spelling * Fix Windows compilation * Remove backups before moving logfile * Fix compilation * Fix for connecting to servers if encryption is required * Fix memleaks * Use proper base class * Remove unmaintained translations * Honour data root settings to remove warning * Make code compatible to MSVC * Fix to avoid losing packets * Avoid multi line strings in GUI to allow MSVC compilation * Fix wxIPV4address usage where amuleIPV4 is unnecessary * Change CVS string to SVN * Adjust MuleDebug * Fix file types due to overloads of EC * Moved browser preferences to "Browser/" section on config file. lfroen: * Fix partcount not being set in remote gui * Use only one EC library with amuleweb * Fix LastSeenComplete * Fix for NonCurrentSources * Fix incorrect cookie parsing for amuleweb * Fix passing strings in EC * Lock webserver when serving images * EC implementation in C# (work in progress) * Fix preferences in amuleweb * Fix EC crashing webserver when new item added * GUI implementation in C# (work in progress) * Implementing split() call * Compilation fix for MuleGifDecoder LittleAbacus: * Patch to show part file numbers. * set the search string to the search text of currently selected tab. magicamule: * filtered off comments still affect rating MalaPraxis: * Fixed some cases where the full IP of a new client would be shown incorrectly. * Added a "System Default" option to browser selection that uses wxWidget's capabilities. * Fix MSVC compilation errors * Don't use wxFile flush on Windows * Toolbar fixes to fix assert on Windows * Use better defaults for preferences * Simplified minimize/raise code, remember maxmimized status between sessions. * Make sure starting points are inside screen and sanity fixes * Fixes to view/restore, original function doesn't skip * Final fixes to Iconize() * Fix for broken native counter. * Change data types to clear warnings at /W4 on MSVC * Cleared MD5_ functions to use standard memset/memcpy * Cleared types, added asserts for debug, remove unused functions * More warnings cleared and more asserts * /W2 fixes on main MSVC project * Fix compilation of aMuleGUI * Enable compilation with wx 2.9 * Fix Kad1.0 and Kad2.0 search types * Enable dynamic GUI reordering when networks are disabled * Disable packing of non-POD structures * Change structures with constructors to classes * Small MSVC fixes, major speedup and adjustment for networks * Don't use ++ to modify a var value if you assign to same var * Speedup for some classes as copying is unnecessary * Further fixes for VS * Fix notebook logs/info tabs display * Better macro use * Add MSVC solution and readme * Fixed bug on socket event GetResult(), MSVC fixes on files * Fixed direct callback for type 6 sources for Kad2.0 morricone: * Fix for wxwin.m4 not autodetecting wxBase. mr_hyde: * Patch to enable Kad search with amulecmd. * Fix for some man pages have wrong name with --program-suffix. * Temporary fix for tarball configure.in using SVNDATE. Nodsu: * Patch to make amulecmd cancel/pause/resume work with many files and file names. * Patch to enable preview in remote GUI. * Patch to create the magic string $file in previews. This string is replaced with the file name in the command line, in case it exists. * Patch to prevent amule compiled with --disable-nls from crashing. nvinay: * Trivial issue with memset found using google codesearch which may affect only the debugging. Phoenix: * Fix for crash in amulegui/DownloadListCtrl.cpp. * Upgraded extern/listctrl.{cpp,h} from wxWidgets cvs code. * Fixed some gtk2 warnings in extern/listctrl.cpp. * Fix for unhandled exception in new skinned toolbar code. * Coding style fixes. * Fix for server disconnection during global search. * No more wxARRAY's in amuleweb. * Fixed bug in mutex code in amuleweb (s_mutex_wcThreads). * No more wxARRAY's in aMule code. * Fixed bug in ECPacket.cpp: assignment inside assertion. * Changed CECSocket constructor to be exception safe. * Fix for invalid rectangle size on COScopeCtrl::PlotHistory(). * Removed the default constructor for Kademlia contacts. * Fix for "get bwlimits" command in amulecmd always returning zero for maximum download value. * Added UPnP support. * Fix for crash in ECSocket.cpp. * FileDetailDialog:: now has more intuitive Apply, Ok, Cancel interface. * GUI to enter a specific bind IP in "Preferences->Connection->BindAddress". * Resurrected support for the tag FT_DL_ACTIVE_TIME in the met file. It's value, the download active time, can now be seen in the file details dialog. * Added the DLACTIVETIME variable to the list of replaced variables in the DowloadCompleted user event. * MuleTrayIcon.cpp was not compiling for __WXMAC_CARBON__. Seems to be fixed, but must be the code now has a lot of ifdefs and must be tested on other platforms. * Added two more events: "out of space in temporary partition" and "error upon completion". * Fixed a crash in amulegui when adding a new category. * Fixed a bug in amulegui, removing a category remotely did not update the category count in amule.conf, so the next time amule was run, the category was there again. * Fixed a bug in toolbar skins, the skin file was opened even when the checkbox "Use skins" was not checked. * Fixed a crash related to MuleGIFDecoder wx-2.8.0 when downloading the file IPFIlter.dat. * Fix for ECSocket.cpp, amulegui was crashing upon entry. * Fix for ClientDetailDialog in amulegui. Was showing incorrect IP / Server / Software version information. * Switch binding of UPnP libraries to use one digit version names instead of unversioned names. * Fix for crash in amuleweb when the image file did not exist. * UPnP add/delete port mappings are now done in every device found, instead of only the first one. * Creation of --enable-upnp/--disable-upnp configure flag. * Update of wxWidgets-2.6.3 deprecated code to version 2.8.2. * Fixed IPFilter.dat loading from a zipped file. * Added a termination process to wxExecute() calls, so that we no longer leave zombies. * CDirIterator now uses wxDir. * CheckDirExists() now uses wxDir::Exists(). * CheckFileExists() now uses wxFile::Exists(). * GetLastModificationTime() now uses wxFileModificationTime(). * GetFileSize() now uses wxFile::Length(). * UTF8_CopyFile() now uses wxCopyFile(). Later reverted for locale fixes. * UTF8_RemoveFile() now uses wxRemoveFile(). Later reverted for locale fixes. * UTF8_MoveFile() now uses wxRenameFile(). Later reverted for locale fixes. * theApp is now a global pointer, so that we can access the global application object from within a core file. * Partial fix for the COLORREF compilation problem on Windows. * Fix for libpng version detection on acinclude.m4. It was failing for strings like 1.2.15beta5 (e.g., debian 4.0 etch). * Fix for theApp variable usage in amulegui. It was not beeing initialized and amulegui was segfaulting. * Fixed the forum address in the backtrace print. * Applied Bas Zoetekouw's patch for debian bug #350396: "amule depletes entropy pool". * Implemented IP2Country using GeoIP. * When converting from multibyte to wide characters, ConvAmuleBrokenFileNames now tries UTF-8 first. If this fails, then it tries ISO-8859-1. * New directory based skin support, reworked Trevino's patch. * Fixed amuleweb crashes due to bug in ECSocket.cpp * Code to refresh port mappings in the event of a temporary router failure * Code to deal with previously unhandled UPnP events. * Fixed remote-gui segfault in UpdateStatsTree() * syscall_check is no longer a macro * Fixed a serious bug introduced by ENABLE_UPNP Makefile.am switch * Fix for libpng version detection on acinclude.m4 * Fix for server list and node list * Made some common dialog modals and giving them a default style * Handle different UPnP library versions * UPnP for amuleweb. * Fix for crash on exit and a little less redundancy. * Trying to make listctrls behave on Mac. * Fix for CheckFreeDiskSpace(). Was probably returning ok if the directory where the file would be saved did not exist. * Fix for overflow in CPartFile::HashSinglePart() as reported by visualage. * Fix for overflow in CSharedFilesCtrl::DrawAvailabilityBar() as reported by a3linux, CtrlAltDel and stefanero. Special thanks to a3linux for the backtrace. * Improoved the macro CHECK_CRYPTO() in acinclude.m4. * Fix for the check of cryptopp library version in configure.in. * Rewrote the cryptopp m4 stuff. * Fixed some memory leaks related to the use of CTerminationProcess. * Fixed the usage of CryptoPP::Base64Encoder when creating the key pair for ClientCreditsList. cryptopp semantics is to give the ownership, so do not create objects like this on the heap. * Fix for amuled creating zombies. wxProcess does not work with wxBase. * wxProcess now receives OnTerminate() events in amuled. * Created a specialized termination process object for amuleweb, so that amule does not kill the web daemon if it has already died. This fixes a segfault upon exit. * Changed the amule_build_install.sh script to work with distro tarballs for release. pochu: * Fix for subdirectory builds. Radek: * Patch to fix windows compilation. Raziel: * Adapt Kad code to the standard coding guidelines. * Work on EC API spiralvoice: * Patch to enable MLDonkey os_info support. Skolnick: * Added the time to the aMule stats in the wxCas window and in the generated image. * Added the time to the aMule stats in the cas output and in the generated image * Added option to generate image in JPG format (along with PNG) * Added new icon for aMule Stu Redman: * Fix for Transferred / Completed not updated in remote GUI. * Fix for PARTSIZE not being 64 bits. Enums are always 32 bits, even if we use a 64 bit constant to initialize it. * ratings/comment marks are now shown in the main transfer window of the remote-gui (the little colored !! on the left). * comments are now updated when comment packets arrive (not only when the show comment dialog is open). * remote names are now updated once on startup. So there is no more 3s lag until the names are shown when the dialog is opened for the first time. * ED2K/Kad User/Filecount is now shown in the remote-gui status bar and on the Kad Tab. * Fix for crash on receiving zero-sized UDP packet. * New BarShader code. * Sparse partfiles on Windows. * Fix for zlib detection with an optimizing compiler on configure. * Made all part-status bars look the same. * File names in file detail dialog can be scrolled without messing up the list control * Fix for copy constructor Tiziano Müller: * Fixed compilation when --enable-geoip is used in conjunction with the ld-flag "--as-needed". Trevino: * Fix for "Both the Unknown client icon and the Unknown status icon points to the same file" issue. * Skin support with relative paths. visualage: * Fix for aMuleWeb unicode search/download link error. * Fix for aMuleWeb segfault when refreshing too frequently. * Fix for regular expression in aMuleWeb-PHP/split function. Vollstrecker: * Added possibility to give the path for output right with -p or -o in cas. * Changed cas to use getopt_long. * Added --config-dir and -c option to cas. * Added alias -H --html to cas. * Added alias -P --picture to cas. * Added --config-dir and -c option to ed2k. * Added --config-dir option to amuled. * Fixed typos in the man pages. * Added manpage for amulegui. * Added amulegui desktop icon (with Gerd78). * Manpages update. * Add debian folder. * Correct use of libcrypto >= 5.5 and update of debian-dir. * Added Option to use generic ipfilter.dat. * Made possible to select which translations get build and installed. * Install only manpages in requested Langs. wuischke: * Add emulecollection support on aMule ED2K Links Handler * Fix online signature update rate * Fix display of filesize > 4GB in file detail dialog * Fix toolbar import/about icon order * Add option to load emulecollection in SharedFilesCtrl * Add oga and ogv extension for file type search * Allow skin/webserver template section via wxchoice + skin enhancement * Some error messages rephrased, to improve readability * Fix idle mode for UBT * Fix Ctrl+a in MuleListCtrl * Replace (f)lex by $(LEX) in Makefile.am files * Fix libUPnP unloading. * Fix building with external CryptoPP * Ship skins with tarball * Convert skins shipped with aMule to new format * Display file size in human readable format in FileDetailDialog * Make SVN compile again * Some skin code improvements * Added upload feedback * Added option to enable EC and set pass in amuled * bugfix for ec-config option * Removed GetLocaleDir() * Zipped skin format * Fix utf8 problem with file names * Fixed toolbar display with skins when blinking on incoming message * Fix #1114, missing break statement, thanks to mr_hyde * Add option to filter file comments * Allow compilation against wxBase * Remove Source Dropping * Allow usage of local config dir * Display log message in bold when using local config dir * Extend range for slot allocation, change default value * Change Kb to KB * Suppress skin directory error * Add Upload feedback * Fixed GetFeedback * Correct some spelling mistakes * Always use SecIdent * Re-Add option to disable SUI * Fix sharing files with extended characters * Fix utf8 problem with file names * Mark cancelled/removed files grey in search * fix search colors implementation * Add maintainercleanfiles for make distclean * Fix comment icon order and use unitary width for display * Fix rating display in SearchListCtrl * Fix permission check on Vista * Fix compilation with mingw * Check for and use SVNDATE in tarballs * Move include up to allow compilation on mingw * Fix compilation with mingw32 * Fix compilation on Mac * Fix compilation in ClientListCtrl.cpp * Fix linking on Windows/mingw32 * Fix linking of amulegui for Windows * Fix problems with collections using CRLF line endings on *nix * Fix compilation for gcc 4.3 * Dirty compilation fix for gcc 4.3 * Fix compilation on OpenBSD (and probably other Unix) Xaignar: * Renaming the SearchList typedef to CSearchResultList * Splitting CSearchFile out from SearchList.* to SearchFile.*. * fix initialization of member variables in CSearchFile when creating on remote gui. * Call GetLength safely when sharing files * Added support for child results to CSearchListCtrl * Major cleanup of CSearchList * Add logger target for the thread-scheduler * Add smart pointers CScopedPtr and CScopedArray * Fix possible crash due to pending events * Fix accessing empty list in CMuleListCtrl * Add support for displaying large files with CBarShader * Improved sanity checking and simplified exception-handling via CScopedPtr and CScopedArray. * Major reworking of threads, add a thread scheduler for IO intensive tasks, improve thread-safety for AICH-sync thread * Fix FileIO unittests and add test of const CMemFile objects * Update AICH from eMule-0.47a Beta1 * fix positioning of individual frames * Improved exception handling * Updating the FindMatchingClient function * Avoid dangling pointers in case of asserts failing * Updating CFormat to properly handle 64b ints on all platforms * Fixing CFile::GetAvailable if position is past EOF * Fixed possible use of uninitialized variables * Adding template function for freeing the contents of a list/map * Remove CList * Fixing a couple of infinite loops * Fixes file completion under amuled * Add locking to the ED2KLinks file * Removed multiple macros for array size * Removed the CMD4Hash from wxString constructor * Add swap function to CRangeMap * Reworking of the notify-code * Optimized and simplified adding of shared files to the listctrl * Remove partially copied files when a UTF8_CopyFile fails. * Drop the file/directory permission settings, use umask instead. * Fixed loading of version information for servers. Previously the information saved in the servers.met file was ignored. * Fixed problem with reading ST_AUXPORTSLIST tags for servers, where empty tags would cause the existing server-port to be overwritten, thereby preventing connections to that server. * Fixed linking of libmuleappcommon, which would previously include GUI related symbols, thereby breaking amuled in some cases. * Added fuzzy sorting method for strings, currently only used for sorting server-version information. * Fixed sorting of the "Static" column on the server-list, which didn't conform to 'strict-weak ordering'. * Added missing catch-statements in places where subclasses of CSafeDataIO was used, thereby preventing crashes in case of funky files/filesystems, such as network drives only supporting up to 2GB files. (closes bug #878 and #1205). * Fixed opening of the Help-page when modifers were applied to F1, which was causing conflict with various system-wide shortcuts (this closes bug #1200). * Used -isystem to mark wxWidgets and Crypto++ include files as system-files, thereby reducing the number of warnings generated by these includes. * Fixed the shared-files-list ctrl assuming that all items were part-files when creating feedback, which could cause wrongful casts of CKnownFile objects. * Changed from using signed longs to store pointers in wxListCtrl, to using wxUIntPtr, which is guranteeded to be able to contain pointers on all platforms. * Fixed unicode-chars not being registered by key-events for wxListCtrl (applied to our local copy). * Fixed various problems with using arrow-keys and other control-keys on the listsctrls in aMule. * Fixed checks for changes in .part files between runs, which previously was entirely broken (checked both wrong timestamps and files). * Fixed saving AICH-hashsets to an empty file, where buggy sanity-checks were causing the result to be discarded. * Improved the CreateHashFrom* functions, preventing the hashing of empty files, and accessing an empty vector. * Added a workaround for a bug in wxNotebook, which would cause the selection returned in page-changed events to sometimes be invalid, thereby causing aMule to crash when attempting to access an non-existing page. This should fix some crashes assosiated with closing search-result tabs. * Dropped the internal Crypto++ libraries. Most distros have it these days, and it's just another headache for us to support (and was becomming pretty outdated). * Improved checks for NULL points in CClientListCtrl. * Fixed some poor english in various logging messages. * Improved thread-safety in various classes, in part because wxString isn't threadsafe, and we use that class a lot. * Added support for writing 64-bit ints in CTags, which was needed for some server-packets. * Improved debugging-information support in CTag. * Fixed saving/loading of 64-bit ints for Kademlia, which were sometimes sent as binary blobs. Previously, we would read from the net and save them to 'src_index.dat' just fine, but would fail when it came to reading them from 'src_index.dat', resuling in that file being unreadable. * Fixed the corruption of some tags (mostly Kademlia), where the tag-names were wrongly saved as UTF-8, though they should have been saved unchanged. This closes bug #1188. * Applied various fixes to better conform to ANSI-C++. * Fixed repeating of CPPFLAGS when compiling with GeoIP enabled, which caused problems when -pedantic was used. * Fixed a couple of small memory-leaks in UPnP (bug #1230). * Added the "printf" attribute to printf-like functions in the webserver code, allowing for compile-time error-checking. * Fixed potential crashes that would result from server connection attempts that timed out before the hostname lookup returned. * Worked around crash in the taskbar icon, which would trigger if the kicker crashed. * Fixed safehash-check for files greater than 4GB. * Added support for pretty-printing of classes to CFormat. * Added a class for the transparent handling of paths, needed because we want to be able to handle both mangled (saved in the wrong locale) and normal filenames. This should fix problems with accessing files with extended chars in the filename. * Added warning in case port could not be bound to the hostname specified in the preferences. * Made outbound connections use the hostname specified in the preferences. Is possibly not fully functional. * Fixed memory-leak when adding invalid ED2K links. * Fixed crash when the hashing-result from a now deleted part-file was returned. * Allow the update of the server-list from the remote gui. * Optimized file-syncing, by only flushing the file contents, rather than the meta-data (timestamps, etc). * Fixed possible redefinition of the VERSION define. * Fixed redundancy resulting from the use of two different list of file-extensions, used when determining the filetype. * Dropped support for importing configuration files, and the like, from older eDonkey and *Mule clients, as most of these were extremly old. * Re-added double-buffering for listsctrls, in a manner that should hopefully avoid the problems seen previously. * Fixed missing unicode-convertion on a number of packets when sending to unicode-enabled clients. * Fixes passing of the error-code to OnReceiveError in CMuleUDPSocket::OnReceive. * Improved handling of invalidated (closed) UDP sockets, caused by the fact that wxWidgets errorously treats empty datagram packets as EOF. * Fixed setting priorities for part-files on the remote gui (this resolves bug #1251). * Improved debugging information when using CFormat. * Rewrote the CTextFile class, improving the reading speed, and adding the functionality for writing files. * Improved sanity-checks in the CQueuedData class, thereby preventing the possibility of memory-corruption resulting from mangled packets. * Added autoconf check for broken exception-handling. * Added subclass of Cfg_Str for loading/saving paths. * Added functions for checking permissions of dirs/files, and for retrieving the free space at a given location, to CPath. * Increased minimum free size needed before writing ".met" files from around 5KB to 100KB, as ".met" can easily be much larger than 5 KB in size. * Improved checks for permissions of directories, and insured that the fallback directories are also checked in the case were the user-specified directories are inaccessible. * Changed temp/incomming dir variables to "CPath"s, using the previously added Cfg_Path class. * Fixed spurious warnings caused by not checking if certain preference files existed before trying to read them. Also removed an unnessesary warning for when known.met doesn't exist. * Added wrapper-class for wxThread, to allow us to safely terminate joinable threads without using Delete, a function that is only intended for use with detached threads. * Fixed cancelled downloads being reported as succesful. * Fixed warning about dirs without shareable files, in the case where there were sharable files, but they were all duplicates. * Added support for saving directories (shared, incoming, etc) as well as the filenames of known files in an locale-independant manner, so that changes in locale does not affect our ability to find previously used files or directories. This will break backwards compatibility when using unicoded directory-names. * Fixed the search-string being cleared when starting the first search. * When starting a search, the entire search string is selected. * Fixed creation of ED2k-links with an AICH-hash, in case the file does not actually have a AICH-hash. Also disabled the option in the shared-files window when the file lacks an AICH hash. * Removed workarounds for old (and resolved) wxWidgets bugs. * Fixed creation of ED2K links without sources, where an superflous "|/" would be appended to the end of the link. * Fixed handling of spaces when creating ED2k links. * Fixed swapped notify-functions, which caused deleted client-objects to be left on the upload-queue on the GUI. * Improved enabling/disabling of items on the right-click menu on the download queue. Among other things, it is now possible to stop a paused download, without having to restart it first. This closes bug #1078. * Fixed the setting of priorities for shared files via the remote GUI. This resolves bug #1267. * Fixed clipping issues when columns are resized to very small width, causing the contents of one column to be drawn on top of the next column. This closes bug #1171. * Fixed copying of text to the clipboard, which previously used the "primary" clipboard (middle-click) under X11. It now uses the default clipboard, which is what DEs typically use for Ctrl+C/V/X. This resolves bug #1139. * Improved the displaying of the connection status, and fixed problems where the status of only one of the active networks would be displayed. This resolves bug #981. * Fixed percentage display of available parts in the file-details dialog, where the decimal portion of the value would always be zero. This resolves bug #1060. * Improved thread-safety of the AICH-sync thread on amuled, and prevented the possibility of deadlocks in a few cases. * Fixed bug where the preferences dialog on the monolithic client would not be updated, if the preferences had been changed via EC after the dialog had been first shown. * Added support for protocol-obfuscation configuration via the EC protocol. * Fixed problem where obfuscation of out-going connections could be enabled even if obfuscation support was not, leading to clients being wrongly dropped. * Fixed check-boxes in the preferences dialog for the various obfuscation options not being updated, when one of the other obfuscation check-boxes were checked/unchecked. * Added the ability to update the nodes.dat file, and bootstrap from specific IPs, when using the remote GUI. * Added saving/loading of the previous URLs for the server.met and the nodes.dat files, when using the remote GUI. * Allow for the creation of ED2k-links on the remote gui. This resolves bug #893, #567 and #584. * Fixed link-creation for kad-only clients. * Fixed drawing of the grid for statistics-graphs on wxMAC. * Reduced needless offscreen drawing of statistics-graphs. * Fixed possibility of misordered points on statistics-graphs. xor: * Fix for crash on amuled when starting up kademlia. * Fix for crash when creating backing bitmaps for graphs. ycjhi: * fix for OSX aMule-CVS-20071115 fails in loading libixml and libupnp. * fix for aMule-CVS-20071115 doesn't update server.met on startup. Special Thanks to: * GeVauDan and gulp for their incredible 'litoral' webserver skin. * FreeToGo for implementing the first version of IP2Country on the forum. * Mark James (http://www.famfamfam.com) for providing the flags icons and mischamajskij for his unknown icon * deloun and mischamajskij for their work on aMule skins and icons for aMule * Dimitrios Galanakis for his work on language improvements * Bun Bun, for being there to tell me I'm not stupid. -------------------------------------------------------------------------------- Version 2.1.3 - The "We missed the 6/6/6 devil release and we're very sad" version ---------- 2006-06-11 GonoszTopi: * Fixed windows compilation, that was still broken. * Fixed locale bug. See http://forum.amule.org/thread.php?threadid=10178&sid= ken: * Fixed control-clicking (right-clicking) on tabs in notebooks on the Mac. * Fixed SmartLowID checks based on a patch/report by eyalzo. Kry: * Fixed GonozsTopi's fix for locale bug (double init). * Added script to import mldonkey downloads into aMule. * Fixed "0000867: French traduction is uncorrect grammatically". rene06: * Allow amulecmd to execute a global, local or kad search. Then you can get the results, which are shown in a list. From that list you can choose one file to download. Special Thanks to: * Me, because I'm the only one bothering to compile the changelogs. Go me! -------------------------------------------------------------------------------- Version 2.1.2 - The "We're on fire!" version ---------- 2006-03-28 GonoszTopi: * Fixed some warning messages. * Fixed windows compilation. * Fixed compilation in release mode. Kry: * Fixed initialization of Partfile, Server and Knownfile objects on remote GUI. This fixes a good bunch of bugs, including but not limited to: * 0000741: the total speed possible is incorrect. * 0000774: Amulegui show comments ->segmentation fault. * 0000605: Incorrect ICH statistics data * 0000812: amulegui: wrong ed2k ports in server list * 0000776: amulegui segfaults * Fixed potentionally huge memory leak on EC. This is the main focus of this release, but that didn't stop us from adding more stuff ;) * Fixed "0000809: Amulegui: Changing toolbar orientation shows the Import button." * Reworked core/GUI comment handling to allow for future display of comments on remote GUI, and meanwhile, added an nice message to notify it's disabled. * Fixed "0000738: Set search type to KAD if only KAD is selected as usable networks in settings" * Fixed amule.conf not being saves on remote preferences change. * Fixed ping time on servers, down to msecs resolution now. lfroen: * Prevent bad_alloc thrown on invalid connection attempts on EC. * Adding support for 64-bit filesize to webserver and php lionel77: * Display "Share Ratio" in shared files list. Phoenix: * Compilation fix for auto_ptr<> on Mac. * Fixed crash on amulegui when exiting. * Fix for CheckDirExists() for empty directory string. * Slightly more informational error message in amuleweb when the template is not found. * Fix for bug in ReadyPath() function. * Create a backup of the log file upon init. * Added SOCKS4a support. TimDzang: * Fix for wrong filename string in IPFilter.dat. Vollstrecker: * Added check if locale could be set, before adding the language to the options dialog. Xaignar: * Ensured that partial files left from failed file-completion attempts would be removed. * Fixed crash on remote gui when attempting to reload the ipfilters. * Fixed sorting of servers by ping-time, such that servers without a known pingtime are sorted last. * Added a "Password incorrect" message to the login pages, for when login failed. Also added a warning in case no passwords were set. * Ensured that known-file objects are properly initialized on the remote gui. This among other things fixes not all of the items on the sharedfiles list showing a 'has-comment' flag. * Compilation fix for GCC 3.2. * Fixed CheckDirExists not working for root-paths (on both windows and linux) and not handling all types of path-seperators on windows. * Fixed security problems with aMuleWeb: * All images could be accessed, even when not logged in, and this included dynamically generated images, such as progress bars and graphs, resulting in various information leakage. * It was possible to craft an URL such that any image on the harddisk would be returned, provided that the full path was known. File types were decided by the filename extension and included 'gif', 'jpg', 'ico', 'png', 'bmp' and 'jpeg'. * When logged in, it was possible to craft an URL such that any html or php file on the harddisk would be returned, provided that the full path was known. File types were decided by the filename extension and included 'html' and 'php'. * Decreased the minimum value for Max-Connections in the preferences dialog to 5. Special Thanks To: * The usual people * From Kry: to the one that makes it all worth it. * quinox, for helping us find the security hole in aMuleWeb. -------------------------------------------------------------------------------- Version 2.1.1 - The "There can be only two! Point one! Point one!" version ---------- 2006-03-18 GonoszTopi: * Fixed sources coming from an 'Unknown' origin. ken: * Fixed Mac aMule showing erroneous version number in Get Info. * Disabled the HTTP download progress dialog on Mac (again) because it causes crashes. * Suppressed an error dialog on failure to lookup the host's domain name. Demoted it to just a message in the log. * Fixed a bug in ed2kHelperScript.app (the Mac ed2k link handler) which prevented it from working properly if there was a space in the path to the aMule application. Thanks to Gomaaz for finding this bug. * Eliminated false reports of failure to execute the on-completion command. This happened with amuled and an on-completion command which completes quickly. Thanks to s0undt3ch for reporting this bug. Kry: * Fixed a bug on sending sources where sources won't be send to a client uploading from us if he uses multipacket. * Fixes some crashes, on systray dying, tho not all till wx is patched. * Fixed some possible problem with userhash generation, that could lead a void userhash. * Fixed defs.h include on MuleDebug.h causing compilation problems on some systems (must be first wx include). * Fixed search type "Any" * Fixed translation of empty strings, which is reserved to gettext and must never be used. * Fixed the aMule.app container lacking a Frameworks/ folder and thus making the generate_package script fail. * Fixed compilation of wxCas with wxWidgets CVS (2.7.x) * Fixed ED2K id wrongly used on kad-only setups. * Added the --reset-config flag * Fixed Kad's sources/nodes search results, based on a patch by tatikiran and further modified by John (eMule) and me. * Removed Razorback 2's stats while it's gone. * Disabled vertical toolbar on Windows while wxWidgets doesn't fix it. * Fixed aMule failing to find configuration folder and any folder that finishes with a "\" on windows. This leaded to shared folders not being shared, too. * Fixed drives on windows not being correctly tested. * Changed default server.met Radek: * Fixed amulemd output not being printed immediatly when running in a mingw terminal. * Added missing include to GetTickCount.h, which caused the function declaration to be missing in some cases. Raziel: * Fixed "0000690 bug for browse windows in amulegui" Xaignar: * Fixed problem with recursivly sharing folders that hadn't been expanded in the tree ctrl. * Improved detection of external Crypto++ versions. * Fixed somee possibly crashes, caused by failed unicode convertions. * Improved error-checking when creating the .aMule data folders. * Fixed problem with searching for files of type 'Program', if a search of a different filetype had been done just before. * Fixed a problem with shared files, where danling pointers to client objects could be left in some cases. * Changed the way MD4 hashes are converted from Base16, in order to improve error-checking. This adds aditional safety to places such as parsing of ED2K links and adding of friends. * Fixed bug where clients would be removed from the list of Kademlia clients if the hash, ID or IP changed. This should only happen when the client is deleted. * Fixed various problems with logging during startup, including a crash in amuled if an alert was to be displayed. * Fixed the HTTPDownload dialog by using events rather than relying on being able to pause the main loop when sending notifications. Also properly aMulified the dialog. * Entries for debug-logging are now always saved to the amule.conf file, to allow amuled users to enable these manually. Before, the entries were only written for enabled debuglog-types. * Fixed problem in loading of known.met, which would result in duplicate shared files alternating between which file was actually shared. This resulted in statistics for the file being 'lost'. * Added locking to the ed2k utility, to prevent races when many links added at once. * Changed the way CFile retrieves the file-length, which was causing problems with files shared from a remote drive. * Fixed problems with representing 64b values on windows, caused by imcompatible extensions to printf. Thanks to Radek. * Improved error messages on startup, when a folder is found to have inadequate permissions. * Fixed problems with identifying reconnecting clients, which would cause a number of problems, including exessive bans. * Fixing right-clicking (for recursive sharing) only being possible on the directory icon, but not the label. * Fixed sorting by client-version on the downloadlistctrl (bug #763). * Changed the sort-order of A4AF sources, so that these are always shown last. This fixes bug #761. * Fixed assertion in the downloadlistctrl, caused by a bug in wxMemoryDC. This would trigger when a complete file was shown. * When a missing shared file is encountered, unshare just that file, instead of rechecking everything, since that would cause noticible lag for people sharing many files. * Fixed exec-on-completion being run even if the file failed to perform its completion. * Fixed the sanity check for the min/max ext. search parameters, which would cause the min value to be ignored unless a greater value had been set for the max field. * Fixed unicode searches, caused by mismatching string conversions. * Adding missing exception-handler to the the function searching for shared files. Without this, a failure to retrieve a filesize would result in aMule terminating. * Fixed userspecified CPPFLAGS being overwritten by the CXXFLAGS by configure. Thanks to Gerd78. * Removed references to amulecmdgui and amulewebgui, which had been left behind from when the utilities were removed. * Overrode wxConsoleAppTraits's WaitForChild function for aMuled, allowing wxExecute to be used asyncroniously. This fixes problems with using the exec-on-completion functionality. * Improved sanity checks for the TTS implementation. * Changed paused state to stopped state in some cases, which had been incorrectly changed to paused by myself. * Added Maximize/Minimize buttons to the file details dialog. * Fixed dangling pointers left behind, leading to crashes when a server.met file containing dead severs was loaded. Special Thanks To: * All the translaters who did such a great and fast job. -------------------------------------------------------------------------------- Version 2.1.0 - The "I just teased you with this release till 2006" version ---------- 2006-01-01 Note: This version is dedicated to our great tester Citroklar, for reasons he knows. ender: * Fix adding AICH links with amulecmd. fulgas: * Added Kad info to amulesig * Fix for reading Kad info on the amule-utils: amps,cas,wxCas,xas Gerd78: * Fix linkage with static wx libraries. * Fix aMule.spec files * Fix amule.desktop file GonoszTopi: * Fixed a small GUI glitch * Ported the partfile importer from eMule, it's now capable of importing eDonkey2000 partfiles. MLDonkey partfiles are not yet supported. * Hid the "debuglog" entry in webserver, it had the same contents as "log". * Moved CTimer class declaration to its own header file. * Internal events moved to their own header. * Proper termination of working threads in webserver. * Moved GetSoftName() to DataToText.cpp. * Changed the RGB() function to produce correct rgb values. * Added ability to transmit floating point numbers via EC, by transmitting them in their string representation. * Using svn revision number as CVSDATE for svn working copies. * EC now uses a version ID for detecting binary incompatibilities. * New function: CastItoSpeed(), which converts the given integer value (assuming it means bytes/second) into string. * Changed 'K' prefix for 'kilo' into 'k'. * Brand new statistics tree. Features include: - internal data is kept up-to-date realtime - support for translation over EC - selectable maximum of client versions shown - remote gui also has the statistics tree * Win32 compilation fixes. * Manpage file names now can be transformed. * Fixed linkage with shared win32 wx libraries (DLLs). * Fixed #538: extended info on tabs aren't removed * Fixed webserver search result page blank. * Strict POSIX compliance in configure script, fix for NetBSD sh. * Removed some strings from translation database that never needed translation, such as "|", "(", "." and so on. * Fixed #521, #525, #542: amuled didn't handle shutdown command well. * Check for libpng existance and usability even if libpng-config doesn't exist. * Fixed #545: Can't tell part number in remote gui * Disabled 'Preview' menu item in remote gui. * Fixed #543: amuleweb does not load the good language * More handy (or proper or native or user-friendly or call it whatever you want) default incoming folder for Mac and Win. * Implemented #510: Rename downloaded files from amule * Made amulecmd able to connect/disconnect kad and/or ed2k. * Proper location for config files on Mac and Win. * Reworked amulecmd's command interface. * Removed #pragma directives from sources. * Various fixes to the new build system. * New EC socket code. * Fixed vertical position of text in shared files list. * Added preference option to select web template for auto-started webserver. ken: * Use the IPFilter when adding and connecting to servers. Thanks to MrFaber for reporting the bug. * Along with GonoszTopi, proper location for config files on the Mac * Along with GonoszTopi, better default location of Incoming directory * Mac compilation fixes * Added more keystrokes (Backspace, Numpad Delete) as synonyms for Cancel in Downloads list * Improvements to internal memory management to protect against leaks in the face of exceptions * Protect use of mutexes against exceptions * Enabled language translation support for the Mac binary * Don't show the 'x' close buttons on the search results tabs on the Mac, since they are non-functional and confusing * Maintain the functionality of control-clicks (right-clicks) on tabs for search results and categories in the face of wxMac changes * Helped avoid endianess problems with Kad * Fixed handling of empty seeds files * Fixed crashes involving CSharedFileList. Special thanks to lionel77 for truly heroic debugging efforts. * Fixed a crash in amuleweb when the template isn't found * Contributed to improvements in the new CTimer class * Disabled the tray icon preference settings on the Mac since they're dangerous (can cause crashes) KingFish: * Fixed systray shared files count. Kry: * Initial Kademlia import from eMule. * Fixed endianess problems on Kad. * Cleaning of the CContact class. * Fixes on node lookup and distance calculation. This is colaborative development with John from eMule. (Added to eMule 0.46c) * Fixed a crash on Kad search terms on the UDP listener. (Added to eMule 0.46c) * Proper catching and more debug on Kad search and Data I/O * Proper shutdown of Kad on exit. * Kad firewalled sources are now contacted properly. * Fixed a crash on search manager, caused by erase invalidating an iterator. * Proper arrows for ed2k/kad state, using alpha drawing. This means that the little arrows on world globe on status bar are now separate: the lower one is for ed2k and the higher one for Kad. * Fixed another wrong usage of stl classes and some cleaning on clientlist. * Added GUI checkbox to show/hide Filter options. * Added -D_GLIBCXX_DEBUG to compilation flags. * Fixed a crash on kad indexes caused by deleting the key invalidating the iterator. * Cleaned the connection state functions out of their container classes to theApp. This fixes possible crashes on uninitialised serveconnect/kad classes. * Removed all low-level winsock/linux sockets erferences from code. * Moved wxEVT_NOTIFY_EVENT to wxEVT_MULE_NOTIFY_EVENT to avoid conflicting with wxWidgets own definitions. * Removed daemon fork on windows to fix compilation. * Fixed text-mode apps password ask on windows. * Fixed preferences close to do a cancel event. * Added EC debug messages on connection failures. * Fixed memset usage on abstract types, causing crashes on some configurations. * Only use date and not hour from CVSDATE. * Fixed MULENOTEBOOK events * Fixed connect button behaviour, about 17 times (counted). Last implementation does: - Connect to enabled networks if aMule is not connected to any. - Disconnect if aMule is connected to any network. * Fixed aMule remote gui to use event-driven EC. * Fixed WOULDBLOCK on EC to retry tranfer. * Fixed wxSOCKET_NOERROR not triggering a transfer on EC. * Rethrow proper info on invalid Kad tag. * Deprecated docs/amule-win32.HOWTO.txt, use wiki instead. * Fixed GCC 4.0 compilation: * ~CMD4Hash() * ~CValueMap() * CValueMap * Update Kad tab on usercount change. * Fixed wxSOCKET_WOULDBLOCK/NOERROR on EC to avoid losing packets. * Avoid widnows execution writing ont he registry. * Fixed Solaris Sparc compialtion (-lrt compilation flag). * Throwing invalid kad type tags for debug measures. * Acording to RFC3330, 24.* and 14.* must be parsed as normal ips. * Some fixes to the (still partial) skin engine. * Allow to expand relative paths on skin engine. * Fix for too big tags (larger than packet) detection. * Updated POTFILES.in, lots of times. * Updated and centralized client emule compatible numbers. * Fixed wxWidgets includes based on version. * Fixed clicking "No" on shutdown confirmation... doing a shutdown. * Adding a link over EC now gets proper feedback on duplicates. * Added YASO (Yet Another Shareaza Opcode). * Allow binding EC and ed2k/kad sockets to an specific address. Use Address= and ECAddress= on [eMule] section of the amule.conf file. * Warn for outdated version on daemon, too. * Added Kademlia network to aMule daemon. This required an split of core/GUI of the initial import. * Removed a big bunch of duplicated EC calls to connection status. * Show Kad status on remote apps. * Fixed a possible memleak on CKnownFile creation. * Added hashing protection about hashing more than one part at a time. * Fixed a memleak on global search packet. * Fixed Kad crash based on wrong STL iterator usage. * Compilation fixes for SafeFile classes. * Chat icon on toolbar now blinks red/blue on new message till we press the button to check the message. * Make compressed HTTP files be decompressed transparently after download. Allows for server.met.gz and similar downloads. * Fixed the statusbar taking too much space. * Default server.met uses gruk.org now, to avoid fake servers. * Reverted phoenix false fix for my kad iterator fix and adding my fix which was before his fix. Try to say that drunk. * Several cosmetic minor changes to GUI. * Fixes on wxHTTP crashes caused by heap creation of sockets class. * Moved ECAddr to ExternalConnect section and made GUI for selecting the ip. * Fixed korean translation compilation failure. * Several 2.4 compilation fixes, which turned out to be not used because we now require wxWidgets 2.6.0 at least. * Fix NetBSD compilation (fwprintf not implemented on NetBSD). * Fixed some unneeded ansi strings conversion to wide chars. * Endian fix on Kad UDP packets being sent... elsewhere. * Several fixes on endianess over source exchange and ip filtering. * Debug output and crash fix for HTTP streams on download. * Fixes on keyword hashing on Kademlia. * Fixed Kad tag names using ansi chars instead of unicode names, which will be sent as ansi anyway but CTag creation is based on wxStrings, so using a char* uses the int constructor. * Removed the CTagNameString, using wxString everywhere. * Fix for GUI systray option being enabled when systray compilation is disabled. * Server ed2k link (and any link) must be '/' terminated, fixed on generation. * Debug output on EC protocol version mismatch. * Changed servers toolbar button to networks. Now this has two tabs, one for ed2k and one for Kad. * Created Kad GUI from scratch. * OP_REASKCALLBACKUDP implementation for Kad lowid * 64bits archs fix on webserver image generation. * Removed CT_PORT usage on server login - is ignored by eservers now. * Removed Kad search list ctrl - it's just debug output user won't need. * Removed Kad nodes list ctrl - it's just debug output user won't need. * Modification's to lupz's patches on Kademlia sources search. * Compilation fixes on ClientList for Kad contacts. * Checks for 0-port UDP packets to avoid 100% CPU usage. * Lots of Kad cleaning on the imported code, contacts, searches, UDP packets processing and routing bin * Removed kademlia/utils/Ping.* - unused on this implementation. * Fixed a crash on Kad exit caused by double-removal. * Fixed remote GUI compilation with Kad enabled. * Changed invalid rating on a file to non-critical (keep source!). * CPU fixes on duplicated calls to rating updates. * Some fixes to rating icons. * Killed muuli's pragmas. * Moved search id's setting to search class itself. * Fixed searches' timspan on CParfile::Process * Reworked src/Makefile.am to handle common files. * You can change toolbar to vertical/horizontal on GUI tweaks now. * Removed fakecheck (sites down). * Fixed a crash on HTTP download dialog caused by wrong usage of delete. * Fixed toolbar orientation change not showing proper connection state. * Fixing ED2K link handler colliding with status bar. * Added 7z to types. * Mantain a list of already-known mods to avoid "Compatible client found" messages spamming the console. * Revamping of UpDownClient interface. Proper private vars and public accessors, merged the public/private sections, and decoupled credits classes. * Fixed possible crashes on dereferencing NULL pointer, specially on EC tag creation on UpDownClients. * Separated CClientCredits and CClientCreditsList to diferent files: the later is not needed on remote GUI while the former is. * Moved some functions for ID check to theApp, to remove the includes needed on each file, cutting down compilation time. * CClientCredits is not more a friend class of CClientCreditsList. * Split CClientReqSocket from ListenSocket.*, and renamed to CClienTCPSocket to keep coherence with CClientUDPSocket. * Removed event handler local vars on server and client sockets, and moved the classes out of the .h, because those are no needed anywhere else. * Removed the possibility of bootstrapping Kad from a host. * Fixed the stale unknown clients caused by unanswered kad-buddy requests. The new KADEMLIABUDDYTIMEOUT is 10 minutes. More than enough. * Connect/Disconnect button works properly now. Disconnection happens on any network connected, and connection on the selected networks on preferences. * Added a Disconnect button for ED2K too. * Fixed possible crash on startup. * Tray icon is now shown as connected if any network is (ed2k or kad) * A lot of class separation and file/class renaming, to prepare the build for... * Build system changed: - Added some intermediate libs to avoid double-compiles: (Binary compatible files only) - libmuleappcommon.a -> Common to all aMule derived apps - libmuleappcore.a -> Common to amuled/amule - libmuleappgui.a -> Common to amulegui/amule - Also changed some files to increase the amount of binary compatible files. Would be great to increase this number, but sadly theApp. access is not binary compatible (different base classes). - Created two amule-independant libs: - libcommon.a -> Common to all apps - libecc.a -> Common to all EC apps Those are now on libs/ folder. * More changes to build and libs. libeccommon now includes ECSocket, and CRemoteConnection is used to connect to a remote core. * Make libec independant from libmulecommon * Call realize to fix toolbar on Mac. * Open wiki on F1 for help :) * Stats have a 64bits, not 32bits, uptime number. * No more EC extra needed for having a remote app, yay. Just link to libec.a and use the CRemoteConnector->ConenctToCore and stuff. This will be expanded for a proper EC API. * Did some EC API examples so someone can expand it. * Tooltips, proper names, and layouts for the connection ports. * Fixed compilation flags for base-only apps. * Lots of GUI visual glitches fixed. * Fixed ping times on servers being in ms instead of secs. * Now core timer is on a thread, and it behaves much better. * Fixed core timer silliness on time count. Much more acurate now. * Workarounded the memleak caused by wx < 2.6.2 * Fixed it.po (twice). * Some debug to aid locating rogue clients and know if it's actually us. * Save source seeds now saves 10 sources, but only keeps them for a Max of 2 hours. * Added search expressions class and parsers. * Fixed flex usage when --header-file is not available. * Proper POTFILES.in * Fixed systray's Connect/Disconenct to include Kad. * Fixed a huge bug that was sending TOO MUCH packets (UDP) to servers. This alone is a reason for a release. Fixes the server list flicker, too. * Kad status fixed for remote apps, and included "running" status. * Kad info is shown on Kad tab on remote GUI. * Avoid ping storms by lugdunummaster request, adding a random value to server UDP ping. * We should not publish FT_FILEFORMAT at all. Fixed. * Publish only file rating if we have any. * Update on server flags - added related search and type tag integer. * FT_FILETYPE can be an integer for newer servers, added support. * As for lug request, newer servers get a integer filetype tag if supported. * Enable connect/disconnect Kad from remote gui. * Some basic warnings on value changes for preferences. Now, if you request a change on preferences that requires restart, like ports, incoming/temp folders, and others, aMule will warn you on "OK". * Don't connect to ed2k on server double click if the network is disabled * More warnings: Kad without UDP port, and Kad conenct while disabled on preferences now raise a log warning message. * Dynamic set of GUI options to avoid visiting prefs multiple times. * Warn if UDP disabled and Kad enabled on preferences. * Fixed Scanner.y to allow compilation with old flex versions. * Fix installation or webserver's Kad page. * Use the generic function instead of X11-specific one for geometry parsing. Fixes compilation on several platforms and removes dependency on X11 headers. * Removed duplicated code and cleaned CDirectoryTreeCtrl * Fix for continuously trying to solve a DNS server. * Fixed some memleak on contact results. * Fixed mem corruption, and contact asserts on the new merge code for kad contact trees. * Kad notes filtering * Fixes crash on startup onMac and Windows caused by an unitialized variable being used at dialog construction. But not on wxGTK. Go figure. * Update on wxwin.m4 to wx-cvs of 15/12/2005 and proper base flags usage. * Minor amount of libs to link for wx, instead of all libs. * Fixed a crash on wxGetTranslation usage on Windows. * Fixed an assert on folders tree control on windows. * Fixed the initiazlization of status_arrows to proper size (16x16) on Windows. * Fixed the status arrows on windows, and fixed wxWidgets bug that caused it. * Changed file to output stream on HTTP download. * Fixed a endless loop on downloading files < 10 bytes on HTTP. * Fixed Kad nodes download by stopping Kad before the file is renamed. * Fixed crashes on HTTP download. * Added support for proxy usage on HTTP download, via environment variables. * Fixed input streams on FileFunction's handling of gziped files. * Fixed download of gziped files on windows. * Fixed extension Kad search * Fixed crash on search * Removed the sending of "Any" type to server - is the default. * Fix search types and return values on ed2k/kad search. * Fixed a wrong Kad packet being created on a race condition caused by the removal of a file from shares that will just get published. To be added on eMule, too. * Fixed Open File command on categories. * Fixed detail level on EC tags failing silently on lower values. * Fixed crash on remote gui if not config folder not existant. * Created, fixed, killed the --enable-kad-compile switch to enable non-kad compilations during test phase. Now is always compiled. * Removed platform specific getlocalhost usage. * Fixed ntohl usage on gap list saving. * Removed wrong Merkur (c) from php libs (sorry Merkur, but those are ours :P) * Fixed strings on log categories for protocol. * Listensocket's fixed for debug on connection accept. * Multiple Kad searches are allowed now, with independant tabs. * Debug messages regarding late / unwanted kad searches results. * Fixed Kad gui search return messages. * Safety code on shared files' RotateReferences. * Fixed endiannes on CUInt128::setValueBE / CUInt128::toByteArray * Fixed ENDIAN_SWAP_**(x) definitions to use the proper wxUINT**_SWAP_ON_BE/ON_LE/ALWAYS macros. * Publishing of keywords (shared files) works now on Kad. * Implemented Kad GUI. * Fixed low speed connection to sources when only connected to kad * Fixed Kad callback of lowid sources. * Fixed Kad usage when ED2K is disabled. * No more auto-reconnect on disconnect (woops). * Speed up catch and proper window ID on HTTP download class. * Added wxIdleEvent::SetMode(wxIDLE_PROCESS_SPECIFIED) to app startup, cutting CPU usage a lot. Go figure. * Changed the socket destruction to socket's Safe_Delete. * Fixed a GetUDPPort usage where GetEffectiveUDPPort should be. * Added UDP socket warnings on unknown errors. * Client UDP socket error handling rewritten. * Fixed UDP socket heap vs stack problems. * Proper check for libgd (Sorry!). * Showing Kad state on conection for fast reference. * Added some code to catch unhandled exceptions on kad and report them, so we know what's going on. * Fix for crash/assert on wrong permisions on cryptkey.dat. * Fixes for daemon compilation on OnRun usage. * Fixed a Crash on Kad caused by packet constructor deataching the data, causing a double-delete. * Safety code for uncatched exceptions. * Some changes to packet processing. * Fixed a big mem bug on Kad. * Fixed a bug with iterator usage in SearchManager.cpp * Fixed a bug on PARTSIZE calculation that could lead to insanely large partsizes. * Fixed possible buffer overflow on gap saving * Fixed the RSB of this release. you know, one per release. (for those that are new to aMule, RSB = random socket bug) * Cleaned, cleaned, cleaned code. * Fixed: 0000492: aMule gui fails to compile when using wxMotif 2.6.1 0000514: Not all common file types recognized as Audio 0000516: crash after repeated search 0000646: right click on transfer files randomly disabled 0000659: disconnect button might not disconnect kad and block it's function 0000661: windows consistency 0000662: amulecmd crashes on invalid pause command 0000671: open file on double-click 0000691: connect/disconnect button is still broken 0000704: servers connection cancel button 0000715: prefs -> general -> "downloadlist dblclick to expand" option is broken or something 0000716: prefs -> seeds save, wrong text 0000718: more systray ignoring kad 0000719: searches -> extended -> min size vs max size 0000730: statistics connections graph Range requires restart 0000729: search query string parser 0000732: more brackets related bugs 0000733: download button activated when search fails 0000734: non-restored icon in Directories -> share lfroen: * PHP engine implementation for amuleweb * Porting web templates to PHP script lupz: * Kad speed improvements. * Kad sources search improvements. * Fixed manual bootstrapping via the Kad dialog. * Properly swap IPs when doing logging in Kad. * Avoid trying to close the file multiple times when resuming a part-file that failed to complete. Phoenix: * Removed wxGTK and wxGTK-devel dependencies from the spec file. They don't work on all distros, even worse, don't always work with Fedora Core. * Created a new spec file, compliant with Fedora Core. * Fixed a crash when aMule was shut down by amulecmd and an assert happened. * Fixed asserts on exit about non-empty lists when aMule was shut down by amulecmd. * Small compilation fixes. * Fixed deadlock in ClientUDPSocket.cpp. * Crash handler improovement, avoid calling functions that may allocate memory. * Fixed some compile warnings in WebServer.cpp. * Fixed a crash in SharedFilesWnd.cpp due to aMule beeing now multithreaded. * Changed wait4 to waitpid in amule.cpp, to improove compatibility with old HP-UX systems. Ramiro: * Patches to compile on a NSLU2 (ARM). RazZziel: * Changes on parent ownership on windows. Partially fixes 0000690: List of windows that can be overlapped by main window and leave aMule apparently freezed schtroumpf: * File rating in search dialog. * New file rating icons. * Replaced file rating good/bad with a rating average like in emule. * Amule submits file rating to the server. Seagull: * Fixed a small bug on client list view. shakraw: * Merged with 2.0.3 latest fixes (r4630, r4631, r4633, r4639) stefanero: * Fixed cas,wxCas and xas infos for Kad when only connected to Kad * Imported amps in aMule source thedude0001: * Added CVS snapshot date to frame title. * Fixed #560: "aMuleWebDLG and aMuleCMDDLG do not report version" volpol: * A4AF transfer speed display fix Xaignar: * Fixed the possibility of crashing when sending a message to a non- friend client, caused by the fact that the client could be deleted before the user entered the message. Also prevented attempts at sending messages clients that wern't ready. * Fixed crash when '--version' was used, caused by an uninitialized pointer. Serveral other uninitialized pointers were also fixed. * Fixed assert in the Type-To-Select code which would trigger when items were removed and the old tts index pointed past the last item. * Fixed kad-searches with a filetype specified not producing any results, caused by using obsolete type-strings. * Added missing calls to va_end at places where va_start is called. * Remove unneeded calls to wxMutexGuiEnter/Leave. * Fixed the listctrls asserting if one were to click past the end of the last column header. * Fixed unhandled-exception handling in unittests, which had been broken when they were made console apps. * Fixed sscanf call in PHP lexer, which had switched the source and the format arguments. * Performed audit of printf type calls. Serveral bugs caused by using the wrong printf variant were fixed in the webserver. All instances of calls to sprintf variants were changed to snprintf to prevent buffer overruns and calls to printf that passed a dynamic string as the format string were changed to prevent using untrusted format strings. Lastly a few places where widechar and char where mixed were fixed. * Avoided checking the same folders multiple times when looking for shared files, by ensuring that duplicate entries (from categories, etc) are ignored. * Fixed minor mem-leak in CTimer. * Deleting a static server now also removes it from the static list. * Fixed disabling of graphs while the prefs-dialog is still open. * Fixed logging on UDP-sockets displaying an integer value rather than a dot-IP. * Made the ipfilter.dat URL field independant of the auto-update check-box, to allow for easier manual updates. * Fixed log-events not being written the logfile on full daemon. * Improved displaying of errors when starting the webserver from amuled. * Allow resuming of files that error'd out during completetion. * When checking if a file is already being downloaded/shared, check if the actual file is still available. This allows redownloading of shared files that have been removed, without having to reload the list of shared files. * Added checks to see if the target filesystem is fat32 when completing files, and removing known illegal chars in that case. * Important log-lines are now bolded in the log textctrl. * Redirect wxWidget log-events to the aMule log. This avoid the popups that wxWidgets would display by default. * Made the unittests proper wxConsoleApps. * Open the preferences dialog non-modally, so that it doesn't block the main GUI. * Switched manual path-joining to using the generic function. * Fixed the "pause all" and "cancel all" commands via remote. * Fixed bad replies on sharedfiles-list requests when public viewing of the list is disabled. * When a message is filtered, always display the "Message filtered ..." log-entry instead of the "New message ..", rather than only displaying the "Message filtered" the first time, and then only the "New Message" the following times. * Cleaned up the file-completion thread and fixed the following: * If creation or starting of the thread failed, the file would silently fail to complete. * If the file was renamed, the download queue show the old name. * If the file was renamed and didn't have an extension, the "(x)" component would be added to the front of the filename. * When checking for unused filenames, if an file with the same name exists, the path would be a changed to the standard incoming folder regardles of the file's category. * wxFileExists was used to check for the existance of the files, possibly leading to false negatives with unicoded filenames. * Fixed files being added in stopped-mode when the "Add downloads in paused mode" setting was enabled. Since the "Start next ..." works on paused files, this makes more sense. * Fixed bug #513. When "Start next ..." and "Same category .." was enabled, we would still select downloads from the wrong category, when there was still paused files in the desired category. * Changed the StopPausedFile from actually stopping the file to simply clearing the sources, as this is the intended goal. Stopping the file was wrong, considering that it would leave a window of one hour in which the "Start next paused download" code would be useful. * Added generic function for joining two paths. * Dont allow renaming of downloads that are being completed. * Made the comment-list dialog resizable. * Enabled use of tool-tips on all wx-variants. * Fixed Kad-Info and ED2K-Info lists not having any scroll-bars. * Fixed compressed Kad packets having the wrong procotol set. Thanks to Gnucco for the pointing this out. * Only show the root-item circle for incomplete part-files. * Prevent the adding of friends without IPs, via the clientlistctrl. * Fixed serveral problems caused by the reuse of the preferences dialog window. * Improved the popup menu on the downloads listctrl. * Fixed starting of next download being called under the wrong conditions when files were deleted via remote. * Dropped the HTML version of ed2k-links. * Fixed shutdown of the amulegui when the systray is enabled. * Fixed bug #359. The preferences dialog is now reused between sessions, so the last used page and the state of the shared-files tree is remembered. * Only enable the host-version of ed2k-links when a hostname has been specified (still no perferences widget for this). * Fixed bug #700. The partfile conversion window is now raised properly when the button is clicked again (doesn't work with gtk1). * Improved logging in CFile in situations where system-calls are used. * Improved permissions checks for the .aMule folder. Also added checks for the Temp and Incoming folders. * Fixed an unconditional Close call when creating part-files, which happened even if opening the file failed. * Fixed the names of friends being cleared on the chat-notebook when the clientobject disconnected. * Ensures that both the downloadlistctrl and sharedfileslistctrl are both up to date when a file has been renamed. Also switched to using the same dialog on both listctrls. * Check for items being sorted was moved to the CMuleListCtrl class, and to fix flickering on the server-list and and searchresult-lists, which is caused by insertions and deletions, the list is resorted instead, if an item is out of order after an update. * Drop the use of jugle.net. It's dead, Jim! * Changed the 'Clear' button on the search-page to only clear search-results. The 'Reset' button now takes care of the text-field and any extra parameter-fields. Serveral fixes were made to make sure all fields were properly cleared. * Properly set filtering on newly added search-results. * Fixed broken sanity check in AddDownload * Bug #688. Made the popup menu on the searchlistctrl similar to those on the downloadlistctrl and sharedfileslist. * Added serveral missing exception-handlers. * Ensured that the internal libs are only built when needed. * Fixed ed2k-links causing duplicate entries on the download-queue and made the sanity checks in AddDownload safer. * Made the interal CryptoPP files part of the one of the temporary libraries to avoid building it three times (amule, amuled, amulegui). * Removed printf-call from signal-handler. * Unified download-handling on the search-page and fixed the download button, which was broken by previous commits. * Fixed a leak in the UDP sockets which occurs when packets are sent via a dead or closed socket object. * GetInstallPrefix is broken on wxWidgets 2.6.2, so only use it when building autopackages (since we can patch the sources). * Improved logging in case of clients requesting invalid file-data. * Cleaned up autoconfigure files a bit. * Added sanity checks to the downloadqueue's AddDownload function to catch this, should the problem appear again. * Added checks to avoid loading duplicate partfiles, since downloads are identified by the hash. A warning is now issued when this happens. * Add a "Download in category" sub-menu to the right-click menu on searchresult lists and moved download handling to CSearchListCtrl. This fixes bug #673. * Specify if debugging was enabled on version strings. * Ctrl+a now select all items on listctrls. * Make aMule relocatable in regards to locales, and amuleweb relocateable in regards to templates. This is needed to allow usage of autopackage. * RotateReferences() now properly handles shifts larger than the number of files present and use std::rotate. * Files that are larger than the limit imposed by the ed2k network are now filtered from search-results. * Fixed drawing of the first column on the shared-files list, caused by the upgrades to the listctrl code. * Made one-shot CTimers interruptable and fixes a memleak in the Start functions caused by not freeing old threads. * Upgraded our included listctrl with the bugfixes from v2.6.1 and v2.6.2 of wxWidgets. * Fixed a couple of AICH log messages that were mixing unicoded strings and non-unicoded strings. * Made middle-clicking on the client-list work in the same way as middleclicking on the downloadqueue, and cleaned up click- handling in general. * Fixes the overhead-handling code in CTimer which wouldn't check if overhead was larger than the period, resulting in calls to Sleep with an underflown value. Also fixed events possibly being lost due to overhead. * Fixes crashes due to uncaught read-past-EOF exceptions when a cliented requested a block from a file past the end of the actual file-length. * If aMuled is run and ECs are enabled and no password is set, dont reset the EC setting, but rather display instructions that specify what to do before terminating. * Added warning which will be displayed if aMule is run as root, which is adviced against for obvious reasons. * Removed the --disable-systray configure option, since extra libraries are not required now. To disable the systray now, simply use the preferences. * Removed support for wxWidgets version older than v2.6.0. Support for wxWidgets 2.4.2 had been broken for a while, without anyone complaining, and the v2.6.x branch has been out for long enough to make usage of the v2.5.x branch nonsensical. * Added workarounds for the wxWidgets memleak when using GTK2 on versions of wxWidgets < 2.6.2 to the remaining places where this would occur. * Changed failure on file-seeking into a catchable exception, rather than a runtime error. * Fixed a crash on shutdown caused by the listensocket now being closed which caused a call to Accept to return NULL. * Fixed compilation with GCC-4.1 (snapshot). * Syncronized look of client-icons on download-queue and the client-lists (upload, queued, all), so that all display the same information. * Display an icon when downloads have comments but no rating, and added the same icons for both to the shared-files list, making it easier to keep track of what files are commented/rated. * Fixed all warnings reported by -Wshadow and -Wundef. * Added the compiler-flags -Wshadow and -Wundef, and changed configuration such that warnings are enabled for both debug and non-debug builds. * Largly reworked the CTimer class: * Fixed all timers sending events with the same ID. * Removed use of static variables which would cause troubles if more than one repeat-timer was used. * Ensured that no event would be sent if the timer was stopped while sleeping. * Improved thread-safely a lot and made the threads detachable. * Added function for terminating all timer-thread on shutdown, so that no timer-threads will be left running. * Fixed SSE2 support check in the embedded cryptoPP code, for gcc-4. * Fixed a couple of bugs caused by variable-shadowing. * Flush log-buffers when waiting for either of the hashing threads to terminate. * Removed manipulation of gui-mutex in AICH thread, which are no longer needed due to changes in log-handling. * Removed local variable which shadowed a variable when checking if a client was a friend. This caused the friend to link to said client even after the client had been deleted, since the client would not unlink itself from the friend. * Only store the descriptions of IP-Ranges for the ipfilter on debug-builds, since this value is not used on non-debug builds and can account for serveral MB of used memory. * Fixed new-connections being opened on shutdown and the new clients being created. This should fix the assertion in CClientList. * Added a call to wxUpdateUIEvent's SetMode function, to reduce the ammount of unnessesary events being generated. * Fixed clearing of background for list-items that do not have a background color set. * Resized a couple of buttons that were too small to display their image. This fixes bug #648. * Improved double-buffering of listctrls a bit. * Fixed auto-sorting checks on the server-list, which were inverted, causing items that were already sorted to be re-position and so forth. This was the source of the large ammount of flicker on the server list. * Fixed the "Time Remaining" column on the downloadqueue when no downloads were taking place. * Removing unneeded checks for fat32 filesystems. * Improved handling of closing of the preferences dialog. * Changing kad-nodes label to display "Nodes (0)" by default. * Force the UBT to take a increasingly longer nap between loops when it fails to send anything, which ensures that it wont go bananas it is unable to upload at the specified rate. This would happen for instance if the limit is set to a value higher than the physical connection limit. This fixes bug #606. * Re-added the node count above the kad-graph, and a few other changes. * Removing unused color-setting, which was causing problems with the kad-graph. For this change to take effect, you will have to remove your StatColor* entrires from amule.conf. * Fixed bug on the kad-nodes statistics, where entries added while the dialog was not displayed would have the value of zero. This fixed bug #652. * Fix for selecting tabs (+ popup menu) via right-clicking on GTK2. * Allow previewing of audio-files, fixing bug #654. * Reworked the ED2KLink class: * Simplified parsing a lot. * Moved the task of handling sources specified in file-links almost entirely to the download queue. * Improved error checking. * Implemented handling (not just parsing) of part-hashes and master-hashes specified via file-links. * Fixed support for multiple sources in a file link, which fixes bug #506 * Properly replicate file permissions when copying files via the UTF8_CopyFile function. Also removed an unneeded free/malloc set of calls by allocating on the stack. * Added the ability to execute commands when a download has been completed and removed some unimplemented options from the preferences. This fixes bug #152. * Update the "clients on queue" count when purging clients. This should resolve bug #478. * Properly disable filtering on searches when filtering is supposed to be disabled. This approach does also not remove the existing search-string if filtering is toggled on and off. * Fixed the kad-statistics using the colors of the download-statistics rather than its own settings. * Implementing kad-node graph. This patch does not add support for the graphs on the webserver. * Removing trailing "i"s from time values created by CastSecondsToHM. * Reduced log verbosity when deleting downloads. * Sync deletion of items on friend, download and server lists via the Delete key. This resolves bug #649. * We now completly disallow the sharing of the users home-dir. * Changed the check for file-size in the hasher-thread, which was using a too large value, greater than what is actually supported by the ed2k network. * Fixed compilation on the x86 version of MacOSX. * Added specialization of the CRangeMap class which doesn't contain a user-value per range, dubbed CRangeSet. * Added the IP and port of friends to the initial text when opening a chat window. This should more easily allow for adding of clients to the friends list if they message us. This is not a final solution. * Added sanity checks to CStatisticsDlg's getColors function. * Changed some CList instances to stl containers. * Fixed bug in CKnownFile where auto-priorities would be updated before the source had been added to the list. * Improved testing of CRangeMap's iterator classes. * Final changes to CFile, CMemFile and CFileDataIO: * Documentation of the classes and functions completed. * Completed unittests for CSafeFileIO, CFile, CMemFile. * Changed systems calls to explicitly use 64b calls on win32 systems, since win32 uses 32b calls by default. * Lots of other small improvements. * When sorting search-results by type, sort items with the same type by their extensions. * Added the hotkey Ctrl-Q for closing aMule. * Dont store the results of unittest that didn't fail when executed, since we ignore successes anyway. This causes a great speedup on some tests, where a large number of checks are made. * Set the update frequency for the statistics, fixing bug #637. * Strip 's from paths set via amule-config-file, resolving bug #638. * Reworked the TTS implementation, so that control-sequences are passed to the widget, improved walking through the list by repeatedly pressing a letter and finally fixed the use of arrow-keys on some locales. * Also clear the log-line (lower-left) when the log is reset. * Replaces a few "wxASSERT(x); if (!x) return" with wxCHECK(x)s. * Force an update when the file has been completed, which allows the DownloadListCtrl to detect that a file has been completed. * Optimized the unicode-conversion functions, which were causing unneeded copies to be made. * Only enable the clear-completed button and menu-item when there are completed items. This resolves bug #403. * Fixes deadlock triggered when a UDP socket tried to recover. * Fixed compilation for 64b systems, caused by mismatching parameter types in a pure-virtual function. * Improved sanity checking of DNS resolutions in CServerUDPSocket. * Fixed a few calls to CFile's Create function, which were using a wrong parameter type for the second argument. * Changed MuleUnit to output results as soon as possible. * Added generic CMuleUDPSocket class, which unifies common tasks such sending, receiving, error-handling and interfacing with the UploadBandwidthThrottler. I also included a recovery mechanism for when a socket becomes invalid, which fixes bug #489. * Fixed crashes when kad is enabled but the ClientUDP-socket is not. * Fixes names not being prepended to debug messages. * Fixed potential mem-leak on the download-queue. * Fixed secondary sort-ordering on the download-queue. * Changed source-handling so that we can distinguish between sources returned from the local server and sources returned from global servers. * Added debugging messages for when sources are received from an unknown file. * Removed remaining fake-check stuff and fixed assert repported by stefanero, caused by a bit of fake-check code left behind. * Changed handling of log-entries from worker-threads, so that these are queued rather than sent immediatly. This is needed since adding a pending event requires locking of the gui-mutex, which easily leads to deadlocks. * Fixed race-condition in the download-queue, where multiple DNS resolution threads could be created for the same hostname. * Fixed an assertion in the kad-dialog caused by an insertion at an invalid index. This only happened for some versions of wxWidgets. * Fixed color-updating of items being downloaded from the search-lists. * Re-implemented rating icons on search-result lists using the builtin support for icons on wxListCtrls. This saves us from having to manually draw everything and fixes the crash on using TTS. * Fixed a bug in the ObservableQueue class, which would cause UDP requests to servers to be done only once, whereafter no further requests would be made. This was the source of the problem with aMule not finding sources for newly added files. * Fixed a race-condition in aMule when shutting down while a global search is running. This should resolve bug #563. * Reworked the CServerUDPSocket class a bit, most importantly, changed it so that servers being deleted while we are doing a DNS lookup on their hostname cant result in accessing of dangling pointers. This should bug #581. * Fixed bug #558. Sources not being sorted when the download-queue was sorted by the "Time Remaining" column. * Cleaned up file-ratings and comments handling: * Dropped the m_hasRating and m_hasBadRating booleans, as these can be infered from the value itself. * Dropped the SetHasComment and SetHasRating functions, as this is more safely handled in UpdateFileRatingCommentAvail. * Cleaned up the UpdateFileRatingCommentAvail function since it was rather messy. * Removed a unnescesarry call to Notify_DownloadCtrlUpdateItem in the function ProcessMuleCommentPacket, since this is already done in the UpdateFileRatingCommentAvail function. * Added sanity checks to the code that made use of said file-ratings. * Added sanity checks against file-ratings read from other clients, since we later rely on these values to be in a specific range. * Fixed some uninitialized variables. * Make ascending the default sort-order and fixed loading of the sort-order in the CMuleListCtrl class. * Added a missing call to Skip in the TTS event-handler for item selections, so that subclasses will still be notified. * Reworked CMuleListCtrl and added support for "Type To Select", or the ability to select items by typing parts of their name. The selection is made against the start of the text-strings and is case-insensitive. * Fixed some more warnings. * Fixed compilation problems with external CryptoPP sources, caused by a preprocessor define which clashed with a variable name. * Changed the length parameters of the read-funtions in the CFileDataIO interface to be unsigned, since signed lengths doesn't make any sense in this regard and makes error-checking harder. * Merged checks for the ARM and Sparc architectures. * Changed a call to bzero to memset, since win32 doesn't have bzero. * Fixed remaning issues with template usage in MuleUnit. * Cleaned up error handling in CClientUDPSocket a bit, and added error-checks to CServerUDPSocket. This should allow us to see if the INVSOCK errors are local to CClientUDPSocket or if they happen to all wxDataGramSockets. * Added check requiring a valid port to CClientUDPSocket's SendPacket function, since we apprently tried to send to port 0 once in a while. * Moved adding of sources read from seeds files out of the exception-handler, to avoid the obscuring of possible bugs elsewhere. * Final touches made on the CMemFile class, which includes cleanups, improved error-checking and complete documentation. * Added missing destructor to CUInt128, which was causing compilation failure for some GCC-4 users. * Fixed an attempt to fprintf a wide-char string. * Enabled the use of kad with wxWidget versions 2.5.x. * Improved handling of uncaught exceptions in MuleUnit and changed the library from being an actual wx application, since we only need to make use of wxWidgets classes. * Expanded the CFormat testcases a bit, to better cover use of illegal values and the checks against those. * Improved checking of value convertions in CFormat, now properly detects nagative values converted to signed values and signed to negative, plus some other situations. * Fixed format-strings in the statistics-tree that did not specify a type large enough to actually represent the possible values. * Disabled certian tool-tips for wxWidgets-2.4.2, since the calls made use of functions that were introduced in wxWidgets-2.6.x. * Moved archive-unpacking functions from the HTTP-thread to FileFunctions.*. This allows for compressed files to be read both when the source is the inbuilt HTTP downloader, or if a compressed file (ipfilter.dat or server.met) is explicitly moved to the .aMule folder. * Changed C++ style comments in C sources to using C style comments. * Added check against trying to write NULL pointers in the CFileDataIO WriteStringCore function. * Added some initial tests for the string reading and writing functions to the CFileDataIO unittests. * Removed the RepeatLastAction stuff from CClientReqSocket. * Fixed the check for BOM-header failing on strings that were 3 bytes long (an empty string). * Fixed empty UTF8 strings with BOM headers not having the header written, even though we had already written a length which included the header. * Changed CSafeFileIO's ReadUInt128 to return an instance, which simplified usage and matches the other Read-functions. * Added missing exception-handler to CIndexed in case of invalid tags. * Marked the log-event triggered when an IP was filtered as non-crticial, since this event isn't critical and can be very common depending on the ipfilters used. * Changed unittests for CFormat when empty strings were specified for a field of type '%s', since some implementations of printf produced different results than others, making it impossible to check against those. * Fixed unittests for reading of UInt128 values which didn't consider endianess. * Changed the use of Cmp to either '==' or '!=' to improve readability, and simplified the sorting of the server-list when sorting by name to only use the displayed name, since the special cases that were being considered led to unpredictable results. * Fixed non-wxbase apps not terminating properly. * Fixed adding of comments to shared files. * Properly implemented a couple of functions for the remote version of the DownloadQueue, which did not match the signatures of the normal class. * Changed CMuleListCtrl's SetSortFunc to public, so that subclassing isn't required in order to sort a list. * Dropped the "otherfunctions" namespace, since we ignored it almost everywhere anyway, via the "using" keyword. * Updated CFileDataIO unit-tests. * Fixed UpdateState getting called on clients after they had been deleted (in some cases) and moved the call to the CUpDownClient destructor. * Made CTag and CPacket unassignable. * Renamed ReadHash16 and WriteHash16 functions of CFileDataIO, and changed them to return instances and take const references of CMD4Hashes, rather deal with char*. A few other places were similary changed. * Dropped the static Exists function from CFile, as it is simpler to just call wxFileExists directly. * Removed the ability to attach/deattach file-destriptors to a CFile. * Merged handling of seeking in the CSafeFileIO interface. * Some more changes to CMemFile: * Making seek const and dropped resizing of the buffer if it seek'd past the end. * Made the class uncopyable and unassignable. * Changed the constructor that takes an external buffer to take a char* rather than a const char*, since the class allow for modifications of attached buffers. * Removed the growth-rate from the attached-buffer constuctor, as we dont make use of it and should avoid it in any case. * Added sanity check for the length passed to the SetLength function, to avoid accepting negative values. * Other misc changes. * Removed the ability to detach a buffer from a CMemFile and the accessor function that returned the current buffer. Instead, we now simply use the Read function, which is equivalent of what we did before in any case, but safer. * Unified the logging of packets received from other clients, so that the type of packet received is always logged, as is the cause in case of an error. * Fixed a couple of assertions which had the checks inverted. * Merged CFile and CSafeFile. Checks on reads and writes are now performed in the CFileDataIO base class. The CFileIO class used in kad was updated to handle this, though it currently only understands EOF exceptions. This completes the majority of the changes resolving around the usage of exceptions. * Fix compilation error that would only trigger on some versions of GCC, even though the code appears to be illegal. * Disabled pragmas when building unittests. * More fixes in MuleUnit for templates. * Disabled logging when running unittests. * Changed CFileDataIO to use the new IO exception types, which allows for better error handling (i.e. EOF exceptions, IO read/write failures) and prepared for making use of the IO failure exceptions. * Reorganized, and removed some includes. * Fixed a couple of places that threw exceptions by pointer. * Moved exception handling from CServer to CServerList when loading servers, which better allows for handling of invalid servers. * Fixed some debug-strings which were wrongly marked for translation. * Added IO-exception types, which will be used by CFileDataIO. * Moved exception handling from CFriend to CFriendList when loading the list of friends, so we can stop trying to read a bad list. * Added missing include to MemFile.cpp * Changed some runtime-error checks from throwing the CInvalidPacket class to instead using the MULE_VALIDATE_* checks. * Simplified the usage of CTags by changing the getter functions to throw an exception if the function didn't match the type of the tag. This allowed for the elimination of explicit checks in most places where CTags are used. * Initialized an uninitialized variable in CContact. * Fixed stack-trace parsing for files with '+' in the name. * Improved exception handling in the CTag constructor would could leak if the tag had a string name and reading the body raised an exception, or if the tag was a blob and reading the body failed. * Added checks for code that uses the CTag class, since just assuming that a tag with a specific id is of a specific type is unsafe. Also changed the getter functions to return a default value should they be called on a tag of the wrong type to avoid crashes in that case. Finally, we no longer just ignore unknown tag-types, instead we throw an exception. This is needed because we cannot determine the length of the unknown tag, and thus can't skip it, making further reads from the input file suspect. * Largely reworked the use of exceptions. Catch(...) is out, only to be used when memory-leaks are to be avoided. This insures that unexpected exceptions can be detected. * Removed an exception handler that didn't have anything to catch. * Changed CreateHashFromInput to use the CSafeFileIO interface and to safely handle exceptions without leaking. Also removed some definitions of MFC debug-macros and replaced them with wx macros. * Fixed the largefile-checks under windows. * Changed CMemFile and CFile to implemenations of the CSafeFileIO interface. CSafeFile was moved to CFile.* to avoid circular dependancies. * Dropped the CSafeMemFile which didn't provide any extra functionality and instead made CMemFile derive from CSafeFile. * Simplified CFile a bit, in preparation for larger changes: * Removed the Length() function, since there is also GetLength(). * Removed duplicate definition of seek enums. * Changed the checks for large-file support so that users wouldn't have to export the LD_LIBRARY_PATH variable or similar when running configure. * Updated CIPFilter documentation. * Changed the ipfilter class from just asserting on invalid ranges to not actually inserting them, since that would cause undefined behavior. * Compilation-fix for Mandrake Linux. * Added checks against largefile support to configure. * Added helper-function that returns the length of a file, without having to open it first. * Moved the loading of the ipfilter-files so that they are loaded before the server.met file is loaded. This ensures that the servers are filtered when start aMule. * Fixed some problems in MuleUnit when used with templates. * Fixed the CheckNewVersion function, which would crash on failure. * Dropped extra verbosity from CFormat's assertions, since they now produce backtraces anyway. * Moved backtrace functions to the MuleDebug.* files and added backtraces to uncaught exceptions. * Improved assertion-handling on shutdown and other situations. * Increased the verbosity of assertions in CFormat. * Fixed the "Is Textfile?" check which didn't handle whitespace. * Added support for gzipped ipfilter.dat files and added checks that should ensure that we only try to parse text-files. * Added function for converting long-longs to strings in MuleUnit. * Moved some functions not part of the CFile class from the CFile.* files to FileFunctions.*. * Fixed a bug where shared files could be added to the shared-files ctrl multiple times. * Fixed the hasher-thread, where the wxMutexGuiLeave function was called twice and improved error-checking on thread-creation. Lastly moved static variables from the header, since they need not be specified there. * Removed non-functional hack from CClientUDPSocket, which would cause an infinate loop when triggered. * Improved handling of assertions that occur during startup. * When adding sources, add the source to the appropriate file first, before trying to update comments and ratings availability. * Removed a couple of checks against 'this' being NULL. * Changed the handling of UDP requests for sources, so that the locally connected server would be entirely skipped, instead of the packets just being discarded. * Fixed a number of places where attempts were made to catch by pointer, even though the exception was thrown by value. * Removed various unused variables. * Fixed a bug in the download queue which would result in duplicate entries on the queue for local source-requests. At the moment this did not result in any problems since all entries were removed from the queue once sources had been requested for the file. * Removed the 'h' modifier from a number of format-strings where the field type is 's', since that modifier does not apply to that type. * Simplified mule-exceptions and added more information to the unhandled-exception handler. * Added unittests for CSimpleParser. * Removed the need for exception-handling in CSafeFileIO's ReadOnlyString function, by allocating the buffer on the stack. * Fixed potential deadlock in CClientUDPSocket that could trigger when an error occured during receiving. * Removed a number of overloaded functions from the CSafeMemFile, since neither of those added any functionality. Also fixed a bug in the checks against reads past the end, that checked against the buffer-size rather than the (possibly smaller) file-length. * Marked CFile's GetLength() function as virtual. * Removed the unused class CSafeBufferedFile, which didn't implement buffered file-IO anyway. * Added the ability to filter search-results. The filter select which entries are displayed and supports regular-expressions. See www.wxwidgets.org/manuals/2.6.2/wx_wxresyn.html for an overview of the syntax. Also added the ability to filter known files from the results. * Added sanity checks on values read when loading settings for lists. * The middle mouse button now opens the details-dialog for sources and files when clicking on the download-queue. * Fixed sort-arrows on listsctrls not being displayed after startup. * Set the background color of the chat textctrls to white, in order to ensure that the text stays readable regardles of the theme used. * Largly changed the way ipfilter.dat files are handled by the ipfilter class: * When updating the list of ip-ranges, either via the reload button or the update-from-url functionality, the existing ranges are dropped to allow for dropping of ranges no longer to be filtered. * In order to allow for ip-ranges specified by the user, a second file has been added (ipfilter_static.dat), which is always loaded after the normal ipfilter.dat file, so that it takes precedense. * When either of the two ipfilter files don't exist, a template file is created which contains a description of the use that that file. * When loading zipped ipfilter files, the files are unpacked in place. Doing so largely elimates the overhead compared to loading normal files. * Moved loading of the ipfilter.dat files, so that it done after the GUI has been loaded. * Removed the unused ExternalConnClientThread class. * Merged two copies of the validateURI function in StringFunctions.* and fixed a mem-leak. * Simplified the Update() function in the ipfilter-class, removing the use of special cases when calling it. * Moved custom tokenizing code from the ipfilter-class to a seperate class and dropped a couple of custom functions that didn't provide enough of a performance boost to warrent the extra code. * Added unittests for the StringIPtoUint32 function, updated the documentation for the function and fixed the bugs that appeared: * The last field was not restricted to the range 0..255. * Fields containing huge values could overflow to negative values and would not be caught by the sanity checks. * Changed ASSERT_EQUALS so that descriptions only gets created in case of a failed comparison, since this would otherwise result in the attempted deference of end iterators and the like. * Moved the RLE classes to a seperate set of source files. * Removed probematic operator<() template function from WebServer.*, and replaced it with a specialized struct. This was required since the < operator would be instantiated for incorrect data-types. * Updated documentation for the CFormat class. * Dropped support for long doubles in CFormat and merged handling of the other floating-point types. * Improved CFormat unittest, which was cluttered by serveral variables with too similar names. * Fixed the ASSERT_EQUALS macro in MuleUnit, which would previously evaluate parameters multiple times. * Removed the unused NeedUTF8String() function. * Fixed master-hash parsing for ed2klinks, which would always fail due to a couple of assertions that had been badly translated into exception. * Changed the way clients are deleted on shutdown, to help detect the presence of dangling pointers caused by incorrect removals. * Fixed bug #494. Clients with score zero not being considered as candidates for uploading. * Fixed a few warnings. * Improved handling of uncaught exceptions in the MuleUnit framework. * Added unittests for the CFormat class and fixed discovered errors: * Improved handling of string format fields. * Fixed a < comparison of 0 against a wxString which caused segfaults. * Fixed the range checking code which would fail in some cases. * Fixed escaped percentage signs. * Added the missing implementation of IsReady(). * Improved adherence to printf as specific in 'man 3 printf'. * Added unittests for the CRangeMap class and fixed the errors that cropped up while writing said tests: * The assignment operator didn't return *this. * The equality operator was broken. * The erase function was broken. Also changes ASSERTS to MULE_VALIDATE_PARAMS to enable testing and ensure that the controlflow stays the same for debug and non-debug builds. * Added a minimalistic unittesting framework called MuleUnit, which is based on the EasyUnit framework (http://easyunit.sourceforge.net/). The build target 'check' compiles and runs all existing unittests. * Fixed crash in CClientUDPSocket caused by two threads trying to send and receive at the same time. * Removed unused Pause() function from UBT. * Fixed inf. loop in CClientUDPSocket, caused by poor error-handling. * Rewrote some poorly phrased messages. * Fixed uploaded data not being recorded in statistics. * Compilation fixes for wxGTK-2.4.2. * Removed the unused 'MakefileWin32' file. * Fixed crash in sockets that were destroyed after the UBT thread. * Improved source handling for known-files: * Fixed the possibility of source-counts getting out of sync. * Optimized source-removal slightly. * Added extra debugging checks to spot potential problems. * Changed access to vector of source statuses from using the [] operator to using the at function, to see if out-of-bounds access was causing a specific crash. * Imported the UploadBandwidthThrottler from eMule, which should help ensure that upload-limits are more closely followed. Special Thanks To: * All the translaters who did such a great and fast job. -------------------------------------------------------------------------------- Version 2.0.3 - The "Hell 2.0.3: Now with improved daemons!" version. ---------- 2005-06-15 ken: * Enabled amuleweb to work from within the Mac application bundle * Fixed Online Signature not actually being enabled when user sets the preference Kry: * Fixed #471 "compile error". Should compile on GCC4 again. * Fixed Solaris compilation error on XParseGeometry. * Fixed wrong MD5 hash calculation on 64 bits arch. This fixes storing the wrong EC/webserver password on config file. * Fixed unneeded GTK libs usage on aMule remote GUI. * Added a warning on gd-lib not found (progressbar not shown on amuleweb). lfroen: * New daemon socket code, event based. Improved reliability and speed problems fixed. volpol: * Fixed #417 "Upload priority is changed for completed files." * Added new display filter "Active" * Display of QR and aMule OS info in "Clients Details" dialog Xaignar: * Fixed warning on EC disabled for aMule daemon. Special Thanks To: * All the usual people. You don't know who they are? Just check previous changelogs (just not the previous one, ok?) :P -------------------------------------------------------------------------------- Version 2.0.2 - The " [Your Ad Here] " version. ---------- 2005-06-04 boutros: * Ported the eMule Chicane web template to aMule. GonoszTopi: * Fixed #421: 'In Windows XP it lets to choose Konqueror, Galeon and other Unix based browsers.' * Fixed #406 and #380: 'some clients get an unexpected very high priority' ken: * Fixed a hang-using-100%-cpu-on-exit bug * Fixed a crash when enabling UDP after startup Kry: * Added Version Check (you can disable it on preferences). * Added "source comes from" (on the "Time remaining" column) * Now you can compile aMule without gettext, using --disable-nls Additionally, aMule no longer stops configure if there is no gettext installed. * Fixed aMule shutting down if a source seeds file is 0-size. * Fixed HTTP download code not returning proper error code (causing crashes). * Fixed OS_Info packet only being sent to downlaoding clients. * Fixed Solaris mount info file name. * Fixed includes on daemon for Solaris. * Fixed mldonkey detection. Did anyone notice mldonkey bans aMule? * Fixed SetAllTimeTransfered parameter size (thanks eylzo) * Fixed #430: "Sources order by priority/status" * Fixed #442: "Sort by 'Time Remaining' puts files which are not transferring first" * Fixed #453: "Add option to export links with AICH hashes" * Fixed #458: "Wrong gauge size on shared files control " volpol: * Ports display fix. * A4AF swap to this fix. Special Thanks To: * Bug reporters: Ateo BeFalou MrFaber xushi * All the usual people. You don't know who they are? Just check previous changelogs :P -------------------------------------------------------------------------------- Version 2.0.1 - The " Woops, HotFix " version. ---------- 2005-05-18 ken: * Fixed Tray Icon compilation on Mac. Kry: * HOTFIX: Fixed 100% CPU usage because of network errors on some servers. * Fixed crash after removing a server. * Fixed sorting on the UploadList by Transferred (thanks eylzo). * Users/Files on server no longer show as negative if server sends wrong values. * Check for autopoint on configure to warn for gettext not installed. niet: * Updated xal.pl (some fixes). Phoenix: * Added DNS resolving functionality to amulecmd's connect command. This is usefull for dynamic IP servers. Now you can use the server's name instead of the server's IP address. * Fixed a bug in http proxy authentication code. Special Thanks To: * Contributors: eylzo * Bug and feature reporters: albatros_la Lucky_JL Mr Faber * All the usual people (translators, debugers, people at #amule, etc) C'mon, this is a hotfix release, I can't add everyone again. -------------------------------------------------------------------------------- Version 2.0.0 FINAL - The "Let's dedicate this to Tiku" version. ---------- 2005-05-01 BigBob: * Compilation fix for WebServer.cpp and BaseClient.cpp with wx-2.4.2. * Compilation fix for OtherFunctions.cpp with Slackware 9.1.0 CosmicDJ: * NetBSD compilation fixes. deltaHF: * Preferences for auto-sort download queue. * TCP and UDP port start now at 0 (remember - running amule as root is insecure!!) * Added aMule version info into "About" popup. * Show current DL speed from a client you are uploading to in "Remote Status" column instead of in the "Speed" column. geeko: * Patch to complete html functionality of cas. * Fixed seg fault in cvs due to wrong type check. gnucco: * Improved the sources column and sorting in search window. Now can toggle total sources/completed ascending/descending. GonoszTopi: * Unicode fixes: - UTF-8 conversion (reported by littletux) - webserver search results (reported by poulpe) - aMule version on webserver's Statistics page * Endianness fixes in EC. * Fixed appearing strange characters at the end of webserver's log and debug log pages. * Fixed logo.jpg being not installed. * Webserver graphs are now resizable and rescalable. * Removed some unneeded code/data from daemon. * Added gcc #pragmas to reduce executable size. * Several improvements on EC network code: - EC now uses buffered I/O, so most EC transmissions will only require one socket operation. - Added the ability to compress large packets with zlib, thus reducing network load. - Some (not-so-CPU-consuming) compression is applied to small packets, too. * A number of i18n fixes, mostly changing debug messages to be untranslated. * Removed ECv1 compatibility mode. Now all EC communications are using the new v2 protocol. * Remote applications do not log to core's log anymore. * Fixed the GetLog() function to be compatible with wxWidgets-2.5.4 * Reworked template finding - after installation, no more copying of webserver files are needed. * Added new command 'reloadshared' to amulecmd, to force reloading of shared files list. * Fixed configure script to use the right arguments with gdlib-config. * Fixed configure script to check for gd in the right order. * Fixed preferences being not saved when set from web interface. * Fix for setting download priorities via web interface. * Added configuration file for remote apps. * Reworked command-line parameters, also added a lot new ones (for remote apps). * Fixed *.desktop files to be really UTF-8. * Fixed Makefiles to be able to compile alcc without alc. * Added man pages - English only, for this time. Great thanks to Vollstrecker for his initial work on the man pages! * Fixed pressing the 'Clear Completed' button causes a logout on the web interface. * Added CVSDATE checks to EC, to make sure that core and remote apps are from the CVS tarball (for CVS users). * Improved filename cleanup. * Fixed setting priorities via web interface on both downloads and shared files. * Enabled translations on amuleweb and amulecmd. * Fixed the language selector on Preferences to show the languages that we really have. * Language list is now always sorted alphabetically, but 'System default' is always the first item in the list. * Changed locale saving method, so it won't have to be reset to 'System default' on each version change. * Added Hungarian man pages. * Fixed sorting in web interface. * Compilation fix for gcc-3.2.2 and 3.2.3. * Win32 (wxMSW) compilation fixes. * Enabling configure way of aMule compilation under MinGW/MSYS. * Several improvements of the win32 version of aMule and utilities. * Totally disabled the ability to connect to aMule with an empty password. * Enabling translations on remote GUI, too. * Configure will now list (almost) all libraries it will/wants to use for build. * Hungarian translation update. * Remote GUI compilation and link fixes for optimized builds. **** For users, who already got used to amulecmd's or amuleweb's **** command-line parameters: PLEASE READ DOCUMENTATION CAREFULLY! Hetfield: * New popup menu and events management for new wx SysTray * Speed Bar color (on the new wxTray) is setted in the statistics color selection (as old GTK tray!) * Some configure checks and cleanup Kry: - Global - * We're now fully compatible with the ed2k Unicode implementation, allowing Unicode searches, comments, usernames, file names, ... This works both for unicode-aware servers and clients. * New SysTray code using wxWidgets' wxTaskBarIcon with several hacks for making it properly transparent while keeping the nice download speed bar. Multiplatform, also. Activated by default on > wx2.5.3 * Corrected a nice mistake where wxSOCKET_LOST was identified as error. * Fixed clasic systray code to support unicode names properly. * Removed/Cleaned/etc header includes. * Fixed unicode bug on wxOpen preventing to share some files. * Fixed the SERVER_IDENT packet processing. * Auto-sort code for list controls. Disabled by default, too much flickering on mac and gtk2. * Fixed eMule+ version popping up on eMule stats. * Debug log lines now go to console on daemon * Moved hello packet sending to after client successful connection. * Added the RepeatLastAction function that turned up to be... well, funky. * Fixed debug of disconnected clients. * Fixed duplicated mod string on clients. * Fixed unhandled exception from server TCP socket. * Fixed lowid clients callback. * Fixed duplicated floating point functions being called every second (CPU improvement). * New file is added: tree.hh, credits to Kasper Peeters, It's a stl-like tree and I really enjoyed coding with it. More info on http://www.damtp.cam.ac.uk/user/kp229/tree/ * Fixed a crash on Proxy code created by bad string initialization causing mem corruption. * Added wxProxyData::Empty() to properly clean aMule proxy data when needed. * Fixed unitialized variables on MemFile.cpp and SafeFile.cpp that made valgrind scream in pain. * Fixed the CUpDownClient::SendFileRequest crash you were all screaming about on rc8 :P * Fixed SUI failures with kernels >= 2.6.10. This failures and asserts were created by the locking of /dev/urandom that was introduced on 2.6.10, and that made CryptoPP fail on creating a random pool for the SUI identification. This is more a workaround actually than a fix, but will work perfectly. * Completed files now go to shared as the should. * Fixed search on localised languages. * UDP disable is working properly now. * Close the UDP socket if we're not listening anymore. * Permisions for shared files are no more. They make no sense, network-wise. * Fixed comment updates being... fuzzy. * Fixes to timeout handling of sources to avoid timing out a source that was never processed. * Fixed a memleak on log code. * Proper handling of Thread reating/Running errors. * Fixes for wrong string creation on several places over the code. * Fixed log reset asserts and made it work properly (at last!) * Auto-run webserver on startup functional * Fixed a wild assertion if a empty line gets to ED2KLink file * Merged Gonosztopi's work on EC for the stats tree with performance and safety fixes. * Merged Gonosztopi's work on a patch from Mayfoev to use aux server ports, with some cleaning. * Fixed the crash on non-std locales because of date/time functions. * Get rid of more ugly unicode2char stuff by making the logfile a wxFFileOutputStream. * General speedup of log file. * Proper order of files on Makefile.am, much better to know compilation progress by first letter. * Moved at last all stats to where they belong: the new files Statistics.cpp and Statistics.h. * Fixed assert on client list view caused by unknown client state. * Hopefully avoid the never-deleted sockets (passive sources) * Fix for the case that someone dares having 65536 active connections * Made the sources connection spread evenly among part files. * Fixed server-list packet from server not being handled properly. * Fixed crahes on re-sort of download queue. * Fix for server connection packet not using unicode username. * Search results on unicode are displayed properly now. * Files on download queue with unicode names are displayed properly now. * Unicoded filename is saved correctly on .met file, and loaded according to it. * Files with utf8 chars can be completed now ;) * Shared files with uciode names do show correctly now. * Modification time for files is fixed to keep coherence (GetLastModificationTime usage). * Filenames on known files list (known.met) are saved in utf8 too now, so correctly loaded and compared lately. * Fixed unicode identification to clients and server. * Use BOM header on the known.met, part.met and emfriends.met for unicode tags. Sad, but there's no other way to keep compatibility with eMule files. * Fixed memleak on ExternalConn.cpp. * Fixed the "Invalid UTF8 string passed to pango_layout_set_text()" messages on GTK2 builds. * Fixed (again) the Shareazza identification. They have used 3 compat. client numbers already, will they take one once and for all? * Fixed memleak on log reset. * Fixed memleaks on closing while global search. * Fixed serious memleak on tag code for packets. And I mean serious. * Removed the unused UTF82char function. * Fixed queue limits on upload queue (off-by-one bug). * Fixed hash for files with size (n*PARTSIZE). * Fixed compilation for systems where zlib is not linked by default. * Fixed OP_SENDINGPART to actually be a edonkey protocol and not emule protocol packet. * Fixed memleak on AICH thread. * Fixed several memleaks on ed2k links handling. * Fixed threads not being closed properly, specially the global search one. * Fixed serious memleak on client UDP reask * Don't remove the server because of failedcount if it's static. * When the user tries to remove a static server, we prompt for confirmation. * Files on non-ansi named folders are no longer rehashed on every restart. * Don't discard UDP packets on wxSOCKET_WOULDBLOCK. This improves UDP socket reliability a lot. Remove the packet from queue if sent, keep it if it's not sent because of wouldblock, and drop it on any other error. * Send previously queued UDP packets before we send a new UDP packet. * Fixed aMule crashing on second global search under certain circunstances. * Fixed the hanging on connecting to server. * Fixed dynip servers to connect properly (happy portuguese users!). * Moved: CMemFile.h -> MemFile.h filemem.cpp -> MemFile.cpp packets.cpp -> Packet.cpp packets.h -> Packet.h sockets.cpp -> ServerConnect.cpp sockets.h -> ServerConnect.h UDPSocket.cpp -> ServerUDPSocket.cpp UDPSocket.h -> ServerUDPSocket.h types.h -> Types.h server.cpp -> Server.cpp server.h -> Server.h timer.cpp -> Timer.cpp otherstructs.h -> OtherStructs.h otherfunctions.h -> OtherFunctions.h otherfunctions.cpp -> OtherFunctions.cpp opcodes.h -> OPCodes.h color.h -> Color.h endianfix.h -> EndianFix.h * Changed OP_GLOBFOUNDSORUCES -> OP_GLOBFOUNDSOURCES * Unicode fixes for "Gtk-CRITICAL **" errors on shell. * Unicode fixes preventing compilation for Packet sources. * Unicode fixes for StrToULong usage over atoi. * Fixed eMule+ version string. * Implemented lugdunums new extension of GETSOURCES, includes SIZE (uint32) to avoid problems created by anti-p2p companies * Removed MetaTags extraction code, we're not going to use it anyway. * Fixing some crashes on wrong string handling. * Support for unicoded comments for files. * Moved Online Signature (aMule and eMule) to wxTextFile for proper handling. * Fixes a serious issue on UDP packets (and contributed to eMule). * Debug output of server sources added. * Fix for garbage saving on file copy. * Fixed the server disconnection due to bad handling of TCP packets. * Added a fallback for wrong TCP packets handling to avoid server disconnect. * Proper memory overruns checks on SafeFiles. * Fixed the partfiles being the only thing shared under certain circunstances. * Fixed bug #193: False display with empty share list * Fixed bug #258: "Max port-value allowed is too high due to secondary port" * Fixed bug #276: aMule crached when tried to start. (It says "crached on the original report) * Fixed bug #299: "Assertion when clicking in DQ/Last Reception column" * Fixed bug #303: "Too many files republished by your client software. Please upgrade it." Proper handling of incremental file publishing avoids server bans ;) * Fixed bug #317: Added GUI and functionality for 'Start next file on same category'. * Fixed bug #319: When sort is changed, make sure the item focused is again focused. * Fixed bug #321: Razoback2 stats page for shared files. * Fixed bug #331: 'ED2k link bar gone after 2x click on search button' making it a feature instead of a bug. Now you can toogle the ed2k link handler clicking on search toolbar button. * Fixed bug #334: Main category type not stored on crash. * Fixed bug #345: [Mac] popup windows open on other monitor. * Fixed bug #348: "Right-click on friend in friends list does not select it" * Fixed bug #362: "receive file list fails for non-ascii chars" * Fixed bug #349: "sorting of sources in 'Downloads' window" * Fixed bug #375: "Misc GUI bugs in Statistics window" * Fixed bug #374: "misc. problems with friends" * Fixed bug #405: "Downloaded files have wrong priority" * Fixed serious bug with 0-sized files. * Fixing serveral threading issues and possible crashes/missbehaviours on search. * Searchs now start inmediately and also finish sooner. * Added a warning if no video player is set on preferences and tried to preview. * Decoupled NetworkFunctions and StringFunctions headers. * Added QueueDebugLogLine for... uh... queueing debug lines. * Encapsulating network stuff at NetworkFunctions. * Removed all network platform specific code from the main code, and leave it to NetworkFunctions (and gsocket). And I removed the htons and htonl everywhere. * Fix for egcs compiler crashing on aMule compilation. * Changed the CTags structure to a safer and nicer version, compatible with eMule's. * Added support for a lot more ed2k Tags. * Support for download stats per client. * Added the hability to rename a file using F2 * Fixed crash on sorting an old tab. * Improved socket debug, and moved the backtracing function to OtherFunctions. * Fixes dynip servers not being detected by server UDP socket. * Fixed a lot, lot of input data lost on EMSocket, causing much better transfers. * Fixed corrupted parts info store/retrieve on partfiles with eMule compatibility. * Fixed ed2k protocol file type publishing. * Fixed a lot of network performance issues and lost packets all over the TCP/UDP code. * Fixed download bar on tray icon (Icon file has now red background to create a mask from it). * Fixed crashes on Logger class derived from bad unicode2char usage. * Added "Prefix where amule will be installed" to configure output. * FileDetailDialog is now resizable, and file names list ctrl resizes vertically and horizontally with it. * No horizontal scrollbar on log, let lines wrap to avoid auto-scrool on long lines. * Gnucco's alternate sorting of search list ctrl See http://forum.amule.org/thread.php?threadid=5344&sid= for details. * Big rework of the Friends class, list, and everything. * Cached the Operating System info and added to --version flag. * Added Online Signature update time functionality and widget disabling on OS disable. * Slightly bigger list for the preferences items to fit them all * Added a static text for recursive sharing via right-click to avoid questions. * Systray can now be enabled/disabled on preferences, dynamically, and is applied as soon as the checkbox is checked. Default is DISABLED. Also, the minimize to tray checkbox is disabled when systray is not enabled, and when using the new systray code (the wx tray), we don't have the Window Manager dialog anymore. * Check for Online Signature folder existance when enabled. * Fixed a lot of unicode bugs on file handling by adding fallbacks to proper encoding. * Set minimize to tray to false if no tray enabled. * Fixed a crash... on... assert... hum... that one was actually funny. * We should not start next file on cancelling a download. Now we do not ;) * Stopping a global search works properly now, the thread for global search is deleted on stop. * Zero the Online Signature on exit. * Fixed a crash on exit while stillstarting up. * Fixed aMule nto starting anymore if skin file name is void and skins are enabled. * Proper use of wxWidgets functions for ISO date formatting. * Never show the download list filter on search category selector. * Lots of fixes for wx2.6.0 compilation, wxSizer, and other changes. * Fixed the download limits not being applied correctly. this should amke MUCH BETTER download speed for people with download limits set. * Fixed sockets not being closed on daemon. * Fixed chmod message on Incoming/temp folder on smbfs. * More info on the init. text and on backtraces (Operative Sytem, kernel version, etc). * Fixed crash caused by random value returned on DeletePage(). * Fixed Reload Shared Files not re-reading sharedfiles.dat * Fixes the hangups on exit, specially on Mac. * Fixed the AUTHORS file. * Fixed UDP socket bug on size of OP_REASKFILEPING message. * Abort loading of shared files if we are shutting down. * Fixed crash caused by socket die on ConnectionEstablished function. * Added contact info to documentation and about button. * Fixed (again) mplayer usage as video previewer. * Fixed a network bug on SetStartNextFileSame not being set. * Proper usage of wxProcess::Exists( for webserver running on start check. * Cleaned configure/Makefile from a lot of bad usage of flags and libs. This makes for a smaller executable now also. * Merged Martimac's fix for FreeBSD 5.4-PRERELEASE * Fixed friendslot assignation, about 12 times. * Fixed logging of not-yet-sent messages by adding it to queue and send on connect. * Fixed message sending to unknown clients. * Avoid the posibility of a Too Many Connections blocking a chat. * Fixed buttons/textentry not enabled on new chat tab. * Fixed tabs' 'X' not working properly when there are too many and don't fit on screen. Use new wx code instead of Madcat's code on wx2.5.4 and above, for the 'X' closing. * Multiple selecting ed2k links and clicking on copy ed2k works now for search items. * Fixes the multiple removal of friends * Fixed multiple message send to friends. * Fixed multiple filelist requests * Fixed multiple friend details dialog show. * Adds a warning for trying to set multiple friendslot. * Fixed Incoming folder content not being sent on shared files request. * Fixed completing of file setting transfered instead of completed to file size. * Fixed --with-crypto-prefix flag not pointing to actual crypto folder. * Added memleak check on exit using wxWidgets native fucntions, enable via wx qa lib. * Rewrote wx*Sizer* handling on Stats page and making more space available. * There is no curl anymore needed/used on aMule. Coded my own handling using wxHTTP. * Added partial/total bytes to the http download dialog. * Fixed sizers usage on Client Details, fixes overlapping labels and such stuff. * Fixed client stats not updating on clientnumber going down to zero. * Fixed "total transfered datal isn't saved on crash/kill" bug. * Fixed flushing of files on copy with read-only flag set. * Added "total downloaded"/"total upload"/"total requests"/ "total accepts" to partfile saving. * Fixed rehashing of unicoded file names on aMule restart. * Fixed aLinkCreator compilation for wx2.6.0 * Fixed upload speed not being reset when all clients lost and keeping old value. * Fixed port output on console showing negative numbers. * Lot of Kad porting (NOT functional yet). * Fixed (c) strings all over the code with proper year specifications. * Fixed unicode2char usage to a bare minimum. * Moving from libc usage to wxWidgets multiplatform implementations. * Killed c_str() usage from aMule, except on very specific ways and only for speed reasons. * General cleanups and speedups here and there. - CPU arch Specific - * 64 bits archs fix for AICH thread. * Some amd64 compilation warning removal. * Fixed endianess bug on PeekUInt16 * Fixed client IP endianess on big endian archs. * Getting ENDIAN_SWAP_* to a bare minimum (just interface) * Fixes endianess of local_ip, which is anyway almost all times 0. - Core/GUI Specific - * Fixed daemon unhability to handle sources properly. Daemon now takes, handles, and processes sources in a proper way (making it at last a real competitor for monolithic). * Don't show geometry option for daemon, makes no sense. * Properly display "aMule Daemon" instead of "aMule" on daemon. * Fixed statistics tree interdependence with GUI, splitting it to core/gui way. In short, we have statistics tree on webserver, amulecmd and remote GUI :) * Graphic statistics are now decoupled from GUI. We have statistics graphics on webserver remote GUI. * Decoupled Friend list from GUI. * Fixed a bug on set comment on a file on ECv2. * Fix for log on unicoded webserver. * Fix for global daemon thread not closed on exit. * Splitting of core/gui on SearchDlg. * Fixed a crash on websocket thread creation. * Reactivating Chat windows on remote GUI. * Proper fix for the segfault on exit caused by EC. * Removal of CryptoPP usage on amulegui. * Fixed a possible crash on daemon startup. - BSD Specific - * Fixed BSD compilation for inclusion. * Fixed FreeBSD 4 prerelease (DragonFly) compilation on gtkplugxembed.c - Solaris Specific - * Fixed Solaris compilation and linking. * Fixed need for inet_addr on webserver on Solaris. - Mac Specific - * Fixed Mac friends handling. * Proper importing of files for Mac. * Proper reading for amuleweb config on Mac. * Made default Incoming folder for Mac to "~/Documents/aMule Downloads" - Windows Specific - * Fixed a lot of compilation problems. * Use proper wxLog class to avoid popups on Windows. * Remove the usage of chmod on Windows. * Fixed the systray background on Windows. * Fixed systray menu on Windows for proper layout. * Fixed DirectoryTreeCtrl on Windows to show all disk drives and folders. Ken: * Fixed Mac bug: window was a little larger each restart * Fixed aMule.tmpl so Safari can work with amuleweb * On Mac, enabled Command-clicking in lists to toggle selection * Solved the DECLARE_ABSTRACT_CLASS() mystery on wx-2.4.2. Now we can have UDP socks5 with wx-2.4.2. * Included CVSDATE with version in amulesig.dat * Fixed an endianness bug with webserver * Fixed last (I hope!) endianness bug with IPFilter * Fixed a major endianness bug with widespread effects. On Mac, servers don't fail continuously until eventually removed from the list; server pings work. Global search seems to work better. DNS lookup of servers and ED2K link sources should now work. * Enabled support for ed2k links in web browsers for Mac (although idiosyncracies of common browsers prevent it from being as transparent as one would like). lfroen: * aMule remote gui implementation * Support for categories in webserver * EC additions * RLE encoder for shared files martymac: * Fix for FreeBSD 5.4-PRERELEASE ObsessionAl: * Patch to include CVS date in about box. Phoenix: * Fixed crash in CClientReqSocket::ProcessExtPacket() processing of OP_COMPRESSEDPART. * More UNICODE fixes. * Fixed WX_SYSTRAY compilation on wx-2.4.2. * More proxy updates, we are getting there. * Small UI bug: double click on a server did not change the "Connect" button to "Cancel". * Changed some deprecated IsKindOf(CLASSINFO()) to wxDynamicCast(). * Fixed crash in CUpDownClient::SendFileRequest(), short circuit evaluation was reversed. * Created Proxy dialog on preferences. * Updated muuli.wdr for wxDesigner version 2.11 -- no more manual patching for wxFIXED_MINSIZE required. * Fix for rommel's report of IP filter problem. * No more IsKindOf(), all replaced by dynamic_cast<>(). * No more wxDynamicCast(), all replaced by dynamic_cast<>(). * Fixed multiple instances of event handlers in CClientReqSocketHandler and CServerSocketHandler. * In StateMachine.cpp, m_state is now private and state machine code is now thread safe. * Added base64 encoding/decoding support to aMule. * SOCKS5 and SOCKS4 proxy support is working now. * HTTP proxy support is working now. * Changed the output of the "Oops" to give better instructions to the user. * Fixed a bug in proxy code that was making gui too slow. Code was performing unnecessary DNS. * Applied patch from volpol to fix use of deprecated functions in wxGTK-2.5.3. * Applied patch from geeko to complete html functionality of cas. * Fixed a big bug in proxy code. Sockets were not continuing conversation after connecting to sources. * Fixed a crash due to an unicode issue while logging. * Show some activity upon destruction of the DownloadQueue. * Preparing the field to bind to a fixed interface. * Sanity checks on socket creation. * Fixed the backtrace message. * Added a static text to Preferences->Connection->Client TCP port to show the value of the client UDP port. * Fixed a crash on webserver, all return values of SendRecvMsg_v2 must be checked for NULL return value. * Fixed an uncountable number of potential segfaults on amuleweb because almost no return value of GetTagByIndex and GetTagByName were beeing checked for NULL. * Fixed the following bug in the search dialog window: if you typed a letter by mistake or if you use the down arrow from 1 to 0, both actions on a wxSpinCtrl, aMule would crash. * Fixed the GetTagByIndex and GetTagByName segfaults in amulecmd. * Fixed a problem with saving the preferences, that in some situations would not be saved. * Fixed an assert when loading skins, the count number was one unit too high. * Fixed amuleweb template processing, Clear Completed button on transfer link was not showing. * Fixed amuleweb template processing, Reload List button was not beeing translated. * Small adjusts to ObsessionAl patch to include CVS date in about box. * Fixed a bug in UTF82unicode(), reported by Mr Faber. * Got rid of sscanf in NetworkFunctions.h. This has caused a crash once, reported by Mr Faber. * Fixed a lock with high CPU usage when crashing in amuled, because wxExecute() could be called from the FatalErrorHandler() not from the main thread, which is currently prohibited in wxWidgets. * Fixed preview with mplayer or any other app that needs stdout/stderr. * Fixed lots of segfaults in amuleweb, thanks to alandar and Mr Faber. * Updated proxy debug code to use new logger. * Fixed a subtle bug in UINICODE builds. Now UTF-8 enabled UNICODE builds can read extended ANSI file names. In particular, UTF-8 UNICODE aMule build was not remembering an extended ANSI directory name for a shared directory. * Added a spec file to the CVS tarball. Now users can do rpmbuild -ta aMule-CVS-20050309.tar.bz2 and generate rpms for the tarball of the same day. * Fixed a bug in the spec file. The testing was beeing done with files from amule-dev-cvs, but CVS snapshots tarballs are done in amule-cvs directory. * Implemented changes suggested by bootstrap in aMule-CVS.spec, merged all the packages in a single rpm, changed the packager to "The aMule Team" and updated %BuildPreReq. * Fixed a crash in ListenSocket.cpp when a client could disconnect suddenly. * Spec file does not need autogen.sh, as noticed by GonoszTopi. * Removed krb5-libs require and krb5-devel buildprereq. curl-lib and curl-devel is enough. * Fixed an assertion in CFile.cpp, when browsing broken symbolic links. Now aMule is aware of them. * Added a test to the spec file to discover UTF-8 enbled LANG, so that we build the rpm with --enable-utf8-systray. * Removed curl dependencies from spec file, aMule now uses wxHTTP. Stefanero: * Work on the Man-Pages * Minor compile fixes * Lots of support and testing stsp: * Compilation fix for STL enabled wxWidgets. volpol: * Patch to fix use of deprecated functions in wxGTK-2.5.3. Vollstrecker: * Initial and further work on aMule and utils' man pages. Xaignar: * Improved logging for CFile, getting rid of the annoying pop-up windows which were previously displayed. * Workaround for fonts getting changed on the log-view when the clear-button was pressed (wxMac specific). * Work on getting aMule ready for win32, including fixing the custom-drawing for listctrls. * Fixed threading issues with the UDP-sockets in daemon- mode, which were the cause of a number of crashes. * Made the preferences dialog modal to fix problems where it would be displayed at bad locations. * Ensured that the Banned-Count would be initialized to zero rather than display a random value until it gets properly set (not yet implemented). * Improved the "aMule has crashed" message, adding some more information and fixed the backtrace to skip unneeded frames properly. * Fixed some static text-ctrls not properly expanding, so that some text would be cut off the end. * Fixed some position bugs in the progress-bar drawing and addeed a black border. A4AF sources now displays that text instead of an empty area. * Moved the placement of the "Initializing aMule" message on startup so that --version will only result in the version information and ensured that amule wont start in case an invalid commands was given, instead printing the help info. * Fixed problems with selection on the clients-list. * Improved usage of compressed packets. Now only files that are not in the list of known archive-formats are compressed, rather than just Zip, Rar and Ace. * Improved error-handling when opening ports. If either the EC or Server-UDP ports conflict with the other ports, then a random safe value is selected in the range 1025 ... 2^16-1. * Fixed shared files being located twice during startup, which also resulted in the AICH thread being run twice. * Fixed logging to stdout containing extra newlines. * Cleaned up and merged a number of split translated strings, which should make it easier for translaters to work. * Fixed some status changes not resulting in removal from or addition to filtered download categories. * Improved handling of multi-line log events on the main dialog. * Reduced the ammount of output to the console, changing printfs to either normal or debug log events. * Escape-codes in ED2k links are now properly unescaped. * Cleaned up and improved the readability of the clients-details dialog. * Updated the modified listctrl widget used by aMule, so that wxWidgets 2.4.x and 2.5.x will use a modified version from that branch rather than a more generic hacked version. For one thing, the headers are now drawn using the current GTK theme. * Properly handle rehashing of empty part-files. * Changed the "Filter Bad IPs" option to "Filter LAN IPs". Invalid IPs will always be filtered, but LAN IPs will now only be filtered if the option is enabled. * Added back-traces to asserts, in order to help debugging efforts. * Made usage of wxASSERT thread-safe. * Attempted to fix some longstanding problems with the notebooks. * Removed unused files: Preview.h and Preview.cpp * Updated, cleaned and unified license-headers for all aMule related source files. * Improved the error-message displayed when a server couldn't be added, so that it is clear as to why it couldn't be added. * Avoid flooding the console when searching for filetypes, mismatches are now logged as debugloglines instead. * The "Clear" button on the search page now also clears the search text. * Better handling of multi-line chat messages: The complete message will be split by linebreaks and each line timestamped. * Fixed entries for connected servers in server-list not being completly reverted to normal after disconnection. * Added handling of SIGINT and SIGTERM for gracefull shutdowns. * Renamed the config file from ~/.eMule to ~/.aMule/amule.conf. The old file will not be removed, in order to allow backwards compatibility. * aMule now automatically removes unavailable files from the list of shared files. * Fixed right-clicking not selecting the tab being clicked on. * Fixed casts to pointers of higher alignment where it could cause allignment crashes on SPARC, created general function for doing this safely both SPARC and non-SPARC machinces. * Added a typesafe replacement for printf, designed with inspiration from the format class in the boost library. * Improved logging capabilities. It is now possible to enable/ disable debugging output by category. All existing debug calls where changed to support this. This can be controlled in the preference dialog. * Fixed some problems with the connect dialog for remote gui. * Some pass-by-value fixes. * Moving de-initialization code from the CamuleApp destructor to OnExit. This insures that the app-object would be valid while the shutdown is in progress. * Moved deinialization code from OnRun in amuled to OnExit in order to ensure that it was also run on premature exits. * Made safe connection-rate calculations the default behavior, which should help avoid too fast connections. * Add class for keeping track of unusable sources, based on the same class in eMule. This should reduce the ammounts of connections made since bad sources are not re-asked too often. * Fixed servers with IP 0.0.0.0 being added to serverlist. * Fix to IP-range parser in CIPFilter. Incorrect range in the form "a.b.c.d-e.f.g." would not be caught. * Misc cleanups in CServerList. * Fixed creation of online-sig files. * Made DownloadQueue and ServerList observables. * Added a Observer/Observable implementation. This was needed to implement a queue that would be kept in sync with another queue thus allowing thread-safe delayed iteration over a list. * Fixed crash in search-list, where the search-packet would be deleted twice. * Removed the usage of "ED2KServers" file, as the download-queue now takes care of handling all types of ed2k-links. * Rewrote 'ed2k' utility in c++ and fixed support for extra information appended to ed2k links. * Merged IP-check functions and moved it to NetworkFunctions.*. * Fixed usage of uninitialized variables in CPartFile constructor. * Removing unsused functions from CServerList. * Removed unused CArray.h file. * Fixed pontial wrong tag-count in server.met writing, which would result in a corrupt file. * Disabled connection-try code, due to inherent problems with it. * Reworked the CDownloadQueue class. * Fixed creation of ED2K links for servers. * Removed the need for seperate AICH hashings of completing files. Instead both AICH hashsets and MD4 hashes are created during completion, and the AICH is simply discarded if corruptions are found. This however is rare, and thus doing both at the same time results in less time spent hashing. * Improved upon the "requested file not found" log-message, which would happen when a client requested the hashset for an unknown file. * Reworked the checks for free disk-space, should behave much more consistantly now. * Fixed files being hashed twice, once when completed and again after aMule had been restarted. * Make use of native GTK2 popup menu for text-ctrls when possible. * Disabled aMule on systems where wxGTK is older than version 2.5.1 and is compiled against GTK2. The big honking warning in the log proved to be useless, but this should work ... * Added helper-function to of.h for removing values from a stl-list. * Fixed usage of windows font-type "Arial" in statistics-dialog. * Fixed logging of filtered IPs. Only 2 of four cases were logged. * Disallow External Connections if no valid password has been set. * Fixed both sources and files getting shown for the file-count in the transfer dialog. * Added date to version-information for CVS snapshots. * Reworked CBarShader, making it use the CRangeMap class and getting rid of needless floating-point math. This fixes some problems where large chunks would be drawn as complete, even though only a small part of the file was complete. * Fixed downloads being assigned to the default category despite the extended options being disabled in search dialog. * Moved overhead calculations to the CStatistics class. * Removed enabling/disabling of the clear-downloads buttons. The checks touched far too much code without adding much. * Moved StripInvalidFilenameChars from CamuleApp to StringFunctions and renamed it to CleanupFilename. * Fixed pending file-blocks not being properly removed when client-objects were destroyed, resulting in parts of files that could not be downloaded until aMule had been restarted. * Fixed re-filtering of sources when IP-filter level had been changed in the preferences. * Reworked CIPFilter class: * Huge improvements in loading-speeds (~6x). * Added support for loading zipped files. * Switched to using the CRangeMap class. * Added CRangeMap class, which is a map with two keys, an start and an end key, with a single value attached. This was previously duplicated serveral places. * Fixed problems with deleting multiple items on serverlist. * Misc code-cleanups. * Added the ability to delete servers using the delete-key. * Fixed sorting by the "Transfered down" field on client-list. * Added ruby-script for detecting common issues. * More work on properly marking getter function const. * Reworked the CDownloadListCtrl class. * Added overloaded versions of CmpAny functions for strings. * Reduced memory usage of IP-ranges in CIPfiler by removing redundant information. * Fixed extremly non-optimal function in CDownloadQueue which was used many places. Could locate item in vector through counting of iterator increments. * Fixed pre-shutdown message to something more closely reflecting the actual events taking place. * Collected common "Data To Human-Readable" functions in file-set. * Reworked the ED2K-link classes. * Reworked handling of ED2K links, making behavior consistant everywhere and fixing support for |serverlist| URLs. * Changed time-span of overhead calculations from 5s to 15s. * Removed redundant message displayed when files were added to a a non-connected mule. * Added missing Add-Overhead calls for various packets. * Fixed a mem-leak in CFileDataIO::WriteString. * Fixed compilation of Proxy with wxGTK-2.4.2. * Changed default configure options. Now only 'amule' and 'ed2k' are compiled by default, since other apps require extra dependancies. xmb: * id2ip awk script (with Jacobo221) Special Thanks To: * Translators: Very, very special thanks to all of them, since they translated the whole app in just _one_ week! Ateo: (US english / en_US) Ateo: (Spanish / es_ES) gaspojo: (Portuguese / pt_PT) guest: (German / de_DE) GhePeU: (Italian / it_IT) Gusar: (Slovenian / sl_SL) ilbuio: (Italian / it_IT) KamiKazeNH: (Brazilian / pt_BR) nbfnw: (Chinese / zh_CN) Ogon: (Polish / po_PO) piarres: (Basque / es_EU) shafff: (Russian / ru_RU) supersnail (Dutch / nl_NL) thedude0001: (German / de_DE) toshi: (Russian / ru_RU) * Contributors: hanzo markb Mayfoev monkeyboy ObsessionAl rommel S0undt3ch stsp Vollstrecker volpop * Bug and feature reporters: alandar Angel BigBob feralertx Frankk Mr Faber OldFrog RedDwarf skolnick thedude0001 Valery * eMule developers for their support, friendship, and collaboration. * MindForge & Freenode irc admins * People at #wxwidgets on freenode. * Everyone at: #amule irc.freenode.net wiki http://wiki.amule.org forums http://forum.amule.org bugtracker http://bugs.amule.org * All aMule users!!! Welcome our new aMule team members: blerfont, m2kio, skolnick, thedude0001 & thorero -------------------------------------------------------------------------------- Version 2.0.0rc8 - The "last rc" version. ---------- 2004-12-21 Baz: * Fix for server stats for users/files not being updated correctly. * Fix for ERROR and WARNING server messages not being shown. * Fixed server / transfers window splitters not being loaded/saved correctly. * Fixed categories on search dialog not being refreshed on category name change. deltaHF: * Show comments for shared files Hetfield: * Some fix in new Tray system and desktopMode bypass Jacobo221: * Added option to select the max and min size-type in advanced searches. * When "Extended Parameters" in Search tab is not selected, defaults are used. * Now "Auto-update serverlist at startup" checks if there's a serverlist to avoid annoying messages at startup. * "Clear completed downloads" is now disabled while no completed downloads are listed. * Context menu for download items only enables relevant information now. * Context menu little optimization (removed an unuseful loop) and Open File fix. * Added bitmap button wich pops-up the last status log line (useful when it doesn't fit the window). * Merged Preview and Open File and enabled Open File. * New Port column in Servers tab (splitting IP column). * Moved "Always filter bad IPs" from Server to Security in Preferences. * Changed "Preference" in servers tab as suggested by Sir and "IP" to "Address" since that's more accurate (could be DNS). * Optimizations in the RLE code. * Based on kry's patch, also darken paused files' progress bar. * Translations updates. * Fixed: Servers priority now working. (reported by Sir) * Fixed: Now all unset Server Priorities are set to normal. (reported by plaenky) * Fixed: Sorting Servers by priority works now. * Fixed: Setting "A4AF to others" works now. * Fixed: Server names sorting now differences between names and IPs. * Fixed: Last byte is now drawn in bar progress. * Fixed: Stop button now working after second global search and another hidden bug in global searches' progress bar. (reported by ecforum) ken_aMule: * Fixed ipfilter on big endian archs. * Fixed wxWidget's bugs that were creating serious memleaks on Mac Kry: ===============::MULTIPLATFORM::=============== * When a socket connection error like WOULD_BLOCK happens, aMule retries the connection to avoid just-once errors * Stopped files are now darker than non-sources ones. * AICH e-links working now, with masterhash and with hashset * Proper handling of removing -fomit-frame-pointer flag that worls on all platforms. * Initial support for wx-compliant systray. Will be ready for 2.0.0 final release. * aMule no longer crashes on opening a non-existing folder. CDirIterator is safe now. * Fixed crash on app close - never call a pure virtual function from a destructor. * Moved the init/close code of aMule to where they belong: destructor/constructor. * Much more debug info available to debug packets (packet dump and others) * Major network improvements: * Improved the socket processing on CPU usage and performance. * Coded the functions handling the network string/bytes conversion of ips and hostnames and the generic hostname solving thread, non dependant from host's socket implementation. Less CPU and more reliable on both cases. * Crash fixed on wrong arguments for wxString::Format * New option on right click on downloading or search files for showing eserver's stats for that filehash. Needs browser correctly configured on preferences. * Implemented messages filtering, from know clients/bogus clients/by words. * Fixed hashing files changing display status. * Fixed crash where transferwnd and clientlistctrl could be accessed before created. * Listen socket on accepting connection no longer uses a blocking socket (CPU improvement). * Not linking anymore to gtk libs if not needed. * "GTK: Not Detected" is now either "Not Detected" or "Not Used" to avoid confusion. * Fix for crashing on 'OK' button on preferences. * Fix for preferences window being unreachable if aMule is minimized while showing it. * Fix for crash on HTTP dialog if StopAnimation() was not called on destructor. * Fixed crash when shutdown and preferences window open. * Implemented OS_Info tag. Broke it 400 times, and fixed it 401 times, so working. * Implemented statistics tree for OS_Info tag. * Fixed several memory corruption issued caused by icons with wrong size. * Fixed several memory corruption bugs on amule init/close. * When aMule crashes, it not longer fails saving: * Preferences (Saved on 'OK') * Categories (Saved on changes) * Total upload / download bytes (saved while running). * Fixed crash on OP_MULTIPACKETANSWER * Sent wxInt and wxUInt classes usage down the drain for the standard int / uint * Implemented "Share hidden files" checkbox. * Immplemented the CT_EMULECOMPAT_OPTIONS new tag. Right now only OS info support capabilities. * Implemented new short tags style for server and client interchange of info. Fixes not being able to browse eMule >=0.42x shared files. * Fixed aMule daemon compilation to use wxBase headers and libraries. This fixes amuled not compiling on wxBase only-boxes, thus making it kinnda pointless. * Fixed AMD64 and GCC4.0 compilation/run, closes debian bug #285110 * Fixed some performance issues on Log text controls. * Fixed long browsers requests on WebSocket. Buffer is now enlarged accordingly. * Fixed timeout on webserver socket being... 10 minutes!!! * Fixed several 100% cpu errors on WebSocket. * Fixed our source exchange implementation that was... uh... wrong. * Fixed stats tree on webserver. * Misc. work on ECv2 implementation of messages. * aMule can send now RGB encoded images via ECv2 * Webserber can read ECv2 Image tags via the new CDynPngImage class. * eMule+ is now recognised under compatible client tag 0x05 * Unicode fixes on webserver. * Got rid of almost all wxString::GetData() * Major CPU improvements on WebServer.cpp * otherfunctions.* is now clean from aMule specific stuff. Can be used anywhere. * otherfunctions now have a namespace (surprinsigly named 'otherfunctions') * Changed wxFileStreamInput -> wxFile (less class overhead). * Several speed fixes on Stats code. * Fixed possible crash on search thread creation + verbose on error. * Fixed aMule crashing when local search is not returning and we click stop or start another search. * Fixed severeral endianess bugs. * General rewrite of UDP Socket * Received packets when app is not ready are now discarded. * Small fix preventing memleaks and some strange asserts * Fixed a severe memleak if 2 UDP packets are send at the same time, before the first one finishes. * Fixed the host solving fail not cleaning the data (another severe memleak) * Fixed sending wrong data to wrong servers and thus not being replied. * Fixed some server udp packets never reaching destination. * Unicode fixes (char*/wxString issues) * General cleaning, bugfixing and documenting. * Added files: StringFunctions.(h/cpp) NetworkFunctions.(h/cpp) ==================::MAC::=================== * Fixed server connection crashes related to accepting a connection from a being destroyed socket. Probably fixes also some random BSD/Linux crashes on conection. * Got rid of all includes, improved compilation speed greatly. * Fixed stats color boxes * Fixed servers saving, not anymore stored wrong internaly. * Coded Mac packager script for releases with included libcurl and wxWidgets. * Included Mac aMule.app bundle on sources. * Fixed sharing /Volumes and other special folders. * Fixed crash on server.met download permats: * FIXED: Preferences -> Security -> Permissions wasn't being correctly saved for directories. Phoenix: * Lots of unicode fixes. * Added readline and history support to amuleweb/amulecmd text clients. * Added template loading capability to amuleweb with the new command line parameter -t. * Changed m4/readline.m4 so that readline libs are only used when needed, i.e., no longer append readline libs to LIBS, use READLINE_LIBS instead. * Fixed crash in aMule when amuleweb tried to get transfers tab and aMule had never connected to a server before. * New backtrace output with demangled function names, file names and line numbers, when possible. * Initial (not functional yet) SOCKS5 proxy support. * Initial (not functional yet) SOCKS4 proxy support. * Initial (not functional yet) HTTP proxy support. * Updated some tests in configure.in. * Fixed a problem with _() usage. Static string initialization must be done with wxTRANSLATE, and wxGetTranslation() must be explicitly called in code instead of _(). * Fixed a bug in WebServer.cpp:CWebServer::GetStatusBox(): return value was missing end tags. * Changed back to macro the inline function version of unicode2char() when using UNICODE. Unfortunately, when the fucntion returns, the string object gets out of scope, so we stick to the macro version for now. lfroen: * Moving amuleweb to EC version 2.0 * Fixes on amuleweb socket code * Added generated png images to amuleweb * Added RLE encoder for gap and parts status to EC * Fixes in amule daemon Madcat: * Added support for detecting HydraNode clients. GonoszTopi: * Initial work on EC protocol version 2.0. * Fixed a crash on broken language files (.po) * Some GUI cosmetics. * Lots of i18n fixes. * As a side effect, fixed the "Any" search in webserver. * Fixed webserver connection with empty passwords. :) * Fixed webserver connection with guest account. * Added "add " command to amulecmd. * Tracked down and killed a number of hidden bugs. * Added commands to change/monitor bandwidth settings to amulecmd. * Made wxTRANSLATE actually work. * Fixed graphs in webserver. Also added the missing back.gif file. * Fixed buffer overflow problem in ed2k link handler. * Stats bug fixed. wizeman: * Helped finding the code snippet where WebSocket was failing on request. * Fixed 'Safe Max connections' code. It's safer to use it now, and it works. * Fixed bug where amule would start consuming 100% cpu when it received a corrupted EC packet. * Fixed webserver, it wouldn't close connection when it received a POST request. * Fixed webserver crash: added mutex to make variable wcThreads thread-safe. * Fixed webserver <-> amule communication corruption when the webserver received simultaneous requests. The problem was that all webserver threads were using the same socket for sending/receiving EC packets to/from amule without synchronization. Xaignar: * Added the new casting macros to otherfunctions. * Added a helper-function to CMuleListCtrl for use in the Sorter functions. * Fixed the priority-column on Server List. * Added the handling of friends to ECv2 implementation. * Merged CUploadListCtrl and CQueueListCtrl on CClientListCtrl. * Added the posibility to see a list of all existing clients. * Fixed aMule dialog not always being unfrozen upon restoring it from tray. * Some changes to the overhead calculation functions. * Slight improvement of the GetScore function CPU usage. * Replaced "theApp.glob_prefs->" with the new usage "thePrefs::" * Fixed the MyTimer class behind GetTickCount returning random values on close. * Fixed two crashes on ClientList. * Fixed compilation for solaris on several places. * Make sure that clients cant just crash us by sending a aich-request for an invalid hash. * Fixed a couple of sub-menues. * Removed the leech-mod checks, they were getted outdated anyway * Fixed open sockets count. * Avoid re-layouting the entire dlg when updating some labels. * Small fix to CMuleNoteBook. * Adding a missing event-handler en shared files tab. * Changed the primary hashing thread to do both MD4 and AICH hashing for non-part files. This cut down hashing of ~2.8gb of data from ~12:40 minutes to ~7 minutes on tests. * Adding checks against the user sharing the following dirs: Home-dir, .aMule, Temp-dir. Sharing home is allowed but results in a warning. * Fixed the Upload-parts drawing. * Fixed sorting by filename on the Uploading list. * Fixed crash on server list auto-update. Removes the possibility of overrunning a array. * Optimization of UpdatePartsInfo, which now no longer needs to traverse the parts-info arrays of each source for that file. * Fixed the redraw problems where some things wouldn't be erased on list controls. * Code cleaning, documenting and rewrite. Special Thanks To: * Translators: Ateo: (US english / en_US) biger [HUN]: (Hungarian / hu_HU) experience.chris: (German / de_DE) GhePeU: (Italian / it_IT) Gusar: (Slovenian / sl_SL) ilbuio: (Italian / it_IT) KamiKazeNH: (Brazilian / pt_BR) mad_soft: (Spanish / es_ES) nbfnw: (Chinese / zh_CH) Ogon: (Polish / pl_PL) piarres: (Basque / es_EU) pukyxd: (Catalan / es_CA) Supersnail (Dutch / nl_NL) Typhon: (Slovenian / sl_SL) * Contributors: alehack, alus, boutros, fossybaer, Frankk, han, junaru, sebaX, skolnick, sLiCeR\, Vollstrecker, volpop, {xmb} * Bug and feature reporters: Banerjee, chisky2003, Danny, ecforum, fctk, Gnucco, hades, jaguarwan, jolupa, juanii, kdka, kno, m2kio, MichaelLong, Pableron, pi-c, plaenky, realcruncher, Sir, Sniffer, sosonok, |Syrius|, xplode_me * Everyone at: #amule irc.freenode.net wiki http://wiki.amule.org forums http://forum.amule.org bugtracker http://bugs.amule.org * All aMule users!!! Welcome our new aMule team members: lionel77, ken_aMule, nachbarnebenan & one2one -------------------------------------------------------------------------------- Version 2.0.0rc7 - The "99,6% Final" version. ---------- 2004-10-19 bisley: * Added session ratio and total ratio to XAS deltaHF: * Got back from hell and changed one icon on the GUI ;) Jacobo221: aMule GUI: * Fixed two almost-the-same bugs when clicked download button and no items where selected (as reported by powtrix/willy, thanks). aMuleWeb: * Fixed a bug where up/down limits woudln't be displayed correctly if their string length were different. aMuleCMD: * Added 'list' (or 'find') command to search for a file in the downloads queue by name or by number (or just show all). * Added the ability to resume/pause all downloads at the same time through amulecmd (very handy when all downloads have been paused due to lack of space). * Fixed two bugs on amulecmd by which using 'pause' or 'resume' without arguments would pause/resume the oldest download. * Fixed a bug so that help command no longer is send to core. * Fixed other commands sending blank data to core. * Cleaned unneeded output log messages + added sent command messages to log (for easier security monitoring). * Several command simplifications on amulecmd to make it easier to use (while maintaining backwards compatibility). * Lots of translations lacks KingFish: * Fixed broken compilation in SysTray.cpp with gcc 3.3.4. Kry: * Fixed: Crashes related to animation deletion on http download dialog * Fixed: 0-size server.met file crashing aMule on startup and on download. * Fixed: GUI blocking on server connection. * Fixed: The last (hopefully) "fixed minsize" bug. FileDetail dialog was growing :) * Misc code cleaning. * Mac: * Enabling wxCocoa compilation * Fixed: Secure Ident was not working on big endian archs. * Fixed: ClientID endianess issues leading to faking low/high id * Fixed: Several fields were not having correct size on preferences. * Fixed: Curl preform_multi was crashing the http download dialog on Mac. This means server.met update and ipfilter update was crashing. Currently the fix disables 'Cancel' button on that dialog, while we wait for curl lib to fix this issue. lfroen: * Removed debug printf's in timer.cpp. * Fix for deadlock on connection timeout in ServerSocket.cpp. * Fixed assert when build with wx-cvs. * Added option for disabling SIGSEG handling: useful for debuging in amuled.cpp. * EMSocket.h cleanup. * Fixed unclosed sockets (CLOSE_WAIT) and few stability problems. * Make CEMSocket::OnReceive thread safe. MAX_SIZE reduced, cause even theoretically tcp can buffer up to 64K. * amuled fixes. mfs: * Fixed crashes on friendlist when keeping keys pressed * Fixed one server not being removed when several servers selected * Fixed access problems on deleting the ipfilter while accessing it Phoenix: * Fixed '&' char next to Preferences in amuleweb web page, as reported by DreamWalker. * ExternalConn: protected GETCATTITLE command from buffer overflow. * Start removing unused code from ExternalConn.cpp. * Fixed high CPU usage problem in amuleweb, thanks to jaguarwan for the report. Daemonizing amuleweb should be done using the -q switch. ThePolish: * Implemented new hits system in wxCas to display and save download rate records. * Changed wxCas layout to try to avoid display bug with wx-cvs * Added translations update (Thanks to all translators) * Removed wxCas documentation to slim source tree (now downloadable from berlios) Seagull: * Patch adding "Directory" column to the shared-files dialog. * Patch to add "Swap to this file" option for sources marked as "Asked For Another File" on download queue. Unleashed: * Better fix for amuleweb's high CPU usage problem. Now main thread only gets woken up when absolutely needed. Xaignar: * Reinsured that the preferences will be saved upon clicking "Ok". * Removed SSE2 specific optimizations from the embedded Crypto++ sources, they would break very easily and crash aMule. * Fixed a bug where we would sometimes attempt to remove a client from the wrong file, resulting in dangling pointers and crashes. * Ensured that the statistics-dialog would be updated when preferences relating to it where changed. * Added sanity checks to category-loading, to avoid adding categories without incomming dir or name. * Initial fix for crashes if aMule tried to share an inaccessible folder. * The redraw problems on restoring from minimized state should be fixed. * Fixed the shared-files list, which would draw columns regardless of whenever or not they were hidden. * Fixed the progress-bars in the shared-files dialog. It should now work properly for both part and completed files. * Fixed a bug in the ipfilter, where non-numeric chars on lines would cause wrong ranges of IPs to be filtered. * Re-added the priority menu for servers, which had gone missing due to a mistake. * Stopped the client-credits class from attempting to load older versions of the lists, which again would lead to mem-corruption. * Fixed hidden columns on download queue, which would still be drawn. * Added sanity checks to loading of clients.met file, since corrupted files would lead to potentially huge ammounts of mem-corruption. * Added "Completed Sources" column to the shared-files dialog. * Fixed a bug in sockets where disconnected sockets wouldn't be removed immediatly, but left to timeout instead. * Fixed an end-less loop on the AICH thread if a file on the queue was removed from the list of shared files. * Fixed an end-less loop when changing file-status by category. * Fixed the auto-priority menu-item on the download list when multiple items where selected. It would un-set auto-priotity instead. * A bit of optimization in CPartFile. More work will follow later. * Properly initialized a number of variables. * Fixed the column-width saving/loading which I managed to break shortly before rc6 was release. Whoops. :p * Ampersands will no longer be doubled when lines are added to the log-view. Special Thanks To: * Translators in this release: biger [HUN]: (Hungarian / hu_HU) GhePeU: (Italian / it_IT) mad_soft: (Spanish / es_ES) Ogon: (Polish / pl_PL) piarres: (Basque / es_EU) powtrix/willy: (Brazilian / pt_BR) punkyxd: (Catalan / es_CA) stefanero: (German / de_DE) Supersnail: (Dutch / nl_NL) * Testers and bug reporters: angel, BiByFoK, bill_bool, boutros, elui, Gaenya, jolupa, ken_aMule, mad_soft, Mig21, one2one, powtrix, RedDwarf, skolnick, wi777 * Everyone at: #amule irc.freenode.net wiki http://wiki.amule.org forums http://forum.amule.org bugtracker http://abugs.amule.org * All aMule users!!! -------------------------------------------------------------------------------------------------------------------------------- Version 2.0.0rc6 - The "We're so EVIL that we make you lose a sock in every pair" version. ---------- 2004-10-03 deltaHF: * GUI for MyInfo at Server window. * Added 'About' button. * Fixed sorting upload list by speed * Changed the Search dialog. * Fixes websearch for jugle.net * Added hability for send msg to clients in upload queue, without having to add them as friends (based on Kry's download queue send-on-right-click implementation) * Translations update. falso: * New upstream cas version. Now supports creating html pages with the statistics * Now cas runs on netbsd. * Misc fixes on cas. GonoszTopi: * Patch to fix buffer overflow in cas when line had more than 80 chars. * Patch to fix help switch in ExternalConnector.cpp * Patch to create -c switch in amulecmd: now the command line version can connect, execute a command and exit. Hetfield: * Lots of 3.4.x compilation fixes, due to -DWX_PRECOMP and wx headers checks. * Configure cleanup, safetray remove and nice cosmetics for tools * Configure option added: --enable-embedded_crypto to use amule crypto code and bypass crypto libs. Also fix freeze problem. * fixed crypto usage in core with configure and compilation flags * Re-enable Pentium4 and SSE2 optimizations fro Crypto stuff Jacobo221: * Fixed issue on the About button. Kry: * Got back from hell. * Imported eMule's 0.44x new corruption handling: AICH AICH stands for Advanced Inteligent Corruption Handling, and avoid having to re-download a full part everytime we get corruption on a file. With AICH, you will just re-download the 184Kb block that has corruption. It uses HashTrees to achieve the corruption diagnosis. More info: http://www.emule-project.net/home/perl/help.cgi?l=1&rm=show_topic&topic_id=589 ********************************************************************************* WARNING: AICH thread will re-hash all your files on your first rc6 startup. This can take very long when the user has lots of shared files. We're sorry but that's the only way to build the HashTree and thus making AICH able to work. ********************************************************************************* * Fixed the AICH implementation to support big endian archs (like ppc). * Implemented IPfilter auto-load on startup * Implemented IPFilter 'Update Now' button on preferences. * Revamped the HTTP download dialog, used to download IPfilter and server.met (and probably other files in a near future) Now it's the thread who runs the dialog, and dialog no longer block aMule while loading. It also has a progress bar. Yay! * Fixed amule daemon not allowing auto-dowload of server.met. * First rework of the Search dialog, later re-worked by Xaignar using the hide/show engine I did. * Implemented "Send messages" via right-click on source. * When aMule is running and you try to run a second aMule, it now send a 'raise' message to the current runing one. This is designed to fix the problems with aMule being in a inexistant systray and thus people being unable to recover it. * Fixed documentation: * Bugs on kb/kB mistakes * Added "What are all those fancy colors in the download progress bar about?" * --version switch now returns 0 (sucessfull app termination) * MOD_VERSION_LONG does no longer show 2.0.0 version on CVS * Cleaned the GUI for LOTS of unnecessary wxSizers that were looking ugly on Mac and making wxDesigner project file much cleaner. * Fixed memleaks on curl usage (thanks Seagull) * Systray is now skinnable * Safety checks: A File can't have more than 441 partcount * Added a file-access tracker that allowed us to fix lot of file access bugs: * We were closing invalid file descriptors! * Random Error responese from CFile class, again * Misc multiple bugs that made me kinnda rewrite the class * Fixed user not being notified of duplicated files on shareds * Safe load for clients.met (no more removing to load amule) * Fixed PrefsUnifiedDlg using wrong events for Spin controls. * Search textbox now accepts enter key (did it work before? or never worked?) * aMule now compiles and works with wxWidgets 2.5.2, with no gui bugs * Fixed a nasty cvs bug that was just taking '0' on upload settings as 0, not unlimited. * Fixed CArray implementation to avoid ints and make usage of size_t and off_t * Added GetConnectIP() implementation to BaseClient so we can hold the supposed IP or (after we had a connection) the real IP * Implemented extra-file_corruption_safety on files. No more 'please rm -rf .aMule/' * Implemented safe recover of .part.met files. This means that if a .part.met file gets corrupted, aMule will take care of it and try to recover it with minimal info. As a matter of fact, only filesize and hash is need, so any other info will be recovered or set to default instead of discarding the part file. * Fixed mem corruption on BaseClient * Fixed a crash on UploadListCtrl due to access to a either uninitialised or removed client. * Fixed the annoying empty message being sent every time a client connects to us while we have a chatwindow with him. this was really pissing people off ;) * Reworked SafeFile.cpp and made it compatible with eMule 0.44x. * aMule defaults to maximize if not size not overriden and no gui size stored (robably first run) * Implemented CDirIterator. Used to get rid of wxFindFirstFile and such buggy functions (breaking filenames on Mac and others). * Added GUI preferences fo AICH's hash trusting and IPfilter new options. * Corrected xMule version show. xMule started sending correct version tags on 1.9.1b, only 4 months after I told them, and only 1 after eMule+ developers did. Is based on our implementation (x.y.z instead of eMule's x.ya), so it was not hard to show them correctly ;) * Misc developing, memleak fixing, code rewrite, and co-workers abuse by insulting them and degrading them to worm state. * Kademlia Import: kademlia/utils * UInt128.cpp (class for handling 128-bits integers, added hability to read/write on SafeFile). * UInt128.h * All other files on the kademlia/utils are not needed by aMule. kademlia/kademlia/ * Defines.h * Entries.h * Error.h * Tag.h kademlia/routing/ * Map.h * Mac: * Fixed compilation near every day :) * Fixed the file descriptor problems, using the new file access tracker. * Fixed the clients.met file being saved badly and thus breaking load. * Fixed Search page not setting the SearchType to default. * Fixed the start, clear and clear all buttons on Search page * Fixed wrong usage (at least on Mac) of multi line control functions on single line text control * Fixed sharing dirs giving access errors (and probably on other archs than Mac). * Fixed amule daemon for taking 100% (or 198% on a dual system) CPU. * Fixed wrong filenames being shown when more than 24 chars. See CDirIterator above. * Fixed 'MyInfo' tab showing wrong endianess on IP. * Deleted files: eMule-Import-Status -> Very old unused file. RC1-KnownBugs -> Very old unused file. HTTPDownloadDlg.* -> HTTPDownload.* (no longer a GUI file) lfroen: * Core/GUI separation: * Moved all GUI code out of Core files. * Made a new socket engine to be able to use wxSocket on wxBase, even when wxBase has no event pool. * aMule daemon is now functional, but it still need hard testing. Enable it using --enable-amule-daemon. You can control it via any EC app (amulecmd, amuleweb) * aMule separated GUI does not compile right now, and the communication with the core will be improved as EC is rewritten by GonoszTopi. * Fixed crash on DownloadClient * Misc aMule fixes here and there :) Littletux: * Patch to include UTF-8 support in systray. * Patch to fix configure.in UTF-8 SysTray code. Phoenix: * Fixed a compilation warning + appartently useless code in DirectoryTree.cpp. * Fixed amuleIPV4Address for wx-2.5.2 and up. * Fixed the low number of sources problem with wx-2.5.2 and up. Problem was in CUDPSocket::SendBuffer, now there is a macro to test. aMule should be 2.5.2 network ready now. * wxCHECK_VERSION(2,5,0) no longer necessary in amule{web,cmd} for wxApp because we have now -DwxUSE_GUI=0. * New command line parameter in amulecmd: -pw or --password. * New commands in amulecmd: serverconnect, reloadipf and setipfilter. Thanks rommel for the initial patch. * Fixed amulecmd command parser. Help was not coherent and giving syntar errors. * Rewrote command parser/processor im amulecmd to use wxStrings. * Some i18n stuff in amulecmd. * Rewrote amulecmd and amuleweb, creating a new module, ExternalConnector.cpp. This module has a lot of code common to both programs, and will make it easier to maintain. * Fixed a small wxString bug in CamuleDlg::AddLogLine() in amuleDlg.cpp. * Improoved wxSting usage in ExternalConn.cpp. * Yielding in DownloadQueue.cpp Init() so that gui is not blank when loading lots of files. * A little better font/color handling in amulewebDLG and amulecmdDLG. * New command line parameter for amuleweb, amulewebDLG, amulecmd and amulecmdDLG: -f. This parameter reads the ECPpassword and the ECPort from the [ExternalConnect] section of file ~/.eMule. This way, the plain text password doesn't have to be passed in the command line. * Updated socket-2.5.c to the latest wx-cvs code. Fast reconnect -> lowid bug is fixed in wx-cvs now. When wx-2.5.3 is out, we will finally be able to drop this file. It will only be needed for versions 2.5.0(?) to 2.5.2. * Removed gsocket-2.5.h from the project. This file was not beeing used anymore. * Added command line parameter "-q" or "--quiet" to amuleweb(Dlg) and amulecmd(Dlg). This is to run amuleweb without any output to stdout, so that it does not need a terminal. * Changed amulewebDLG and amulecmdDLG to use sizers. * Removed a bug in WebSocket.cpp: was not testing the return value of Accept, this could create a thread with a NULL socket. * Added two new commands to amulecmd(DLG), GetIPLevel and SetIPLevel . * Rewrote most of the wxString usage of amule web server in ExternalConn.cpp. There should be some speed improovement. * Removed pop up when web server requested ed2k source link and amule was low id. * Fixed a problem with Server Connect command in amulecmd, it was not working. It has been renamed to ConnectTo. Also fixed help command output, should look better now. * Added "-fmessage-length=0 -W" flags when --enable-debug. * Changed m4/wxwin.m4 to recognize wx-config --libs base (no equal sign from 2.5.3 and up). * Unicode fix in SysTray and new compiler wanings fix due to new compiler debug option -W. * Some more consts in code due to CDownloadQueue::GetFileByIndex() and CSharedFileList::GetFileByIndex(). Also cleaned those functions. * Fixed Resume/Pause bug in amulecmd/amule. Now Resume/Pause argument starts at zero. * More gsocket.h update. * Debug protocol options. Comment/Uncomment: #define DEBUG_LOCAL_CLIENT_PROTOCOL in BaseClient.cpp #define DEBUG_REMOTE_CLIENT_PROTOCOL in ListenSocket.cpp #define DEBUG_SERVER_PROTOCOL in ServerSocket.cpp #define DEBUG_CLIENT_PROTOCOL in sockets.cpp * Changed configure.in to no longer use gsocket-2.5.c for wx-2.5.3 and up. * Fixed the Random Lowid Bug. * Cleaner solution to RLB: Accept() the connection and Destroy() the socket immediately. * Fixed a lot of bugs in amuleweb. In particular, stop / pause / cancel / priority(up/down) now works. * Removed bubble sort code in download queue from amuleweb. This code did not scale for large number of files, like hundreds. There is still room for improovement here. * Fixed a bug in SafeFile.cpp. wxString.Length() returns the number of codes in the string, which is less than or equal to the number of bytes in a multibyte encoded string. This way, amule will also not crash with locale search strings like korean, japanese and chinese. * Several amuleweb/ExternalConn bug fixes. Now the communication is in UTF8, so that soon amuleweb non-unicode can communicate with amule unicode and vice-versa. There was a bug when the number of files was more than approximately 90 because the communication routines could not handle strings greater than 64K chars. There is still some replicated code in ExternalConn.cpp, but the idea is that it will use the code in ECSocket.cpp. * Bug fix in ExternalConn.cpp. ECSocket must have the wxSOCKET_WAITALL flag to work properly when the message has more than 64Kbytes. aMule now uses ECSocket.cpp, no more replicated code in ExternalConn.cpp. * Fixed a bug in ListenSocket.cpp, m_client can be null after ProcessSecIdentStatePacket(), so, we must check. * Fixed conversion problems in ECSocket.cpp. Now external connections in UTF-8 are really working, and amuleweb/amulecmd (unicoded or not) can connect to amule (unicoded or not). * Fixed an unprotected call to strlen() in ECSockets.cpp, if you pass a NULL pointer to it, the program segfaults. * Added a timer for idle repainting in amulewebDLG and amulecmdDLG. * Fixed this assertion in Preferences.cpp: [Debug] 07:02:00 AM: include/wx/longlong.h(155): assert "(m_ll >= LONG_MIN) && (m_ll <= LONG_MAX)" failed: wxLongLong to long conversion loss of precision. * Reimplemented "Show Rates On Title" preference. * Initial import of new MD4 hash code from emule 0.44a into KnownFile.{cpp,h}. * Removed amuleweb html template 12 char password limitation. * Small fixes to UTF-8 SysTray support patch. * Several unicode fixes. * New macro in otherfunctions.h: unicode2charbuf(x) -- used when you need to store a (char *) to use several times. Rommel: * Patch to implement the commands serverconnect and reloadipf in amulecmd. ThePolish: * i18n amule log lines (server window) * amulecmd and webinterface i18n fixes * Some win32 fixes (slashes and backslashes) * Automake 1.8 fixes * Add traditionnal Chinese translation (zh_TW) from Paul (Thanks !) * Add it, nl, fr, pl, es, eu, ca translation updates (Thanks to all translators) * Fix copyright for alc icons * Replace amule, wxCas, alc .ico simple icons by icons group .ico * Replace alcc's printf by wxLogMassage * Make runtime to be in seconds in amulesig.dat * Modify Xas to handle runtime in seconds * Modify wxCas to handle runtime in seconds Unleashed: * cas: some sprintf -> snprintf conversions, ifdef unix specific code, and revert get_path() breakage Xaignar: * Other stuff I'm too lazy to write or have forgotten about. ;) * Initial multi-sorting on download list. Upon changing sort-column, any items that were evaulated to equal will be resorted by the last used column. * Fixed the constant resetting of the category dropdown-menu in the searchdlg. * Fixed "&"s being replaced with "&&" on the log-view. * Only displayed category color when the items arn't highlighted on the download list, to improve readability. (thanks to Seagull) * Optimized the IPFilter-code. * Improved the CDownloadListCtrl::Updateitem function so that it doesn't search the list for hidden items. * Improved sorting of clients by QR on the download list. * Removed a number of unsued files, cutting down archive-size by around 900kb. * Changed systray behavior to match KDE/GNOME. Single-clicks hide/show. * Fixed the "Last Recieved" column, which would show the same as the "Last Seen Completed" column. * Fixed the placement of sources on the download list, where they would sometimes be placed with the wrong file. * Cleanup of the new AICHSyncThread class. * Removed extra newlines before writing text to the logfile, to avoid having a double-spaced file. * Fixed loading of addresses.dat, where the first line would be ignored and replaced the messagebox with a log-line. * Fix the percentage displayed on the progress-bars being rounded, which would result in non-completed files showing 100%. * Added the ability for the user to specify permission settings for fildes and directories. These settings default to 640 for files and 750 for directories and are used throughout the app, with the exception of files created with wxTextFile, as that class lacks support for permissions. Will be fixed later * Cleanup of CServerListCtrl: - The sorting of the list is now always maintained, including when items on the list are updated or new items updated. - Cleanup of the popup-menu. - Disallow connecting to multiple servers at the same time. - Other changes. * Reduced the overhead of the overhead calculation by using code that didn't require iterating through a list every time. * Added checks to avoid the user getting spammed with the "Connected to user" and "Disconnected ..." when having an open chat-window. * Second reworking of the SearchDlg - The crash on searching should be fixed now. - Initial cleanups of the SearchList class * Cleanup of the SearchListCtrl class - Results will now always be sorted - Syncronized all lists during runtime, so that they behave as a single list. - Improving the coloring of items. * Cleanup of the CMuleNotebook class * Cleanup of the CMuleListCtrl class: - Added double-arrow for alternate sorting. - Centralized a lot of logical plus lots of other changes * Double-buffered all listctrls using custom drawing, to reduce flicker. * Added warning if the user recieves LowID from the server. * Disallowing the user to send empty messages in the chat window. * Rewrote the PrefsUnifiedDlg class - Removed the Rse classes and create a more clean replacement. - Made the dialog mode-less. - Removed the un-implemented Notify page - Serveral other changes. * Updated the version reporting capabilities of aMule, so that it will report version, wxWidgets type and version and if unicode has been enabled or not. * Added the new MuleTextCtrl class which supports the traditional popup-menu with Cut/Copy/Past/Clear and Select All. All existing wxTextCtrls were replaced with this new class. * Imported the parts of Crypto++ that aMule needs into two files with permission from the Crypto++ developer. This means that aMule now compiles without the user having Crypto++ installed, though it is still possible to use external Crypto++ installations if the user wishes to do so. * Fixed some compilation problems with aLinkCreator and wx-2.5.2. * Fixed the First-Time-Message being displayed twice and rewrote it somewhat since it was becomming quite outdated. * Fixed the "unable to open preferences.dat" bugs. * Fixed the ability to add static servers. * Cleanup of column sorting functions. * Fixed a bug where CServer::HasDynIP would always return true. This would result in need-less dns lookups. * Removed a redundant attempt at adding servers from connected clients. * Fix for Packet::PackPackets function where new size of packet wouldn't be saved. * Fixed some access to the dialog-window ptr after it had been deleted. This was causing some odd behavior once in a while on termination. * Fixed the downloadqueue sorting, which was reversed. Low-priorty files having high priority and high-priority files having low priority. (Thanks to thomas001 for noticing) * Rewroked the systray: - Fixed the the problems with the rate-limiting functionality. - Enabled use of PublicIP requests, so that the tray will show the users actual IP rather than the interface IP. - Some changes of the menu-structure. * Complete reworking of the hashing thread: - More informative output - Much better error handling - Handles duplicate files gracefully - Reads only 128kb (instead of 9mb) at a time to avoid killing the harddisk entirely while the thread is running. - Made the thread terminate when no files are left, instead of timing out as before. * Disconnected otherfunctions.h from the rest of the aMule code, so that it should be possible to use it in external apps. * Added checks when using the client-pointer in the socket-code, since that suffered from the same problem as the previously fixed clients (they have a habbit of dying at random). * Added function for truncanating displayed filenames, which is now used in file-details dialog, to avoid it getting resized to extreme widths. * Some work on readying the Info tab on servers, deltaHF_ did the rest of the work. * Small re-fix for the "mis-matching hash"-bug fix * Reworked the SearchDlg once - Added Jugle.net websearch - Added results-count to the result tabs - Other smaller changes * Fixed mem-leak where certian client-objects wouldn't be deleted. Specifically those that were removed from the download queue but wern't on the upload queue and didn't have a active socket. * Removed debugging functionality no longer needed. * Removed variable-arguments logging functions, since they were only needed in a very few places and posed a potential risk everywhere else. * Fixed StripInvalidFilenameChars function to avoid legit letters being dropped (thanks to likesylph). * Changed all file-accessing to use CFile rather than a mix of CFile, wxFile and FILE. * Removed a number of warnings. * Cleanups of the following files - AICHSyncThread.* - ServerListCtrl.* - SearchListCtrl.* - MuleNotebook.* - MuleListCtrl.* - PrefsUnifiedDlg.* - SysTray.* - AddFileThread.* - SearchDlg.* - CMemFile.h and filemem.cpp - SafeFiles.* - CFile.* Special Thanks To: * Lucasvr, for providing fixes for compilation with some wx versions. * Seagull, for providing fixes and suggestions. * likesylph, for providing a fix for the StripInvalidFilenameChars function. * All translators * All testers * BrianHV and the people at #wxwidgets for their help and support * EVERYONE at #amule (even codewarrior2!) * All the people in aMule's forum * All the users, for having the patience to wait the delayed rc6 release. * Hellimod, one_2_one, ASTIOBOY, sssnake, lami123, Ocimin, agav, PowerMike and all the mac testers and people providing Macs for ssh & vnc. Funny stuff about this changelog: * You can notice that the Search dialog was rewritten 3 (THREE!) times between rc5 and rc6. You only get to see the final version (Xaignar's), but the initial one was Kry's (when the extended buttons show/hide were added) and then deltaHF changed it later. We just love changing that page. ---------------------------------------------------------------------------------------------------------------------- Version 2.0.0rc5 - The 'Let's recover our release speed' version. ---------- 2004-07-18 deltaHF: * Better sorting of some columns Kry: * Some gui design and coding of the upcoming Kad window * Protocol update: * UDP protocol upgraded to eMule 0.43b * TCP Standard Base protocol upgraded to eMule 0.43b * TCP Extended Base protocol upgraded to eMule 0.43b * Fixed memory corruption and crashes on 'cas' * Fixed gsocket-2.5.c for big endian archs. * Fixed CFile class to actually return error when a error ocurred and not only when it feels like. * Fixed bug where the 'All' category could be removed leading to crashes and other funny behaviours. * No more minimize when no tray has been selected. * Fixed browse skin file button to actually browse a file ;) * Fixed high 32 bits of transfered bytes not being loaded on known.met (sorry fluffly!) * Some Mac bugfixes. Hetfield: * Some gcc 3.4.x compilation fixes lfroen: * GUIEvents updated * core2gui events added. * Some gcc 3.4 fixes to GUIEvents Phoenix: * Added a test with a warning to CSearchDlg::OnBnClickedSdownload in SearchDlg.cpp. A NULL value has been reported on the foruns, we don't know how GetPage() or FindWindowById() could have returned NULL. * More unicode fixes to alcc and ed2khash. * Fixed flags for console applications. -DwxUSE_GUI=0 is required so that amuleweb, amulecmd, etc, run fine with wxWidgets version 2.5.2 and up. * Fixed a problem with gsocket-2.5.c when using wxWidgets version 2.5.2 and up. Now amule runs with 2.5.2. * New ipfilter code. * Found the reason why wx-2.5.2 gui was messed: starting with wx-2.5.2, a new flag must be added when adding components to sizers to keep the old behaviour (wxFIXED_MINSIZE). This constant is defined to zero in amule.h when wx-version is less than 2.5.2, so that amule still compiles in old wx. ThePolish: * Add win32 MakefileWIN32, configureWIN32.h and project file amule.msp * Make win32 use winsock2 for IPFilter * Enable alc, alcc, wxCas translations with aMule catalog * Use normalized includes for wx in wxCas, alc and alcc * Limit the server name length in wxCas to avoid a too large window * New icon for alc * Global fr translation * Fix win32 ToolBar problem Xaignar: * Added the ability to search for "Texts" * Attempt at fixing both Random Socket Bugs and Random Client Bugs. * Fixed new IPFilter code. * Cleanup of CPartFile::SavePartFile * Got rid of some unneeded includes. * Fixed compilation when using crypto++ 5.2 * Ensuring that the ServerListCtrl gets unfrozen in case of corrupted met files. * Fixed a crash-bug added by Kry's UDP commit. Special thanks to: * The usual people, those on the other 'Thank you!' sections of changelog. * All the people at the Mac section of forums, for testing compilation and run. ---------------------------------------------------------------------------------------------------------------------- Version 2.0.0rc4a - HOTFIX release for lugdunum 16.47 servers (The 'Ooops!' version) ---------- 2004-07-14 Kry: * eserver 16.47 fix for shared files packet not compressed deltaHF: * Translations update ---------------------------------------------------------------------------------------------------------------------- Version 2.0.0rc4 - The 'Mules and rabbits like apples too' version. ---------- 2004-07-12 alehack: * Patch to show extra QR info * Patch to colorize the download list aquatroll: * Fixed includes for Win32 compilation * Cleaning of unused variables on Win32 * Fixed compilation on Win32 Citroklar: * lots of unicode slave work ;) croakerc: * Fixed OpenBSD compilation deltaHF: * Added websearch function (filehash.com) * Added jugle.net as Fake-check URL * New buttons added: - reload sharedfiles - switch upload/uploadqueue - clear completed files * Added 3 new columns in upload window (Client Software , Upload/Download , Remote Status) * Added 'Client Software' column in upload-queue window * "Asked for another file" on sources now with the filename that is asked for ( i.e. A4AF -> xyz.avi) * Added 'copy file feedback to clipboard' function * Added new Toolbar icons [ thx to http://www.everaldo.com ;) ] * Added icons in Preferences * Download menu changed * Work on skin support falso: * Typo fix: bandwith to bandwidth hellimod, one_2_one: * MacOSX support Hetfield: * Fixed unicode issues on SysTray.cpp, now apps is really unicoded! * deleted separated i18n stuff from SysTray, now uses global one * Fixed 2 memory leaks in SysTray * updated italian and napoletanean translations * Fixed unicode issues in serverlist updates and download tab * Fixed unicode issues that stopped adding files to download from ed2k utility and internal link handler Jacobo221: * New feature to open webpages in new tab instead of new window * Fixed a compatibility bug in OnlineSig with eMule's and added connecting support * Fixed bug in Statistics limits in Preferences * Fixed bug in Upload/UpQueue button * Fixed SERV.4 bug * Fixed DISP.14 bug * Added DOS compatibility into CAS and update onlinesig support * Several features in XAS (see XAS's changelog) Kry: * Fixed wxWidgets 2.5.x socket code. aMule now works on wx2.5.1 perfectly, wx2.5.2 introduces some GUI bugs. * Rewrote Preferences engine to be much nicer, and Mac compatible :) Thanks to deltaHF for the new icons. * Added a hack to make new preferences work on wxWidgets 2.4.2. I hope we can get rid of wx 2.4.2 soon ;) * Wrong .part.met files no longer make aMule abort on startup. Now a warning is displayed on log and aMule ignores that file. * Added the new compatible client flags tag agreed with lphant devs and eMule devs. xMule devs refused to use it. * Overloaded the wxSocketClient::Destroy to a safer version, to check cases when deletion is not called from Destroy() * Fixed the disconnection of clients that have MS_CHATTING state. * Fixed the usage of QueueLogLine fucntion to avoid crashed on too fast computers ;) * Remove spaces from search string start and end. * Remove spaces from ed2k links start and end. * Fixed a mem corruption due to lphant icon size (we all know lphants are big) * Splitted internal core and GUI events * Socket events mover to core * Timer got separated into core_timer and gui_timer, each one with the matching functions. * Fixed UDP socket handler being... the TCP handler. Since lmule times. * Delayed deletion of sockets to avoid async deletion issues that happens when Destroy() is called on a event * Fixed several rare crashes happening on some fast computers on shutdown aMule. * Added a debug function to get track of double-deletion of clients. * Socket handlers now stop notifying new events when Safe_Delete() is called. * m_pszUsername inited before a new call to handle 'new' exceptions correctly. * Added a hack on IsRunning() to check for current app object not existing yet (or deleted on shutdown) * Fixed all icons to be 16x16 to avoid asserts on 2.5.x for unmatching wxImageList sizes. * Fixed all wxImageList sizes to avoid asserts on 2.5.x on object construction. * KnownFileList takes account of the duplicates now, so those are not rehashed each time anymore. * Fixed EC password not being shadowed on preferences. * The preferences dialog should be resizable now. * Updated lphant stats to show the version as they added the extended version tag. * Fixed 1 double-delete on ListenSocket, when socket is not connected. * Each socket has its own handler now. Much safer and faster. * Fixed hashing thread implementation to make it shutdown safely. * Fixes on geometry handling to make it work properly from commandline. * Fixed minimize to tray to work properly with no more double-minimizes. * Coded the skeleton of the core/gui separation event system, improved by lfroen later. * Fixed CString implementation for operator '+' * No linking cas, wxcas and ed2k against crypto, please :) Fixed. * Lots of speedups on ClientUDPSocket handling, someone went paranoid and added lot of redundant code. * Changed most of the wxT("") to wxEmptyString * Fixed the splitter position and client size on restart. * Fixed compilation on wxWidgets CVS * Fixed amuledlg not being set to null + moved the init to beginning on amule.cpp * Fixes mem corruption and crash on PrefsUnifiedDlg * Fixed missuse of inet_addr on BaseClient. * Fixed crash on stats disabled * Reduced memory usage with a centralised icon handling. * Fixed wrong var type on EMSocket.h causing mem waste. * Fixed bug on SetFileSize (thanks to Pichuein on eMule forums) * wxWidgets 2.5 compatible CDirectoryTreeCtrl. WARNING- NEW BEHAVIOUR IS: LEFT CLICK ON ICON -> SHARE, RIGHT CLICK -> RECURSIVE SHARE Also made the icon red if the folder is shared. * ModString fixed - Now mods identify themselves correctly. * As xMule now identifies as eMule 0.0a, added xMule detection based on username and modstring to keep stats coherent. * On debug builds, client stats now show the amount of clients with open socket. * Changed theApp.glob_prefs->GetAppDir() to theApp.ConfigDir for speed improvements. * Fixed crash on empty shareddir.dat * Fixed listen socket being processed before created on fast computers and thus causing crashes on startup. * Fixed server version tag. * Added frame name to the aMule main window to be handled correctly by X server * Fixed a crash on log file re-creating on startup. * Fixed the update of the categories tab names to show the file count and the downloading files. * Fixed the update of the categories tab names tp happen only when needed to save cpu. * Changed several vars and functions to const for speed improvements. * Enter button working now for web search. * Added a check to disconnect clients sending non-hello packets before finishing handshake. * Added preferences items for the upcoming Skin engine. * Fix from lugdunum to avoid blacklisting on servers because of key repeat on pressing enter for search :) * Use generic BSD wx preprocessor define to make aMule FreeBSD and OpenBSD compatible. * Fixed Incoming folder not being shared on strange situations. * Fixed usage of '/' instead of '\' on Win32 builds. * Made file comparison case-insensitive on Win32. * Better fitting of notebooks * Fixed shared files reloading to stop being dependant of buttons/labels * Socket handling now deletes the client if connection fails ;) * Fixed some wxSizer usage causing compilation compatibility problems between wx 2.4.2 and 2.5.x * aMule now filter bad ips on source seeds. * Autoconnect and onlinesig are now on by default. * Added a check on graphic stats drawing to avoid crashes if no DC is created yet. * aMule now uses crypto++ for MD4 calculation (faster, and endian safe) * Added two sanity checks for source drawn with no reqfile associated, avoiding crashes. * Fixed mem corruption and possible memleaks and crashes on file comments received. * Fixed a BAD and UGLY and EVIL mem corruption happening since more than a year ago and still present on the original program (xMule). * Client sending wrong OP_FILEREQUEST packets are now disconnected to avoid further problems caused by their corrupted packets. Old shareazas and most xMule versions have been warned since 2004/04/13 from aMule and since much more time ago from eMule. Shareaza fixed it, but xMule refuses to fix it. eMule 0.43x disconnects them too now. * Fixed crashes on sockets because of packet overhead being calculated after packet was deleted. * Fixed the CVS mod reporting for aMule 2.x * Fixed the Online Signature dir selection. * Fixed some shared files not being shared due to a return; on a wrong place ;) * Fixed some events being posted to wrong event handler. * Added GUIEvents.h to take care of the core/gui separation events. * Cleaned ColorFrameCtrl class * Cleaned otherfunctions.* * Lots of misc code cleaning * Several minor messages and GUI bugs. * Several warnings removed. * Removed useless files: XBMDraw.cpp XBMDraw.h SplitterControl.cpp SplitterControl.h ------------ MAC ------------- * Fixed compilation on wxMac CVS and 2.5.x * Fixed socket connection on Mac. * Fixed endian issues causing crashes on server communication. * Fixed string tags being read wrong. * Fixed known.met being corrupted on every save and reload. * Fixed stats not working on Mac (no longer crashes because of drawing) * Fixed mnemonics on file search not being endian-safe. * Fixed server TCP flags. * Fiexd bug on lowid callback. * Fixed serverlist on Mac: - Server users - Server files - Server ip being reversed on restart - Server port set to 0 on restart. -------- UNICODE --------- * Fixed unicode compilation of most files (except those by Citroklar, Hetfiled, and shakraw) * Fixed search on unicode builds. * Unicoded most of the app internals :) * Fixed part.met on unicode builds * Hunted and killed (char*) casts and c_str() calls. * Fix unicode client names and misc. * Percentage & Download speed fixed * Reported several bugs to wxDesigner's mantainer to make it work properly on unicode builds * Fix usage of st_mtime to allow files with non-std chars to be shared without crashes on wx2.5.1 * Fixed PerformFileComplete to allow unicoded files to be finished :) * Fixed part met filename being 001.part everytime on unicode builds. * Fixed renaming on file completion causing crashes on unicode builds lfroen: * Started to implement various changes needed to split the core and GUI. Madcat: * Fixed preferences layout of panels. * Simpler ed2k link integration for Mozilla 1.3+ / FireFox 0.6+ - Using Mozex plugin niet: * Added support for memory usage and binary name (on xas) Phoenix: * Code cleaning in several modules due to making the members size, opcode and prot private in packets.h. * CFile Close(), Read() and Seek() made const. Seek() needed the use of mutable with m_fd to be const. * Put lots of consts around the code in the routines that should be so. * Patch to --enable-stdin to aid in debug with valgrind. * Code cleaning in module Packets, made a lot of stuff private now. * Small hacks to print debug messages and avoid crashes, mainly in PartFile.cpp. * Sanity checks in debug mode (MagicNumbers) to aid finding bogus clients and files. * Created debugstuff module, debug build only. * New configure option --enale-verbose, so that normal users are not flooded with debug messages. * MagicNumbers are swapped to signal deleted source/PartFile. * Removed deprecated wxArrayString::Remove(size_t nIndex, size_t nRemove = 1) using wxArrayString::RemoveAt(size_t nIndex, size_t nRemove = 1) now. * Get rid of evil wxString::GetWriteBuff() and wxString::UngetWriteBuf() in ECSocket.h. * Added -pw/--password command line option to amuleweb. * Small unicode fixes. * Fixed a messed up display in html code in aMule.tmpl (thanks to steve.reaver) * Fixed font problem after Xaignar's great flicker free work in download list control. * Fixed broken sort arrow after flicker free clean up. * Enabled mouse wheel scrolling in all aMule list controls. * Fixed two unhandled events in amule.cpp: CHAT_REFRESH_FRIEND and CHAT_FIND_FRIEND. * Fixed compilation in 2.5.x and some unicode issues in aLinkCreator. Using wxAppConsole when wx > 2.5.0. * Fixed compilation and linking in 2.5.x for amuleweb. Now uses wxAppConsole when wx > 2.5.0. * Added a test for the return value of theApp.serverlist->GetServerByAddress(), which could be NULL. This was the reason why aMule was crashing when trying to connect to server with wxWidgets-2.5.2. * Fixed compilation and linking in 2.5.x for amulecmd. Same problem as amuleweb. * Commited a patch from wolti that fixes compilation on sparc/Solaris systems. * More sparc compilation fixes, thanks to wimms. * Removed the declaration of void ParseCommandLine(); from TextClient.h and WebInterface.h. It seems to have been forgotten here. * Patch to listctrl.cpp, was segfaulting in 2.5.1 when hiding/resizing columns. In 2.4.2 was just asserting. * Patch to Partfile.cpp, workaround the socket == NULL bug, so that amule does not crash. shakraw: * Fixed the "remote connect" bug * Unicode support for amuleweb * Fixed typos on amuleDlg * Unicoded some files. steve.reaver: * Fixed a messed up display in html code in aMule.tmpl thepolish: * wxCas: - Fixed for amulesig.dat changes - Solved localized decimal separator pb - Embeded all pixmaps in src files and remove now unused pixmaps dir (better for portability) - Win32 toolbar pixmaps have transparency now - Added variable refresh timers - Added user preference system - Added statistic image creation - Added FTP support for an automatic upload of the statistic image * aLinkCreator: - Added this new maaarvellous tool suggested by DeltaHF to compute ed2k links from a file (same behavior as eMule link creator, but no shared code) - Rewrote md4hash and ed2khash code to avoid external dependencies (libcryptopp free), and to be Big Endian proof (works on Mac afaik) - Added alcc, the "alc for console" command line client - Added toolbar themes (KDE and DeltaHF's default for now) - Thanks to Phoenix (Unicode, Hook, commandline...) and one_2_one (Mac tests) * aMule: - Rewrote Makefile.am tree to fit to GNU standards - Removed Makefiles stuff for wxwidgets < 2.2.6 - With >= wx-2.5, use wx-config --libs=base,net instead wxbase-config (because base in buggy on 2.5), and keep using both on 2.4 versions - Check for wx >= 2.4.2 instead of 2.4.0 - Removed GTK2 warning with wx >= 2.5 - Fixed GTK2 not detected - Enabled documentation installation - Install xas in $(libdir)/xchat/plugins. Will work if aMule and xchat are installed with same DESTDIR - Suppressed widlcats in makefile (not fully supported in all make) - Enabled make dist and make distcheck targets - Force automake scripts update (missing...) to suppress warning in configure - Force autogen.sh to regenerate intl at each call to keep sychronised with system gettext templates - Some minor i18n and unicode fixes - Updated POTFILE.in - Removed Win32 stuff from autotools scripts - Added static MakefileWIN32 for win32 compilation Unleashed: [ From rc3 (not on changelog)] * Cache get_path homedir to speed up multiple calls * Removed unused Tag_Struct * Fixed var init and memleak in SearchList [ rc4 ] * Fixed COMP.10 bug * Wiped out USE_DEBUG_SYMS wimms: * More sparc compilation fixes. wolti: * Patch that fixes compilation on sparc/Solaris systems. Xaignar: * Merged lists used to identify file-types to avoid duplicity. * Added wrapper-class around MD4 hashes. * Fixed a number of places where the hashes where used as NULL-terminated strings, despite them not having a NULL-terminator. * Most functions using hashes now use the MD4 wrapper class for arguments. * Fixed rare possibility of ending with an unclosed file in CServerListCtrl. * Fixed unsafe parsing of OP_SERVERIDENT type packets. * Fixed unsafe passing of strings as arguments to functions using format-strings. * Changed the chat-dialogs to textctrls, which means that it is now possible to copy text (the unix way) by highlighting it. * Fixed some memleaks. * Fixed "&"s not being escaped on status-bar. * Fixed incorrect source exchange packet format (Many thanks to the eMule Plus team for reporting). * Started to document source-files with a Doxygen compatible comment format. * Fixed the height of the barshaders used on the download list, it was 2 pixels too high, resulting in a slight cutoff. * Reducing CPU-usage of auto-priority by not forcing a redraw every time the priority was automatically changed. * Fixed that some overloaded functions hadn't been declared virtual in the base class. * Replaced gif-animation widget with something more lightweight. * Added sanity checks to CMemFile::Read. * Fixed a number of uninitialized variables. * Fixed several warnings about non-existing files. * Fixes warning about not being able to create dir "" on first run. * Changed "Extended Drop Sources" preferences, with the result that the option will be reset to "Swap Sources" when this version of aMule is first run. * Got rid of most warnings when compiling. * Lots of work on getting rid of c-strings. * Fixed bug that would cause deleted sources not to be removed from the A4AF lists. This was a major source of crashes. * Improved performance and safety of the source lists used with PartFiles. * Lots of small imports from eMule. * Made reqfile attribute of CUpDownClient private and added wrapper functions to fix the avilable-part information getting out of sync. * Cleanup of includes. * Fixed that we were always sending an OP_REASKACK packet and then the correct packet when recieving an OP_REASKFILEPING. * Fixed Bug 45: URLs are now properly escaped when opening browsers for Fake-check and such. * Fixed Bug 62: aMule will now be brought to front when left-clicking on the tray icon and when it is redisplayed after having been hidden. * Added checks against aggressive clients (clients who reask for files too often). * Imported checks for known leech-clients from the BlackRat eMule mod ( Many thanks to Le Rat Noir and inoteb for allowing us to use their work ). * Fixed wrong initialization of headers for some packets ( Thanks to thomas001 for reporting ). * Fixed a delete called on an uninitialized pointer in the statistics dialog and properly initalized serveral other pointers. * Optimizing the Comp(Up/Down)DatarateOverhead functions to something that didn't require traversing a list at each call. * Complete rework of the source-swapping functions. * Fixed the possibility of sources being added to multiple source-lists at the same time (No more mis-matching hashes warnings). * Fixed the new columns added by deltaHF not being displayed and added checks in case the same thing happens again. * Almost completly eleminated flicker on the download list and did a cleanup of the drawing routines associated the the download list widget. * Fixed some lists (Server list, maybe others) not being sorted when aMule is started. * Fix mem-corruption bug in SysTray code if the systray was compiled in but hidden. * Fixed the problem with deleting the last (connected) server on the server list. * Removed the following files: - ini2.* - CString.h - mfc.h - position.h - resource.h - strings.en * Cleaned up the following files: - CTypedPtrList.h - BarShader.* * Many other smaller changes. Special thanks to: * Le Rat Noir and Inoteb of the BlackRat eMule mod (http://www.blackrat.fr.tc/) for allowing us to make use of their work on detecting bad clients. * Optimazer and the eMule Plus team (http://emuleplus.sourceforge.net/) for reporting a bug in source-exchange packets. * thomas001 for reporting a problem with packet headers. * Everaldo (http://www.everaldo.com) & "Jimmac" (http://jimmac.musichall.cz/ikony.php3) for new icons * Phk for searching for new icons ;) * kno and thermoman for their fixes :) * TheBlackHand and Hawkster eMule mods * uberpenguin for AMPS :) * All aMule users, testers & translators * eMule & wxWidgets devs * Everyone we forgot here ;) -------------------------------------------------------------------------------------------- Version 2.0.0rc3 - The 'Target: Stability' version. ------------- 2004-04-22 aquatroll: * win32 stuff barbapapa; * Fixed >2Gb files sorting bug on transfer window. Citroklar: * Fixed saving preferences on klick OK, not only on shutdown. * Configure stuff * Cas related stuff deltaHF: * i18n stuff * Minor timer fix ;) elfstone: * Fixed already downloading files not being marked as such on search results. falso: * Improving and fixing cas * Added capability to create pngs with cas * Fixed ed2k fast links handler Kry: * Complete rewrite to emule 0.42x ed2k network code * Rewrite of hashing thread. Also added a timeout to save resources. It times out after 1 min without hashing or receiving new files to hash, or 1 min since last hash, and dies gracefully. * Fixed the crash on startup if incoming/temp folder are on FAT32 * Added Safe Max Connections code to Preferences->Tweaks. This code will help all people with USB modems and crappy routers to not hang them. * Identify to lugdunum > 16.45 with our proper extended version tag (2.0.0) * Fixed & rewrote stats * Added Shareaza & lphant * Fixed mldonkey stats (do they have to change their compatible number this often?) * Added aMule / eMule / eDonkey proper version handling * Dynamic tree of client versions (no more void versions) * Fixed the xmule inflated statitics on the stats tree * Rewrote client icons handling * Use alpha channel to show the extended protocol and secure ident * Added Shareaza, xmule, lphant, bad_guy and unknown client icons * Fixed chuck selection. Much, much, much, much faster downloads. Back to the 1.2.6 speeds :) * Fixed Win32 compilation * Fixed lowID warning message on start being void. * Proper Win32 and Mac disabling of the vertical preferences * Severe bug on wxRadio button on RseInt was preventing ANY radio button on preferences from working. * Fixed crash on 'cancel' while downloading server list. * Fixed a UpdatePartsInfo missing on KnownFile.cpp * Fixes the fake-check custom browser textfield * Added wxNB_MULTILINE to preferences notebook. * Minor issue on the chunk selection (thanks to AndCycle on eMule forum) * Fixed a SEVERE mem access issue on the hash of the file id to check on knownfilelist. * Fixed a SEVERE memory bug on sending the shared folders * Fixed not sending the incoming and categories folders when sharing folders. * Fixed 'Friends' working as 'None' on 'view shared' preferences. * No more [0xy.part] on preview of completed files * Fixed the FAT32 rehashing of files on startup * Fixed filters not being used on right click on main transfer tab -> new status * Changed known file list from wxHashMap to std::map * Fixed auto-update server list at startup Added posibility of multiple servelist urls too * Fix for files publishing, reported by lugdunum to eMule/aMule developers. * Proper use of ClearHelloProperties that fixes some crashes related to a var not being init. * Added MOD_VERSION to hello type packets (just for CVS versions) * Fixed packet processing on EMSocket error. * Changed the full part (9.28Mb) lower limit for preview to 256Kb * Added 'LI0' to the evil GPL doer checks. * Bugfixes on the KnownFile::UpdatePartsInfo code. * Added new verbose client info checkbox, to find out which clients are sending bad data. * Fix UDP socket for Win32 * Re-added the timed part file buffer flush() * Custom language support added * Fixed FAT32 incoming/temp warning messages only shown on one of the folders. * Fixed issues on packet unzip and crash on OP_CANCELTRANSFER already sent * Added aMule 1.x / 2.x / CVS versioning. * Thread-safe log lines adding using a queued loglines list. * Completion Thread revamped --> No longer crashes, no longer asserts, and it's much nicer. * Fixed safe_delete (again) * Fixed some memleaks * Changed some CLists to wxLists * Cleanup and fixing little bugs ;) Madcat: * Disable autobacktrace on win32 * Removed wxTE_PROCESS_ENTER style from fast ed2k links handler (fixes assert) * The following modifications to CamuleDlg::AddLogLine() function: * Now uses system locale for date/time formatting. * No longer asserts. * Now also works on win32. * Removed unused m_StateImageList * Code cleanup one_2_one, hoschy007: * MacOSX stuff shakraw: * Fixed multiple file download bug in webserver search section * Fixed ed2k download link * Fixed categories for web interface * WebSocket.* & WebServer.*: now uses wxThreads and wxSockets to be cross platform. * Better threads' array remove in WebSocket * WebServer cleanly stopped before exit * Fixed max 2Gb display bug in amuleweb * Updated aMule.tmpl: added file %complete support in transfer list thepolish: * Wrote wxcas based on cas from falso * Enable auto-refresh and Fix GPL headers (wxcas) * Add system load and uptime (wxcas, Linux only) Unleashed: * cas: better layout and fixes * Fixed a pair of memleaks Xaignar: * Fixed negative percentages in downloadlist ... again (Disp.8) * Fixed the "free(): Invalid pointer" bug (Misc.10) * Fixed PowerShare priority level not being saved. (Tran.9) * Fixed the problem where it wasn't possible to select auto-priority in the uploadlist after having selected another priority (Tran.8) * Cleanup of Search Dialog: * The reset button is now properly enabled/disabled depending on the contenst of the text fields * Fixed a bug where searched would be limited to 2gb if max size was set to a value less than min size * The popup-menu for the notebook now works as expected (SRCH.1) * The popup-menu will now only show when right-clicking within the bounds of the notebook (DISP.12) * Fixed the green progressbar on downloads always displaying 100%. (DISP.9) * aMule will no longer display warnings about not being able to find server.met when a new server.met is saved and no old copy exists. * known.met is now auto-saved (1) when 30 files have been hashed, (2) when 300mb worth of files have been hashed, (3) and when all files have been hashed. This is to reduce the chances of having to rehash all files after a crash. * Now uses the user-selected browser for fake-checking and such. (PREF.3) * Further update of the Chat Page: * Pages can now be closed like the ones on the Search Page * Double-clicking on a nickname will open a chatsession for that friend * When a nickname is updated in the friendlist, the assosiated tab is updated as well * Other stuff ** Special thanks * All the bug-reporters, helpers, translators and users at http://forum.amule.org * Batman who commited a mldonkey related fix, thanks :) * Jacobo221, Stefanero for their help and support on forum and all the other stuff ;) * lugdunummaster for providing support on version tags and new features of lugdunum servers . --- As usual thx to eMule & wxWidgets devs and everyone i forgot ;) --- --------------------------------------------------------------------------------------------------------------- Version 2.0.0-rc2 - The 'white rabbit' version. ------------- 2004-04-11 aquatroll: * Fixed Win32 compilation (again). Ariel: * Implemented completed parts count on file rehash. Prevents your downloads to completely lost on a wrong .part.met write. croakerc: * Added zlib version check * *BSD compatibility deltaHF: * New icon for aMule in DL/UP window ;) * curl-config now >= 7.9.5 (for debian) * i18n stuff * Removed double catalan entry from prefs * Fixed some typos falso: * Added cas (C aMule Statistics), a remake of aStats but 10 times faster (still lack online sign). * amulesign.dat now shows the Total transfered values in bytes. * Added Session upload and download to amulesign and uptime too. Hetfield: * Added new inclusion path if distro in not detected * fixed wrong and duplicated inclusion in ClientCredits.* * Modified configure scripts, only amule is compiled by default * Added cas, ed2k, amulecmd, amulegui, amule webserver, amule webserver gui * fixed wrong zlib check in configure hoschy, one-2-one, godard, PowerMike, hellimod: * MacOSX stuff Jacobo221: * Compiled the RC1 bugs and provided support on forums. It's our man-for-all. Kry: * Implemented the Complete count on search results and on file publishing. This feature added since aMule 2.0.0-rc1 and eMule 0.42e was not released with the rc1 for network technical reasons (still on testing with lugdunummaster). When publishing a file, we also inform the server if the file is complete or not. Search results show the count of complete sources sent by the server next to the sources found: i.e. 100 (28) meaning 100 sources, 28 of them complete (72 incomplete or old client) * Added sending of the extended eMule version using aMule version, with additional rc version * Added parsing of the new 0.4x eMule tags on hello packets. * Added parsing the Secure Ident packets for new eMule versions. Reduce overhead on download/upload. * Added HandShake check on upload request. * Rewrote display of client version on transfers page to handle the client soft/version correctly on any client. That means eDonkeyHybrids and eMule does show now the correct version (i.e edonkey 0.50.1 or emule 0.42d) aMule shows now as either "aMule 1.x (based on eMule v0.xx)" (<= 2.0.0-rc1) or aMule "A.B.C-rcX" (>= 2.0.0-rc2) * Fixed Mule Info packet only sent to eMule clients. Now is sent to old eMule && eMule-like clients (compatible clients) * Added 'Allocate Full Part File" and "Allocate Full Chunk" to preferences. None functional yet. * Fixed Client Detail Dialog to show correct client version. * Fixed comment mark on Download list being cut on the display. * Fixed the crashes on Base Client packets. * aMule now loads .par.met.BAK if the .part.met is 0-size (added to Ariel's commit, this prevents losing met files). * Made SafeMem files really safe checking for read after end of file. * Fixed wrong Modversion data (fixes random crash too) * Fixed assert on wrong upload list control data. * Fixed several crashes on wxString::GetData usage. * Fixed UDP disable button not being saved across sessions * Fixed a bug on new version check. * Locale goes to System Default on new version now (fixes weird language problems) * Fixed wrong OP_REASKFILEPING packets being sent . * Reverted GAddress_INET functions to standard inet_addr ones. * Completely removed list refresh functions. CPU saved was not worth it. * Added CheckDiskSpace checkbox and radio button to the preferences. * Added the scale of the connections graph on stats. (only rescaled on restart) * Added 'Reset' button for Server Log * Fixed: Right click popup on server connected was showing 'connect' now shows 'reconnect'. * gscocket shouldn't be compiled on Mac, and so it's not compiled now ;) * Fixed Preview of already completed files not working. * Fixed files > 2Gb not working on fast ed2k links handler and ed2k app. * Fixed file size for files larger then 2Gb displayed incorrectly * Changed timeout of curl functions to 10 - fixes hangups when clicking server update without internet conenction. * We don't share 0 size files anymore. * Fixed the crash on invalid socket using 5 different ways. The last one seems to be the most stable. * Fixed several hangups on file completion. * Fixed % and progressbar not being updated when changed on GUI Tweaks. * Fixed comment packets. This was causing disconection from eMule clients (and crashing aMule clients) * Fixed amule dissapearing because sent to systray when --disable-systray was used. * Fixed memleak on search packet sent. * Fixed memleak on KnownFile deletion * Fixed memleak on search results received. * Fixed memleak on comment packet received. * Speeded up socket event handling. * Cleaned server connection. No more 'inet connection might be down' - unless it's down ;) * Faster PartFile processing. * Fixed endian issue on PartFile loading. * Fixed non-needed delete of an array on the notebook destructor. * Doesn't allow an incoming packet to get processed if socket is deleting. * Fixed double-highlight of servers if disconnected by the server. * Speeded up hashing of the files a lot. This should fix the gui hangs at startup. * Removed all old preferences code. That makes the app smaller, less memory used, and avoid some unexpected bugs that arised on having 2 preferences implementation. Now New Prefs become Preferences. * Fixed SysTray and gtk-files being compiled even when disabled on configure. * Fixed several warnings. * Fixed assert on Clear All (search) * Make aMule compile on wxWidgets 2.5 (and CVS) version. Madcat: * win32 LaunchUrl() function * Added amule-win32.HOWTO.txt * Better win32 version of Hostname() function shakraw: * WebSocket.* & WebServer.*: now uses wxThreads and wxSockets to be cross platform. * Better threads' array remove in WebSocket * WebServer cleanly stopped before exit * Fixed multiple file download bug in webserver search section * Fixed ed2k download link * Fixed categories for web interface thepolish: * win32 stuff Unleashed: * Memleak fix Xaignar: * Amule no longer writes met files when priority is changed through the auto-priority subsystem. Thus hd-writes are substancially reduced depending on the number of files set to auto-priority. * Fixed bug where text fields overlap each other (Disp. 4 & 5) * Cleanup of amuleDlg.* * aMule no longer displays a message about not being able to open the file "lastversion" the first time it is run * Changed the CTypedPtrList filelist in DownloadQueue.* to a std::deque, with a speed-increase as a result * Fixed the bug where the background of previously selected items in the friendslist wouldn't be redrawn (Disp. 2) * Fixed auto-priority. Priority would be set one tad too high, resulting in the downloadlist failing to assign a name to the priority, thus leaving empty fields. Also fixed displaying of priorty "Auto [Lo]" in sharedfiles-list. (Tran. 3) * Fixed the problem where "completed percent" of files that hadn't transfered any bits yet would display a negative percentage (Disp. 8) ** Special thanks to niet for his DNS service, bootstrap for his CVS service, stefanero & Citroklar for their great help with a lot of stuff. Thx also to all translators and the users for reporting bugs and testing aMule (feel free to report more) :) As usual thx to eMule & wxWidgets devs and everyone i forgot ;) ** New translators: Supergirl: Croatian rommel: Portuguese sNeo: Italian (Napoletan) ** Follow the white rabbit and u'll find rc3 soon ;) -------------------------------------------------------------------------------------------------- Version 2.0.0-rc1 - The 'Mules and Rabbits love carrots' version. ------------- 2004-03-26 Kry: * Implemented SecureIdent (SUI) (imported from eMule 0.30x) This mean your credits will be lost on first run There is no way to avoid that. Sorry :) Same happened with eMule. * Send sources request for files added from search page first. * Rewrote MuleNoteBook from gtk to a cross-platform implementation. The code is already used by xMule too, so I guess they liked it. * Fixed most of > 2Gb bug, except the dom's contibution you can scrolling down ;) * Made the .part.met load/save 100% compatible with eMule. * Fixed the Safe_Delete bug. Seems it arised when we made the app too fast ;) * Random usable position of the server split. * Added bluecow's fix for zlib compressed packets. * Even safer .met saving * Added preferences checkbox for new style / old style tabs on preferences (vertical/horizontal) * Checked for protocol limits on file size. * Now client detail dialog show Secure Ident State (Not Supported/BadGuy/Not Complete/Verified) * Added itoa to the MFC layer * Added SetLength to CFile (MFC compat layer) * Fixed hangup on message sending. * Moved Fast ED2K show to GUI tweaks * Slugfiller's Secure Hash (imported from eMule 0.30x) * Fixed GetTickCount code returning signed value * Fixed GetTickCount code not initializing the vars. * Moved the FILE* to CFile for furter compatibility of code. * Added the first version run detection * Removed some Yield() code that only slowed init. * Simplified systray menu by only showing what needed. Thanks to jadrian for the feature request. * Grayed non-working Preferences options to avoid confusion and to make the developer life easier selecting what to do ;) * Fixed CTag new structure (imported from eMule 0.30x) * Removed the mostly useless wizzard. * Fixed the DoSwap crash on swapping A4AF sources. (hopefully) * Fixed the log auto-scrolling up on messages window. * Fixed the Upload bug that arised during endian changes. * Added the Arabic, Chinese & Finnish compatibility on loading * OpenBSD compatibility fixed * Mac port 99% done, next version will be Mac compatible Some final bugs to be fixed ;) Fixed: *) .met files loading/saving (except knownfiles.met) *) .dat files loading/saving *) 99% of the preferences bugs. *) Compilation and linking. *) Error popups relates to c_opaque colour. * Starting sync with eMule 0.42 * Speedups on Partfile Process nd DownloadQueue process. * New 'server version' colum on server list window. * MUCH safer packet handlig - avoids crashes on 99% of wrong tags. * Fixed Dirs number on 'view shared'. Made aMule/eMule assert ;) * Made download queue list refresh on a nicer way (much less glitches). * Fixes an assert for invalid menu entry on right click queue popup. * Mayor speedup on Highlight server (and thus on server connect/disconnect) * Prevent removing the server we're connected at, either directly, on in a list of servers to delete, or in removing all servers. Warn the user with a message Box and then leave it non-deleted. Fixes crash. * Fixed hangup on message sending * New IPFilter code (reload & on/off) * Added checkboxes on GUI Tweaks tab for download progress % and Bar drawing. * Fixed a severe memleak on the % showing and speeded it up. * Save 5 sources on rare files (<20 sources) * New SetFileSize code to avoid cpu usage. * Removed the List Show/Hide and slider that made too much problems on 1.2.6. Safer version (and better) will be on 2.0.0 final. * Speedups on Hash thread. * Safer corrupt detection on FAT partitions I'm sorry if it rehashes every file on your system on restart, will be fixed. * The file pause because of diskpace shows now on aMule logs * Fixed BackUp file to REALLY backup instead of moving. * Added code to check 0-size .part.met and load backup if needed. * Fixed types.h and wintypes.h for proper Win32/Mac/linux compatibility. * Added ECSocket code as common implementation for interaction between different UIs (webserver, amulecmd, etc). * Fixed intercomunication for little endian <-> big endian machines on ECSocket. * Speedups on Endian Swap code & proper wxWindows way to detect it. * Changed CArray to wxArray on most places for safety. * Added configure code for detection of the crypto++ includes/libs * Fixed buggy curl-config on Mac including -mi386. * Removed useless files: TabCtrl.* * Fixed several bugs, memleaks, warnings and one mem corruption * Code cleanup Creteil: * Added the client detail dialog item for Securehash * Fixed sockets.cpp includes for non-debian systems ;) * Added Arabic, Chinese & Finnish to languages in Preferences Hetfield: * Configure now checks for crypto++ libs * Added --with-crypto-prefix option to configure * Possibile Fix to ListenSocket::Safe_Delete() seg fault * Added ccache support to configure, no variables tricks needed * Added --with-ccache-prefix option to configure * deleted --enable-libcwd option from configure * deleted useless libcwd debug files and code from whole project Madcat: * Made Fast ED2K Links Handler optional Something like the old Frankk's ED2K Links Handler patch. * FakeCheck using donkeyfakes.gambri.net Original idea and implementation by deltaHF. * Clean(er) fix for splashscreen-creation compiler warning (unused variable * Moved project/muuli.wdr to src/muuli.wdr * ED2K-Links.HOWTO fix for some aMule/eMule error * Added -ggdb -fno-inline to debug compilation flags * Automatic category assignment for new downloads * Updated AUTHORS file to reflect original eMule authors and give credit to original Linux port author (Timo Kujala aka Tiku) * Win32 port 99% operative, next version will be Win32 compatible Emilio Sandoz: * complete re-write of preference handling to make it table-driven in both file-I/O and dialog * improvements in feedback given during dialog interaction pure_ascii: * Added highlighting of the connected server in server list * Enabled and fixed setting the server version shakraw: * Some fixes on web interface file type search, and code cleaning * Fixed amule crash when closing socket * size_t seems to break Mac compilation - anyway uintt6 is enought for messages * Modified RseStringEncrypted. Now we encrypt passwd just (and only) when changing them in prefs' dialog. So, now we use always encrypted passwords, noone in clear neither in memory or disk * Check if we're able to use TCP ports (lacks what todo if not but we can accept EC. do nothing atm = EC disabled) Added "AMULEDLG SHOW" to EC available commands * WebServer now use the more correct _("") for localized strings * Created WebInterface.{h,cpp} for the web interface, and cleaned WebServer.{h,cpp} code neiro: * Helped with OpenBSD port by providing a workbench Ganael Laplanche: * FreeBSD port fixes PowerMike, hellimod: * Helped a lot on future Mac port by giving ssh & vnc access deltaHF: * New toolbar icons (thx to everaldo.com) * Added & enabled chinese, danish and hungarian translation * Preferences (added/changed): IP-Filter reload and on/off buttons securehash -> secure ident media info max connections: 25-7500 upload queue: 500-1000 max new connections / 5 sec: 5-500 remove dead servers after: 1 > tcp port: 80 > (for users with bad ISP's .. but remember -> running aMule as root is unsecure !!!) add new files (dl & share) with auto priority: off by default now (if running aMule for the first time) * Updated the header of all files * Changed wxWindows to wxWidgets * "Donated" amule-project.de niet: * Donated amule-project.net :-) bootstrap: * CVS support Torsten SCHULZ: * Added the % showing on progressbars. lemonfan: * Modified network code for big-endian systems * Fixed preferences bug * Fixed copy ed2k link to clipboard * Fixed CArray for MFC compatibility * More rigid compatibility to MFC types * Fixed misformatted strings and several warnings in WebServer.cpp Xaignar: * Code cleanup in amule.* and otherfunctions.* and other files * The Cleanup button in the File Details dialog no longer replaces "&" with "&&" * Max connections should be correctly set on windows platforms, instead of defaulting to 500 * Finished the CArray -> wxArray conversion * Fixed ECSocket compilation with gcc < 3.3 * Fixed segfault on close. * Some other fixes Citroklar: * External Connections are now only done when configuration tells us so (thanks to tonar from #amule) * crypto++ detection fix aquatroll: * Win32 compilation Support & Development. hellimod, PowerMike, godard, hoschy007: * MacOSX compilation support dom: * Found the last > 2GB bug ;) Special Thanks To: * All the bug-reporters, helpers, translators and users at http://forum.amule.org * eMule developers for their support. Long life to *Mule * FreshIRC & Freenode irc admins * People at #gentoo on freenode for their support, specially ferringb * The Testing Team: thepolish, efe, Citroklar, bizzY, KamiKazeNH, and anyone testing aMule. * New translators: Chinese: nbfnw Arabic: hathalsal Finnish: eQualizer Russian: Elf Italian: GhePeU, sNeo Portuguese (BR): KamiKazeNH Korean: BlueSpring Spanish: JonathanShields Danish: nowlin Hungarian: biger [HUN] Galician: thorero Hebrew: denisliber * All aMule users!!! --------------------------------------------------------------------------- Version 1.2.6 ------------- 2004-02-16 Kry: * Improved Mac compatibility. * Fixed the i18n charset. * Try to set the locale even if it seems to fail. Creteil: * Fixed the default Size to 800x600 for 1st time aMule launched without ~/.eMule config file. shakraw: * ExternalConn: new communication code using wxSockets. * Web interface: improved communication performance. * Text interface: now using new wxSockets code. pil0t: * Fix for the geometry on start. pure_ascii: * Added sorting to filename list in file details. * Added "Takeover" by doubleclick in file details. * Fixed preferences window popping up on "Show/Hide UL/DL" in download list. * i18n stuff (Systray). rubber30: * Fixed viewing and sorting by LastSeenComplete and LastReception. Emilio Sandoz: * Converted stats calculations to 64bit where necessary (for uptime >49days). * i18n strings fixed. * gcc 2.95 compilation fix. deltaHF: * i18n stuff. --------------------------------------------------------------------------- Version 1.2.5 ------------- 2004-02-10 Hetfield: * Fixed a memory leak in SysTray. (SysTray.cpp) * Fixed a DL/UL ratio problem. (amule.cpp) Aleric: * Fixed all compiler warnings. * Rewrote all header #include's to only include what is necessary. * Removed or renamed all functions that clashed with one of the same name from libwx_gtk. With as result: * Fixed --enable-static possibility (needs a lot of static libraries to be installed; and latest XFree86 CVS version of libX11 (I had to fix a bug in XFree86 too for this)). * Fixed check-boxes in Preferences -> Directories + a little code speed up there. * Fixed a duplicated server_list delete * Server IP# filter. Shakraw: * Added missing string in GetDownloadFileInfo() causing SIGSEGV when called. * Fixed the amuleweb login problem. * Added GetWebList() support. * amuleweb's search feature complete. Now it is possible to search, download and web-search on filedonkey * Fixed a write error in SETMAXGRAPHUPLOADRATE * Added support for statistic text infos for web interface (Statistics link) * Fixed two bugged index causing crashes on Webserver.cpp * Little improvement for server list request (now responses are much faster) * Generally improved External Connections. * Fixed search type feature for web interface * Fixed amule crashes when quitting from amuleweb during requests umale: * Fixed debugloglines on ListenSocket.cpp ServerSocket.cpp having too much arguments. * SysTray code will not be compiled if disabled * Fixed 5 wrong delete -> delete[] * Converted po-files Emilio Sandoz: * Statistics graphs: Param changes reversible; Color change now works; Active connections rescaling now works; Graphs and tree suspended when not visible. * Set correct initial radio button in Systray integration dialog * Simplified statistics graph averaging * Corrected UL loop for timer errors * Simplified UL rate averaging * Preliminary cleanup of graphing engine; ghosting eliminated * Client DL rate computation without CList Fixed 32bit rollover error for rates over 84kB/s Reduced initial spiking Generally improved speed and CPU/RAM usage. * Search window column widths remembered between searches & saved in preferences * Statistics preferences dialog: changes are now applied on-the-fly (with proper Cancel semantics) * Eliminated possibility of root directory being invisibly shared Kry: * Added some sanity checks to avoid losing *.part.met files on power failure. 0-Size files are never written. * Fixed the 'all time transfered' on Shared Files window This one fixed some eMule/aMule incompatibility on part.met files * Some aditional functions on CFile for windoze compatibility * MFC compatibility enhanced. * Added SetFilePath to CKnownFile * Changed most 'assert' to wxASSERT * Fixed some NULL clientname causing crash on ListenSocket.cpp * Fixed the tagcount on .part.met files (KnownFile.cpp) * Added missing OP_CHANGE_CLIENT_ID on ListenSocket * Updated HomePage to www.amule.org on messages * Fixed the server windows splitter. Or sash. Whatever. * Imported all the other ListenSocket.cpp code from 0.30e * Fixed 'View Shared Files'. No multiple tabs, also. * Added theApp.listensocket->StartListening() on startup. Really. Don't ask me why it worked before. * Fixed the systray bug where speed bar was always 10 times smaller. * Added lots of vars initilization that fixed some crashes. * Fixed a crash on ClientList.cpp caused by a void node on list. * Fixed 9 memleaks, some of them big ones. * Fixed 6 wrong delete -> delete[] * Fixed wrong hashsetneeded causing random crash * Added GetED2KPartHashCount() & GetED2KPartCount() * Fixed a bug on app init, related to Toolbar. * Fixed a severe crash & memory corruption on UploadClient.cpp * Fixed download rate overhead calculation * New HeapSort() and NewSrcPartsInfo() ported from eMule 0.30e * wxGTK 2.5 compilation fixes * Fixed the 'rehashing of files on restart' problem. * Fixed a missing "Error" message on console when partfile loading failed. * i18n activated, GNU xgettext compatible. * Fixed bug on OP_REQUESTFILENAME packet that made eMule clients to disconnect from us. eMule clients got our version of client and expected to get the new OP_REQUESTFILENAME from eMule 0.30. Thanks to John & BlubbX from eMule team for the report and help tracking down it. * Fixed several i18n bugs from xMule times. * Fixed the lseek error on console and window popup when canceling a file that is transfering. * First implementation of selectable refresh. The refresh is bugged - it deletes the info on screen, except for about 1 sec, every time seconds_defined_on_preferences is reached. * Used selectable refresh code for SysTray-hiden cpu lower. * New option on right-click on downloadlist: Hide/Show lists. * Minimize on startup works now. * Minimize to tray works now. * Lots of BSD compilation fixed (aMule compiles under BSD again) * Fixed the upload disconecting clients at high upload speed * Changed another wxList to CList (FriendList) * FriendSlot should have no effect on LowId user. * Fixed FriendSlot not being persistent and kicking friend after 1 chunk. * Fixed lowid users on upload queue by importing VQB's lowid alternate * Added language selection support on preferences * Fixed the bug that caused never to tell user 'server full' * Fixed several server connection issues not detected before. * Added a popup on language change warning for restart. * Added another popup, this time to point the user on the right direction if the locale for that language cannot be set. * Stop publishing on ED2K network shared files we don't have anymore * Removed the annoying messages of dropping sources (too much CPU) * Sanity check to avoid user pushing buttons before aMule is ready for it. thermoman: * Made aMule gcc 2.95 compatible seneca: * Near finished all i18n stuff. We expect aMule 1.2.5 is fully i18n-compatible * Added wxT() Macro for Unicode Support (not functional yet) Citroklar: * Testing, lots of testing. Bug-tracker. * Found the versions that introduced the upload bug and made a nice diff. We could look at code for years, without seeing it. Nice guy. * Fixed README, amulesig.txt. gjn: * Fixed bug in creditsystem. jmccorm: * Fixed "Close This Searchresult" -> "Close This Search Result" * Fixed some typos. lemonfan: * Fixed stopped files being counted on CheckDiskSpace() * Progressbar fixes on webserver implementation. * Several crashes fixed by adding sanity checks to reqfile deltastar (on irc channel): * Fixes the > 2Gb files problem caused by a bug on CFile wrapper. deltaHF: * i18n stuff pure_ascii: * fixed recreation of filename list in file details * scrolling and selecting filenames works now hellimod: * BSD and Mac support. We're very near to the Mac aMule. niet: * Donated www.amule.org! Creteil: * Change order in the notebook for logs in Servers Window * Updated the logo for webserver from eMule logo to aMule one * Fixed Switching to Searches Window Bug when removing all servers in Servers Window * Changed default server list from 'best' to 'max', then 'max' to 'best' again * Fixed the default systray value on preferences. * Added debug values on UploadQueue. * Changed max Slot Allocation to 30Kb/s * Fixed typo in Preferences * Implemented notebook in Server Window (merged 'Server Info' & 'aMule Log' windows in a notebook) * Fixed bug crashing aMule on Server Window Notebook implementation. * Now, if no --geometry width & size used, aMule starts with 800x600 as default * Fixed size restoring from .eMule saved size * Option 'Search global' in Search Window in the default now. * GUI code for new slider in Preferences->Tweaks tab handling the lists refresh * Some cosmetic fixes on Preferences and GUI by Madcat's request. * Made GUI i18n compliant. * Slot alloc calculation is properly rounded now. * Added the Language listbox on preferences. special thx to: * Our translators: german: emperor, hariolf, crazeee, neolino (M$ user), deltaHF italian: ilbuio, AnonimoVeneziano spanish: mad_soft, aquatroll, Kry russian: Vl@dCoR bulgarian: tindor dutch: Supersnail polish: Ogon lithuanian: Fatalissimo french: SlayeruleZ, thepolish catalan: pukyxd portuguese: willy, coolzero basque: piarres galego: thorero * The people at #wxwindows, irc.freenode.net for being so helpful Specially BrianHV, raboof and ajjl. * All eMule devs for being so nice and work close with aMule team now. * Madcat, from Sharedaemon team (sharedaemon.sf.net) for his support and friendship. * All aMule users!!! --------------------------------------------------------------------------- Version 1.2.4 ------------- 2004-01-10 (Previously released, with some errors, as 1.2.3-1) Aleric, Kry: * Fixed the 'Completing file' bug. --------------------------------------------------------------------------- Version 1.2.3 ------------- 2003-12-31 The "Happy New Year!" version. Kry: * New ProcessLocalRequest ported from eMule 0.30e. * Fixed crash on DownloadQueue caused by a CString being passed through "...". * Nice CPU usage drop with new GetSourcesCount code. * Some little speed optimizations here and there. * Fixed bug on second mule starting. Now amule also spawns two servers for external connection, one local and one TCP (optional). * Added gsocket-2.5.* from wxGTK2.5's gsocket files. This files are patched to fix LOWID. * Added EC REQ for total upload for a file, by deltaHF's request. It uses CPU, so it can be enabled with --enable-releasegrp * Several TextClient improvements / cleanings / cosmetics * Fixed a strdup being used instead of nstrdup (with Aleric) * Fixed anoying DiskSpace Bug (tm) Now files paused because there's no space left are resumed as soon as we have diskspace again. * Got rid of the chmod stuff on fat32 partitions. aMule detect the filesystem the temp/incoming folders are mounted on. * Fixed column hiding on all lists * New configure option: --with-curl-prefix Also fixed CURL_LIBS and CURL_FLAGS to be passed to compiler/linker * Weird I18N bugs fixed (labels, etc) * Cleanups and code cleaning on ServerSocket.cpp DownloadQueue.cpp PartFile.cpp * Fixed compiler warnings on: TextClient.cpp PartFile.cpp pure_ascii: * More docs/ cleaning. Hetfield: * Patched Process() function in Partfile class to reduce cpu load. * Added new optimization to Tray to stop window updating when minimized. Shakraw: * Added commands to use with amuleweb to EC. * Completed Transfer feature and Started Search. * Added SharedFiles, Statistics, Graphs and Prefs features. * Cleaned webserver code from amule sources. * Imported emule0.30d webserver code. * New web template & images from eMule 0.30d. * New binaries: amuleweb and amulewebDLG. This binaries are used for webserver. * Webserver runs now over EC, and has a separate app to serve web. umale: * Fixed storing pointer on 64-bit archs * Fixed resolving of broadcast IPs. * Changed trunc() to explicit casting. Creteil: * Re-imported new code to handle 'CheckDiskspace'. * Changed labels in Statistics to stick on stats patch from Emilio Sandoz. * Synched some code on : DownloadClient.cpp ListenSocket.cpp UploadClient.cpp with eMule 0.30e. * Cosmetics & Indentation. deltaHF: * Added new function - PowerShare. Release your vacation movies now ;-). Aleric: * autogen.sh revamp. * Global "sys.h" inclusion policy. * --enable-libcwd configure option: Use libcwd. * Makefile.am (SUBDIRS): Include intl and correct order. * configure.in (AM_MAINTAINER_MODE): Add. (AC_CONFIG_FILES) : Add intl/Makefile. Add --enable-static. * configure.in (EXPORT_DYN_FLAGS): Removed. * All files (when appropriate): Removed #pragma interface implementation. * Koenig lookup fix for g++ 3.4 on mfc.h's CQArray::QuickSort * Fix of compiler errors on ExternalConn.cpp * dos2unix several files. * Added GPL license header where needed. * Compile fixes for FreeBSD on systray and gsocket* Emilio Sandoz: * Patched stats for acurate resizing / scale. * Fix for inflated UL/DL rates in Transfer and Statistics windows * Debug code for UL/DL rate measurement in UploadQueue.cpp (activate with '#define MEASURE_LOST_CYCLES 1') Seneca: * I18N: ListenSocket.cpp PartFile.cpp ServerList.cpp ServerSocket.cpp SharedFileList.cpp sockets.cpp WebServer.cpp PartFile.cpp UploadClient.cpp ClientCredits.cpp ClientUDPSocket.cpp. --------------------------------------------------------------------------- Version 1.2.2 ------------- Phantom version. Expected to be released on 21/22 dec, delayed and then made into 1.2.3 version. --------------------------------------------------------------------------- Version 1.2.1 ------------- 2003-12-14 Kry: * Now amule shows icon on taskbar and main window * amulecmd now compiles under win32 using dialogs to get port, hostname and password. * Added clientversion on download list. * Modified configure script and makefiles for faster compilation and smaller binaries. * Fixed nasty download list bug due to memory corruption inside CUpDownClient class vars. * Imported new acurate download speed calculation from eMule 0.30d. * Moved docs to doc/ folder. * Imported new GetNextRequestedBlock algorythm from eMule 0.30d. * Ed2k links with hostname sources on it are processed now, and on a separate thread. * Showing filename on CheckDiskSpace debug statement. * Imported eMule's 0.30d SortByPriority to complete CheckDiskSpace import. * Several addings to mfc.h file (MS MFC compatibility layer). * We forgot to show A4AF sources on download list. Fixed now (eMule style, x/y+z (t)). * New packet receiving handling should avoid high_dlspeed-> high_cpu. It also makes download more stable and faster. * Modified autogen.sh script to notify users that automake < 1.7 is NOT supported. * Imported CanAddSource(), AddSources(), IsGoodIP() and IsGoodIPPort() from 0.30d (new sources handling). * Added plain password support to amulecmd. * Updated amulecmd passwords to use MD5. * New External Connection stuff to handle amulecmd & other remotes (alpha). * Fixed some code causing strange errors when trying to connect to servers. * Imported new network UDP features from eMule 0.30d, we process Search results and Found sources correctly now on 16.40 behaviour. * Fixed lowid on restart introduced by himself on 1.2.0 ;). * Code cleaning & optimising. pure_ascii: * Fixed segfault on call of CEMSocket::DisableDownloadLimit() from client if there is no socket. * Fixed bug on mfc.h's CList. * Added zlib fixes from eMule 0.30e code. Hetfield: * Added new server list fetching via libcurl libs and wxThread, thus removing wget usage from amule. * Modified configure to check libcurl presence. * Changed thread file completion from pthread to wxThread. falso: * Several i18n stuff. We're more close to get i18n working. umale: * Patch for x86_64 arch. (GetTickCount) spiralvoice: * Found wrong ET_COMPATIBLECLIENT on aMule. Now we identify correctly as emule compatible client. * Also did MLdonkey patch for recognising amule as new client brand. Unleashed: * Typo and cosmetic changes on configure script * Cleaned and optimised several files. Creteil: * Imported 'Copy ED2k link to clipboard (Source)' from eMule, this one permit to send an ed2k link with our ip address as source for the link. * Imported 'Copy ED2k link to clipboard (Hostname)' from eMule, this one permit to send an ed2k link with our hostname as source for the link. * Fixed handling of bad ET_COMPATABLECLIENT for buggy aMules clients (buggy are 1.1.1 - 1.2.0). * Lot of code cleaning / indenting. * Fixed clientversion on download list implemented by Kry. * Added new mini icon for aMule clients in downloadlist, uploadlist & uploadclient. * Defined 'deletethis' as 'bool' in ListenSocket.h. * Fixed typo on Statistics window. * Imported CheckDiskspace() from eMule 0.30c. * Imported eMule's 0.30c A4AF (now more handled by Razor). * Imported new file rating management from eMule 0.30c. * Modified BaseClient.cpp to sync better with eMule 0.30c (added m_fSharedDirectories flag to stick with eMule code). * Fixed bug on CPartFile::IsAlreadyRequested(). * Added new mini icon handling in downloadlist/uploadlist for aMule clients. * Fixed bug in uploadlist. --------------------------------------------------------------------------- Version 1.2.0 ------------- 2003-11-26 Kry: * Some memleaks fixed (Thanks to xMule team) * Removed no-needed break statement * Added '--help' option to amule. * Fixed (probably) all m_abyPartStatus related bugs (~CUpdownClient related) * Imported ResetFileStatusInfo() (minor import) * Fixed the bug that made files >2.4Gb get sorted as if size < 0 bytes * Fixed the search types bug. * Fixed Small Files bug. Thanks to Citroklar for his research on this one. He tested all versions to find when did the bug enter amule. * Added new hashshet handling for sources. * Added new timeout handling for sources. * Finished porting of NewSrcPartsInfo started by Creteil * New standalone app: amulecmd. * gsocket.c no longer gets compiled if wx version >=2.5 * Added --disable-amulecmd to configure * Added check on configure for wxbase (needed for amulecmd) Hetfield: * Added --safe-systray to configure * Added --disable-systray to configure * Much better configure script output. Ganael LAPLANCHE: * Kinnda good guy. Fixed BSD compilation and also did BSD packages. eagle: * Added --geometry option pure_ascii: * Fixed a bug on ListenSocket.cpp that crashed amule. Creteil: * Updated ServerSocket.cpp for bOutputMessage we always send even on error ... * Fixed all 'return statements' in all Lists * Set minimum refresh for stats tree slider to 5 seconds * Fixed several CVS crashes due to indentation & porting bugs. * Fixed downloadlist expand crash. * Connect 'Verbose (additional program feedback)' CheckBox to some debug in log window and logfile * Fixed bug in ServerList Window when changing priority * Added preferences box for KeepAlive time. * Imported code from eMule 0.30 GetMaxFilesPerUDPServerPacket() SendGlobGetSourcesUDPPacket() GetSoftFiles() SetSoftFiles() GetHardFiles() SetHardFiles() SetVersion() DbgGetFileInfo() --------------------------------------------------------------------------- Version 1.1.2 ------------- 2003-11-04 Kry: * Ok, REALLY fixed the 'no sources' bug. * Added the KeepConnectionAlive function (This one is recomended by lugdunummaster himself). * Some more memleaks fixed. * Now aMule compiles under wxGTK2.5 --------------------------------------------------------------------------- Version 1.1.1b -------------- 2003-11-03 Kry: * * Fixed severes memleaks. --------------------------------------------------------------------------- Version 1.1.1a -------------- 2003-11-03 Kry: * Fixed annoying bug about no sources can be find. Creteil: * Fixed another assert statement causing crash. --------------------------------------------------------------------------- Version 1.1.1 ------------- 2003-11-01 Kry: * Added zlib support. * No more need to launch aMule with params for localized users we force the english language in the prog now (credits go to Eru). * Fixed minor network bugs. * Added SERVER_NET_DEBUG and NET_DEBUG mesages. * Fixed TCP packet not being consumed if not readed. Olonho: * Fixes to search dialog and download menu. Creteil: * Added new toolbar icons made by deltaHF. * Added new clients icons made by deltaHF. * Reverted default minimum upload slots = 3, now slot allocation take effect if max upload >= 10kB/s. * Fixes bad code branch escaping in Shared Files Window. * Shared Files Window, Priority & Permissions in righ mouse click working like expected now. * Mass Code Cleaning (no more compilation of wx/xrc shit we don't use anymore), my old binarie = 2.9Mb the new one = 2.5Mb. --------------------------------------------------------------------------- Version 1.1.0 (Kry special edition). ------------------------------------ 2003-10-21 Kry: * Fixed UDP packet not being consumed when reading sources if file status = stopped. * Added lugdunum 16.40 sources Handling (you get more sources now). * Added lugdunum 16.40 extended server messages (we receive full message now). * Initial import of Messaging sytem core. Credits go to Tiku. Creteil: * Fixed a bug introduced in 1.0.9 in Preferences Connection Tab. * Fixed aMule banned aMule client :-) (aMule seem to be too much aggressive) (Creteil). * Relooked all main windows. * Initial import of Messaging sytem GUI. Credits go to Tiku. --------------------------------------------------------------------------- Version 1.0.9 ------------- 2003-10-17 - Fixes : * olonho various fixes (added gsocket.c, inited variable, fixed Valgrind error, removed buggy debug print, fixed SIG_PIPE in better way, fixed valgrind warnings). * Fixed icons used to reflect status in download list. - New Features : * New Preferences with old implementation (this mean we dont have already the WebServer and Gui Tweak Tabs). * Slot Allocation in Connection Preferences Tab (you can now set the bandwith per client in upload list). - Info : * I'm working hard on the rewrite of preferences, don't expect many changes during this time ... --------------------------------------------------------------------------- Version 1.0.8 ------------- 2003-10-10 - Fixes : * Fixed bugs in "EMSocket.cpp" causing crash. - New Features : * Good news !!! Hetfield have contributed to aMule with the new systray integration ... Like emule one : Let you set Download & Upload speed. Shows speed. Let you iconify and hide aMule. Shows your infos like ip, hash, server, GB, etc ... Let you disconnect and reconnect. - Need to be Fixed : * Localization Languages are broken for the moment (i'm thinking about removing totally this functionnality). - Info : * I'm working hard on the rewrite of preferences, don't expect many changes during this time ... --------------------------------------------------------------------------- Version 1.0.7 ------------- 2003-10-03 - Fixes : * Fix the annoying message when searching "Client too old ...". * Fix compilation a compilation bug introduced in 1.0.6. * Move the code to put the toolbar in the gui file (no more designed by hand gui code for this part). - Code Cleaning : * Changed the Connection Wizard with SpinCtrl in place of the TextCtrl to handle values of line capacities (no more atoi converssion since we use already int return from SpinCtrl). - Need to be Fixed : * Localization Languages are broken for the moment, don't panic it's just temporary ... (i'm thinking about removing totally this functionnality). --------------------------------------------------------------------------- Version 1.0.6 ------------- 2003-09-24 - Fixes : * Just somes fixes. - New Functionnalities : * ed2k servers handler : by Emanuel Wontorra - Need to be Fixed : * Localization Languages are broken for the moment, don't panic it's just temporary .. --------------------------------------------------------------------------- Version 1.0.5 ------------- 2003-09-15 - Gui changes : * Import from eMule 0.27a: "Obtained Parts" bar in the shared files list. - Fixes : * Synced aMule with xMule latest fixes. It's a Malware non direct contribution :-) ... - New Functionnalities : * Import from eMule: Request of shared files by directory. * Import from eMule 0.27a: Up-/download auto-priority. - Code cleanup : * Mass code removing for none working sections ... - Need to be Fixed : * Localization Languages are broken for the moment, don't panic it's just temporary .. --------------------------------------------------------------------------- Version 1.0.4 ------------- 2003-09-14 - Gui changes : * MASS GUI changes (look in Transfer Window), removed the fucking unusable Messages Window and moved the Friend stuff from these to a new alligned left wxListCtrl ... Enjoy !!! * Now i report only Client name in Sources column of Transfert Window (use right mouse click to see Details of the client as usual). - Fixes : * Synced aMule with xMule latest fixes (Fix various minor problems as found by valgrind and electric-fence & Fix a bug with the client credits map: It is not possible to convert the map key...). It's a Malware non direct contribution :-) ... - Code cleanup : * Mass code removing for none working sections ... - Need to be Fixed : * Localization Languages are broken for the moment, don't panic it's just temporary .. --------------------------------------------------------------------------- Version 1.0.3 ------------- 2003-09-08 - Gui changes : * Changed 'Edit Category Properties' dialog. - Fixes : * Fixed comments count in 'File Comments' dialog. * Fixed bug introduced in 1.0.2 (can't call comments in File Details). - Code cleanup : * Removed mmMultiButton from source (no more used). --------------------------------------------------------------------------- Version 1.0.2 ------------- 2003-09-03 - Gui changes : * Changed Show all comments dialog. - Fixes : * Synced aMule with xMule latest fixes (Imported source exchange v2 from eMule, Possible fix for some problems while ending the program). --------------------------------------------------------------------------- Version 1.0.1 ------------- 2003-09-29 - Gui changes : * Changed Client Details & File Details Dialog (auto resizing of all fields). - Fixes : * Synched aMule with xMule latest fixes. --------------------------------------------------------------------------- Version 1.0.0 ------------- 2003-08-25 !!! Initial Launch of aMule !!! - Gui changes : * Changed Main Servers Window (changed position of functionnalities, now, to update serverlist from url, click on the serverlist icon, all others field are descriptive by herself). * Changed Main Search Windows (removed not connected functions and Direct Download), all GUI stuff of this window come in muuli_wdr.cpp & muuli_wdr.h. * Fixed behaviors of buttons in Main Search Window. * Added Fast ED2K Links Handler (Direct Download) with same functionnality as the original Direct Download of xMule Search Main Window but followin all main windows (i hate to have to switch to Search Main Window to be able to send a ED2K Link ... Nothing more i can remind ;-) --------------------------------------------------------------------------- malware's contributions: * Speed up the initial sharing by making KnowFileList a hash map. * Remove the assign to category context menu entry only if it was already there. * Reimplemented hashing thread. * Removed unused locks. As the NetBSD team pointed out they are causing problems on their system because it does core dump on unlocking a mutex that was not locked. * Made the title for systray the same as for the main dialog. * Never share a file twice. * Fixed endless loop in sending UDP packets. * Fixed a possibly exploitable bug as noticed by S. Esser from e-matters. * Fixed new downloads assigned to random category. * Check size of OP_SERVERSTATUS packet more strictly. * Do not display the unit for file size twice in shared file list web page. Un-Thesis' contributions: * Added more support for Solaris, thanks to wimms. * Corrected various Linux-specific #ifdefs. * Fixed the bug that kept auto-backtrace from occuring in Linux. NetBSD team's contributions: * Fixed bug with the mutex protecting calls to gethostbyname. * Try to increase some resource limitation to the permitted maximum. sepahewe's contributions: * Fix images in transfer list web page. Version 1.5.6 ------------- 2003/08/01 Highlights: * Fixes for a great many bugs that cropped up from 1.5.2 to 1.5.5. malware's contributions: * Added simple workaround in case CClientUDPSocket::OnSend is called recursivly. * Do not share the global incoming directory twice. * Fixed wrong tag count written to part.met files. * Various xmule signature changes as requested by BigBob. * Fixed statistics color saving/loading. * Decode %-escaped characters in URL within the ed2k application as suggested by __JusSx__. * Removed two trouble-maker member variables used in the search. * Catch invalid/strange packets before they can cause harm. This does also affect parts of network packets stored in *.met files. * No longer throw out clients sending packets larger than needed. * Fixed invalid messages "You already have...", caused by comparing a hash over the File-ID rather than the ID itself. * Cleaned up the nstrdup() mess. * When finishing download share the file in the incoming directory of the category it does belong to. * Removed various possible format string exploits. * Make it possible to delete the last user-defined category. MikaelB's contributions: * Optimized anti-hash thief. * Test for invalide eMule clients and irregular eDonkey clients. * Anti-leechers test - Mison-like clients are automatically detected. * Special icon in Upload List/Queue for invalid clients. * Ban spammer clients ( Mison and others ). Un-Thesis' contributions: * Upgraded XRC library to latest wx release. * Converted internal XPMs to PNGs and JPEGs. * Fixed a few Intel C++ compiler warnings. * Re-organized the ChangeLog system. * Made sure Italian and Korean translations were included in release. Madcat's contributions: * Fixed crash in ClientDetailDialog. * Fixed Directory Tree displaying. * Fixed crash when attempting to delete noexistent TreeCtrl items. BigBob's contributions: * Cosemtic GUI change - the IRC button is gone * Make the status line resizing the areas to fit the text into. bothie's contributions: * Actually send the MOD info with the MuleInfo packet. FooMan's contributions: * Fix for failing file access during download completion. DongCheon Park's contributions: * Updated the Korean translation files for new features. Version 1.5.5 ------------- 2003/07/11 Madcat's contributions: * Column widths are now saved (got broken in 1.5.4). * Possible fix for column hiding in Transfer tab (got broken in 1.5.3). * Abort flushing and pause file if less than 9.28MB free disk space left. * Abort part.met file writing if less than 5000 bytes free disk space. * Code cleanup: Removed large amount of unused variables, #if 0'ed blocks, indented several files and changed EOL to UNIX style in most. * Online signature is now cleared on shutdown. * Category incoming directories are now automatically shared. * Automatic sources dropping at user-defined interval. MikaelB's contributions: * Fixed a window increasing size problem at startup * Fixed the '$' appearing in Cancel button in Categorie dialog * Added timer in Sources Dropping tab plobb's contributions: * Hotranking: Sources with QR: <5 ignore MaxNewConPer5Sec value. Version 1.5.4 ------------- 2003/07/05 Madcat's contributions: * Lists are no longer redrawn when they are not shown. NOTE: This reduces CPU usage SIGNIFICENTLY (for better effect, stay off Transfer tab when running on background. * Possible fix for gcc 2.95 compliation problems (DownloadListCtrl.cpp) * Possible fix for BSD compatibility problems with configure. * Possible fix for eMule 29a compatibility problems in met files. * Reverted to old sources handling. New engine was way too aggressive. MikaelB's contributions: * Possible fix for main toolbar display bug. * Possible fix for sash position loading problems after new compilation. Version 1.5.3 ------------- 2003/07/02 Highlights: * Categories implemented * Much better No Needed/High Queue Ranking sources handling * Shared files loading made 30x faster. Madcat's contributions: * Possible fix for AppVersion value in .eMule file. * Possible fix for statistics colours saving problems. * Possible fix for shared files loading. Loading is MUCH faster now. * Possible fix for crash if Hello Packet had tagcount 0. Strangely, this only happened randomly after closing movie preview. * Possible fix for endless loop when UDP packet sending fails. * Imported categories from LMule CVS (written by Tiku). * Category functions now apply to selected category only. * Added confirmation message when cancelling all files in a category. * Category setting is now saved. * Much better HQR/NNS handling. Those two are now dropped automatically as they connect. * Fixed New MLDonkey compatibility (Been broken since 1.4.1) MikaelB's contributions: * Fixed bug in File Comments dialog ( nothing displayed ) * Save sash position of splitter in transfer window at exit * Fixed a bug in Sources Dropping Preferences window * HQR Value is know set between 300 and 3000 * Fixed Dropping Sources Preferences saving bug (there were saved into WebServer section in .eMule file) * Changed Dropping Sources tab in Preferences window * Better handling for NNS User can now choose to: * Automatically drop file * Try to send it to an other file * Default HQR value changed to 1200 Kry's contributions: * First Main category filters attempt to work. * Downloads are now filtered from or added to shown list if status changes after filter apply. * Main category tab should be showing Filter name as tab name. Fixed. * Added several more filters: Video, Audio, Image, Text, CDImage, Archive. * Filters Apply now to all categories. * Stopped files now have Stopped status instead of Paused. * Colors for categories on download list were reversed from those the user selected. Fixed. * Added xMule Uptime to statistics tree. * Possible fix for multiple PopUp menus on categories tab right-click. * Shared files should be reloaded when closing preferences only if folders changed. Tiku's contributions: * Implemented Download list Categories. Malware's contributions: * Possible fix for various exception handling bugs. * Possible fix for the remaining of search page crashes. Balu's contributions: * Updated spanish translation. Version 1.5.2 ------------- 2003-06-22 Madcat's contributions: * Imported all features in Razor 1a Beta 1 mod. * Imported most of the features in Lagloose mod v0.1a MikaelB's contributions: ( thanks to eMule Sivka mod ) * Added support for 'Swap every A4AF to this file now'. * Added support for 'Swap every A4AF to this file AUTO'. * Added support for 'Swap every A4AF to any other file now'. * Added support for 'Drop No Needed Sources now'. * Added support for 'Drop Full Queue Sources now'. * Added support for 'Drop High Queue Rating Sources now'. * Added support for 'Clean Up Sources now ( Drop NNS, FQS and HQRS now)'. * Added Sources Dropping Preferences Tab (not functional yet). * Possible fix for saving main window position and size. * Initial support for Auto Drop NNS, FQS and HQRS (not functional yet). * Initial support for Dynamic Upload (not functional yet). Lagloose's contributions: * Shift+Doubleclick in downloadlist only shows transferring sources. * Increased font size for the axis in statistics. * More Information on uploading clients in upload window. Version 1.5.1 ------------- 2003-06-11 Un-Thesis' contributions: * Possible fix for bad return statements in ClientUDPSocket and BaseClient. * Reverted to old code for several bad fixes in 1.5.0. Kry's contributions: * Made ./xmule statistics more readable. * Possible fix for download limit being higher than capacity. * Added a notification message in case second xMule is started. * Possible fix for --version commandline argument. Version 1.5.0 ------------- 2003-06-08 Madcat's contributions: * Sockets are also closed on crash now. * Revised Search Result packet handling, shouldn't crash/memleak there anymore. * Removed annoying MAX_RESULTS check from search tab. * Added log line when ipfilter is loaded. * Possible fix for various crashes regarding Shared Files Reloading. * Possible fix for several Search Tab Closing/Global Search related crashes. * Possible fix for several eMule/xMule typos. * Possible fix for potential endless loop if UDP packet sending failed. * Possible fix for potential endless loop/memleak at ProcessMuleInfoPacket(). * Possible fix for CPU leak in ProcessHelloPacket(). * Possible fix for endless loop at CPartFile::FlushBuffer(). * Possible fix for gsocket.c compilation problems with older compilers. Un-Thesis' contributions: * Possible fix for GTK-only XPM compatibillity problems. * Possible fix for GetTickCount compilation errors. * Possible fix for LOWID problems (AGAIN!). * Removed pure GTK code from GetColour. MikaelB's contributions: * Possible fix for toolbar sizing with i18n Version 1.3.1 ------------- 2003-05-16 Madcat's contributions: * FIXED: 'All Columns Hidden on First Start-Up' bug. * FIXED: Systray integration setting saving. * FIXED: Start webserver only if it's enabled in preferences. * FIXED: Shared files Re-Loading. * FIXED: Shutdown seg-fault. ArCePi's contributions: * Updated spanish translation. Shuttle's contributions: * Added Italian translation Version 1.3.0 ------------- 2003-05-15 * Changed the release organization of xmule * Stable releases have even middle numbers (ex: 1.2.1 is stable) * Unstable releases have odd middle numbers (ex: 1.3.0 is unstable) Pure_Ascii's contributions: * FIXED: Last part always being corrupt problems. * FIXED: FreeBSD 5.x compatibility problems. * Started port to MacOS X. Un-Thesis' contributions: * FIXED: Implemented McCabe's and arkanses' LOWID on restart fix. * FIXED: Several major Mem and CPU leaks * FIXED: Application termination improved. * FIXED: Removed & symbols from the main toolbar. * Added new MakeNG system, see README.makeng. * Added --version command line option. * Ported xMule 28b Partfile. * Added framework for more robust command line control. Madcat's contributions: * FIXED: Major Memory leak caused by NOT flushing files. * FIXED: Toolbar sizing if texts are too long. * All lists are now sorted on startup. * Preview now defaults to mplayer if none set. Tiku's contributions: * Added initial code for Webserver, not currently functional. * Further synchronized statistics windows with xmule. Gib[S]On's contributions: * Added list counters for Servers, Transfer and SharedFiles windows. Ender's contributions: * Opera 7.1 info to ED2K-Links.HOWTO ------------- amule_2.3.1+git20151120.0023527bc2.orig/docs/Doxyfile0000644000175000017500000012740512611472361020152 0ustar morphmorph# Doxyfile 1.3.5 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = aMule # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = 2.4.0 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = docs # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, # Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en # (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, # Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, # but also whether or not the output is meant for Windows or non-Windows users. # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES # forces the Windows encoding (this is the default for the Windows binary), # whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = NO # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is used # as the annotated text. Otherwise, the brief description is used as-is. If left # blank, the following values are used ("$name" is automatically replaced with the # name of the entity): "The $name class" "The $name widget" "The $name file" # "is" "provides" "specifies" "contains" "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited # members of a class in the documentation of that class as if those members were # ordinary class members. Constructors, destructors and assignment operators of # the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. It is allowed to use relative paths in the argument list. STRIP_FROM_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explicit @brief command for a brief description. JAVADOC_AUTOBRIEF = YES # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = YES # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources # only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = YES # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = src # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp # *.h++ *.idl *.odl *.cs *.php *.php3 *.inc FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = src/muuli_wdr.h src/muuli_wdr.cpp src/utils # The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories # that are symbolic links (a Unix filesystem feature) are excluded from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. EXCLUDE_PATTERNS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. INPUT_FILTER = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = YES # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = YES # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = YES # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. PREDEFINED = WXUNUSED(x)=x # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse the # parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::addtions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or # super classes. Setting the tag to NO turns the diagrams off. Note that this # option is superseded by the HAVE_DOT option below. This is only a fallback. It is # recommended to install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found on the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes that # lay further from the root node will be omitted. Note that setting this option to # 1 or 2 may greatly reduce the computation time needed for large code bases. Also # note that a graph may be further truncated if the graph's image dimensions are # not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). # If 0 is used for the depth value (the default), the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::addtions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO amule_2.3.1+git20151120.0023527bc2.orig/docs/EC_Protocol.txt0000644000175000017500000003407312611472361021353 0ustar morphmorph aMule - follow the white rabbit - External Connections Protocol version 2.0 Preface ------- EC is under heavy construction, however the protocol itself is considered stable and you can rely on. The opcodes and tagnames, tag content formats and values are still changing, so if you decide to implement an application using aMule EC, you'd better include our ECcodes.h for the values, and check the documentations often, or even the code itself (ExternalConn.cpp is a good start). Section 1: Protocol definition ------------------------------ Short description: EC protocol consist of two layers: a low-level transmission layer, and a high level application layer. Section 1.1: Transmission layer ------------------------------- The transmission layer is completely independent of the application layer, and holds only transport-related information. The transmission layer actually consists of an uint32 number, referenced below as flags, which describes flags for the current transmission session (send/receive operation). This four-byte value is the only one in the whole protocol, that is transmitted LSB first, and zero bytes omitted (therefore an empty transmission flags value is sent as 0x20, not 0x20 0x0 0x0 0x0). Bit description: bit 0: Compression flag. When set, zlib compression is applied to the application layer's data. bit 1: Compressed numbers. When set (presumably on small packets that doesn't worth compressing by zlib), all the numbers used in the protocol are encoded as a wide char converted to utf-8 to let some zero bytes not to be sent over the network. bit 2: Has ID. When this flag is set, an uint32 number follows the flags, which is the ID of this packet. The response to this packet also has to have this ID. The only requirement for the ID value is that they should be unique in one session (or at least do not repeat for a reasonably long time.) bit 3: Reserved for later use. bit 4: Accepts value present. A client sets this flag and sends another uint32 value (encoded as above, LSB first, zero bytes omitted), which is a fully constructed flags value, bits set meaning that the client can accept those extensions. No extensions can be used, until the other side sends an accept value for them. It is not defined when this value should be send, best is on first transfer, but can be sent any time later, even changing the previously announced flags. bit 5: Always set to 1, to distinguish from older (pre-rc8) clients. bit 6: Always set to 0, to distinguish from older (pre-rc8) clients. bits 7,15,23: Extension flag, means that the next byte of the flags is present. bits 8-14,16-22,24-32: Reserved for later use. Transmission layer example: 0x30 0x23 - Client uses no extensions on this packet, and indicates that it can accept zlib compression and compressed numbers. Notes: Note 1: On the "accepts" value, the predefined flags must be set to their predefined values, because this can be used as a sort of a sanity check. Note 2: Bits marked as "reserved" should always be set to 0. Section 1.2: Application layer ------------------------------ Data transmission is done in packets. A packet can be considered as a special tag - with no data, no tagLen field, and with the tagCount field always present. All numbers part of the application layer are transmitted in network byte order, i.e. MSB first. A packet contains the following: [ec_opcode_t] OPCODE [uint16] TAGCOUNT In detail: The opcode means what to to or what the data fields contain. Its type is set as ec_opcode_t, which currently is an uint8. TagCount is the number of first level tags this packet has. Then are the tags themselves. A tag consist of: [ec_tagname_t] TAGNAME [ec_tagtype_t] TAGTYPE [ec_taglen_t] TAGLEN <[uint16] TAGCOUNT>? The ec_tagname_t is defined as an uint16, ec_taglen_t as an uint32 value at the moment. ec_tagtype_t is an uint8. TagName tells what it contains (see ECcodes.h for details). TagType sends the type of this tag (see ECPacket.h for types) TagLen contains the whole length of the tag, including the lengths of the possible sub-tags, but without the size of the tagName, tagType and tagLen fields. Actually the lowest bit of the tagname doesn't belong to the tagName itself, so it has to be cleared before checking the name. Tags may contain sub-tags to store the information, and a tagCount field is present only for these tags. The presence of the tagCount field can be tested by checking the lowest bit of the tagName field, when it is set, tagCount field present. When a tag contains sub-tags, the sub-tags are sent before the tag's own data. So, tag data length can be calculated by substracting all sub-tags' length from the tagLen value, and the remainder is the data length, if non-zero. Section 2: Data Types --------------------- Integer types ------------- Integer types (such as uint8, uint16, uint32) are always transmitted in network byte order (MSB first). Strings ------- Strings are always UTF-8 strings, with the trailing zero byte included. All strings coming from the server are untranslated, but their translations are included in amule's translation database (amule.mo). Boolean ------- This one is tricky. When reading, the tag's presence means true, and false when omitted. When writing, they should always be present - if not, it's considered 'unchanged' - and should hold an uint8 value. This value determines the boolean value in the standard way, i.e. zero means false and non-zero means true. Boolean values are mostly used in reading/writing preferences. MD5 Hashes ---------- They are always MSB first. Floating point numbers ---------------------- Floating point numbers such as 'float' or 'double' types are converted to their string representation, and are sent as string. Note, that the decimal point is always the '.' (dot) character, independent from the current locale. Section 3: Clarifying things ---------------------------- If all the above seemed too much technical, just keep on reading. If you understood the above at first, you can safely skip this section. Have you ever seen an xml file? Do you know how it looks like? Then you can safely think of an EC packet as binary xml. Otherwise (hmm, you don't know what xml is?) think of it as a tree, it has exactly one root, may have many branches and leaves. We'll use the tree example below. But before we get to the examples, just some words about the flags (which are part of the transmission layer, you remember?): When developing your EC application (frontend to aMule, etc), this might be the last thing you want to care about, and it's ok. Just keep sending a byte of 0x20 as flags, and aMule will never want to use any of the features described in Section 1.1. You just have to take of the "accepts" value aMule will send in its first reply. An now, to the examples. The example packets are real-life EC packets, transscripted to textual form for your pleasure :) First, let's see a simple but very important packet: authentication to aMule. This must be the very first one, otherwise aMule might drop the connection. EC_OP_AUTH_REQ (0x02) +----EC_TAG_CLIENT_NAME (0x06) (optional) +----EC_TAG_PASSWD_HASH (0x04) +----EC_TAG_PROTOCOL_VERSION (0x0c) +----EC_TAG_CLIENT_VERSION (0x08) (optional) +----EC_TAG_VERSION_ID (0x0e) (required for cvs versions, must not be present for release versions) Now, what exactly gets transmitted? Here it comes, with comments (all numbers are hexadecimal, I omitted the 0x prefix for redability): 20 FLAGS, just stating that we use ECv2 02 EC_OP_AUTH_REQ 00 05 Number of children (tags) this packet has 00 06 EC_TAG_CLIENT_NAME 0? EC_TAGTYPE_STRING 00 00 00 09 Length of this tag (9) 61 4d 75 6c 65 63 6d 64 00 Contents of the tag: "aMulecmd", with trailing zero included (see String types in Section 2) 00 08 EC_TAG_CLIENT_VERSION 0? EC_TAGTYPE_STRING 00 00 00 04 Length of this tag (4) 43 56 53 00 Content: "CVS" 00 0c EC_TAG_PROTOCOL_VERSION 0? EC_TAGTYPE_UINT?? 00 00 00 02/4/8 Length: 2/4/8 (16/32/64 value follows) 00? 00? 01 f2 Content: 0x0200 (current protocol version number for cvs) 00 04 EC_TAG_PASSWD_HASH 0? EC_TAGTYPE_HASH 00 00 00 10 Length (16) 5d 41 40 2a bc 4b 2a 76 Content: 16 bytes md5sum of EC password b9 71 9d 91 10 17 c5 92 00 0e EC_TAG_VERSION_ID 0? EC_TAGTYPE_CUSTOM 00 00 00 21 Length: 33 62 66 39 64 64 32 36 35 Content 33 bytes of the unique EC CVS version ID 32 36 34 35 31 36 63 39 Remember: this is only for CVS versions, and its 34 35 38 36 38 66 61 39 size, content-type, anything might change without 30 38 66 62 37 64 39 38 notice. For release versions this tag MUST NOT be 00 present. Now, that we constructed a packet, stating that we are "aMulecmd CVS", send it to the server and see what it replies. Hopefully the following: 30 FLAGS, stating that the server sends us an 'accepts' flags 23 the 'accepts' flag. Just take care that your program can handle when it is present, and we can forget about it for now. 04 EC_OP_AUTH_OK 00 01 Number of children (tags) in this packet 00 76 EC_TAG_SERVER_VERSION 0? EC_TAGTYPE_STRING 00 00 00 04 Length of this tag (4) 43 56 53 00 And the contents: "CVS" That was easy. Heading for a more complex example: now that we're connected to aMule, ask simple stats from core. The request: EC_OP_STAT_REQ +----EC_TAG_DETAIL_LEVEL (with EC_DETAIL_CMD value) 20 FLAGS, as above 0a EC_OP_STAT_REQ 00 01 TagCount: 1 00 10 EC_TAG_DETAIL_LEVEL 0? EC_TAGTYPE_UINT8 00 00 00 01 Length: 1 00 0 = EC_DETAIL_CMD The reply (assuming core is connected to a server): EC_OP_STATS +----EC_TAG_STATS_UL_SPEED +----EC_TAG_STATS_DL_SPEED +----EC_TAG_STATS_UL_SPEED_LIMIT +----EC_TAG_STATS_DL_SPEED_LIMIT +----EC_TAG_STATS_CURR_UL_COUNT +----EC_TAG_STATS_TOTAL_SRC_COUNT +----EC_TAG_STATS_CURR_DL_COUNT +----EC_TAG_STATS_TOTAL_DL_COUNT +----EC_TAG_STATS_UL_QUEUE_LEN +----EC_TAG_STATS_BANNED_COUNT +----EC_TAG_CONNSTATE +----EC_TAG_SERVER +----EC_TAG_SERVER_NAME I won't copy here the whole reply packet, only the interesting part: 20 FLAGS 0c EC_OP_STATS 00 0b Number of (first-level) tags in this packet: 11 (direct children of the packet root) 00 14 [...] EC_TAG_STATS_UL_SPEED 00 16 [...] EC_TAG_STATS_DL_SPEED 00 18 [...] EC_TAG_STATS_UL_SPEED_LIMIT 00 1a [...] EC_TAG_STATS_DL_SPEED_LIMIT 00 1c [...] EC_TAG_STATS_CURR_UL_COUNT 00 22 [...] EC_TAG_STATS_TOTAL_SRC_COUNT 00 1e [...] EC_TAG_STATS_CURR_DL_COUNT 00 20 [...] EC_TAG_STATS_TOTAL_DL_COUNT 00 26 [...] EC_TAG_STATS_UL_QUEUE_LEN 00 24 [...] EC_TAG_STATS_BANNED_COUNT And now the interesing part: 00 13 EC_TAG_CONNSTATE. Note, that all tagnames are even numbers, so when we find an odd number, the true tag name is -1. EC_TAG_CONNSTATE = 0x0012, and 0x0013 - 1 = 0x0012, so it is really this one. The tagname being an odd number means that this tag has child(ren) tags (see tree above), and also that it has a tagcount field too. 0? EC_TAGTYPE_UINT32 00 00 00 26 TagLen: 38 (own content length + length of children (with headers)) 00 01 TagCount: 1 (one child tag exists, that is a direct child of this tag) 00 61 EC_TAG_SERVER (has children) 0? EC_TAGTYPE_IPV4 00 00 00 1a TagLen: 27 (own content (6) + length of child (content: 14 + header: 7)) 00 01 TagCount: 1 00 62 EC_TAG_SERVER_NAME 0? EC_TAGTYPE_STRING 00 00 00 0e TagLen: 14 52 61 7a 6f 72 62 61 63 Content of the EC_TAG_SERVER_NAME tag: "Razorback 2.0" 6b 20 32 2e 30 00 c3 f5 f4 f3 12 35 Content of the EC_TAG_SERVER tag: Server IP:Port (195.245.244.243:4661) 90 cc 83 52 Content of the EC_TAG_CONNSTATE tag: Current UserID Hopefully these examples helped enlightening the nature of OpCodes, Tags, nested tags. amule_2.3.1+git20151120.0023527bc2.orig/docs/INSTALL0000644000175000017500000000610212611472361017463 0ustar morphmorph ------- INSTALL ------- Requirements -------------- To compile aMule, you'll need at least the following packages: * zlib >= 1.1.4 (1.2.3 is recommended) * wxWidgets >= 2.8.0 (2.8.9 is recommended) * Crypto++ >= 5.1 (5.5.2 is recommended) * the perl File::Copy module For aMuleWeb you'll also need: * a POSIX compliant regex library (like libgnurx or libregex, for most GNU systems it's part of the standard C library). Optionally you may want to provide: * libgd (or gdlib) >= 2.0.0, to let cas generate statistics images; * libupnp >= 1.6.6 if you want to have UPnP support; * libpng >= 1.2.0 to let aMuleWeb generate nice statistics graphs; * libGeoIP >= 1.4.4 if you want colourful country flags and IP to country mappings in the GUI; * gettext >= 0.11.5 if you want to enable NLS (Native Language Support). It is known to compile with GCC 3.2, 3.3, 3.4, 4.1, 4.2 and 4.3; Sun Studio 12 and MSVC. GCC 2.95 is not supported. aMule requires a wxWidgets builds that supports unicode. Since wxWidgets does not support unicode with GTK1, it is not possible to make aMule use GTK1. As Crypto++ is very sensitive to compiler defects, if you're compiling it from source be sure to always test your compilation with `cryptest.exe v'. (Yes, it's called cryptest.exe on all platforms.) Only when all tests passed may you safely go on with compiling aMule. Adding "-DCRYPTOPP_DISABLE_ASM -O1" to CXXFLAGS is known to resolve these problems. Compiling aMule ----------------- Compiling and installing aMule is as easy as running the usual ./configure make make install commands (if you have all the above requirements fulfilled, of course). Solutions for Microsoft Visual Studio 2008 and the free Express Edition are included. Please see the readme file for more information. ADVANCED OPTIONS ------------------ These are some of the availabe configure options: --disable-debug disable additional debugging output --enable-optimize enable code optimizing --enable-amulecmd compile aMule command line client --enable-amule-gui compile aMule remote GUI (EXPERIMENTAL) --enable-amule-daemon compile aMule daemon version --enable-webserver compile aMule WebServer --enable-cas compile C aMule Statistics --enable-wxcas compile aMule GUI Statistics --disable-ed2k don't compile aMule ed2k links handler --enable-alc compile aMuleLinkCreator GUI version --enable-alcc compile aMuleLinkCreator for console --disable-monolithic disable building of the monolithic aMule app For a full list of available options run `./configure --help' from the aMule source directory. Links ------- Detailed information on compiling and installing aMule: http://www.amule.org/wiki/index.php/Main_Page Forum to ask questions, report bugs, etc: http://forum.amule.org/ amule_2.3.1+git20151120.0023527bc2.orig/docs/Makefile.am0000644000175000017500000000037612611472361020475 0ustar morphmorphSUBDIRS = man dist_doc_DATA = \ ABOUT-NLS \ amulesig.txt \ Changelog \ INSTALL \ license.txt \ README \ TODO \ EC_Protocol.txt EXTRA_DIST = \ Doxyfile \ README.Mac.txt \ README.Windows.txt \ Releases.dia MAINTAINERCLEANFILES = Makefile.in amule_2.3.1+git20151120.0023527bc2.orig/docs/README0000644000175000017500000002526212611472361017322 0ustar morphmorph ----------- aMule ----------- The All-platform eD2k Client About ------- aMule is a multi-platform ed2k client, fork of the eMule client, using the wxWidgets class library. It was originally forked from the xMule project, which in turn was forked from the lMule project. This in turn was the first fork of eMule to run natively on GNU/Linux and other Unix-like systems. Installation -------------- See INSTALL file Configuration: ---------------- - Go to the "Preferences" tab - Enter a nickname or leave as the default value. - Enter the "Download Capacity" and "Upload Capacity" according to your Internet connection. All values in aMule are kiloBytes (kB), but your Internet Service Provider's numbers are most likely kiloBits (kb). 8 kiloBits make up 1 kiloByte, so if your Internet Connection is 768kb Downstream and 128kb Upstream (i.e. German Telekom DSL), your correct values are: Downstream: 768kb / 8 = 96kB, so you enter 96 as "Download Capacity" Upstream: 128kb / 8 = 16kB, so you enter 16 as "Upload Capacity" Anyway, these values are used to calculate the current bandwidth usage for display purposes only (mainly for statistics). Nevertheless, you need to know them to determine the following down/upload limits: - Enter "Download Limit" and "Upload Limit" (IMPORTANT!) Download Limit: Leave this at 0, which stands for "no limit". However, if aMule uses too much bandwidth and causes problems with other applications using your Internet connection, it would be a good idea to limit this to approximately 80% of your downstream capacity. Upload Limit: It is recommended that you set this limit to around 80% of your actual upstream capacity, in order to avoid degrading the performance of your connection. Setting the Upload Limit to a value less than 10 will automatically reduce your Download Limit after the following schema: Upload Limit | Max Download >= 10 | No limit < 10 | Upload Limit * 4 < 4 | Upload Limit * 3 NOTE: 56k Modem users: aMule only accepts integral values for these settings, you can't enter 1.6 or whatever your sweet-spot setting is. Sorry. - "Maximum Connections": As a general rule, set it to 500 - 2000. - "Maximum Sources per File": This depends on how many files you tend to download at a time, if you tend to download few files, high values are acceptable, otherwise go for lower values so that all files will be able to get sources. - Choose the directories you want to share with other users: DO NOT SHARE YOUR COMPLETE HARDDISK! It is suggested that you either use the "Incoming" folder or a separate folder for the files you wish to share, to avoid inadvertently sharing private files. If you share more than 200 files, you should consider that some servers have a hard limit due to resource constraints, which means that you may be kicked from them if you share too many files or that some of your files won't be populated to the network through that server. So it is not always a good idea to share lots of files. - Other: The other options are pretty self-explanatory. If you don't know what it does, don't touch it as a general rule. More information on getting started can be found in the aMule wiki: http://wiki.amule.org/index.php/Getting_Started Don't forget to connect to a server, or you probably won't download too much. Basic aMule Tips ------------------ * NEVER run aMule as root. * If you are behind a firewall or router, be sure that the ports have been opened. The default ports are 4662 (TCP). 4665 (UDP) and 4672 (UDP). If these are blocked, you will receive a "LowID" which results in fewer available sources for the files you are downloading. * Obtain an appropriate server.met: e.g., if you are a dial-up, using a large server list is not appropriate. * Set your temp and shared directories in Preferences->Directories * To recursively select a certain directory, right-click over it. * You should *NOT* share * Your temp download directory! * Your /etc directory * Probably not your /var, /lib, /boot, or /usr directory * Certainly make sure that any really confidential files (password files, private SSH keys, credit card numbers :) are *not* shared. So generally do not share your entire home directory, although you might want to share some files or directories in it. * Remember that you get certain download privileges with those clients (aMule, eMule, etc users) to whom you upload files, in the form of reduced queue waits. * Please note that compilation with optimizations is supported. However, if you pull a Gentoo, we will probably just tell you to recompile aMule and/or your system with sane compiler-flags before we will attempt to address the problem. Obtaining your first server list ---------------------------------- Use one of the following links in the "Update server.met from URL" box in the Server tab. They are apparently updated every 20 minutes. * The current top 50 servers (these fill up fast): http://ocbmaurice.dyndns.org/pl/slist.pl/server.met?download * The current top 150 servers: http://ocbmaurice.dyndns.org/pl/slist.pl/server.met?download/server-good.met * The biggest list (about 300 servers) maintained by the site. Only if you have a very decent connection: http://ocbmaurice.dyndns.org/pl/slist.pl/server.met?download/server-max.met * Should maurice be down for some reasons, use this server.met instead: http://www.srv1000.com/azz/server.met If these are non-functional, simply google for 'server.met'. Tranfers icons ---------------- To find descriptions of the various icons found inside aMule, take a look at http://wiki.amule.org/index.php/Getting_Started#Icons_and_What_They_Signify License --------- aMule -- like eMule -- is released under the GNU General Public License. See the "COPYING" file for details. Developers ------------ See AUTHORS FAQ: ------ -- How do I know whether my ID is high or low? -- Look at the arrows at the bottom right corner, wrapping a world icon, next to the server name you are connected to. If they're green, your ID is high. If they're yellow, your ID is low. -- What does high and low ID mean anyway? -- When your ID is high (green arrows), everything is fine. When it's low (yellow arrows), you are probably behind a firewall or a router, and other clients can't connect to you directly (which is a bad thing). Please read the FAQ, search our wiki or forums on how to configure your firewall/router for aMule. NOTE: you can also get a low ID when the server you connected to is too busy to answer properly, or simply badly configured. When you are sure your settings are OK and you SHOULD have a high ID, connect to another server. -- I'd like to search for specific file types, what filter stands for which files? -- File Type Extensions found (this list is far from being complete) -------------------------------------------------------------------- Audio .mp3 .mp2 .mpc .wav .ogg .flac .aac .ape .au .wma Video .avi .mpg .mpeg .ram .rm .vob .divx .mov .ogv .webm .vivo Program .exe .com Archive .zip .rar .ace .tar.gz .tar.bz2 .Z .arj .cbz .cbr CDImage .bin .cue .iso .nrg .ccd .sub .img Picture .jpg .jpeg .bmp .gif .tif .png -- What are all those fancy colors in the download progress bar about? -- Each download in the the transfers window has a coloured bar to show current file availability and progress. * Black shows the parts of the file you already have * Red indicates a part missing in all known sources * Different shades of blue represent the availability of this part in the sources. The darker the blue is the higher the availability * Yellow denotes a part being downloaded * The green bar on top shows the total download progress of this file If you expand the download you see its sources with the corresponding bar. Here the colours have a slightly different meaning: * Black shows parts you are still missing * Silver stands for parts this source is also missing * Green indicates parts you already have * Yellow denotes a part being uploaded to you Learning how the progress bar works will greatly help your understanding of the eD2k network. -- Where can I get more information? -- Here are some links that might be of your interest: * aMule Wiki (documentation pages) http://wiki.amule.org * aMule forums http://forum.amule.org * eMule documents http://www.emule-project.net/home/perl/help.cgi Want to help? --------------- aMule is a free software project and requires the cooperation of its users to improve the quality of the software. We welcome all contributions to the project in the form of new features, bug fixes, feature requests, etc. If you are not a programmer you can still contribute by providing good bug reports when you come across a problem with aMule. A good bug report gives the aMule Team information enough to reproduce the bug (so we can see it in action) and fix it. If possible, try to isolate under which the bug occurs (e.g. does it happen on some specific window, with some specific files, some specific conditions etc.) and provide as much detail as you can in your report. If you are a programmer and fix a bug you observe, please send us a patch or a note about how you fixed the problem. IRC, Links and Contact ------------- IRC: Channel #aMule on FREENODE IRC Network (irc.freenode.net) aMule homepage http://www.amule.org aMule related links http://wiki.amule.org/index.php/FAQ_eD2k-Kademlia http://wiki.amule.org/index.php/aMule http://wiki.amule.org/index.php/FAQ_aMule http://wiki.amule.org/index.php/FAQ_utils http://wiki.amule.org/index.php/Getting_Started http://wiki.amule.org/index.php/aMule_problems wxWidgets toolkit homepage http://www.wxwidgets.org eMule homepage http://www.emule-project.net Contact (administrative issues only!) admin@amule.org Legal Notice -------------- aMule is an interface to the ed2k network. As such, the aMule developers have absolutely no control or say over what is transferred on this medium and cannot be held liable for any non-personal copyright infringements or other illegal activities. -- Last modified Thu Sep 29 05:22:45 CEST 2011 -- amule_2.3.1+git20151120.0023527bc2.orig/docs/README.Asio.txt0000644000175000017500000000356112611472361021030 0ustar morphmorphaMule with Boost ASIO networking - by Stu Redman We are still having some networking problems with wxWidgets, even with 2.8.12. With wx 2.9 SVN networking was completely broken for some versions. So I wanted to see how a different networking layer behaves, and if it is even possible to integrate in aMule. I decided on Boost ASIO because of the good reputation of the Boost library. The goal is to have an aMule which can be configured to use either wx Sockets or ASIO sockets for all major tasks (this may exclude things like http download). And with ASIO sockets it should perform better at least in some aspects (stability, speed, CPU, memory) for this endeavour to make sense. There are no plans to "boostify" aMule. Boost is encapsulated in the implementation and not even included in the headers. Implementation is near complete. It's been tested in Windows and Linux. More testing is required. In some environments using Boost saves a lot of CPU, in others it doesn't. Not done yet: - better error handling/error messages - further abstraction (replace wx socket constants in code) - make use of background resolve for AsyncDNS instead of spawning a thread If you like to play with new stuff I'd like you to try it out and give me feedback. Especially if you are having networking problems or out of memory crashes, or if you are running aMule at high speeds. Compilation: Get current boost lib from www.boost.org . Extract it to your favorite place (like ~/amule/boost_1_49_0). Boost.Asio is header-only. It requires Boost.System for its error codes, but we include the single .cpp directly, so we don't need to build anything of boost. Configure aMule using ./configure --with-boost or ./configure --with-boost=/path/to/boost/sources Important: aMule prints "Asio thread started" in log and console on startup. If it doesn't you have probably configured it to use wx sockets! amule_2.3.1+git20151120.0023527bc2.orig/docs/README.Mac.txt0000644000175000017500000001044412611472361020633 0ustar morphmorphREADME for aMule on the Mac =========================== Installation: ------------- Just drag the aMule application to a folder of your choice (e.g., /Applications). To start aMule, double-click the application icon. Documentation and help resources: --------------------------------- The heart of aMule's documentation is the aMule Wiki, which you can find at http://wiki.amule.org/index.php/Main_Page. We suggest that you start with the Getting Started Guide (http://wiki.amule.org/index.php/Getting_Started) and the aMule FAQ (http://wiki.amule.org/index.php/FAQ_aMule). These pages should give you a good idea of how to setup and use aMule. If you run into any problems you can drop by at the aMule forum (http://forum.amule.org). A lot of questions have already been answered there, so it is always a good idea to start by searching the forum for your particular problem. If you don't find an answer to your problem you can post your problem on the forum and we will do our best to help you out. The forum and particularly the Mac subsection of the forum (http://forum.amule.org/index.php?board=49.0) are also good places to look for usage tips and to learn about recent aMule developments (especially look at the sticky threads). Right-clicking & pop-up menus on the Mac: ----------------------------------------- aMule contains a lot of features that are only accessible through pop-up menus, which you invoke by right-clicking a certain item. For instance, if you want to pause or cancel a download, change the upload or download priority of a file, see file details, etc. you need to do this via a right-click. If you haven't bought an additional multi-button mouse with your Mac, you only have one mouse button (the one that corresponds to a left-click or "normal" click on a multi-button mouse). Fortunately, you can emulate the second button by HOLDING DOWN THE CONTROL-KEY ON THE KEYBOARD WHILE YOU CLICK. For example, do a "control-click" now on a file that you are downloading and see how a pop-up menu shows up with further option. If you want to discover all of aMule's hidden functionalities just try to control-click everything that moves. This includes all the lists of files, clients & servers, all the labels on the top of these lists (e.g. "File Name"), the bar "all" at the top of the download window, ... By the way, these emulated right-clicks work system-wide. Just try control-clicking a file in the Finder, an icon in the Dock, a marked word in TextEdit or MS Word. Handling ed2k-Links on the Mac: ------------------------------- There are basically four ways to download files with aMule: (1) Search for files using aMule's search dialog and double click those search results that you want to download. (2) Copy ed2k-links from a web page into the "ED2K-Link Handler" field at the bottom of the search window of aMule and press the commit button. If the ed2k-link is longer than that text field is wide you need to make the aMule window wider until the link fits completely into the field (you can make the aMule window wider than your screen if necessary). We are working on eliminating this issue. (3) Import ed2k-links directly from your browser into aMule. See http://forum.amule.org/index.php?topic=5679.msg30209#msg30209 for more details. (4) Use a text editor (e.g. TextEdit) to paste ed2k-links into a "ED2Links" file inside "~/Library/Application Support/aMule/" and aMule will automatically import the links. Setting up aMule's video preview feature: ----------------------------------------- You can use a video player like VLC or Mplayer to preview incomplete downloads of video files. To set up aMule properly for this, go to Preferences -> General. Under "Video Player", you have to enter "/usr/bin/open -a" together with the path of your video player program. For example: /usr/bin/open -a "/Applications/VLC.app" /usr/bin/open -a "/Applications/vlc-0.8.4a/VLC.app" /usr/bin/open -a "/Applications/MPlayer OS X 2.0b8r5/MPlayer OS X 2.app" Getting up-to-date snapshot builds of aMule: -------------------------------------------- If you are interested in running aMule versions with the latest bleeding edge features or if you want to help us test the most recent changes to the aMule code-base you download up-to-date snapshot builds of aMule. More information can be found at: http://forum.amule.org/index.php?board=49.0 amule_2.3.1+git20151120.0023527bc2.orig/docs/README.Windows.txt0000644000175000017500000000013412611472361021560 0ustar morphmorphThe windows README is still work in progress. Please go to http://wiki.amule.org for info. amule_2.3.1+git20151120.0023527bc2.orig/docs/Releases.dia0000644000175000017500000002173712611472361020667 0ustar morphmorph][sȱ~_R^%h(Tʩ<6U˫h['2Pz緟@ Mk/oxr^;:?[T??,~oY|>3?zޝz~o߾ߟMxZ^qqe.:񇳳/kWϛۯ˳?7믫zs>ί극y#eqyY.z[YnӃKzuM}Փh {uhϋLJաqOCK܏ほsEϻ|{tkze?w?o)ѻqGoޭ7=ܫ%_ׇ 7۽>՗]T_K֥~M>5-~پj}&/;W]=?Vp|-z>:c./no{{gvct|1M] ~YBza,q>vxEY5<çOϧofGOo7|xL`fI#B_[1cIe[R(|ic칙 smkƁ ҳt\oz>vg^Ϟ|bpz.Y>?-?s; GB'falD.݅2B~o8>>/rs+h E/qs6W_Ǖ:>E>(Đ_(AzSzC9U(ĭN`XSo4γNG/ךƶhXKhm%O7uO f_SW'ؠ:ya.wMgc.ƌ}e#mbgC0~xM^69{_ ]b&+y E#"i%K^{%z>W.%c%/(yyJ{Bk6W"iۃp*ƤwRr%Jx\Wʆ+!Js%elq%֕$p%JUi1Rr%Jz\IWʆ+)Js%]wNi[wN)΁,m̻ӶYx.-–(ρ-gK;kvmQh[d,epl}8 l)Ġl)8[.<[j*-[-A]MER{s3fK R6%l Rh]N-ᴢ%,UFwwJR[4g OФ4ɻ;Ѐ̀#`bmyv0yXR67`I:&~K_>| Mt8X{h{S7T'N#y$:+5|# GG2tNDhk@y=Op) x7Sferch=E`21r HLp@&Moɣ b*>&&LjQDm>K9&nL 2%K4\ByCNKKg0D\xdΙ l5>o:?*-h[9Gd;Gf+>hl=b}`Fq&ӔVgTL9$pRf=׆zQSBs (-C (9*<҃3=D`< o iֺS?\?%t?.~:RD?etd.^ t )=N}Uu)CJ7ҙ+{sz @ NRw}<ɳ:"VZZy˜;?w:*dمq2n2{Ϗ5d3Uw3FfZ}ۣ333{Bf[]y8uju3Ѻ^'Y9do>3/9NZ-vNǞyfg^ds$Z$6̞ C2;%q۵4 BDIb7RHޒ:GHRΉ=7rsʹ)M!G8'&9CR=sO^'&:R G7$v $zIgA7"+Ho=+O]4FL{]{84A6m'vg\zS1Ppym =5cҔ& %]qi\ Fš95l'y԰fšCX3CTDQ͝Zňj:jTAQ!!SQp4QmИQ=DZAT0]8K9cND-A2F5sj(kT2S.QetPBlQTOU.a\Fwe4j*Q(͵ R/ÉHDq`Fw f4j*Q(5]X8]an,JfRvRM6{d`A53 %mQc] DgV:ݶPR"~,8X %cJj[L V]=D+Rh ZQYjsXXmE**!z_+e$lėbi~!$J̏ėE=/'e$3kIU~4,Ɨi|YZtkjx*#hӈtǸ@H1lTU2w\ )xHƐg]*d,U*dC4ɐ,M K4S&iiybcƌi:$)Lcڥ4S'E`޴ͼiLM0o {i(O$!YlHfgN%D1}16r`THň,3!HPe7l;‰ `Uj/2di)mɉw.\snux\acT5zxD@_bAS5w4>zLLHuzB&g-`vpnp pr%g /t@Xz1c`U t `^*}ܬ~1<=F.xvֳ C.hX/b5ߍH'qk r Ů?l}txbˆ4]6ӦõSvAml 1kF^z QmkJ( B Q@k5d<\-\34[*`loؔ`3khb6-!z4@[hWyam<"6LM%66ly7t ɖa 4[7H>i7HRV›7"6H@3&sKnNxF@"h@'`F7n El(vC9uYܒ4yْ@#6h2n(Hd JkX ?_vq A[RTڃ+>,0K$=T1:g3V$L \!:5F,C 0mk$j,[F%ܪ6{XS!)5 kXXgg k `-̛ Q5N vniC*Pp8g0r$?bM&2$M\0 E"`L &9PBHJ2'X:;/ QIou93M0L䀪x T^b M`,3,X",B .߯M:"6}+6o*}j2ŀ%to*ߢ%p׿p -;A"5E dJ{祎|\~[oVM, >ۤGB{@3 M>}Z]Ǻz\*ϛz|p!}3..IA{֔QH2 6u*(g:V'/hJ"xJݰo|7RHRp:x̼NX^ \!͞Ғ@H?y 44/O#jzI@y15P5/U;5P-W?1HH\$ @A@٣.Hh\M%C5joՈ Wr5Djifռhi4FjP-W{ErϢq5p5o_ap7'g΢{lA v :;\qNs@ً˼HH (v3..Ǒn>LHy|r/2rckQ#Qr ,H:}VXœm :ňB 0-Xqɩ2qɶr`z FgeE5=%0=$!k)wl!"|TE!SsOP=(qSṈ#lǝKtы̮ C- 8jz,s/:чߎ^;HN3RGk*筒;; ah̶~r[`cj!P˜aJH|͔Z nݜ^!3WyyԱ+.q!.uT#:ؓmFNa&Hhf*Lż@4XjBkQV"~$$^trck^H}UnKf$I[aQ%uQ""UI!BaZc $CД9z*37mr{8Xe1jbWa'](k2-B R ).-Af/hsÝ.T;Y;ua\\ ]Tg9--D]P!!1c׶_DB:\@^_?RT(|AH`+eD3eY)"[{-~ )Ef+RlVƤ,_c!CV^,K-Lg:O뙭nLJvnfCzz}4 {BvKG!Vb0eǛDߝ-p?r\iX!ߊINpUhuzpV"V %R.LLRG\ &\V&$̲e'IA*/K6j%Ne֒g~ZLB:&)/SSZW 8/ BB2I N![gT"kD)J+Y>¹NI3;aAQ6|%u/prL"MKcD\+nXٗZLUG-]*^Z>uqZ ^ #H)>O nUc`t(^mqQYlJ1$N1c'qC LJ5"Hrł8|-T:BtdAMqCgș^#%;baexF CIa,p(?QdP6G K\#LJR^tU oe+AK ihuXЁRT{PDI[{DW#|% E,+CP.{-ܬʇU5]%B964rSv>eh\P[ݯԎTu^w*zlAdB&ƦA_l}|`BLM -Ud1P! *;0_iY[W]{kjo z(s\=}}?BQڪB$Bo :2+Dy"呀P9Z@v. (c%&P3u4C*p9;.к>MϷ\T.OMV H>VDUlA-1?K" ʪ߹ ҍBzk`@ރnweuHu". */Y=]]! [gcTc vj<Նm*||Ql&&Y |IИ+j&<A3:Y.L[}l;A-K^[Y3#7@PYvݵa cg[OŊ\GDTr-hhol4DFg'eHWK$Bv5+[SAk EEOUFuV4ByRV{;mϰ@p&uʤ+YLWHCi!B$`TE 춖P@V;4r}%H,t?d^HTYi7D=E`VC,tdk`\ uaCdq AHBᐠzJoM/q}L.p@㘖!ήUb"]vs<_srAhA^hnQ zRpVgUSӡ^zeU3zE&WuF_"AvL|_cT.Ƈ0J<(qWQkm:?J5I$rn„ݬ&캧~eи'N*qcnₒ8:ezLgv6Dx6KPL/Y:D_[#@¶I1u١ ??N"Ҡ黫{R^>./7?P0~,>K_)amule_2.3.1+git20151120.0023527bc2.orig/docs/TODO0000644000175000017500000000003512611472361017121 0ustar morphmorph Lots of stuff. Ask a dev. amule_2.3.1+git20151120.0023527bc2.orig/docs/amulesig.txt0000644000175000017500000000416112611472361021004 0ustar morphmorph ------------------------------------ aMule Online Signature specification ------------------------------------ Introduction -------------- The online signature exports aMule's statistics in a simple text oriented format. It can be enabled within the Preferences dialogs of aMule (Preferenes -> Online Signature). Currently two formats of online signature are supported: * the original eMule online signature written to onlinesig.dat * the aMule online signature written to amulesig.dat This document will detail on the later one. Format -------- The format of the file is a text file with 1 field per line. The following fields are defined by now in the order they appear in the signature file: Ordinal Content Not-running Offline Online connecting 1 0 0 1 2 2 0 0 Server name 0 3 0 0 IP of server as dot-quad 0 4 0 0 Port of server 0 5 0 0 'H' or 'L' for High-/Low-ID 0 6 0.0 As online Download speed in kB/s As online 7 0.0 As online Upload speed in kB/s As online 8 0 As online Number of clients waiting for upload As online 9 0 As online Number of shared files As online 10 As online As online Nick used on the ed2k network As online 11 As online As online Total download in bytes As online 12 As online As online Total upload in bytes As online 13 As online As online aMule version As online 14 0 As online Total Downloaded in Session in bytes As online 15 0 As online Total Uploaded in Session in bytes As online 16 0 As online aMule Uptime As online For comments and additions on this format please contact Notes for implementors of tools accessing the online signature ---------------------------------------------------------------- - Be prepared to see linefeeds being in either Unix or DOS format. - Be prepared of new fields/lines being added. Links ------- Please visit: * amulesig.dat http://wiki.amule.org/index.php/Amulesig.dat_file * onlinesig.dat http://wiki.amule.org/index.php/Onlinesig.dat_file amule_2.3.1+git20151120.0023527bc2.orig/docs/license.txt0000644000175000017500000004313312611472361020622 0ustar morphmorph GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. amule_2.3.1+git20151120.0023527bc2.orig/docs/man/0000755000175000017500000000000012611472361017206 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/docs/man/Makefile.am0000644000175000017500000000216512611472361021246 0ustar morphmorphSELECTED_MANPAGES = \ $(AMULECMD_MANPAGES) \ $(WEBSERVER_MANPAGES) \ $(AMULE_GUI_MANPAGES) \ $(MONOLITHIC_MANPAGES) \ $(AMULE_DAEMON_MANPAGES) \ $(ED2K_MANPAGES) EXTRA_DIST = \ amule.1 amuled.1 amulecmd.1 amulegui.1 amuleweb.1 ed2k.1 \ amule.de.1 amuled.de.1 amulecmd.de.1 amulegui.de.1 amuleweb.de.1 ed2k.de.1 \ amule.es.1 amuled.es.1 amulecmd.es.1 amulegui.es.1 amuleweb.es.1 ed2k.es.1 \ amule.fr.1 amuled.fr.1 amulecmd.fr.1 amulegui.fr.1 amuleweb.fr.1 ed2k.fr.1 \ amule.hu.1 amuled.hu.1 amulecmd.hu.1 amulegui.hu.1 amuleweb.hu.1 ed2k.hu.1 \ amule.it.1 amuled.it.1 amulecmd.it.1 amulegui.it.1 amuleweb.it.1 ed2k.it.1 \ amule.ro.1 amuled.ro.1 amulecmd.ro.1 amulegui.ro.1 amuleweb.ro.1 ed2k.ro.1 \ amule.ru.1 amuled.ru.1 amulecmd.ru.1 amulegui.ru.1 amuleweb.ru.1 ed2k.ru.1 \ amule.tr.1 amuled.tr.1 amulecmd.tr.1 amulegui.tr.1 amuleweb.tr.1 ed2k.tr.1 \ amule.zh_TW.1 amuled.zh_TW.1 amulecmd.zh_TW.1 amulegui.zh_TW.1 amuleweb.zh_TW.1 ed2k.zh_TW.1 EXTRA_DIST += po4a.config EXTRA__DIST__SUBDIRS = po include $(top_srcdir)/automake/dist-hook.am include $(top_srcdir)/automake/manpages.am MAINTAINERCLEANFILES = Makefile.in amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amule.10000644000175000017500000000550212611472361020375 0ustar morphmorph.TH AMULE 1 "November 2011" "aMule v2.3.1" "aMule" .als B_untranslated B .als RB_untranslated RB .SH NAME amule \- the all\-platform eMule p2p client .SH SYNOPSIS .B_untranslated amule .RB [ \-c " " \fI ] .RB [ \-geometry " " \fI ] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] .RB [ \-w " " \fI ] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] .RB [ \-t " " \fI ] .RI [ eD2k-link ] .B_untranslated amule .RB_untranslated [ \-v ] .B_untranslated amule .RB_untranslated [ \-h ] .SH DESCRIPTION .TP \fB[ \-c\fR \fI\fR, \fB\-\-config\-dir\fR=\fI\fR \fB]\fR Read config from \fI\fR instead of home .TP \fB[ \-geometry \fI\fR \fB]\fR Sets the geometry of the app. \fI\fR uses the same format as standard X11 apps: [\fB=\fR][\fI\fR{\fBxX\fR}\fI\fR][{\fB+-\fR}\fI\fR{\fB+-\fR}\fI\fR] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Prints log messages to stdout. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Resets config to default values. .TP \fB[ \-w\fR \fI\fR, \fB\-\-use\-amuleweb\fR=\fI\fR \fB]\fR Specify location of amuleweb binary to \fI\fR. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Does not handle fatal exception. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Does not disable stdin. .TP \fB[ \-t\fR, \fB\-\-category\fR=\fI\fR \fB]\fR Set category for passed eD2k links to \fI\fR .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Displays the current version number. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Prints a short usage description. .TP \fB[ eD2k-link ]\fR Adds an eD2k-link to the core. .PP The eD2k link to be added can be: .RS 3 .IP \(bu 2 a file link (ed2k://|file|...), it will be added to the download queue; .IP \(bu 2 a server link (ed2k://|server|...), it will be added to the server list; .IP \(bu 2 a serverlist link, in which case all servers in the list will be added to the server list; .IP \(bu 2 a magnet link. .RE .SH NOTES .SS Paths For all options which take a \fI\fR value, if the \fIpath\fR contains no directory part (i.e. just a plain filename), then it is considered to be under the aMule configuration directory, \fI~/.aMule\fR. .SH FILES ~/.aMule/* .SH REPORTING BUGS Please report bugs either on our forum (\fIhttp://forum.amule.org/\fR), or in our bugtracker (\fIhttp://bugs.amule.org/\fR). Please do not report bugs in e-mail, neither to our mailing list nor directly to any team member. .SH COPYRIGHT aMule and all of its related utilities are distributed under the GNU General Public License. .SH SEE ALSO .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH AUTHOR This manpage was written by Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amule.de.10000644000175000017500000000661112611472361020766 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULE 1 "November 2011" "aMule v2.3.1" aMule .als B_untranslated B .als RB_untranslated RB .SH NAME amule \- der alle\-Plattformen eMule p2p Client .SH SYNTAX .B_untranslated amule [\fB\-c\fP \fI\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIeD2k\-link\fP] .B_untranslated amule .RB_untranslated [ \-v ] .B_untranslated amule .RB_untranslated [ \-h ] .SH BESCHREIBUNG .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Liest die Konfiguration anstelle des Home. .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Gibt die Größe des Programmfensters an. \fI\fP hat das selbe Format wie Standard X11 Anwendungen: [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Schreibt Log\-Meldungen auf die Standardausgabe. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Setzt die Konfiguration auf die Standardwerte zurück. .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP Setzt den Ort der ausführbaren Datei von amuleweb auf \fI\fP. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Fehlerbehandlung für fatale Fehler abschalten. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Schaltet die Standardeingabe nicht ab. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Setzt die Kategorie für den übergebenen eD2k Verweis \fI\fP .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Zeigt die derzeitige Versionsnummer an. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Gibt eine kurze Nutzungsbeschreibung aus. .TP \fB[ eD2k\-link ]\fP Fügt einen eD2k\-Verweis zur Downloadliste hinzu. .PP Der eD2k\-Verweis darf enthalten: .RS 3 .IP \(bu 2 ein Link zu einer Datei (ed2k://|file|...), dieser wird Downloadliste hinzugefügt; .IP \(bu 2 ein Link zu einem Server (ed2k://|server|...), dieser wird der Serverliste hinzugefügt; .IP \(bu 2 ein Serverlisten\-Verweis, in diesem Fall werden alle Server dieser Liste der Serverliste hinzugefügt; .IP \(bu 2 ein Magnet Verweis. .RE .SH ANMERKUNGEN .SS Pfade Für alle Optionen die ein \fI\fP Argument erwarten, wenn der \fIPfad\fP kein Verzeichnis enthält(z.B. nur einen Dateinamen), dann wird angenommen, diese Datei liegt um aMule\-Konfigurationsverzeichnis, \fI~/.aMule\fP. .SH DATEIEN ~/.aMule/* .SH "FEHLER MELDEN" Bitte meldet Fehler entweder in unserem Forum (\fIhttp://forum.amule.org/\fP), oder in unseren Bugtracker (\fIhttp://bugs.amule.org/\fP). Bitte meldet uns weder Fehler per E\-Mail, noch auf unsere Mailingliste oder direkt an unsere Teammitglieder. .SH COPYRIGHT aMule und alle seine zugehörigen Anwendungen werden verteilt unter der GNU General Public License .SH "SIEHE AUCH" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH VERFASSER Diese manpage wurde geschrieben von Vollstrecker Diese manpage wurde übersetzt von Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amule.es.10000644000175000017500000000642712611472361021012 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULE 1 "November 2011" "aMule v2.3.1" aMule .als B_untranslated B .als RB_untranslated RB .SH NOMBRE amule \-cliente p2p multiplataforma basado en eMule .SH SINOPSIS .B_untranslated amule [\fB\-c\fP \fI\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIeD2k\-link\fP] .B_untranslated amule .RB_untranslated [ \-v ] .B_untranslated amule .RB_untranslated [ \-h ] .SH DESCRIPCIÓN .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Leer configuración desde \fI\fP en lugar de home .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Fija la geometría de la aplicación. \fI\fP usa el mismo formato estándar de las aplicaciones X11: [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Imprime mensajes de registro en la salida estándar .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Reiniciar configuracion a valores por defecto .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP Especifica ubicacion del binario amuleweb en \fI\fP. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR No maneja excepción grave .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR No deshabilitar entrada estándar .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Fijar categoría para enlace eD2k pasado a \fI\fP .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Mostrar el número de la versión actual. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Imprime una breve descripción de uso. .TP \fB[ eD2k\-link ]\fP Añadir un enlace eD2k al núcleo. .PP El enlace eD2k para ser añadido puede ser: .RS 3 .IP \(bu 2 un enlace de archivo (ed2k://|archivo|...), será añádido a la cola de descarga. .IP \(bu 2 un enlace de servidor (ed2k://|servidor|...), será añádido a la cola de servidores. .IP \(bu 2 un enlace de lista de servidores, en cuyo caso todos los servidores de la lista serán añadidos a la lista de servidores. .IP \(bu 2 un enlace magnet. .RE .SH NOTAS .SS Rutas Todas las opciones que tengan \fI\fP como valor, si \fIpath\fP contiene un directorio sin part (p.e. solo un archivo normal), entones se tomará el directorio de la configuración, \fI~/.aMule\fP. .SH ARCHIVOS ~/.aMule/* .SH "INFORMANDO ERRORES" Por favor informa de fallos ya sea en nuestro foro (\fIhttp://forum.amule.org/\fP), o en nuestro bugtracker (\fIhttp://bugs.amule.org/\fP). Por favor no informe de fallos por correo, ni en nuestras listas, ni directamente al correo de algun miembro del equipo. .SH COPYRIGHT aMule y todas las demás utilidades relacionadas son distribuidas bajo la GNU General Public License. .SH "VEASE TAMBIEN" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH AUTOR Esta página de manualfue escrita por Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amule.fr.10000644000175000017500000000654212611472361021010 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULE 1 "Novembre 2011" "aMule v2.3.1" aMule .als B_untranslated B .als RB_untranslated RB .SH NOM amule \- le client P2P eMule multiplateforme .SH SYNOPSIS .B_untranslated amule [\fB\-c\fP \fI\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIlien eD2k\fP] .B_untranslated amule .RB_untranslated [ \-v ] .B_untranslated amule .RB_untranslated [ \-h ] .SH DESCRIPTION .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Utiliser le fichier de config \fI\fP à la place de celui par défaut .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Fixer la géometrie de l'application. \fI\fP utilise le meme format que les applications X11 standards : [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Afficher les messages du journal sur stdout. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Réinitialiser la configuration par défaut. .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP Préciser l'emplacement du binaire d'amuleweb \fI\fP. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Ne pas prendre en charge une exception fatale. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Ne pas désactiver stdin. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Définir la catégorie pour les liens eD2k passé à \fI\fP .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Affiche le numéro de la version actuelle. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Afficher une court description d'utilisation. .TP \fB[ lien eD2k ]\fP Ajoute un lien eD2k au noyau. .PP Le lien eD2k à ajouter peut être : .RS 3 .IP \(bu 2 un lien fichier (ed2k://|fichier|…), il sera ajouté à la file de téléchargement; .IP \(bu 2 un lien serveur (ed2k://|serveur|…), il sera ajouté à la liste des serveurs; .IP \(bu 2 un lien de liste de serveurs, dans ce cas tous les serveurs dans la liste seront ajoutés à la liste des serveurs; .IP \(bu 2 un lien magnétique. .RE .SH NOTES .SS Chemins Pour toutes les options prenant en paramètre un \fI\fP, si le \fIchemin\fP ne contient pas de répertoire (i.e. juste un nom de fichier), alors il sera considéré comme étant dans le répertoire de configuration d'aMule, \fI~/.aMule\fP. .SH FICHIERS ~/.aMule/* .SH "RAPPORTER DES BOGUES" Veuillez rapporter les bogues sur notre forum (\fIhttp://forum.amule.org/\fP), ou sur notre bugtracker (\fIhttp://bugs.amule.org/\fP). Veuillez ne pas rapporter les bogues par e\-mail, sur notre liste de diffusion ou directement à n'importe quel membre de l'équipe. .SH COPYRIGHT aMule et tout ses outils sont distribués sous la licence GNU General Public License. .SH "VOIR AUSSI" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH AUTEUR Cette manpage a été écrite par Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amule.hu.10000644000175000017500000000704112611472361021010 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULE 1 "2011. november" "aMule v2.3.1" aMule .als B_untranslated B .als RB_untranslated RB .SH NÉV amule \- a "minden\-platform" eMule p2p kliens .SH ÁTTEKINTÉS .B_untranslated amule [\fB\-c\fP \fI<útvonal>\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIeD2k\-hivatkozás\fP] .B_untranslated amule .RB_untranslated [ \-v ] .B_untranslated amule .RB_untranslated [ \-h ] .SH LEÍRÁS .TP \fB[ \-c\fP \fI<útvonal>\fP, \fB\-\-config\-dir\fP=\fI<útvonal>\fP \fB]\fP A beállításokat az \fI<útvonal>\fP\-ból olvassa az alapértelmezett helyett. .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Beállítja az alkalmazás geometriáját. A \fI\fP paraméter ugyanazt a formátumot használja, mint a többi X11 alkalmazás: [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR A napló bejegyzéseket a szabvány kimenetre írja. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Beállítások visszaállítása az alapértelmezett értékekre. .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP Az amuleweb programnak \fI\fP\-t fogja használni. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Nem kezeli a végzetes kivételeket. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Nem zárja le a szabvány bemenetet. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP A megadott eD2k hivatkozást a \fI\fP\-adik kategóriába tölti. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Megjeleníti a verziószámot. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Egy rövid használati leírást jelenít meg. .TP \fB[ eD2k\-hivatkozás ]\fP eD2k hivatkozás letöltése. .PP Az eD2k hivatkozás a következő lehet: .RS 3 .IP \(bu 2 egy fájl hivatkozás (ed2k://|file|...), ez a letöltési sorhoz lesz hozzáadva; .IP \(bu 2 egy kiszolgáló hivatkozás (ed2k://|server|...), ez a kiszolgáló\-listához lesz hozzáadva; .IP \(bu 2 egy kiszolgáló\-lista hivatkozás, mely esetben a listában szereplő összes kiszolgáló a kiszolgáló\-listához adódik; .IP \(bu 2 egy magnet hivatkozás. .RE .SH MEGJEGYZÉSEK .SS "Elérési utak" Minden olyan opciónál amely \fI\fP paramétert kér, ha a megadott \fIfájl\fP nem tartalmaz könyvtár komponenst (vagyis tisztán csak egy fájlnév), akkor azt az aMule konfigurációs könyvtárában (\fI~/.aMule\fP) fogja keresni. .SH FÁJLOK ~/.aMule/* .SH "HIBÁK JELENTÉSE" A hibákat kérjük vagy a fórumon (\fIhttp://forum.amule.org/\fP), vagy a hibakövetőben (\fIhttp://bugs.amule.org/\fP) jelentsék. Hibákról kérjük ne írjanak levelet (e\-mail\-t) se a levelezési listára, se közvetlenül valamelyik fejlesztőnek. .SH COPYRIGHT Az aMule és az összes hozzá tartozó segédprogram a GNU General Public License védelme alatt áll. .SH "LÁSD MÉG" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH SZERZŐ Ezt a kézikönyv lapot Vollstrecker írta. .SH MAGYAR FORDÍTÁS Dévai Tamás amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amule.it.10000644000175000017500000000702212611472361021007 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULE 1 "Novembre 2011" "aMule v2.3.1" aMule .als B_untranslated B .als RB_untranslated RB .SH NOME amule \- il client p2p multipiattaforma basato su eMule .SH SINTASSI .B_untranslated amule [\fB\-c\fP \fI\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIcollegamento\-eD2k\fP] .B_untranslated amule .RB_untranslated [ \-v ] .B_untranslated amule .RB_untranslated [ \-h ] .SH DESCRIZIONE .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Legge la configurazione dal \fI\fP invece che dalla directory dell'utente. .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Imposta la geometria della applicazione. \fI\fP usa lo stesso formato delle applicazioni X11 standard: [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Scrive i messaggi di log nello stdout. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Reimposta la configurazione ai valori di default. .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP Specifica la posizione dell'eseguibile di amuleweb in \fI\fP. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Non gestisce le eccezioni fatali. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Non disabilita lo stdin. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Imposta la categoria per i collegamenti eD2k ricevuti a \fI\fP .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Visualizza il numero di versione corrente. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Visualizza una breve descrizione dell'utilizzo. .TP \fB[ collegamento\-eD2k ]\fP Aggiunge un collegamento eD2k. .PP Il collegamento eD2k da aggiungere può essere: .RS 3 .IP \(bu 2 un collegamento a un file (ed2k://|file|...), sarà aggiunto alla coda di download; .IP \(bu 2 un collegamento a un server (ed2k://|server|...), sarà aggiunto alla lista dei server; .IP \(bu 2 un collegamento a una lista di server, nel cui caso tutti i server inclusi nella lista verranno aggiunti alla lista dei server; .IP \(bu 2 un collegamento magnet. .RE .SH NOTE .SS Percorsi Per tutte le opzioni che accettano un \fI\fP, se il \fIpercorso\fP non contiene una directory (ossia è solo un nome di file), allora si assume che esso sia presente nella directory di configurazione di aMule, \fI~/.aMule\fP. .SH FILE ~/.aMule/* .SH "SEGNALARE I BUG" Per favore segnalare i bug nel nostro forum (\fIhttp://forum.amule.org/\fP) o nel nostro bugtracker (\fIhttp://bugs.amule.org/\fP). Per favore non segnalare i bug via posta elettronica, né nella nostra mailing list né direttamente a qualunque membro del gruppo. .SH COPYRIGHT aMule e tutti i programmi di utilità correlati sono distribuiti in accordo alla GNU General Public License. .SH "VEDI ANCHE" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH AUTORE Questa pagina del manuale è stata scritta da Vollstrecker .SH TRADUZIONE ITALIANA Stefano Corti amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amule.ro.10000644000175000017500000000640612611472361021020 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULE 1 "Noiembrie 2011" "aMule v2.3.1" aMule .als B_untranslated B .als RB_untranslated RB .SH NUME amule \- client eMule p2p pentru toate platformele .SH REZUMAT .B_untranslated amule [\fB\-c\fP \fI\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIeD2k\-link\fP] .B_untranslated amule .RB_untranslated [ \-v ] .B_untranslated amule .RB_untranslated [ \-h ] .SH DESCRIERE .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Citește configurarea din \fI\fP în schimb de acasă .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Configurează geometria aplicației. \fI\fP utilizează același format ca standard X11 apps: [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Tipărește jurnalul de mesaje la stdout. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Resetare configurări la valorile implicite. .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP Specificați locația fișierului binar amuleweb la \fI\fP. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Nu manipula excepția fatală. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Nu dezactiva stdin. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Configurați categoria pentru link\-urile eD2k trecute la \fI\fP .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Afișează numărul versiunii curente. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Tipărește o scurtă descriere de utilizare. .TP \fB[ eD2k\-link ]\fP Adaugă o legătură eD2k la nucleu. .PP Link\-ul eD2k de adăugat poate fi: .RS 3 .IP \(bu 2 un link fișier (ed2k://|file|...), va fi adăugat la coada descărcărilor, .IP \(bu 2 o legătură server (ed2k://|server|...), care va fi adăugată la lista serverelor, .IP \(bu 2 o legătură listă server, în care caz toate serverele din listă vor fi adăugate la lista serverelor; .IP \(bu 2 o legătură magnet. .RE .SH NOTE .SS Căi Pentru toate opțiunile care iau o \fI\fP valoare, dacă \fIpath\fP nu conține nici o parte a unui director (ex. doar un nume de fișier simplu), atunci se consideră a fi sub directorul de configurare aMule, \fI~/.aMule\fP. .SH FIȘIERE ~/.aMule/* .SH "RAPORTAREA ERORILOR" Vă rugăm să raportați erorile fie pe forumul nostru(\fIhttp://forum.amule.org/\fP), sau în bugtracker\-ul nostru (\fIhttp://bugs.amule.org/\fP). Nu raportați erorile pe email, nici la lista noastră de adrese nici direct la nici un membru al echipei. .SH "DREPT DE AUTOR" aMule și toate utilitarele conexe sunt distribuite sub GNU General Public License. .SH "VEDEȚI ȘI" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH AUTOR Această pagină manual a fost scrisă de Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amule.ru.10000644000175000017500000001061612611472361021024 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULE 1 "November 2011" "aMule v2.3.1" aMule .als B_untranslated B .als RB_untranslated RB .SH ИМЯ amule \- мультиплатформенный p2p клиент eMule .SH ОБЗОР .B_untranslated amule [\fB\-c\fP \fI<путь>\fP] [\fB\-geometry\fP \fI<геометрия>\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI<путь>\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI<номер>\fP] [\fIeD2k\-ссылка\fP] .B_untranslated amule .RB_untranslated [ \-v ] .B_untranslated amule .RB_untranslated [ \-h ] .SH ОПИСАНИЕ .TP \fB[ \-c\fP \fI<путь>\fP, \fB\-\-config\-dir\fP=\fI<путь>\fP \fB]\fP Прочитать конфигурацию из места, указанного в \fI<пути>\fP, вместо домашнего каталога .TP \fB[ \-geometry \fP\fI<геометрия>\fP \fB]\fP Указать геометрию окна. \fI<Геометрия>\fP использует стандартный формат X11: [\fB=\fP][\fI<ширина>\fP{\fBxX\fP}\fI<высота>\fP][{\fB+\-\fP}\fI<смещениеX>\fP{\fB+\-\fP}\fI<смещениеY>\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Печатает сообщения лога в стандартный вывод. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Сбрасывает конфигурацию в изначальную. .TP \fB[ \-w\fP \fI<путь>\fP, \fB\-\-use\-amuleweb\fP=\fI<путь>\fP \fB]\fP Указать \fI<путь>\fP к исполняемому файлу amuleweb. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Не обрабатывать фатальные исключительные ситуации. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Не отключать стандартный ввод. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI<номер>\fP \fB]\fP Указать \fI<номер>\fP категории для eD2k ссылок. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Выводит информацию о версии. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Выводит короткую помощь по использованию. .TP \fB[ eD2k\-ссылка ]\fP Передает eD2k\-ссылку в ядро. .PP Добавляемая eD2k\-ссылка может быть: .RS 3 .IP \(bu 2 файловая ссылка (ed2k://|file|...), она будет добавлена в очередь закачки; .IP \(bu 2 серверная ссылка (ed2k://|server|...), она будет добавлена в список серверов; .IP \(bu 2 ссылка на список серверов, тогда все сервера из списка будут добавлены в список серверов; .IP \(bu 2 magnet\-ссылка. .RE .SH ЗАМЕЧАНИЯ .SS Пути Для всех опций, в которых указывается \fI<путь>\fP, если \fIпуть\fP не содержит каталога (т.е. только имя самого файла), то предполагается, что файл находится в каталоге конфигурации, \fI~/.aMule\fP. .SH ФАЙЛЫ ~/.aMule/* .SH "СООБЩЕНИЕ ОБ ОШИБКАХ" Пожалуйста, сообщайте об ошибках либо на нашем форуме (\fIhttp://forum.amule.org/\fP), либо в багтрекере (\fIhttp://bugs.amule.org/\fP). Пожалуйста, не сообщайте об ошбках по электронной почте, по нашим спискам рассылки, или напрямую участникам. .SH "АВТОРСКИЕ ПРАВА" aMule и все прилагающиеся инструменты распространаются под Открытым Лицензионным Соглашением GNU (GNU GPL). .SH "СМ. ТАКЖЕ" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH АВТОРЫ Автор страницы помощи: Vollstrecker , перевод: Radist Morse amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amule.tr.10000644000175000017500000000655612611472361021033 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULE 1 "Kasım 2011" "aMule v2.3.1" aMule .als B_untranslated B .als RB_untranslated RB .SH İSİM amule \- her platformda çalışan eMule p2p istemcisi .SH KULLANIM .B_untranslated amule [\fB\-c\fP \fI\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIeD2k\-bağlantısı\fP] .B_untranslated amule .RB_untranslated [ \-v ] .B_untranslated amule .RB_untranslated [ \-h ] .SH AÇIKLAMA .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Yapılandırmayı home yerine \fI\fPdan oku .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Uygulamanın geometrisini düzenler. \fI\fP standart X11 uygulamaları ile aynı biçimi kullanır: [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Log mesajlarını standart çıktıya gönderir. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Yapılandırmayı varsayılan değerlere sıfırlar. .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP amuleweb çalıştırılabilir dosyasının konumunu \fI\fP olarak belirler. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Kritik istisnaları ele almaz. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR standart girdiyi devre dışı bırakmaz. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP \fI\fPya gönderilen eD2k bağlantılarının kategorilerini belirler. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Geçerli sürüm numarasını görüntüler. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Kısa bir kullanım açıklaması görüntüler. .TP \fB[ eD2k\-bağlantısı ]\fP Çekirdeğe bir eD2k bağlantısı ekler. .PP Eklenecek eD2k bağlantısı şunlardan biri olabilir: .RS 3 .IP \(bu 2 bir dosya bağlantısı (ed2k://|file|...) ki indirmeler kuyruğuna eklenir; .IP \(bu 2 bir sunucu bağlantısı (ed2k://|server|...) ki sunucu listesine eklenir; .IP \(bu 2 bir sunucu listesi bağlantısı, bu durumda listedeki tüm sunucular sunucu listesine eklenir; .IP \(bu 2 bir magnet bağlantısı. .RE .SH NOTLAR .SS Yollar \fI\fP değeri alan tüm seçenekler için eğer \fIyol\fP hiçbir dizin içermiyorsa (yani sadece bir dosya ismiyse) aMule yapılandırma dizini (\fI~/.aMule\fP) varsayılır. .SH DOSYALAR ~/.aMule/* .SH GERİBİLDİRİM Hataları bildirmek için forumumuzu (\fIhttp://forum.amule.org/\fP) ya da hata takipçimizi (\fIhttp://bugs.amule.org/\fP) kullanınız. Hataları bildirmek için e\-mail ve e\-mail listemizi kullanmamanızı ve geliştiricilerden birine doğrudan bildirmemenizi rica ederiz. .SH "TELİF HAKKI" aMule ve ilgili tüm yardımcı araçları GNU Genel Kamu Lisansı çerçevesinde dağıtılmaktadır. .SH "İLGİLİ BELGELER" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH YAZAN Bu kılavuz sayfası Vollstrecker tarafından yazılmıştır. amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amule.zh_TW.10000644000175000017500000000612012611472361021424 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULE 1 "2011 十一月" "aMule v2.3.1" aMule .als B_untranslated B .als RB_untranslated RB .SH 名稱 amule \- 跨平台的 eMule P2P 客戶端程式 .SH 簡介 .B_untranslated amule [\fB\-c\fP \fI<路徑>\fP] [\fB\-geometry\fP \fI<視窗狀態>\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI<路徑>\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI<號碼>\fP] [\fIeD2k 連結\fP] .B_untranslated amule .RB_untranslated [ \-v ] .B_untranslated amule .RB_untranslated [ \-h ] .SH 說明 .TP \fB[ \-c\fP \fI<路徑>\fP, \fB\-\-config\-dir\fP=\fI<路徑>\fP \fB]\fP 從 \fI\fP 讀取設定檔,而不是個人目錄 .TP \fB[ \-geometry \fP\fI<視窗狀態>\fP \fB]\fP 設定這個應用程式的視窗狀態。\fI<視窗狀態>\fP 使用和 X11 應用程式一樣的格式: [\fB=\fP][\fI<寬度>\fP{\fBxX\fP}\fI<高度>\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR 將程式記錄顯示在標準輸出。 .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR 將設定重設為預設值。 .TP \fB[ \-w\fP \fI<路徑>\fP, \fB\-\-use\-amuleweb\fP=\fI<路徑>\fP \fB]\fP 設定 amuleweb 的執行檔位置在 \fI<路徑>\fP。 .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR 不處理嚴重錯誤。 .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR 不停用標準輸入。 .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI<號碼>\fP \fB]\fP 給輸入成功的 eD2k 連結分類編號為 \fI<號碼>\fP .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR 顯示目前的版本號碼。 .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR 顯示簡短的使用說明。 .TP \fB[ eD2k 連結 ]\fP 將 eD2k 連結加到核心。 .PP 可以使用以下幾種 eD2k 連結: .RS 3 .IP \(bu 2 檔案連結 (ed2k://|file|...),會將檔案加入下載等候區; .IP \(bu 2 伺服器連結 (ed2k://|server|...),會將伺服器加入 aMule 的伺服器清單; .IP \(bu 2 伺服器清單連結,在清單內的伺服器會被加入 aMule 的伺服器清單; .IP \(bu 2 magnet 連結。 .RE .SH 附註 .SS 路徑 對於有 \fI<路徑>\fP 的選項,如果 \fI路徑\fP 裏面沒有含目錄 (即只有單純檔名),則會被認為是在 aMule 的設定檔所在目錄 \fI~/.aMule\fP 下。 .SH 檔案 ~/.aMule/* .SH 回報問題 請到我們的論壇 (\fIhttp://forum.amule.org/\fP) 或錯誤追蹤網站 (\fIhttp://bugs.amule.org/\fP) 回報發現的問題。請不要用 e\-mail 或在我們的群組信件中回報,也不要直接通知某個團隊成員。 .SH 版權 aMule 與附加的工具程式都遵守 GNU 的 GPL 協定。 .SH 參考 .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH 作者 說明文件撰寫者: Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulecmd.10000644000175000017500000002100412611472361021054 0ustar morphmorph.TH AMULECMD 1 "November 2011" "aMuleCmd v2.3.1" "aMule utilities" .als B_untranslated B .als RB_untranslated RB .als SS_untranslated SS .SH NAME amulecmd \- Console-based program to control aMule .SH SYNOPSIS .B_untranslated amulecmd .RB [ \-h " " \fI ] .RB [ \-p " " \fI ] .RB [ \-P " " \fI ] .RB [ \-f " " \fI ] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] .RB [ \-l " " \fI ] .RB { " " [ \-w ] " " | " " [ \-c " " \fI ] " " } .B_untranslated amulecmd .RB [ \-\-create\-config\-from = \fI ] .B_untranslated amulecmd .RB_untranslated [ \-\-version ] .B_untranslated amulecmd .RB_untranslated [ \-\-help ] .SH DESCRIPTION .B amulecmd is a console-based client to control aMule. .TP \fB[ \-h\fR \fI\fR, \fB\-\-host\fR=\fI\fR \fB]\fR Host where aMule is running (default: \fIlocalhost\fR). \fI\fR might be an IP address or a DNS name .TP \fB[ \-p\fR \fI\fR, \fB\-\-port\fR=\fI\fR \fB]\fR aMule's port for External Connections, as set in Preferences->Remote Controls (default: \fI4712\fR) .TP \fB[ \-P\fR \fI\fR, \fB\-\-password\fR=\fI\fR \fB]\fR External Connections password. .TP \fB[ \-f\fR \fI\fR, \fB\-\-config\-file\fR=\fI\fR \fB]\fR Use the given configuration file. Default configuration file is \fI~/.aMule/remote.conf\fR .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Do not print any output to stdout. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Be verbose \- show also debug messages. .TP \fB[ \-l\fR \fI\fR, \fB\-\-locale\fR=\fI\fR \fB]\fR Sets program locale (language). See the \fBNOTES\fR section for the description of the \fI\fR parameter. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Write command line options to config file and exit .TP \fB[ \-c\fR \fI\fR, \fB\-\-command\fR=\fI\fR \fB]\fR Execute \fI\fR as if it was entered at amulecmd's prompt and exit. .TP \fB[ \-\-create\-config\-from\fR=\fI\fR \fB]\fR Create config file based upon \fI\fR, which must point to a valid aMule config file, and then exit. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Displays the current version number. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Prints a short usage description. .SH COMMANDS All commands are case insensitive. .SS Add \fI\fP | \fI\fP Adds an eD2k-link or a magnet-link to the core. The eD2k link to be added can be: .RS 3 .IP \(bu 2 a file link (ed2k://|file|...), it will be added to the download queue; .IP \(bu 2 a server link (ed2k://|server|...), it will be added to the server list; .IP \(bu 2 a serverlist link, in which case all servers in the list will be added to the server list. .RE The magnet link must contain the eD2k hash and file length. .SS Cancel \fI\fP | \fI\fP Cancels the download specified by \fI\fR or \fI\fR. To get the value use \fBshow\fR. .SS Connect [ \fIkad\fP | \fIed2k\fP | \fI\fP ] Connect to the network. This will connect to all networks that are enabled in Preferences. With the optional parameter you can specify which network to connect to. Giving a server address in the form of IP:Port (where IP is either a dotted decimal IPv4 address or a resolvable DNS name) aMule will connect to that server only. .SS_untranslated Disconnect [ \fIed2k\fP | \fIkad\fP ] Disconnect from all networks you are connected to, or just disconnect from the specified network. .SS Download \fI\fP Start downloading a file. The \fI\fR of a file from the last search has to be given. Example: `download 12' will start to download the file with the number 12 of the previous search. .SS_untranslated Exit Disconnect from amule/amuled and quit amulecmd. .SS Get \fI\fP Get and display a preference value. Available values for \fI\fR: .RS .IP BwLimits 10 Get bandwidth limits. .IP IPFilter 10 Get IPFilter preferences. .RE .SS Help [ \fI\fP ] Prints a short usage description. If called without parameter, it shows a list of available commands. If called with \fI\fR, it shows a short description of the given command. .SS Pause \fI\fP | \fI\fP Pauses the download specified by \fI\fR or \fI\fR. To get the value use \fBshow\fR. .SS Priority \fI\fP \fI\fP | \fI\fP Set priority of a download specified by \fI\fR or \fI\fR. Available values for \fI\fR: .RS .IP Auto 10 Automatic priority. .IP High 10 High priority. .IP Low 10 Low priority. .IP Normal 10 Normal priority. .RE .SS_untranslated Progress Shows the progress of an on\-going search. .SS_untranslated Quit A synonim of the \fBexit\fR command. .SS Reload \fI\fP Reloads a given object. Available values for \fI\fR: .RS .IP Shared 10 Reload shared files list. .IP IPFilter 10 Reload IP filter tables. .RE .SS_untranslated Reset Reset the log. .SS_untranslated Results Shows you the results of the last search. .SS Resume \fI\fP | \fI\fP Resumes the download specified by \fI\fR or \fI\fR. To get the value use \fBshow\fR. .SS Search \fI\fP \fI\fR Makes a search for the given \fI\fR. A search type and a keyword to search is mandatory to do this. Example: `search kad amule' performs a kad search for `amule'. Available search types: .RS .IP Global 10 Performs a global search. .IP Kad 10 Performs a search on the Kademlia network. .IP Local 10 Performs a local search. .RE .SS Set \fI\fR Sets a given preferences value. Available values for \fI\fR: .RS .IP BwLimits 10 Set bandwidth limits. .IP IPFilter 10 Set IPFilter preferences. .RE .SS Show \fI\fR Shows upload/download queue, servers list or shared files list. Available values for \fI\fR: .RS .IP DL 10 Show download queue. .IP Log 10 Show log. .IP Servers 10 Show servers list. .IP UL 10 Show upload queue. .RE .SS_untranslated Shutdown Shutdown the remote running core (amule/amuled). This will also shut down the text client, since it is unusable without a running core. .SS Statistics [ \fI\fP ] Show statistics tree. The optional \fI\fR in the range of 0-255 can be passed as argument to this command, which tells how many entries of the client version subtree should be shown. Passing 0, or omitting it means `unlimited'. Example: `statistics 5' will show only the top 5 versions for each client type. .SS_untranslated Status Show connection status, current up/download speeds, etc. .SH NOTES .SS Paths For all options which take a \fI\fR value, if the \fIpath\fR contains no directory part (i.e. just a plain filename), then it is considered to be under the aMule configuration directory, \fI~/.aMule\fR. .SS Languages The \fI\fR parameter for the \fB\-l\fR option has the following form: \fIlang\fR[\fB_\fILANG\fR][\fB.\fIencoding\fR][\fB@\fImodifier\fR] where \fIlang\fR is the primary language, \fILANG\fR is a sublanguage/territory, \fIencoding\fR is the character set to use and \fImodifier\fR allows the user to select a specific instance of localization data within a single category. For example, the following strings are valid: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Though all the above strings are accepted as valid language definitions, \fIencoding\fR and \fImodifier\fR are yet unused. In addition to the format above, you can also specify full language names in English - so \fB\-l german\fR is also valid and is equal to \fB\-l de_DE\fR. When no locale is defined, either on command-line or in config file, system default language will be used. .SH FILES ~/.aMule/remote.conf .SH EXAMPLE Typically amulecmd will be first run as: .PP \fBamulecmd\fR \fB\-h\fR \fIhostname\fR \fB\-p\fR \fIECport\fR \fB\-P\fR \fIECpassword\fR \fB\-w\fR .PP or .PP \fBamulecmd\fR \fB\-\-create-config-from\fR=\fI/home/username/.aMule/amule.conf\fR .PP These will save settings to \fI$HOME/.aMule/remote.conf\fR, and later you only need to type: .B_untranslated amulecmd Of course, you don't have to follow this example. .SH REPORTING BUGS Please report bugs either on our forum (\fIhttp://forum.amule.org/\fR), or in our bugtracker (\fIhttp://bugs.amule.org/\fR). Please do not report bugs in e-mail, neither to our mailing list nor directly to any team member. .SH COPYRIGHT aMule and all of its related utilities are distributed under the GNU General Public License. .SH SEE ALSO .B_untranslated amule\fR(1), \fBamuled\fR(1) .SH AUTHOR This manpage was written by Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulecmd.de.10000644000175000017500000002354412611472361021456 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULECMD 1 "November 2011" "aMuleCmd v2.3.1" "aMule Hilfsprogramme" .als B_untranslated B .als RB_untranslated RB .als SS_untranslated SS .SH NAME amulecmd \- Konsolenbasiertes Programm um aMule zu steuern .SH SYNTAX .B_untranslated amulecmd [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] {\fB \fP[\fB\-w\fP]\fB \fP|\fB \fP[\fB\-c\fP \fI\fP]\fB \fP} .B_untranslated amulecmd [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amulecmd .RB_untranslated [ \-\-version ] .B_untranslated amulecmd .RB_untranslated [ \-\-help ] .SH BESCHREIBUNG \fBamulecmd\fP ist ein Konsolenprogramm zur Steuerung von aMule. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP Der Rechner auf dem aMule läuft (Standard: \fIlocalhost\fP). \fI\fP kann eine IP\-Adresse oder ein DNS\-Name sein. .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP aMule's Port für Externe Verbindungen, wie in den Optionen unter\->Fernsteuerung (Standard: \fI4712\fP) eingestellt. .TP \fB[ \-P\fP \fI\fP, \fB\-\-password\fP=\fI\fP \fB]\fP Passwort für Externe Verbindungen. .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP Benutzt die angegebene Konfigurationsdatei. Die Standardkonfigurationsdatei ist \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Keine Ausgabe auf stdout ausgeben. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Sei gesprächig \- Gebe auch Debuggingausgaben aus .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Setzt die Lokale (Sprache) des Programms. Siehe Abschnitt \fBANMERKUNGEN\fP für die Beschreibung des \fI\fP Parameters. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Schreibe die Kommandozeilenoptionen in die Konfigurationsdatei und kehre zur Shell zurück. .TP \fB[ \-c\fP \fI\fP, \fB\-\-command\fP=\fI\fP \fB]\fP Führe \fI\fP aus, als wäre es auf amulecmd's Eingabeaufforderung eingegeben worden, und beende dich. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP Konfigurationsdatei basierend auf \fI\fP, welche auf eine gültige aMule Konfigurationsdatei verweisen muss, erstellen und danach beenden. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Zeigt die derzeitige Versionsnummer an. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Gibt eine kurze Nutzungsbeschreibung aus. .SH BEFEHLE Alle Befehle können groß oder klein geschrieben werden. .SS "Add \fI\fP | \fI\fP" Fügt einen eD2k\- oder Magnetverweis dem Kern hinzu. Der eD2k\-Verweis darf enthalten: .RS 3 .IP \(bu 2 ein Link zu einer Datei (ed2k://|file|...), dieser wird Downloadliste hinzugefügt; .IP \(bu 2 ein Link zu einem Server (ed2k://|server|...), dieser wird der Serverliste hinzugefügt; .IP \(bu 2 eine Serverlisten\-Verweis, in diesem Fall werden alle Server dieser Liste der Serverliste hinzugefügt. .RE Der Magnet Verweis muss die eD2k Prüfsumme und die Dateigröße enthalten. .SS "Cancel \fI\fP | \fI\fP" Bricht den Download, der mit \fI\fP oder \fI\fP angegeben wurde, ab. Benutze \fBshow\fP um den Wert zu erfahren. .SS "Connect [ \fIkad\fP | \fIed2k\fP | \fI\fP ]" Verbindung zu einem Netzwerk aufbauen. Die Verbindung wird zu allen Netzwerken aufgebaut, die in den Einstellungen aktiviert wurden. With the optional parameter you can specify which network to connect to. Giving a server address in the form of IP:Port (where IP is either a dotted decimal IPv4 address or a resolvable DNS name) aMule will connect to that server only. .SS_untranslated Disconnect [ \fIed2k\fP | \fIkad\fP ] Trennt die Verbindung zu allen Netzwerken mit denen du verbunden bist, oder nur zu dem, welches angegeben wurde. .SS "Download \fI\fP" Startet den Download einer Datei Die \fI\fP einer Datei aus der letzten Suche muss angegeben werden. Beispiel: 'download 12' startet den Download der Datei, die in der letzten Suche die Nummer 12 hatte. .SS_untranslated Exit Verbindung zu amule/amuled trennen und amulecmd beenden. .SS "Get \fI\fP" Liest eine Option und zeigt sie an. Verfügbare Werte für \fI\fP: .RS .IP BwLimits 10 Bandbreitenbeschränkungen abfragen. .IP IPFilter 10 IPFilter Einstellungen abfragen. .RE .SS "Help [ \fI\fP ]" Gibt eine kurze Nutzungsübersicht aus. Wenn ohne Parameter aufgerufen, zeigt es eine Liste der verfügbaren Befehle an. Wenn mit \fI\fPaufgerufen, zeigt es eine Kurzbeschreibung diese Befehls an. .SS "Pause \fI\fP | \fI\fP" Pausiert den Download der mit \fI\fP oder \fI\fP angegeben wurde. Benutze \fBshow\fP um den Wert zu erfahren. .SS "Priority \fI\fP \fI\fP | \fI\fP" Setzt die Priorität für den Download der mit \fI\fP oder \fI\fP angegeben wurde. Verfügbare Werte für \fI\fP: .RS .IP Auto 10 Automatische Priorität. .IP High 10 Hohe Priorität. .IP Low 10 Niedrige Priorität. .IP Normal 10 Normale Priorität. .RE .SS_untranslated Progress Zeigt den Fortschritt einer laufenden Suche an. .SS_untranslated Quit Synonim für den \fBexit\fP Befehl. .SS "Reload \fI\fP" Aktualisiert das angegebene Objekt. Verfügbare Werte für \fI\fP: .RS .IP Shared 10 Liste der freigegebenen Dateien neu laden. .IP IPFilter 10 IP Filter Tabellen neu laden. .RE .SS_untranslated Reset Setzt das Log zurück. .SS_untranslated Results Zeigt die Resultate der letzten Suche an. .SS "Resume \fI\fP | \fI\fP" Setzt den Download der mit \fI\fP oder \fI\fP angegeben wurde fort. Nutze \fBshow\fP, um den Wert zu erfahren. .SS "Search \fI\fP \fI\fP" Startet eine Suche nach dem angegebenenI \fI\fP. Ein Suchtyp und ein Schlüsselwort müssen angegeben werden. Beispiel: 'search kad amule' startet eine kad\-Suche nach 'amule'. Verfügbare Suchtypen: .RS .IP Global 10 Führt eine globale Suche durch. .IP Kad 10 Führt eine Suche im Kad\-Netzwerk durch. .IP Local 10 Führt eine lokale Suche durch. .RE .SS "Set \fI\fP" Setzt die angegebene Option. Verfügbare Werte für \fI\fP: .RS .IP BwLimits 10 Setzt die Bandbreitenbeschränkungen. .IP IPFilter 10 IPFilter Einstellungen setzen. .RE .SS "Show \fI\fP" Zeigt upload/download Warteschlange, Serverliste oder die Liste der freigegebenen Dateien an. Verfügbare Werte für \fI\fP: .RS .IP DL 10 Downloadwarteschlange anzeigen. .IP Log 10 Log anzeigen. .IP Servers 10 Serverliste anzeigen. .IP UL 10 Uploadwarteschlange anzeigen. .RE .SS_untranslated Shutdown Beendet das Programm (amule/amuled) zu dem du verbunden bist. Dies beendet auch den Textclient, da er ohne Verbindung nicht zu gebrauchen ist. .SS "Statistics [ \fI\fP ]" Zeigt die Statistiken an. Die optionale \fI\fP im Bereich von 0\-255 kann als Argument diesem Befehel übergeben werden. Sie gibt an, wie viele Einträge der Clientversionsliste angezeigt werden sollen. Der Wert 0, oder keine Angabe bedeutet 'unbegrenzt'. Beispiel: 'statistics 5' zeigt nur die oberen 5 Versionen der einzelnen Clienttypen an. .SS_untranslated Status Zeigt den Verbindungsstatus, aktuelle Up/Downloadgeschindigkeiten, etc. an. .SH ANMERKUNGEN .SS Pfade Für alle Optionen die ein \fI\fP Argument erwarten, wenn der \fIPfad\fP kein Verzeichnis enthält(z.B. nur einen Dateinamen), dann wird angenommen, diese Datei liegt um aMule\-Konfigurationsverzeichnis, \fI~/.aMule\fP. .SS Sprachen Der \fI\fP Parameter der \fB\-l\fP Option hat folgende Form: \fIsprache\fP[\fB_\fP\fISPRACHE\fP][\fB.\fP\fIkodierung\fP][\fB@\fP\fImodifikation\fP] wobei \fIsprache\fP die eigentliche Sprache, \fISPRACHE\fP das Gebiet, \fIkodierung\fP den zu nutzenden Zeichensatz und \fImodifikation\fP eine bestimmte Untergruppe in diesem darstellt. Zum Besispiel sind die folgenden Zeichenketten gültig: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Alle oben genannten Zeicheketten werden als gültige Sprachdefinitionen akzeptiert, \fIKODIERUNG\fP und \fIzusatz\fP werden zur Zeit nicht genutzt. Zusätzlich zu den obigen Formaten, kann man komplette englische Sprachbezeichnungen angeben \- \fB\-l german\fP ist ebenfalls gültig und entspricht \fB\-l de_DE\fP. Wenn keine Sprache definiert wurde, weder in der Kommandozeile noch in der Konfigurationsdatei, wird die Standardsprache des Systems verwendet. .SH DATEIEN ~/.aMule/remote.conf .SH BEISPIEL Typischerweise startet man amulecmd als erstes mit: .PP \fBamulecmd\fP \fB\-h\fP \fIhostname\fP \fB\-p\fP \fIEC\-Port\fP \fB\-P\fP \fIEC\-Passwort\fP \fB\-w\fP .PP oder .PP \fBamulecmd\fP \fB\-\-create\-config\-from\fP=\fI/home/Benutzer/.aMule/amule.conf\fP .PP Dies speichert die Einstellungen in \fI$HOME/.aMule/remote.conf\fP, und später tippst du nur noch: .B_untranslated amulecmd Natürlich brauchst du dich nicht unbedingt an dieses Beispiel halten. .SH "FEHLER MELDEN" Bitte meldet Fehler entweder in unserem Forum (\fIhttp://forum.amule.org/\fP), oder in unseren Bugtracker (\fIhttp://bugs.amule.org/\fP). Bitte meldet uns weder Fehler per E\-Mail, noch auf unsere Mailingliste oder direkt an unsere Teammitglieder. .SH COPYRIGHT aMule und alle seine zugehörigen Anwendungen werden verteilt unter der GNU General Public License .SH "SIEHE AUCH" .B_untranslated amule\fR(1), \fBamuled\fR(1) .SH VERFASSER Diese manpage wurde geschrieben von Vollstrecker Diese manpage wurde übersetzt von Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulecmd.es.10000644000175000017500000002245212611472361021472 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULECMD 1 "November 2011" "aMuleCmd v2.3.1" "aMule utilidades" .als B_untranslated B .als RB_untranslated RB .als SS_untranslated SS .SH NOMBRE amulecmd \- Programa basado en consola para controlar aMule .SH SINOPSIS .B_untranslated amulecmd [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] {\fB \fP[\fB\-w\fP]\fB \fP|\fB \fP[\fB\-c\fP \fI\fP]\fB \fP} .B_untranslated amulecmd [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amulecmd .RB_untranslated [ \-\-version ] .B_untranslated amulecmd .RB_untranslated [ \-\-help ] .SH DESCRIPCIÓN \fBamulecmd\fP es un cliente basado en consola para controlar aMule. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP Host donde se está ejecutando aMule. (por defecto: \fIlocalhost\fP). \fI\fP debe ser o una dirección IP o un nombre DNS .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP Puerto de conexión externa de aMule, puesto en Opciones\->Controles Remotos (por defecto: 4712) .TP \fB[ \-P\fP \fI\fP, \fB\-\-password\fP=\fI\fP \fB]\fP Contraseña de conexiones externas .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP Usar la configuración dada por el archivo. El archivo de configuración por defecto es \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR No mostrar nada por la salida estándar .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Modo Extendido \- muestra también los mensajes de depuración. .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Selecciona el idioma del programa. Ver la sección \fBNOTAS\fP para la descripción del parámetro del \fI\fP. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Escribe opciones de la línea de comando al archivo de configuración y termina. .TP \fB[ \-c\fP \fI\fP, \fB\-\-command\fP=\fI\fP \fB]\fP Ejecuta \fI\fP y sal como si este fuera introducido en amulecmd. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP Crear archivo de configuración basado en \fI\fP, el cual debe apuntar a un archivo de configuración válido, y entonces termina. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Mostrar el número de la versión actual. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Imprime una breve descripción de uso. .SH COMANDOS Todos los comandos ignoran las mayúsculas. .SS "Añadir \fI\fP | \fI\fP" Añadir un enlace eD2k o un enlace magnet al núcleo. El enlace eD2k para ser añadido puede ser: .RS 3 .IP \(bu 2 un enlace de archivo (ed2k://|archivo|...), será añádido a la cola de descarga. .IP \(bu 2 un enlace de servidor (ed2k://|servidor|...), será añádido a la cola de servidores. .IP \(bu 2 un enlace con una lista de servidores, se añadirán todos los servidores a la lista. .RE El enlace magnet debe contener un hash eD2k y la longitud del archivo. .SS "Cancelar \fI\fP | \fI\fP" Cancels the download specified by \fI\fP or \fI\fP. To get the value use \fBshow\fP. .SS "Conectar [ \fIkad\fP | \fIed2k\fP | \fI\fP ]" Conectar a la red. Esto conectará a todas las redes que estén habilitadas en las preferencias. With the optional parameter you can specify which network to connect to. Giving a server address in the form of IP:Port (where IP is either a dotted decimal IPv4 address or a resolvable DNS name) aMule will connect to that server only. .SS_untranslated Disconnect [ \fIed2k\fP | \fIkad\fP ] Desconectar de todas las redes a las que estás conectado, o solamente desconecta de la red especificada. .SS "Descarga \fI\fP" Comenzar a descargar un archivo. The \fI\fP of a file from the last search has to be given. Example: `download 12' will start to download the file with the number 12 of the previous search. .SS_untranslated Exit Desconectar de amule/amuled y salir de amulecmd. .SS "Obtener \fI\fP" Obtener y mostrar un valor de opciones. Valores disponibles para \fI\fP: .RS .IP BwLimits 10 Obtener limites de ancho de banda. .IP IPFilter 10 Obtener opciones del filtro IP. .RE .SS "Ayuda [ \fI\fP ]" Prints a short usage description. If called without parameter, it shows a list of available commands. If called with \fI\fP, it shows a short description of the given command. .SS "Pausa \fI\fP | \fI\fP" Pauses the download specified by \fI\fP or \fI\fP. To get the value use \fBshow\fP. .SS "Priority \fI\fP \fI\fP | \fI\fP" Fijar la prioridad de una descarga especificada por \fI\fP o \fI\fP. Valores disponibles para \fI\fP: .RS .IP Auto 10 Prioridad automática. .IP High 10 Prioridad alta. .IP Low 10 Prioridad baja. .IP Normal 10 Prioridad normal. .RE .SS_untranslated Progress Shows the progress of an on\-going search. .SS_untranslated Quit Un sinónimo del comando \fBexit\fP. .SS "Recargar \fI\fP" Recargar un objeto dado. Valores disponibles para \fI\fP: .RS .IP Shared 10 Recargar lista de archivos compartidos. .IP IPFilter 10 Recargar tablas de filtros IP. .RE .SS_untranslated Reset Reiniciar el registro. .SS_untranslated Results Shows you the results of the last search. .SS "Resume \fI\fP | \fI\fP" Resumes the download specified by \fI\fP or \fI\fP. To get the value use \fBshow\fP. .SS "Search \fI\fP \fI\fP" Makes a search for the given \fI\fP. A search type and a keyword to search is mandatory to do this. Example: `search kad amule' performs a kad search for `amule'. Tipos de búsquedas disponibles: .RS .IP Global 10 Realiza una búsqueda global. .IP Kad 10 Realiza una búsqueda en la red Kademlia. .IP Local 10 Realiza una búsqueda local. .RE .SS "Fija \fI\fP" Asigna un valor dado de opción. Valores disponibles para \fI\fP: .RS .IP BwLimits 10 Asignar limites de ancho de banda. .IP IPFilter 10 Fija las opciones del FiltroIP .RE .SS "Mostrar \fI\fP" Shows upload/download queue, servers list or shared files list. Valores disponibles para \fI\fP: .RS .IP DL 10 Mostrar cola de descarga. .IP Log 10 Mostrar registro. .IP Servers 10 Mostrar lista de servidores. .IP UL 10 Mostrar cola de subida. .RE .SS_untranslated Shutdown Shutdown the remote running core (amule/amuled). This will also shut down the text client, since it is unusable without a running core. .SS "Estadísticas [ \fI\fP ]" Mostrar árbol de estadísticas. The optional \fI\fP in the range of 0\-255 can be passed as argument to this command, which tells how many entries of the client version subtree should be shown. Passing 0, or omitting it means `unlimited'. Example: `statistics 5' will show only the top 5 versions for each client type. .SS_untranslated Status Show connection status, current up/download speeds, etc. .SH NOTAS .SS Rutas Todas las opciones que tengan \fI\fP como valor, si \fIpath\fP contiene un directorio sin part (p.e. solo un archivo normal), entones se tomará el directorio de la configuración, \fI~/.aMule\fP. .SS Lenguajes The \fI\fP parameter for the \fB\-l\fP option has the following form: \fIlang\fP[\fB_\fP\fILANG\fP][\fB.\fP\fIencoding\fP][\fB@\fP\fImodifier\fP] where \fIlang\fP is the primary language, \fILANG\fP is a sublanguage/territory, \fIencoding\fP is the character set to use and \fImodifier\fP allows the user to select a specific instance of localization data within a single category. Por ejemplo, las siguientes cadenas son válidas: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Though all the above strings are accepted as valid language definitions, \fIencoding\fP and \fImodifier\fP are yet unused. In addition to the format above, you can also specify full language names in English \- so \fB\-l german\fP is also valid and is equal to \fB\-l de_DE\fP. When no locale is defined, either on command\-line or in config file, system default language will be used. .SH ARCHIVOS ~/.aMule/remote.conf .SH EJEMPLO Normalmente amulecmd se ejecutara primero como:: .PP \fBamulecmd\fP \fB\-h\fP \fIhostname\fP \fB\-p\fP \fIECport\fP \fB\-P\fP \fIECpassword\fP \fB\-w\fP .PP o .PP \fBamulecmd\fP \fB\-\-create\-config\-from\fP=\fI/home/usuario/.aMule/amule.conf\fP .PP Esto guardará las opciones en \fI$HOME/.aMule/remote.conf\fP, y después sólo tiene que escribir: .B_untranslated amulecmd Of course, you don't have to follow this example. .SH "INFORMANDO ERRORES" Por favor informa de fallos ya sea en nuestro foro (\fIhttp://forum.amule.org/\fP), o en nuestro bugtracker (\fIhttp://bugs.amule.org/\fP). Por favor no informe de fallos por correo, ni en nuestras listas, ni directamente al correo de algun miembro del equipo. .SH COPYRIGHT aMule y todas las demás utilidades relacionadas son distribuidas bajo la GNU General Public License. .SH "VEASE TAMBIEN" .B_untranslated amule\fR(1), \fBamuled\fR(1) .SH AUTOR Esta página de manualfue escrita por Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulecmd.fr.10000644000175000017500000002425712611472361021477 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULECMD 1 "Novembre 2011" "aMuleCmd v2.3.1" "Outils d'aMule" .als B_untranslated B .als RB_untranslated RB .als SS_untranslated SS .SH NOM amulecmd \- Programme de contrôle d'aMule en mode texte .SH SYNOPSIS .B_untranslated amulecmd [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] {\fB \fP[\fB\-w\fP]\fB \fP|\fB \fP[\fB\-c\fP \fI\fP]\fB \fP} .B_untranslated amulecmd [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amulecmd .RB_untranslated [ \-\-version ] .B_untranslated amulecmd .RB_untranslated [ \-\-help ] .SH DESCRIPTION \fBamulecmd\fP est un client en mode texte pour contrôler aMule. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP Hôte où aMule fonctionne (par défaut : \fIlocalhost\fP). \fI\fP peut être une adresse IP ou un nom DNS. .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP Port d'aMule pour les Connexions Externes, tel que défini dans Préférences\->Contrôles à Distance (défaut: \fI4712\fP) .TP \fB[ \-P\fP \fI\fP, \fB\-\-password\fP=\fI\fP \fB]\fP Mot de passe des connexions externes. .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP Utiliser le fichier de configuration désigné. Le fichier de configuration par défaut est \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Ne pas afficher de sortie sur stdout. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Mode bavard \- affiche aussi les messages de deboguage. .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Définir les paramètres régionaux (langage). Voir la section \fBNOTES\fP pour la description du paramètre \fI\fP. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Écrire les options de la ligne de commande dans le fichier de configuration et quitter .TP \fB[ \-c\fP \fI\fP, \fB\-\-command\fP=\fI\fP \fB]\fP Éxecuter la \fI\fP comme si elle avait été entrée dans l'invite de commande d'amulecmd et quitter. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP Créer un fichier de configuration basé sur \fI\fP, qui doit pointer sur un fichier de configration d'aMule valide, et quitter ensuite. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Affiche le numéro de la version actuelle. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Afficher une court description d'utilisation. .SH COMMANDES Toutes les commandes sont insensibles à la casse. .SS "Add \fI\fP | \fI\fP" Ajoute un lien eD2k ou magnétique au noyau. Le lien eD2k à ajouter peut être : .RS 3 .IP \(bu 2 un lien fichier (ed2k://|fichier|…), il sera ajouté à la file de téléchargement; .IP \(bu 2 un lien serveur (ed2k://|serveur|…), il sera ajouté à la liste des serveurs; .IP \(bu 2 un lien de liste de serveurs, dans ce cas tous les serveurs dans la liste seront ajoutés à la liste des serveurs. .RE Le lien magnétique doit contenir le hachage eD2k et la longueur du fichier. .SS "Cancel \fI\fP | \fI\fP" Annule le téléchargement spécifié par le \fI\fP ou le \fI\fP. Pour obtenir la valeur utilisée \fBshow\fP. .SS "Connect [ \fIkad\fP | \fIed2k\fP | \fI\fP ]" Se connecter au réseau. Cela connectera à tous les réseaux qui sont activés dans les préférences. Avec le paramètre optionnel, vous pouvez spécifier le réseau pour se connecter. Donner une adresse de serveur sous la forme IP:Port (où IP est soit une adresse décimale IPv4 ou un nom DNS résolvable) aMule se connectera à ce serveur uniquement. .SS_untranslated Disconnect [ \fIed2k\fP | \fIkad\fP ] Déconnecte de tous les réseaux dont vous êtes connecté, ou juste déconnecte d'un réseau spécifié. .SS "Download \fI\fP" Commence à télécharger un fichier. Le \fI\fP d'un fichier à partir de la dernière recherche doit être donné. Exemple : `download 12' va commencer à télécharger le fichier avec le numéro 12 de la recherche précédente. .SS_untranslated Exit Déconnecte d'amule/amuled et quitter amulecmd. .SS "Get \fI\fP" Obtient et affiche une valeur de préférence. Valeurs disponibles pour \fI\fP: .RS .IP BwLimits 10 Obtenir les limites de bande passante. .IP IPFilter 10 Obtenir les préférences de filtrage IP. .RE .SS "Help [ \fI\fP ]" Affiche une courte description d'utilisation. S'il est appelé sans paramètre, il affiche une liste des commandes disponibles. Lorsqu'il est appelé avec la \fI\fP, il affiche une courte description de la commande donnée. .SS "Pause \fI\fP | \fI\fP" Interrompt le téléchargement spécifié par le \fI\fP ou le \fI\fP. Pour obtenir la valeur d'utilisée \fBshow\fP. .SS "Priority \fI\fP \fI\fP | \fI\fP" Définit la priorité d'un téléchargement spécifié par le \fI\fP ou le \fI\fP. Valeurs disponibles pour la \fI\fP : .RS .IP Auto 10 Priorité automatique. .IP High 10 Priorité haute. .IP Low 10 Priorité basse. .IP Normal 10 Priorité normal. .RE .SS_untranslated Progress Affiche la progression d'une recherche en cours. .SS_untranslated Quit Un synonyme de la commande \fBquitter\fP .SS "Reload \fI\fP" Recharge un objet donné. Valeurs disponibles pour \fI\fP: .RS .IP Shared 10 Recharger la liste des fichiers partagés. .IP IPFilter 10 Recharger les tables IP filter .RE .SS_untranslated Reset Réinitialiser le journal. .SS_untranslated Results Montre les résultats de la dernière recherche. .SS "Resume \fI\fP | \fI\fP" Reprise du téléchargement spécifié par le \fI\fP ou le \fI\fP. Pour obtenir la valeur utilisée \fBshow\fP. .SS "Search \fI\fP \fI\fP" Fait une recherche du \fI\fP donné. Un type de recherche et d'un mot clé de recherche sont obligatoires pour le faire. Exemple: `search kad amule' effectue une recherche kad pour `amule'. Types de recherche disponibles : .RS .IP Global 10 Effectuer une recherche globale. .IP Kad 10 Effectuer une recherche sur le réseau Kademlia. .IP Local 10 Effectue une recherche locale. .RE .SS "Set \fI\fP" Définit une valeur compte tenu des préférences. Valeurs disponibles pour \fI\fP: .RS .IP BwLimits 10 Définir les limites de bande passante. .IP IPFilter 10 Définir les préférences de filtrage d'IP. .RE .SS "Show \fI\fP" Montrer la file d'attente des envois/réceptions, la liste des serveurs ou la liste des fichiers partagés. Valeurs disponibles pour \fI\fP: .RS .IP DL 10 Montrer la file d'attente des réceptions. .IP Log 10 Afficher le journal. .IP Servers 10 Afficher la liste des serveurs. .IP UL 10 Montrer la file d'attente des envois. .RE .SS_untranslated Shutdown Arrêt du noyau distant exécutant (amule/amuled). Cela arrêtera aussi le client en mode texte, car il est inutilisable sans un noyau en cours d'exécution. .SS "Statistics [ \fI\fP ]" Afficher l'arbre des statistiques. L'option \fI\fP dans l'interval 255 peut être passé comme argument à cette commande, ce qui indique le nombre d'entrées de la sous\-arborescence du client qui doit être indiqué. Indiquer 0, ou en l'omettant, cela signifie 'illimité'. Exemple: `statistics 5' affichera seulement le top 5 des versions pour chaque type de client. .SS_untranslated Status Affiche l'état de la connexion, et la vitesse actuelle d'émission/réception, etc. .SH NOTES .SS Chemins Pour toutes les options prenant en paramètre un \fI\fP, si le \fIchemin\fP ne contient pas de répertoire (i.e. juste un nom de fichier), alors il sera considéré comme étant dans le répertoire de configuration d'aMule, \fI~/.aMule\fP. .SS Langages Le paramètre \fI\fP pour \fB\-l\fP l'option a la forme suivante : \fIlang\fP[\fB_\fP\fILANG\fP][\fB.\fP\fIencoding\fP][\fB@\fP\fImodifier\fP] où \fIlang\fP est la langue principale, \fILANG\fP est is a dialecte, \fIencoding\fP est le caractère défini à utiliser et \fImodifier\fP permet à l'utilisateur de sélectionner une instance spécifique des données de localisation dans une seule catégorie. Par exemple, les chaînes de caractères suivantes sont valables : .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Bien que toutes les chaînes ci\-dessus sont acceptées comme des définitions de langue valide, \fIencoding\fP et \fImodifier\fP ne sont pas encore utilisé. En plus du format ci\-dessus, vous pouvez également spécifier des noms entier de langue en anglais \- so \fB\-l german\fP est également valide et équivaut à \fB\-l de_DE\fP. En l'absence de paramètres linguistiques définie, soit sur ​​la ligne de commande ou dans le fichier de configuration, la langue utilisé par défaut sera celle du système d'exploitation. .SH FICHIERS ~/.aMule/remote.conf .SH EXEMPLE Typiquement amulecmd sera lancé la première ainsi : .PP \fBamulecmd\fP \fB\-h\fP \fInom de l'hôte\fP \fB\-p\fP \fIport EC\fP \fB\-P\fP \fImot de passe EC\fP \fB\-w\fP .PP ou .PP \fBamulecmd\fP \fB\-\-create\-config\-from\fP=\fI/home/username/.aMule/amule.conf\fP .PP Cela sauvegardera les options dans \fI$HOME/.aMule/remote.conf\fP, et il suffira de taper plus tard : .B_untranslated amulecmd Bien sûr, vous n'avez pas à suivre cet exemple. .SH "RAPPORTER DES BOGUES" Veuillez rapporter les bogues sur notre forum (\fIhttp://forum.amule.org/\fP), ou sur notre bugtracker (\fIhttp://bugs.amule.org/\fP). Veuillez ne pas rapporter les bogues par e\-mail, sur notre liste de diffusion ou directement à n'importe quel membre de l'équipe. .SH COPYRIGHT aMule et tout ses outils sont distribués sous la licence GNU General Public License. .SH "VOIR AUSSI" .B_untranslated amule\fR(1), \fBamuled\fR(1) .SH AUTEUR Cette manpage a été écrite par Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulecmd.hu.10000644000175000017500000002416512611472361021502 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULECMD 1 "2011. november" "aMuleCmd v2.3.1" "aMule segédprogramok" .als B_untranslated B .als RB_untranslated RB .als SS_untranslated SS .SH NÉV amulecmd \- Szöveges program az aMule "távvezérléséhez" .SH ÁTTEKINTÉS .B_untranslated amulecmd [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] {\fB \fP[\fB\-w\fP]\fB \fP|\fB \fP[\fB\-c\fP \fI\fP]\fB \fP} .B_untranslated amulecmd [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amulecmd .RB_untranslated [ \-\-version ] .B_untranslated amulecmd .RB_untranslated [ \-\-help ] .SH LEÍRÁS Az amulecmd egy szöveges program az aMule vezérlésére. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP A gép, amelyen az aMule fut (alapértelmezés: \fIlocalhost\fP). A \fI\fP lehet egy IP cím vagy egy DNS név. .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP Az aMule távoli elérés portja, amint az a Beállítások\->Távoli Elérés panelen beállítható (alapértelemzés: \fI4712\fP). .TP \fB[ \-P\fP \fI\fP, \fB\-\-password\fP=\fI\fP \fB]\fP A távoli elérés jelszava. .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP A megadott konfigurációs fájl használata. Az alapértelmezett konfigurációs fájl: \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Ne írjon semmit a szabvány kimenetre. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Bőbeszédű mód \- a hibakeresési üzenetek megjelenítése. .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Beállítja a program nyelvét. Lásd a \fBMEGJEGYZÉSEK\fP fejezetet a \fI\fP paraméter bővebb leírásához. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR A parancssori paramétereket beírja a konfigurációs fájlba és kilép. .TP \fB[ \-c\fP \fI\fP, \fB\-\-command\fP=\fI\fP \fB]\fP Végrehajtja a megadott parancsot, mintha azt a saját parancssorába írtuk volna be, majd kilép. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP Konfigurációs fájl készítése a \fI\fP alapján, amely az aMule érvényes konfigurációs fájlja kell legyen, majd utána kilép. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Megjeleníti a verziószámot. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Egy rövid használati leírást jelenít meg. .SH PARANCSOK Minden parancs érzéketlen a kis/nagy betűkre. .SS "Add \fI\fP | \fI\fP" Egy eD2k vagy magnet hivatkozást ad a letöltéshez. Az eD2k hivatkozás a következő lehet: .RS 3 .IP \(bu 2 egy fájl hivatkozás (ed2k://|file|...), ez a letöltési sorhoz lesz hozzáadva; .IP \(bu 2 egy kiszolgáló hivatkozás (ed2k://|server|...), ez a kiszolgáló\-listához lesz hozzáadva; .IP \(bu 2 egy kiszolgáló\-lista hivatkozás, mely esetben a listában szereplő összes kiszolgáló a kiszolgáló\-listához adódik. .RE A magnet hivatkozásnak tartalmaznia kell az eD2k hash\-t és a fájl hosszát. .SS "Cancel \fI\fP | \fI\fP" Megszakítja a \fI\fP vagy \fI\fP által azonosított letöltést. Az értékek megszerzéséhez használd a \fBshow\fP parancsot. .SS "Connect [ \fIkad\fP | \fIed2k\fP | \fI\fP ]" Kapcsolódik a hálózathoz. A Beállításokban engedélyezett összes hálózathoz kapcsolódik. Az opcionális paraméterrel megadható, melyik hálózathoz csatlakozzon. Egy kiszolgáló címének IP:Port formában történő megadásával (ahol az IP vagy egy pontozott decimális cím, vagy egy feloldható DNS név) az aMule a megadott kiszolgálóhoz fog csatlakozni. .SS_untranslated Disconnect [ \fIed2k\fP | \fIkad\fP ] Leválasztás minden csatlakoztatott hálózatról, vagy csak a megadott hálózatról. .SS "Download \fI\fP" Letölt egy fájlt. Meg kell adni egy fájl számát a legutóbbi keresésből. Például: a \(Bqdownload 12\(rq parancs az előző keresés eredményei közül a 12\-es sorszámú fájlt fogja letölteni. .SS_untranslated Exit Leválasztás az amule(d)\-ről és kilépés az amulecmd\-ből. .SS "Get \fI\fP" Megmutat egy beállítás értéket. A \fI\fP lehetséges értékei: .RS .IP BwLimits 10 Sávszélesség határok. .IP IPFilter 10 IP\-szűrő beállítások. .RE .SS "Help [ \fI\fP ]" Egy rövid használati leírást jelenít meg. Ha paraméter nélkül hívjuk meg, kilistázza az elérhető parancsokat. Ha egy \fI\fP\-ot is megadunk, rövid leírást ad az adott parancsról. .SS "Pause \fI\fP | \fI\fP" Megállítja a \fI\fP vagy \fI\fP által azonosított letöltést. Az értékek megszerzéséhez használd a \fBshow\fP parancsot. .SS "Priority \fI\fP \fI\fP | \fI\fP" Beállítja a \fI\fP vagy \fI\fP által azonosított letöltés prioritását. A \fI\fP lehetséges értékei: .RS .IP Auto 10 Automatikus prioritás. .IP High 10 Magas prioritás. .IP Low 10 Alacsony prioritás. .IP Normal 10 Normál prioritás. .RE .SS_untranslated Progress Egy folymatban lévő keresés állapotát jeleníti meg. .SS_untranslated Quit Az \fBexit\fP parancs szinonímája. .SS "Reload \fI\fP" A megadott objektum újratöltése. A \fI\fP lehetséges értékei: .RS .IP Shared 10 A megosztott fájlok listájt tölti újra. .IP IPFilter 10 Az IP szűrő újratöltése. .RE .SS_untranslated Reset Napló újrakezdése. .SS_untranslated Results Az utolsó keresés eredményeinek megjelenítése. .SS "Resume \fI\fP | \fI\fP" Folytatja a \fI\fP vagy \fI\fP által azonosított letöltést. Az értékek megszerzéséhez használd a \fBshow\fP parancsot. .SS "Search \fI\fP \fI\fP" Elindít egy keresést a megadott \fI\fP\-ra. Kötelező megadni a keresés típusát és a kulcsszót. Példa: a \(Bqsearch kad amule\(rq parancs egy Kademlia keresést indít az \(Bqamule\(rq kulcsszóra. Elérhető keresés típusok: .RS .IP Global 10 Globális keresést hajt végre. .IP Kad 10 A Kademlia hálózaton keres. .IP Local 10 Lokális keresés. .RE .SS "Set \fI\fP" Egy beállítás érték megváltoztatása. A \fI\fP lehetséges értékei: .RS .IP BwLimits 10 Sávszélesség határok beállítása. .IP IPFilter 10 IP\-szűrő beállításainak módosítása. .RE .SS "Show \fI\fP" Megmutatja a fel\- és letöltési sort, a kiszolgáló\- és megosztott fájlok listáját. A \fI\fP lehetséges értékei: .RS .IP DL 10 Letöltési lista megjelenítése. .IP Log 10 Napló megjelenítése. .IP Servers 10 Kiszolgálók listájának megjelenítése. .IP UL 10 Feltöltési lista megjelenítése. .RE .SS_untranslated Shutdown Leállítja a távoli magot (amule/amuled). Ez egyszersmind a szöveges klienst is leállítja, mivel az nemigen használható futó mag nélkül. .SS "Statistics [ \fI\fP ]" A statisztika fa megjelenítése. Lehetséges megadni egy számot a 0\-255 tartományban, amely megadja az ügyfél\-verziók al\-fák maximális nagyságát. Nulla megadása vagy a szám teljes elhagyása nem korlátoz. Példa: a \(Bqstatistics 5\(rq parancs csak az 5 leggyakoribb ügyfél változatot mutatja minden ügyfél típusra. .SS_untranslated Status Megjeleníti a kapcsolat állapotát, pillanatnyi fel\-/letöltési sebességet, stb. .SH MEGJEGYZÉSEK .SS "Elérési utak" Minden olyan opciónál amely \fI\fP paramétert kér, ha a megadott \fIfájl\fP nem tartalmaz könyvtár komponenst (vagyis tisztán csak egy fájlnév), akkor azt az aMule konfigurációs könyvtárában (\fI~/.aMule\fP) fogja keresni. .SS Nyelvek A \fB\-l\fP opció \fI\fP paramétere a következőképpen adható meg: \fInyelv\fP[\fB_\fP\fITERÜLET\fP][\fB.\fP\fIkódolás\fP][\fB@\fP\fImódosító\fP], ahol \fInyelv\fP az elsődleges nyelv, \fITERÜLET\fP egy nyelvváltozat/terület kódja, \fIkódolás\fP a karakterkészlet kódja és a \fImódosító\fP \(Bqlehetővé teszi, hogy a felhasználó kiválasszon egy meghatározott esetet a helyi jellemzők adataiból egyetlen kategórián belül\(rq. Például a következő értékek mind érvényesek: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Habár a fentieket mind elfogadja a program, mint érvényes nyelvmeghatározást, a \fIkódolás\fP és \fImódosító\fP még nem használt. Ráadásként a fenti formátumhoz, megadható akár egy nyelv teljes angol megnevezése is, így például a \fB\-l german\fP szintén érvényes és egyenértékű a \fB\-l de_DE\fP megadással. Ha sem a konfigurációs fájlban, sem a parancssorban nincs megadva a nyelv, akkor a rendszer alapértelmezett nyelvét fogja használni. .SH FÁJLOK ~/.aMule/remote.conf .SH PÉLDA Tipikusan az amulecmd\-t először a következőképpen indítjuk: .PP \fBamulecmd\fP \fB\-h\fP \fIgépnév\fP \fB\-p\fP \fIEC\-port\fP \fB\-P\fP \fIEC\-jelszó\fP \fB\-w\fP .PP vagy .PP \fBamulecmd\fP \fB\-\-create\-config\-from\fP=\fI/home/felhasználónév/.aMule/amule.conf\fP .PP Ez elmenti a beállításokat a \fI$HOME/.aMule/remote.conf\fP fájlba, hogy később már csak ezt kelljen írni: .B_untranslated amulecmd Természetesen nem kötelező ezt a példát követni. .SH "HIBÁK JELENTÉSE" A hibákat kérjük vagy a fórumon (\fIhttp://forum.amule.org/\fP), vagy a hibakövetőben (\fIhttp://bugs.amule.org/\fP) jelentsék. Hibákról kérjük ne írjanak levelet (e\-mail\-t) se a levelezési listára, se közvetlenül valamelyik fejlesztőnek. .SH COPYRIGHT Az aMule és az összes hozzá tartozó segédprogram a GNU General Public License védelme alatt áll. .SH "LÁSD MÉG" .B_untranslated amule\fR(1), \fBamuled\fR(1) .SH SZERZŐ Ezt a kézikönyv lapot Vollstrecker írta. .SH MAGYAR FORDÍTÁS Dévai Tamás amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulecmd.it.10000644000175000017500000002363612611472361021504 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULECMD 1 "Novembre 2011" "aMuleCmd v2.3.1" "Utilità di aMule" .als B_untranslated B .als RB_untranslated RB .als SS_untranslated SS .SH NOME amulecmd \- programma in console per controllare aMule .SH SINTASSI .B_untranslated amulecmd [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] {\fB \fP[\fB\-w\fP]\fB \fP|\fB \fP[\fB\-c\fP \fI\fP]\fB \fP} .B_untranslated amulecmd [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amulecmd .RB_untranslated [ \-\-version ] .B_untranslated amulecmd .RB_untranslated [ \-\-help ] .SH DESCRIZIONE \fBamulecmd\fP è un client in console per controllare aMule. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP Computer dove è in esecuzione aMule (default: \fIlocalhost\fP). \fI\fP può essere un indirizzo IP o un nome DNS. .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP Porta di aMule per le connessioni esterne, come impostata nelle preferenze\->controllo remoto (default: \fI4712\fP) .TP \fB[ \-P\fP \fI\fP, \fB\-\-password\fP=\fI\fP \fB]\fP Password delle connessioni esterne. .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP Usa il file di configurazione fornito. Il file di configurazione di default è \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Non scrivere nulla nello stdout. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Mostra anche i messaggi di debug. .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Imposta il linguaggio del programma. Vedi anche la sezione delle \fBNOTE\fP per la descrizione del parametro \fI\fP . .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Scrive le opzioni della riga di comando nel file di configurazione ed esce. .TP \fB[ \-c\fP \fI\fP, \fB\-\-command\fP=\fI\fP \fB]\fP Esegue il \fI\fP come se fosse stato immesso nel prompt di amulecmd ed esce. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP Crea un file di configurazione basandosi sul \fI\fP, che deve puntare ad un file di configurazione di aMule valido, e quindi esce. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Visualizza il numero di versione corrente. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Visualizza una breve descrizione dell'utilizzo. .SH COMANDI Tutti i comandi non distinguono tra maiuscolo e minuscolo. .SS "Add \fI\fP | \fI\fP" Aggiunge un collegamento eD2k o un collegamento magnet. Il collegamento eD2k da aggiungere può essere: .RS 3 .IP \(bu 2 un collegamento a un file (ed2k://|file|...), sarà aggiunto alla coda di download; .IP \(bu 2 un collegamento a un server (ed2k://|server|...), sarà aggiunto alla lista dei server; .IP \(bu 2 un collegamento ad una lista di server, nel cui caso tutti i server contenuti nella lista saranno aggiunti alla lista dei server correnti. .RE Il collegamento magnet deve contenere l'hash eD2k e la lunghezza del file. .SS "Cancel \fI\fP | \fI\fP" Cancella il download specificato da \fI\fP o \fI\fP. Per ottenere il valore utilizzare \fBshow\fP. .SS "Connect [ \fIkad\fP | \fIed2k\fP | \fI\fP ]" Connessione alla rete. Questo avvierà la connessione a tutte le reti abilitate nelle preferenze. Con il parametro opzionale si può specificare a che rete connettersi. Fornendo un indirizzo di server nella forma IP:Porta (dove IP è un indirizzo IPv4 in forma decimale puntata o un nome DNS risolvibile) aMule si connetterà solo a quel server. .SS_untranslated Disconnect [ \fIed2k\fP | \fIkad\fP ] Disconnette da tutte le reti attualmente connesse, o disconnette solo dalla rete specificata. .SS "Download \fI\fP" Inizia il download di un file. Deve essere fornito il \fI\fP di un file dall'ultima ricerca.Esempio: `download 12' inizierà il download del file numero 12 della ricerca precedente. .SS_untranslated Exit Disconnette da amule/amuled ed esce da amulecmd. .SS "Get \fI\fP" Legge e visualizza un valore delle preferenze. I valori disponibili per l'\fI\fP sono: .RS .IP BwLimits 10 Legge i limiti di banda. .IP IPFilter 10 Legge le preferenze del filtro IP. .RE .SS "Help [ \fI\fP ]" Visualizza una breve descrizione dell'uso. Se chiamato senza parametro, mostra una lista dei comandi disponibili. Se chiamato con il parametro \fI\fP, mostra una breve descrizione del comando dato .SS "Pause \fI\fP | \fI\fP" Mette in pausa il download specificato da \fI\fP o \fI\fP. Per ottenere il valore utilizzare \fBshow\fP. .SS "Priority \fI\fP \fI\fP | \fI\fP" Imposta la priorità di un download specificato da \fI\fP o \fI\fP. I valori disponibili per \fI\fP sono: .RS .IP Auto 10 Priorità automatica. .IP High 10 Priorità alta. .IP Low 10 Priorità bassa. .IP Normal 10 Priorità normale. .RE .SS_untranslated Progress Mostra i progressi di una ricerca in corso. .SS_untranslated Quit Un sinonimo del comando \fBexit\fP. .SS "Reload \fI\fP" Ricarica un dato oggetto I valori disponibili per l'\fI\fP sono: .RS .IP Shared 10 Ricarica la lista dei file condivisi. .IP IPFilter 10 Ricarica la tabella dei filtri IP. .RE .SS_untranslated Reset Cancella il log. .SS_untranslated Results Mostra i risultati dell'ultima ricerca. .SS "Resume \fI\fP | \fI\fP" Riprende il download specificato da \fI\fP o \fI\fP. Per ottenere il valore utilizzare \fBshow\fP. .SS "Search \fI\fP \fI\fP" Esegue una ricerca per la data \fI\fP. Il tipo della ricerca e una parola chiave da cercare sono obbligatori. Esempio: `search kad amule' esegue una ricerca sulla rete kad per `amule'. Tipi di ricerca disponibili: .RS .IP Global 10 Esegue una ricerca globale. .IP Kad 10 Esegue una ricerca sulla rete Kademlia. .IP Local 10 Esegue una ricerca locale. .RE .SS "Set \fI\fP" Imposta un dato valore di preferenza. I valori disponibili per l'\fI\fP sono: .RS .IP BwLimits 10 Imposta i limiti di banda. .IP IPFilter 10 Imposta le preferenze del filtro IP. .RE .SS "Show \fI\fP" Mostra la coda di upload/download, la lista dei server o la lista dei file condivisi. I valori disponibili per l'\fI\fP sono: .RS .IP DL 10 Mostra la coda di download. .IP Log 10 Mostra il log. .IP Servers 10 Mostra la lista dei server. .IP UL 10 Mostra la coda di upload. .RE .SS_untranslated Shutdown Chiude il motore remoto in esecuzione (amule/amuled). Questo chiuderà anche il cliente in formato testo, siccome è inutile senza un motore in esecuzione. .SS "Statistics [ \fI\fP ]" Mostra l'albero delle statistiche. Il \fI\fP opzionale, nell'intervallo 0\-255, può essere passato come argomento a questo comando per indicare quante righe del ramo delle versioni dei client devono essere mostrate. Indicando 0, o omettendo il parametro significa `illimitato'. Esempio: `statistics 5' mostrerà solo le prime 5 versioni per ogni tipo di client. .SS_untranslated Status Mostra lo stato della connessione, le velocità correnti di up/download, ecc. .SH NOTE .SS Percorsi Per tutte le opzioni che accettano un \fI\fP, se il \fIpercorso\fP non contiene una directory (ossia è solo un nome di file), allora si assume che esso sia presente nella directory di configurazione di aMule, \fI~/.aMule\fP. .SS Linguaggi Il parametro \fI\fP per l'opzione \fB\-l\fP ha la forma seguente: \fIlinguaggio\fP[\fB_\fP\fILINGUAGGIO\fP][\fB.\fP\fIcodifica\fP][\fB@\fP\fImodificatore\fP] dove \fIlinguaggio\fP è il linguaggio primario, \fILINGUAGGIO\fP è il sottotipo/territorio, \fIcodifica\fP è l'insieme di caratteri usato e \fImodificatore\fP consente all'utente di selezionare una specifica istanza dei dati di localizzazione all'interno di una singola categoria. Per esempio, le stringhe seguenti sono valide: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Sebbene tutte le stringhe sopra elencate sono accettate come definizioni di linguaggio valide, \fIcodifica\fP e \fImodificatore\fP sono ancora inutilizzati. In aggiunta al formato di cui sopra, si può anche specificare il nome completo del linguaggio in inglese, e quindi \fB\-l german\fP è valido ed equivalente a \fB\-l de_DE\fP. Quando nessun linguaggio è definito in riga di comando o nel file di configurazione, verrà usato il linguaggio di default del sistema. .SH FILE ~/.aMule/remote.conf .SH ESEMPIO Di norma amulecmd sarà inizialmente eseguito come: .PP \fBamulecmd\fP \fB\-h\fP \fInomehost\fP \fB\-p\fP \fIportaEC\fP \fB\-P\fP \fIpasswordEC\fP \fB\-w\fP .PP o .PP \fBamulecmd\fP \fB\-\-create\-config\-from\fP=\fI/home/username/.aMule/amule.conf\fP .PP In questo modo la configurazione verrà salvata in \fI$HOME/.aMule/remote.conf\fP, e le volte successive si dovrà solo digitare: .B_untranslated amulecmd Ma non è necessario seguire questo esempio. .SH "SEGNALARE I BUG" Per favore segnalare i bug nel nostro forum (\fIhttp://forum.amule.org/\fP) o nel nostro bugtracker (\fIhttp://bugs.amule.org/\fP). Per favore non segnalare i bug via posta elettronica, né nella nostra mailing list né direttamente a qualunque membro del gruppo. .SH COPYRIGHT aMule e tutti i programmi di utilità correlati sono distribuiti in accordo alla GNU General Public License. .SH "VEDI ANCHE" .B_untranslated amule\fR(1), \fBamuled\fR(1) .SH AUTORE Questa pagina del manuale è stata scritta da Vollstrecker .SH TRADUZIONE ITALIANA Stefano Corti amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulecmd.ro.10000644000175000017500000002337012611472361021503 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULECMD 1 "Noiembrie 2011" "aMuleCmd v2.3.1" "utilitare aMule" .als B_untranslated B .als RB_untranslated RB .als SS_untranslated SS .SH NUME amulecmd \- Program bazat pe terminal pentru controlat aMule .SH REZUMAT .B_untranslated amulecmd [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] {\fB \fP[\fB\-w\fP]\fB \fP|\fB \fP[\fB\-c\fP \fI\fP]\fB \fP} .B_untranslated amulecmd [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amulecmd .RB_untranslated [ \-\-version ] .B_untranslated amulecmd .RB_untranslated [ \-\-help ] .SH DESCRIERE \fBamulecmd\fP este un client bazat pe terminal pentru a controla aMule. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP Gazda unde rulează aMule (implicit: \fIlocalhost\fP). \fI\fP ar putea fi o adresă IP sau un nume DNS .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP Portul aMule pentru conexiuni externe, cum este configurat în Preferințe\->Control la distanță (implicit: \fI4712\fP) .TP \fB[ \-P\fP \fI\fP, \fB\-\-password\fP=\fI\fP \fB]\fP Parolă conexiuni externe. .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP Utilizează fișierul de configurare dat. Fișierul de configurare implicit este \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Nu tipării nici o ieșire la stdout. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Fi detaliat \- arată și mesajele de depanare. .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Configurați localizarea aplicației (limba). Vedeți secțiunea \fBNOTES\fP pentru descrierea parametrului \fI\fP . .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Scrie opțiunile liniei de comandă în fișierul de configurare și ieși .TP \fB[ \-c\fP \fI\fP, \fB\-\-command\fP=\fI\fP \fB]\fP Execută \fI\fP ca și cum ar fi fost introdusă în terminalul amulecmd și ieși. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP Creează fișierul de configurare bazat pe \fI\fP, care trebuie să indice la un fișier de configurare aMule valid, iar apoi ieși. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Afișează numărul versiunii curente. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Tipărește o scurtă descriere de utilizare. .SH COMENZI toate comenzile nu sunt sensibile la majuscule. .SS "Adaugă \fI\fP | \fI\fP" Adaugă la nucleu o legătură eD2k sau o legătură magnet. Link\-ul eD2k de adăugat poate fi: .RS 3 .IP \(bu 2 un link fișier (ed2k://|file|...), va fi adăugat la coada descărcărilor, .IP \(bu 2 o legătură server (ed2k://|server|...), care va fi adăugată la lista serverelor, .IP \(bu 2 un link listă server, în care caz toate serverele din listă vor fi adăugate la lista serverelor. .RE Legătura magnet trebuie să conțină indexul eD2k și lungimea fișierului. .SS "Anulează \fI\fP | \fI\fP" Anulează descărcarea specificată de \fI\fP sau \fI\fP. Pentru a obține valoarea utilizați \fBshow\fP. .SS "Conectare [ \fIkad\fP | \fIed2k\fP | \fI\fP ]" Conectare la rețea. Aceasta va conecta la toate rețelele care sunt activate în preferințe. Cu parametrii facultativi puteți specifica la care rețea să se conecteze. Dând o adresă pentru server în forma IP:Port (unde IP este fie o adresă zecimală IPv4 sau un nume DNS rezolvabil) aMule se va conecta numai la acel server. .SS_untranslated Disconnect [ \fIed2k\fP | \fIkad\fP ] Deconectați de la toate rețelele la care sunteți conectat, sau doar deconectați de la rețeaua specificată. .SS "Descarcă \fI\fP" Pornește descărcarea unui fișier. Un \fI\fP a unui fișier de la ultima căutare trebuie dat. Exemplu: `descărcarea 12' va porni descărcarea fișierului cu numărul 12 al căutării anterioare. .SS_untranslated Exit Deconectează de la amule/amuled și termină amulecmd. .SS "Ia \fI\fP" Ia și afișează o valoare preferată. Valori disponibile pentru \fI\fP: .RS .IP BwLimits 10 Ia limitele lățimii de bandă. .IP IPFilter 10 Ia preferințele filtrului IP. .RE .SS "Ajutor [ \fI\fP ]" Tipărește o scurtă descriere a utilizării. Dacă este adresată fără nici un parametru, va arăta o listă a comenzilor disponibile. Dacă este adresată cu \fI\fP, va arăta o scurtă descriere a comenzii date. .SS "Pauză \fI\fP | \fI\fP" Pauzează descărcarea specificată de \fI\fP or \fI\fP. Pentru a obține valoarea utilizați \fBshow\fP. .SS "Prioritate \fI\fP \fI\fP | \fI\fP" Configurați prioritatea unei descărcări cu \fI\fP sau \fI\fP. Valori disponibile pentru \fI\fP: .RS .IP Auto 10 Prioritate automată. .IP High 10 Prioritate înaltă. .IP Low 10 Prioritate scăzută. .IP Normal 10 Prioritate normală. .RE .SS_untranslated Progress Arată progresul unei căutări în desfășurare. .SS_untranslated Quit Un sinonim a comenzii \fBexit\fP . .SS "Reâncarcă \fI\fP" Reâncarcă un obiect dat. Valori disponibile pentru \fI\fP: .RS .IP Shared 10 Reâncarcă lista fișierelor partajate. .IP IPFilter 10 Reâncarcă tabelele filtrului IP. .RE .SS_untranslated Reset Resetează jurnalul. .SS_untranslated Results Arată rezultatele ultimei căutări. .SS "Reia \fI\fP | \fI\fP" Reia descărcarea specificată de \fI\fP sau \fI\fP. Pentru a obține valoarea utilizați \fBshow\fP. .SS "Caută \fI\fP \fI\fP" Face o căutare a cuvântului cheie dat \fI\fP. Un tip de căutare și un un cuvânt cheie sunt obligatorii pentru a face asta. Exemplu: `caută kad amule' efectuează o căutare kad pentru `amule'. Tipuri de căutări disponibile: .RS .IP Global 10 Efectuează o căutare globală. .IP Kad 10 Efectuează o căutare în rețeaua Kademlia. .IP Local 10 Efectuează o căutare locală. .RE .SS "Configurează \fI\fP" Configurați o valoare a preferințelor date. Valori disponibile pentru \fI\fP: .RS .IP BwLimits 10 Configurare limite lățime de bandă. .IP IPFilter 10 Configurare preferințe filtru IP. .RE .SS "Arată \fI\fP" Arată coada încărcărilor/descărcărilor, lista serverelor sau lista fișierelor partajate. Valori disponibile pentru \fI\fP: .RS .IP DL 10 Arată coada descărcărilor. .IP Log 10 Arată jurnalul. .IP Servers 10 Arată lista serverelor. .IP UL 10 Arată coada încărcărilor. .RE .SS_untranslated Shutdown Închide nucleul distant care rulează (amule/amuled). Aceasta va închide de asemenea clientul text, deoarece este inutilizabil fără un nucleu care rulează. .SS "Statistici [ \fI\fP ]" Arată arborele statisticilor. Numărul facultativ \fI\fP în domeniul 0\-255 poate fi trecut ca argument la această comandă, care spune cât de multe intrări de subdiviziuni a versiunii clientului vor fi afișate. Trecând 0, sau lăsând gol va însemna `nelimitat'. Exemplu: `statistici 5' va afișa numai primele 5 versiuni pentru fiecare tip de client. .SS_untranslated Status Arată starea conexiunii, vitezele actuale de încărcare/descărcare, etc. .SH NOTE .SS Căi Pentru toate opțiunile care iau o \fI\fP valoare, dacă \fIpath\fP nu conține nici o parte a unui director (ex. doar un nume de fișier simplu), atunci se consideră a fi sub directorul de configurare aMule, \fI~/.aMule\fP. .SS Limbi Parametrul \fI\fP pentru opțiunea \fB\-l\fP are următoarea formă: \fIlang\fP[\fB_\fP\fILANG\fP][\fB.\fP\fIencoding\fP][\fB@\fP\fImodifier\fP] unde \fIlang\fP este limba primară, \fILANG\fP este dialectul/teritoriul, \fIencoding\fP este setul de caractere de utilizat iar \fImodifier\fP permite utilizatorului de a specifica o instanță specifică a datelor localizării în cadrul unei singure categorii. De exemplu, următoarele șiruri sunt valide: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Deși toate șirurile de mai sus sunt acceptate ca definiții de limbă valide, \fIencoding\fP și \fImodifier\fP sunt momentan neutilizate. În completare la formatul de mai sus, puteți specifica și numele întreg al limbii în engleză \- so \fB\-l german\fP este valid și similar cu \fB\-l de_DE\fP. Când nu este definită nici o limbă, în linia de comandă sau în fișierul de configurare, va fi utilizată limba implicită a sistemului de operare. .SH FIȘIERE ~/.aMule/remote.conf .SH EXEMPLU De obicei amulecmd va rula întâi ca: .PP \fBamulecmd\fP \fB\-h\fP \fIhostname\fP \fB\-p\fP \fIECport\fP \fB\-P\fP \fIECpassword\fP \fB\-w\fP .PP sau .PP \fBamulecmd\fP \fB\-\-create\-config\-from\fP=\fI/home/username/.aMule/amule.conf\fP .PP Aceasta va salva configurările la \fI$HOME/.aMule/remote.conf\fP, iar mai târziu trebuie doar să tastați: .B_untranslated amulecmd Desigur, nu trebuie să urmați acest exemplu. .SH "RAPORTAREA ERORILOR" Vă rugăm să raportați erorile fie pe forumul nostru(\fIhttp://forum.amule.org/\fP), sau în bugtracker\-ul nostru (\fIhttp://bugs.amule.org/\fP). Nu raportați erorile pe email, nici la lista noastră de adrese nici direct la nici un membru al echipei. .SH "DREPT DE AUTOR" aMule și toate utilitarele conexe sunt distribuite sub GNU General Public License. .SH "VEDEȚI ȘI" .B_untranslated amule\fR(1), \fBamuled\fR(1) .SH AUTOR Această pagină manual a fost scrisă de Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulecmd.ru.10000644000175000017500000003245712611472361021517 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULECMD 1 "November 2011" "aMuleCmd v2.3.1" "утилиты aMule" .als B_untranslated B .als RB_untranslated RB .als SS_untranslated SS .SH ИМЯ amulecmd \- консольная программа для управления aMule .SH ОБЗОР .B_untranslated amulecmd [\fB\-h\fP \fI<хост>\fP] [\fB\-p\fP \fI<порт>\fP] [\fB\-P\fP \fI<пароль>\fP] [\fB\-f\fP \fI<путь>\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI<язык>\fP] {\fB \fP[\fB\-w\fP]\fB \fP|\fB \fP[\fB\-c\fP \fI<команда>\fP]\fB \fP} .B_untranslated amulecmd [\fB\-\-create\-config\-from\fP=\fI<путь>\fP] .B_untranslated amulecmd .RB_untranslated [ \-\-version ] .B_untranslated amulecmd .RB_untranslated [ \-\-help ] .SH ОПИСАНИЕ \fBamulecmd\fP консольный клиент для управления программой aMule. .TP \fB[ \-h\fP \fI<хост>\fP, \fB\-\-host\fP=\fI<хост>\fP \fB]\fP Адрес компьютера на котором работает aMule (по умолчанию: \fIlocalhost\fP). \fI<Хост>\fP может быть IP\-адресом или DNS\-именем. .TP \fB[ \-p\fP \fI<порт>\fP, \fB\-\-port\fP=\fI<порт>\fP \fB]\fP Порт, который использует aMule для внешних соединений. Указывается в Настройках\->Удаленное управление (по умолчанию: \fI4712\fP) .TP \fB[ \-P\fP \fI<пароль>\fP, \fB\-\-password\fP=\fI<пароль>\fP \fB]\fP Пароль для внешних соединений. .TP \fB[ \-f\fP \fI<путь>\fP, \fB\-\-config\-file\fP=\fI<путь>\fP \fB]\fP Использовать указанный файл конфигурации. По умолчанию используется \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Не печетать ничего в стандартный вывод. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Выводить также отладочную информацию. .TP \fB[ \-l\fP \fI<язык>\fP, \fB\-\-locale\fP=\fI<язык>\fP \fB]\fP Задать локаль (язык). См. секцию \fBЗАМЕЧАНИЯ\fP для дополнительной информации по параметру \fI<язык>\fP. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Записать параметр командной строки в файл конфигурации и выйти .TP \fB[ \-c\fP \fI<команда>\fP, \fB\-\-command\fP=\fI<команда>\fP \fB]\fP Выполнить \fI<команду>\fP как если бы она была введена в консоль amulecmd и выйти. .TP \fB[ \-\-create\-config\-from\fP=\fI<путь>\fP \fB]\fP Создать файл конфигурации на основе файла указанного в \fI<пути>\fP и выйти. Указанный файл должен быть валидным файлом конфигурации aMule. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Выводит информацию о версии. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Выводит короткую помощь по использованию. .SH КОМАНДЫ Все команды чувствительны к регистру. .SS "Add \fI\fP | \fI\fP" Добавляет eD2k\-ссылку или magnet\-ссылку в ядро. Добавляемая eD2k\-ссылка может быть: .RS 3 .IP \(bu 2 файловая ссылка (ed2k://|file|...), она будет добавлена в очередь закачки; .IP \(bu 2 серверная ссылка (ed2k://|server|...), она будет добавлена в список серверов; .IP \(bu 2 ссылка на список серверов, в этом случае все серверы из списка будут добавлены в список серверов. .RE Magnet\-ссылка должна содержать eD2k\-хэш и размер файла. .SS "Cancel \fI<хэш>\fP | \fI<номер>\fP" Отменяет закачку указанную по \fI<хэшу>\fP или \fI<номеру>\fP. Чтобы определить значения, воспользуйтесь командой \fBshow\fP. .SS "Connect [ \fIkad\fP | \fIed2k\fP | \fI\fP ]" Подключиться к сети. Это подсоединит ко всем сетям, включенным в настройках. С помощью дополнительного параметра можно указать сеть к которой будет произведено подключение. При указании адреса сервера в виде IP:Порт (где IP может быть либо цифровым представлением IPv4 либо DNS\-именем) aMule подключится только к этому серверу. .SS_untranslated Disconnect [ \fIed2k\fP | \fIkad\fP ] Отсоединяет от всех сетей, или только от указанной сети. .SS "Download \fI<номер>\fP" Начать закачку файла. Должен быть указан \fI<номер>\fP файла в последнем поиске. Пример: `download 12' поставит на закачку файл, который был под номером 12 в последнем поиске. .SS_untranslated Exit Отключится от amule/amuled и выйти из amulecmd. .SS "Get \fI<параметр>\fP" Вывести параметр настроек. Возможные значения поля \fI<параметр>\fP: .RS .IP BwLimits 10 Вывести ограничения канала. .IP IPFilter 10 Вывести настройки IPFilter. .RE .SS "Help [ \fI<команда>\fP ]" Вывести короткую справку. Если вызвана без параметров, выводит список возможных команд. Если вызвана с параметром \fI<команда>\fP, показывает справку по данной команде. .SS "Pause \fI<хэш>\fP | \fI<номер>\fP" Ставит на паузу закачку указанную по \fI<хэшу>\fP или \fI<номеру>\fP. Чтобы определить значения, воспользуйтесь командой \fBshow\fP. .SS "Priority \fI<приоритет>\fP \fI<хэш>\fP | \fI<номер>\fP" Указывает приоритет закачки указанной по \fI<хэшу>\fP или \fI<номеру>\fP Возможные значения \fI<приоритета>\fP: .RS .IP Auto 10 Автоматический приоритет. .IP High 10 Высокий приоритет. .IP Low 10 Низкий приоритет. .IP Normal 10 Нормальный приоритет. .RE .SS_untranslated Progress Показывает состояние работающего поиска. .SS_untranslated Quit То же что и \fBexit\fP. .SS "Reload \fI<объект>\fP" Обновляет указанный объект. Возможные значения поля \fI<параметр>\fP: .RS .IP Shared 10 Обновляет список публикуемых файлов. .IP IPFilter 10 Обновляет таблицы IP фильтра. .RE .SS_untranslated Reset Обнуляет лог. .SS_untranslated Results Выводит результат последнего поиска. .SS "Resume \fI<хэш>\fP | \fI<номер>\fP" Возобновляет закачку указанную по \fI<хэшу>\fP или \fI<номеру>\fP. Чтобы определить значения, воспользуйтесь командой \fBshow\fP. .SS "Search \fI<тип>\fP \fI<слово>\fP" Производит поиск по указанному \fI<слову>\fP. Указание типа и слова обязательны. Пример: `search kad amule' производит поиск по kad по слову `amule'. Возможные типы поиска: .RS .IP Global 10 Глобальный поиск. .IP Kad 10 Поиск по сети kademlia. .IP Local 10 Локальный поиск. .RE .SS "Set \fI<параметр>\fP" Задает указанный параметр. Возможные значения поля \fI<параметр>\fP: .RS .IP BwLimits 10 Задает ограничения канала. .IP IPFilter 10 Задает параметры IPFilter. .RE .SS "Show \fI<элемент>\fP" Выводит очередь закачки/отдачи, список серверов или опубликованные файлы. Возможные значения поля \fI<параметр>\fP: .RS .IP DL 10 Выводит очередь закачки. .IP Log 10 Выводит лог. .IP Servers 10 Выводит список серверов. .IP UL 10 Выводит список отдачи. .RE .SS_untranslated Shutdown Завершает работу ядра (amule/amuled). Так же завершает работу amulecmd, т.к. он бесполезен без работающего ядра. .SS "Statistics [ \fI<число>\fP ]" Выводит дерево статистики. Параметр \fI<число>\fP может быть в промежутке 0\-255, и будет показывать сколько элементов показывать в под\-дереве `версия клиента'. Указание 0 или пропуск означает `неограниченно'. Пример: `statistics 5' покажет только 5 наиболее популярных версий для каждого типа клиента. .SS_untranslated Status Вывести статус соединения, скорости, итд. .SH ЗАМЕЧАНИЯ .SS Пути Для всех опций, в которых указывается \fI<путь>\fP, если \fIпуть\fP не содержит каталога (т.е. только имя самого файла), то предполагается, что файл находится в каталоге конфигурации, \fI~/.aMule\fP. .SS Языки Параметр \fI<язык>\fP для опции \fB\-l\fP имеет следующую форму: \fIязык\fP[\fB_\fP\fIЯЗЫК\fP][\fB.\fP\fIкодировка\fP][\fB@\fP\fIмодификатор\fP], где \fIязык\fP является основным языком, \fIЯЗЫК\fP \- диалект/территория, \fIкодировка\fP \- используемая кодировка символов и \fIмодификатор\fP позволяет пользователю использовать определенный вариант локализации в данной категории. К примеру, все следующие строчки являются приемлемыми: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Хотя все приведенный строки будут приняты, поля \fIкодировка\fP и \fIмодификатор\fP пока не используются. К дополнению к приведенному формату, можно просто указать английское имя языка. Так, \fB\-l russian\fP тоже приемлемо и равносильно \fB\-l ru_RU\fP. Когда язык не указан ни в качестве опции ни в файле конфигурации, используется системный. .SH ФАЙЛЫ ~/.aMule/remote.conf .SH ПРИМЕРЫ Как правило, в первый раз amulecmd запускается так: .PP \fBamulecmd\fP \fB\-h\fP \fIимя_хоста\fP \fB\-p\fP \fIEC_порт\fP \fB\-P\fP \fIEC_пароль\fP \fB\-w\fP .PP или .PP \fBamulecmd\fP \fB\-\-create\-config\-from\fP=\fI/home/username/.aMule/amule.conf\fP .PP Это сохранит параметры в \fI$HOME/.aMule/remote.conf\fP, и в дальнейшем надо будет только набрать: .B_untranslated amulecmd Конечно, вы не обязаны следовать этим рекомендациям. .SH "СООБЩЕНИЕ ОБ ОШИБКАХ" Пожалуйста, сообщайте об ошибках либо на нашем форуме (\fIhttp://forum.amule.org/\fP), либо в багтрекере (\fIhttp://bugs.amule.org/\fP). Пожалуйста, не сообщайте об ошбках по электронной почте, по нашим спискам рассылки, или напрямую участникам. .SH "АВТОРСКИЕ ПРАВА" aMule и все прилагающиеся инструменты распространаются под Открытым Лицензионным Соглашением GNU (GNU GPL). .SH "СМ. ТАКЖЕ" .B_untranslated amule\fR(1), \fBamuled\fR(1) .SH АВТОРЫ Автор страницы помощи: Vollstrecker , перевод: Radist Morse amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulecmd.tr.10000644000175000017500000002350412611472361021507 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULECMD 1 "Kasım 2011" "aMuleCmd v2.3.1" "aMule yardımcı araçları" .als B_untranslated B .als RB_untranslated RB .als SS_untranslated SS .SH İSİM amulecmd \- aMule'ü yönetmek için konsol temelli bir program .SH KULLANIM .B_untranslated amulecmd [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI<şifre>\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] {\fB \fP[\fB\-w\fP]\fB \fP|\fB \fP[\fB\-c\fP \fI\fP]\fB \fP} .B_untranslated amulecmd [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amulecmd .RB_untranslated [ \-\-version ] .B_untranslated amulecmd .RB_untranslated [ \-\-help ] .SH AÇIKLAMA \fBamulecmd\fP aMule'ü yönetmek için konsol temelli bir programdır. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP aMule'ün çalıştığı sunucu ya da bilgisayar (varsayılan: \fIlocalhost\fP). \fI\fP bir IP adresi ya da DNS ismi olabilir .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP aMule'ün dışarıya bağlandığında kullandığı port, Ayarlar\->Uzak Denetimler seçeneğinde belirlenir (varsayılan: \fI4712\fP) .TP \fB[ \-P\fP \fI<şifre>\fP, \fB\-\-password\fP=\fI<şifre>\fP \fB]\fP Dışarıdan yapılan bağlantılar için şifre. .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP Belirtilen yapılandırma dosyasını kullanır. Varsayılan yapılandırma dosyası şudur: \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Standart çıktıya hiçbir veri yazdırmaz. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Geveze olur \- debug mesajlarını da gösterir. .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Programın kullandığı dili belirler. \fI\fP parametresinin tanımlaması için \fBNOTLAR\fP bölümüne bakınız. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Komut satırı seçeneklerini yapılandırma dosyasına yazıp çıkar .TP \fB[ \-c\fP \fI\fP, \fB\-\-command\fP=\fI\fP \fB]\fP \fI\fPu amulecmd'ın komut istemine girilmiş gibi çalıştırır ve çıkar. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP \fI\fPa dayalı yapılandırma dosyası yaratır ve çıkar. Yolun geçerli bir aMule dosyasına işaret etmesi gerekir. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Geçerli sürüm numarasını görüntüler. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Kısa bir kullanım açıklaması görüntüler. .SH KOMUTLAR Tüm komutlar harf büyüklüğüne duyarsızdır. .SS "Add \fI\fP | \fI\fP" Çekirdeğe bir eD2k ya da magnet bağlantısı ekler. Eklenecek eD2k bağlantısı şunlardan biri olabilir: .RS 3 .IP \(bu 2 bir dosya bağlantısı (ed2k://|file|...) ki indirmeler kuyruğuna eklenir; .IP \(bu 2 bir sunucu bağlantısı (ed2k://|server|...) ki sunucu listesine eklenir; .IP \(bu 2 bir sunucu listesi bağlantısı, bu durumda listedeki tüm sunucular sunucu listesine eklenir. .RE Magnet bağlantısı eD2k hash değerini ve dosya boyutunu içermelidir. .SS "Cancel \fI\fP | \fI\fP" \fI\fP ya da \fI\fP tarafından belirtilen indirmeyi iptal eder. Değerleri öğrenmek için \fBshow\fP komutunu kullanınız. .SS "Connect [ \fIkad\fP | \fIed2k\fP | \fI\fP ]" Ağa bağlanır. Ayarlarda ekinleştirilmiş tüm ağlara bağlanır. Ek bir parametreyle hangi ağa bağlanmak istediğinizi belirtebilirsiniz. IP:port şeklinde (IP ya noktalarla ayrılmış ondalık bir IPv4 adresi ya da çözümlenebilen bir DNS ismi olmalıdır) bir sunucu adresi verirseniz aMule sadece bu sunucuya bağlanacaktır. .SS_untranslated Disconnect [ \fIed2k\fP | \fIkad\fP ] Ya çevrimiçi olan tüm ağlarla bağlantıyı keser, ya da sadece belirtilen ağ ile. .SS "Download \fI\fP" Bir dosyayı indirmeye başlar. Bir dosyanın son aramadan \fI\fP değeri girilmesi gerekir. Örneğin `download 12' son aramadaki 12 numaralı dosyayı indirmeye başlar. .SS_untranslated Exit amule/amuled ile bağlantıyı keser ve amulecmd kapanır. .SS "Get \fI\fP" Bir ayar değerini görüntüler. \fI\fP ile kullanılabilecek değerler: .RS .IP BwLimits 10 Bant genişliği değerlerini görüntüler. .IP IPFilter 10 IPFilter ayarlarını görüntüler. .RE .SS "Help [ \fI\fP ]" Kısa bir kullanım açıklaması görüntüler. Bir parametre ile kullanılırsa mevcut komutların listesini verir. \fI\fP ile kullanılırsa belirtilen komutun kısa bir açıklamasını görüntüler. .SS "Pause \fI\fP | \fI\fP" \fI\fP ya da \fI\fP değerleri ile belirtilen indirmeyi duraklatır. Bu değerleri elde etmek için \fBshow\fP komutunu kullanabilirsiniz. .SS "Priority \fI<öncelik>\fP \fI\fP | \fI\fP" \fI\fP ya da \fI\fP ile belirtilen bir indirmenin önceliğini ayarlar. \fI<öncelik>\fP için kullanılabilecek değerler: .RS .IP Auto 10 Otomatik öncelik. .IP High 10 Yüksek öncelik. .IP Low 10 Düşük öncelik. .IP Normal 10 Normal öncelik. .RE .SS_untranslated Progress Sürmekte olan bir aramanın ilerlemesini gösterir. .SS_untranslated Quit \fBexit\fP komutu ile eş anlamlıdır. .SS "Reload \fI\fP" Belirtilen değeri yeniden yükler. \fI\fP ile kullanılabilecek değerler: .RS .IP Shared 10 Paylaşılan dosyalar listesini yeniden yükler. .IP IPFilter 10 IP filtre tablolarını yeniden yükler. .RE .SS_untranslated Reset Günlüğü sıfırlar. .SS_untranslated Results Son aramanın sonuçlarını gösterir. .SS "Resume \fI\fP | \fI\fP" \fI\fP ya da \fI\fP ile belirtilen indirmeye kaldığı yerden devam eder. Değeri öğrenmek için \fBshow\fP komutunu kullanabilirsiniz. .SS "Search \fI\fP \fI\fP" Girilen \fI\fP için bir arama yapar. Bir arama türü ve bir anahtar kelime kullanmanız mecburidir. Örneğin `search kad amule' kad ağında `amule' sözcüğü ile arama yapar. Kullanılabilecek arama türleri: .RS .IP Global 10 Genel arama yapar. .IP Kad 10 Kad ağında arama yapar. .IP Local 10 Sunucuda arama yapar. .RE .SS "Set \fI\fP" Belirtilen değeri ayarlara girer. \fI\fP ile kullanılabilecek değerler: .RS .IP BwLimits 10 Bant genişliği değerlerini ayarlar. .IP IPFilter 10 IPFilter tercihlerini ayarlar. .RE .SS "Show \fI\fP" İndirme/aktarma kuyruğunu, sunucu listesini ya da paylaşılan dosya listesini gösterir. \fI\fP ile kullanılabilecek değerler: .RS .IP DL 10 İndirme kuyruğunu gösterir. .IP Log 10 Günlüğü (log) gösterir. .IP Servers 10 Sunucu listesini gösterir. .IP UL 10 Aktarma (gönderilen dosyalar) kuyruğunu gösterir. .RE .SS_untranslated Shutdown Uzakta çalışmakta olan çekirdeği (amule/amuled) kapatır. Bu metin temelli istemciyi de kapatacaktır çünkü çekirdek olmadan işleyemez. .SS "İstatistikler [ \fI\fP ] " İstatistikler ağacını gösterir. 0\-255 arası \fI\fP isteğe bağlı argüman olarak komuta aktarılabilir, bu kaç tane istemci sürümü alt ağacının gösterileceğini belirtir. 0 kullanımı ya da hiçbir argüman kullanılmaması `sınırsız' anlamına gelir. Örneğin `statistics 5' her istemcinin en çok kullanılan 5 sürümünü gösterir. .SS_untranslated Status Bağlantı durumunu, sürmekte olan indirmeleri ve aktarmaları vs. gösterir. .SH NOTLAR .SS Yollar \fI\fP değeri alan tüm seçenekler için eğer \fIyol\fP hiçbir dizin içermiyorsa (yani sadece bir dosya ismiyse) aMule yapılandırma dizini (\fI~/.aMule\fP) varsayılır. .SS Diller \fB\-l\fP seçeneği için \fI\fP parametresi şu biçimde kullanılmalıdır: \fIdil\fP[\fB_\fP\fIDİL\fP][\fB.\fP\fIkodlama\fP][\fB@\fP\fIniteleyici\fP] ki burada \fIdil\fP birinci dil, \fIDİL\fP lehçe/bölge, \fIkodlama\fP karakter setidir ve \fIniteleyici\fP kullanıcıya belli bir kategori içinde belli yerelleştirme verileri kullanma olanağı sağlar. Örnek olarak, aşağıdaki dizeler geçerlidir: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Yukarıdaki tüm dizeler geçerlidir ancak \fIkodlama\fP ve \fIniteleyici\fP henüz kullanılmamaktadır. Yukarıdakilere ek olarak dil isimlerini İngilizce olarak belirtebilirsiniz \- yani \fB\-l german\fP ile \fB\-l de_DE\fP eşdeğerdir ve ikisi de geçerlidir. Ne komut satırında ne de yapılandırma dosyasında hiçbir dil belirtilmediği zaman sistemin varsayılan dili kullanılacaktır. .SH DOSYALAR ~/.aMule/remote.conf .SH ÖRNEK Tipik olarak amulecmd ilk defada şu şekilde başlayacaktır: .PP \fBamulecmd\fP \fB\-h\fP \fIbilgisayaradı\fP \fB\-p\fP \fIDBport\fP \fB\-P\fP \fIDBşifre\fP \fB\-w\fP .PP ya da .PP \fBamulecmd\fP \fB\-\-create\-config\-from\fP=\fI/home/kullanıcıadı/.aMule/amule.conf\fP .PP Ayarları \fI$HOME/.aMule/remote.conf\fP dosyasına kayıt eder ve daha sonra sadece şunu girmeniz yeterli olacaktır: .B_untranslated amulecmd Tabii ki bu örneğe harfiyen uymanız zorunlu değildir. .SH GERİBİLDİRİM Hataları bildirmek için forumumuzu (\fIhttp://forum.amule.org/\fP) ya da hata takipçimizi (\fIhttp://bugs.amule.org/\fP) kullanınız. Hataları bildirmek için e\-mail ve e\-mail listemizi kullanmamanızı ve geliştiricilerden birine doğrudan bildirmemenizi rica ederiz. .SH "TELİF HAKKI" aMule ve ilgili tüm yardımcı araçları GNU Genel Kamu Lisansı çerçevesinde dağıtılmaktadır. .SH "İLGİLİ BELGELER" .B_untranslated amule\fR(1), \fBamuled\fR(1) .SH YAZAN Bu kılavuz sayfası Vollstrecker tarafından yazılmıştır. amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulecmd.zh_TW.10000644000175000017500000002147012611472361022115 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULECMD 1 "2011 十一月" "aMuleCmd v2.3.1" "aMule 的工具程式" .als B_untranslated B .als RB_untranslated RB .als SS_untranslated SS .SH 名稱 amulecmd \- 終端機模式下控制 aMule 的程式 .SH 簡介 .B_untranslated amulecmd [\fB\-h\fP \fI<主機>\fP] [\fB\-p\fP \fI<通訊埠>\fP] [\fB\-P\fP \fI<密碼>\fP] [\fB\-f\fP \fI<路徑>\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI<語言>\fP] {\fB \fP[\fB\-w\fP]\fB \fP|\fB \fP[\fB\-c\fP \fI<指令>\fP]\fB \fP} .B_untranslated amulecmd [\fB\-\-create\-config\-from\fP=\fI<路徑>\fP] .B_untranslated amulecmd .RB_untranslated [ \-\-version ] .B_untranslated amulecmd .RB_untranslated [ \-\-help ] .SH 說明 \fBamulecmd\fP 是終端機模式下控制 aMule 的的客戶端程式。 .TP \fB[ \-h\fP \fI<主機>\fP, \fB\-\-host\fP=\fI<主機>\fP \fB]\fP 正在執行 aMule 核心的主機 (預設:\fI本機\fP), \fI<主機>\fP 可以是 IP 位址或網域名稱 .TP \fB[ \-p\fP \fI<通訊埠>\fP, \fB\-\-port\fP=\fI<通訊埠>\fP \fB]\fP aMule 外部連線用的通訊埠,在 偏好設定 > 遠端控制 設定 (預設:\fI4712\fP) .TP \fB[ \-P\fP \fI<密碼>\fP, \fB\-\-password\fP=\fI<密碼>\fP \fB]\fP 外部連線密碼。 .TP \fB[ \-f\fP \fI<路徑>\fP, \fB\-\-config\-file\fP=\fI<路徑>\fP \fB]\fP 使用指定的設定檔,預設是 \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR 不將任何資訊顯示在標準輸出。 .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR 詳細模式 \- 也顯示除錯訊息。 .TP \fB[ \-l\fP \fI<語言>\fP, \fB\-\-locale\fP=\fI<語言>\fP \fB]\fP 設定程式的語系 (語言)。請看 \fB附註\fP 章節裏關於 \fI<語言>\fP 參數的說明。 .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR 將命令列選項寫入設定檔後離開 .TP \fB[ \-c\fP \fI<指令>\fP, \fB\-\-command\fP=\fI<指令>\fP \fB]\fP 像在 amulecmd 的命令列模式下一樣,執行 \fI<指令>\fP 後離開。 .TP \fB[ \-\-create\-config\-from\fP=\fI<路徑>\fP \fB]\fP 參考 \fI\fP 裏的資料來建立設定檔後離開。(\fI\fP 裏必須有有效的 aMule 設定檔) .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR 顯示目前的版本號碼。 .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR 顯示簡短的使用說明。 .SH 指令 所有指令都不分大小寫。 .SS "Add \fI\fP | \fI\fP" 將 eD2k 連結或 magnet 加到核心。 可以使用以下幾種 eD2k 連結: .RS 3 .IP \(bu 2 檔案連結 (ed2k://|file|...),會將檔案加入下載等候區; .IP \(bu 2 伺服器連結 (ed2k://|server|...),會將伺服器加入 aMule 的伺服器清單; .IP \(bu 2 伺服器清單,所有在這個清單內的伺服器都會被加到 aMule 的伺服器清單。 .RE magnet 連結裏必須包含 eD2k 的 hash 值和檔案大小。 .SS "Cancel \fI\fP | \fI<編號>\fP" 取消下載指定的檔案,指定方式:\fI\fP 或 \fI<編號>\fP;要查詢數值請用 \fBshow\fP。 .SS "connect [ \fIkad\fP | \fIed2k\fP | \fI\fP ]" 連線到網路。 這樣將會連線到在偏好設定中啟用的所有網路。 用這個選項參數,你可以指定要連線到哪個網路:用「IP:port」格式指定伺服器的位址 (IP 可以用有小數點的十進位 IPv4 網址,或是可從 DNS 轉換的網域名稱),aMule 就會只連線到那個伺服器。 .SS_untranslated Disconnect [ \fIed2k\fP | \fIkad\fP ] 中斷所有已連線的網路,或只中斷指定的網路連線。 .SS "download \fI<編號>\fP" 開始下載檔案。 \fI<編號>\fP 指上次搜尋檔案時的結果。例如:「download 12」會下載上次搜尋時編號 12 的檔案。 .SS_untranslated Exit 始 amule/amuled 斷線,並離開 amulecmd。 .SS "get \fI<目標>\fP" 取得並顯示某個偏好設定的值。 \fI<目標>\fP 參數可用的值: .RS .IP BwLimits 10 取得頻寬限制。 .IP IPFilter 10 取得 IP 過濾器的偏好設定。 .RE .SS "help [ \fI<命令>\fP ]" 顯示使用說明。如果沒有加參數,會顯示可用的指令一覽;如果加了 \fI<指令>\fP 參數,會顯示該指令的簡單說明。 .SS "pause \fI\fP | \fI<編號>\fP" 暫停下載指定的檔案,指定方式:\fI\fP 或 \fI<編號>\fP;要查詢數值請用 \fBshow\fP。 .SS "priority \fI<優先程度>\fP \fI\fP | \fI<編號>\fP" 用 \fI\fP 或 \fI<編號>\fP 設定下載檔案的優先程度。 可用在 \fI<優先度>\fP 的參數: .RS .IP Auto 10 自動優先權。 .IP High 10 高優先權。 .IP Low 10 低優先權。 .IP Normal 10 一般優先權。 .RE .SS_untranslated Progress 顯示正在進行中的搜尋進度。 .SS_untranslated Quit 功能和 \fBexit\fP 一樣的指令。 .SS "reload \fI<目標>\fP" 重新載入指定的物件。 \fI<目標>\fP 參數可用的值: .RS .IP Shared 10 重新載入分享檔案清單。 .IP IPFilter 10 重新載入 IP 過濾器資料。 .RE .SS_untranslated Reset 清除記錄。 .SS_untranslated Results 顯示上次搜尋的結果。 .SS "resume \fI\fP | \fI<編號>\fP" 繼續下載指定的檔案,指定方式:\fI\fP 或 \fI<編號>\fP;要查詢數值請用 \fBshow\fP。 .SS "search \fI<種類>\fP \fI<關鍵字>\fP" 用指定的 \fI<關鍵字>\fP 搜尋。必須要有搜尋的「種類」加上「關鍵字」,例如:「search kad amule」會開始在 KAD 網路搜尋「amule」。 可用的搜尋類型: .RS .IP Global 10 開始在全球伺服器搜尋。 .IP Kad 10 開始在 Kad 搜尋。 .IP Local 10 開始在本地伺服器搜尋。 .RE .SS "set \fI<目標>\fP" 設定指定的偏好設定值。 \fI<目標>\fP 參數可用的值: .RS .IP BwLimits 10 設定頻寬限制。 .IP IPFilter 10 設定 IP過濾器的偏好設定。 .RE .SS "show \fI<目標>\fP" 顯示 上傳/下載 等候區、伺服器清單 或 分享檔案清單。 \fI<目標>\fP 參數可用的值: .RS .IP DL 10 顯示下載等候區。 .IP Log 10 顯示記錄。 .IP Servers 10 顯示伺服器清單。 .IP UL 10 顯示上傳等候區。 .RE .SS_untranslated Shutdown 關閉在遠端執行的核心 (amule/amuled)。這樣也會關閉文字模式客戶端程式,因為不能在沒有核心下執行。 .SS "statistics [ \fI<號字>\fP ]" 顯示統計資訊。 \fI<編號>\fP 是這個指令的參數之一,用來指定要顯示多少個客戶端程式的版本附加版本;須為 0\-255 的數字,輸入 0 或略過不輸入則表示「不限」。 範例:「statistics 5」只會顯示每個客戶端種類的前 5 個版本。 .SS_untranslated Status 顯示 連線狀態、目前的上傳/下載速度 等等。 .SH 附註 .SS 路徑 對於有 \fI<路徑>\fP 的選項,如果 \fI路徑\fP 裏面沒有含目錄 (即只有單純檔名),則會被認為是在 aMule 的設定檔所在目錄 \fI~/.aMule\fP 下。 .SS 語言 \fB\-l\fP 選項的 \fI<語系>\fP 參數有以下幾種樣式:\fIlang\fP[\fB_\fP\fILANG\fP][\fB.\fP\fIencoding\fP][\fB@\fP\fImodifier\fP]。其中:\fIlang\fP 是主要的語系代碼,\fILANG\fP 是語系次分類、使用地區代碼,\fIencoding\fP 是使用的編碼,\fImodifier\fP 則讓使用者用一個代號就指定一組語系設定。例如:「zh_TW.UTF\-8@Taiwan」 例如,以下的字串都有效: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE 雖然上面這些都是合於規定的語系設定參數,但 \fIencoding\fP 和 \fImodifier\fP 目前已經沒在使用了。 你也可以使用完整的英文名稱來設定語系,例如:\fB\-l german\fP 也等於 \fB\-l de_DE\fP。 沒有在命令列或設定檔中設定語系時,會使用系統預設語言。 .SH 檔案 ~/.aMule/remote.conf .SH 範例 通常 amulecmd 會優先以這樣執行: .PP \fBamulecmd\fP \fB\-h\fP \fI主機名稱\fP \fB\-p\fP \fI外部連線通訊埠\fP \fB\-P\fP \fI外部連線密碼\fP \fB\-w\fP .PP 或 .PP \fBamulecmd\fP \fB\-\-create\-config\-from\fP=\fI/home/username/.aMule/amule.conf\fP .PP 這樣就會將設定儲存到 \fI$HOME/.aMule/remote.conf\fP,然後你只需要再輸入: .B_untranslated amulecmd 當然,你可以不必都遵照這個範例。 .SH 回報問題 請到我們的論壇 (\fIhttp://forum.amule.org/\fP) 或錯誤追蹤網站 (\fIhttp://bugs.amule.org/\fP) 回報發現的問題。請不要用 e\-mail 或在我們的群組信件中回報,也不要直接通知某個團隊成員。 .SH 版權 aMule 與附加的工具程式都遵守 GNU 的 GPL 協定。 .SH 參考 .B_untranslated amule\fR(1), \fBamuled\fR(1) .SH 作者 說明文件撰寫者: Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuled.10000644000175000017500000000535112611472361020543 0ustar morphmorph.TH AMULED 1 "November 2011" "aMule Daemon v2.3.1" "aMule Daemon" .als B_untranslated B .als RB_untranslated RB .SH NAME amuled \- the all\-platform eMule p2p client \- daemonized version .SH SYNOPSIS .B_untranslated amuled .RB [ \-c " " \fI ] .RB_untranslated [ \-f ] .RB [ \-p " " \fI ] .RB_untranslated [ \-e ] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] .RB [ \-w " " \fI ] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] .RB [ \-t " " \fI ] .RI [ eD2k-link ] .B_untranslated amuled .RB_untranslated [ \-v ] .B_untranslated amuled .RB_untranslated [ \-h ] .SH DESCRIPTION .TP \fB[ \-c\fR \fI\fR, \fB\-\-config\-dir\fR=\fI\fR \fB]\fR Read config from \fI\fR instead of home .TP .B_untranslated [ \-f\fR, \fB\-\-full\-daemon ]\fR Forks to background. .TP \fB[ \-p\fR \fI\fR, \fB\-\-pid\-file\fR=\fI\fR \fB]\fR After fork, create a pid-file in the \fI\fR. \fI\fR has to contain the filename. .TP .B_untranslated [ \-e\fR, \fB\-\-ec\-config ]\fR Configure EC (External Connections). .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Prints log messages to stdout. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Resets config to default values. .TP \fB[ \-w\fR \fI\fR, \fB\-\-use\-amuleweb\fR=\fI\fR \fB]\fR Specify location of amuleweb binary to \fI\fR. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Does not handle fatal exception. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Does not disable stdin. .TP \fB[ \-t\fR, \fB\-\-category\fR=\fI\fR \fB]\fR Set category for passed eD2k links to \fI\fR .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Displays the current version number. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Prints a short usage description. .TP \fB[ eD2k-link ]\fR Adds an eD2k-link to the core. .PP The eD2k link to be added can be: .RS 3 .IP \(bu 2 a file link (ed2k://|file|...), it will be added to the download queue; .IP \(bu 2 a server link (ed2k://|server|...), it will be added to the server list; .IP \(bu 2 a serverlist link, in which case all servers in the list will be added to the server list; .IP \(bu 2 a magnet link. .RE .SH FILES ~/.aMule/* .SH REPORTING BUGS Please report bugs either on our forum (\fIhttp://forum.amule.org/\fR), or in our bugtracker (\fIhttp://bugs.amule.org/\fR). Please do not report bugs in e-mail, neither to our mailing list nor directly to any team member. .SH COPYRIGHT aMule and all of its related utilities are distributed under the GNU General Public License. .SH SEE ALSO .B_untranslated alcc\fR(1), \fBamule\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1) .SH AUTHOR This manpage was written by Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuled.de.10000644000175000017500000000642112611472361021131 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULED 1 "November 2011" "aMule Daemon v2.3.1" "aMule Dämon" .als B_untranslated B .als RB_untranslated RB .SH NAME amuled \- Der alle\-Plattformen eMule p2p Client \- dämonisierte Version .SH SYNTAX .B_untranslated amuled [\fB\-c\fP \fI\fP] .RB_untranslated [ \-f ] [\fB\-p\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIeD2k\-link\fP] .B_untranslated amuled .RB_untranslated [ \-v ] .B_untranslated amuled .RB_untranslated [ \-h ] .SH BESCHREIBUNG .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Liest die Konfiguration anstelle des Home. .TP .B_untranslated [ \-f\fR, \fB\-\-full\-daemon ]\fR Im Hintergrund ausführen .TP \fB[ \-p\fP \fI\fP, \fB\-\-pid\-file\fP=\fI\fP \fB]\fP Erstelle eine Pid\-Datei in \fI\fP. \fI\fP muss einen Dateinamen enthalten. .TP .B_untranslated [ \-e\fR, \fB\-\-ec\-config ]\fR Konfiguration für EC (Externe Verbindungen). .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Schreibt Log\-Meldungen auf die Standardausgabe. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Setzt die Konfiguration auf die Standardwerte zurück. .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP Setzt den Ort der ausführbaren Datei von amuleweb auf \fI\fP. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Fehlerbehandlung für fatale Fehler abschalten. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Schaltet die Standardeingabe nicht ab. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Setzt die Kategorie für den übergebenen eD2k Verweis \fI\fP .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Zeigt die derzeitige Versionsnummer an. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Gibt eine kurze Nutzungsbeschreibung aus. .TP \fB[ eD2k\-link ]\fP Fügt einen eD2k\-Verweis zur Downloadliste hinzu. .PP Der eD2k\-Verweis darf enthalten: .RS 3 .IP \(bu 2 ein Link zu einer Datei (ed2k://|file|...), dieser wird Downloadliste hinzugefügt; .IP \(bu 2 ein Link zu einem Server (ed2k://|server|...), dieser wird der Serverliste hinzugefügt; .IP \(bu 2 ein Serverlisten\-Verweis, in diesem Fall werden alle Server dieser Liste der Serverliste hinzugefügt; .IP \(bu 2 ein Magnet Verweis. .RE .SH DATEIEN ~/.aMule/* .SH "FEHLER MELDEN" Bitte meldet Fehler entweder in unserem Forum (\fIhttp://forum.amule.org/\fP), oder in unseren Bugtracker (\fIhttp://bugs.amule.org/\fP). Bitte meldet uns weder Fehler per E\-Mail, noch auf unsere Mailingliste oder direkt an unsere Teammitglieder. .SH COPYRIGHT aMule und alle seine zugehörigen Anwendungen werden verteilt unter der GNU General Public License .SH "SIEHE AUCH" .B_untranslated alcc\fR(1), \fBamule\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1) .SH VERFASSER Diese manpage wurde geschrieben von Vollstrecker Diese manpage wurde übersetzt von Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuled.es.10000644000175000017500000000625412611472361021154 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULED 1 "November 2011" "aMule Daemon v2.3.1" "Demonio aMule" .als B_untranslated B .als RB_untranslated RB .SH NOMBRE amuled \- the all\-platform eMule p2p client \- daemonized version .SH SINOPSIS .B_untranslated amuled [\fB\-c\fP \fI\fP] .RB_untranslated [ \-f ] [\fB\-p\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIeD2k\-link\fP] .B_untranslated amuled .RB_untranslated [ \-v ] .B_untranslated amuled .RB_untranslated [ \-h ] .SH DESCRIPCIÓN .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Leer configuración desde \fI\fP en lugar de home .TP .B_untranslated [ \-f\fR, \fB\-\-full\-daemon ]\fR Enviar a segundo plano. .TP \fB[ \-p\fP \fI\fP, \fB\-\-pid\-file\fP=\fI\fP \fB]\fP After fork, create a pid\-file in the \fI\fP. \fI\fP has to contain the filename. .TP .B_untranslated [ \-e\fR, \fB\-\-ec\-config ]\fR Configure EC (External Connections). .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Imprime mensajes de registro en la salida estándar .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Reiniciar configuracion a valores por defecto .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP Especifica ubicacion del binario amuleweb en \fI\fP. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR No maneja excepción grave .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR No deshabilitar entrada estándar .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Fijar categoría para enlace eD2k pasado a \fI\fP .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Mostrar el número de la versión actual. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Imprime una breve descripción de uso. .TP \fB[ eD2k\-link ]\fP Añadir un enlace eD2k al núcleo. .PP El enlace eD2k para ser añadido puede ser: .RS 3 .IP \(bu 2 un enlace de archivo (ed2k://|archivo|...), será añádido a la cola de descarga. .IP \(bu 2 un enlace de servidor (ed2k://|servidor|...), será añádido a la cola de servidores. .IP \(bu 2 un enlace de lista de servidores, en cuyo caso todos los servidores de la lista serán añadidos a la lista de servidores. .IP \(bu 2 un enlace magnet. .RE .SH ARCHIVOS ~/.aMule/* .SH "INFORMANDO ERRORES" Por favor informa de fallos ya sea en nuestro foro (\fIhttp://forum.amule.org/\fP), o en nuestro bugtracker (\fIhttp://bugs.amule.org/\fP). Por favor no informe de fallos por correo, ni en nuestras listas, ni directamente al correo de algun miembro del equipo. .SH COPYRIGHT aMule y todas las demás utilidades relacionadas son distribuidas bajo la GNU General Public License. .SH "VEASE TAMBIEN" .B_untranslated alcc\fR(1), \fBamule\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1) .SH AUTOR Esta página de manualfue escrita por Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuled.fr.10000644000175000017500000000636412611472361021156 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULED 1 "Novembre 2011" "aMule Daemon v2.3.1" "aMule Daemon" .als B_untranslated B .als RB_untranslated RB .SH NOM amuled \- le client P2P eMule multiplateforme \- version daemonisée .SH SYNOPSIS .B_untranslated amuled [\fB\-c\fP \fI\fP] .RB_untranslated [ \-f ] [\fB\-p\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIlien eD2k\fP] .B_untranslated amuled .RB_untranslated [ \-v ] .B_untranslated amuled .RB_untranslated [ \-h ] .SH DESCRIPTION .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Utiliser le fichier de config \fI\fP à la place de celui par défaut .TP .B_untranslated [ \-f\fR, \fB\-\-full\-daemon ]\fR Embranchements en arrière plan. .TP \fB[ \-p\fP \fI\fP, \fB\-\-pid\-file\fP=\fI\fP \fB]\fP Après l'embranchement, créer un fichier pid dans le \fI\fP. \fI\fP doit contenir le fichier. .TP .B_untranslated [ \-e\fR, \fB\-\-ec\-config ]\fR Configurer les EC (Connexions Externes). .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Afficher les messages du journal sur stdout. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Réinitialiser la configuration par défaut. .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP Préciser l'emplacement du binaire d'amuleweb \fI\fP. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Ne pas prendre en charge une exception fatale. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Ne pas désactiver stdin. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Définir la catégorie pour les liens eD2k passé à \fI\fP .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Affiche le numéro de la version actuelle. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Afficher une court description d'utilisation. .TP \fB[ lien eD2k ]\fP Ajoute un lien eD2k au noyau. .PP Le lien eD2k à ajouter peut être : .RS 3 .IP \(bu 2 un lien fichier (ed2k://|fichier|…), il sera ajouté à la file de téléchargement; .IP \(bu 2 un lien serveur (ed2k://|serveur|…), il sera ajouté à la liste des serveurs; .IP \(bu 2 un lien de liste de serveurs, dans ce cas tous les serveurs dans la liste seront ajoutés à la liste des serveurs; .IP \(bu 2 un lien magnétique. .RE .SH FICHIERS ~/.aMule/* .SH "RAPPORTER DES BOGUES" Veuillez rapporter les bogues sur notre forum (\fIhttp://forum.amule.org/\fP), ou sur notre bugtracker (\fIhttp://bugs.amule.org/\fP). Veuillez ne pas rapporter les bogues par e\-mail, sur notre liste de diffusion ou directement à n'importe quel membre de l'équipe. .SH COPYRIGHT aMule et tout ses outils sont distribués sous la licence GNU General Public License. .SH "VOIR AUSSI" .B_untranslated alcc\fR(1), \fBamule\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1) .SH AUTEUR Cette manpage a été écrite par Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuled.hu.10000644000175000017500000000645012611472361021157 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULED 1 "2011. november" "aMule Daemon v2.3.1" "aMule Daemon" .als B_untranslated B .als RB_untranslated RB .SH NÉV amule \- a "minden\-platform" eMule p2p kliens \- démon változat .SH ÁTTEKINTÉS .B_untranslated amuled [\fB\-c\fP \fI<útvonal>\fP] .RB_untranslated [ \-f ] [\fB\-p\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIeD2k\-hivatkozás\fP] .B_untranslated amuled .RB_untranslated [ \-v ] .B_untranslated amuled .RB_untranslated [ \-h ] .SH LEÍRÁS .TP \fB[ \-c\fP \fI<útvonal>\fP, \fB\-\-config\-dir\fP=\fI<útvonal>\fP \fB]\fP A beállításokat az \fI<útvonal>\fP\-ból olvassa az alapértelmezett helyett. .TP .B_untranslated [ \-f\fR, \fB\-\-full\-daemon ]\fR Háttérbe vonul. .TP \fB[ \-p\fP \fI\fP, \fB\-\-pid\-file\fP=\fI\fP \fB]\fP A háttérbe vonulás után hozzon létre egy pid\-fájlt. .TP .B_untranslated [ \-e\fR, \fB\-\-ec\-config ]\fR A távoli elérés beállítása. .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR A napló bejegyzéseket a szabvány kimenetre írja. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Beállítások visszaállítása az alapértelmezett értékekre. .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP Az amuleweb programnak \fI\fP\-t fogja használni. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Nem kezeli a végzetes kivételeket. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Nem zárja le a szabvány bemenetet. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP A megadott eD2k hivatkozást a \fI\fP\-adik kategóriába tölti. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Megjeleníti a verziószámot. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Egy rövid használati leírást jelenít meg. .TP \fB[ eD2k\-hivatkozás ]\fP eD2k hivatkozás letöltése. .PP Az eD2k hivatkozás a következő lehet: .RS 3 .IP \(bu 2 egy fájl hivatkozás (ed2k://|file|...), ez a letöltési sorhoz lesz hozzáadva; .IP \(bu 2 egy kiszolgáló hivatkozás (ed2k://|server|...), ez a kiszolgáló\-listához lesz hozzáadva; .IP \(bu 2 egy kiszolgáló\-lista hivatkozás, mely esetben a listában szereplő összes kiszolgáló a kiszolgáló\-listához adódik; .IP \(bu 2 egy magnet hivatkozás. .RE .SH FÁJLOK ~/.aMule/* .SH "HIBÁK JELENTÉSE" A hibákat kérjük vagy a fórumon (\fIhttp://forum.amule.org/\fP), vagy a hibakövetőben (\fIhttp://bugs.amule.org/\fP) jelentsék. Hibákról kérjük ne írjanak levelet (e\-mail\-t) se a levelezési listára, se közvetlenül valamelyik fejlesztőnek. .SH COPYRIGHT Az aMule és az összes hozzá tartozó segédprogram a GNU General Public License védelme alatt áll. .SH "LÁSD MÉG" .B_untranslated alcc\fR(1), \fBamule\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1) .SH SZERZŐ Ezt a kézikönyv lapot Vollstrecker írta. .SH MAGYAR FORDÍTÁS Dévai Tamás amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuled.it.10000644000175000017500000000663712611472361021166 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULED 1 "Novembre 2011" "aMule Daemon v2.3.1" "aMule Daemon" .als B_untranslated B .als RB_untranslated RB .SH NOME amuled \- il client p2p multipiattaforma basato su eMule \- versione demone .SH SINTASSI .B_untranslated amuled [\fB\-c\fP \fI\fP] .RB_untranslated [ \-f ] [\fB\-p\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIcollegamento\-eD2k\fP] .B_untranslated amuled .RB_untranslated [ \-v ] .B_untranslated amuled .RB_untranslated [ \-h ] .SH DESCRIZIONE .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Legge la configurazione dal \fI\fP invece che dalla directory dell'utente. .TP .B_untranslated [ \-f\fR, \fB\-\-full\-daemon ]\fR Continua l'esecuzione in background. .TP \fB[ \-p\fP \fI\fP, \fB\-\-pid\-file\fP=\fI\fP \fB]\fP Dopo il passaggio in background, crea un file di pid in \fI\fP. \fI\fP deve includere il nome del file. .TP .B_untranslated [ \-e\fR, \fB\-\-ec\-config ]\fR Configura le connessioni esterne (EC). .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Scrive i messaggi di log nello stdout. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Reimposta la configurazione ai valori di default. .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP Specifica la posizione dell'eseguibile di amuleweb in \fI\fP. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Non gestisce le eccezioni fatali. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Non disabilita lo stdin. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Imposta la categoria per i collegamenti eD2k ricevuti a \fI\fP .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Visualizza il numero di versione corrente. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Visualizza una breve descrizione dell'utilizzo. .TP \fB[ collegamento\-eD2k ]\fP Aggiunge un collegamento eD2k. .PP Il collegamento eD2k da aggiungere può essere: .RS 3 .IP \(bu 2 un collegamento a un file (ed2k://|file|...), sarà aggiunto alla coda di download; .IP \(bu 2 un collegamento a un server (ed2k://|server|...), sarà aggiunto alla lista dei server; .IP \(bu 2 un collegamento a una lista di server, nel cui caso tutti i server inclusi nella lista verranno aggiunti alla lista dei server; .IP \(bu 2 un collegamento magnet. .RE .SH FILE ~/.aMule/* .SH "SEGNALARE I BUG" Per favore segnalare i bug nel nostro forum (\fIhttp://forum.amule.org/\fP) o nel nostro bugtracker (\fIhttp://bugs.amule.org/\fP). Per favore non segnalare i bug via posta elettronica, né nella nostra mailing list né direttamente a qualunque membro del gruppo. .SH COPYRIGHT aMule e tutti i programmi di utilità correlati sono distribuiti in accordo alla GNU General Public License. .SH "VEDI ANCHE" .B_untranslated alcc\fR(1), \fBamule\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1) .SH AUTORE Questa pagina del manuale è stata scritta da Vollstrecker .SH TRADUZIONE ITALIANA Stefano Corti amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuled.ro.10000644000175000017500000000624412611472361021164 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULED 1 "Noiembrie 2011" "aMule Daemon v2.3.1" "aMule Daemon" .als B_untranslated B .als RB_untranslated RB .SH NUME amuled \- clientul eMule p2p pentru toate platformele \- versiunea demonizată .SH REZUMAT .B_untranslated amuled [\fB\-c\fP \fI\fP] .RB_untranslated [ \-f ] [\fB\-p\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIeD2k\-link\fP] .B_untranslated amuled .RB_untranslated [ \-v ] .B_untranslated amuled .RB_untranslated [ \-h ] .SH DESCRIERE .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Citește configurarea din \fI\fP în schimb de acasă .TP .B_untranslated [ \-f\fR, \fB\-\-full\-daemon ]\fR Bifurcă spre fundal. .TP \fB[ \-p\fP \fI\fP, \fB\-\-pid\-file\fP=\fI\fP \fB]\fP După bifurcare, crează un fișier\-pid în \fI\fP. \fI\fP trebuie să conțină numele fișierului. .TP .B_untranslated [ \-e\fR, \fB\-\-ec\-config ]\fR Configurează EC (conexiuni externe) .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Tipărește jurnalul de mesaje la stdout. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Resetare configurări la valorile implicite. .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP Specificați locația fișierului binar amuleweb la \fI\fP. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Nu manipula excepția fatală. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Nu dezactiva stdin. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Configurați categoria pentru link\-urile eD2k trecute la \fI\fP .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Afișează numărul versiunii curente. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Tipărește o scurtă descriere de utilizare. .TP \fB[ eD2k\-link ]\fP Adaugă o legătură eD2k la nucleu. .PP Link\-ul eD2k de adăugat poate fi: .RS 3 .IP \(bu 2 un link fișier (ed2k://|file|...), va fi adăugat la coada descărcărilor, .IP \(bu 2 o legătură server (ed2k://|server|...), care va fi adăugată la lista serverelor, .IP \(bu 2 o legătură listă server, în care caz toate serverele din listă vor fi adăugate la lista serverelor; .IP \(bu 2 o legătură magnet. .RE .SH FIȘIERE ~/.aMule/* .SH "RAPORTAREA ERORILOR" Vă rugăm să raportați erorile fie pe forumul nostru(\fIhttp://forum.amule.org/\fP), sau în bugtracker\-ul nostru (\fIhttp://bugs.amule.org/\fP). Nu raportați erorile pe email, nici la lista noastră de adrese nici direct la nici un membru al echipei. .SH "DREPT DE AUTOR" aMule și toate utilitarele conexe sunt distribuite sub GNU General Public License. .SH "VEDEȚI ȘI" .B_untranslated alcc\fR(1), \fBamule\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1) .SH AUTOR Această pagină manual a fost scrisă de Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuled.ru.10000644000175000017500000001034112611472361021163 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULED 1 "November 2011" "aMule Daemon v2.3.1" "Демон aMule" .als B_untranslated B .als RB_untranslated RB .SH ИМЯ amuled \- мультиплатформенный p2p клиент eMule \- демонизированная версия .SH ОБЗОР .B_untranslated amuled [\fB\-c\fP \fI<путь>\fP] .RB_untranslated [ \-f ] [\fB\-p\fP \fI<путь>\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI<путь>\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI<номер>\fP] [\fIeD2k\-ссылка\fP] .B_untranslated amuled .RB_untranslated [ \-v ] .B_untranslated amuled .RB_untranslated [ \-h ] .SH ОПИСАНИЕ .TP \fB[ \-c\fP \fI<путь>\fP, \fB\-\-config\-dir\fP=\fI<путь>\fP \fB]\fP Прочитать конфигурацию из места, указанного в \fI<пути>\fP, вместо домашнего каталога .TP .B_untranslated [ \-f\fR, \fB\-\-full\-daemon ]\fR Уйти в фоновый режим .TP \fB[ \-p\fP \fI<путь>\fP, \fB\-\-pid\-file\fP=\fI<путь>\fP \fB]\fP После запуска создать pid\-файл по указанному \fI<пути>\fP. \fI<Путь>\fP должен указывать на файл. .TP .B_untranslated [ \-e\fR, \fB\-\-ec\-config ]\fR Сконфигурировать EC (внешние соединения). .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Печатает сообщения лога в стандартный вывод. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Сбрасывает конфигурацию в изначальную. .TP \fB[ \-w\fP \fI<путь>\fP, \fB\-\-use\-amuleweb\fP=\fI<путь>\fP \fB]\fP Указать \fI<путь>\fP к исполняемому файлу amuleweb. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Не обрабатывать фатальные исключительные ситуации. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR Не отключать стандартный ввод. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI<номер>\fP \fB]\fP Указать \fI<номер>\fP категории для eD2k ссылок. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Выводит информацию о версии. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Выводит короткую помощь по использованию. .TP \fB[ eD2k\-ссылка ]\fP Передает eD2k\-ссылку в ядро. .PP Добавляемая eD2k\-ссылка может быть: .RS 3 .IP \(bu 2 файловая ссылка (ed2k://|file|...), она будет добавлена в очередь закачки; .IP \(bu 2 серверная ссылка (ed2k://|server|...), она будет добавлена в список серверов; .IP \(bu 2 ссылка на список серверов, тогда все сервера из списка будут добавлены в список серверов; .IP \(bu 2 magnet\-ссылка. .RE .SH ФАЙЛЫ ~/.aMule/* .SH "СООБЩЕНИЕ ОБ ОШИБКАХ" Пожалуйста, сообщайте об ошибках либо на нашем форуме (\fIhttp://forum.amule.org/\fP), либо в багтрекере (\fIhttp://bugs.amule.org/\fP). Пожалуйста, не сообщайте об ошбках по электронной почте, по нашим спискам рассылки, или напрямую участникам. .SH "АВТОРСКИЕ ПРАВА" aMule и все прилагающиеся инструменты распространаются под Открытым Лицензионным Соглашением GNU (GNU GPL). .SH "СМ. ТАКЖЕ" .B_untranslated alcc\fR(1), \fBamule\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1) .SH АВТОРЫ Автор страницы помощи: Vollstrecker , перевод: Radist Morse amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuled.tr.10000644000175000017500000000645612611472361021176 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULED 1 "Kasım 2011" "aMule Daemon v2.3.1" "aMule Daemon" .als B_untranslated B .als RB_untranslated RB .SH İSİM amuled \- her platformda çalışan eMule p2p istemcisi \- daemon sürümü .SH KULLANIM .B_untranslated amuled [\fB\-c\fP \fI\fP] .RB_untranslated [ \-f ] [\fB\-p\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI\fP] [\fIeD2k\-bağlantısı\fP] .B_untranslated amuled .RB_untranslated [ \-v ] .B_untranslated amuled .RB_untranslated [ \-h ] .SH AÇIKLAMA .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Yapılandırmayı home yerine \fI\fPdan oku .TP .B_untranslated [ \-f\fR, \fB\-\-full\-daemon ]\fR Kendisini arkaplana çatallar. .TP \fB[ \-p\fP \fI\fP, \fB\-\-pid\-file\fP=\fI\fP \fB]\fP Çatallamadan sonra \fI\fP konumunda bir pid\-file dosyası yaratır. \fI\fPun dosya ismini içermesi gerekir. .TP .B_untranslated [ \-e\fR, \fB\-\-ec\-config ]\fR DB (Dış Bağlantılar) Kurulumu .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Log mesajlarını standart çıktıya gönderir. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Yapılandırmayı varsayılan değerlere sıfırlar. .TP \fB[ \-w\fP \fI\fP, \fB\-\-use\-amuleweb\fP=\fI\fP \fB]\fP amuleweb çalıştırılabilir dosyasının konumunu \fI\fP olarak belirler. .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR Kritik istisnaları ele almaz. .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR standart girdiyi devre dışı bırakmaz. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP \fI\fPya gönderilen eD2k bağlantılarının kategorilerini belirler. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Geçerli sürüm numarasını görüntüler. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Kısa bir kullanım açıklaması görüntüler. .TP \fB[ eD2k\-bağlantısı ]\fP Çekirdeğe bir eD2k bağlantısı ekler. .PP Eklenecek eD2k bağlantısı şunlardan biri olabilir: .RS 3 .IP \(bu 2 bir dosya bağlantısı (ed2k://|file|...) ki indirmeler kuyruğuna eklenir; .IP \(bu 2 bir sunucu bağlantısı (ed2k://|server|...) ki sunucu listesine eklenir; .IP \(bu 2 bir sunucu listesi bağlantısı, bu durumda listedeki tüm sunucular sunucu listesine eklenir; .IP \(bu 2 bir magnet bağlantısı. .RE .SH DOSYALAR ~/.aMule/* .SH GERİBİLDİRİM Hataları bildirmek için forumumuzu (\fIhttp://forum.amule.org/\fP) ya da hata takipçimizi (\fIhttp://bugs.amule.org/\fP) kullanınız. Hataları bildirmek için e\-mail ve e\-mail listemizi kullanmamanızı ve geliştiricilerden birine doğrudan bildirmemenizi rica ederiz. .SH "TELİF HAKKI" aMule ve ilgili tüm yardımcı araçları GNU Genel Kamu Lisansı çerçevesinde dağıtılmaktadır. .SH "İLGİLİ BELGELER" .B_untranslated alcc\fR(1), \fBamule\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1) .SH YAZAN Bu kılavuz sayfası Vollstrecker tarafından yazılmıştır. amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuled.zh_TW.10000644000175000017500000000577112611472361021603 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULED 1 "2011 十一月" "aMule Daemon v2.3.1" "aMule Daemon" .als B_untranslated B .als RB_untranslated RB .SH 名稱 amuled \- 跨平台的 eMule P2P 客戶端程式 背景常駐程式版 .SH 簡介 .B_untranslated amuled [\fB\-c\fP \fI<路徑>\fP] .RB_untranslated [ \-f ] [\fB\-p\fP \fI<路徑>\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] [\fB\-w\fP \fI<路徑>\fP] .RB_untranslated [ \-d ] .RB_untranslated [ \-i ] [\fB\-t\fP \fI<號碼>\fP] [\fIeD2k 連結\fP] .B_untranslated amuled .RB_untranslated [ \-v ] .B_untranslated amuled .RB_untranslated [ \-h ] .SH 說明 .TP \fB[ \-c\fP \fI<路徑>\fP, \fB\-\-config\-dir\fP=\fI<路徑>\fP \fB]\fP 從 \fI\fP 讀取設定檔,而不是個人目錄 .TP .B_untranslated [ \-f\fR, \fB\-\-full\-daemon ]\fR 在背景開啟新程式。 .TP \fB[ \-p\fP \fI<路徑>\fP, \fB\-\-pid\-file\fP=\fI<路徑>\fP \fB]\fP 開啟新程式後,在 \fI<路徑>\fP 下建立 pid 檔案。\fI<路徑>\fP 裏必須有檔案名稱。 .TP .B_untranslated [ \-e\fR, \fB\-\-ec\-config ]\fR 設定 EC (外部連線)。 .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR 將程式記錄顯示在標準輸出。 .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR 將設定重設為預設值。 .TP \fB[ \-w\fP \fI<路徑>\fP, \fB\-\-use\-amuleweb\fP=\fI<路徑>\fP \fB]\fP 設定 amuleweb 的執行檔位置在 \fI<路徑>\fP。 .TP .B_untranslated [ \-d\fR, \fB\-\-disable\-fatal ]\fR 不處理嚴重錯誤。 .TP .B_untranslated [ \-i\fR, \fB\-\-enable\-stdin ]\fR 不停用標準輸入。 .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI<號碼>\fP \fB]\fP 給輸入成功的 eD2k 連結分類編號為 \fI<號碼>\fP .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR 顯示目前的版本號碼。 .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR 顯示簡短的使用說明。 .TP \fB[ eD2k 連結 ]\fP 將 eD2k 連結加到核心。 .PP 可以使用以下幾種 eD2k 連結: .RS 3 .IP \(bu 2 檔案連結 (ed2k://|file|...),會將檔案加入下載等候區; .IP \(bu 2 伺服器連結 (ed2k://|server|...),會將伺服器加入 aMule 的伺服器清單; .IP \(bu 2 伺服器清單連結,在清單內的伺服器會被加入 aMule 的伺服器清單; .IP \(bu 2 magnet 連結。 .RE .SH 檔案 ~/.aMule/* .SH 回報問題 請到我們的論壇 (\fIhttp://forum.amule.org/\fP) 或錯誤追蹤網站 (\fIhttp://bugs.amule.org/\fP) 回報發現的問題。請不要用 e\-mail 或在我們的群組信件中回報,也不要直接通知某個團隊成員。 .SH 版權 aMule 與附加的工具程式都遵守 GNU 的 GPL 協定。 .SH 參考 .B_untranslated alcc\fR(1), \fBamule\fR(1), \fBamulecmd\fR(1), \fBamulegui\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1) .SH 作者 說明文件撰寫者: Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulegui.10000644000175000017500000000431712611472361021105 0ustar morphmorph.TH AMULEGUI 1 "November 2011" "aMuleGUI v2.3.1" "aMuleGUI" .als B_untranslated B .als RB_untranslated RB .als unstranslated " " amulegui \- aMule control program with GUI .SH SYNOPSIS .B_untranslated amulegui .RB [ \-c " " \fI ] .RB [ \-geometry " " \fI ] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] .RB_untranslated [ \-s ] .RB [ \-t " " \fI ] .B_untranslated amulegui .RB_untranslated [ \-v ] .B_untranslated amulegui .RB_untranslated [ \-h ] .SH "DESCRIPTION" .B amulegui is a client program, and can be connected to amule or amuled via EC. You can manage your amule program with it. It provides almost the same functionalities as amule, even if the core works on another computer. .TP \fB[ \-c\fR \fI\fR, \fB\-\-config\-dir\fR=\fI\fR \fB]\fR Read config from \fI\fR instead of home .TP \fB[ \-geometry \fI\fR \fB]\fR Sets the geometry of the app. \fI\fR uses the same format as standard X11 apps: [\fB=\fR][\fI\fR{\fBxX\fR}\fI\fR][{\fB+-\fR}\fI\fR{\fB+-\fR}\fI\fR] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Prints log messages to stdout. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Resets config to default values. .TP .B_untranslated [ \-s\fR, \fB\-\-skip ]\fR Skip connection dialog. .TP \fB[ \-t\fR, \fB\-\-category\fR=\fI\fR \fB]\fR Set category for passed eD2k links to \fI\fR .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Prints a short usage description. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Displays the current version number. .SH REPORTING BUGS Please report bugs either on our forum (\fIhttp://forum.amule.org/\fR), or in our bugtracker (\fIhttp://bugs.amule.org/\fR). Please do not report bugs in e-mail, neither to our mailing list nor directly to any team member. .SH COPYRIGHT aMule and all of its related utilities are distributed under the GNU General Public License. .SH SEE ALSO .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH AUTHOR This manpage was written by Julien Delange for Debian This manpage was rewritten by Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulegui.de.10000644000175000017500000000527412611472361021477 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEGUI 1 "November 2011" "aMuleGUI v2.3.1" aMuleGUI .als B_untranslated B .als RB_untranslated RB .als unstranslated " " amulegui \- aMule Steuerungsprogramm mit GUI .SH SYNTAX .B_untranslated amulegui [\fB\-c\fP \fI\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] .RB_untranslated [ \-s ] [\fB\-t\fP \fI\fP] .B_untranslated amulegui .RB_untranslated [ \-v ] .B_untranslated amulegui .RB_untranslated [ \-h ] .SH BESCHREIBUNG \fBamulegui\fP ist ein Clientprogramm, das mit aMule oder amuled über EC verbunden werden kann. Du kannst aMule mit diesem Programm steuernt. Es besitzt annähernd die selbe Funktionalität wie aMule, auch wenn der Kern auf einem anderen Computer läuft. .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Liest die Konfiguration anstelle des Home. .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Gibt die Größe des Programmfensters an. \fI\fP hat das selbe Format wie Standard X11 Anwendungen: [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Schreibt Log\-Meldungen auf die Standardausgabe. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Setzt die Konfiguration auf die Standardwerte zurück. .TP .B_untranslated [ \-s\fR, \fB\-\-skip ]\fR Überspringe den Verbindungsdialog. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Setzt die Kategorie für den übergebenen eD2k Verweis \fI\fP .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Gibt eine kurze Nutzungsbeschreibung aus. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Zeigt die derzeitige Versionsnummer an. .SH "FEHLER MELDEN" Bitte meldet Fehler entweder in unserem Forum (\fIhttp://forum.amule.org/\fP), oder in unseren Bugtracker (\fIhttp://bugs.amule.org/\fP). Bitte meldet uns weder Fehler per E\-Mail, noch auf unsere Mailingliste oder direkt an unsere Teammitglieder. .SH COPYRIGHT aMule und alle seine zugehörigen Anwendungen werden verteilt unter der GNU General Public License .SH "SIEHE AUCH" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH VERFASSER Diese manpage wurde geschrieben von Julien Delange for Debian Diese manpage wurde überarbeitet von Vollstrecker Diese manpage wurde übersetzt von Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulegui.es.10000644000175000017500000000512712611472361021513 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEGUI 1 "November 2011" "aMuleGUI v2.3.1" aMuleGUI .als B_untranslated B .als RB_untranslated RB .als unstranslated " " amulegui \- Programa para controlar aMule con Interfaz Gráfica .SH SINOPSIS .B_untranslated amulegui [\fB\-c\fP \fI\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] .RB_untranslated [ \-s ] [\fB\-t\fP \fI\fP] .B_untranslated amulegui .RB_untranslated [ \-v ] .B_untranslated amulegui .RB_untranslated [ \-h ] .SH DESCRIPCIÓN \fBamulegui\fP is a client program, and can be connected to amule or amuled via EC. You can manage your amule program with it. It provides almost the same functionalities as amule, even if the core works on another computer. .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Leer configuración desde \fI\fP en lugar de home .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Fija la geometría de la aplicación. \fI\fP usa el mismo formato estándar de las aplicaciones X11: [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Imprime mensajes de registro en la salida estándar .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Reiniciar configuracion a valores por defecto .TP .B_untranslated [ \-s\fR, \fB\-\-skip ]\fR Saltar diálogo de conexión .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Fijar categoría para enlace eD2k pasado a \fI\fP .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Imprime una breve descripción de uso. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Mostrar el número de la versión actual. .SH "INFORMANDO ERRORES" Por favor informa de fallos ya sea en nuestro foro (\fIhttp://forum.amule.org/\fP), o en nuestro bugtracker (\fIhttp://bugs.amule.org/\fP). Por favor no informe de fallos por correo, ni en nuestras listas, ni directamente al correo de algun miembro del equipo. .SH COPYRIGHT aMule y todas las demás utilidades relacionadas son distribuidas bajo la GNU General Public License. .SH "VEASE TAMBIEN" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH AUTOR This manpage was written by Julien Delange for Debian This manpage was rewritten by Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulegui.fr.10000644000175000017500000000531312611472361021510 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEGUI 1 "Novembre 2011" "aMuleGUI v2.3.1" aMuleGUI .als B_untranslated B .als RB_untranslated RB .als unstranslated " " amulegui \- programme de contrôle d'aMule avec Interface Graphique .SH SYNOPSIS .B_untranslated amulegui [\fB\-c\fP \fI\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] .RB_untranslated [ \-s ] [\fB\-t\fP \fI\fP] .B_untranslated amulegui .RB_untranslated [ \-v ] .B_untranslated amulegui .RB_untranslated [ \-h ] .SH DESCRIPTION \fBamulegui\fP est un programme client, et peut être connecté à amule ou amuled via EC. Vous pouvez gérer votre programme amule avec lui. Il fournit presque les mêmes fonctionnalités que amule, même si le noyau fonctionne sur un autre ordinateur. .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Utiliser le fichier de config \fI\fP à la place de celui par défaut .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Fixer la géometrie de l'application. \fI\fP utilise le meme format que les applications X11 standards : [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Afficher les messages du journal sur stdout. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Réinitialiser la configuration par défaut. .TP .B_untranslated [ \-s\fR, \fB\-\-skip ]\fR Sauter la boîte de dialogue de connexion. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Définir la catégorie pour les liens eD2k passé à \fI\fP .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Afficher une court description d'utilisation. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Affiche le numéro de la version actuelle. .SH "RAPPORTER DES BOGUES" Veuillez rapporter les bogues sur notre forum (\fIhttp://forum.amule.org/\fP), ou sur notre bugtracker (\fIhttp://bugs.amule.org/\fP). Veuillez ne pas rapporter les bogues par e\-mail, sur notre liste de diffusion ou directement à n'importe quel membre de l'équipe. .SH COPYRIGHT aMule et tout ses outils sont distribués sous la licence GNU General Public License. .SH "VOIR AUSSI" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH AUTEUR Cette page de manuel a été rédigé par Julien Delange pour Debian Cette page de manuel a été réécrit par Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulegui.hu.10000644000175000017500000000540012611472361021512 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEGUI 1 "2011. november" "aMuleGUI v2.3.1" aMuleGUI .als B_untranslated B .als RB_untranslated RB .als unstranslated " " amulegui \- aMule vezérlő program grafikus felülettel .SH ÁTTEKINTÉS .B_untranslated amulegui [\fB\-c\fP \fI<útvonal>\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] .RB_untranslated [ \-s ] [\fB\-t\fP \fI\fP] .B_untranslated amulegui .RB_untranslated [ \-v ] .B_untranslated amulegui .RB_untranslated [ \-h ] .SH LEÍRÁS Az \fBamulegui\fP egy ügyfél program, távoli elérés segítségével kapcsolódik az amule(d)\-hez. Majdnem a teljes funkcionalitást biztosítja, még ha a mag egy távoli gépen fut is. .TP \fB[ \-c\fP \fI<útvonal>\fP, \fB\-\-config\-dir\fP=\fI<útvonal>\fP \fB]\fP A beállításokat az \fI<útvonal>\fP\-ból olvassa az alapértelmezett helyett. .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Beállítja az alkalmazás geometriáját. A \fI\fP paraméter ugyanazt a formátumot használja, mint a többi X11 alkalmazás: [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR A napló bejegyzéseket a szabvány kimenetre írja. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Beállítások visszaállítása az alapértelmezett értékekre. .TP .B_untranslated [ \-s\fR, \fB\-\-skip ]\fR A kapcsolódási párbeszéd átugrása. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP A megadott eD2k hivatkozást a \fI\fP\-adik kategóriába tölti. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Egy rövid használati leírást jelenít meg. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Megjeleníti a verziószámot. .SH "HIBÁK JELENTÉSE" A hibákat kérjük vagy a fórumon (\fIhttp://forum.amule.org/\fP), vagy a hibakövetőben (\fIhttp://bugs.amule.org/\fP) jelentsék. Hibákról kérjük ne írjanak levelet (e\-mail\-t) se a levelezési listára, se közvetlenül valamelyik fejlesztőnek. .SH COPYRIGHT Az aMule és az összes hozzá tartozó segédprogram a GNU General Public License védelme alatt áll. .SH "LÁSD MÉG" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH SZERZŐ Ezt a kézikönyv oldalt Julien Delange írta a Debian számára. Ezt a kézikönyv oldalt Vollstrecker újraírta. .SH MAGYAR FORDÍTÁS Dévai Tamás amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulegui.it.10000644000175000017500000000542712611472361021523 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEGUI 1 "Novembre 2011" "aMuleGUI v2.3.1" aMuleGUI .als B_untranslated B .als RB_untranslated RB .als unstranslated " " amulegui \- programma in interfaccia grafica per controllare aMule .SH SINTASSI .B_untranslated amulegui [\fB\-c\fP \fI\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] .RB_untranslated [ \-s ] [\fB\-t\fP \fI\fP] .B_untranslated amulegui .RB_untranslated [ \-v ] .B_untranslated amulegui .RB_untranslated [ \-h ] .SH DESCRIZIONE \fBamulegui\fP è un programma client, e può connettersi tramite EC ad amule o amuled. Con esso si può gestire amule. Fornisce circa le stesse funzionalità di amule, anche se il motore lavora su un'altro computer. .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Legge la configurazione dal \fI\fP invece che dalla directory dell'utente. .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Imposta la geometria della applicazione. \fI\fP usa lo stesso formato delle applicazioni X11 standard: [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Scrive i messaggi di log nello stdout. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Reimposta la configurazione ai valori di default. .TP .B_untranslated [ \-s\fR, \fB\-\-skip ]\fR Salta la finestra di connessione. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Imposta la categoria per i collegamenti eD2k ricevuti a \fI\fP .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Visualizza una breve descrizione dell'utilizzo. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Visualizza il numero di versione corrente. .SH "SEGNALARE I BUG" Per favore segnalare i bug nel nostro forum (\fIhttp://forum.amule.org/\fP) o nel nostro bugtracker (\fIhttp://bugs.amule.org/\fP). Per favore non segnalare i bug via posta elettronica, né nella nostra mailing list né direttamente a qualunque membro del gruppo. .SH COPYRIGHT aMule e tutti i programmi di utilità correlati sono distribuiti in accordo alla GNU General Public License. .SH "VEDI ANCHE" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH AUTORE Questa pagina di manuale è stata scritta da Julien Delange per Debian Questa pagina di manuale è stata riscritta da Vollstrecker .SH TRADUZIONE ITALIANA Stefano Corti amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulegui.ro.10000644000175000017500000000515212611472361021522 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEGUI 1 "Noiembrie 2011" "aMuleGUI v2.3.1" aMuleGUI .als B_untranslated B .als RB_untranslated RB .als unstranslated " " amulegui \- Controlul programului aMule prin GUI .SH REZUMAT .B_untranslated amulegui [\fB\-c\fP \fI\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] .RB_untranslated [ \-s ] [\fB\-t\fP \fI\fP] .B_untranslated amulegui .RB_untranslated [ \-v ] .B_untranslated amulegui .RB_untranslated [ \-h ] .SH DESCRIERE \fBamulegui\fP este un program client și poate fi conectat la amule sau amuled prin EC. Puteți administra programul amule cu el. Asigură aproape aceleași funcțiuni ca amule, chiar dacă nucleul funcționează pe un alt computer. .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Citește configurarea din \fI\fP în schimb de acasă .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Configurează geometria aplicației. \fI\fP utilizează același format ca standard X11 apps: [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Tipărește jurnalul de mesaje la stdout. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Resetare configurări la valorile implicite. .TP .B_untranslated [ \-s\fR, \fB\-\-skip ]\fR Omite dialogul de conectare. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Configurați categoria pentru link\-urile eD2k trecute la \fI\fP .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Tipărește o scurtă descriere de utilizare. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Afișează numărul versiunii curente. .SH "RAPORTAREA ERORILOR" Vă rugăm să raportați erorile fie pe forumul nostru(\fIhttp://forum.amule.org/\fP), sau în bugtracker\-ul nostru (\fIhttp://bugs.amule.org/\fP). Nu raportați erorile pe email, nici la lista noastră de adrese nici direct la nici un membru al echipei. .SH "DREPT DE AUTOR" aMule și toate utilitarele conexe sunt distribuite sub GNU General Public License. .SH "VEDEȚI ȘI" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH AUTOR Această pagină manual a fost scrisă de către Julien Delange pentru Debian Această pagină manual a fost revizuită de Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulegui.ru.10000644000175000017500000000670112611472361021531 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEGUI 1 "November 2011" "aMuleGUI v2.3.1" aMuleGUI .als B_untranslated B .als RB_untranslated RB .als unstranslated " " amulegui \- программа управления aMule с GUI .SH ОБЗОР .B_untranslated amulegui [\fB\-c\fP \fI<путь>\fP] [\fB\-geometry\fP \fI<геометрия>\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] .RB_untranslated [ \-s ] [\fB\-t\fP \fI<номер>\fP] .B_untranslated amulegui .RB_untranslated [ \-v ] .B_untranslated amulegui .RB_untranslated [ \-h ] .SH ОПИСАНИЕ Программа \fBamulegui\fP позволяет управлять ядром (amule/amuled) по протоколу EC. Программа предоставляет функциональность почти идентичную amule, несмотря на то что ядро может работать на другом компьютере. .TP \fB[ \-c\fP \fI<путь>\fP, \fB\-\-config\-dir\fP=\fI<путь>\fP \fB]\fP Прочитать конфигурацию из места, указанного в \fI<пути>\fP, вместо домашнего каталога .TP \fB[ \-geometry \fP\fI<геометрия>\fP \fB]\fP Указать геометрию окна. \fI<Геометрия>\fP использует стандартный формат X11: [\fB=\fP][\fI<ширина>\fP{\fBxX\fP}\fI<высота>\fP][{\fB+\-\fP}\fI<смещениеX>\fP{\fB+\-\fP}\fI<смещениеY>\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Печатает сообщения лога в стандартный вывод. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Сбрасывает конфигурацию в изначальную. .TP .B_untranslated [ \-s\fR, \fB\-\-skip ]\fR Пропустить диалог соединения. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI<номер>\fP \fB]\fP Указать \fI<номер>\fP категории для eD2k ссылок. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Выводит короткую помощь по использованию. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Выводит информацию о версии. .SH "СООБЩЕНИЕ ОБ ОШИБКАХ" Пожалуйста, сообщайте об ошибках либо на нашем форуме (\fIhttp://forum.amule.org/\fP), либо в багтрекере (\fIhttp://bugs.amule.org/\fP). Пожалуйста, не сообщайте об ошбках по электронной почте, по нашим спискам рассылки, или напрямую участникам. .SH "АВТОРСКИЕ ПРАВА" aMule и все прилагающиеся инструменты распространаются под Открытым Лицензионным Соглашением GNU (GNU GPL). .SH "СМ. ТАКЖЕ" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH АВТОРЫ Автор страницы помощи (для Debian): Julien Delange Переработка страницы помощи: Vollstrecker , перевод: Radist Morse amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulegui.tr.10000644000175000017500000000531312611472361021526 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEGUI 1 "Kasım 2011" "aMuleGUI v2.3.1" aMuleGUI .als B_untranslated B .als RB_untranslated RB .als unstranslated " " amulegui \- Grafik arayüzlü aMule yönetme programı .SH KULLANIM .B_untranslated amulegui [\fB\-c\fP \fI\fP] [\fB\-geometry\fP \fI\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] .RB_untranslated [ \-s ] [\fB\-t\fP \fI\fP] .B_untranslated amulegui .RB_untranslated [ \-v ] .B_untranslated amulegui .RB_untranslated [ \-h ] .SH AÇIKLAMA \fBamulegui\fP istemci bir programdır ve amule ya da amuled'e DB yoluyla bağlanabilir. aMule'ü bu şekilde yönetebilirsiniz. Çekirdeğin başka bir bilgisayarda çalışmasına rağmen amule'ün neredeyse tüm işlevlerine erişim sağlar. .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Yapılandırmayı home yerine \fI\fPdan oku .TP \fB[ \-geometry \fP\fI\fP \fB]\fP Uygulamanın geometrisini düzenler. \fI\fP standart X11 uygulamaları ile aynı biçimi kullanır: [\fB=\fP][\fI\fP{\fBxX\fP}\fI\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR Log mesajlarını standart çıktıya gönderir. .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR Yapılandırmayı varsayılan değerlere sıfırlar. .TP .B_untranslated [ \-s\fR, \fB\-\-skip ]\fR Bağlantı diyaloğunu geç. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP \fI\fPya gönderilen eD2k bağlantılarının kategorilerini belirler. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Kısa bir kullanım açıklaması görüntüler. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Geçerli sürüm numarasını görüntüler. .SH GERİBİLDİRİM Hataları bildirmek için forumumuzu (\fIhttp://forum.amule.org/\fP) ya da hata takipçimizi (\fIhttp://bugs.amule.org/\fP) kullanınız. Hataları bildirmek için e\-mail ve e\-mail listemizi kullanmamanızı ve geliştiricilerden birine doğrudan bildirmemenizi rica ederiz. .SH "TELİF HAKKI" aMule ve ilgili tüm yardımcı araçları GNU Genel Kamu Lisansı çerçevesinde dağıtılmaktadır. .SH "İLGİLİ BELGELER" .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH YAZAN Bu man sayfası Debian için Julien Delange tarafından yazılmıştır. Bu kılavuz sayfası Vollstrecker tarafından yeniden yazılmıştır amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amulegui.zh_TW.10000644000175000017500000000473712611472361022145 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEGUI 1 "2011 十一月" "aMuleGUI v2.3.1" aMuleGUI .als B_untranslated B .als RB_untranslated RB .als unstranslated " " amulegui \- 圖形介面的 aMule 控制程式 .SH 簡介 .B_untranslated amulegui [\fB\-c\fP \fI<路徑>\fP] [\fB\-geometry\fP \fI<視窗狀態>\fP] .RB_untranslated [ \-o ] .RB_untranslated [ \-r ] .RB_untranslated [ \-s ] [\fB\-t\fP \fI<號碼>\fP] .B_untranslated amulegui .RB_untranslated [ \-v ] .B_untranslated amulegui .RB_untranslated [ \-h ] .SH 說明 \fBamulegui\fP 是個客戶端程式,可以經由外部連線和 amule 或 amuled 連線,可以用它來管理 amule 程式。甚至就算核心程式是在別台電腦上執行時,它也能提供和 amule 幾乎一樣的功能。 .TP \fB[ \-c\fP \fI<路徑>\fP, \fB\-\-config\-dir\fP=\fI<路徑>\fP \fB]\fP 從 \fI\fP 讀取設定檔,而不是個人目錄 .TP \fB[ \-geometry \fP\fI<視窗狀態>\fP \fB]\fP 設定這個應用程式的視窗狀態。\fI<視窗狀態>\fP 使用和 X11 應用程式一樣的格式: [\fB=\fP][\fI<寬度>\fP{\fBxX\fP}\fI<高度>\fP][{\fB+\-\fP}\fI\fP{\fB+\-\fP}\fI\fP] .TP .B_untranslated [ \-o\fR, \fB\-\-log\-stdout ]\fR 將程式記錄顯示在標準輸出。 .TP .B_untranslated [ \-r\fR, \fB\-\-reset\-config ]\fR 將設定重設為預設值。 .TP .B_untranslated [ \-s\fR, \fB\-\-skip ]\fR 跳過連線對話。 .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI<號碼>\fP \fB]\fP 給輸入成功的 eD2k 連結分類編號為 \fI<號碼>\fP .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR 顯示簡短的使用說明。 .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR 顯示目前的版本號碼。 .SH 回報問題 請到我們的論壇 (\fIhttp://forum.amule.org/\fP) 或錯誤追蹤網站 (\fIhttp://bugs.amule.org/\fP) 回報發現的問題。請不要用 e\-mail 或在我們的群組信件中回報,也不要直接通知某個團隊成員。 .SH 版權 aMule 與附加的工具程式都遵守 GNU 的 GPL 協定。 .SH 參考 .B_untranslated alc\fR(1), \fBalcc\fR(1), \fBamuled\fR(1), \fBamulecmd\fR(1), \fBamuleweb\fR(1), \fBcas\fR(1), \fBed2k\fR(1), \fBwxcas\fR(1), \fBxas\fR(1) .SH 作者 說明文件撰寫者: Julien Delange for Debian 說明文件撰寫者: Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuleweb.10000644000175000017500000001650312611472361021076 0ustar morphmorph.TH AMULEWEB 1 "November 2011" "aMule webserver v2.3.1" "aMule utilities" .als B_untranslated B .als RB_untranslated RB .SH NAME amuleweb \- aMule web server .SH SYNOPSIS .B_untranslated amuleweb .RB [ \-h " " \fI ] .RB [ \-p " " \fI ] .RB [ \-P " " \fI ] .RB [ \-f " " \fI ] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] .RB [ \-l " " \fI ] .RB_untranslated [ \-w ] .RB [ \-t " " \fI ] .RB [ \-s " " \fI ] .RB_untranslated [ \-u ] .RB [ \-U " " \fI ] .RB_untranslated [ \-z ] .RB_untranslated [ \-Z ] .RB [ \-A " " \fI ] .RB [ \-G " " \fI ] .RB_untranslated [ \-a " " | " " \-d ] .RB_untranslated [ \-L ] .RB_untranslated [ \-\-no\-php ] .RB_untranslated [ \-N ] .B_untranslated amuleweb .RB [ \-\-create-config-from = \fI ] .B_untranslated amuleweb .RB_untranslated [ \-\-help ] .B_untranslated amuleweb .RB_untranslated [ \-\-version ] .B_untranslated amuleweb .RB [ \-\-amule\-config\-file = \fI ] .SH DESCRIPTION \fBamuleweb\fR manages your access to amule through a web browser. You can start amuleweb together with \fBamule\fR(1), or separately, any time later. Options can be specified via command-line or via config-file. Command-line options take precedence over config-file options. .TP \fB[ \-h\fR \fI\fR, \fB\-\-host\fR=\fI\fR \fB]\fR Host where aMule is running (default: \fIlocalhost\fR). \fI\fR might be an IP address or a DNS name .TP \fB[ \-p\fR \fI\fR, \fB\-\-port\fR=\fI\fR \fB]\fR aMule's port for External Connections, as set in Preferences->Remote Controls (default: \fI4712\fR) .TP \fB[ \-P\fR \fI\fR, \fB\-\-password\fR=\fI\fR \fB]\fR External Connections password. .TP \fB[ \-f\fR \fI\fR, \fB\-\-config\-file\fR=\fI\fR \fB]\fR Use the given configuration file. Default configuration file is \fI~/.aMule/remote.conf\fR .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Do not print any output to stdout. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Be verbose \- show also debug messages. .TP \fB[ \-l\fR \fI\fR, \fB\-\-locale\fR=\fI\fR \fB]\fR Sets program locale (language). See the \fBNOTES\fR section for the description of the \fI\fR parameter. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Write command line options to config file and exit .TP \fB[ \-t\fR \fI\fR, \fB\-\-template\fR=\fI\fR \fB]\fR Loads the template named \fI\fR. See the \fBSKIN SUPPORT\fR section for details. .TP \fB[ \-s\fR \fI\fR, \fB\-\-server\-port\fR=\fI\fR \fB]\fR Webserver's HTTP port. This is the port you must point your browser to (default: \fI4711\fR). .TP .B_untranslated [ \-u ]\fR .br Enable UPnP. .TP \fB[ \-U\fR \fI\fR, \fB\-\-upnp\-port\fR \fI\fR \fB]\fR UPnP port. .TP .B_untranslated [ \-z\fR, \fB\-\-enable\-gzip ]\fR Enables using gzip compression in HTTP traffic to save bandwidth. .TP .B_untranslated [ \-Z\fR, \fB\-\-disable\-gzip ]\fR Disables using gzip compression (this is the default). .TP \fB[ \-A\fR \fI\fR, \fB\-\-admin\-pass\fR=\fI\fR \fB]\fR Full access password for webserver. .TP \fB[ \-G\fR \fI\fR, \fB\-\-guest\-pass\fR=\fI\fR \fB]\fR Guest password for webserver. .TP .B_untranslated [ \-a\fR, \fB\-\-allow\-guest ]\fR Allows guest access. .TP .B_untranslated [ \-d\fR, \fB\-\-deny\-guest ]\fR Denies guest access (default). .TP .B_untranslated [ \-L\fR, \fB\-\-load\-settings ]\fR Load/save webserver settings from/to remote aMule. This causes amuleweb to ignore command-line and config-file settings, and load them from aMule. When saving preferences none will be written to the config file, but to aMule. (Of course, this works only for those settings that can be set in aMule's Preferences->Remote Controls.) .TP .B_untranslated [ \-\-no\-php ]\fR Disable PHP interpreter (deprecated) .TP .B_untranslated [ \-N\fR, \fB\-\-no\-script\-cache ]\fR Recompiles PHP pages on each request. .TP \fB[ \-\-create\-config\-from\fR=\fI\fR \fB]\fR Create config file based upon \fI\fR, which must point to a valid aMule config file, and then exit. .TP .B_untranslated [ \-\-help ]\fR Prints a short usage description. .TP .B_untranslated [ \-\-version ]\fR Displays the current version number. .TP \fB[ \-\-amule\-config\-file\fR=\fI\fR \fB]\fR aMule config file path. .B DO NOT USE DIRECTLY! aMule uses this option when starting amuleweb at aMule startup. This option causes all other command-line and config-file settings to be ignored, preferences to be read from the given config file, and also implies the \fB\-q \-L\fR options. .SH NOTES .SS Paths For all options which take a \fI\fR value, if the \fIpath\fR contains no directory part (i.e. just a plain filename), then it is considered to be under the aMule configuration directory, \fI~/.aMule\fR. .SS Languages The \fI\fR parameter for the \fB\-l\fR option has the following form: \fIlang\fR[\fB_\fILANG\fR][\fB.\fIencoding\fR][\fB@\fImodifier\fR] where \fIlang\fR is the primary language, \fILANG\fR is a sublanguage/territory, \fIencoding\fR is the character set to use and \fImodifier\fR allows the user to select a specific instance of localization data within a single category. For example, the following strings are valid: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Though all the above strings are accepted as valid language definitions, \fIencoding\fR and \fImodifier\fR are yet unused. In addition to the format above, you can also specify full language names in English - so \fB\-l german\fR is also valid and is equal to \fB\-l de_DE\fR. When no locale is defined, either on command-line or in config file, system default language will be used. .SH SKIN SUPPORT \fBamuleweb\fR is capable of displaying information in different skins. These skins are called templates, and you can make amuleweb load a specific template via the \fB\-t\fR command line option. Templates are searched in two places: first in \fI~/.aMule/webserver/\fR and then in \fI/usr/share/amule/webserver/\fR if you installed with \-\-prefix=/usr. .PP Each template must be in a subdirectory of the template name, and this directory must contain all files the template needs. .SH FILES ~/.aMule/remote.conf .br ~/.aMule/webserver/ .br \fI$(pkgdatadir)\fR/webserver/ .SH EXAMPLE Typically amuleweb will be first run as: .PP \fBamuleweb\fR \fB\-h\fR \fIhostname\fR \fB\-p\fR \fIECport\fR \fB\-P\fR \fIECpassword\fR \fB\-s\fR \fIHTTPport\fR \fB\-A\fR \fIAdminPassword\fR \fB\-w\fR .PP or .PP \fBamuleweb\fR \fB\-\-create-config-from\fR=\fI/home/username/.aMule/amule.conf\fR .PP These will save settings to \fI$HOME/.aMule/remote.conf\fR, and later you only need to type: .PP .B_untranslated amuleweb .PP Of course, you may specify any more or less options on the first example line, and you may also totally omit it. .SH REPORTING BUGS Please report bugs either on our forum (\fIhttp://forum.amule.org/\fR), or in our bugtracker (\fIhttp://bugs.amule.org/\fR). Please do not report bugs in e-mail, neither to our mailing list nor directly to any team member. .SH COPYRIGHT aMule and all of its related utilities are distributed under the GNU General Public License. .SH SEE ALSO .B_untranslated amule\fR(1), \fBamulecmd\fR(1) .SH AUTHOR This manpage was written by Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuleweb.de.10000644000175000017500000002032412611472361021461 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEWEB 1 "November 2011" "aMule webserver v2.3.1" "aMule Hilfsprogramme" .als B_untranslated B .als RB_untranslated RB .SH NAME amuleweb \- aMule Webserver .SH SYNTAX .B_untranslated amuleweb [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] .RB_untranslated [ \-w ] [\fB\-t\fP \fI\fP] [\fB\-s\fP \fI\fP] .RB_untranslated [ \-u ] [\fB\-U\fP \fI\fP] .RB_untranslated [ \-z ] .RB_untranslated [ \-Z ] [\fB\-A\fP \fI\fP] [\fB\-G\fP \fI\fP] .RB_untranslated [ \-a " " | " " \-d ] .RB_untranslated [ \-L ] .RB_untranslated [ \-\-no\-php ] .RB_untranslated [ \-N ] .B_untranslated amuleweb [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amuleweb .RB_untranslated [ \-\-help ] .B_untranslated amuleweb .RB_untranslated [ \-\-version ] .B_untranslated amuleweb [\fB\-\-amule\-config\-file\fP=\fI\fP] .SH BESCHREIBUNG \fBamuleweb\fP ermöglicht dir den Zugriff auf amule(d) per Webbrowser. Man kann amuleweb zusammen mit \fBamule\fP(1) starten lassen, oder ihn separat später starten. Optionen können auf der Kommandozeile oder in der Konfigurationsdatei angegeben werden. Kommandozeilenoptionen überschreiben die Werte aus der Konfigurationsdatei. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP Der Rechner auf dem aMule läuft (Standard: \fIlocalhost\fP). \fI\fP kann eine IP\-Adresse oder ein DNS\-Name sein. .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP aMule's Port für Externe Verbindungen, wie in den Optionen unter\->Fernsteuerung (Standard: \fI4712\fP) eingestellt. .TP \fB[ \-P\fP \fI\fP, \fB\-\-password\fP=\fI\fP \fB]\fP Passwort für Externe Verbindungen. .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP Benutzt die angegebene Konfigurationsdatei. Die Standardkonfigurationsdatei ist \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Keine Ausgabe auf stdout ausgeben. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Sei gesprächig \- Gebe auch Debuggingausgaben aus .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Setzt die Lokale (Sprache) des Programms. Siehe Abschnitt \fBANMERKUNGEN\fP für die Beschreibung des \fI\fP Parameters. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Schreibe die Kommandozeilenoptionen in die Konfigurationsdatei und kehre zur Shell zurück. .TP \fB[ \-t\fP \fI\fP, \fB\-\-template\fP=\fI\fP \fB]\fP Loads the template named \fI\fP. See the \fBSKIN SUPPORT\fP section for details. .TP \fB[ \-s\fP \fI\fP, \fB\-\-server\-port\fP=\fI\fP \fB]\fP Webserver's HTTP port. This is the port you must point your browser to (default: \fI4711\fP). .TP .B_untranslated [ \-u ]\fR .br Aktiviere UPnP. .TP \fB[ \-U\fP \fI\fP, \fB\-\-upnp\-port\fP \fI\fP \fB]\fP UPnP Port. .TP .B_untranslated [ \-z\fR, \fB\-\-enable\-gzip ]\fR Benutzt gzip Kompression für den HTTP Verkehr um Bandbreite zu sparen .TP .B_untranslated [ \-Z\fR, \fB\-\-disable\-gzip ]\fR Schalten die gzip Kompression ab (Standard) .TP \fB[ \-A\fP \fI\fP, \fB\-\-admin\-pass\fP=\fI\fP \fB]\fP Passwort für vollen Zugriff auf den Webserver .TP \fB[ \-G\fP \fI\fP, \fB\-\-guest\-pass\fP=\fI\fP \fB]\fP Gäste Passwort für den Webserver .TP .B_untranslated [ \-a\fR, \fB\-\-allow\-guest ]\fR Erlaubt den Zugriff als Gast .TP .B_untranslated [ \-d\fR, \fB\-\-deny\-guest ]\fR Verbietet den Zugriff als Gast (Standard) .TP .B_untranslated [ \-L\fR, \fB\-\-load\-settings ]\fR Lade/Speichere Einstellungen vom/zum entfernen aMule. Dies bringt amuleweb dazu, die Kommandozeilen\- und Konfigurationsdateieinstellungen zu ignorieren, und von aMule zu beziehen. Beim Speichern werden keine Einstellungen in die Konfigurationsdatei geschrieben, sondern zu aMule gesendet. (das funktioniert nur für Einstellungen in aMule's Einstellungen\->Fernsteuerung Dialog) .TP .B_untranslated [ \-\-no\-php ]\fR Deaktiviert den PHP Interpreter (veraltet) .TP .B_untranslated [ \-N\fR, \fB\-\-no\-script\-cache ]\fR Erstellt die PHP\-Seiten bei jedem Aufruf neu .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP Konfigurationsdatei basierend auf \fI\fP, welche auf eine gültige aMule Konfigurationsdatei verweisen muss, erstellen und danach beenden. .TP .B_untranslated [ \-\-help ]\fR Gibt eine kurze Nutzungsbeschreibung aus. .TP .B_untranslated [ \-\-version ]\fR Zeigt die derzeitige Versionsnummer an. .TP \fB[ \-\-amule\-config\-file\fP=\fI\fP \fB]\fP Pfad zur aMule Konfigurationsdatei. \fBNICHT DIREKT BENUTZEN!\fP aMule benutzt dies zum starten von amuleweb wenn aMule startet. Diese Option sorgt dafür, das alle anderen Parameter ignoriert werden, und nur aus der angegeben Datei gelesen werden, und impliziert auch die \fB\-q \-L\fP Optionen. .SH ANMERKUNGEN .SS Pfade Für alle Optionen die ein \fI\fP Argument erwarten, wenn der \fIPfad\fP kein Verzeichnis enthält(z.B. nur einen Dateinamen), dann wird angenommen, diese Datei liegt um aMule\-Konfigurationsverzeichnis, \fI~/.aMule\fP. .SS Sprachen Der \fI\fP Parameter der \fB\-l\fP Option hat folgende Form: \fIsprache\fP[\fB_\fP\fISPRACHE\fP][\fB.\fP\fIkodierung\fP][\fB@\fP\fImodifikation\fP] wobei \fIsprache\fP die eigentliche Sprache, \fISPRACHE\fP das Gebiet, \fIkodierung\fP den zu nutzenden Zeichensatz und \fImodifikation\fP eine bestimmte Untergruppe in diesem darstellt. Zum Besispiel sind die folgenden Zeichenketten gültig: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Alle oben genannten Zeicheketten werden als gültige Sprachdefinitionen akzeptiert, \fIKODIERUNG\fP und \fIzusatz\fP werden zur Zeit nicht genutzt. Zusätzlich zu den obigen Formaten, kann man komplette englische Sprachbezeichnungen angeben \- \fB\-l german\fP ist ebenfalls gültig und entspricht \fB\-l de_DE\fP. Wenn keine Sprache definiert wurde, weder in der Kommandozeile noch in der Konfigurationsdatei, wird die Standardsprache des Systems verwendet. .SH "SKIN UNTERSTÜTZUNG" \fBamuleweb\fP ist in der Lage Informationen mit unterschiedlichen Skins anzuzeigen. Diese Skins werden Templates genannt, und due kannst über die Kommandozeilenoption \fB\-t\fP angeben welches geladen werden soll. Templates werden in 2 verschiedenen Orten gesucht: zuerst in \fI~/.aMule/webserver/\fP und dann in \fI/usr/share/amule/webserver/\fP wenn du mit \-\-prefix=/usr installiert hast. .PP Jedes Template muss in einem Unterverzeichnis des Templatenamens liegen, welches alle Dateien enthält, die das Template benötigt. .SH DATEIEN ~/.aMule/remote.conf .br ~/.aMule/webserver/ .br \fI$(pkgdatadir)\fP/webserver/ .SH BEISPIEL Typischerweise wird amuleweb als erstes folgendermaßen gestartet: .PP \fBamuleweb\fP \fB\-h\fP \fIhostname\fP \fB\-p\fP \fIEC\-Port\fP \fB\-P\fP \fIEC\-Passwort\fP \fB\-s\fP \fIHTTP\-Port\fP \fB\-A\fP \fIAdmin\-Passwort\fP \fB\-w\fP .PP oder .PP \fBamuleweb\fP \fB\-\-create\-config\-from\fP=\fI/home/username/.aMule/amule.conf\fP .PP Dies speichert die Einstellungen in \fI$HOME/.aMule/remote.conf\fP, und später tippst du nur noch: .PP .B_untranslated amuleweb .PP Natürlich kann man zusätzliche Optionen angeben und einzelne auch beim ersten Start weglassen, oder es komplett anders machen. .SH "FEHLER MELDEN" Bitte meldet Fehler entweder in unserem Forum (\fIhttp://forum.amule.org/\fP), oder in unseren Bugtracker (\fIhttp://bugs.amule.org/\fP). Bitte meldet uns weder Fehler per E\-Mail, noch auf unsere Mailingliste oder direkt an unsere Teammitglieder. .SH COPYRIGHT aMule und alle seine zugehörigen Anwendungen werden verteilt unter der GNU General Public License .SH "SIEHE AUCH" .B_untranslated amule\fR(1), \fBamulecmd\fR(1) .SH VERFASSER Diese manpage wurde geschrieben von Vollstrecker Diese manpage wurde übersetzt von Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuleweb.es.10000644000175000017500000001756012611472361021510 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEWEB 1 "November 2011" "aMule webserver v2.3.1" "aMule utilidades" .als B_untranslated B .als RB_untranslated RB .SH NOMBRE amuleweb \- servidor web de aMule .SH SINOPSIS .B_untranslated amuleweb [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] .RB_untranslated [ \-w ] [\fB\-t\fP \fI\fP] [\fB\-s\fP \fI\fP] .RB_untranslated [ \-u ] [\fB\-U\fP \fI\fP] .RB_untranslated [ \-z ] .RB_untranslated [ \-Z ] [\fB\-A\fP \fI\fP] [\fB\-G\fP \fI\fP] .RB_untranslated [ \-a " " | " " \-d ] .RB_untranslated [ \-L ] .RB_untranslated [ \-\-no\-php ] .RB_untranslated [ \-N ] .B_untranslated amuleweb [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amuleweb .RB_untranslated [ \-\-help ] .B_untranslated amuleweb .RB_untranslated [ \-\-version ] .B_untranslated amuleweb [\fB\-\-amule\-config\-file\fP=\fI\fP] .SH DESCRIPCIÓN \fBamuleweb\fP manages your access to amule through a web browser. You can start amuleweb together with \fBamule\fP(1), or separately, any time later. Options can be specified via command\-line or via config\-file. Command\-line options take precedence over config\-file options. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP Host donde se está ejecutando aMule. (por defecto: \fIlocalhost\fP). \fI\fP debe ser o una dirección IP o un nombre DNS .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP Puerto de conexión externa de aMule, puesto en Opciones\->Controles Remotos (por defecto: 4712) .TP \fB[ \-P\fP \fI\fP, \fB\-\-password\fP=\fI\fP \fB]\fP Contraseña de conexiones externas .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP Usar la configuración dada por el archivo. El archivo de configuración por defecto es \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR No mostrar nada por la salida estándar .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Modo Extendido \- muestra también los mensajes de depuración. .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Selecciona el idioma del programa. Ver la sección \fBNOTAS\fP para la descripción del parámetro del \fI\fP. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Escribe opciones de la línea de comando al archivo de configuración y termina. .TP \fB[ \-t\fP \fI\fP, \fB\-\-template\fP=\fI\fP \fB]\fP Loads the template named \fI\fP. See the \fBSKIN SUPPORT\fP section for details. .TP \fB[ \-s\fP \fI\fP, \fB\-\-server\-port\fP=\fI\fP \fB]\fP Webserver's HTTP port. This is the port you must point your browser to (default: \fI4711\fP). .TP .B_untranslated [ \-u ]\fR .br Habilitar UPnP. .TP \fB[ \-U\fP \fI\fP, \fB\-\-upnp\-port\fP \fI\fP \fB]\fP Puerto UPnP. .TP .B_untranslated [ \-z\fR, \fB\-\-enable\-gzip ]\fR Enables using gzip compression in HTTP traffic to save bandwidth. .TP .B_untranslated [ \-Z\fR, \fB\-\-disable\-gzip ]\fR Deshabilitar la compresión gzip (esto es por defecto). .TP \fB[ \-A\fP \fI\fP, \fB\-\-admin\-pass\fP=\fI\fP \fB]\fP Contraseña de acceso completo al servidor web. .TP \fB[ \-G\fP \fI\fP, \fB\-\-guest\-pass\fP=\fI\fP \fB]\fP Contraseña de invitado al servidor web. .TP .B_untranslated [ \-a\fR, \fB\-\-allow\-guest ]\fR Permitir acceso invitado. .TP .B_untranslated [ \-d\fR, \fB\-\-deny\-guest ]\fR Deniega el acceso invitado (defecto) .TP .B_untranslated [ \-L\fR, \fB\-\-load\-settings ]\fR Load/save webserver settings from/to remote aMule. This causes amuleweb to ignore command\-line and config\-file settings, and load them from aMule. When saving preferences none will be written to the config file, but to aMule. (Of course, this works only for those settings that can be set in aMule's Preferences\->Remote Controls.) .TP .B_untranslated [ \-\-no\-php ]\fR Deshabilitar interprete PHP (obsoleto) .TP .B_untranslated [ \-N\fR, \fB\-\-no\-script\-cache ]\fR Recompilar páginas PHP en cada solicitud. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP Crear archivo de configuración basado en \fI\fP, el cual debe apuntar a un archivo de configuración válido, y entonces termina. .TP .B_untranslated [ \-\-help ]\fR Imprime una breve descripción de uso. .TP .B_untranslated [ \-\-version ]\fR Mostrar el número de la versión actual. .TP \fB[ \-\-amule\-config\-file\fP=\fI\fP \fB]\fP aMule config file path. \fBDO NOT USE DIRECTLY!\fP aMule uses this option when starting amuleweb at aMule startup. This option causes all other command\-line and config\-file settings to be ignored, preferences to be read from the given config file, and also implies the \fB\-q \-L\fP options. .SH NOTAS .SS Rutas Todas las opciones que tengan \fI\fP como valor, si \fIpath\fP contiene un directorio sin part (p.e. solo un archivo normal), entones se tomará el directorio de la configuración, \fI~/.aMule\fP. .SS Lenguajes The \fI\fP parameter for the \fB\-l\fP option has the following form: \fIlang\fP[\fB_\fP\fILANG\fP][\fB.\fP\fIencoding\fP][\fB@\fP\fImodifier\fP] where \fIlang\fP is the primary language, \fILANG\fP is a sublanguage/territory, \fIencoding\fP is the character set to use and \fImodifier\fP allows the user to select a specific instance of localization data within a single category. Por ejemplo, las siguientes cadenas son válidas: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Though all the above strings are accepted as valid language definitions, \fIencoding\fP and \fImodifier\fP are yet unused. In addition to the format above, you can also specify full language names in English \- so \fB\-l german\fP is also valid and is equal to \fB\-l de_DE\fP. When no locale is defined, either on command\-line or in config file, system default language will be used. .SH "SOPORTE TEMAS." \fBamuleweb\fP is capable of displaying information in different skins. These skins are called templates, and you can make amuleweb load a specific template via the \fB\-t\fP command line option. Templates are searched in two places: first in \fI~/.aMule/webserver/\fP and then in \fI/usr/share/amule/webserver/\fP if you installed with \-\-prefix=/usr. .PP Each template must be in a subdirectory of the template name, and this directory must contain all files the template needs. .SH ARCHIVOS ~/.aMule/remote.conf .br ~/.aMule/webserver/ .br \fI$(pkgdatadir)\fP/webserver/ .SH EJEMPLO Normalmente amuleweb se ejecutara primero como: .PP \fBamuleweb\fP \fB\-h\fP \fIhostname\fP \fB\-p\fP \fIECport\fP \fB\-P\fP \fIECpassword\fP \fB\-s\fP \fIHTTPport\fP \fB\-A\fP \fIAdminPassword\fP \fB\-w\fP .PP o .PP \fBamuleweb\fP \fB\-\-create\-config\-from\fP=\fI/home/usuario/.aMule/amule.conf\fP .PP Esto guardará las opciones en \fI$HOME/.aMule/remote.conf\fP, y después sólo tiene que escribir: .PP .B_untranslated amuleweb .PP Por supuesto, puede especificar las opciones en el ejemplo de la primera linea, y también puede omitirlo. .SH "INFORMANDO ERRORES" Por favor informa de fallos ya sea en nuestro foro (\fIhttp://forum.amule.org/\fP), o en nuestro bugtracker (\fIhttp://bugs.amule.org/\fP). Por favor no informe de fallos por correo, ni en nuestras listas, ni directamente al correo de algun miembro del equipo. .SH COPYRIGHT aMule y todas las demás utilidades relacionadas son distribuidas bajo la GNU General Public License. .SH "VEASE TAMBIEN" .B_untranslated amule\fR(1), \fBamulecmd\fR(1) .SH AUTOR Esta página de manualfue escrita por Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuleweb.fr.10000644000175000017500000002117112611472361021501 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEWEB 1 "Novembre 2011" "aMule webserver v2.3.1" "Outils d'aMule" .als B_untranslated B .als RB_untranslated RB .SH NOM amuleweb \- serveur web d'aMule .SH SYNOPSIS .B_untranslated amuleweb [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] .RB_untranslated [ \-w ] [\fB\-t\fP \fI\fP] [\fB\-s\fP \fI\fP] .RB_untranslated [ \-u ] [\fB\-U\fP \fI\fP] .RB_untranslated [ \-z ] .RB_untranslated [ \-Z ] [\fB\-A\fP \fI\fP] [\fB\-G\fP \fI\fP] .RB_untranslated [ \-a " " | " " \-d ] .RB_untranslated [ \-L ] .RB_untranslated [ \-\-no\-php ] .RB_untranslated [ \-N ] .B_untranslated amuleweb [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amuleweb .RB_untranslated [ \-\-help ] .B_untranslated amuleweb .RB_untranslated [ \-\-version ] .B_untranslated amuleweb [\fB\-\-amule\-config\-file\fP=\fI\fP] .SH DESCRIPTION \fBamuleweb\fP gère votre accès à amule via un navigateur Web. Vous pouvez démarrer ensemble amuleweb et \fBamule\fP(1), ou séparément, à un moment ultérieur. Les options peuvent être spécifiées par ligne de commande ou via fichier de configuration. Les options passées en ligne de commande prévalent sur les options de fichier de configuration. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP Hôte où aMule fonctionne (par défaut : \fIlocalhost\fP). \fI\fP peut être une adresse IP ou un nom DNS. .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP Port d'aMule pour les Connexions Externes, tel que défini dans Préférences\->Contrôles à Distance (défaut: \fI4712\fP) .TP \fB[ \-P\fP \fI\fP, \fB\-\-password\fP=\fI\fP \fB]\fP Mot de passe des connexions externes. .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP Utiliser le fichier de configuration désigné. Le fichier de configuration par défaut est \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Ne pas afficher de sortie sur stdout. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Mode bavard \- affiche aussi les messages de deboguage. .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Définir les paramètres régionaux (langage). Voir la section \fBNOTES\fP pour la description du paramètre \fI\fP. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Écrire les options de la ligne de commande dans le fichier de configuration et quitter .TP \fB[ \-t\fP \fI\fP, \fB\-\-template\fP=\fI\fP \fB]\fP Charge le modèle nommé \fI\fP. Voir la section \fBSKIN SUPPORT\fP pour plus de détails. .TP \fB[ \-s\fP \fI\fP, \fB\-\-server\-port\fP=\fI\fP \fB]\fP Port HTTP du serveur Web. Il s'agit du port dont votre navigateur doit pointer (par défaut : \fI4711\fP). .TP .B_untranslated [ \-u ]\fR .br Activer UPnP. .TP \fB[ \-U\fP \fI\fP, \fB\-\-upnp\-port\fP \fI\fP \fB]\fP Port UPnP. .TP .B_untranslated [ \-z\fR, \fB\-\-enable\-gzip ]\fR Activer la compression gzip pour le trafic HTTP pour économiser la bande passante. .TP .B_untranslated [ \-Z\fR, \fB\-\-disable\-gzip ]\fR Désactiver la compression gzip (par défaut). .TP \fB[ \-A\fP \fI\fP, \fB\-\-admin\-pass\fP=\fI\fP \fB]\fP Mot de passe d'accès total pour le serveur web. .TP \fB[ \-G\fP \fI\fP, \fB\-\-guest\-pass\fP=\fI\fP \fB]\fP Mot de passe invité pour le serveur web. .TP .B_untranslated [ \-a\fR, \fB\-\-allow\-guest ]\fR Autoriser l'accès invité. .TP .B_untranslated [ \-d\fR, \fB\-\-deny\-guest ]\fR Interdire l'accès invité (par défaut). .TP .B_untranslated [ \-L\fR, \fB\-\-load\-settings ]\fR Charger/enregistrer les paramètres de serveur web à partir de/vers l'aMule distant. amuleweb ignorera la ligne de commande et les paramètres de fichier de configuration, et les chargera à partir aMule. Lors de la sauvegarde, aucune préférences seront écrites dans le fichier config, mais pour aMule. (Bien sûr, cela ne fonctionne que pour les paramètres qui peuvent être définies dans les préférences de \->Contrôle à distance d'aMule.) .TP .B_untranslated [ \-\-no\-php ]\fR Désactiver l'interpréteur PHP (obsolète) .TP .B_untranslated [ \-N\fR, \fB\-\-no\-script\-cache ]\fR Recompile les pages PHP à chaque requête. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP Créer un fichier de configuration basé sur \fI\fP, qui doit pointer sur un fichier de configration d'aMule valide, et quitter ensuite. .TP .B_untranslated [ \-\-help ]\fR Afficher une court description d'utilisation. .TP .B_untranslated [ \-\-version ]\fR Affiche le numéro de la version actuelle. .TP \fB[ \-\-amule\-config\-file\fP=\fI\fP \fB]\fP Chemin du fichier de configuration d'aMule. \fBNE PAS UTILISER DIRECTEMENT !\fP aMule utilise cette option lors du démarrage d'amuleweb au démarrage d'aMule. Cette option permet d'ignorer toutes les autres commandes en ligne et les paramètres de fichier de configuration, et lit les préférences dans un fichier de configuration précisé, et implique également les options \fB\-q \-L\fP. .SH NOTES .SS Chemins Pour toutes les options prenant en paramètre un \fI\fP, si le \fIchemin\fP ne contient pas de répertoire (i.e. juste un nom de fichier), alors il sera considéré comme étant dans le répertoire de configuration d'aMule, \fI~/.aMule\fP. .SS Langages Le paramètre \fI\fP pour \fB\-l\fP l'option a la forme suivante : \fIlang\fP[\fB_\fP\fILANG\fP][\fB.\fP\fIencoding\fP][\fB@\fP\fImodifier\fP] où \fIlang\fP est la langue principale, \fILANG\fP est is a dialecte, \fIencoding\fP est le caractère défini à utiliser et \fImodifier\fP permet à l'utilisateur de sélectionner une instance spécifique des données de localisation dans une seule catégorie. Par exemple, les chaînes de caractères suivantes sont valables : .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Bien que toutes les chaînes ci\-dessus sont acceptées comme des définitions de langue valide, \fIencoding\fP et \fImodifier\fP ne sont pas encore utilisé. En plus du format ci\-dessus, vous pouvez également spécifier des noms entier de langue en anglais \- so \fB\-l german\fP est également valide et équivaut à \fB\-l de_DE\fP. En l'absence de paramètres linguistiques définie, soit sur ​​la ligne de commande ou dans le fichier de configuration, la langue utilisé par défaut sera celle du système d'exploitation. .SH "SUPPORT DE THEMES" \fBamuleweb\fP est capable d'afficher des informations dans différents thèmes. Ces thèmes sont appelés modèles, et vous pouvez faire de charger à amuleweb un modèle spécifique via \fB\-t\fP l'option en ligne de commande. Les modèles sont recherchés dans deux endroits : d'abord dans : \fI~/.aMule/webserver/\fP puis dans \fI/usr/share/amule/webserver/\fP si vous l'avez installé avec \-\-prefix=/usr. .PP Chaque modèle doit être dans un sous répertoire du nom du modèle, et ce répertoire doit contenir tous les fichiers dont le modèle a besoins. .SH FICHIERS ~/.aMule/remote.conf .br ~/.aMule/webserver/ .br \fI$(pkgdatadir)\fP/webserver/ .SH EXEMPLE Typiquement amuleweb sera lancé la premier ainsi : .PP \fBamuleweb\fP \fB\-h\fP \fInom de l'hôte\fP \fB\-p\fP \fIport EC\fP \fB\-P\fP \fImot de passe EC\fP \fB\-s\fP \fIport HTTP\fP \fB\-A\fP \fImot de passe Admin\fP \fB\-w\fP .PP ou .PP \fBamuleweb\fP \fB\-\-create\-config\-from\fP=\fI/home/username/.aMule/amule.conf\fP .PP Cela sauvegardera les options dans \fI$HOME/.aMule/remote.conf\fP, et il suffira de taper plus tard : .PP .B_untranslated amuleweb .PP Bien sûr, vous pouvez spécifier plus ou moins d'options sur la première ligne d'exemple, et vous pouvez également totalement le supprimer. .SH "RAPPORTER DES BOGUES" Veuillez rapporter les bogues sur notre forum (\fIhttp://forum.amule.org/\fP), ou sur notre bugtracker (\fIhttp://bugs.amule.org/\fP). Veuillez ne pas rapporter les bogues par e\-mail, sur notre liste de diffusion ou directement à n'importe quel membre de l'équipe. .SH COPYRIGHT aMule et tout ses outils sont distribués sous la licence GNU General Public License. .SH "VOIR AUSSI" .B_untranslated amule\fR(1), \fBamulecmd\fR(1) .SH AUTEUR Cette manpage a été écrite par Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuleweb.hu.10000644000175000017500000002141412611472361021506 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEWEB 1 "2011. november" "aMule web kiszolgáló v2.3.1" "aMule segédprogramok" .als B_untranslated B .als RB_untranslated RB .SH NÉV amuleweb \- aMule web kiszolgáló .SH ÁTTEKINTÉS .B_untranslated amuleweb [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] .RB_untranslated [ \-w ] [\fB\-t\fP \fI\fP] [\fB\-s\fP \fI\fP] .RB_untranslated [ \-u ] [\fB\-U\fP \fI\fP] .RB_untranslated [ \-z ] .RB_untranslated [ \-Z ] [\fB\-A\fP \fI\fP] [\fB\-G\fP \fI\fP] .RB_untranslated [ \-a " " | " " \-d ] .RB_untranslated [ \-L ] .RB_untranslated [ \-\-no\-php ] .RB_untranslated [ \-N ] .B_untranslated amuleweb [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amuleweb .RB_untranslated [ \-\-help ] .B_untranslated amuleweb .RB_untranslated [ \-\-version ] .B_untranslated amuleweb [\fB\-\-amule\-config\-file\fP=\fI\fP] .SH LEÍRÁS Az \fBamuleweb\fP programmal egy web\-böngésző segítségével vezérelhetjük az amule(d)\-t. Az amuleweb\-et az \fBamule\fP(1)\-vel együtt is lehet indítani, vagy külön, kézzel. A beállításait konfigurációs fájlban vagy parancssorban is megadhatjuk. A parancssori opciók elsőbbséget élveznek a konfigurácós fájlban találtakkal szemben. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP A gép, amelyen az aMule fut (alapértelmezés: \fIlocalhost\fP). A \fI\fP lehet egy IP cím vagy egy DNS név. .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP Az aMule távoli elérés portja, amint az a Beállítások\->Távoli Elérés panelen beállítható (alapértelemzés: \fI4712\fP). .TP \fB[ \-P\fP \fI\fP, \fB\-\-password\fP=\fI\fP \fB]\fP A távoli elérés jelszava. .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP A megadott konfigurációs fájl használata. Az alapértelmezett konfigurációs fájl: \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Ne írjon semmit a szabvány kimenetre. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Bőbeszédű mód \- a hibakeresési üzenetek megjelenítése. .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Beállítja a program nyelvét. Lásd a \fBMEGJEGYZÉSEK\fP fejezetet a \fI\fP paraméter bővebb leírásához. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR A parancssori paramétereket beírja a konfigurációs fájlba és kilép. .TP \fB[ \-t\fP \fI\fP, \fB\-\-template\fP=\fI\fP \fB]\fP Betölti a \fI\fP nevű sablont. Bővebb részletekért lásd a \fBSABLONOK\fP fejezetet. .TP \fB[ \-s\fP \fI\fP, \fB\-\-server\-port\fP=\fI\fP \fB]\fP Web kiszolgáló HTTP port. Erre a portra kell irányítanod a böngésződet (alapértelmezés: \fI4711\fP). .TP .B_untranslated [ \-u ]\fR .br UPnP engedélyezése. .TP \fB[ \-U\fP \fI\fP, \fB\-\-upnp\-port\fP \fI\fP \fB]\fP UPnP port. .TP .B_untranslated [ \-z\fR, \fB\-\-enable\-gzip ]\fR Engedélyezi a gzip tömörítést a HTTP adatátvitelnél a sávszélesség jobb kihasználása érdekében. .TP .B_untranslated [ \-Z\fR, \fB\-\-disable\-gzip ]\fR gzip tömörítés tiltása (alapértelmezett). .TP \fB[ \-A\fP \fI\fP, \fB\-\-admin\-pass\fP=\fI\fP \fB]\fP Teljes hozzáférésű jelszó a web kiszolgálóhoz. .TP \fB[ \-G\fP \fI\fP, \fB\-\-guest\-pass\fP=\fI\fP \fB]\fP Web kiszolgáló vendég felhasználó jelszava. .TP .B_untranslated [ \-a\fR, \fB\-\-allow\-guest ]\fR Vendég felhasználó engedélyezése. .TP .B_untranslated [ \-d\fR, \fB\-\-deny\-guest ]\fR Vendég felhasználó tiltása (alapértelmezett). .TP .B_untranslated [ \-L\fR, \fB\-\-load\-settings ]\fR Beállítások töltése/mentése a távoli aMule\-ról/ra. Ebben az esetben az amuleweb figyelmen kívül hagyja azokat a parancssori és konfigurációs fájlbeli beállításokat, amelyeket az aMule\-tól is be tud szerezni (ezek beállíthatók a Beállítások\->Távoli Elérés pontban). A beállítások mentésekor sem írja azokat fájlba (mint egyébként), hanem az aMule\-t értesíti a beállítások megváltozásáról. Azon beállítások, melyek az aMule Beállítások párbeszédpaneljén nem szerepelnek, nem kerülnek mentésre. .TP .B_untranslated [ \-\-no\-php ]\fR PHP értelmező letiltása (elavult, ne használd) .TP .B_untranslated [ \-N\fR, \fB\-\-no\-script\-cache ]\fR PHP oldalak újrafordítása minden kérésnél. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP Konfigurációs fájl készítése a \fI\fP alapján, amely az aMule érvényes konfigurációs fájlja kell legyen, majd utána kilép. .TP .B_untranslated [ \-\-help ]\fR Egy rövid használati leírást jelenít meg. .TP .B_untranslated [ \-\-version ]\fR Megjeleníti a verziószámot. .TP \fB[ \-\-amule\-config\-file\fP=\fI\fP \fB]\fP aMule konfigurációs fájl. \fBNE HASZNÁLD!\fP Az aMule használja ezt a paramétert amikor automatikusan indítja az amuleweb\-et. Ezen paraméter hatására minden más parancssori és konfigurációs fájl\-béli beállítást figyelmen kívül hagy, a beállításait a megadott \fI\fP\-ból olvassa, illetve bekapcsolja a \fB\-q \-L\fP opciókat. .SH MEGJEGYZÉSEK .SS "Elérési utak" Minden olyan opciónál amely \fI\fP paramétert kér, ha a megadott \fIfájl\fP nem tartalmaz könyvtár komponenst (vagyis tisztán csak egy fájlnév), akkor azt az aMule konfigurációs könyvtárában (\fI~/.aMule\fP) fogja keresni. .SS Nyelvek A \fB\-l\fP opció \fI\fP paramétere a következőképpen adható meg: \fInyelv\fP[\fB_\fP\fITERÜLET\fP][\fB.\fP\fIkódolás\fP][\fB@\fP\fImódosító\fP], ahol \fInyelv\fP az elsődleges nyelv, \fITERÜLET\fP egy nyelvváltozat/terület kódja, \fIkódolás\fP a karakterkészlet kódja és a \fImódosító\fP \(Bqlehetővé teszi, hogy a felhasználó kiválasszon egy meghatározott esetet a helyi jellemzők adataiból egyetlen kategórián belül\(rq. Például a következő értékek mind érvényesek: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Habár a fentieket mind elfogadja a program, mint érvényes nyelvmeghatározást, a \fIkódolás\fP és \fImódosító\fP még nem használt. Ráadásként a fenti formátumhoz, megadható akár egy nyelv teljes angol megnevezése is, így például a \fB\-l german\fP szintén érvényes és egyenértékű a \fB\-l de_DE\fP megadással. Ha sem a konfigurációs fájlban, sem a parancssorban nincs megadva a nyelv, akkor a rendszer alapértelmezett nyelvét fogja használni. .SH SABLONOK Az \fBamuleweb\fP képes az információ különböző felületekkel történő megjelenítésére. Ezeket hívjuk sablonoknak, és az amuleweb a \fB\-t\fP parancssori opcióval vehető rá egy adott sablon használatára. A sablonokat a következő helyeken keresi: először a \fI~/.aMule/webserver/\fP könyvtárban, majd utána a \fI/usr/share/amule/webserver/\fP könyvtárban. .PP Minden sablonnak a sablon nevével megegyező alkönyvtárban kell lennie, és ez a könyvtár kell tartalmazzon minden fájlt, amelyre a sablonnak szüksége van. .SH FÁJLOK ~/.aMule/remote.conf .br ~/.aMule/webserver/ .br \fI$(pkgdatadir)\fP/webserver/ .SH PÉLDA Tipikusan az amuleweb\-et először a következőképpen indítjuk: .PP \fBamuleweb\fP \fB\-h\fP \fIgépnév\fP \fB\-p\fP \fIEC\-port\fP \fB\-P\fP \fIEC\-jelszó\fP \fB\-s\fP \fIHTTP\-port\fP \fB\-A\fP \fIadmin\-jelszó\fP \fB\-w\fP .PP vagy .PP \fBamuleweb\fP \fB\-\-create\-config\-from\fP=\fI/home/felhasználónév/.aMule/amule.conf\fP .PP Ez elmenti a beállításokat a \fI$HOME/.aMule/remote.conf\fP fájlba, hogy később már csak ezt kelljen írni: .PP .B_untranslated amuleweb .PP Természetesen más paraméterek is megadhatók az első példában, illetve teljesen el is hagyhatóak. .SH "HIBÁK JELENTÉSE" A hibákat kérjük vagy a fórumon (\fIhttp://forum.amule.org/\fP), vagy a hibakövetőben (\fIhttp://bugs.amule.org/\fP) jelentsék. Hibákról kérjük ne írjanak levelet (e\-mail\-t) se a levelezési listára, se közvetlenül valamelyik fejlesztőnek. .SH COPYRIGHT Az aMule és az összes hozzá tartozó segédprogram a GNU General Public License védelme alatt áll. .SH "LÁSD MÉG" .B_untranslated amule\fR(1), \fBamulecmd\fR(1) .SH SZERZŐ Ezt a kézikönyv lapot Vollstrecker írta. .SH MAGYAR FORDÍTÁS Dévai Tamás amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuleweb.it.10000644000175000017500000002100412611472361021501 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEWEB 1 "Novembre 2011" "aMule webserver v2.3.1" "Utilità di aMule" .als B_untranslated B .als RB_untranslated RB .SH NOME amuleweb \- aMule web server .SH SINTASSI .B_untranslated amuleweb [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] .RB_untranslated [ \-w ] \fB\-t\fP \fI\fP] [\fB\-s\fP \fI\fP] .RB_untranslated [ \-u ] [\fB\-U\fP \fI\fP] .RB_untranslated [ \-z ] .RB_untranslated [ \-Z ] [\fB\-A\fP \fI\fP] [\fB\-G\fP \fI\fP] .RB_untranslated [ \-a " " | " " \-d ] .RB_untranslated [ \-L ] .RB_untranslated [ \-\-no\-php ] .RB_untranslated [ \-N ] .B_untranslated amuleweb [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amuleweb .RB_untranslated [ \-\-help ] .B_untranslated amuleweb .RB_untranslated [ \-\-version ] .B_untranslated amuleweb [\fB\-\-amule\-config\-file\fP=\fI\fP] .SH DESCRIZIONE \fBamuleweb\fP gestisce l'accesso ad amule attraverso un browser web. Si può eseguire amuleweb insieme ad \fBamule\fP(1), o separatamente in qualunque momento successivo. Le opzioni possono essere specificate in riga di comando o nel file di configurazione. Le opzioni in riga di comando hanno la precedenza su quelle nel file di configurazione. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP Computer dove è in esecuzione aMule (default: \fIlocalhost\fP). \fI\fP può essere un indirizzo IP o un nome DNS. .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP Porta di aMule per le connessioni esterne, come impostata nelle preferenze\->controllo remoto (default: \fI4712\fP) .TP \fB[ \-P\fP \fI\fP, \fB\-\-password\fP=\fI\fP \fB]\fP Password delle connessioni esterne. .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP Usa il file di configurazione fornito. Il file di configurazione di default è \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Non scrivere nulla nello stdout. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Mostra anche i messaggi di debug. .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Imposta il linguaggio del programma. Vedi anche la sezione delle \fBNOTE\fP per la descrizione del parametro \fI\fP . .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Scrive le opzioni della riga di comando nel file di configurazione ed esce. .TP \fB[ \-t\fP \fI\fP, \fB\-\-template\fP=\fI\fP \fB]\fP Carica il modello chiamato \fI\fP. Vedi la sezione \fBSUPPORTO AGLI SKIN\fP per i dettagli. .TP \fB[ \-s\fP \fI\fP, \fB\-\-server\-port\fP=\fI\fP \fB]\fP Porta HTTP del server web. Questa è la porta da indicare nel browser (default: \fI4711\fP). .TP .B_untranslated [ \-u ]\fR .br Abilita il supporto UPnP. .TP \fB[ \-U\fP \fI\fP, \fB\-\-upnp\-port\fP \fI\fP \fB]\fP Porta per l'UPnP. .TP .B_untranslated [ \-z\fR, \fB\-\-enable\-gzip ]\fR Abilita la compressione gzip nel traffico HTTP per risparmiare banda. .TP .B_untranslated [ \-Z\fR, \fB\-\-disable\-gzip ]\fR Disabilita la compressione gzip (questo è il default). .TP \fB[ \-A\fP \fI\fP, \fB\-\-admin\-pass\fP=\fI\fP \fB]\fP Password per l'accesso completo al web server. .TP \fB[ \-G\fP \fI\fP, \fB\-\-guest\-pass\fP=\fI\fP \fB]\fP Password for l'accesso ospite al web server. .TP .B_untranslated [ \-a\fR, \fB\-\-allow\-guest ]\fR Permette l'accesso ospite. .TP .B_untranslated [ \-d\fR, \fB\-\-deny\-guest ]\fR Nega l'accesso ospite (default). .TP .B_untranslated [ \-L\fR, \fB\-\-load\-settings ]\fR Carica/salva le configurazioni del webserver da/verso aMule remoto. amuleweb ignorerà le opzioni in linea di comando e nel file di configurazione, e le caricherà invece da aMule. Quando si salveranno le preferenze, niente verrà scritto nel file di configurazione, ma in aMule. (Ovviamente, questo funzionerà solo per quelle impostazioni che possono essere scritte nelle preferenze di aMule\->controllo remoto.) .TP .B_untranslated [ \-\-no\-php ]\fR Disabilita l'interprete PHP (deprecato) .TP .B_untranslated [ \-N\fR, \fB\-\-no\-script\-cache ]\fR Ricompila le pagine PHP ad ogni richiesta. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP Crea un file di configurazione basandosi sul \fI\fP, che deve puntare ad un file di configurazione di aMule valido, e quindi esce. .TP .B_untranslated [ \-\-help ]\fR Visualizza una breve descrizione dell'utilizzo. .TP .B_untranslated [ \-\-version ]\fR Visualizza il numero di versione corrente. .TP \fB[ \-\-amule\-config\-file\fP=\fI\fP \fB]\fP Percorso del file di configurazione di aMule. \fBNON USARE DIRETTAMENTE!\fP aMule usa questa opzione quando lancia amuleweb all'avvio di aMule. Questa opzione fa sì che tutte le altre impostazioni in riga di comando e nel file di configurazione vengano ignorate, le preferenze vengano lette dal file di configurazione dato, e anche implica le opzioni \fB\-q \-L\fP . .SH NOTE .SS Percorsi Per tutte le opzioni che accettano un \fI\fP, se il \fIpercorso\fP non contiene una directory (ossia è solo un nome di file), allora si assume che esso sia presente nella directory di configurazione di aMule, \fI~/.aMule\fP. .SS Linguaggi Il parametro \fI\fP per l'opzione \fB\-l\fP ha la forma seguente: \fIlinguaggio\fP[\fB_\fP\fILINGUAGGIO\fP][\fB.\fP\fIcodifica\fP][\fB@\fP\fImodificatore\fP] dove \fIlinguaggio\fP è il linguaggio primario, \fILINGUAGGIO\fP è il sottotipo/territorio, \fIcodifica\fP è l'insieme di caratteri usato e \fImodificatore\fP consente all'utente di selezionare una specifica istanza dei dati di localizzazione all'interno di una singola categoria. Per esempio, le stringhe seguenti sono valide: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Sebbene tutte le stringhe sopra elencate sono accettate come definizioni di linguaggio valide, \fIcodifica\fP e \fImodificatore\fP sono ancora inutilizzati. In aggiunta al formato di cui sopra, si può anche specificare il nome completo del linguaggio in inglese, e quindi \fB\-l german\fP è valido ed equivalente a \fB\-l de_DE\fP. Quando nessun linguaggio è definito in riga di comando o nel file di configurazione, verrà usato il linguaggio di default del sistema. .SH "SUPPORTO AGLI SKIN" \fBamuleweb\fP può visualizzare l'informazione utilizzando diversi \&'skin'. Questi 'skin' sono contenuti in dei modelli, e si può far caricare da amuleweb un dato modello tramite l'opzione \fB\-t\fP in riga di comando. I modelli sono cercati in due posti: prima in \fI~/.aMule/webserver/\fP e quindi in \fI/usr/share/amule/webserver/\fP se aMule è stato installato con \-\-prefix=/usr. .PP Ogni modello deve essere in una sottodirectory del nome di modello, e questa directory deve contenere tutti i file necessari al modello. .SH FILE ~/.aMule/remote.conf .br ~/.aMule/webserver/ .br \fI$(pkgdatadir)\fP/webserver/ .SH ESEMPIO Di norma amuleweb sarà inizialmente eseguito con: .PP \fBamuleweb\fP \fB\-h\fP \fInomehost\fP \fB\-p\fP \fIECporta\fP \fB\-P\fP \fIpasswordEC\fP \fB\-s\fP \fIportaHTTP\fP \fB\-A\fP \fIPasswordAmministrazione\fP \fB\-w\fP .PP o .PP \fBamuleweb\fP \fB\-\-create\-config\-from\fP=\fI/home/username/.aMule/amule.conf\fP .PP In questo modo la configurazione verrà salvata in \fI$HOME/.aMule/remote.conf\fP, e le volte successive si dovrà solo digitare: .PP .B_untranslated amuleweb .PP Ovviamente, si possono specificare più o meno opzioni della prima riga di esempio, e si si possono anche omettere completamente. .SH "SEGNALARE I BUG" Per favore segnalare i bug nel nostro forum (\fIhttp://forum.amule.org/\fP) o nel nostro bugtracker (\fIhttp://bugs.amule.org/\fP). Per favore non segnalare i bug via posta elettronica, né nella nostra mailing list né direttamente a qualunque membro del gruppo. .SH COPYRIGHT aMule e tutti i programmi di utilità correlati sono distribuiti in accordo alla GNU General Public License. .SH "VEDI ANCHE" .B_untranslated amule\fR(1), \fBamulecmd\fR(1) .SH AUTORE Questa pagina del manuale è stata scritta da Vollstrecker .SH TRADUZIONE ITALIANA Stefano Corti amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuleweb.ro.10000644000175000017500000002062112611472361021511 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEWEB 1 "Noiembrie 2011" "aMule webserver v2.3.1" "utilitare aMule" .als B_untranslated B .als RB_untranslated RB .SH NUME amuleweb \- aMule server web .SH REZUMAT .B_untranslated amuleweb [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] .RB_untranslated [ \-w ] [\fB\-t\fP \fI\fP] [\fB\-s\fP \fI\fP] .RB_untranslated [ \-u ] [\fB\-U\fP \fI\fP] .RB_untranslated [ \-z ] .RB_untranslated [ \-Z ] [\fB\-A\fP \fI\fP] [\fB\-G\fP \fI\fP] .RB_untranslated [ \-a " " | " " \-d ] .RB_untranslated [ \-L ] .RB_untranslated [ \-\-no\-php ] .RB_untranslated [ \-N ] .B_untranslated amuleweb [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amuleweb .RB_untranslated [ \-\-help ] .B_untranslated amuleweb .RB_untranslated [ \-\-version ] .B_untranslated amuleweb [\fB\-\-amule\-config\-file\fP=\fI\fP] .SH DESCRIERE \fBamuleweb\fP vă administrează accesul la amule printr\-un navigator web. Puteți porni amuleweb împreună cu \fBamule\fP(1), sau separat, oricând mai târziu. Pot fi specificate opțiuni prin linia de comandă sau prin fișierul de configurare. Opțiunile din linia de comandă au prioritate față de opțiunile din fișierul de configurare. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP Gazda unde rulează aMule (implicit: \fIlocalhost\fP). \fI\fP ar putea fi o adresă IP sau un nume DNS .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP Portul aMule pentru conexiuni externe, cum este configurat în Preferințe\->Control la distanță (implicit: \fI4712\fP) .TP \fB[ \-P\fP \fI\fP, \fB\-\-password\fP=\fI\fP \fB]\fP Parolă conexiuni externe. .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP Utilizează fișierul de configurare dat. Fișierul de configurare implicit este \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Nu tipării nici o ieșire la stdout. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Fi detaliat \- arată și mesajele de depanare. .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Configurați localizarea aplicației (limba). Vedeți secțiunea \fBNOTES\fP pentru descrierea parametrului \fI\fP . .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Scrie opțiunile liniei de comandă în fișierul de configurare și ieși .TP \fB[ \-t\fP \fI\fP, \fB\-\-template\fP=\fI\fP \fB]\fP Încarcă modelul denumit \fI\fP. Vedeți secțiunea \fBSKIN SUPPORT\fP pentru detalii. .TP \fB[ \-s\fP \fI\fP, \fB\-\-server\-port\fP=\fI\fP \fB]\fP Portul HTTP al serverului web. Acesta este portul pe care trebuie să\-l indicați navigatorului (implicit: \fI4711\fP). .TP .B_untranslated [ \-u ]\fR .br Activare UPnP. .TP \fB[ \-U\fP \fI\fP, \fB\-\-upnp\-port\fP \fI\fP \fB]\fP Port UPnP. .TP .B_untranslated [ \-z\fR, \fB\-\-enable\-gzip ]\fR Activează utilizând compresia gzip în traficul HTTP pentru a salva lățimea de bandă. .TP .B_untranslated [ \-Z\fR, \fB\-\-disable\-gzip ]\fR Dezactivează utilizând compresia gzip (aceasta este implicita). .TP \fB[ \-A\fP \fI\fP, \fB\-\-admin\-pass\fP=\fI\fP \fB]\fP Parola pentru accesul nerestricționat pentru serverul web. .TP \fB[ \-G\fP \fI\fP, \fB\-\-guest\-pass\fP=\fI\fP \fB]\fP Parolă oaspete pentru webserver. .TP .B_untranslated [ \-a\fR, \fB\-\-allow\-guest ]\fR Permite accesul oaspeților. .TP .B_untranslated [ \-d\fR, \fB\-\-deny\-guest ]\fR Interzice accesul oaspeților (implicit). .TP .B_untranslated [ \-L\fR, \fB\-\-load\-settings ]\fR Încarcă/Salvează configurările serverului web din/la aMule distant. Aceasta determină amuleweb să ignore configurările din linia de comandă sau fișierul de configurare și să le încarece din aMule. Când se salvează preferințele nu se va scrie nimic în fișierul de configurare, doar la aMule. (Desigur, aceasta funcționează doar pentru acele configurări care pot fi configurate în aMule la Preferințe\->Control la distanță.) .TP .B_untranslated [ \-\-no\-php ]\fR Dezactivează interpretorul PHP (învechit) .TP .B_untranslated [ \-N\fR, \fB\-\-no\-script\-cache ]\fR Recompilează paginile PHP la fiecare cerere. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP Creează fișierul de configurare bazat pe \fI\fP, care trebuie să indice la un fișier de configurare aMule valid, iar apoi ieși. .TP .B_untranslated [ \-\-help ]\fR Tipărește o scurtă descriere de utilizare. .TP .B_untranslated [ \-\-version ]\fR Afișează numărul versiunii curente. .TP \fB[ \-\-amule\-config\-file\fP=\fI\fP \fB]\fP Calea fișierului de configurare aMule. \fBNU UTILIZAȚI DIRECT!\fP aMule utilizează această opțiune când pornește amuleweb la pornirea aMule. Această opțiune cauzează tuturor celorlalte configurări din linia de comandă și fișiere de configurare să fie ignorate, preferințele vor fi citite din fișierul de configurare dat, de asemenea implică și opțiunile \fB\-q \-L\fP . .SH NOTE .SS Căi Pentru toate opțiunile care iau o \fI\fP valoare, dacă \fIpath\fP nu conține nici o parte a unui director (ex. doar un nume de fișier simplu), atunci se consideră a fi sub directorul de configurare aMule, \fI~/.aMule\fP. .SS Limbi Parametrul \fI\fP pentru opțiunea \fB\-l\fP are următoarea formă: \fIlang\fP[\fB_\fP\fILANG\fP][\fB.\fP\fIencoding\fP][\fB@\fP\fImodifier\fP] unde \fIlang\fP este limba primară, \fILANG\fP este dialectul/teritoriul, \fIencoding\fP este setul de caractere de utilizat iar \fImodifier\fP permite utilizatorului de a specifica o instanță specifică a datelor localizării în cadrul unei singure categorii. De exemplu, următoarele șiruri sunt valide: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Deși toate șirurile de mai sus sunt acceptate ca definiții de limbă valide, \fIencoding\fP și \fImodifier\fP sunt momentan neutilizate. În completare la formatul de mai sus, puteți specifica și numele întreg al limbii în engleză \- so \fB\-l german\fP este valid și similar cu \fB\-l de_DE\fP. Când nu este definită nici o limbă, în linia de comandă sau în fișierul de configurare, va fi utilizată limba implicită a sistemului de operare. .SH "SUPORT ASPECT" \fBamuleweb\fP este capabil să afișeze informația în diferite aspecte. Aceste aspecte se numesc modele, și puteți face ca amuleweb să încarce un model anumit prin \fB\-t\fP opțiune linie de comandă. Modelele sunt căutate în două locuri: întâi în \fI~/.aMule/webserver/\fP apoi în \fI/usr/share/amule/webserver/\fP dacă a fost instalat cu \-\-prefix=/usr. .PP Fiecare șablon trebuie să fie într\-un subdirector al numelui șablonului, iar acest director trebuie să conțină toate fișierele de care șablonul are nevoie. .SH FIȘIERE ~/.aMule/remote.conf .br ~/.aMule/webserver/ .br \fI$(pkgdatadir)\fP/webserver/ .SH EXEMPLU De obicei amuleweb va rula la început ca: .PP \fBamuleweb\fP \fB\-h\fP \fInume gazdă\fP \fB\-p\fP \fIECport\fP \fB\-P\fP \fIECprolă\fP \fB\-s\fP \fIHTTPport\fP \fB\-A\fP \fIParolă administrator\fP \fB\-w\fP .PP sau .PP \fBamuleweb\fP \fB\-\-create\-config\-from\fP=\fI/home/username/.aMule/amule.conf\fP .PP Aceasta va salva configurările la \fI$HOME/.aMule/remote.conf\fP, iar mai târziu trebuie doar să tastați: .PP .B_untranslated amuleweb .PP Desigur, puteți specifica cât de multe sau cât de puține opțiuni în linia primului exemplu, și de asemenea le puteți omite integral. .SH "RAPORTAREA ERORILOR" Vă rugăm să raportați erorile fie pe forumul nostru(\fIhttp://forum.amule.org/\fP), sau în bugtracker\-ul nostru (\fIhttp://bugs.amule.org/\fP). Nu raportați erorile pe email, nici la lista noastră de adrese nici direct la nici un membru al echipei. .SH "DREPT DE AUTOR" aMule și toate utilitarele conexe sunt distribuite sub GNU General Public License. .SH "VEDEȚI ȘI" .B_untranslated amule\fR(1), \fBamulecmd\fR(1) .SH AUTOR Această pagină manual a fost scrisă de Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuleweb.ru.10000644000175000017500000002646712611472361021535 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEWEB 1 "November 2011" "aMule webserver v2.3.1" "утилиты aMule" .als B_untranslated B .als RB_untranslated RB .SH ИМЯ amuleweb \- вебсервер aMule .SH ОБЗОР .B_untranslated amuleweb [\fB\-h\fP \fI<хост>\fP] [\fB\-p\fP \fI<порт>\fP] [\fB\-P\fP \fI<пароль>\fP] [\fB\-f\fP \fI<путь>\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI<язык>\fP] .RB_untranslated [ \-w ] [\fB\-t\fP \fI<имя>\fP] [\fB\-s\fP \fI<порт>\fP] .RB_untranslated [ \-u ] [\fB\-U\fP \fI<порт>\fP] .RB_untranslated [ \-z ] .RB_untranslated [ \-Z ] [\fB\-A\fP \fI<пароль>\fP] [\fB\-G\fP \fI<пароль>\fP] .RB_untranslated [ \-a " " | " " \-d ] .RB_untranslated [ \-L ] .RB_untranslated [ \-\-no\-php ] .RB_untranslated [ \-N ] .B_untranslated amuleweb [\fB\-\-create\-config\-from\fP=\fI<путь>\fP] .B_untranslated amuleweb .RB_untranslated [ \-\-help ] .B_untranslated amuleweb .RB_untranslated [ \-\-version ] .B_untranslated amuleweb [\fB\-\-amule\-config\-file\fP=\fI<путь>\fP] .SH ОПИСАНИЕ \fBamuleweb\fP организует доступ к amule через веб браузер. Вы можете запустить amuleweb вместе с \fBamule\fP(1), или отдельно позже. Настройки могут быть определены с помощью командной строки или файла конфигурации. Опции командной строки являются приоритетными по отношению к файлу конфигурации. .TP \fB[ \-h\fP \fI<хост>\fP, \fB\-\-host\fP=\fI<хост>\fP \fB]\fP Адрес компьютера на котором работает aMule (по умолчанию: \fIlocalhost\fP). \fI<Хост>\fP может быть IP\-адресом или DNS\-именем. .TP \fB[ \-p\fP \fI<порт>\fP, \fB\-\-port\fP=\fI<порт>\fP \fB]\fP Порт, который использует aMule для внешних соединений. Указывается в Настройках\->Удаленное управление (по умолчанию: \fI4712\fP) .TP \fB[ \-P\fP \fI<пароль>\fP, \fB\-\-password\fP=\fI<пароль>\fP \fB]\fP Пароль для внешних соединений. .TP \fB[ \-f\fP \fI<путь>\fP, \fB\-\-config\-file\fP=\fI<путь>\fP \fB]\fP Использовать указанный файл конфигурации. По умолчанию используется \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Не печетать ничего в стандартный вывод. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Выводить также отладочную информацию. .TP \fB[ \-l\fP \fI<язык>\fP, \fB\-\-locale\fP=\fI<язык>\fP \fB]\fP Задать локаль (язык). См. секцию \fBЗАМЕЧАНИЯ\fP для дополнительной информации по параметру \fI<язык>\fP. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Записать параметр командной строки в файл конфигурации и выйти .TP \fB[ \-t\fP \fI<имя>\fP, \fB\-\-template\fP=\fI<имя>\fP \fB]\fP Устанавливает шаблон с указанным \fI<именем>\fP. Подробности в секции \fBПОДДЕРЖКА СКИНОВ\fP. .TP \fB[ \-s\fP \fI<порт>\fP, \fB\-\-server\-port\fP=\fI<порт>\fP \fB]\fP HTTP порт вебсервера. Этот порт должен быть указан в строке адреса браузера (по умолчанию: \fI4711\fP). .TP .B_untranslated [ \-u ]\fR .br Включить UPnP. .TP \fB[ \-U\fP \fI<порт>\fP, \fB\-\-upnp\-port\fP \fI<порт>\fP \fB]\fP Порт UPnP. .TP .B_untranslated [ \-z\fR, \fB\-\-enable\-gzip ]\fR Включает использование gzip\-сжатия HTTP данных для уменьшения трафика. .TP .B_untranslated [ \-Z\fR, \fB\-\-disable\-gzip ]\fR Отключает использование gzip\-сжатия (вариант по умолчанию). .TP \fB[ \-A\fP \fI<пароль>\fP, \fB\-\-admin\-pass\fP=\fI<пароль>\fP \fB]\fP Пароль для полного доступа к вебсерверу. .TP \fB[ \-G\fP \fI<пароль>\fP, \fB\-\-guest\-pass\fP=\fI<пароль>\fP \fB]\fP Пароль для гостевого доступа к вебсерверу. .TP .B_untranslated [ \-a\fR, \fB\-\-allow\-guest ]\fR Разрешить гостевой доступ. .TP .B_untranslated [ \-d\fR, \fB\-\-deny\-guest ]\fR Запретить гостевой доступ (вариант по умолчанию). .TP .B_untranslated [ \-L\fR, \fB\-\-load\-settings ]\fR Загрузить/сохранить настройки вебсервера из/в удаленный aMule. Это приводит к игнорированию параметров командной строки и конфигурационного файла, и загрузки их из aMule. При сохранении настроек они будут писаться не в файл конфигурации, а в aMule. (Конечно, работает только для настроек которые могут быть заданы через меню Настройки\->Удаленный контроль) .TP .B_untranslated [ \-\-no\-php ]\fR Отключить интерпретатор PHP (устарело) .TP .B_untranslated [ \-N\fR, \fB\-\-no\-script\-cache ]\fR Перекомпилирует страницы PHP при каждом обращении. .TP \fB[ \-\-create\-config\-from\fP=\fI<путь>\fP \fB]\fP Создать файл конфигурации на основе файла указанного в \fI<пути>\fP и выйти. Указанный файл должен быть валидным файлом конфигурации aMule. .TP .B_untranslated [ \-\-help ]\fR Выводит короткую помощь по использованию. .TP .B_untranslated [ \-\-version ]\fR Выводит информацию о версии. .TP \fB[ \-\-amule\-config\-file\fP=\fI<путь>\fP \fB]\fP Путь к файлу конфигурации aMule. \fBНЕ ИСПОЛЬЗУЙТЕ НАПРЯМУЮ!\fP aMule использует данную опцию для запуска amuleweb вместе с amule. Эта опция приводит к игнорированию параметров командной строки и конфигурационного файла, настройки читаются из заданного файла. Также подразумеваются опции \fB\-q \-L\fP. .SH ЗАМЕЧАНИЯ .SS Пути Для всех опций, в которых указывается \fI<путь>\fP, если \fIпуть\fP не содержит каталога (т.е. только имя самого файла), то предполагается, что файл находится в каталоге конфигурации, \fI~/.aMule\fP. .SS Языки Параметр \fI<язык>\fP для опции \fB\-l\fP имеет следующую форму: \fIязык\fP[\fB_\fP\fIЯЗЫК\fP][\fB.\fP\fIкодировка\fP][\fB@\fP\fIмодификатор\fP], где \fIязык\fP является основным языком, \fIЯЗЫК\fP \- диалект/территория, \fIкодировка\fP \- используемая кодировка символов и \fIмодификатор\fP позволяет пользователю использовать определенный вариант локализации в данной категории. К примеру, все следующие строчки являются приемлемыми: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Хотя все приведенный строки будут приняты, поля \fIкодировка\fP и \fIмодификатор\fP пока не используются. К дополнению к приведенному формату, можно просто указать английское имя языка. Так, \fB\-l russian\fP тоже приемлемо и равносильно \fB\-l ru_RU\fP. Когда язык не указан ни в качестве опции ни в файле конфигурации, используется системный. .SH "ПОДДЕРЖКА СКИНОВ" \fBamuleweb\fP имеет возможность отображать информацию с разными скинами. Эти скины называются шаблонами, и вы можете переключить amuleweb на определенный шаблон использую опцию \fB\-t\fP командной строки. Шаблоны ищутся в двух местах: первое \fI~/.aMule/webserver/\fP, затем \fI/usr/share/amule/webserver/\fP, если инсталяция была проведена с \-\-prefix=/usr. .PP Каждый шаблон должен являться каталогом с именем шаблона, и все необходимые файлы должны находится внутри этого каталога. .SH ФАЙЛЫ ~/.aMule/remote.conf .br ~/.aMule/webserver/ .br \fI$(pkgdatadir)\fP/webserver/ .SH ПРИМЕРЫ Как правило, в первый раз amuleweb запускается так: .PP \fBamuleweb\fP \fB\-h\fP \fIимя_хоста\fP \fB\-p\fP \fIEC_порт\fP \fB\-P\fP \fIEC_пароль\fP \fB\-s\fP \fIHTTP_порт\fP \fB\-A\fP \fIпароль_полного_доступа\fP \fB\-w\fP .PP или .PP \fBamuleweb\fP \fB\-\-create\-config\-from\fP=\fI/home/username/.aMule/amule.conf\fP .PP Это сохранит параметры в \fI$HOME/.aMule/remote.conf\fP, и в дальнейшем надо будет только набрать: .PP .B_untranslated amuleweb .PP Конечно, вы можете указать иное количество аргументов в первой строке примера, или не использовать ее вообще. .SH "СООБЩЕНИЕ ОБ ОШИБКАХ" Пожалуйста, сообщайте об ошибках либо на нашем форуме (\fIhttp://forum.amule.org/\fP), либо в багтрекере (\fIhttp://bugs.amule.org/\fP). Пожалуйста, не сообщайте об ошбках по электронной почте, по нашим спискам рассылки, или напрямую участникам. .SH "АВТОРСКИЕ ПРАВА" aMule и все прилагающиеся инструменты распространаются под Открытым Лицензионным Соглашением GNU (GNU GPL). .SH "СМ. ТАКЖЕ" .B_untranslated amule\fR(1), \fBamulecmd\fR(1) .SH АВТОРЫ Автор страницы помощи: Vollstrecker , перевод: Radist Morse amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuleweb.tr.10000644000175000017500000002054312611472361021521 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEWEB 1 "Kasım 2011" "aMule webserver v2.3.1" "aMule yardımcı araçları" .als B_untranslated B .als RB_untranslated RB .SH İSİM amuleweb \- aMule web sunucusu .SH KULLANIM .B_untranslated amuleweb [\fB\-h\fP \fI\fP] [\fB\-p\fP \fI\fP] [\fB\-P\fP \fI<şifre>\fP] [\fB\-f\fP \fI\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI\fP] .RB_untranslated [ \-w ] [\fB\-t\fP \fI\fP] [\fB\-s\fP \fI\fP] .RB_untranslated [ \-u ] [\fB\-U\fP \fI\fP] .RB_untranslated [ \-z ] .RB_untranslated [ \-Z ] [\fB\-A\fP \fI<şifre>\fP] [\fB\-G\fP \fI<şifre>\fP] .RB_untranslated [ \-a " " | " " \-d ] .RB_untranslated [ \-L ] .RB_untranslated [ \-\-no\-php ] .RB_untranslated [ \-N ] .B_untranslated amuleweb [\fB\-\-create\-config\-from\fP=\fI\fP] .B_untranslated amuleweb .RB_untranslated [ \-\-help ] .B_untranslated amuleweb .RB_untranslated [ \-\-version ] .B_untranslated amuleweb [\fB\-\-amule\-config\-file\fP=\fI\fP] .SH AÇIKLAMA \fBamuleweb\fP amule'e bir ağ tarayıcısı ile erişmenize olanak sağlar. amuleweb'i amule ile aynı anda ya da ayrı olarak, daha sonra ne zaman isterseniz başlatabilirsiniz. Seçenekleri komut satırı ya da yapılandırma dosyası ile belirtmek mümkündür. Komut satırı ile belirtilen seçenekler yapılandırma dosyası ile belirtilenlerden daha yüksek önceliklidir. .TP \fB[ \-h\fP \fI\fP, \fB\-\-host\fP=\fI\fP \fB]\fP aMule'ün çalıştığı sunucu ya da bilgisayar (varsayılan: \fIlocalhost\fP). \fI\fP bir IP adresi ya da DNS ismi olabilir .TP \fB[ \-p\fP \fI\fP, \fB\-\-port\fP=\fI\fP \fB]\fP aMule'ün dışarıya bağlandığında kullandığı port, Ayarlar\->Uzak Denetimler seçeneğinde belirlenir (varsayılan: \fI4712\fP) .TP \fB[ \-P\fP \fI<şifre>\fP, \fB\-\-password\fP=\fI<şifre>\fP \fB]\fP Dışarıdan yapılan bağlantılar için şifre. .TP \fB[ \-f\fP \fI\fP, \fB\-\-config\-file\fP=\fI\fP \fB]\fP Belirtilen yapılandırma dosyasını kullanır. Varsayılan yapılandırma dosyası şudur: \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR Standart çıktıya hiçbir veri yazdırmaz. .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR Geveze olur \- debug mesajlarını da gösterir. .TP \fB[ \-l\fP \fI\fP, \fB\-\-locale\fP=\fI\fP \fB]\fP Programın kullandığı dili belirler. \fI\fP parametresinin tanımlaması için \fBNOTLAR\fP bölümüne bakınız. .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR Komut satırı seçeneklerini yapılandırma dosyasına yazıp çıkar .TP \fB[ \-t\fP \fI\fP, \fB\-\-template\fP=\fI\fP \fB]\fP Adı \fI\fP olan şablonu yükler. Ayrıntılar için \fBTEMA DESTEĞİ\fP bölümüne bakınız. .TP \fB[ \-s\fP \fI\fP, \fB\-\-server\-port\fP=\fI\fP \fB]\fP Web sunucusunun HTTP portu. Bu ağ tarayıcınızda kullanmanız gereken port numarasıdır (varsayılan: \fI4711\fP). .TP .B_untranslated [ \-u ]\fR .br UPnP'yi etkinleştirir. .TP \fB[ \-U\fP \fI\fP, \fB\-\-upnp\-port\fP \fI\fP \fB]\fP UPnP port numarası. .TP .B_untranslated [ \-z\fR, \fB\-\-enable\-gzip ]\fR Bant genişliğinden tasarruf etmek için gzip sıkıştırmasını etkinleştirir. .TP .B_untranslated [ \-Z\fR, \fB\-\-disable\-gzip ]\fR Gzip sıkıştırmasını devre dışı bırakır (bu varsayılan değerdir). .TP \fB[ \-A\fP \fI<şifre>\fP, \fB\-\-admin\-pass\fP=\fI<şifre>\fP \fB]\fP Sunucuya tam erişim için şifre (parola). .TP \fB[ \-G\fP \fI<şifre>\fP, \fB\-\-guest\-pass\fP=\fI<şifre>\fP \fB]\fP Web sunucusu için misafir şifresi. .TP .B_untranslated [ \-a\fR, \fB\-\-allow\-guest ]\fR Misafir erişimini etkinleştirir. .TP .B_untranslated [ \-d\fR, \fB\-\-deny\-guest ]\fR Misafir erişimine izin vermez (varsayılan değer). .TP .B_untranslated [ \-L\fR, \fB\-\-load\-settings ]\fR web sunucusu ayarlarını aMule'den/aMule'e yükler/kaydeder. Bu amuleweb'in komut satırı ve yapılandırma dosyası ayarlarını görmezden gelmesine yol açar. Ayarlar kaydedilirken hiçbiri yapılandırma dosyasına yazılmaz, aMule'e yazılır. (Tabii ki bu sadece aMule'ün Ayarlar\->Uzak Denetiminde kurulabilen değerler için geçerlidir.) .TP .B_untranslated [ \-\-no\-php ]\fR PHP yorumlayıcısını devre dışı bırakır (eskimiş) .TP .B_untranslated [ \-N\fR, \fB\-\-no\-script\-cache ]\fR PHP sayfalarını her sorguda yeniden derler. .TP \fB[ \-\-create\-config\-from\fP=\fI\fP \fB]\fP \fI\fPa dayalı yapılandırma dosyası yaratır ve çıkar. Yolun geçerli bir aMule dosyasına işaret etmesi gerekir. .TP .B_untranslated [ \-\-help ]\fR Kısa bir kullanım açıklaması görüntüler. .TP .B_untranslated [ \-\-version ]\fR Geçerli sürüm numarasını görüntüler. .TP \fB[ \-\-amule\-config\-file\fP=\fI\fP \fB]\fP aMule yapılandırma dosyasına erişim yolu. \fBDOĞRUDAN KULLANMAYIN!\fP aMule bu seçeneği amuleweb'i aMule ile başlatırken kullanır. Bu seçenek diğer tüm komut satırı ve yapılandırma dosyası ayarlarının görmezden gelinmesine, ayarların verilen yapılandırma dosyasından okunmasına yol açar ve \fB\-q \-L\fP seçeneklerinin kullanılacağı anlamına da gelir. .SH NOTLAR .SS Yollar \fI\fP değeri alan tüm seçenekler için eğer \fIyol\fP hiçbir dizin içermiyorsa (yani sadece bir dosya ismiyse) aMule yapılandırma dizini (\fI~/.aMule\fP) varsayılır. .SS Diller \fB\-l\fP seçeneği için \fI\fP parametresi şu biçimde kullanılmalıdır: \fIdil\fP[\fB_\fP\fIDİL\fP][\fB.\fP\fIkodlama\fP][\fB@\fP\fIniteleyici\fP] ki burada \fIdil\fP birinci dil, \fIDİL\fP lehçe/bölge, \fIkodlama\fP karakter setidir ve \fIniteleyici\fP kullanıcıya belli bir kategori içinde belli yerelleştirme verileri kullanma olanağı sağlar. Örnek olarak, aşağıdaki dizeler geçerlidir: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE Yukarıdaki tüm dizeler geçerlidir ancak \fIkodlama\fP ve \fIniteleyici\fP henüz kullanılmamaktadır. Yukarıdakilere ek olarak dil isimlerini İngilizce olarak belirtebilirsiniz \- yani \fB\-l german\fP ile \fB\-l de_DE\fP eşdeğerdir ve ikisi de geçerlidir. Ne komut satırında ne de yapılandırma dosyasında hiçbir dil belirtilmediği zaman sistemin varsayılan dili kullanılacaktır. .SH "TEMA DESTEĞİ" \fBamuleweb\fP bilgileri çeşitli temalarda görüntüleyebilir. Bu temalara şablon adı verilir ve amuleweb'in belli bir şablonu yüklemesini \fB\-t\fP komut satırı seçeneği ile sağlayabilirsiniz. Şablonlar iki konumda aranır: önce \fI~/.aMule/webserver/\fP konumunda, sonra da, kurulum \-\-prefix=/usr ile yapıldıysa \fI/usr/share/amule/webserver/\fP konumunda. .PP Her şablonun şablon isminin alt dizininde bulunması gerekir ve bu dizinin şablonun ihtiyaç duyduğu tüm dosyaları bulundurması şarttır. .SH DOSYALAR ~/.aMule/remote.conf .br ~/.aMule/webserver/ .br \fI$(pkgdatadir)\fP/webserver/ .SH ÖRNEK Tipik olarak amuleweb ilk defada şu şekilde başlayacaktır: .PP \fBamuleweb\fP \fB\-h\fP \fIhostismi\fP \fB\-p\fP \fIDBport\fP \fB\-P\fP \fIDBşifresi\fP \fB\-s\fP \fIHTTPport\fP \fB\-A\fP \fIAdminŞifresi\fP \fB\-w\fP .PP ya da .PP \fBamuleweb\fP \fB\-\-create\-config\-from\fP=\fI/home/kullanıcıadı/.aMule/amule.conf\fP .PP Ayarları \fI$HOME/.aMule/remote.conf\fP dosyasına kayıt eder ve daha sonra sadece şunu girmeniz yeterli olacaktır: .PP .B_untranslated amuleweb .PP Tabii ki ilk örnek satırında daha az ya da fazla seçenek belirtebilirsiniz, hatta onu tamamen görmezden gelebilirsiniz. .SH GERİBİLDİRİM Hataları bildirmek için forumumuzu (\fIhttp://forum.amule.org/\fP) ya da hata takipçimizi (\fIhttp://bugs.amule.org/\fP) kullanınız. Hataları bildirmek için e\-mail ve e\-mail listemizi kullanmamanızı ve geliştiricilerden birine doğrudan bildirmemenizi rica ederiz. .SH "TELİF HAKKI" aMule ve ilgili tüm yardımcı araçları GNU Genel Kamu Lisansı çerçevesinde dağıtılmaktadır. .SH "İLGİLİ BELGELER" .B_untranslated amule\fR(1), \fBamulecmd\fR(1) .SH YAZAN Bu kılavuz sayfası Vollstrecker tarafından yazılmıştır. amule_2.3.1+git20151120.0023527bc2.orig/docs/man/amuleweb.zh_TW.10000644000175000017500000001671612611472361022136 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH AMULEWEB 1 "2011 十一月" "aMule webserver v2.3.1" "aMule 的工具程式" .als B_untranslated B .als RB_untranslated RB .SH 名稱 amuleweb \- aMule 網頁伺服器 .SH 簡介 .B_untranslated amuleweb [\fB\-h\fP \fI<主機>\fP] [\fB\-p\fP \fI<通訊埠>\fP] [\fB\-P\fP \fI<密碼>\fP] [\fB\-f\fP \fI<路徑>\fP] .RB_untranslated [ \-q ] .RB_untranslated [ \-v ] [\fB\-l\fP \fI<語言>\fP] .RB_untranslated [ \-w ] [\fB\-t\fP \fI<名稱>\fP] [\fB\-s\fP \fI<通訊埠t>\fP] .RB_untranslated [ \-u ] [\fB\-U\fP \fI<通訊埠>\fP] .RB_untranslated [ \-z ] .RB_untranslated [ \-Z ] [\fB\-A\fP \fI<密碼>\fP] [\fB\-G\fP \fI<密碼>\fP] .RB_untranslated [ \-a " " | " " \-d ] .RB_untranslated [ \-L ] .RB_untranslated [ \-\-no\-php ] .RB_untranslated [ \-N ] .B_untranslated amuleweb [\fB\-\-create\-config\-from\fP=\fI<路徑>\fP] .B_untranslated amuleweb .RB_untranslated [ \-\-help ] .B_untranslated amuleweb .RB_untranslated [ \-\-version ] .B_untranslated amuleweb [\fB\-\-amule\-config\-file\fP=\fI<路徑>\fP] .SH 說明 \fBamuleweb\fP 可以經由網頁瀏覽器來管理 amule。你可以和 \fBamule\fP(1) 一起執行 amuleweb,也可以稍候再另外執行。可以在命令列或是用用設定檔指定參數,命令列參數會優先於設定檔的參數。 .TP \fB[ \-h\fP \fI<主機>\fP, \fB\-\-host\fP=\fI<主機>\fP \fB]\fP 正在執行 aMule 核心的主機 (預設:\fI本機\fP), \fI<主機>\fP 可以是 IP 位址或網域名稱 .TP \fB[ \-p\fP \fI<通訊埠>\fP, \fB\-\-port\fP=\fI<通訊埠>\fP \fB]\fP aMule 外部連線用的通訊埠,在 偏好設定 > 遠端控制 設定 (預設:\fI4712\fP) .TP \fB[ \-P\fP \fI<密碼>\fP, \fB\-\-password\fP=\fI<密碼>\fP \fB]\fP 外部連線密碼。 .TP \fB[ \-f\fP \fI<路徑>\fP, \fB\-\-config\-file\fP=\fI<路徑>\fP \fB]\fP 使用指定的設定檔,預設是 \fI~/.aMule/remote.conf\fP .TP .B_untranslated [ \-q\fR, \fB\-\-quiet ]\fR 不將任何資訊顯示在標準輸出。 .TP .B_untranslated [ \-v\fR, \fB\-\-verbose ]\fR 詳細模式 \- 也顯示除錯訊息。 .TP \fB[ \-l\fP \fI<語言>\fP, \fB\-\-locale\fP=\fI<語言>\fP \fB]\fP 設定程式的語系 (語言)。請看 \fB附註\fP 章節裏關於 \fI<語言>\fP 參數的說明。 .TP .B_untranslated [ \-w\fR, \fB\-\-write\-config ]\fR 將命令列選項寫入設定檔後離開 .TP \fB[ \-t\fP \fI<名稱>\fP, \fB\-\-template\fP=\fI<名稱>\fP \fB]\fP 載入 \fI<名稱>\fP 這個模板。詳細請參考 \fB外觀面板支援\fP 章節。 .TP \fB[ \-s\fP \fI<通訊埠>\fP, \fB\-\-server\-port\fP=\fI<通訊埠>\fP \fB]\fP 網頁伺服器的 HTTP 連接埠:要用瀏覽器連線時必須加以指定 (預設:\fI4711\fP)。 .TP .B_untranslated [ \-u ]\fR .br 啟用 UPnP。 .TP \fB[ \-U\fP \fI<通訊埠>\fP, \fB\-\-upnp\-port\fP \fI<通訊埠>\fP \fB]\fP UPnP 通訊埠。 .TP .B_untranslated [ \-z\fR, \fB\-\-enable\-gzip ]\fR 在 HTTP 傳輸時啟用 gzip 壓縮以節省頻寬。 .TP .B_untranslated [ \-Z\fR, \fB\-\-disable\-gzip ]\fR 停用 gzip 壓縮 (這是預設值)。 .TP \fB[ \-A\fP \fI<密碼>\fP, \fB\-\-admin\-pass\fP=\fI<密碼>\fP \fB]\fP 網站伺服器的完整存取密碼。 .TP \fB[ \-G\fP \fI<密碼>\fP, \fB\-\-guest\-pass\fP=\fI<密碼>\fP \fB]\fP 網站伺服器的訪客密碼。 .TP .B_untranslated [ \-a\fR, \fB\-\-allow\-guest ]\fR 允許訪客連線。 .TP .B_untranslated [ \-d\fR, \fB\-\-deny\-guest ]\fR 禁止訪客連線 (預設)。 .TP .B_untranslated [ \-L\fR, \fB\-\-load\-settings ]\fR 從遠端的 aMule 載入網頁伺服器設定/將設定儲存到遠端。這個會使 amuleweb 忽略命令列與設定檔內的設定、並從遠端載入新設定;儲存時則只會寫入遠端 aMule 的設定。(當然,只限於 aMule 的 偏好設定 > 遠端控制 裏的幾個設定項目) .TP .B_untranslated [ \-\-no\-php ]\fR 停用 PHP 解譯器 (不建議) .TP .B_untranslated [ \-N\fR, \fB\-\-no\-script\-cache ]\fR 爲每個要求重編譯 PHP 頁面。 .TP \fB[ \-\-create\-config\-from\fP=\fI<路徑>\fP \fB]\fP 參考 \fI\fP 裏的資料來建立設定檔後離開。(\fI\fP 裏必須有有效的 aMule 設定檔) .TP .B_untranslated [ \-\-help ]\fR 顯示簡短的使用說明。 .TP .B_untranslated [ \-\-version ]\fR 顯示目前的版本號碼。 .TP \fB[ \-\-amule\-config\-file\fP=\fI<路徑>\fP \fB]\fP aMule 設定擋路徑。\fB請不要直接使用!\fP這個選項會導致原有命令列和設定檔的設定都被忽略都被忽略。 啟動 aMule 後在開啟 amuleweb 時會用這個選項,從指定的設定檔讀取偏好設定,並自行加上 \fB\-q \-L\fP 選項。 .SH 附註 .SS 路徑 對於有 \fI<路徑>\fP 的選項,如果 \fI路徑\fP 裏面沒有含目錄 (即只有單純檔名),則會被認為是在 aMule 的設定檔所在目錄 \fI~/.aMule\fP 下。 .SS 語言 \fB\-l\fP 選項的 \fI<語系>\fP 參數有以下幾種樣式:\fIlang\fP[\fB_\fP\fILANG\fP][\fB.\fP\fIencoding\fP][\fB@\fP\fImodifier\fP]。其中:\fIlang\fP 是主要的語系代碼,\fILANG\fP 是語系次分類、使用地區代碼,\fIencoding\fP 是使用的編碼,\fImodifier\fP 則讓使用者用一個代號就指定一組語系設定。例如:「zh_TW.UTF\-8@Taiwan」 例如,以下的字串都有效: .RS .RB_untranslated de .br .RB_untranslated de_DE .br .RB_untranslated de_DE.iso88591 .br .RB_untranslated de_DE@euro .br .RB_untranslated de_DE.iso88591@euro .RE 雖然上面這些都是合於規定的語系設定參數,但 \fIencoding\fP 和 \fImodifier\fP 目前已經沒在使用了。 你也可以使用完整的英文名稱來設定語系,例如:\fB\-l german\fP 也等於 \fB\-l de_DE\fP。 沒有在命令列或設定檔中設定語系時,會使用系統預設語言。 .SH 外觀面板支援 \fBamuleweb\fP 可以用不同的外觀面板顯示資訊;這些面板稱為「模板」,你可以用在命令列用 \fB\-t\fP 選項讓 amuleweb 載入指定的模板。程式會在兩個地方搜尋模板:先從 \fI~/.aMule/webserver/\fP,然後如果是用 \-\-prefix=/usr 安裝程式,就會再到 \fI/usr/share/amule/webserver/\fP 搜尋。 .PP 每個模板都必須被放在以該模板名稱命名的子目錄下,這個目錄裏也必須包含所有模板需要的檔案。 .SH 檔案 ~/.aMule/remote.conf .br ~/.aMule/webserver/ .br \fI$(pkgdatadir)\fP/webserver/ .SH 範例 通常 amuleweb 會優先以這樣執行: .PP \fBamuleweb\fP \fB\-h\fP \fI主機名稱\fP \fB\-p\fP \fI外部連線通訊埠\fP \fB\-P\fP \fI外部連線密碼\fP \fB\-s\fP \fIHTTP 通訊埠\fP \fB\-A\fP \fI管理者密碼\fP \fB\-w\fP .PP 或 .PP \fBamuleweb\fP \fB\-\-create\-config\-from\fP=\fI/home/username/.aMule/amule.conf\fP .PP 這樣就會將設定儲存到 \fI$HOME/.aMule/remote.conf\fP,然後你只需要再輸入: .PP .B_untranslated amuleweb .PP 當然,你可以指定比第一行範例裏更多或更少的選項,甚至您也可以完全不使用。 .SH 回報問題 請到我們的論壇 (\fIhttp://forum.amule.org/\fP) 或錯誤追蹤網站 (\fIhttp://bugs.amule.org/\fP) 回報發現的問題。請不要用 e\-mail 或在我們的群組信件中回報,也不要直接通知某個團隊成員。 .SH 版權 aMule 與附加的工具程式都遵守 GNU 的 GPL 協定。 .SH 參考 .B_untranslated amule\fR(1), \fBamulecmd\fR(1) .SH 作者 說明文件撰寫者: Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/ed2k.10000644000175000017500000000454612611472361020126 0ustar morphmorph.TH ED2K "1" "November 2011" "aMule eD2k link parser v1.5.1" "aMule utilities" .als B_untranslated B .als RB_untranslated RB .SH NAME ed2k \- aMule eD2k link parser .SH SYNOPSIS .B_untranslated ed2k .RB [ \-c " " \fI ] .RB [ \-t " " \fI ] .RB_untranslated [ \-e ] .RB_untranslated [ \-l ] .I .B_untranslated ed2k .RB_untranslated [ \-h ] .B_untranslated ed2k .RB_untranslated [ \-v ] .SH DESCRIPTION Sends the given \fI\fR to aMule, i.e. writes it to the file ~/.aMule/ED2KLinks, which will be checked by aMule every second for links. .TP \fB[ \-c\fR \fI\fR, \fB\-\-config\-dir\fR=\fI\fR \fB]\fR Read config from \fI\fR instead of home .TP \fB[ \-t\fR, \fB\-\-category\fR=\fI\fR \fB]\fR Set category for passed eD2k links to \fI\fR .TP .B_untranslated [ \-e\fR, \fB\-\-emulecollection ]\fR Loads all link found in the emulecollection given as \fI\fR .TP .B_untranslated [ \-l\fR, \fB\-\-list ]\fR Lists all link found in the emulecollection given as \fI\fR .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Prints a short usage description. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Displays the current version number. .TP \fB[ eD2k-link ]\fR Adds an eD2k-link to the core. .PP The eD2k link to be added can be: .RS 3 .IP \(bu 2 a file link (ed2k://|file|...), it will be added to the download queue; .IP \(bu 2 a server link (ed2k://|server|...), it will be added to the server list; .IP \(bu 2 a serverlist link, in which case all servers in the list will be added to the server list; .IP \(bu 2 a magnet link; .IP \(bu 2 an emulecollection file. .RE \fBThe order in which you give the parameters is important.\fR You can give more than one link, and every link can have it's own params. For example \fBed2k -t2 \fR will download \fI\fR in standard category and \fI\fR in category 2. .SH FILES ~/.aMule/ED2KLinks .SH REPORTING BUGS Please report bugs either on our forum (\fIhttp://forum.amule.org/\fR), or in our bugtracker (\fIhttp://bugs.amule.org/\fR). Please do not report bugs in e-mail, neither to our mailing list nor directly to any team member. .SH COPYRIGHT aMule and all of its related utilities are distributed under the GNU General Public License. .SH SEE ALSO .B_untranslated amule\fR(1) .SH AUTHOR This manpage was written by Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/ed2k.de.10000644000175000017500000000561612611472361020514 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ED2K 1 "November 2011" "aMule eD2k Verweis parser v1.5.1" "aMule Hilfsprogramme" .als B_untranslated B .als RB_untranslated RB .SH NAME ed2k \- aMule ED2k Verweis\-Parser .SH SYNTAX .B_untranslated ed2k [\fB\-c\fP \fI\fP] [\fB\-t\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-l ] \fI\fP .B_untranslated ed2k .RB_untranslated [ \-h ] .B_untranslated ed2k .RB_untranslated [ \-v ] .SH BESCHREIBUNG Sends the given \fI\fP to aMule, i.e. writes it to the file ~/.aMule/ED2KLinks, which will be checked by aMule every second for links. .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Liest die Konfiguration anstelle des Home. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Setzt die Kategorie für den übergebenen eD2k Verweis \fI\fP .TP .B_untranslated [ \-e\fR, \fB\-\-emulecollection ]\fR Lädt alle Verweise aus der als \fI\fP übergebenen emulecollection. .TP .B_untranslated [ \-l\fR, \fB\-\-list ]\fR Listet alle Verweise in der emulecollection die als \fI\fP übergeben wurde auf. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Gibt eine kurze Nutzungsbeschreibung aus. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Zeigt die derzeitige Versionsnummer an. .TP \fB[ eD2k\-link ]\fP Fügt einen eD2k\-Verweis zur Downloadliste hinzu. .PP Der eD2k\-Verweis darf enthalten: .RS 3 .IP \(bu 2 ein Link zu einer Datei (ed2k://|file|...), dieser wird Downloadliste hinzugefügt; .IP \(bu 2 ein Link zu einem Server (ed2k://|server|...), dieser wird der Serverliste hinzugefügt; .IP \(bu 2 ein Serverlisten\-Verweis, in diesem Fall werden alle Server dieser Liste der Serverliste hinzugefügt; .IP \(bu 2 ein Magnetverweis; .IP \(bu 2 eine emulecollection Datei. .RE \fBDie Reihenfolge in der du die Parameter angibst, ist entscheidend.\fP Du kannst mehr als einen Verweis übergeben und jeder Verweis kann seine eigenen Parameter haben. Zum Beispiel \fBed2k \-t2 \fP lädt \fI\fP in der Standardkategorie und \fI\fP in Kategorie 2 herunter. .SH DATEIEN ~/.aMule/ED2KLinks .SH "FEHLER MELDEN" Bitte meldet Fehler entweder in unserem Forum (\fIhttp://forum.amule.org/\fP), oder in unseren Bugtracker (\fIhttp://bugs.amule.org/\fP). Bitte meldet uns weder Fehler per E\-Mail, noch auf unsere Mailingliste oder direkt an unsere Teammitglieder. .SH COPYRIGHT aMule und alle seine zugehörigen Anwendungen werden verteilt unter der GNU General Public License .SH "SIEHE AUCH" .B_untranslated amule\fR(1) .SH VERFASSER Diese manpage wurde geschrieben von Vollstrecker Diese manpage wurde übersetzt von Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/ed2k.es.10000644000175000017500000000542112611472361020525 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ED2K 1 "November 2011" "Analizador aMule de enlaces eD2k v1.5.1" "aMule utilidades" .als B_untranslated B .als RB_untranslated RB .SH NOMBRE ed2k \- analizador aMule de enlaces eD2k .SH SINOPSIS .B_untranslated ed2k [\fB\-c\fP \fI\fP] [\fB\-t\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-l ] \fI\fP .B_untranslated ed2k .RB_untranslated [ \-h ] .B_untranslated ed2k .RB_untranslated [ \-v ] .SH DESCRIPCIÓN Sends the given \fI\fP to aMule, i.e. writes it to the file ~/.aMule/ED2KLinks, which will be checked by aMule every second for links. .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Leer configuración desde \fI\fP en lugar de home .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Fijar categoría para enlace eD2k pasado a \fI\fP .TP .B_untranslated [ \-e\fR, \fB\-\-emulecollection ]\fR Loads all link found in the emulecollection given as \fI\fP .TP .B_untranslated [ \-l\fR, \fB\-\-list ]\fR Lists all link found in the emulecollection given as \fI\fP .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Imprime una breve descripción de uso. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Mostrar el número de la versión actual. .TP \fB[ eD2k\-link ]\fP Añadir un enlace eD2k al núcleo. .PP El enlace eD2k para ser añadido puede ser: .RS 3 .IP \(bu 2 un enlace de archivo (ed2k://|archivo|...), será añádido a la cola de descarga. .IP \(bu 2 un enlace de servidor (ed2k://|servidor|...), será añádido a la cola de servidores. .IP \(bu 2 un enlace de lista de servidores, en cuyo caso todos los servidores de la lista serán añadidos a la lista de servidores. .IP \(bu 2 Un enlace magnet; .IP \(bu 2 Un archivo emulecollection. .RE \fBThe order in which you give the parameters is important.\fP You can give more than one link, and every link can have it's own params. For example \fBed2k \-t2 \fP will download \fI\fP in standard category and \fI\fP in category 2. .SH ARCHIVOS ~/.aMule/ED2KLinks .SH "INFORMANDO ERRORES" Por favor informa de fallos ya sea en nuestro foro (\fIhttp://forum.amule.org/\fP), o en nuestro bugtracker (\fIhttp://bugs.amule.org/\fP). Por favor no informe de fallos por correo, ni en nuestras listas, ni directamente al correo de algun miembro del equipo. .SH COPYRIGHT aMule y todas las demás utilidades relacionadas son distribuidas bajo la GNU General Public License. .SH "VEASE TAMBIEN" .B_untranslated amule\fR(1) .SH AUTOR Esta página de manualfue escrita por Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/ed2k.fr.10000644000175000017500000000554112611472361020530 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ED2K 1 "Novembre 2011" "aMule eD2k link parser v1.5.1" "Outils d'aMule" .als B_untranslated B .als RB_untranslated RB .SH NOM ed2k \- analyseur lien eD2k pour aMule .SH SYNOPSIS .B_untranslated ed2k [\fB\-c\fP \fI\fP] [\fB\-t\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-l ] \fI\fP .B_untranslated ed2k .RB_untranslated [ \-h ] .B_untranslated ed2k .RB_untranslated [ \-v ] .SH DESCRIPTION Envoie le \fI\fP à aMule, c'est à dire qu'il l'écrit dans le fichier ~/.aMule/ED2KLinks, qui sera vérifié par aMule chaque seconde pour les liens. .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Utiliser le fichier de config \fI\fP à la place de celui par défaut .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Définir la catégorie pour les liens eD2k passé à \fI\fP .TP .B_untranslated [ \-e\fR, \fB\-\-emulecollection ]\fR Charge tous les liens trouvés dans le emulecollection donné dans \fI\fP .TP .B_untranslated [ \-l\fR, \fB\-\-list ]\fR Liste tous les liens trouvés dans le emulecollection donné dans \fI\fP .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Afficher une court description d'utilisation. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Affiche le numéro de la version actuelle. .TP \fB[ lien eD2k ]\fP Ajoute un lien eD2k au noyau. .PP Le lien eD2k à ajouter peut être : .RS 3 .IP \(bu 2 un lien fichier (ed2k://|fichier|…), il sera ajouté à la file de téléchargement; .IP \(bu 2 un lien serveur (ed2k://|serveur|…), il sera ajouté à la liste des serveurs; .IP \(bu 2 un lien de liste de serveurs, dans ce cas tous les serveurs dans la liste seront ajoutés à la liste des serveurs; .IP \(bu 2 un lien magnétique; .IP \(bu 2 un fichier de collection emule. .RE \fBLe ordre dans lequel vous donnez les paramètres est important.\fP Vous pouvez donner plus d'un lien, et chaque lien peut avoir ses propres paramètres. Par exemple, \fBed2k \-t2 \fP téléchargera \fI\fP dans la catégorie standard et \fI\fP dans la catégorie 2. .SH FICHIERS ~/.aMule/ED2KLinks .SH "RAPPORTER DES BOGUES" Veuillez rapporter les bogues sur notre forum (\fIhttp://forum.amule.org/\fP), ou sur notre bugtracker (\fIhttp://bugs.amule.org/\fP). Veuillez ne pas rapporter les bogues par e\-mail, sur notre liste de diffusion ou directement à n'importe quel membre de l'équipe. .SH COPYRIGHT aMule et tout ses outils sont distribués sous la licence GNU General Public License. .SH "VOIR AUSSI" .B_untranslated amule\fR(1) .SH AUTEUR Cette manpage a été écrite par Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/ed2k.hu.10000644000175000017500000000563112611472361020535 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ED2K 1 "2011. november" "aMule eD2k hivatkozás kezelő v1.5.1" "aMule segédprogramok" .als B_untranslated B .als RB_untranslated RB .SH NÉV ed2k \- Az aMule eD2k hivatkozás kezelő. .SH ÁTTEKINTÉS .B_untranslated ed2k [\fB\-c\fP \fI<útvonal>\fP] [\fB\-t\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-l ] \fI\fP .B_untranslated ed2k .RB_untranslated [ \-h ] .B_untranslated ed2k .RB_untranslated [ \-v ] .SH LEÍRÁS Elküldi a megadott \fI\fP\-t az aMule\-nek, azaz beírja a ~/.aMule/ED2KLinks fájlba, amit az aMule másodpercenként megnéz, hivatkozásokat keresve. .TP \fB[ \-c\fP \fI<útvonal>\fP, \fB\-\-config\-dir\fP=\fI<útvonal>\fP \fB]\fP A beállításokat az \fI<útvonal>\fP\-ból olvassa az alapértelmezett helyett. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP A megadott eD2k hivatkozást a \fI\fP\-adik kategóriába tölti. .TP .B_untranslated [ \-e\fR, \fB\-\-emulecollection ]\fR A megadott gyűjtemény összes fájlját letölti. .TP .B_untranslated [ \-l\fR, \fB\-\-list ]\fR Kilistázza a megadott gyűjtmény összes fájlját. .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Egy rövid használati leírást jelenít meg. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Megjeleníti a verziószámot. .TP \fB[ eD2k\-hivatkozás ]\fP eD2k hivatkozás letöltése. .PP Az eD2k hivatkozás a következő lehet: .RS 3 .IP \(bu 2 egy fájl hivatkozás (ed2k://|file|...), ez a letöltési sorhoz lesz hozzáadva; .IP \(bu 2 egy kiszolgáló hivatkozás (ed2k://|server|...), ez a kiszolgáló\-listához lesz hozzáadva; .IP \(bu 2 egy kiszolgáló\-lista hivatkozás, mely esetben a listában szereplő összes kiszolgáló a kiszolgáló\-listához adódik; .IP \(bu 2 egy magnet hivatkozás; .IP \(bu 2 egy emulecollection (gyűjtemény) fájl. .RE \fBA paraméterek sorrendje számít.\fP Megadhatsz egynél több hivatkozást, mindegyiket a saját paramétereivel. Például az \fBed2k \-t2 \fP parancs a \fI\fP\-et az alapértelmezett, míg a \fI\fP\-t a 2. kategóriába tölti. .SH FÁJLOK ~/.aMule/ED2KLinks .SH "HIBÁK JELENTÉSE" A hibákat kérjük vagy a fórumon (\fIhttp://forum.amule.org/\fP), vagy a hibakövetőben (\fIhttp://bugs.amule.org/\fP) jelentsék. Hibákról kérjük ne írjanak levelet (e\-mail\-t) se a levelezési listára, se közvetlenül valamelyik fejlesztőnek. .SH COPYRIGHT Az aMule és az összes hozzá tartozó segédprogram a GNU General Public License védelme alatt áll. .SH "LÁSD MÉG" .B_untranslated amule\fR(1) .SH SZERZŐ Ezt a kézikönyv lapot Vollstrecker írta. .SH MAGYAR FORDÍTÁS Dévai Tamás amule_2.3.1+git20151120.0023527bc2.orig/docs/man/ed2k.it.10000644000175000017500000000610612611472361020533 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ED2K 1 "Novembre 2011" "Analizzatore di collegamenti eD2k per aMule v1.5.1" "Utilità di aMule" .als B_untranslated B .als RB_untranslated RB .SH NOME ed2k \- Analizzatore di collegamenti eD2k per aMule .SH SINTASSI .B_untranslated ed2k [\fB\-c\fP \fI\fP] [\fB\-t\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-l ] \fI\fP .B_untranslated ed2k .RB_untranslated [ \-h ] .B_untranslated ed2k .RB_untranslated [ \-v ] .SH DESCRIZIONE Invia il \fI\fP ad aMule, cioè lo scrive nel file ~/.aMule/ED2KLinks, che sarà controllato da aMule ogni secondo per nuovi collegamenti. .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Legge la configurazione dal \fI\fP invece che dalla directory dell'utente. .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Imposta la categoria per i collegamenti eD2k ricevuti a \fI\fP .TP .B_untranslated [ \-e\fR, \fB\-\-emulecollection ]\fR Carica tutti i collegamenti trovati nel file emulecollection fornito come \fI\fP .TP .B_untranslated [ \-l\fR, \fB\-\-list ]\fR Elenca tutti i collegamenti trovati nel file emulecollection fornito come \fI\fP .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Visualizza una breve descrizione dell'utilizzo. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Visualizza il numero di versione corrente. .TP \fB[ collegamento\-eD2k ]\fP Aggiunge un collegamento eD2k. .PP Il collegamento eD2k da aggiungere può essere: .RS 3 .IP \(bu 2 un collegamento a un file (ed2k://|file|...), sarà aggiunto alla coda di download; .IP \(bu 2 un collegamento a un server (ed2k://|server|...), sarà aggiunto alla lista dei server; .IP \(bu 2 un collegamento a una lista di server, nel cui caso tutti i server inclusi nella lista verranno aggiunti alla lista dei server; .IP \(bu 2 un collegamento magnet; .IP \(bu 2 un file emulecollection. .RE \fBL'ordine con cui fornisci i parametri è importante.\fP Si può fornire più di un collegamento, e ogni collegamento può avere propri parametri. Per esempio \fBed2k \-t2 \fP eseguirà il download di \fI\fP in categoria standard e \fI\fP in categoria 2. .SH FILE ~/.aMule/ED2KLinks .SH "SEGNALARE I BUG" Per favore segnalare i bug nel nostro forum (\fIhttp://forum.amule.org/\fP) o nel nostro bugtracker (\fIhttp://bugs.amule.org/\fP). Per favore non segnalare i bug via posta elettronica, né nella nostra mailing list né direttamente a qualunque membro del gruppo. .SH COPYRIGHT aMule e tutti i programmi di utilità correlati sono distribuiti in accordo alla GNU General Public License. .SH "VEDI ANCHE" .B_untranslated amule\fR(1) .SH AUTORE Questa pagina del manuale è stata scritta da Vollstrecker .SH TRADUZIONE ITALIANA Stefano Corti amule_2.3.1+git20151120.0023527bc2.orig/docs/man/ed2k.ro.10000644000175000017500000000545012611472361020540 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ED2K 1 "Noiembrie 2011" "Analizor aMule de link\-uri eD2k v1.5.1" "utilitare aMule" .als B_untranslated B .als RB_untranslated RB .SH NUME ed2k \- analizor aMule de linkuri eD2k .SH REZUMAT .B_untranslated ed2k [\fB\-c\fP \fI\fP] [\fB\-t\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-l ] \fI\fP .B_untranslated ed2k .RB_untranslated [ \-h ] .B_untranslated ed2k .RB_untranslated [ \-v ] .SH DESCRIERE Trimite link\-ul dat \fI\fP la aMule, ex. îl scrie în fișierul ~/.aMule/ED2KLinks, care va fi verificat de aMule în fiecare secundă pentru link\-uri. .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Citește configurarea din \fI\fP în schimb de acasă .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP Configurați categoria pentru link\-urile eD2k trecute la \fI\fP .TP .B_untranslated [ \-e\fR, \fB\-\-emulecollection ]\fR Încarcă toate link\-urile găsite în colecția emule date ca \fI\fP .TP .B_untranslated [ \-l\fR, \fB\-\-list ]\fR Listează toate link\-urile găsite în colecția emule date ca \fI\fP .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Tipărește o scurtă descriere de utilizare. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Afișează numărul versiunii curente. .TP \fB[ eD2k\-link ]\fP Adaugă o legătură eD2k la nucleu. .PP Link\-ul eD2k de adăugat poate fi: .RS 3 .IP \(bu 2 un link fișier (ed2k://|file|...), va fi adăugat la coada descărcărilor, .IP \(bu 2 o legătură server (ed2k://|server|...), care va fi adăugată la lista serverelor, .IP \(bu 2 o legătură listă server, în care caz toate serverele din listă vor fi adăugate la lista serverelor; .IP \(bu 2 o legătură magnet; .IP \(bu 2 un fișier colecție emule. .RE \fB Ordinea în care dați parametrii este importantă.\fP Puteți da mai mult decât un link, iar fiecare link poate avea proprii parametri. De exemplu \fBed2k \-t2 \fP va descărca \fI\fP în categoria standard și \fI\fP în categoria 2. .SH FIȘIERE ~/.aMule/ED2KLinks .SH "RAPORTAREA ERORILOR" Vă rugăm să raportați erorile fie pe forumul nostru(\fIhttp://forum.amule.org/\fP), sau în bugtracker\-ul nostru (\fIhttp://bugs.amule.org/\fP). Nu raportați erorile pe email, nici la lista noastră de adrese nici direct la nici un membru al echipei. .SH "DREPT DE AUTOR" aMule și toate utilitarele conexe sunt distribuite sub GNU General Public License. .SH "VEDEȚI ȘI" .B_untranslated amule\fR(1) .SH AUTOR Această pagină manual a fost scrisă de Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/ed2k.ru.10000644000175000017500000000733412611472361020551 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ED2K 1 "November 2011" "aMule парсер ссылок eD2k v1.5.1" "утилиты aMule" .als B_untranslated B .als RB_untranslated RB .SH ИМЯ ed2k \- aMule парсер ссылок eD2k .SH ОБЗОР .B_untranslated ed2k [\fB\-c\fP \fI<путь>\fP] [\fB\-t\fP \fI<число>\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-l ] \fI\fP .B_untranslated ed2k .RB_untranslated [ \-h ] .B_untranslated ed2k .RB_untranslated [ \-v ] .SH ОПИСАНИЕ Пысылает указанную \fI\fP в aMule, т.е. пишет ее в файл ~/.aMule/ED2KLinks, который проверяется каждую секунду. .TP \fB[ \-c\fP \fI<путь>\fP, \fB\-\-config\-dir\fP=\fI<путь>\fP \fB]\fP Прочитать конфигурацию из места, указанного в \fI<пути>\fP, вместо домашнего каталога .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI<номер>\fP \fB]\fP Указать \fI<номер>\fP категории для eD2k ссылок. .TP .B_untranslated [ \-e\fR, \fB\-\-emulecollection ]\fR Загружает все ссылки из emulecollection как \fI\fP .TP .B_untranslated [ \-l\fR, \fB\-\-list ]\fR Перечисляет все ссылки из emulecollection как \fI\fP .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Выводит короткую помощь по использованию. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Выводит информацию о версии. .TP \fB[ eD2k\-ссылка ]\fP Передает eD2k\-ссылку в ядро. .PP Добавляемая eD2k\-ссылка может быть: .RS 3 .IP \(bu 2 файловая ссылка (ed2k://|file|...), она будет добавлена в очередь закачки; .IP \(bu 2 серверная ссылка (ed2k://|server|...), она будет добавлена в список серверов; .IP \(bu 2 ссылка на список серверов, тогда все сервера из списка будут добавлены в список серверов; .IP \(bu 2 magnet\-ссылка; .IP \(bu 2 файл emulecollection. .RE \fBПорядок параметров важен.\fP Вы можете указать более одной ссылки, и каждая ссылка может иметь свои собственные параметры. Например \fBed2k <ссылка1> \-t2 <ссылка2>\fP загрузит \fI<ссылку1>\fP в стандартную категорию и \fI<ссылку2>\fP в категорию 2. .SH ФАЙЛЫ ~/.aMule/ED2KLinks .SH "СООБЩЕНИЕ ОБ ОШИБКАХ" Пожалуйста, сообщайте об ошибках либо на нашем форуме (\fIhttp://forum.amule.org/\fP), либо в багтрекере (\fIhttp://bugs.amule.org/\fP). Пожалуйста, не сообщайте об ошбках по электронной почте, по нашим спискам рассылки, или напрямую участникам. .SH "АВТОРСКИЕ ПРАВА" aMule и все прилагающиеся инструменты распространаются под Открытым Лицензионным Соглашением GNU (GNU GPL). .SH "СМ. ТАКЖЕ" .B_untranslated amule\fR(1) .SH АВТОРЫ Автор страницы помощи: Vollstrecker , перевод: Radist Morse amule_2.3.1+git20151120.0023527bc2.orig/docs/man/ed2k.tr.10000644000175000017500000000577212611472361020554 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ED2K 1 "Kasım 2011" "aMule eD2k bağlantı çözümleyicisi v1.5.1" "aMule yardımcı araçları" .als B_untranslated B .als RB_untranslated RB .SH İSİM ed2k \- aMule eD2k bağlantı çözümleyicisi .SH KULLANIM .B_untranslated ed2k [\fB\-c\fP \fI\fP] [\fB\-t\fP \fI\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-l ] \fI\fP .B_untranslated ed2k .RB_untranslated [ \-h ] .B_untranslated ed2k .RB_untranslated [ \-v ] .SH AÇIKLAMA Herhangi bir \fI\fP aMule'e gönderir, yani onu ~/.aMule/ED2KLinks dosyasına yazar ki bu dosya aMule tarafından her saniye bağlantılar için sorgulanır. .TP \fB[ \-c\fP \fI\fP, \fB\-\-config\-dir\fP=\fI\fP \fB]\fP Yapılandırmayı home yerine \fI\fPdan oku .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI\fP \fB]\fP \fI\fPya gönderilen eD2k bağlantılarının kategorilerini belirler. .TP .B_untranslated [ \-e\fR, \fB\-\-emulecollection ]\fR Bir emule koleksiyonunda \fI\fP şeklinde bulunan tüm bağlantıları yükler .TP .B_untranslated [ \-l\fR, \fB\-\-list ]\fR Bir emule koleksiyonunda \fI\fP şeklinde bulunan tüm bağlantıları listeler .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR Kısa bir kullanım açıklaması görüntüler. .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR Geçerli sürüm numarasını görüntüler. .TP \fB[ eD2k\-bağlantısı ]\fP Çekirdeğe bir eD2k bağlantısı ekler. .PP Eklenecek eD2k bağlantısı şunlardan biri olabilir: .RS 3 .IP \(bu 2 bir dosya bağlantısı (ed2k://|file|...) ki indirmeler kuyruğuna eklenir; .IP \(bu 2 bir sunucu bağlantısı (ed2k://|server|...) ki sunucu listesine eklenir; .IP \(bu 2 bir sunucu listesi bağlantısı, bu durumda listedeki tüm sunucular sunucu listesine eklenir; .IP \(bu 2 bir magnet bağlantısı; .IP \(bu 2 bir emulecollection dosyası. .RE \fBParametrelerin giriş sırası önemlidir.\fP Birden fazla bağlantı girebilirsiniz ve her bağlantının kendine özel parametreleri olabilir. Örneğin \fBed2k \-t2 \fP \fI\fP dosyasını standart kategoriye ve \fI\fP dosyasını ikinci kategoriye indirecektir. .SH DOSYALAR ~/.aMule/ED2KLinks .SH GERİBİLDİRİM Hataları bildirmek için forumumuzu (\fIhttp://forum.amule.org/\fP) ya da hata takipçimizi (\fIhttp://bugs.amule.org/\fP) kullanınız. Hataları bildirmek için e\-mail ve e\-mail listemizi kullanmamanızı ve geliştiricilerden birine doğrudan bildirmemenizi rica ederiz. .SH "TELİF HAKKI" aMule ve ilgili tüm yardımcı araçları GNU Genel Kamu Lisansı çerçevesinde dağıtılmaktadır. .SH "İLGİLİ BELGELER" .B_untranslated amule\fR(1) .SH YAZAN Bu kılavuz sayfası Vollstrecker tarafından yazılmıştır. amule_2.3.1+git20151120.0023527bc2.orig/docs/man/ed2k.zh_TW.10000644000175000017500000000521112611472361021146 0ustar morphmorph.\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ED2K 1 "2011 十一月" "aMule 的 eD2k 連結分析程式 v1.5.1" "aMule 的工具程式" .als B_untranslated B .als RB_untranslated RB .SH 名稱 ed2k \- aMule 的 eD2k 連結分析程式 .SH 簡介 .B_untranslated ed2k [\fB\-c\fP \fI<路徑>\fP] [\fB\-t\fP \fI<號碼>\fP] .RB_untranslated [ \-e ] .RB_untranslated [ \-l ] \fI\fP .B_untranslated ed2k .RB_untranslated [ \-h ] .B_untranslated ed2k .RB_untranslated [ \-v ] .SH 說明 將指定的 \fI\fP 傳送給 aMule,會寫入 aMule 隨時都在檢查有無新增連結的 ~/.aMule/ED2KLinks 檔案裏。 .TP \fB[ \-c\fP \fI<路徑>\fP, \fB\-\-config\-dir\fP=\fI<路徑>\fP \fB]\fP 從 \fI\fP 讀取設定檔,而不是個人目錄 .TP \fB[ \-t\fP, \fB\-\-category\fP=\fI<號碼>\fP \fB]\fP 給輸入成功的 eD2k 連結分類編號為 \fI<號碼>\fP .TP .B_untranslated [ \-e\fR, \fB\-\-emulecollection ]\fR 載入所有以 \fI\fP 方式指定的 eMule 收藏庫裏找到的連結 .TP .B_untranslated [ \-l\fR, \fB\-\-list ]\fR 列出所有以 \fI\fP 方式指定的 eMule 收藏庫裏找到的連結 .TP .B_untranslated [ \-h\fR, \fB\-\-help ]\fR 顯示簡短的使用說明。 .TP .B_untranslated [ \-v\fR, \fB\-\-version ]\fR 顯示目前的版本號碼。 .TP \fB[ eD2k 連結 ]\fP 將 eD2k 連結加到核心。 .PP 可以使用以下幾種 eD2k 連結: .RS 3 .IP \(bu 2 檔案連結 (ed2k://|file|...),會將檔案加入下載等候區; .IP \(bu 2 伺服器連結 (ed2k://|server|...),會將伺服器加入 aMule 的伺服器清單; .IP \(bu 2 伺服器清單連結,在清單內的伺服器會被加入 aMule 的伺服器清單; .IP \(bu 2 magnet 連結; .IP \(bu 2 eMule 收藏庫檔案。 .RE \fB指定參數時的順序很重要。\fP你可以指定兩個以上的連結、每個連結都有自己的參數。例如:\fBed2k <連結一> \-t2 <連結二>\fP 會將 \fI<連結一>\fP 放在「預設分類」、將 \fI<連結二>\fP 放在「分類2」。 .SH 檔案 ~/.aMule/ED2KLinks .SH 回報問題 請到我們的論壇 (\fIhttp://forum.amule.org/\fP) 或錯誤追蹤網站 (\fIhttp://bugs.amule.org/\fP) 回報發現的問題。請不要用 e\-mail 或在我們的群組信件中回報,也不要直接通知某個團隊成員。 .SH 版權 aMule 與附加的工具程式都遵守 GNU 的 GPL 協定。 .SH 參考 .B_untranslated amule\fR(1) .SH 作者 說明文件撰寫者: Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/0000755000175000017500000000000012611472361017624 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-de.add0000644000175000017500000000022212611472361022453 0ustar morphmorphPO4A-HEADER:mode=after;position=^\.TH;beginboundary=^FakePo4aBoundary Diese manpage wurde übersetzt von Vollstrecker amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-de.po0000644000175000017500000016224412611472361022356 0ustar morphmorph# translation of manpages-de.po to # # Werner Mahr , 2007, 2009, 2010. msgid "" msgstr "" "Project-Id-Version: manpages-de\n" "POT-Creation-Date: 2011-10-31 22:06+0100\n" "PO-Revision-Date: 2010-01-29 23:02+0100\n" "Last-Translator: Balla Marcell \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Lokalize 1.0\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" # type: TH #. type: TH #: amule.1:1 #, no-wrap msgid "AMULE" msgstr "AMULE" #. type: TH #: amule.1:1 amulecmd.1:1 amuled.1:1 amulegui.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "November 2011" msgstr "" # type: TH #. type: TH #: amule.1:1 #, fuzzy, no-wrap #| msgid "aMule v2.3.0" msgid "aMule v2.3.1" msgstr "aMule v2.3.0" # type: TH #. type: TH #: amule.1:1 #, no-wrap msgid "aMule" msgstr "aMule" # type: SH #. type: SH #: amule.1:4 amulecmd.1:5 amuled.1:4 amuleweb.1:4 ed2k.1:4 #: ../../src/utils/aLinkCreator/docs/alc.1:3 #: ../../src/utils/aLinkCreator/docs/alcc.1:4 ../../src/utils/cas/docs/cas.1:4 #: ../../src/utils/wxCas/docs/wxcas.1:3 ../../src/utils/xas/docs/xas.1:3 #, no-wrap msgid "NAME" msgstr "NAME" # type: Plain text #. type: Plain text #: amule.1:6 msgid "amule - the all-platform eMule p2p client" msgstr "amule - der alle-Plattformen eMule p2p Client" # type: SH #. type: SH #: amule.1:6 amulecmd.1:7 amuled.1:6 amulegui.1:6 amuleweb.1:6 ed2k.1:6 #: ../../src/utils/aLinkCreator/docs/alc.1:5 #: ../../src/utils/aLinkCreator/docs/alcc.1:6 ../../src/utils/cas/docs/cas.1:6 #: ../../src/utils/wxCas/docs/wxcas.1:5 ../../src/utils/xas/docs/xas.1:5 #, no-wrap msgid "SYNOPSIS" msgstr "SYNTAX" # type: TP #. type: Plain text #: amule.1:10 amulegui.1:10 msgid "[B<-c> IpathE>] [B<-geometry> IgeomE>]" msgstr "[B<-c> IPfadE>] [B<-geometry> IgeomE>]" # type: TP #. type: Plain text #: amule.1:13 amuled.1:15 msgid "[B<-w> IpathE>]" msgstr "[B<-w> IPfadE>]" #. type: Plain text #: amule.1:17 amuled.1:19 #, fuzzy #| msgid "[B<-t> InumE>] [I]" msgid "[B<-t> InumE>] [I]" msgstr "[B<-t> InumE>] [B]" # type: SH #. type: SH #: amule.1:24 amulecmd.1:26 amuled.1:25 amulegui.1:20 amuleweb.1:41 ed2k.1:19 #: ../../src/utils/aLinkCreator/docs/alc.1:7 #: ../../src/utils/aLinkCreator/docs/alcc.1:14 #: ../../src/utils/cas/docs/cas.1:14 ../../src/utils/wxCas/docs/wxcas.1:7 #: ../../src/utils/xas/docs/xas.1:7 #, no-wrap msgid "DESCRIPTION" msgstr "BESCHREIBUNG" # type: Plain text #. type: TP #: amule.1:25 amuled.1:26 amulegui.1:24 ed2k.1:21 #: ../../src/utils/cas/docs/cas.1:26 #, no-wrap msgid "B<[ -c> IpathE>, B<--config-dir>=IpathE> B<]>" msgstr "B<[ -c> IPfadE>, B<--config-dir>=IPfadE> B<]>" # type: Plain text #. type: Plain text #: amule.1:28 amuled.1:29 amulegui.1:27 ed2k.1:24 #: ../../src/utils/cas/docs/cas.1:29 msgid "Read config from IpathE> instead of home" msgstr "Liest die Konfiguration EPfadE anstelle des Home." # type: TP #. type: TP #: amule.1:28 amulegui.1:27 #, no-wrap msgid "B<[ -geometry >IgeomE> B<]>" msgstr "B<[ -geometry >IgeomE> B<]>" # type: Plain text #. type: Plain text #: amule.1:31 amulegui.1:30 msgid "" "Sets the geometry of the app. IgeomE> uses the same format as " "standard X11 apps:\t[B<=>][IwidthE>{B}IheightE>][{B<" "+->}IxoffsetE>{B<+->}IyoffsetE>]" msgstr "" "Gibt die Größe des Programmfensters an. IgeomE> hat das selbe " "Format wie Standard X11 Anwendungen:\t[B<=>][IBreiteE>{B}" "IHöheE>][{B<+->}IxOffsetE>{B<+->}IyOffsetE>]" # type: Plain text #. type: Plain text #: amule.1:34 amuled.1:42 amulegui.1:33 msgid "Prints log messages to stdout." msgstr "Schreibt Log-Meldungen auf die Standardausgabe." # type: Plain text #. type: Plain text #: amule.1:37 amuled.1:45 amulegui.1:36 msgid "Resets config to default values." msgstr "Setzt die Konfiguration auf die Standardwerte zurück." # type: Plain text #. type: TP #: amule.1:37 amuled.1:45 #, no-wrap msgid "B<[ -w> IpathE>, B<--use-amuleweb>=IpathE> B<]>" msgstr "B<[ -w> IPfadE>, B<--use-amuleweb>=IPfadE> B<]>" #. type: Plain text #: amule.1:40 amuled.1:48 msgid "Specify location of amuleweb binary to IpathE>." msgstr "" "Setzt den Ort der ausführbaren Datei von amuleweb auf IPfadE>." # type: Plain text #. type: Plain text #: amule.1:43 amuled.1:51 msgid "Does not handle fatal exception." msgstr "Fehlerbehandlung für fatale Fehler abschalten." # type: Plain text #. type: Plain text #: amule.1:46 amuled.1:54 msgid "Does not disable stdin." msgstr "Schaltet die Standardeingabe nicht ab." # type: TP #. type: TP #: amule.1:46 amuled.1:54 amulegui.1:39 ed2k.1:24 #, no-wrap msgid "B<[ -t>, B<--category>=InumE> B<]>" msgstr "B<[ -t>, B<--category>=INumE> B<]>" #. type: Plain text #: amule.1:49 amuled.1:57 amulegui.1:42 ed2k.1:27 msgid "Set category for passed eD2k links to InumE>" msgstr "Setzt die Kategorie für den übergebenen eD2k Verweis INumE>" # type: Plain text #. type: Plain text #: amule.1:52 amulecmd.1:66 amuled.1:60 amulegui.1:48 amuleweb.1:126 ed2k.1:39 msgid "Displays the current version number." msgstr "Zeigt die derzeitige Versionsnummer an." # type: Plain text #. type: Plain text #: amule.1:55 amulecmd.1:69 amuled.1:63 amulegui.1:45 amuleweb.1:123 ed2k.1:36 #: ../../src/utils/aLinkCreator/docs/alcc.1:22 #: ../../src/utils/cas/docs/cas.1:32 msgid "Prints a short usage description." msgstr "Gibt eine kurze Nutzungsbeschreibung aus." #. type: TP #: amule.1:55 amuled.1:63 ed2k.1:39 #, fuzzy, no-wrap #| msgid "B<[ eD2k-Link ]>" msgid "B<[ eD2k-link ]>" msgstr "B<[ eD2k-Link ]>" # type: Plain text #. type: Plain text #: amule.1:58 amuled.1:66 ed2k.1:42 msgid "Adds an eD2k-link to the core." msgstr "Fügt einen eD2k-Verweis zur Downloadliste hinzu." # type: Plain text #. type: Plain text #: amule.1:60 amulecmd.1:75 amuled.1:68 ed2k.1:44 msgid "The eD2k link to be added can be:" msgstr "Der eD2k-Verweis darf enthalten:" # type: Plain text #. type: Plain text #: amule.1:63 amulecmd.1:78 amuled.1:71 ed2k.1:47 msgid "a file link (ed2k://|file|...), it will be added to the download queue;" msgstr "" "ein Link zu einer Datei (ed2k://|file|...), dieser wird Downloadliste " "hinzugefügt;" # type: Plain text #. type: Plain text #: amule.1:65 amulecmd.1:80 amuled.1:73 ed2k.1:49 msgid "" "a server link (ed2k://|server|...), it will be added to the server list;" msgstr "" "ein Link zu einem Server (ed2k://|server|...), dieser wird der Serverliste " "hinzugefügt;" # type: Plain text #. type: Plain text #: amule.1:67 amuled.1:75 ed2k.1:51 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list;" msgstr "" "ein Serverlisten-Verweis, in diesem Fall werden alle Server dieser Liste der " "Serverliste hinzugefügt;" #. type: Plain text #: amule.1:69 amuled.1:77 msgid "a magnet link." msgstr "ein Magnet Verweis." # type: SH #. type: SH #: amule.1:70 amulecmd.1:207 amuleweb.1:132 #, no-wrap msgid "NOTES" msgstr "ANMERKUNGEN" # type: SS #. type: SS #: amule.1:71 amulecmd.1:208 amuleweb.1:133 #, no-wrap msgid "Paths" msgstr "Pfade" # type: Plain text #. type: Plain text #: amule.1:75 amulecmd.1:212 amuleweb.1:137 msgid "" "For all options which take a IpathE> value, if the I " "contains no directory part (i.e. just a plain filename), then it is " "considered to be under the aMule configuration directory, I<~/.aMule>." msgstr "" "Für alle Optionen die ein IPfadE> Argument erwarten, wenn der " "I kein Verzeichnis enthält(z.B. nur einen Dateinamen), dann wird " "angenommen, diese Datei liegt um aMule-Konfigurationsverzeichnis, I<~/." "aMule>." # type: SH #. type: SH #: amule.1:75 amulecmd.1:240 amuled.1:78 amuleweb.1:171 ed2k.1:60 #: ../../src/utils/cas/docs/cas.1:36 #, no-wrap msgid "FILES" msgstr "DATEIEN" # type: Plain text #. type: Plain text #: amule.1:77 amuled.1:80 msgid "~/.aMule/*" msgstr "~/.aMule/*" # type: SH #. type: SH #: amule.1:77 amulecmd.1:256 amuled.1:80 amulegui.1:48 amuleweb.1:191 #: ed2k.1:62 ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/aLinkCreator/docs/alcc.1:26 #: ../../src/utils/cas/docs/cas.1:42 ../../src/utils/wxCas/docs/wxcas.1:16 #: ../../src/utils/xas/docs/xas.1:16 #, no-wrap msgid "REPORTING BUGS" msgstr "FEHLER MELDEN" # type: Plain text #. type: Plain text #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 msgid "" "Please report bugs either on our forum (I), or in " "our bugtracker (I). Please do not report bugs in e-" "mail, neither to our mailing list nor directly to any team member." msgstr "" "Bitte meldet Fehler entweder in unserem Forum (I), " "oder in unseren Bugtracker (I). Bitte meldet uns " "weder Fehler per E-Mail, noch auf unsere Mailingliste oder direkt an unsere " "Teammitglieder." # type: SH #. type: SH #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 #, no-wrap msgid "COPYRIGHT" msgstr "COPYRIGHT" # type: Plain text #. type: Plain text #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 msgid "" "aMule and all of its related utilities are distributed under the GNU General " "Public License." msgstr "" "aMule und alle seine zugehörigen Anwendungen werden verteilt unter der GNU " "General Public License" # type: SH #. type: SH #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 #, no-wrap msgid "SEE ALSO" msgstr "SIEHE AUCH" # type: SH #. type: SH #: amule.1:84 amulecmd.1:263 amuled.1:87 amulegui.1:55 amuleweb.1:198 #: ed2k.1:69 ../../src/utils/aLinkCreator/docs/alc.1:18 #: ../../src/utils/aLinkCreator/docs/alcc.1:33 #: ../../src/utils/cas/docs/cas.1:49 ../../src/utils/wxCas/docs/wxcas.1:23 #: ../../src/utils/xas/docs/xas.1:23 #, no-wrap msgid "AUTHOR" msgstr "VERFASSER" #. type: Plain text #: amule.1:85 amulecmd.1:264 amuled.1:88 amuleweb.1:199 ed2k.1:70 #: ../../src/utils/aLinkCreator/docs/alc.1:19 #: ../../src/utils/aLinkCreator/docs/alcc.1:34 #: ../../src/utils/cas/docs/cas.1:50 ../../src/utils/wxCas/docs/wxcas.1:24 #: ../../src/utils/xas/docs/xas.1:24 msgid "" "This manpage was written by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Diese manpage wurde geschrieben von Vollstrecker Eamule@vollstreckernet." "deE" # type: TH #. type: TH #: amulecmd.1:1 #, no-wrap msgid "AMULECMD" msgstr "AMULECMD" # type: TH #. type: TH #: amulecmd.1:1 #, fuzzy, no-wrap #| msgid "aMuleCmd v2.3.0" msgid "aMuleCmd v2.3.1" msgstr "aMuleCmd v2.3.0" # type: TH #. type: TH #: amulecmd.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "aMule utilities" msgstr "aMule Hilfsprogramme" # type: Plain text #. type: Plain text #: amulecmd.1:7 msgid "amulecmd - Console-based program to control aMule" msgstr "amulecmd - Konsolenbasiertes Programm um aMule zu steuern" # type: Plain text #. type: Plain text #: amulecmd.1:13 amuleweb.1:12 msgid "" "[B<-h> IhostE>] [B<-p> IportE>] [B<-P> " "IpasswordE>] [B<-f> IpathE>]" msgstr "" "[B<-h> IHostE>] [B<-p> IPortE>] [B<-P> " "IPasswortE>] [B<-f> IPfadE>]" #. type: Plain text #: amulecmd.1:17 msgid "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> IcommandE>]" "B< >}" msgstr "" "[B<-l> ISpracheE>] {B< >[B<-w>]B< >|B< >[B<-c> IBefehlE>]" "B< >}" # type: TP #. type: Plain text #: amulecmd.1:20 amuleweb.1:31 msgid "[B<--create-config-from>=IpathE>]" msgstr "[B<--create-config-from>=IPfadE>]" # type: Plain text #. type: Plain text #: amulecmd.1:29 msgid "B is a console-based client to control aMule." msgstr "B ist ein Konsolenprogramm zur Steuerung von aMule." # type: TP #. type: TP #: amulecmd.1:29 amuleweb.1:46 #, no-wrap msgid "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" msgstr "B<[ -h> IHostE>, B<--host>=IHostE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:33 amuleweb.1:50 msgid "" "Host where aMule is running (default: I). IhostE> " "might be an IP address or a DNS name" msgstr "" "Der Rechner auf dem aMule läuft (Standard: I). IHostE> " "kann eine IP-Adresse oder ein DNS-Name sein." # type: TP #. type: TP #: amulecmd.1:33 amuleweb.1:50 #, no-wrap msgid "B<[ -p> IportE>, B<--port>=IportE> B<]>" msgstr "B<[ -p> IPortE>, B<--port>=IPortE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:36 amuleweb.1:53 msgid "" "aMule's port for External Connections, as set in Preferences-ERemote " "Controls (default: I<4712>)" msgstr "" "aMule's Port für Externe Verbindungen, wie in den Optionen unter-" "EFernsteuerung (Standard: I<4712>) eingestellt." # type: TP #. type: TP #: amulecmd.1:36 amuleweb.1:53 #, no-wrap msgid "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" msgstr "B<[ -P> IPasswortE>, B<--password>=IPasswortE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:39 amuleweb.1:56 msgid "External Connections password." msgstr "Passwort für Externe Verbindungen." # type: TP #. type: TP #: amulecmd.1:39 amuleweb.1:56 #, no-wrap msgid "B<[ -f> IpathE>, B<--config-file>=IpathE> B<]>" msgstr "B<[ -f> IPfadE>, B<--config-file>=IPfadE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:43 amuleweb.1:60 msgid "" "Use the given configuration file. Default configuration file is I<~/.aMule/" "remote.conf>" msgstr "" "Benutzt die angegebene Konfigurationsdatei. Die Standardkonfigurationsdatei " "ist I<~/.aMule/remote.conf>" #. type: Plain text #: amulecmd.1:46 amuleweb.1:63 msgid "Do not print any output to stdout." msgstr "Keine Ausgabe auf stdout ausgeben." # type: Plain text #. type: Plain text #: amulecmd.1:50 amuleweb.1:67 msgid "Be verbose - show also debug messages." msgstr "Sei gesprächig - Gebe auch Debuggingausgaben aus" # type: TP #. type: TP #: amulecmd.1:50 amuleweb.1:67 #, no-wrap msgid "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" msgstr "B<[ -l> ISpracheE>, B<--locale>=ISpracheE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:54 amuleweb.1:71 msgid "" "Sets program locale (language). See the B section for the " "description of the IlangE> parameter." msgstr "" "Setzt die Lokale (Sprache) des Programms. Siehe Abschnitt B " "für die Beschreibung des ISpracheE> Parameters." # type: Plain text #. type: Plain text #: amulecmd.1:57 amuleweb.1:74 msgid "Write command line options to config file and exit" msgstr "" "Schreibe die Kommandozeilenoptionen in die Konfigurationsdatei und kehre zur " "Shell zurück." # type: TP #. type: TP #: amulecmd.1:57 #, no-wrap msgid "B<[ -c> IcommandE>, B<--command>=IcommandE> B<]>" msgstr "B<[ -c> IBefehlE>, B<--command>=IBefehlE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:60 msgid "" "Execute IcommandE> as if it was entered at amulecmd's prompt and " "exit." msgstr "" "Führe IBefehlE> aus, als wäre es auf amulecmd's " "Eingabeaufforderung eingegeben worden, und beende dich." # type: TP #. type: TP #: amulecmd.1:60 amuleweb.1:117 #, no-wrap msgid "B<[ --create-config-from>=IpathE> B<]>" msgstr "B<[ --create-config-from>=IPfadE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:63 amuleweb.1:120 msgid "" "Create config file based upon IpathE>, which must point to a valid " "aMule config file, and then exit." msgstr "" "Konfigurationsdatei basierend auf IPfadE>, welche auf eine gültige " "aMule Konfigurationsdatei verweisen muss, erstellen und danach beenden." # type: SH #. type: SH #: amulecmd.1:69 #, no-wrap msgid "COMMANDS" msgstr "BEFEHLE" # type: Plain text #. type: Plain text #: amulecmd.1:71 msgid "All commands are case insensitive." msgstr "Alle Befehle können groß oder klein geschrieben werden." #. type: SS #: amulecmd.1:71 #, no-wrap msgid "Add IeD2k-linkE> | Imagnet-linkE>" msgstr "Add IeD2k-VerweisE> | IMagnet-VerweisE>" # type: Plain text #. type: Plain text #: amulecmd.1:73 msgid "Adds an eD2k-link or a magnet-link to the core." msgstr "Fügt einen eD2k- oder Magnetverweis dem Kern hinzu." # type: Plain text #. type: Plain text #: amulecmd.1:82 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list." msgstr "" "eine Serverlisten-Verweis, in diesem Fall werden alle Server dieser Liste " "der Serverliste hinzugefügt." #. type: Plain text #: amulecmd.1:85 msgid "The magnet link must contain the eD2k hash and file length." msgstr "" "Der Magnet Verweis muss die eD2k Prüfsumme und die Dateigröße enthalten." # type: SS #. type: SS #: amulecmd.1:85 #, no-wrap msgid "Cancel IhashE> | InumberE>" msgstr "Cancel IPfrüfsummeE> | INummerE>" # type: Plain text #. type: Plain text #: amulecmd.1:87 msgid "" "Cancels the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Bricht den Download, der mit IPrüfsummeE> oder INummerE> " "angegeben wurde, ab. Benutze B um den Wert zu erfahren." # type: SS #. type: SS #: amulecmd.1:87 #, no-wrap msgid "Connect [ I | I | Iip|nameE> ]" msgstr "Connect [ I | I | IIP|NameE> ]" # type: Plain text #. type: Plain text #: amulecmd.1:89 msgid "Connect to the network." msgstr "Verbindung zu einem Netzwerk aufbauen." # type: Plain text #. type: Plain text #: amulecmd.1:91 msgid "This will connect to all networks that are enabled in Preferences." msgstr "" "Die Verbindung wird zu allen Netzwerken aufgebaut, die in den Einstellungen " "aktiviert wurden." #. type: Plain text #: amulecmd.1:95 msgid "" "With the optional parameter you can specify which network to connect to. " "Giving a server address in the form of IP:Port (where IP is either a dotted " "decimal IPv4 address or a resolvable DNS name) aMule will connect to that " "server only." msgstr "" # type: Plain text #. type: Plain text #: amulecmd.1:98 msgid "" "Disconnect from all networks you are connected to, or just disconnect from " "the specified network." msgstr "" "Trennt die Verbindung zu allen Netzwerken mit denen du verbunden bist, oder " "nur zu dem, welches angegeben wurde." # type: SS #. type: SS #: amulecmd.1:98 #, no-wrap msgid "Download InumberE>" msgstr "Download INummerE>" # type: Plain text #. type: Plain text #: amulecmd.1:100 msgid "Start downloading a file." msgstr "Startet den Download einer Datei" # type: Plain text #. type: Plain text #: amulecmd.1:104 msgid "" "The InumberE> of a file from the last search has to be given. " "Example: `download 12' will start to download the file with the number 12 of " "the previous search." msgstr "" "Die INummerE> einer Datei aus der letzten Suche muss angegeben " "werden. Beispiel: 'download 12' startet den Download der Datei, die in der " "letzten Suche die Nummer 12 hatte." # type: Plain text #. type: Plain text #: amulecmd.1:106 msgid "Disconnect from amule/amuled and quit amulecmd." msgstr "Verbindung zu amule/amuled trennen und amulecmd beenden." # type: SS #. type: SS #: amulecmd.1:106 #, no-wrap msgid "Get IwhatE>" msgstr "Get IWertE>" # type: Plain text #. type: Plain text #: amulecmd.1:108 msgid "Get and display a preference value." msgstr "Liest eine Option und zeigt sie an." # type: Plain text #. type: Plain text #: amulecmd.1:110 amulecmd.1:144 amulecmd.1:173 amulecmd.1:183 msgid "Available values for IwhatE>:" msgstr "Verfügbare Werte für IWasE>:" # type: Plain text #. type: Plain text #: amulecmd.1:113 msgid "Get bandwidth limits." msgstr "Bandbreitenbeschränkungen abfragen." # type: Plain text #. type: Plain text #: amulecmd.1:115 msgid "Get IPFilter preferences." msgstr "IPFilter Einstellungen abfragen." # type: SS #. type: SS #: amulecmd.1:116 #, no-wrap msgid "Help [ IcommandE> ]" msgstr "Help [ IBefehlE> ]" # type: Plain text #. type: Plain text #: amulecmd.1:120 msgid "" "Prints a short usage description. If called without parameter, it shows a " "list of available commands. If called with IcommandE>, it shows a " "short description of the given command." msgstr "" "Gibt eine kurze Nutzungsübersicht aus. Wenn ohne Parameter aufgerufen, " "zeigt es eine Liste der verfügbaren Befehle an. Wenn mit " "IBefehlE>aufgerufen, zeigt es eine Kurzbeschreibung diese Befehls " "an." #. type: SS #: amulecmd.1:120 #, no-wrap msgid "Pause IhashE> | InumberE>" msgstr "Pause IPrüfsummeE> | INummerE>" # type: Plain text #. type: Plain text #: amulecmd.1:122 msgid "" "Pauses the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Pausiert den Download der mit IPrüfsummeE> oder " "INumnerE> angegeben wurde. Benutze B um den Wert zu erfahren." #. type: SS #: amulecmd.1:122 #, no-wrap msgid "Priority IpriorityE> IhashE> | InumberE>" msgstr "Priority IPrioritätE> IPrüfsummerE> | INummerE>" # type: Plain text #. type: Plain text #: amulecmd.1:124 msgid "" "Set priority of a download specified by IhashE> or " "InumberE>." msgstr "" "Setzt die Priorität für den Download der mit IPrüfsummeE> oder " "INummerE> angegeben wurde." # type: TP #. type: Plain text #: amulecmd.1:126 msgid "Available values for IpriorityE>:" msgstr "Verfügbare Werte für IPrioritätE>:" #. type: Plain text #: amulecmd.1:129 msgid "Automatic priority." msgstr "Automatische Priorität." #. type: Plain text #: amulecmd.1:131 msgid "High priority." msgstr "Hohe Priorität." #. type: Plain text #: amulecmd.1:133 msgid "Low priority." msgstr "Niedrige Priorität." #. type: Plain text #: amulecmd.1:135 msgid "Normal priority." msgstr "Normale Priorität." # type: Plain text #. type: Plain text #: amulecmd.1:138 msgid "Shows the progress of an on-going search." msgstr "Zeigt den Fortschritt einer laufenden Suche an." #. type: Plain text #: amulecmd.1:140 msgid "A synonim of the B command." msgstr "Synonim für den B Befehl." # type: SS #. type: SS #: amulecmd.1:140 #, no-wrap msgid "Reload IwhatE>" msgstr "Reload IWasE>" # type: Plain text #. type: Plain text #: amulecmd.1:142 msgid "Reloads a given object." msgstr "Aktualisiert das angegebene Objekt." #. type: Plain text #: amulecmd.1:147 msgid "Reload shared files list." msgstr "Liste der freigegebenen Dateien neu laden." #. type: Plain text #: amulecmd.1:149 msgid "Reload IP filter tables." msgstr "IP Filter Tabellen neu laden." # type: Plain text #. type: Plain text #: amulecmd.1:152 msgid "Reset the log." msgstr "Setzt das Log zurück." # type: Plain text #. type: Plain text #: amulecmd.1:154 msgid "Shows you the results of the last search." msgstr "Zeigt die Resultate der letzten Suche an." # type: SS #. type: SS #: amulecmd.1:154 #, no-wrap msgid "Resume IhashE> | InumberE>" msgstr "Resume IPrüfsummeE> | INummerE>" # type: Plain text #. type: Plain text #: amulecmd.1:156 msgid "" "Resumes the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Setzt den Download der mit IPrüfsummeE> oder INummerE> " "angegeben wurde fort. Nutze B, um den Wert zu erfahren." # type: Plain text #. type: SS #: amulecmd.1:156 #, no-wrap msgid "Search ItypeE> IkeywordE>" msgstr "Search ITypE> ISchlüsselwortE>" # type: Plain text #. type: Plain text #: amulecmd.1:159 msgid "" "Makes a search for the given IkeywordE>. A search type and a " "keyword to search is mandatory to do this. Example: `search kad amule' " "performs a kad search for `amule'." msgstr "" "Startet eine Suche nach dem angegebenenI ISchlüsselwortE>. Ein " "Suchtyp und ein Schlüsselwort müssen angegeben werden. Beispiel: 'search kad " "amule' startet eine kad-Suche nach 'amule'." # type: Plain text #. type: Plain text #: amulecmd.1:161 msgid "Available search types:" msgstr "Verfügbare Suchtypen:" # type: Plain text #. type: Plain text #: amulecmd.1:164 msgid "Performs a global search." msgstr "Führt eine globale Suche durch." # type: Plain text #. type: Plain text #: amulecmd.1:166 msgid "Performs a search on the Kademlia network." msgstr "Führt eine Suche im Kad-Netzwerk durch." # type: Plain text #. type: Plain text #: amulecmd.1:168 msgid "Performs a local search." msgstr "Führt eine lokale Suche durch." # type: SS #. type: SS #: amulecmd.1:169 #, no-wrap msgid "Set IwhatE>" msgstr "Set IWasE>" # type: Plain text #. type: Plain text #: amulecmd.1:171 msgid "Sets a given preferences value." msgstr "Setzt die angegebene Option." # type: Plain text #. type: Plain text #: amulecmd.1:176 msgid "Set bandwidth limits." msgstr "Setzt die Bandbreitenbeschränkungen." # type: Plain text #. type: Plain text #: amulecmd.1:178 msgid "Set IPFilter preferences." msgstr "IPFilter Einstellungen setzen." # type: TP #. type: SS #: amulecmd.1:179 #, no-wrap msgid "Show IwhatE>" msgstr "Show IWasE>" # type: Plain text #. type: Plain text #: amulecmd.1:181 msgid "Shows upload/download queue, servers list or shared files list." msgstr "" "Zeigt upload/download Warteschlange, Serverliste oder die Liste der " "freigegebenen Dateien an." # type: Plain text #. type: Plain text #: amulecmd.1:186 msgid "Show download queue." msgstr "Downloadwarteschlange anzeigen." #. type: Plain text #: amulecmd.1:188 msgid "Show log." msgstr "Log anzeigen." # type: Plain text #. type: Plain text #: amulecmd.1:190 msgid "Show servers list." msgstr "Serverliste anzeigen." # type: Plain text #. type: Plain text #: amulecmd.1:192 msgid "Show upload queue." msgstr "Uploadwarteschlange anzeigen." # type: Plain text #. type: Plain text #: amulecmd.1:196 msgid "" "Shutdown the remote running core (amule/amuled). This will also shut down " "the text client, since it is unusable without a running core." msgstr "" "Beendet das Programm (amule/amuled) zu dem du verbunden bist. Dies beendet " "auch den Textclient, da er ohne Verbindung nicht zu gebrauchen ist." # type: SS #. type: SS #: amulecmd.1:196 #, no-wrap msgid "Statistics [ InumberE> ]" msgstr "Statistics [ INummerE> ]" # type: Plain text #. type: Plain text #: amulecmd.1:198 msgid "Show statistics tree." msgstr "Zeigt die Statistiken an." # type: Plain text #. type: Plain text #: amulecmd.1:202 msgid "" "The optional InumberE> in the range of 0-255 can be passed as " "argument to this command, which tells how many entries of the client version " "subtree should be shown. Passing 0, or omitting it means `unlimited'." msgstr "" "Die optionale INummerE> im Bereich von 0-255 kann als Argument " "diesem Befehel übergeben werden. Sie gibt an, wie viele Einträge der " "Clientversionsliste angezeigt werden sollen. Der Wert 0, oder keine Angabe " "bedeutet 'unbegrenzt'." # type: Plain text #. type: Plain text #: amulecmd.1:205 msgid "" "Example: `statistics 5' will show only the top 5 versions for each client " "type." msgstr "" "Beispiel: 'statistics 5' zeigt nur die oberen 5 Versionen der einzelnen " "Clienttypen an." # type: Plain text #. type: Plain text #: amulecmd.1:207 msgid "Show connection status, current up/download speeds, etc." msgstr "" "Zeigt den Verbindungsstatus, aktuelle Up/Downloadgeschindigkeiten, etc. an." #. type: SS #: amulecmd.1:212 amuleweb.1:137 #, no-wrap msgid "Languages" msgstr "Sprachen" # type: Plain text #. type: Plain text #: amulecmd.1:218 amuleweb.1:143 msgid "" "The IlangE> parameter for the B<-l> option has the following form: " "I[B<_>I][B<.>I][B<@>I] where I is the " "primary language, I is a sublanguage/territory, I is the " "character set to use and I allows the user to select a specific " "instance of localization data within a single category." msgstr "" "Der ISpracheE> Parameter der B<-l> Option hat folgende Form: " "I[B<_>I][B<.>I][B<@>I] wobei " "I die eigentliche Sprache, I das Gebiet, I den " "zu nutzenden Zeichensatz und I eine bestimmte Untergruppe in " "diesem darstellt." # type: Plain text #. type: Plain text #: amulecmd.1:220 amuleweb.1:145 msgid "For example, the following strings are valid:" msgstr "Zum Besispiel sind die folgenden Zeichenketten gültig:" # type: Plain text #. type: Plain text #: amulecmd.1:234 amuleweb.1:159 msgid "" "Though all the above strings are accepted as valid language definitions, " "I and I are yet unused." msgstr "" "Alle oben genannten Zeicheketten werden als gültige Sprachdefinitionen " "akzeptiert, I und I werden zur Zeit nicht genutzt." # type: Plain text #. type: Plain text #: amulecmd.1:237 amuleweb.1:162 msgid "" "In addition to the format above, you can also specify full language names in " "English - so B<-l german> is also valid and is equal to B<-l de_DE>." msgstr "" "Zusätzlich zu den obigen Formaten, kann man komplette englische " "Sprachbezeichnungen angeben - B<-l german> ist ebenfalls gültig und " "entspricht B<-l de_DE>." # type: Plain text #. type: Plain text #: amulecmd.1:240 amuleweb.1:165 msgid "" "When no locale is defined, either on command-line or in config file, system " "default language will be used." msgstr "" "Wenn keine Sprache definiert wurde, weder in der Kommandozeile noch in der " "Konfigurationsdatei, wird die Standardsprache des Systems verwendet." # type: Plain text #. type: Plain text #: amulecmd.1:242 amuleweb.1:173 msgid "~/.aMule/remote.conf" msgstr "~/.aMule/remote.conf" # type: SH #. type: SH #: amulecmd.1:242 amuleweb.1:177 #, no-wrap msgid "EXAMPLE" msgstr "BEISPIEL" # type: Plain text #. type: Plain text #: amulecmd.1:244 msgid "Typically amulecmd will be first run as:" msgstr "Typischerweise startet man amulecmd als erstes mit:" # type: Plain text #. type: Plain text #: amulecmd.1:246 msgid "B B<-h> I B<-p> I B<-P> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I B<-w>" # type: Plain text #. type: Plain text #: amulecmd.1:248 amuleweb.1:183 msgid "or" msgstr "oder" # type: Plain text #. type: Plain text #: amulecmd.1:250 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" # type: Plain text #. type: Plain text #: amulecmd.1:252 amuleweb.1:187 msgid "" "These will save settings to I<$HOME/.aMule/remote.conf>, and later you only " "need to type:" msgstr "" "Dies speichert die Einstellungen in I<$HOME/.aMule/remote.conf>, und später " "tippst du nur noch:" # type: Plain text #. type: Plain text #: amulecmd.1:256 msgid "Of course, you don't have to follow this example." msgstr "Natürlich brauchst du dich nicht unbedingt an dieses Beispiel halten." # type: TH #. type: TH #: amuled.1:1 #, no-wrap msgid "AMULED" msgstr "AMULED" # type: TH #. type: TH #: amuled.1:1 #, fuzzy, no-wrap #| msgid "aMule Daemon v2.3.0" msgid "aMule Daemon v2.3.1" msgstr "aMule Dämon v2.3.0" # type: TH #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon" msgstr "aMule Dämon" # type: Plain text #. type: Plain text #: amuled.1:6 msgid "amuled - the all-platform eMule p2p client - daemonized version" msgstr "amuled - Der alle-Plattformen eMule p2p Client - dämonisierte Version" # type: TP #. type: Plain text #: amuled.1:9 ../../src/utils/cas/docs/cas.1:11 msgid "[B<-c> IpathE>]" msgstr "[B<-c> IPfadE>]" # type: TP #. type: Plain text #: amuled.1:11 msgid "[B<-p> IpathE>]" msgstr "[B<-p> IPfadE>]" # type: Plain text #. type: Plain text #: amuled.1:32 msgid "Forks to background." msgstr "Im Hintergrund ausführen" # type: Plain text #. type: TP #: amuled.1:32 #, no-wrap msgid "B<[ -p> IpathE>, B<--pid-file>=IpathE> B<]>" msgstr "B<[ -p> IPfadE>, B<--pid-file>=IPfadE> B<]>" #. type: Plain text #: amuled.1:36 msgid "" "After fork, create a pid-file in the IpathE>. IpathE> " "has to contain the filename." msgstr "" "Erstelle eine Pid-Datei in IPfadE>. IPfadE> muss einen " "Dateinamen enthalten." # type: Plain text #. type: Plain text #: amuled.1:39 msgid "Configure EC (External Connections)." msgstr "Konfiguration für EC (Externe Verbindungen)." # type: TH #. type: TH #: amulegui.1:1 #, no-wrap msgid "AMULEGUI" msgstr "AMULEGUI" # type: TH #. type: TH #: amulegui.1:1 #, fuzzy, no-wrap #| msgid "aMuleGUI v2.3.0" msgid "aMuleGUI v2.3.1" msgstr "aMuleGUI v2.3.0" # type: TH #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI" msgstr "aMuleGUI" #. type: Plain text #: amulegui.1:6 msgid "amulegui - aMule control program with GUI" msgstr "amulegui - aMule Steuerungsprogramm mit GUI" # type: TP #. type: Plain text #: amulegui.1:14 msgid "[B<-t> InumE>]" msgstr "[B<-t> INumE>]" #. type: Plain text #: amulegui.1:24 msgid "" "B is a client program, and can be connected to amule or amuled via " "EC. You can manage your amule program with it. It provides almost the same " "functionalities as amule, even if the core works on another computer." msgstr "" "B ist ein Clientprogramm, das mit aMule oder amuled über EC " "verbunden werden kann. Du kannst aMule mit diesem Programm steuernt. Es " "besitzt annähernd die selbe Funktionalität wie aMule, auch wenn der Kern auf " "einem anderen Computer läuft." #. type: Plain text #: amulegui.1:39 msgid "Skip connection dialog." msgstr "Überspringe den Verbindungsdialog." #. type: Plain text #: amulegui.1:57 msgid "" "This manpage was written by Julien Delange for Debian Ejulien AT gunnm " "DOT orgE" msgstr "" "Diese manpage wurde geschrieben von Julien Delange for Debian Ejulien AT " "gunnm DOT orgE" #. type: Plain text #: amulegui.1:58 msgid "" "This manpage was rewritten by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Diese manpage wurde überarbeitet von Vollstrecker Eamule@vollstreckernet." "deE" # type: TH #. type: TH #: amuleweb.1:1 #, no-wrap msgid "AMULEWEB" msgstr "AMULEWEB" # type: TH #. type: TH #: amuleweb.1:1 #, fuzzy, no-wrap #| msgid "aMule webserver v2.3.0" msgid "aMule webserver v2.3.1" msgstr "aMule Webserver v2.3.0" # type: Plain text #. type: Plain text #: amuleweb.1:6 msgid "amuleweb - aMule web server" msgstr "amuleweb - aMule Webserver" # type: TP #. type: Plain text #: amuleweb.1:15 msgid "[B<-l> IlangE>]" msgstr "[B<-l> ISpracheE>]" # type: Plain text #. type: Plain text #: amuleweb.1:18 msgid "[B<-t> InameE>] [B<-s> IportE>]" msgstr "[B<-t> INameE>] [B<-s> IPortE>]" # type: TP #. type: Plain text #: amuleweb.1:20 msgid "[B<-U> IportE>]" msgstr "[B<-U> IPortE>]" # type: TP #. type: Plain text #: amuleweb.1:24 msgid "[B<-A> IpasswordE>] [B<-G> IpasswordE>]" msgstr "[B<-A> IPasswortE>] [B<-G> IPasswortE>]" # type: TP #. type: Plain text #: amuleweb.1:40 msgid "[B<--amule-config-file>=IpathE>]" msgstr "[B<--amule-config-file>=IPfadE>]" # type: Plain text #. type: Plain text #: amuleweb.1:46 msgid "" "B manages your access to amule through a web browser. You can " "start amuleweb together with B(1), or separately, any time later. " "Options can be specified via command-line or via config-file. Command-line " "options take precedence over config-file options." msgstr "" "B ermöglicht dir den Zugriff auf amule(d) per Webbrowser. Man kann " "amuleweb zusammen mit B(1) starten lassen, oder ihn separat später " "starten. Optionen können auf der Kommandozeile oder in der " "Konfigurationsdatei angegeben werden. Kommandozeilenoptionen überschreiben " "die Werte aus der Konfigurationsdatei." # type: TP #. type: TP #: amuleweb.1:74 #, no-wrap msgid "B<[ -t> InameE>, B<--template>=InameE> B<]>" msgstr "B<[ -t> INameE>, B<--template>=INameE> B<]>" # type: Plain text #. type: Plain text #: amuleweb.1:77 #, fuzzy #| msgid "" #| "Loads the template named InameE>. See also the section B" msgid "" "Loads the template named InameE>. See the B section " "for details." msgstr "" "Lädt die mit INameE> spezifizierte Vorlage. Siehe auch Abschnitt " "B" # type: TP #. type: TP #: amuleweb.1:77 #, no-wrap msgid "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" msgstr "B<[ -s> IPortE>, B<--server-port>=IPortE> B<]>" # type: Plain text #. type: Plain text #: amuleweb.1:80 #, fuzzy #| msgid "" #| "Webserver's HTTP port. This is the port you can point your browser to " #| "(default: I<4711>)." msgid "" "Webserver's HTTP port. This is the port you must point your browser to " "(default: I<4711>)." msgstr "" "HTTP Port des Webservers. Der Port der mit dem Browser erreichbar sein soll " "(Standard: I<4711>)" #. type: Plain text #: amuleweb.1:84 msgid "Enable UPnP." msgstr "Aktiviere UPnP." # type: TP #. type: TP #: amuleweb.1:84 #, no-wrap msgid "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" msgstr "B<[ -U> IPortE>, B<--upnp-port> IPortE> B<]>" #. type: Plain text #: amuleweb.1:87 msgid "UPnP port." msgstr "UPnP Port." # type: Plain text #. type: Plain text #: amuleweb.1:90 msgid "Enables using gzip compression in HTTP traffic to save bandwidth." msgstr "Benutzt gzip Kompression für den HTTP Verkehr um Bandbreite zu sparen" # type: Plain text #. type: Plain text #: amuleweb.1:93 msgid "Disables using gzip compression (this is the default)." msgstr "Schalten die gzip Kompression ab (Standard)" # type: TP #. type: TP #: amuleweb.1:93 #, no-wrap msgid "B<[ -A> IpasswdE>, B<--admin-pass>=IpasswdE> B<]>" msgstr "B<[ -A> IPasswortE>, B<--admin-pass>=IPasswortE> B<]>" # type: Plain text #. type: Plain text #: amuleweb.1:96 msgid "Full access password for webserver." msgstr "Passwort für vollen Zugriff auf den Webserver" # type: TP #. type: TP #: amuleweb.1:96 #, no-wrap msgid "B<[ -G> IpasswdE>, B<--guest-pass>=IpasswdE> B<]>" msgstr "B<[ -G> IPasswortE>, B<--guest-pass>=IPasswortE> B<]>" # type: Plain text #. type: Plain text #: amuleweb.1:99 msgid "Guest password for webserver." msgstr "Gäste Passwort für den Webserver" # type: Plain text #. type: Plain text #: amuleweb.1:102 msgid "Allows guest access." msgstr "Erlaubt den Zugriff als Gast" # type: Plain text #. type: Plain text #: amuleweb.1:105 msgid "Denies guest access (default)." msgstr "Verbietet den Zugriff als Gast (Standard)" # type: Plain text #. type: Plain text #: amuleweb.1:111 msgid "" "Load/save webserver settings from/to remote aMule. This causes amuleweb to " "ignore command-line and config-file settings, and load them from aMule. " "When saving preferences none will be written to the config file, but to " "aMule. (Of course, this works only for those settings that can be set in " "aMule's Preferences-ERemote Controls.)" msgstr "" "Lade/Speichere Einstellungen vom/zum entfernen aMule. Dies bringt amuleweb " "dazu, die Kommandozeilen- und Konfigurationsdateieinstellungen zu " "ignorieren, und von aMule zu beziehen. Beim Speichern werden keine " "Einstellungen in die Konfigurationsdatei geschrieben, sondern zu aMule " "gesendet. (das funktioniert nur für Einstellungen in aMule's Einstellungen-" "EFernsteuerung Dialog)" #. type: Plain text #: amuleweb.1:114 msgid "Disable PHP interpreter (deprecated)" msgstr "Deaktiviert den PHP Interpreter (veraltet)" # type: Plain text #. type: Plain text #: amuleweb.1:117 msgid "Recompiles PHP pages on each request." msgstr "Erstellt die PHP-Seiten bei jedem Aufruf neu" # type: TP #. type: TP #: amuleweb.1:126 #, no-wrap msgid "B<[ --amule-config-file>=IpathE> B<]>" msgstr "B<[ --amule-config-file>=IPfadE> B<]>" # type: Plain text #. type: Plain text #: amuleweb.1:132 msgid "" "aMule config file path. B aMule uses this option when " "starting amuleweb at aMule startup. This option causes all other command-" "line and config-file settings to be ignored, preferences to be read from the " "given config file, and also implies the B<-q -L> options." msgstr "" "Pfad zur aMule Konfigurationsdatei. B aMule benutzt " "dies zum starten von amuleweb wenn aMule startet. Diese Option sorgt dafür, " "das alle anderen Parameter ignoriert werden, und nur aus der angegeben Datei " "gelesen werden, und impliziert auch die B<-q -L> Optionen." # type: SH #. type: SH #: amuleweb.1:165 #, no-wrap msgid "SKIN SUPPORT" msgstr "SKIN UNTERSTÜTZUNG" # type: Plain text #. type: Plain text #: amuleweb.1:169 msgid "" "B is capable of displaying information in different skins. These " "skins are called templates, and you can make amuleweb load a specific " "template via the B<-t> command line option. Templates are searched in two " "places: first in I<~/.aMule/webserver/> and then in I if you installed with --prefix=/usr." msgstr "" "B ist in der Lage Informationen mit unterschiedlichen Skins " "anzuzeigen. Diese Skins werden Templates genannt, und due kannst über die " "Kommandozeilenoption B<-t> angeben welches geladen werden soll. Templates " "werden in 2 verschiedenen Orten gesucht: zuerst in I<~/.aMule/webserver/> " "und dann in I wenn du mit --prefix=/usr " "installiert hast." #. type: Plain text #: amuleweb.1:171 msgid "" "Each template must be in a subdirectory of the template name, and this " "directory must contain all files the template needs." msgstr "" "Jedes Template muss in einem Unterverzeichnis des Templatenamens liegen, " "welches alle Dateien enthält, die das Template benötigt." # type: Plain text #. type: Plain text #: amuleweb.1:175 msgid "~/.aMule/webserver/" msgstr "~/.aMule/webserver/" # type: Plain text #. type: Plain text #: amuleweb.1:177 msgid "I<$(pkgdatadir)>/webserver/" msgstr "I<$(pkgdatadir)>/webserver/" # type: Plain text #. type: Plain text #: amuleweb.1:179 msgid "Typically amuleweb will be first run as:" msgstr "Typischerweise wird amuleweb als erstes folgendermaßen gestartet:" # type: Plain text #. type: Plain text #: amuleweb.1:181 msgid "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" # type: Plain text #. type: Plain text #: amuleweb.1:185 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" # type: Plain text #. type: Plain text #: amuleweb.1:191 msgid "" "Of course, you may specify any more or less options on the first example " "line, and you may also totally omit it." msgstr "" "Natürlich kann man zusätzliche Optionen angeben und einzelne auch beim " "ersten Start weglassen, oder es komplett anders machen." # type: TH #. type: TH #: ed2k.1:1 #, no-wrap msgid "ED2K" msgstr "ED2K" # type: TH #. type: TH #: ed2k.1:1 #, no-wrap msgid "aMule eD2k link parser v1.5.1" msgstr "aMule eD2k Verweis parser v1.5.1" # type: Plain text #. type: Plain text #: ed2k.1:6 msgid "ed2k - aMule eD2k link parser" msgstr "ed2k - aMule ED2k Verweis-Parser" # type: Plain text #. type: Plain text #: ed2k.1:10 msgid "[B<-c> IpathE>] [B<-t> InumE>]" msgstr "[B<-c> IPfadE>] [B<-t> INumE>]" # type: TP #. type: Plain text #: ed2k.1:13 #, fuzzy #| msgid "IeD2k-LinkE>" msgid "IeD2k-linkE>" msgstr "IeD2k-VerweisE>" # type: Plain text #. type: Plain text #: ed2k.1:21 #, fuzzy #| msgid "" #| "Sends the given IeD2k_linkE> to aMule, i.e. writes it to the " #| "file ~/.aMule/ED2KLinks, which will be checked by aMule every second for " #| "links." msgid "" "Sends the given IeD2k-linkE> to aMule, i.e. writes it to the file " "~/.aMule/ED2KLinks, which will be checked by aMule every second for links." msgstr "" "Sendet den übergebenen IeD2k_VerweisE> an aMule, d.h. schreibt ihn " "in Datei ~/.aMule/ED2KLinks, welche von aMule sekündlich auf neue Einträge " "geprüft wird." #. type: Plain text #: ed2k.1:30 msgid "" "Loads all link found in the emulecollection given as Ied2k-linkE>" msgstr "" "Lädt alle Verweise aus der als IeD2k_VerweisE> übergebenen " "emulecollection." #. type: Plain text #: ed2k.1:33 msgid "" "Lists all link found in the emulecollection given as Ied2k-linkE>" msgstr "" "Listet alle Verweise in der emulecollection die als " "IeD2k_VerweisE> übergeben wurde auf." #. type: Plain text #: ed2k.1:53 msgid "a magnet link;" msgstr "ein Magnetverweis;" #. type: Plain text #: ed2k.1:55 msgid "an emulecollection file." msgstr "eine emulecollection Datei." #. type: Plain text #: ed2k.1:60 msgid "" "B You can give " "more than one link, and every link can have it's own params. For example " "Blink1E -t2 Elink2E> will download Ilink1E> " "in standard category and Ilink2E> in category 2." msgstr "" "B Du " "kannst mehr als einen Verweis übergeben und jeder Verweis kann seine eigenen " "Parameter haben. Zum Beispiel BVerweis1E -t2 " "EVerweis2E> lädt IVerweis1E> in der Standardkategorie und " "IVerweis2E> in Kategorie 2 herunter." # type: Plain text #. type: Plain text #: ed2k.1:62 msgid "~/.aMule/ED2KLinks" msgstr "~/.aMule/ED2KLinks" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "ALC" msgstr "ALC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "aLinkCreator" msgstr "aLinkCreator" # type: Plain text #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:5 msgid "aLinkCreator - the aMule eD2k link creator" msgstr "ed2k - aMule eD2k Verweis parser" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:9 msgid "" "B is a graphical utility to create an eD2k link to any file on your " "computer." msgstr "" "B ist ein graphisches Werkzeug zum erstellen von eD2k Links für Dateien " "auf deinem Computer." # type: Plain text #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/wxCas/docs/wxcas.1:16 msgid "This app doesn't take any arguments." msgstr "Dieses Programm hat keine Parameter." #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "ALCC" msgstr "ALCC" # type: TH #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "aMule eD2k links calculator" msgstr "aMule eD2k Verweis Ersteller" # type: TH #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:6 msgid "alcc - text based eD2k links calculator for aMule" msgstr "alcc - textbasierter eD2k Verweis Ersteller für aMule" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:11 msgid "Iinputfiles_listE>" msgstr "Ieingabedatei_listeE>" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:16 msgid "" "Compute the eD2k links of all the input files given in the " "Iinputfiles_listE> (There can be one or more files)." msgstr "" "Berechne die eD2k Verweise aller Eingabedateien aus IdateilisteE> " "(eine oder mehrere Dateien)." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:19 msgid "Compute and add part hashes to the computed eD2k links." msgstr "" "Berechne Teilprüfsummen und füge sie dem berechneten eD2k Verweis hinzu." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:26 msgid "Be verbose - show also calculation steps." msgstr "Sei gesprächig - Zeige auch die Rechenschritte an." # type: TH #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "CAS" msgstr "CAS" # type: TH #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "cas v0.8" msgstr "cas v0.8" # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:6 msgid "cas - c aMule statistics" msgstr "cas - c aMule statistics" # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:18 #, fuzzy #| msgid "" #| "B is a program for displaying the contents of your aMule online " #| "signature file to console (in a human readable form)." msgid "" "B is a program for displaying the contents of your aMule online " "signature file to console (in a human readable form). For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B ist ein Program zum Anzeigen des Inhaltes deiner aMule Online " "Signaturdatei in der Konsole (in von Menschen lesbarem Format)." # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:22 msgid "" "Writes the online signature picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "Erstellt das Bild der Online Signatur. Optional kannst du " "I<=EPFADE> an diese Option anhängen, um anzugeben wohin es " "geschrieben werden soll." # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:26 msgid "" "HTML page with stats and picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "HTML Seite mit Statistiken und Bild. Optional kannst du I<=EPFADE> " "an diese Option anhängen, um anzugeben wohin es geschrieben werden soll." # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:34 msgid "Without any options, it prints online signature data to stdout." msgstr "Ohne Optionen schreibt es die Online Signatur auf die Standardausgabe." # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:36 msgid "B was written by Pedro de Oliveira Efalso@rdk.homeip.netE" msgstr "" "B wurde geschrieben von Pedro de Oliveira Efalso@rdk.homeip.netE" # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:38 msgid "~/.aMule/casrc" msgstr "~/.aMule/casrc" # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:40 msgid "stat.png" msgstr "stat.png" # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:42 msgid "tmp.html" msgstr "tmp.html" # type: TH #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "WXCAS" msgstr "WXCAS" # type: TH #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "wxCas" msgstr "wxCas" # type: Plain text #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:5 msgid "wxcas - wx c aMule statistics" msgstr "wxcas - wx c aMule statistics" # type: Plain text #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:11 #, fuzzy #| msgid "" #| "B is a program for displaying the contents of your online " #| "signature file in a nice wx Window on your Desktop. Based on Pedro de " #| "Oliveira's B(1). B was written by ThePolish " #| "Ethepolish@vipmail.ruE" msgid "" "B is a program for displaying the contents of your online signature " "file in a nice wx Window on your Desktop. For this to work, you must enable " "the \"Online Signature\" option in aMule's preferences." msgstr "" "B ist ein Programm zum Anzeigen des Inhaltes deiner Online " "Signaturdatei in einem hübschen wx Fenster auf deinem Desktop. Basierend " "auf Pedro de Oliveira's B(1). B wurde geschrieben von ThePolish " "Ethepolish@vipmail.ruE" # type: Plain text #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:14 #, fuzzy #| msgid "" #| "B is a program for displaying the contents of your online " #| "signature file in a nice wx Window on your Desktop. Based on Pedro de " #| "Oliveira's B(1). B was written by ThePolish " #| "Ethepolish@vipmail.ruE" msgid "" "Based on Pedro de Oliveira's B(1). B was written by ThePolish " "Ethepolish@vipmail.ruE" msgstr "" "B ist ein Programm zum Anzeigen des Inhaltes deiner Online " "Signaturdatei in einem hübschen wx Fenster auf deinem Desktop. Basierend " "auf Pedro de Oliveira's B(1). B wurde geschrieben von ThePolish " "Ethepolish@vipmail.ruE" # type: TH #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "XAS" msgstr "XAS" # type: TH #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "xas v1.9" msgstr "xas v1.9" # type: Plain text #. type: Plain text #: ../../src/utils/xas/docs/xas.1:5 msgid "xas - X-Chat aMule Statistics" msgstr "xas - X-Chat aMule Statistics" # type: Plain text #. type: Plain text #: ../../src/utils/xas/docs/xas.1:7 msgid "B" msgstr "B" # type: Plain text #. type: Plain text #: ../../src/utils/xas/docs/xas.1:12 #, fuzzy #| msgid "" #| "B is a plugin for xchat. For loading see your xchat documentation. " #| "After loading type /xas and it will send statistics to the channel you " #| "are in. These are taken from your Online Signature file. For this to " #| "work, you must enable the \"Online Signature\" option in aMules " #| "preferences." msgid "" "B is a plugin for xchat. For loading see your xchat documentation. " "After loading type /xas and it will send statistics to the channel you are " "in. These are taken from your Online Signature file. For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B ist ein Plugin für xchat. Zum Laden, lese deine xchat Dokumentation. " "Nach dem Laden tippe /xas und es wird Statistiken in den Kanal senden in dem " "du gerade bist. Diese werden aus deiner Online Signaturdatei gelesen. Damit " "dies funktioniert, musst du die \"Online Signatur\" Option in den " "Einstellungen von aMule einschalten." # type: Plain text #. type: Plain text #: ../../src/utils/xas/docs/xas.1:14 #, fuzzy #| msgid "" #| "To enable it on every startup of xchat you can just run the script in /" #| "usr/bin/autstart-xas if, if you installed with --prefix=/usr" msgid "" "To enable it on every startup of xchat you can just run the autstart-xas " "script (in /usr/bin if you installed with --prefix=/usr)." msgstr "" "Um es bei jedem Start von xchat zu aktivieren kannst du das Skript /usr/bin/" "autostart-xas verwenden, wenn du mit --prefix=/usr installiert hast" # type: Plain text #. type: Plain text #: ../../src/utils/xas/docs/xas.1:16 msgid "B was originally written by niet" msgstr "B wurde ursprünglich von niet geschrieben" #~ msgid "January 2010" #~ msgstr "Januar 2010" # type: Plain text #~ msgid "" #~ "When giving ed2k as parameter, it connects only to eD2k-network, to " #~ "servers in your serverlist. You may also optionally specify a server " #~ "address in IP:Port form, to connect to that server only. The IP must be a " #~ "dotted decimal IPv4 address, or a resolvable DNS name." #~ msgstr "" #~ "Wenn ed2k als Parameter übergeben wird, wird nur eine Verbindung zum eD2k-" #~ "Netzwerk und zu Servern aus der Serverliste aufgebaut. Man kann auch " #~ "optional einen Server in der Form IP:Port angeben, um nur zu diesem " #~ "Server eine Verbindung aufzubauen. Die IP muss entweder eine durch Punkte " #~ "getrennte dezimale IPv4-Adresse, oder ein auflösbarer DNS-Name sein." # type: Plain text #~ msgid "When giving kad, it connects to Kad only." #~ msgstr "" #~ "Wenn kad angegeben wird, wird ausschließlich eine kad-Verbindung " #~ "aufgebaut." amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-es.add0000644000175000017500000000010612611472361022473 0ustar morphmorphPO4A-HEADER:mode=after;position=^\.TH;beginboundary=^FakePo4aBoundary amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-es.po0000644000175000017500000013323612611472361022374 0ustar morphmorph# Spanish translations for po package # Copyright (C) 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the po package. # Automatically generated, 2010. # # Mad-Soft , 2010 msgid "" msgstr "" "Project-Id-Version: es\n" "POT-Creation-Date: 2011-10-31 22:06+0100\n" "PO-Revision-Date: 2010-03-21 19:37+0100\n" "Last-Translator: Mad-Soft \n" "Language-Team: Spanish \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" "X-Poedit-Language: Spanish\n" "X-Poedit-Country: SPAIN\n" "X-Poedit-SourceCharset: utf-8\n" #. type: TH #: amule.1:1 #, no-wrap msgid "AMULE" msgstr "AMULE" #. type: TH #: amule.1:1 amulecmd.1:1 amuled.1:1 amulegui.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "November 2011" msgstr "" #. type: TH #: amule.1:1 #, fuzzy, no-wrap #| msgid "aMule v2.3.0" msgid "aMule v2.3.1" msgstr "aMule v2.3.0" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule" msgstr "aMule" #. type: SH #: amule.1:4 amulecmd.1:5 amuled.1:4 amuleweb.1:4 ed2k.1:4 #: ../../src/utils/aLinkCreator/docs/alc.1:3 #: ../../src/utils/aLinkCreator/docs/alcc.1:4 ../../src/utils/cas/docs/cas.1:4 #: ../../src/utils/wxCas/docs/wxcas.1:3 ../../src/utils/xas/docs/xas.1:3 #, no-wrap msgid "NAME" msgstr "NOMBRE" #. type: Plain text #: amule.1:6 msgid "amule - the all-platform eMule p2p client" msgstr "amule -cliente p2p multiplataforma basado en eMule " #. type: SH #: amule.1:6 amulecmd.1:7 amuled.1:6 amulegui.1:6 amuleweb.1:6 ed2k.1:6 #: ../../src/utils/aLinkCreator/docs/alc.1:5 #: ../../src/utils/aLinkCreator/docs/alcc.1:6 ../../src/utils/cas/docs/cas.1:6 #: ../../src/utils/wxCas/docs/wxcas.1:5 ../../src/utils/xas/docs/xas.1:5 #, no-wrap msgid "SYNOPSIS" msgstr "SINOPSIS" #. type: Plain text #: amule.1:10 amulegui.1:10 msgid "[B<-c> IpathE>] [B<-geometry> IgeomE>]" msgstr "[B<-c> IpathE>] [B<-geometry> IgeomE>]" #. type: Plain text #: amule.1:13 amuled.1:15 msgid "[B<-w> IpathE>]" msgstr "[B<-w> IpathE>]" #. type: Plain text #: amule.1:17 amuled.1:19 #, fuzzy #| msgid "[B<-t> InumE>] [I]" msgid "[B<-t> InumE>] [I]" msgstr "[B<-t> InumE>] [I]" #. type: SH #: amule.1:24 amulecmd.1:26 amuled.1:25 amulegui.1:20 amuleweb.1:41 ed2k.1:19 #: ../../src/utils/aLinkCreator/docs/alc.1:7 #: ../../src/utils/aLinkCreator/docs/alcc.1:14 #: ../../src/utils/cas/docs/cas.1:14 ../../src/utils/wxCas/docs/wxcas.1:7 #: ../../src/utils/xas/docs/xas.1:7 #, no-wrap msgid "DESCRIPTION" msgstr "DESCRIPCIÓN" #. type: TP #: amule.1:25 amuled.1:26 amulegui.1:24 ed2k.1:21 #: ../../src/utils/cas/docs/cas.1:26 #, no-wrap msgid "B<[ -c> IpathE>, B<--config-dir>=IpathE> B<]>" msgstr "B<[ -c> IpathE>, B<--config-dir>=IpathE> B<]>" #. type: Plain text #: amule.1:28 amuled.1:29 amulegui.1:27 ed2k.1:24 #: ../../src/utils/cas/docs/cas.1:29 msgid "Read config from IpathE> instead of home" msgstr "Leer configuración desde IpathE> en lugar de home" #. type: TP #: amule.1:28 amulegui.1:27 #, no-wrap msgid "B<[ -geometry >IgeomE> B<]>" msgstr "B<[ -geometry >IgeomE> B<]>" #. type: Plain text #: amule.1:31 amulegui.1:30 msgid "" "Sets the geometry of the app. IgeomE> uses the same format as " "standard X11 apps:\t[B<=>][IwidthE>{B}IheightE>][{B<" "+->}IxoffsetE>{B<+->}IyoffsetE>]" msgstr "" "Fija la geometría de la aplicación. IgeomE> usa el mismo formato " "estándar de las aplicaciones X11:\t[B<=>][IwidthE>{B}" "IheightE>][{B<+->}IxoffsetE>{B<+->}IyoffsetE>]" #. type: Plain text #: amule.1:34 amuled.1:42 amulegui.1:33 msgid "Prints log messages to stdout." msgstr "Imprime mensajes de registro en la salida estándar" #. type: Plain text #: amule.1:37 amuled.1:45 amulegui.1:36 msgid "Resets config to default values." msgstr "Reiniciar configuracion a valores por defecto" #. type: TP #: amule.1:37 amuled.1:45 #, no-wrap msgid "B<[ -w> IpathE>, B<--use-amuleweb>=IpathE> B<]>" msgstr "B<[ -w> IpathE>, B<--use-amuleweb>=IpathE> B<]>" #. type: Plain text #: amule.1:40 amuled.1:48 msgid "Specify location of amuleweb binary to IpathE>." msgstr "Especifica ubicacion del binario amuleweb en IpathE>." #. type: Plain text #: amule.1:43 amuled.1:51 msgid "Does not handle fatal exception." msgstr "No maneja excepción grave" #. type: Plain text #: amule.1:46 amuled.1:54 msgid "Does not disable stdin." msgstr "No deshabilitar entrada estándar" #. type: TP #: amule.1:46 amuled.1:54 amulegui.1:39 ed2k.1:24 #, no-wrap msgid "B<[ -t>, B<--category>=InumE> B<]>" msgstr "B<[ -t>, B<--category>=InumE> B<]>" #. type: Plain text #: amule.1:49 amuled.1:57 amulegui.1:42 ed2k.1:27 msgid "Set category for passed eD2k links to InumE>" msgstr "Fijar categoría para enlace eD2k pasado a InumE>" #. type: Plain text #: amule.1:52 amulecmd.1:66 amuled.1:60 amulegui.1:48 amuleweb.1:126 ed2k.1:39 msgid "Displays the current version number." msgstr "Mostrar el número de la versión actual." #. type: Plain text #: amule.1:55 amulecmd.1:69 amuled.1:63 amulegui.1:45 amuleweb.1:123 ed2k.1:36 #: ../../src/utils/aLinkCreator/docs/alcc.1:22 #: ../../src/utils/cas/docs/cas.1:32 msgid "Prints a short usage description." msgstr "Imprime una breve descripción de uso." #. type: TP #: amule.1:55 amuled.1:63 ed2k.1:39 #, fuzzy, no-wrap #| msgid "B<[ eD2k-Link ]>" msgid "B<[ eD2k-link ]>" msgstr "B<[ eD2k-Link ]>" #. type: Plain text #: amule.1:58 amuled.1:66 ed2k.1:42 msgid "Adds an eD2k-link to the core." msgstr "Añadir un enlace eD2k al núcleo." #. type: Plain text #: amule.1:60 amulecmd.1:75 amuled.1:68 ed2k.1:44 msgid "The eD2k link to be added can be:" msgstr "El enlace eD2k para ser añadido puede ser:" #. type: Plain text #: amule.1:63 amulecmd.1:78 amuled.1:71 ed2k.1:47 msgid "a file link (ed2k://|file|...), it will be added to the download queue;" msgstr "" "un enlace de archivo (ed2k://|archivo|...), será añádido a la cola de " "descarga." #. type: Plain text #: amule.1:65 amulecmd.1:80 amuled.1:73 ed2k.1:49 msgid "" "a server link (ed2k://|server|...), it will be added to the server list;" msgstr "" "un enlace de servidor (ed2k://|servidor|...), será añádido a la cola de " "servidores." #. type: Plain text #: amule.1:67 amuled.1:75 ed2k.1:51 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list;" msgstr "" "un enlace de lista de servidores, en cuyo caso todos los servidores de la " "lista serán añadidos a la lista de servidores." #. type: Plain text #: amule.1:69 amuled.1:77 msgid "a magnet link." msgstr "un enlace magnet." #. type: SH #: amule.1:70 amulecmd.1:207 amuleweb.1:132 #, no-wrap msgid "NOTES" msgstr "NOTAS" #. type: SS #: amule.1:71 amulecmd.1:208 amuleweb.1:133 #, no-wrap msgid "Paths" msgstr "Rutas" #. type: Plain text #: amule.1:75 amulecmd.1:212 amuleweb.1:137 msgid "" "For all options which take a IpathE> value, if the I " "contains no directory part (i.e. just a plain filename), then it is " "considered to be under the aMule configuration directory, I<~/.aMule>." msgstr "" "Todas las opciones que tengan IpathE> como valor, si I " "contiene un directorio sin part (p.e. solo un archivo normal), entones se " "tomará el directorio de la configuración, I<~/.aMule>." #. type: SH #: amule.1:75 amulecmd.1:240 amuled.1:78 amuleweb.1:171 ed2k.1:60 #: ../../src/utils/cas/docs/cas.1:36 #, no-wrap msgid "FILES" msgstr "ARCHIVOS" #. type: Plain text #: amule.1:77 amuled.1:80 msgid "~/.aMule/*" msgstr "~/.aMule/*" #. type: SH #: amule.1:77 amulecmd.1:256 amuled.1:80 amulegui.1:48 amuleweb.1:191 #: ed2k.1:62 ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/aLinkCreator/docs/alcc.1:26 #: ../../src/utils/cas/docs/cas.1:42 ../../src/utils/wxCas/docs/wxcas.1:16 #: ../../src/utils/xas/docs/xas.1:16 #, no-wrap msgid "REPORTING BUGS" msgstr "INFORMANDO ERRORES" #. type: Plain text #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 msgid "" "Please report bugs either on our forum (I), or in " "our bugtracker (I). Please do not report bugs in e-" "mail, neither to our mailing list nor directly to any team member." msgstr "" "Por favor informa de fallos ya sea en nuestro foro (I), o en nuestro bugtracker (I). Por favor no " "informe de fallos por correo, ni en nuestras listas, ni directamente al " "correo de algun miembro del equipo." #. type: SH #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 #, no-wrap msgid "COPYRIGHT" msgstr "COPYRIGHT" #. type: Plain text #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 msgid "" "aMule and all of its related utilities are distributed under the GNU General " "Public License." msgstr "" "aMule y todas las demás utilidades relacionadas son distribuidas bajo la GNU " "General Public License." #. type: SH #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 #, no-wrap msgid "SEE ALSO" msgstr "VEASE TAMBIEN" #. type: SH #: amule.1:84 amulecmd.1:263 amuled.1:87 amulegui.1:55 amuleweb.1:198 #: ed2k.1:69 ../../src/utils/aLinkCreator/docs/alc.1:18 #: ../../src/utils/aLinkCreator/docs/alcc.1:33 #: ../../src/utils/cas/docs/cas.1:49 ../../src/utils/wxCas/docs/wxcas.1:23 #: ../../src/utils/xas/docs/xas.1:23 #, no-wrap msgid "AUTHOR" msgstr "AUTOR" #. type: Plain text #: amule.1:85 amulecmd.1:264 amuled.1:88 amuleweb.1:199 ed2k.1:70 #: ../../src/utils/aLinkCreator/docs/alc.1:19 #: ../../src/utils/aLinkCreator/docs/alcc.1:34 #: ../../src/utils/cas/docs/cas.1:50 ../../src/utils/wxCas/docs/wxcas.1:24 #: ../../src/utils/xas/docs/xas.1:24 msgid "" "This manpage was written by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Esta página de manualfue escrita por Vollstrecker Eamule@vollstreckernet." "deE" #. type: TH #: amulecmd.1:1 #, no-wrap msgid "AMULECMD" msgstr "AMULECMD" #. type: TH #: amulecmd.1:1 #, fuzzy, no-wrap #| msgid "aMuleCmd v2.3.0" msgid "aMuleCmd v2.3.1" msgstr "aMuleCmd v2.3.0" #. type: TH #: amulecmd.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "aMule utilities" msgstr "aMule utilidades" #. type: Plain text #: amulecmd.1:7 msgid "amulecmd - Console-based program to control aMule" msgstr "amulecmd - Programa basado en consola para controlar aMule" #. type: Plain text #: amulecmd.1:13 amuleweb.1:12 msgid "" "[B<-h> IhostE>] [B<-p> IportE>] [B<-P> " "IpasswordE>] [B<-f> IpathE>]" msgstr "" "[B<-h> IhostE>] [B<-p> IportE>] [B<-P> " "IpasswordE>] [B<-f> IpathE>]" #. type: Plain text #: amulecmd.1:17 msgid "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> IcommandE>]" "B< >}" msgstr "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> IcommandE>]" "B< >}" #. type: Plain text #: amulecmd.1:20 amuleweb.1:31 msgid "[B<--create-config-from>=IpathE>]" msgstr "[B<--create-config-from>=IpathE>]" #. type: Plain text #: amulecmd.1:29 msgid "B is a console-based client to control aMule." msgstr "B es un cliente basado en consola para controlar aMule." #. type: TP #: amulecmd.1:29 amuleweb.1:46 #, no-wrap msgid "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" msgstr "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" #. type: Plain text #: amulecmd.1:33 amuleweb.1:50 msgid "" "Host where aMule is running (default: I). IhostE> " "might be an IP address or a DNS name" msgstr "" "Host donde se está ejecutando aMule. (por defecto: I). " "IhostE> debe ser o una dirección IP o un nombre DNS" #. type: TP #: amulecmd.1:33 amuleweb.1:50 #, no-wrap msgid "B<[ -p> IportE>, B<--port>=IportE> B<]>" msgstr "B<[ -p> IportE>, B<--port>=IportE> B<]>" #. type: Plain text #: amulecmd.1:36 amuleweb.1:53 msgid "" "aMule's port for External Connections, as set in Preferences-ERemote " "Controls (default: I<4712>)" msgstr "" "Puerto de conexión externa de aMule, puesto en Opciones-EControles " "Remotos (por defecto: 4712)" #. type: TP #: amulecmd.1:36 amuleweb.1:53 #, no-wrap msgid "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" msgstr "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" #. type: Plain text #: amulecmd.1:39 amuleweb.1:56 msgid "External Connections password." msgstr "Contraseña de conexiones externas" #. type: TP #: amulecmd.1:39 amuleweb.1:56 #, no-wrap msgid "B<[ -f> IpathE>, B<--config-file>=IpathE> B<]>" msgstr "B<[ -f> IpathE>, B<--config-file>=IpathE> B<]>" #. type: Plain text #: amulecmd.1:43 amuleweb.1:60 msgid "" "Use the given configuration file. Default configuration file is I<~/.aMule/" "remote.conf>" msgstr "" "Usar la configuración dada por el archivo. El archivo de configuración por " "defecto es I<~/.aMule/remote.conf>" #. type: Plain text #: amulecmd.1:46 amuleweb.1:63 msgid "Do not print any output to stdout." msgstr "No mostrar nada por la salida estándar" #. type: Plain text #: amulecmd.1:50 amuleweb.1:67 msgid "Be verbose - show also debug messages." msgstr "Modo Extendido - muestra también los mensajes de depuración." #. type: TP #: amulecmd.1:50 amuleweb.1:67 #, no-wrap msgid "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" msgstr "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" #. type: Plain text #: amulecmd.1:54 amuleweb.1:71 msgid "" "Sets program locale (language). See the B section for the " "description of the IlangE> parameter." msgstr "" "Selecciona el idioma del programa. Ver la sección B para la " "descripción del parámetro del IlangE>." #. type: Plain text #: amulecmd.1:57 amuleweb.1:74 msgid "Write command line options to config file and exit" msgstr "" "Escribe opciones de la línea de comando al archivo de configuración y " "termina." #. type: TP #: amulecmd.1:57 #, no-wrap msgid "B<[ -c> IcommandE>, B<--command>=IcommandE> B<]>" msgstr "B<[ -c> IcommandE>, B<--command>=IcommandE> B<]>" #. type: Plain text #: amulecmd.1:60 msgid "" "Execute IcommandE> as if it was entered at amulecmd's prompt and " "exit." msgstr "" "Ejecuta IcomandoE> y sal como si este fuera introducido en " "amulecmd." #. type: TP #: amulecmd.1:60 amuleweb.1:117 #, no-wrap msgid "B<[ --create-config-from>=IpathE> B<]>" msgstr "B<[ --create-config-from>=IpathE> B<]>" #. type: Plain text #: amulecmd.1:63 amuleweb.1:120 msgid "" "Create config file based upon IpathE>, which must point to a valid " "aMule config file, and then exit." msgstr "" "Crear archivo de configuración basado en IpathE>, el cual debe " "apuntar a un archivo de configuración válido, y entonces termina." #. type: SH #: amulecmd.1:69 #, no-wrap msgid "COMMANDS" msgstr "COMANDOS" #. type: Plain text #: amulecmd.1:71 msgid "All commands are case insensitive." msgstr "Todos los comandos ignoran las mayúsculas." #. type: SS #: amulecmd.1:71 #, no-wrap msgid "Add IeD2k-linkE> | Imagnet-linkE>" msgstr "Añadir IeD2k-linkE> | Imagnet-linkE>" #. type: Plain text #: amulecmd.1:73 msgid "Adds an eD2k-link or a magnet-link to the core." msgstr "Añadir un enlace eD2k o un enlace magnet al núcleo." #. type: Plain text #: amulecmd.1:82 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list." msgstr "" "un enlace con una lista de servidores, se añadirán todos los servidores a la " "lista." #. type: Plain text #: amulecmd.1:85 msgid "The magnet link must contain the eD2k hash and file length." msgstr "El enlace magnet debe contener un hash eD2k y la longitud del archivo." #. type: SS #: amulecmd.1:85 #, no-wrap msgid "Cancel IhashE> | InumberE>" msgstr "Cancelar IhashE> | InumberE>" #. type: Plain text #: amulecmd.1:87 msgid "" "Cancels the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" #. type: SS #: amulecmd.1:87 #, no-wrap msgid "Connect [ I | I | Iip|nameE> ]" msgstr "Conectar [ I | I | Iip|nameE> ]" #. type: Plain text #: amulecmd.1:89 msgid "Connect to the network." msgstr "Conectar a la red." #. type: Plain text #: amulecmd.1:91 msgid "This will connect to all networks that are enabled in Preferences." msgstr "" "Esto conectará a todas las redes que estén habilitadas en las preferencias." #. type: Plain text #: amulecmd.1:95 msgid "" "With the optional parameter you can specify which network to connect to. " "Giving a server address in the form of IP:Port (where IP is either a dotted " "decimal IPv4 address or a resolvable DNS name) aMule will connect to that " "server only." msgstr "" #. type: Plain text #: amulecmd.1:98 msgid "" "Disconnect from all networks you are connected to, or just disconnect from " "the specified network." msgstr "" "Desconectar de todas las redes a las que estás conectado, o solamente " "desconecta de la red especificada." #. type: SS #: amulecmd.1:98 #, no-wrap msgid "Download InumberE>" msgstr "Descarga InumberE>" #. type: Plain text #: amulecmd.1:100 msgid "Start downloading a file." msgstr "Comenzar a descargar un archivo." #. type: Plain text #: amulecmd.1:104 msgid "" "The InumberE> of a file from the last search has to be given. " "Example: `download 12' will start to download the file with the number 12 of " "the previous search." msgstr "" #. type: Plain text #: amulecmd.1:106 msgid "Disconnect from amule/amuled and quit amulecmd." msgstr "Desconectar de amule/amuled y salir de amulecmd." #. type: SS #: amulecmd.1:106 #, no-wrap msgid "Get IwhatE>" msgstr "Obtener IwhatE>" #. type: Plain text #: amulecmd.1:108 msgid "Get and display a preference value." msgstr "Obtener y mostrar un valor de opciones." #. type: Plain text #: amulecmd.1:110 amulecmd.1:144 amulecmd.1:173 amulecmd.1:183 msgid "Available values for IwhatE>:" msgstr "Valores disponibles para IwhatE>:" #. type: Plain text #: amulecmd.1:113 msgid "Get bandwidth limits." msgstr "Obtener limites de ancho de banda." #. type: Plain text #: amulecmd.1:115 msgid "Get IPFilter preferences." msgstr "Obtener opciones del filtro IP." #. type: SS #: amulecmd.1:116 #, no-wrap msgid "Help [ IcommandE> ]" msgstr "Ayuda [ IcommandE> ]" #. type: Plain text #: amulecmd.1:120 msgid "" "Prints a short usage description. If called without parameter, it shows a " "list of available commands. If called with IcommandE>, it shows a " "short description of the given command." msgstr "" #. type: SS #: amulecmd.1:120 #, no-wrap msgid "Pause IhashE> | InumberE>" msgstr "Pausa IhashE> | InumberE>" #. type: Plain text #: amulecmd.1:122 msgid "" "Pauses the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" #. type: SS #: amulecmd.1:122 #, no-wrap msgid "Priority IpriorityE> IhashE> | InumberE>" msgstr "" #. type: Plain text #: amulecmd.1:124 msgid "" "Set priority of a download specified by IhashE> or " "InumberE>." msgstr "" "Fijar la prioridad de una descarga especificada por IhashE> o " "InumberE>." #. type: Plain text #: amulecmd.1:126 msgid "Available values for IpriorityE>:" msgstr "Valores disponibles para IpriorityE>:" #. type: Plain text #: amulecmd.1:129 msgid "Automatic priority." msgstr "Prioridad automática." #. type: Plain text #: amulecmd.1:131 msgid "High priority." msgstr "Prioridad alta." #. type: Plain text #: amulecmd.1:133 msgid "Low priority." msgstr "Prioridad baja." #. type: Plain text #: amulecmd.1:135 msgid "Normal priority." msgstr "Prioridad normal." #. type: Plain text #: amulecmd.1:138 msgid "Shows the progress of an on-going search." msgstr "" #. type: Plain text #: amulecmd.1:140 msgid "A synonim of the B command." msgstr "Un sinónimo del comando B." #. type: SS #: amulecmd.1:140 #, no-wrap msgid "Reload IwhatE>" msgstr "Recargar IwhatE>" #. type: Plain text #: amulecmd.1:142 msgid "Reloads a given object." msgstr "Recargar un objeto dado." #. type: Plain text #: amulecmd.1:147 msgid "Reload shared files list." msgstr "Recargar lista de archivos compartidos." #. type: Plain text #: amulecmd.1:149 msgid "Reload IP filter tables." msgstr "Recargar tablas de filtros IP." #. type: Plain text #: amulecmd.1:152 msgid "Reset the log." msgstr "Reiniciar el registro." #. type: Plain text #: amulecmd.1:154 msgid "Shows you the results of the last search." msgstr "" #. type: SS #: amulecmd.1:154 #, no-wrap msgid "Resume IhashE> | InumberE>" msgstr "" #. type: Plain text #: amulecmd.1:156 msgid "" "Resumes the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" #. type: SS #: amulecmd.1:156 #, no-wrap msgid "Search ItypeE> IkeywordE>" msgstr "" #. type: Plain text #: amulecmd.1:159 msgid "" "Makes a search for the given IkeywordE>. A search type and a " "keyword to search is mandatory to do this. Example: `search kad amule' " "performs a kad search for `amule'." msgstr "" #. type: Plain text #: amulecmd.1:161 msgid "Available search types:" msgstr "Tipos de búsquedas disponibles:" #. type: Plain text #: amulecmd.1:164 msgid "Performs a global search." msgstr "Realiza una búsqueda global." #. type: Plain text #: amulecmd.1:166 msgid "Performs a search on the Kademlia network." msgstr "Realiza una búsqueda en la red Kademlia." #. type: Plain text #: amulecmd.1:168 msgid "Performs a local search." msgstr "Realiza una búsqueda local." #. type: SS #: amulecmd.1:169 #, no-wrap msgid "Set IwhatE>" msgstr "Fija IwhatE>" #. type: Plain text #: amulecmd.1:171 msgid "Sets a given preferences value." msgstr "Asigna un valor dado de opción." #. type: Plain text #: amulecmd.1:176 msgid "Set bandwidth limits." msgstr "Asignar limites de ancho de banda." #. type: Plain text #: amulecmd.1:178 msgid "Set IPFilter preferences." msgstr "Fija las opciones del FiltroIP" #. type: SS #: amulecmd.1:179 #, no-wrap msgid "Show IwhatE>" msgstr "Mostrar IwhatE>" #. type: Plain text #: amulecmd.1:181 msgid "Shows upload/download queue, servers list or shared files list." msgstr "" #. type: Plain text #: amulecmd.1:186 msgid "Show download queue." msgstr "Mostrar cola de descarga." #. type: Plain text #: amulecmd.1:188 msgid "Show log." msgstr "Mostrar registro." #. type: Plain text #: amulecmd.1:190 msgid "Show servers list." msgstr "Mostrar lista de servidores." #. type: Plain text #: amulecmd.1:192 msgid "Show upload queue." msgstr "Mostrar cola de subida." #. type: Plain text #: amulecmd.1:196 msgid "" "Shutdown the remote running core (amule/amuled). This will also shut down " "the text client, since it is unusable without a running core." msgstr "" #. type: SS #: amulecmd.1:196 #, no-wrap msgid "Statistics [ InumberE> ]" msgstr "Estadísticas [ InumberE> ]" #. type: Plain text #: amulecmd.1:198 msgid "Show statistics tree." msgstr "Mostrar árbol de estadísticas." #. type: Plain text #: amulecmd.1:202 msgid "" "The optional InumberE> in the range of 0-255 can be passed as " "argument to this command, which tells how many entries of the client version " "subtree should be shown. Passing 0, or omitting it means `unlimited'." msgstr "" #. type: Plain text #: amulecmd.1:205 msgid "" "Example: `statistics 5' will show only the top 5 versions for each client " "type." msgstr "" #. type: Plain text #: amulecmd.1:207 msgid "Show connection status, current up/download speeds, etc." msgstr "" #. type: SS #: amulecmd.1:212 amuleweb.1:137 #, no-wrap msgid "Languages" msgstr "Lenguajes" #. type: Plain text #: amulecmd.1:218 amuleweb.1:143 msgid "" "The IlangE> parameter for the B<-l> option has the following form: " "I[B<_>I][B<.>I][B<@>I] where I is the " "primary language, I is a sublanguage/territory, I is the " "character set to use and I allows the user to select a specific " "instance of localization data within a single category." msgstr "" #. type: Plain text #: amulecmd.1:220 amuleweb.1:145 msgid "For example, the following strings are valid:" msgstr "Por ejemplo, las siguientes cadenas son válidas:" #. type: Plain text #: amulecmd.1:234 amuleweb.1:159 msgid "" "Though all the above strings are accepted as valid language definitions, " "I and I are yet unused." msgstr "" #. type: Plain text #: amulecmd.1:237 amuleweb.1:162 msgid "" "In addition to the format above, you can also specify full language names in " "English - so B<-l german> is also valid and is equal to B<-l de_DE>." msgstr "" #. type: Plain text #: amulecmd.1:240 amuleweb.1:165 msgid "" "When no locale is defined, either on command-line or in config file, system " "default language will be used." msgstr "" #. type: Plain text #: amulecmd.1:242 amuleweb.1:173 msgid "~/.aMule/remote.conf" msgstr "~/.aMule/remote.conf" #. type: SH #: amulecmd.1:242 amuleweb.1:177 #, no-wrap msgid "EXAMPLE" msgstr "EJEMPLO" #. type: Plain text #: amulecmd.1:244 msgid "Typically amulecmd will be first run as:" msgstr "Normalmente amulecmd se ejecutara primero como::" #. type: Plain text #: amulecmd.1:246 msgid "B B<-h> I B<-p> I B<-P> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I B<-w>" #. type: Plain text #: amulecmd.1:248 amuleweb.1:183 msgid "or" msgstr "o" #. type: Plain text #: amulecmd.1:250 msgid "B B<--create-config-from>=I" msgstr "B B<--create-config-from>=I" #. type: Plain text #: amulecmd.1:252 amuleweb.1:187 msgid "" "These will save settings to I<$HOME/.aMule/remote.conf>, and later you only " "need to type:" msgstr "" "Esto guardará las opciones en I<$HOME/.aMule/remote.conf>, y después sólo " "tiene que escribir:" #. type: Plain text #: amulecmd.1:256 msgid "Of course, you don't have to follow this example." msgstr "" #. type: TH #: amuled.1:1 #, no-wrap msgid "AMULED" msgstr "AMULED" #. type: TH #: amuled.1:1 #, fuzzy, no-wrap #| msgid "aMule Daemon v2.3.0" msgid "aMule Daemon v2.3.1" msgstr "Demonio aMule v2.3.0" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon" msgstr "Demonio aMule" #. type: Plain text #: amuled.1:6 msgid "amuled - the all-platform eMule p2p client - daemonized version" msgstr "" #. type: Plain text #: amuled.1:9 ../../src/utils/cas/docs/cas.1:11 msgid "[B<-c> IpathE>]" msgstr "[B<-c> IpathE>]" #. type: Plain text #: amuled.1:11 msgid "[B<-p> IpathE>]" msgstr "[B<-p> IpathE>]" #. type: Plain text #: amuled.1:32 msgid "Forks to background." msgstr "Enviar a segundo plano." #. type: TP #: amuled.1:32 #, no-wrap msgid "B<[ -p> IpathE>, B<--pid-file>=IpathE> B<]>" msgstr "B<[ -p> IpathE>, B<--pid-file>=IpathE> B<]>" #. type: Plain text #: amuled.1:36 msgid "" "After fork, create a pid-file in the IpathE>. IpathE> " "has to contain the filename." msgstr "" #. type: Plain text #: amuled.1:39 msgid "Configure EC (External Connections)." msgstr "" #. type: TH #: amulegui.1:1 #, no-wrap msgid "AMULEGUI" msgstr "AMULEGUI" #. type: TH #: amulegui.1:1 #, fuzzy, no-wrap #| msgid "aMuleGUI v2.3.0" msgid "aMuleGUI v2.3.1" msgstr "aMuleGUI v2.3.0" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI" msgstr "aMuleGUI" #. type: Plain text #: amulegui.1:6 msgid "amulegui - aMule control program with GUI" msgstr "amulegui - Programa para controlar aMule con Interfaz Gráfica" #. type: Plain text #: amulegui.1:14 msgid "[B<-t> InumE>]" msgstr "[B<-t> InumE>]" #. type: Plain text #: amulegui.1:24 msgid "" "B is a client program, and can be connected to amule or amuled via " "EC. You can manage your amule program with it. It provides almost the same " "functionalities as amule, even if the core works on another computer." msgstr "" #. type: Plain text #: amulegui.1:39 msgid "Skip connection dialog." msgstr "Saltar diálogo de conexión" #. type: Plain text #: amulegui.1:57 msgid "" "This manpage was written by Julien Delange for Debian Ejulien AT gunnm " "DOT orgE" msgstr "" #. type: Plain text #: amulegui.1:58 msgid "" "This manpage was rewritten by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "AMULEWEB" msgstr "AMULEWEB" #. type: TH #: amuleweb.1:1 #, fuzzy, no-wrap #| msgid "aMule webserver v2.3.0" msgid "aMule webserver v2.3.1" msgstr "Servidor web aMule v2.3.0" #. type: Plain text #: amuleweb.1:6 msgid "amuleweb - aMule web server" msgstr "amuleweb - servidor web de aMule" #. type: Plain text #: amuleweb.1:15 msgid "[B<-l> IlangE>]" msgstr "[B<-l> IlangE>]" #. type: Plain text #: amuleweb.1:18 msgid "[B<-t> InameE>] [B<-s> IportE>]" msgstr "[B<-t> InameE>] [B<-s> IportE>]" #. type: Plain text #: amuleweb.1:20 msgid "[B<-U> IportE>]" msgstr "[B<-U> IportE>]" #. type: Plain text #: amuleweb.1:24 msgid "[B<-A> IpasswordE>] [B<-G> IpasswordE>]" msgstr "[B<-A> IpasswordE>] [B<-G> IpasswordE>]" #. type: Plain text #: amuleweb.1:40 msgid "[B<--amule-config-file>=IpathE>]" msgstr "[B<--amule-config-file>=IpathE>]" #. type: Plain text #: amuleweb.1:46 msgid "" "B manages your access to amule through a web browser. You can " "start amuleweb together with B(1), or separately, any time later. " "Options can be specified via command-line or via config-file. Command-line " "options take precedence over config-file options." msgstr "" #. type: TP #: amuleweb.1:74 #, no-wrap msgid "B<[ -t> InameE>, B<--template>=InameE> B<]>" msgstr "B<[ -t> InameE>, B<--template>=InameE> B<]>" #. type: Plain text #: amuleweb.1:77 msgid "" "Loads the template named InameE>. See the B section " "for details." msgstr "" #. type: TP #: amuleweb.1:77 #, no-wrap msgid "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" msgstr "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" #. type: Plain text #: amuleweb.1:80 msgid "" "Webserver's HTTP port. This is the port you must point your browser to " "(default: I<4711>)." msgstr "" #. type: Plain text #: amuleweb.1:84 msgid "Enable UPnP." msgstr "Habilitar UPnP." #. type: TP #: amuleweb.1:84 #, no-wrap msgid "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" msgstr "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" #. type: Plain text #: amuleweb.1:87 msgid "UPnP port." msgstr "Puerto UPnP." #. type: Plain text #: amuleweb.1:90 msgid "Enables using gzip compression in HTTP traffic to save bandwidth." msgstr "" #. type: Plain text #: amuleweb.1:93 msgid "Disables using gzip compression (this is the default)." msgstr "Deshabilitar la compresión gzip (esto es por defecto)." #. type: TP #: amuleweb.1:93 #, no-wrap msgid "B<[ -A> IpasswdE>, B<--admin-pass>=IpasswdE> B<]>" msgstr "B<[ -A> IpasswdE>, B<--admin-pass>=IpasswdE> B<]>" #. type: Plain text #: amuleweb.1:96 msgid "Full access password for webserver." msgstr "Contraseña de acceso completo al servidor web." #. type: TP #: amuleweb.1:96 #, no-wrap msgid "B<[ -G> IpasswdE>, B<--guest-pass>=IpasswdE> B<]>" msgstr "B<[ -G> IpasswdE>, B<--guest-pass>=IpasswdE> B<]>" #. type: Plain text #: amuleweb.1:99 msgid "Guest password for webserver." msgstr "Contraseña de invitado al servidor web." #. type: Plain text #: amuleweb.1:102 msgid "Allows guest access." msgstr "Permitir acceso invitado." #. type: Plain text #: amuleweb.1:105 msgid "Denies guest access (default)." msgstr "Deniega el acceso invitado (defecto)" #. type: Plain text #: amuleweb.1:111 msgid "" "Load/save webserver settings from/to remote aMule. This causes amuleweb to " "ignore command-line and config-file settings, and load them from aMule. " "When saving preferences none will be written to the config file, but to " "aMule. (Of course, this works only for those settings that can be set in " "aMule's Preferences-ERemote Controls.)" msgstr "" #. type: Plain text #: amuleweb.1:114 msgid "Disable PHP interpreter (deprecated)" msgstr "Deshabilitar interprete PHP (obsoleto)" #. type: Plain text #: amuleweb.1:117 msgid "Recompiles PHP pages on each request." msgstr "Recompilar páginas PHP en cada solicitud." #. type: TP #: amuleweb.1:126 #, no-wrap msgid "B<[ --amule-config-file>=IpathE> B<]>" msgstr "B<[ --amule-config-file>=IpathE> B<]>" #. type: Plain text #: amuleweb.1:132 msgid "" "aMule config file path. B aMule uses this option when " "starting amuleweb at aMule startup. This option causes all other command-" "line and config-file settings to be ignored, preferences to be read from the " "given config file, and also implies the B<-q -L> options." msgstr "" #. type: SH #: amuleweb.1:165 #, no-wrap msgid "SKIN SUPPORT" msgstr "SOPORTE TEMAS." #. type: Plain text #: amuleweb.1:169 msgid "" "B is capable of displaying information in different skins. These " "skins are called templates, and you can make amuleweb load a specific " "template via the B<-t> command line option. Templates are searched in two " "places: first in I<~/.aMule/webserver/> and then in I if you installed with --prefix=/usr." msgstr "" #. type: Plain text #: amuleweb.1:171 msgid "" "Each template must be in a subdirectory of the template name, and this " "directory must contain all files the template needs." msgstr "" #. type: Plain text #: amuleweb.1:175 msgid "~/.aMule/webserver/" msgstr "~/.aMule/webserver/" #. type: Plain text #: amuleweb.1:177 msgid "I<$(pkgdatadir)>/webserver/" msgstr "I<$(pkgdatadir)>/webserver/" #. type: Plain text #: amuleweb.1:179 msgid "Typically amuleweb will be first run as:" msgstr "Normalmente amuleweb se ejecutara primero como:" #. type: Plain text #: amuleweb.1:181 msgid "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" #. type: Plain text #: amuleweb.1:185 msgid "B B<--create-config-from>=I" msgstr "B B<--create-config-from>=I" #. type: Plain text #: amuleweb.1:191 msgid "" "Of course, you may specify any more or less options on the first example " "line, and you may also totally omit it." msgstr "" "Por supuesto, puede especificar las opciones en el ejemplo de la primera " "linea, y también puede omitirlo." #. type: TH #: ed2k.1:1 #, no-wrap msgid "ED2K" msgstr "ED2K" #. type: TH #: ed2k.1:1 #, no-wrap msgid "aMule eD2k link parser v1.5.1" msgstr "Analizador aMule de enlaces eD2k v1.5.1" #. type: Plain text #: ed2k.1:6 msgid "ed2k - aMule eD2k link parser" msgstr "ed2k - analizador aMule de enlaces eD2k" #. type: Plain text #: ed2k.1:10 msgid "[B<-c> IpathE>] [B<-t> InumE>]" msgstr "[B<-c> IpathE>] [B<-t> InumE>]" #. type: Plain text #: ed2k.1:13 #, fuzzy #| msgid "IeD2k-LinkE>" msgid "IeD2k-linkE>" msgstr "IeD2k-LinkE>" #. type: Plain text #: ed2k.1:21 msgid "" "Sends the given IeD2k-linkE> to aMule, i.e. writes it to the file " "~/.aMule/ED2KLinks, which will be checked by aMule every second for links." msgstr "" #. type: Plain text #: ed2k.1:30 msgid "" "Loads all link found in the emulecollection given as Ied2k-linkE>" msgstr "" #. type: Plain text #: ed2k.1:33 msgid "" "Lists all link found in the emulecollection given as Ied2k-linkE>" msgstr "" #. type: Plain text #: ed2k.1:53 msgid "a magnet link;" msgstr "Un enlace magnet;" #. type: Plain text #: ed2k.1:55 msgid "an emulecollection file." msgstr "Un archivo emulecollection." #. type: Plain text #: ed2k.1:60 msgid "" "B You can give " "more than one link, and every link can have it's own params. For example " "Blink1E -t2 Elink2E> will download Ilink1E> " "in standard category and Ilink2E> in category 2." msgstr "" #. type: Plain text #: ed2k.1:62 msgid "~/.aMule/ED2KLinks" msgstr "~/.aMule/ED2KLinks" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "ALC" msgstr "ALC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "aLinkCreator" msgstr "aLinkCreator" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:5 msgid "aLinkCreator - the aMule eD2k link creator" msgstr "aLinkCreator - el creador de enlaces eD2k de aMule" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:9 msgid "" "B is a graphical utility to create an eD2k link to any file on your " "computer." msgstr "" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/wxCas/docs/wxcas.1:16 msgid "This app doesn't take any arguments." msgstr "Esta apli no tiene ningún argumento." #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "ALCC" msgstr "ALCC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "aMule eD2k links calculator" msgstr "Calculador de enlaces eD2k de aMule" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:6 msgid "alcc - text based eD2k links calculator for aMule" msgstr "alcc - calculador de enlaces eD2k basado en texto para aMule" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:11 msgid "Iinputfiles_listE>" msgstr "Iinputfiles_listE>" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:16 msgid "" "Compute the eD2k links of all the input files given in the " "Iinputfiles_listE> (There can be one or more files)." msgstr "" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:19 msgid "Compute and add part hashes to the computed eD2k links." msgstr "" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:26 msgid "Be verbose - show also calculation steps." msgstr "Modo Extendido - muestra también los pasos de cálculo." #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "CAS" msgstr "CAS" #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "cas v0.8" msgstr "cas v0.8" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:6 msgid "cas - c aMule statistics" msgstr "cas - c estadisticas de aMule" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:18 #, fuzzy #| msgid "" #| "B is a plugin for xchat. For loading see your xchat documentation. " #| "After loading type /xas and it will send statistics to the channel you " #| "are in. These are taken from your Online Signature file. For this to " #| "work, you must enable the \"Online Signature\" option in aMules " #| "preferences." msgid "" "B is a program for displaying the contents of your aMule online " "signature file to console (in a human readable form). For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B es un plugin para xchat. Para cargar ver la documentación de xchat. " "Después de cargar teclea /xas y esto enviará las estadísticas al canal en el " "que tú estás. Se obtienen de tu archivo de firma Online. Para que esto " "funcione, debes habilitar la opción \"Firma Online\" en las opciones de " "aMule." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:22 msgid "" "Writes the online signature picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:26 msgid "" "HTML page with stats and picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:34 msgid "Without any options, it prints online signature data to stdout." msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:36 msgid "B was written by Pedro de Oliveira Efalso@rdk.homeip.netE" msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:38 msgid "~/.aMule/casrc" msgstr "~/.aMule/casrc" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:40 msgid "stat.png" msgstr "stat.png" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:42 msgid "tmp.html" msgstr "tmp.html" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "WXCAS" msgstr "WXCAS" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "wxCas" msgstr "wxCas" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:5 msgid "wxcas - wx c aMule statistics" msgstr "wxcas - wx c estadísticas de aMule" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:11 #, fuzzy #| msgid "" #| "B is a plugin for xchat. For loading see your xchat documentation. " #| "After loading type /xas and it will send statistics to the channel you " #| "are in. These are taken from your Online Signature file. For this to " #| "work, you must enable the \"Online Signature\" option in aMules " #| "preferences." msgid "" "B is a program for displaying the contents of your online signature " "file in a nice wx Window on your Desktop. For this to work, you must enable " "the \"Online Signature\" option in aMule's preferences." msgstr "" "B es un plugin para xchat. Para cargar ver la documentación de xchat. " "Después de cargar teclea /xas y esto enviará las estadísticas al canal en el " "que tú estás. Se obtienen de tu archivo de firma Online. Para que esto " "funcione, debes habilitar la opción \"Firma Online\" en las opciones de " "aMule." #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:14 msgid "" "Based on Pedro de Oliveira's B(1). B was written by ThePolish " "Ethepolish@vipmail.ruE" msgstr "" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "XAS" msgstr "XAS" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "xas v1.9" msgstr "xas v1.9" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:5 msgid "xas - X-Chat aMule Statistics" msgstr "xas - Estadísticas aMule para X-Chat" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:7 msgid "B" msgstr "B" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:12 #, fuzzy #| msgid "" #| "B is a plugin for xchat. For loading see your xchat documentation. " #| "After loading type /xas and it will send statistics to the channel you " #| "are in. These are taken from your Online Signature file. For this to " #| "work, you must enable the \"Online Signature\" option in aMules " #| "preferences." msgid "" "B is a plugin for xchat. For loading see your xchat documentation. " "After loading type /xas and it will send statistics to the channel you are " "in. These are taken from your Online Signature file. For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B es un plugin para xchat. Para cargar ver la documentación de xchat. " "Después de cargar teclea /xas y esto enviará las estadísticas al canal en el " "que tú estás. Se obtienen de tu archivo de firma Online. Para que esto " "funcione, debes habilitar la opción \"Firma Online\" en las opciones de " "aMule." #. type: Plain text #: ../../src/utils/xas/docs/xas.1:14 msgid "" "To enable it on every startup of xchat you can just run the autstart-xas " "script (in /usr/bin if you installed with --prefix=/usr)." msgstr "" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:16 msgid "B was originally written by niet" msgstr "B fué escrito originalmente por niet" #~ msgid "January 2010" #~ msgstr "Enero 2010" #~ msgid "When giving kad, it connects to Kad only." #~ msgstr "Al dar kad, solamente se conecta a Kad." amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-fr.add0000644000175000017500000000010612611472361022473 0ustar morphmorphPO4A-HEADER:mode=after;position=^\.TH;beginboundary=^FakePo4aBoundary amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-fr.po0000644000175000017500000015064212611472361022374 0ustar morphmorph# aMule i18n resource file. # Copyright (C) 2010 - 2011 aMule Team # This file is distributed under the same license as the aMule package. # # Translation of aMule to French # # Dylan Aïssi , 2010 - 2011. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "POT-Creation-Date: 2011-10-31 22:06+0100\n" "PO-Revision-Date: 2011-11-09 18:43+0100\n" "Last-Translator: Dylan Aïssi \n" "Language-Team: Français\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" #. type: TH #: amule.1:1 #, no-wrap msgid "AMULE" msgstr "AMULE" #. type: TH #: amule.1:1 amulecmd.1:1 amuled.1:1 amulegui.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "November 2011" msgstr "Novembre 2011" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule v2.3.1" msgstr "aMule v2.3.1" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule" msgstr "aMule" #. type: SH #: amule.1:4 amulecmd.1:5 amuled.1:4 amuleweb.1:4 ed2k.1:4 #: ../../src/utils/aLinkCreator/docs/alc.1:3 #: ../../src/utils/aLinkCreator/docs/alcc.1:4 ../../src/utils/cas/docs/cas.1:4 #: ../../src/utils/wxCas/docs/wxcas.1:3 ../../src/utils/xas/docs/xas.1:3 #, no-wrap msgid "NAME" msgstr "NOM" #. type: Plain text #: amule.1:6 msgid "amule - the all-platform eMule p2p client" msgstr "amule - le client P2P eMule multiplateforme" #. type: SH #: amule.1:6 amulecmd.1:7 amuled.1:6 amulegui.1:6 amuleweb.1:6 ed2k.1:6 #: ../../src/utils/aLinkCreator/docs/alc.1:5 #: ../../src/utils/aLinkCreator/docs/alcc.1:6 ../../src/utils/cas/docs/cas.1:6 #: ../../src/utils/wxCas/docs/wxcas.1:5 ../../src/utils/xas/docs/xas.1:5 #, no-wrap msgid "SYNOPSIS" msgstr "SYNOPSIS" #. type: Plain text #: amule.1:10 amulegui.1:10 msgid "[B<-c> IpathE>] [B<-geometry> IgeomE>]" msgstr "[B<-c> IcheminE>] [B<-geometry> IgéomE>]" #. type: Plain text #: amule.1:13 amuled.1:15 msgid "[B<-w> IpathE>]" msgstr "[B<-w> IcheminE>]" #. type: Plain text #: amule.1:17 amuled.1:19 msgid "[B<-t> InumE>] [I]" msgstr "[B<-t> InumE>] [I]" #. type: SH #: amule.1:24 amulecmd.1:26 amuled.1:25 amulegui.1:20 amuleweb.1:41 ed2k.1:19 #: ../../src/utils/aLinkCreator/docs/alc.1:7 #: ../../src/utils/aLinkCreator/docs/alcc.1:14 #: ../../src/utils/cas/docs/cas.1:14 ../../src/utils/wxCas/docs/wxcas.1:7 #: ../../src/utils/xas/docs/xas.1:7 #, no-wrap msgid "DESCRIPTION" msgstr "DESCRIPTION" #. type: TP #: amule.1:25 amuled.1:26 amulegui.1:24 ed2k.1:21 #: ../../src/utils/cas/docs/cas.1:26 #, no-wrap msgid "B<[ -c> IpathE>, B<--config-dir>=IpathE> B<]>" msgstr "B<[ -c> IcheminE>, B<--config-dir>=IcheminE> B<]>" #. type: Plain text #: amule.1:28 amuled.1:29 amulegui.1:27 ed2k.1:24 #: ../../src/utils/cas/docs/cas.1:29 msgid "Read config from IpathE> instead of home" msgstr "" "Utiliser le fichier de config IcheminE> à la place de celui par " "défaut" #. type: TP #: amule.1:28 amulegui.1:27 #, no-wrap msgid "B<[ -geometry >IgeomE> B<]>" msgstr "B<[ -geometry >IgéomE> B<]>" #. type: Plain text #: amule.1:31 amulegui.1:30 msgid "" "Sets the geometry of the app. IgeomE> uses the same format as " "standard X11 apps:\t[B<=>][IwidthE>{B}IheightE>][{B<" "+->}IxoffsetE>{B<+->}IyoffsetE>]" msgstr "" "Fixer la géometrie de l'application. IgéomE> utilise le meme " "format que les applications X11 standards :\t[B<=>][IlargeurE>" "{B}IhauteurE>][{B<+->}IxoffsetE>{B<+->}" "IyoffsetE>]" #. type: Plain text #: amule.1:34 amuled.1:42 amulegui.1:33 msgid "Prints log messages to stdout." msgstr "Afficher les messages du journal sur stdout." #. type: Plain text #: amule.1:37 amuled.1:45 amulegui.1:36 msgid "Resets config to default values." msgstr "Réinitialiser la configuration par défaut." #. type: TP #: amule.1:37 amuled.1:45 #, no-wrap msgid "B<[ -w> IpathE>, B<--use-amuleweb>=IpathE> B<]>" msgstr "B<[ -w> IcheminE>, B<--use-amuleweb>=IcheminE> B<]>" #. type: Plain text #: amule.1:40 amuled.1:48 msgid "Specify location of amuleweb binary to IpathE>." msgstr "Préciser l'emplacement du binaire d'amuleweb IcheminE>." #. type: Plain text #: amule.1:43 amuled.1:51 msgid "Does not handle fatal exception." msgstr "Ne pas prendre en charge une exception fatale." #. type: Plain text #: amule.1:46 amuled.1:54 msgid "Does not disable stdin." msgstr "Ne pas désactiver stdin." #. type: TP #: amule.1:46 amuled.1:54 amulegui.1:39 ed2k.1:24 #, no-wrap msgid "B<[ -t>, B<--category>=InumE> B<]>" msgstr "B<[ -t>, B<--category>=InumE> B<]>" #. type: Plain text #: amule.1:49 amuled.1:57 amulegui.1:42 ed2k.1:27 msgid "Set category for passed eD2k links to InumE>" msgstr "Définir la catégorie pour les liens eD2k passé à InumE>" #. type: Plain text #: amule.1:52 amulecmd.1:66 amuled.1:60 amulegui.1:48 amuleweb.1:126 ed2k.1:39 msgid "Displays the current version number." msgstr "Affiche le numéro de la version actuelle." #. type: Plain text #: amule.1:55 amulecmd.1:69 amuled.1:63 amulegui.1:45 amuleweb.1:123 ed2k.1:36 #: ../../src/utils/aLinkCreator/docs/alcc.1:22 #: ../../src/utils/cas/docs/cas.1:32 msgid "Prints a short usage description." msgstr "Afficher une court description d'utilisation." #. type: TP #: amule.1:55 amuled.1:63 ed2k.1:39 #, no-wrap msgid "B<[ eD2k-link ]>" msgstr "B<[ lien eD2k ]>" #. type: Plain text #: amule.1:58 amuled.1:66 ed2k.1:42 msgid "Adds an eD2k-link to the core." msgstr "Ajoute un lien eD2k au noyau." #. type: Plain text #: amule.1:60 amulecmd.1:75 amuled.1:68 ed2k.1:44 msgid "The eD2k link to be added can be:" msgstr "Le lien eD2k à ajouter peut être :" #. type: Plain text #: amule.1:63 amulecmd.1:78 amuled.1:71 ed2k.1:47 msgid "a file link (ed2k://|file|...), it will be added to the download queue;" msgstr "" "un lien fichier (ed2k://|fichier|…), il sera ajouté à la file de " "téléchargement;" #. type: Plain text #: amule.1:65 amulecmd.1:80 amuled.1:73 ed2k.1:49 msgid "" "a server link (ed2k://|server|...), it will be added to the server list;" msgstr "" "un lien serveur (ed2k://|serveur|…), il sera ajouté à la liste des serveurs;" #. type: Plain text #: amule.1:67 amuled.1:75 ed2k.1:51 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list;" msgstr "" "un lien de liste de serveurs, dans ce cas tous les serveurs dans la liste " "seront ajoutés à la liste des serveurs;" #. type: Plain text #: amule.1:69 amuled.1:77 msgid "a magnet link." msgstr "un lien magnétique." #. type: SH #: amule.1:70 amulecmd.1:207 amuleweb.1:132 #, no-wrap msgid "NOTES" msgstr "NOTES" #. type: SS #: amule.1:71 amulecmd.1:208 amuleweb.1:133 #, no-wrap msgid "Paths" msgstr "Chemins" #. type: Plain text #: amule.1:75 amulecmd.1:212 amuleweb.1:137 msgid "" "For all options which take a IpathE> value, if the I " "contains no directory part (i.e. just a plain filename), then it is " "considered to be under the aMule configuration directory, I<~/.aMule>." msgstr "" "Pour toutes les options prenant en paramètre un IcheminE>, si le " "I ne contient pas de répertoire (i.e. juste un nom de fichier), " "alors il sera considéré comme étant dans le répertoire de configuration " "d'aMule, I<~/.aMule>." #. type: SH #: amule.1:75 amulecmd.1:240 amuled.1:78 amuleweb.1:171 ed2k.1:60 #: ../../src/utils/cas/docs/cas.1:36 #, no-wrap msgid "FILES" msgstr "FICHIERS" #. type: Plain text #: amule.1:77 amuled.1:80 msgid "~/.aMule/*" msgstr "~/.aMule/*" #. type: SH #: amule.1:77 amulecmd.1:256 amuled.1:80 amulegui.1:48 amuleweb.1:191 #: ed2k.1:62 ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/aLinkCreator/docs/alcc.1:26 #: ../../src/utils/cas/docs/cas.1:42 ../../src/utils/wxCas/docs/wxcas.1:16 #: ../../src/utils/xas/docs/xas.1:16 #, no-wrap msgid "REPORTING BUGS" msgstr "RAPPORTER DES BOGUES" #. type: Plain text #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 msgid "" "Please report bugs either on our forum (I), or in " "our bugtracker (I). Please do not report bugs in e-" "mail, neither to our mailing list nor directly to any team member." msgstr "" "Veuillez rapporter les bogues sur notre forum (I), " "ou sur notre bugtracker (I). Veuillez ne pas " "rapporter les bogues par e-mail, sur notre liste de diffusion ou directement " "à n'importe quel membre de l'équipe." #. type: SH #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 #, no-wrap msgid "COPYRIGHT" msgstr "COPYRIGHT" #. type: Plain text #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 msgid "" "aMule and all of its related utilities are distributed under the GNU General " "Public License." msgstr "" "aMule et tout ses outils sont distribués sous la licence GNU General Public " "License." #. type: SH #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 #, no-wrap msgid "SEE ALSO" msgstr "VOIR AUSSI" #. type: SH #: amule.1:84 amulecmd.1:263 amuled.1:87 amulegui.1:55 amuleweb.1:198 #: ed2k.1:69 ../../src/utils/aLinkCreator/docs/alc.1:18 #: ../../src/utils/aLinkCreator/docs/alcc.1:33 #: ../../src/utils/cas/docs/cas.1:49 ../../src/utils/wxCas/docs/wxcas.1:23 #: ../../src/utils/xas/docs/xas.1:23 #, no-wrap msgid "AUTHOR" msgstr "AUTEUR" #. type: Plain text #: amule.1:85 amulecmd.1:264 amuled.1:88 amuleweb.1:199 ed2k.1:70 #: ../../src/utils/aLinkCreator/docs/alc.1:19 #: ../../src/utils/aLinkCreator/docs/alcc.1:34 #: ../../src/utils/cas/docs/cas.1:50 ../../src/utils/wxCas/docs/wxcas.1:24 #: ../../src/utils/xas/docs/xas.1:24 msgid "" "This manpage was written by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Cette manpage a été écrite par Vollstrecker Eamule@vollstreckernet." "deE" #. type: TH #: amulecmd.1:1 #, no-wrap msgid "AMULECMD" msgstr "AMULECMD" #. type: TH #: amulecmd.1:1 #, no-wrap msgid "aMuleCmd v2.3.1" msgstr "aMuleCmd v2.3.1" #. type: TH #: amulecmd.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "aMule utilities" msgstr "Outils d'aMule" #. type: Plain text #: amulecmd.1:7 msgid "amulecmd - Console-based program to control aMule" msgstr "amulecmd - Programme de contrôle d'aMule en mode texte" #. type: Plain text #: amulecmd.1:13 amuleweb.1:12 msgid "" "[B<-h> IhostE>] [B<-p> IportE>] [B<-P> " "IpasswordE>] [B<-f> IpathE>]" msgstr "" "[B<-h> IhôteE>] [B<-p> IportE>] [B<-P> " "ImotdepasseE>] [B<-f> IcheminE>]" #. type: Plain text #: amulecmd.1:17 msgid "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> IcommandE>]" "B< >}" msgstr "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> IcommandeE>]" "B< >}" #. type: Plain text #: amulecmd.1:20 amuleweb.1:31 msgid "[B<--create-config-from>=IpathE>]" msgstr "[B<--create-config-from>=IcheminE>]" #. type: Plain text #: amulecmd.1:29 msgid "B is a console-based client to control aMule." msgstr "B est un client en mode texte pour contrôler aMule." #. type: TP #: amulecmd.1:29 amuleweb.1:46 #, no-wrap msgid "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" msgstr "B<[ -h> IhôteE>, B<--host>=IhôteE> B<]>" #. type: Plain text #: amulecmd.1:33 amuleweb.1:50 msgid "" "Host where aMule is running (default: I). IhostE> " "might be an IP address or a DNS name" msgstr "" "Hôte où aMule fonctionne (par défaut : I). IhôteE> " "peut être une adresse IP ou un nom DNS." #. type: TP #: amulecmd.1:33 amuleweb.1:50 #, no-wrap msgid "B<[ -p> IportE>, B<--port>=IportE> B<]>" msgstr "B<[ -p> IportE>, B<--port>=IportE> B<]>" #. type: Plain text #: amulecmd.1:36 amuleweb.1:53 msgid "" "aMule's port for External Connections, as set in Preferences-ERemote " "Controls (default: I<4712>)" msgstr "" "Port d'aMule pour les Connexions Externes, tel que défini dans Préférences-" "EContrôles à Distance (défaut: I<4712>)" #. type: TP #: amulecmd.1:36 amuleweb.1:53 #, no-wrap msgid "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" msgstr "B<[ -P> ImotdepasseE>, B<--password>=ImotdepasseE> B<]>" #. type: Plain text #: amulecmd.1:39 amuleweb.1:56 msgid "External Connections password." msgstr "Mot de passe des connexions externes." #. type: TP #: amulecmd.1:39 amuleweb.1:56 #, no-wrap msgid "B<[ -f> IpathE>, B<--config-file>=IpathE> B<]>" msgstr "B<[ -f> IcheminE>, B<--config-file>=IcheminE> B<]>" #. type: Plain text #: amulecmd.1:43 amuleweb.1:60 msgid "" "Use the given configuration file. Default configuration file is I<~/.aMule/" "remote.conf>" msgstr "" "Utiliser le fichier de configuration désigné. Le fichier de configuration " "par défaut est I<~/.aMule/remote.conf>" #. type: Plain text #: amulecmd.1:46 amuleweb.1:63 msgid "Do not print any output to stdout." msgstr "Ne pas afficher de sortie sur stdout." #. type: Plain text #: amulecmd.1:50 amuleweb.1:67 msgid "Be verbose - show also debug messages." msgstr "Mode bavard - affiche aussi les messages de deboguage." #. type: TP #: amulecmd.1:50 amuleweb.1:67 #, no-wrap msgid "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" msgstr "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" #. type: Plain text #: amulecmd.1:54 amuleweb.1:71 msgid "" "Sets program locale (language). See the B section for the " "description of the IlangE> parameter." msgstr "" "Définir les paramètres régionaux (langage). Voir la section B pour la " "description du paramètre IlangE>." #. type: Plain text #: amulecmd.1:57 amuleweb.1:74 msgid "Write command line options to config file and exit" msgstr "" "Écrire les options de la ligne de commande dans le fichier de configuration " "et quitter" #. type: TP #: amulecmd.1:57 #, no-wrap msgid "B<[ -c> IcommandE>, B<--command>=IcommandE> B<]>" msgstr "B<[ -c> IcommandeE>, B<--command>=IcommandeE> B<]>" #. type: Plain text #: amulecmd.1:60 msgid "" "Execute IcommandE> as if it was entered at amulecmd's prompt and " "exit." msgstr "" "Éxecuter la IcommandeE> comme si elle avait été entrée dans " "l'invite de commande d'amulecmd et quitter." #. type: TP #: amulecmd.1:60 amuleweb.1:117 #, no-wrap msgid "B<[ --create-config-from>=IpathE> B<]>" msgstr "B<[ --create-config-from>=IcheminE> B<]>" #. type: Plain text #: amulecmd.1:63 amuleweb.1:120 msgid "" "Create config file based upon IpathE>, which must point to a valid " "aMule config file, and then exit." msgstr "" "Créer un fichier de configuration basé sur IcheminE>, qui doit " "pointer sur un fichier de configration d'aMule valide, et quitter ensuite." #. type: SH #: amulecmd.1:69 #, no-wrap msgid "COMMANDS" msgstr "COMMANDES" #. type: Plain text #: amulecmd.1:71 msgid "All commands are case insensitive." msgstr "Toutes les commandes sont insensibles à la casse." #. type: SS #: amulecmd.1:71 #, no-wrap msgid "Add IeD2k-linkE> | Imagnet-linkE>" msgstr "Add Ilien eD2kE> | Ilien magnétiqueE>" #. type: Plain text #: amulecmd.1:73 msgid "Adds an eD2k-link or a magnet-link to the core." msgstr "Ajoute un lien eD2k ou magnétique au noyau." #. type: Plain text #: amulecmd.1:82 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list." msgstr "" "un lien de liste de serveurs, dans ce cas tous les serveurs dans la liste " "seront ajoutés à la liste des serveurs." #. type: Plain text #: amulecmd.1:85 msgid "The magnet link must contain the eD2k hash and file length." msgstr "" "Le lien magnétique doit contenir le hachage eD2k et la longueur du fichier." #. type: SS #: amulecmd.1:85 #, no-wrap msgid "Cancel IhashE> | InumberE>" msgstr "Cancel IhachageE> | InuméroE>" #. type: Plain text #: amulecmd.1:87 msgid "" "Cancels the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Annule le téléchargement spécifié par le IhachageE> ou le " "InuméroE>. Pour obtenir la valeur utilisée B." #. type: SS #: amulecmd.1:87 #, no-wrap msgid "Connect [ I | I | Iip|nameE> ]" msgstr "Connect [ I | I | Iip|nomE> ]" #. type: Plain text #: amulecmd.1:89 msgid "Connect to the network." msgstr "Se connecter au réseau." #. type: Plain text #: amulecmd.1:91 msgid "This will connect to all networks that are enabled in Preferences." msgstr "" "Cela connectera à tous les réseaux qui sont activés dans les préférences." #. type: Plain text #: amulecmd.1:95 msgid "" "With the optional parameter you can specify which network to connect to. " "Giving a server address in the form of IP:Port (where IP is either a dotted " "decimal IPv4 address or a resolvable DNS name) aMule will connect to that " "server only." msgstr "" "Avec le paramètre optionnel, vous pouvez spécifier le réseau pour se " "connecter. Donner une adresse de serveur sous la forme IP:Port (où IP est " "soit une adresse décimale IPv4 ou un nom DNS résolvable) aMule se connectera " "à ce serveur uniquement." #. type: Plain text #: amulecmd.1:98 msgid "" "Disconnect from all networks you are connected to, or just disconnect from " "the specified network." msgstr "" "Déconnecte de tous les réseaux dont vous êtes connecté, ou juste déconnecte " "d'un réseau spécifié." #. type: SS #: amulecmd.1:98 #, no-wrap msgid "Download InumberE>" msgstr "Download InombreE>" #. type: Plain text #: amulecmd.1:100 msgid "Start downloading a file." msgstr "Commence à télécharger un fichier." #. type: Plain text #: amulecmd.1:104 msgid "" "The InumberE> of a file from the last search has to be given. " "Example: `download 12' will start to download the file with the number 12 of " "the previous search." msgstr "" "Le InuméroE> d'un fichier à partir de la dernière recherche doit " "être donné. Exemple : `download 12' va commencer à télécharger le fichier " "avec le numéro 12 de la recherche précédente." #. type: Plain text #: amulecmd.1:106 msgid "Disconnect from amule/amuled and quit amulecmd." msgstr "Déconnecte d'amule/amuled et quitter amulecmd." #. type: SS #: amulecmd.1:106 #, no-wrap msgid "Get IwhatE>" msgstr "Get IquoiE>" #. type: Plain text #: amulecmd.1:108 msgid "Get and display a preference value." msgstr "Obtient et affiche une valeur de préférence." #. type: Plain text #: amulecmd.1:110 amulecmd.1:144 amulecmd.1:173 amulecmd.1:183 msgid "Available values for IwhatE>:" msgstr "Valeurs disponibles pour IquoiE>:" #. type: Plain text #: amulecmd.1:113 msgid "Get bandwidth limits." msgstr "Obtenir les limites de bande passante." #. type: Plain text #: amulecmd.1:115 msgid "Get IPFilter preferences." msgstr "Obtenir les préférences de filtrage IP." #. type: SS #: amulecmd.1:116 #, no-wrap msgid "Help [ IcommandE> ]" msgstr "Help [ IcommandeE> ]" #. type: Plain text #: amulecmd.1:120 msgid "" "Prints a short usage description. If called without parameter, it shows a " "list of available commands. If called with IcommandE>, it shows a " "short description of the given command." msgstr "" "Affiche une courte description d'utilisation. S'il est appelé sans " "paramètre, il affiche une liste des commandes disponibles. Lorsqu'il est " "appelé avec la IcommandeE>, il affiche une courte description de " "la commande donnée." #. type: SS #: amulecmd.1:120 #, no-wrap msgid "Pause IhashE> | InumberE>" msgstr "Pause IhachageE> | InuméroE>" #. type: Plain text #: amulecmd.1:122 msgid "" "Pauses the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Interrompt le téléchargement spécifié par le IhachageE> ou le " "InuméroE>. Pour obtenir la valeur d'utilisée B." #. type: SS #: amulecmd.1:122 #, no-wrap msgid "Priority IpriorityE> IhashE> | InumberE>" msgstr "Priority IprioritéE> IhachageE> | InuméroE>" #. type: Plain text #: amulecmd.1:124 msgid "" "Set priority of a download specified by IhashE> or " "InumberE>." msgstr "" "Définit la priorité d'un téléchargement spécifié par le IhachageE> " "ou le InuméroE>." #. type: Plain text #: amulecmd.1:126 msgid "Available values for IpriorityE>:" msgstr "Valeurs disponibles pour la IprioritéE> :" #. type: Plain text #: amulecmd.1:129 msgid "Automatic priority." msgstr "Priorité automatique." #. type: Plain text #: amulecmd.1:131 msgid "High priority." msgstr "Priorité haute." #. type: Plain text #: amulecmd.1:133 msgid "Low priority." msgstr "Priorité basse." #. type: Plain text #: amulecmd.1:135 msgid "Normal priority." msgstr "Priorité normal." #. type: Plain text #: amulecmd.1:138 msgid "Shows the progress of an on-going search." msgstr "Affiche la progression d'une recherche en cours." #. type: Plain text #: amulecmd.1:140 msgid "A synonim of the B command." msgstr "Un synonyme de la commande B" #. type: SS #: amulecmd.1:140 #, no-wrap msgid "Reload IwhatE>" msgstr "Reload IquoiE>" #. type: Plain text #: amulecmd.1:142 msgid "Reloads a given object." msgstr "Recharge un objet donné." #. type: Plain text #: amulecmd.1:147 msgid "Reload shared files list." msgstr "Recharger la liste des fichiers partagés." #. type: Plain text #: amulecmd.1:149 msgid "Reload IP filter tables." msgstr "Recharger les tables IP filter" #. type: Plain text #: amulecmd.1:152 msgid "Reset the log." msgstr "Réinitialiser le journal." #. type: Plain text #: amulecmd.1:154 msgid "Shows you the results of the last search." msgstr "Montre les résultats de la dernière recherche." #. type: SS #: amulecmd.1:154 #, no-wrap msgid "Resume IhashE> | InumberE>" msgstr "Resume IhachageE> | InuméroE>" #. type: Plain text #: amulecmd.1:156 msgid "" "Resumes the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Reprise du téléchargement spécifié par le IhachageE> ou le " "InuméroE>. Pour obtenir la valeur utilisée B." #. type: SS #: amulecmd.1:156 #, no-wrap msgid "Search ItypeE> IkeywordE>" msgstr "Search ItypeE> Imot cléE>" #. type: Plain text #: amulecmd.1:159 msgid "" "Makes a search for the given IkeywordE>. A search type and a " "keyword to search is mandatory to do this. Example: `search kad amule' " "performs a kad search for `amule'." msgstr "" "Fait une recherche du Imot cléE> donné. Un type de recherche et " "d'un mot clé de recherche sont obligatoires pour le faire. Exemple: `search " "kad amule' effectue une recherche kad pour `amule'." #. type: Plain text #: amulecmd.1:161 msgid "Available search types:" msgstr "Types de recherche disponibles :" #. type: Plain text #: amulecmd.1:164 msgid "Performs a global search." msgstr "Effectuer une recherche globale." #. type: Plain text #: amulecmd.1:166 msgid "Performs a search on the Kademlia network." msgstr "Effectuer une recherche sur le réseau Kademlia." #. type: Plain text #: amulecmd.1:168 msgid "Performs a local search." msgstr "Effectue une recherche locale." #. type: SS #: amulecmd.1:169 #, no-wrap msgid "Set IwhatE>" msgstr "Set IquoiE>" #. type: Plain text #: amulecmd.1:171 msgid "Sets a given preferences value." msgstr "Définit une valeur compte tenu des préférences." #. type: Plain text #: amulecmd.1:176 msgid "Set bandwidth limits." msgstr "Définir les limites de bande passante." #. type: Plain text #: amulecmd.1:178 msgid "Set IPFilter preferences." msgstr "Définir les préférences de filtrage d'IP." #. type: SS #: amulecmd.1:179 #, no-wrap msgid "Show IwhatE>" msgstr "Show IquoiE>" #. type: Plain text #: amulecmd.1:181 msgid "Shows upload/download queue, servers list or shared files list." msgstr "" "Montrer la file d'attente des envois/réceptions, la liste des serveurs ou la " "liste des fichiers partagés." #. type: Plain text #: amulecmd.1:186 msgid "Show download queue." msgstr "Montrer la file d'attente des réceptions." #. type: Plain text #: amulecmd.1:188 msgid "Show log." msgstr "Afficher le journal." #. type: Plain text #: amulecmd.1:190 msgid "Show servers list." msgstr "Afficher la liste des serveurs." #. type: Plain text #: amulecmd.1:192 msgid "Show upload queue." msgstr "Montrer la file d'attente des envois." #. type: Plain text #: amulecmd.1:196 msgid "" "Shutdown the remote running core (amule/amuled). This will also shut down " "the text client, since it is unusable without a running core." msgstr "" "Arrêt du noyau distant exécutant (amule/amuled). Cela arrêtera aussi le " "client en mode texte, car il est inutilisable sans un noyau en cours " "d'exécution." #. type: SS #: amulecmd.1:196 #, no-wrap msgid "Statistics [ InumberE> ]" msgstr "Statistics [ InuméroE> ]" #. type: Plain text #: amulecmd.1:198 msgid "Show statistics tree." msgstr "Afficher l'arbre des statistiques." #. type: Plain text #: amulecmd.1:202 msgid "" "The optional InumberE> in the range of 0-255 can be passed as " "argument to this command, which tells how many entries of the client version " "subtree should be shown. Passing 0, or omitting it means `unlimited'." msgstr "" "L'option InuméroE> dans l'interval 255 peut être passé comme " "argument à cette commande, ce qui indique le nombre d'entrées de la sous-" "arborescence du client qui doit être indiqué. Indiquer 0, ou en l'omettant, " "cela signifie 'illimité'." #. type: Plain text #: amulecmd.1:205 msgid "" "Example: `statistics 5' will show only the top 5 versions for each client " "type." msgstr "" "Exemple: `statistics 5' affichera seulement le top 5 des versions pour " "chaque type de client." #. type: Plain text #: amulecmd.1:207 msgid "Show connection status, current up/download speeds, etc." msgstr "" "Affiche l'état de la connexion, et la vitesse actuelle d'émission/réception, " "etc." #. type: SS #: amulecmd.1:212 amuleweb.1:137 #, no-wrap msgid "Languages" msgstr "Langages" #. type: Plain text #: amulecmd.1:218 amuleweb.1:143 msgid "" "The IlangE> parameter for the B<-l> option has the following form: " "I[B<_>I][B<.>I][B<@>I] where I is the " "primary language, I is a sublanguage/territory, I is the " "character set to use and I allows the user to select a specific " "instance of localization data within a single category." msgstr "" "Le paramètre IlangE> pour B<-l> l'option a la forme suivante : " "I[B<_>I][B<.>I][B<@>I] où I est la " "langue principale, I est is a dialecte, I est le caractère " "défini à utiliser et I permet à l'utilisateur de sélectionner une " "instance spécifique des données de localisation dans une seule catégorie." #. type: Plain text #: amulecmd.1:220 amuleweb.1:145 msgid "For example, the following strings are valid:" msgstr "Par exemple, les chaînes de caractères suivantes sont valables :" #. type: Plain text #: amulecmd.1:234 amuleweb.1:159 msgid "" "Though all the above strings are accepted as valid language definitions, " "I and I are yet unused." msgstr "" "Bien que toutes les chaînes ci-dessus sont acceptées comme des définitions " "de langue valide, I et I ne sont pas encore utilisé." #. type: Plain text #: amulecmd.1:237 amuleweb.1:162 msgid "" "In addition to the format above, you can also specify full language names in " "English - so B<-l german> is also valid and is equal to B<-l de_DE>." msgstr "" "En plus du format ci-dessus, vous pouvez également spécifier des noms entier " "de langue en anglais - so B<-l german> est également valide et équivaut à B<-" "l de_DE>." #. type: Plain text #: amulecmd.1:240 amuleweb.1:165 msgid "" "When no locale is defined, either on command-line or in config file, system " "default language will be used." msgstr "" "En l'absence de paramètres linguistiques définie, soit sur ​​la ligne de " "commande ou dans le fichier de configuration, la langue utilisé par défaut " "sera celle du système d'exploitation." #. type: Plain text #: amulecmd.1:242 amuleweb.1:173 msgid "~/.aMule/remote.conf" msgstr "~/.aMule/remote.conf" #. type: SH #: amulecmd.1:242 amuleweb.1:177 #, no-wrap msgid "EXAMPLE" msgstr "EXEMPLE" #. type: Plain text #: amulecmd.1:244 msgid "Typically amulecmd will be first run as:" msgstr "Typiquement amulecmd sera lancé la première ainsi :" #. type: Plain text #: amulecmd.1:246 msgid "B B<-h> I B<-p> I B<-P> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I " "B<-w>" #. type: Plain text #: amulecmd.1:248 amuleweb.1:183 msgid "or" msgstr "ou" #. type: Plain text #: amulecmd.1:250 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" #. type: Plain text #: amulecmd.1:252 amuleweb.1:187 msgid "" "These will save settings to I<$HOME/.aMule/remote.conf>, and later you only " "need to type:" msgstr "" "Cela sauvegardera les options dans I<$HOME/.aMule/remote.conf>, et il " "suffira de taper plus tard :" #. type: Plain text #: amulecmd.1:256 msgid "Of course, you don't have to follow this example." msgstr "Bien sûr, vous n'avez pas à suivre cet exemple." #. type: TH #: amuled.1:1 #, no-wrap msgid "AMULED" msgstr "AMULED" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon v2.3.1" msgstr "aMule Daemon v2.3.1" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon" msgstr "aMule Daemon" #. type: Plain text #: amuled.1:6 msgid "amuled - the all-platform eMule p2p client - daemonized version" msgstr "amuled - le client P2P eMule multiplateforme - version daemonisée" #. type: Plain text #: amuled.1:9 ../../src/utils/cas/docs/cas.1:11 msgid "[B<-c> IpathE>]" msgstr "[B<-c> IcheminE>]" #. type: Plain text #: amuled.1:11 msgid "[B<-p> IpathE>]" msgstr "[B<-p> IcheminE>]" #. type: Plain text #: amuled.1:32 msgid "Forks to background." msgstr "Embranchements en arrière plan." #. type: TP #: amuled.1:32 #, no-wrap msgid "B<[ -p> IpathE>, B<--pid-file>=IpathE> B<]>" msgstr "B<[ -p> IcheminE>, B<--pid-file>=IcheminE> B<]>" #. type: Plain text #: amuled.1:36 msgid "" "After fork, create a pid-file in the IpathE>. IpathE> " "has to contain the filename." msgstr "" "Après l'embranchement, créer un fichier pid dans le " "IrépertoireE>. IrépertoireE> doit contenir le fichier." #. type: Plain text #: amuled.1:39 msgid "Configure EC (External Connections)." msgstr "Configurer les EC (Connexions Externes)." #. type: TH #: amulegui.1:1 #, no-wrap msgid "AMULEGUI" msgstr "AMULEGUI" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI v2.3.1" msgstr "aMuleGUI v2.3.1" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI" msgstr "aMuleGUI" #. type: Plain text #: amulegui.1:6 msgid "amulegui - aMule control program with GUI" msgstr "amulegui - programme de contrôle d'aMule avec Interface Graphique" #. type: Plain text #: amulegui.1:14 msgid "[B<-t> InumE>]" msgstr "[B<-t> InumE>]" #. type: Plain text #: amulegui.1:24 msgid "" "B is a client program, and can be connected to amule or amuled via " "EC. You can manage your amule program with it. It provides almost the same " "functionalities as amule, even if the core works on another computer." msgstr "" "B est un programme client, et peut être connecté à amule ou amuled " "via EC. Vous pouvez gérer votre programme amule avec lui. Il fournit presque " "les mêmes fonctionnalités que amule, même si le noyau fonctionne sur un " "autre ordinateur." #. type: Plain text #: amulegui.1:39 msgid "Skip connection dialog." msgstr "Sauter la boîte de dialogue de connexion." #. type: Plain text #: amulegui.1:57 msgid "" "This manpage was written by Julien Delange for Debian Ejulien AT gunnm " "DOT orgE" msgstr "" "Cette page de manuel a été rédigé par Julien Delange pour Debian Ejulien " "AT gunnm DOT orgE" #. type: Plain text #: amulegui.1:58 msgid "" "This manpage was rewritten by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Cette page de manuel a été réécrit par Vollstrecker " "Eamule@vollstreckernet.deE" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "AMULEWEB" msgstr "AMULEWEB" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "aMule webserver v2.3.1" msgstr "aMule webserver v2.3.1" #. type: Plain text #: amuleweb.1:6 msgid "amuleweb - aMule web server" msgstr "amuleweb - serveur web d'aMule" #. type: Plain text #: amuleweb.1:15 msgid "[B<-l> IlangE>]" msgstr "[B<-l> IlangE>]" #. type: Plain text #: amuleweb.1:18 msgid "[B<-t> InameE>] [B<-s> IportE>]" msgstr "[B<-t> InomE>] [B<-s> IportE>]" #. type: Plain text #: amuleweb.1:20 msgid "[B<-U> IportE>]" msgstr "[B<-U> IportE>]" #. type: Plain text #: amuleweb.1:24 msgid "[B<-A> IpasswordE>] [B<-G> IpasswordE>]" msgstr "[B<-A> ImotdepasseE>] [B<-G> ImotdepasseE>]" #. type: Plain text #: amuleweb.1:40 msgid "[B<--amule-config-file>=IpathE>]" msgstr "[B<--amule-config-file>=IcheminE>]" #. type: Plain text #: amuleweb.1:46 msgid "" "B manages your access to amule through a web browser. You can " "start amuleweb together with B(1), or separately, any time later. " "Options can be specified via command-line or via config-file. Command-line " "options take precedence over config-file options." msgstr "" "B gère votre accès à amule via un navigateur Web. Vous pouvez " "démarrer ensemble amuleweb et B(1), ou séparément, à un moment " "ultérieur. Les options peuvent être spécifiées par ligne de commande ou via " "fichier de configuration. Les options passées en ligne de commande prévalent " "sur les options de fichier de configuration." #. type: TP #: amuleweb.1:74 #, no-wrap msgid "B<[ -t> InameE>, B<--template>=InameE> B<]>" msgstr "B<[ -t> InomE>, B<--template>=InomE> B<]>" #. type: Plain text #: amuleweb.1:77 msgid "" "Loads the template named InameE>. See the B section " "for details." msgstr "" "Charge le modèle nommé InomE>. Voir la section B " "pour plus de détails." #. type: TP #: amuleweb.1:77 #, no-wrap msgid "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" msgstr "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" #. type: Plain text #: amuleweb.1:80 msgid "" "Webserver's HTTP port. This is the port you must point your browser to " "(default: I<4711>)." msgstr "" "Port HTTP du serveur Web. Il s'agit du port dont votre navigateur doit " "pointer (par défaut : I<4711>)." #. type: Plain text #: amuleweb.1:84 msgid "Enable UPnP." msgstr "Activer UPnP." #. type: TP #: amuleweb.1:84 #, no-wrap msgid "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" msgstr "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" #. type: Plain text #: amuleweb.1:87 msgid "UPnP port." msgstr "Port UPnP." #. type: Plain text #: amuleweb.1:90 msgid "Enables using gzip compression in HTTP traffic to save bandwidth." msgstr "" "Activer la compression gzip pour le trafic HTTP pour économiser la bande " "passante." #. type: Plain text #: amuleweb.1:93 msgid "Disables using gzip compression (this is the default)." msgstr "Désactiver la compression gzip (par défaut)." #. type: TP #: amuleweb.1:93 #, no-wrap msgid "B<[ -A> IpasswdE>, B<--admin-pass>=IpasswdE> B<]>" msgstr "B<[ -A> ImotdepasseE>, B<--admin-pass>=ImotdepasseE> B<]>" #. type: Plain text #: amuleweb.1:96 msgid "Full access password for webserver." msgstr "Mot de passe d'accès total pour le serveur web." #. type: TP #: amuleweb.1:96 #, no-wrap msgid "B<[ -G> IpasswdE>, B<--guest-pass>=IpasswdE> B<]>" msgstr "B<[ -G> ImotdepasseE>, B<--guest-pass>=ImotdepasseE> B<]>" #. type: Plain text #: amuleweb.1:99 msgid "Guest password for webserver." msgstr "Mot de passe invité pour le serveur web." #. type: Plain text #: amuleweb.1:102 msgid "Allows guest access." msgstr "Autoriser l'accès invité." #. type: Plain text #: amuleweb.1:105 msgid "Denies guest access (default)." msgstr "Interdire l'accès invité (par défaut)." #. type: Plain text #: amuleweb.1:111 msgid "" "Load/save webserver settings from/to remote aMule. This causes amuleweb to " "ignore command-line and config-file settings, and load them from aMule. " "When saving preferences none will be written to the config file, but to " "aMule. (Of course, this works only for those settings that can be set in " "aMule's Preferences-ERemote Controls.)" msgstr "" "Charger/enregistrer les paramètres de serveur web à partir de/vers l'aMule " "distant. amuleweb ignorera la ligne de commande et les paramètres de fichier " "de configuration, et les chargera à partir aMule. Lors de la sauvegarde, " "aucune préférences seront écrites dans le fichier config, mais pour aMule. " "(Bien sûr, cela ne fonctionne que pour les paramètres qui peuvent être " "définies dans les préférences de -EContrôle à distance d'aMule.)" #. type: Plain text #: amuleweb.1:114 msgid "Disable PHP interpreter (deprecated)" msgstr "Désactiver l'interpréteur PHP (obsolète)" #. type: Plain text #: amuleweb.1:117 msgid "Recompiles PHP pages on each request." msgstr "Recompile les pages PHP à chaque requête." #. type: TP #: amuleweb.1:126 #, no-wrap msgid "B<[ --amule-config-file>=IpathE> B<]>" msgstr "B<[ --amule-config-file>=IcheminE> B<]>" #. type: Plain text #: amuleweb.1:132 msgid "" "aMule config file path. B aMule uses this option when " "starting amuleweb at aMule startup. This option causes all other command-" "line and config-file settings to be ignored, preferences to be read from the " "given config file, and also implies the B<-q -L> options." msgstr "" "Chemin du fichier de configuration d'aMule. B " "aMule utilise cette option lors du démarrage d'amuleweb au démarrage " "d'aMule. Cette option permet d'ignorer toutes les autres commandes en ligne " "et les paramètres de fichier de configuration, et lit les préférences dans " "un fichier de configuration précisé, et implique également les options B<-q -" "L>." #. type: SH #: amuleweb.1:165 #, no-wrap msgid "SKIN SUPPORT" msgstr "SUPPORT DE THEMES" #. type: Plain text #: amuleweb.1:169 msgid "" "B is capable of displaying information in different skins. These " "skins are called templates, and you can make amuleweb load a specific " "template via the B<-t> command line option. Templates are searched in two " "places: first in I<~/.aMule/webserver/> and then in I if you installed with --prefix=/usr." msgstr "" "B est capable d'afficher des informations dans différents thèmes. " "Ces thèmes sont appelés modèles, et vous pouvez faire de charger à amuleweb " "un modèle spécifique via B<-t> l'option en ligne de commande. Les modèles " "sont recherchés dans deux endroits : d'abord dans : I<~/.aMule/webserver/> " "puis dans I si vous l'avez installé avec --" "prefix=/usr." #. type: Plain text #: amuleweb.1:171 msgid "" "Each template must be in a subdirectory of the template name, and this " "directory must contain all files the template needs." msgstr "" "Chaque modèle doit être dans un sous répertoire du nom du modèle, et ce " "répertoire doit contenir tous les fichiers dont le modèle a besoins." #. type: Plain text #: amuleweb.1:175 msgid "~/.aMule/webserver/" msgstr "~/.aMule/webserver/" #. type: Plain text #: amuleweb.1:177 msgid "I<$(pkgdatadir)>/webserver/" msgstr "I<$(pkgdatadir)>/webserver/" #. type: Plain text #: amuleweb.1:179 msgid "Typically amuleweb will be first run as:" msgstr "Typiquement amuleweb sera lancé la premier ainsi :" #. type: Plain text #: amuleweb.1:181 msgid "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I " "B<-s> I B<-A> I B<-w>" #. type: Plain text #: amuleweb.1:185 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" #. type: Plain text #: amuleweb.1:191 msgid "" "Of course, you may specify any more or less options on the first example " "line, and you may also totally omit it." msgstr "" "Bien sûr, vous pouvez spécifier plus ou moins d'options sur la première " "ligne d'exemple, et vous pouvez également totalement le supprimer." #. type: TH #: ed2k.1:1 #, no-wrap msgid "ED2K" msgstr "ED2K" #. type: TH #: ed2k.1:1 #, no-wrap msgid "aMule eD2k link parser v1.5.1" msgstr "aMule eD2k link parser v1.5.1" #. type: Plain text #: ed2k.1:6 msgid "ed2k - aMule eD2k link parser" msgstr "ed2k - analyseur lien eD2k pour aMule" #. type: Plain text #: ed2k.1:10 msgid "[B<-c> IpathE>] [B<-t> InumE>]" msgstr "[B<-c> IcheminE>] [B<-t> InumE>]" #. type: Plain text #: ed2k.1:13 msgid "IeD2k-linkE>" msgstr "Ilien eD2kE>" #. type: Plain text #: ed2k.1:21 msgid "" "Sends the given IeD2k-linkE> to aMule, i.e. writes it to the file " "~/.aMule/ED2KLinks, which will be checked by aMule every second for links." msgstr "" "Envoie le Ilien-eD2kE> à aMule, c'est à dire qu'il l'écrit dans le " "fichier ~/.aMule/ED2KLinks, qui sera vérifié par aMule chaque seconde pour " "les liens." #. type: Plain text #: ed2k.1:30 msgid "" "Loads all link found in the emulecollection given as Ied2k-linkE>" msgstr "" "Charge tous les liens trouvés dans le emulecollection donné dans Ilien-" "eD2kE>" #. type: Plain text #: ed2k.1:33 msgid "" "Lists all link found in the emulecollection given as Ied2k-linkE>" msgstr "" "Liste tous les liens trouvés dans le emulecollection donné dans Ilien-" "eD2kE>" #. type: Plain text #: ed2k.1:53 msgid "a magnet link;" msgstr "un lien magnétique;" #. type: Plain text #: ed2k.1:55 msgid "an emulecollection file." msgstr "un fichier de collection emule." #. type: Plain text #: ed2k.1:60 msgid "" "B You can give " "more than one link, and every link can have it's own params. For example " "Blink1E -t2 Elink2E> will download Ilink1E> " "in standard category and Ilink2E> in category 2." msgstr "" "B Vous " "pouvez donner plus d'un lien, et chaque lien peut avoir ses propres " "paramètres. Par exemple, Blien1E -t2 Elien2E> " "téléchargera Ilien1E> dans la catégorie standard et " "Ilien2E> dans la catégorie 2." #. type: Plain text #: ed2k.1:62 msgid "~/.aMule/ED2KLinks" msgstr "~/.aMule/ED2KLinks" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "ALC" msgstr "ALC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "aLinkCreator" msgstr "aLinkCreator" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:5 msgid "aLinkCreator - the aMule eD2k link creator" msgstr "aLinkCreator - le créateur de liens eD2k d'aMule" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:9 msgid "" "B is a graphical utility to create an eD2k link to any file on your " "computer." msgstr "" "B est un utilitaire graphique pour créer un lien eD2k pour n'importe " "quel fichier sur votre ordinateur." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/wxCas/docs/wxcas.1:16 msgid "This app doesn't take any arguments." msgstr "Cette application ne prend pas d'arguments." #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "ALCC" msgstr "ALCC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "aMule eD2k links calculator" msgstr "aMule eD2k links calculator" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:6 msgid "alcc - text based eD2k links calculator for aMule" msgstr "alcc - calculateur de lien eD2k pour aMule" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:11 msgid "Iinputfiles_listE>" msgstr "Iliste de fichier d'entréE>" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:16 msgid "" "Compute the eD2k links of all the input files given in the " "Iinputfiles_listE> (There can be one or more files)." msgstr "" "Calcule les liens eD2k de tous les fichiers d'entrée précisé dans la " "Iliste des fichiers d'entrésE> (Il peut y un seul fichier ou " "plusieurs)." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:19 msgid "Compute and add part hashes to the computed eD2k links." msgstr "Calcule et ajoute les parties de hachages aux liens eD2k calculés." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:26 msgid "Be verbose - show also calculation steps." msgstr "Mode bavard - affiche aussi les étapes de calculs." #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "CAS" msgstr "CAS" #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "cas v0.8" msgstr "cas v0.8" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:6 msgid "cas - c aMule statistics" msgstr "cas - c aMule statistics" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:18 msgid "" "B is a program for displaying the contents of your aMule online " "signature file to console (in a human readable form). For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B est un programme pour afficher le contenu de votre fichier de " "signature aMule en ligne sur la console (sous une forme lisible par " "l'homme). Pour que cela fonctionne, vous devez activer l'option \"Online " "Signature\" dans les préférences d'aMule." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:22 msgid "" "Writes the online signature picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "Écrit l'image de la signature en ligne. Vous pouvez éventuellement ajouter " "I<=EPATHE> à cette option, pour spécifier l'emplacement où elle doit " "être écrite." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:26 msgid "" "HTML page with stats and picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "Page HTML avec des statistiques et l'image. Vous pouvez éventuellement " "ajouter I<=EPATHE> à cette option, pour spécifier l'emplacement où " "elle doit être écrite." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:34 msgid "Without any options, it prints online signature data to stdout." msgstr "" "Sans aucune option, elle affiche des données de signature en ligne sur la " "sortie standard." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:36 msgid "B was written by Pedro de Oliveira Efalso@rdk.homeip.netE" msgstr "" "B a été écrit par Pedro de Oliveira Efalso@rdk.homeip.netE" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:38 msgid "~/.aMule/casrc" msgstr "~/.aMule/casrc" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:40 msgid "stat.png" msgstr "stat.png" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:42 msgid "tmp.html" msgstr "tmp.html" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "WXCAS" msgstr "WXCAS" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "wxCas" msgstr "wxCas" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:5 msgid "wxcas - wx c aMule statistics" msgstr "wxcas - wx c aMule statistics" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:11 msgid "" "B is a program for displaying the contents of your online signature " "file in a nice wx Window on your Desktop. For this to work, you must enable " "the \"Online Signature\" option in aMule's preferences." msgstr "" "B est un programme permettant d'afficher le contenu de votre fichier " "de signature en ligne dans une belle fenêtre wx sur votre bureau. Pour que " "cela fonctionne, vous devez activer l'option \"Online Signature\" dans les " "préférences d'aMule." #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:14 msgid "" "Based on Pedro de Oliveira's B(1). B was written by ThePolish " "Ethepolish@vipmail.ruE" msgstr "" "Basé sur B(1) de Pedro de Oliveira. B a été écrit par ThePolish " "Ethepolish@vipmail.ruE" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "XAS" msgstr "XAS" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "xas v1.9" msgstr "xas v1.9" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:5 msgid "xas - X-Chat aMule Statistics" msgstr "xas - X-Chat aMule Statistics" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:7 msgid "B" msgstr "B" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:12 msgid "" "B is a plugin for xchat. For loading see your xchat documentation. " "After loading type /xas and it will send statistics to the channel you are " "in. These are taken from your Online Signature file. For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B est une extension pour xchat. Pour le chargement voir la " "documentation de votre xchat. Après le chargement tapez /xas et il enverra " "des statistiques sur la canal où vous êtes. Elles sont prises à partir de " "votre fichier de signature en ligne. Pour que cela fonctionne, vous devez " "activer l'option \"Online Signature\" dans les préférences d'aMule." #. type: Plain text #: ../../src/utils/xas/docs/xas.1:14 msgid "" "To enable it on every startup of xchat you can just run the autstart-xas " "script (in /usr/bin if you installed with --prefix=/usr)." msgstr "" "Pour l'activer à chaque démarrage de xchat vous devez juste lancer le script " "autstart-xas (dans /usr/bin si vous l'avez installé avec with --prefix=/usr)." #. type: Plain text #: ../../src/utils/xas/docs/xas.1:16 msgid "B was originally written by niet" msgstr "B a été initialement écrit par niet" #~ msgid "January 2010" #~ msgstr "Janvier 2010" amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-hu.add0000644000175000017500000000020112611472361022474 0ustar morphmorphPO4A-HEADER:mode=after;position=^\.TH;beginboundary=^FakePo4aBoundary .SH MAGYAR FORDÍTÁS Dévai Tamás amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-hu.po0000644000175000017500000015110112611472361022370 0ustar morphmorph# Hungarian translations for po package # Copyright (C) 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the po package. # Automatically generated, 2010. # msgid "" msgstr "" "Project-Id-Version: po 4a\n" "POT-Creation-Date: 2011-10-31 22:06+0100\n" "PO-Revision-Date: 2011-11-09 01:14+0100\n" "Last-Translator: Dévai Tamás \n" "Language-Team: none\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" #. type: TH #: amule.1:1 #, no-wrap msgid "AMULE" msgstr "AMULE" #. type: TH #: amule.1:1 amulecmd.1:1 amuled.1:1 amulegui.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "November 2011" msgstr "2011. november" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule v2.3.1" msgstr "aMule v2.3.1" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule" msgstr "aMule" #. type: SH #: amule.1:4 amulecmd.1:5 amuled.1:4 amuleweb.1:4 ed2k.1:4 #: ../../src/utils/aLinkCreator/docs/alc.1:3 #: ../../src/utils/aLinkCreator/docs/alcc.1:4 ../../src/utils/cas/docs/cas.1:4 #: ../../src/utils/wxCas/docs/wxcas.1:3 ../../src/utils/xas/docs/xas.1:3 #, no-wrap msgid "NAME" msgstr "NÉV" #. type: Plain text #: amule.1:6 msgid "amule - the all-platform eMule p2p client" msgstr "amule - a \"minden-platform\" eMule p2p kliens" #. type: SH #: amule.1:6 amulecmd.1:7 amuled.1:6 amulegui.1:6 amuleweb.1:6 ed2k.1:6 #: ../../src/utils/aLinkCreator/docs/alc.1:5 #: ../../src/utils/aLinkCreator/docs/alcc.1:6 ../../src/utils/cas/docs/cas.1:6 #: ../../src/utils/wxCas/docs/wxcas.1:5 ../../src/utils/xas/docs/xas.1:5 #, no-wrap msgid "SYNOPSIS" msgstr "ÁTTEKINTÉS" #. type: Plain text #: amule.1:10 amulegui.1:10 msgid "[B<-c> IpathE>] [B<-geometry> IgeomE>]" msgstr "[B<-c> IútvonalE>] [B<-geometry> IgeomE>]" #. type: Plain text #: amule.1:13 amuled.1:15 msgid "[B<-w> IpathE>]" msgstr "[B<-w> IfájlE>]" #. type: Plain text #: amule.1:17 amuled.1:19 msgid "[B<-t> InumE>] [I]" msgstr "[B<-t> IszámE>] [I]" #. type: SH #: amule.1:24 amulecmd.1:26 amuled.1:25 amulegui.1:20 amuleweb.1:41 ed2k.1:19 #: ../../src/utils/aLinkCreator/docs/alc.1:7 #: ../../src/utils/aLinkCreator/docs/alcc.1:14 #: ../../src/utils/cas/docs/cas.1:14 ../../src/utils/wxCas/docs/wxcas.1:7 #: ../../src/utils/xas/docs/xas.1:7 #, no-wrap msgid "DESCRIPTION" msgstr "LEÍRÁS" #. type: TP #: amule.1:25 amuled.1:26 amulegui.1:24 ed2k.1:21 #: ../../src/utils/cas/docs/cas.1:26 #, no-wrap msgid "B<[ -c> IpathE>, B<--config-dir>=IpathE> B<]>" msgstr "B<[ -c> IútvonalE>, B<--config-dir>=IútvonalE> B<]>" #. type: Plain text #: amule.1:28 amuled.1:29 amulegui.1:27 ed2k.1:24 #: ../../src/utils/cas/docs/cas.1:29 msgid "Read config from IpathE> instead of home" msgstr "" "A beállításokat az IútvonalE>-ból olvassa az alapértelmezett " "helyett." #. type: TP #: amule.1:28 amulegui.1:27 #, no-wrap msgid "B<[ -geometry >IgeomE> B<]>" msgstr "B<[ -geometry >IgeomE> B<]>" #. type: Plain text #: amule.1:31 amulegui.1:30 msgid "" "Sets the geometry of the app. IgeomE> uses the same format as " "standard X11 apps:\t[B<=>][IwidthE>{B}IheightE>][{B<" "+->}IxoffsetE>{B<+->}IyoffsetE>]" msgstr "" "Beállítja az alkalmazás geometriáját. A IgeomE> paraméter ugyanazt " "a formátumot használja, mint a többi X11 alkalmazás:\t[B<=>]" "[IszélességE>{B}ImagasságE>][{B<+->}" "IxpozícióE>{B<+->}IypozícióE>]" #. type: Plain text #: amule.1:34 amuled.1:42 amulegui.1:33 msgid "Prints log messages to stdout." msgstr "A napló bejegyzéseket a szabvány kimenetre írja." #. type: Plain text #: amule.1:37 amuled.1:45 amulegui.1:36 msgid "Resets config to default values." msgstr "Beállítások visszaállítása az alapértelmezett értékekre." #. type: TP #: amule.1:37 amuled.1:45 #, no-wrap msgid "B<[ -w> IpathE>, B<--use-amuleweb>=IpathE> B<]>" msgstr "B<[ -w> IfájlE>, B<--use-amuleweb>=IfájlE> B<]>" #. type: Plain text #: amule.1:40 amuled.1:48 msgid "Specify location of amuleweb binary to IpathE>." msgstr "Az amuleweb programnak IfájlE>-t fogja használni." #. type: Plain text #: amule.1:43 amuled.1:51 msgid "Does not handle fatal exception." msgstr "Nem kezeli a végzetes kivételeket." #. type: Plain text #: amule.1:46 amuled.1:54 msgid "Does not disable stdin." msgstr "Nem zárja le a szabvány bemenetet." #. type: TP #: amule.1:46 amuled.1:54 amulegui.1:39 ed2k.1:24 #, no-wrap msgid "B<[ -t>, B<--category>=InumE> B<]>" msgstr "B<[ -t>, B<--category>=IszámE> B<]>" #. type: Plain text #: amule.1:49 amuled.1:57 amulegui.1:42 ed2k.1:27 msgid "Set category for passed eD2k links to InumE>" msgstr "" "A megadott eD2k hivatkozást a IszámE>-adik kategóriába tölti." #. type: Plain text #: amule.1:52 amulecmd.1:66 amuled.1:60 amulegui.1:48 amuleweb.1:126 ed2k.1:39 msgid "Displays the current version number." msgstr "Megjeleníti a verziószámot." #. type: Plain text #: amule.1:55 amulecmd.1:69 amuled.1:63 amulegui.1:45 amuleweb.1:123 ed2k.1:36 #: ../../src/utils/aLinkCreator/docs/alcc.1:22 #: ../../src/utils/cas/docs/cas.1:32 msgid "Prints a short usage description." msgstr "Egy rövid használati leírást jelenít meg." #. type: TP #: amule.1:55 amuled.1:63 ed2k.1:39 #, no-wrap msgid "B<[ eD2k-link ]>" msgstr "B<[ eD2k-hivatkozás ]>" #. type: Plain text #: amule.1:58 amuled.1:66 ed2k.1:42 msgid "Adds an eD2k-link to the core." msgstr "eD2k hivatkozás letöltése." #. type: Plain text #: amule.1:60 amulecmd.1:75 amuled.1:68 ed2k.1:44 msgid "The eD2k link to be added can be:" msgstr "Az eD2k hivatkozás a következő lehet:" #. type: Plain text #: amule.1:63 amulecmd.1:78 amuled.1:71 ed2k.1:47 msgid "a file link (ed2k://|file|...), it will be added to the download queue;" msgstr "" "egy fájl hivatkozás (ed2k://|file|...), ez a letöltési sorhoz lesz hozzáadva;" #. type: Plain text #: amule.1:65 amulecmd.1:80 amuled.1:73 ed2k.1:49 msgid "" "a server link (ed2k://|server|...), it will be added to the server list;" msgstr "" "egy kiszolgáló hivatkozás (ed2k://|server|...), ez a kiszolgáló-listához " "lesz hozzáadva;" #. type: Plain text #: amule.1:67 amuled.1:75 ed2k.1:51 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list;" msgstr "" "egy kiszolgáló-lista hivatkozás, mely esetben a listában szereplő összes " "kiszolgáló a kiszolgáló-listához adódik;" #. type: Plain text #: amule.1:69 amuled.1:77 msgid "a magnet link." msgstr "egy magnet hivatkozás." #. type: SH #: amule.1:70 amulecmd.1:207 amuleweb.1:132 #, no-wrap msgid "NOTES" msgstr "MEGJEGYZÉSEK" #. type: SS #: amule.1:71 amulecmd.1:208 amuleweb.1:133 #, no-wrap msgid "Paths" msgstr "Elérési utak" #. type: Plain text #: amule.1:75 amulecmd.1:212 amuleweb.1:137 msgid "" "For all options which take a IpathE> value, if the I " "contains no directory part (i.e. just a plain filename), then it is " "considered to be under the aMule configuration directory, I<~/.aMule>." msgstr "" "Minden olyan opciónál amely IfájlE> paramétert kér, ha a megadott " "I nem tartalmaz könyvtár komponenst (vagyis tisztán csak egy fájlnév), " "akkor azt az aMule konfigurációs könyvtárában (I<~/.aMule>) fogja keresni." #. type: SH #: amule.1:75 amulecmd.1:240 amuled.1:78 amuleweb.1:171 ed2k.1:60 #: ../../src/utils/cas/docs/cas.1:36 #, no-wrap msgid "FILES" msgstr "FÁJLOK" #. type: Plain text #: amule.1:77 amuled.1:80 msgid "~/.aMule/*" msgstr "~/.aMule/*" #. type: SH #: amule.1:77 amulecmd.1:256 amuled.1:80 amulegui.1:48 amuleweb.1:191 #: ed2k.1:62 ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/aLinkCreator/docs/alcc.1:26 #: ../../src/utils/cas/docs/cas.1:42 ../../src/utils/wxCas/docs/wxcas.1:16 #: ../../src/utils/xas/docs/xas.1:16 #, no-wrap msgid "REPORTING BUGS" msgstr "HIBÁK JELENTÉSE" #. type: Plain text #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 msgid "" "Please report bugs either on our forum (I), or in " "our bugtracker (I). Please do not report bugs in e-" "mail, neither to our mailing list nor directly to any team member." msgstr "" "A hibákat kérjük vagy a fórumon (I), vagy a " "hibakövetőben (I) jelentsék. Hibákról kérjük ne " "írjanak levelet (e-mail-t) se a levelezési listára, se közvetlenül " "valamelyik fejlesztőnek." #. type: SH #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 #, no-wrap msgid "COPYRIGHT" msgstr "COPYRIGHT" #. type: Plain text #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 msgid "" "aMule and all of its related utilities are distributed under the GNU General " "Public License." msgstr "" "Az aMule és az összes hozzá tartozó segédprogram a GNU General Public " "License védelme alatt áll." #. type: SH #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 #, no-wrap msgid "SEE ALSO" msgstr "LÁSD MÉG" #. type: SH #: amule.1:84 amulecmd.1:263 amuled.1:87 amulegui.1:55 amuleweb.1:198 #: ed2k.1:69 ../../src/utils/aLinkCreator/docs/alc.1:18 #: ../../src/utils/aLinkCreator/docs/alcc.1:33 #: ../../src/utils/cas/docs/cas.1:49 ../../src/utils/wxCas/docs/wxcas.1:23 #: ../../src/utils/xas/docs/xas.1:23 #, no-wrap msgid "AUTHOR" msgstr "SZERZŐ" #. type: Plain text #: amule.1:85 amulecmd.1:264 amuled.1:88 amuleweb.1:199 ed2k.1:70 #: ../../src/utils/aLinkCreator/docs/alc.1:19 #: ../../src/utils/aLinkCreator/docs/alcc.1:34 #: ../../src/utils/cas/docs/cas.1:50 ../../src/utils/wxCas/docs/wxcas.1:24 #: ../../src/utils/xas/docs/xas.1:24 msgid "" "This manpage was written by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Ezt a kézikönyv lapot Vollstrecker Eamule@vollstreckernet.deE írta." #. type: TH #: amulecmd.1:1 #, no-wrap msgid "AMULECMD" msgstr "AMULECMD" #. type: TH #: amulecmd.1:1 #, no-wrap msgid "aMuleCmd v2.3.1" msgstr "aMuleCmd v2.3.1" #. type: TH #: amulecmd.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "aMule utilities" msgstr "aMule segédprogramok" #. type: Plain text #: amulecmd.1:7 msgid "amulecmd - Console-based program to control aMule" msgstr "amulecmd - Szöveges program az aMule \"távvezérléséhez\"" #. type: Plain text #: amulecmd.1:13 amuleweb.1:12 msgid "" "[B<-h> IhostE>] [B<-p> IportE>] [B<-P> " "IpasswordE>] [B<-f> IpathE>]" msgstr "" "[B<-h> IgépE>] [B<-p> IportE>] [B<-P> " "IjelszóE>] [B<-f> IfájlE>]" #. type: Plain text #: amulecmd.1:17 msgid "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> IcommandE>]" "B< >}" msgstr "" "[B<-l> InyelvE>] {B< >[B<-w>]B< >|B< >[B<-c> IparancsE>]" "B< >}" #. type: Plain text #: amulecmd.1:20 amuleweb.1:31 msgid "[B<--create-config-from>=IpathE>]" msgstr "[B<--create-config-from>=IfájlE>]" #. type: Plain text #: amulecmd.1:29 msgid "B is a console-based client to control aMule." msgstr "Az amulecmd egy szöveges program az aMule vezérlésére." #. type: TP #: amulecmd.1:29 amuleweb.1:46 #, no-wrap msgid "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" msgstr "B<[ -h> IgépE>, B<--host>=IgépE> B<]>" #. type: Plain text #: amulecmd.1:33 amuleweb.1:50 msgid "" "Host where aMule is running (default: I). IhostE> " "might be an IP address or a DNS name" msgstr "" "A gép, amelyen az aMule fut (alapértelmezés: I). A " "IgépE> lehet egy IP cím vagy egy DNS név." #. type: TP #: amulecmd.1:33 amuleweb.1:50 #, no-wrap msgid "B<[ -p> IportE>, B<--port>=IportE> B<]>" msgstr "B<[ -p> IportE>, B<--port>=IportE> B<]>" #. type: Plain text #: amulecmd.1:36 amuleweb.1:53 msgid "" "aMule's port for External Connections, as set in Preferences-ERemote " "Controls (default: I<4712>)" msgstr "" "Az aMule távoli elérés portja, amint az a Beállítások-ETávoli Elérés " "panelen beállítható (alapértelemzés: I<4712>)." #. type: TP #: amulecmd.1:36 amuleweb.1:53 #, no-wrap msgid "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" msgstr "B<[ -P> IjelszóE>, B<--password>=IjelszóE> B<]>" #. type: Plain text #: amulecmd.1:39 amuleweb.1:56 msgid "External Connections password." msgstr "A távoli elérés jelszava." #. type: TP #: amulecmd.1:39 amuleweb.1:56 #, no-wrap msgid "B<[ -f> IpathE>, B<--config-file>=IpathE> B<]>" msgstr "B<[ -f> IfájlE>, B<--config-file>=IfájlE> B<]>" #. type: Plain text #: amulecmd.1:43 amuleweb.1:60 msgid "" "Use the given configuration file. Default configuration file is I<~/.aMule/" "remote.conf>" msgstr "" "A megadott konfigurációs fájl használata. Az alapértelmezett konfigurációs " "fájl: I<~/.aMule/remote.conf>" #. type: Plain text #: amulecmd.1:46 amuleweb.1:63 msgid "Do not print any output to stdout." msgstr "Ne írjon semmit a szabvány kimenetre." #. type: Plain text #: amulecmd.1:50 amuleweb.1:67 msgid "Be verbose - show also debug messages." msgstr "Bőbeszédű mód - a hibakeresési üzenetek megjelenítése." #. type: TP #: amulecmd.1:50 amuleweb.1:67 #, no-wrap msgid "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" msgstr "B<[ -l> InyelvE>, B<--locale>=InyelvE> B<]>" #. type: Plain text #: amulecmd.1:54 amuleweb.1:71 msgid "" "Sets program locale (language). See the B section for the " "description of the IlangE> parameter." msgstr "" "Beállítja a program nyelvét. Lásd a B fejezetet a " "InyelvE> paraméter bővebb leírásához." #. type: Plain text #: amulecmd.1:57 amuleweb.1:74 msgid "Write command line options to config file and exit" msgstr "A parancssori paramétereket beírja a konfigurációs fájlba és kilép." #. type: TP #: amulecmd.1:57 #, no-wrap msgid "B<[ -c> IcommandE>, B<--command>=IcommandE> B<]>" msgstr "B<[ -c> IparancsE>, B<--command>=IparancsE> B<]>" #. type: Plain text #: amulecmd.1:60 msgid "" "Execute IcommandE> as if it was entered at amulecmd's prompt and " "exit." msgstr "" "Végrehajtja a megadott parancsot, mintha azt a saját parancssorába írtuk " "volna be, majd kilép." #. type: TP #: amulecmd.1:60 amuleweb.1:117 #, no-wrap msgid "B<[ --create-config-from>=IpathE> B<]>" msgstr "B<[ --create-config-from>=IfájlE> B<]>" #. type: Plain text #: amulecmd.1:63 amuleweb.1:120 msgid "" "Create config file based upon IpathE>, which must point to a valid " "aMule config file, and then exit." msgstr "" "Konfigurációs fájl készítése a IfájlE> alapján, amely az aMule " "érvényes konfigurációs fájlja kell legyen, majd utána kilép." #. type: SH #: amulecmd.1:69 #, no-wrap msgid "COMMANDS" msgstr "PARANCSOK" #. type: Plain text #: amulecmd.1:71 msgid "All commands are case insensitive." msgstr "Minden parancs érzéketlen a kis/nagy betűkre." #. type: SS #: amulecmd.1:71 #, no-wrap msgid "Add IeD2k-linkE> | Imagnet-linkE>" msgstr "Add IeD2k-hivatkozásE> | Imagnet-hivatkozásE>" #. type: Plain text #: amulecmd.1:73 msgid "Adds an eD2k-link or a magnet-link to the core." msgstr "Egy eD2k vagy magnet hivatkozást ad a letöltéshez." #. type: Plain text #: amulecmd.1:82 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list." msgstr "" "egy kiszolgáló-lista hivatkozás, mely esetben a listában szereplő összes " "kiszolgáló a kiszolgáló-listához adódik." #. type: Plain text #: amulecmd.1:85 msgid "The magnet link must contain the eD2k hash and file length." msgstr "" "A magnet hivatkozásnak tartalmaznia kell az eD2k hash-t és a fájl hosszát." #. type: SS #: amulecmd.1:85 #, no-wrap msgid "Cancel IhashE> | InumberE>" msgstr "Cancel IhashE> | IszámE>" #. type: Plain text #: amulecmd.1:87 msgid "" "Cancels the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Megszakítja a IhashE> vagy IszámE> által azonosított " "letöltést. Az értékek megszerzéséhez használd a B parancsot." #. type: SS #: amulecmd.1:87 #, no-wrap msgid "Connect [ I | I | Iip|nameE> ]" msgstr "Connect [ I | I | Iip|névE> ]" #. type: Plain text #: amulecmd.1:89 msgid "Connect to the network." msgstr "Kapcsolódik a hálózathoz." #. type: Plain text #: amulecmd.1:91 msgid "This will connect to all networks that are enabled in Preferences." msgstr "A Beállításokban engedélyezett összes hálózathoz kapcsolódik." #. type: Plain text #: amulecmd.1:95 msgid "" "With the optional parameter you can specify which network to connect to. " "Giving a server address in the form of IP:Port (where IP is either a dotted " "decimal IPv4 address or a resolvable DNS name) aMule will connect to that " "server only." msgstr "" "Az opcionális paraméterrel megadható, melyik hálózathoz csatlakozzon. Egy " "kiszolgáló címének IP:Port formában történő megadásával (ahol az IP vagy egy " "pontozott decimális cím, vagy egy feloldható DNS név) az aMule a megadott " "kiszolgálóhoz fog csatlakozni." #. type: Plain text #: amulecmd.1:98 msgid "" "Disconnect from all networks you are connected to, or just disconnect from " "the specified network." msgstr "" "Leválasztás minden csatlakoztatott hálózatról, vagy csak a megadott " "hálózatról." #. type: SS #: amulecmd.1:98 #, no-wrap msgid "Download InumberE>" msgstr "Download IszámE>" #. type: Plain text #: amulecmd.1:100 msgid "Start downloading a file." msgstr "Letölt egy fájlt." #. type: Plain text #: amulecmd.1:104 msgid "" "The InumberE> of a file from the last search has to be given. " "Example: `download 12' will start to download the file with the number 12 of " "the previous search." msgstr "" "Meg kell adni egy fájl számát a legutóbbi keresésből. Például: a " "\\(Bqdownload 12\\(rq parancs az előző keresés eredményei közül a 12-es " "sorszámú fájlt fogja letölteni." #. type: Plain text #: amulecmd.1:106 msgid "Disconnect from amule/amuled and quit amulecmd." msgstr "Leválasztás az amule(d)-ről és kilépés az amulecmd-ből." #. type: SS #: amulecmd.1:106 #, no-wrap msgid "Get IwhatE>" msgstr "Get ImitE>" #. type: Plain text #: amulecmd.1:108 msgid "Get and display a preference value." msgstr "Megmutat egy beállítás értéket." #. type: Plain text #: amulecmd.1:110 amulecmd.1:144 amulecmd.1:173 amulecmd.1:183 msgid "Available values for IwhatE>:" msgstr "A ImitE> lehetséges értékei:" #. type: Plain text #: amulecmd.1:113 msgid "Get bandwidth limits." msgstr "Sávszélesség határok." #. type: Plain text #: amulecmd.1:115 msgid "Get IPFilter preferences." msgstr "IP-szűrő beállítások." #. type: SS #: amulecmd.1:116 #, no-wrap msgid "Help [ IcommandE> ]" msgstr "Help [ IparancsE> ]" #. type: Plain text #: amulecmd.1:120 msgid "" "Prints a short usage description. If called without parameter, it shows a " "list of available commands. If called with IcommandE>, it shows a " "short description of the given command." msgstr "" "Egy rövid használati leírást jelenít meg. Ha paraméter nélkül hívjuk meg, " "kilistázza az elérhető parancsokat. Ha egy IparancsE>-ot is " "megadunk, rövid leírást ad az adott parancsról." #. type: SS #: amulecmd.1:120 #, no-wrap msgid "Pause IhashE> | InumberE>" msgstr "Pause IhashE> | IszámE>" #. type: Plain text #: amulecmd.1:122 msgid "" "Pauses the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Megállítja a IhashE> vagy IszámE> által azonosított " "letöltést. Az értékek megszerzéséhez használd a B parancsot." #. type: SS #: amulecmd.1:122 #, no-wrap msgid "Priority IpriorityE> IhashE> | InumberE>" msgstr "Priority IprioritásE> IhashE> | IszámE>" #. type: Plain text #: amulecmd.1:124 msgid "" "Set priority of a download specified by IhashE> or " "InumberE>." msgstr "" "Beállítja a IhashE> vagy IszámE> által azonosított " "letöltés prioritását." #. type: Plain text #: amulecmd.1:126 msgid "Available values for IpriorityE>:" msgstr "A IprioritásE> lehetséges értékei:" #. type: Plain text #: amulecmd.1:129 msgid "Automatic priority." msgstr "Automatikus prioritás." #. type: Plain text #: amulecmd.1:131 msgid "High priority." msgstr "Magas prioritás." #. type: Plain text #: amulecmd.1:133 msgid "Low priority." msgstr "Alacsony prioritás." #. type: Plain text #: amulecmd.1:135 msgid "Normal priority." msgstr "Normál prioritás." #. type: Plain text #: amulecmd.1:138 msgid "Shows the progress of an on-going search." msgstr "Egy folymatban lévő keresés állapotát jeleníti meg." #. type: Plain text #: amulecmd.1:140 msgid "A synonim of the B command." msgstr "Az B parancs szinonímája." #. type: SS #: amulecmd.1:140 #, no-wrap msgid "Reload IwhatE>" msgstr "Reload ImitE>" #. type: Plain text #: amulecmd.1:142 msgid "Reloads a given object." msgstr "A megadott objektum újratöltése." #. type: Plain text #: amulecmd.1:147 msgid "Reload shared files list." msgstr "A megosztott fájlok listájt tölti újra." #. type: Plain text #: amulecmd.1:149 msgid "Reload IP filter tables." msgstr "Az IP szűrő újratöltése." #. type: Plain text #: amulecmd.1:152 msgid "Reset the log." msgstr "Napló újrakezdése." #. type: Plain text #: amulecmd.1:154 msgid "Shows you the results of the last search." msgstr "Az utolsó keresés eredményeinek megjelenítése." #. type: SS #: amulecmd.1:154 #, no-wrap msgid "Resume IhashE> | InumberE>" msgstr "Resume IhashE> | IszámE>" #. type: Plain text #: amulecmd.1:156 msgid "" "Resumes the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Folytatja a IhashE> vagy IszámE> által azonosított " "letöltést. Az értékek megszerzéséhez használd a B parancsot." #. type: SS #: amulecmd.1:156 #, no-wrap msgid "Search ItypeE> IkeywordE>" msgstr "Search ItípusE> IkulcsszóE>" #. type: Plain text #: amulecmd.1:159 msgid "" "Makes a search for the given IkeywordE>. A search type and a " "keyword to search is mandatory to do this. Example: `search kad amule' " "performs a kad search for `amule'." msgstr "" "Elindít egy keresést a megadott IkulcsszóE>-ra. Kötelező megadni a " "keresés típusát és a kulcsszót. Példa: a \\(Bqsearch kad amule\\(rq parancs " "egy Kademlia keresést indít az \\(Bqamule\\(rq kulcsszóra." #. type: Plain text #: amulecmd.1:161 msgid "Available search types:" msgstr "Elérhető keresés típusok:" #. type: Plain text #: amulecmd.1:164 msgid "Performs a global search." msgstr "Globális keresést hajt végre." #. type: Plain text #: amulecmd.1:166 msgid "Performs a search on the Kademlia network." msgstr "A Kademlia hálózaton keres." #. type: Plain text #: amulecmd.1:168 msgid "Performs a local search." msgstr "Lokális keresés." #. type: SS #: amulecmd.1:169 #, no-wrap msgid "Set IwhatE>" msgstr "Set ImitE>" #. type: Plain text #: amulecmd.1:171 msgid "Sets a given preferences value." msgstr "Egy beállítás érték megváltoztatása." #. type: Plain text #: amulecmd.1:176 msgid "Set bandwidth limits." msgstr "Sávszélesség határok beállítása." #. type: Plain text #: amulecmd.1:178 msgid "Set IPFilter preferences." msgstr "IP-szűrő beállításainak módosítása." #. type: SS #: amulecmd.1:179 #, no-wrap msgid "Show IwhatE>" msgstr "Show ImitE>" #. type: Plain text #: amulecmd.1:181 msgid "Shows upload/download queue, servers list or shared files list." msgstr "" "Megmutatja a fel- és letöltési sort, a kiszolgáló- és megosztott fájlok " "listáját." #. type: Plain text #: amulecmd.1:186 msgid "Show download queue." msgstr "Letöltési lista megjelenítése." #. type: Plain text #: amulecmd.1:188 msgid "Show log." msgstr "Napló megjelenítése." #. type: Plain text #: amulecmd.1:190 msgid "Show servers list." msgstr "Kiszolgálók listájának megjelenítése." #. type: Plain text #: amulecmd.1:192 msgid "Show upload queue." msgstr "Feltöltési lista megjelenítése." #. type: Plain text #: amulecmd.1:196 msgid "" "Shutdown the remote running core (amule/amuled). This will also shut down " "the text client, since it is unusable without a running core." msgstr "" "Leállítja a távoli magot (amule/amuled). Ez egyszersmind a szöveges klienst " "is leállítja, mivel az nemigen használható futó mag nélkül." #. type: SS #: amulecmd.1:196 #, no-wrap msgid "Statistics [ InumberE> ]" msgstr "Statistics [ IszámE> ]" #. type: Plain text #: amulecmd.1:198 msgid "Show statistics tree." msgstr "A statisztika fa megjelenítése." #. type: Plain text #: amulecmd.1:202 msgid "" "The optional InumberE> in the range of 0-255 can be passed as " "argument to this command, which tells how many entries of the client version " "subtree should be shown. Passing 0, or omitting it means `unlimited'." msgstr "" "Lehetséges megadni egy számot a 0-255 tartományban, amely megadja az ügyfél-" "verziók al-fák maximális nagyságát. Nulla megadása vagy a szám teljes " "elhagyása nem korlátoz." #. type: Plain text #: amulecmd.1:205 msgid "" "Example: `statistics 5' will show only the top 5 versions for each client " "type." msgstr "" "Példa: a \\(Bqstatistics 5\\(rq parancs csak az 5 leggyakoribb ügyfél " "változatot mutatja minden ügyfél típusra." #. type: Plain text #: amulecmd.1:207 msgid "Show connection status, current up/download speeds, etc." msgstr "" "Megjeleníti a kapcsolat állapotát, pillanatnyi fel-/letöltési sebességet, " "stb." #. type: SS #: amulecmd.1:212 amuleweb.1:137 #, no-wrap msgid "Languages" msgstr "Nyelvek" #. type: Plain text #: amulecmd.1:218 amuleweb.1:143 msgid "" "The IlangE> parameter for the B<-l> option has the following form: " "I[B<_>I][B<.>I][B<@>I] where I is the " "primary language, I is a sublanguage/territory, I is the " "character set to use and I allows the user to select a specific " "instance of localization data within a single category." msgstr "" "A B<-l> opció InyelvE> paramétere a következőképpen adható meg: " "I[B<_>I][B<.>I][B<@>I], ahol I az " "elsődleges nyelv, I egy nyelvváltozat/terület kódja, I a " "karakterkészlet kódja és a I \\(Bqlehetővé teszi, hogy a " "felhasználó kiválasszon egy meghatározott esetet a helyi jellemzők adataiból " "egyetlen kategórián belül\\(rq." #. type: Plain text #: amulecmd.1:220 amuleweb.1:145 msgid "For example, the following strings are valid:" msgstr "Például a következő értékek mind érvényesek:" #. type: Plain text #: amulecmd.1:234 amuleweb.1:159 msgid "" "Though all the above strings are accepted as valid language definitions, " "I and I are yet unused." msgstr "" "Habár a fentieket mind elfogadja a program, mint érvényes " "nyelvmeghatározást, a I és I még nem használt." #. type: Plain text #: amulecmd.1:237 amuleweb.1:162 msgid "" "In addition to the format above, you can also specify full language names in " "English - so B<-l german> is also valid and is equal to B<-l de_DE>." msgstr "" "Ráadásként a fenti formátumhoz, megadható akár egy nyelv teljes angol " "megnevezése is, így például a B<-l german> szintén érvényes és egyenértékű a " "B<-l de_DE> megadással." #. type: Plain text #: amulecmd.1:240 amuleweb.1:165 msgid "" "When no locale is defined, either on command-line or in config file, system " "default language will be used." msgstr "" "Ha sem a konfigurációs fájlban, sem a parancssorban nincs megadva a nyelv, " "akkor a rendszer alapértelmezett nyelvét fogja használni." #. type: Plain text #: amulecmd.1:242 amuleweb.1:173 msgid "~/.aMule/remote.conf" msgstr "~/.aMule/remote.conf" #. type: SH #: amulecmd.1:242 amuleweb.1:177 #, no-wrap msgid "EXAMPLE" msgstr "PÉLDA" #. type: Plain text #: amulecmd.1:244 msgid "Typically amulecmd will be first run as:" msgstr "Tipikusan az amulecmd-t először a következőképpen indítjuk:" #. type: Plain text #: amulecmd.1:246 msgid "B B<-h> I B<-p> I B<-P> I B<-w>" msgstr "B B<-h> I B<-p> I B<-P> I B<-w>" #. type: Plain text #: amulecmd.1:248 amuleweb.1:183 msgid "or" msgstr "vagy" #. type: Plain text #: amulecmd.1:250 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" #. type: Plain text #: amulecmd.1:252 amuleweb.1:187 msgid "" "These will save settings to I<$HOME/.aMule/remote.conf>, and later you only " "need to type:" msgstr "" "Ez elmenti a beállításokat a I<$HOME/.aMule/remote.conf> fájlba, hogy később " "már csak ezt kelljen írni:" #. type: Plain text #: amulecmd.1:256 msgid "Of course, you don't have to follow this example." msgstr "Természetesen nem kötelező ezt a példát követni." #. type: TH #: amuled.1:1 #, no-wrap msgid "AMULED" msgstr "AMULED" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon v2.3.1" msgstr "aMule Daemon v2.3.1" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon" msgstr "aMule Daemon" #. type: Plain text #: amuled.1:6 msgid "amuled - the all-platform eMule p2p client - daemonized version" msgstr "amule - a \"minden-platform\" eMule p2p kliens - démon változat" #. type: Plain text #: amuled.1:9 ../../src/utils/cas/docs/cas.1:11 msgid "[B<-c> IpathE>]" msgstr "[B<-c> IútvonalE>]" #. type: Plain text #: amuled.1:11 msgid "[B<-p> IpathE>]" msgstr "[B<-p> IfájlE>]" #. type: Plain text #: amuled.1:32 msgid "Forks to background." msgstr "Háttérbe vonul." #. type: TP #: amuled.1:32 #, no-wrap msgid "B<[ -p> IpathE>, B<--pid-file>=IpathE> B<]>" msgstr "B<[ -p> IfájlE>, B<--pid-file>=IfájlE> B<]>" #. type: Plain text #: amuled.1:36 msgid "" "After fork, create a pid-file in the IpathE>. IpathE> " "has to contain the filename." msgstr "A háttérbe vonulás után hozzon létre egy pid-fájlt." #. type: Plain text #: amuled.1:39 msgid "Configure EC (External Connections)." msgstr "A távoli elérés beállítása." #. type: TH #: amulegui.1:1 #, no-wrap msgid "AMULEGUI" msgstr "AMULEGUI" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI v2.3.1" msgstr "aMuleGUI v2.3.1" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI" msgstr "aMuleGUI" #. type: Plain text #: amulegui.1:6 msgid "amulegui - aMule control program with GUI" msgstr "amulegui - aMule vezérlő program grafikus felülettel" #. type: Plain text #: amulegui.1:14 msgid "[B<-t> InumE>]" msgstr "[B<-t> IszámE>]" #. type: Plain text #: amulegui.1:24 msgid "" "B is a client program, and can be connected to amule or amuled via " "EC. You can manage your amule program with it. It provides almost the same " "functionalities as amule, even if the core works on another computer." msgstr "" "Az B egy ügyfél program, távoli elérés segítségével kapcsolódik az " "amule(d)-hez. Majdnem a teljes funkcionalitást biztosítja, még ha a mag egy " "távoli gépen fut is." #. type: Plain text #: amulegui.1:39 msgid "Skip connection dialog." msgstr "A kapcsolódási párbeszéd átugrása." #. type: Plain text #: amulegui.1:57 msgid "" "This manpage was written by Julien Delange for Debian Ejulien AT gunnm " "DOT orgE" msgstr "" "Ezt a kézikönyv oldalt Julien Delange Ejulien AT gunnm DOT orgE írta " "a Debian számára." #. type: Plain text #: amulegui.1:58 msgid "" "This manpage was rewritten by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Ezt a kézikönyv oldalt Vollstrecker Eamule@vollstreckernet.deE " "újraírta." #. type: TH #: amuleweb.1:1 #, no-wrap msgid "AMULEWEB" msgstr "AMULEWEB" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "aMule webserver v2.3.1" msgstr "aMule web kiszolgáló v2.3.1" #. type: Plain text #: amuleweb.1:6 msgid "amuleweb - aMule web server" msgstr "amuleweb - aMule web kiszolgáló" #. type: Plain text #: amuleweb.1:15 msgid "[B<-l> IlangE>]" msgstr "[B<-l> InyelvE>]" #. type: Plain text #: amuleweb.1:18 msgid "[B<-t> InameE>] [B<-s> IportE>]" msgstr "[B<-t> IsablonE>] [B<-s> IportE>]" #. type: Plain text #: amuleweb.1:20 msgid "[B<-U> IportE>]" msgstr "[B<-U> IportE>]" #. type: Plain text #: amuleweb.1:24 msgid "[B<-A> IpasswordE>] [B<-G> IpasswordE>]" msgstr "[B<-A> IjelszóE>] [B<-G> IjelszóE>]" #. type: Plain text #: amuleweb.1:40 msgid "[B<--amule-config-file>=IpathE>]" msgstr "[B<--amule-config-file>=IfájlE>]" #. type: Plain text #: amuleweb.1:46 msgid "" "B manages your access to amule through a web browser. You can " "start amuleweb together with B(1), or separately, any time later. " "Options can be specified via command-line or via config-file. Command-line " "options take precedence over config-file options." msgstr "" "Az B programmal egy web-böngésző segítségével vezérelhetjük az " "amule(d)-t. Az amuleweb-et az B(1)-vel együtt is lehet indítani, vagy " "külön, kézzel. A beállításait konfigurációs fájlban vagy parancssorban is " "megadhatjuk. A parancssori opciók elsőbbséget élveznek a konfigurácós " "fájlban találtakkal szemben." #. type: TP #: amuleweb.1:74 #, no-wrap msgid "B<[ -t> InameE>, B<--template>=InameE> B<]>" msgstr "B<[ -t> IsablonE>, B<--template>=IsablonE> B<]>" #. type: Plain text #: amuleweb.1:77 msgid "" "Loads the template named InameE>. See the B section " "for details." msgstr "" "Betölti a InévE> nevű sablont. Bővebb részletekért lásd a " "B fejezetet." #. type: TP #: amuleweb.1:77 #, no-wrap msgid "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" msgstr "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" #. type: Plain text #: amuleweb.1:80 msgid "" "Webserver's HTTP port. This is the port you must point your browser to " "(default: I<4711>)." msgstr "" "Web kiszolgáló HTTP port. Erre a portra kell irányítanod a böngésződet " "(alapértelmezés: I<4711>)." #. type: Plain text #: amuleweb.1:84 msgid "Enable UPnP." msgstr "UPnP engedélyezése." #. type: TP #: amuleweb.1:84 #, no-wrap msgid "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" msgstr "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" #. type: Plain text #: amuleweb.1:87 msgid "UPnP port." msgstr "UPnP port." #. type: Plain text #: amuleweb.1:90 msgid "Enables using gzip compression in HTTP traffic to save bandwidth." msgstr "" "Engedélyezi a gzip tömörítést a HTTP adatátvitelnél a sávszélesség jobb " "kihasználása érdekében." #. type: Plain text #: amuleweb.1:93 msgid "Disables using gzip compression (this is the default)." msgstr "gzip tömörítés tiltása (alapértelmezett)." #. type: TP #: amuleweb.1:93 #, no-wrap msgid "B<[ -A> IpasswdE>, B<--admin-pass>=IpasswdE> B<]>" msgstr "B<[ -A> IjelszóE>, B<--admin-pass>=IjelszóE> B<]>" #. type: Plain text #: amuleweb.1:96 msgid "Full access password for webserver." msgstr "Teljes hozzáférésű jelszó a web kiszolgálóhoz." #. type: TP #: amuleweb.1:96 #, no-wrap msgid "B<[ -G> IpasswdE>, B<--guest-pass>=IpasswdE> B<]>" msgstr "B<[ -G> IjelszóE>, B<--guest-pass>=IjelszóE> B<]>" #. type: Plain text #: amuleweb.1:99 msgid "Guest password for webserver." msgstr "Web kiszolgáló vendég felhasználó jelszava." #. type: Plain text #: amuleweb.1:102 msgid "Allows guest access." msgstr "Vendég felhasználó engedélyezése." #. type: Plain text #: amuleweb.1:105 msgid "Denies guest access (default)." msgstr "Vendég felhasználó tiltása (alapértelmezett)." #. type: Plain text #: amuleweb.1:111 msgid "" "Load/save webserver settings from/to remote aMule. This causes amuleweb to " "ignore command-line and config-file settings, and load them from aMule. " "When saving preferences none will be written to the config file, but to " "aMule. (Of course, this works only for those settings that can be set in " "aMule's Preferences-ERemote Controls.)" msgstr "" "Beállítások töltése/mentése a távoli aMule-ról/ra. Ebben az esetben az " "amuleweb figyelmen kívül hagyja azokat a parancssori és konfigurációs " "fájlbeli beállításokat, amelyeket az aMule-tól is be tud szerezni (ezek " "beállíthatók a Beállítások-ETávoli Elérés pontban). A beállítások " "mentésekor sem írja azokat fájlba (mint egyébként), hanem az aMule-t " "értesíti a beállítások megváltozásáról. Azon beállítások, melyek az aMule " "Beállítások párbeszédpaneljén nem szerepelnek, nem kerülnek mentésre." #. type: Plain text #: amuleweb.1:114 msgid "Disable PHP interpreter (deprecated)" msgstr "PHP értelmező letiltása (elavult, ne használd)" #. type: Plain text #: amuleweb.1:117 msgid "Recompiles PHP pages on each request." msgstr "PHP oldalak újrafordítása minden kérésnél." #. type: TP #: amuleweb.1:126 #, no-wrap msgid "B<[ --amule-config-file>=IpathE> B<]>" msgstr "B<[ --amule-config-file>=IfájlE> B<]>" #. type: Plain text #: amuleweb.1:132 msgid "" "aMule config file path. B aMule uses this option when " "starting amuleweb at aMule startup. This option causes all other command-" "line and config-file settings to be ignored, preferences to be read from the " "given config file, and also implies the B<-q -L> options." msgstr "" "aMule konfigurációs fájl. B Az aMule használja ezt a " "paramétert amikor automatikusan indítja az amuleweb-et. Ezen paraméter " "hatására minden más parancssori és konfigurációs fájl-béli beállítást " "figyelmen kívül hagy, a beállításait a megadott IfájlE>-ból " "olvassa, illetve bekapcsolja a B<-q -L> opciókat." #. type: SH #: amuleweb.1:165 #, no-wrap msgid "SKIN SUPPORT" msgstr "SABLONOK" #. type: Plain text #: amuleweb.1:169 msgid "" "B is capable of displaying information in different skins. These " "skins are called templates, and you can make amuleweb load a specific " "template via the B<-t> command line option. Templates are searched in two " "places: first in I<~/.aMule/webserver/> and then in I if you installed with --prefix=/usr." msgstr "" "Az B képes az információ különböző felületekkel történő " "megjelenítésére. Ezeket hívjuk sablonoknak, és az amuleweb a B<-t> " "parancssori opcióval vehető rá egy adott sablon használatára. A sablonokat a " "következő helyeken keresi: először a I<~/.aMule/webserver/> könyvtárban, " "majd utána a I könyvtárban." #. type: Plain text #: amuleweb.1:171 msgid "" "Each template must be in a subdirectory of the template name, and this " "directory must contain all files the template needs." msgstr "" "Minden sablonnak a sablon nevével megegyező alkönyvtárban kell lennie, és ez " "a könyvtár kell tartalmazzon minden fájlt, amelyre a sablonnak szüksége van." #. type: Plain text #: amuleweb.1:175 msgid "~/.aMule/webserver/" msgstr "~/.aMule/webserver/" #. type: Plain text #: amuleweb.1:177 msgid "I<$(pkgdatadir)>/webserver/" msgstr "I<$(pkgdatadir)>/webserver/" #. type: Plain text #: amuleweb.1:179 msgid "Typically amuleweb will be first run as:" msgstr "Tipikusan az amuleweb-et először a következőképpen indítjuk:" #. type: Plain text #: amuleweb.1:181 msgid "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I B<-s> I B<-A> I B<-w>" #. type: Plain text #: amuleweb.1:185 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" #. type: Plain text #: amuleweb.1:191 msgid "" "Of course, you may specify any more or less options on the first example " "line, and you may also totally omit it." msgstr "" "Természetesen más paraméterek is megadhatók az első példában, illetve " "teljesen el is hagyhatóak." #. type: TH #: ed2k.1:1 #, no-wrap msgid "ED2K" msgstr "ED2K" #. type: TH #: ed2k.1:1 #, no-wrap msgid "aMule eD2k link parser v1.5.1" msgstr "aMule eD2k hivatkozás kezelő v1.5.1" #. type: Plain text #: ed2k.1:6 msgid "ed2k - aMule eD2k link parser" msgstr "ed2k - Az aMule eD2k hivatkozás kezelő." #. type: Plain text #: ed2k.1:10 msgid "[B<-c> IpathE>] [B<-t> InumE>]" msgstr "[B<-c> IútvonalE>] [B<-t> IszámE>]" #. type: Plain text #: ed2k.1:13 msgid "IeD2k-linkE>" msgstr "IeD2k-hivatkozásE>" #. type: Plain text #: ed2k.1:21 msgid "" "Sends the given IeD2k-linkE> to aMule, i.e. writes it to the file " "~/.aMule/ED2KLinks, which will be checked by aMule every second for links." msgstr "" "Elküldi a megadott IeD2k hivatkozásE>-t az aMule-nek, azaz beírja " "a ~/.aMule/ED2KLinks fájlba, amit az aMule másodpercenként megnéz, " "hivatkozásokat keresve." #. type: Plain text #: ed2k.1:30 msgid "" "Loads all link found in the emulecollection given as Ied2k-linkE>" msgstr "A megadott gyűjtemény összes fájlját letölti." #. type: Plain text #: ed2k.1:33 msgid "" "Lists all link found in the emulecollection given as Ied2k-linkE>" msgstr "Kilistázza a megadott gyűjtmény összes fájlját." #. type: Plain text #: ed2k.1:53 msgid "a magnet link;" msgstr "egy magnet hivatkozás;" #. type: Plain text #: ed2k.1:55 msgid "an emulecollection file." msgstr "egy emulecollection (gyűjtemény) fájl." #. type: Plain text #: ed2k.1:60 msgid "" "B You can give " "more than one link, and every link can have it's own params. For example " "Blink1E -t2 Elink2E> will download Ilink1E> " "in standard category and Ilink2E> in category 2." msgstr "" "B Megadhatsz egynél több hivatkozást, " "mindegyiket a saját paramétereivel. Például az Blink1E -t2 " "Elink2E> parancs a Ilink1E>-et az alapértelmezett, míg a " "Ilink2E>-t a 2. kategóriába tölti." #. type: Plain text #: ed2k.1:62 msgid "~/.aMule/ED2KLinks" msgstr "~/.aMule/ED2KLinks" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "ALC" msgstr "ALC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "aLinkCreator" msgstr "aLinkCreator" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:5 msgid "aLinkCreator - the aMule eD2k link creator" msgstr "aLinkCreator - az aMule eD2k hivatkozás készítő" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:9 msgid "" "B is a graphical utility to create an eD2k link to any file on your " "computer." msgstr "Az B egy grafikus segédprogram eD2k hivatkozások létrehozásához" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/wxCas/docs/wxcas.1:16 msgid "This app doesn't take any arguments." msgstr "A program nem vár semmilyen paramétert." #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "ALCC" msgstr "ALCC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "aMule eD2k links calculator" msgstr "aMule eD2k hivatkozás készítő" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:6 msgid "alcc - text based eD2k links calculator for aMule" msgstr "alcc - szöveges eD2k hivatkozás készítő az aMule-hez" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:11 msgid "Iinputfiles_listE>" msgstr "Ifájl(ok)...E>" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:16 msgid "" "Compute the eD2k links of all the input files given in the " "Iinputfiles_listE> (There can be one or more files)." msgstr "" "A parancssorban megadott fájl(ok)hoz számítja ki az eD2k hivatkozás(oka)t. " "Egyszerre több fájl is megadható." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:19 msgid "Compute and add part hashes to the computed eD2k links." msgstr "Rész-hash-ek számítása és hozzáadása a készített eD2k hivatkozáshoz." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:26 msgid "Be verbose - show also calculation steps." msgstr "Bőbeszédű mód - a számítási lépéseket is megjeleníti." #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "CAS" msgstr "CAS" #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "cas v0.8" msgstr "cas v0.8" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:6 msgid "cas - c aMule statistics" msgstr "cas - c aMule statisztikák" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:18 msgid "" "B is a program for displaying the contents of your aMule online " "signature file to console (in a human readable form). For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "A B program az aMule online-aláírás fájljának tartalmát jeleníti meg a " "képernyőn. Ahhoz, hogy ez működjön, engedélyezni kell az \\(BqOnline aláírás" "\\(rq opciót az aMule beállításaiban." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:22 msgid "" "Writes the online signature picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "Az online-aláírás képet generálja. Lehetséges I<=EfájlE> " "hozzácsatolásával megmondani, hová írja." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:26 msgid "" "HTML page with stats and picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "Egy HTML oldalt generál, statisztikával és képpel. Lehetséges " "I<=EfájlE> hozzácsatolásával megmondani, hová írja." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:34 msgid "Without any options, it prints online signature data to stdout." msgstr "" "Paraméterek nélkül az online-aláírás adatokat a szabvány kimenetre írja." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:36 msgid "B was written by Pedro de Oliveira Efalso@rdk.homeip.netE" msgstr "A B-t Pedro de Oliveira Efalso@rdk.homeip.netE írta." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:38 msgid "~/.aMule/casrc" msgstr "~/.aMule/casrc" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:40 msgid "stat.png" msgstr "stat.png" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:42 msgid "tmp.html" msgstr "tmp.html" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "WXCAS" msgstr "WXCAS" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "wxCas" msgstr "wxCas" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:5 msgid "wxcas - wx c aMule statistics" msgstr "wxcas - wx c aMule statisztikák" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:11 msgid "" "B is a program for displaying the contents of your online signature " "file in a nice wx Window on your Desktop. For this to work, you must enable " "the \"Online Signature\" option in aMule's preferences." msgstr "" "A B az aMule online-aláírás fájljának tartalmát jeleníti meg " "grafikusan. Ahhoz, hogy ez működjön, engedélyezni kell az \\(BqOnline aláírás" "\\(rq opciót az aMule beállításaiban." #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:14 msgid "" "Based on Pedro de Oliveira's B(1). B was written by ThePolish " "Ethepolish@vipmail.ruE" msgstr "" "Készült a Pedro de Oliveira írta B(1) alapján. A B-t ThePolish " "Ethepolish@vipmail.ruE írta." #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "XAS" msgstr "XAS" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "xas v1.9" msgstr "xas v1.9" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:5 msgid "xas - X-Chat aMule Statistics" msgstr "xas - X-Chat aMule Statisztikák" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:7 msgid "B" msgstr "B" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:12 msgid "" "B is a plugin for xchat. For loading see your xchat documentation. " "After loading type /xas and it will send statistics to the channel you are " "in. These are taken from your Online Signature file. For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "A B egy xchat plugin. A betöltéshez olvasd el az xchat dokumentációját. " "Betöltés után a /xas parancs kiírja az aktuális csatornára az aMule " "statisztikáit. Ezek az Online Aláírás fájlból kerülnek kiolvasásra. Ahhoz, " "hogy ez működjön, engedélyezni kell az \\(BqOnline aláírás\\(rq opciót az " "aMule beállításaiban." #. type: Plain text #: ../../src/utils/xas/docs/xas.1:14 msgid "" "To enable it on every startup of xchat you can just run the autstart-xas " "script (in /usr/bin if you installed with --prefix=/usr)." msgstr "" "Ha az xchat minden indításakor szeretnéd automatikusan betölteni, futtasd az " "autostart-xas programot." #. type: Plain text #: ../../src/utils/xas/docs/xas.1:16 msgid "B was originally written by niet" msgstr "A B-t eredetileg niet írta." #~ msgid "January 2010" #~ msgstr "2010 Január" #~ msgid "" #~ "When giving ed2k as parameter, it connects only to eD2k-network, to " #~ "servers in your serverlist. You may also optionally specify a server " #~ "address in IP:Port form, to connect to that server only. The IP must be a " #~ "dotted decimal IPv4 address, or a resolvable DNS name." #~ msgstr "" #~ "Ha ed2k-t adunk meg paraméterként, csak az eD2k hálózathoz kapcsolódik, " #~ "azaz a kiszolgálókhoz a kiszolgáló-listában. Megadható egy kiszolgáló " #~ "címe IP:Port formában, ekkor csak az adott kiszolgálóhoz kapcsolódik. Az " #~ "IP vagy egy decimális IPv4 cím, vagy egy érvényes DNS név kell legyen." #~ msgid "When giving kad, it connects to Kad only." #~ msgstr "Ha kad-ot adsz meg, csak a Kademlia hálózathoz kapcsolódik." amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-it.add0000644000175000017500000000017712611472361022510 0ustar morphmorphPO4A-HEADER:mode=after;position=^\.TH;beginboundary=^FakePo4aBoundary .SH TRADUZIONE ITALIANA Stefano Corti amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-it.po0000644000175000017500000015765212611472361022411 0ustar morphmorph# Italian translations for aMule package # Traduzioni italiane per il pacchetto aMule. # Copyright (C) 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the aMule package. # Automatically generated, 2010. # msgid "" msgstr "" "Project-Id-Version: aMule SVN\n" "POT-Creation-Date: 2011-10-31 22:06+0100\n" "PO-Revision-Date: 2011-11-04 12:11+0100\n" "Last-Translator: Stefano Corti \n" "Language-Team: none\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" # type: TH #. type: TH #: amule.1:1 #, no-wrap msgid "AMULE" msgstr "AMULE" #. type: TH #: amule.1:1 amulecmd.1:1 amuled.1:1 amulegui.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "November 2011" msgstr "Novembre 2011" # type: TH #. type: TH #: amule.1:1 #, no-wrap msgid "aMule v2.3.1" msgstr "aMule v2.3.1" # type: TH #. type: TH #: amule.1:1 #, no-wrap msgid "aMule" msgstr "aMule" # type: SH #. type: SH #: amule.1:4 amulecmd.1:5 amuled.1:4 amuleweb.1:4 ed2k.1:4 #: ../../src/utils/aLinkCreator/docs/alc.1:3 #: ../../src/utils/aLinkCreator/docs/alcc.1:4 ../../src/utils/cas/docs/cas.1:4 #: ../../src/utils/wxCas/docs/wxcas.1:3 ../../src/utils/xas/docs/xas.1:3 #, no-wrap msgid "NAME" msgstr "NOME" # type: Plain text #. type: Plain text #: amule.1:6 msgid "amule - the all-platform eMule p2p client" msgstr "amule - il client p2p multipiattaforma basato su eMule" # type: SH #. type: SH #: amule.1:6 amulecmd.1:7 amuled.1:6 amulegui.1:6 amuleweb.1:6 ed2k.1:6 #: ../../src/utils/aLinkCreator/docs/alc.1:5 #: ../../src/utils/aLinkCreator/docs/alcc.1:6 ../../src/utils/cas/docs/cas.1:6 #: ../../src/utils/wxCas/docs/wxcas.1:5 ../../src/utils/xas/docs/xas.1:5 #, no-wrap msgid "SYNOPSIS" msgstr "SINTASSI" # type: Plain text #. type: Plain text #: amule.1:10 amulegui.1:10 msgid "[B<-c> IpathE>] [B<-geometry> IgeomE>]" msgstr "[B<-c> IpercorsoE>] [B<-geometry> IgeometriaE>]" # type: Plain text #. type: Plain text #: amule.1:13 amuled.1:15 msgid "[B<-w> IpathE>]" msgstr "[B<-w> IpercorsoE>]" # type: Plain text #. type: Plain text #: amule.1:17 amuled.1:19 msgid "[B<-t> InumE>] [I]" msgstr "[B<-t> InumeroE>] [I]" # type: SH #. type: SH #: amule.1:24 amulecmd.1:26 amuled.1:25 amulegui.1:20 amuleweb.1:41 ed2k.1:19 #: ../../src/utils/aLinkCreator/docs/alc.1:7 #: ../../src/utils/aLinkCreator/docs/alcc.1:14 #: ../../src/utils/cas/docs/cas.1:14 ../../src/utils/wxCas/docs/wxcas.1:7 #: ../../src/utils/xas/docs/xas.1:7 #, no-wrap msgid "DESCRIPTION" msgstr "DESCRIZIONE" # type: TP #. type: TP #: amule.1:25 amuled.1:26 amulegui.1:24 ed2k.1:21 #: ../../src/utils/cas/docs/cas.1:26 #, no-wrap msgid "B<[ -c> IpathE>, B<--config-dir>=IpathE> B<]>" msgstr "B<[ -c> IpercorsoE>, B<--config-dir>=IpercorsoE> B<]>" # type: Plain text #. type: Plain text #: amule.1:28 amuled.1:29 amulegui.1:27 ed2k.1:24 #: ../../src/utils/cas/docs/cas.1:29 msgid "Read config from IpathE> instead of home" msgstr "" "Legge la configurazione dal IpercorsoE> invece che dalla directory " "dell'utente." # type: TP #. type: TP #: amule.1:28 amulegui.1:27 #, no-wrap msgid "B<[ -geometry >IgeomE> B<]>" msgstr "B<[ -geometry >IgeometriaE> B<]>" # type: Plain text #. type: Plain text #: amule.1:31 amulegui.1:30 msgid "" "Sets the geometry of the app. IgeomE> uses the same format as " "standard X11 apps:\t[B<=>][IwidthE>{B}IheightE>][{B<" "+->}IxoffsetE>{B<+->}IyoffsetE>]" msgstr "" "Imposta la geometria della applicazione. IgeometriaE> usa lo " "stesso formato delle applicazioni X11 standard: \t[B<=>]" "[IlarghezzaE>{B}IaltezzaE>][{B<+->}" "IspostamentoxE>{B<+->}IspostamentoyE>]" # type: Plain text #. type: Plain text #: amule.1:34 amuled.1:42 amulegui.1:33 msgid "Prints log messages to stdout." msgstr "Scrive i messaggi di log nello stdout." # type: Plain text #. type: Plain text #: amule.1:37 amuled.1:45 amulegui.1:36 msgid "Resets config to default values." msgstr "Reimposta la configurazione ai valori di default." # type: TP #. type: TP #: amule.1:37 amuled.1:45 #, no-wrap msgid "B<[ -w> IpathE>, B<--use-amuleweb>=IpathE> B<]>" msgstr "B<[ -w> IpercorsoE>, B<--use-amuleweb>=IpercorsoE> B<]>" # type: Plain text #. type: Plain text #: amule.1:40 amuled.1:48 msgid "Specify location of amuleweb binary to IpathE>." msgstr "" "Specifica la posizione dell'eseguibile di amuleweb in IpercorsoE>." # type: Plain text #. type: Plain text #: amule.1:43 amuled.1:51 msgid "Does not handle fatal exception." msgstr "Non gestisce le eccezioni fatali." # type: Plain text #. type: Plain text #: amule.1:46 amuled.1:54 msgid "Does not disable stdin." msgstr "Non disabilita lo stdin." # type: TP #. type: TP #: amule.1:46 amuled.1:54 amulegui.1:39 ed2k.1:24 #, no-wrap msgid "B<[ -t>, B<--category>=InumE> B<]>" msgstr "B<[ -t>, B<--category>=InumeroE> B<]>" # type: Plain text #. type: Plain text #: amule.1:49 amuled.1:57 amulegui.1:42 ed2k.1:27 msgid "Set category for passed eD2k links to InumE>" msgstr "" "Imposta la categoria per i collegamenti eD2k ricevuti a InumeroE>" # type: Plain text #. type: Plain text #: amule.1:52 amulecmd.1:66 amuled.1:60 amulegui.1:48 amuleweb.1:126 ed2k.1:39 msgid "Displays the current version number." msgstr "Visualizza il numero di versione corrente." # type: Plain text #. type: Plain text #: amule.1:55 amulecmd.1:69 amuled.1:63 amulegui.1:45 amuleweb.1:123 ed2k.1:36 #: ../../src/utils/aLinkCreator/docs/alcc.1:22 #: ../../src/utils/cas/docs/cas.1:32 msgid "Prints a short usage description." msgstr "Visualizza una breve descrizione dell'utilizzo." # type: TP #. type: TP #: amule.1:55 amuled.1:63 ed2k.1:39 #, no-wrap msgid "B<[ eD2k-link ]>" msgstr "B<[ collegamento-eD2k ]>" # type: Plain text #. type: Plain text #: amule.1:58 amuled.1:66 ed2k.1:42 msgid "Adds an eD2k-link to the core." msgstr "Aggiunge un collegamento eD2k." # type: Plain text #. type: Plain text #: amule.1:60 amulecmd.1:75 amuled.1:68 ed2k.1:44 msgid "The eD2k link to be added can be:" msgstr "Il collegamento eD2k da aggiungere può essere:" # type: Plain text #. type: Plain text #: amule.1:63 amulecmd.1:78 amuled.1:71 ed2k.1:47 msgid "a file link (ed2k://|file|...), it will be added to the download queue;" msgstr "" "un collegamento a un file (ed2k://|file|...), sarà aggiunto alla coda di " "download;" # type: Plain text #. type: Plain text #: amule.1:65 amulecmd.1:80 amuled.1:73 ed2k.1:49 msgid "" "a server link (ed2k://|server|...), it will be added to the server list;" msgstr "" "un collegamento a un server (ed2k://|server|...), sarà aggiunto alla lista " "dei server;" # type: Plain text #. type: Plain text #: amule.1:67 amuled.1:75 ed2k.1:51 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list;" msgstr "" "un collegamento a una lista di server, nel cui caso tutti i server inclusi " "nella lista verranno aggiunti alla lista dei server;" # type: Plain text #. type: Plain text #: amule.1:69 amuled.1:77 msgid "a magnet link." msgstr "un collegamento magnet." # type: SH #. type: SH #: amule.1:70 amulecmd.1:207 amuleweb.1:132 #, no-wrap msgid "NOTES" msgstr "NOTE" # type: SS #. type: SS #: amule.1:71 amulecmd.1:208 amuleweb.1:133 #, no-wrap msgid "Paths" msgstr "Percorsi" # type: Plain text #. type: Plain text #: amule.1:75 amulecmd.1:212 amuleweb.1:137 msgid "" "For all options which take a IpathE> value, if the I " "contains no directory part (i.e. just a plain filename), then it is " "considered to be under the aMule configuration directory, I<~/.aMule>." msgstr "" "Per tutte le opzioni che accettano un IpercorsoE>, se il " "I non contiene una directory (ossia è solo un nome di file), " "allora si assume che esso sia presente nella directory di configurazione di " "aMule, I<~/.aMule>." # type: SH #. type: SH #: amule.1:75 amulecmd.1:240 amuled.1:78 amuleweb.1:171 ed2k.1:60 #: ../../src/utils/cas/docs/cas.1:36 #, no-wrap msgid "FILES" msgstr "FILE" # type: Plain text #. type: Plain text #: amule.1:77 amuled.1:80 msgid "~/.aMule/*" msgstr "~/.aMule/*" # type: SH #. type: SH #: amule.1:77 amulecmd.1:256 amuled.1:80 amulegui.1:48 amuleweb.1:191 #: ed2k.1:62 ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/aLinkCreator/docs/alcc.1:26 #: ../../src/utils/cas/docs/cas.1:42 ../../src/utils/wxCas/docs/wxcas.1:16 #: ../../src/utils/xas/docs/xas.1:16 #, no-wrap msgid "REPORTING BUGS" msgstr "SEGNALARE I BUG" # type: Plain text #. type: Plain text #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 msgid "" "Please report bugs either on our forum (I), or in " "our bugtracker (I). Please do not report bugs in e-" "mail, neither to our mailing list nor directly to any team member." msgstr "" "Per favore segnalare i bug nel nostro forum (I) o " "nel nostro bugtracker (I). Per favore non segnalare " "i bug via posta elettronica, né nella nostra mailing list né direttamente a " "qualunque membro del gruppo." # type: SH #. type: SH #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 #, no-wrap msgid "COPYRIGHT" msgstr "COPYRIGHT" # type: Plain text #. type: Plain text #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 msgid "" "aMule and all of its related utilities are distributed under the GNU General " "Public License." msgstr "" "aMule e tutti i programmi di utilità correlati sono distribuiti in accordo " "alla GNU General Public License. " # type: SH #. type: SH #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 #, no-wrap msgid "SEE ALSO" msgstr "VEDI ANCHE" # type: SH #. type: SH #: amule.1:84 amulecmd.1:263 amuled.1:87 amulegui.1:55 amuleweb.1:198 #: ed2k.1:69 ../../src/utils/aLinkCreator/docs/alc.1:18 #: ../../src/utils/aLinkCreator/docs/alcc.1:33 #: ../../src/utils/cas/docs/cas.1:49 ../../src/utils/wxCas/docs/wxcas.1:23 #: ../../src/utils/xas/docs/xas.1:23 #, no-wrap msgid "AUTHOR" msgstr "AUTORE" # type: Plain text #. type: Plain text #: amule.1:85 amulecmd.1:264 amuled.1:88 amuleweb.1:199 ed2k.1:70 #: ../../src/utils/aLinkCreator/docs/alc.1:19 #: ../../src/utils/aLinkCreator/docs/alcc.1:34 #: ../../src/utils/cas/docs/cas.1:50 ../../src/utils/wxCas/docs/wxcas.1:24 #: ../../src/utils/xas/docs/xas.1:24 msgid "" "This manpage was written by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Questa pagina del manuale è stata scritta da Vollstrecker " "Eamule@vollstreckernet.deE" # type: TH #. type: TH #: amulecmd.1:1 #, no-wrap msgid "AMULECMD" msgstr "AMULECMD" # type: TH #. type: TH #: amulecmd.1:1 #, no-wrap msgid "aMuleCmd v2.3.1" msgstr "aMuleCmd v2.3.1" # type: TH #. type: TH #: amulecmd.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "aMule utilities" msgstr "Utilità di aMule" # type: Plain text #. type: Plain text #: amulecmd.1:7 msgid "amulecmd - Console-based program to control aMule" msgstr "amulecmd - programma in console per controllare aMule" # type: Plain text #. type: Plain text #: amulecmd.1:13 amuleweb.1:12 msgid "" "[B<-h> IhostE>] [B<-p> IportE>] [B<-P> " "IpasswordE>] [B<-f> IpathE>]" msgstr "" "[B<-h> IhostE>] [B<-p> IportaE>] [B<-P> " "IpasswordE>] [B<-f> IpercorsoE>]" # type: Plain text #. type: Plain text #: amulecmd.1:17 msgid "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> IcommandE>]" "B< >}" msgstr "" "[B<-l> IlinguaggioE>] {B< >[B<-w>]B< >|B< >[B<-c> " "IcomandoE>]B< >}" # type: Plain text #. type: Plain text #: amulecmd.1:20 amuleweb.1:31 msgid "[B<--create-config-from>=IpathE>]" msgstr "[B<--create-config-from>=IpercorsoE>]" # type: Plain text #. type: Plain text #: amulecmd.1:29 msgid "B is a console-based client to control aMule." msgstr "B è un client in console per controllare aMule." # type: TP #. type: TP #: amulecmd.1:29 amuleweb.1:46 #, no-wrap msgid "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" msgstr "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:33 amuleweb.1:50 msgid "" "Host where aMule is running (default: I). IhostE> " "might be an IP address or a DNS name" msgstr "" "Computer dove è in esecuzione aMule (default: I). " "IhostE> può essere un indirizzo IP o un nome DNS." # type: TP #. type: TP #: amulecmd.1:33 amuleweb.1:50 #, no-wrap msgid "B<[ -p> IportE>, B<--port>=IportE> B<]>" msgstr "B<[ -p> IportaE>, B<--port>=IportaE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:36 amuleweb.1:53 msgid "" "aMule's port for External Connections, as set in Preferences-ERemote " "Controls (default: I<4712>)" msgstr "" "Porta di aMule per le connessioni esterne, come impostata nelle preferenze-" "Econtrollo remoto (default: I<4712>) " # type: TP #. type: TP #: amulecmd.1:36 amuleweb.1:53 #, no-wrap msgid "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" msgstr "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:39 amuleweb.1:56 msgid "External Connections password." msgstr "Password delle connessioni esterne." # type: TP #. type: TP #: amulecmd.1:39 amuleweb.1:56 #, no-wrap msgid "B<[ -f> IpathE>, B<--config-file>=IpathE> B<]>" msgstr "B<[ -f> IpercorsoE>, B<--config-file>=IpercorsoE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:43 amuleweb.1:60 msgid "" "Use the given configuration file. Default configuration file is I<~/.aMule/" "remote.conf>" msgstr "" "Usa il file di configurazione fornito. Il file di configurazione di default " "è I<~/.aMule/remote.conf>" # type: Plain text #. type: Plain text #: amulecmd.1:46 amuleweb.1:63 msgid "Do not print any output to stdout." msgstr "Non scrivere nulla nello stdout." # type: Plain text #. type: Plain text #: amulecmd.1:50 amuleweb.1:67 msgid "Be verbose - show also debug messages." msgstr "Mostra anche i messaggi di debug." # type: TP #. type: TP #: amulecmd.1:50 amuleweb.1:67 #, no-wrap msgid "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" msgstr "B<[ -l> IlinguaggioE>, B<--locale>=IlinguaggioE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:54 amuleweb.1:71 msgid "" "Sets program locale (language). See the B section for the " "description of the IlangE> parameter." msgstr "" "Imposta il linguaggio del programma. Vedi anche la sezione delle B per " "la descrizione del parametro IlinguaggioE> ." # type: Plain text #. type: Plain text #: amulecmd.1:57 amuleweb.1:74 msgid "Write command line options to config file and exit" msgstr "" "Scrive le opzioni della riga di comando nel file di configurazione ed esce." # type: TP #. type: TP #: amulecmd.1:57 #, no-wrap msgid "B<[ -c> IcommandE>, B<--command>=IcommandE> B<]>" msgstr "B<[ -c> IcomandoE>, B<--command>=IcomandoE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:60 msgid "" "Execute IcommandE> as if it was entered at amulecmd's prompt and " "exit." msgstr "" "Esegue il IcomandoE> come se fosse stato immesso nel prompt di " "amulecmd ed esce." # type: TP #. type: TP #: amulecmd.1:60 amuleweb.1:117 #, no-wrap msgid "B<[ --create-config-from>=IpathE> B<]>" msgstr "B<[ --create-config-from>=IpercorsoE> B<]>" # type: Plain text #. type: Plain text #: amulecmd.1:63 amuleweb.1:120 msgid "" "Create config file based upon IpathE>, which must point to a valid " "aMule config file, and then exit." msgstr "" "Crea un file di configurazione basandosi sul IpercorsoE>, che deve " "puntare ad un file di configurazione di aMule valido, e quindi esce." # type: SH #. type: SH #: amulecmd.1:69 #, no-wrap msgid "COMMANDS" msgstr "COMANDI" # type: Plain text #. type: Plain text #: amulecmd.1:71 msgid "All commands are case insensitive." msgstr "Tutti i comandi non distinguono tra maiuscolo e minuscolo." # type: SS #. type: SS #: amulecmd.1:71 #, no-wrap msgid "Add IeD2k-linkE> | Imagnet-linkE>" msgstr "Add Icollegamento-eD2kE> | Icollegamento-magnetE>" # type: Plain text #. type: Plain text #: amulecmd.1:73 msgid "Adds an eD2k-link or a magnet-link to the core." msgstr "Aggiunge un collegamento eD2k o un collegamento magnet." # type: Plain text #. type: Plain text #: amulecmd.1:82 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list." msgstr "" "un collegamento ad una lista di server, nel cui caso tutti i server " "contenuti nella lista saranno aggiunti alla lista dei server correnti." # type: Plain text #. type: Plain text #: amulecmd.1:85 msgid "The magnet link must contain the eD2k hash and file length." msgstr "" "Il collegamento magnet deve contenere l'hash eD2k e la lunghezza del file." # type: SS #. type: SS #: amulecmd.1:85 #, no-wrap msgid "Cancel IhashE> | InumberE>" msgstr "Cancel IhashE> | InumeroE>" # type: Plain text #. type: Plain text #: amulecmd.1:87 msgid "" "Cancels the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Cancella il download specificato da IhashE> o InumeroE>. " "Per ottenere il valore utilizzare B." # type: SS #. type: SS #: amulecmd.1:87 #, no-wrap msgid "Connect [ I | I | Iip|nameE> ]" msgstr "Connect [ I | I | Iip|nomeE> ]" # type: Plain text #. type: Plain text #: amulecmd.1:89 msgid "Connect to the network." msgstr "Connessione alla rete." # type: Plain text #. type: Plain text #: amulecmd.1:91 msgid "This will connect to all networks that are enabled in Preferences." msgstr "" "Questo avvierà la connessione a tutte le reti abilitate nelle preferenze." #. type: Plain text #: amulecmd.1:95 msgid "" "With the optional parameter you can specify which network to connect to. " "Giving a server address in the form of IP:Port (where IP is either a dotted " "decimal IPv4 address or a resolvable DNS name) aMule will connect to that " "server only." msgstr "" "Con il parametro opzionale si può specificare a che rete connettersi. " "Fornendo un indirizzo di server nella forma IP:Porta (dove IP è un indirizzo " "IPv4 in forma decimale puntata o un nome DNS risolvibile) aMule si " "connetterà solo a quel server." # type: Plain text #. type: Plain text #: amulecmd.1:98 msgid "" "Disconnect from all networks you are connected to, or just disconnect from " "the specified network." msgstr "" "Disconnette da tutte le reti attualmente connesse, o disconnette solo dalla " "rete specificata." # type: SS #. type: SS #: amulecmd.1:98 #, no-wrap msgid "Download InumberE>" msgstr "Download InumeroE>" # type: Plain text #. type: Plain text #: amulecmd.1:100 msgid "Start downloading a file." msgstr "Inizia il download di un file." # type: Plain text #. type: Plain text #: amulecmd.1:104 msgid "" "The InumberE> of a file from the last search has to be given. " "Example: `download 12' will start to download the file with the number 12 of " "the previous search." msgstr "" "Deve essere fornito il InumeroE> di un file dall'ultima ricerca." "Esempio: `download 12' inizierà il download del file numero 12 della ricerca " "precedente." # type: Plain text #. type: Plain text #: amulecmd.1:106 msgid "Disconnect from amule/amuled and quit amulecmd." msgstr "Disconnette da amule/amuled ed esce da amulecmd." # type: SS #. type: SS #: amulecmd.1:106 #, no-wrap msgid "Get IwhatE>" msgstr "Get IoggettoE>" # type: Plain text #. type: Plain text #: amulecmd.1:108 msgid "Get and display a preference value." msgstr "Legge e visualizza un valore delle preferenze." # type: Plain text #. type: Plain text #: amulecmd.1:110 amulecmd.1:144 amulecmd.1:173 amulecmd.1:183 msgid "Available values for IwhatE>:" msgstr "I valori disponibili per l'IoggettoE> sono:" # type: Plain text #. type: Plain text #: amulecmd.1:113 msgid "Get bandwidth limits." msgstr "Legge i limiti di banda." # type: Plain text #. type: Plain text #: amulecmd.1:115 msgid "Get IPFilter preferences." msgstr "Legge le preferenze del filtro IP." # type: SS #. type: SS #: amulecmd.1:116 #, no-wrap msgid "Help [ IcommandE> ]" msgstr "Help [ IcomandoE> ]" # type: Plain text #. type: Plain text #: amulecmd.1:120 msgid "" "Prints a short usage description. If called without parameter, it shows a " "list of available commands. If called with IcommandE>, it shows a " "short description of the given command." msgstr "" "Visualizza una breve descrizione dell'uso. Se chiamato senza parametro, " "mostra una lista dei comandi disponibili. Se chiamato con il parametro " "IcommandE>, mostra una breve descrizione del comando dato" # type: SS #. type: SS #: amulecmd.1:120 #, no-wrap msgid "Pause IhashE> | InumberE>" msgstr "Pause IhashE> | InumeroE>" # type: Plain text #. type: Plain text #: amulecmd.1:122 msgid "" "Pauses the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Mette in pausa il download specificato da IhashE> o " "InumeroE>. Per ottenere il valore utilizzare B." # type: SS #. type: SS #: amulecmd.1:122 #, no-wrap msgid "Priority IpriorityE> IhashE> | InumberE>" msgstr "Priority IprioritàE> IhashE> | InumeroE>" # type: Plain text #. type: Plain text #: amulecmd.1:124 msgid "" "Set priority of a download specified by IhashE> or " "InumberE>." msgstr "" "Imposta la priorità di un download specificato da IhashE> o " "InumeroE>." # type: Plain text #. type: Plain text #: amulecmd.1:126 msgid "Available values for IpriorityE>:" msgstr "I valori disponibili per IprioritàE> sono:" # type: Plain text #. type: Plain text #: amulecmd.1:129 msgid "Automatic priority." msgstr "Priorità automatica." # type: Plain text #. type: Plain text #: amulecmd.1:131 msgid "High priority." msgstr "Priorità alta." # type: Plain text #. type: Plain text #: amulecmd.1:133 msgid "Low priority." msgstr "Priorità bassa." # type: Plain text #. type: Plain text #: amulecmd.1:135 msgid "Normal priority." msgstr "Priorità normale." # type: Plain text #. type: Plain text #: amulecmd.1:138 msgid "Shows the progress of an on-going search." msgstr "Mostra i progressi di una ricerca in corso." # type: Plain text #. type: Plain text #: amulecmd.1:140 msgid "A synonim of the B command." msgstr "Un sinonimo del comando B." # type: SS #. type: SS #: amulecmd.1:140 #, no-wrap msgid "Reload IwhatE>" msgstr "Reload IoggettoE>" # type: Plain text #. type: Plain text #: amulecmd.1:142 msgid "Reloads a given object." msgstr "Ricarica un dato oggetto" # type: Plain text #. type: Plain text #: amulecmd.1:147 msgid "Reload shared files list." msgstr "Ricarica la lista dei file condivisi." # type: Plain text #. type: Plain text #: amulecmd.1:149 msgid "Reload IP filter tables." msgstr "Ricarica la tabella dei filtri IP." # type: Plain text #. type: Plain text #: amulecmd.1:152 msgid "Reset the log." msgstr "Cancella il log." # type: Plain text #. type: Plain text #: amulecmd.1:154 msgid "Shows you the results of the last search." msgstr "Mostra i risultati dell'ultima ricerca." # type: SS #. type: SS #: amulecmd.1:154 #, no-wrap msgid "Resume IhashE> | InumberE>" msgstr "Resume IhashE> | InumeroE>" # type: Plain text #. type: Plain text #: amulecmd.1:156 msgid "" "Resumes the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Riprende il download specificato da IhashE> o InumeroE>. " "Per ottenere il valore utilizzare B." # type: SS #. type: SS #: amulecmd.1:156 #, no-wrap msgid "Search ItypeE> IkeywordE>" msgstr "Search ItipoE> Iparola-chiaveE>" # type: Plain text #. type: Plain text #: amulecmd.1:159 msgid "" "Makes a search for the given IkeywordE>. A search type and a " "keyword to search is mandatory to do this. Example: `search kad amule' " "performs a kad search for `amule'." msgstr "" "Esegue una ricerca per la data Iparola-chiaveE>. Il tipo della " "ricerca e una parola chiave da cercare sono obbligatori. Esempio: `search " "kad amule' esegue una ricerca sulla rete kad per `amule'." # type: Plain text #. type: Plain text #: amulecmd.1:161 msgid "Available search types:" msgstr "Tipi di ricerca disponibili:" # type: Plain text #. type: Plain text #: amulecmd.1:164 msgid "Performs a global search." msgstr "Esegue una ricerca globale." # type: Plain text #. type: Plain text #: amulecmd.1:166 msgid "Performs a search on the Kademlia network." msgstr "Esegue una ricerca sulla rete Kademlia." # type: Plain text #. type: Plain text #: amulecmd.1:168 msgid "Performs a local search." msgstr "Esegue una ricerca locale." # type: SS #. type: SS #: amulecmd.1:169 #, no-wrap msgid "Set IwhatE>" msgstr "Set IoggettoE>" # type: Plain text #. type: Plain text #: amulecmd.1:171 msgid "Sets a given preferences value." msgstr "Imposta un dato valore di preferenza." # type: Plain text #. type: Plain text #: amulecmd.1:176 msgid "Set bandwidth limits." msgstr "Imposta i limiti di banda." # type: Plain text #. type: Plain text #: amulecmd.1:178 msgid "Set IPFilter preferences." msgstr "Imposta le preferenze del filtro IP." # type: SS #. type: SS #: amulecmd.1:179 #, no-wrap msgid "Show IwhatE>" msgstr "Show IoggettoE>" # type: Plain text #. type: Plain text #: amulecmd.1:181 msgid "Shows upload/download queue, servers list or shared files list." msgstr "" "Mostra la coda di upload/download, la lista dei server o la lista dei file " "condivisi." # type: Plain text #. type: Plain text #: amulecmd.1:186 msgid "Show download queue." msgstr "Mostra la coda di download." # type: Plain text #. type: Plain text #: amulecmd.1:188 msgid "Show log." msgstr "Mostra il log." # type: Plain text #. type: Plain text #: amulecmd.1:190 msgid "Show servers list." msgstr "Mostra la lista dei server." # type: Plain text #. type: Plain text #: amulecmd.1:192 msgid "Show upload queue." msgstr "Mostra la coda di upload." # type: Plain text #. type: Plain text #: amulecmd.1:196 msgid "" "Shutdown the remote running core (amule/amuled). This will also shut down " "the text client, since it is unusable without a running core." msgstr "" "Chiude il motore remoto in esecuzione (amule/amuled). Questo chiuderà anche " "il cliente in formato testo, siccome è inutile senza un motore in esecuzione." # type: SS #. type: SS #: amulecmd.1:196 #, no-wrap msgid "Statistics [ InumberE> ]" msgstr "Statistics [ InumeroE> ]" # type: Plain text #. type: Plain text #: amulecmd.1:198 msgid "Show statistics tree." msgstr "Mostra l'albero delle statistiche." # type: Plain text #. type: Plain text #: amulecmd.1:202 msgid "" "The optional InumberE> in the range of 0-255 can be passed as " "argument to this command, which tells how many entries of the client version " "subtree should be shown. Passing 0, or omitting it means `unlimited'." msgstr "" "Il InumeroE> opzionale, nell'intervallo 0-255, può essere passato " "come argomento a questo comando per indicare quante righe del ramo delle " "versioni dei client devono essere mostrate. Indicando 0, o omettendo il " "parametro significa `illimitato'." # type: Plain text #. type: Plain text #: amulecmd.1:205 msgid "" "Example: `statistics 5' will show only the top 5 versions for each client " "type." msgstr "" "Esempio: `statistics 5' mostrerà solo le prime 5 versioni per ogni tipo di " "client." # type: Plain text #. type: Plain text #: amulecmd.1:207 msgid "Show connection status, current up/download speeds, etc." msgstr "" "Mostra lo stato della connessione, le velocità correnti di up/download, ecc." # type: SS #. type: SS #: amulecmd.1:212 amuleweb.1:137 #, no-wrap msgid "Languages" msgstr "Linguaggi" # type: Plain text #. type: Plain text #: amulecmd.1:218 amuleweb.1:143 msgid "" "The IlangE> parameter for the B<-l> option has the following form: " "I[B<_>I][B<.>I][B<@>I] where I is the " "primary language, I is a sublanguage/territory, I is the " "character set to use and I allows the user to select a specific " "instance of localization data within a single category." msgstr "" "Il parametro IlinguaggioE> per l'opzione B<-l> ha la forma " "seguente: I[B<_>I][B<.>I]" "[B<@>I] dove I è il linguaggio primario, " "I è il sottotipo/territorio, I è l'insieme di " "caratteri usato e I consente all'utente di selezionare una " "specifica istanza dei dati di localizzazione all'interno di una singola " "categoria." # type: Plain text #. type: Plain text #: amulecmd.1:220 amuleweb.1:145 msgid "For example, the following strings are valid:" msgstr "Per esempio, le stringhe seguenti sono valide:" # type: Plain text #. type: Plain text #: amulecmd.1:234 amuleweb.1:159 msgid "" "Though all the above strings are accepted as valid language definitions, " "I and I are yet unused." msgstr "" "Sebbene tutte le stringhe sopra elencate sono accettate come definizioni di " "linguaggio valide, I e I sono ancora inutilizzati." # type: Plain text #. type: Plain text #: amulecmd.1:237 amuleweb.1:162 msgid "" "In addition to the format above, you can also specify full language names in " "English - so B<-l german> is also valid and is equal to B<-l de_DE>." msgstr "" "In aggiunta al formato di cui sopra, si può anche specificare il nome " "completo del linguaggio in inglese, e quindi B<-l german> è valido ed " "equivalente a B<-l de_DE>." # type: Plain text #. type: Plain text #: amulecmd.1:240 amuleweb.1:165 msgid "" "When no locale is defined, either on command-line or in config file, system " "default language will be used." msgstr "" "Quando nessun linguaggio è definito in riga di comando o nel file di " "configurazione, verrà usato il linguaggio di default del sistema." # type: Plain text #. type: Plain text #: amulecmd.1:242 amuleweb.1:173 msgid "~/.aMule/remote.conf" msgstr "~/.aMule/remote.conf" # type: SH #. type: SH #: amulecmd.1:242 amuleweb.1:177 #, no-wrap msgid "EXAMPLE" msgstr "ESEMPIO" # type: Plain text #. type: Plain text #: amulecmd.1:244 msgid "Typically amulecmd will be first run as:" msgstr "Di norma amulecmd sarà inizialmente eseguito come:" # type: Plain text #. type: Plain text #: amulecmd.1:246 msgid "B B<-h> I B<-p> I B<-P> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I B<-w>" # type: Plain text #. type: Plain text #: amulecmd.1:248 amuleweb.1:183 msgid "or" msgstr "o" # type: Plain text #. type: Plain text #: amulecmd.1:250 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" # type: Plain text #. type: Plain text #: amulecmd.1:252 amuleweb.1:187 msgid "" "These will save settings to I<$HOME/.aMule/remote.conf>, and later you only " "need to type:" msgstr "" "In questo modo la configurazione verrà salvata in I<$HOME/.aMule/remote." "conf>, e le volte successive si dovrà solo digitare:" # type: Plain text #. type: Plain text #: amulecmd.1:256 msgid "Of course, you don't have to follow this example." msgstr "Ma non è necessario seguire questo esempio." # type: TH #. type: TH #: amuled.1:1 #, no-wrap msgid "AMULED" msgstr "AMULED" # type: TH #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon v2.3.1" msgstr "aMule Daemon v2.3.1" # type: TH #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon" msgstr "aMule Daemon" # type: Plain text #. type: Plain text #: amuled.1:6 msgid "amuled - the all-platform eMule p2p client - daemonized version" msgstr "" "amuled - il client p2p multipiattaforma basato su eMule - versione demone" # type: Plain text #. type: Plain text #: amuled.1:9 ../../src/utils/cas/docs/cas.1:11 msgid "[B<-c> IpathE>]" msgstr "[B<-c> IpercorsoE>]" # type: Plain text #. type: Plain text #: amuled.1:11 msgid "[B<-p> IpathE>]" msgstr "[B<-p> IpercorsoE>]" # type: Plain text #. type: Plain text #: amuled.1:32 msgid "Forks to background." msgstr "Continua l'esecuzione in background." # type: TP #. type: TP #: amuled.1:32 #, no-wrap msgid "B<[ -p> IpathE>, B<--pid-file>=IpathE> B<]>" msgstr "B<[ -p> IpercorsoE>, B<--pid-file>=IpercorsoE> B<]>" # type: Plain text #. type: Plain text #: amuled.1:36 msgid "" "After fork, create a pid-file in the IpathE>. IpathE> " "has to contain the filename." msgstr "" "Dopo il passaggio in background, crea un file di pid in " "IpercorsoE>. IpercorsoE> deve includere il nome del file." # type: Plain text #. type: Plain text #: amuled.1:39 msgid "Configure EC (External Connections)." msgstr "Configura le connessioni esterne (EC)." # type: TH #. type: TH #: amulegui.1:1 #, no-wrap msgid "AMULEGUI" msgstr "AMULEGUI" # type: TH #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI v2.3.1" msgstr "aMuleGUI v2.3.1" # type: TH #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI" msgstr "aMuleGUI" # type: Plain text #. type: Plain text #: amulegui.1:6 msgid "amulegui - aMule control program with GUI" msgstr "amulegui - programma in interfaccia grafica per controllare aMule" # type: Plain text #. type: Plain text #: amulegui.1:14 msgid "[B<-t> InumE>]" msgstr "[B<-t> InumeroE>]" # type: Plain text #. type: Plain text #: amulegui.1:24 msgid "" "B is a client program, and can be connected to amule or amuled via " "EC. You can manage your amule program with it. It provides almost the same " "functionalities as amule, even if the core works on another computer." msgstr "" "B è un programma client, e può connettersi tramite EC ad amule o " "amuled. Con esso si può gestire amule. Fornisce circa le stesse funzionalità " "di amule, anche se il motore lavora su un'altro computer." # type: Plain text #. type: Plain text #: amulegui.1:39 msgid "Skip connection dialog." msgstr "Salta la finestra di connessione." # type: Plain text #. type: Plain text #: amulegui.1:57 msgid "" "This manpage was written by Julien Delange for Debian Ejulien AT gunnm " "DOT orgE" msgstr "" "Questa pagina di manuale è stata scritta da Julien Delange per Debian " "Ejulien AT gunnm DOT orgE" # type: Plain text #. type: Plain text #: amulegui.1:58 msgid "" "This manpage was rewritten by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Questa pagina di manuale è stata riscritta da Vollstrecker " "Eamule@vollstreckernet.deE" # type: TH #. type: TH #: amuleweb.1:1 #, no-wrap msgid "AMULEWEB" msgstr "AMULEWEB" # type: TH #. type: TH #: amuleweb.1:1 #, no-wrap msgid "aMule webserver v2.3.1" msgstr "aMule webserver v2.3.1" # type: Plain text #. type: Plain text #: amuleweb.1:6 msgid "amuleweb - aMule web server" msgstr "amuleweb - aMule web server" # type: Plain text #. type: Plain text #: amuleweb.1:15 msgid "[B<-l> IlangE>]" msgstr "[B<-l> IlinguaggioE>]" # type: Plain text #. type: Plain text #: amuleweb.1:18 msgid "[B<-t> InameE>] [B<-s> IportE>]" msgstr "B<-t> InomeE>] [B<-s> IportaE>]" # type: Plain text #. type: Plain text #: amuleweb.1:20 msgid "[B<-U> IportE>]" msgstr "[B<-U> IportaE>]" # type: Plain text #. type: Plain text #: amuleweb.1:24 msgid "[B<-A> IpasswordE>] [B<-G> IpasswordE>]" msgstr "[B<-A> IpasswordE>] [B<-G> IpasswordE>]" # type: Plain text #. type: Plain text #: amuleweb.1:40 msgid "[B<--amule-config-file>=IpathE>]" msgstr "[B<--amule-config-file>=IpercorsoE>]" # type: Plain text #. type: Plain text #: amuleweb.1:46 msgid "" "B manages your access to amule through a web browser. You can " "start amuleweb together with B(1), or separately, any time later. " "Options can be specified via command-line or via config-file. Command-line " "options take precedence over config-file options." msgstr "" "B gestisce l'accesso ad amule attraverso un browser web. Si può " "eseguire amuleweb insieme ad B(1), o separatamente in qualunque " "momento successivo. Le opzioni possono essere specificate in riga di comando " "o nel file di configurazione. Le opzioni in riga di comando hanno la " "precedenza su quelle nel file di configurazione." # type: TP #. type: TP #: amuleweb.1:74 #, no-wrap msgid "B<[ -t> InameE>, B<--template>=InameE> B<]>" msgstr "B<[ -t> InomeE>, B<--template>=InomeE> B<]>" # type: Plain text #. type: Plain text #: amuleweb.1:77 msgid "" "Loads the template named InameE>. See the B section " "for details." msgstr "" "Carica il modello chiamato InomeE>. Vedi la sezione B per i dettagli." # type: TP #. type: TP #: amuleweb.1:77 #, no-wrap msgid "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" msgstr "B<[ -s> IportaE>, B<--server-port>=IportaE> B<]>" # type: Plain text #. type: Plain text #: amuleweb.1:80 msgid "" "Webserver's HTTP port. This is the port you must point your browser to " "(default: I<4711>)." msgstr "" "Porta HTTP del server web. Questa è la porta da indicare nel browser " "(default: I<4711>)." # type: Plain text #. type: Plain text #: amuleweb.1:84 msgid "Enable UPnP." msgstr "Abilita il supporto UPnP." # type: TP #. type: TP #: amuleweb.1:84 #, no-wrap msgid "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" msgstr "B<[ -U> IportaE>, B<--upnp-port> IportaE> B<]>" # type: Plain text #. type: Plain text #: amuleweb.1:87 msgid "UPnP port." msgstr "Porta per l'UPnP." # type: Plain text #. type: Plain text #: amuleweb.1:90 msgid "Enables using gzip compression in HTTP traffic to save bandwidth." msgstr "Abilita la compressione gzip nel traffico HTTP per risparmiare banda." # type: Plain text #. type: Plain text #: amuleweb.1:93 msgid "Disables using gzip compression (this is the default)." msgstr "Disabilita la compressione gzip (questo è il default)." # type: TP #. type: TP #: amuleweb.1:93 #, no-wrap msgid "B<[ -A> IpasswdE>, B<--admin-pass>=IpasswdE> B<]>" msgstr "B<[ -A> IpasswordE>, B<--admin-pass>=IpasswordE> B<]>" # type: Plain text #. type: Plain text #: amuleweb.1:96 msgid "Full access password for webserver." msgstr "Password per l'accesso completo al web server." # type: TP #. type: TP #: amuleweb.1:96 #, no-wrap msgid "B<[ -G> IpasswdE>, B<--guest-pass>=IpasswdE> B<]>" msgstr "B<[ -G> IpasswordE>, B<--guest-pass>=IpasswordE> B<]>" # type: Plain text #. type: Plain text #: amuleweb.1:99 msgid "Guest password for webserver." msgstr "Password for l'accesso ospite al web server." # type: Plain text #. type: Plain text #: amuleweb.1:102 msgid "Allows guest access." msgstr "Permette l'accesso ospite." # type: Plain text #. type: Plain text #: amuleweb.1:105 msgid "Denies guest access (default)." msgstr "Nega l'accesso ospite (default)." # type: Plain text #. type: Plain text #: amuleweb.1:111 msgid "" "Load/save webserver settings from/to remote aMule. This causes amuleweb to " "ignore command-line and config-file settings, and load them from aMule. " "When saving preferences none will be written to the config file, but to " "aMule. (Of course, this works only for those settings that can be set in " "aMule's Preferences-ERemote Controls.)" msgstr "" "Carica/salva le configurazioni del webserver da/verso aMule remoto. amuleweb " "ignorerà le opzioni in linea di comando e nel file di configurazione, e le " "caricherà invece da aMule. Quando si salveranno le preferenze, niente verrà " "scritto nel file di configurazione, ma in aMule. (Ovviamente, questo " "funzionerà solo per quelle impostazioni che possono essere scritte nelle " "preferenze di aMule-Econtrollo remoto.)" # type: Plain text #. type: Plain text #: amuleweb.1:114 msgid "Disable PHP interpreter (deprecated)" msgstr "Disabilita l'interprete PHP (deprecato)" # type: Plain text #. type: Plain text #: amuleweb.1:117 msgid "Recompiles PHP pages on each request." msgstr "Ricompila le pagine PHP ad ogni richiesta." # type: TP #. type: TP #: amuleweb.1:126 #, no-wrap msgid "B<[ --amule-config-file>=IpathE> B<]>" msgstr "B<[ --amule-config-file>=IpercorsoE> B<]>" # type: Plain text #. type: Plain text #: amuleweb.1:132 msgid "" "aMule config file path. B aMule uses this option when " "starting amuleweb at aMule startup. This option causes all other command-" "line and config-file settings to be ignored, preferences to be read from the " "given config file, and also implies the B<-q -L> options." msgstr "" "Percorso del file di configurazione di aMule. B " "aMule usa questa opzione quando lancia amuleweb all'avvio di aMule. Questa " "opzione fa sì che tutte le altre impostazioni in riga di comando e nel file " "di configurazione vengano ignorate, le preferenze vengano lette dal file di " "configurazione dato, e anche implica le opzioni B<-q -L> ." # type: SH #. type: SH #: amuleweb.1:165 #, no-wrap msgid "SKIN SUPPORT" msgstr "SUPPORTO AGLI SKIN" # type: Plain text #. type: Plain text #: amuleweb.1:169 msgid "" "B is capable of displaying information in different skins. These " "skins are called templates, and you can make amuleweb load a specific " "template via the B<-t> command line option. Templates are searched in two " "places: first in I<~/.aMule/webserver/> and then in I if you installed with --prefix=/usr." msgstr "" "B può visualizzare l'informazione utilizzando diversi 'skin'. " "Questi 'skin' sono contenuti in dei modelli, e si può far caricare da " "amuleweb un dato modello tramite l'opzione B<-t> in riga di comando. I " "modelli sono cercati in due posti: prima in I<~/.aMule/webserver/> e quindi " "in I se aMule è stato installato con --prefix=/" "usr." # type: Plain text #. type: Plain text #: amuleweb.1:171 msgid "" "Each template must be in a subdirectory of the template name, and this " "directory must contain all files the template needs." msgstr "" "Ogni modello deve essere in una sottodirectory del nome di modello, e questa " "directory deve contenere tutti i file necessari al modello." # type: Plain text #. type: Plain text #: amuleweb.1:175 msgid "~/.aMule/webserver/" msgstr "~/.aMule/webserver/" # type: Plain text #. type: Plain text #: amuleweb.1:177 msgid "I<$(pkgdatadir)>/webserver/" msgstr "I<$(pkgdatadir)>/webserver/" # type: Plain text #. type: Plain text #: amuleweb.1:179 msgid "Typically amuleweb will be first run as:" msgstr "Di norma amuleweb sarà inizialmente eseguito con:" # type: Plain text #. type: Plain text #: amuleweb.1:181 msgid "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" # type: Plain text #. type: Plain text #: amuleweb.1:185 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" # type: Plain text #. type: Plain text #: amuleweb.1:191 msgid "" "Of course, you may specify any more or less options on the first example " "line, and you may also totally omit it." msgstr "" "Ovviamente, si possono specificare più o meno opzioni della prima riga di " "esempio, e si si possono anche omettere completamente." # type: TH #. type: TH #: ed2k.1:1 #, no-wrap msgid "ED2K" msgstr "ED2K" # type: TH #. type: TH #: ed2k.1:1 #, no-wrap msgid "aMule eD2k link parser v1.5.1" msgstr "Analizzatore di collegamenti eD2k per aMule v1.5.1" # type: Plain text #. type: Plain text #: ed2k.1:6 msgid "ed2k - aMule eD2k link parser" msgstr "ed2k - Analizzatore di collegamenti eD2k per aMule" # type: Plain text #. type: Plain text #: ed2k.1:10 msgid "[B<-c> IpathE>] [B<-t> InumE>]" msgstr "[B<-c> IpercorsoE>] [B<-t> InumeroE>]" # type: Plain text #. type: Plain text #: ed2k.1:13 msgid "IeD2k-linkE>" msgstr "Icollegamento-eD2kE>" # type: Plain text #. type: Plain text #: ed2k.1:21 msgid "" "Sends the given IeD2k-linkE> to aMule, i.e. writes it to the file " "~/.aMule/ED2KLinks, which will be checked by aMule every second for links." msgstr "" "Invia il Icollegamento-eD2kE> ad aMule, cioè lo scrive nel file ~/." "aMule/ED2KLinks, che sarà controllato da aMule ogni secondo per nuovi " "collegamenti." # type: Plain text #. type: Plain text #: ed2k.1:30 msgid "" "Loads all link found in the emulecollection given as Ied2k-linkE>" msgstr "" "Carica tutti i collegamenti trovati nel file emulecollection fornito come " "Icollegamento-ed2kE>" # type: Plain text #. type: Plain text #: ed2k.1:33 msgid "" "Lists all link found in the emulecollection given as Ied2k-linkE>" msgstr "" "Elenca tutti i collegamenti trovati nel file emulecollection fornito come " "Icollegamento-ed2kE>" # type: Plain text #. type: Plain text #: ed2k.1:53 msgid "a magnet link;" msgstr "un collegamento magnet;" # type: Plain text #. type: Plain text #: ed2k.1:55 msgid "an emulecollection file." msgstr "un file emulecollection." # type: Plain text #. type: Plain text #: ed2k.1:60 msgid "" "B You can give " "more than one link, and every link can have it's own params. For example " "Blink1E -t2 Elink2E> will download Ilink1E> " "in standard category and Ilink2E> in category 2." msgstr "" "B Si può fornire più di " "un collegamento, e ogni collegamento può avere propri parametri. Per esempio " "Bcollegamento1E -t2 Ecollegamento2E> eseguirà il " "download di Icollegamento1E> in categoria standard e " "Icollegamento2E> in categoria 2." # type: Plain text #. type: Plain text #: ed2k.1:62 msgid "~/.aMule/ED2KLinks" msgstr "~/.aMule/ED2KLinks" # type: TH #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "ALC" msgstr "ALC" # type: TH #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "aLinkCreator" msgstr "aLinkCreator" # type: Plain text #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:5 msgid "aLinkCreator - the aMule eD2k link creator" msgstr "aLinkCreator - generatore di collegamenti eD2k di aMule" # type: Plain text #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:9 msgid "" "B is a graphical utility to create an eD2k link to any file on your " "computer." msgstr "" "B è una utilità grafica per creare un collegamento eD2k da ogni file " "sul vostro computer." # type: Plain text #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/wxCas/docs/wxcas.1:16 msgid "This app doesn't take any arguments." msgstr "Questa applicazione non accetta parametri." # type: TH #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "ALCC" msgstr "ALCC" # type: TH #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "aMule eD2k links calculator" msgstr "Calcolatore di collegamenti eD2k di aMule" # type: Plain text #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:6 msgid "alcc - text based eD2k links calculator for aMule" msgstr "alcc - Generatore di collegamenti eD2k in formato testo per aMule" # type: Plain text #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:11 msgid "Iinputfiles_listE>" msgstr "Ielenco_di_fileE>" # type: Plain text #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:16 msgid "" "Compute the eD2k links of all the input files given in the " "Iinputfiles_listE> (There can be one or more files)." msgstr "" "Genera i collegamenti eD2k di tutti i file in ingresso forniti in " "Ielenco_di_fileE> (Ci possono essere uno o più file)." # type: Plain text #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:19 msgid "Compute and add part hashes to the computed eD2k links." msgstr "Genera e include gli hash delle singole parti al collegamento eD2k." # type: Plain text #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:26 msgid "Be verbose - show also calculation steps." msgstr "Dettagliato - mostra anche i passaggi di calcolo." # type: TH #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "CAS" msgstr "CAS" # type: TH #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "cas v0.8" msgstr "cas v0.8" # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:6 msgid "cas - c aMule statistics" msgstr "cas - statistiche c di aMule" # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:18 msgid "" "B is a program for displaying the contents of your aMule online " "signature file to console (in a human readable form). For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B è un programma per visualizzare i contenuti del file di firma " "generato da aMule in console (in forma leggibile dalle persone). Per il " "funzionamento, devi abilitare l'opzione \"firma online\" nelle preferenze di " "aMule." # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:22 msgid "" "Writes the online signature picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "Genera il disegno per la firma. Si può anche aggiungere " "I<=EpercorsoE> a questa opzione per specificare il luogo dove deve " "essere scritta." # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:26 msgid "" "HTML page with stats and picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "Pagina HTML con le statistiche e il disegno. Si può anche aggiungere " "I<=EpercorsoE> a questa opzione per specificare il luogo dove deve " "essere scritta." # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:34 msgid "Without any options, it prints online signature data to stdout." msgstr "Senza opzioni, scrive i dati della firma nello stdout." # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:36 msgid "B was written by Pedro de Oliveira Efalso@rdk.homeip.netE" msgstr "" "B è stato scritto da Pedro de Oliveira Efalso@rdk.homeip.netE" # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:38 msgid "~/.aMule/casrc" msgstr "~/.aMule/casrc" # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:40 msgid "stat.png" msgstr "stat.png" # type: Plain text #. type: Plain text #: ../../src/utils/cas/docs/cas.1:42 msgid "tmp.html" msgstr "tmp.html" # type: TH #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "WXCAS" msgstr "WXCAS" # type: TH #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "wxCas" msgstr "wxCas" # type: Plain text #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:5 msgid "wxcas - wx c aMule statistics" msgstr "wxcas - statistiche wx c di aMule" # type: Plain text #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:11 msgid "" "B is a program for displaying the contents of your online signature " "file in a nice wx Window on your Desktop. For this to work, you must enable " "the \"Online Signature\" option in aMule's preferences." msgstr "" "B è un programma per visualizzare i contenuti del file di firma " "online in una bella finestra wx sul tuo schermo. Per il funzionamento, devi " "abilitare l'opzione \"firma online\" nelle preferenze di aMule." # type: Plain text #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:14 msgid "" "Based on Pedro de Oliveira's B(1). B was written by ThePolish " "Ethepolish@vipmail.ruE" msgstr "" "Basato su B(1) di Pedro de Oliveira. B è stato scritto da " "ThePolish Ethepolish@vipmail.ruE" # type: TH #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "XAS" msgstr "XAS" # type: TH #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "xas v1.9" msgstr "xas v1.9" # type: Plain text #. type: Plain text #: ../../src/utils/xas/docs/xas.1:5 msgid "xas - X-Chat aMule Statistics" msgstr "xas - Statistiche di aMule per X-Chat" # type: Plain text #. type: Plain text #: ../../src/utils/xas/docs/xas.1:7 msgid "B" msgstr "B" # type: Plain text #. type: Plain text #: ../../src/utils/xas/docs/xas.1:12 msgid "" "B is a plugin for xchat. For loading see your xchat documentation. " "After loading type /xas and it will send statistics to the channel you are " "in. These are taken from your Online Signature file. For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B è un plugin per xchat. Per il caricamento vedere la documentazione di " "xchat. Dopo il caricamento digitare /xas e le statistiche verranno inviate " "sul canale a cui siete collegati. Queste sono prese dal file di firma " "online. Per il funzionamento, dovete abilitare l'opzione della \"firma online" "\" nelle preferenze di aMule." # type: Plain text #. type: Plain text #: ../../src/utils/xas/docs/xas.1:14 msgid "" "To enable it on every startup of xchat you can just run the autstart-xas " "script (in /usr/bin if you installed with --prefix=/usr)." msgstr "" "Per abilitarlo ad ogni avvio di xchat dovete eseguire lo script autostart-" "xas (presente in /usr/bin se avete installato con --prefix=/usr)" # type: Plain text #. type: Plain text #: ../../src/utils/xas/docs/xas.1:16 msgid "B was originally written by niet" msgstr "B è stato originalmente scritto da niet" amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-ro.add0000644000175000017500000000010612611472361022504 0ustar morphmorphPO4A-HEADER:mode=after;position=^\.TH;beginboundary=^FakePo4aBoundary amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-ro.po0000644000175000017500000014723712611472361022413 0ustar morphmorph# Copyright (C) 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the aMule package. # # Angelescu Constantin , 2014. msgid "" msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: 2011-10-31 22:06+0100\n" "PO-Revision-Date: 2014-10-26 21:58+0200\n" "Last-Translator: Angelescu Constantin \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ro\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" "X-Generator: Poedit 1.5.4\n" #. type: TH #: amule.1:1 #, no-wrap msgid "AMULE" msgstr "AMULE" #. type: TH #: amule.1:1 amulecmd.1:1 amuled.1:1 amulegui.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "November 2011" msgstr "Noiembrie 2011" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule v2.3.1" msgstr "aMule v2.3.1" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule" msgstr "aMule" #. type: SH #: amule.1:4 amulecmd.1:5 amuled.1:4 amuleweb.1:4 ed2k.1:4 #: ../../src/utils/aLinkCreator/docs/alc.1:3 #: ../../src/utils/aLinkCreator/docs/alcc.1:4 ../../src/utils/cas/docs/cas.1:4 #: ../../src/utils/wxCas/docs/wxcas.1:3 ../../src/utils/xas/docs/xas.1:3 #, no-wrap msgid "NAME" msgstr "NUME" #. type: Plain text #: amule.1:6 msgid "amule - the all-platform eMule p2p client" msgstr "amule - client eMule p2p pentru toate platformele " #. type: SH #: amule.1:6 amulecmd.1:7 amuled.1:6 amulegui.1:6 amuleweb.1:6 ed2k.1:6 #: ../../src/utils/aLinkCreator/docs/alc.1:5 #: ../../src/utils/aLinkCreator/docs/alcc.1:6 ../../src/utils/cas/docs/cas.1:6 #: ../../src/utils/wxCas/docs/wxcas.1:5 ../../src/utils/xas/docs/xas.1:5 #, no-wrap msgid "SYNOPSIS" msgstr "REZUMAT" #. type: Plain text #: amule.1:10 amulegui.1:10 msgid "[B<-c> IpathE>] [B<-geometry> IgeomE>]" msgstr "[B<-c> IpathE>] [B<-geometry> IgeomE>]" #. type: Plain text #: amule.1:13 amuled.1:15 msgid "[B<-w> IpathE>]" msgstr "[B<-w> IpathE>]" #. type: Plain text #: amule.1:17 amuled.1:19 msgid "[B<-t> InumE>] [I]" msgstr "[B<-t> InumE>] [I]" #. type: SH #: amule.1:24 amulecmd.1:26 amuled.1:25 amulegui.1:20 amuleweb.1:41 ed2k.1:19 #: ../../src/utils/aLinkCreator/docs/alc.1:7 #: ../../src/utils/aLinkCreator/docs/alcc.1:14 #: ../../src/utils/cas/docs/cas.1:14 ../../src/utils/wxCas/docs/wxcas.1:7 #: ../../src/utils/xas/docs/xas.1:7 #, no-wrap msgid "DESCRIPTION" msgstr "DESCRIERE" #. type: TP #: amule.1:25 amuled.1:26 amulegui.1:24 ed2k.1:21 #: ../../src/utils/cas/docs/cas.1:26 #, no-wrap msgid "B<[ -c> IpathE>, B<--config-dir>=IpathE> B<]>" msgstr "B<[ -c> IpathE>, B<--config-dir>=IpathE> B<]>" #. type: Plain text #: amule.1:28 amuled.1:29 amulegui.1:27 ed2k.1:24 #: ../../src/utils/cas/docs/cas.1:29 msgid "Read config from IpathE> instead of home" msgstr "Citește configurarea din IpathE> în schimb de acasă" #. type: TP #: amule.1:28 amulegui.1:27 #, no-wrap msgid "B<[ -geometry >IgeomE> B<]>" msgstr "B<[ -geometry >IgeomE> B<]>" #. type: Plain text #: amule.1:31 amulegui.1:30 msgid "" "Sets the geometry of the app. IgeomE> uses the same format as " "standard X11 apps:\t[B<=>][IwidthE>{B}IheightE>][{B<" "+->}IxoffsetE>{B<+->}IyoffsetE>]" msgstr "" "Configurează geometria aplicației. IgeomE> utilizează același " "format ca standard X11 apps:\t[B<=>][IwidthE>{B}" "IheightE>][{B<+->}IxoffsetE>{B<+->}IyoffsetE>]" #. type: Plain text #: amule.1:34 amuled.1:42 amulegui.1:33 msgid "Prints log messages to stdout." msgstr "Tipărește jurnalul de mesaje la stdout." #. type: Plain text #: amule.1:37 amuled.1:45 amulegui.1:36 msgid "Resets config to default values." msgstr "Resetare configurări la valorile implicite." #. type: TP #: amule.1:37 amuled.1:45 #, no-wrap msgid "B<[ -w> IpathE>, B<--use-amuleweb>=IpathE> B<]>" msgstr "B<[ -w> IpathE>, B<--use-amuleweb>=IpathE> B<]>" #. type: Plain text #: amule.1:40 amuled.1:48 msgid "Specify location of amuleweb binary to IpathE>." msgstr "Specificați locația fișierului binar amuleweb la IpathE>." #. type: Plain text #: amule.1:43 amuled.1:51 msgid "Does not handle fatal exception." msgstr "Nu manipula excepția fatală." #. type: Plain text #: amule.1:46 amuled.1:54 msgid "Does not disable stdin." msgstr "Nu dezactiva stdin." #. type: TP #: amule.1:46 amuled.1:54 amulegui.1:39 ed2k.1:24 #, no-wrap msgid "B<[ -t>, B<--category>=InumE> B<]>" msgstr "B<[ -t>, B<--category>=InumE> B<]>" #. type: Plain text #: amule.1:49 amuled.1:57 amulegui.1:42 ed2k.1:27 msgid "Set category for passed eD2k links to InumE>" msgstr "" "Configurați categoria pentru link-urile eD2k trecute la InumE>" #. type: Plain text #: amule.1:52 amulecmd.1:66 amuled.1:60 amulegui.1:48 amuleweb.1:126 ed2k.1:39 msgid "Displays the current version number." msgstr "Afișează numărul versiunii curente." #. type: Plain text #: amule.1:55 amulecmd.1:69 amuled.1:63 amulegui.1:45 amuleweb.1:123 ed2k.1:36 #: ../../src/utils/aLinkCreator/docs/alcc.1:22 #: ../../src/utils/cas/docs/cas.1:32 msgid "Prints a short usage description." msgstr "Tipărește o scurtă descriere de utilizare." #. type: TP #: amule.1:55 amuled.1:63 ed2k.1:39 #, no-wrap msgid "B<[ eD2k-link ]>" msgstr "B<[ eD2k-link ]>" #. type: Plain text #: amule.1:58 amuled.1:66 ed2k.1:42 msgid "Adds an eD2k-link to the core." msgstr "Adaugă o legătură eD2k la nucleu." #. type: Plain text #: amule.1:60 amulecmd.1:75 amuled.1:68 ed2k.1:44 msgid "The eD2k link to be added can be:" msgstr "Link-ul eD2k de adăugat poate fi:" #. type: Plain text #: amule.1:63 amulecmd.1:78 amuled.1:71 ed2k.1:47 msgid "a file link (ed2k://|file|...), it will be added to the download queue;" msgstr "" "un link fișier (ed2k://|file|...), va fi adăugat la coada descărcărilor," #. type: Plain text #: amule.1:65 amulecmd.1:80 amuled.1:73 ed2k.1:49 msgid "" "a server link (ed2k://|server|...), it will be added to the server list;" msgstr "" "o legătură server (ed2k://|server|...), care va fi adăugată la lista " "serverelor," #. type: Plain text #: amule.1:67 amuled.1:75 ed2k.1:51 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list;" msgstr "" "o legătură listă server, în care caz toate serverele din listă vor fi " "adăugate la lista serverelor;" #. type: Plain text #: amule.1:69 amuled.1:77 msgid "a magnet link." msgstr "o legătură magnet." #. type: SH #: amule.1:70 amulecmd.1:207 amuleweb.1:132 #, no-wrap msgid "NOTES" msgstr "NOTE" #. type: SS #: amule.1:71 amulecmd.1:208 amuleweb.1:133 #, no-wrap msgid "Paths" msgstr "Căi" #. type: Plain text #: amule.1:75 amulecmd.1:212 amuleweb.1:137 msgid "" "For all options which take a IpathE> value, if the I " "contains no directory part (i.e. just a plain filename), then it is " "considered to be under the aMule configuration directory, I<~/.aMule>." msgstr "" "Pentru toate opțiunile care iau o IpathE> valoare, dacă I nu " "conține nici o parte a unui director (ex. doar un nume de fișier simplu), " "atunci se consideră a fi sub directorul de configurare aMule, I<~/.aMule>." #. type: SH #: amule.1:75 amulecmd.1:240 amuled.1:78 amuleweb.1:171 ed2k.1:60 #: ../../src/utils/cas/docs/cas.1:36 #, no-wrap msgid "FILES" msgstr "FIȘIERE" #. type: Plain text #: amule.1:77 amuled.1:80 msgid "~/.aMule/*" msgstr "~/.aMule/*" #. type: SH #: amule.1:77 amulecmd.1:256 amuled.1:80 amulegui.1:48 amuleweb.1:191 #: ed2k.1:62 ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/aLinkCreator/docs/alcc.1:26 #: ../../src/utils/cas/docs/cas.1:42 ../../src/utils/wxCas/docs/wxcas.1:16 #: ../../src/utils/xas/docs/xas.1:16 #, no-wrap msgid "REPORTING BUGS" msgstr "RAPORTAREA ERORILOR" #. type: Plain text #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 msgid "" "Please report bugs either on our forum (I), or in " "our bugtracker (I). Please do not report bugs in e-" "mail, neither to our mailing list nor directly to any team member." msgstr "" "Vă rugăm să raportați erorile fie pe forumul nostru(I), sau în bugtracker-ul nostru (I). Nu " "raportați erorile pe email, nici la lista noastră de adrese nici direct la " "nici un membru al echipei." #. type: SH #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 #, no-wrap msgid "COPYRIGHT" msgstr "DREPT DE AUTOR" #. type: Plain text #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 msgid "" "aMule and all of its related utilities are distributed under the GNU General " "Public License." msgstr "" "aMule și toate utilitarele conexe sunt distribuite sub GNU General Public " "License." #. type: SH #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 #, no-wrap msgid "SEE ALSO" msgstr "VEDEȚI ȘI" #. type: SH #: amule.1:84 amulecmd.1:263 amuled.1:87 amulegui.1:55 amuleweb.1:198 #: ed2k.1:69 ../../src/utils/aLinkCreator/docs/alc.1:18 #: ../../src/utils/aLinkCreator/docs/alcc.1:33 #: ../../src/utils/cas/docs/cas.1:49 ../../src/utils/wxCas/docs/wxcas.1:23 #: ../../src/utils/xas/docs/xas.1:23 #, no-wrap msgid "AUTHOR" msgstr "AUTOR" #. type: Plain text #: amule.1:85 amulecmd.1:264 amuled.1:88 amuleweb.1:199 ed2k.1:70 #: ../../src/utils/aLinkCreator/docs/alc.1:19 #: ../../src/utils/aLinkCreator/docs/alcc.1:34 #: ../../src/utils/cas/docs/cas.1:50 ../../src/utils/wxCas/docs/wxcas.1:24 #: ../../src/utils/xas/docs/xas.1:24 msgid "" "This manpage was written by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Această pagină manual a fost scrisă de Vollstrecker " "Eamule@vollstreckernet.deE" #. type: TH #: amulecmd.1:1 #, no-wrap msgid "AMULECMD" msgstr "AMULECMD" #. type: TH #: amulecmd.1:1 #, no-wrap msgid "aMuleCmd v2.3.1" msgstr "aMuleCmd v2.3.1" #. type: TH #: amulecmd.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "aMule utilities" msgstr "utilitare aMule" #. type: Plain text #: amulecmd.1:7 msgid "amulecmd - Console-based program to control aMule" msgstr "amulecmd - Program bazat pe terminal pentru controlat aMule" #. type: Plain text #: amulecmd.1:13 amuleweb.1:12 msgid "" "[B<-h> IhostE>] [B<-p> IportE>] [B<-P> " "IpasswordE>] [B<-f> IpathE>]" msgstr "" "[B<-h> IhostE>] [B<-p> IportE>] [B<-P> " "IpasswordE>] [B<-f> IpathE>]" #. type: Plain text #: amulecmd.1:17 msgid "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> IcommandE>]" "B< >}" msgstr "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> IcommandE>]" "B< >}" #. type: Plain text #: amulecmd.1:20 amuleweb.1:31 msgid "[B<--create-config-from>=IpathE>]" msgstr "[B<--create-config-from>=IpathE>]" #. type: Plain text #: amulecmd.1:29 msgid "B is a console-based client to control aMule." msgstr "B este un client bazat pe terminal pentru a controla aMule." #. type: TP #: amulecmd.1:29 amuleweb.1:46 #, no-wrap msgid "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" msgstr "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" #. type: Plain text #: amulecmd.1:33 amuleweb.1:50 msgid "" "Host where aMule is running (default: I). IhostE> " "might be an IP address or a DNS name" msgstr "" "Gazda unde rulează aMule (implicit: I). IhostE> ar " "putea fi o adresă IP sau un nume DNS" #. type: TP #: amulecmd.1:33 amuleweb.1:50 #, no-wrap msgid "B<[ -p> IportE>, B<--port>=IportE> B<]>" msgstr "B<[ -p> IportE>, B<--port>=IportE> B<]>" #. type: Plain text #: amulecmd.1:36 amuleweb.1:53 msgid "" "aMule's port for External Connections, as set in Preferences-ERemote " "Controls (default: I<4712>)" msgstr "" "Portul aMule pentru conexiuni externe, cum este configurat în Preferințe-" "EControl la distanță (implicit: I<4712>)" #. type: TP #: amulecmd.1:36 amuleweb.1:53 #, no-wrap msgid "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" msgstr "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" #. type: Plain text #: amulecmd.1:39 amuleweb.1:56 msgid "External Connections password." msgstr "Parolă conexiuni externe." #. type: TP #: amulecmd.1:39 amuleweb.1:56 #, no-wrap msgid "B<[ -f> IpathE>, B<--config-file>=IpathE> B<]>" msgstr "B<[ -f> IpathE>, B<--config-file>=IpathE> B<]>" #. type: Plain text #: amulecmd.1:43 amuleweb.1:60 msgid "" "Use the given configuration file. Default configuration file is I<~/.aMule/" "remote.conf>" msgstr "" "Utilizează fișierul de configurare dat. Fișierul de configurare implicit " "este I<~/.aMule/remote.conf>" #. type: Plain text #: amulecmd.1:46 amuleweb.1:63 msgid "Do not print any output to stdout." msgstr "Nu tipării nici o ieșire la stdout." #. type: Plain text #: amulecmd.1:50 amuleweb.1:67 msgid "Be verbose - show also debug messages." msgstr "Fi detaliat - arată și mesajele de depanare." #. type: TP #: amulecmd.1:50 amuleweb.1:67 #, no-wrap msgid "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" msgstr "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" #. type: Plain text #: amulecmd.1:54 amuleweb.1:71 msgid "" "Sets program locale (language). See the B section for the " "description of the IlangE> parameter." msgstr "" "Configurați localizarea aplicației (limba). Vedeți secțiunea B pentru " "descrierea parametrului IlangE> ." #. type: Plain text #: amulecmd.1:57 amuleweb.1:74 msgid "Write command line options to config file and exit" msgstr "Scrie opțiunile liniei de comandă în fișierul de configurare și ieși" #. type: TP #: amulecmd.1:57 #, no-wrap msgid "B<[ -c> IcommandE>, B<--command>=IcommandE> B<]>" msgstr "B<[ -c> IcommandE>, B<--command>=IcommandE> B<]>" #. type: Plain text #: amulecmd.1:60 msgid "" "Execute IcommandE> as if it was entered at amulecmd's prompt and " "exit." msgstr "" "Execută IcommandE> ca și cum ar fi fost introdusă în terminalul " "amulecmd și ieși." #. type: TP #: amulecmd.1:60 amuleweb.1:117 #, no-wrap msgid "B<[ --create-config-from>=IpathE> B<]>" msgstr "B<[ --create-config-from>=IpathE> B<]>" #. type: Plain text #: amulecmd.1:63 amuleweb.1:120 msgid "" "Create config file based upon IpathE>, which must point to a valid " "aMule config file, and then exit." msgstr "" "Creează fișierul de configurare bazat pe IpathE>, care trebuie să " "indice la un fișier de configurare aMule valid, iar apoi ieși." #. type: SH #: amulecmd.1:69 #, no-wrap msgid "COMMANDS" msgstr "COMENZI" #. type: Plain text #: amulecmd.1:71 msgid "All commands are case insensitive." msgstr "toate comenzile nu sunt sensibile la majuscule." #. type: SS #: amulecmd.1:71 #, no-wrap msgid "Add IeD2k-linkE> | Imagnet-linkE>" msgstr "Adaugă IeD2k-linkE> | Imagnet-linkE>" #. type: Plain text #: amulecmd.1:73 msgid "Adds an eD2k-link or a magnet-link to the core." msgstr "Adaugă la nucleu o legătură eD2k sau o legătură magnet." #. type: Plain text #: amulecmd.1:82 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list." msgstr "" "un link listă server, în care caz toate serverele din listă vor fi adăugate " "la lista serverelor." #. type: Plain text #: amulecmd.1:85 msgid "The magnet link must contain the eD2k hash and file length." msgstr "" "Legătura magnet trebuie să conțină indexul eD2k și lungimea fișierului." #. type: SS #: amulecmd.1:85 #, no-wrap msgid "Cancel IhashE> | InumberE>" msgstr "Anulează IhashE> | InumberE>" #. type: Plain text #: amulecmd.1:87 msgid "" "Cancels the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Anulează descărcarea specificată de IhashE> sau " "InumberE>. Pentru a obține valoarea utilizați B." #. type: SS #: amulecmd.1:87 #, no-wrap msgid "Connect [ I | I | Iip|nameE> ]" msgstr "Conectare [ I | I | Iip|nameE> ]" #. type: Plain text #: amulecmd.1:89 msgid "Connect to the network." msgstr "Conectare la rețea." #. type: Plain text #: amulecmd.1:91 msgid "This will connect to all networks that are enabled in Preferences." msgstr "Aceasta va conecta la toate rețelele care sunt activate în preferințe." #. type: Plain text #: amulecmd.1:95 msgid "" "With the optional parameter you can specify which network to connect to. " "Giving a server address in the form of IP:Port (where IP is either a dotted " "decimal IPv4 address or a resolvable DNS name) aMule will connect to that " "server only." msgstr "" "Cu parametrii facultativi puteți specifica la care rețea să se conecteze. " "Dând o adresă pentru server în forma IP:Port (unde IP este fie o adresă " "zecimală IPv4 sau un nume DNS rezolvabil) aMule se va conecta numai la acel " "server." #. type: Plain text #: amulecmd.1:98 msgid "" "Disconnect from all networks you are connected to, or just disconnect from " "the specified network." msgstr "" "Deconectați de la toate rețelele la care sunteți conectat, sau doar " "deconectați de la rețeaua specificată." #. type: SS #: amulecmd.1:98 #, no-wrap msgid "Download InumberE>" msgstr "Descarcă InumberE>" #. type: Plain text #: amulecmd.1:100 msgid "Start downloading a file." msgstr "Pornește descărcarea unui fișier." #. type: Plain text #: amulecmd.1:104 msgid "" "The InumberE> of a file from the last search has to be given. " "Example: `download 12' will start to download the file with the number 12 of " "the previous search." msgstr "" "Un InumberE> a unui fișier de la ultima căutare trebuie dat. " "Exemplu: `descărcarea 12' va porni descărcarea fișierului cu numărul 12 al " "căutării anterioare." #. type: Plain text #: amulecmd.1:106 msgid "Disconnect from amule/amuled and quit amulecmd." msgstr "Deconectează de la amule/amuled și termină amulecmd." #. type: SS #: amulecmd.1:106 #, no-wrap msgid "Get IwhatE>" msgstr "Ia IwhatE>" #. type: Plain text #: amulecmd.1:108 msgid "Get and display a preference value." msgstr "Ia și afișează o valoare preferată." #. type: Plain text #: amulecmd.1:110 amulecmd.1:144 amulecmd.1:173 amulecmd.1:183 msgid "Available values for IwhatE>:" msgstr "Valori disponibile pentru IwhatE>:" #. type: Plain text #: amulecmd.1:113 msgid "Get bandwidth limits." msgstr "Ia limitele lățimii de bandă." #. type: Plain text #: amulecmd.1:115 msgid "Get IPFilter preferences." msgstr "Ia preferințele filtrului IP." #. type: SS #: amulecmd.1:116 #, no-wrap msgid "Help [ IcommandE> ]" msgstr "Ajutor [ IcommandE> ]" #. type: Plain text #: amulecmd.1:120 msgid "" "Prints a short usage description. If called without parameter, it shows a " "list of available commands. If called with IcommandE>, it shows a " "short description of the given command." msgstr "" "Tipărește o scurtă descriere a utilizării. Dacă este adresată fără nici un " "parametru, va arăta o listă a comenzilor disponibile. Dacă este adresată cu " "IcommandE>, va arăta o scurtă descriere a comenzii date." #. type: SS #: amulecmd.1:120 #, no-wrap msgid "Pause IhashE> | InumberE>" msgstr "Pauză IhashE> | InumberE>" #. type: Plain text #: amulecmd.1:122 msgid "" "Pauses the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Pauzează descărcarea specificată de IhashE> or " "InumberE>. Pentru a obține valoarea utilizați B." #. type: SS #: amulecmd.1:122 #, no-wrap msgid "Priority IpriorityE> IhashE> | InumberE>" msgstr "Prioritate IpriorityE> IhashE> | InumberE>" #. type: Plain text #: amulecmd.1:124 msgid "" "Set priority of a download specified by IhashE> or " "InumberE>." msgstr "" "Configurați prioritatea unei descărcări cu IhashE> sau " "InumberE>." #. type: Plain text #: amulecmd.1:126 msgid "Available values for IpriorityE>:" msgstr "Valori disponibile pentru IpriorityE>:" #. type: Plain text #: amulecmd.1:129 msgid "Automatic priority." msgstr "Prioritate automată." #. type: Plain text #: amulecmd.1:131 msgid "High priority." msgstr "Prioritate înaltă." #. type: Plain text #: amulecmd.1:133 msgid "Low priority." msgstr "Prioritate scăzută." #. type: Plain text #: amulecmd.1:135 msgid "Normal priority." msgstr "Prioritate normală." #. type: Plain text #: amulecmd.1:138 msgid "Shows the progress of an on-going search." msgstr "Arată progresul unei căutări în desfășurare." #. type: Plain text #: amulecmd.1:140 msgid "A synonim of the B command." msgstr "Un sinonim a comenzii B ." #. type: SS #: amulecmd.1:140 #, no-wrap msgid "Reload IwhatE>" msgstr "Reâncarcă IwhatE>" #. type: Plain text #: amulecmd.1:142 msgid "Reloads a given object." msgstr "Reâncarcă un obiect dat." #. type: Plain text #: amulecmd.1:147 msgid "Reload shared files list." msgstr "Reâncarcă lista fișierelor partajate." #. type: Plain text #: amulecmd.1:149 msgid "Reload IP filter tables." msgstr "Reâncarcă tabelele filtrului IP." #. type: Plain text #: amulecmd.1:152 msgid "Reset the log." msgstr "Resetează jurnalul." #. type: Plain text #: amulecmd.1:154 msgid "Shows you the results of the last search." msgstr "Arată rezultatele ultimei căutări." #. type: SS #: amulecmd.1:154 #, no-wrap msgid "Resume IhashE> | InumberE>" msgstr "Reia IhashE> | InumberE>" #. type: Plain text #: amulecmd.1:156 msgid "" "Resumes the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Reia descărcarea specificată de IhashE> sau InumberE>. " "Pentru a obține valoarea utilizați B." #. type: SS #: amulecmd.1:156 #, no-wrap msgid "Search ItypeE> IkeywordE>" msgstr "Caută ItypeE> IkeywordE>" #. type: Plain text #: amulecmd.1:159 msgid "" "Makes a search for the given IkeywordE>. A search type and a " "keyword to search is mandatory to do this. Example: `search kad amule' " "performs a kad search for `amule'." msgstr "" "Face o căutare a cuvântului cheie dat IkeywordE>. Un tip de " "căutare și un un cuvânt cheie sunt obligatorii pentru a face asta. Exemplu: " "`caută kad amule' efectuează o căutare kad pentru `amule'." #. type: Plain text #: amulecmd.1:161 msgid "Available search types:" msgstr "Tipuri de căutări disponibile:" #. type: Plain text #: amulecmd.1:164 msgid "Performs a global search." msgstr "Efectuează o căutare globală." #. type: Plain text #: amulecmd.1:166 msgid "Performs a search on the Kademlia network." msgstr "Efectuează o căutare în rețeaua Kademlia." #. type: Plain text #: amulecmd.1:168 msgid "Performs a local search." msgstr "Efectuează o căutare locală." #. type: SS #: amulecmd.1:169 #, no-wrap msgid "Set IwhatE>" msgstr "Configurează IwhatE>" #. type: Plain text #: amulecmd.1:171 msgid "Sets a given preferences value." msgstr "Configurați o valoare a preferințelor date." #. type: Plain text #: amulecmd.1:176 msgid "Set bandwidth limits." msgstr "Configurare limite lățime de bandă." #. type: Plain text #: amulecmd.1:178 msgid "Set IPFilter preferences." msgstr "Configurare preferințe filtru IP." #. type: SS #: amulecmd.1:179 #, no-wrap msgid "Show IwhatE>" msgstr "Arată IwhatE>" #. type: Plain text #: amulecmd.1:181 msgid "Shows upload/download queue, servers list or shared files list." msgstr "" "Arată coada încărcărilor/descărcărilor, lista serverelor sau lista " "fișierelor partajate." #. type: Plain text #: amulecmd.1:186 msgid "Show download queue." msgstr "Arată coada descărcărilor." #. type: Plain text #: amulecmd.1:188 msgid "Show log." msgstr "Arată jurnalul." #. type: Plain text #: amulecmd.1:190 msgid "Show servers list." msgstr "Arată lista serverelor." #. type: Plain text #: amulecmd.1:192 msgid "Show upload queue." msgstr "Arată coada încărcărilor." #. type: Plain text #: amulecmd.1:196 msgid "" "Shutdown the remote running core (amule/amuled). This will also shut down " "the text client, since it is unusable without a running core." msgstr "" "Închide nucleul distant care rulează (amule/amuled). Aceasta va închide de " "asemenea clientul text, deoarece este inutilizabil fără un nucleu care " "rulează." #. type: SS #: amulecmd.1:196 #, no-wrap msgid "Statistics [ InumberE> ]" msgstr "Statistici [ InumberE> ]" #. type: Plain text #: amulecmd.1:198 msgid "Show statistics tree." msgstr "Arată arborele statisticilor." #. type: Plain text #: amulecmd.1:202 msgid "" "The optional InumberE> in the range of 0-255 can be passed as " "argument to this command, which tells how many entries of the client version " "subtree should be shown. Passing 0, or omitting it means `unlimited'." msgstr "" "Numărul facultativ InumberE> în domeniul 0-255 poate fi trecut ca " "argument la această comandă, care spune cât de multe intrări de subdiviziuni " "a versiunii clientului vor fi afișate. Trecând 0, sau lăsând gol va însemna " "`nelimitat'." #. type: Plain text #: amulecmd.1:205 msgid "" "Example: `statistics 5' will show only the top 5 versions for each client " "type." msgstr "" "Exemplu: `statistici 5' va afișa numai primele 5 versiuni pentru fiecare tip " "de client." #. type: Plain text #: amulecmd.1:207 msgid "Show connection status, current up/download speeds, etc." msgstr "" "Arată starea conexiunii, vitezele actuale de încărcare/descărcare, etc." #. type: SS #: amulecmd.1:212 amuleweb.1:137 #, no-wrap msgid "Languages" msgstr "Limbi" #. type: Plain text #: amulecmd.1:218 amuleweb.1:143 msgid "" "The IlangE> parameter for the B<-l> option has the following form: " "I[B<_>I][B<.>I][B<@>I] where I is the " "primary language, I is a sublanguage/territory, I is the " "character set to use and I allows the user to select a specific " "instance of localization data within a single category." msgstr "" "Parametrul IlangE> pentru opțiunea B<-l> are următoarea formă: " "I[B<_>I][B<.>I][B<@>I] unde I este " "limba primară, I este dialectul/teritoriul, I este setul de " "caractere de utilizat iar I permite utilizatorului de a specifica " "o instanță specifică a datelor localizării în cadrul unei singure categorii." #. type: Plain text #: amulecmd.1:220 amuleweb.1:145 msgid "For example, the following strings are valid:" msgstr "De exemplu, următoarele șiruri sunt valide:" #. type: Plain text #: amulecmd.1:234 amuleweb.1:159 msgid "" "Though all the above strings are accepted as valid language definitions, " "I and I are yet unused." msgstr "" "Deși toate șirurile de mai sus sunt acceptate ca definiții de limbă valide, " "I și I sunt momentan neutilizate." #. type: Plain text #: amulecmd.1:237 amuleweb.1:162 msgid "" "In addition to the format above, you can also specify full language names in " "English - so B<-l german> is also valid and is equal to B<-l de_DE>." msgstr "" "În completare la formatul de mai sus, puteți specifica și numele întreg al " "limbii în engleză - so B<-l german> este valid și similar cu B<-l de_DE>." #. type: Plain text #: amulecmd.1:240 amuleweb.1:165 msgid "" "When no locale is defined, either on command-line or in config file, system " "default language will be used." msgstr "" "Când nu este definită nici o limbă, în linia de comandă sau în fișierul de " "configurare, va fi utilizată limba implicită a sistemului de operare." #. type: Plain text #: amulecmd.1:242 amuleweb.1:173 msgid "~/.aMule/remote.conf" msgstr "~/.aMule/remote.conf" #. type: SH #: amulecmd.1:242 amuleweb.1:177 #, no-wrap msgid "EXAMPLE" msgstr "EXEMPLU" #. type: Plain text #: amulecmd.1:244 msgid "Typically amulecmd will be first run as:" msgstr "De obicei amulecmd va rula întâi ca:" #. type: Plain text #: amulecmd.1:246 msgid "B B<-h> I B<-p> I B<-P> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I B<-w>" #. type: Plain text #: amulecmd.1:248 amuleweb.1:183 msgid "or" msgstr "sau" #. type: Plain text #: amulecmd.1:250 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" #. type: Plain text #: amulecmd.1:252 amuleweb.1:187 msgid "" "These will save settings to I<$HOME/.aMule/remote.conf>, and later you only " "need to type:" msgstr "" "Aceasta va salva configurările la I<$HOME/.aMule/remote.conf>, iar mai " "târziu trebuie doar să tastați:" #. type: Plain text #: amulecmd.1:256 msgid "Of course, you don't have to follow this example." msgstr "Desigur, nu trebuie să urmați acest exemplu." #. type: TH #: amuled.1:1 #, no-wrap msgid "AMULED" msgstr "AMULED" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon v2.3.1" msgstr "aMule Daemon v2.3.1" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon" msgstr "aMule Daemon" #. type: Plain text #: amuled.1:6 msgid "amuled - the all-platform eMule p2p client - daemonized version" msgstr "" "amuled - clientul eMule p2p pentru toate platformele - versiunea demonizată" #. type: Plain text #: amuled.1:9 ../../src/utils/cas/docs/cas.1:11 msgid "[B<-c> IpathE>]" msgstr "[B<-c> IpathE>]" #. type: Plain text #: amuled.1:11 msgid "[B<-p> IpathE>]" msgstr "[B<-p> IpathE>]" #. type: Plain text #: amuled.1:32 msgid "Forks to background." msgstr "Bifurcă spre fundal." #. type: TP #: amuled.1:32 #, no-wrap msgid "B<[ -p> IpathE>, B<--pid-file>=IpathE> B<]>" msgstr "B<[ -p> IpathE>, B<--pid-file>=IpathE> B<]>" #. type: Plain text #: amuled.1:36 msgid "" "After fork, create a pid-file in the IpathE>. IpathE> " "has to contain the filename." msgstr "" "După bifurcare, crează un fișier-pid în IpathE>. " "IpathE> trebuie să conțină numele fișierului." #. type: Plain text #: amuled.1:39 msgid "Configure EC (External Connections)." msgstr "Configurează EC (conexiuni externe)" #. type: TH #: amulegui.1:1 #, no-wrap msgid "AMULEGUI" msgstr "AMULEGUI" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI v2.3.1" msgstr "aMuleGUI v2.3.1" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI" msgstr "aMuleGUI" #. type: Plain text #: amulegui.1:6 msgid "amulegui - aMule control program with GUI" msgstr "amulegui - Controlul programului aMule prin GUI" #. type: Plain text #: amulegui.1:14 msgid "[B<-t> InumE>]" msgstr "[B<-t> InumE>]" #. type: Plain text #: amulegui.1:24 msgid "" "B is a client program, and can be connected to amule or amuled via " "EC. You can manage your amule program with it. It provides almost the same " "functionalities as amule, even if the core works on another computer." msgstr "" "B este un program client și poate fi conectat la amule sau amuled " "prin EC. Puteți administra programul amule cu el. Asigură aproape aceleași " "funcțiuni ca amule, chiar dacă nucleul funcționează pe un alt computer." #. type: Plain text #: amulegui.1:39 msgid "Skip connection dialog." msgstr "Omite dialogul de conectare." #. type: Plain text #: amulegui.1:57 msgid "" "This manpage was written by Julien Delange for Debian Ejulien AT gunnm " "DOT orgE" msgstr "" "Această pagină manual a fost scrisă de către Julien Delange pentru Debian " "Ejulien AT gunnm DOT orgE" #. type: Plain text #: amulegui.1:58 msgid "" "This manpage was rewritten by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Această pagină manual a fost revizuită de Vollstrecker " "Eamule@vollstreckernet.deE" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "AMULEWEB" msgstr "AMULEWEB" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "aMule webserver v2.3.1" msgstr "aMule webserver v2.3.1" #. type: Plain text #: amuleweb.1:6 msgid "amuleweb - aMule web server" msgstr "amuleweb - aMule server web" #. type: Plain text #: amuleweb.1:15 msgid "[B<-l> IlangE>]" msgstr "[B<-l> IlangE>]" #. type: Plain text #: amuleweb.1:18 msgid "[B<-t> InameE>] [B<-s> IportE>]" msgstr "[B<-t> InameE>] [B<-s> IportE>]" #. type: Plain text #: amuleweb.1:20 msgid "[B<-U> IportE>]" msgstr "[B<-U> IportE>]" #. type: Plain text #: amuleweb.1:24 msgid "[B<-A> IpasswordE>] [B<-G> IpasswordE>]" msgstr "[B<-A> IparolăE>] [B<-G> IparolăE>]" #. type: Plain text #: amuleweb.1:40 msgid "[B<--amule-config-file>=IpathE>]" msgstr "[B<--amule-config-file>=IpathE>]" #. type: Plain text #: amuleweb.1:46 msgid "" "B manages your access to amule through a web browser. You can " "start amuleweb together with B(1), or separately, any time later. " "Options can be specified via command-line or via config-file. Command-line " "options take precedence over config-file options." msgstr "" "B vă administrează accesul la amule printr-un navigator web. " "Puteți porni amuleweb împreună cu B(1), sau separat, oricând mai " "târziu. Pot fi specificate opțiuni prin linia de comandă sau prin fișierul " "de configurare. Opțiunile din linia de comandă au prioritate față de " "opțiunile din fișierul de configurare." #. type: TP #: amuleweb.1:74 #, no-wrap msgid "B<[ -t> InameE>, B<--template>=InameE> B<]>" msgstr "B<[ -t> InameE>, B<--template>=InameE> B<]>" #. type: Plain text #: amuleweb.1:77 msgid "" "Loads the template named InameE>. See the B section " "for details." msgstr "" "Încarcă modelul denumit InameE>. Vedeți secțiunea B " "pentru detalii." #. type: TP #: amuleweb.1:77 #, no-wrap msgid "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" msgstr "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" #. type: Plain text #: amuleweb.1:80 msgid "" "Webserver's HTTP port. This is the port you must point your browser to " "(default: I<4711>)." msgstr "" "Portul HTTP al serverului web. Acesta este portul pe care trebuie să-l " "indicați navigatorului (implicit: I<4711>)." #. type: Plain text #: amuleweb.1:84 msgid "Enable UPnP." msgstr "Activare UPnP." #. type: TP #: amuleweb.1:84 #, no-wrap msgid "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" msgstr "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" #. type: Plain text #: amuleweb.1:87 msgid "UPnP port." msgstr "Port UPnP." #. type: Plain text #: amuleweb.1:90 msgid "Enables using gzip compression in HTTP traffic to save bandwidth." msgstr "" "Activează utilizând compresia gzip în traficul HTTP pentru a salva lățimea " "de bandă." #. type: Plain text #: amuleweb.1:93 msgid "Disables using gzip compression (this is the default)." msgstr "Dezactivează utilizând compresia gzip (aceasta este implicita)." #. type: TP #: amuleweb.1:93 #, no-wrap msgid "B<[ -A> IpasswdE>, B<--admin-pass>=IpasswdE> B<]>" msgstr "B<[ -A> IpasswdE>, B<--admin-pass>=IpasswdE> B<]>" #. type: Plain text #: amuleweb.1:96 msgid "Full access password for webserver." msgstr "Parola pentru accesul nerestricționat pentru serverul web." #. type: TP #: amuleweb.1:96 #, no-wrap msgid "B<[ -G> IpasswdE>, B<--guest-pass>=IpasswdE> B<]>" msgstr "B<[ -G> IpasswdE>, B<--guest-pass>=IpasswdE> B<]>" #. type: Plain text #: amuleweb.1:99 msgid "Guest password for webserver." msgstr "Parolă oaspete pentru webserver." #. type: Plain text #: amuleweb.1:102 msgid "Allows guest access." msgstr "Permite accesul oaspeților." #. type: Plain text #: amuleweb.1:105 msgid "Denies guest access (default)." msgstr "Interzice accesul oaspeților (implicit)." #. type: Plain text #: amuleweb.1:111 msgid "" "Load/save webserver settings from/to remote aMule. This causes amuleweb to " "ignore command-line and config-file settings, and load them from aMule. " "When saving preferences none will be written to the config file, but to " "aMule. (Of course, this works only for those settings that can be set in " "aMule's Preferences-ERemote Controls.)" msgstr "" "Încarcă/Salvează configurările serverului web din/la aMule distant. Aceasta " "determină amuleweb să ignore configurările din linia de comandă sau fișierul " "de configurare și să le încarece din aMule. Când se salvează preferințele nu " "se va scrie nimic în fișierul de configurare, doar la aMule. (Desigur, " "aceasta funcționează doar pentru acele configurări care pot fi configurate " "în aMule la Preferințe-EControl la distanță.)" #. type: Plain text #: amuleweb.1:114 msgid "Disable PHP interpreter (deprecated)" msgstr "Dezactivează interpretorul PHP (învechit)" #. type: Plain text #: amuleweb.1:117 msgid "Recompiles PHP pages on each request." msgstr "Recompilează paginile PHP la fiecare cerere." #. type: TP #: amuleweb.1:126 #, no-wrap msgid "B<[ --amule-config-file>=IpathE> B<]>" msgstr "B<[ --amule-config-file>=IpathE> B<]>" #. type: Plain text #: amuleweb.1:132 msgid "" "aMule config file path. B aMule uses this option when " "starting amuleweb at aMule startup. This option causes all other command-" "line and config-file settings to be ignored, preferences to be read from the " "given config file, and also implies the B<-q -L> options." msgstr "" "Calea fișierului de configurare aMule. B aMule " "utilizează această opțiune când pornește amuleweb la pornirea aMule. Această " "opțiune cauzează tuturor celorlalte configurări din linia de comandă și " "fișiere de configurare să fie ignorate, preferințele vor fi citite din " "fișierul de configurare dat, de asemenea implică și opțiunile B<-q -L> ." #. type: SH #: amuleweb.1:165 #, no-wrap msgid "SKIN SUPPORT" msgstr "SUPORT ASPECT" #. type: Plain text #: amuleweb.1:169 msgid "" "B is capable of displaying information in different skins. These " "skins are called templates, and you can make amuleweb load a specific " "template via the B<-t> command line option. Templates are searched in two " "places: first in I<~/.aMule/webserver/> and then in I if you installed with --prefix=/usr." msgstr "" "B este capabil să afișeze informația în diferite aspecte. Aceste " "aspecte se numesc modele, și puteți face ca amuleweb să încarce un model " "anumit prin B<-t> opțiune linie de comandă. Modelele sunt căutate în două " "locuri: întâi în I<~/.aMule/webserver/> apoi în I dacă a fost instalat cu --prefix=/usr." #. type: Plain text #: amuleweb.1:171 msgid "" "Each template must be in a subdirectory of the template name, and this " "directory must contain all files the template needs." msgstr "" "Fiecare șablon trebuie să fie într-un subdirector al numelui șablonului, iar " "acest director trebuie să conțină toate fișierele de care șablonul are " "nevoie." #. type: Plain text #: amuleweb.1:175 msgid "~/.aMule/webserver/" msgstr "~/.aMule/webserver/" #. type: Plain text #: amuleweb.1:177 msgid "I<$(pkgdatadir)>/webserver/" msgstr "I<$(pkgdatadir)>/webserver/" #. type: Plain text #: amuleweb.1:179 msgid "Typically amuleweb will be first run as:" msgstr "De obicei amuleweb va rula la început ca:" #. type: Plain text #: amuleweb.1:181 msgid "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" #. type: Plain text #: amuleweb.1:185 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" #. type: Plain text #: amuleweb.1:191 msgid "" "Of course, you may specify any more or less options on the first example " "line, and you may also totally omit it." msgstr "" "Desigur, puteți specifica cât de multe sau cât de puține opțiuni în linia " "primului exemplu, și de asemenea le puteți omite integral." #. type: TH #: ed2k.1:1 #, no-wrap msgid "ED2K" msgstr "ED2K" #. type: TH #: ed2k.1:1 #, no-wrap msgid "aMule eD2k link parser v1.5.1" msgstr "Analizor aMule de link-uri eD2k v1.5.1" #. type: Plain text #: ed2k.1:6 msgid "ed2k - aMule eD2k link parser" msgstr "ed2k - analizor aMule de linkuri eD2k " #. type: Plain text #: ed2k.1:10 msgid "[B<-c> IpathE>] [B<-t> InumE>]" msgstr "[B<-c> IpathE>] [B<-t> InumE>]" #. type: Plain text #: ed2k.1:13 msgid "IeD2k-linkE>" msgstr "IeD2k-linkE>" #. type: Plain text #: ed2k.1:21 msgid "" "Sends the given IeD2k-linkE> to aMule, i.e. writes it to the file " "~/.aMule/ED2KLinks, which will be checked by aMule every second for links." msgstr "" "Trimite link-ul dat IeD2k-linkE> la aMule, ex. îl scrie în " "fișierul ~/.aMule/ED2KLinks, care va fi verificat de aMule în fiecare " "secundă pentru link-uri." #. type: Plain text #: ed2k.1:30 msgid "" "Loads all link found in the emulecollection given as Ied2k-linkE>" msgstr "" "Încarcă toate link-urile găsite în colecția emule date ca Ied2k-" "linkE>" #. type: Plain text #: ed2k.1:33 msgid "" "Lists all link found in the emulecollection given as Ied2k-linkE>" msgstr "" "Listează toate link-urile găsite în colecția emule date ca Ied2k-" "linkE>" #. type: Plain text #: ed2k.1:53 msgid "a magnet link;" msgstr "o legătură magnet;" #. type: Plain text #: ed2k.1:55 msgid "an emulecollection file." msgstr "un fișier colecție emule." #. type: Plain text #: ed2k.1:60 msgid "" "B You can give " "more than one link, and every link can have it's own params. For example " "Blink1E -t2 Elink2E> will download Ilink1E> " "in standard category and Ilink2E> in category 2." msgstr "" "B< Ordinea în care dați parametrii este importantă.> Puteți da mai mult " "decât un link, iar fiecare link poate avea proprii parametri. De exemplu " "Blink1E -t2 Elink2E> va descărca Ilink1E> " "în categoria standard și Ilink2E> în categoria 2." #. type: Plain text #: ed2k.1:62 msgid "~/.aMule/ED2KLinks" msgstr "~/.aMule/ED2KLinks" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "ALC" msgstr "ALC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "aLinkCreator" msgstr "aLinkCreator" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:5 msgid "aLinkCreator - the aMule eD2k link creator" msgstr "aLinkCreator - creatorul aMule eD2k de legături" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:9 msgid "" "B is a graphical utility to create an eD2k link to any file on your " "computer." msgstr "" "B este un utilitar grafic care crează o legătură eD2k la orice fișier " "de pe computerul dumneavoastră." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/wxCas/docs/wxcas.1:16 msgid "This app doesn't take any arguments." msgstr "Această aplicație nu ia nici un argument" #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "ALCC" msgstr "ALCC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "aMule eD2k links calculator" msgstr "Calculator de legături aMule eD2k" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:6 msgid "alcc - text based eD2k links calculator for aMule" msgstr "alcc - calculator link-uri eD2k bazat pe text pentru aMule" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:11 msgid "Iinputfiles_listE>" msgstr "Iinputfiles_listE>" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:16 msgid "" "Compute the eD2k links of all the input files given in the " "Iinputfiles_listE> (There can be one or more files)." msgstr "" "Calculează link_urile eD2k pentru toate fișierele de intrare date în " "Iinputfiles_listE> (Poate fi unul sau mai multe fișiere)." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:19 msgid "Compute and add part hashes to the computed eD2k links." msgstr "Calculează și adaugă indexurile părților la legătura eD2k calculată." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:26 msgid "Be verbose - show also calculation steps." msgstr "Fi detaliat - arată, de asemenea, pașii de calcul." #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "CAS" msgstr "CAS" #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "cas v0.8" msgstr "cas v0.8" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:6 msgid "cas - c aMule statistics" msgstr "cas - c aMule statistici" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:18 msgid "" "B is a program for displaying the contents of your aMule online " "signature file to console (in a human readable form). For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B este un program pentru afișarea conținutului fișierului semnătură " "online al aMule în terminal (într-o formă de citire umană). Pentru ca " "aceasta să lucreze, trebuie să activați opțiunea \"Semnătură online\" în " "preferințele aMule." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:22 msgid "" "Writes the online signature picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "Scrie poza semnăturii online. Puteți adăuga facultativ I<=EPATHE> " "acestei opțiuni, pentru a specifica locația la care ar trebui să fie scrisă." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:26 msgid "" "HTML page with stats and picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "Pagină HTML cu specificări și poze. Puteți adăuga facultativ " "I<=EPATHE> acestei opțiuni, pentru a specifica locația la care ar " "trebui să fie scrisă." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:34 msgid "Without any options, it prints online signature data to stdout." msgstr "Fără nici o opțiune, va tipării data semnăturii online la stdout." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:36 msgid "B was written by Pedro de Oliveira Efalso@rdk.homeip.netE" msgstr "" "B a fost scris de Pedro de Oliveira Efalso@rdk.homeip.netE" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:38 msgid "~/.aMule/casrc" msgstr "~/.aMule/casrc" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:40 msgid "stat.png" msgstr "stat.png" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:42 msgid "tmp.html" msgstr "tmp.html" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "WXCAS" msgstr "WXCAS" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "wxCas" msgstr "wxCas" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:5 msgid "wxcas - wx c aMule statistics" msgstr "wxcas - wx c aMule statistici" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:11 msgid "" "B is a program for displaying the contents of your online signature " "file in a nice wx Window on your Desktop. For this to work, you must enable " "the \"Online Signature\" option in aMule's preferences." msgstr "" "B este un program pentru afișarea conținutul fișierului de semnătură " "online într-o fereastră drăguță wx pe Desktop. Pentru ca aceasta să " "funcționeze, trebuie să activați opțiunea \"Semnătură online\" în " "preferințele aMule." #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:14 msgid "" "Based on Pedro de Oliveira's B(1). B was written by ThePolish " "Ethepolish@vipmail.ruE" msgstr "" "Bazat pe B(1) a lui Pedro de Oliveira. B a fost scris de " "ThePolish Ethepolish@vipmail.ruE" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "XAS" msgstr "XAS" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "xas v1.9" msgstr "xas v1.9" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:5 msgid "xas - X-Chat aMule Statistics" msgstr "xas - X-Chat aMule Statistici" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:7 msgid "B" msgstr "B" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:12 msgid "" "B is a plugin for xchat. For loading see your xchat documentation. " "After loading type /xas and it will send statistics to the channel you are " "in. These are taken from your Online Signature file. For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B este un modul pentru xchat. Pentru încărcare vedeți documentația " "xchat. După încărcare tastați /xas și va trimite statistici la canalul în " "care vă aflați. Acestea sunt luate din fișierul Semnătură online. Pentru a " "funcționa, trebuie să activați opțiunea \"Semnătură online\" în preferințele " "aMule." #. type: Plain text #: ../../src/utils/xas/docs/xas.1:14 msgid "" "To enable it on every startup of xchat you can just run the autstart-xas " "script (in /usr/bin if you installed with --prefix=/usr)." msgstr "" "Pentru a fi activată la fiecare pornirea xchat puteți doar să rulați " "scriptul autstart-xas (în /usr/bin dacă a fost instalat cu --prefix=/usr)." #. type: Plain text #: ../../src/utils/xas/docs/xas.1:16 msgid "B was originally written by niet" msgstr "B a fost scris inițial de niet" amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-ru.add0000644000175000017500000000010612611472361022512 0ustar morphmorphPO4A-HEADER:mode=after;position=^\.TH;beginboundary=^FakePo4aBoundary amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-ru.po0000644000175000017500000016743512611472361022423 0ustar morphmorph# aMule man page russian translation # Copyright (C) 2010 Free Software Foundation, Inc. # This file is distributed under the same license as the aMule package. # radist.morse , 2010. # msgid "" msgstr "" "Project-Id-Version: manpages-ru\n" "POT-Creation-Date: 2011-10-31 22:06+0100\n" "PO-Revision-Date: 2011-04-11 19:02+0100\n" "Last-Translator: Radist Morse \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: RU\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" "X-Poedit-Language: Russian\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-SourceCharset: utf-8\n" #. type: TH #: amule.1:1 #, no-wrap msgid "AMULE" msgstr "AMULE" #. type: TH #: amule.1:1 amulecmd.1:1 amuled.1:1 amulegui.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "November 2011" msgstr "" #. type: TH #: amule.1:1 #, fuzzy, no-wrap #| msgid "aMule v2.3.0" msgid "aMule v2.3.1" msgstr "aMule v2.3.0" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule" msgstr "aMule" #. type: SH #: amule.1:4 amulecmd.1:5 amuled.1:4 amuleweb.1:4 ed2k.1:4 #: ../../src/utils/aLinkCreator/docs/alc.1:3 #: ../../src/utils/aLinkCreator/docs/alcc.1:4 ../../src/utils/cas/docs/cas.1:4 #: ../../src/utils/wxCas/docs/wxcas.1:3 ../../src/utils/xas/docs/xas.1:3 #, no-wrap msgid "NAME" msgstr "ИМЯ" #. type: Plain text #: amule.1:6 msgid "amule - the all-platform eMule p2p client" msgstr "amule - мультиплатформенный p2p клиент eMule" #. type: SH #: amule.1:6 amulecmd.1:7 amuled.1:6 amulegui.1:6 amuleweb.1:6 ed2k.1:6 #: ../../src/utils/aLinkCreator/docs/alc.1:5 #: ../../src/utils/aLinkCreator/docs/alcc.1:6 ../../src/utils/cas/docs/cas.1:6 #: ../../src/utils/wxCas/docs/wxcas.1:5 ../../src/utils/xas/docs/xas.1:5 #, no-wrap msgid "SYNOPSIS" msgstr "ОБЗОР" #. type: Plain text #: amule.1:10 amulegui.1:10 msgid "[B<-c> IpathE>] [B<-geometry> IgeomE>]" msgstr "[B<-c> IпутьE>] [B<-geometry> IгеометрияE>]" #. type: Plain text #: amule.1:13 amuled.1:15 msgid "[B<-w> IpathE>]" msgstr "[B<-w> IпутьE>]" #. type: Plain text #: amule.1:17 amuled.1:19 msgid "[B<-t> InumE>] [I]" msgstr "[B<-t> IномерE>] [I]" #. type: SH #: amule.1:24 amulecmd.1:26 amuled.1:25 amulegui.1:20 amuleweb.1:41 ed2k.1:19 #: ../../src/utils/aLinkCreator/docs/alc.1:7 #: ../../src/utils/aLinkCreator/docs/alcc.1:14 #: ../../src/utils/cas/docs/cas.1:14 ../../src/utils/wxCas/docs/wxcas.1:7 #: ../../src/utils/xas/docs/xas.1:7 #, no-wrap msgid "DESCRIPTION" msgstr "ОПИСАНИЕ" #. type: TP #: amule.1:25 amuled.1:26 amulegui.1:24 ed2k.1:21 #: ../../src/utils/cas/docs/cas.1:26 #, no-wrap msgid "B<[ -c> IpathE>, B<--config-dir>=IpathE> B<]>" msgstr "B<[ -c> IпутьE>, B<--config-dir>=IпутьE> B<]>" #. type: Plain text #: amule.1:28 amuled.1:29 amulegui.1:27 ed2k.1:24 #: ../../src/utils/cas/docs/cas.1:29 msgid "Read config from IpathE> instead of home" msgstr "" "Прочитать конфигурацию из места, указанного в IпутиE>, вместо " "домашнего каталога" #. type: TP #: amule.1:28 amulegui.1:27 #, no-wrap msgid "B<[ -geometry >IgeomE> B<]>" msgstr "B<[ -geometry >IгеометрияE> B<]>" #. type: Plain text #: amule.1:31 amulegui.1:30 msgid "" "Sets the geometry of the app. IgeomE> uses the same format as " "standard X11 apps:\t[B<=>][IwidthE>{B}IheightE>][{B<" "+->}IxoffsetE>{B<+->}IyoffsetE>]" msgstr "" "Указать геометрию окна. IГеометрияE> использует стандартный формат " "X11:\t[B<=>][IширинаE>{B}IвысотаE>][{B<+->}" "IсмещениеXE>{B<+->}IсмещениеYE>]" #. type: Plain text #: amule.1:34 amuled.1:42 amulegui.1:33 msgid "Prints log messages to stdout." msgstr "Печатает сообщения лога в стандартный вывод." #. type: Plain text #: amule.1:37 amuled.1:45 amulegui.1:36 msgid "Resets config to default values." msgstr "Сбрасывает конфигурацию в изначальную." #. type: TP #: amule.1:37 amuled.1:45 #, no-wrap msgid "B<[ -w> IpathE>, B<--use-amuleweb>=IpathE> B<]>" msgstr "B<[ -w> IпутьE>, B<--use-amuleweb>=IпутьE> B<]>" #. type: Plain text #: amule.1:40 amuled.1:48 msgid "Specify location of amuleweb binary to IpathE>." msgstr "Указать IпутьE> к исполняемому файлу amuleweb." #. type: Plain text #: amule.1:43 amuled.1:51 msgid "Does not handle fatal exception." msgstr "Не обрабатывать фатальные исключительные ситуации." #. type: Plain text #: amule.1:46 amuled.1:54 msgid "Does not disable stdin." msgstr "Не отключать стандартный ввод." #. type: TP #: amule.1:46 amuled.1:54 amulegui.1:39 ed2k.1:24 #, no-wrap msgid "B<[ -t>, B<--category>=InumE> B<]>" msgstr "B<[ -t>, B<--category>=IномерE> B<]>" #. type: Plain text #: amule.1:49 amuled.1:57 amulegui.1:42 ed2k.1:27 msgid "Set category for passed eD2k links to InumE>" msgstr "Указать IномерE> категории для eD2k ссылок." #. type: Plain text #: amule.1:52 amulecmd.1:66 amuled.1:60 amulegui.1:48 amuleweb.1:126 ed2k.1:39 msgid "Displays the current version number." msgstr "Выводит информацию о версии." #. type: Plain text #: amule.1:55 amulecmd.1:69 amuled.1:63 amulegui.1:45 amuleweb.1:123 ed2k.1:36 #: ../../src/utils/aLinkCreator/docs/alcc.1:22 #: ../../src/utils/cas/docs/cas.1:32 msgid "Prints a short usage description." msgstr "Выводит короткую помощь по использованию." #. type: TP #: amule.1:55 amuled.1:63 ed2k.1:39 #, no-wrap msgid "B<[ eD2k-link ]>" msgstr "B<[ eD2k-ссылка ]>" #. type: Plain text #: amule.1:58 amuled.1:66 ed2k.1:42 msgid "Adds an eD2k-link to the core." msgstr "Передает eD2k-ссылку в ядро." #. type: Plain text #: amule.1:60 amulecmd.1:75 amuled.1:68 ed2k.1:44 msgid "The eD2k link to be added can be:" msgstr "Добавляемая eD2k-ссылка может быть:" #. type: Plain text #: amule.1:63 amulecmd.1:78 amuled.1:71 ed2k.1:47 msgid "a file link (ed2k://|file|...), it will be added to the download queue;" msgstr "" "файловая ссылка (ed2k://|file|...), она будет добавлена в очередь закачки;" #. type: Plain text #: amule.1:65 amulecmd.1:80 amuled.1:73 ed2k.1:49 msgid "" "a server link (ed2k://|server|...), it will be added to the server list;" msgstr "" "серверная ссылка (ed2k://|server|...), она будет добавлена в список серверов;" #. type: Plain text #: amule.1:67 amuled.1:75 ed2k.1:51 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list;" msgstr "" "ссылка на список серверов, тогда все сервера из списка будут добавлены в " "список серверов;" #. type: Plain text #: amule.1:69 amuled.1:77 msgid "a magnet link." msgstr "magnet-ссылка." #. type: SH #: amule.1:70 amulecmd.1:207 amuleweb.1:132 #, no-wrap msgid "NOTES" msgstr "ЗАМЕЧАНИЯ" #. type: SS #: amule.1:71 amulecmd.1:208 amuleweb.1:133 #, no-wrap msgid "Paths" msgstr "Пути" #. type: Plain text #: amule.1:75 amulecmd.1:212 amuleweb.1:137 msgid "" "For all options which take a IpathE> value, if the I " "contains no directory part (i.e. just a plain filename), then it is " "considered to be under the aMule configuration directory, I<~/.aMule>." msgstr "" "Для всех опций, в которых указывается IпутьE>, если I<путь> не " "содержит каталога (т.е. только имя самого файла), то предполагается, что " "файл находится в каталоге конфигурации, I<~/.aMule>." #. type: SH #: amule.1:75 amulecmd.1:240 amuled.1:78 amuleweb.1:171 ed2k.1:60 #: ../../src/utils/cas/docs/cas.1:36 #, no-wrap msgid "FILES" msgstr "ФАЙЛЫ" #. type: Plain text #: amule.1:77 amuled.1:80 msgid "~/.aMule/*" msgstr "~/.aMule/*" #. type: SH #: amule.1:77 amulecmd.1:256 amuled.1:80 amulegui.1:48 amuleweb.1:191 #: ed2k.1:62 ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/aLinkCreator/docs/alcc.1:26 #: ../../src/utils/cas/docs/cas.1:42 ../../src/utils/wxCas/docs/wxcas.1:16 #: ../../src/utils/xas/docs/xas.1:16 #, no-wrap msgid "REPORTING BUGS" msgstr "СООБЩЕНИЕ ОБ ОШИБКАХ" #. type: Plain text #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 msgid "" "Please report bugs either on our forum (I), or in " "our bugtracker (I). Please do not report bugs in e-" "mail, neither to our mailing list nor directly to any team member." msgstr "" "Пожалуйста, сообщайте об ошибках либо на нашем форуме (I), либо в багтрекере (I). Пожалуйста, не " "сообщайте об ошбках по электронной почте, по нашим спискам рассылки, или " "напрямую участникам." #. type: SH #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 #, no-wrap msgid "COPYRIGHT" msgstr "АВТОРСКИЕ ПРАВА" #. type: Plain text #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 msgid "" "aMule and all of its related utilities are distributed under the GNU General " "Public License." msgstr "" "aMule и все прилагающиеся инструменты распространаются под Открытым " "Лицензионным Соглашением GNU (GNU GPL)." #. type: SH #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 #, no-wrap msgid "SEE ALSO" msgstr "СМ. ТАКЖЕ" #. type: SH #: amule.1:84 amulecmd.1:263 amuled.1:87 amulegui.1:55 amuleweb.1:198 #: ed2k.1:69 ../../src/utils/aLinkCreator/docs/alc.1:18 #: ../../src/utils/aLinkCreator/docs/alcc.1:33 #: ../../src/utils/cas/docs/cas.1:49 ../../src/utils/wxCas/docs/wxcas.1:23 #: ../../src/utils/xas/docs/xas.1:23 #, no-wrap msgid "AUTHOR" msgstr "АВТОРЫ" #. type: Plain text #: amule.1:85 amulecmd.1:264 amuled.1:88 amuleweb.1:199 ed2k.1:70 #: ../../src/utils/aLinkCreator/docs/alc.1:19 #: ../../src/utils/aLinkCreator/docs/alcc.1:34 #: ../../src/utils/cas/docs/cas.1:50 ../../src/utils/wxCas/docs/wxcas.1:24 #: ../../src/utils/xas/docs/xas.1:24 msgid "" "This manpage was written by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Автор страницы помощи: Vollstrecker Eamule@vollstreckernet.deE, " "перевод: Radist Morse Eradist.morse@gmail.comE" #. type: TH #: amulecmd.1:1 #, no-wrap msgid "AMULECMD" msgstr "AMULECMD" #. type: TH #: amulecmd.1:1 #, fuzzy, no-wrap #| msgid "aMuleCmd v2.3.0" msgid "aMuleCmd v2.3.1" msgstr "aMuleCmd v2.3.0" #. type: TH #: amulecmd.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "aMule utilities" msgstr "утилиты aMule" #. type: Plain text #: amulecmd.1:7 msgid "amulecmd - Console-based program to control aMule" msgstr "amulecmd - консольная программа для управления aMule" #. type: Plain text #: amulecmd.1:13 amuleweb.1:12 msgid "" "[B<-h> IhostE>] [B<-p> IportE>] [B<-P> " "IpasswordE>] [B<-f> IpathE>]" msgstr "" "[B<-h> IхостE>] [B<-p> IпортE>] [B<-P> " "IпарольE>] [B<-f> IпутьE>]" #. type: Plain text #: amulecmd.1:17 msgid "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> IcommandE>]" "B< >}" msgstr "" "[B<-l> IязыкE>] {B< >[B<-w>]B< >|B< >[B<-c> IкомандаE>]" "B< >}" #. type: Plain text #: amulecmd.1:20 amuleweb.1:31 msgid "[B<--create-config-from>=IpathE>]" msgstr "[B<--create-config-from>=IпутьE>]" #. type: Plain text #: amulecmd.1:29 msgid "B is a console-based client to control aMule." msgstr "B консольный клиент для управления программой aMule." #. type: TP #: amulecmd.1:29 amuleweb.1:46 #, no-wrap msgid "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" msgstr "B<[ -h> IхостE>, B<--host>=IхостE> B<]>" #. type: Plain text #: amulecmd.1:33 amuleweb.1:50 msgid "" "Host where aMule is running (default: I). IhostE> " "might be an IP address or a DNS name" msgstr "" "Адрес компьютера на котором работает aMule (по умолчанию: I). " "IХостE> может быть IP-адресом или DNS-именем." #. type: TP #: amulecmd.1:33 amuleweb.1:50 #, no-wrap msgid "B<[ -p> IportE>, B<--port>=IportE> B<]>" msgstr "B<[ -p> IпортE>, B<--port>=IпортE> B<]>" #. type: Plain text #: amulecmd.1:36 amuleweb.1:53 msgid "" "aMule's port for External Connections, as set in Preferences-ERemote " "Controls (default: I<4712>)" msgstr "" "Порт, который использует aMule для внешних соединений. Указывается в " "Настройках-EУдаленное управление (по умолчанию: I<4712>)" #. type: TP #: amulecmd.1:36 amuleweb.1:53 #, no-wrap msgid "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" msgstr "B<[ -P> IпарольE>, B<--password>=IпарольE> B<]>" #. type: Plain text #: amulecmd.1:39 amuleweb.1:56 msgid "External Connections password." msgstr "Пароль для внешних соединений." #. type: TP #: amulecmd.1:39 amuleweb.1:56 #, no-wrap msgid "B<[ -f> IpathE>, B<--config-file>=IpathE> B<]>" msgstr "B<[ -f> IпутьE>, B<--config-file>=IпутьE> B<]>" #. type: Plain text #: amulecmd.1:43 amuleweb.1:60 msgid "" "Use the given configuration file. Default configuration file is I<~/.aMule/" "remote.conf>" msgstr "" "Использовать указанный файл конфигурации. По умолчанию используется I<~/." "aMule/remote.conf>" #. type: Plain text #: amulecmd.1:46 amuleweb.1:63 msgid "Do not print any output to stdout." msgstr "Не печетать ничего в стандартный вывод." #. type: Plain text #: amulecmd.1:50 amuleweb.1:67 msgid "Be verbose - show also debug messages." msgstr "Выводить также отладочную информацию." #. type: TP #: amulecmd.1:50 amuleweb.1:67 #, no-wrap msgid "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" msgstr "B<[ -l> IязыкE>, B<--locale>=IязыкE> B<]>" #. type: Plain text #: amulecmd.1:54 amuleweb.1:71 msgid "" "Sets program locale (language). See the B section for the " "description of the IlangE> parameter." msgstr "" "Задать локаль (язык). См. секцию B<ЗАМЕЧАНИЯ> для дополнительной информации " "по параметру IязыкE>." #. type: Plain text #: amulecmd.1:57 amuleweb.1:74 msgid "Write command line options to config file and exit" msgstr "Записать параметр командной строки в файл конфигурации и выйти" #. type: TP #: amulecmd.1:57 #, no-wrap msgid "B<[ -c> IcommandE>, B<--command>=IcommandE> B<]>" msgstr "B<[ -c> IкомандаE>, B<--command>=IкомандаE> B<]>" #. type: Plain text #: amulecmd.1:60 msgid "" "Execute IcommandE> as if it was entered at amulecmd's prompt and " "exit." msgstr "" "Выполнить IкомандуE> как если бы она была введена в консоль " "amulecmd и выйти." #. type: TP #: amulecmd.1:60 amuleweb.1:117 #, no-wrap msgid "B<[ --create-config-from>=IpathE> B<]>" msgstr "B<[ --create-config-from>=IпутьE> B<]>" #. type: Plain text #: amulecmd.1:63 amuleweb.1:120 msgid "" "Create config file based upon IpathE>, which must point to a valid " "aMule config file, and then exit." msgstr "" "Создать файл конфигурации на основе файла указанного в IпутиE> и " "выйти. Указанный файл должен быть валидным файлом конфигурации aMule." #. type: SH #: amulecmd.1:69 #, no-wrap msgid "COMMANDS" msgstr "КОМАНДЫ" #. type: Plain text #: amulecmd.1:71 msgid "All commands are case insensitive." msgstr "Все команды чувствительны к регистру." #. type: SS #: amulecmd.1:71 #, no-wrap msgid "Add IeD2k-linkE> | Imagnet-linkE>" msgstr "Add IeD2k-ссылкаE> | Imagnet-ссылкаE>" #. type: Plain text #: amulecmd.1:73 msgid "Adds an eD2k-link or a magnet-link to the core." msgstr "Добавляет eD2k-ссылку или magnet-ссылку в ядро." #. type: Plain text #: amulecmd.1:82 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list." msgstr "" "ссылка на список серверов, в этом случае все серверы из списка будут " "добавлены в список серверов." #. type: Plain text #: amulecmd.1:85 msgid "The magnet link must contain the eD2k hash and file length." msgstr "Magnet-ссылка должна содержать eD2k-хэш и размер файла." #. type: SS #: amulecmd.1:85 #, no-wrap msgid "Cancel IhashE> | InumberE>" msgstr "Cancel IхэшE> | IномерE>" #. type: Plain text #: amulecmd.1:87 msgid "" "Cancels the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Отменяет закачку указанную по IхэшуE> или IномеруE>. " "Чтобы определить значения, воспользуйтесь командой B." #. type: SS #: amulecmd.1:87 #, no-wrap msgid "Connect [ I | I | Iip|nameE> ]" msgstr "Connect [ I | I | Iip|имяE> ]" #. type: Plain text #: amulecmd.1:89 msgid "Connect to the network." msgstr "Подключиться к сети." #. type: Plain text #: amulecmd.1:91 msgid "This will connect to all networks that are enabled in Preferences." msgstr "Это подсоединит ко всем сетям, включенным в настройках." #. type: Plain text #: amulecmd.1:95 msgid "" "With the optional parameter you can specify which network to connect to. " "Giving a server address in the form of IP:Port (where IP is either a dotted " "decimal IPv4 address or a resolvable DNS name) aMule will connect to that " "server only." msgstr "" "С помощью дополнительного параметра можно указать сеть к которой будет " "произведено подключение. При указании адреса сервера в виде IP:Порт (где IP " "может быть либо цифровым представлением IPv4 либо DNS-именем) aMule " "подключится только к этому серверу." #. type: Plain text #: amulecmd.1:98 msgid "" "Disconnect from all networks you are connected to, or just disconnect from " "the specified network." msgstr "Отсоединяет от всех сетей, или только от указанной сети." #. type: SS #: amulecmd.1:98 #, no-wrap msgid "Download InumberE>" msgstr "Download IномерE>" #. type: Plain text #: amulecmd.1:100 msgid "Start downloading a file." msgstr "Начать закачку файла." #. type: Plain text #: amulecmd.1:104 msgid "" "The InumberE> of a file from the last search has to be given. " "Example: `download 12' will start to download the file with the number 12 of " "the previous search." msgstr "" "Должен быть указан IномерE> файла в последнем поиске. Пример: " "`download 12' поставит на закачку файл, который был под номером 12 в " "последнем поиске." #. type: Plain text #: amulecmd.1:106 msgid "Disconnect from amule/amuled and quit amulecmd." msgstr "Отключится от amule/amuled и выйти из amulecmd." #. type: SS #: amulecmd.1:106 #, no-wrap msgid "Get IwhatE>" msgstr "Get IпараметрE>" #. type: Plain text #: amulecmd.1:108 msgid "Get and display a preference value." msgstr "Вывести параметр настроек." #. type: Plain text #: amulecmd.1:110 amulecmd.1:144 amulecmd.1:173 amulecmd.1:183 msgid "Available values for IwhatE>:" msgstr "Возможные значения поля IпараметрE>:" #. type: Plain text #: amulecmd.1:113 msgid "Get bandwidth limits." msgstr "Вывести ограничения канала." #. type: Plain text #: amulecmd.1:115 msgid "Get IPFilter preferences." msgstr "Вывести настройки IPFilter." #. type: SS #: amulecmd.1:116 #, no-wrap msgid "Help [ IcommandE> ]" msgstr "Help [ IкомандаE> ]" #. type: Plain text #: amulecmd.1:120 msgid "" "Prints a short usage description. If called without parameter, it shows a " "list of available commands. If called with IcommandE>, it shows a " "short description of the given command." msgstr "" "Вывести короткую справку. Если вызвана без параметров, выводит список " "возможных команд. Если вызвана с параметром IкомандаE>, показывает " "справку по данной команде." #. type: SS #: amulecmd.1:120 #, no-wrap msgid "Pause IhashE> | InumberE>" msgstr "Pause IхэшE> | IномерE>" #. type: Plain text #: amulecmd.1:122 msgid "" "Pauses the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Ставит на паузу закачку указанную по IхэшуE> или " "IномеруE>. Чтобы определить значения, воспользуйтесь командой " "B." #. type: SS #: amulecmd.1:122 #, no-wrap msgid "Priority IpriorityE> IhashE> | InumberE>" msgstr "Priority IприоритетE> IхэшE> | IномерE>" #. type: Plain text #: amulecmd.1:124 msgid "" "Set priority of a download specified by IhashE> or " "InumberE>." msgstr "" "Указывает приоритет закачки указанной по IхэшуE> или " "IномеруE>" #. type: Plain text #: amulecmd.1:126 msgid "Available values for IpriorityE>:" msgstr "Возможные значения IприоритетаE>:" #. type: Plain text #: amulecmd.1:129 msgid "Automatic priority." msgstr "Автоматический приоритет." #. type: Plain text #: amulecmd.1:131 msgid "High priority." msgstr "Высокий приоритет." #. type: Plain text #: amulecmd.1:133 msgid "Low priority." msgstr "Низкий приоритет." #. type: Plain text #: amulecmd.1:135 msgid "Normal priority." msgstr "Нормальный приоритет." #. type: Plain text #: amulecmd.1:138 msgid "Shows the progress of an on-going search." msgstr "Показывает состояние работающего поиска." #. type: Plain text #: amulecmd.1:140 msgid "A synonim of the B command." msgstr "То же что и B." #. type: SS #: amulecmd.1:140 #, no-wrap msgid "Reload IwhatE>" msgstr "Reload IобъектE>" #. type: Plain text #: amulecmd.1:142 msgid "Reloads a given object." msgstr "Обновляет указанный объект." #. type: Plain text #: amulecmd.1:147 msgid "Reload shared files list." msgstr "Обновляет список публикуемых файлов." #. type: Plain text #: amulecmd.1:149 msgid "Reload IP filter tables." msgstr "Обновляет таблицы IP фильтра." #. type: Plain text #: amulecmd.1:152 msgid "Reset the log." msgstr "Обнуляет лог." #. type: Plain text #: amulecmd.1:154 msgid "Shows you the results of the last search." msgstr "Выводит результат последнего поиска." #. type: SS #: amulecmd.1:154 #, no-wrap msgid "Resume IhashE> | InumberE>" msgstr "Resume IхэшE> | IномерE>" #. type: Plain text #: amulecmd.1:156 msgid "" "Resumes the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "Возобновляет закачку указанную по IхэшуE> или IномеруE>. " "Чтобы определить значения, воспользуйтесь командой B." #. type: SS #: amulecmd.1:156 #, no-wrap msgid "Search ItypeE> IkeywordE>" msgstr "Search IтипE> IсловоE>" #. type: Plain text #: amulecmd.1:159 msgid "" "Makes a search for the given IkeywordE>. A search type and a " "keyword to search is mandatory to do this. Example: `search kad amule' " "performs a kad search for `amule'." msgstr "" "Производит поиск по указанному IсловуE>. Указание типа и слова " "обязательны. Пример: `search kad amule' производит поиск по kad по слову " "`amule'." #. type: Plain text #: amulecmd.1:161 msgid "Available search types:" msgstr "Возможные типы поиска:" #. type: Plain text #: amulecmd.1:164 msgid "Performs a global search." msgstr "Глобальный поиск." #. type: Plain text #: amulecmd.1:166 msgid "Performs a search on the Kademlia network." msgstr "Поиск по сети kademlia." #. type: Plain text #: amulecmd.1:168 msgid "Performs a local search." msgstr "Локальный поиск." #. type: SS #: amulecmd.1:169 #, no-wrap msgid "Set IwhatE>" msgstr "Set IпараметрE>" #. type: Plain text #: amulecmd.1:171 msgid "Sets a given preferences value." msgstr "Задает указанный параметр." #. type: Plain text #: amulecmd.1:176 msgid "Set bandwidth limits." msgstr "Задает ограничения канала." #. type: Plain text #: amulecmd.1:178 msgid "Set IPFilter preferences." msgstr "Задает параметры IPFilter." #. type: SS #: amulecmd.1:179 #, no-wrap msgid "Show IwhatE>" msgstr "Show IэлементE>" #. type: Plain text #: amulecmd.1:181 msgid "Shows upload/download queue, servers list or shared files list." msgstr "" "Выводит очередь закачки/отдачи, список серверов или опубликованные файлы." #. type: Plain text #: amulecmd.1:186 msgid "Show download queue." msgstr "Выводит очередь закачки." #. type: Plain text #: amulecmd.1:188 msgid "Show log." msgstr "Выводит лог." #. type: Plain text #: amulecmd.1:190 msgid "Show servers list." msgstr "Выводит список серверов." #. type: Plain text #: amulecmd.1:192 msgid "Show upload queue." msgstr "Выводит список отдачи." #. type: Plain text #: amulecmd.1:196 msgid "" "Shutdown the remote running core (amule/amuled). This will also shut down " "the text client, since it is unusable without a running core." msgstr "" "Завершает работу ядра (amule/amuled). Так же завершает работу amulecmd, т.к. " "он бесполезен без работающего ядра." #. type: SS #: amulecmd.1:196 #, no-wrap msgid "Statistics [ InumberE> ]" msgstr "Statistics [ IчислоE> ]" #. type: Plain text #: amulecmd.1:198 msgid "Show statistics tree." msgstr "Выводит дерево статистики." #. type: Plain text #: amulecmd.1:202 msgid "" "The optional InumberE> in the range of 0-255 can be passed as " "argument to this command, which tells how many entries of the client version " "subtree should be shown. Passing 0, or omitting it means `unlimited'." msgstr "" "Параметр IчислоE> может быть в промежутке 0-255, и будет " "показывать сколько элементов показывать в под-дереве `версия клиента'. " "Указание 0 или пропуск означает `неограниченно'." #. type: Plain text #: amulecmd.1:205 msgid "" "Example: `statistics 5' will show only the top 5 versions for each client " "type." msgstr "" "Пример: `statistics 5' покажет только 5 наиболее популярных версий для " "каждого типа клиента." #. type: Plain text #: amulecmd.1:207 msgid "Show connection status, current up/download speeds, etc." msgstr "Вывести статус соединения, скорости, итд." #. type: SS #: amulecmd.1:212 amuleweb.1:137 #, no-wrap msgid "Languages" msgstr "Языки" #. type: Plain text #: amulecmd.1:218 amuleweb.1:143 msgid "" "The IlangE> parameter for the B<-l> option has the following form: " "I[B<_>I][B<.>I][B<@>I] where I is the " "primary language, I is a sublanguage/territory, I is the " "character set to use and I allows the user to select a specific " "instance of localization data within a single category." msgstr "" "Параметр IязыкE> для опции B<-l> имеет следующую форму: I<язык>" "[B<_>I<ЯЗЫК>][B<.>I<кодировка>][B<@>I<модификатор>], где I<язык> является " "основным языком, I<ЯЗЫК> - диалект/территория, I<кодировка> - используемая " "кодировка символов и I<модификатор> позволяет пользователю использовать " "определенный вариант локализации в данной категории." #. type: Plain text #: amulecmd.1:220 amuleweb.1:145 msgid "For example, the following strings are valid:" msgstr "К примеру, все следующие строчки являются приемлемыми:" #. type: Plain text #: amulecmd.1:234 amuleweb.1:159 msgid "" "Though all the above strings are accepted as valid language definitions, " "I and I are yet unused." msgstr "" "Хотя все приведенный строки будут приняты, поля I<кодировка> и " "I<модификатор> пока не используются." #. type: Plain text #: amulecmd.1:237 amuleweb.1:162 msgid "" "In addition to the format above, you can also specify full language names in " "English - so B<-l german> is also valid and is equal to B<-l de_DE>." msgstr "" "К дополнению к приведенному формату, можно просто указать английское имя " "языка. Так, B<-l russian> тоже приемлемо и равносильно B<-l ru_RU>." #. type: Plain text #: amulecmd.1:240 amuleweb.1:165 msgid "" "When no locale is defined, either on command-line or in config file, system " "default language will be used." msgstr "" "Когда язык не указан ни в качестве опции ни в файле конфигурации, " "используется системный." #. type: Plain text #: amulecmd.1:242 amuleweb.1:173 msgid "~/.aMule/remote.conf" msgstr "~/.aMule/remote.conf" #. type: SH #: amulecmd.1:242 amuleweb.1:177 #, no-wrap msgid "EXAMPLE" msgstr "ПРИМЕРЫ" #. type: Plain text #: amulecmd.1:244 msgid "Typically amulecmd will be first run as:" msgstr "Как правило, в первый раз amulecmd запускается так:" #. type: Plain text #: amulecmd.1:246 msgid "B B<-h> I B<-p> I B<-P> I B<-w>" msgstr "" "B B<-h> I<имя_хоста> B<-p> I B<-P> I B<-w>" #. type: Plain text #: amulecmd.1:248 amuleweb.1:183 msgid "or" msgstr "или" #. type: Plain text #: amulecmd.1:250 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" #. type: Plain text #: amulecmd.1:252 amuleweb.1:187 msgid "" "These will save settings to I<$HOME/.aMule/remote.conf>, and later you only " "need to type:" msgstr "" "Это сохранит параметры в I<$HOME/.aMule/remote.conf>, и в дальнейшем надо " "будет только набрать:" #. type: Plain text #: amulecmd.1:256 msgid "Of course, you don't have to follow this example." msgstr "Конечно, вы не обязаны следовать этим рекомендациям." #. type: TH #: amuled.1:1 #, no-wrap msgid "AMULED" msgstr "AMULED" #. type: TH #: amuled.1:1 #, fuzzy, no-wrap #| msgid "aMule Daemon v2.3.0" msgid "aMule Daemon v2.3.1" msgstr "Демон aMule v2.3.0" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon" msgstr "Демон aMule" #. type: Plain text #: amuled.1:6 msgid "amuled - the all-platform eMule p2p client - daemonized version" msgstr "" "amuled - мультиплатформенный p2p клиент eMule - демонизированная версия" #. type: Plain text #: amuled.1:9 ../../src/utils/cas/docs/cas.1:11 msgid "[B<-c> IpathE>]" msgstr "[B<-c> IпутьE>]" #. type: Plain text #: amuled.1:11 msgid "[B<-p> IpathE>]" msgstr "[B<-p> IпутьE>]" #. type: Plain text #: amuled.1:32 msgid "Forks to background." msgstr "Уйти в фоновый режим" #. type: TP #: amuled.1:32 #, no-wrap msgid "B<[ -p> IpathE>, B<--pid-file>=IpathE> B<]>" msgstr "B<[ -p> IпутьE>, B<--pid-file>=IпутьE> B<]>" #. type: Plain text #: amuled.1:36 msgid "" "After fork, create a pid-file in the IpathE>. IpathE> " "has to contain the filename." msgstr "" "После запуска создать pid-файл по указанному IпутиE>. " "IПутьE> должен указывать на файл." #. type: Plain text #: amuled.1:39 msgid "Configure EC (External Connections)." msgstr "Сконфигурировать EC (внешние соединения)." #. type: TH #: amulegui.1:1 #, no-wrap msgid "AMULEGUI" msgstr "AMULEGUI" #. type: TH #: amulegui.1:1 #, fuzzy, no-wrap #| msgid "aMuleGUI v2.3.0" msgid "aMuleGUI v2.3.1" msgstr "aMuleGUI v2.3.0" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI" msgstr "aMuleGUI" #. type: Plain text #: amulegui.1:6 msgid "amulegui - aMule control program with GUI" msgstr "amulegui - программа управления aMule с GUI" #. type: Plain text #: amulegui.1:14 msgid "[B<-t> InumE>]" msgstr "[B<-t> IномерE>]" #. type: Plain text #: amulegui.1:24 msgid "" "B is a client program, and can be connected to amule or amuled via " "EC. You can manage your amule program with it. It provides almost the same " "functionalities as amule, even if the core works on another computer." msgstr "" "Программа B позволяет управлять ядром (amule/amuled) по протоколу " "EC. Программа предоставляет функциональность почти идентичную amule, " "несмотря на то что ядро может работать на другом компьютере." #. type: Plain text #: amulegui.1:39 msgid "Skip connection dialog." msgstr "Пропустить диалог соединения." #. type: Plain text #: amulegui.1:57 msgid "" "This manpage was written by Julien Delange for Debian Ejulien AT gunnm " "DOT orgE" msgstr "" "Автор страницы помощи (для Debian): Julien Delange Ejulien AT gunnm DOT " "orgE" #. type: Plain text #: amulegui.1:58 msgid "" "This manpage was rewritten by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Переработка страницы помощи: Vollstrecker Eamule@vollstreckernet." "deE, перевод: Radist Morse Eradist.morse@gmail.comE" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "AMULEWEB" msgstr "AMULEWEB" #. type: TH #: amuleweb.1:1 #, fuzzy, no-wrap #| msgid "aMule webserver v2.3.0" msgid "aMule webserver v2.3.1" msgstr "Вебсервер aMule v2.3.0" #. type: Plain text #: amuleweb.1:6 msgid "amuleweb - aMule web server" msgstr "amuleweb - вебсервер aMule" #. type: Plain text #: amuleweb.1:15 msgid "[B<-l> IlangE>]" msgstr "[B<-l> IязыкE>]" #. type: Plain text #: amuleweb.1:18 msgid "[B<-t> InameE>] [B<-s> IportE>]" msgstr "[B<-t> IимяE>] [B<-s> IпортE>]" #. type: Plain text #: amuleweb.1:20 msgid "[B<-U> IportE>]" msgstr "[B<-U> IпортE>]" #. type: Plain text #: amuleweb.1:24 msgid "[B<-A> IpasswordE>] [B<-G> IpasswordE>]" msgstr "[B<-A> IпарольE>] [B<-G> IпарольE>]" #. type: Plain text #: amuleweb.1:40 msgid "[B<--amule-config-file>=IpathE>]" msgstr "[B<--amule-config-file>=IпутьE>]" #. type: Plain text #: amuleweb.1:46 msgid "" "B manages your access to amule through a web browser. You can " "start amuleweb together with B(1), or separately, any time later. " "Options can be specified via command-line or via config-file. Command-line " "options take precedence over config-file options." msgstr "" "B организует доступ к amule через веб браузер. Вы можете запустить " "amuleweb вместе с B(1), или отдельно позже. Настройки могут быть " "определены с помощью командной строки или файла конфигурации. Опции " "командной строки являются приоритетными по отношению к файлу конфигурации." #. type: TP #: amuleweb.1:74 #, no-wrap msgid "B<[ -t> InameE>, B<--template>=InameE> B<]>" msgstr "B<[ -t> IимяE>, B<--template>=IимяE> B<]>" #. type: Plain text #: amuleweb.1:77 msgid "" "Loads the template named InameE>. See the B section " "for details." msgstr "" "Устанавливает шаблон с указанным IименемE>. Подробности в секции " "B<ПОДДЕРЖКА СКИНОВ>." #. type: TP #: amuleweb.1:77 #, no-wrap msgid "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" msgstr "B<[ -s> IпортE>, B<--server-port>=IпортE> B<]>" #. type: Plain text #: amuleweb.1:80 msgid "" "Webserver's HTTP port. This is the port you must point your browser to " "(default: I<4711>)." msgstr "" "HTTP порт вебсервера. Этот порт должен быть указан в строке адреса браузера " "(по умолчанию: I<4711>)." #. type: Plain text #: amuleweb.1:84 msgid "Enable UPnP." msgstr "Включить UPnP." #. type: TP #: amuleweb.1:84 #, no-wrap msgid "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" msgstr "B<[ -U> IпортE>, B<--upnp-port> IпортE> B<]>" #. type: Plain text #: amuleweb.1:87 msgid "UPnP port." msgstr "Порт UPnP." #. type: Plain text #: amuleweb.1:90 msgid "Enables using gzip compression in HTTP traffic to save bandwidth." msgstr "Включает использование gzip-сжатия HTTP данных для уменьшения трафика." #. type: Plain text #: amuleweb.1:93 msgid "Disables using gzip compression (this is the default)." msgstr "Отключает использование gzip-сжатия (вариант по умолчанию)." #. type: TP #: amuleweb.1:93 #, no-wrap msgid "B<[ -A> IpasswdE>, B<--admin-pass>=IpasswdE> B<]>" msgstr "B<[ -A> IпарольE>, B<--admin-pass>=IпарольE> B<]>" #. type: Plain text #: amuleweb.1:96 msgid "Full access password for webserver." msgstr "Пароль для полного доступа к вебсерверу." #. type: TP #: amuleweb.1:96 #, no-wrap msgid "B<[ -G> IpasswdE>, B<--guest-pass>=IpasswdE> B<]>" msgstr "B<[ -G> IпарольE>, B<--guest-pass>=IпарольE> B<]>" #. type: Plain text #: amuleweb.1:99 msgid "Guest password for webserver." msgstr "Пароль для гостевого доступа к вебсерверу." #. type: Plain text #: amuleweb.1:102 msgid "Allows guest access." msgstr "Разрешить гостевой доступ." #. type: Plain text #: amuleweb.1:105 msgid "Denies guest access (default)." msgstr "Запретить гостевой доступ (вариант по умолчанию)." #. type: Plain text #: amuleweb.1:111 msgid "" "Load/save webserver settings from/to remote aMule. This causes amuleweb to " "ignore command-line and config-file settings, and load them from aMule. " "When saving preferences none will be written to the config file, but to " "aMule. (Of course, this works only for those settings that can be set in " "aMule's Preferences-ERemote Controls.)" msgstr "" "Загрузить/сохранить настройки вебсервера из/в удаленный aMule. Это приводит " "к игнорированию параметров командной строки и конфигурационного файла, и " "загрузки их из aMule. При сохранении настроек они будут писаться не в файл " "конфигурации, а в aMule. (Конечно, работает только для настроек которые " "могут быть заданы через меню Настройки-EУдаленный контроль)" #. type: Plain text #: amuleweb.1:114 msgid "Disable PHP interpreter (deprecated)" msgstr "Отключить интерпретатор PHP (устарело)" #. type: Plain text #: amuleweb.1:117 msgid "Recompiles PHP pages on each request." msgstr "Перекомпилирует страницы PHP при каждом обращении." #. type: TP #: amuleweb.1:126 #, no-wrap msgid "B<[ --amule-config-file>=IpathE> B<]>" msgstr "B<[ --amule-config-file>=IпутьE> B<]>" #. type: Plain text #: amuleweb.1:132 msgid "" "aMule config file path. B aMule uses this option when " "starting amuleweb at aMule startup. This option causes all other command-" "line and config-file settings to be ignored, preferences to be read from the " "given config file, and also implies the B<-q -L> options." msgstr "" "Путь к файлу конфигурации aMule. B<НЕ ИСПОЛЬЗУЙТЕ НАПРЯМУЮ!> aMule " "использует данную опцию для запуска amuleweb вместе с amule. Эта опция " "приводит к игнорированию параметров командной строки и конфигурационного " "файла, настройки читаются из заданного файла. Также подразумеваются опции B<-" "q -L>." #. type: SH #: amuleweb.1:165 #, no-wrap msgid "SKIN SUPPORT" msgstr "ПОДДЕРЖКА СКИНОВ" #. type: Plain text #: amuleweb.1:169 msgid "" "B is capable of displaying information in different skins. These " "skins are called templates, and you can make amuleweb load a specific " "template via the B<-t> command line option. Templates are searched in two " "places: first in I<~/.aMule/webserver/> and then in I if you installed with --prefix=/usr." msgstr "" "B имеет возможность отображать информацию с разными скинами. Эти " "скины называются шаблонами, и вы можете переключить amuleweb на определенный " "шаблон использую опцию B<-t> командной строки. Шаблоны ищутся в двух местах: " "первое I<~/.aMule/webserver/>, затем I, если " "инсталяция была проведена с --prefix=/usr." #. type: Plain text #: amuleweb.1:171 msgid "" "Each template must be in a subdirectory of the template name, and this " "directory must contain all files the template needs." msgstr "" "Каждый шаблон должен являться каталогом с именем шаблона, и все необходимые " "файлы должны находится внутри этого каталога." #. type: Plain text #: amuleweb.1:175 msgid "~/.aMule/webserver/" msgstr "~/.aMule/webserver/" #. type: Plain text #: amuleweb.1:177 msgid "I<$(pkgdatadir)>/webserver/" msgstr "I<$(pkgdatadir)>/webserver/" #. type: Plain text #: amuleweb.1:179 msgid "Typically amuleweb will be first run as:" msgstr "Как правило, в первый раз amuleweb запускается так:" #. type: Plain text #: amuleweb.1:181 msgid "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" msgstr "" "B B<-h> I<имя_хоста> B<-p> I B<-P> I B<-s> " "I B<-A> I<пароль_полного_доступа> B<-w>" #. type: Plain text #: amuleweb.1:185 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" #. type: Plain text #: amuleweb.1:191 msgid "" "Of course, you may specify any more or less options on the first example " "line, and you may also totally omit it." msgstr "" "Конечно, вы можете указать иное количество аргументов в первой строке " "примера, или не использовать ее вообще." #. type: TH #: ed2k.1:1 #, no-wrap msgid "ED2K" msgstr "ED2K" #. type: TH #: ed2k.1:1 #, no-wrap msgid "aMule eD2k link parser v1.5.1" msgstr "aMule парсер ссылок eD2k v1.5.1" #. type: Plain text #: ed2k.1:6 msgid "ed2k - aMule eD2k link parser" msgstr "ed2k - aMule парсер ссылок eD2k" #. type: Plain text #: ed2k.1:10 msgid "[B<-c> IpathE>] [B<-t> InumE>]" msgstr "[B<-c> IпутьE>] [B<-t> IчислоE>]" #. type: Plain text #: ed2k.1:13 msgid "IeD2k-linkE>" msgstr "IeD2k-ссылкаE>" #. type: Plain text #: ed2k.1:21 msgid "" "Sends the given IeD2k-linkE> to aMule, i.e. writes it to the file " "~/.aMule/ED2KLinks, which will be checked by aMule every second for links." msgstr "" "Пысылает указанную IeD2k-ссылкуE> в aMule, т.е. пишет ее в файл ~/." "aMule/ED2KLinks, который проверяется каждую секунду." #. type: Plain text #: ed2k.1:30 msgid "" "Loads all link found in the emulecollection given as Ied2k-linkE>" msgstr "Загружает все ссылки из emulecollection как Ied2k-ссылкиE>" #. type: Plain text #: ed2k.1:33 msgid "" "Lists all link found in the emulecollection given as Ied2k-linkE>" msgstr "Перечисляет все ссылки из emulecollection как Ied2k-ссылкиE>" #. type: Plain text #: ed2k.1:53 msgid "a magnet link;" msgstr "magnet-ссылка;" #. type: Plain text #: ed2k.1:55 msgid "an emulecollection file." msgstr "файл emulecollection." #. type: Plain text #: ed2k.1:60 msgid "" "B You can give " "more than one link, and every link can have it's own params. For example " "Blink1E -t2 Elink2E> will download Ilink1E> " "in standard category and Ilink2E> in category 2." msgstr "" "B<Порядок параметров важен.> Вы можете указать более одной ссылки, и каждая " "ссылка может иметь свои собственные параметры. Например Bссылка1E -t2 Eссылка2E> загрузит Iссылку1E> в " "стандартную категорию и Iссылку2E> в категорию 2." #. type: Plain text #: ed2k.1:62 msgid "~/.aMule/ED2KLinks" msgstr "~/.aMule/ED2KLinks" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "ALC" msgstr "ALC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "aLinkCreator" msgstr "aLinkCreator" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:5 msgid "aLinkCreator - the aMule eD2k link creator" msgstr "aLinkCreator - создатель eD2k-ссылок aMule" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:9 msgid "" "B is a graphical utility to create an eD2k link to any file on your " "computer." msgstr "" "B - графическая утилита, которая создает eD2k-ссылку для любого файла " "на вашем компьютере." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/wxCas/docs/wxcas.1:16 msgid "This app doesn't take any arguments." msgstr "Утилита не принимает параметров." #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "ALCC" msgstr "ALCC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "aMule eD2k links calculator" msgstr "aMule калькулятор eD2k-ссылок" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:6 msgid "alcc - text based eD2k links calculator for aMule" msgstr "alcc - текстовый калькулятор eD2k-ссылок для aMule" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:11 msgid "Iinputfiles_listE>" msgstr "Iсписок_файловE>" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:16 msgid "" "Compute the eD2k links of all the input files given in the " "Iinputfiles_listE> (There can be one or more files)." msgstr "" "Вычисляет eD2k-ссылки для всех файлов указанных в Iсписке_файловE> " "(Может быть один или более файлов)." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:19 msgid "Compute and add part hashes to the computed eD2k links." msgstr "Вычисляет и добавляет частичные хэши к вычисленным eD2k-ссылкам." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:26 msgid "Be verbose - show also calculation steps." msgstr "Показать подробности - показывает также шаги вычислений." #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "CAS" msgstr "CAS" #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "cas v0.8" msgstr "cas v0.8" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:6 msgid "cas - c aMule statistics" msgstr "cas - c-статистика aMule" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:18 msgid "" "B is a program for displaying the contents of your aMule online " "signature file to console (in a human readable form). For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B - программа для отображения содержимого файла вашей онлайн-подписи " "aMule на консоль (в читаемой форме). Чтобы это работало, вы должны включить " "опцию \"Онлайн подпись\" в настройках aMule." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:22 msgid "" "Writes the online signature picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "Записывает картинку с онлайн-подписью. Вы можете дополнительно указать " "I<=EПУТЬE>, куда она будет сохранена." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:26 msgid "" "HTML page with stats and picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "HTML страница со статистикой и картинкой. Вы можете дополнительно указать " "I<=EПУТЬE>, куда она будет сохранена." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:34 msgid "Without any options, it prints online signature data to stdout." msgstr "Без опций программа выведет данные о подписи в стандартный вывод." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:36 msgid "B was written by Pedro de Oliveira Efalso@rdk.homeip.netE" msgstr "B был написан Pedro de Oliveira Efalso@rdk.homeip.netE" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:38 msgid "~/.aMule/casrc" msgstr "~/.aMule/casrc" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:40 msgid "stat.png" msgstr "stat.png" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:42 msgid "tmp.html" msgstr "tmp.html" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "WXCAS" msgstr "WXCAS" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "wxCas" msgstr "wxCas" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:5 msgid "wxcas - wx c aMule statistics" msgstr "wxcas - wx c-статистика aMule" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:11 msgid "" "B is a program for displaying the contents of your online signature " "file in a nice wx Window on your Desktop. For this to work, you must enable " "the \"Online Signature\" option in aMule's preferences." msgstr "" "B - программа для отображения содержимого файла вашей онлайн-подписи " "aMule в приятном wx Window окне на вашем рабочем столе. Чтобы это работало, " "вы должны включить опцию \"Онлайн подпись\" в настройках aMule." #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:14 msgid "" "Based on Pedro de Oliveira's B(1). B was written by ThePolish " "Ethepolish@vipmail.ruE" msgstr "" "Основана на программе B(1) написанной Pedro de Oliveira. B была " "написана ThePolish Ethepolish@vipmail.ruE" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "XAS" msgstr "XAS" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "xas v1.9" msgstr "xas v1.9" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:5 msgid "xas - X-Chat aMule Statistics" msgstr "xas - X-Chat статистика aMule" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:7 msgid "B" msgstr "B<нет>" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:12 msgid "" "B is a plugin for xchat. For loading see your xchat documentation. " "After loading type /xas and it will send statistics to the channel you are " "in. These are taken from your Online Signature file. For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B - это плагин для xchat. Для установки смотрите вашу документацию по " "xchat. После загрузки наберите /xas и он пошлет вашу статистику в канал на " "котором вы находитесь. Статистика берется из файла онлайн-подписи. Чтобы это " "работало, вы должны включить опцию \"Онлайн подпись\" в настройках aMule." #. type: Plain text #: ../../src/utils/xas/docs/xas.1:14 msgid "" "To enable it on every startup of xchat you can just run the autstart-xas " "script (in /usr/bin if you installed with --prefix=/usr)." msgstr "" "Чтобы включать его при каждом запуске xchat вы можете просто выполнить " "скрипт autstart-xas (в папке /usr/bin если вы установили с --prefix=/usr)." #. type: Plain text #: ../../src/utils/xas/docs/xas.1:16 msgid "B was originally written by niet" msgstr "B изначально был написан niet" #~ msgid "January 2010" #~ msgstr "Январь 2010" #~ msgid "" #~ "When giving ed2k as parameter, it connects only to eD2k-network, to " #~ "servers in your serverlist. You may also optionally specify a server " #~ "address in IP:Port form, to connect to that server only. The IP must be a " #~ "dotted decimal IPv4 address, or a resolvable DNS name." #~ msgstr "" #~ "Когда в качестве параметра указывается ed2k, подключается только eD2k-" #~ "сеть к серверу из вашего списка. Адрес сервер может также быть указан " #~ "отдельно в формате адрес:порт. Адрес должен быть указан в десятичном " #~ "формате IPv4 или как DNS-имя." #~ msgid "When giving kad, it connects to Kad only." #~ msgstr "Когда указывается kad, подключение идет только к сети Kad." amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-tr.add0000644000175000017500000000010612611472361022511 0ustar morphmorphPO4A-HEADER:mode=after;position=^\.TH;beginboundary=^FakePo4aBoundary amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-tr.po0000644000175000017500000014761212611472361022415 0ustar morphmorph# Turkish translations for aMule package # This file is distributed under the same license as the aMule package. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "POT-Creation-Date: 2011-10-31 22:06+0100\n" "PO-Revision-Date: 2012-03-23 10:36+0100\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr\n" "X-Poedit-Language: Turkish\n" "X-Poedit-Country: TURKEY\n" "Plural-Forms: nplurals=1; plural=0\n" #. type: TH #: amule.1:1 #, no-wrap msgid "AMULE" msgstr "AMULE" #. type: TH #: amule.1:1 amulecmd.1:1 amuled.1:1 amulegui.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "November 2011" msgstr "Kasım 2011" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule v2.3.1" msgstr "aMule v2.3.1" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule" msgstr "aMule" #. type: SH #: amule.1:4 amulecmd.1:5 amuled.1:4 amuleweb.1:4 ed2k.1:4 #: ../../src/utils/aLinkCreator/docs/alc.1:3 #: ../../src/utils/aLinkCreator/docs/alcc.1:4 ../../src/utils/cas/docs/cas.1:4 #: ../../src/utils/wxCas/docs/wxcas.1:3 ../../src/utils/xas/docs/xas.1:3 #, no-wrap msgid "NAME" msgstr "İSİM" #. type: Plain text #: amule.1:6 msgid "amule - the all-platform eMule p2p client" msgstr "amule - her platformda çalışan eMule p2p istemcisi" #. type: SH #: amule.1:6 amulecmd.1:7 amuled.1:6 amulegui.1:6 amuleweb.1:6 ed2k.1:6 #: ../../src/utils/aLinkCreator/docs/alc.1:5 #: ../../src/utils/aLinkCreator/docs/alcc.1:6 ../../src/utils/cas/docs/cas.1:6 #: ../../src/utils/wxCas/docs/wxcas.1:5 ../../src/utils/xas/docs/xas.1:5 #, no-wrap msgid "SYNOPSIS" msgstr "KULLANIM" #. type: Plain text #: amule.1:10 amulegui.1:10 msgid "[B<-c> IpathE>] [B<-geometry> IgeomE>]" msgstr "[B<-c> IyolE>] [B<-geometry> IgeomE>]" #. type: Plain text #: amule.1:13 amuled.1:15 msgid "[B<-w> IpathE>]" msgstr "[B<-w> IyolE>]" #. type: Plain text #: amule.1:17 amuled.1:19 msgid "[B<-t> InumE>] [I]" msgstr "[B<-t> IsayıE>] [I]" #. type: SH #: amule.1:24 amulecmd.1:26 amuled.1:25 amulegui.1:20 amuleweb.1:41 ed2k.1:19 #: ../../src/utils/aLinkCreator/docs/alc.1:7 #: ../../src/utils/aLinkCreator/docs/alcc.1:14 #: ../../src/utils/cas/docs/cas.1:14 ../../src/utils/wxCas/docs/wxcas.1:7 #: ../../src/utils/xas/docs/xas.1:7 #, no-wrap msgid "DESCRIPTION" msgstr "AÇIKLAMA" #. type: TP #: amule.1:25 amuled.1:26 amulegui.1:24 ed2k.1:21 #: ../../src/utils/cas/docs/cas.1:26 #, no-wrap msgid "B<[ -c> IpathE>, B<--config-dir>=IpathE> B<]>" msgstr "B<[ -c> IyolE>, B<--config-dir>=IyolE> B<]>" #. type: Plain text #: amule.1:28 amuled.1:29 amulegui.1:27 ed2k.1:24 #: ../../src/utils/cas/docs/cas.1:29 msgid "Read config from IpathE> instead of home" msgstr "Yapılandırmayı home yerine IyolE>dan oku" #. type: TP #: amule.1:28 amulegui.1:27 #, no-wrap msgid "B<[ -geometry >IgeomE> B<]>" msgstr "B<[ -geometry >IgeomE> B<]>" #. type: Plain text #: amule.1:31 amulegui.1:30 msgid "" "Sets the geometry of the app. IgeomE> uses the same format as " "standard X11 apps:\t[B<=>][IwidthE>{B}IheightE>][{B<" "+->}IxoffsetE>{B<+->}IyoffsetE>]" msgstr "" "Uygulamanın geometrisini düzenler. IgeomE> standart X11 " "uygulamaları ile aynı biçimi kullanır:\t[B<=>][IgenişlikE>{B}" "IyükseklikE>][{B<+->}IxoffsetE>{B<+->}" "IyoffsetE>]" #. type: Plain text #: amule.1:34 amuled.1:42 amulegui.1:33 msgid "Prints log messages to stdout." msgstr "Log mesajlarını standart çıktıya gönderir." #. type: Plain text #: amule.1:37 amuled.1:45 amulegui.1:36 msgid "Resets config to default values." msgstr "Yapılandırmayı varsayılan değerlere sıfırlar." #. type: TP #: amule.1:37 amuled.1:45 #, no-wrap msgid "B<[ -w> IpathE>, B<--use-amuleweb>=IpathE> B<]>" msgstr "B<[ -w> IyolE>, B<--use-amuleweb>=IyolE> B<]>" #. type: Plain text #: amule.1:40 amuled.1:48 msgid "Specify location of amuleweb binary to IpathE>." msgstr "" "amuleweb çalıştırılabilir dosyasının konumunu IyolE> olarak " "belirler." #. type: Plain text #: amule.1:43 amuled.1:51 msgid "Does not handle fatal exception." msgstr "Kritik istisnaları ele almaz." #. type: Plain text #: amule.1:46 amuled.1:54 msgid "Does not disable stdin." msgstr "standart girdiyi devre dışı bırakmaz." #. type: TP #: amule.1:46 amuled.1:54 amulegui.1:39 ed2k.1:24 #, no-wrap msgid "B<[ -t>, B<--category>=InumE> B<]>" msgstr "B<[ -t>, B<--category>=IsayıE> B<]>" #. type: Plain text #: amule.1:49 amuled.1:57 amulegui.1:42 ed2k.1:27 msgid "Set category for passed eD2k links to InumE>" msgstr "" "IsayıE>ya gönderilen eD2k bağlantılarının kategorilerini belirler." #. type: Plain text #: amule.1:52 amulecmd.1:66 amuled.1:60 amulegui.1:48 amuleweb.1:126 ed2k.1:39 msgid "Displays the current version number." msgstr "Geçerli sürüm numarasını görüntüler." #. type: Plain text #: amule.1:55 amulecmd.1:69 amuled.1:63 amulegui.1:45 amuleweb.1:123 ed2k.1:36 #: ../../src/utils/aLinkCreator/docs/alcc.1:22 #: ../../src/utils/cas/docs/cas.1:32 msgid "Prints a short usage description." msgstr "Kısa bir kullanım açıklaması görüntüler." #. type: TP #: amule.1:55 amuled.1:63 ed2k.1:39 #, no-wrap msgid "B<[ eD2k-link ]>" msgstr "B<[ eD2k-bağlantısı ]>" #. type: Plain text #: amule.1:58 amuled.1:66 ed2k.1:42 msgid "Adds an eD2k-link to the core." msgstr "Çekirdeğe bir eD2k bağlantısı ekler." #. type: Plain text #: amule.1:60 amulecmd.1:75 amuled.1:68 ed2k.1:44 msgid "The eD2k link to be added can be:" msgstr "Eklenecek eD2k bağlantısı şunlardan biri olabilir:" #. type: Plain text #: amule.1:63 amulecmd.1:78 amuled.1:71 ed2k.1:47 msgid "a file link (ed2k://|file|...), it will be added to the download queue;" msgstr "" "bir dosya bağlantısı (ed2k://|file|...) ki indirmeler kuyruğuna eklenir;" #. type: Plain text #: amule.1:65 amulecmd.1:80 amuled.1:73 ed2k.1:49 msgid "" "a server link (ed2k://|server|...), it will be added to the server list;" msgstr "" "bir sunucu bağlantısı (ed2k://|server|...) ki sunucu listesine eklenir;" #. type: Plain text #: amule.1:67 amuled.1:75 ed2k.1:51 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list;" msgstr "" "bir sunucu listesi bağlantısı, bu durumda listedeki tüm sunucular sunucu " "listesine eklenir;" #. type: Plain text #: amule.1:69 amuled.1:77 msgid "a magnet link." msgstr "bir magnet bağlantısı." #. type: SH #: amule.1:70 amulecmd.1:207 amuleweb.1:132 #, no-wrap msgid "NOTES" msgstr "NOTLAR" #. type: SS #: amule.1:71 amulecmd.1:208 amuleweb.1:133 #, no-wrap msgid "Paths" msgstr "Yollar" #. type: Plain text #: amule.1:75 amulecmd.1:212 amuleweb.1:137 msgid "" "For all options which take a IpathE> value, if the I " "contains no directory part (i.e. just a plain filename), then it is " "considered to be under the aMule configuration directory, I<~/.aMule>." msgstr "" "IyolE> değeri alan tüm seçenekler için eğer I hiçbir dizin " "içermiyorsa (yani sadece bir dosya ismiyse) aMule yapılandırma dizini (I<~/." "aMule>) varsayılır. " #. type: SH #: amule.1:75 amulecmd.1:240 amuled.1:78 amuleweb.1:171 ed2k.1:60 #: ../../src/utils/cas/docs/cas.1:36 #, no-wrap msgid "FILES" msgstr "DOSYALAR" #. type: Plain text #: amule.1:77 amuled.1:80 msgid "~/.aMule/*" msgstr "~/.aMule/*" #. type: SH #: amule.1:77 amulecmd.1:256 amuled.1:80 amulegui.1:48 amuleweb.1:191 #: ed2k.1:62 ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/aLinkCreator/docs/alcc.1:26 #: ../../src/utils/cas/docs/cas.1:42 ../../src/utils/wxCas/docs/wxcas.1:16 #: ../../src/utils/xas/docs/xas.1:16 #, no-wrap msgid "REPORTING BUGS" msgstr "GERİBİLDİRİM" #. type: Plain text #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 msgid "" "Please report bugs either on our forum (I), or in " "our bugtracker (I). Please do not report bugs in e-" "mail, neither to our mailing list nor directly to any team member." msgstr "" "Hataları bildirmek için forumumuzu (I) ya da hata " "takipçimizi (I) kullanınız. Hataları bildirmek için " "e-mail ve e-mail listemizi kullanmamanızı ve geliştiricilerden birine " "doğrudan bildirmemenizi rica ederiz." #. type: SH #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 #, no-wrap msgid "COPYRIGHT" msgstr "TELİF HAKKI" #. type: Plain text #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 msgid "" "aMule and all of its related utilities are distributed under the GNU General " "Public License." msgstr "" "aMule ve ilgili tüm yardımcı araçları GNU Genel Kamu Lisansı çerçevesinde " "dağıtılmaktadır." #. type: SH #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 #, no-wrap msgid "SEE ALSO" msgstr "İLGİLİ BELGELER" #. type: SH #: amule.1:84 amulecmd.1:263 amuled.1:87 amulegui.1:55 amuleweb.1:198 #: ed2k.1:69 ../../src/utils/aLinkCreator/docs/alc.1:18 #: ../../src/utils/aLinkCreator/docs/alcc.1:33 #: ../../src/utils/cas/docs/cas.1:49 ../../src/utils/wxCas/docs/wxcas.1:23 #: ../../src/utils/xas/docs/xas.1:23 #, no-wrap msgid "AUTHOR" msgstr "YAZAN" #. type: Plain text #: amule.1:85 amulecmd.1:264 amuled.1:88 amuleweb.1:199 ed2k.1:70 #: ../../src/utils/aLinkCreator/docs/alc.1:19 #: ../../src/utils/aLinkCreator/docs/alcc.1:34 #: ../../src/utils/cas/docs/cas.1:50 ../../src/utils/wxCas/docs/wxcas.1:24 #: ../../src/utils/xas/docs/xas.1:24 msgid "" "This manpage was written by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Bu kılavuz sayfası Vollstrecker Eamule@vollstreckernet.deE " "tarafından yazılmıştır." #. type: TH #: amulecmd.1:1 #, no-wrap msgid "AMULECMD" msgstr "AMULECMD" #. type: TH #: amulecmd.1:1 #, no-wrap msgid "aMuleCmd v2.3.1" msgstr "aMuleCmd v2.3.1" #. type: TH #: amulecmd.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "aMule utilities" msgstr "aMule yardımcı araçları" #. type: Plain text #: amulecmd.1:7 msgid "amulecmd - Console-based program to control aMule" msgstr "amulecmd - aMule'ü yönetmek için konsol temelli bir program" #. type: Plain text #: amulecmd.1:13 amuleweb.1:12 msgid "" "[B<-h> IhostE>] [B<-p> IportE>] [B<-P> " "IpasswordE>] [B<-f> IpathE>]" msgstr "" "[B<-h> IsunucuE>] [B<-p> IportE>] [B<-P> " "IşifreE>] [B<-f> IyolE>]" #. type: Plain text #: amulecmd.1:17 msgid "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> IcommandE>]" "B< >}" msgstr "" "[B<-l> IdilE>] {B< >[B<-w>]B< >|B< >[B<-c> IkomutE>]B< >}" #. type: Plain text #: amulecmd.1:20 amuleweb.1:31 msgid "[B<--create-config-from>=IpathE>]" msgstr "[B<--create-config-from>=IyolE>]" #. type: Plain text #: amulecmd.1:29 msgid "B is a console-based client to control aMule." msgstr "B aMule'ü yönetmek için konsol temelli bir programdır." #. type: TP #: amulecmd.1:29 amuleweb.1:46 #, no-wrap msgid "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" msgstr "B<[ -h> IsunucuE>, B<--host>=IsunucuE> B<]>" #. type: Plain text #: amulecmd.1:33 amuleweb.1:50 msgid "" "Host where aMule is running (default: I). IhostE> " "might be an IP address or a DNS name" msgstr "" "aMule'ün çalıştığı sunucu ya da bilgisayar (varsayılan: I). " "IsunucuE> bir IP adresi ya da DNS ismi olabilir" #. type: TP #: amulecmd.1:33 amuleweb.1:50 #, no-wrap msgid "B<[ -p> IportE>, B<--port>=IportE> B<]>" msgstr "B<[ -p> IportE>, B<--port>=IportE> B<]>" #. type: Plain text #: amulecmd.1:36 amuleweb.1:53 msgid "" "aMule's port for External Connections, as set in Preferences-ERemote " "Controls (default: I<4712>)" msgstr "" "aMule'ün dışarıya bağlandığında kullandığı port, Ayarlar-EUzak " "Denetimler seçeneğinde belirlenir (varsayılan: I<4712>)" #. type: TP #: amulecmd.1:36 amuleweb.1:53 #, no-wrap msgid "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" msgstr "B<[ -P> IşifreE>, B<--password>=IşifreE> B<]>" #. type: Plain text #: amulecmd.1:39 amuleweb.1:56 msgid "External Connections password." msgstr "Dışarıdan yapılan bağlantılar için şifre." #. type: TP #: amulecmd.1:39 amuleweb.1:56 #, no-wrap msgid "B<[ -f> IpathE>, B<--config-file>=IpathE> B<]>" msgstr "B<[ -f> IyolE>, B<--config-file>=IyolE> B<]>" #. type: Plain text #: amulecmd.1:43 amuleweb.1:60 msgid "" "Use the given configuration file. Default configuration file is I<~/.aMule/" "remote.conf>" msgstr "" "Belirtilen yapılandırma dosyasını kullanır. Varsayılan yapılandırma dosyası " "şudur: I<~/.aMule/remote.conf>" #. type: Plain text #: amulecmd.1:46 amuleweb.1:63 msgid "Do not print any output to stdout." msgstr "Standart çıktıya hiçbir veri yazdırmaz." #. type: Plain text #: amulecmd.1:50 amuleweb.1:67 msgid "Be verbose - show also debug messages." msgstr "Geveze olur - debug mesajlarını da gösterir." #. type: TP #: amulecmd.1:50 amuleweb.1:67 #, no-wrap msgid "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" msgstr "B<[ -l> IdilE>, B<--locale>=IdilE> B<]>" #. type: Plain text #: amulecmd.1:54 amuleweb.1:71 msgid "" "Sets program locale (language). See the B section for the " "description of the IlangE> parameter." msgstr "" "Programın kullandığı dili belirler. IdilE> parametresinin " "tanımlaması için B bölümüne bakınız." #. type: Plain text #: amulecmd.1:57 amuleweb.1:74 msgid "Write command line options to config file and exit" msgstr "Komut satırı seçeneklerini yapılandırma dosyasına yazıp çıkar" #. type: TP #: amulecmd.1:57 #, no-wrap msgid "B<[ -c> IcommandE>, B<--command>=IcommandE> B<]>" msgstr "B<[ -c> IkomutE>, B<--command>=IkomutE> B<]>" #. type: Plain text #: amulecmd.1:60 msgid "" "Execute IcommandE> as if it was entered at amulecmd's prompt and " "exit." msgstr "" "IkomutE>u amulecmd'ın komut istemine girilmiş gibi çalıştırır ve " "çıkar." #. type: TP #: amulecmd.1:60 amuleweb.1:117 #, no-wrap msgid "B<[ --create-config-from>=IpathE> B<]>" msgstr "B<[ --create-config-from>=IyolE> B<]>" #. type: Plain text #: amulecmd.1:63 amuleweb.1:120 msgid "" "Create config file based upon IpathE>, which must point to a valid " "aMule config file, and then exit." msgstr "" "IyolE>a dayalı yapılandırma dosyası yaratır ve çıkar. Yolun " "geçerli bir aMule dosyasına işaret etmesi gerekir." #. type: SH #: amulecmd.1:69 #, no-wrap msgid "COMMANDS" msgstr "KOMUTLAR" #. type: Plain text #: amulecmd.1:71 msgid "All commands are case insensitive." msgstr "Tüm komutlar harf büyüklüğüne duyarsızdır." #. type: SS #: amulecmd.1:71 #, no-wrap msgid "Add IeD2k-linkE> | Imagnet-linkE>" msgstr "Add IeD2k-bağlantısıE> | Imagnet-bağlantısıE>" #. type: Plain text #: amulecmd.1:73 msgid "Adds an eD2k-link or a magnet-link to the core." msgstr "Çekirdeğe bir eD2k ya da magnet bağlantısı ekler." #. type: Plain text #: amulecmd.1:82 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list." msgstr "" "bir sunucu listesi bağlantısı, bu durumda listedeki tüm sunucular sunucu " "listesine eklenir." #. type: Plain text #: amulecmd.1:85 msgid "The magnet link must contain the eD2k hash and file length." msgstr "Magnet bağlantısı eD2k hash değerini ve dosya boyutunu içermelidir." #. type: SS #: amulecmd.1:85 #, no-wrap msgid "Cancel IhashE> | InumberE>" msgstr "Cancel IhashE> | IsayıE>" #. type: Plain text #: amulecmd.1:87 msgid "" "Cancels the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "IhashE> ya da IsayıE> tarafından belirtilen indirmeyi " "iptal eder. Değerleri öğrenmek için B komutunu kullanınız." #. type: SS #: amulecmd.1:87 #, no-wrap msgid "Connect [ I | I | Iip|nameE> ]" msgstr "Connect [ I | I | Iip|isimE> ]" #. type: Plain text #: amulecmd.1:89 msgid "Connect to the network." msgstr "Ağa bağlanır." #. type: Plain text #: amulecmd.1:91 msgid "This will connect to all networks that are enabled in Preferences." msgstr "Ayarlarda ekinleştirilmiş tüm ağlara bağlanır." #. type: Plain text #: amulecmd.1:95 msgid "" "With the optional parameter you can specify which network to connect to. " "Giving a server address in the form of IP:Port (where IP is either a dotted " "decimal IPv4 address or a resolvable DNS name) aMule will connect to that " "server only." msgstr "" "Ek bir parametreyle hangi ağa bağlanmak istediğinizi belirtebilirsiniz. IP:" "port şeklinde (IP ya noktalarla ayrılmış ondalık bir IPv4 adresi ya da " "çözümlenebilen bir DNS ismi olmalıdır) bir sunucu adresi verirseniz aMule " "sadece bu sunucuya bağlanacaktır." #. type: Plain text #: amulecmd.1:98 msgid "" "Disconnect from all networks you are connected to, or just disconnect from " "the specified network." msgstr "" "Ya çevrimiçi olan tüm ağlarla bağlantıyı keser, ya da sadece belirtilen ağ " "ile." #. type: SS #: amulecmd.1:98 #, no-wrap msgid "Download InumberE>" msgstr "Download IsayıE>" #. type: Plain text #: amulecmd.1:100 msgid "Start downloading a file." msgstr "Bir dosyayı indirmeye başlar." #. type: Plain text #: amulecmd.1:104 msgid "" "The InumberE> of a file from the last search has to be given. " "Example: `download 12' will start to download the file with the number 12 of " "the previous search." msgstr "" "Bir dosyanın son aramadan IsayıE> değeri girilmesi gerekir. " "Örneğin `download 12' son aramadaki 12 numaralı dosyayı indirmeye başlar." #. type: Plain text #: amulecmd.1:106 msgid "Disconnect from amule/amuled and quit amulecmd." msgstr "amule/amuled ile bağlantıyı keser ve amulecmd kapanır." #. type: SS #: amulecmd.1:106 #, no-wrap msgid "Get IwhatE>" msgstr "Get IdeğerE>" #. type: Plain text #: amulecmd.1:108 msgid "Get and display a preference value." msgstr "Bir ayar değerini görüntüler." #. type: Plain text #: amulecmd.1:110 amulecmd.1:144 amulecmd.1:173 amulecmd.1:183 msgid "Available values for IwhatE>:" msgstr "IdeğerE> ile kullanılabilecek değerler:" #. type: Plain text #: amulecmd.1:113 msgid "Get bandwidth limits." msgstr "Bant genişliği değerlerini görüntüler." #. type: Plain text #: amulecmd.1:115 msgid "Get IPFilter preferences." msgstr "IPFilter ayarlarını görüntüler." #. type: SS #: amulecmd.1:116 #, no-wrap msgid "Help [ IcommandE> ]" msgstr "Help [ IkomutE> ]" #. type: Plain text #: amulecmd.1:120 msgid "" "Prints a short usage description. If called without parameter, it shows a " "list of available commands. If called with IcommandE>, it shows a " "short description of the given command." msgstr "" "Kısa bir kullanım açıklaması görüntüler. Bir parametre ile kullanılırsa " "mevcut komutların listesini verir. IkomutE> ile kullanılırsa " "belirtilen komutun kısa bir açıklamasını görüntüler." #. type: SS #: amulecmd.1:120 #, no-wrap msgid "Pause IhashE> | InumberE>" msgstr "Pause IhashE> | IsayıE>" #. type: Plain text #: amulecmd.1:122 msgid "" "Pauses the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "IhashE> ya da IsayıE> değerleri ile belirtilen indirmeyi " "duraklatır. Bu değerleri elde etmek için B komutunu kullanabilirsiniz." #. type: SS #: amulecmd.1:122 #, no-wrap msgid "Priority IpriorityE> IhashE> | InumberE>" msgstr "Priority IöncelikE> IhashE> | IsayıE>" #. type: Plain text #: amulecmd.1:124 msgid "" "Set priority of a download specified by IhashE> or " "InumberE>." msgstr "" "IhashE> ya da IsayıE> ile belirtilen bir indirmenin " "önceliğini ayarlar." #. type: Plain text #: amulecmd.1:126 msgid "Available values for IpriorityE>:" msgstr "IöncelikE> için kullanılabilecek değerler:" #. type: Plain text #: amulecmd.1:129 msgid "Automatic priority." msgstr "Otomatik öncelik." #. type: Plain text #: amulecmd.1:131 msgid "High priority." msgstr "Yüksek öncelik." #. type: Plain text #: amulecmd.1:133 msgid "Low priority." msgstr "Düşük öncelik." #. type: Plain text #: amulecmd.1:135 msgid "Normal priority." msgstr "Normal öncelik." #. type: Plain text #: amulecmd.1:138 msgid "Shows the progress of an on-going search." msgstr "Sürmekte olan bir aramanın ilerlemesini gösterir." #. type: Plain text #: amulecmd.1:140 msgid "A synonim of the B command." msgstr "B komutu ile eş anlamlıdır." #. type: SS #: amulecmd.1:140 #, no-wrap msgid "Reload IwhatE>" msgstr "Reload IdeğerE>" #. type: Plain text #: amulecmd.1:142 msgid "Reloads a given object." msgstr "Belirtilen değeri yeniden yükler." #. type: Plain text #: amulecmd.1:147 msgid "Reload shared files list." msgstr "Paylaşılan dosyalar listesini yeniden yükler." #. type: Plain text #: amulecmd.1:149 msgid "Reload IP filter tables." msgstr "IP filtre tablolarını yeniden yükler." #. type: Plain text #: amulecmd.1:152 msgid "Reset the log." msgstr "Günlüğü sıfırlar." #. type: Plain text #: amulecmd.1:154 msgid "Shows you the results of the last search." msgstr "Son aramanın sonuçlarını gösterir." #. type: SS #: amulecmd.1:154 #, no-wrap msgid "Resume IhashE> | InumberE>" msgstr "Resume IhashE> | IsayıE>" #. type: Plain text #: amulecmd.1:156 msgid "" "Resumes the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "IhashE> ya da IsayıE> ile belirtilen indirmeye kaldığı " "yerden devam eder. Değeri öğrenmek için B komutunu kullanabilirsiniz." #. type: SS #: amulecmd.1:156 #, no-wrap msgid "Search ItypeE> IkeywordE>" msgstr "Search ItürE> IanahtarkelimeE>" #. type: Plain text #: amulecmd.1:159 msgid "" "Makes a search for the given IkeywordE>. A search type and a " "keyword to search is mandatory to do this. Example: `search kad amule' " "performs a kad search for `amule'." msgstr "" "Girilen IanahtarkelimeE> için bir arama yapar. Bir arama türü ve " "bir anahtar kelime kullanmanız mecburidir. Örneğin `search kad amule' kad " "ağında `amule' sözcüğü ile arama yapar." #. type: Plain text #: amulecmd.1:161 msgid "Available search types:" msgstr "Kullanılabilecek arama türleri:" #. type: Plain text #: amulecmd.1:164 msgid "Performs a global search." msgstr "Genel arama yapar." #. type: Plain text #: amulecmd.1:166 msgid "Performs a search on the Kademlia network." msgstr "Kad ağında arama yapar." #. type: Plain text #: amulecmd.1:168 msgid "Performs a local search." msgstr "Sunucuda arama yapar." #. type: SS #: amulecmd.1:169 #, no-wrap msgid "Set IwhatE>" msgstr "Set IdeğerE>" #. type: Plain text #: amulecmd.1:171 msgid "Sets a given preferences value." msgstr "Belirtilen değeri ayarlara girer." #. type: Plain text #: amulecmd.1:176 msgid "Set bandwidth limits." msgstr "Bant genişliği değerlerini ayarlar." #. type: Plain text #: amulecmd.1:178 msgid "Set IPFilter preferences." msgstr "IPFilter tercihlerini ayarlar." #. type: SS #: amulecmd.1:179 #, no-wrap msgid "Show IwhatE>" msgstr "Show IdeğerE>" #. type: Plain text #: amulecmd.1:181 msgid "Shows upload/download queue, servers list or shared files list." msgstr "" "İndirme/aktarma kuyruğunu, sunucu listesini ya da paylaşılan dosya listesini " "gösterir." #. type: Plain text #: amulecmd.1:186 msgid "Show download queue." msgstr "İndirme kuyruğunu gösterir." #. type: Plain text #: amulecmd.1:188 msgid "Show log." msgstr "Günlüğü (log) gösterir." #. type: Plain text #: amulecmd.1:190 msgid "Show servers list." msgstr "Sunucu listesini gösterir." #. type: Plain text #: amulecmd.1:192 msgid "Show upload queue." msgstr "Aktarma (gönderilen dosyalar) kuyruğunu gösterir." #. type: Plain text #: amulecmd.1:196 msgid "" "Shutdown the remote running core (amule/amuled). This will also shut down " "the text client, since it is unusable without a running core." msgstr "" "Uzakta çalışmakta olan çekirdeği (amule/amuled) kapatır. Bu metin temelli " "istemciyi de kapatacaktır çünkü çekirdek olmadan işleyemez." #. type: SS #: amulecmd.1:196 #, no-wrap msgid "Statistics [ InumberE> ]" msgstr "İstatistikler [ IsayıE> ] " #. type: Plain text #: amulecmd.1:198 msgid "Show statistics tree." msgstr "İstatistikler ağacını gösterir." #. type: Plain text #: amulecmd.1:202 msgid "" "The optional InumberE> in the range of 0-255 can be passed as " "argument to this command, which tells how many entries of the client version " "subtree should be shown. Passing 0, or omitting it means `unlimited'." msgstr "" "0-255 arası IsayıE> isteğe bağlı argüman olarak komuta " "aktarılabilir, bu kaç tane istemci sürümü alt ağacının gösterileceğini " "belirtir. 0 kullanımı ya da hiçbir argüman kullanılmaması `sınırsız' " "anlamına gelir." #. type: Plain text #: amulecmd.1:205 msgid "" "Example: `statistics 5' will show only the top 5 versions for each client " "type." msgstr "" "Örneğin `statistics 5' her istemcinin en çok kullanılan 5 sürümünü gösterir." #. type: Plain text #: amulecmd.1:207 msgid "Show connection status, current up/download speeds, etc." msgstr "" "Bağlantı durumunu, sürmekte olan indirmeleri ve aktarmaları vs. gösterir." #. type: SS #: amulecmd.1:212 amuleweb.1:137 #, no-wrap msgid "Languages" msgstr "Diller" #. type: Plain text #: amulecmd.1:218 amuleweb.1:143 msgid "" "The IlangE> parameter for the B<-l> option has the following form: " "I[B<_>I][B<.>I][B<@>I] where I is the " "primary language, I is a sublanguage/territory, I is the " "character set to use and I allows the user to select a specific " "instance of localization data within a single category." msgstr "" "B<-l> seçeneği için IdilE> parametresi şu biçimde kullanılmalıdır: " "I[B<_>I][B<.>I][B<@>I] ki burada I " "birinci dil, I lehçe/bölge, I karakter setidir ve " "I kullanıcıya belli bir kategori içinde belli yerelleştirme " "verileri kullanma olanağı sağlar." #. type: Plain text #: amulecmd.1:220 amuleweb.1:145 msgid "For example, the following strings are valid:" msgstr "Örnek olarak, aşağıdaki dizeler geçerlidir:" #. type: Plain text #: amulecmd.1:234 amuleweb.1:159 msgid "" "Though all the above strings are accepted as valid language definitions, " "I and I are yet unused." msgstr "" "Yukarıdaki tüm dizeler geçerlidir ancak I ve I henüz " "kullanılmamaktadır." #. type: Plain text #: amulecmd.1:237 amuleweb.1:162 msgid "" "In addition to the format above, you can also specify full language names in " "English - so B<-l german> is also valid and is equal to B<-l de_DE>." msgstr "" "Yukarıdakilere ek olarak dil isimlerini İngilizce olarak belirtebilirsiniz - " "yani B<-l german> ile B<-l de_DE> eşdeğerdir ve ikisi de geçerlidir." #. type: Plain text #: amulecmd.1:240 amuleweb.1:165 msgid "" "When no locale is defined, either on command-line or in config file, system " "default language will be used." msgstr "" "Ne komut satırında ne de yapılandırma dosyasında hiçbir dil belirtilmediği " "zaman sistemin varsayılan dili kullanılacaktır." #. type: Plain text #: amulecmd.1:242 amuleweb.1:173 msgid "~/.aMule/remote.conf" msgstr "~/.aMule/remote.conf" #. type: SH #: amulecmd.1:242 amuleweb.1:177 #, no-wrap msgid "EXAMPLE" msgstr "ÖRNEK" #. type: Plain text #: amulecmd.1:244 msgid "Typically amulecmd will be first run as:" msgstr "Tipik olarak amulecmd ilk defada şu şekilde başlayacaktır:" #. type: Plain text #: amulecmd.1:246 msgid "B B<-h> I B<-p> I B<-P> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I B<-w>" #. type: Plain text #: amulecmd.1:248 amuleweb.1:183 msgid "or" msgstr "ya da" #. type: Plain text #: amulecmd.1:250 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" #. type: Plain text #: amulecmd.1:252 amuleweb.1:187 msgid "" "These will save settings to I<$HOME/.aMule/remote.conf>, and later you only " "need to type:" msgstr "" "Ayarları I<$HOME/.aMule/remote.conf> dosyasına kayıt eder ve daha sonra " "sadece şunu girmeniz yeterli olacaktır:" #. type: Plain text #: amulecmd.1:256 msgid "Of course, you don't have to follow this example." msgstr "Tabii ki bu örneğe harfiyen uymanız zorunlu değildir." #. type: TH #: amuled.1:1 #, no-wrap msgid "AMULED" msgstr "AMULED" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon v2.3.1" msgstr "aMule Daemon v2.3.1" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon" msgstr "aMule Daemon" #. type: Plain text #: amuled.1:6 msgid "amuled - the all-platform eMule p2p client - daemonized version" msgstr "amuled - her platformda çalışan eMule p2p istemcisi - daemon sürümü" #. type: Plain text #: amuled.1:9 ../../src/utils/cas/docs/cas.1:11 msgid "[B<-c> IpathE>]" msgstr "[B<-c> IyolE>]" #. type: Plain text #: amuled.1:11 msgid "[B<-p> IpathE>]" msgstr "[B<-p> IyolE>]" #. type: Plain text #: amuled.1:32 msgid "Forks to background." msgstr "Kendisini arkaplana çatallar." #. type: TP #: amuled.1:32 #, no-wrap msgid "B<[ -p> IpathE>, B<--pid-file>=IpathE> B<]>" msgstr "B<[ -p> IyolE>, B<--pid-file>=IyolE> B<]>" #. type: Plain text #: amuled.1:36 msgid "" "After fork, create a pid-file in the IpathE>. IpathE> " "has to contain the filename." msgstr "" "Çatallamadan sonra IyolE> konumunda bir pid-file dosyası yaratır. " "IyolE>un dosya ismini içermesi gerekir." #. type: Plain text #: amuled.1:39 msgid "Configure EC (External Connections)." msgstr "DB (Dış Bağlantılar) Kurulumu" #. type: TH #: amulegui.1:1 #, no-wrap msgid "AMULEGUI" msgstr "AMULEGUI" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI v2.3.1" msgstr "aMuleGUI v2.3.1" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI" msgstr "aMuleGUI" #. type: Plain text #: amulegui.1:6 msgid "amulegui - aMule control program with GUI" msgstr "amulegui - Grafik arayüzlü aMule yönetme programı" #. type: Plain text #: amulegui.1:14 msgid "[B<-t> InumE>]" msgstr "[B<-t> IsayıE>]" #. type: Plain text #: amulegui.1:24 msgid "" "B is a client program, and can be connected to amule or amuled via " "EC. You can manage your amule program with it. It provides almost the same " "functionalities as amule, even if the core works on another computer." msgstr "" "B istemci bir programdır ve amule ya da amuled'e DB yoluyla " "bağlanabilir. aMule'ü bu şekilde yönetebilirsiniz. Çekirdeğin başka bir " "bilgisayarda çalışmasına rağmen amule'ün neredeyse tüm işlevlerine erişim " "sağlar." #. type: Plain text #: amulegui.1:39 msgid "Skip connection dialog." msgstr "Bağlantı diyaloğunu geç." #. type: Plain text #: amulegui.1:57 msgid "" "This manpage was written by Julien Delange for Debian Ejulien AT gunnm " "DOT orgE" msgstr "" "Bu man sayfası Debian için Julien Delange Ejulien AT gunnm DOT orgE " "tarafından yazılmıştır." #. type: Plain text #: amulegui.1:58 msgid "" "This manpage was rewritten by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" "Bu kılavuz sayfası Vollstrecker Eamule@vollstreckernet.deE " "tarafından yeniden yazılmıştır" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "AMULEWEB" msgstr "AMULEWEB" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "aMule webserver v2.3.1" msgstr "aMule webserver v2.3.1" #. type: Plain text #: amuleweb.1:6 msgid "amuleweb - aMule web server" msgstr "amuleweb - aMule web sunucusu" #. type: Plain text #: amuleweb.1:15 msgid "[B<-l> IlangE>]" msgstr "[B<-l> IdilE>]" #. type: Plain text #: amuleweb.1:18 msgid "[B<-t> InameE>] [B<-s> IportE>]" msgstr "[B<-t> IisimE>] [B<-s> IportE>]" #. type: Plain text #: amuleweb.1:20 msgid "[B<-U> IportE>]" msgstr "[B<-U> IportE>]" #. type: Plain text #: amuleweb.1:24 msgid "[B<-A> IpasswordE>] [B<-G> IpasswordE>]" msgstr "[B<-A> IşifreE>] [B<-G> IşifreE>]" #. type: Plain text #: amuleweb.1:40 msgid "[B<--amule-config-file>=IpathE>]" msgstr "[B<--amule-config-file>=IyolE>]" #. type: Plain text #: amuleweb.1:46 msgid "" "B manages your access to amule through a web browser. You can " "start amuleweb together with B(1), or separately, any time later. " "Options can be specified via command-line or via config-file. Command-line " "options take precedence over config-file options." msgstr "" "B amule'e bir ağ tarayıcısı ile erişmenize olanak sağlar. " "amuleweb'i amule ile aynı anda ya da ayrı olarak, daha sonra ne zaman " "isterseniz başlatabilirsiniz. Seçenekleri komut satırı ya da yapılandırma " "dosyası ile belirtmek mümkündür. Komut satırı ile belirtilen seçenekler " "yapılandırma dosyası ile belirtilenlerden daha yüksek önceliklidir." #. type: TP #: amuleweb.1:74 #, no-wrap msgid "B<[ -t> InameE>, B<--template>=InameE> B<]>" msgstr "B<[ -t> IisimE>, B<--template>=IisimE> B<]>" #. type: Plain text #: amuleweb.1:77 msgid "" "Loads the template named InameE>. See the B section " "for details." msgstr "" "Adı IisimE> olan şablonu yükler. Ayrıntılar için B " "bölümüne bakınız." #. type: TP #: amuleweb.1:77 #, no-wrap msgid "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" msgstr "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" #. type: Plain text #: amuleweb.1:80 msgid "" "Webserver's HTTP port. This is the port you must point your browser to " "(default: I<4711>)." msgstr "" "Web sunucusunun HTTP portu. Bu ağ tarayıcınızda kullanmanız gereken port " "numarasıdır (varsayılan: I<4711>). " #. type: Plain text #: amuleweb.1:84 msgid "Enable UPnP." msgstr "UPnP'yi etkinleştirir." #. type: TP #: amuleweb.1:84 #, no-wrap msgid "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" msgstr "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" #. type: Plain text #: amuleweb.1:87 msgid "UPnP port." msgstr "UPnP port numarası." #. type: Plain text #: amuleweb.1:90 msgid "Enables using gzip compression in HTTP traffic to save bandwidth." msgstr "" "Bant genişliğinden tasarruf etmek için gzip sıkıştırmasını etkinleştirir." #. type: Plain text #: amuleweb.1:93 msgid "Disables using gzip compression (this is the default)." msgstr "Gzip sıkıştırmasını devre dışı bırakır (bu varsayılan değerdir)." #. type: TP #: amuleweb.1:93 #, no-wrap msgid "B<[ -A> IpasswdE>, B<--admin-pass>=IpasswdE> B<]>" msgstr "B<[ -A> IşifreE>, B<--admin-pass>=IşifreE> B<]>" #. type: Plain text #: amuleweb.1:96 msgid "Full access password for webserver." msgstr "Sunucuya tam erişim için şifre (parola)." #. type: TP #: amuleweb.1:96 #, no-wrap msgid "B<[ -G> IpasswdE>, B<--guest-pass>=IpasswdE> B<]>" msgstr "B<[ -G> IşifreE>, B<--guest-pass>=IşifreE> B<]>" #. type: Plain text #: amuleweb.1:99 msgid "Guest password for webserver." msgstr "Web sunucusu için misafir şifresi." #. type: Plain text #: amuleweb.1:102 msgid "Allows guest access." msgstr "Misafir erişimini etkinleştirir." #. type: Plain text #: amuleweb.1:105 msgid "Denies guest access (default)." msgstr "Misafir erişimine izin vermez (varsayılan değer)." #. type: Plain text #: amuleweb.1:111 msgid "" "Load/save webserver settings from/to remote aMule. This causes amuleweb to " "ignore command-line and config-file settings, and load them from aMule. " "When saving preferences none will be written to the config file, but to " "aMule. (Of course, this works only for those settings that can be set in " "aMule's Preferences-ERemote Controls.)" msgstr "" "web sunucusu ayarlarını aMule'den/aMule'e yükler/kaydeder. Bu amuleweb'in " "komut satırı ve yapılandırma dosyası ayarlarını görmezden gelmesine yol " "açar. Ayarlar kaydedilirken hiçbiri yapılandırma dosyasına yazılmaz, aMule'e " "yazılır. (Tabii ki bu sadece aMule'ün Ayarlar-EUzak Denetiminde " "kurulabilen değerler için geçerlidir.)" #. type: Plain text #: amuleweb.1:114 msgid "Disable PHP interpreter (deprecated)" msgstr "PHP yorumlayıcısını devre dışı bırakır (eskimiş)" #. type: Plain text #: amuleweb.1:117 msgid "Recompiles PHP pages on each request." msgstr "PHP sayfalarını her sorguda yeniden derler." #. type: TP #: amuleweb.1:126 #, no-wrap msgid "B<[ --amule-config-file>=IpathE> B<]>" msgstr "B<[ --amule-config-file>=IyolE> B<]>" #. type: Plain text #: amuleweb.1:132 msgid "" "aMule config file path. B aMule uses this option when " "starting amuleweb at aMule startup. This option causes all other command-" "line and config-file settings to be ignored, preferences to be read from the " "given config file, and also implies the B<-q -L> options." msgstr "" "aMule yapılandırma dosyasına erişim yolu. B aMule bu " "seçeneği amuleweb'i aMule ile başlatırken kullanır. Bu seçenek diğer tüm " "komut satırı ve yapılandırma dosyası ayarlarının görmezden gelinmesine, " "ayarların verilen yapılandırma dosyasından okunmasına yol açar ve B<-q -L> " "seçeneklerinin kullanılacağı anlamına da gelir." #. type: SH #: amuleweb.1:165 #, no-wrap msgid "SKIN SUPPORT" msgstr "TEMA DESTEĞİ" #. type: Plain text #: amuleweb.1:169 msgid "" "B is capable of displaying information in different skins. These " "skins are called templates, and you can make amuleweb load a specific " "template via the B<-t> command line option. Templates are searched in two " "places: first in I<~/.aMule/webserver/> and then in I if you installed with --prefix=/usr." msgstr "" "B bilgileri çeşitli temalarda görüntüleyebilir. Bu temalara şablon " "adı verilir ve amuleweb'in belli bir şablonu yüklemesini B<-t> komut satırı " "seçeneği ile sağlayabilirsiniz. Şablonlar iki konumda aranır: önce I<~/." "aMule/webserver/> konumunda, sonra da, kurulum --prefix=/usr ile yapıldıysa " "I konumunda." #. type: Plain text #: amuleweb.1:171 msgid "" "Each template must be in a subdirectory of the template name, and this " "directory must contain all files the template needs." msgstr "" "Her şablonun şablon isminin alt dizininde bulunması gerekir ve bu dizinin " "şablonun ihtiyaç duyduğu tüm dosyaları bulundurması şarttır." #. type: Plain text #: amuleweb.1:175 msgid "~/.aMule/webserver/" msgstr "~/.aMule/webserver/" #. type: Plain text #: amuleweb.1:177 msgid "I<$(pkgdatadir)>/webserver/" msgstr "I<$(pkgdatadir)>/webserver/" #. type: Plain text #: amuleweb.1:179 msgid "Typically amuleweb will be first run as:" msgstr "Tipik olarak amuleweb ilk defada şu şekilde başlayacaktır:" #. type: Plain text #: amuleweb.1:181 msgid "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" msgstr "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" #. type: Plain text #: amuleweb.1:185 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" #. type: Plain text #: amuleweb.1:191 msgid "" "Of course, you may specify any more or less options on the first example " "line, and you may also totally omit it." msgstr "" "Tabii ki ilk örnek satırında daha az ya da fazla seçenek belirtebilirsiniz, " "hatta onu tamamen görmezden gelebilirsiniz." #. type: TH #: ed2k.1:1 #, no-wrap msgid "ED2K" msgstr "ED2K" #. type: TH #: ed2k.1:1 #, no-wrap msgid "aMule eD2k link parser v1.5.1" msgstr "aMule eD2k bağlantı çözümleyicisi v1.5.1" #. type: Plain text #: ed2k.1:6 msgid "ed2k - aMule eD2k link parser" msgstr "ed2k - aMule eD2k bağlantı çözümleyicisi" #. type: Plain text #: ed2k.1:10 msgid "[B<-c> IpathE>] [B<-t> InumE>]" msgstr "[B<-c> IyolE>] [B<-t> IsayıE>]" #. type: Plain text #: ed2k.1:13 msgid "IeD2k-linkE>" msgstr "IeD2k-bağlantısıE>" #. type: Plain text #: ed2k.1:21 msgid "" "Sends the given IeD2k-linkE> to aMule, i.e. writes it to the file " "~/.aMule/ED2KLinks, which will be checked by aMule every second for links." msgstr "" "Herhangi bir IeD2k-bağlantısınıE> aMule'e gönderir, yani onu ~/." "aMule/ED2KLinks dosyasına yazar ki bu dosya aMule tarafından her saniye " "bağlantılar için sorgulanır." #. type: Plain text #: ed2k.1:30 msgid "" "Loads all link found in the emulecollection given as Ied2k-linkE>" msgstr "" "Bir emule koleksiyonunda Ied2k-bağlantısıE> şeklinde bulunan tüm " "bağlantıları yükler" #. type: Plain text #: ed2k.1:33 msgid "" "Lists all link found in the emulecollection given as Ied2k-linkE>" msgstr "" "Bir emule koleksiyonunda Ied2k-bağlantısıE> şeklinde bulunan tüm " "bağlantıları listeler" #. type: Plain text #: ed2k.1:53 msgid "a magnet link;" msgstr "bir magnet bağlantısı;" #. type: Plain text #: ed2k.1:55 msgid "an emulecollection file." msgstr "bir emulecollection dosyası." #. type: Plain text #: ed2k.1:60 msgid "" "B You can give " "more than one link, and every link can have it's own params. For example " "Blink1E -t2 Elink2E> will download Ilink1E> " "in standard category and Ilink2E> in category 2." msgstr "" "B Birden fazla bağlantı " "girebilirsiniz ve her bağlantının kendine özel parametreleri olabilir. " "Örneğin Bbağlantı1E -t2 Ebağlantı2E> " "Ibağlantı1E> dosyasını standart kategoriye ve " "Ibağlantı2E> dosyasını ikinci kategoriye indirecektir." #. type: Plain text #: ed2k.1:62 msgid "~/.aMule/ED2KLinks" msgstr "~/.aMule/ED2KLinks" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "ALC" msgstr "ALC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "aLinkCreator" msgstr "aLinkCreator" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:5 msgid "aLinkCreator - the aMule eD2k link creator" msgstr "aLinkCreator - aMule eD2k bağlantı yaratıcısı" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:9 msgid "" "B is a graphical utility to create an eD2k link to any file on your " "computer." msgstr "" "B bilgisayarınızdaki herhangi bir dosya için eD2k bağlantısı " "yaratabilen grafik arayüzlü bir araçtır." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/wxCas/docs/wxcas.1:16 msgid "This app doesn't take any arguments." msgstr "Bu uygulama hiçbir argüman almaz." #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "ALCC" msgstr "ALCC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "aMule eD2k links calculator" msgstr "aMule eD2k bağlantı hesaplayıcısı" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:6 msgid "alcc - text based eD2k links calculator for aMule" msgstr "alcc - aMule için metin temelli eD2k bağlantı hesaplayıcısı" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:11 msgid "Iinputfiles_listE>" msgstr "Igirdidosya_listesiE>" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:16 msgid "" "Compute the eD2k links of all the input files given in the " "Iinputfiles_listE> (There can be one or more files)." msgstr "" "Igirdidosya_listesiE>nde girilen tüm dosyaların eD2k " "bağlantılarını hesaplar (bir ya da birden fazla dosya olabilir)" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:19 msgid "Compute and add part hashes to the computed eD2k links." msgstr "Bölümler için hash değerlerini hesaplar ve eD2k bağlantılarına ekler." #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:26 msgid "Be verbose - show also calculation steps." msgstr "Geveze olur - hesap adımlarını da gösterir." #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "CAS" msgstr "CAS" #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "cas v0.8" msgstr "cas v0.8" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:6 msgid "cas - c aMule statistics" msgstr "cas - c aMule istatistikleri" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:18 msgid "" "B is a program for displaying the contents of your aMule online " "signature file to console (in a human readable form). For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B çevrimiçi aMule imza dosyanızı konsolda (insanların okuyabileceği bir " "şekilde) görüntülemeye yarayan bir programdır. Bunun çalışması için aMule'ün " "ayarlarında \"Çevrim İçi İmza\" seçeneğini etkinleştirmeniz gerekmektedir." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:22 msgid "" "Writes the online signature picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "Çevrimiçi imza resmini yazar. Yazılacağı konumu belirtmek için İsteğinize " "bağlı olarak bu seçeneğe I<=EYOLE> ekleyebilirsiniz." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:26 msgid "" "HTML page with stats and picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "Resim ve istatistikleri bir HTML sayfasına yazar. Yazılacağı konumu " "belirtmek için İsteğinize bağlı olarak bu seçeneğe I<=EYOLE> " "ekleyebilirsiniz." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:34 msgid "Without any options, it prints online signature data to stdout." msgstr "" "Hiçbir seçenek belirtilmediği zaman çevrimiçi imzayı standart çıktıda yazar." #. type: Plain text #: ../../src/utils/cas/docs/cas.1:36 msgid "B was written by Pedro de Oliveira Efalso@rdk.homeip.netE" msgstr "" "B Pedro de Oliveira Efalso@rdk.homeip.netE tarafından " "yazılmıştır" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:38 msgid "~/.aMule/casrc" msgstr "~/.aMule/casrc" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:40 msgid "stat.png" msgstr "stat.png" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:42 msgid "tmp.html" msgstr "tmp.html" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "WXCAS" msgstr "WXCAS" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "wxCas" msgstr "wxCas" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:5 msgid "wxcas - wx c aMule statistics" msgstr "wxcas - wx c aMule istatistikleri" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:11 msgid "" "B is a program for displaying the contents of your online signature " "file in a nice wx Window on your Desktop. For this to work, you must enable " "the \"Online Signature\" option in aMule's preferences." msgstr "" "B çevrimiçi imzanızın içeriklerini güzel bir wx penceresinde " "görüntüler. Bunun çalışması için aMule'ün ayarlarında \"Çevrim İçi İmza\" " "seçeneğini etkinleştirmeniz gerekmektedir." #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:14 msgid "" "Based on Pedro de Oliveira's B(1). B was written by ThePolish " "Ethepolish@vipmail.ruE" msgstr "" "Pedro de Oliveira'nın B(1) programına dayalıdır. B ThePolish " "Ethepolish@vipmail.ruE tarafından yazılmıştır" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "XAS" msgstr "XAS" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "xas v1.9" msgstr "xas v1.9" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:5 msgid "xas - X-Chat aMule Statistics" msgstr "xas - X-Chat aMule İstatistikleri" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:7 msgid "B" msgstr "B" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:12 msgid "" "B is a plugin for xchat. For loading see your xchat documentation. " "After loading type /xas and it will send statistics to the channel you are " "in. These are taken from your Online Signature file. For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B xchat için bir eklentidir. Yüklemek için xchat yardım belgelerine " "bakınız. Yüklendikten sonra /xas yazdığınızda istatistikleri bulunduğunuz " "kanala yollar. Bu bilgiler Çevrimiçi İmza dosyanızdan okunur. Bunun " "çalışması için aMule'ün ayarlarında \"Çevrim İçi İmza\" seçeneğini " "etkinleştirmeniz gerekmektedir." #. type: Plain text #: ../../src/utils/xas/docs/xas.1:14 msgid "" "To enable it on every startup of xchat you can just run the autstart-xas " "script (in /usr/bin if you installed with --prefix=/usr)." msgstr "" "xchat programının her başlayışında yüklenmesi için autstart-xas scriptini " "çalıştırmanız yeterli olacaktır (--prefix=/usr ile kurduysanız /usr/bin " "dizininde bulunur)." #. type: Plain text #: ../../src/utils/xas/docs/xas.1:16 msgid "B was originally written by niet" msgstr "B başlangıçta niet tarafından yazılmıştır" #~ msgid "January 2010" #~ msgstr "Ocak 2010" amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-zh_TW.add0000644000175000017500000000010612611472361023117 0ustar morphmorphPO4A-HEADER:mode=after;position=^\.TH;beginboundary=^FakePo4aBoundary amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages-zh_TW.po0000644000175000017500000014332412611472361023017 0ustar morphmorph# aMule i18n resource file. # Copyright (C) 2010 - 2011 aMule Team # This file is distributed under the same license as the aMule package. # # Translator: # # Wayne Su , 2011. # msgid "" msgstr "" "Project-Id-Version: aMule Manual zh_TW\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2011-10-31 22:06+0100\n" "PO-Revision-Date: 2011-12-27 14:53+0800\n" "Last-Translator: Wayne Su \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: \n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Poedit-Language: Chinese\n" "X-Poedit-Country: TAIWAN\n" "X-Poedit-SourceCharset: utf-8\n" #. type: TH #: amule.1:1 #, no-wrap msgid "AMULE" msgstr "AMULE" #. type: TH #: amule.1:1 amulecmd.1:1 amuled.1:1 amulegui.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "November 2011" msgstr "2011 十一月" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule v2.3.1" msgstr "aMule v2.3.1" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule" msgstr "aMule" #. type: SH #: amule.1:4 amulecmd.1:5 amuled.1:4 amuleweb.1:4 ed2k.1:4 #: ../../src/utils/aLinkCreator/docs/alc.1:3 #: ../../src/utils/aLinkCreator/docs/alcc.1:4 ../../src/utils/cas/docs/cas.1:4 #: ../../src/utils/wxCas/docs/wxcas.1:3 ../../src/utils/xas/docs/xas.1:3 #, no-wrap msgid "NAME" msgstr "名稱" #. type: Plain text #: amule.1:6 msgid "amule - the all-platform eMule p2p client" msgstr "amule - 跨平台的 eMule P2P 客戶端程式" #. type: SH #: amule.1:6 amulecmd.1:7 amuled.1:6 amulegui.1:6 amuleweb.1:6 ed2k.1:6 #: ../../src/utils/aLinkCreator/docs/alc.1:5 #: ../../src/utils/aLinkCreator/docs/alcc.1:6 ../../src/utils/cas/docs/cas.1:6 #: ../../src/utils/wxCas/docs/wxcas.1:5 ../../src/utils/xas/docs/xas.1:5 #, no-wrap msgid "SYNOPSIS" msgstr "簡介" #. type: Plain text #: amule.1:10 amulegui.1:10 msgid "[B<-c> IpathE>] [B<-geometry> IgeomE>]" msgstr "[B<-c> I路徑E>] [B<-geometry> I視窗狀態E>]" #. type: Plain text #: amule.1:13 amuled.1:15 msgid "[B<-w> IpathE>]" msgstr "[B<-w> I路徑E>]" #. type: Plain text #: amule.1:17 amuled.1:19 msgid "[B<-t> InumE>] [I]" msgstr "[B<-t> I號碼E>] [I]" #. type: SH #: amule.1:24 amulecmd.1:26 amuled.1:25 amulegui.1:20 amuleweb.1:41 ed2k.1:19 #: ../../src/utils/aLinkCreator/docs/alc.1:7 #: ../../src/utils/aLinkCreator/docs/alcc.1:14 #: ../../src/utils/cas/docs/cas.1:14 ../../src/utils/wxCas/docs/wxcas.1:7 #: ../../src/utils/xas/docs/xas.1:7 #, no-wrap msgid "DESCRIPTION" msgstr "說明" #. type: TP #: amule.1:25 amuled.1:26 amulegui.1:24 ed2k.1:21 #: ../../src/utils/cas/docs/cas.1:26 #, no-wrap msgid "B<[ -c> IpathE>, B<--config-dir>=IpathE> B<]>" msgstr "B<[ -c> I路徑E>, B<--config-dir>=I路徑E> B<]>" #. type: Plain text #: amule.1:28 amuled.1:29 amulegui.1:27 ed2k.1:24 #: ../../src/utils/cas/docs/cas.1:29 msgid "Read config from IpathE> instead of home" msgstr "從 IpathE> 讀取設定檔,而不是個人目錄" #. type: TP #: amule.1:28 amulegui.1:27 #, no-wrap msgid "B<[ -geometry >IgeomE> B<]>" msgstr "B<[ -geometry >I視窗狀態E> B<]>" #. type: Plain text #: amule.1:31 amulegui.1:30 msgid "" "Sets the geometry of the app. IgeomE> uses the same format as " "standard X11 apps:\t[B<=>][IwidthE>{B}IheightE>][{B<" "+->}IxoffsetE>{B<+->}IyoffsetE>]" msgstr "" "設定這個應用程式的視窗狀態。I視窗狀態E> 使用和 X11 應用程式一樣的格" "式:\t[B<=>][I寬度E>{B}I高度E>][{B<+->}IX 偏移" "E>{B<+->}IY 偏移E>]" #. type: Plain text #: amule.1:34 amuled.1:42 amulegui.1:33 msgid "Prints log messages to stdout." msgstr "將程式記錄顯示在標準輸出。" #. type: Plain text #: amule.1:37 amuled.1:45 amulegui.1:36 msgid "Resets config to default values." msgstr "將設定重設為預設值。" #. type: TP #: amule.1:37 amuled.1:45 #, no-wrap msgid "B<[ -w> IpathE>, B<--use-amuleweb>=IpathE> B<]>" msgstr "B<[ -w> I路徑E>, B<--use-amuleweb>=I路徑E> B<]>" #. type: Plain text #: amule.1:40 amuled.1:48 msgid "Specify location of amuleweb binary to IpathE>." msgstr "設定 amuleweb 的執行檔位置在 I路徑E>。" #. type: Plain text #: amule.1:43 amuled.1:51 msgid "Does not handle fatal exception." msgstr "不處理嚴重錯誤。" #. type: Plain text #: amule.1:46 amuled.1:54 msgid "Does not disable stdin." msgstr "不停用標準輸入。" #. type: TP #: amule.1:46 amuled.1:54 amulegui.1:39 ed2k.1:24 #, no-wrap msgid "B<[ -t>, B<--category>=InumE> B<]>" msgstr "B<[ -t>, B<--category>=I號碼E> B<]>" #. type: Plain text #: amule.1:49 amuled.1:57 amulegui.1:42 ed2k.1:27 msgid "Set category for passed eD2k links to InumE>" msgstr "給輸入成功的 eD2k 連結分類編號為 I號碼E>" #. type: Plain text #: amule.1:52 amulecmd.1:66 amuled.1:60 amulegui.1:48 amuleweb.1:126 ed2k.1:39 msgid "Displays the current version number." msgstr "顯示目前的版本號碼。" #. type: Plain text #: amule.1:55 amulecmd.1:69 amuled.1:63 amulegui.1:45 amuleweb.1:123 ed2k.1:36 #: ../../src/utils/aLinkCreator/docs/alcc.1:22 #: ../../src/utils/cas/docs/cas.1:32 msgid "Prints a short usage description." msgstr "顯示簡短的使用說明。" #. type: TP #: amule.1:55 amuled.1:63 ed2k.1:39 #, no-wrap msgid "B<[ eD2k-link ]>" msgstr "B<[ eD2k 連結 ]>" #. type: Plain text #: amule.1:58 amuled.1:66 ed2k.1:42 msgid "Adds an eD2k-link to the core." msgstr "將 eD2k 連結加到核心。" #. type: Plain text #: amule.1:60 amulecmd.1:75 amuled.1:68 ed2k.1:44 msgid "The eD2k link to be added can be:" msgstr "可以使用以下幾種 eD2k 連結:" #. type: Plain text #: amule.1:63 amulecmd.1:78 amuled.1:71 ed2k.1:47 msgid "a file link (ed2k://|file|...), it will be added to the download queue;" msgstr "檔案連結 (ed2k://|file|...),會將檔案加入下載等候區;" #. type: Plain text #: amule.1:65 amulecmd.1:80 amuled.1:73 ed2k.1:49 msgid "" "a server link (ed2k://|server|...), it will be added to the server list;" msgstr "伺服器連結 (ed2k://|server|...),會將伺服器加入 aMule 的伺服器清單;" #. type: Plain text #: amule.1:67 amuled.1:75 ed2k.1:51 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list;" msgstr "伺服器清單連結,在清單內的伺服器會被加入 aMule 的伺服器清單;" #. type: Plain text #: amule.1:69 amuled.1:77 msgid "a magnet link." msgstr "magnet 連結。" #. type: SH #: amule.1:70 amulecmd.1:207 amuleweb.1:132 #, no-wrap msgid "NOTES" msgstr "附註" #. type: SS #: amule.1:71 amulecmd.1:208 amuleweb.1:133 #, no-wrap msgid "Paths" msgstr "路徑" #. type: Plain text #: amule.1:75 amulecmd.1:212 amuleweb.1:137 msgid "" "For all options which take a IpathE> value, if the I " "contains no directory part (i.e. just a plain filename), then it is " "considered to be under the aMule configuration directory, I<~/.aMule>." msgstr "" "對於有 I路徑E> 的選項,如果 I<路徑> 裏面沒有含目錄 (即只有單純檔" "名),則會被認為是在 aMule 的設定檔所在目錄 I<~/.aMule> 下。" #. type: SH #: amule.1:75 amulecmd.1:240 amuled.1:78 amuleweb.1:171 ed2k.1:60 #: ../../src/utils/cas/docs/cas.1:36 #, no-wrap msgid "FILES" msgstr "檔案" #. type: Plain text #: amule.1:77 amuled.1:80 msgid "~/.aMule/*" msgstr "~/.aMule/*" #. type: SH #: amule.1:77 amulecmd.1:256 amuled.1:80 amulegui.1:48 amuleweb.1:191 #: ed2k.1:62 ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/aLinkCreator/docs/alcc.1:26 #: ../../src/utils/cas/docs/cas.1:42 ../../src/utils/wxCas/docs/wxcas.1:16 #: ../../src/utils/xas/docs/xas.1:16 #, no-wrap msgid "REPORTING BUGS" msgstr "回報問題" #. type: Plain text #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 msgid "" "Please report bugs either on our forum (I), or in " "our bugtracker (I). Please do not report bugs in e-" "mail, neither to our mailing list nor directly to any team member." msgstr "" "請到我們的論壇 (I) 或錯誤追蹤網站 (I) 回報發現的問題。請不要用 e-mail 或在我們的群組信件中回報,也不要" "直接通知某個團隊成員。" #. type: SH #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 #: ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 #: ../../src/utils/aLinkCreator/docs/alcc.1:29 #: ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 #: ../../src/utils/xas/docs/xas.1:19 #, no-wrap msgid "COPYRIGHT" msgstr "版權" #. type: Plain text #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 msgid "" "aMule and all of its related utilities are distributed under the GNU General " "Public License." msgstr "aMule 與附加的工具程式都遵守 GNU 的 GPL 協定。" #. type: SH #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 #: ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 #: ../../src/utils/aLinkCreator/docs/alcc.1:31 #: ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 #: ../../src/utils/xas/docs/xas.1:21 #, no-wrap msgid "SEE ALSO" msgstr "參考" #. type: SH #: amule.1:84 amulecmd.1:263 amuled.1:87 amulegui.1:55 amuleweb.1:198 #: ed2k.1:69 ../../src/utils/aLinkCreator/docs/alc.1:18 #: ../../src/utils/aLinkCreator/docs/alcc.1:33 #: ../../src/utils/cas/docs/cas.1:49 ../../src/utils/wxCas/docs/wxcas.1:23 #: ../../src/utils/xas/docs/xas.1:23 #, no-wrap msgid "AUTHOR" msgstr "作者" #. type: Plain text #: amule.1:85 amulecmd.1:264 amuled.1:88 amuleweb.1:199 ed2k.1:70 #: ../../src/utils/aLinkCreator/docs/alc.1:19 #: ../../src/utils/aLinkCreator/docs/alcc.1:34 #: ../../src/utils/cas/docs/cas.1:50 ../../src/utils/wxCas/docs/wxcas.1:24 #: ../../src/utils/xas/docs/xas.1:24 msgid "" "This manpage was written by Vollstrecker Eamule@vollstreckernet.deE" msgstr "說明文件撰寫者: Vollstrecker Eamule@vollstreckernet.deE" #. type: TH #: amulecmd.1:1 #, no-wrap msgid "AMULECMD" msgstr "AMULECMD" #. type: TH #: amulecmd.1:1 #, no-wrap msgid "aMuleCmd v2.3.1" msgstr "aMuleCmd v2.3.1" #. type: TH #: amulecmd.1:1 amuleweb.1:1 ed2k.1:1 #: ../../src/utils/aLinkCreator/docs/alc.1:1 #: ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 #: ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "aMule utilities" msgstr "aMule 的工具程式" #. type: Plain text #: amulecmd.1:7 msgid "amulecmd - Console-based program to control aMule" msgstr "amulecmd - 終端機模式下控制 aMule 的程式" #. type: Plain text #: amulecmd.1:13 amuleweb.1:12 msgid "" "[B<-h> IhostE>] [B<-p> IportE>] [B<-P> " "IpasswordE>] [B<-f> IpathE>]" msgstr "" "[B<-h> I主機E>] [B<-p> I通訊埠E>] [B<-P> I密碼" "E>] [B<-f> I路徑E>]" #. type: Plain text #: amulecmd.1:17 msgid "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> IcommandE>]" "B< >}" msgstr "" "[B<-l> I語言E>] {B< >[B<-w>]B< >|B< >[B<-c> I指令E>]B< >}" #. type: Plain text #: amulecmd.1:20 amuleweb.1:31 msgid "[B<--create-config-from>=IpathE>]" msgstr "[B<--create-config-from>=I路徑E>]" #. type: Plain text #: amulecmd.1:29 msgid "B is a console-based client to control aMule." msgstr "B 是終端機模式下控制 aMule 的的客戶端程式。" #. type: TP #: amulecmd.1:29 amuleweb.1:46 #, no-wrap msgid "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" msgstr "B<[ -h> I主機E>, B<--host>=I主機E> B<]>" #. type: Plain text #: amulecmd.1:33 amuleweb.1:50 msgid "" "Host where aMule is running (default: I). IhostE> " "might be an IP address or a DNS name" msgstr "" "正在執行 aMule 核心的主機 (預設:I<本機>), I主機E> 可以是 IP 位址" "或網域名稱" #. type: TP #: amulecmd.1:33 amuleweb.1:50 #, no-wrap msgid "B<[ -p> IportE>, B<--port>=IportE> B<]>" msgstr "B<[ -p> I通訊埠E>, B<--port>=I通訊埠E> B<]>" #. type: Plain text #: amulecmd.1:36 amuleweb.1:53 msgid "" "aMule's port for External Connections, as set in Preferences-ERemote " "Controls (default: I<4712>)" msgstr "" "aMule 外部連線用的通訊埠,在 偏好設定 E 遠端控制 設定 (預設:I<4712>)" #. type: TP #: amulecmd.1:36 amuleweb.1:53 #, no-wrap msgid "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" msgstr "B<[ -P> I密碼E>, B<--password>=I密碼E> B<]>" #. type: Plain text #: amulecmd.1:39 amuleweb.1:56 msgid "External Connections password." msgstr "外部連線密碼。" #. type: TP #: amulecmd.1:39 amuleweb.1:56 #, no-wrap msgid "B<[ -f> IpathE>, B<--config-file>=IpathE> B<]>" msgstr "B<[ -f> I路徑E>, B<--config-file>=I路徑E> B<]>" #. type: Plain text #: amulecmd.1:43 amuleweb.1:60 msgid "" "Use the given configuration file. Default configuration file is I<~/.aMule/" "remote.conf>" msgstr "使用指定的設定檔,預設是 I<~/.aMule/remote.conf>" #. type: Plain text #: amulecmd.1:46 amuleweb.1:63 msgid "Do not print any output to stdout." msgstr "不將任何資訊顯示在標準輸出。" #. type: Plain text #: amulecmd.1:50 amuleweb.1:67 msgid "Be verbose - show also debug messages." msgstr "詳細模式 - 也顯示除錯訊息。" #. type: TP #: amulecmd.1:50 amuleweb.1:67 #, no-wrap msgid "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" msgstr "B<[ -l> I語言E>, B<--locale>=I語言E> B<]>" #. type: Plain text #: amulecmd.1:54 amuleweb.1:71 msgid "" "Sets program locale (language). See the B section for the " "description of the IlangE> parameter." msgstr "" "設定程式的語系 (語言)。請看 B<附註> 章節裏關於 I語言E> 參數的說明。" #. type: Plain text #: amulecmd.1:57 amuleweb.1:74 msgid "Write command line options to config file and exit" msgstr "將命令列選項寫入設定檔後離開" #. type: TP #: amulecmd.1:57 #, no-wrap msgid "B<[ -c> IcommandE>, B<--command>=IcommandE> B<]>" msgstr "B<[ -c> I指令E>, B<--command>=I指令E> B<]>" #. type: Plain text #: amulecmd.1:60 msgid "" "Execute IcommandE> as if it was entered at amulecmd's prompt and " "exit." msgstr "像在 amulecmd 的命令列模式下一樣,執行 I指令E> 後離開。" #. type: TP #: amulecmd.1:60 amuleweb.1:117 #, no-wrap msgid "B<[ --create-config-from>=IpathE> B<]>" msgstr "B<[ --create-config-from>=I路徑E> B<]>" #. type: Plain text #: amulecmd.1:63 amuleweb.1:120 msgid "" "Create config file based upon IpathE>, which must point to a valid " "aMule config file, and then exit." msgstr "" "參考 IpathE> 裏的資料來建立設定檔後離開。(IpathE> 裏必須" "有有效的 aMule 設定檔)" #. type: SH #: amulecmd.1:69 #, no-wrap msgid "COMMANDS" msgstr "指令" #. type: Plain text #: amulecmd.1:71 msgid "All commands are case insensitive." msgstr "所有指令都不分大小寫。" #. type: SS #: amulecmd.1:71 #, no-wrap msgid "Add IeD2k-linkE> | Imagnet-linkE>" msgstr "Add IeD2k 連結E> | Imagnet 連結E>" #. type: Plain text #: amulecmd.1:73 msgid "Adds an eD2k-link or a magnet-link to the core." msgstr "將 eD2k 連結或 magnet 加到核心。" #. type: Plain text #: amulecmd.1:82 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list." msgstr "伺服器清單,所有在這個清單內的伺服器都會被加到 aMule 的伺服器清單。" #. type: Plain text #: amulecmd.1:85 msgid "The magnet link must contain the eD2k hash and file length." msgstr "magnet 連結裏必須包含 eD2k 的 hash 值和檔案大小。" #. type: SS #: amulecmd.1:85 #, no-wrap msgid "Cancel IhashE> | InumberE>" msgstr "Cancel Ihash 值E> | I編號E>" #. type: Plain text #: amulecmd.1:87 msgid "" "Cancels the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "取消下載指定的檔案,指定方式:Ihash 值E> 或 I編號E>;要查" "詢數值請用 B。" #. type: SS #: amulecmd.1:87 #, no-wrap msgid "Connect [ I | I | Iip|nameE> ]" msgstr "connect [ I | I | IIP | 網域名稱E> ]" #. type: Plain text #: amulecmd.1:89 msgid "Connect to the network." msgstr "連線到網路。" #. type: Plain text #: amulecmd.1:91 msgid "This will connect to all networks that are enabled in Preferences." msgstr "這樣將會連線到在偏好設定中啟用的所有網路。" #. type: Plain text #: amulecmd.1:95 msgid "" "With the optional parameter you can specify which network to connect to. " "Giving a server address in the form of IP:Port (where IP is either a dotted " "decimal IPv4 address or a resolvable DNS name) aMule will connect to that " "server only." msgstr "" "用這個選項參數,你可以指定要連線到哪個網路:用「IP:port」格式指定伺服器的位" "址 (IP 可以用有小數點的十進位 IPv4 網址,或是可從 DNS 轉換的網域名稱),aMule " "就會只連線到那個伺服器。" #. type: Plain text #: amulecmd.1:98 msgid "" "Disconnect from all networks you are connected to, or just disconnect from " "the specified network." msgstr "中斷所有已連線的網路,或只中斷指定的網路連線。" #. type: SS #: amulecmd.1:98 #, no-wrap msgid "Download InumberE>" msgstr "download I編號E>" #. type: Plain text #: amulecmd.1:100 msgid "Start downloading a file." msgstr "開始下載檔案。" #. type: Plain text #: amulecmd.1:104 msgid "" "The InumberE> of a file from the last search has to be given. " "Example: `download 12' will start to download the file with the number 12 of " "the previous search." msgstr "" "I編號E> 指上次搜尋檔案時的結果。例如:「download 12」會下載上次搜尋" "時編號 12 的檔案。" #. type: Plain text #: amulecmd.1:106 msgid "Disconnect from amule/amuled and quit amulecmd." msgstr "始 amule/amuled 斷線,並離開 amulecmd。" #. type: SS #: amulecmd.1:106 #, no-wrap msgid "Get IwhatE>" msgstr "get I目標E>" #. type: Plain text #: amulecmd.1:108 msgid "Get and display a preference value." msgstr "取得並顯示某個偏好設定的值。" #. type: Plain text #: amulecmd.1:110 amulecmd.1:144 amulecmd.1:173 amulecmd.1:183 msgid "Available values for IwhatE>:" msgstr "I目標E> 參數可用的值:" #. type: Plain text #: amulecmd.1:113 msgid "Get bandwidth limits." msgstr "取得頻寬限制。" #. type: Plain text #: amulecmd.1:115 msgid "Get IPFilter preferences." msgstr "取得 IP 過濾器的偏好設定。" #. type: SS #: amulecmd.1:116 #, no-wrap msgid "Help [ IcommandE> ]" msgstr "help [ I命令E> ]" #. type: Plain text #: amulecmd.1:120 msgid "" "Prints a short usage description. If called without parameter, it shows a " "list of available commands. If called with IcommandE>, it shows a " "short description of the given command." msgstr "" "顯示使用說明。如果沒有加參數,會顯示可用的指令一覽;如果加了 I指令" "E> 參數,會顯示該指令的簡單說明。" #. type: SS #: amulecmd.1:120 #, no-wrap msgid "Pause IhashE> | InumberE>" msgstr "pause Ihash 值E> | I編號E>" #. type: Plain text #: amulecmd.1:122 msgid "" "Pauses the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "暫停下載指定的檔案,指定方式:Ihash 值E> 或 I編號E>;要查" "詢數值請用 B。" #. type: SS #: amulecmd.1:122 #, no-wrap msgid "Priority IpriorityE> IhashE> | InumberE>" msgstr "priority I優先程度E> Ihash 值E> | I編號E>" #. type: Plain text #: amulecmd.1:124 msgid "" "Set priority of a download specified by IhashE> or " "InumberE>." msgstr "用 Ihash 值E> 或 I編號E> 設定下載檔案的優先程度。" #. type: Plain text #: amulecmd.1:126 msgid "Available values for IpriorityE>:" msgstr "可用在 I優先度E> 的參數:" #. type: Plain text #: amulecmd.1:129 msgid "Automatic priority." msgstr "自動優先權。" #. type: Plain text #: amulecmd.1:131 msgid "High priority." msgstr "高優先權。" #. type: Plain text #: amulecmd.1:133 msgid "Low priority." msgstr "低優先權。" #. type: Plain text #: amulecmd.1:135 msgid "Normal priority." msgstr "一般優先權。" #. type: Plain text #: amulecmd.1:138 msgid "Shows the progress of an on-going search." msgstr "顯示正在進行中的搜尋進度。" #. type: Plain text #: amulecmd.1:140 msgid "A synonim of the B command." msgstr "功能和 B 一樣的指令。" #. type: SS #: amulecmd.1:140 #, no-wrap msgid "Reload IwhatE>" msgstr "reload I目標E>" #. type: Plain text #: amulecmd.1:142 msgid "Reloads a given object." msgstr "重新載入指定的物件。" #. type: Plain text #: amulecmd.1:147 msgid "Reload shared files list." msgstr "重新載入分享檔案清單。" #. type: Plain text #: amulecmd.1:149 msgid "Reload IP filter tables." msgstr "重新載入 IP 過濾器資料。" #. type: Plain text #: amulecmd.1:152 msgid "Reset the log." msgstr "清除記錄。" #. type: Plain text #: amulecmd.1:154 msgid "Shows you the results of the last search." msgstr "顯示上次搜尋的結果。" #. type: SS #: amulecmd.1:154 #, no-wrap msgid "Resume IhashE> | InumberE>" msgstr "resume Ihash 值E> | I編號E>" #. type: Plain text #: amulecmd.1:156 msgid "" "Resumes the download specified by IhashE> or InumberE>. " "To get the value use B." msgstr "" "繼續下載指定的檔案,指定方式:Ihash 值E> 或 I編號E>;要查" "詢數值請用 B。" #. type: SS #: amulecmd.1:156 #, no-wrap msgid "Search ItypeE> IkeywordE>" msgstr "search I種類E> I關鍵字E>" #. type: Plain text #: amulecmd.1:159 msgid "" "Makes a search for the given IkeywordE>. A search type and a " "keyword to search is mandatory to do this. Example: `search kad amule' " "performs a kad search for `amule'." msgstr "" "用指定的 I關鍵字E> 搜尋。必須要有搜尋的「種類」加上「關鍵字」,例" "如:「search kad amule」會開始在 KAD 網路搜尋「amule」。" #. type: Plain text #: amulecmd.1:161 msgid "Available search types:" msgstr "可用的搜尋類型:" #. type: Plain text #: amulecmd.1:164 msgid "Performs a global search." msgstr "開始在全球伺服器搜尋。" #. type: Plain text #: amulecmd.1:166 msgid "Performs a search on the Kademlia network." msgstr "開始在 Kad 搜尋。" #. type: Plain text #: amulecmd.1:168 msgid "Performs a local search." msgstr "開始在本地伺服器搜尋。" #. type: SS #: amulecmd.1:169 #, no-wrap msgid "Set IwhatE>" msgstr "set I目標E>" #. type: Plain text #: amulecmd.1:171 msgid "Sets a given preferences value." msgstr "設定指定的偏好設定值。" #. type: Plain text #: amulecmd.1:176 msgid "Set bandwidth limits." msgstr "設定頻寬限制。" #. type: Plain text #: amulecmd.1:178 msgid "Set IPFilter preferences." msgstr "設定 IP過濾器的偏好設定。" #. type: SS #: amulecmd.1:179 #, no-wrap msgid "Show IwhatE>" msgstr "show I目標E>" #. type: Plain text #: amulecmd.1:181 msgid "Shows upload/download queue, servers list or shared files list." msgstr "顯示 上傳/下載 等候區、伺服器清單 或 分享檔案清單。" #. type: Plain text #: amulecmd.1:186 msgid "Show download queue." msgstr "顯示下載等候區。" #. type: Plain text #: amulecmd.1:188 msgid "Show log." msgstr "顯示記錄。" #. type: Plain text #: amulecmd.1:190 msgid "Show servers list." msgstr "顯示伺服器清單。" #. type: Plain text #: amulecmd.1:192 msgid "Show upload queue." msgstr "顯示上傳等候區。" #. type: Plain text #: amulecmd.1:196 msgid "" "Shutdown the remote running core (amule/amuled). This will also shut down " "the text client, since it is unusable without a running core." msgstr "" "關閉在遠端執行的核心 (amule/amuled)。這樣也會關閉文字模式客戶端程式,因為不能" "在沒有核心下執行。" #. type: SS #: amulecmd.1:196 #, no-wrap msgid "Statistics [ InumberE> ]" msgstr "statistics [ I號字E> ]" #. type: Plain text #: amulecmd.1:198 msgid "Show statistics tree." msgstr "顯示統計資訊。" #. type: Plain text #: amulecmd.1:202 msgid "" "The optional InumberE> in the range of 0-255 can be passed as " "argument to this command, which tells how many entries of the client version " "subtree should be shown. Passing 0, or omitting it means `unlimited'." msgstr "" "I編號E> 是這個指令的參數之一,用來指定要顯示多少個客戶端程式的版本" "附加版本;須為 0-255 的數字,輸入 0 或略過不輸入則表示「不限」。" #. type: Plain text #: amulecmd.1:205 msgid "" "Example: `statistics 5' will show only the top 5 versions for each client " "type." msgstr "範例:「statistics 5」只會顯示每個客戶端種類的前 5 個版本。" #. type: Plain text #: amulecmd.1:207 msgid "Show connection status, current up/download speeds, etc." msgstr "顯示 連線狀態、目前的上傳/下載速度 等等。" #. type: SS #: amulecmd.1:212 amuleweb.1:137 #, no-wrap msgid "Languages" msgstr "語言" #. type: Plain text #: amulecmd.1:218 amuleweb.1:143 msgid "" "The IlangE> parameter for the B<-l> option has the following form: " "I[B<_>I][B<.>I][B<@>I] where I is the " "primary language, I is a sublanguage/territory, I is the " "character set to use and I allows the user to select a specific " "instance of localization data within a single category." msgstr "" "B<-l> 選項的 I語系E> 參數有以下幾種樣式:I[B<_>I][B<." ">I][B<@>I]。其中:I 是主要的語系代碼,I 是語" "系次分類、使用地區代碼,I 是使用的編碼,I 則讓使用者用一" "個代號就指定一組語系設定。例如:「zh_TW.UTF-8@Taiwan」" #. type: Plain text #: amulecmd.1:220 amuleweb.1:145 msgid "For example, the following strings are valid:" msgstr "例如,以下的字串都有效:" #. type: Plain text #: amulecmd.1:234 amuleweb.1:159 msgid "" "Though all the above strings are accepted as valid language definitions, " "I and I are yet unused." msgstr "" "雖然上面這些都是合於規定的語系設定參數,但 I 和 I 目前已" "經沒在使用了。" #. type: Plain text #: amulecmd.1:237 amuleweb.1:162 msgid "" "In addition to the format above, you can also specify full language names in " "English - so B<-l german> is also valid and is equal to B<-l de_DE>." msgstr "" "你也可以使用完整的英文名稱來設定語系,例如:B<-l german> 也等於 B<-l de_DE>。" #. type: Plain text #: amulecmd.1:240 amuleweb.1:165 msgid "" "When no locale is defined, either on command-line or in config file, system " "default language will be used." msgstr "沒有在命令列或設定檔中設定語系時,會使用系統預設語言。" #. type: Plain text #: amulecmd.1:242 amuleweb.1:173 msgid "~/.aMule/remote.conf" msgstr "~/.aMule/remote.conf" #. type: SH #: amulecmd.1:242 amuleweb.1:177 #, no-wrap msgid "EXAMPLE" msgstr "範例" #. type: Plain text #: amulecmd.1:244 msgid "Typically amulecmd will be first run as:" msgstr "通常 amulecmd 會優先以這樣執行:" #. type: Plain text #: amulecmd.1:246 msgid "B B<-h> I B<-p> I B<-P> I B<-w>" msgstr "" "B B<-h> I<主機名稱> B<-p> I<外部連線通訊埠> B<-P> I<外部連線密碼> " "B<-w>" #. type: Plain text #: amulecmd.1:248 amuleweb.1:183 msgid "or" msgstr "或" #. type: Plain text #: amulecmd.1:250 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" #. type: Plain text #: amulecmd.1:252 amuleweb.1:187 msgid "" "These will save settings to I<$HOME/.aMule/remote.conf>, and later you only " "need to type:" msgstr "這樣就會將設定儲存到 I<$HOME/.aMule/remote.conf>,然後你只需要再輸入:" #. type: Plain text #: amulecmd.1:256 msgid "Of course, you don't have to follow this example." msgstr "當然,你可以不必都遵照這個範例。" #. type: TH #: amuled.1:1 #, no-wrap msgid "AMULED" msgstr "AMULED" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon v2.3.1" msgstr "aMule Daemon v2.3.1" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon" msgstr "aMule Daemon" #. type: Plain text #: amuled.1:6 msgid "amuled - the all-platform eMule p2p client - daemonized version" msgstr "amuled - 跨平台的 eMule P2P 客戶端程式 背景常駐程式版" #. type: Plain text #: amuled.1:9 ../../src/utils/cas/docs/cas.1:11 msgid "[B<-c> IpathE>]" msgstr "[B<-c> I路徑E>]" #. type: Plain text #: amuled.1:11 msgid "[B<-p> IpathE>]" msgstr "[B<-p> I路徑E>]" #. type: Plain text #: amuled.1:32 msgid "Forks to background." msgstr "在背景開啟新程式。" #. type: TP #: amuled.1:32 #, no-wrap msgid "B<[ -p> IpathE>, B<--pid-file>=IpathE> B<]>" msgstr "B<[ -p> I路徑E>, B<--pid-file>=I路徑E> B<]>" #. type: Plain text #: amuled.1:36 msgid "" "After fork, create a pid-file in the IpathE>. IpathE> " "has to contain the filename." msgstr "" "開啟新程式後,在 I路徑E> 下建立 pid 檔案。I路徑E> 裏必須" "有檔案名稱。" #. type: Plain text #: amuled.1:39 msgid "Configure EC (External Connections)." msgstr "設定 EC (外部連線)。" #. type: TH #: amulegui.1:1 #, no-wrap msgid "AMULEGUI" msgstr "AMULEGUI" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI v2.3.1" msgstr "aMuleGUI v2.3.1" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI" msgstr "aMuleGUI" #. type: Plain text #: amulegui.1:6 msgid "amulegui - aMule control program with GUI" msgstr "amulegui - 圖形介面的 aMule 控制程式" #. type: Plain text #: amulegui.1:14 msgid "[B<-t> InumE>]" msgstr "[B<-t> I號碼E>]" #. type: Plain text #: amulegui.1:24 msgid "" "B is a client program, and can be connected to amule or amuled via " "EC. You can manage your amule program with it. It provides almost the same " "functionalities as amule, even if the core works on another computer." msgstr "" "B 是個客戶端程式,可以經由外部連線和 amule 或 amuled 連線,可以用它" "來管理 amule 程式。甚至就算核心程式是在別台電腦上執行時,它也能提供和 amule " "幾乎一樣的功能。" #. type: Plain text #: amulegui.1:39 msgid "Skip connection dialog." msgstr "跳過連線對話。" #. type: Plain text #: amulegui.1:57 msgid "" "This manpage was written by Julien Delange for Debian Ejulien AT gunnm " "DOT orgE" msgstr "" "說明文件撰寫者: Julien Delange for Debian Ejulien AT gunnm DOT orgE" #. type: Plain text #: amulegui.1:58 msgid "" "This manpage was rewritten by Vollstrecker Eamule@vollstreckernet.deE" msgstr "說明文件撰寫者: Vollstrecker Eamule@vollstreckernet.deE" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "AMULEWEB" msgstr "AMULEWEB" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "aMule webserver v2.3.1" msgstr "aMule webserver v2.3.1" #. type: Plain text #: amuleweb.1:6 msgid "amuleweb - aMule web server" msgstr "amuleweb - aMule 網頁伺服器" #. type: Plain text #: amuleweb.1:15 msgid "[B<-l> IlangE>]" msgstr "[B<-l> I語言E>]" #. type: Plain text #: amuleweb.1:18 msgid "[B<-t> InameE>] [B<-s> IportE>]" msgstr "[B<-t> I名稱E>] [B<-s> I通訊埠tE>]" #. type: Plain text #: amuleweb.1:20 msgid "[B<-U> IportE>]" msgstr "[B<-U> I通訊埠E>]" #. type: Plain text #: amuleweb.1:24 msgid "[B<-A> IpasswordE>] [B<-G> IpasswordE>]" msgstr "[B<-A> I密碼E>] [B<-G> I密碼E>]" #. type: Plain text #: amuleweb.1:40 msgid "[B<--amule-config-file>=IpathE>]" msgstr "[B<--amule-config-file>=I路徑E>]" #. type: Plain text #: amuleweb.1:46 msgid "" "B manages your access to amule through a web browser. You can " "start amuleweb together with B(1), or separately, any time later. " "Options can be specified via command-line or via config-file. Command-line " "options take precedence over config-file options." msgstr "" "B 可以經由網頁瀏覽器來管理 amule。你可以和 B(1) 一起執行 " "amuleweb,也可以稍候再另外執行。可以在命令列或是用用設定檔指定參數,命令列參" "數會優先於設定檔的參數。" #. type: TP #: amuleweb.1:74 #, no-wrap msgid "B<[ -t> InameE>, B<--template>=InameE> B<]>" msgstr "B<[ -t> I名稱E>, B<--template>=I名稱E> B<]>" #. type: Plain text #: amuleweb.1:77 msgid "" "Loads the template named InameE>. See the B section " "for details." msgstr "載入 I名稱E> 這個模板。詳細請參考 B<外觀面板支援> 章節。" #. type: TP #: amuleweb.1:77 #, no-wrap msgid "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" msgstr "B<[ -s> I通訊埠E>, B<--server-port>=I通訊埠E> B<]>" #. type: Plain text #: amuleweb.1:80 msgid "" "Webserver's HTTP port. This is the port you must point your browser to " "(default: I<4711>)." msgstr "" "網頁伺服器的 HTTP 連接埠:要用瀏覽器連線時必須加以指定 (預設:I<4711>)。" #. type: Plain text #: amuleweb.1:84 msgid "Enable UPnP." msgstr "啟用 UPnP。" #. type: TP #: amuleweb.1:84 #, no-wrap msgid "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" msgstr "B<[ -U> I通訊埠E>, B<--upnp-port> I通訊埠E> B<]>" #. type: Plain text #: amuleweb.1:87 msgid "UPnP port." msgstr "UPnP 通訊埠。" #. type: Plain text #: amuleweb.1:90 msgid "Enables using gzip compression in HTTP traffic to save bandwidth." msgstr "在 HTTP 傳輸時啟用 gzip 壓縮以節省頻寬。" #. type: Plain text #: amuleweb.1:93 msgid "Disables using gzip compression (this is the default)." msgstr "停用 gzip 壓縮 (這是預設值)。" #. type: TP #: amuleweb.1:93 #, no-wrap msgid "B<[ -A> IpasswdE>, B<--admin-pass>=IpasswdE> B<]>" msgstr "B<[ -A> I密碼E>, B<--admin-pass>=I密碼E> B<]>" #. type: Plain text #: amuleweb.1:96 msgid "Full access password for webserver." msgstr "網站伺服器的完整存取密碼。" #. type: TP #: amuleweb.1:96 #, no-wrap msgid "B<[ -G> IpasswdE>, B<--guest-pass>=IpasswdE> B<]>" msgstr "B<[ -G> I密碼E>, B<--guest-pass>=I密碼E> B<]>" #. type: Plain text #: amuleweb.1:99 msgid "Guest password for webserver." msgstr "網站伺服器的訪客密碼。" #. type: Plain text #: amuleweb.1:102 msgid "Allows guest access." msgstr "允許訪客連線。" #. type: Plain text #: amuleweb.1:105 msgid "Denies guest access (default)." msgstr "禁止訪客連線 (預設)。" #. type: Plain text #: amuleweb.1:111 msgid "" "Load/save webserver settings from/to remote aMule. This causes amuleweb to " "ignore command-line and config-file settings, and load them from aMule. " "When saving preferences none will be written to the config file, but to " "aMule. (Of course, this works only for those settings that can be set in " "aMule's Preferences-ERemote Controls.)" msgstr "" "從遠端的 aMule 載入網頁伺服器設定/將設定儲存到遠端。這個會使 amuleweb 忽略命" "令列與設定檔內的設定、並從遠端載入新設定;儲存時則只會寫入遠端 aMule 的設定。" "(當然,只限於 aMule 的 偏好設定 E 遠端控制 裏的幾個設定項目)" #. type: Plain text #: amuleweb.1:114 msgid "Disable PHP interpreter (deprecated)" msgstr "停用 PHP 解譯器 (不建議)" #. type: Plain text #: amuleweb.1:117 msgid "Recompiles PHP pages on each request." msgstr "爲每個要求重編譯 PHP 頁面。" #. type: TP #: amuleweb.1:126 #, no-wrap msgid "B<[ --amule-config-file>=IpathE> B<]>" msgstr "B<[ --amule-config-file>=I路徑E> B<]>" #. type: Plain text #: amuleweb.1:132 msgid "" "aMule config file path. B aMule uses this option when " "starting amuleweb at aMule startup. This option causes all other command-" "line and config-file settings to be ignored, preferences to be read from the " "given config file, and also implies the B<-q -L> options." msgstr "" "aMule 設定擋路徑。B<請不要直接使用!>這個選項會導致原有命令列和設定檔的設定都" "被忽略都被忽略。 啟動 aMule 後在開啟 amuleweb 時會用這個選項,從指定的設定檔" "讀取偏好設定,並自行加上 B<-q -L> 選項。" #. type: SH #: amuleweb.1:165 #, no-wrap msgid "SKIN SUPPORT" msgstr "外觀面板支援" #. type: Plain text #: amuleweb.1:169 msgid "" "B is capable of displaying information in different skins. These " "skins are called templates, and you can make amuleweb load a specific " "template via the B<-t> command line option. Templates are searched in two " "places: first in I<~/.aMule/webserver/> and then in I if you installed with --prefix=/usr." msgstr "" "B 可以用不同的外觀面板顯示資訊;這些面板稱為「模板」,你可以用在命" "令列用 B<-t> 選項讓 amuleweb 載入指定的模板。程式會在兩個地方搜尋模板:先從 " "I<~/.aMule/webserver/>,然後如果是用 --prefix=/usr 安裝程式,就會再到 I 搜尋。" #. type: Plain text #: amuleweb.1:171 msgid "" "Each template must be in a subdirectory of the template name, and this " "directory must contain all files the template needs." msgstr "" "每個模板都必須被放在以該模板名稱命名的子目錄下,這個目錄裏也必須包含所有模板" "需要的檔案。" #. type: Plain text #: amuleweb.1:175 msgid "~/.aMule/webserver/" msgstr "~/.aMule/webserver/" #. type: Plain text #: amuleweb.1:177 msgid "I<$(pkgdatadir)>/webserver/" msgstr "I<$(pkgdatadir)>/webserver/" #. type: Plain text #: amuleweb.1:179 msgid "Typically amuleweb will be first run as:" msgstr "通常 amuleweb 會優先以這樣執行:" #. type: Plain text #: amuleweb.1:181 msgid "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" msgstr "" "B B<-h> I<主機名稱> B<-p> I<外部連線通訊埠> B<-P> I<外部連線密碼> " "B<-s> I B<-A> I<管理者密碼> B<-w>" #. type: Plain text #: amuleweb.1:185 msgid "B B<--create-config-from>=I" msgstr "" "B B<--create-config-from>=I" #. type: Plain text #: amuleweb.1:191 msgid "" "Of course, you may specify any more or less options on the first example " "line, and you may also totally omit it." msgstr "" "當然,你可以指定比第一行範例裏更多或更少的選項,甚至您也可以完全不使用。" #. type: TH #: ed2k.1:1 #, no-wrap msgid "ED2K" msgstr "ED2K" #. type: TH #: ed2k.1:1 #, no-wrap msgid "aMule eD2k link parser v1.5.1" msgstr "aMule 的 eD2k 連結分析程式 v1.5.1" #. type: Plain text #: ed2k.1:6 msgid "ed2k - aMule eD2k link parser" msgstr "ed2k - aMule 的 eD2k 連結分析程式" #. type: Plain text #: ed2k.1:10 msgid "[B<-c> IpathE>] [B<-t> InumE>]" msgstr "[B<-c> I路徑E>] [B<-t> I號碼E>]" #. type: Plain text #: ed2k.1:13 msgid "IeD2k-linkE>" msgstr "IeD2k 連結E>" #. type: Plain text #: ed2k.1:21 msgid "" "Sends the given IeD2k-linkE> to aMule, i.e. writes it to the file " "~/.aMule/ED2KLinks, which will be checked by aMule every second for links." msgstr "" "將指定的 IeD2k 連結E> 傳送給 aMule,會寫入 aMule 隨時都在檢查有無新" "增連結的 ~/.aMule/ED2KLinks 檔案裏。" #. type: Plain text #: ed2k.1:30 msgid "" "Loads all link found in the emulecollection given as Ied2k-linkE>" msgstr "載入所有以 IeD2k 連結E> 方式指定的 eMule 收藏庫裏找到的連結" #. type: Plain text #: ed2k.1:33 msgid "" "Lists all link found in the emulecollection given as Ied2k-linkE>" msgstr "列出所有以 IeD2k 連結E> 方式指定的 eMule 收藏庫裏找到的連結" #. type: Plain text #: ed2k.1:53 msgid "a magnet link;" msgstr "magnet 連結;" #. type: Plain text #: ed2k.1:55 msgid "an emulecollection file." msgstr "eMule 收藏庫檔案。" #. type: Plain text #: ed2k.1:60 msgid "" "B You can give " "more than one link, and every link can have it's own params. For example " "Blink1E -t2 Elink2E> will download Ilink1E> " "in standard category and Ilink2E> in category 2." msgstr "" "B<指定參數時的順序很重要。>你可以指定兩個以上的連結、每個連結都有自己的參數。" "例如:B連結一E -t2 E連結二E> 會將 I連結一E> " "放在「預設分類」、將 I連結二E> 放在「分類2」。" #. type: Plain text #: ed2k.1:62 msgid "~/.aMule/ED2KLinks" msgstr "~/.aMule/ED2KLinks" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "ALC" msgstr "ALC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "aLinkCreator" msgstr "aLinkCreator" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:5 msgid "aLinkCreator - the aMule eD2k link creator" msgstr "aLinkCreator - aMule 的 eD2k 連結建立程式" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:9 msgid "" "B is a graphical utility to create an eD2k link to any file on your " "computer." msgstr "B 是可以用來建立你電腦上任何檔案的 eD2k 連結的圖形介面工具程式。" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:11 #: ../../src/utils/wxCas/docs/wxcas.1:16 msgid "This app doesn't take any arguments." msgstr "這個應用程式不接受任何引數。" #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "ALCC" msgstr "ALCC" #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "aMule eD2k links calculator" msgstr "aMule 的 eD2k 連結計算程式" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:6 msgid "alcc - text based eD2k links calculator for aMule" msgstr "alcc - aMule 的文字介面 eD2k 連結計算程式" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:11 msgid "Iinputfiles_listE>" msgstr "Ii輸入檔案清單E>" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:16 msgid "" "Compute the eD2k links of all the input files given in the " "Iinputfiles_listE> (There can be one or more files)." msgstr "" "計算 I輸入檔案清單E> 裏所有檔案的 eD2k 連結。(可接受一個或多個檔案)" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:19 msgid "Compute and add part hashes to the computed eD2k links." msgstr "計算並將暫存檔 hash 值新增到已計算好的 eD2k 連結裏。" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:26 msgid "Be verbose - show also calculation steps." msgstr "詳細模式 - 也顯示計算的過程。" #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "CAS" msgstr "CAS" #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "cas v0.8" msgstr "cas v0.8" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:6 msgid "cas - c aMule statistics" msgstr "cas - 以 C 語言撰寫的 aMule 統計資訊程式" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:18 msgid "" "B is a program for displaying the contents of your aMule online " "signature file to console (in a human readable form). For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B 是可以在終端機界面以人類可閱讀的形式顯示你的 aMule 線上簽名識別檔的程" "式。要使用這個功能,你必須在偏好設定裏啟用「線上簽名識別」。" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:22 msgid "" "Writes the online signature picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "除存線上簽名識別圖片。你也可以在選項中加入 I<=E路徑E> 來指定要儲存的地" "方。" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:26 msgid "" "HTML page with stats and picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" "有統計資訊與圖片的 HTML 檔案。你也可以在選項中加入 I<=E路徑E> 來指定要" "儲存的地方。" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:34 msgid "Without any options, it prints online signature data to stdout." msgstr "如果沒有選項,會在標準輸出顯示線上簽名識別。" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:36 msgid "B was written by Pedro de Oliveira Efalso@rdk.homeip.netE" msgstr "B 的作者:Pedro de Oliveira Efalso@rdk.homeip.netE" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:38 msgid "~/.aMule/casrc" msgstr "~/.aMule/casrc" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:40 msgid "stat.png" msgstr "stat.png" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:42 msgid "tmp.html" msgstr "tmp.html" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "WXCAS" msgstr "WXCAS" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "wxCas" msgstr "wxCas" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:5 msgid "wxcas - wx c aMule statistics" msgstr "wxcas - 以 C 語言、wxWidgets 撰寫的 aMule 統計資訊程式" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:11 msgid "" "B is a program for displaying the contents of your online signature " "file in a nice wx Window on your Desktop. For this to work, you must enable " "the \"Online Signature\" option in aMule's preferences." msgstr "" "B 是可以在桌面以更佳的 wx 視窗顯示你的 aMule 線上簽名識別檔的程式。要" "使用這個功能,你必須在偏好設定裏啟用「線上簽名識別」。" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:14 msgid "" "Based on Pedro de Oliveira's B(1). B was written by ThePolish " "Ethepolish@vipmail.ruE" msgstr "" "改寫自 Pedro de Oliveira 的 B(1), B的作者:ThePolish " "Ethepolish@vipmail.ruE" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "XAS" msgstr "XAS" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "xas v1.9" msgstr "xas v1.9" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:5 msgid "xas - X-Chat aMule Statistics" msgstr "xas - 用於 X-Chat 的 aMule 統計資訊程式" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:7 msgid "B" msgstr "B<無>" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:12 msgid "" "B is a plugin for xchat. For loading see your xchat documentation. " "After loading type /xas and it will send statistics to the channel you are " "in. These are taken from your Online Signature file. For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" "B 是 xchat 的插件,請參考你的 xchat 相關文件以瞭解如何載入。載入之後,輸" "入 /xas 就會把從你的線上簽名識別檔取得統計資訊傳到你目前所在的頻道。要使用這" "個功能,你必須在偏好設定裏啟用「線上簽名識別」。" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:14 msgid "" "To enable it on every startup of xchat you can just run the autstart-xas " "script (in /usr/bin if you installed with --prefix=/usr)." msgstr "" "你可以執行 autstart-xas (如果是用 --prefix=/usr 安裝程式,就在 /usr/bin 下) " "在每次啟動 xchat 時都啟用它。" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:16 msgid "B was originally written by niet" msgstr "B 的原作者:niet" amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po/manpages.pot0000644000175000017500000010507412611472361022152 0ustar morphmorph# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2011-10-31 22:06+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" #. type: TH #: amule.1:1 #, no-wrap msgid "AMULE" msgstr "" #. type: TH #: amule.1:1 amulecmd.1:1 amuled.1:1 amulegui.1:1 amuleweb.1:1 ed2k.1:1 ../../src/utils/aLinkCreator/docs/alc.1:1 ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "November 2011" msgstr "" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule v2.3.1" msgstr "" #. type: TH #: amule.1:1 #, no-wrap msgid "aMule" msgstr "" #. type: SH #: amule.1:4 amulecmd.1:5 amuled.1:4 amuleweb.1:4 ed2k.1:4 ../../src/utils/aLinkCreator/docs/alc.1:3 ../../src/utils/aLinkCreator/docs/alcc.1:4 ../../src/utils/cas/docs/cas.1:4 ../../src/utils/wxCas/docs/wxcas.1:3 ../../src/utils/xas/docs/xas.1:3 #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: amule.1:6 msgid "amule - the all-platform eMule p2p client" msgstr "" #. type: SH #: amule.1:6 amulecmd.1:7 amuled.1:6 amulegui.1:6 amuleweb.1:6 ed2k.1:6 ../../src/utils/aLinkCreator/docs/alc.1:5 ../../src/utils/aLinkCreator/docs/alcc.1:6 ../../src/utils/cas/docs/cas.1:6 ../../src/utils/wxCas/docs/wxcas.1:5 ../../src/utils/xas/docs/xas.1:5 #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: amule.1:10 amulegui.1:10 msgid "[B<-c> IpathE>] [B<-geometry> IgeomE>]" msgstr "" #. type: Plain text #: amule.1:13 amuled.1:15 msgid "[B<-w> IpathE>]" msgstr "" #. type: Plain text #: amule.1:17 amuled.1:19 msgid "[B<-t> InumE>] [I]" msgstr "" #. type: SH #: amule.1:24 amulecmd.1:26 amuled.1:25 amulegui.1:20 amuleweb.1:41 ed2k.1:19 ../../src/utils/aLinkCreator/docs/alc.1:7 ../../src/utils/aLinkCreator/docs/alcc.1:14 ../../src/utils/cas/docs/cas.1:14 ../../src/utils/wxCas/docs/wxcas.1:7 ../../src/utils/xas/docs/xas.1:7 #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: TP #: amule.1:25 amuled.1:26 amulegui.1:24 ed2k.1:21 ../../src/utils/cas/docs/cas.1:26 #, no-wrap msgid "B<[ -c> IpathE>, B<--config-dir>=IpathE> B<]>" msgstr "" #. type: Plain text #: amule.1:28 amuled.1:29 amulegui.1:27 ed2k.1:24 ../../src/utils/cas/docs/cas.1:29 msgid "Read config from IpathE> instead of home" msgstr "" #. type: TP #: amule.1:28 amulegui.1:27 #, no-wrap msgid "B<[ -geometry >IgeomE> B<]>" msgstr "" #. type: Plain text #: amule.1:31 amulegui.1:30 msgid "" "Sets the geometry of the app. IgeomE> uses the same format as " "standard X11 " "apps:\t[B<=>][IwidthE>{B}IheightE>][{B<+->}IxoffsetE>{B<+->}IyoffsetE>]" msgstr "" #. type: Plain text #: amule.1:34 amuled.1:42 amulegui.1:33 msgid "Prints log messages to stdout." msgstr "" #. type: Plain text #: amule.1:37 amuled.1:45 amulegui.1:36 msgid "Resets config to default values." msgstr "" #. type: TP #: amule.1:37 amuled.1:45 #, no-wrap msgid "B<[ -w> IpathE>, B<--use-amuleweb>=IpathE> B<]>" msgstr "" #. type: Plain text #: amule.1:40 amuled.1:48 msgid "Specify location of amuleweb binary to IpathE>." msgstr "" #. type: Plain text #: amule.1:43 amuled.1:51 msgid "Does not handle fatal exception." msgstr "" #. type: Plain text #: amule.1:46 amuled.1:54 msgid "Does not disable stdin." msgstr "" #. type: TP #: amule.1:46 amuled.1:54 amulegui.1:39 ed2k.1:24 #, no-wrap msgid "B<[ -t>, B<--category>=InumE> B<]>" msgstr "" #. type: Plain text #: amule.1:49 amuled.1:57 amulegui.1:42 ed2k.1:27 msgid "Set category for passed eD2k links to InumE>" msgstr "" #. type: Plain text #: amule.1:52 amulecmd.1:66 amuled.1:60 amulegui.1:48 amuleweb.1:126 ed2k.1:39 msgid "Displays the current version number." msgstr "" #. type: Plain text #: amule.1:55 amulecmd.1:69 amuled.1:63 amulegui.1:45 amuleweb.1:123 ed2k.1:36 ../../src/utils/aLinkCreator/docs/alcc.1:22 ../../src/utils/cas/docs/cas.1:32 msgid "Prints a short usage description." msgstr "" #. type: TP #: amule.1:55 amuled.1:63 ed2k.1:39 #, no-wrap msgid "B<[ eD2k-link ]>" msgstr "" #. type: Plain text #: amule.1:58 amuled.1:66 ed2k.1:42 msgid "Adds an eD2k-link to the core." msgstr "" #. type: Plain text #: amule.1:60 amulecmd.1:75 amuled.1:68 ed2k.1:44 msgid "The eD2k link to be added can be:" msgstr "" #. type: Plain text #: amule.1:63 amulecmd.1:78 amuled.1:71 ed2k.1:47 msgid "a file link (ed2k://|file|...), it will be added to the download queue;" msgstr "" #. type: Plain text #: amule.1:65 amulecmd.1:80 amuled.1:73 ed2k.1:49 msgid "a server link (ed2k://|server|...), it will be added to the server list;" msgstr "" #. type: Plain text #: amule.1:67 amuled.1:75 ed2k.1:51 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list;" msgstr "" #. type: Plain text #: amule.1:69 amuled.1:77 msgid "a magnet link." msgstr "" #. type: SH #: amule.1:70 amulecmd.1:207 amuleweb.1:132 #, no-wrap msgid "NOTES" msgstr "" #. type: SS #: amule.1:71 amulecmd.1:208 amuleweb.1:133 #, no-wrap msgid "Paths" msgstr "" #. type: Plain text #: amule.1:75 amulecmd.1:212 amuleweb.1:137 msgid "" "For all options which take a IpathE> value, if the I " "contains no directory part (i.e. just a plain filename), then it is " "considered to be under the aMule configuration directory, I<~/.aMule>." msgstr "" #. type: SH #: amule.1:75 amulecmd.1:240 amuled.1:78 amuleweb.1:171 ed2k.1:60 ../../src/utils/cas/docs/cas.1:36 #, no-wrap msgid "FILES" msgstr "" #. type: Plain text #: amule.1:77 amuled.1:80 msgid "~/.aMule/*" msgstr "" #. type: SH #: amule.1:77 amulecmd.1:256 amuled.1:80 amulegui.1:48 amuleweb.1:191 ed2k.1:62 ../../src/utils/aLinkCreator/docs/alc.1:11 ../../src/utils/aLinkCreator/docs/alcc.1:26 ../../src/utils/cas/docs/cas.1:42 ../../src/utils/wxCas/docs/wxcas.1:16 ../../src/utils/xas/docs/xas.1:16 #, no-wrap msgid "REPORTING BUGS" msgstr "" #. type: Plain text #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 ../../src/utils/aLinkCreator/docs/alcc.1:29 ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 ../../src/utils/xas/docs/xas.1:19 msgid "" "Please report bugs either on our forum (I), or in " "our bugtracker (I). Please do not report bugs in " "e-mail, neither to our mailing list nor directly to any team member." msgstr "" #. type: SH #: amule.1:80 amulecmd.1:259 amuled.1:83 amulegui.1:51 amuleweb.1:194 ed2k.1:65 ../../src/utils/aLinkCreator/docs/alc.1:14 ../../src/utils/aLinkCreator/docs/alcc.1:29 ../../src/utils/cas/docs/cas.1:45 ../../src/utils/wxCas/docs/wxcas.1:19 ../../src/utils/xas/docs/xas.1:19 #, no-wrap msgid "COPYRIGHT" msgstr "" #. type: Plain text #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 ../../src/utils/aLinkCreator/docs/alcc.1:31 ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 ../../src/utils/xas/docs/xas.1:21 msgid "" "aMule and all of its related utilities are distributed under the GNU General " "Public License." msgstr "" #. type: SH #: amule.1:82 amulecmd.1:261 amuled.1:85 amulegui.1:53 amuleweb.1:196 ed2k.1:67 ../../src/utils/aLinkCreator/docs/alc.1:16 ../../src/utils/aLinkCreator/docs/alcc.1:31 ../../src/utils/cas/docs/cas.1:47 ../../src/utils/wxCas/docs/wxcas.1:21 ../../src/utils/xas/docs/xas.1:21 #, no-wrap msgid "SEE ALSO" msgstr "" #. type: SH #: amule.1:84 amulecmd.1:263 amuled.1:87 amulegui.1:55 amuleweb.1:198 ed2k.1:69 ../../src/utils/aLinkCreator/docs/alc.1:18 ../../src/utils/aLinkCreator/docs/alcc.1:33 ../../src/utils/cas/docs/cas.1:49 ../../src/utils/wxCas/docs/wxcas.1:23 ../../src/utils/xas/docs/xas.1:23 #, no-wrap msgid "AUTHOR" msgstr "" #. type: Plain text #: amule.1:85 amulecmd.1:264 amuled.1:88 amuleweb.1:199 ed2k.1:70 ../../src/utils/aLinkCreator/docs/alc.1:19 ../../src/utils/aLinkCreator/docs/alcc.1:34 ../../src/utils/cas/docs/cas.1:50 ../../src/utils/wxCas/docs/wxcas.1:24 ../../src/utils/xas/docs/xas.1:24 msgid "This manpage was written by Vollstrecker Eamule@vollstreckernet.deE" msgstr "" #. type: TH #: amulecmd.1:1 #, no-wrap msgid "AMULECMD" msgstr "" #. type: TH #: amulecmd.1:1 #, no-wrap msgid "aMuleCmd v2.3.1" msgstr "" #. type: TH #: amulecmd.1:1 amuleweb.1:1 ed2k.1:1 ../../src/utils/aLinkCreator/docs/alc.1:1 ../../src/utils/aLinkCreator/docs/alcc.1:1 ../../src/utils/cas/docs/cas.1:1 ../../src/utils/wxCas/docs/wxcas.1:1 ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "aMule utilities" msgstr "" #. type: Plain text #: amulecmd.1:7 msgid "amulecmd - Console-based program to control aMule" msgstr "" #. type: Plain text #: amulecmd.1:13 amuleweb.1:12 msgid "" "[B<-h> IhostE>] [B<-p> IportE>] [B<-P> " "IpasswordE>] [B<-f> IpathE>]" msgstr "" #. type: Plain text #: amulecmd.1:17 msgid "" "[B<-l> IlangE>] {B< >[B<-w>]B< >|B< >[B<-c> " "IcommandE>]B< >}" msgstr "" #. type: Plain text #: amulecmd.1:20 amuleweb.1:31 msgid "[B<--create-config-from>=IpathE>]" msgstr "" #. type: Plain text #: amulecmd.1:29 msgid "B is a console-based client to control aMule." msgstr "" #. type: TP #: amulecmd.1:29 amuleweb.1:46 #, no-wrap msgid "B<[ -h> IhostE>, B<--host>=IhostE> B<]>" msgstr "" #. type: Plain text #: amulecmd.1:33 amuleweb.1:50 msgid "" "Host where aMule is running (default: I). IhostE> " "might be an IP address or a DNS name" msgstr "" #. type: TP #: amulecmd.1:33 amuleweb.1:50 #, no-wrap msgid "B<[ -p> IportE>, B<--port>=IportE> B<]>" msgstr "" #. type: Plain text #: amulecmd.1:36 amuleweb.1:53 msgid "" "aMule's port for External Connections, as set in Preferences-ERemote " "Controls (default: I<4712>)" msgstr "" #. type: TP #: amulecmd.1:36 amuleweb.1:53 #, no-wrap msgid "B<[ -P> IpasswordE>, B<--password>=IpasswordE> B<]>" msgstr "" #. type: Plain text #: amulecmd.1:39 amuleweb.1:56 msgid "External Connections password." msgstr "" #. type: TP #: amulecmd.1:39 amuleweb.1:56 #, no-wrap msgid "B<[ -f> IpathE>, B<--config-file>=IpathE> B<]>" msgstr "" #. type: Plain text #: amulecmd.1:43 amuleweb.1:60 msgid "" "Use the given configuration file. Default configuration file is " "I<~/.aMule/remote.conf>" msgstr "" #. type: Plain text #: amulecmd.1:46 amuleweb.1:63 msgid "Do not print any output to stdout." msgstr "" #. type: Plain text #: amulecmd.1:50 amuleweb.1:67 msgid "Be verbose - show also debug messages." msgstr "" #. type: TP #: amulecmd.1:50 amuleweb.1:67 #, no-wrap msgid "B<[ -l> IlangE>, B<--locale>=IlangE> B<]>" msgstr "" #. type: Plain text #: amulecmd.1:54 amuleweb.1:71 msgid "" "Sets program locale (language). See the B section for the " "description of the IlangE> parameter." msgstr "" #. type: Plain text #: amulecmd.1:57 amuleweb.1:74 msgid "Write command line options to config file and exit" msgstr "" #. type: TP #: amulecmd.1:57 #, no-wrap msgid "B<[ -c> IcommandE>, B<--command>=IcommandE> B<]>" msgstr "" #. type: Plain text #: amulecmd.1:60 msgid "" "Execute IcommandE> as if it was entered at amulecmd's prompt and " "exit." msgstr "" #. type: TP #: amulecmd.1:60 amuleweb.1:117 #, no-wrap msgid "B<[ --create-config-from>=IpathE> B<]>" msgstr "" #. type: Plain text #: amulecmd.1:63 amuleweb.1:120 msgid "" "Create config file based upon IpathE>, which must point to a valid " "aMule config file, and then exit." msgstr "" #. type: SH #: amulecmd.1:69 #, no-wrap msgid "COMMANDS" msgstr "" #. type: Plain text #: amulecmd.1:71 msgid "All commands are case insensitive." msgstr "" #. type: SS #: amulecmd.1:71 #, no-wrap msgid "Add IeD2k-linkE> | Imagnet-linkE>" msgstr "" #. type: Plain text #: amulecmd.1:73 msgid "Adds an eD2k-link or a magnet-link to the core." msgstr "" #. type: Plain text #: amulecmd.1:82 msgid "" "a serverlist link, in which case all servers in the list will be added to " "the server list." msgstr "" #. type: Plain text #: amulecmd.1:85 msgid "The magnet link must contain the eD2k hash and file length." msgstr "" #. type: SS #: amulecmd.1:85 #, no-wrap msgid "Cancel IhashE> | InumberE>" msgstr "" #. type: Plain text #: amulecmd.1:87 msgid "" "Cancels the download specified by IhashE> or " "InumberE>. To get the value use B." msgstr "" #. type: SS #: amulecmd.1:87 #, no-wrap msgid "Connect [ I | I | Iip|nameE> ]" msgstr "" #. type: Plain text #: amulecmd.1:89 msgid "Connect to the network." msgstr "" #. type: Plain text #: amulecmd.1:91 msgid "This will connect to all networks that are enabled in Preferences." msgstr "" #. type: Plain text #: amulecmd.1:95 msgid "" "With the optional parameter you can specify which network to connect " "to. Giving a server address in the form of IP:Port (where IP is either a " "dotted decimal IPv4 address or a resolvable DNS name) aMule will connect to " "that server only." msgstr "" #. type: Plain text #: amulecmd.1:98 msgid "" "Disconnect from all networks you are connected to, or just disconnect from " "the specified network." msgstr "" #. type: SS #: amulecmd.1:98 #, no-wrap msgid "Download InumberE>" msgstr "" #. type: Plain text #: amulecmd.1:100 msgid "Start downloading a file." msgstr "" #. type: Plain text #: amulecmd.1:104 msgid "" "The InumberE> of a file from the last search has to be given. " "Example: `download 12' will start to download the file with the number 12 of " "the previous search." msgstr "" #. type: Plain text #: amulecmd.1:106 msgid "Disconnect from amule/amuled and quit amulecmd." msgstr "" #. type: SS #: amulecmd.1:106 #, no-wrap msgid "Get IwhatE>" msgstr "" #. type: Plain text #: amulecmd.1:108 msgid "Get and display a preference value." msgstr "" #. type: Plain text #: amulecmd.1:110 amulecmd.1:144 amulecmd.1:173 amulecmd.1:183 msgid "Available values for IwhatE>:" msgstr "" #. type: Plain text #: amulecmd.1:113 msgid "Get bandwidth limits." msgstr "" #. type: Plain text #: amulecmd.1:115 msgid "Get IPFilter preferences." msgstr "" #. type: SS #: amulecmd.1:116 #, no-wrap msgid "Help [ IcommandE> ]" msgstr "" #. type: Plain text #: amulecmd.1:120 msgid "" "Prints a short usage description. If called without parameter, it shows a " "list of available commands. If called with IcommandE>, it shows a " "short description of the given command." msgstr "" #. type: SS #: amulecmd.1:120 #, no-wrap msgid "Pause IhashE> | InumberE>" msgstr "" #. type: Plain text #: amulecmd.1:122 msgid "" "Pauses the download specified by IhashE> or " "InumberE>. To get the value use B." msgstr "" #. type: SS #: amulecmd.1:122 #, no-wrap msgid "Priority IpriorityE> IhashE> | InumberE>" msgstr "" #. type: Plain text #: amulecmd.1:124 msgid "" "Set priority of a download specified by IhashE> or " "InumberE>." msgstr "" #. type: Plain text #: amulecmd.1:126 msgid "Available values for IpriorityE>:" msgstr "" #. type: Plain text #: amulecmd.1:129 msgid "Automatic priority." msgstr "" #. type: Plain text #: amulecmd.1:131 msgid "High priority." msgstr "" #. type: Plain text #: amulecmd.1:133 msgid "Low priority." msgstr "" #. type: Plain text #: amulecmd.1:135 msgid "Normal priority." msgstr "" #. type: Plain text #: amulecmd.1:138 msgid "Shows the progress of an on-going search." msgstr "" #. type: Plain text #: amulecmd.1:140 msgid "A synonim of the B command." msgstr "" #. type: SS #: amulecmd.1:140 #, no-wrap msgid "Reload IwhatE>" msgstr "" #. type: Plain text #: amulecmd.1:142 msgid "Reloads a given object." msgstr "" #. type: Plain text #: amulecmd.1:147 msgid "Reload shared files list." msgstr "" #. type: Plain text #: amulecmd.1:149 msgid "Reload IP filter tables." msgstr "" #. type: Plain text #: amulecmd.1:152 msgid "Reset the log." msgstr "" #. type: Plain text #: amulecmd.1:154 msgid "Shows you the results of the last search." msgstr "" #. type: SS #: amulecmd.1:154 #, no-wrap msgid "Resume IhashE> | InumberE>" msgstr "" #. type: Plain text #: amulecmd.1:156 msgid "" "Resumes the download specified by IhashE> or " "InumberE>. To get the value use B." msgstr "" #. type: SS #: amulecmd.1:156 #, no-wrap msgid "Search ItypeE> IkeywordE>" msgstr "" #. type: Plain text #: amulecmd.1:159 msgid "" "Makes a search for the given IkeywordE>. A search type and a " "keyword to search is mandatory to do this. Example: `search kad amule' " "performs a kad search for `amule'." msgstr "" #. type: Plain text #: amulecmd.1:161 msgid "Available search types:" msgstr "" #. type: Plain text #: amulecmd.1:164 msgid "Performs a global search." msgstr "" #. type: Plain text #: amulecmd.1:166 msgid "Performs a search on the Kademlia network." msgstr "" #. type: Plain text #: amulecmd.1:168 msgid "Performs a local search." msgstr "" #. type: SS #: amulecmd.1:169 #, no-wrap msgid "Set IwhatE>" msgstr "" #. type: Plain text #: amulecmd.1:171 msgid "Sets a given preferences value." msgstr "" #. type: Plain text #: amulecmd.1:176 msgid "Set bandwidth limits." msgstr "" #. type: Plain text #: amulecmd.1:178 msgid "Set IPFilter preferences." msgstr "" #. type: SS #: amulecmd.1:179 #, no-wrap msgid "Show IwhatE>" msgstr "" #. type: Plain text #: amulecmd.1:181 msgid "Shows upload/download queue, servers list or shared files list." msgstr "" #. type: Plain text #: amulecmd.1:186 msgid "Show download queue." msgstr "" #. type: Plain text #: amulecmd.1:188 msgid "Show log." msgstr "" #. type: Plain text #: amulecmd.1:190 msgid "Show servers list." msgstr "" #. type: Plain text #: amulecmd.1:192 msgid "Show upload queue." msgstr "" #. type: Plain text #: amulecmd.1:196 msgid "" "Shutdown the remote running core (amule/amuled). This will also shut down " "the text client, since it is unusable without a running core." msgstr "" #. type: SS #: amulecmd.1:196 #, no-wrap msgid "Statistics [ InumberE> ]" msgstr "" #. type: Plain text #: amulecmd.1:198 msgid "Show statistics tree." msgstr "" #. type: Plain text #: amulecmd.1:202 msgid "" "The optional InumberE> in the range of 0-255 can be passed as " "argument to this command, which tells how many entries of the client version " "subtree should be shown. Passing 0, or omitting it means `unlimited'." msgstr "" #. type: Plain text #: amulecmd.1:205 msgid "" "Example: `statistics 5' will show only the top 5 versions for each client " "type." msgstr "" #. type: Plain text #: amulecmd.1:207 msgid "Show connection status, current up/download speeds, etc." msgstr "" #. type: SS #: amulecmd.1:212 amuleweb.1:137 #, no-wrap msgid "Languages" msgstr "" #. type: Plain text #: amulecmd.1:218 amuleweb.1:143 msgid "" "The IlangE> parameter for the B<-l> option has the following form: " "I[B<_>I][B<.>I][B<@>I] where I is the " "primary language, I is a sublanguage/territory, I is the " "character set to use and I allows the user to select a specific " "instance of localization data within a single category." msgstr "" #. type: Plain text #: amulecmd.1:220 amuleweb.1:145 msgid "For example, the following strings are valid:" msgstr "" #. type: Plain text #: amulecmd.1:234 amuleweb.1:159 msgid "" "Though all the above strings are accepted as valid language definitions, " "I and I are yet unused." msgstr "" #. type: Plain text #: amulecmd.1:237 amuleweb.1:162 msgid "" "In addition to the format above, you can also specify full language names in " "English - so B<-l german> is also valid and is equal to B<-l de_DE>." msgstr "" #. type: Plain text #: amulecmd.1:240 amuleweb.1:165 msgid "" "When no locale is defined, either on command-line or in config file, system " "default language will be used." msgstr "" #. type: Plain text #: amulecmd.1:242 amuleweb.1:173 msgid "~/.aMule/remote.conf" msgstr "" #. type: SH #: amulecmd.1:242 amuleweb.1:177 #, no-wrap msgid "EXAMPLE" msgstr "" #. type: Plain text #: amulecmd.1:244 msgid "Typically amulecmd will be first run as:" msgstr "" #. type: Plain text #: amulecmd.1:246 msgid "B B<-h> I B<-p> I B<-P> I B<-w>" msgstr "" #. type: Plain text #: amulecmd.1:248 amuleweb.1:183 msgid "or" msgstr "" #. type: Plain text #: amulecmd.1:250 msgid "B B<--create-config-from>=I" msgstr "" #. type: Plain text #: amulecmd.1:252 amuleweb.1:187 msgid "" "These will save settings to I<$HOME/.aMule/remote.conf>, and later you only " "need to type:" msgstr "" #. type: Plain text #: amulecmd.1:256 msgid "Of course, you don't have to follow this example." msgstr "" #. type: TH #: amuled.1:1 #, no-wrap msgid "AMULED" msgstr "" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon v2.3.1" msgstr "" #. type: TH #: amuled.1:1 #, no-wrap msgid "aMule Daemon" msgstr "" #. type: Plain text #: amuled.1:6 msgid "amuled - the all-platform eMule p2p client - daemonized version" msgstr "" #. type: Plain text #: amuled.1:9 ../../src/utils/cas/docs/cas.1:11 msgid "[B<-c> IpathE>]" msgstr "" #. type: Plain text #: amuled.1:11 msgid "[B<-p> IpathE>]" msgstr "" #. type: Plain text #: amuled.1:32 msgid "Forks to background." msgstr "" #. type: TP #: amuled.1:32 #, no-wrap msgid "B<[ -p> IpathE>, B<--pid-file>=IpathE> B<]>" msgstr "" #. type: Plain text #: amuled.1:36 msgid "" "After fork, create a pid-file in the IpathE>. IpathE> " "has to contain the filename." msgstr "" #. type: Plain text #: amuled.1:39 msgid "Configure EC (External Connections)." msgstr "" #. type: TH #: amulegui.1:1 #, no-wrap msgid "AMULEGUI" msgstr "" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI v2.3.1" msgstr "" #. type: TH #: amulegui.1:1 #, no-wrap msgid "aMuleGUI" msgstr "" #. type: Plain text #: amulegui.1:6 msgid "amulegui - aMule control program with GUI" msgstr "" #. type: Plain text #: amulegui.1:14 msgid "[B<-t> InumE>]" msgstr "" #. type: Plain text #: amulegui.1:24 msgid "" "B is a client program, and can be connected to amule or amuled via " "EC. You can manage your amule program with it. It provides almost the same " "functionalities as amule, even if the core works on another computer." msgstr "" #. type: Plain text #: amulegui.1:39 msgid "Skip connection dialog." msgstr "" #. type: Plain text #: amulegui.1:57 msgid "" "This manpage was written by Julien Delange for Debian Ejulien AT gunnm " "DOT orgE" msgstr "" #. type: Plain text #: amulegui.1:58 msgid "" "This manpage was rewritten by Vollstrecker " "Eamule@vollstreckernet.deE" msgstr "" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "AMULEWEB" msgstr "" #. type: TH #: amuleweb.1:1 #, no-wrap msgid "aMule webserver v2.3.1" msgstr "" #. type: Plain text #: amuleweb.1:6 msgid "amuleweb - aMule web server" msgstr "" #. type: Plain text #: amuleweb.1:15 msgid "[B<-l> IlangE>]" msgstr "" #. type: Plain text #: amuleweb.1:18 msgid "[B<-t> InameE>] [B<-s> IportE>]" msgstr "" #. type: Plain text #: amuleweb.1:20 msgid "[B<-U> IportE>]" msgstr "" #. type: Plain text #: amuleweb.1:24 msgid "[B<-A> IpasswordE>] [B<-G> IpasswordE>]" msgstr "" #. type: Plain text #: amuleweb.1:40 msgid "[B<--amule-config-file>=IpathE>]" msgstr "" #. type: Plain text #: amuleweb.1:46 msgid "" "B manages your access to amule through a web browser. You can " "start amuleweb together with B(1), or separately, any time later. " "Options can be specified via command-line or via config-file. Command-line " "options take precedence over config-file options." msgstr "" #. type: TP #: amuleweb.1:74 #, no-wrap msgid "B<[ -t> InameE>, B<--template>=InameE> B<]>" msgstr "" #. type: Plain text #: amuleweb.1:77 msgid "" "Loads the template named InameE>. See the B section " "for details." msgstr "" #. type: TP #: amuleweb.1:77 #, no-wrap msgid "B<[ -s> IportE>, B<--server-port>=IportE> B<]>" msgstr "" #. type: Plain text #: amuleweb.1:80 msgid "" "Webserver's HTTP port. This is the port you must point your browser to " "(default: I<4711>)." msgstr "" #. type: Plain text #: amuleweb.1:84 msgid "Enable UPnP." msgstr "" #. type: TP #: amuleweb.1:84 #, no-wrap msgid "B<[ -U> IportE>, B<--upnp-port> IportE> B<]>" msgstr "" #. type: Plain text #: amuleweb.1:87 msgid "UPnP port." msgstr "" #. type: Plain text #: amuleweb.1:90 msgid "Enables using gzip compression in HTTP traffic to save bandwidth." msgstr "" #. type: Plain text #: amuleweb.1:93 msgid "Disables using gzip compression (this is the default)." msgstr "" #. type: TP #: amuleweb.1:93 #, no-wrap msgid "B<[ -A> IpasswdE>, B<--admin-pass>=IpasswdE> B<]>" msgstr "" #. type: Plain text #: amuleweb.1:96 msgid "Full access password for webserver." msgstr "" #. type: TP #: amuleweb.1:96 #, no-wrap msgid "B<[ -G> IpasswdE>, B<--guest-pass>=IpasswdE> B<]>" msgstr "" #. type: Plain text #: amuleweb.1:99 msgid "Guest password for webserver." msgstr "" #. type: Plain text #: amuleweb.1:102 msgid "Allows guest access." msgstr "" #. type: Plain text #: amuleweb.1:105 msgid "Denies guest access (default)." msgstr "" #. type: Plain text #: amuleweb.1:111 msgid "" "Load/save webserver settings from/to remote aMule. This causes amuleweb to " "ignore command-line and config-file settings, and load them from aMule. " "When saving preferences none will be written to the config file, but to " "aMule. (Of course, this works only for those settings that can be set in " "aMule's Preferences-ERemote Controls.)" msgstr "" #. type: Plain text #: amuleweb.1:114 msgid "Disable PHP interpreter (deprecated)" msgstr "" #. type: Plain text #: amuleweb.1:117 msgid "Recompiles PHP pages on each request." msgstr "" #. type: TP #: amuleweb.1:126 #, no-wrap msgid "B<[ --amule-config-file>=IpathE> B<]>" msgstr "" #. type: Plain text #: amuleweb.1:132 msgid "" "aMule config file path. B aMule uses this option when " "starting amuleweb at aMule startup. This option causes all other " "command-line and config-file settings to be ignored, preferences to be read " "from the given config file, and also implies the B<-q -L> options." msgstr "" #. type: SH #: amuleweb.1:165 #, no-wrap msgid "SKIN SUPPORT" msgstr "" #. type: Plain text #: amuleweb.1:169 msgid "" "B is capable of displaying information in different skins. These " "skins are called templates, and you can make amuleweb load a specific " "template via the B<-t> command line option. Templates are searched in two " "places: first in I<~/.aMule/webserver/> and then in " "I if you installed with --prefix=/usr." msgstr "" #. type: Plain text #: amuleweb.1:171 msgid "" "Each template must be in a subdirectory of the template name, and this " "directory must contain all files the template needs." msgstr "" #. type: Plain text #: amuleweb.1:175 msgid "~/.aMule/webserver/" msgstr "" #. type: Plain text #: amuleweb.1:177 msgid "I<$(pkgdatadir)>/webserver/" msgstr "" #. type: Plain text #: amuleweb.1:179 msgid "Typically amuleweb will be first run as:" msgstr "" #. type: Plain text #: amuleweb.1:181 msgid "" "B B<-h> I B<-p> I B<-P> I B<-s> " "I B<-A> I B<-w>" msgstr "" #. type: Plain text #: amuleweb.1:185 msgid "B B<--create-config-from>=I" msgstr "" #. type: Plain text #: amuleweb.1:191 msgid "" "Of course, you may specify any more or less options on the first example " "line, and you may also totally omit it." msgstr "" #. type: TH #: ed2k.1:1 #, no-wrap msgid "ED2K" msgstr "" #. type: TH #: ed2k.1:1 #, no-wrap msgid "aMule eD2k link parser v1.5.1" msgstr "" #. type: Plain text #: ed2k.1:6 msgid "ed2k - aMule eD2k link parser" msgstr "" #. type: Plain text #: ed2k.1:10 msgid "[B<-c> IpathE>] [B<-t> InumE>]" msgstr "" #. type: Plain text #: ed2k.1:13 msgid "IeD2k-linkE>" msgstr "" #. type: Plain text #: ed2k.1:21 msgid "" "Sends the given IeD2k-linkE> to aMule, i.e. writes it to the file " "~/.aMule/ED2KLinks, which will be checked by aMule every second for links." msgstr "" #. type: Plain text #: ed2k.1:30 msgid "Loads all link found in the emulecollection given as Ied2k-linkE>" msgstr "" #. type: Plain text #: ed2k.1:33 msgid "Lists all link found in the emulecollection given as Ied2k-linkE>" msgstr "" #. type: Plain text #: ed2k.1:53 msgid "a magnet link;" msgstr "" #. type: Plain text #: ed2k.1:55 msgid "an emulecollection file." msgstr "" #. type: Plain text #: ed2k.1:60 msgid "" "B You can give " "more than one link, and every link can have it's own params. For example " "Blink1E -t2 Elink2E> will download Ilink1E> " "in standard category and Ilink2E> in category 2." msgstr "" #. type: Plain text #: ed2k.1:62 msgid "~/.aMule/ED2KLinks" msgstr "" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "ALC" msgstr "" #. type: TH #: ../../src/utils/aLinkCreator/docs/alc.1:1 #, no-wrap msgid "aLinkCreator" msgstr "" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:5 msgid "aLinkCreator - the aMule eD2k link creator" msgstr "" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:9 msgid "" "B is a graphical utility to create an eD2k link to any file on your " "computer." msgstr "" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alc.1:11 ../../src/utils/wxCas/docs/wxcas.1:16 msgid "This app doesn't take any arguments." msgstr "" #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "ALCC" msgstr "" #. type: TH #: ../../src/utils/aLinkCreator/docs/alcc.1:1 #, no-wrap msgid "aMule eD2k links calculator" msgstr "" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:6 msgid "alcc - text based eD2k links calculator for aMule" msgstr "" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:11 msgid "Iinputfiles_listE>" msgstr "" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:16 msgid "" "Compute the eD2k links of all the input files given in the " "Iinputfiles_listE> (There can be one or more files)." msgstr "" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:19 msgid "Compute and add part hashes to the computed eD2k links." msgstr "" #. type: Plain text #: ../../src/utils/aLinkCreator/docs/alcc.1:26 msgid "Be verbose - show also calculation steps." msgstr "" #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "CAS" msgstr "" #. type: TH #: ../../src/utils/cas/docs/cas.1:1 #, no-wrap msgid "cas v0.8" msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:6 msgid "cas - c aMule statistics" msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:18 msgid "" "B is a program for displaying the contents of your aMule online " "signature file to console (in a human readable form). For this to work, you " "must enable the \"Online Signature\" option in aMule's preferences." msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:22 msgid "" "Writes the online signature picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:26 msgid "" "HTML page with stats and picture. You can optionally append " "I<=EPATHE> to this option, to specify the location it should be " "written to." msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:34 msgid "Without any options, it prints online signature data to stdout." msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:36 msgid "B was written by Pedro de Oliveira Efalso@rdk.homeip.netE" msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:38 msgid "~/.aMule/casrc" msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:40 msgid "stat.png" msgstr "" #. type: Plain text #: ../../src/utils/cas/docs/cas.1:42 msgid "tmp.html" msgstr "" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "WXCAS" msgstr "" #. type: TH #: ../../src/utils/wxCas/docs/wxcas.1:1 #, no-wrap msgid "wxCas" msgstr "" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:5 msgid "wxcas - wx c aMule statistics" msgstr "" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:11 msgid "" "B is a program for displaying the contents of your online signature " "file in a nice wx Window on your Desktop. For this to work, you must enable " "the \"Online Signature\" option in aMule's preferences." msgstr "" #. type: Plain text #: ../../src/utils/wxCas/docs/wxcas.1:14 msgid "" "Based on Pedro de Oliveira's B(1). B was written by ThePolish " "Ethepolish@vipmail.ruE" msgstr "" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "XAS" msgstr "" #. type: TH #: ../../src/utils/xas/docs/xas.1:1 #, no-wrap msgid "xas v1.9" msgstr "" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:5 msgid "xas - X-Chat aMule Statistics" msgstr "" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:7 msgid "B" msgstr "" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:12 msgid "" "B is a plugin for xchat. For loading see your xchat " "documentation. After loading type /xas and it will send statistics to the " "channel you are in. These are taken from your Online Signature file. For " "this to work, you must enable the \"Online Signature\" option in aMule's " "preferences." msgstr "" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:14 msgid "" "To enable it on every startup of xchat you can just run the autstart-xas " "script (in /usr/bin if you installed with --prefix=/usr)." msgstr "" #. type: Plain text #: ../../src/utils/xas/docs/xas.1:16 msgid "B was originally written by niet" msgstr "" amule_2.3.1+git20151120.0023527bc2.orig/docs/man/po4a.config0000644000175000017500000000252612611472361021245 0ustar morphmorph[po4a_langs] de es fr hu it ro ru tr zh_TW [po4a_paths] po/manpages.pot $lang:po/manpages-$lang.po [options] --master-charset UTF-8 --localized-charset UTF-8 --addendum-charset UTF-8 [po4a_alias:man] man opt:"-o untranslated=als,B_untranslated,RB_untranslated,IP,SS_untranslated" [type: man] amule.1 $lang:amule.$lang.1 add_$lang:po/manpages-$lang.add [type: man] amulecmd.1 $lang:amulecmd.$lang.1 add_$lang:po/manpages-$lang.add [type: man] amuled.1 $lang:amuled.$lang.1 add_$lang:po/manpages-$lang.add [type: man] amulegui.1 $lang:amulegui.$lang.1 add_$lang:po/manpages-$lang.add [type: man] amuleweb.1 $lang:amuleweb.$lang.1 add_$lang:po/manpages-$lang.add [type: man] ed2k.1 $lang:ed2k.$lang.1 add_$lang:po/manpages-$lang.add [type: man] ../../src/utils/aLinkCreator/docs/alc.1 $lang:../../src/utils/aLinkCreator/docs/alc.$lang.1 add_$lang:po/manpages-$lang.add [type: man] ../../src/utils/aLinkCreator/docs/alcc.1 $lang:../../src/utils/aLinkCreator/docs/alcc.$lang.1 add_$lang:po/manpages-$lang.add [type: man] ../../src/utils/cas/docs/cas.1 $lang:../../src/utils/cas/docs/cas.$lang.1 add_$lang:po/manpages-$lang.add [type: man] ../../src/utils/wxCas/docs/wxcas.1 $lang:../../src/utils/wxCas/docs/wxcas.$lang.1 add_$lang:po/manpages-$lang.add [type: man] ../../src/utils/xas/docs/xas.1 $lang:../../src/utils/xas/docs/xas.$lang.1 add_$lang:po/manpages-$lang.add amule_2.3.1+git20151120.0023527bc2.orig/m4/0000755000175000017500000000000012611472361016023 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/m4/GeoIP.m40000644000175000017500000000760312611472361017236 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule Project. # # Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # dnl --------------------------------------------------------------------------- dnl MULE_CHECK_GEOIP dnl dnl Checks if the GeoIP library is requested, exists, and whether it should and dnl could be linked statically. dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_GEOIP], [ MULE_ARG_ENABLE([geoip], [no], [compile with GeoIP IP2Country library]) MULE_IF_ENABLED([geoip], [ AC_ARG_WITH([geoip-headers], AS_HELP_STRING([--with-geoip-headers=DIR], [GeoIP include files location]), [GEOIP_CPPFLAGS="-I$withval"]) AC_ARG_WITH([geoip-lib], AS_HELP_STRING([--with-geoip-lib=DIR], [GeoIP library location]), [GEOIP_LDFLAGS="-L$withval"]) MULE_BACKUP([CPPFLAGS]) MULE_APPEND([CPPFLAGS], [$GEOIP_CPPFLAGS]) MULE_BACKUP([LDFLAGS]) MULE_APPEND([LDFLAGS], [$GEOIP_LDFLAGS]) AC_CHECK_HEADER([GeoIP.h], [ AS_IF([test x$SYS = xwin32], [ AC_MSG_CHECKING([for WinSock library needed by GeoIP]) # Actually, we might not need any if GeoIP is linked as a .dll # - but that's even harder to check for AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #include #if (defined _WINSOCK2API_ || defined _WINSOCK2_H) I do know it's not the best approach, but at least works with MinGW stock headers. (tested with w32api-3.12) #endif ]]) ], [ GEOIP_WINSOCK_LIB="-lwsock32" ], [ GEOIP_WINSOCK_LIB="-lws2_32" ]) AC_MSG_RESULT([$GEOIP_WINSOCK_LIB]) ]) AC_CHECK_LIB([GeoIP], [GeoIP_open], [ AC_DEFINE([SUPPORT_GEOIP], [1], [Define if you want GeoIP support.]) GEOIP_LIBS="-lGeoIP" AS_IF([test x$SYS = xwin32], [MULE_APPEND([GEOIP_LIBS], [$GEOIP_WINSOCK_LIB])]) MULE_APPEND([GEOIP_CPPFLAGS], [-DENABLE_IP2COUNTRY=1]) AC_ARG_WITH([geoip-static], AS_HELP_STRING([--with-geoip-static], [Explicitly link GeoIP statically (default=no)]), [ AS_IF([test "$withval" != "no" -a ${enable_static:-no} = no], [ MULE_BACKUP([LIBS]) MULE_PREPEND([LIBS], [-Wl,-Bstatic $GEOIP_LIBS -Wl,-Bdynamic]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include ]], [[ GeoIP *g = GeoIP_new(GEOIP_STANDARD); ]]) ], [ GEOIP_LIBS="-Wl,-Bstatic $GEOIP_LIBS -Wl,-Bdynamic" ], [ MULE_WARNING([Cannot link GeoIP statically, because your linker ($LD) does not support it.]) ]) MULE_RESTORE([LIBS]) ]) ]) ], [ MULE_ENABLEVAR([geoip])=disabled MULE_WARNING([GeoIP support has been disabled because the GeoIP libraries were not found]) ], [${GEOIP_WINSOCK_LIB:-}]) ], [ MULE_ENABLEVAR([geoip])=disabled MULE_WARNING([GeoIP support has been disabled because the GeoIP header files were not found]) ]) MULE_RESTORE([CPPFLAGS]) MULE_RESTORE([LDFLAGS]) ]) ]) AC_SUBST([GEOIP_CPPFLAGS])dnl AC_SUBST([GEOIP_LDFLAGS])dnl AC_SUBST([GEOIP_LIBS])dnl amule_2.3.1+git20151120.0023527bc2.orig/m4/bfd.m40000644000175000017500000000673712611472361017035 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule Project. # # Copyright (c) 2015 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # dnl --------------------------------------------------------------------------- dnl MULE_CHECK_BFD dnl dnl Check if bfd.h is on the system and usable. Also checks whether we can link dnl to the bdf functions and which libraries are needed for this. The result of dnl the library test is saved in the mule_cv_lib_bfd cache variable, to ensure dnl that further configurations can reuse this result. In the worst case it may dnl take up to 32 link tests to find (or decide that it cannot be found) the dnl right set of libraries. dnl dnl Compilation variables set by this function: dnl BFD_CPPFLAGS dnl BFD_LIBS dnl dnl Cache variables used/set: dnl ac_cv_header_ansidecl_h dnl ac_cv_header_bfd_h dnl mule_cv_lib_bfd dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_BFD], [AC_REQUIRE([MULE_CHECK_NLS])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_CHECK_HEADERS([ansidecl.h bfd.h]) AS_IF([test $ac_cv_header_ansidecl_h = yes -a $ac_cv_header_bfd_h = yes], [ AC_MSG_CHECKING([for libraries required to link with bfd]) AC_CACHE_VAL([mule_cv_lib_bfd], [ for bfd_ldadd in MULE_COMBINATE([-lbfd], [-liberty], [-ldl], [${LIBINTL}], [${ZLIB_LIBS}]); do # Doing some black magic to prevent multiple tests for the same set of # libraries when any of the shell variables above expand to nothing. echo $bfd_ldadd done | sed -e 's/^ *//;s/ *$//;s/ */ /g' | ${AWK} '!x@<:@$[]0@:>@++' >conftest.bfd_ldadd while read bfd_ldadd; do MULE_BACKUP([LIBS]) MULE_BACKUP([LDFLAGS]) MULE_PREPEND([LIBS], [${bfd_ldadd}]) MULE_APPEND([LDFLAGS], [${ZLIB_LDFLAGS}]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include #include ]], [[const char *dummy = bfd_errmsg(bfd_get_error());]]) ], [ MULE_RESTORE([LIBS]) MULE_RESTORE([LDFLAGS]) mule_cv_lib_bfd="${bfd_ldadd}" ]) MULE_RESTORE([LIBS]) MULE_RESTORE([LDFLAGS]) AS_IF([${mule_cv_lib_bfd+:} false], [break]) done # # 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 3 of the License, or # (at your option) any later version. # # Additional permission under section 7 of the GNU General Public # License, version 3 ("GPLv3"): # # If you convey this file as part of a work that contains a # configuration script generated by Autoconf, you may do so under # terms of your choice. # # 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 . m4_define([_BOOST_SERIAL], [m4_translit([ # serial 25 ], [# ], [])]) # Original sources can be found at http://github.com/tsuna/boost.m4 # You can fetch the latest version of the script by doing: # wget http://github.com/tsuna/boost.m4/raw/master/build-aux/boost.m4 # ------ # # README # # ------ # # This file provides several macros to use the various Boost libraries. # The first macro is BOOST_REQUIRE. It will simply check if it's possible to # find the Boost headers of a given (optional) minimum version and it will # define BOOST_CPPFLAGS accordingly. It will add an option --with-boost to # your configure so that users can specify non standard locations. # If the user's environment contains BOOST_ROOT and --with-boost was not # specified, --with-boost=$BOOST_ROOT is implicitly used. # For more README and documentation, go to http://github.com/tsuna/boost.m4 # Note: THESE MACROS ASSUME THAT YOU USE LIBTOOL. If you don't, don't worry, # simply read the README, it will show you what to do step by step. m4_pattern_forbid([^_?(BOOST|Boost)_]) # _BOOST_SED_CPP(SED-PROGRAM, PROGRAM, # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # -------------------------------------------------------- # Same as AC_EGREP_CPP, but leave the result in conftest.i. # # SED-PROGRAM is *not* overquoted, as in AC_EGREP_CPP. It is expanded # in double-quotes, so escape your double quotes. # # It could be useful to turn this into a macro which extracts the # value of any macro. m4_define([_BOOST_SED_CPP], [AC_LANG_PUSH([C++])dnl AC_LANG_PREPROC_REQUIRE()dnl AC_REQUIRE([AC_PROG_SED])dnl AC_LANG_CONFTEST([AC_LANG_SOURCE([[$2]])]) AS_IF([dnl eval is necessary to expand ac_cpp. dnl Ultrix and Pyramid sh refuse to redirect output of eval, so use subshell. dnl Beware of Windows end-of-lines, for instance if we are running dnl some Windows programs under Wine. In that case, boost/version.hpp dnl is certainly using "\r\n", but the regular Unix shell will only dnl strip `\n' with backquotes, not the `\r'. This results in dnl boost_cv_lib_version='1_37\r' for instance, which breaks dnl everything else. dnl Cannot use 'dnl' after [$4] because a trailing dnl may break AC_CACHE_CHECK dnl dnl Beware that GCC 5, when expanding macros, may embed # line directives dnl a within single line: dnl dnl # 1 "conftest.cc" dnl # 1 "" dnl # 1 "" dnl # 1 "conftest.cc" dnl # 1 "/opt/local/include/boost/version.hpp" 1 3 dnl # 2 "conftest.cc" 2 dnl boost-lib-version = dnl # 2 "conftest.cc" 3 dnl "1_56" dnl dnl So get rid of the # lines, and glue the remaining ones together. (eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | grep -v '#' | tr -d '\r' | tr -s '\n' ' ' | $SED -n -e "$1" >conftest.i 2>&1], [$3], [$4]) rm -rf conftest* AC_LANG_POP([C++])dnl ])# _BOOST_SED_CPP # BOOST_REQUIRE([VERSION], [ACTION-IF-NOT-FOUND]) # ----------------------------------------------- # Look for Boost. If version is given, it must either be a literal of the form # "X.Y.Z" where X, Y and Z are integers (the ".Z" part being optional) or a # variable "$var". # Defines the value BOOST_CPPFLAGS. This macro only checks for headers with # the required version, it does not check for any of the Boost libraries. # On # success, defines HAVE_BOOST. On failure, calls the optional # ACTION-IF-NOT-FOUND action if one was supplied. # Otherwise aborts with an error message. dnl *aMule* AC_DEFUN_ONCE([BOOST_REQUIRE], AC_DEFUN([BOOST_REQUIRE], [AC_REQUIRE([AC_PROG_CXX])dnl AC_REQUIRE([AC_PROG_GREP])dnl echo "$as_me: this is boost.m4[]_BOOST_SERIAL" >&AS_MESSAGE_LOG_FD boost_save_IFS=$IFS boost_version_req=$1 IFS=. set x $boost_version_req 0 0 0 IFS=$boost_save_IFS shift boost_version_req=`expr "$[1]" '*' 100000 + "$[2]" '*' 100 + "$[3]"` boost_version_req_string=$[1].$[2].$[3] dnl *aMule* AC_ARG_WITH([boost], dnl *aMule* [AS_HELP_STRING([--with-boost=DIR], dnl *aMule* [prefix of Boost $1 @<:@guess@:>@])])dnl AC_ARG_VAR([BOOST_ROOT],[Location of Boost installation])dnl # If BOOST_ROOT is set and the user has not provided a value to # --with-boost, then treat BOOST_ROOT as if it the user supplied it. if test x"$BOOST_ROOT" != x; then if test x"$with_boost" = x; then AC_MSG_NOTICE([Detected BOOST_ROOT; continuing with --with-boost=$BOOST_ROOT]) with_boost=$BOOST_ROOT else AC_MSG_NOTICE([Detected BOOST_ROOT=$BOOST_ROOT, but overridden by --with-boost=$with_boost]) fi fi AC_SUBST([DISTCHECK_CONFIGURE_FLAGS], ["$DISTCHECK_CONFIGURE_FLAGS '--with-boost=$with_boost'"])dnl boost_save_CPPFLAGS=$CPPFLAGS AC_CACHE_CHECK([for Boost headers version >= $boost_version_req_string], [boost_cv_inc_path], [boost_cv_inc_path=no AC_LANG_PUSH([C++])dnl m4_pattern_allow([^BOOST_VERSION$])dnl AC_LANG_CONFTEST([AC_LANG_PROGRAM([[#include #if !defined BOOST_VERSION # error BOOST_VERSION is not defined #elif BOOST_VERSION < $boost_version_req # error Boost headers version < $boost_version_req #endif ]])]) # If the user provided a value to --with-boost, use it and only it. case $with_boost in #( ''|yes) set x '' /opt/local/include /usr/local/include /opt/include \ /usr/include C:/Boost/include;; #( *) set x "$with_boost/include" "$with_boost";; esac shift for boost_dir do # Without --layout=system, Boost (or at least some versions) installs # itself in /include/boost-. This inner loop helps to # find headers in such directories. # # Any ${boost_dir}/boost-x_xx directories are searched in reverse version # order followed by ${boost_dir}. The final '.' is a sentinel for # searching $boost_dir" itself. Entries are whitespace separated. # # I didn't indent this loop on purpose (to avoid over-indented code) boost_layout_system_search_list=`cd "$boost_dir" 2>/dev/null \ && ls -1 | "${GREP}" '^boost-' | sort -rn -t- -k2 \ && echo .` for boost_inc in $boost_layout_system_search_list do if test x"$boost_inc" != x.; then boost_inc="$boost_dir/$boost_inc" else boost_inc="$boost_dir" # Uses sentinel in boost_layout_system_search_list fi if test x"$boost_inc" != x; then # We are going to check whether the version of Boost installed # in $boost_inc is usable by running a compilation that # #includes it. But if we pass a -I/some/path in which Boost # is not installed, the compiler will just skip this -I and # use other locations (either from CPPFLAGS, or from its list # of system include directories). As a result we would use # header installed on the machine instead of the /some/path # specified by the user. So in that precise case (trying # $boost_inc), make sure the version.hpp exists. # # Use test -e as there can be symlinks. test -e "$boost_inc/boost/version.hpp" || continue CPPFLAGS="$CPPFLAGS -I$boost_inc" fi AC_COMPILE_IFELSE([], [boost_cv_inc_path=yes], [boost_cv_version=no]) if test x"$boost_cv_inc_path" = xyes; then if test x"$boost_inc" != x; then boost_cv_inc_path=$boost_inc fi break 2 fi done done AC_LANG_POP([C++])dnl ]) case $boost_cv_inc_path in #( no) boost_errmsg="cannot find Boost headers version >= $boost_version_req_string" m4_if([$2], [], [AC_MSG_ERROR([$boost_errmsg])], [AC_MSG_NOTICE([$boost_errmsg])]) $2 ;;#( yes) BOOST_CPPFLAGS= ;;#( *) AC_SUBST([BOOST_CPPFLAGS], ["-I$boost_cv_inc_path"])dnl ;; esac if test x"$boost_cv_inc_path" != xno; then AC_DEFINE([HAVE_BOOST], [1], [Defined if the requested minimum BOOST version is satisfied]) AC_CACHE_CHECK([for Boost's header version], [boost_cv_lib_version], [m4_pattern_allow([^BOOST_LIB_VERSION$])dnl _BOOST_SED_CPP([[/^boost-lib-version = /{s///;s/[\" ]//g;p;q;}]], [#include boost-lib-version = BOOST_LIB_VERSION], [boost_cv_lib_version=`cat conftest.i`])]) # e.g. "134" for 1_34_1 or "135" for 1_35 boost_major_version=`echo "$boost_cv_lib_version" | sed 's/_//;s/_.*//'` case $boost_major_version in #( '' | *[[!0-9]]*) AC_MSG_ERROR([invalid value: boost_major_version='$boost_major_version']) ;; esac fi CPPFLAGS=$boost_save_CPPFLAGS ])# BOOST_REQUIRE # BOOST_STATIC() # -------------- # Add the "--enable-static-boost" configure argument. If this argument is given # on the command line, static versions of the libraries will be looked up. AC_DEFUN([BOOST_STATIC], [AC_ARG_ENABLE([static-boost], [AS_HELP_STRING([--enable-static-boost], [Prefer the static boost libraries over the shared ones [no]])], [enable_static_boost=yes], [enable_static_boost=no])])# BOOST_STATIC # BOOST_FIND_HEADER([HEADER-NAME], [ACTION-IF-NOT-FOUND], [ACTION-IF-FOUND]) # -------------------------------------------------------------------------- # Wrapper around AC_CHECK_HEADER for Boost headers. Useful to check for # some parts of the Boost library which are only made of headers and don't # require linking (such as Boost.Foreach). # # Default ACTION-IF-NOT-FOUND: Fail with a fatal error unless Boost couldn't be # found in the first place, in which case by default a notice is issued to the # user. Presumably if we haven't died already it's because it's OK to not have # Boost, which is why only a notice is issued instead of a hard error. # # Default ACTION-IF-FOUND: define the preprocessor symbol HAVE_ in # case of success # (where HEADER-NAME is written LIKE_THIS, e.g., # HAVE_BOOST_FOREACH_HPP). AC_DEFUN([BOOST_FIND_HEADER], [AC_REQUIRE([BOOST_REQUIRE])dnl if test x"$boost_cv_inc_path" = xno; then m4_default([$2], [AC_MSG_NOTICE([Boost not available, not searching for $1])]) else AC_LANG_PUSH([C++])dnl boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" AC_CHECK_HEADER([$1], [m4_default([$3], [AC_DEFINE(AS_TR_CPP([HAVE_$1]), [1], [Define to 1 if you have <$1>])])], [m4_default([$2], [AC_MSG_ERROR([cannot find $1])])]) CPPFLAGS=$boost_save_CPPFLAGS AC_LANG_POP([C++])dnl fi ])# BOOST_FIND_HEADER # BOOST_FIND_LIBS([COMPONENT-NAME], [CANDIDATE-LIB-NAMES], # [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], # [CXX-PROLOGUE]) # -------------------------------------------------------------- # Look for the Boost library COMPONENT-NAME (e.g., `thread', for # libboost_thread) under the possible CANDIDATE-LIB-NAMES (e.g., # "thread_win32 thread"). Check that HEADER-NAME works and check that # libboost_LIB-NAME can link with the code CXX-TEST. The optional # argument CXX-PROLOGUE can be used to include some C++ code before # the `main' function. # # Invokes BOOST_FIND_HEADER([HEADER-NAME]) (see above). # # Boost libraries typically come compiled with several flavors (with different # runtime options) so PREFERRED-RT-OPT is the preferred suffix. A suffix is one # or more of the following letters: sgdpn (in that order). s = static # runtime, d = debug build, g = debug/diagnostic runtime, p = STLPort build, # n = (unsure) STLPort build without iostreams from STLPort (it looks like `n' # must always be used along with `p'). Additionally, PREFERRED-RT-OPT can # start with `mt-' to indicate that there is a preference for multi-thread # builds. Some sample values for PREFERRED-RT-OPT: (nothing), mt, d, mt-d, gdp # ... If you want to make sure you have a specific version of Boost # (eg, >= 1.33) you *must* invoke BOOST_REQUIRE before this macro. AC_DEFUN([BOOST_FIND_LIBS], [AC_REQUIRE([BOOST_REQUIRE])dnl AC_REQUIRE([_BOOST_FIND_COMPILER_TAG])dnl AC_REQUIRE([BOOST_STATIC])dnl AC_REQUIRE([_BOOST_GUESS_WHETHER_TO_USE_MT])dnl if test x"$boost_cv_inc_path" = xno; then AC_MSG_NOTICE([Boost not available, not searching for the Boost $1 library]) else dnl The else branch is huge and wasn't intended on purpose. AC_LANG_PUSH([C++])dnl AS_VAR_PUSHDEF([Boost_lib], [boost_cv_lib_$1])dnl AS_VAR_PUSHDEF([Boost_lib_LDFLAGS], [boost_cv_lib_$1_LDFLAGS])dnl AS_VAR_PUSHDEF([Boost_lib_LDPATH], [boost_cv_lib_$1_LDPATH])dnl AS_VAR_PUSHDEF([Boost_lib_LIBS], [boost_cv_lib_$1_LIBS])dnl BOOST_FIND_HEADER([$4]) boost_save_CPPFLAGS=$CPPFLAGS CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS" AC_CACHE_CHECK([for the Boost $1 library], [Boost_lib], [_BOOST_FIND_LIBS($@)]) case $Boost_lib in #( (no) _AC_MSG_LOG_CONFTEST AC_MSG_ERROR([cannot find the flags to link with Boost $1]) ;; esac AC_SUBST(AS_TR_CPP([BOOST_$1_LDFLAGS]), [$Boost_lib_LDFLAGS])dnl AC_SUBST(AS_TR_CPP([BOOST_$1_LDPATH]), [$Boost_lib_LDPATH])dnl AC_SUBST([BOOST_LDPATH], [$Boost_lib_LDPATH])dnl AC_SUBST(AS_TR_CPP([BOOST_$1_LIBS]), [$Boost_lib_LIBS])dnl CPPFLAGS=$boost_save_CPPFLAGS AS_VAR_POPDEF([Boost_lib])dnl AS_VAR_POPDEF([Boost_lib_LDFLAGS])dnl AS_VAR_POPDEF([Boost_lib_LDPATH])dnl AS_VAR_POPDEF([Boost_lib_LIBS])dnl AC_LANG_POP([C++])dnl fi ]) # BOOST_FIND_LIB([LIB-NAME], # [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], # [CXX-PROLOGUE]) # -------------------------------------------------------------- # Backward compatibility wrapper for BOOST_FIND_LIBS. AC_DEFUN([BOOST_FIND_LIB], [BOOST_FIND_LIBS([$1], $@)]) # _BOOST_FIND_LIBS([LIB-NAME], [CANDIDATE-LIB-NAMES], # [PREFERRED-RT-OPT], [HEADER-NAME], [CXX-TEST], # [CXX-PROLOGUE]) # -------------------------------------------------------------- # Real implementation of BOOST_FIND_LIBS: rely on these local macros: # Boost_lib, Boost_lib_LDFLAGS, Boost_lib_LDPATH, Boost_lib_LIBS # # The algorithm is as follows: first look for a given library name # according to the user's PREFERRED-RT-OPT. For each library name, we # prefer to use the ones that carry the tag (toolset name). Each # library is searched through the various standard paths were Boost is # usually installed. If we can't find the standard variants, we try # to enforce -mt (for instance on MacOSX, libboost_thread.dylib # doesn't exist but there's -obviously- libboost_thread-mt.dylib). AC_DEFUN([_BOOST_FIND_LIBS], [Boost_lib=no case "$3" in #( (mt | mt-) boost_mt=-mt; boost_rtopt=;; #( (mt* | mt-*) boost_mt=-mt; boost_rtopt=`expr "X$3" : 'Xmt-*\(.*\)'`;; #( (*) boost_mt=; boost_rtopt=$3;; esac if test $enable_static_boost = yes; then boost_rtopt="s$boost_rtopt" fi # Find the proper debug variant depending on what we've been asked to find. case $boost_rtopt in #( (*d*) boost_rt_d=$boost_rtopt;; #( (*[[sgpn]]*) # Insert the `d' at the right place (in between `sg' and `pn') boost_rt_d=`echo "$boost_rtopt" | sed 's/\(s*g*\)\(p*n*\)/\1\2/'`;; #( (*) boost_rt_d='-d';; esac # If the PREFERRED-RT-OPT are not empty, prepend a `-'. test -n "$boost_rtopt" && boost_rtopt="-$boost_rtopt" $boost_guess_use_mt && boost_mt=-mt # Look for the abs path the static archive. # $libext is computed by Libtool but let's make sure it's non empty. test -z "$libext" && AC_MSG_ERROR([the libext variable is empty, did you invoke Libtool?]) boost_save_ac_objext=$ac_objext # Generate the test file. AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include <$4> $6], [$5])]) dnl Optimization hacks: compiling C++ is slow, especially with Boost. What dnl we're trying to do here is guess the right combination of link flags dnl (LIBS / LDFLAGS) to use a given library. This can take several dnl iterations before it succeeds and is thus *very* slow. So what we do dnl instead is that we compile the code first (and thus get an object file, dnl typically conftest.o). Then we try various combinations of link flags dnl until we succeed to link conftest.o in an executable. The problem is dnl that the various TRY_LINK / COMPILE_IFELSE macros of Autoconf always dnl remove all the temporary files including conftest.o. So the trick here dnl is to temporarily change the value of ac_objext so that conftest.o is dnl preserved accross tests. This is obviously fragile and I will burn in dnl hell for not respecting Autoconf's documented interfaces, but in the dnl mean time, it optimizes the macro by a factor of 5 to 30. dnl Another small optimization: the first argument of AC_COMPILE_IFELSE left dnl empty because the test file is generated only once above (before we dnl start the for loops). AC_COMPILE_IFELSE([], [ac_objext=do_not_rm_me_plz], [AC_MSG_ERROR([cannot compile a test that uses Boost $1])]) ac_objext=$boost_save_ac_objext boost_failed_libs= # Don't bother to ident the following nested for loops, only the 2 # innermost ones matter. for boost_lib_ in $2; do for boost_tag_ in -$boost_cv_lib_tag ''; do for boost_ver_ in -$boost_cv_lib_version ''; do for boost_mt_ in $boost_mt -mt ''; do for boost_rtopt_ in $boost_rtopt '' -d; do for boost_lib in \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_rtopt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_mt_$boost_ver_ \ boost_$boost_lib_$boost_tag_$boost_ver_ do # Avoid testing twice the same lib case $boost_failed_libs in #( (*@$boost_lib@*) continue;; esac # If with_boost is empty, we'll search in /lib first, which is not quite # right so instead we'll try to a location based on where the headers are. boost_tmp_lib=$with_boost test x"$with_boost" = x && boost_tmp_lib=${boost_cv_inc_path%/include} for boost_ldpath in "$boost_tmp_lib/lib" '' \ /opt/local/lib* /usr/local/lib* /opt/lib* /usr/lib* \ "$with_boost" C:/Boost/lib /lib* do # Don't waste time with directories that don't exist. if test x"$boost_ldpath" != x && test ! -e "$boost_ldpath"; then continue fi boost_save_LDFLAGS=$LDFLAGS # Are we looking for a static library? case $boost_ldpath:$boost_rtopt_ in #( (*?*:*s*) # Yes (Non empty boost_ldpath + s in rt opt) Boost_lib_LIBS="$boost_ldpath/lib$boost_lib.$libext" test -e "$Boost_lib_LIBS" || continue;; #( (*) # No: use -lboost_foo to find the shared library. Boost_lib_LIBS="-l$boost_lib";; esac boost_save_LIBS=$LIBS LIBS="$Boost_lib_LIBS $LIBS" test x"$boost_ldpath" != x && LDFLAGS="$LDFLAGS -L$boost_ldpath" dnl First argument of AC_LINK_IFELSE left empty because the test file is dnl generated only once above (before we start the for loops). _BOOST_AC_LINK_IFELSE([], [Boost_lib=yes], [Boost_lib=no]) ac_objext=$boost_save_ac_objext LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS if test x"$Boost_lib" = xyes; then # Check or used cached result of whether or not using -R or # -rpath makes sense. Some implementations of ld, such as for # Mac OSX, require -rpath but -R is the flag known to work on # other systems. https://github.com/tsuna/boost.m4/issues/19 AC_CACHE_VAL([boost_cv_rpath_link_ldflag], [case $boost_ldpath in '') # Nothing to do. boost_cv_rpath_link_ldflag= boost_rpath_link_ldflag_found=yes;; *) for boost_cv_rpath_link_ldflag in -Wl,-R, -Wl,-rpath,; do LDFLAGS="$boost_save_LDFLAGS -L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" LIBS="$boost_save_LIBS $Boost_lib_LIBS" _BOOST_AC_LINK_IFELSE([], [boost_rpath_link_ldflag_found=yes break], [boost_rpath_link_ldflag_found=no]) done ;; esac AS_IF([test "x$boost_rpath_link_ldflag_found" != "xyes"], [AC_MSG_ERROR([Unable to determine whether to use -R or -rpath])]) LDFLAGS=$boost_save_LDFLAGS LIBS=$boost_save_LIBS ]) test x"$boost_ldpath" != x && Boost_lib_LDFLAGS="-L$boost_ldpath $boost_cv_rpath_link_ldflag$boost_ldpath" Boost_lib_LDPATH="$boost_ldpath" break 7 else boost_failed_libs="$boost_failed_libs@$boost_lib@" fi done done done done done done done # boost_lib_ rm -f conftest.$ac_objext ]) # --------------------------------------- # # Checks for the various Boost libraries. # # --------------------------------------- # # List of boost libraries: http://www.boost.org/libs/libraries.htm # The page http://beta.boost.org/doc/libs is useful: it gives the first release # version of each library (among other things). # BOOST_DEFUN(LIBRARY, CODE) # -------------------------- # Define BOOST_ as a macro that runs CODE. # # Use indir to avoid the warning on underquoted macro name given to AC_DEFUN. m4_define([BOOST_DEFUN], [m4_indir([AC_DEFUN], m4_toupper([BOOST_$1]), [m4_pushdef([BOOST_Library], [$1])dnl $2 m4_popdef([BOOST_Library])dnl ]) ]) # BOOST_ARRAY() # ------------- # Look for Boost.Array BOOST_DEFUN([Array], [BOOST_FIND_HEADER([boost/array.hpp])]) # BOOST_ASIO() # ------------ # Look for Boost.Asio (new in Boost 1.35). BOOST_DEFUN([Asio], [AC_REQUIRE([BOOST_SYSTEM])dnl BOOST_FIND_HEADER([boost/asio.hpp])]) # BOOST_BIND() # ------------ # Look for Boost.Bind. BOOST_DEFUN([Bind], [BOOST_FIND_HEADER([boost/bind.hpp])]) # BOOST_CHRONO() # -------------- # Look for Boost.Chrono. BOOST_DEFUN([Chrono], [# Do we have to check for Boost.System? This link-time dependency was # added as of 1.35.0. If we have a version <1.35, we must not attempt to # find Boost.System as it didn't exist by then. if test $boost_major_version -ge 135; then BOOST_SYSTEM([$1]) fi # end of the Boost.System check. boost_filesystem_save_LIBS=$LIBS boost_filesystem_save_LDFLAGS=$LDFLAGS m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl LIBS="$LIBS $BOOST_SYSTEM_LIBS" LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" BOOST_FIND_LIB([chrono], [$1], [boost/chrono.hpp], [boost::chrono::thread_clock d;]) if test $enable_static_boost = yes && test $boost_major_version -ge 135; then BOOST_CHRONO_LIBS="$BOOST_CHRONO_LIBS $BOOST_SYSTEM_LIBS" fi LIBS=$boost_filesystem_save_LIBS LDFLAGS=$boost_filesystem_save_LDFLAGS ])# BOOST_CHRONO # BOOST_CONTEXT([PREFERRED-RT-OPT]) # ----------------------------------- # Look for Boost.Context. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. This library was introduced in Boost # 1.51.0 BOOST_DEFUN([Context], [BOOST_FIND_LIB([context], [$1], [boost/context/all.hpp],[[ // creates a stack void * stack_pointer = new void*[4096]; std::size_t const size = sizeof(void*[4096]); // context fc uses f() as context function // fcontext_t is placed on top of context stack // a pointer to fcontext_t is returned fc = ctx::make_fcontext(stack_pointer, size, f); return ctx::jump_fcontext(&fcm, fc, 3) == 6;]],[dnl namespace ctx = boost::context; // context static ctx::fcontext_t fcm, *fc; // context-function static void f(intptr_t i) { ctx::jump_fcontext(fc, &fcm, i * 2); }]) ])# BOOST_CONTEXT # BOOST_CONVERSION() # ------------------ # Look for Boost.Conversion (cast / lexical_cast) BOOST_DEFUN([Conversion], [BOOST_FIND_HEADER([boost/cast.hpp]) BOOST_FIND_HEADER([boost/lexical_cast.hpp]) ])# BOOST_CONVERSION # BOOST_COROUTINE([PREFERRED-RT-OPT]) # ----------------------------------- # Look for Boost.Coroutine. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. This library was introduced in Boost # 1.53.0 BOOST_DEFUN([Coroutine], [ boost_coroutine_save_LIBS=$LIBS boost_coroutine_save_LDFLAGS=$LDFLAGS # Link-time dependency from coroutine to context BOOST_CONTEXT([$1]) # Starting from Boost 1.55 a dependency on Boost.System is added if test $boost_major_version -ge 155; then BOOST_SYSTEM([$1]) fi m4_pattern_allow([^BOOST_(CONTEXT|SYSTEM)_(LIBS|LDFLAGS)]) LIBS="$LIBS $BOOST_CONTEXT_LIBS $BOOST_SYSTEM_LIBS" LDFLAGS="$LDFLAGS $BOOST_CONTEXT_LDFLAGS" BOOST_FIND_LIB([coroutine], [$1], [boost/coroutine/coroutine.hpp], [boost::coroutines::coroutine< int(int) > coro; coro.empty();]) # Link-time dependency from coroutine to context, existed only in 1.53, in 1.54 # coroutine doesn't use context from its headers but from its library. if test $boost_major_version -eq 153 || test $enable_static_boost = yes && test $boost_major_version -ge 154; then BOOST_COROUTINE_LIBS="$BOOST_COROUTINE_LIBS $BOOST_CONTEXT_LIBS" BOOST_COROUTINE_LDFLAGS="$BOOST_COROUTINE_LDFLAGS $BOOST_CONTEXT_LDFLAGS" fi if test $enable_static_boost = yes && test $boost_major_version -ge 155; then BOOST_COROUTINE_LIBS="$BOOST_COROUTINE_LIBS $BOOST_SYSTEM_LIBS" BOOST_COROUTINE_LDFLAGS="$BOOST_COROUTINE_LDFLAGS $BOOST_SYSTEM_LDFLAGS" fi LIBS=$boost_coroutine_save_LIBS LDFLAGS=$boost_coroutine_save_LDFLAGS ])# BOOST_COROUTINE # BOOST_CRC() # ----------- # Look for Boost.CRC BOOST_DEFUN([CRC], [BOOST_FIND_HEADER([boost/crc.hpp]) ])# BOOST_CRC # BOOST_DATE_TIME([PREFERRED-RT-OPT]) # ----------------------------------- # Look for Boost.Date_Time. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Date_Time], [BOOST_FIND_LIB([date_time], [$1], [boost/date_time/posix_time/posix_time.hpp], [boost::posix_time::ptime t;]) ])# BOOST_DATE_TIME # BOOST_FILESYSTEM([PREFERRED-RT-OPT]) # ------------------------------------ # Look for Boost.Filesystem. For the documentation of PREFERRED-RT-OPT, see # the documentation of BOOST_FIND_LIB above. # Do not check for boost/filesystem.hpp because this file was introduced in # 1.34. BOOST_DEFUN([Filesystem], [# Do we have to check for Boost.System? This link-time dependency was # added as of 1.35.0. If we have a version <1.35, we must not attempt to # find Boost.System as it didn't exist by then. if test $boost_major_version -ge 135; then BOOST_SYSTEM([$1]) fi # end of the Boost.System check. boost_filesystem_save_LIBS=$LIBS boost_filesystem_save_LDFLAGS=$LDFLAGS m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl LIBS="$LIBS $BOOST_SYSTEM_LIBS" LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" BOOST_FIND_LIB([filesystem], [$1], [boost/filesystem/path.hpp], [boost::filesystem::path p;]) if test $enable_static_boost = yes && test $boost_major_version -ge 135; then BOOST_FILESYSTEM_LIBS="$BOOST_FILESYSTEM_LIBS $BOOST_SYSTEM_LIBS" fi LIBS=$boost_filesystem_save_LIBS LDFLAGS=$boost_filesystem_save_LDFLAGS ])# BOOST_FILESYSTEM # BOOST_FLYWEIGHT() # ----------------- # Look for Boost.Flyweight. BOOST_DEFUN([Flyweight], [dnl There's a hidden dependency on pthreads. AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl BOOST_FIND_HEADER([boost/flyweight.hpp]) AC_SUBST([BOOST_FLYWEIGHT_LIBS], [$boost_cv_pthread_flag]) ]) # BOOST_FOREACH() # --------------- # Look for Boost.Foreach. BOOST_DEFUN([Foreach], [BOOST_FIND_HEADER([boost/foreach.hpp])]) # BOOST_FORMAT() # -------------- # Look for Boost.Format. # Note: we can't check for boost/format/format_fwd.hpp because the header isn't # standalone. It can't be compiled because it triggers the following error: # boost/format/detail/config_macros.hpp:88: error: 'locale' in namespace 'std' # does not name a type BOOST_DEFUN([Format], [BOOST_FIND_HEADER([boost/format.hpp])]) # BOOST_FUNCTION() # ---------------- # Look for Boost.Function BOOST_DEFUN([Function], [BOOST_FIND_HEADER([boost/function.hpp])]) # BOOST_GEOMETRY() # ---------------- # Look for Boost.Geometry (new since 1.47.0). BOOST_DEFUN([Geometry], [BOOST_FIND_HEADER([boost/geometry.hpp]) ])# BOOST_GEOMETRY # BOOST_GRAPH([PREFERRED-RT-OPT]) # ------------------------------- # Look for Boost.Graphs. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Graph], [BOOST_FIND_LIB([graph], [$1], [boost/graph/adjacency_list.hpp], [boost::adjacency_list<> g;]) ])# BOOST_GRAPH # BOOST_IOSTREAMS([PREFERRED-RT-OPT]) # ----------------------------------- # Look for Boost.IOStreams. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([IOStreams], [BOOST_FIND_LIB([iostreams], [$1], [boost/iostreams/device/file_descriptor.hpp], [boost::iostreams::file_descriptor fd; fd.close();]) ])# BOOST_IOSTREAMS # BOOST_HASH() # ------------ # Look for Boost.Functional/Hash BOOST_DEFUN([Hash], [BOOST_FIND_HEADER([boost/functional/hash.hpp])]) # BOOST_LAMBDA() # -------------- # Look for Boost.Lambda BOOST_DEFUN([Lambda], [BOOST_FIND_HEADER([boost/lambda/lambda.hpp])]) # BOOST_LOCALE() # -------------- # Look for Boost.Locale BOOST_DEFUN([Locale], [BOOST_FIND_LIB([locale], [$1], [boost/locale.hpp], [[boost::locale::generator gen; std::locale::global(gen(""));]]) ])# BOOST_LOCALE # BOOST_LOG([PREFERRED-RT-OPT]) # ----------------------------- # Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Log], [BOOST_FIND_LIB([log], [$1], [boost/log/core/core.hpp], [boost::log::attribute a; a.get_value();]) ])# BOOST_LOG # BOOST_LOG_SETUP([PREFERRED-RT-OPT]) # ----------------------------------- # Look for Boost.Log. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Log_Setup], [AC_REQUIRE([BOOST_LOG])dnl BOOST_FIND_LIB([log_setup], [$1], [boost/log/utility/setup/from_settings.hpp], [boost::log::basic_settings bs; bs.empty();]) ])# BOOST_LOG_SETUP # BOOST_MATH() # ------------ # Look for Boost.Math # TODO: This library isn't header-only but it comes in multiple different # flavors that don't play well with BOOST_FIND_LIB (e.g, libboost_math_c99, # libboost_math_c99f, libboost_math_c99l, libboost_math_tr1, # libboost_math_tr1f, libboost_math_tr1l). This macro must be fixed to do the # right thing anyway. BOOST_DEFUN([Math], [BOOST_FIND_HEADER([boost/math/special_functions.hpp])]) # BOOST_MPI([PREFERRED-RT-OPT]) # ------------------------------- # Look for Boost MPI. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. Uses MPICXX variable if it is # set, otherwise tries CXX # BOOST_DEFUN([MPI], [boost_save_CXX=${CXX} boost_save_CXXCPP=${CXXCPP} if test x"${MPICXX}" != x; then CXX=${MPICXX} CXXCPP="${MPICXX} -E" fi BOOST_FIND_LIB([mpi], [$1], [boost/mpi.hpp], [int argc = 0; char **argv = 0; boost::mpi::environment env(argc,argv);]) CXX=${boost_save_CXX} CXXCPP=${boost_save_CXXCPP} ])# BOOST_MPI # BOOST_MULTIARRAY() # ------------------ # Look for Boost.MultiArray BOOST_DEFUN([MultiArray], [BOOST_FIND_HEADER([boost/multi_array.hpp])]) # BOOST_NUMERIC_UBLAS() # -------------------------- # Look for Boost.NumericUblas (Basic Linear Algebra) BOOST_DEFUN([Numeric_Ublas], [BOOST_FIND_HEADER([boost/numeric/ublas/vector.hpp]) ])# BOOST_NUMERIC_UBLAS # BOOST_NUMERIC_CONVERSION() # -------------------------- # Look for Boost.NumericConversion (policy-based numeric conversion) BOOST_DEFUN([Numeric_Conversion], [BOOST_FIND_HEADER([boost/numeric/conversion/converter.hpp]) ])# BOOST_NUMERIC_CONVERSION # BOOST_OPTIONAL() # ---------------- # Look for Boost.Optional BOOST_DEFUN([Optional], [BOOST_FIND_HEADER([boost/optional.hpp])]) # BOOST_PREPROCESSOR() # -------------------- # Look for Boost.Preprocessor BOOST_DEFUN([Preprocessor], [BOOST_FIND_HEADER([boost/preprocessor/repeat.hpp])]) # BOOST_RANGE() # -------------------- # Look for Boost.Range BOOST_DEFUN([Range], [BOOST_FIND_HEADER([boost/range/adaptors.hpp])]) # BOOST_UNORDERED() # ----------------- # Look for Boost.Unordered BOOST_DEFUN([Unordered], [BOOST_FIND_HEADER([boost/unordered_map.hpp])]) # BOOST_UUID() # ------------ # Look for Boost.Uuid BOOST_DEFUN([Uuid], [BOOST_FIND_HEADER([boost/uuid/uuid.hpp])]) # BOOST_PROGRAM_OPTIONS([PREFERRED-RT-OPT]) # ----------------------------------------- # Look for Boost.Program_options. For the documentation of PREFERRED-RT-OPT, # see the documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Program_Options], [BOOST_FIND_LIB([program_options], [$1], [boost/program_options.hpp], [boost::program_options::options_description d("test");]) ])# BOOST_PROGRAM_OPTIONS # _BOOST_PYTHON_CONFIG(VARIABLE, FLAG) # ------------------------------------ # Save VARIABLE, and define it via `python-config --FLAG`. # Substitute BOOST_PYTHON_VARIABLE. m4_define([_BOOST_PYTHON_CONFIG], [AC_SUBST([BOOST_PYTHON_$1], [`python-config --$2 2>/dev/null`])dnl boost_python_save_$1=$$1 $1="$$1 $BOOST_PYTHON_$1"]) # BOOST_PYTHON([PREFERRED-RT-OPT]) # -------------------------------- # Look for Boost.Python. For the documentation of PREFERRED-RT-OPT, # see the documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Python], [_BOOST_PYTHON_CONFIG([CPPFLAGS], [includes]) _BOOST_PYTHON_CONFIG([LDFLAGS], [ldflags]) _BOOST_PYTHON_CONFIG([LIBS], [libs]) m4_pattern_allow([^BOOST_PYTHON_MODULE$])dnl BOOST_FIND_LIBS([python], [python python3], [$1], [boost/python.hpp], [], [BOOST_PYTHON_MODULE(empty) {}]) CPPFLAGS=$boost_python_save_CPPFLAGS LDFLAGS=$boost_python_save_LDFLAGS LIBS=$boost_python_save_LIBS ])# BOOST_PYTHON # BOOST_REF() # ----------- # Look for Boost.Ref BOOST_DEFUN([Ref], [BOOST_FIND_HEADER([boost/ref.hpp])]) # BOOST_REGEX([PREFERRED-RT-OPT]) # ------------------------------- # Look for Boost.Regex. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Regex], [BOOST_FIND_LIB([regex], [$1], [boost/regex.hpp], [boost::regex exp("*"); boost::regex_match("foo", exp);]) ])# BOOST_REGEX # BOOST_SERIALIZATION([PREFERRED-RT-OPT]) # --------------------------------------- # Look for Boost.Serialization. For the documentation of PREFERRED-RT-OPT, see # the documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Serialization], [BOOST_FIND_LIB([serialization], [$1], [boost/archive/text_oarchive.hpp], [std::ostream* o = 0; // Cheap way to get an ostream... boost::archive::text_oarchive t(*o);]) ])# BOOST_SERIALIZATION # BOOST_SIGNALS([PREFERRED-RT-OPT]) # --------------------------------- # Look for Boost.Signals. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Signals], [BOOST_FIND_LIB([signals], [$1], [boost/signal.hpp], [boost::signal s;]) ])# BOOST_SIGNALS # BOOST_SIGNALS2() # ---------------- # Look for Boost.Signals2 (new since 1.39.0). BOOST_DEFUN([Signals2], [BOOST_FIND_HEADER([boost/signals2.hpp]) ])# BOOST_SIGNALS2 # BOOST_SMART_PTR() # ----------------- # Look for Boost.SmartPtr BOOST_DEFUN([Smart_Ptr], [BOOST_FIND_HEADER([boost/scoped_ptr.hpp]) BOOST_FIND_HEADER([boost/shared_ptr.hpp]) ]) # BOOST_STATICASSERT() # -------------------- # Look for Boost.StaticAssert BOOST_DEFUN([StaticAssert], [BOOST_FIND_HEADER([boost/static_assert.hpp])]) # BOOST_STRING_ALGO() # ------------------- # Look for Boost.StringAlgo BOOST_DEFUN([String_Algo], [BOOST_FIND_HEADER([boost/algorithm/string.hpp]) ]) # BOOST_SYSTEM([PREFERRED-RT-OPT]) # -------------------------------- # Look for Boost.System. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. This library was introduced in Boost # 1.35.0. BOOST_DEFUN([System], [BOOST_FIND_LIB([system], [$1], [boost/system/error_code.hpp], [boost::system::error_code e; e.clear();]) ])# BOOST_SYSTEM # BOOST_TEST([PREFERRED-RT-OPT]) # ------------------------------ # Look for Boost.Test. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Test], [m4_pattern_allow([^BOOST_CHECK$])dnl BOOST_FIND_LIB([unit_test_framework], [$1], [boost/test/unit_test.hpp], [BOOST_CHECK(2 == 2);], [using boost::unit_test::test_suite; test_suite* init_unit_test_suite(int argc, char ** argv) { return NULL; }]) ])# BOOST_TEST # BOOST_THREAD([PREFERRED-RT-OPT]) # --------------------------------- # Look for Boost.Thread. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Thread], [dnl Having the pthread flag is required at least on GCC3 where dnl boost/thread.hpp would complain if we try to compile without dnl -pthread on GNU/Linux. AC_REQUIRE([_BOOST_PTHREAD_FLAG])dnl boost_thread_save_LIBS=$LIBS boost_thread_save_LDFLAGS=$LDFLAGS boost_thread_save_CPPFLAGS=$CPPFLAGS # Link-time dependency from thread to system was added as of 1.49.0. if test $boost_major_version -ge 149; then BOOST_SYSTEM([$1]) fi # end of the Boost.System check. m4_pattern_allow([^BOOST_SYSTEM_(LIBS|LDFLAGS)$])dnl LIBS="$LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag" LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS" CPPFLAGS="$CPPFLAGS $boost_cv_pthread_flag" # When compiling for the Windows platform, the threads library is named # differently. This suffix doesn't exist in new versions of Boost, or # possibly new versions of GCC on mingw I am assuming it's Boost's change for # now and I am setting version to 1.48, for lack of knowledge as to when this # change occurred. if test $boost_major_version -lt 148; then case $host_os in (*mingw*) boost_thread_lib_ext=_win32;; esac fi BOOST_FIND_LIBS([thread], [thread$boost_thread_lib_ext], [$1], [boost/thread.hpp], [boost::thread t; boost::mutex m;]) case $host_os in (*mingw*) boost_thread_w32_socket_link=-lws2_32;; esac BOOST_THREAD_LIBS="$BOOST_THREAD_LIBS $BOOST_SYSTEM_LIBS $boost_cv_pthread_flag $boost_thread_w32_socket_link" BOOST_THREAD_LDFLAGS="$BOOST_SYSTEM_LDFLAGS" BOOST_CPPFLAGS="$BOOST_CPPFLAGS $boost_cv_pthread_flag" LIBS=$boost_thread_save_LIBS LDFLAGS=$boost_thread_save_LDFLAGS CPPFLAGS=$boost_thread_save_CPPFLAGS ])# BOOST_THREAD AU_ALIAS([BOOST_THREADS], [BOOST_THREAD]) # BOOST_TOKENIZER() # ----------------- # Look for Boost.Tokenizer BOOST_DEFUN([Tokenizer], [BOOST_FIND_HEADER([boost/tokenizer.hpp])]) # BOOST_TRIBOOL() # --------------- # Look for Boost.Tribool BOOST_DEFUN([Tribool], [BOOST_FIND_HEADER([boost/logic/tribool_fwd.hpp]) BOOST_FIND_HEADER([boost/logic/tribool.hpp]) ]) # BOOST_TUPLE() # ------------- # Look for Boost.Tuple BOOST_DEFUN([Tuple], [BOOST_FIND_HEADER([boost/tuple/tuple.hpp])]) # BOOST_TYPETRAITS() # -------------------- # Look for Boost.TypeTraits BOOST_DEFUN([TypeTraits], [BOOST_FIND_HEADER([boost/type_traits.hpp])]) # BOOST_UTILITY() # --------------- # Look for Boost.Utility (noncopyable, result_of, base-from-member idiom, # etc.) BOOST_DEFUN([Utility], [BOOST_FIND_HEADER([boost/utility.hpp])]) # BOOST_VARIANT() # --------------- # Look for Boost.Variant. BOOST_DEFUN([Variant], [BOOST_FIND_HEADER([boost/variant/variant_fwd.hpp]) BOOST_FIND_HEADER([boost/variant.hpp])]) # BOOST_POINTER_CONTAINER() # ------------------------ # Look for Boost.PointerContainer BOOST_DEFUN([Pointer_Container], [BOOST_FIND_HEADER([boost/ptr_container/ptr_deque.hpp]) BOOST_FIND_HEADER([boost/ptr_container/ptr_list.hpp]) BOOST_FIND_HEADER([boost/ptr_container/ptr_vector.hpp]) BOOST_FIND_HEADER([boost/ptr_container/ptr_array.hpp]) BOOST_FIND_HEADER([boost/ptr_container/ptr_set.hpp]) BOOST_FIND_HEADER([boost/ptr_container/ptr_map.hpp]) ])# BOOST_POINTER_CONTAINER # BOOST_WAVE([PREFERRED-RT-OPT]) # ------------------------------ # NOTE: If you intend to use Wave/Spirit with thread support, make sure you # call BOOST_THREAD first. # Look for Boost.Wave. For the documentation of PREFERRED-RT-OPT, see the # documentation of BOOST_FIND_LIB above. BOOST_DEFUN([Wave], [AC_REQUIRE([BOOST_FILESYSTEM])dnl AC_REQUIRE([BOOST_DATE_TIME])dnl boost_wave_save_LIBS=$LIBS boost_wave_save_LDFLAGS=$LDFLAGS m4_pattern_allow([^BOOST_((FILE)?SYSTEM|DATE_TIME|THREAD)_(LIBS|LDFLAGS)$])dnl LIBS="$LIBS $BOOST_SYSTEM_LIBS $BOOST_FILESYSTEM_LIBS $BOOST_DATE_TIME_LIBS \ $BOOST_THREAD_LIBS" LDFLAGS="$LDFLAGS $BOOST_SYSTEM_LDFLAGS $BOOST_FILESYSTEM_LDFLAGS \ $BOOST_DATE_TIME_LDFLAGS $BOOST_THREAD_LDFLAGS" BOOST_FIND_LIB([wave], [$1], [boost/wave.hpp], [boost::wave::token_id id; get_token_name(id);]) LIBS=$boost_wave_save_LIBS LDFLAGS=$boost_wave_save_LDFLAGS ])# BOOST_WAVE # BOOST_XPRESSIVE() # ----------------- # Look for Boost.Xpressive (new since 1.36.0). BOOST_DEFUN([Xpressive], [BOOST_FIND_HEADER([boost/xpressive/xpressive.hpp])]) # ----------------- # # Internal helpers. # # ----------------- # # _BOOST_PTHREAD_FLAG() # --------------------- # Internal helper for BOOST_THREAD. Computes boost_cv_pthread_flag # which must be used in CPPFLAGS and LIBS. # # Yes, we *need* to put the -pthread thing in CPPFLAGS because with GCC3, # boost/thread.hpp will trigger a #error if -pthread isn't used: # boost/config/requires_threads.hpp:47:5: #error "Compiler threading support # is not turned on. Please set the correct command line options for # threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)" # # Based on ACX_PTHREAD: http://autoconf-archive.cryp.to/acx_pthread.html AC_DEFUN([_BOOST_PTHREAD_FLAG], [AC_REQUIRE([AC_PROG_CXX])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_LANG_PUSH([C++])dnl AC_CACHE_CHECK([for the flags needed to use pthreads], [boost_cv_pthread_flag], [ boost_cv_pthread_flag= # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # (none): in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -lpthreads: AIX (must check this before -lpthread) # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # -llthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: GNU Linux/GCC (kernel threads), BSD/GCC (userland threads) # -pthreads: Solaris/GCC # -mthreads: MinGW32/GCC, Lynx/GCC # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # -lpthread: GNU Linux, etc. # --thread-safe: KAI C++ case $host_os in #( *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: boost_pthread_flags="-pthreads -lpthread -mt -pthread";; #( *) boost_pthread_flags="-lpthreads -Kthread -kthread -llthread -pthread \ -pthreads -mthreads -lpthread --thread-safe -mt";; esac # Generate the test file. AC_LANG_CONFTEST([AC_LANG_PROGRAM([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0);])]) for boost_pthread_flag in '' $boost_pthread_flags; do boost_pthread_ok=false dnl Re-use the test file already generated. boost_pthreads__save_LIBS=$LIBS LIBS="$LIBS $boost_pthread_flag" AC_LINK_IFELSE([], [if grep ".*$boost_pthread_flag" conftest.err; then echo "This flag seems to have triggered warnings" >&AS_MESSAGE_LOG_FD else boost_pthread_ok=:; boost_cv_pthread_flag=$boost_pthread_flag fi]) LIBS=$boost_pthreads__save_LIBS $boost_pthread_ok && break done ]) AC_LANG_POP([C++])dnl ])# _BOOST_PTHREAD_FLAG # _BOOST_gcc_test(MAJOR, MINOR) # ----------------------------- # Internal helper for _BOOST_FIND_COMPILER_TAG. m4_define([_BOOST_gcc_test], ["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC @ gcc$1$2"])dnl # _BOOST_mingw_test(MAJOR, MINOR) # ----------------------------- # Internal helper for _BOOST_FIND_COMPILER_TAG. m4_define([_BOOST_mingw_test], ["defined __GNUC__ && __GNUC__ == $1 && __GNUC_MINOR__ == $2 && !defined __ICC && \ (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw$1$2"])dnl # _BOOST_FIND_COMPILER_TAG() # -------------------------- # Internal. When Boost is installed without --layout=system, each library # filename will hold a suffix that encodes the compiler used during the # build. The Boost build system seems to call this a `tag'. AC_DEFUN([_BOOST_FIND_COMPILER_TAG], [AC_REQUIRE([AC_PROG_CXX])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_CACHE_CHECK([for the toolset name used by Boost for $CXX], [boost_cv_lib_tag], [boost_cv_lib_tag=unknown if test x$boost_cv_inc_path != xno; then AC_LANG_PUSH([C++])dnl # The following tests are mostly inspired by boost/config/auto_link.hpp # The list is sorted to most recent/common to oldest compiler (in order # to increase the likelihood of finding the right compiler with the # least number of compilation attempt). # Beware that some tests are sensible to the order (for instance, we must # look for MinGW before looking for GCC3). # I used one compilation test per compiler with a #error to recognize # each compiler so that it works even when cross-compiling (let me know # if you know a better approach). # Known missing tags (known from Boost's tools/build/v2/tools/common.jam): # como, edg, kcc, bck, mp, sw, tru, xlc # I'm not sure about my test for `il' (be careful: Intel's ICC pre-defines # the same defines as GCC's). for i in \ _BOOST_mingw_test(5, 2) \ _BOOST_gcc_test(5, 2) \ _BOOST_mingw_test(5, 1) \ _BOOST_gcc_test(5, 1) \ _BOOST_mingw_test(5, 0) \ _BOOST_gcc_test(5, 0) \ _BOOST_mingw_test(4, 10) \ _BOOST_gcc_test(4, 10) \ _BOOST_mingw_test(4, 9) \ _BOOST_gcc_test(4, 9) \ _BOOST_mingw_test(4, 8) \ _BOOST_gcc_test(4, 8) \ _BOOST_mingw_test(4, 7) \ _BOOST_gcc_test(4, 7) \ _BOOST_mingw_test(4, 6) \ _BOOST_gcc_test(4, 6) \ _BOOST_mingw_test(4, 5) \ _BOOST_gcc_test(4, 5) \ _BOOST_mingw_test(4, 4) \ _BOOST_gcc_test(4, 4) \ _BOOST_mingw_test(4, 3) \ _BOOST_gcc_test(4, 3) \ _BOOST_mingw_test(4, 2) \ _BOOST_gcc_test(4, 2) \ _BOOST_mingw_test(4, 1) \ _BOOST_gcc_test(4, 1) \ _BOOST_mingw_test(4, 0) \ _BOOST_gcc_test(4, 0) \ "defined __GNUC__ && __GNUC__ == 3 && !defined __ICC \ && (defined WIN32 || defined WINNT || defined _WIN32 || defined __WIN32 \ || defined __WIN32__ || defined __WINNT || defined __WINNT__) @ mgw" \ _BOOST_gcc_test(3, 4) \ _BOOST_gcc_test(3, 3) \ "defined _MSC_VER && _MSC_VER >= 1500 @ vc90" \ "defined _MSC_VER && _MSC_VER == 1400 @ vc80" \ _BOOST_gcc_test(3, 2) \ "defined _MSC_VER && _MSC_VER == 1310 @ vc71" \ _BOOST_gcc_test(3, 1) \ _BOOST_gcc_test(3, 0) \ "defined __BORLANDC__ @ bcb" \ "defined __ICC && (defined __unix || defined __unix__) @ il" \ "defined __ICL @ iw" \ "defined _MSC_VER && _MSC_VER == 1300 @ vc7" \ _BOOST_gcc_test(2, 95) \ "defined __MWERKS__ && __MWERKS__ <= 0x32FF @ cw9" \ "defined _MSC_VER && _MSC_VER < 1300 && !defined UNDER_CE @ vc6" \ "defined _MSC_VER && _MSC_VER < 1300 && defined UNDER_CE @ evc4" \ "defined __MWERKS__ && __MWERKS__ <= 0x31FF @ cw8" do boost_tag_test=`expr "X$i" : 'X\([[^@]]*\) @ '` boost_tag=`expr "X$i" : 'X[[^@]]* @ \(.*\)'` AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #if $boost_tag_test /* OK */ #else # error $boost_tag_test #endif ]])], [boost_cv_lib_tag=$boost_tag; break], []) done AC_LANG_POP([C++])dnl case $boost_cv_lib_tag in #( # Some newer (>= 1.35?) versions of Boost seem to only use "gcc" as opposed # to "gcc41" for instance. *-gcc | *'-gcc ') :;; #( Don't re-add -gcc: it's already in there. gcc*) boost_tag_x= case $host_os in #( darwin*) if test $boost_major_version -ge 136; then # The `x' added in r46793 of Boost. boost_tag_x=x fi;; esac # We can specify multiple tags in this variable because it's used by # BOOST_FIND_LIB that does a `for tag in -$boost_cv_lib_tag' ... boost_cv_lib_tag="$boost_tag_x$boost_cv_lib_tag -${boost_tag_x}gcc" ;; #( unknown) AC_MSG_WARN([[could not figure out which toolset name to use for $CXX]]) boost_cv_lib_tag= ;; esac fi])dnl end of AC_CACHE_CHECK ])# _BOOST_FIND_COMPILER_TAG # _BOOST_GUESS_WHETHER_TO_USE_MT() # -------------------------------- # Compile a small test to try to guess whether we should favor MT (Multi # Thread) flavors of Boost. Sets boost_guess_use_mt accordingly. AC_DEFUN([_BOOST_GUESS_WHETHER_TO_USE_MT], [# Check whether we do better use `mt' even though we weren't ask to. AC_LANG_PUSH([C++])dnl AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #if defined _REENTRANT || defined _MT || defined __MT__ /* use -mt */ #else # error MT not needed #endif ]])], [boost_guess_use_mt=:], [boost_guess_use_mt=false]) AC_LANG_POP([C++])dnl ]) # _BOOST_AC_LINK_IFELSE(PROGRAM, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) # ------------------------------------------------------------------- # Fork of _AC_LINK_IFELSE that preserves conftest.o across calls. Fragile, # will break when Autoconf changes its internals. Requires that you manually # rm -f conftest.$ac_objext in between to really different tests, otherwise # you will try to link a conftest.o left behind by a previous test. # Used to aggressively optimize BOOST_FIND_LIB (see the big comment in this # macro). # # Don't use "break" in the actions, as it would short-circuit some code # this macro runs after the actions. m4_define([_BOOST_AC_LINK_IFELSE], [m4_ifvaln([$1], [AC_LANG_CONFTEST([$1])])dnl rm -f conftest$ac_exeext boost_save_ac_ext=$ac_ext boost_use_source=: # If we already have a .o, re-use it. We change $ac_ext so that $ac_link # tries to link the existing object file instead of compiling from source. test -f conftest.$ac_objext && ac_ext=$ac_objext && boost_use_source=false && _AS_ECHO_LOG([re-using the existing conftest.$ac_objext]) AS_IF([_AC_DO_STDERR($ac_link) && { test -z "$ac_[]_AC_LANG_ABBREV[]_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_executable_p conftest$ac_exeext dnl FIXME: use AS_TEST_X instead when 2.61 is widespread enough. }], [$2], [if $boost_use_source; then _AC_MSG_LOG_CONFTEST fi $3]) ac_objext=$boost_save_ac_objext ac_ext=$boost_save_ac_ext dnl Delete also the IPA/IPO (Inter Procedural Analysis/Optimization) dnl information created by the PGI compiler (conftest_ipa8_conftest.oo), dnl as it would interfere with the next link command. rm -f core conftest.err conftest_ipa8_conftest.oo \ conftest$ac_exeext m4_ifval([$1], [conftest.$ac_ext])[]dnl ])# _BOOST_AC_LINK_IFELSE # Local Variables: # mode: autoconf # End: amule_2.3.1+git20151120.0023527bc2.orig/m4/build-tools.m40000644000175000017500000001021312611472361020517 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule Project. # # Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # # # This package has been tested with GNU Autoconf 2.59, and not guaranteed to # work with any other version. However, you only need to worry about it if # you're cross-compiling. # _AC_CHECK_BUILD_PREFIX # ----------------------- # Checks and sets the build prefix, if it is given by --build. AC_DEFUN([_AC_CHECK_BUILD_PREFIX], [ac_build_prefix= test -n "$build_alias" && ac_build_prefix=$build_alias- ]) # AC_CHECK_BUILD_PREFIX # AC_PROG_BUILD_CC([COMPILER ...]) # -------------------------- # COMPILER ... is a space separated list of C compilers to search for. # This just gives the user an opportunity to specify an alternative # search list for the C compiler. # # IMPORTANT: Run all other compiler tests *before* calling this macro! # # This is a stripped-down check, it checks only what we need, # i.e. BUILD_CC and BUILD_EXEEXT # AC_DEFUN([AC_PROG_BUILD_CC], [AC_REQUIRE([_AC_CHECK_BUILD_PREFIX])dnl dnl Set new names of important variables. pushdef([ac_tool_prefix], [ac_build_prefix])dnl pushdef([CC], [BUILD_CC])dnl pushdef([EXEEXT], [BUILD_EXEEXT])dnl pushdef([ac_cv_exeext], [ac_cv_build_exeext])dnl pushdef([ac_exeext], [ac_build_exeext])dnl dnl Don't use the values for the cross-compiler pushdef([CPPFLAGS], [BUILD_CPPFLAGS])dnl pushdef([CFLAGS], [BUILD_CFLAGS])dnl pushdef([LDFLAGS], [BUILD_LDFLAGS])dnl pushdef([LIBS], [BUILD_LIBS])dnl # Even if we're cross-compiling, we want a compiler here # that is not a cross-compiler. saved_cross=$cross_compiling cross_compiling=no dnl From now on, this is just a mere copy of Autoconf's AC_PROG_CC macro. AC_LANG_PUSH(C)dnl m4_ifval([$1], [AC_CHECK_TOOLS(CC, [$1])], [AC_CHECK_TOOL(CC, gcc) if test -z "$CC"; then AC_CHECK_TOOL(CC, cc) fi if test -z "$CC"; then AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc) fi if test -z "$CC"; then AC_CHECK_TOOLS(CC, cl) fi ]) test -z "$CC" && AC_MSG_FAILURE([no acceptable C compiler found in \$PATH]) # Provide some information about the compiler. echo "$as_me:$LINENO:" \ "checking for _AC_LANG compiler version" >&AS_MESSAGE_LOG_FD ac_compiler=`set X $ac_compile; echo $[2]` _AC_EVAL([$ac_compiler --version &AS_MESSAGE_LOG_FD]) _AC_EVAL([$ac_compiler -v &AS_MESSAGE_LOG_FD]) _AC_EVAL([$ac_compiler -V &AS_MESSAGE_LOG_FD]) dnl Forcibly include _AC_COMPILER_EXEEXT, to determine the build exeext. _AC_COMPILER_EXEEXT dnl End of copy, here some parts are stripped out. We only want a working C dnl compiler, and doesn't need the objext, the preprocessor, the dependency dnl style, whether it's gnu or not, etc. # Restore configuration environment cross_compiling=$saved_cross dnl Restore variable names. popdef([LIBS])dnl popdef([LDFLAGS])dnl popdef([CFLAGS])dnl popdef([CPPFLAGS])dnl popdef([ac_exeext])dnl popdef([ac_cv_exeext])dnl popdef([EXEEXT])dnl popdef([CC])dnl popdef([ac_tool_prefix])dnl dnl dnl AC_LANG_POP(C) must be called after the variable names are restored, thus dnl it will restore the correct (host) environment, not the build environment. AC_LANG_POP(C)dnl dnl Substitute variables for the build compiler AC_SUBST(BUILD_EXEEXT)dnl AC_SUBST(BUILD_CPPFLAGS)dnl AC_SUBST(BUILD_CFLAGS)dnl AC_SUBST(BUILD_LDFLAGS)dnl ]) # AC_PROG_BUILD_CC amule_2.3.1+git20151120.0023527bc2.orig/m4/codeset.m40000644000175000017500000000157612611472361017724 0ustar morphmorph# codeset.m4 serial AM1 (gettext-0.10.40) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_LANGINFO_CODESET], [ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, [AC_TRY_LINK([#include ], [char* cs = nl_langinfo(CODESET);], am_cv_langinfo_codeset=yes, am_cv_langinfo_codeset=no) ]) if test $am_cv_langinfo_codeset = yes; then AC_DEFINE(HAVE_LANGINFO_CODESET, 1, [Define if you have and nl_langinfo(CODESET).]) fi ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/cryptopp.m40000644000175000017500000001464212611472361020154 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule Project. # # Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # dnl -------------------------------------------------------------------------- dnl MULE_CHECK_CRYPTOPP([VERSION = 5.1], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl dnl Check for cryptopp library dnl -------------------------------------------------------------------------- dnl dnl This macro sets these variables: dnl - CRYPTOPP_PREFIX dnl This is the user or system directory where crypto++ is installed or sources dnl - CRYPTOPP_VERSION_STRING dnl Something like "5.5.2" dnl - CRYPTOPP_VERSION_NUMBER dnl Something like 5005002 dnl - CRYPTOPP_STYLE dnl "sources", "installed" or "gentoo_debian" dnl - CRYPTOPP_LIB_NAME dnl "cryptopp" or "crypto++" dnl - CRYPTOPP_INCLUDE_PREFIX dnl The string that goes here: #include <@CRYPTOPP_INCLUDE_PREFIX@/rsa.h> dnl - CRYPTOPP_CPPFLAGS dnl Flags to be added to CPPFLAGS dnl - CRYPTOPP_LDFLAGS dnl Flags to be added to LDFLAGS dnl - CRYPTOPP_LIBS dnl Library to be added to LIBS dnl dnl The CRYPTOPP_CPPFLAGS, CRYPTOPP_LDFLAGS and CRYPTOPP_LIBS variables are also substituted. dnl dnl Worth notice: dnl - cryptopp_includedir dnl The string that goes in -I on CPPFLAGS dnl - cryptopp_libdir dnl The string that goes in -L on LDFLAGS dnl - cryptopp_header_path dnl The file we use to discover the version of cryptopp dnl AC_DEFUN([MULE_CHECK_CRYPTOPP], [dnl AC_REQUIRE([AC_PROG_EGREP])dnl m4_define([MIN_CRYPTO_VERSION], [m4_ifval([$1], [$1], [5.1])])dnl AC_ARG_WITH([crypto-prefix], [AS_HELP_STRING([--with-crypto-prefix=PREFIX], [prefix where crypto++ is installed])]) AC_MSG_CHECKING([for crypto++ version >= MIN_CRYPTO_VERSION]) cryptopp_file_with_version="cryptlib.h" CRYPTOPP_STYLE="unknown" CRYPTOPP_LIB_NAME="unknown" cryptopp_includedir="unknown" CRYPTOPP_INCLUDE_PREFIX="unknown" cryptopp_libdir="unknown" AS_IF([test -n "$with_crypto_prefix"], [ CRYPTOPP_PREFIX="$with_crypto_prefix" # Find the Cryptopp header in the user-provided location MULE_IF([test -f $CRYPTOPP_PREFIX/$cryptopp_file_with_version], [ CRYPTOPP_STYLE="sources" CRYPTOPP_LIB_NAME="cryptopp" cryptopp_includedir= CRYPTOPP_INCLUDE_PREFIX="$CRYPTOPP_PREFIX" cryptopp_libdir= ], [test -f $CRYPTOPP_PREFIX/include/cryptopp/$cryptopp_file_with_version], [ CRYPTOPP_STYLE="installed" CRYPTOPP_LIB_NAME="cryptopp" cryptopp_includedir="$CRYPTOPP_PREFIX/include" CRYPTOPP_INCLUDE_PREFIX="$CRYPTOPP_LIB_NAME" cryptopp_libdir="$CRYPTOPP_PREFIX/lib" ], [test -f $CRYPTOPP_PREFIX/include/crypto++/$cryptopp_file_with_version], [ # Debian uses libcrypto++5.1 - it's not my fault, please soda patch the package CRYPTOPP_STYLE="gentoo_debian" CRYPTOPP_LIB_NAME="crypto++" cryptopp_includedir="$CRYPTOPP_PREFIX/include" CRYPTOPP_INCLUDE_PREFIX="$CRYPTOPP_LIB_NAME" cryptopp_libdir="$CRYPTOPP_PREFIX/lib" ]) ], [ for CRYPTOPP_PREFIX in /usr /usr/local /opt /opt/local /usr/pkg /mingw ; do # Find the Cryptopp header in system locations MULE_IF([test -f $CRYPTOPP_PREFIX/$cryptopp_file_with_version], [ CRYPTOPP_STYLE="sources" CRYPTOPP_LIB_NAME="cryptopp" cryptopp_includedir= CRYPTOPP_INCLUDE_PREFIX="$CRYPTOPP_PREFIX" cryptopp_libdir= break ], [test -f $CRYPTOPP_PREFIX/include/cryptopp/$cryptopp_file_with_version], [ CRYPTOPP_STYLE="installed" CRYPTOPP_LIB_NAME="cryptopp" cryptopp_includedir="$CRYPTOPP_PREFIX/include" CRYPTOPP_INCLUDE_PREFIX="$CRYPTOPP_LIB_NAME" cryptopp_libdir="$CRYPTOPP_PREFIX/lib" break ], [test -f $CRYPTOPP_PREFIX/include/crypto++/$cryptopp_file_with_version], [ # Debian uses libcrypto++5.1 - it's not my fault, please soda patch the package CRYPTOPP_STYLE="gentoo_debian" CRYPTOPP_LIB_NAME="crypto++" cryptopp_includedir="$CRYPTOPP_PREFIX/include" CRYPTOPP_INCLUDE_PREFIX="$CRYPTOPP_LIB_NAME" cryptopp_libdir="$CRYPTOPP_PREFIX/lib" break ]) done ]) AS_IF([test $CRYPTOPP_STYLE = "unknown"], [result=no; resultstr=""], [ # Find out the crypto++ version and check against the minimum required cryptopp_header_path="${cryptopp_includedir+$cryptopp_includedir/}$CRYPTOPP_INCLUDE_PREFIX/$cryptopp_file_with_version" CRYPTOPP_VERSION_STRING=`$EGREP "Reference Manual|API Reference" $cryptopp_header_path | sed -e ['s/[^0-9]*\([0-9.]*\).*/\1/']` CRYPTOPP_VERSION_NUMBER=`echo $CRYPTOPP_VERSION_STRING | $AWK 'BEGIN { FS = "."; } { printf "%d", ([$]1 * 1000 + [$]2) * 1000 + [$]3;}'` minvers=`echo MIN_CRYPTO_VERSION | $AWK 'BEGIN { FS = "."; } { printf "%d", ([$]1 * 1000 + [$]2) * 1000 + [$]3;}'` AS_IF([test -n "$CRYPTOPP_VERSION_NUMBER" && test "$CRYPTOPP_VERSION_NUMBER" -ge $minvers], [ result=yes resultstr=" (version $CRYPTOPP_VERSION_STRING, $CRYPTOPP_STYLE)" AS_IF([test -n "$cryptopp_includedir"], [CRYPTOPP_CPPFLAGS="-I$cryptopp_includedir"], [CRYPTOPP_CPPFLAGS=]) AS_IF([test -n "$cryptopp_libdir"], [ CRYPTOPP_LDFLAGS="-L$cryptopp_libdir" CRYPTOPP_LIBS="-l$CRYPTOPP_LIB_NAME" ], [ CRYPTOPP_LDFLAGS= CRYPTOPP_LIBS="${CRYPTOPP_INCLUDE_PREFIX}/lib${CRYPTOPP_LIB_NAME}.a" ]) AH_TEMPLATE([CRYPTOPP_INCLUDE_PREFIX], [Define this to the include prefix of crypto++]) AC_DEFINE_UNQUOTED([CRYPTOPP_INCLUDE_PREFIX], $CRYPTOPP_INCLUDE_PREFIX) ], [ result=no resultstr=" (version $CRYPTOPP_VERSION_STRING is not new enough)" ]) ]) AC_MSG_RESULT([$result$resultstr]) AS_IF([test ${result:-no} = yes], [$2], [$3]) dnl Exported symbols AC_SUBST([CRYPTOPP_CPPFLAGS])dnl AC_SUBST([CRYPTOPP_LDFLAGS])dnl AC_SUBST([CRYPTOPP_LIBS])dnl m4_undefine([MIN_CRYPTO_VERSION])dnl ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/fallocate.m40000644000175000017500000000460512611472361020224 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule Project. # # Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # AC_DEFUN([MULE_CHECK_FALLOCATE], [ AC_MSG_CHECKING([for fallocate]) MULE_BACKUP([CPPFLAGS]) MULE_APPEND([CPPFLAGS], [$WX_CPPFLAGS]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #ifndef _GNU_SOURCE # define _GNU_SOURCE #endif #ifdef HAVE_FCNTL_H # include #endif #include ]], [[ fallocate(0, 0, 0, 0); ]]) ], [ AH_TEMPLATE([HAVE_FALLOCATE], [Define to 1 if you have the fallocate() function.]) AC_DEFINE([HAVE_FALLOCATE]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) MULE_RESTORE([CPPFLAGS]) AC_MSG_CHECKING([for SYS_fallocate]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include #include #include ]], [[ syscall(SYS_fallocate, 0, (loff_t)0, (loff_t)0); ]]) ], [ AH_TEMPLATE([HAVE_SYS_FALLOCATE], [Define to 1 if you have the SYS_fallocate syscall number.]) AC_DEFINE([HAVE_SYS_FALLOCATE]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) AC_MSG_CHECKING([for posix_fallocate]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #define _XOPEN_SOURCE 600 #include #ifdef HAVE_FCNTL_H # include #endif ]], [[ posix_fallocate(0, 0, 0); ]]) ], [ AH_TEMPLATE([HAVE_POSIX_FALLOCATE], [Define to 1 if you have posix_fallocate() and it should be used.]) AC_DEFINE([HAVE_POSIX_FALLOCATE]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) ]) ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/gdlib.m40000644000175000017500000001143412611472361017351 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule Project. # # Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # dnl --------------------------------------------------------------------------- dnl MULE_CHECK_GDLIB([VERSION = 2.0.0], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl dnl adds support for --with-gdlib-prefix and --with-gdlib-config dnl command line options dnl dnl Test for gdlib, and define GDLIB_CFLAGS, GDLIB_LIBS and GDLIB_CONFIG_NAME dnl environment variable to override the default name of the gdlib-config script dnl to use. Set GDLIB_CONFIG_PATH to specify the full path to gdlib-config - dnl in this case the macro won't even waste time on tests for its existence. dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_GDLIB], [dnl m4_define([REQUIRED_VERSION], [m4_ifval([$1], [$1], [2.0.0])])dnl m4_define([REQUIRED_VERSION_MAJOR], [m4_bregexp(REQUIRED_VERSION, [\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)], [\1])])dnl m4_define([REQUIRED_VERSION_MINOR], [m4_bregexp(REQUIRED_VERSION, [\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)], [\2])])dnl m4_define([REQUIRED_VERSION_MICRO], [m4_bregexp(REQUIRED_VERSION, [\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)], [\3])])dnl AC_ARG_WITH([gdlib-prefix], [AS_HELP_STRING([--with-gdlib-prefix=PREFIX], [prefix where gdlib is installed (optional)])]) AC_ARG_WITH([gdlib-config], [AS_HELP_STRING([--with-gdlib-config=CONFIG], [gdlib-config script to use (optional)])]) GDLIB_VERSION= # do we have gdlib-config name: it can be gdlib-config or gd-config or ... AS_IF([test x${GDLIB_CONFIG_NAME+set} != xset], [GDLIB_CONFIG_NAME=gdlib-config]) AS_IF([test -n "$with_gdlib_config"], [GDLIB_CONFIG_NAME="$with_gdlib_config"]) # deal with optional prefix AS_IF([test -n "$with_gdlib_prefix"], [GDLIB_LOOKUP_PATH="$with_gdlib_prefix/bin"]) # don't search the PATH if GDLIB_CONFIG_NAME is absolute filename AS_IF([test -x "$GDLIB_CONFIG_NAME"], [ AC_MSG_CHECKING([for gdlib-config]) GDLIB_CONFIG_PATH="$GDLIB_CONFIG_NAME" AC_MSG_RESULT([$GDLIB_CONFIG_PATH]) ], [AC_PATH_PROG([GDLIB_CONFIG_PATH], [$GDLIB_CONFIG_NAME], [no], [$GDLIB_LOOKUP_PATH:$PATH])]) AS_IF([test ${GDLIB_CONFIG_PATH:-no} != no], [ AC_MSG_CHECKING([for gdlib version >= REQUIRED_VERSION]) GDLIB_CONFIG_WITH_ARGS="$GDLIB_CONFIG_PATH $gdlib_config_args" GDLIB_VERSION=`$GDLIB_CONFIG_WITH_ARGS --version` gdlib_config_major_version=`echo $GDLIB_VERSION | sed ['s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1/']` gdlib_config_minor_version=`echo $GDLIB_VERSION | sed ['s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\2/']` gdlib_config_micro_version=`echo $GDLIB_VERSION | sed ['s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3/']` gdlib_ver_ok= MULE_IF([test $gdlib_config_major_version -gt REQUIRED_VERSION_MAJOR], [gdlib_ver_ok=yes], [test $gdlib_config_major_version -eq REQUIRED_VERSION_MAJOR], [ MULE_IF([test $gdlib_config_minor_version -gt REQUIRED_VERSION_MINOR], [gdlib_ver_ok=yes], [test $gdlib_config_minor_version -eq REQUIRED_VERSION_MINOR], [MULE_IF([test $gdlib_config_micro_version -ge REQUIRED_VERSION_MICRO], [gdlib_ver_ok=yes])]) ]) AS_IF([test -z "$gdlib_ver_ok"], [ AS_IF([test -z "$GDLIB_VERSION"], [AC_MSG_RESULT([no])], [ AC_MSG_RESULT([no (version $GDLIB_VERSION is not new enough)]) GDLIB_VERSION= ]) ], [ AC_MSG_RESULT([yes (version $GDLIB_VERSION)]) GDLIB_CFLAGS="`$GDLIB_CONFIG_WITH_ARGS --cflags`" GDLIB_LDFLAGS="`$GDLIB_CONFIG_WITH_ARGS --ldflags`" GDLIB_LIBS="`$GDLIB_CONFIG_WITH_ARGS --libs`" MULE_BACKUP([CFLAGS]) MULE_APPEND([CFLAGS], [$GDLIB_CFLAGS]) AC_CHECK_HEADER([gd.h],, [GDLIB_VERSION=]) MULE_RESTORE([CFLAGS]) ]) ]) AS_IF([test -n "$GDLIB_VERSION"], [$2], [$3]) AC_SUBST([GDLIB_CFLAGS])dnl AC_SUBST([GDLIB_LDFLAGS])dnl AC_SUBST([GDLIB_LIBS])dnl m4_undefine([REQUIRED_VERSION])dnl m4_undefine([REQUIRED_VERSION_MAJOR])dnl m4_undefine([REQUIRED_VERSION_MINOR])dnl m4_undefine([REQUIRED_VERSION_MICRO])dnl ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/gettext.m40000644000175000017500000005730712611472361017765 0ustar morphmorph# gettext.m4 serial 17 (gettext-0.11.5) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995-2000. dnl Bruno Haible , 2000-2002. dnl Macro to add for using GNU gettext. dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The dnl default (if it is not specified or empty) is 'no-libtool'. dnl INTLSYMBOL should be 'external' for packages with no intl directory, dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. dnl If INTLSYMBOL is 'use-libtool', then a libtool library dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, dnl depending on --{enable,disable}-{shared,static} and on the presence of dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library dnl $(top_builddir)/intl/libintl.a will be created. dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext dnl implementations (in libc or libintl) without the ngettext() function dnl will be ignored. If NEEDSYMBOL is specified and is dnl 'need-formatstring-macros', then GNU gettext implementations that don't dnl support the ISO C 99 formatstring macros will be ignored. dnl INTLDIR is used to find the intl libraries. If empty, dnl the value `$(top_builddir)/intl/' is used. dnl dnl The result of the configuration is one of three cases: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled dnl and used. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 2) GNU gettext has been found in the system's C library. dnl Catalog format: GNU --> install in $(datadir) dnl Catalog extension: .mo after installation, .gmo in source tree dnl 3) No internationalization, always use English msgid. dnl Catalog format: none dnl Catalog extension: none dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. dnl The use of .gmo is historical (it was needed to avoid overwriting the dnl GNU format catalogs when building on a platform with an X/Open gettext), dnl but we keep it in order not to force irrelevant filename changes on the dnl maintainers. dnl AC_DEFUN([AM_GNU_GETTEXT], [ dnl Argument checking. ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT ])])])])]) ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT ])])])]) define(gt_included_intl, ifelse([$1], [external], [no], [yes])) define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) AC_REQUIRE([AM_PO_SUBDIRS])dnl ifelse(gt_included_intl, yes, [ AC_REQUIRE([AM_INTL_SUBDIR])dnl ]) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Sometimes libintl requires libiconv, so first search for libiconv. dnl Ideally we would do this search only after the dnl if test "$USE_NLS" = "yes"; then dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT dnl the configure script would need to contain the same shell code dnl again, outside any 'if'. There are two solutions: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not dnl documented, we avoid it. ifelse(gt_included_intl, yes, , [ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) ]) AC_MSG_CHECKING([whether NLS is requested]) dnl Default is enabled NLS AC_ARG_ENABLE(nls, [ --disable-nls do not use Native Language Support], USE_NLS=$enableval, USE_NLS=yes) AC_MSG_RESULT($USE_NLS) AC_SUBST(USE_NLS) ifelse(gt_included_intl, yes, [ BUILD_INCLUDED_LIBINTL=no USE_INCLUDED_LIBINTL=no ]) LIBINTL= LTLIBINTL= POSUB= dnl If we use NLS figure out what method if test "$USE_NLS" = "yes"; then gt_use_preinstalled_gnugettext=no ifelse(gt_included_intl, yes, [ AC_MSG_CHECKING([whether included gettext is requested]) AC_ARG_WITH(included-gettext, [ --with-included-gettext use the GNU gettext library included here], nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=no) AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" if test "$nls_cv_force_use_gnu_gettext" != "yes"; then ]) dnl User does not insist on using GNU NLS library. Figure out what dnl to use. If GNU gettext is available we use this. Else we have dnl to fall back to GNU NLS library. dnl Add a version number to the cache macros. define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, [AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings;], [bindtextdomain ("", ""); return (long) gettext ("")]ifelse([$2], [need-ngettext], [ + (long) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], gt_cv_func_gnugettext_libc=yes, gt_cv_func_gnugettext_libc=no)]) if test "$gt_cv_func_gnugettext_libc" != "yes"; then dnl Sometimes libintl requires libiconv, so first search for libiconv. ifelse(gt_included_intl, yes, , [ AM_ICONV_LINK ]) dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) dnl because that would add "-liconv" to LIBINTL and LTLIBINTL dnl even if libiconv doesn't exist. AC_LIB_LINKFLAGS_BODY([intl]) AC_CACHE_CHECK([for GNU gettext in libintl], gt_cv_func_gnugettext_libintl, [gt_save_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $INCINTL" gt_save_LIBS="$LIBS" LIBS="$LIBS $LIBINTL" dnl Now see whether libintl exists and does not depend on libiconv. AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (long) gettext ("")]ifelse([$2], [need-ngettext], [ + (long) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], gt_cv_func_gnugettext_libintl=yes, gt_cv_func_gnugettext_libintl=no) dnl Now see whether libintl exists and depends on libiconv. if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include ]ifelse([$2], [need-formatstring-macros], [#ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif changequote(,)dnl typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; changequote([,])dnl ], [])[extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias ();], [bindtextdomain ("", ""); return (long) gettext ("")]ifelse([$2], [need-ngettext], [ + (long) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], [LIBINTL="$LIBINTL $LIBICONV" LTLIBINTL="$LTLIBINTL $LTLIBICONV" gt_cv_func_gnugettext_libintl=yes ]) fi CPPFLAGS="$gt_save_CPPFLAGS" LIBS="$gt_save_LIBS"]) fi dnl If an already present or preinstalled GNU gettext() is found, dnl use it. But if this macro is used in GNU gettext, and GNU dnl gettext is already preinstalled in libintl, we update this dnl libintl. (Cf. the install rule in intl/Makefile.in.) if test "$gt_cv_func_gnugettext_libc" = "yes" \ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ && test "$PACKAGE" != gettext; }; then gt_use_preinstalled_gnugettext=yes else dnl Reset the values set by searching for libintl. LIBINTL= LTLIBINTL= INCINTL= fi ifelse(gt_included_intl, yes, [ if test "$gt_use_preinstalled_gnugettext" != "yes"; then dnl GNU gettext is not found in the C library. dnl Fall back on included GNU gettext library. nls_cv_use_gnu_gettext=yes fi fi if test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions used to generate GNU NLS library. INTLOBJS="\$(GETTOBJS)" BUILD_INCLUDED_LIBINTL=yes USE_INCLUDED_LIBINTL=yes LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` fi if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then dnl Mark actions to use GNU gettext tools. CATOBJEXT=.gmo fi ]) if test "$gt_use_preinstalled_gnugettext" = "yes" \ || test "$nls_cv_use_gnu_gettext" = "yes"; then AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.]) else USE_NLS=no fi fi if test "$USE_NLS" = "yes"; then if test "$gt_use_preinstalled_gnugettext" = "yes"; then if test "$gt_cv_func_gnugettext_libintl" = "yes"; then AC_MSG_CHECKING([how to link with libintl]) AC_MSG_RESULT([$LIBINTL]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) fi dnl For backward compatibility. Some packages may be using this. AC_DEFINE(HAVE_GETTEXT, 1, [Define if the GNU gettext() function is already present or preinstalled.]) AC_DEFINE(HAVE_DCGETTEXT, 1, [Define if the GNU dcgettext() function is already present or preinstalled.]) fi dnl We need to process the po/ directory. POSUB=po fi ifelse(gt_included_intl, yes, [ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL dnl to 'yes' because some of the testsuite requires it. if test "$PACKAGE" = gettext; then BUILD_INCLUDED_LIBINTL=yes fi dnl Make all variables we use known to autoconf. AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST(CATOBJEXT) AC_SUBST(INTLOBJS) dnl For backward compatibility. Some configure.ins may be using this. nls_cv_header_intl= nls_cv_header_libgt= dnl For backward compatibility. Some Makefiles may be using this. DATADIRNAME=share AC_SUBST(DATADIRNAME) dnl For backward compatibility. Some Makefiles may be using this. INSTOBJEXT=.mo AC_SUBST(INSTOBJEXT) dnl For backward compatibility. Some Makefiles may be using this. GENCAT=gencat AC_SUBST(GENCAT) dnl Enable libtool support if the surrounding package wishes it. INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) ]) dnl For backward compatibility. Some Makefiles may be using this. INTLLIBS="$LIBINTL" AC_SUBST(INTLLIBS) dnl Make all documented variables known to autoconf. AC_SUBST(LIBINTL) AC_SUBST(LTLIBINTL) AC_SUBST(POSUB) ]) dnl Checks for all prerequisites of the po subdirectory, dnl except for USE_NLS. AC_DEFUN([AM_PO_SUBDIRS], [ AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl dnl Perform the following tests also if --disable-nls has been given, dnl because they are needed for "make dist" to work. dnl Search for GNU msgfmt in the PATH. dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. dnl The second test excludes FreeBSD msgfmt. AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) dnl Search for GNU xgettext 0.11 or newer in the PATH. dnl The first test excludes Solaris xgettext and early GNU xgettext versions. dnl The second test excludes FreeBSD xgettext. AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], :) dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po dnl Search for GNU msgmerge 0.11 or newer in the PATH. AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU msgfmt. if test "$GMSGFMT" != ":"; then dnl If it is no GNU msgfmt we define it as : so that the dnl Makefiles still can work. if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` AC_MSG_RESULT( [found $GMSGFMT program is not GNU msgfmt; ignore it]) GMSGFMT=":" fi fi dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. dnl Test whether we really found GNU xgettext. if test "$XGETTEXT" != ":"; then dnl If it is no GNU xgettext we define it as : so that the dnl Makefiles still can work. if $XGETTEXT --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 && (if $XGETTEXT --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then : ; else AC_MSG_RESULT( [found xgettext program is not GNU xgettext; ignore it]) XGETTEXT=":" fi dnl Remove leftover from FreeBSD xgettext call. rm -f messages.po fi AC_OUTPUT_COMMANDS([ for ac_file in $CONFIG_FILES; do # Support "outfile[:infile[:infile...]]" case "$ac_file" in *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; esac # PO directories have a Makefile.in generated from Makefile.in.in. case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" case "$ac_given_srcdir" in .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; /*) top_srcdir="$ac_given_srcdir" ;; *) top_srcdir="$ac_dots$ac_given_srcdir" ;; esac if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend # on $ac_dir but don't depend on user-specified configuration # parameters. if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then # The LINGUAS file contains the set of available languages. if test -n "$ALL_LINGUAS"; then test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` # Hide the ALL_LINGUAS assigment from automake. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' fi case "$ac_given_srcdir" in .) srcdirpre= ;; *) srcdirpre='$(srcdir)/' ;; esac POFILES= GMOFILES= UPDATEPOFILES= DUMMYPOFILES= for lang in $ALL_LINGUAS; do POFILES="$POFILES $srcdirpre$lang.po" GMOFILES="$GMOFILES $srcdirpre$lang.gmo" UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" DUMMYPOFILES="$DUMMYPOFILES $lang.nop" done # CATALOGS depends on both $ac_dir and the user's LINGUAS # environment variable. INST_LINGUAS= if test -n "$ALL_LINGUAS"; then for presentlang in $ALL_LINGUAS; do useit=no if test "%UNSET%" != "$LINGUAS"; then desiredlanguages="$LINGUAS" else desiredlanguages="$ALL_LINGUAS" fi for desiredlang in $desiredlanguages; do # Use the presentlang catalog if desiredlang is # a. equal to presentlang, or # b. a variant of presentlang (because in this case, # presentlang can be used as a fallback for messages # which are not translated in the desiredlang catalog). case "$desiredlang" in "$presentlang"*) useit=yes;; esac done if test $useit = yes; then INST_LINGUAS="$INST_LINGUAS $presentlang" fi done fi CATALOGS= if test -n "$INST_LINGUAS"; then for lang in $INST_LINGUAS; do CATALOGS="$CATALOGS $lang.gmo" done fi test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do if test -f "$f"; then case "$f" in *.orig | *.bak | *~) ;; *) cat "$f" >> "$ac_dir/Makefile" ;; esac fi done fi ;; esac done], [# Capture the value of obsolete ALL_LINGUAS because we need it to compute # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it # from automake. eval 'ALL_LINGUAS''="$ALL_LINGUAS"' # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" ]) ]) dnl Checks for all prerequisites of the intl subdirectory, dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. AC_DEFUN([AM_INTL_SUBDIR], [ AC_REQUIRE([AC_PROG_INSTALL])dnl AC_REQUIRE([AM_MKINSTALLDIRS])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_RANLIB])dnl AC_REQUIRE([AC_ISC_POSIX])dnl AC_REQUIRE([AC_HEADER_STDC])dnl AC_REQUIRE([AC_C_CONST])dnl AC_REQUIRE([AC_C_INLINE])dnl AC_REQUIRE([AC_TYPE_OFF_T])dnl AC_REQUIRE([AC_TYPE_SIZE_T])dnl AC_REQUIRE([AC_FUNC_ALLOCA])dnl AC_REQUIRE([AC_FUNC_MMAP])dnl AC_REQUIRE([jm_GLIBC21])dnl AC_REQUIRE([gt_INTDIV0])dnl AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl AC_REQUIRE([gt_INTTYPES_PRI])dnl AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ stdlib.h string.h unistd.h sys/param.h]) AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \ geteuid getgid getuid mempcpy munmap putenv setenv setlocale stpcpy \ strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) AM_ICONV AM_LANGINFO_CODESET if test $ac_cv_header_locale_h = yes; then AM_LC_MESSAGES fi dnl intl/plural.c is generated from intl/plural.y. It requires bison, dnl because plural.y uses bison specific features. It requires at least dnl bison-1.26 because earlier versions generate a plural.c that doesn't dnl compile. dnl bison is only needed for the maintainer (who touches plural.y). But in dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put dnl the rule in general Makefile. Now, some people carelessly touch the dnl files or have a broken "make" program, hence the plural.c rule will dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not dnl present or too old. AC_CHECK_PROGS([INTLBISON], [bison]) if test -z "$INTLBISON"; then ac_verc_fail=yes else dnl Found it, now check the version. AC_MSG_CHECKING([version of bison]) changequote(<<,>>)dnl ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` case $ac_prog_version in '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) changequote([,])dnl ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; esac AC_MSG_RESULT([$ac_prog_version]) fi if test $ac_verc_fail = yes; then INTLBISON=: fi ]) AC_DEFUN([AM_MKINSTALLDIRS], [ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly dnl find the mkinstalldirs script in another subdir but $(top_srcdir). dnl Try to locate is. MKINSTALLDIRS= if test -n "$ac_aux_dir"; then MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" fi if test -z "$MKINSTALLDIRS"; then MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" fi AC_SUBST(MKINSTALLDIRS) ]) dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) amule_2.3.1+git20151120.0023527bc2.orig/m4/glibc21.m40000644000175000017500000000172712611472361017517 0ustar morphmorph# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. # Test for the GNU C Library, version 2.1 or newer. # From Bruno Haible. AC_DEFUN([jm_GLIBC21], [ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, ac_cv_gnu_library_2_1, [AC_EGREP_CPP([Lucky GNU user], [ #include #ifdef __GNU_LIBRARY__ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) Lucky GNU user #endif #endif ], ac_cv_gnu_library_2_1=yes, ac_cv_gnu_library_2_1=no) ] ) AC_SUBST(GLIBC21) GLIBC21="$ac_cv_gnu_library_2_1" ] ) amule_2.3.1+git20151120.0023527bc2.orig/m4/iconv.m40000644000175000017500000000665312611472361017415 0ustar morphmorph# iconv.m4 serial AM4 (gettext-0.11.3) dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], [ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_LIB_LINKFLAGS_BODY([iconv]) ]) AC_DEFUN([AM_ICONV_LINK], [ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl those with the standalone portable GNU libiconv installed). dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV dnl accordingly. AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) dnl Add $INCICONV to CPPFLAGS before performing the following checks, dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. am_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_lib_iconv=no AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_func_iconv=yes) if test "$am_cv_func_iconv" != yes; then am_save_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_TRY_LINK([#include #include ], [iconv_t cd = iconv_open("",""); iconv(cd,NULL,NULL,NULL,NULL); iconv_close(cd);], am_cv_lib_iconv=yes am_cv_func_iconv=yes) LIBS="$am_save_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) fi if test "$am_cv_lib_iconv" = yes; then AC_MSG_CHECKING([how to link with libiconv]) AC_MSG_RESULT([$LIBICONV]) else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. CPPFLAGS="$am_save_CPPFLAGS" LIBICONV= LTLIBICONV= fi AC_SUBST(LIBICONV) AC_SUBST(LTLIBICONV) ]) AC_DEFUN([AM_ICONV], [ AM_ICONV_LINK if test "$am_cv_func_iconv" = yes; then AC_MSG_CHECKING([for iconv declaration]) AC_CACHE_VAL(am_cv_proto_iconv, [ AC_TRY_COMPILE([ #include #include extern #ifdef __cplusplus "C" #endif #if defined(__STDC__) || defined(__cplusplus) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); #else size_t iconv(); #endif ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` AC_MSG_RESULT([$]{ac_t:- }[$]am_cv_proto_iconv) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/intdiv0.m40000644000175000017500000000356512611472361017653 0ustar morphmorph# intdiv0.m4 serial 1 (gettext-0.11.3) dnl Copyright (C) 2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. AC_DEFUN([gt_INTDIV0], [ AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], gt_cv_int_divbyzero_sigfpe, [ AC_TRY_RUN([ #include #include static void #ifdef __cplusplus sigfpe_handler (int sig) #else sigfpe_handler (sig) int sig; #endif { /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ exit (sig != SIGFPE); } int x = 1; int y = 0; int z; int nan; int main () { signal (SIGFPE, sigfpe_handler); /* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ #if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) signal (SIGTRAP, sigfpe_handler); #endif /* Linux/SPARC yields signal SIGILL. */ #if defined (__sparc__) && defined (__linux__) signal (SIGILL, sigfpe_handler); #endif z = x / y; nan = y / y; exit (1); } ], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, [ # Guess based on the CPU. case "$host_cpu" in alpha* | i[34567]86 | m68k | s390*) gt_cv_int_divbyzero_sigfpe="guessing yes";; *) gt_cv_int_divbyzero_sigfpe="guessing no";; esac ]) ]) case "$gt_cv_int_divbyzero_sigfpe" in *yes) value=1;; *) value=0;; esac AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, [Define if integer division by zero raises signal SIGFPE.]) ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/inttypes-pri.m40000644000175000017500000000222712611472361020737 0ustar morphmorph# inttypes-pri.m4 serial 1 (gettext-0.11.4) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. # Define PRI_MACROS_BROKEN if exists and defines the PRI* # macros to non-string values. This is the case on AIX 4.3.3. AC_DEFUN([gt_INTTYPES_PRI], [ AC_REQUIRE([gt_HEADER_INTTYPES_H]) if test $gt_cv_header_inttypes_h = yes; then AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], gt_cv_inttypes_pri_broken, [ AC_TRY_COMPILE([#include #ifdef PRId32 char *p = PRId32; #endif ], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) ]) fi if test "$gt_cv_inttypes_pri_broken" = yes; then AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, [Define if exists and defines unusable PRI* macros.]) fi ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/inttypes.m40000644000175000017500000000171712611472361020152 0ustar morphmorph# inttypes.m4 serial 1 (gettext-0.11.4) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_INTTYPES_H if exists and doesn't clash with # . AC_DEFUN([gt_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, [ AC_TRY_COMPILE( [#include #include ], [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) ]) if test $gt_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, [Define if exists and doesn't clash with .]) fi ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/inttypes_h.m40000644000175000017500000000207312611472361020455 0ustar morphmorph# inttypes_h.m4 serial 4 (gettext-0.11.4) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_INTTYPES_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([jm_AC_HEADER_INTTYPES_H], [ AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, [AC_TRY_COMPILE( [#include #include ], [uintmax_t i = (uintmax_t) -1;], jm_ac_cv_header_inttypes_h=yes, jm_ac_cv_header_inttypes_h=no)]) if test $jm_ac_cv_header_inttypes_h = yes; then AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/isc-posix.m40000644000175000017500000000213312611472361020202 0ustar morphmorph# isc-posix.m4 serial 2 (gettext-0.11.2) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. # This file is not needed with autoconf-2.53 and newer. Remove it in 2005. # This test replaces the one in autoconf. # Currently this macro should have the same name as the autoconf macro # because gettext's gettext.m4 (distributed in the automake package) # still uses it. Otherwise, the use in gettext.m4 makes autoheader # give these diagnostics: # configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX # configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX undefine([AC_ISC_POSIX]) AC_DEFUN([AC_ISC_POSIX], [ dnl This test replaces the obsolescent AC_ISC_POSIX kludge. AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) ] ) amule_2.3.1+git20151120.0023527bc2.orig/m4/kde.m40000644000175000017500000001102512611472361017027 0ustar morphmorphAC_DEFUN([KDE_CONFIG_OPTIONS], [ AC_ARG_WITH( [kde4-config], [AS_HELP_STRING([--with-kde4-config=PATH], [kde4-config script to use])], [KDE4_CONFIG=$withval], [KDE4_CONFIG=""]) AC_ARG_ENABLE( [kde-in-home], [AS_HELP_STRING([--enable-kde-in-home], [install KDE related stuff in your home dir])], [KDE_IN_HOME=$enableval], [KDE_IN_HOME=no]) ]) AC_DEFUN([KDE_CONFIG_CHECK], [ AS_IF([test -z ${KDE4_CONFIG}], [ AC_PATH_PROG(KDE4_CONFIG, kde4-config) ], [ AC_MSG_CHECKING(for kde4-config) AS_IF([test ! -x KDE4_CONFIG], [ KDE4_CONFIG="not found" AC_MSG_RESULT(not found) exit 1 ]) ]) AS_IF([ test "${KDE4_CONFIG}" != "not found"], [ KDE_CONF_VER=`${KDE4_CONFIG} --version | grep KDE | sed -e 's/^.*: //' -e 's/ (.*$//'` AS_IF([test `echo ${KDE_CONF_VER} | sed -e 's/\..*$//'` = 4], [ AC_MSG_RESULT(found ${KDE4_CONFIG} with version ${KDE_CONF_VER}) ], [ AC_MSG_RESULT(at least version 4 required) exit 1 ]) ], [ AC_MSG_RESULT(not found) exit 1 ]) AC_SUBST(KDE4_CONFIG) ]) AC_DEFUN([KDE_HEADER_CHECK], [ AC_MSG_CHECKING(for kde4 headers) [KDE_HEADER_DIR=`${KDE4_CONFIG} --path include`] AS_IF([test -f ${KDE_HEADER_DIR}kdirwatch.h], [ AS_IF([test -f ${KDE_HEADER_DIR}plasma/dataengine.h], [ AC_MSG_RESULT(${KDE_HEADER_DIR}) ], [ AC_MSG_RESULT(dataengine.h not found) exit 1 ]) ], [ AC_MSG_RESULT(kdirwatch.h not found) exit 1 ]) AC_SUBST(KDE_HEADER_DIR) ]) AC_DEFUN([KDE_SERVICE_PATH_CHECK], [ AC_REQUIRE([AC_PROG_EGREP]) AC_MSG_CHECKING(for kde4 services Path) AS_IF([test `echo ${prefix} | grep home | wc -l` == 1], [ KDE_IN_HOME="yes" ]) AS_IF([test ${KDE_IN_HOME} = "yes"], [ KDE_SERVICE_PATH=`${KDE4_CONFIG} --path services | tr ":" "\n" | $EGREP '(/home|/root)' | head -1` ], [ KDE_SERVICE_PATH=`${KDE4_CONFIG} --path services | tr ":" "\n" | grep /usr | head -1` ]) AC_MSG_RESULT(${KDE_SERVICE_PATH}) AC_SUBST(KDE_SERVICE_PATH) ]) AC_DEFUN([KDE_MODULE_PATH_CHECK], [ AC_REQUIRE([AC_PROG_EGREP]) AC_MSG_CHECKING(for kde4 plugins Path) AS_IF([test `echo ${prefix} | grep home | wc -l` == 1], [ KDE_IN_HOME="yes" ]) AS_IF([test ${KDE_IN_HOME} = "yes"], [ KDE_MODULE_PATH=`${KDE4_CONFIG} --path module | tr ":" "\n" | $EGREP '(/home|/root)' | head -1` ], [ KDE_MODULE_PATH=`${KDE4_CONFIG} --path module | tr ":" "\n" | grep /usr | head -1` ]) AC_MSG_RESULT(${KDE_MODULE_PATH}) AC_SUBST(KDE_MODULE_PATH) ]) AC_DEFUN([KDE_ICON_PATH_CHECK], [ AC_REQUIRE([AC_PROG_EGREP]) AC_MSG_CHECKING(for kde4 icons Path) AS_IF([test `echo ${prefix} | grep home | wc -l` == 1], [ KDE_IN_HOME="yes" ]) AS_IF([test ${KDE_IN_HOME} = "yes"], [ KDE_ICON_PATH=`${KDE4_CONFIG} --path icon | tr ":" "\n" | $EGREP '(/home|/root)' | head -1` ], [ KDE_ICON_PATH=`${KDE4_CONFIG} --path icon | tr ":" "\n" | grep /usr | head -1` ]) KDE_ICON_PATH=${KDE_ICON_PATH}hicolor/scalable/mimetypes/ AC_MSG_RESULT(${KDE_ICON_PATH}) AC_SUBST(KDE_ICON_PATH) ]) AC_DEFUN([KDE_MIME_PATH_CHECK], [ AC_REQUIRE([AC_PROG_EGREP]) AC_MSG_CHECKING(for location for mime-type installation) AS_IF([test `echo ${prefix} | grep home | wc -l` == 1], [ KDE_IN_HOME="yes" ]) AS_IF([test ${KDE_IN_HOME} = "yes"], [ KDE_MIME_PATH=`${KDE4_CONFIG} --path xdgdata-mime | tr ":" "\n" | $EGREP '(/home|/root)' | head -1` ], [ AS_IF([test -n ${prefix}], [ KDE_MIME_PATH=`${KDE4_CONFIG} --path xdgdata-mime | tr ":" "\n" | grep ${prefix} | head -1` AS_IF([test -n ${KDE_MIME_PATH}], [ KDE_MIME_PATH=`${KDE4_CONFIG} --path xdgdata-mime | tr ":" "\n" | $EGREP -v '(/home|/root)' | head -1` ]) ], [ KDE_MIME_PATH=`${KDE4_CONFIG} --path xdgdata-mime | tr ":" "\n" | $EGREP -v '(/home|/root)' | head -1` ]) ]) AC_MSG_RESULT(${KDE_MIME_PATH}) AC_SUBST(KDE_MIME_PATH) ]) AC_DEFUN([KDE_APPLNK_PATH_CHECK], [ AC_REQUIRE([AC_PROG_EGREP]) AC_MSG_CHECKING(for kde4 applinks Path) AS_IF([test `echo ${prefix} | grep home | wc -l` == 1], [ KDE_IN_HOME="yes" ]) AS_IF([test ${KDE_IN_HOME} = "yes"], [ KDE_APPLNK_PATH=`${KDE4_CONFIG} --path xdgdata-apps | tr ":" "\n" | $EGREP '(/home|/root)' | head -1` ], [ AS_IF([test -n ${prefix}], [ KDE_APPLNK_PATH=`${KDE4_CONFIG} --path xdgdata-apps | tr ":" "\n" | grep ${prefix} | head -1` AS_IF([test -n ${KDE_APPLNK_PATH}], [ KDE_APPLNK_PATH=`${KDE4_CONFIG} --path xdgdata-apps | tr ":" "\n" | grep -vE '(/home|/root)' | head -1` ]) ], [ KDE_APPLNK_PATH=`${KDE4_CONFIG} --path xdgdata-apps | tr ":" "\n" | grep -vE '(/home|/root)' | head -1` ]) ]) AC_MSG_RESULT(${KDE_APPLNK_PATH}) AC_SUBST(KDE_APPLNK_PATH) ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/lcmessage.m40000644000175000017500000000261612611472361020235 0ustar morphmorph# lcmessage.m4 serial 3 (gettext-0.11.3) dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1995. # Check whether LC_MESSAGES is available in . AC_DEFUN([AM_LC_MESSAGES], [ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, [AC_TRY_LINK([#include ], [return LC_MESSAGES], am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) if test $am_cv_val_LC_MESSAGES = yes; then AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your file defines LC_MESSAGES.]) fi ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/lib-ld.m40000644000175000017500000000626012611472361017434 0ustar morphmorph# lib-ld.m4 serial 1 (gettext-0.11) dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl Subroutines of libtool.m4, dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision dnl with libtool.m4. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. AC_DEFUN([AC_LIB_PROG_LD_GNU], [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [# I'd rather use --version here, but apparently some GNU ld's only accept -v. if $LD -v 2>&1 &5; then acl_cv_prog_gnu_ld=yes else acl_cv_prog_gnu_ld=no fi]) with_gnu_ld=$acl_cv_prog_gnu_ld ]) dnl From libtool-1.4. Sets the variable LD. AC_DEFUN([AC_LIB_PROG_LD], [AC_ARG_WITH(gnu-ld, [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by GCC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]* | [A-Za-z]:[\\/]*)] [re_direlt='/[^/][^/]*/\.\./'] # Canonicalize the path of ld ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(acl_cv_path_LD, [if test -z "$LD"; then IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then test "$with_gnu_ld" != no && break else test "$with_gnu_ld" != yes && break fi fi done IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi]) LD="$acl_cv_path_LD" if test -n "$LD"; then AC_MSG_RESULT($LD) else AC_MSG_RESULT(no) fi test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) AC_LIB_PROG_LD_GNU ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/lib-link.m40000644000175000017500000005563312611472361020002 0ustar morphmorph# lib-link.m4 serial 3 (gettext-0.11.3) dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and dnl augments the CPPFLAGS variable. AC_DEFUN([AC_LIB_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_LIB_LINKFLAGS_BODY([$1], [$2]) ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" ac_cv_lib[]Name[]_cppflags="$INC[]NAME" ]) LIB[]NAME="$ac_cv_lib[]Name[]_libs" LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" INC[]NAME="$ac_cv_lib[]Name[]_cppflags" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl results of this search when this library appears as a dependency. HAVE_LIB[]NAME=yes undefine([Name]) undefine([NAME]) ]) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl searches for libname and the libraries corresponding to explicit and dnl implicit dependencies, together with the specified include files and dnl the ability to compile and link the specified testcode. If found, it dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_RPATH]) define([Name],[translit([$1],[./-], [___])]) define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl accordingly. AC_LIB_LINKFLAGS_BODY([$1], [$2]) dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. ac_save_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ ac_save_LIBS="$LIBS" LIBS="$LIBS $LIB[]NAME" AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) LIBS="$ac_save_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_RESULT([$LIB[]NAME]) else HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. CPPFLAGS="$ac_save_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= fi AC_SUBST([HAVE_LIB]NAME) AC_SUBST([LIB]NAME) AC_SUBST([LTLIB]NAME) undefine([Name]) undefine([NAME]) ]) dnl Determine the platform dependent parameters needed to use rpath: dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, dnl hardcode_direct, hardcode_minus_L, dnl sys_lib_search_path_spec, sys_lib_dlsearch_path_spec. AC_DEFUN([AC_LIB_RPATH], [ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh . ./conftest.sh rm -f ./conftest.sh acl_cv_rpath=done ]) wl="$acl_cv_wl" libext="$acl_cv_libext" shlibext="$acl_cv_shlibext" hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" hardcode_direct="$acl_cv_hardcode_direct" hardcode_minus_L="$acl_cv_hardcode_minus_L" sys_lib_search_path_spec="$acl_cv_sys_lib_search_path_spec" sys_lib_dlsearch_path_spec="$acl_cv_sys_lib_dlsearch_path_spec" dnl Determine whether the user wants rpath handling at all. AC_ARG_ENABLE(rpath, [ --disable-rpath do not hardcode runtime library paths], :, enable_rpath=yes) ]) dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl the libraries corresponding to explicit and implicit dependencies. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. AC_DEFUN([AC_LIB_LINKFLAGS_BODY], [ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH([lib$1-prefix], [ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib --without-lib$1-prefix don't search for lib$1 in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) dnl Search the library and its dependencies in $additional_libdir and dnl $LDFLAGS. Using breadth-first-seach. LIB[]NAME= LTLIB[]NAME= INC[]NAME= rpathdirs= ltrpathdirs= names_already_handled= names_next_round='$1 $2' while test -n "$names_next_round"; do names_this_round="$names_next_round" names_next_round= for name in $names_this_round; do already_handled= for n in $names_already_handled; do if test "$n" = "$name"; then already_handled=yes break fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" dnl See if it was already located by an earlier AC_LIB_LINKFLAGS dnl or AC_LIB_HAVE_LINKFLAGS call. uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then eval value=\"\$LIB$uppername\" test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" eval value=\"\$LTLIB$uppername\" test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" else dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined dnl that this library doesn't exist. So just drop it. : fi else dnl Search the library lib$name in $additional_libdir and $LDFLAGS dnl and the already constructed $LIBNAME/$LTLIBNAME. found_dir= found_la= found_so= found_a= if test $use_additional = yes; then if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then found_dir="$additional_libdir" found_so="$additional_libdir/lib$name.$shlibext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi else if test -f "$additional_libdir/lib$name.$libext"; then found_dir="$additional_libdir" found_a="$additional_libdir/lib$name.$libext" if test -f "$additional_libdir/lib$name.la"; then found_la="$additional_libdir/lib$name.la" fi fi fi fi if test "X$found_dir" = "X"; then for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then found_dir="$dir" found_so="$dir/lib$name.$shlibext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi else if test -f "$dir/lib$name.$libext"; then found_dir="$dir" found_a="$dir/lib$name.$libext" if test -f "$dir/lib$name.la"; then found_la="$dir/lib$name.la" fi fi fi ;; esac if test "X$found_dir" != "X"; then break fi done fi if test "X$found_dir" != "X"; then dnl Found the library. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then dnl Linking with a shared library. We attempt to hardcode its dnl directory into the executable's runpath, unless it's the dnl standard /usr/lib. if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then dnl No hardcoding is needed. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl Use an explicit option to hardcode DIR into the resulting dnl binary. dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi dnl The hardcoding into $LIBNAME is system dependent. if test "$hardcode_direct" = yes; then dnl Using DIR/libNAME.so during linking hardcodes DIR into the dnl resulting binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then dnl Use an explicit option to hardcode DIR into the resulting dnl binary. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $found_dir" fi else dnl Rely on "-L$found_dir". dnl But don't add it if it's already contained in the LDFLAGS dnl or the already constructed $LIBNAME haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$found_dir"; then haveit=yes break fi done if test -z "$haveit"; then LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" fi if test "$hardcode_minus_L" != no; then dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" else dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH dnl here, because this doesn't fit in flags passed to the dnl compiler. So give up. No hardcoding. This affects only dnl very old systems. dnl FIXME: Not sure whether we should use dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" dnl here. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" fi fi fi fi else if test "X$found_a" != "X"; then dnl Linking with a static library. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" else dnl We shouldn't come here, but anyway it's good to have a dnl fallback. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" fi fi dnl Assume the include files are nearby. additional_includedir= case "$found_dir" in */lib | */lib/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` additional_includedir="$basedir/include" ;; esac if test "X$additional_includedir" != "X"; then dnl Potentially add $additional_includedir to $INCNAME. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's /usr/local/include and we are using GCC on Linux, dnl 3. if it's already present in $CPPFLAGS or the already dnl constructed $INCNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then for x in $CPPFLAGS $INC[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $INCNAME. INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" fi fi fi fi fi dnl Look for dependencies. if test -n "$found_la"; then dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. save_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac libdir="$save_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's /usr/local/lib and we are using GCC on Linux, dnl 3. if it's already present in $LDFLAGS or the already dnl constructed $LIBNAME, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then haveit= for x in $LDFLAGS $LIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LIBNAME. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" fi fi haveit= for x in $LDFLAGS $LTLIB[]NAME; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LTLIBNAME. LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" fi fi fi fi ;; -R*) dir=`echo "X$dep" | sed -e 's/^X-R//'` if test "$enable_rpath" != no; then dnl Potentially add DIR to rpathdirs. dnl The rpathdirs will be appended to $LIBNAME at the end. haveit= for x in $rpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then rpathdirs="$rpathdirs $dir" fi dnl Potentially add DIR to ltrpathdirs. dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. haveit= for x in $ltrpathdirs; do if test "X$x" = "X$dir"; then haveit=yes break fi done if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $dir" fi fi ;; -l*) dnl Handle this in the next round. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` ;; *.la) dnl Handle this in the next round. Throw away the .la's dnl directory; it is already contained in a preceding -L dnl option. names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` ;; *) dnl Most likely an immediate library name. LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" ;; esac done fi else dnl Didn't find the library; assume it is in the system directories dnl known to the linker and runtime loader. (All the system dnl directories known to the linker should also be known to the dnl runtime loader, otherwise the system is severely misconfigured.) LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" fi fi fi done done if test "X$rpathdirs" != "X"; then if test -n "$hardcode_libdir_separator"; then dnl Weird platform: only the last -rpath option counts, the user must dnl pass all path elements in one option. We can arrange that for a dnl single library, but not when more than one $LIBNAMEs are used. alldirs= for found_dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. acl_save_libdir="$libdir" libdir="$alldirs" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi fi if test "X$ltrpathdirs" != "X"; then dnl When using libtool, the option that works for both libraries and dnl executables is -R. The -R options are cumulative. for found_dir in $ltrpathdirs; do LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" done fi ]) dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl unless already present in VAR. dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes dnl contains two or three consecutive elements that belong together. AC_DEFUN([AC_LIB_APPENDTOVAR], [ for element in [$2]; do haveit= for x in $[$1]; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X$element"; then haveit=yes break fi done if test -z "$haveit"; then [$1]="${[$1]}${[$1]:+ }$element" fi done ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/lib-prefix.m40000644000175000017500000001175512611472361020337 0ustar morphmorph# lib-prefix.m4 serial 1 (gettext-0.11) dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Bruno Haible. dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed dnl to access previously installed libraries. The basic assumption is that dnl a user will want packages to use other packages he previously installed dnl with the same --prefix option. dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate dnl libraries, but is otherwise very convenient. AC_DEFUN([AC_LIB_PREFIX], [ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) dnl By default, look in $includedir and $libdir. use_additional=yes AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) AC_ARG_WITH([lib-prefix], [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib --without-lib-prefix don't search for libraries in includedir and libdir], [ if test "X$withval" = "Xno"; then use_additional=no else if test "X$withval" = "X"; then AC_LIB_WITH_FINAL_PREFIX([ eval additional_includedir=\"$includedir\" eval additional_libdir=\"$libdir\" ]) else additional_includedir="$withval/include" additional_libdir="$withval/lib" fi fi ]) if test $use_additional = yes; then dnl Potentially add $additional_includedir to $CPPFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/include, dnl 2. if it's already present in $CPPFLAGS, dnl 3. if it's /usr/local/include and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_includedir" != "X/usr/include"; then haveit= for x in $CPPFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-I$additional_includedir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_includedir" = "X/usr/local/include"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_includedir"; then dnl Really add $additional_includedir to $CPPFLAGS. CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" fi fi fi fi dnl Potentially add $additional_libdir to $LDFLAGS. dnl But don't add it dnl 1. if it's the standard /usr/lib, dnl 2. if it's already present in $LDFLAGS, dnl 3. if it's /usr/local/lib and we are using GCC on Linux, dnl 4. if it doesn't exist as a directory. if test "X$additional_libdir" != "X/usr/lib"; then haveit= for x in $LDFLAGS; do AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) if test "X$x" = "X-L$additional_libdir"; then haveit=yes break fi done if test -z "$haveit"; then if test "X$additional_libdir" = "X/usr/local/lib"; then if test -n "$GCC"; then case $host_os in linux*) haveit=yes;; esac fi fi if test -z "$haveit"; then if test -d "$additional_libdir"; then dnl Really add $additional_libdir to $LDFLAGS. LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" fi fi fi fi fi ]) dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, dnl acl_final_exec_prefix, containing the values to which $prefix and dnl $exec_prefix will expand at the end of the configure script. AC_DEFUN([AC_LIB_PREPARE_PREFIX], [ dnl Unfortunately, prefix and exec_prefix get only finally determined dnl at the end of configure. if test "X$prefix" = "XNONE"; then acl_final_prefix="$ac_default_prefix" else acl_final_prefix="$prefix" fi if test "X$exec_prefix" = "XNONE"; then acl_final_exec_prefix='${prefix}' else acl_final_exec_prefix="$exec_prefix" fi acl_save_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" prefix="$acl_save_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ acl_save_prefix="$prefix" prefix="$acl_final_prefix" acl_save_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 exec_prefix="$acl_save_exec_prefix" prefix="$acl_save_prefix" ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/libpng.m40000644000175000017500000001266612611472361017553 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule Project. # # Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # dnl --------------------------------------------------------------------------- dnl MULE_CHECK_LIBPNG([VERSION = 1.2.0], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl dnl adds support for --with-libpng-prefix and --with-libpng-config dnl command line options dnl dnl Test for libpng, and define LIBPNG_CFLAGS, LIBPNG_LIBS and LIBPNG_CONFIG_NAME dnl environment variable to override the default name of the libpng-config script dnl to use. Set LIBPNG_CONFIG_PATH to specify the full path to libpng-config - dnl in this case the macro won't even waste time on tests for its existence. dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_LIBPNG], [dnl m4_define([REQUIRED_VERSION], [m4_ifval([$1], [$1], [1.2.0])])dnl m4_define([REQUIRED_VERSION_MAJOR], [m4_bregexp(REQUIRED_VERSION, [\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)], [\1])])dnl m4_define([REQUIRED_VERSION_MINOR], [m4_bregexp(REQUIRED_VERSION, [\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)], [\2])])dnl m4_define([REQUIRED_VERSION_MICRO], [m4_bregexp(REQUIRED_VERSION, [\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)], [\3])])dnl AC_ARG_WITH([libpng-prefix], [AS_HELP_STRING([--with-libpng-prefix=PREFIX], [prefix where libpng is installed (optional)])]) AC_ARG_WITH([libpng-config], [AS_HELP_STRING([--with-libpng-config=CONFIG], [libpng-config script to use (optional)])]) LIBPNG_VERSION= # do we have libpng-config name: it can be libpng-config or libpng12-config or ... AS_IF([test x${LIBPNG_CONFIG_NAME+set} != xset], [LIBPNG_CONFIG_NAME=libpng-config]) AS_IF([test -n "$with_libpng_config"], [LIBPNG_CONFIG_NAME="$with_libpng_config"]) # deal with optional prefix AS_IF([test -n "$with_libpng_prefix"], [LIBPNG_LOOKUP_PATH="$with_libpng_prefix/bin"]) # don't search the PATH if LIBPNG_CONFIG_NAME is absolute filename AS_IF([test -x "$LIBPNG_CONFIG_NAME"], [ AC_MSG_CHECKING([for libpng-config]) LIBPNG_CONFIG_PATH="$LIBPNG_CONFIG_NAME" AC_MSG_RESULT($LIBPNG_CONFIG_PATH) ], [AC_PATH_PROG([LIBPNG_CONFIG_PATH], [$LIBPNG_CONFIG_NAME], [no], [$LIBPNG_LOOKUP_PATH:$PATH])]) AS_IF([test ${LIBPNG_CONFIG_PATH:-no} != no], [ AC_MSG_CHECKING([for libpng version >= REQUIRED_VERSION]) LIBPNG_CONFIG_WITH_ARGS="$LIBPNG_CONFIG_PATH $libpng_config_args" LIBPNG_VERSION=`$LIBPNG_CONFIG_WITH_ARGS --version` libpng_config_major_version=`echo $LIBPNG_VERSION | sed ['s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\1/']` libpng_config_minor_version=`echo $LIBPNG_VERSION | sed ['s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\2/']` libpng_config_micro_version=`echo $LIBPNG_VERSION | sed ['s/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\).*/\3/']` libpng_ver_ok= MULE_IF([test $libpng_config_major_version -gt REQUIRED_VERSION_MAJOR], [libpng_ver_ok=yes], [test $libpng_config_major_version -eq REQUIRED_VERSION_MAJOR], [ MULE_IF([test $libpng_config_minor_version -gt REQUIRED_VERSION_MINOR], [libpng_ver_ok=yes], [test $libpng_config_minor_version -eq REQUIRED_VERSION_MINOR], [MULE_IF([test $libpng_config_micro_version -ge REQUIRED_VERSION_MICRO], [libpng_ver_ok=yes])]) ]) AS_IF([test -z "$libpng_ver_ok"], [ AS_IF([test -z "$LIBPNG_VERSION"], [AC_MSG_RESULT([no])], [ AC_MSG_RESULT([no (version $LIBPNG_VERSION is not new enough)]) LIBPNG_VERSION= ]) ], [ LIBPNG_LIBS=`$LIBPNG_CONFIG_WITH_ARGS --libs` LIBPNG_LDFLAGS=`$LIBPNG_CONFIG_WITH_ARGS --ldflags | sed -e "s/ *${LIBPNG_LIBS}$//"` LIBPNG_CFLAGS=`$LIBPNG_CONFIG_WITH_ARGS --cflags` AC_MSG_RESULT([yes (version $LIBPNG_VERSION)]) AC_MSG_CHECKING([if libpng is usable]) SAVED_CFLAGS=$CFLAGS SAVED_LDFLAGS=$LDFLAGS SAVED_LIBS=$LIBS CFLAGS="$CFLAGS $LIBPNG_CFLAGS" LDFLAGS="$LDFLAGS $LIBPNG_LDFLAGS" LIBS="$LIBS $LIBPNG_LIBS" AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include #include ]], [[ png_uint_32 libpng_vn = png_access_version_number(); printf("\nlibpng version %i\n\n", libpng_vn); ]]) ], [ AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no (failed to compile and link test program)]) LIBPNG_LIBS= LIBPNG_LDFLAGS= LIBPNG_CFLAGS= LIBPNG_VERSION= ]) CFLAGS=$SAVED_CFLAGS LDFLAGS=$SAVED_LDFLAGS LIBS=$SAVED_LIBS ]) ]) AS_IF([test -n "$LIBPNG_VERSION"], [$2], [$3]) AC_SUBST([LIBPNG_CFLAGS])dnl AC_SUBST([LIBPNG_LDFLAGS])dnl AC_SUBST([LIBPNG_LIBS])dnl m4_undefine([REQUIRED_VERSION])dnl m4_undefine([REQUIRED_VERSION_MAJOR])dnl m4_undefine([REQUIRED_VERSION_MINOR])dnl m4_undefine([REQUIRED_VERSION_MICRO])dnl ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/libupnp.m40000644000175000017500000000650412611472361017743 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule project. # This file is part of the libupnp library project. # # Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # dnl -------------------------------------------------------------------------- dnl LIBUPNP_CHECK([VERSION = 1.6.6], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl dnl Check for the libupnp library dnl -------------------------------------------------------------------------- dnl dnl This macro sets these variables: dnl - LIBUPNP_VERSION dnl Something like "1.6.7" dnl - LIBUPNP_CPPFLAGS dnl Flags to be added to CPPFLAGS dnl - LIBUPNP_CFLAGS dnl Flags to be added to CFLAGS dnl - LIBUPNP_LDFLAGS dnl Flags to be added to LDFLAGS dnl - LIBUPNP_LIBS dnl Library to be added to LIBS dnl dnl The LIBUPNP_CPPFLAGS, LIBUPNP_CFLAGS, LIBUPNP_LDFLAGS and LIBUPNP_LIBS variables are also substituted. dnl AC_DEFUN([LIBUPNP_CHECK], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl m4_define([MIN_LIBUPNP_VERSION], [m4_ifval([$1], [$1], [1.6.6])])dnl dnl Test for --with-libupnp-prefix AC_ARG_WITH( [libupnp-prefix], [AS_HELP_STRING( [--with-libupnp-prefix=PREFIX], [UPnP library location])], [export PKG_CONFIG_PATH=$withval/lib/pkgconfig]) dnl Check for libupnp >= MIN_LIBUPNP_VERSION AS_IF([test $cross_compiling = no], [ AC_MSG_CHECKING([for libupnp version >= MIN_LIBUPNP_VERSION]) AS_IF([test -n "$PKG_CONFIG"], [ AS_IF([$PKG_CONFIG libupnp --exists], [ LIBUPNP_VERSION=`$PKG_CONFIG libupnp --modversion` AS_IF([$PKG_CONFIG libupnp --atleast-version=MIN_LIBUPNP_VERSION], [ result=yes resultstr=" (version $LIBUPNP_VERSION)" LIBUPNP_CPPFLAGS=`$PKG_CONFIG libupnp --cflags-only-I` LIBUPNP_CFLAGS=`$PKG_CONFIG libupnp --cflags-only-other` LIBUPNP_LDFLAGS=`$PKG_CONFIG libupnp --libs-only-L` LIBUPNP_LIBS=`$PKG_CONFIG libupnp --libs-only-other` LIBUPNP_LIBS="$LIBUPNP_LIBS `$PKG_CONFIG libupnp --libs-only-l`" ], [ result=no resultstr=" (version $LIBUPNP_VERSION is not new enough)" ]) ], [ result=no resultstr=" (try to use --with-libupnp-prefix=PREFIX)" ]) ], [ result=no resultstr=" (pkg-config not found)" ]) AC_MSG_RESULT([$result$resultstr]) libupnp_error="libupnp >= MIN_LIBUPNP_VERSION not found$resultstr" ], [ dnl Currently cross-compilation with libupnp is not supported. result=no libupnp_error="cross compiling" ]) dnl Execute the right action. AS_IF([test ${result:-no} = yes], [$2], [$3]) dnl Exported symbols AC_SUBST([LIBUPNP_CPPFLAGS])dnl AC_SUBST([LIBUPNP_CFLAGS])dnl AC_SUBST([LIBUPNP_LDFLAGS])dnl AC_SUBST([LIBUPNP_LIBS])dnl m4_undefine([MIN_LIBUPNP_VERSION])dnl ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/mmap.m40000644000175000017500000001632012611472361017221 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule Project. # # Copyright (c) 2014 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # dnl --------------------------------------------------------------------------- dnl MULE_FUNC_MMAP dnl dnl This function is copied over from autoconf sources, but fixed to work with dnl C++. dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_FUNC_MMAP], [AC_CHECK_HEADERS_ONCE([stdlib.h unistd.h sys/param.h]) AC_CHECK_FUNCS([getpagesize]) AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped], [AC_RUN_IFELSE([AC_LANG_SOURCE([AC_INCLUDES_DEFAULT] [[/* malloc might have been renamed as rpl_malloc. */ #undef malloc /* Thanks to Mike Haertel and Jim Avera for this test. Here is a matrix of mmap possibilities: mmap private not fixed mmap private fixed at somewhere currently unmapped mmap private fixed at somewhere already mapped mmap shared not fixed mmap shared fixed at somewhere currently unmapped mmap shared fixed at somewhere already mapped For private mappings, we should verify that changes cannot be read() back from the file, nor mmap's back from the file at a different address. (There have been systems where private was not correctly implemented like the infamous i386 svr4.0, and systems where the VM page cache was not coherent with the file system buffer cache like early versions of FreeBSD and possibly contemporary NetBSD.) For shared mappings, we should conversely verify that changes get propagated back to all the places they're supposed to be. Grep wants private fixed already mapped. The main things grep needs to know about mmap are: * does it exist and is it safe to write into the mmap'd area * how to use it (BSD variants) */ #include #include #if !defined STDC_HEADERS && !defined HAVE_STDLIB_H char *malloc (); #endif /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE # ifdef _SC_PAGESIZE # define getpagesize() sysconf(_SC_PAGESIZE) # else /* no _SC_PAGESIZE */ # ifdef HAVE_SYS_PARAM_H # include # ifdef EXEC_PAGESIZE # define getpagesize() EXEC_PAGESIZE # else /* no EXEC_PAGESIZE */ # ifdef NBPG # define getpagesize() NBPG * CLSIZE # ifndef CLSIZE # define CLSIZE 1 # endif /* no CLSIZE */ # else /* no NBPG */ # ifdef NBPC # define getpagesize() NBPC # else /* no NBPC */ # ifdef PAGESIZE # define getpagesize() PAGESIZE # endif /* PAGESIZE */ # endif /* no NBPC */ # endif /* no NBPG */ # endif /* no EXEC_PAGESIZE */ # else /* no HAVE_SYS_PARAM_H */ # define getpagesize() 8192 /* punt totally */ # endif /* no HAVE_SYS_PARAM_H */ # endif /* no _SC_PAGESIZE */ #endif /* no HAVE_GETPAGESIZE */ int main () { char *data, *data2, *data3; int i, pagesize; int fd, fd2; pagesize = getpagesize (); /* First, make a file with some known garbage in it. */ data = (char *) malloc (pagesize); if (!data) return 1; for (i = 0; i < pagesize; ++i) *(data + i) = rand (); umask (0); fd = creat ("conftest.mmap", 0600); if (fd < 0) return 2; if (write (fd, data, pagesize) != pagesize) return 3; close (fd); /* Next, check that the tail of a page is zero-filled. File must have non-zero length, otherwise we risk SIGBUS for entire page. */ fd2 = open ("conftest.txt", O_RDWR | O_CREAT | O_TRUNC, 0600); if (fd2 < 0) return 4; data2 = (char *) ""; if (write (fd2, data2, 1) != 1) return 5; data2 = (char *) mmap (0, pagesize, PROT_READ | PROT_WRITE, MAP_SHARED, fd2, 0L); if (data2 == MAP_FAILED) return 6; for (i = 0; i < pagesize; ++i) if (*(data2 + i)) return 7; close (fd2); if (munmap (data2, pagesize)) return 8; /* Next, try to mmap the file at a fixed address which already has something else allocated at it. If we can, also make sure that we see the same garbage. */ fd = open ("conftest.mmap", O_RDWR); if (fd < 0) return 9; if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED, fd, 0L)) return 10; for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data2 + i)) return 11; /* Finally, make sure that changes to the mapped area do not percolate back to the file as seen by read(). (This is a bug on some variants of i386 svr4.0.) */ for (i = 0; i < pagesize; ++i) *(data2 + i) = *(data2 + i) + 1; data3 = (char *) malloc (pagesize); if (!data3) return 12; if (read (fd, data3, pagesize) != pagesize) return 13; for (i = 0; i < pagesize; ++i) if (*(data + i) != *(data3 + i)) return 14; close (fd); return 0; }]])], [ac_cv_func_mmap_fixed_mapped=yes], [ac_cv_func_mmap_fixed_mapped=no], [ac_cv_func_mmap_fixed_mapped=no])]) if test $ac_cv_func_mmap_fixed_mapped = yes; then AC_DEFINE([HAVE_MMAP], [1], [Define to 1 if you have a working `mmap' system call.]) fi rm -f conftest.mmap conftest.txt ]) dnl --------------------------------------------------------------------------- dnl MULE_CHECK_MMAP dnl dnl Checks for mmap() and makes use of it when found. dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_MMAP], [ MULE_ARG_ENABLE([mmap], [no], [enable using mapped memory if supported]) AH_TEMPLATE([ENABLE_MMAP], [Define this variable to 1 if using mapped memory was requested. Note that defining it will alone not allow usage of mmap(), but unsetting it will completely disable its usage.]) MULE_IF_ENABLED([mmap], [ AC_DEFINE([ENABLE_MMAP], [1]) MULE_FUNC_MMAP AC_CHECK_FUNCS([munmap sysconf]) AS_IF([test $ac_cv_func_sysconf = yes], [ AC_MSG_CHECKING([for pagesize constant for sysconf]) AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include ]], [[ return sysconf(_SC_PAGESIZE); ]]) ], [ AC_MSG_RESULT([_SC_PAGESIZE]) AC_DEFINE([HAVE__SC_PAGESIZE], [1], [Define to 1 if you have the _SC_PAGESIZE constant in ]) ], [ AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include ]], [[ return sysconf(_SC_PAGE_SIZE); ]]) ], [ AC_MSG_RESULT([_SC_PAGE_SIZE]) AC_DEFINE([HAVE__SC_PAGE_SIZE], [1], [Define to 1 if you have the _SC_PAGE_SIZE constant in , but not _SC_PAGESIZE]) ], [ AC_MSG_RESULT([none]) ]) ]) ]) ]) ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/muleboost.m40000644000175000017500000001025212611472361020276 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule Project. # # Copyright (c) 2015 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # # ----------------------------------------------------------------------------- # Fake libtool initialization just for Boost # # We do not really want to use libtool, but Boost requires it. Let's just # pretend we did initialize libtool for that single variable ($libext) Boost # needs. # ----------------------------------------------------------------------------- m4_defun([_FAKE_LT_INIT], [# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. for cc_temp in $compiler""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`echo "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a case $cc_basename in cl*) libext=lib ;; esac ]) # ----------------------------------------------------------------------------- # MULE_CHECK_BOOST(MINIMUM-BOOST-VERSION) # # Adds a configure flag --with-boost[=DIR]. You may optionally specify the # location of boost headers (or sources), if they are in a non-standard # location. If --with-boost if not given, nothing is done. Otherwise it # checks for the required minumum Boost version, and Boost.Asio. If everything # is fine, defines ASIO_SOCKETS. If the Boost sources are found, also defines # HAVE_BOOST_SOURCES. Other flags defined for using Boost: # - BOOST_CPPFLAGS # - BOOST_SYSTEM_LDFLAGS # - BOOST_SYSTEM_LIBS # ----------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_BOOST], [ AC_ARG_WITH([boost], [AS_HELP_STRING([--with-boost@<:@=DIR@:>@], [use Boost.Asio for networking])], , [with_boost=no] ) AS_IF([test ${with_boost:-no} != no], [ BOOST_REQUIRE([$1], [with_boost=disabled]) AS_IF([test ${with_boost:-no} != disabled], [ dnl Boost requires libtool. We don't. _FAKE_LT_INIT dnl Expand required macros here, otherwise autoconf may decide to expand them at dnl the top level, which is highly unwanted and would mess up Boost detection. _BOOST_FIND_COMPILER_TAG BOOST_STATIC _BOOST_GUESS_WHETHER_TO_USE_MT AC_MSG_CHECKING([for Boost sources]) MULE_BACKUP([CPPFLAGS]) MULE_APPEND([CPPFLAGS], [$BOOST_CPPFLAGS]) AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[#include ]]) ], [ AC_DEFINE([HAVE_BOOST_SOURCES], [1], [Define to 1 if you have the Boost sources]) AC_MSG_RESULT([yes]) ], [ AC_MSG_RESULT([no]) BOOST_SYSTEM([mt]) AS_IF([test ${boost_cv_lib_system:-no} != yes], [ MULE_WARNING([Boost support has been disabled because Boost.System not found]) with_boost=disabled ]) ]) MULE_RESTORE([CPPFLAGS]) dnl Not using BOOST_ASIO here, because it doesn't have ACTION-IF[-NOT]-FOUND parameters. BOOST_FIND_HEADER([boost/asio.hpp], [ MULE_WARNING([Boost support has been disabled because Boost.Asio not found]) with_boost=disabled ], [AC_DEFINE([ASIO_SOCKETS], [1], [Define to 1 if you have and are using Boost.Asio for networking.])]) ], [MULE_WARNING([Boost support has been disabled because of insufficient Boost version.])]) ]) ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/nls.m40000644000175000017500000001053012611472361017060 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule Project. # # Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # dnl ---------------------------------------------------- dnl MULE_CHECK_AUTOPOINT([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl check if autopoint is installed dnl ---------------------------------------------------- AC_DEFUN([MULE_CHECK_AUTOPOINT], [ AC_MSG_CHECKING([for autopoint]) autopoint_version=`autopoint --version | head -n 1 | sed -e 's/.*[[^0-9.]]\([[0-9]]\{1,\}\(\.[[0-9]]\{1,\}\)\{1,2\}\)[[^0-9.]]*/\1/'` AS_IF([test -n "$autopoint_version"], [ AC_MSG_RESULT([yes ($autopoint_version)]) $1 ], [ AC_MSG_RESULT([no]) $2 ]) ]) dnl --------------------------------------------------------------------------- dnl GENERATE_MANS_TO_INSTALL(TESTNAME, BASENAMEPATH) dnl dnl This function will generate the list of manpages to be installed. dnl dnl TESTNAME is the name of a FEATURE selected by MULE_ARG_ENABLE() if this dnl set of manpages need installing. The list of files will be returned in dnl the TESTNAME_MANPAGES variable. dnl dnl BASENAMEPATH is the path and basename of the manpages we test for, relative dnl to the package root (top_srcdir) dnl --------------------------------------------------------------------------- AC_DEFUN([GENERATE_MANS_TO_INSTALL], [m4_define([MANPAGES], [m4_translit([$1], [a-z-], [A-Z_])[]_MANPAGES])dnl MULE_IF_ENABLED([$1], [ AS_IF([test -z "$LINGUAS"], [MANPAGES=`ls -1 ${srcdir}/$2.* | sed -e 's:.*/::g'`], [ MANPAGES=`ls -1 ${srcdir}/$2.* | sed -e 's:.*/::g' | grep $Generate_Langs` MANPAGES="`basename $2.1` $[]MANPAGES" ]) MANPAGES=`echo $[]MANPAGES | tr -d '\n'` ], [MANPAGES=]) AC_SUBST(MANPAGES)dnl m4_undefine([MANPAGES])dnl ]) dnl --------------------------------------------------------------------------- dnl MULE_CHECK_NLS dnl dnl Checks and tests everything needed for Native Language Support dnl --------------------------------------------------------------------------- AC_DEFUN([MULE_CHECK_NLS], [ AC_ARG_WITH([language], [AS_HELP_STRING([--with-language=], [Specify a comma-separated list of languages you want to have installed. See po/LINGUAS for available languages])], [AS_IF([test "$withval" != "all"], [LINGUAS="`echo $withval | sed -e 's/,/ /g'`"])]) AM_GNU_GETTEXT([no-libtool], [need-ngettext]) AS_IF([test $USE_INCLUDED_LIBINTL = yes], [INCINTL=-I\${top_builddir}/intl]) AS_IF([test x$USE_NLS = xyes], [MULE_CHECK_AUTOPOINT(, [USE_NLS=no])]) AS_IF([test x$USE_NLS = xno -a x${enable_nls:-yes} = xyes], [MULE_WARNING([You need to install GNU gettext/gettext-tools to compile aMule with i18n support.])]) AS_IF([test ${USE_NLS:-no} = yes], [ AC_MSG_CHECKING([for requested languages]) Generate_Langs=`echo $LINGUAS | $AWK ['OFS="\\\\|" { for (i = 1; i <= NF; ++i) $i = "\\\\." $i; print }']` GENERATE_MANS_TO_INSTALL([amule-daemon], [docs/man/amuled]) GENERATE_MANS_TO_INSTALL([amulecmd], [docs/man/amulecmd]) GENERATE_MANS_TO_INSTALL([webserver], [docs/man/amuleweb]) GENERATE_MANS_TO_INSTALL([amule-gui], [docs/man/amulegui]) GENERATE_MANS_TO_INSTALL([cas], [src/utils/cas/docs/cas]) GENERATE_MANS_TO_INSTALL([wxcas], [src/utils/wxCas/docs/wxcas]) GENERATE_MANS_TO_INSTALL([ed2k], [docs/man/ed2k]) GENERATE_MANS_TO_INSTALL([alc], [src/utils/aLinkCreator/docs/alc]) GENERATE_MANS_TO_INSTALL([alcc], [src/utils/aLinkCreator/docs/alcc]) GENERATE_MANS_TO_INSTALL([monolithic], [docs/man/amule]) AC_MSG_RESULT([${LINGUAS:-all}]) ]) AC_SUBST([INCINTL])dnl ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/pkg.m40000644000175000017500000001206712611472361017054 0ustar morphmorph# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # # Copyright (c) 2004-2011 Scott James Remnant ( scott@netsplit.com ). # # 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure to call # PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_ifval([$2], [$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_ERROR(dnl [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES amule_2.3.1+git20151120.0023527bc2.orig/m4/plasmamule.m40000644000175000017500000000170512611472361020430 0ustar morphmorphm4_define([DISABLE_PLASMAMULE], [MULE_ENABLEVAR([plasmamule])=disabled]) AC_DEFUN([PLASMAMULE_CHECKS], [ CHECK_MOC_VERSION AS_IF([test "${QT_MOC}" = "not found"], [DISABLE_PLASMAMULE]) MULE_IF_ENABLED([plasmamule], [ CHECK_QT_HEADERS AS_IF([test -z "${QT_CORE_CXXFLAGS}"], [DISABLE_PLASMAMULE]) ]) MULE_IF_ENABLED([plasmamule], [ KDE_CONFIG_CHECK AS_IF([test "${KDE4_CONFIG}" = "not found"], [DISABLE_PLASMAMULE]) ]) MULE_IF_ENABLED([plasmamule], [ KDE_HEADER_CHECK AS_IF([test -z ${KDE_HEADER_DIR}], [DISABLE_PLASMAMULE]) ]) MULE_IF_ENABLED([plasmamule], [ AS_IF([test -e `$BUILD_CC -print-file-name=libplasma.so` && test -e `$BUILD_CC -print-file-name=libkdecore.so`], [ KDE_APPLNK_PATH_CHECK KDE_SERVICE_PATH_CHECK KDE_MODULE_PATH_CHECK KDE_ICON_PATH_CHECK KDE_MIME_PATH_CHECK ], [DISABLE_PLASMAMULE]) ]) MULE_IF_ENABLED([debug], [ DEBUGFLAG="-D__DEBUG__" AC_SUBST(DEBUGFLAG) ]) ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/progtest.m40000644000175000017500000000407412611472361020141 0ustar morphmorph# progtest.m4 serial 2 (gettext-0.10.40) dnl Copyright (C) 1996-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl This file can can be used in projects which are not available under dnl the GNU General Public License or the GNU Library General Public dnl License but which still want to provide support for the GNU gettext dnl functionality. dnl Please note that the actual code of the GNU gettext library is covered dnl by the GNU Library General Public License, and the rest of the GNU dnl gettext package package is covered by the GNU General Public License. dnl They are *not* in the public domain. dnl Authors: dnl Ulrich Drepper , 1996. # Search path for a program which passes the given test. dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) AC_DEFUN([AM_PATH_PROG_WITH_TEST], [# Extract the first word of "$2", so it can be a program name with args. set dummy $2; ac_word=[$]2 AC_MSG_CHECKING([for $ac_word]) AC_CACHE_VAL(ac_cv_path_$1, [case "[$]$1" in /*) ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" for ac_dir in ifelse([$5], , $PATH, [$5]); do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then if [$3]; then ac_cv_path_$1="$ac_dir/$ac_word" break fi fi done IFS="$ac_save_ifs" dnl If no 4th arg is given, leave the cache variable unset, dnl so AC_PATH_PROGS will keep looking. ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" ])dnl ;; esac])dnl $1="$ac_cv_path_$1" if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then AC_MSG_RESULT([$]$1) else AC_MSG_RESULT(no) fi AC_SUBST($1)dnl ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/qt.m40000644000175000017500000000353412611472361016716 0ustar morphmorphAC_DEFUN([QT_CONFIG_OPTIONS], [ AC_ARG_WITH( [moc], [AS_HELP_STRING([--with-moc=PATH], [Search in PATH for Qt's meta object compiler])], [QT_MOC=$withval], [QT_MOC=""]) ]) AC_DEFUN([CHECK_MOC_VERSION], [ AS_IF([test -z ${QT_MOC}], [ AC_PATH_PROGS(QT_MOC, moc-qt4 moc) AS_IF([test -z ${QT_MOC}], [ echo moc not found exit 1 ]) ], [ AC_MSG_CHECKING(for moc) AS_IF([test -x ${QT_MOC}], [ AC_MSG_RESULT(${QT_MOC}) AC_SUBST(QT_MOC) ], [ AC_MSG_RESULT("not found") QT_MOC="not found" exit 1 ]) ]) AS_IF([test "${QT_MOC}" != "not found"], [ AC_MSG_CHECKING(for moc version >= 4) QT_MOC_VERSION=`${QT_MOC} -v 2>&1 | sed -e 's/^.* (/(/'` AS_IF([test `echo ${QT_MOC_VERSION} | sed -e 's/^.* //' -e 's/\..*$//'` = 4], [ AC_MSG_RESULT(found ${QT_MOC_VERSION}) ], [ AC_MSG_RESULT(not found ${QT_MOC_VERSION} is too old) QT_MOC="not found" exit 1 ]) ]) ]) AC_DEFUN([CHECK_QT_HEADERS], [ AC_REQUIRE([PKG_PROG_PKG_CONFIG]) AC_MSG_CHECKING(for qt) AS_IF([test `${PKG_CONFIG} QtCore` --exists && `${PKG_CONFIG} QtGui --exists`], [ AC_MSG_RESULT(found) AC_MSG_CHECKING(for qt core cflags) QT_CORE_CXXFLAGS=`${PKG_CONFIG} --cflags QtCore` AC_MSG_RESULT($QT_CORE_CFLAGS) AC_MSG_CHECKING(for qt core libs) QT_CORE_LIBS=`${PKG_CONFIG} --libs QtCore` AC_MSG_RESULT($QT_CORE_LIBS) AC_MSG_CHECKING(for qt gui cflags) QT_GUI_CXXFLAGS=`${PKG_CONFIG} --cflags QtGui` AC_MSG_RESULT($QT_GUI_CFLAGS) AC_MSG_CHECKING(for qt gui libs) QT_GUI_LIBS=`${PKG_CONFIG} --libs QtGui` AC_MSG_RESULT($QT_GUI_LIBS) ], [AC_MSG_RESULT(not found)] exit 1 ) AS_IF([test `${PKG_CONFIG} QtDBus --modversion | sed -e 's/\.//g'` -ge 470 ], [ QT_DBUS_LDFLAGS="-lQtDBus" AC_SUBST(QT_DBUS_LDFLAGS) ]) AC_SUBST(QT_CORE_CXXFLAGS) AC_SUBST(QT_CORE_LIBS) AC_SUBST(QT_GUI_CXXFLAGS) AC_SUBST(QT_GUI_LIBS) ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/readline.m40000644000175000017500000000417712611472361020061 0ustar morphmorphdnl dnl Copyright (c) 2003-2011 aMule Team (http://www.amule.org) dnl Copyright (c) 1995-2008 Free Software Foundation, Inc. dnl dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl dnl Original file available from the GNU Autoconf Macro Archive at: dnl http://www.gnu.org/software/ac-archive/htmldoc/vl_lib_readline.html dnl AC_DEFUN([VL_LIB_READLINE], [ AC_CACHE_CHECK([for a readline compatible library], vl_cv_lib_readline, [ ORIG_LIBS="$LIBS" for readline_lib in readline edit editline; do for termcap_lib in "" termcap curses ncurses; do if test -z "$termcap_lib"; then TRY_LIB="-l$readline_lib" else TRY_LIB="-l$readline_lib -l$termcap_lib" fi LIBS="$ORIG_LIBS $TRY_LIB" AC_TRY_LINK_FUNC(readline, vl_cv_lib_readline="$TRY_LIB") if test -n "$vl_cv_lib_readline"; then break fi done if test -n "$vl_cv_lib_readline"; then break fi done if test -z "$vl_cv_lib_readline"; then vl_cv_lib_readline="no" LIBS="$ORIG_LIBS" READLINE_LIBS="" else READLINE_LIBS="$vl_cv_lib_readline" fi ]) if test "$vl_cv_lib_readline" != "no"; then AC_DEFINE(HAVE_LIBREADLINE, 1, [Define if you have a readline compatible library]) AC_CHECK_HEADERS(readline.h readline/readline.h) AC_CACHE_CHECK([whether readline supports history], vl_cv_lib_readline_history, [ vl_cv_lib_readline_history="no" AC_TRY_LINK_FUNC(add_history, vl_cv_lib_readline_history="yes") ]) if test "$vl_cv_lib_readline_history" = "yes"; then AC_DEFINE(HAVE_READLINE_HISTORY, 1, [Define if your readline library has \`add_history']) AC_CHECK_HEADERS(history.h readline/history.h) fi fi AC_SUBST(READLINE_LIBS) LIBS="$ORIG_LIBS" ])dnl amule_2.3.1+git20151120.0023527bc2.orig/m4/stdint_h.m40000644000175000017500000000204312611472361020100 0ustar morphmorph# stdint_h.m4 serial 2 (gettext-0.11.4) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. # Define HAVE_STDINT_H_WITH_UINTMAX if exists, # doesn't clash with , and declares uintmax_t. AC_DEFUN([jm_AC_HEADER_STDINT_H], [ AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, [AC_TRY_COMPILE( [#include #include ], [uintmax_t i = (uintmax_t) -1;], jm_ac_cv_header_stdint_h=yes, jm_ac_cv_header_stdint_h=no)]) if test $jm_ac_cv_header_stdint_h = yes; then AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, [Define if exists, doesn't clash with , and declares uintmax_t. ]) fi ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/uintmax_t.m40000644000175000017500000000211412611472361020273 0ustar morphmorph# uintmax_t.m4 serial 6 (gettext-0.11) dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. AC_PREREQ(2.13) # Define uintmax_t to `unsigned long' or `unsigned long long' # if does not exist. AC_DEFUN([jm_AC_TYPE_UINTMAX_T], [ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) AC_REQUIRE([jm_AC_HEADER_STDINT_H]) if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) test $ac_cv_type_unsigned_long_long = yes \ && ac_type='unsigned long long' \ || ac_type='unsigned long' AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, [Define to unsigned long or unsigned long long if and don't define.]) fi ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/ulonglong.m40000644000175000017500000000200012611472361020261 0ustar morphmorph# ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40) dnl Copyright (C) 1999-2002 Free Software Foundation, Inc. dnl This file is free software, distributed under the terms of the GNU dnl General Public License. As a special exception to the GNU General dnl Public License, this file may be distributed as part of a program dnl that contains a configuration script generated by Autoconf, under dnl the same distribution terms as the rest of that program. dnl From Paul Eggert. AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], [ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;], [unsigned long long ullmax = (unsigned long long) -1; return ull << i | ull >> i | ullmax / ull | ullmax % ull;], ac_cv_type_unsigned_long_long=yes, ac_cv_type_unsigned_long_long=no)]) if test $ac_cv_type_unsigned_long_long = yes; then AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, [Define if you have the unsigned long long type.]) fi ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/wxwin.m40000644000175000017500000011124712611472361017447 0ustar morphmorphdnl --------------------------------------------------------------------------- dnl Author: wxWidgets development team, dnl Francesco Montorsi, dnl Bob McCown (Mac-testing) dnl Creation date: 24/11/2001 dnl RCS-ID: $Id$ dnl --------------------------------------------------------------------------- dnl =========================================================================== dnl Table of Contents of this macro file: dnl ------------------------------------- dnl dnl SECTION A: wxWidgets main macros dnl - WX_CONFIG_OPTIONS dnl - WX_CONFIG_CHECK dnl - WXRC_CHECK dnl - WX_STANDARD_OPTIONS dnl - WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS dnl - WX_DETECT_STANDARD_OPTION_VALUES dnl dnl SECTION B: wxWidgets-related utilities dnl - WX_LIKE_LIBNAME dnl - WX_ARG_ENABLE_YESNOAUTO dnl - WX_ARG_WITH_YESNOAUTO dnl dnl SECTION C: messages to the user dnl - WX_STANDARD_OPTIONS_SUMMARY_MSG dnl - WX_STANDARD_OPTIONS_SUMMARY_MSG_BEGIN dnl - WX_STANDARD_OPTIONS_SUMMARY_MSG_END dnl - WX_BOOLOPT_SUMMARY dnl dnl The special "WX_DEBUG_CONFIGURE" variable can be set to 1 to enable extra dnl debug output on stdout from these macros. dnl =========================================================================== dnl --------------------------------------------------------------------------- dnl Macros for wxWidgets detection. Typically used in configure.in as: dnl dnl AC_ARG_ENABLE(...) dnl AC_ARG_WITH(...) dnl ... dnl WX_CONFIG_OPTIONS dnl ... dnl ... dnl WX_CONFIG_CHECK([2.6.0], [wxWin=1]) dnl if test "$wxWin" != 1; then dnl AC_MSG_ERROR([ dnl wxWidgets must be installed on your system dnl but wx-config script couldn't be found. dnl dnl Please check that wx-config is in path, the directory dnl where wxWidgets libraries are installed (returned by dnl 'wx-config --libs' command) is in LD_LIBRARY_PATH or dnl equivalent variable and wxWidgets version is 2.3.4 or above. dnl ]) dnl fi dnl CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS" dnl CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY" dnl CFLAGS="$CFLAGS $WX_CFLAGS_ONLY" dnl dnl LIBS="$LIBS $WX_LIBS" dnl dnl If you want to support standard --enable-debug/unicode/shared options, you dnl may do the following: dnl dnl ... dnl AC_CANONICAL_SYSTEM dnl dnl # define configure options dnl WX_CONFIG_OPTIONS dnl WX_STANDARD_OPTIONS([debug,unicode,shared,toolkit,wxshared]) dnl dnl # basic configure checks dnl ... dnl dnl # we want to always have DEBUG==WX_DEBUG and UNICODE==WX_UNICODE dnl WX_DEBUG=$DEBUG dnl WX_UNICODE=$UNICODE dnl dnl WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS dnl WX_CONFIG_CHECK([2.8.0], [wxWin=1],,[html,core,net,base],[$WXCONFIG_FLAGS]) dnl WX_DETECT_STANDARD_OPTION_VALUES dnl dnl # write the output files dnl AC_CONFIG_FILES([Makefile ...]) dnl AC_OUTPUT dnl dnl # optional: just to show a message to the user dnl WX_STANDARD_OPTIONS_SUMMARY_MSG dnl dnl --------------------------------------------------------------------------- dnl --------------------------------------------------------------------------- dnl WX_CONFIG_OPTIONS dnl dnl adds support for --wx-prefix, --wx-exec-prefix, --with-wxdir and dnl --wx-config command line options dnl --------------------------------------------------------------------------- AC_DEFUN([WX_CONFIG_OPTIONS], [ AC_ARG_WITH(wxdir, [ --with-wxdir=PATH Use uninstalled version of wxWidgets in PATH], [ wx_config_name="$withval/wx-config" wx_config_args="--inplace"]) AC_ARG_WITH(wx-config, [ --with-wx-config=CONFIG wx-config script to use (optional)], wx_config_name="$withval" ) AC_ARG_WITH(wx-prefix, [ --with-wx-prefix=PREFIX Prefix where wxWidgets is installed (optional)], wx_config_prefix="$withval", wx_config_prefix="") AC_ARG_WITH(wx-exec-prefix, [ --with-wx-exec-prefix=PREFIX Exec prefix where wxWidgets is installed (optional)], wx_config_exec_prefix="$withval", wx_config_exec_prefix="") ]) dnl Helper macro for checking if wx version is at least $1.$2.$3, set's dnl wx_ver_ok=yes if it is: AC_DEFUN([_WX_PRIVATE_CHECK_VERSION], [ wx_ver_ok="" if test "x$WX_VERSION_FULL" != x ; then if test $wx_config_major_version -gt $1; then wx_ver_ok=yes else if test $wx_config_major_version -eq $1; then if test $wx_config_minor_version -gt $2; then wx_ver_ok=yes else if test $wx_config_minor_version -eq $2; then if test $wx_config_micro_version -ge $3; then wx_ver_ok=yes fi fi fi fi fi fi ]) dnl --------------------------------------------------------------------------- dnl WX_CONFIG_CHECK(VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND dnl [, WX-LIBS [, ADDITIONAL-WX-CONFIG-FLAGS]]]]) dnl dnl Test for wxWidgets, and define WX_C*FLAGS, WX_LIBS and WX_LIBS_STATIC dnl (the latter is for static linking against wxWidgets). Set WX_CONFIG_NAME dnl environment variable to override the default name of the wx-config script dnl to use. Set WX_CONFIG_PATH to specify the full path to wx-config - in this dnl case the macro won't even waste time on tests for its existence. dnl dnl Optional WX-LIBS argument contains comma- or space-separated list of dnl wxWidgets libraries to link against (it may include contrib libraries). If dnl it is not specified then WX_LIBS and WX_LIBS_STATIC will contain flags to dnl link with all of the core wxWidgets libraries. dnl dnl Optional ADDITIONAL-WX-CONFIG-FLAGS argument is appended to wx-config dnl invocation command in present. It can be used to fine-tune lookup of dnl best wxWidgets build available. dnl dnl Example use: dnl WX_CONFIG_CHECK([2.6.0], [wxWin=1], [wxWin=0], [html,core,net] dnl [--unicode --debug]) dnl --------------------------------------------------------------------------- dnl dnl Get the cflags and libraries from the wx-config script dnl AC_DEFUN([WX_CONFIG_CHECK], [ dnl do we have wx-config name: it can be wx-config or wxd-config or ... if test x${WX_CONFIG_NAME+set} != xset ; then WX_CONFIG_NAME=wx-config fi if test "x$wx_config_name" != x ; then WX_CONFIG_NAME="$wx_config_name" fi dnl deal with optional prefixes if test x$wx_config_exec_prefix != x ; then wx_config_args="$wx_config_args --exec-prefix=$wx_config_exec_prefix" WX_LOOKUP_PATH="$wx_config_exec_prefix/bin" fi if test x$wx_config_prefix != x ; then wx_config_args="$wx_config_args --prefix=$wx_config_prefix" WX_LOOKUP_PATH="$WX_LOOKUP_PATH:$wx_config_prefix/bin" fi if test "$cross_compiling" = "yes"; then wx_config_args="$wx_config_args --host=$host_alias" fi dnl don't search the PATH if WX_CONFIG_NAME is absolute filename if test -x "$WX_CONFIG_NAME" ; then AC_MSG_CHECKING(for wx-config) WX_CONFIG_PATH="$WX_CONFIG_NAME" AC_MSG_RESULT($WX_CONFIG_PATH) else AC_PATH_PROG(WX_CONFIG_PATH, $WX_CONFIG_NAME, no, "$WX_LOOKUP_PATH:$PATH") fi if test "$WX_CONFIG_PATH" != "no" ; then WX_VERSION_FULL="" min_wx_version=ifelse([$1], ,2.8.0,$1) if test -z "$5" ; then AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version]) else AC_MSG_CHECKING([for wxWidgets version >= $min_wx_version ($5)]) fi WX_CONFIG_WITH_ARGS="$WX_CONFIG_PATH $wx_config_args $5 $4" WX_VERSION_FULL=`$WX_CONFIG_WITH_ARGS --version 2>/dev/null` wx_config_major_version=`echo $WX_VERSION_FULL | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` wx_config_minor_version=`echo $WX_VERSION_FULL | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` wx_config_micro_version=`echo $WX_VERSION_FULL | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` wx_requested_major_version=`echo $min_wx_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` wx_requested_minor_version=`echo $min_wx_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` wx_requested_micro_version=`echo $min_wx_version | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` _WX_PRIVATE_CHECK_VERSION([$wx_requested_major_version], [$wx_requested_minor_version], [$wx_requested_micro_version]) if test -n "$wx_ver_ok"; then AC_MSG_RESULT(yes (version $WX_VERSION_FULL)) WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs` WX_RESCOMP=`$WX_CONFIG_WITH_ARGS --rescomp` WX_CPPFLAGS=`$WX_CONFIG_WITH_ARGS --cppflags` WX_CXXFLAGS=`$WX_CONFIG_WITH_ARGS --cxxflags` WX_CFLAGS=`$WX_CONFIG_WITH_ARGS --cflags` WX_CFLAGS_ONLY=`echo $WX_CFLAGS | sed "s@^$WX_CPPFLAGS *@@"` WX_CXXFLAGS_ONLY=`echo $WX_CXXFLAGS | sed "s@^$WX_CFLAGS *@@"` ifelse([$2], , :, [$2]) else if test "x$WX_VERSION_FULL" = x; then dnl no wx-config at all AC_MSG_RESULT(no) else AC_MSG_RESULT(no (version $WX_VERSION_FULL is not new enough)) fi WX_CFLAGS="" WX_CPPFLAGS="" WX_CXXFLAGS="" WX_LIBS="" WX_RESCOMP="" if test ! -z "$5"; then wx_error_message=" The configuration you asked for $PACKAGE_NAME requires a wxWidgets build with the following settings: $5 but such build is not available. To see the wxWidgets builds available on this system, please use 'wx-config --list' command. To use the default build, returned by 'wx-config --selected-config', use the options with their 'auto' default values." fi wx_error_message=" The requested wxWidgets build couldn't be found. $wx_error_message If you still get this error, then check that 'wx-config' is in path, the directory where wxWidgets libraries are installed (returned by 'wx-config --libs' command) is in LD_LIBRARY_PATH or equivalent variable and wxWidgets version is $1 or above." ifelse([$3], , AC_MSG_ERROR([$wx_error_message]), [$3]) fi else WX_CFLAGS="" WX_CPPFLAGS="" WX_CXXFLAGS="" WX_LIBS="" WX_RESCOMP="" ifelse([$3], , :, [$3]) fi AC_SUBST(WX_CPPFLAGS) AC_SUBST(WX_CFLAGS) AC_SUBST(WX_CXXFLAGS) AC_SUBST(WX_CFLAGS_ONLY) AC_SUBST(WX_CXXFLAGS_ONLY) AC_SUBST(WX_LIBS) AC_SUBST(WX_VERSION_FULL) AC_SUBST(WX_RESCOMP) dnl need to export also WX_VERSION_MINOR and WX_VERSION_MAJOR symbols dnl to support wxpresets bakefiles WX_VERSION_MAJOR="$wx_config_major_version" WX_VERSION_MINOR="$wx_config_minor_version" AC_SUBST(WX_VERSION_MAJOR) AC_SUBST(WX_VERSION_MINOR) ]) dnl --------------------------------------------------------------------------- dnl Get information on the wxrc program for making C++, Python and xrs dnl resource files. dnl dnl AC_ARG_ENABLE(...) dnl AC_ARG_WITH(...) dnl ... dnl WX_CONFIG_OPTIONS dnl ... dnl WX_CONFIG_CHECK(2.6.0, wxWin=1) dnl if test "$wxWin" != 1; then dnl AC_MSG_ERROR([ dnl wxWidgets must be installed on your system dnl but wx-config script couldn't be found. dnl dnl Please check that wx-config is in path, the directory dnl where wxWidgets libraries are installed (returned by dnl 'wx-config --libs' command) is in LD_LIBRARY_PATH or dnl equivalent variable and wxWidgets version is 2.6.0 or above. dnl ]) dnl fi dnl dnl WXRC_CHECK([HAVE_WXRC=1], [HAVE_WXRC=0]) dnl if test "x$HAVE_WXRC" != x1; then dnl AC_MSG_ERROR([ dnl The wxrc program was not installed or not found. dnl dnl Please check the wxWidgets installation. dnl ]) dnl fi dnl dnl CPPFLAGS="$CPPFLAGS $WX_CPPFLAGS" dnl CXXFLAGS="$CXXFLAGS $WX_CXXFLAGS_ONLY" dnl CFLAGS="$CFLAGS $WX_CFLAGS_ONLY" dnl dnl LDFLAGS="$LDFLAGS $WX_LIBS" dnl --------------------------------------------------------------------------- dnl --------------------------------------------------------------------------- dnl WXRC_CHECK([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) dnl dnl Test for wxWidgets' wxrc program for creating either C++, Python or XRS dnl resources. The variable WXRC will be set and substituted in the configure dnl script and Makefiles. dnl dnl Example use: dnl WXRC_CHECK([wxrc=1], [wxrc=0]) dnl --------------------------------------------------------------------------- dnl dnl wxrc program from the wx-config script dnl AC_DEFUN([WXRC_CHECK], [ AC_ARG_VAR([WXRC], [Path to wxWidget's wxrc resource compiler]) if test "x$WX_CONFIG_NAME" = x; then AC_MSG_ERROR([The wxrc tests must run after wxWidgets test.]) else AC_MSG_CHECKING([for wxrc]) if test "x$WXRC" = x ; then dnl wx-config --utility is a new addition to wxWidgets: _WX_PRIVATE_CHECK_VERSION(2,5,3) if test -n "$wx_ver_ok"; then WXRC=`$WX_CONFIG_WITH_ARGS --utility=wxrc` fi fi if test "x$WXRC" = x ; then AC_MSG_RESULT([not found]) ifelse([$2], , :, [$2]) else AC_MSG_RESULT([$WXRC]) ifelse([$1], , :, [$1]) fi AC_SUBST(WXRC) fi ]) dnl --------------------------------------------------------------------------- dnl WX_LIKE_LIBNAME([output-var] [prefix], [name]) dnl dnl Sets the "output-var" variable to the name of a library named with same dnl wxWidgets rule. dnl E.g. for output-var=='lib', name=='test', prefix='mine', sets dnl the $lib variable to: dnl 'mine_gtk2ud_test-2.8' dnl if WX_PORT=gtk2, WX_UNICODE=1, WX_DEBUG=1 and WX_VERSION=28 dnl --------------------------------------------------------------------------- AC_DEFUN([WX_LIKE_LIBNAME], [ wx_temp="$2""_""$WX_PORT" dnl add the [u][d] string if test "$WX_UNICODE" = "1"; then wx_temp="$wx_temp""u" fi if test "$WX_DEBUG" = "1"; then wx_temp="$wx_temp""d" fi dnl complete the name of the lib wx_temp="$wx_temp""_""$3""-$WX_VERSION_MAJOR.$WX_VERSION_MINOR" dnl save it in the user's variable $1=$wx_temp ]) dnl --------------------------------------------------------------------------- dnl WX_ARG_ENABLE_YESNOAUTO/WX_ARG_WITH_YESNOAUTO dnl dnl Two little custom macros which define the ENABLE/WITH configure arguments. dnl Macro arguments: dnl $1 = the name of the --enable / --with feature dnl $2 = the name of the variable associated dnl $3 = the description of that feature dnl $4 = the default value for that feature dnl $5 = additional action to do in case option is given with "yes" value dnl --------------------------------------------------------------------------- AC_DEFUN([WX_ARG_ENABLE_YESNOAUTO], [AC_ARG_ENABLE($1, AC_HELP_STRING([--enable-$1], [$3 (default is $4)]), [], [enableval="$4"]) dnl Show a message to the user about this option AC_MSG_CHECKING([for the --enable-$1 option]) if test "$enableval" = "yes" ; then AC_MSG_RESULT([yes]) $2=1 $5 elif test "$enableval" = "no" ; then AC_MSG_RESULT([no]) $2=0 elif test "$enableval" = "auto" ; then AC_MSG_RESULT([will be automatically detected]) $2="auto" else AC_MSG_ERROR([ Unrecognized option value (allowed values: yes, no, auto) ]) fi ]) AC_DEFUN([WX_ARG_WITH_YESNOAUTO], [AC_ARG_WITH($1, AC_HELP_STRING([--with-$1], [$3 (default is $4)]), [], [withval="$4"]) dnl Show a message to the user about this option AC_MSG_CHECKING([for the --with-$1 option]) if test "$withval" = "yes" ; then AC_MSG_RESULT([yes]) $2=1 $5 dnl NB: by default we don't allow --with-$1=no option dnl since it does not make much sense ! elif test "$6" = "1" -a "$withval" = "no" ; then AC_MSG_RESULT([no]) $2=0 elif test "$withval" = "auto" ; then AC_MSG_RESULT([will be automatically detected]) $2="auto" else AC_MSG_ERROR([ Unrecognized option value (allowed values: yes, auto) ]) fi ]) dnl --------------------------------------------------------------------------- dnl WX_STANDARD_OPTIONS([options-to-add]) dnl dnl Adds to the configure script one or more of the following options: dnl --enable-[debug|unicode|shared|wxshared|wxdebug] dnl --with-[gtk|msw|motif|x11|mac|mgl|dfb] dnl Then checks for their presence and eventually set the DEBUG, UNICODE, SHARED, dnl PORT, WX_SHARED, WX_DEBUG, variables to one of the "yes", "no", "auto" values. dnl dnl Note that e.g. UNICODE != WX_UNICODE; the first is the value of the dnl --enable-unicode option (in boolean format) while the second indicates dnl if wxWidgets was built in Unicode mode (and still is in boolean format). dnl --------------------------------------------------------------------------- AC_DEFUN([WX_STANDARD_OPTIONS], [ dnl the following lines will expand to WX_ARG_ENABLE_YESNOAUTO calls if and only if dnl the $1 argument contains respectively the debug,unicode or shared options. ifelse(regexp([$1], [\bdebug]), [-1],, [WX_ARG_ENABLE_YESNOAUTO([debug], [DEBUG], [Build in debug mode], [auto])]) ifelse(index([$1], [unicode]), [-1],, [WX_ARG_ENABLE_YESNOAUTO([unicode], [UNICODE], [Build in Unicode mode], [auto])]) ifelse(regexp([$1], [\bshared]), [-1],, [WX_ARG_ENABLE_YESNOAUTO([shared], [SHARED], [Build as shared library], [auto])]) dnl WX_ARG_WITH_YESNOAUTO cannot be used for --with-toolkit since it's an option dnl which must be able to accept the auto|gtk1|gtk2|msw|... values ifelse(index([$1], [toolkit]), [-1],, [ AC_ARG_WITH([toolkit], AC_HELP_STRING([--with-toolkit], [Build against a specific wxWidgets toolkit (default is auto)]), [], [withval="auto"]) dnl Show a message to the user about this option AC_MSG_CHECKING([for the --with-toolkit option]) if test "$withval" = "auto" ; then AC_MSG_RESULT([will be automatically detected]) TOOLKIT="auto" else TOOLKIT="$withval" dnl PORT must be one of the allowed values if test "$TOOLKIT" != "gtk1" -a "$TOOLKIT" != "gtk2" -a \ "$TOOLKIT" != "msw" -a "$TOOLKIT" != "motif" -a \ "$TOOLKIT" != "x11" -a "$TOOLKIT" != "mac" -a \ "$TOOLKIT" != "mgl" -a "$TOOLKIT" != "dfb" -a \ "$TOOLKIT" != "base" -a "$TOOLKIT" != "cocoa" -a \ "$TOOLKIT" != "osx_cocoa"; then AC_MSG_ERROR([ Unrecognized option value (allowed values: auto, gtk1, gtk2, msw, motif, x11, mac, mgl, dfb, base, cocoa, osx_cocoa) ]) fi AC_MSG_RESULT([$TOOLKIT]) fi ]) dnl ****** IMPORTANT ******* dnl Unlike for the UNICODE setting, you can build your program in dnl shared mode against a static build of wxWidgets. Thus we have the dnl following option which allows these mixtures. E.g. dnl dnl ./configure --disable-shared --with-wxshared dnl dnl will build your library in static mode against the first available dnl shared build of wxWidgets. dnl dnl Note that's not possible to do the viceversa: dnl dnl ./configure --enable-shared --without-wxshared dnl dnl Doing so you would try to build your library in shared mode against a static dnl build of wxWidgets. This is not possible (you would mix PIC and non PIC code) ! dnl A check for this combination of options is in WX_DETECT_STANDARD_OPTION_VALUES dnl (where we know what 'auto' should be expanded to). dnl dnl If you try to build something in ANSI mode against a UNICODE build dnl of wxWidgets or in RELEASE mode against a DEBUG build of wxWidgets, dnl then at best you'll get ton of linking errors ! dnl ************************ ifelse(index([$1], [wxshared]), [-1],, [ WX_ARG_WITH_YESNOAUTO( [wxshared], [WX_SHARED], [Force building against a shared build of wxWidgets, even if --disable-shared is given], [auto], [], [1]) ]) dnl Just like for SHARED and WX_SHARED it may happen that some adventurous dnl peoples will want to mix a wxWidgets release build with a debug build of dnl his app/lib. So, we have both DEBUG and WX_DEBUG variables. ifelse(index([$1], [wxdebug]), [-1],, [ WX_ARG_WITH_YESNOAUTO( [wxdebug], [WX_DEBUG], [Force building against a debug build of wxWidgets, even if --disable-debug is given], [auto], [], [1]) ]) dnl WX_ARG_WITH_YESNOAUTO cannot be used for --with-wxversion since it's an option dnl which must be able to accept the auto|28|29... values ifelse(index([$1], [wxversion]), [-1],, [ AC_ARG_WITH([wxversion], AC_HELP_STRING([--with-wxversion], [Build against a specific version of wxWidgets (default is auto)]), [], [withval="auto"]) dnl Show a message to the user about this option AC_MSG_CHECKING([for the --with-wxversion option]) if test "$withval" = "auto" ; then AC_MSG_RESULT([will be automatically detected]) WX_VERSION="auto" else wx_requested_major_version=`echo $withval | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).*/\1/'` wx_requested_minor_version=`echo $withval | \ sed 's/\([[0-9]]*\).\([[0-9]]*\).*/\2/'` dnl both vars above must be exactly 1 digit if test "${#wx_requested_major_version}" != "1" -o \ "${#wx_requested_minor_version}" != "1" ; then AC_MSG_ERROR([ Unrecognized option value (allowed values: auto, 2.8, 2.9) ]) fi WX_VERSION="$wx_requested_major_version"".""$wx_requested_minor_version" AC_MSG_RESULT([$WX_VERSION]) fi ]) if test "$WX_DEBUG_CONFIGURE" = "1"; then echo "[[dbg]] DEBUG: $DEBUG, WX_DEBUG: $WX_DEBUG" echo "[[dbg]] UNICODE: $UNICODE, WX_UNICODE: $WX_UNICODE" echo "[[dbg]] SHARED: $SHARED, WX_SHARED: $WX_SHARED" echo "[[dbg]] TOOLKIT: $TOOLKIT, WX_TOOLKIT: $WX_TOOLKIT" echo "[[dbg]] VERSION: $VERSION, WX_VERSION: $WX_VERSION" fi ]) dnl --------------------------------------------------------------------------- dnl WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS dnl dnl Sets the WXCONFIG_FLAGS string using the SHARED,DEBUG,UNICODE variable values dnl which are different from "auto". dnl Thus this macro needs to be called only once all options have been set. dnl --------------------------------------------------------------------------- AC_DEFUN([WX_CONVERT_STANDARD_OPTIONS_TO_WXCONFIG_FLAGS], [ if test "$WX_SHARED" = "1" ; then WXCONFIG_FLAGS="--static=no " elif test "$WX_SHARED" = "0" ; then WXCONFIG_FLAGS="--static=yes " fi if test "$WX_DEBUG" = "1" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--debug=yes " elif test "$WX_DEBUG" = "0" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--debug=no " fi dnl The user should have set WX_UNICODE=UNICODE if test "$WX_UNICODE" = "1" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--unicode=yes " elif test "$WX_UNICODE" = "0" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--unicode=no " fi if test "$TOOLKIT" != "auto" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--toolkit=$TOOLKIT " fi if test "$WX_VERSION" != "auto" ; then WXCONFIG_FLAGS="$WXCONFIG_FLAGS""--version=$WX_VERSION " fi dnl strip out the last space of the string WXCONFIG_FLAGS=${WXCONFIG_FLAGS% } if test "$WX_DEBUG_CONFIGURE" = "1"; then echo "[[dbg]] WXCONFIG_FLAGS: $WXCONFIG_FLAGS" fi ]) dnl --------------------------------------------------------------------------- dnl _WX_SELECTEDCONFIG_CHECKFOR([RESULTVAR], [STRING], [MSG] dnl [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) dnl dnl Outputs the given MSG. Then searches the given STRING in the wxWidgets dnl additional CPP flags and put the result of the search in WX_$RESULTVAR dnl also adding the "yes" or "no" message result to MSG. dnl --------------------------------------------------------------------------- AC_DEFUN([_WX_SELECTEDCONFIG_CHECKFOR], [ if test "$$1" = "auto" ; then dnl The user does not have particular preferences for this option; dnl so we will detect the wxWidgets relative build setting and use it AC_MSG_CHECKING([$3]) dnl set WX_$1 variable to 1 if the $WX_SELECTEDCONFIG contains the $2 dnl string or to 0 otherwise. dnl NOTE: 'expr match STRING REGEXP' cannot be used since on Mac it dnl doesn't work; we use 'expr STRING : REGEXP' instead WX_$1=$(expr "$WX_SELECTEDCONFIG" : ".*$2.*") if test "$WX_$1" != "0"; then WX_$1=1 AC_MSG_RESULT([yes]) ifelse([$4], , :, [$4]) else WX_$1=0 AC_MSG_RESULT([no]) ifelse([$5], , :, [$5]) fi else dnl Use the setting given by the user WX_$1=$$1 fi ]) dnl --------------------------------------------------------------------------- dnl WX_DETECT_STANDARD_OPTION_VALUES dnl dnl Detects the values of the following variables: dnl 1) WX_VERSION dnl 2) WX_UNICODE dnl 3) WX_DEBUG dnl 4) WX_SHARED (and also WX_STATIC) dnl 5) WX_PORT dnl from the previously selected wxWidgets build; this macro in fact must be dnl called *after* calling the WX_CONFIG_CHECK macro. dnl dnl Note that the WX_VERSION_MAJOR, WX_VERSION_MINOR symbols are already set dnl by WX_CONFIG_CHECK macro dnl --------------------------------------------------------------------------- AC_DEFUN([WX_DETECT_STANDARD_OPTION_VALUES], [ WX_VERSION="$WX_VERSION_MAJOR""$WX_VERSION_MINOR" dnl The wx-config we are using understands the "--selected_config" dnl option which returns an easy-parseable string ! WX_SELECTEDCONFIG=$($WX_CONFIG_WITH_ARGS --selected_config) if test "$WX_DEBUG_CONFIGURE" = "1"; then echo "[[dbg]] Using wx-config --selected-config" echo "[[dbg]] WX_SELECTEDCONFIG: $WX_SELECTEDCONFIG" fi dnl we could test directly for WX_SHARED with a line like: dnl _WX_SELECTEDCONFIG_CHECKFOR([SHARED], [shared], dnl [if wxWidgets was built in SHARED mode]) dnl but wx-config --selected-config DOES NOT outputs the 'shared' dnl word when wx was built in shared mode; it rather outputs the dnl 'static' word when built in static mode. if test $WX_SHARED = "1"; then STATIC=0 elif test $WX_SHARED = "0"; then STATIC=1 elif test $WX_SHARED = "auto"; then STATIC="auto" fi dnl Now set the WX_UNICODE, WX_DEBUG, WX_STATIC variables _WX_SELECTEDCONFIG_CHECKFOR([UNICODE], [unicode], [if wxWidgets was built with UNICODE enabled]) _WX_SELECTEDCONFIG_CHECKFOR([DEBUG], [debug], [if wxWidgets was built in DEBUG mode]) _WX_SELECTEDCONFIG_CHECKFOR([STATIC], [static], [if wxWidgets was built in STATIC mode]) dnl init WX_SHARED from WX_STATIC if test "$WX_STATIC" != "0"; then WX_SHARED=0 else WX_SHARED=1 fi AC_SUBST(WX_UNICODE) AC_SUBST(WX_DEBUG) AC_SUBST(WX_SHARED) dnl detect the WX_PORT to use if test "$TOOLKIT" = "auto" ; then dnl The user does not have particular preferences for this option; dnl so we will detect the wxWidgets relative build setting and use it AC_MSG_CHECKING([which wxWidgets toolkit was selected]) WX_GTKPORT1=$(expr "$WX_SELECTEDCONFIG" : ".*gtk1.*") WX_GTKPORT2=$(expr "$WX_SELECTEDCONFIG" : ".*gtk2.*") WX_MSWPORT=$(expr "$WX_SELECTEDCONFIG" : ".*msw.*") WX_MOTIFPORT=$(expr "$WX_SELECTEDCONFIG" : ".*motif.*") WX_MACPORT=$(expr "$WX_SELECTEDCONFIG" : ".*mac.*") WX_X11PORT=$(expr "$WX_SELECTEDCONFIG" : ".*x11.*") WX_MGLPORT=$(expr "$WX_SELECTEDCONFIG" : ".*mgl.*") WX_DFBPORT=$(expr "$WX_SELECTEDCONFIG" : ".*dfb.*") WX_BASEPORT=$(expr "$WX_SELECTEDCONFIG" : ".*base.*") WX_COCOAPORT=$(expr "$WX_SELECTEDCONFIG" : ".*cocoa.*") WX_OSXCOCOAPORT=$(expr "$WX_SELECTEDCONFIG" : ".*osx_cocoa.*") WX_PORT="unknown" if test "$WX_GTKPORT1" != "0"; then WX_PORT="gtk1"; fi if test "$WX_GTKPORT2" != "0"; then WX_PORT="gtk2"; fi if test "$WX_MSWPORT" != "0"; then WX_PORT="msw"; fi if test "$WX_MOTIFPORT" != "0"; then WX_PORT="motif"; fi if test "$WX_MACPORT" != "0"; then WX_PORT="mac"; fi if test "$WX_X11PORT" != "0"; then WX_PORT="x11"; fi if test "$WX_MGLPORT" != "0"; then WX_PORT="mgl"; fi if test "$WX_DFBPORT" != "0"; then WX_PORT="dfb"; fi if test "$WX_BASEPORT" != "0"; then WX_PORT="base"; fi if test "$WX_COCOAPORT" != "0"; then WX_PORT="cocoa"; fi if test "$WX_OSXCOCOAPORT" != "0"; then WX_PORT="osx_cocoa"; fi dnl check at least one of the WX_*PORT has been set ! if test "$WX_PORT" = "unknown" ; then AC_MSG_ERROR([ Cannot detect the currently installed wxWidgets port ! Please check your 'wx-config --cxxflags'... ]) fi AC_MSG_RESULT([$WX_PORT]) else dnl Use the setting given by the user if test -n "$TOOLKIT" ; then WX_PORT=$TOOLKIT else dnl try with PORT WX_PORT=$PORT fi fi AC_SUBST(WX_PORT) if test "$WX_DEBUG_CONFIGURE" = "1"; then echo "[[dbg]] Values of all WX_* options after final detection:" echo "[[dbg]] WX_DEBUG: $WX_DEBUG" echo "[[dbg]] WX_UNICODE: $WX_UNICODE" echo "[[dbg]] WX_SHARED: $WX_SHARED" echo "[[dbg]] WX_VERSION: $WX_VERSION" echo "[[dbg]] WX_PORT: $WX_PORT" fi dnl Avoid problem described in the WX_STANDARD_OPTIONS which happens when dnl the user gives the options: dnl ./configure --enable-shared --without-wxshared dnl or just do dnl ./configure --enable-shared dnl but there is only a static build of wxWidgets available. if test "$WX_SHARED" = "0" -a "$SHARED" = "1"; then AC_MSG_ERROR([ Cannot build shared library against a static build of wxWidgets ! This error happens because the wxWidgets build which was selected has been detected as static while you asked to build $PACKAGE_NAME as shared library and this is not possible. Use the '--disable-shared' option to build $PACKAGE_NAME as static library or '--with-wxshared' to use wxWidgets as shared library. ]) fi dnl now we can finally update the DEBUG,UNICODE,SHARED options dnl to their final values if they were set to 'auto' if test "$DEBUG" = "auto"; then DEBUG=$WX_DEBUG dnl in case user wants a BUILD=debug/release var... if test "$DEBUG" = "1"; then BUILD="debug" elif test "$DEBUG" = ""; then BUILD="release" fi fi if test "$UNICODE" = "auto"; then UNICODE=$WX_UNICODE fi if test "$SHARED" = "auto"; then SHARED=$WX_SHARED fi if test "$TOOLKIT" = "auto"; then TOOLKIT=$WX_PORT fi ]) dnl --------------------------------------------------------------------------- dnl WX_BOOLOPT_SUMMARY([name of the boolean variable to show summary for], dnl [what to print when var is 1], dnl [what to print when var is 0]) dnl dnl Prints $2 when variable $1 == 1 and prints $3 when variable $1 == 0. dnl This macro mainly exists just to make configure.ac scripts more readable. dnl dnl NOTE: you need to use the [" my message"] syntax for 2nd and 3rd arguments dnl if you want that m4 avoid to throw away the spaces prefixed to the dnl argument value. dnl --------------------------------------------------------------------------- AC_DEFUN([WX_BOOLOPT_SUMMARY], [ if test "x$$1" = "x1" ; then echo $2 elif test "x$$1" = "x0" ; then echo $3 else echo "$1 is $$1" fi ]) dnl --------------------------------------------------------------------------- dnl WX_STANDARD_OPTIONS_SUMMARY_MSG dnl dnl Shows a summary message to the user about the WX_* variable contents. dnl This macro is used typically at the end of the configure script. dnl --------------------------------------------------------------------------- AC_DEFUN([WX_STANDARD_OPTIONS_SUMMARY_MSG], [ echo echo " The wxWidgets build which will be used by $PACKAGE_NAME $PACKAGE_VERSION" echo " has the following settings:" WX_BOOLOPT_SUMMARY([WX_DEBUG], [" - DEBUG build"], [" - RELEASE build"]) WX_BOOLOPT_SUMMARY([WX_UNICODE], [" - UNICODE mode"], [" - ANSI mode"]) WX_BOOLOPT_SUMMARY([WX_SHARED], [" - SHARED mode"], [" - STATIC mode"]) echo " - VERSION: $WX_VERSION_FULL" echo " - PORT: $WX_PORT" ]) dnl --------------------------------------------------------------------------- dnl WX_STANDARD_OPTIONS_SUMMARY_MSG_BEGIN, WX_STANDARD_OPTIONS_SUMMARY_MSG_END dnl dnl Like WX_STANDARD_OPTIONS_SUMMARY_MSG macro but these two macros also gives info dnl about the configuration of the package which used the wxpresets. dnl dnl Typical usage: dnl WX_STANDARD_OPTIONS_SUMMARY_MSG_BEGIN dnl echo " - Package setting 1: $SETTING1" dnl echo " - Package setting 2: $SETTING1" dnl ... dnl WX_STANDARD_OPTIONS_SUMMARY_MSG_END dnl dnl --------------------------------------------------------------------------- AC_DEFUN([WX_STANDARD_OPTIONS_SUMMARY_MSG_BEGIN], [ echo echo " ----------------------------------------------------------------" echo " Configuration for $PACKAGE_NAME $PACKAGE_VERSION successfully completed." echo " Summary of main configuration settings for $PACKAGE_NAME:" WX_BOOLOPT_SUMMARY([DEBUG], [" - DEBUG build"], [" - RELEASE build"]) WX_BOOLOPT_SUMMARY([UNICODE], [" - UNICODE mode"], [" - ANSI mode"]) WX_BOOLOPT_SUMMARY([SHARED], [" - SHARED mode"], [" - STATIC mode"]) ]) AC_DEFUN([WX_STANDARD_OPTIONS_SUMMARY_MSG_END], [ WX_STANDARD_OPTIONS_SUMMARY_MSG echo echo " Now, just run make." echo " ----------------------------------------------------------------" echo ]) dnl --------------------------------------------------------------------------- dnl Deprecated macro wrappers dnl --------------------------------------------------------------------------- AC_DEFUN([AM_OPTIONS_WXCONFIG], [WX_CONFIG_OPTIONS]) AC_DEFUN([AM_PATH_WXCONFIG], [ WX_CONFIG_CHECK([$1],[$2],[$3],[$4],[$5]) ]) amule_2.3.1+git20151120.0023527bc2.orig/m4/zlib.m40000644000175000017500000001131212611472361017223 0ustar morphmorph# -*- Autoconf -*- # This file is part of the aMule Project. # # Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) # # Any parts of this program derived from the xMule, lMule or eMule project, # or contributed by third-party developers are copyrighted by their # respective authors. # # 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, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA # dnl ---------------------------------------------------- dnl MULE_CHECK_ZLIB([MIN_ZLIB_VERSION = 1.1.4], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) dnl dnl check if zlib is on the system and is at least MIN_ZLIB_VERSION dnl dnl Add support for --with-zlib command-line parameter. dnl PREFIX may be a directory prefix where zlib is installed, e.g. /usr/local dnl or may be one of the following special keywords: dnl sys - use system zlib dnl dnl Will set the output variables: dnl ZLIB_CPPFLAGS dnl ZLIB_LDFLAGS dnl ZLIB_LIBS dnl ---------------------------------------------------- AC_DEFUN([MULE_CHECK_ZLIB], [dnl m4_define([MIN_ZLIB_VERSION], [m4_ifval([$1], [$1], [1.1.4])])dnl m4_define([zver_max], [m4_bregexp(MIN_ZLIB_VERSION, [\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)], [\1])])dnl m4_define([zver_mid], [m4_bregexp(MIN_ZLIB_VERSION, [\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)], [\2])])dnl m4_define([zver_min], [m4_bregexp(MIN_ZLIB_VERSION, [\([0-9]+\)\.\([0-9]+\)\.\([0-9]+\)], [\3])])dnl AC_ARG_WITH([zlib], AS_HELP_STRING([--with-zlib=PREFIX], [use zlib in PREFIX])) case "${with_zlib:-yes}" in no) $3 ;; yes | sys) ;; *) zlib_prefix="$with_zlib" esac MULE_BACKUP([CPPFLAGS]) MULE_BACKUP([LDFLAGS]) MULE_BACKUP([LIBS]) AS_IF([test -n "$zlib_prefix"], [ ZLIB_CPPFLAGS="-I$zlib_prefix/include" ZLIB_LDFLAGS="-L$zlib_prefix/lib" MULE_APPEND([CPPFLAGS], [$ZLIB_CPPFLAGS]) MULE_APPEND([LDFLAGS], [$ZLIB_LDFLAGS]) ], [ ZLIB_CPPFLAGS= ZLIB_LDFLAGS= ]) ZLIB_LIBS="-lz" MULE_PREPEND([LIBS], [$ZLIB_LIBS]) AC_MSG_CHECKING([for zlib >= $1]) AC_RUN_IFELSE([ AC_LANG_PROGRAM([[ #include #include ]], [dnl Do not use double-quoting here! const char *zver = zlibVersion(); FILE *f=fopen("conftestval", "w"); if (!f) return 1; fprintf(f, "%s", zver[[0]] > 'zver_max' || (zver[[0]] == 'zver_max' && (zver[[2]] > 'zver_mid' || (zver[[2]] == 'zver_mid' && zver[[4]] >= 'zver_min'))) ? "yes" : "no"); fclose(f); f=fopen("conftestver", "w"); if (f) { fprintf(f, "%s", ZLIB_VERSION); fclose(f); } ]) ], [ AS_IF([test -f conftestval], [result=`cat conftestval`], [result=no]) AS_IF([test ${result:-no} = yes], [ AS_IF([test -f conftestver], [ ZLIB_VERSION=`cat conftestver` z_version=" (version $ZLIB_VERSION)" ], [z_version=]) ]) AC_MSG_RESULT([$result$z_version]) ], [ result=no AC_MSG_RESULT([$result]) ], [ result=no z_version= AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include #include ]], [[ printf("\nZLIB_VERSION_START" ZLIB_VERSION "ZLIB_VERSION_END\n\n"); zlibVersion(); ]]) ], [ ZLIB_VERSION=`grep -a '^ZLIB_VERSION_START.*ZLIB_VERSION_END$' conftest$ac_exeext | sed 's/^ZLIB_VERSION_START\(.*\)ZLIB_VERSION_END$/\1/'` cross_zver_max="`echo $ZLIB_VERSION | cut -d. -f1`" cross_zver_mid="`echo $ZLIB_VERSION | cut -d. -f2`" cross_zver_min="`echo $ZLIB_VERSION | cut -d. -f3`" MULE_IF([test "$cross_zver_max" -gt "zver_max"], [result=yes], [test "$cross_zver_max" -eq "zver_max"], [ MULE_IF([test "$cross_zver_mid" -gt "zver_mid"], [result=yes], [test "$cross_zver_mid" -eq "zver_mid"], [MULE_IF([test "$cross_zver_min" -ge "zver_min"], [result=yes])]) ]) AS_IF([test ${result:-no} = yes], [z_version=" (version $ZLIB_VERSION)"]) ]) AC_MSG_RESULT([$result$z_version]) ]) MULE_RESTORE([CPPFLAGS]) MULE_RESTORE([LDFLAGS]) MULE_RESTORE([LIBS]) AS_IF([test ${result:-no} = no], [ ZLIB_CPPFLAGS= ZLIB_LDFLAGS= ZLIB_LIBS= $3 ], [$2]) AC_SUBST([ZLIB_CPPFLAGS])dnl AC_SUBST([ZLIB_LDFLAGS])dnl AC_SUBST([ZLIB_LIBS])dnl m4_undefine([zver_max])dnl m4_undefine([zver_mid])dnl m4_undefine([zver_min])dnl m4_undefine([MIN_ZLIB_VERSION])dnl ]) amule_2.3.1+git20151120.0023527bc2.orig/platforms/0000755000175000017500000000000012611472361017512 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/0000755000175000017500000000000012611472361020604 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/aMule-Xcode/0000755000175000017500000000000012611472361022707 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/aMule-Xcode/English.lproj/0000755000175000017500000000000012611472361025425 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/aMule-Xcode/English.lproj/en0000644000175000017500000000005512611472361025752 0ustar morphmorph/* Localized versions of Info.plist keys */ amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/aMule-Xcode/README BEFORE BUILDING.rtf0000644000175000017500000001215112611472361026462 0ustar morphmorph{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf290 {\fonttbl\f0\fnil\fcharset0 Monaco;\f1\fmodern\fcharset0 Courier;\f2\fnil\fcharset128 KozGoPro-Heavy; } {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f0\fs20 \cf0 This project allows for compilation of aMule in Xcode \ul without\ulnone macports / fink. THIS IS NOT AN EASY PROCESS, so only attempt it if you're familiar with the terminal, and compiling programs there, as wxWidgets and cryptopp are still compiled via the terminal. I hope to automate this process in the future to eliminate that requirement.\ \ Compiling aMule on Xcode is important to automate the build of different configurations, ensure proper compatibility, and allow developers to use the Xcode interface to gdb which is tremendously useful to track and solve bugs. \ \ Current configuration supports i386/ppc build on SDK 10.4 (for Tiger), without country flags or UPnP, using wxWidgets 2.8.x. Other configurations will be added later.\ \ It's important for building that the following steps/requirements are met:\ \ 1) This folder structure is needed for compilation:\ \ \ |\ |-> aMule sources\ |\ |-> wxWidgets-2.8 (or wxWidgets for 2.9+)\ |\ |-> cryptopp (or cryptopp-64bits if you are using Snow Leopard and plan to use wxWidgets 2.9+ and SDK 10.6)\ \ It's essential that the folders are named exactly like shown. If you want to change this, take a look at CFLAGS and link flags in the "aMule" target's properties.\ \ 2) wxWidgets has to be compiled with universal binary support and static library. When using wxWidgets 2.8 on Snow Leopard, it's important that gcc-4.0 is used because gcc-4.2 defaults to 64bits builds, which wxWidgets 2.8.x doesn't support (see {\field{\*\fldinst{HYPERLINK "http://wiki.wxwidgets.org/Development:_wxMac#Building_on_Snow_Leopard_for_Snow_Leopard"}}{\fldrslt http://wiki.wxwidgets.org/Development:_wxMac#Building_on_Snow_Leopard_for_Snow_Leopard}} for more info).\ \ Personally I check out the sources using the following:\ \ \pard\pardeftab720\ql\qnatural \f1\fs24 \cf0 svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_8_BRANCH wxWidgets-2.8\ \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f0\fs20 \cf0 for wxWidgets 2.8, and\ \ \pard\pardeftab720\ql\qnatural \f1\fs24 \cf0 svn checkout http://svn.wxwidgets.org/svn/wx/wxWidgets/ wxWidgets \f0\fs20 \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \cf0 \ for wxWidgets 2.9+, and configure with\ \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f1\fs24 \cf0 ./configure CC=gcc-4.0 CXX=g++-4.0 LD=g++-4.0 --enable-debug --with-macosx-sdk=/Developer/SDKs/MacOSX10.4u.sdk --with-macosx-version-min=10.4 --enable-universal_binary --disable-universal --disable-shared \ \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f0\fs20 \cf0 for wxWidgets 2.8, and\ \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f1\fs24 \cf0 ./configure --enable-unicode --disable-shared --enable-debug --enable-debug_gdb --with-osx_cocoa --with-macosx-version-min=10.6 \f0\fs20 \ \ for wxWidgets 2.9+ on Snow Leopard for SDK 10.6.\ \f1\fs24 \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f0\fs20 \cf0 After that, just type "make" as usual. Do not "make install".\ \ 3) Compiling cryptopp is complicated due to lack of proper support for building on MacOSX, especially for universal binaries. First download a cryptopp release from {\field{\*\fldinst{HYPERLINK "http://www.cryptopp.com/#download"}}{\fldrslt http://www.cryptopp.com/#download}} (latest are at the bottom) and uncompress it to the folder named "cryptopp" or "cryptopp-64bits" as shown in the folder structure above. If you are using wxWidgets 2.9+, then configure and compile as usual. If using wxWidgets 2.8 in Snow Leopard, edit the file named GNUmake and add the following lines at the beginning:\ \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f1\fs24 \cf0 CXXFLAGS = -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4 -DNDEBUG -g -O2\ LDFLAGS = -arch i386 -arch ppc -isysroot /Developer/SDKs/MacOSX10.4u.sdk -mmacosx-version-min=10.4\ CXX=c++-4.0\ CC=gcc-4.0\ \ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f0\fs20 \cf0 Save the file, then type "make" as usual. \f2\b\fs24 Do not "make install" \f0\b0\fs20 .\ \ Once you have finished compiling cryptopp and wxWidgets, and they are in the right folders, this project should compile correctly. If you get errors, please review all the steps before posting in the forum.\ \ Good luck! \f1\fs24 \ \pard\pardeftab720\ql\qnatural \cf0 \ - Kry\ }amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/aMule-Xcode/aMule.xcodeproj/0000755000175000017500000000000012611472361025746 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/aMule-Xcode/aMule.xcodeproj/project.pbxproj0000644000175000017500000044067312611472361031040 0ustar morphmorph// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { /* Begin PBXBuildFile section */ 483344701196275F00D9BE75 /* amule.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4833446F1196275F00D9BE75 /* amule.icns */; }; 4848D2CF1192E83100ED40CC /* GenericClientListCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4848D2CD1192E83100ED40CC /* GenericClientListCtrl.cpp */; }; 4848DC291192E85A00ED40CC /* SharedFilePeersListCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4848D8091192E85900ED40CC /* SharedFilePeersListCtrl.cpp */; }; 4848DC2A1192E85A00ED40CC /* SourceListCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4848D80B1192E85900ED40CC /* SourceListCtrl.cpp */; }; 487911DA11925E61002C086E /* CFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879119511925E61002C086E /* CFile.cpp */; }; 487911DB11925E61002C086E /* DataToText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879119711925E61002C086E /* DataToText.cpp */; }; 487911DC11925E61002C086E /* ED2KLink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879119911925E61002C086E /* ED2KLink.cpp */; }; 487911DD11925E61002C086E /* GapList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879119B11925E61002C086E /* GapList.cpp */; }; 487911DE11925E61002C086E /* MagnetURI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879119D11925E61002C086E /* MagnetURI.cpp */; }; 487911DF11925E61002C086E /* MemFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879119F11925E61002C086E /* MemFile.cpp */; }; 487911E111925E61002C086E /* Packet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911A311925E61002C086E /* Packet.cpp */; }; 487911E211925E61002C086E /* RLE.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911A511925E61002C086E /* RLE.cpp */; }; 487911E311925E61002C086E /* SafeFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911A711925E61002C086E /* SafeFile.cpp */; }; 487911E411925E61002C086E /* SHA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911A911925E61002C086E /* SHA.cpp */; }; 487911E511925E61002C086E /* Tag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911AB11925E61002C086E /* Tag.cpp */; }; 487911E611925E61002C086E /* Timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911AD11925E61002C086E /* Timer.cpp */; }; 4879120211925FDD002C086E /* AsyncDNS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911E811925FDD002C086E /* AsyncDNS.cpp */; }; 4879120311925FDD002C086E /* DeadSourceList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911EA11925FDD002C086E /* DeadSourceList.cpp */; }; 4879120411925FDD002C086E /* FileArea.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911EC11925FDD002C086E /* FileArea.cpp */; }; 4879120511925FDD002C086E /* FileAutoClose.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911EE11925FDD002C086E /* FileAutoClose.cpp */; }; 4879120611925FDD002C086E /* Friend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911F011925FDD002C086E /* Friend.cpp */; }; 4879120711925FDD002C086E /* Parser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911F211925FDD002C086E /* Parser.cpp */; }; 4879120811925FDD002C086E /* PlatformSpecific.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911F411925FDD002C086E /* PlatformSpecific.cpp */; }; 4879120911925FDD002C086E /* RandomFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911F611925FDD002C086E /* RandomFunctions.cpp */; }; 4879120A11925FDD002C086E /* RC4Encrypt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911F811925FDD002C086E /* RC4Encrypt.cpp */; }; 4879120B11925FDD002C086E /* Scanner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911FA11925FDD002C086E /* Scanner.cpp */; }; 4879120C11925FDD002C086E /* StateMachine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911FC11925FDD002C086E /* StateMachine.cpp */; }; 4879120D11925FDD002C086E /* ThreadScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487911FE11925FDD002C086E /* ThreadScheduler.cpp */; }; 4879120E11925FDD002C086E /* UPnPBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879120011925FDD002C086E /* UPnPBase.cpp */; }; 48791C961192601F002C086E /* Entry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487917E11192601E002C086E /* Entry.cpp */; }; 48791C971192601F002C086E /* SearchManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487917E31192601E002C086E /* SearchManager.cpp */; }; 48791D081192607A002C086E /* Contact.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791CD91192607A002C086E /* Contact.cpp */; }; 48791D091192607A002C086E /* RoutingBin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791CDB1192607A002C086E /* RoutingBin.cpp */; }; 48791D0C119260A0002C086E /* UInt128.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D0A119260A0002C086E /* UInt128.cpp */; }; 48791D2A11926A0E002C086E /* BarShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D0E11926A0E002C086E /* BarShader.cpp */; }; 48791D2B11926A0E002C086E /* ChatWnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D1011926A0E002C086E /* ChatWnd.cpp */; }; 48791D2C11926A0E002C086E /* ColorFrameCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D1211926A0E002C086E /* ColorFrameCtrl.cpp */; }; 48791D2D11926A0E002C086E /* CommentDialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D1411926A0E002C086E /* CommentDialog.cpp */; }; 48791D2E11926A0E002C086E /* CommentDialogLst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D1611926A0E002C086E /* CommentDialogLst.cpp */; }; 48791D2F11926A0E002C086E /* EditServerListDlg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D1811926A0E002C086E /* EditServerListDlg.cpp */; }; 48791D3011926A0E002C086E /* FileDetailListCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D1A11926A0E002C086E /* FileDetailListCtrl.cpp */; }; 48791D3111926A0E002C086E /* IP2Country.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D1C11926A0E002C086E /* IP2Country.cpp */; }; 48791D3211926A0E002C086E /* MuleCollection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D1E11926A0E002C086E /* MuleCollection.cpp */; }; 48791D3311926A0E002C086E /* MuleGifCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D2011926A0E002C086E /* MuleGifCtrl.cpp */; }; 48791D3411926A0E002C086E /* MuleListCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D2211926A0E002C086E /* MuleListCtrl.cpp */; }; 48791D3511926A0E002C086E /* MuleNotebook.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D2411926A0E002C086E /* MuleNotebook.cpp */; }; 48791D3611926A0E002C086E /* MuleTextCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D2611926A0E002C086E /* MuleTextCtrl.cpp */; }; 48791D3711926A0E002C086E /* muuli_wdr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D2811926A0E002C086E /* muuli_wdr.cpp */; }; 48791D3B11926A2E002C086E /* listctrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D3911926A2E002C086E /* listctrl.cpp */; }; 48791D7C11926AEE002C086E /* amule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D3D11926AEE002C086E /* amule.cpp */; }; 48791D7D11926AEE002C086E /* BaseClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D3F11926AEE002C086E /* BaseClient.cpp */; }; 48791D7E11926AEE002C086E /* CanceledFileList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D4011926AEE002C086E /* CanceledFileList.cpp */; }; 48791D7F11926AEE002C086E /* ClientCreditsList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D4211926AEE002C086E /* ClientCreditsList.cpp */; }; 48791D8011926AEE002C086E /* ClientList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D4411926AEE002C086E /* ClientList.cpp */; }; 48791D8111926AEE002C086E /* ClientTCPSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D4611926AEE002C086E /* ClientTCPSocket.cpp */; }; 48791D8211926AEE002C086E /* ClientUDPSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D4811926AEE002C086E /* ClientUDPSocket.cpp */; }; 48791D8311926AEE002C086E /* CorruptionBlackBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D4A11926AEE002C086E /* CorruptionBlackBox.cpp */; }; 48791D8411926AEE002C086E /* DownloadClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D4C11926AEE002C086E /* DownloadClient.cpp */; }; 48791D8511926AEE002C086E /* DownloadQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D4D11926AEE002C086E /* DownloadQueue.cpp */; }; 48791D8611926AEE002C086E /* ECSpecialCoreTags.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D4F11926AEE002C086E /* ECSpecialCoreTags.cpp */; }; 48791D8711926AEE002C086E /* EMSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D5011926AEE002C086E /* EMSocket.cpp */; }; 48791D8811926AEE002C086E /* EncryptedDatagramSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D5211926AEE002C086E /* EncryptedDatagramSocket.cpp */; }; 48791D8911926AEE002C086E /* EncryptedStreamSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D5411926AEE002C086E /* EncryptedStreamSocket.cpp */; }; 48791D8A11926AEE002C086E /* ExternalConn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D5611926AEE002C086E /* ExternalConn.cpp */; }; 48791D8B11926AEE002C086E /* FriendList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D5711926AEE002C086E /* FriendList.cpp */; }; 48791D8C11926AEE002C086E /* HTTPDownload.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D5911926AEE002C086E /* HTTPDownload.cpp */; }; 48791D8D11926AEE002C086E /* IPFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D5B11926AEE002C086E /* IPFilter.cpp */; }; 48791D8E11926AEE002C086E /* KnownFileList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D5D11926AEE002C086E /* KnownFileList.cpp */; }; 48791D8F11926AEE002C086E /* ListenSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D5F11926AEE002C086E /* ListenSocket.cpp */; }; 48791D9011926AEE002C086E /* MuleUDPSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D6111926AEE002C086E /* MuleUDPSocket.cpp */; }; 48791D9111926AEE002C086E /* PartFileConvert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D6311926AEE002C086E /* PartFileConvert.cpp */; }; 48791D9211926AEE002C086E /* SearchFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D6511926AEE002C086E /* SearchFile.cpp */; }; 48791D9311926AEE002C086E /* SearchList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D6711926AEE002C086E /* SearchList.cpp */; }; 48791D9411926AEE002C086E /* ServerConnect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D6911926AEE002C086E /* ServerConnect.cpp */; }; 48791D9511926AEE002C086E /* ServerList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D6B11926AEE002C086E /* ServerList.cpp */; }; 48791D9611926AEE002C086E /* ServerSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D6D11926AEE002C086E /* ServerSocket.cpp */; }; 48791D9711926AEE002C086E /* ServerUDPSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D6F11926AEE002C086E /* ServerUDPSocket.cpp */; }; 48791D9811926AEE002C086E /* SharedFileList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D7111926AEE002C086E /* SharedFileList.cpp */; }; 48791D9911926AEE002C086E /* TerminationProcessAmuleweb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D7311926AEE002C086E /* TerminationProcessAmuleweb.cpp */; }; 48791D9A11926AEE002C086E /* ThreadTasks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D7511926AEE002C086E /* ThreadTasks.cpp */; }; 48791D9B11926AEE002C086E /* UploadBandwidthThrottler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D7711926AEE002C086E /* UploadBandwidthThrottler.cpp */; }; 48791D9C11926AEE002C086E /* UploadClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D7911926AEE002C086E /* UploadClient.cpp */; }; 48791D9D11926AEE002C086E /* UploadQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791D7A11926AEE002C086E /* UploadQueue.cpp */; }; 48791E1211926B21002C086E /* KademliaUDPListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791DE311926B21002C086E /* KademliaUDPListener.cpp */; }; 48791E1311926B21002C086E /* PacketTracking.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791DE511926B21002C086E /* PacketTracking.cpp */; }; 48791E3611926B41002C086E /* Indexed.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791E2511926B41002C086E /* Indexed.cpp */; }; 48791E3711926B41002C086E /* Kademlia.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791E2711926B41002C086E /* Kademlia.cpp */; }; 48791E3811926B41002C086E /* Prefs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791E2911926B41002C086E /* Prefs.cpp */; }; 48791E3911926B41002C086E /* Search.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791E2B11926B41002C086E /* Search.cpp */; }; 48791E3A11926B41002C086E /* UDPFirewallTester.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791E2D11926B41002C086E /* UDPFirewallTester.cpp */; }; 48791EA911926B54002C086E /* RoutingZone.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791E7C11926B54002C086E /* RoutingZone.cpp */; }; 48791EDC11926CC7002C086E /* AddFriend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EAB11926CC7002C086E /* AddFriend.cpp */; }; 48791EDD11926CC7002C086E /* amule-gui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EAD11926CC7002C086E /* amule-gui.cpp */; }; 48791EDE11926CC7002C086E /* amuleDlg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EAE11926CC7002C086E /* amuleDlg.cpp */; }; 48791EDF11926CC7002C086E /* CatDialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EB011926CC7002C086E /* CatDialog.cpp */; }; 48791EE011926CC7002C086E /* ChatSelector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EB211926CC7002C086E /* ChatSelector.cpp */; }; 48791EE111926CC7002C086E /* ClientDetailDialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EB411926CC7002C086E /* ClientDetailDialog.cpp */; }; 48791EE311926CC7002C086E /* DirectoryTreeCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EB811926CC7002C086E /* DirectoryTreeCtrl.cpp */; }; 48791EE411926CC7002C086E /* DownloadListCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EBA11926CC7002C086E /* DownloadListCtrl.cpp */; }; 48791EE511926CC7002C086E /* FileDetailDialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EBC11926CC7002C086E /* FileDetailDialog.cpp */; }; 48791EE611926CC7002C086E /* FriendListCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EBE11926CC7002C086E /* FriendListCtrl.cpp */; }; 48791EE711926CC7002C086E /* KadDlg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EC011926CC7002C086E /* KadDlg.cpp */; }; 48791EE811926CC7002C086E /* MuleColour.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EC211926CC7002C086E /* MuleColour.cpp */; }; 48791EE911926CC7002C086E /* MuleTrayIcon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EC411926CC7002C086E /* MuleTrayIcon.cpp */; }; 48791EEA11926CC7002C086E /* OScopeCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EC611926CC7002C086E /* OScopeCtrl.cpp */; }; 48791EEB11926CC7002C086E /* PartFileConvertDlg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EC811926CC7002C086E /* PartFileConvertDlg.cpp */; }; 48791EEC11926CC7002C086E /* PrefsUnifiedDlg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791ECA11926CC7002C086E /* PrefsUnifiedDlg.cpp */; }; 48791EED11926CC7002C086E /* SearchDlg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791ECC11926CC7002C086E /* SearchDlg.cpp */; }; 48791EEE11926CC7002C086E /* SearchListCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791ECE11926CC7002C086E /* SearchListCtrl.cpp */; }; 48791EEF11926CC7002C086E /* ServerListCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791ED011926CC7002C086E /* ServerListCtrl.cpp */; }; 48791EF011926CC7002C086E /* ServerWnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791ED211926CC7002C086E /* ServerWnd.cpp */; }; 48791EF111926CC7002C086E /* SharedFilesCtrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791ED411926CC7002C086E /* SharedFilesCtrl.cpp */; }; 48791EF211926CC7002C086E /* SharedFilesWnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791ED611926CC7002C086E /* SharedFilesWnd.cpp */; }; 48791EF311926CC7002C086E /* StatisticsDlg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791ED811926CC7002C086E /* StatisticsDlg.cpp */; }; 48791EF411926CC7002C086E /* TransferWnd.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791EDA11926CC7002C086E /* TransferWnd.cpp */; }; 48791F8411926F24002C086E /* amuleAppCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F6611926F24002C086E /* amuleAppCommon.cpp */; }; 48791F8511926F24002C086E /* ClientCredits.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F6711926F24002C086E /* ClientCredits.cpp */; }; 48791F8611926F24002C086E /* ECSpecialMuleTags.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F6911926F24002C086E /* ECSpecialMuleTags.cpp */; }; 48791F8711926F24002C086E /* GetTickCount.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F6A11926F24002C086E /* GetTickCount.cpp */; }; 48791F8811926F24002C086E /* GuiEvents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F6C11926F24002C086E /* GuiEvents.cpp */; }; 48791F8911926F24002C086E /* KnownFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F6E11926F24002C086E /* KnownFile.cpp */; }; 48791F8A11926F24002C086E /* Logger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F7011926F24002C086E /* Logger.cpp */; }; 48791F8B11926F24002C086E /* PartFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F7211926F24002C086E /* PartFile.cpp */; }; 48791F8C11926F24002C086E /* Preferences.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F7411926F24002C086E /* Preferences.cpp */; }; 48791F8D11926F24002C086E /* Proxy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F7611926F24002C086E /* Proxy.cpp */; }; 48791F8E11926F24002C086E /* Server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F7811926F24002C086E /* Server.cpp */; }; 48791F8F11926F24002C086E /* SHAHashSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F7A11926F24002C086E /* SHAHashSet.cpp */; }; 48791F9011926F24002C086E /* Statistics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F7C11926F24002C086E /* Statistics.cpp */; }; 48791F9111926F24002C086E /* StatTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F7E11926F24002C086E /* StatTree.cpp */; }; 48791F9211926F24002C086E /* TerminationProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F8011926F24002C086E /* TerminationProcess.cpp */; }; 48791F9311926F24002C086E /* UserEvents.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791F8211926F24002C086E /* UserEvents.cpp */; }; 4879200511926F74002C086E /* NetworkFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791FD611926F74002C086E /* NetworkFunctions.cpp */; }; 4879200611926F74002C086E /* OtherFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48791FD811926F74002C086E /* OtherFunctions.cpp */; }; 487920371192730F002C086E /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 487920361192730F002C086E /* libz.dylib */; }; 4879206A119274FA002C086E /* FileFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879205C119274FA002C086E /* FileFunctions.cpp */; }; 4879206B119274FA002C086E /* Format.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879205E119274FA002C086E /* Format.cpp */; }; 4879206C119274FA002C086E /* MD5Sum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48792060119274FA002C086E /* MD5Sum.cpp */; }; 4879206D119274FA002C086E /* MuleDebug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48792062119274FA002C086E /* MuleDebug.cpp */; }; 4879206E119274FA002C086E /* Path.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48792064119274FA002C086E /* Path.cpp */; }; 4879206F119274FA002C086E /* StringFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48792066119274FA002C086E /* StringFunctions.cpp */; }; 48792070119274FA002C086E /* TextFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48792068119274FA002C086E /* TextFile.cpp */; }; 487921EA11927582002C086E /* ECMuleSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879213211927582002C086E /* ECMuleSocket.cpp */; }; 487921EB11927582002C086E /* ECPacket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879213411927582002C086E /* ECPacket.cpp */; }; 487921EC11927582002C086E /* ECSocket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879213611927582002C086E /* ECSocket.cpp */; }; 487921ED11927582002C086E /* ECSpecialTags.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879213811927582002C086E /* ECSpecialTags.cpp */; }; 487921EE11927582002C086E /* ECTag.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879213A11927582002C086E /* ECTag.cpp */; }; 487921EF11927582002C086E /* RemoteConnect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4879213C11927582002C086E /* RemoteConnect.cpp */; }; 4879238511927626002C086E /* CaptchaDialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487922C811927626002C086E /* CaptchaDialog.cpp */; }; 4879238611927626002C086E /* CaptchaGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 487922CA11927626002C086E /* CaptchaGenerator.cpp */; }; 488D4E8F1192CB880089BF8E /* README BEFORE BUILDING.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 488D4E8E1192CB880089BF8E /* README BEFORE BUILDING.rtf */; }; 48CB3DB611B58AA80051CAF2 /* IPFilterScanner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 48CB3DB411B58AA80051CAF2 /* IPFilterScanner.cpp */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 089C165DFE840E0CC02AAC07 /* en */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = en; path = English.lproj/en; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 256AC3F00F4B6AF500CF3369 /* aMule_Xcode_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aMule_Xcode_Prefix.pch; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 4833446F1196275F00D9BE75 /* amule.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = amule.icns; sourceTree = ""; }; 4848D2CD1192E83100ED40CC /* GenericClientListCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GenericClientListCtrl.cpp; path = ../../../src/GenericClientListCtrl.cpp; sourceTree = SOURCE_ROOT; }; 4848D2CE1192E83100ED40CC /* GenericClientListCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GenericClientListCtrl.h; path = ../../../src/GenericClientListCtrl.h; sourceTree = SOURCE_ROOT; }; 4848D8091192E85900ED40CC /* SharedFilePeersListCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SharedFilePeersListCtrl.cpp; path = ../../../src/SharedFilePeersListCtrl.cpp; sourceTree = SOURCE_ROOT; }; 4848D80A1192E85900ED40CC /* SharedFilePeersListCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SharedFilePeersListCtrl.h; path = ../../../src/SharedFilePeersListCtrl.h; sourceTree = SOURCE_ROOT; }; 4848D80B1192E85900ED40CC /* SourceListCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SourceListCtrl.cpp; path = ../../../src/SourceListCtrl.cpp; sourceTree = SOURCE_ROOT; }; 4848D80C1192E85900ED40CC /* SourceListCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SourceListCtrl.h; path = ../../../src/SourceListCtrl.h; sourceTree = SOURCE_ROOT; }; 48636E2A119E5A4300BC3DB6 /* ArchSpecific.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ArchSpecific.h; path = ../../../src/ArchSpecific.h; sourceTree = SOURCE_ROOT; }; 48636E2B119E5A4300BC3DB6 /* Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Constants.h; path = ../../../src/Constants.h; sourceTree = SOURCE_ROOT; }; 48636E2C119E5A4300BC3DB6 /* CryptoPP_Inc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CryptoPP_Inc.h; path = ../../../src/CryptoPP_Inc.h; sourceTree = SOURCE_ROOT; }; 4879119511925E61002C086E /* CFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CFile.cpp; path = ../../../src/CFile.cpp; sourceTree = SOURCE_ROOT; }; 4879119611925E61002C086E /* CFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CFile.h; path = ../../../src/CFile.h; sourceTree = SOURCE_ROOT; }; 4879119711925E61002C086E /* DataToText.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DataToText.cpp; path = ../../../src/DataToText.cpp; sourceTree = SOURCE_ROOT; }; 4879119811925E61002C086E /* DataToText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DataToText.h; path = ../../../src/DataToText.h; sourceTree = SOURCE_ROOT; }; 4879119911925E61002C086E /* ED2KLink.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ED2KLink.cpp; path = ../../../src/ED2KLink.cpp; sourceTree = SOURCE_ROOT; }; 4879119A11925E61002C086E /* ED2KLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ED2KLink.h; path = ../../../src/ED2KLink.h; sourceTree = SOURCE_ROOT; }; 4879119B11925E61002C086E /* GapList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GapList.cpp; path = ../../../src/GapList.cpp; sourceTree = SOURCE_ROOT; }; 4879119C11925E61002C086E /* GapList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GapList.h; path = ../../../src/GapList.h; sourceTree = SOURCE_ROOT; }; 4879119D11925E61002C086E /* MagnetURI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MagnetURI.cpp; path = ../../../src/MagnetURI.cpp; sourceTree = SOURCE_ROOT; }; 4879119E11925E61002C086E /* MagnetURI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MagnetURI.h; path = ../../../src/MagnetURI.h; sourceTree = SOURCE_ROOT; }; 4879119F11925E61002C086E /* MemFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MemFile.cpp; path = ../../../src/MemFile.cpp; sourceTree = SOURCE_ROOT; }; 487911A011925E61002C086E /* MemFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MemFile.h; path = ../../../src/MemFile.h; sourceTree = SOURCE_ROOT; }; 487911A311925E61002C086E /* Packet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Packet.cpp; path = ../../../src/Packet.cpp; sourceTree = SOURCE_ROOT; }; 487911A411925E61002C086E /* Packet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Packet.h; path = ../../../src/Packet.h; sourceTree = SOURCE_ROOT; }; 487911A511925E61002C086E /* RLE.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RLE.cpp; path = ../../../src/RLE.cpp; sourceTree = SOURCE_ROOT; }; 487911A611925E61002C086E /* RLE.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RLE.h; path = ../../../src/RLE.h; sourceTree = SOURCE_ROOT; }; 487911A711925E61002C086E /* SafeFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SafeFile.cpp; path = ../../../src/SafeFile.cpp; sourceTree = SOURCE_ROOT; }; 487911A811925E61002C086E /* SafeFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SafeFile.h; path = ../../../src/SafeFile.h; sourceTree = SOURCE_ROOT; }; 487911A911925E61002C086E /* SHA.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SHA.cpp; path = ../../../src/SHA.cpp; sourceTree = SOURCE_ROOT; }; 487911AA11925E61002C086E /* SHA.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SHA.h; path = ../../../src/SHA.h; sourceTree = SOURCE_ROOT; }; 487911AB11925E61002C086E /* Tag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Tag.cpp; path = ../../../src/Tag.cpp; sourceTree = SOURCE_ROOT; }; 487911AC11925E61002C086E /* Tag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Tag.h; path = ../../../src/Tag.h; sourceTree = SOURCE_ROOT; }; 487911AD11925E61002C086E /* Timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Timer.cpp; path = ../../../src/Timer.cpp; sourceTree = SOURCE_ROOT; }; 487911AE11925E61002C086E /* Timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Timer.h; path = ../../../src/Timer.h; sourceTree = SOURCE_ROOT; }; 487911E811925FDD002C086E /* AsyncDNS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AsyncDNS.cpp; path = ../../../src/AsyncDNS.cpp; sourceTree = SOURCE_ROOT; }; 487911E911925FDD002C086E /* AsyncDNS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AsyncDNS.h; path = ../../../src/AsyncDNS.h; sourceTree = SOURCE_ROOT; }; 487911EA11925FDD002C086E /* DeadSourceList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DeadSourceList.cpp; path = ../../../src/DeadSourceList.cpp; sourceTree = SOURCE_ROOT; }; 487911EB11925FDD002C086E /* DeadSourceList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DeadSourceList.h; path = ../../../src/DeadSourceList.h; sourceTree = SOURCE_ROOT; }; 487911EC11925FDD002C086E /* FileArea.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileArea.cpp; path = ../../../src/FileArea.cpp; sourceTree = SOURCE_ROOT; }; 487911ED11925FDD002C086E /* FileArea.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileArea.h; path = ../../../src/FileArea.h; sourceTree = SOURCE_ROOT; }; 487911EE11925FDD002C086E /* FileAutoClose.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileAutoClose.cpp; path = ../../../src/FileAutoClose.cpp; sourceTree = SOURCE_ROOT; }; 487911EF11925FDD002C086E /* FileAutoClose.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileAutoClose.h; path = ../../../src/FileAutoClose.h; sourceTree = SOURCE_ROOT; }; 487911F011925FDD002C086E /* Friend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Friend.cpp; path = ../../../src/Friend.cpp; sourceTree = SOURCE_ROOT; }; 487911F111925FDD002C086E /* Friend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Friend.h; path = ../../../src/Friend.h; sourceTree = SOURCE_ROOT; }; 487911F211925FDD002C086E /* Parser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Parser.cpp; path = ../../../src/Parser.cpp; sourceTree = SOURCE_ROOT; }; 487911F311925FDD002C086E /* Parser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = Parser.hpp; path = ../../../src/Parser.hpp; sourceTree = SOURCE_ROOT; }; 487911F411925FDD002C086E /* PlatformSpecific.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlatformSpecific.cpp; path = ../../../src/PlatformSpecific.cpp; sourceTree = SOURCE_ROOT; }; 487911F511925FDD002C086E /* PlatformSpecific.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PlatformSpecific.h; path = ../../../src/PlatformSpecific.h; sourceTree = SOURCE_ROOT; }; 487911F611925FDD002C086E /* RandomFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RandomFunctions.cpp; path = ../../../src/RandomFunctions.cpp; sourceTree = SOURCE_ROOT; }; 487911F711925FDD002C086E /* RandomFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RandomFunctions.h; path = ../../../src/RandomFunctions.h; sourceTree = SOURCE_ROOT; }; 487911F811925FDD002C086E /* RC4Encrypt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RC4Encrypt.cpp; path = ../../../src/RC4Encrypt.cpp; sourceTree = SOURCE_ROOT; }; 487911F911925FDD002C086E /* RC4Encrypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RC4Encrypt.h; path = ../../../src/RC4Encrypt.h; sourceTree = SOURCE_ROOT; }; 487911FA11925FDD002C086E /* Scanner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Scanner.cpp; path = ../../../src/Scanner.cpp; sourceTree = SOURCE_ROOT; }; 487911FB11925FDD002C086E /* Scanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Scanner.h; path = ../../../src/Scanner.h; sourceTree = SOURCE_ROOT; }; 487911FC11925FDD002C086E /* StateMachine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StateMachine.cpp; path = ../../../src/StateMachine.cpp; sourceTree = SOURCE_ROOT; }; 487911FD11925FDD002C086E /* StateMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StateMachine.h; path = ../../../src/StateMachine.h; sourceTree = SOURCE_ROOT; }; 487911FE11925FDD002C086E /* ThreadScheduler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadScheduler.cpp; path = ../../../src/ThreadScheduler.cpp; sourceTree = SOURCE_ROOT; }; 487911FF11925FDD002C086E /* ThreadScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadScheduler.h; path = ../../../src/ThreadScheduler.h; sourceTree = SOURCE_ROOT; }; 4879120011925FDD002C086E /* UPnPBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UPnPBase.cpp; path = ../../../src/UPnPBase.cpp; sourceTree = SOURCE_ROOT; }; 4879120111925FDD002C086E /* UPnPBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UPnPBase.h; path = ../../../src/UPnPBase.h; sourceTree = SOURCE_ROOT; }; 487917E11192601E002C086E /* Entry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Entry.cpp; path = ../../../src/kademlia/kademlia/Entry.cpp; sourceTree = SOURCE_ROOT; }; 487917E21192601E002C086E /* Entry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Entry.h; path = ../../../src/kademlia/kademlia/Entry.h; sourceTree = SOURCE_ROOT; }; 487917E31192601E002C086E /* SearchManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SearchManager.cpp; path = ../../../src/kademlia/kademlia/SearchManager.cpp; sourceTree = SOURCE_ROOT; }; 487917E41192601E002C086E /* SearchManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SearchManager.h; path = ../../../src/kademlia/kademlia/SearchManager.h; sourceTree = SOURCE_ROOT; }; 48791CD91192607A002C086E /* Contact.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Contact.cpp; path = ../../../src/kademlia/routing/Contact.cpp; sourceTree = SOURCE_ROOT; }; 48791CDA1192607A002C086E /* Contact.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Contact.h; path = ../../../src/kademlia/routing/Contact.h; sourceTree = SOURCE_ROOT; }; 48791CDB1192607A002C086E /* RoutingBin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RoutingBin.cpp; path = ../../../src/kademlia/routing/RoutingBin.cpp; sourceTree = SOURCE_ROOT; }; 48791CDC1192607A002C086E /* RoutingBin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RoutingBin.h; path = ../../../src/kademlia/routing/RoutingBin.h; sourceTree = SOURCE_ROOT; }; 48791D0A119260A0002C086E /* UInt128.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UInt128.cpp; path = ../../../src/kademlia/utils/UInt128.cpp; sourceTree = SOURCE_ROOT; }; 48791D0B119260A0002C086E /* UInt128.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UInt128.h; path = ../../../src/kademlia/utils/UInt128.h; sourceTree = SOURCE_ROOT; }; 48791D0E11926A0E002C086E /* BarShader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BarShader.cpp; path = ../../../src/BarShader.cpp; sourceTree = SOURCE_ROOT; }; 48791D0F11926A0E002C086E /* BarShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BarShader.h; path = ../../../src/BarShader.h; sourceTree = SOURCE_ROOT; }; 48791D1011926A0E002C086E /* ChatWnd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ChatWnd.cpp; path = ../../../src/ChatWnd.cpp; sourceTree = SOURCE_ROOT; }; 48791D1111926A0E002C086E /* ChatWnd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ChatWnd.h; path = ../../../src/ChatWnd.h; sourceTree = SOURCE_ROOT; }; 48791D1211926A0E002C086E /* ColorFrameCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ColorFrameCtrl.cpp; path = ../../../src/ColorFrameCtrl.cpp; sourceTree = SOURCE_ROOT; }; 48791D1311926A0E002C086E /* ColorFrameCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ColorFrameCtrl.h; path = ../../../src/ColorFrameCtrl.h; sourceTree = SOURCE_ROOT; }; 48791D1411926A0E002C086E /* CommentDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommentDialog.cpp; path = ../../../src/CommentDialog.cpp; sourceTree = SOURCE_ROOT; }; 48791D1511926A0E002C086E /* CommentDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommentDialog.h; path = ../../../src/CommentDialog.h; sourceTree = SOURCE_ROOT; }; 48791D1611926A0E002C086E /* CommentDialogLst.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommentDialogLst.cpp; path = ../../../src/CommentDialogLst.cpp; sourceTree = SOURCE_ROOT; }; 48791D1711926A0E002C086E /* CommentDialogLst.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommentDialogLst.h; path = ../../../src/CommentDialogLst.h; sourceTree = SOURCE_ROOT; }; 48791D1811926A0E002C086E /* EditServerListDlg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EditServerListDlg.cpp; path = ../../../src/EditServerListDlg.cpp; sourceTree = SOURCE_ROOT; }; 48791D1911926A0E002C086E /* EditServerListDlg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EditServerListDlg.h; path = ../../../src/EditServerListDlg.h; sourceTree = SOURCE_ROOT; }; 48791D1A11926A0E002C086E /* FileDetailListCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileDetailListCtrl.cpp; path = ../../../src/FileDetailListCtrl.cpp; sourceTree = SOURCE_ROOT; }; 48791D1B11926A0E002C086E /* FileDetailListCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileDetailListCtrl.h; path = ../../../src/FileDetailListCtrl.h; sourceTree = SOURCE_ROOT; }; 48791D1C11926A0E002C086E /* IP2Country.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IP2Country.cpp; path = ../../../src/IP2Country.cpp; sourceTree = SOURCE_ROOT; }; 48791D1D11926A0E002C086E /* IP2Country.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IP2Country.h; path = ../../../src/IP2Country.h; sourceTree = SOURCE_ROOT; }; 48791D1E11926A0E002C086E /* MuleCollection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MuleCollection.cpp; path = ../../../src/MuleCollection.cpp; sourceTree = SOURCE_ROOT; }; 48791D1F11926A0E002C086E /* MuleCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MuleCollection.h; path = ../../../src/MuleCollection.h; sourceTree = SOURCE_ROOT; }; 48791D2011926A0E002C086E /* MuleGifCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MuleGifCtrl.cpp; path = ../../../src/MuleGifCtrl.cpp; sourceTree = SOURCE_ROOT; }; 48791D2111926A0E002C086E /* MuleGifCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MuleGifCtrl.h; path = ../../../src/MuleGifCtrl.h; sourceTree = SOURCE_ROOT; }; 48791D2211926A0E002C086E /* MuleListCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MuleListCtrl.cpp; path = ../../../src/MuleListCtrl.cpp; sourceTree = SOURCE_ROOT; }; 48791D2311926A0E002C086E /* MuleListCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MuleListCtrl.h; path = ../../../src/MuleListCtrl.h; sourceTree = SOURCE_ROOT; }; 48791D2411926A0E002C086E /* MuleNotebook.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MuleNotebook.cpp; path = ../../../src/MuleNotebook.cpp; sourceTree = SOURCE_ROOT; }; 48791D2511926A0E002C086E /* MuleNotebook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MuleNotebook.h; path = ../../../src/MuleNotebook.h; sourceTree = SOURCE_ROOT; }; 48791D2611926A0E002C086E /* MuleTextCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MuleTextCtrl.cpp; path = ../../../src/MuleTextCtrl.cpp; sourceTree = SOURCE_ROOT; }; 48791D2711926A0E002C086E /* MuleTextCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MuleTextCtrl.h; path = ../../../src/MuleTextCtrl.h; sourceTree = SOURCE_ROOT; }; 48791D2811926A0E002C086E /* muuli_wdr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = muuli_wdr.cpp; path = ../../../src/muuli_wdr.cpp; sourceTree = SOURCE_ROOT; }; 48791D2911926A0E002C086E /* muuli_wdr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = muuli_wdr.h; path = ../../../src/muuli_wdr.h; sourceTree = SOURCE_ROOT; }; 48791D3911926A2E002C086E /* listctrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = listctrl.cpp; path = ../../../src/extern/wxWidgets/listctrl.cpp; sourceTree = SOURCE_ROOT; }; 48791D3A11926A2E002C086E /* listctrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = listctrl.h; path = ../../../src/extern/wxWidgets/listctrl.h; sourceTree = SOURCE_ROOT; }; 48791D3D11926AEE002C086E /* amule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = amule.cpp; path = ../../../src/amule.cpp; sourceTree = SOURCE_ROOT; }; 48791D3E11926AEE002C086E /* amule.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = amule.h; path = ../../../src/amule.h; sourceTree = SOURCE_ROOT; }; 48791D3F11926AEE002C086E /* BaseClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BaseClient.cpp; path = ../../../src/BaseClient.cpp; sourceTree = SOURCE_ROOT; }; 48791D4011926AEE002C086E /* CanceledFileList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CanceledFileList.cpp; path = ../../../src/CanceledFileList.cpp; sourceTree = SOURCE_ROOT; }; 48791D4111926AEE002C086E /* CanceledFileList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CanceledFileList.h; path = ../../../src/CanceledFileList.h; sourceTree = SOURCE_ROOT; }; 48791D4211926AEE002C086E /* ClientCreditsList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClientCreditsList.cpp; path = ../../../src/ClientCreditsList.cpp; sourceTree = SOURCE_ROOT; }; 48791D4311926AEE002C086E /* ClientCreditsList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClientCreditsList.h; path = ../../../src/ClientCreditsList.h; sourceTree = SOURCE_ROOT; }; 48791D4411926AEE002C086E /* ClientList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClientList.cpp; path = ../../../src/ClientList.cpp; sourceTree = SOURCE_ROOT; }; 48791D4511926AEE002C086E /* ClientList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClientList.h; path = ../../../src/ClientList.h; sourceTree = SOURCE_ROOT; }; 48791D4611926AEE002C086E /* ClientTCPSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClientTCPSocket.cpp; path = ../../../src/ClientTCPSocket.cpp; sourceTree = SOURCE_ROOT; }; 48791D4711926AEE002C086E /* ClientTCPSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClientTCPSocket.h; path = ../../../src/ClientTCPSocket.h; sourceTree = SOURCE_ROOT; }; 48791D4811926AEE002C086E /* ClientUDPSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClientUDPSocket.cpp; path = ../../../src/ClientUDPSocket.cpp; sourceTree = SOURCE_ROOT; }; 48791D4911926AEE002C086E /* ClientUDPSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClientUDPSocket.h; path = ../../../src/ClientUDPSocket.h; sourceTree = SOURCE_ROOT; }; 48791D4A11926AEE002C086E /* CorruptionBlackBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CorruptionBlackBox.cpp; path = ../../../src/CorruptionBlackBox.cpp; sourceTree = SOURCE_ROOT; }; 48791D4B11926AEE002C086E /* CorruptionBlackBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CorruptionBlackBox.h; path = ../../../src/CorruptionBlackBox.h; sourceTree = SOURCE_ROOT; }; 48791D4C11926AEE002C086E /* DownloadClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DownloadClient.cpp; path = ../../../src/DownloadClient.cpp; sourceTree = SOURCE_ROOT; }; 48791D4D11926AEE002C086E /* DownloadQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DownloadQueue.cpp; path = ../../../src/DownloadQueue.cpp; sourceTree = SOURCE_ROOT; }; 48791D4E11926AEE002C086E /* DownloadQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DownloadQueue.h; path = ../../../src/DownloadQueue.h; sourceTree = SOURCE_ROOT; }; 48791D4F11926AEE002C086E /* ECSpecialCoreTags.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ECSpecialCoreTags.cpp; path = ../../../src/ECSpecialCoreTags.cpp; sourceTree = SOURCE_ROOT; }; 48791D5011926AEE002C086E /* EMSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EMSocket.cpp; path = ../../../src/EMSocket.cpp; sourceTree = SOURCE_ROOT; }; 48791D5111926AEE002C086E /* EMSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EMSocket.h; path = ../../../src/EMSocket.h; sourceTree = SOURCE_ROOT; }; 48791D5211926AEE002C086E /* EncryptedDatagramSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EncryptedDatagramSocket.cpp; path = ../../../src/EncryptedDatagramSocket.cpp; sourceTree = SOURCE_ROOT; }; 48791D5311926AEE002C086E /* EncryptedDatagramSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EncryptedDatagramSocket.h; path = ../../../src/EncryptedDatagramSocket.h; sourceTree = SOURCE_ROOT; }; 48791D5411926AEE002C086E /* EncryptedStreamSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EncryptedStreamSocket.cpp; path = ../../../src/EncryptedStreamSocket.cpp; sourceTree = SOURCE_ROOT; }; 48791D5511926AEE002C086E /* EncryptedStreamSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = EncryptedStreamSocket.h; path = ../../../src/EncryptedStreamSocket.h; sourceTree = SOURCE_ROOT; }; 48791D5611926AEE002C086E /* ExternalConn.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ExternalConn.cpp; path = ../../../src/ExternalConn.cpp; sourceTree = SOURCE_ROOT; }; 48791D5711926AEE002C086E /* FriendList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FriendList.cpp; path = ../../../src/FriendList.cpp; sourceTree = SOURCE_ROOT; }; 48791D5811926AEE002C086E /* FriendList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FriendList.h; path = ../../../src/FriendList.h; sourceTree = SOURCE_ROOT; }; 48791D5911926AEE002C086E /* HTTPDownload.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HTTPDownload.cpp; path = ../../../src/HTTPDownload.cpp; sourceTree = SOURCE_ROOT; }; 48791D5A11926AEE002C086E /* HTTPDownload.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HTTPDownload.h; path = ../../../src/HTTPDownload.h; sourceTree = SOURCE_ROOT; }; 48791D5B11926AEE002C086E /* IPFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IPFilter.cpp; path = ../../../src/IPFilter.cpp; sourceTree = SOURCE_ROOT; }; 48791D5C11926AEE002C086E /* IPFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IPFilter.h; path = ../../../src/IPFilter.h; sourceTree = SOURCE_ROOT; }; 48791D5D11926AEE002C086E /* KnownFileList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = KnownFileList.cpp; path = ../../../src/KnownFileList.cpp; sourceTree = SOURCE_ROOT; }; 48791D5E11926AEE002C086E /* KnownFileList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KnownFileList.h; path = ../../../src/KnownFileList.h; sourceTree = SOURCE_ROOT; }; 48791D5F11926AEE002C086E /* ListenSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ListenSocket.cpp; path = ../../../src/ListenSocket.cpp; sourceTree = SOURCE_ROOT; }; 48791D6011926AEE002C086E /* ListenSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ListenSocket.h; path = ../../../src/ListenSocket.h; sourceTree = SOURCE_ROOT; }; 48791D6111926AEE002C086E /* MuleUDPSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MuleUDPSocket.cpp; path = ../../../src/MuleUDPSocket.cpp; sourceTree = SOURCE_ROOT; }; 48791D6211926AEE002C086E /* MuleUDPSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MuleUDPSocket.h; path = ../../../src/MuleUDPSocket.h; sourceTree = SOURCE_ROOT; }; 48791D6311926AEE002C086E /* PartFileConvert.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PartFileConvert.cpp; path = ../../../src/PartFileConvert.cpp; sourceTree = SOURCE_ROOT; }; 48791D6411926AEE002C086E /* PartFileConvert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PartFileConvert.h; path = ../../../src/PartFileConvert.h; sourceTree = SOURCE_ROOT; }; 48791D6511926AEE002C086E /* SearchFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SearchFile.cpp; path = ../../../src/SearchFile.cpp; sourceTree = SOURCE_ROOT; }; 48791D6611926AEE002C086E /* SearchFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SearchFile.h; path = ../../../src/SearchFile.h; sourceTree = SOURCE_ROOT; }; 48791D6711926AEE002C086E /* SearchList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SearchList.cpp; path = ../../../src/SearchList.cpp; sourceTree = SOURCE_ROOT; }; 48791D6811926AEE002C086E /* SearchList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SearchList.h; path = ../../../src/SearchList.h; sourceTree = SOURCE_ROOT; }; 48791D6911926AEE002C086E /* ServerConnect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ServerConnect.cpp; path = ../../../src/ServerConnect.cpp; sourceTree = SOURCE_ROOT; }; 48791D6A11926AEE002C086E /* ServerConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ServerConnect.h; path = ../../../src/ServerConnect.h; sourceTree = SOURCE_ROOT; }; 48791D6B11926AEE002C086E /* ServerList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ServerList.cpp; path = ../../../src/ServerList.cpp; sourceTree = SOURCE_ROOT; }; 48791D6C11926AEE002C086E /* ServerList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ServerList.h; path = ../../../src/ServerList.h; sourceTree = SOURCE_ROOT; }; 48791D6D11926AEE002C086E /* ServerSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ServerSocket.cpp; path = ../../../src/ServerSocket.cpp; sourceTree = SOURCE_ROOT; }; 48791D6E11926AEE002C086E /* ServerSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ServerSocket.h; path = ../../../src/ServerSocket.h; sourceTree = SOURCE_ROOT; }; 48791D6F11926AEE002C086E /* ServerUDPSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ServerUDPSocket.cpp; path = ../../../src/ServerUDPSocket.cpp; sourceTree = SOURCE_ROOT; }; 48791D7011926AEE002C086E /* ServerUDPSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ServerUDPSocket.h; path = ../../../src/ServerUDPSocket.h; sourceTree = SOURCE_ROOT; }; 48791D7111926AEE002C086E /* SharedFileList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SharedFileList.cpp; path = ../../../src/SharedFileList.cpp; sourceTree = SOURCE_ROOT; }; 48791D7211926AEE002C086E /* SharedFileList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SharedFileList.h; path = ../../../src/SharedFileList.h; sourceTree = SOURCE_ROOT; }; 48791D7311926AEE002C086E /* TerminationProcessAmuleweb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TerminationProcessAmuleweb.cpp; path = ../../../src/TerminationProcessAmuleweb.cpp; sourceTree = SOURCE_ROOT; }; 48791D7411926AEE002C086E /* TerminationProcessAmuleweb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TerminationProcessAmuleweb.h; path = ../../../src/TerminationProcessAmuleweb.h; sourceTree = SOURCE_ROOT; }; 48791D7511926AEE002C086E /* ThreadTasks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThreadTasks.cpp; path = ../../../src/ThreadTasks.cpp; sourceTree = SOURCE_ROOT; }; 48791D7611926AEE002C086E /* ThreadTasks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThreadTasks.h; path = ../../../src/ThreadTasks.h; sourceTree = SOURCE_ROOT; }; 48791D7711926AEE002C086E /* UploadBandwidthThrottler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UploadBandwidthThrottler.cpp; path = ../../../src/UploadBandwidthThrottler.cpp; sourceTree = SOURCE_ROOT; }; 48791D7811926AEE002C086E /* UploadBandwidthThrottler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UploadBandwidthThrottler.h; path = ../../../src/UploadBandwidthThrottler.h; sourceTree = SOURCE_ROOT; }; 48791D7911926AEE002C086E /* UploadClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UploadClient.cpp; path = ../../../src/UploadClient.cpp; sourceTree = SOURCE_ROOT; }; 48791D7A11926AEE002C086E /* UploadQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UploadQueue.cpp; path = ../../../src/UploadQueue.cpp; sourceTree = SOURCE_ROOT; }; 48791D7B11926AEE002C086E /* UploadQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UploadQueue.h; path = ../../../src/UploadQueue.h; sourceTree = SOURCE_ROOT; }; 48791DE311926B21002C086E /* KademliaUDPListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = KademliaUDPListener.cpp; path = ../../../src/kademlia/net/KademliaUDPListener.cpp; sourceTree = SOURCE_ROOT; }; 48791DE411926B21002C086E /* KademliaUDPListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KademliaUDPListener.h; path = ../../../src/kademlia/net/KademliaUDPListener.h; sourceTree = SOURCE_ROOT; }; 48791DE511926B21002C086E /* PacketTracking.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PacketTracking.cpp; path = ../../../src/kademlia/net/PacketTracking.cpp; sourceTree = SOURCE_ROOT; }; 48791DE611926B21002C086E /* PacketTracking.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PacketTracking.h; path = ../../../src/kademlia/net/PacketTracking.h; sourceTree = SOURCE_ROOT; }; 48791E2511926B41002C086E /* Indexed.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Indexed.cpp; path = ../../../src/kademlia/kademlia/Indexed.cpp; sourceTree = SOURCE_ROOT; }; 48791E2611926B41002C086E /* Indexed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Indexed.h; path = ../../../src/kademlia/kademlia/Indexed.h; sourceTree = SOURCE_ROOT; }; 48791E2711926B41002C086E /* Kademlia.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Kademlia.cpp; path = ../../../src/kademlia/kademlia/Kademlia.cpp; sourceTree = SOURCE_ROOT; }; 48791E2811926B41002C086E /* Kademlia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Kademlia.h; path = ../../../src/kademlia/kademlia/Kademlia.h; sourceTree = SOURCE_ROOT; }; 48791E2911926B41002C086E /* Prefs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Prefs.cpp; path = ../../../src/kademlia/kademlia/Prefs.cpp; sourceTree = SOURCE_ROOT; }; 48791E2A11926B41002C086E /* Prefs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Prefs.h; path = ../../../src/kademlia/kademlia/Prefs.h; sourceTree = SOURCE_ROOT; }; 48791E2B11926B41002C086E /* Search.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Search.cpp; path = ../../../src/kademlia/kademlia/Search.cpp; sourceTree = SOURCE_ROOT; }; 48791E2C11926B41002C086E /* Search.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Search.h; path = ../../../src/kademlia/kademlia/Search.h; sourceTree = SOURCE_ROOT; }; 48791E2D11926B41002C086E /* UDPFirewallTester.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UDPFirewallTester.cpp; path = ../../../src/kademlia/kademlia/UDPFirewallTester.cpp; sourceTree = SOURCE_ROOT; }; 48791E2E11926B41002C086E /* UDPFirewallTester.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UDPFirewallTester.h; path = ../../../src/kademlia/kademlia/UDPFirewallTester.h; sourceTree = SOURCE_ROOT; }; 48791E7C11926B54002C086E /* RoutingZone.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RoutingZone.cpp; path = ../../../src/kademlia/routing/RoutingZone.cpp; sourceTree = SOURCE_ROOT; }; 48791E7D11926B54002C086E /* RoutingZone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RoutingZone.h; path = ../../../src/kademlia/routing/RoutingZone.h; sourceTree = SOURCE_ROOT; }; 48791EAB11926CC7002C086E /* AddFriend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AddFriend.cpp; path = ../../../src/AddFriend.cpp; sourceTree = SOURCE_ROOT; }; 48791EAC11926CC7002C086E /* AddFriend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AddFriend.h; path = ../../../src/AddFriend.h; sourceTree = SOURCE_ROOT; }; 48791EAD11926CC7002C086E /* amule-gui.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "amule-gui.cpp"; path = "../../../src/amule-gui.cpp"; sourceTree = SOURCE_ROOT; }; 48791EAE11926CC7002C086E /* amuleDlg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = amuleDlg.cpp; path = ../../../src/amuleDlg.cpp; sourceTree = SOURCE_ROOT; }; 48791EAF11926CC7002C086E /* amuleDlg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = amuleDlg.h; path = ../../../src/amuleDlg.h; sourceTree = SOURCE_ROOT; }; 48791EB011926CC7002C086E /* CatDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CatDialog.cpp; path = ../../../src/CatDialog.cpp; sourceTree = SOURCE_ROOT; }; 48791EB111926CC7002C086E /* CatDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CatDialog.h; path = ../../../src/CatDialog.h; sourceTree = SOURCE_ROOT; }; 48791EB211926CC7002C086E /* ChatSelector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ChatSelector.cpp; path = ../../../src/ChatSelector.cpp; sourceTree = SOURCE_ROOT; }; 48791EB311926CC7002C086E /* ChatSelector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ChatSelector.h; path = ../../../src/ChatSelector.h; sourceTree = SOURCE_ROOT; }; 48791EB411926CC7002C086E /* ClientDetailDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClientDetailDialog.cpp; path = ../../../src/ClientDetailDialog.cpp; sourceTree = SOURCE_ROOT; }; 48791EB511926CC7002C086E /* ClientDetailDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClientDetailDialog.h; path = ../../../src/ClientDetailDialog.h; sourceTree = SOURCE_ROOT; }; 48791EB811926CC7002C086E /* DirectoryTreeCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DirectoryTreeCtrl.cpp; path = ../../../src/DirectoryTreeCtrl.cpp; sourceTree = SOURCE_ROOT; }; 48791EB911926CC7002C086E /* DirectoryTreeCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DirectoryTreeCtrl.h; path = ../../../src/DirectoryTreeCtrl.h; sourceTree = SOURCE_ROOT; }; 48791EBA11926CC7002C086E /* DownloadListCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DownloadListCtrl.cpp; path = ../../../src/DownloadListCtrl.cpp; sourceTree = SOURCE_ROOT; }; 48791EBB11926CC7002C086E /* DownloadListCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DownloadListCtrl.h; path = ../../../src/DownloadListCtrl.h; sourceTree = SOURCE_ROOT; }; 48791EBC11926CC7002C086E /* FileDetailDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileDetailDialog.cpp; path = ../../../src/FileDetailDialog.cpp; sourceTree = SOURCE_ROOT; }; 48791EBD11926CC7002C086E /* FileDetailDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileDetailDialog.h; path = ../../../src/FileDetailDialog.h; sourceTree = SOURCE_ROOT; }; 48791EBE11926CC7002C086E /* FriendListCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FriendListCtrl.cpp; path = ../../../src/FriendListCtrl.cpp; sourceTree = SOURCE_ROOT; }; 48791EBF11926CC7002C086E /* FriendListCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FriendListCtrl.h; path = ../../../src/FriendListCtrl.h; sourceTree = SOURCE_ROOT; }; 48791EC011926CC7002C086E /* KadDlg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = KadDlg.cpp; path = ../../../src/KadDlg.cpp; sourceTree = SOURCE_ROOT; }; 48791EC111926CC7002C086E /* KadDlg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KadDlg.h; path = ../../../src/KadDlg.h; sourceTree = SOURCE_ROOT; }; 48791EC211926CC7002C086E /* MuleColour.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MuleColour.cpp; path = ../../../src/MuleColour.cpp; sourceTree = SOURCE_ROOT; }; 48791EC311926CC7002C086E /* MuleColour.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MuleColour.h; path = ../../../src/MuleColour.h; sourceTree = SOURCE_ROOT; }; 48791EC411926CC7002C086E /* MuleTrayIcon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MuleTrayIcon.cpp; path = ../../../src/MuleTrayIcon.cpp; sourceTree = SOURCE_ROOT; }; 48791EC511926CC7002C086E /* MuleTrayIcon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MuleTrayIcon.h; path = ../../../src/MuleTrayIcon.h; sourceTree = SOURCE_ROOT; }; 48791EC611926CC7002C086E /* OScopeCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OScopeCtrl.cpp; path = ../../../src/OScopeCtrl.cpp; sourceTree = SOURCE_ROOT; }; 48791EC711926CC7002C086E /* OScopeCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OScopeCtrl.h; path = ../../../src/OScopeCtrl.h; sourceTree = SOURCE_ROOT; }; 48791EC811926CC7002C086E /* PartFileConvertDlg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PartFileConvertDlg.cpp; path = ../../../src/PartFileConvertDlg.cpp; sourceTree = SOURCE_ROOT; }; 48791EC911926CC7002C086E /* PartFileConvertDlg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PartFileConvertDlg.h; path = ../../../src/PartFileConvertDlg.h; sourceTree = SOURCE_ROOT; }; 48791ECA11926CC7002C086E /* PrefsUnifiedDlg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PrefsUnifiedDlg.cpp; path = ../../../src/PrefsUnifiedDlg.cpp; sourceTree = SOURCE_ROOT; }; 48791ECB11926CC7002C086E /* PrefsUnifiedDlg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PrefsUnifiedDlg.h; path = ../../../src/PrefsUnifiedDlg.h; sourceTree = SOURCE_ROOT; }; 48791ECC11926CC7002C086E /* SearchDlg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SearchDlg.cpp; path = ../../../src/SearchDlg.cpp; sourceTree = SOURCE_ROOT; }; 48791ECD11926CC7002C086E /* SearchDlg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SearchDlg.h; path = ../../../src/SearchDlg.h; sourceTree = SOURCE_ROOT; }; 48791ECE11926CC7002C086E /* SearchListCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SearchListCtrl.cpp; path = ../../../src/SearchListCtrl.cpp; sourceTree = SOURCE_ROOT; }; 48791ECF11926CC7002C086E /* SearchListCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SearchListCtrl.h; path = ../../../src/SearchListCtrl.h; sourceTree = SOURCE_ROOT; }; 48791ED011926CC7002C086E /* ServerListCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ServerListCtrl.cpp; path = ../../../src/ServerListCtrl.cpp; sourceTree = SOURCE_ROOT; }; 48791ED111926CC7002C086E /* ServerListCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ServerListCtrl.h; path = ../../../src/ServerListCtrl.h; sourceTree = SOURCE_ROOT; }; 48791ED211926CC7002C086E /* ServerWnd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ServerWnd.cpp; path = ../../../src/ServerWnd.cpp; sourceTree = SOURCE_ROOT; }; 48791ED311926CC7002C086E /* ServerWnd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ServerWnd.h; path = ../../../src/ServerWnd.h; sourceTree = SOURCE_ROOT; }; 48791ED411926CC7002C086E /* SharedFilesCtrl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SharedFilesCtrl.cpp; path = ../../../src/SharedFilesCtrl.cpp; sourceTree = SOURCE_ROOT; }; 48791ED511926CC7002C086E /* SharedFilesCtrl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SharedFilesCtrl.h; path = ../../../src/SharedFilesCtrl.h; sourceTree = SOURCE_ROOT; }; 48791ED611926CC7002C086E /* SharedFilesWnd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SharedFilesWnd.cpp; path = ../../../src/SharedFilesWnd.cpp; sourceTree = SOURCE_ROOT; }; 48791ED711926CC7002C086E /* SharedFilesWnd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SharedFilesWnd.h; path = ../../../src/SharedFilesWnd.h; sourceTree = SOURCE_ROOT; }; 48791ED811926CC7002C086E /* StatisticsDlg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StatisticsDlg.cpp; path = ../../../src/StatisticsDlg.cpp; sourceTree = SOURCE_ROOT; }; 48791ED911926CC7002C086E /* StatisticsDlg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StatisticsDlg.h; path = ../../../src/StatisticsDlg.h; sourceTree = SOURCE_ROOT; }; 48791EDA11926CC7002C086E /* TransferWnd.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TransferWnd.cpp; path = ../../../src/TransferWnd.cpp; sourceTree = SOURCE_ROOT; }; 48791EDB11926CC7002C086E /* TransferWnd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TransferWnd.h; path = ../../../src/TransferWnd.h; sourceTree = SOURCE_ROOT; }; 48791F6611926F24002C086E /* amuleAppCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = amuleAppCommon.cpp; path = ../../../src/amuleAppCommon.cpp; sourceTree = SOURCE_ROOT; }; 48791F6711926F24002C086E /* ClientCredits.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ClientCredits.cpp; path = ../../../src/ClientCredits.cpp; sourceTree = SOURCE_ROOT; }; 48791F6811926F24002C086E /* ClientCredits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ClientCredits.h; path = ../../../src/ClientCredits.h; sourceTree = SOURCE_ROOT; }; 48791F6911926F24002C086E /* ECSpecialMuleTags.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ECSpecialMuleTags.cpp; path = ../../../src/ECSpecialMuleTags.cpp; sourceTree = SOURCE_ROOT; }; 48791F6A11926F24002C086E /* GetTickCount.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GetTickCount.cpp; path = ../../../src/GetTickCount.cpp; sourceTree = SOURCE_ROOT; }; 48791F6B11926F24002C086E /* GetTickCount.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GetTickCount.h; path = ../../../src/GetTickCount.h; sourceTree = SOURCE_ROOT; }; 48791F6C11926F24002C086E /* GuiEvents.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = GuiEvents.cpp; path = ../../../src/GuiEvents.cpp; sourceTree = SOURCE_ROOT; }; 48791F6D11926F24002C086E /* GuiEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GuiEvents.h; path = ../../../src/GuiEvents.h; sourceTree = SOURCE_ROOT; }; 48791F6E11926F24002C086E /* KnownFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = KnownFile.cpp; path = ../../../src/KnownFile.cpp; sourceTree = SOURCE_ROOT; }; 48791F6F11926F24002C086E /* KnownFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KnownFile.h; path = ../../../src/KnownFile.h; sourceTree = SOURCE_ROOT; }; 48791F7011926F24002C086E /* Logger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Logger.cpp; path = ../../../src/Logger.cpp; sourceTree = SOURCE_ROOT; }; 48791F7111926F24002C086E /* Logger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Logger.h; path = ../../../src/Logger.h; sourceTree = SOURCE_ROOT; }; 48791F7211926F24002C086E /* PartFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PartFile.cpp; path = ../../../src/PartFile.cpp; sourceTree = SOURCE_ROOT; }; 48791F7311926F24002C086E /* PartFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PartFile.h; path = ../../../src/PartFile.h; sourceTree = SOURCE_ROOT; }; 48791F7411926F24002C086E /* Preferences.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Preferences.cpp; path = ../../../src/Preferences.cpp; sourceTree = SOURCE_ROOT; }; 48791F7511926F24002C086E /* Preferences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Preferences.h; path = ../../../src/Preferences.h; sourceTree = SOURCE_ROOT; }; 48791F7611926F24002C086E /* Proxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Proxy.cpp; path = ../../../src/Proxy.cpp; sourceTree = SOURCE_ROOT; }; 48791F7711926F24002C086E /* Proxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Proxy.h; path = ../../../src/Proxy.h; sourceTree = SOURCE_ROOT; }; 48791F7811926F24002C086E /* Server.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Server.cpp; path = ../../../src/Server.cpp; sourceTree = SOURCE_ROOT; }; 48791F7911926F24002C086E /* Server.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Server.h; path = ../../../src/Server.h; sourceTree = SOURCE_ROOT; }; 48791F7A11926F24002C086E /* SHAHashSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SHAHashSet.cpp; path = ../../../src/SHAHashSet.cpp; sourceTree = SOURCE_ROOT; }; 48791F7B11926F24002C086E /* SHAHashSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SHAHashSet.h; path = ../../../src/SHAHashSet.h; sourceTree = SOURCE_ROOT; }; 48791F7C11926F24002C086E /* Statistics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Statistics.cpp; path = ../../../src/Statistics.cpp; sourceTree = SOURCE_ROOT; }; 48791F7D11926F24002C086E /* Statistics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Statistics.h; path = ../../../src/Statistics.h; sourceTree = SOURCE_ROOT; }; 48791F7E11926F24002C086E /* StatTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StatTree.cpp; path = ../../../src/StatTree.cpp; sourceTree = SOURCE_ROOT; }; 48791F7F11926F24002C086E /* StatTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StatTree.h; path = ../../../src/StatTree.h; sourceTree = SOURCE_ROOT; }; 48791F8011926F24002C086E /* TerminationProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TerminationProcess.cpp; path = ../../../src/TerminationProcess.cpp; sourceTree = SOURCE_ROOT; }; 48791F8111926F24002C086E /* TerminationProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TerminationProcess.h; path = ../../../src/TerminationProcess.h; sourceTree = SOURCE_ROOT; }; 48791F8211926F24002C086E /* UserEvents.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = UserEvents.cpp; path = ../../../src/UserEvents.cpp; sourceTree = SOURCE_ROOT; }; 48791F8311926F24002C086E /* UserEvents.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UserEvents.h; path = ../../../src/UserEvents.h; sourceTree = SOURCE_ROOT; }; 48791FD611926F74002C086E /* NetworkFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkFunctions.cpp; path = ../../../src/NetworkFunctions.cpp; sourceTree = SOURCE_ROOT; }; 48791FD711926F74002C086E /* NetworkFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkFunctions.h; path = ../../../src/NetworkFunctions.h; sourceTree = SOURCE_ROOT; }; 48791FD811926F74002C086E /* OtherFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = OtherFunctions.cpp; path = ../../../src/OtherFunctions.cpp; sourceTree = SOURCE_ROOT; }; 48791FD911926F74002C086E /* OtherFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OtherFunctions.h; path = ../../../src/OtherFunctions.h; sourceTree = SOURCE_ROOT; }; 487920361192730F002C086E /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 4879205C119274FA002C086E /* FileFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileFunctions.cpp; path = ../../../src/libs/common/FileFunctions.cpp; sourceTree = SOURCE_ROOT; }; 4879205D119274FA002C086E /* FileFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileFunctions.h; path = ../../../src/libs/common/FileFunctions.h; sourceTree = SOURCE_ROOT; }; 4879205E119274FA002C086E /* Format.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Format.cpp; path = ../../../src/libs/common/Format.cpp; sourceTree = SOURCE_ROOT; }; 4879205F119274FA002C086E /* Format.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Format.h; path = ../../../src/libs/common/Format.h; sourceTree = SOURCE_ROOT; }; 48792060119274FA002C086E /* MD5Sum.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MD5Sum.cpp; path = ../../../src/libs/common/MD5Sum.cpp; sourceTree = SOURCE_ROOT; }; 48792061119274FA002C086E /* MD5Sum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MD5Sum.h; path = ../../../src/libs/common/MD5Sum.h; sourceTree = SOURCE_ROOT; }; 48792062119274FA002C086E /* MuleDebug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MuleDebug.cpp; path = ../../../src/libs/common/MuleDebug.cpp; sourceTree = SOURCE_ROOT; }; 48792063119274FA002C086E /* MuleDebug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MuleDebug.h; path = ../../../src/libs/common/MuleDebug.h; sourceTree = SOURCE_ROOT; }; 48792064119274FA002C086E /* Path.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Path.cpp; path = ../../../src/libs/common/Path.cpp; sourceTree = SOURCE_ROOT; }; 48792065119274FA002C086E /* Path.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Path.h; path = ../../../src/libs/common/Path.h; sourceTree = SOURCE_ROOT; }; 48792066119274FA002C086E /* StringFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringFunctions.cpp; path = ../../../src/libs/common/StringFunctions.cpp; sourceTree = SOURCE_ROOT; }; 48792067119274FA002C086E /* StringFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = StringFunctions.h; path = ../../../src/libs/common/StringFunctions.h; sourceTree = SOURCE_ROOT; }; 48792068119274FA002C086E /* TextFile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TextFile.cpp; path = ../../../src/libs/common/TextFile.cpp; sourceTree = SOURCE_ROOT; }; 48792069119274FA002C086E /* TextFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextFile.h; path = ../../../src/libs/common/TextFile.h; sourceTree = SOURCE_ROOT; }; 4879213211927582002C086E /* ECMuleSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ECMuleSocket.cpp; path = ../../../src/libs/ec/cpp/ECMuleSocket.cpp; sourceTree = SOURCE_ROOT; }; 4879213311927582002C086E /* ECMuleSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ECMuleSocket.h; path = ../../../src/libs/ec/cpp/ECMuleSocket.h; sourceTree = SOURCE_ROOT; }; 4879213411927582002C086E /* ECPacket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ECPacket.cpp; path = ../../../src/libs/ec/cpp/ECPacket.cpp; sourceTree = SOURCE_ROOT; }; 4879213511927582002C086E /* ECPacket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ECPacket.h; path = ../../../src/libs/ec/cpp/ECPacket.h; sourceTree = SOURCE_ROOT; }; 4879213611927582002C086E /* ECSocket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ECSocket.cpp; path = ../../../src/libs/ec/cpp/ECSocket.cpp; sourceTree = SOURCE_ROOT; }; 4879213711927582002C086E /* ECSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ECSocket.h; path = ../../../src/libs/ec/cpp/ECSocket.h; sourceTree = SOURCE_ROOT; }; 4879213811927582002C086E /* ECSpecialTags.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ECSpecialTags.cpp; path = ../../../src/libs/ec/cpp/ECSpecialTags.cpp; sourceTree = SOURCE_ROOT; }; 4879213911927582002C086E /* ECSpecialTags.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ECSpecialTags.h; path = ../../../src/libs/ec/cpp/ECSpecialTags.h; sourceTree = SOURCE_ROOT; }; 4879213A11927582002C086E /* ECTag.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ECTag.cpp; path = ../../../src/libs/ec/cpp/ECTag.cpp; sourceTree = SOURCE_ROOT; }; 4879213B11927582002C086E /* ECTag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ECTag.h; path = ../../../src/libs/ec/cpp/ECTag.h; sourceTree = SOURCE_ROOT; }; 4879213C11927582002C086E /* RemoteConnect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RemoteConnect.cpp; path = ../../../src/libs/ec/cpp/RemoteConnect.cpp; sourceTree = SOURCE_ROOT; }; 4879213D11927582002C086E /* RemoteConnect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RemoteConnect.h; path = ../../../src/libs/ec/cpp/RemoteConnect.h; sourceTree = SOURCE_ROOT; }; 487922C811927626002C086E /* CaptchaDialog.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CaptchaDialog.cpp; path = ../../../src/CaptchaDialog.cpp; sourceTree = SOURCE_ROOT; }; 487922C911927626002C086E /* CaptchaDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CaptchaDialog.h; path = ../../../src/CaptchaDialog.h; sourceTree = SOURCE_ROOT; }; 487922CA11927626002C086E /* CaptchaGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CaptchaGenerator.cpp; path = ../../../src/CaptchaGenerator.cpp; sourceTree = SOURCE_ROOT; }; 487922CB11927626002C086E /* CaptchaGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CaptchaGenerator.h; path = ../../../src/CaptchaGenerator.h; sourceTree = SOURCE_ROOT; }; 488D4E8E1192CB880089BF8E /* README BEFORE BUILDING.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = "README BEFORE BUILDING.rtf"; sourceTree = ""; }; 48CB3DB411B58AA80051CAF2 /* IPFilterScanner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IPFilterScanner.cpp; path = ../../../src/IPFilterScanner.cpp; sourceTree = SOURCE_ROOT; }; 48CB3DB511B58AA80051CAF2 /* IPFilterScanner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IPFilterScanner.h; path = ../../../src/IPFilterScanner.h; sourceTree = SOURCE_ROOT; }; 8D1107310486CEB800E47090 /* aMule_Xcode-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "aMule_Xcode-Info.plist"; sourceTree = ""; }; 8D1107320486CEB800E47090 /* aMule.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = aMule.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 8D11072E0486CEB800E47090 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, 487920371192730F002C086E /* libz.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( 48791F9411926F44002C086E /* remote_common_sources */, 48791F6511926D4E002C086E /* common_sources */, 48791EAA11926B8E002C086E /* gui_sources */, 48791D3C11926A40002C086E /* core_sources */, 48791D0D119269A0002C086E /* libmuleappgui */, 487911E711925EA7002C086E /* libmuleappcore */, 4879114A11925DEC002C086E /* libmuleappcommon */, ); name = Classes; sourceTree = ""; }; 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, 487920361192730F002C086E /* libz.dylib */, ); name = "Linked Frameworks"; sourceTree = ""; }; 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { isa = PBXGroup; children = ( 29B97324FDCFA39411CA2CEA /* AppKit.framework */, 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, 29B97325FDCFA39411CA2CEA /* Foundation.framework */, ); name = "Other Frameworks"; sourceTree = ""; }; 19C28FACFE9D520D11CA2CBB /* Products */ = { isa = PBXGroup; children = ( 8D1107320486CEB800E47090 /* aMule.app */, ); name = Products; sourceTree = ""; }; 29B97314FDCFA39411CA2CEA /* aMule-Xcode */ = { isa = PBXGroup; children = ( 488D4E8E1192CB880089BF8E /* README BEFORE BUILDING.rtf */, 48792056119274B2002C086E /* libs */, 080E96DDFE201D6D7F000001 /* Classes */, 29B97315FDCFA39411CA2CEA /* Other Sources */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 19C28FACFE9D520D11CA2CBB /* Products */, ); name = "aMule-Xcode"; sourceTree = ""; }; 29B97315FDCFA39411CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( 48636E2A119E5A4300BC3DB6 /* ArchSpecific.h */, 48636E2B119E5A4300BC3DB6 /* Constants.h */, 48636E2C119E5A4300BC3DB6 /* CryptoPP_Inc.h */, 256AC3F00F4B6AF500CF3369 /* aMule_Xcode_Prefix.pch */, ); name = "Other Sources"; sourceTree = ""; }; 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( 4833446F1196275F00D9BE75 /* amule.icns */, 8D1107310486CEB800E47090 /* aMule_Xcode-Info.plist */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, ); name = Resources; sourceTree = ""; }; 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, ); name = Frameworks; sourceTree = ""; }; 4879114A11925DEC002C086E /* libmuleappcommon */ = { isa = PBXGroup; children = ( 4879119511925E61002C086E /* CFile.cpp */, 4879119611925E61002C086E /* CFile.h */, 4879119711925E61002C086E /* DataToText.cpp */, 4879119811925E61002C086E /* DataToText.h */, 4879119911925E61002C086E /* ED2KLink.cpp */, 4879119A11925E61002C086E /* ED2KLink.h */, 4879119B11925E61002C086E /* GapList.cpp */, 4879119C11925E61002C086E /* GapList.h */, 4879119D11925E61002C086E /* MagnetURI.cpp */, 4879119E11925E61002C086E /* MagnetURI.h */, 4879119F11925E61002C086E /* MemFile.cpp */, 487911A011925E61002C086E /* MemFile.h */, 487911A311925E61002C086E /* Packet.cpp */, 487911A411925E61002C086E /* Packet.h */, 487911A511925E61002C086E /* RLE.cpp */, 487911A611925E61002C086E /* RLE.h */, 487911A711925E61002C086E /* SafeFile.cpp */, 487911A811925E61002C086E /* SafeFile.h */, 487911A911925E61002C086E /* SHA.cpp */, 487911AA11925E61002C086E /* SHA.h */, 487911AB11925E61002C086E /* Tag.cpp */, 487911AC11925E61002C086E /* Tag.h */, 487911AD11925E61002C086E /* Timer.cpp */, 487911AE11925E61002C086E /* Timer.h */, ); name = libmuleappcommon; sourceTree = ""; }; 487911E711925EA7002C086E /* libmuleappcore */ = { isa = PBXGroup; children = ( 29B97317FDCFA39411CA2CEA /* Resources */, 4879120F11925FE2002C086E /* kademlia */, 487911E811925FDD002C086E /* AsyncDNS.cpp */, 487911E911925FDD002C086E /* AsyncDNS.h */, 487911EA11925FDD002C086E /* DeadSourceList.cpp */, 487911EB11925FDD002C086E /* DeadSourceList.h */, 487911EC11925FDD002C086E /* FileArea.cpp */, 487911ED11925FDD002C086E /* FileArea.h */, 487911EE11925FDD002C086E /* FileAutoClose.cpp */, 487911EF11925FDD002C086E /* FileAutoClose.h */, 487911F011925FDD002C086E /* Friend.cpp */, 487911F111925FDD002C086E /* Friend.h */, 487911F211925FDD002C086E /* Parser.cpp */, 487911F311925FDD002C086E /* Parser.hpp */, 487911F411925FDD002C086E /* PlatformSpecific.cpp */, 487911F511925FDD002C086E /* PlatformSpecific.h */, 487911F611925FDD002C086E /* RandomFunctions.cpp */, 487911F711925FDD002C086E /* RandomFunctions.h */, 487911F811925FDD002C086E /* RC4Encrypt.cpp */, 487911F911925FDD002C086E /* RC4Encrypt.h */, 487911FA11925FDD002C086E /* Scanner.cpp */, 487911FB11925FDD002C086E /* Scanner.h */, 487911FC11925FDD002C086E /* StateMachine.cpp */, 487911FD11925FDD002C086E /* StateMachine.h */, 487911FE11925FDD002C086E /* ThreadScheduler.cpp */, 487911FF11925FDD002C086E /* ThreadScheduler.h */, 4879120011925FDD002C086E /* UPnPBase.cpp */, 4879120111925FDD002C086E /* UPnPBase.h */, ); name = libmuleappcore; sourceTree = ""; }; 4879120F11925FE2002C086E /* kademlia */ = { isa = PBXGroup; children = ( 4879121211925FF9002C086E /* utils */, 4879121111925FF4002C086E /* routing */, 4879121011925FEF002C086E /* kademlia */, ); name = kademlia; sourceTree = ""; }; 4879121011925FEF002C086E /* kademlia */ = { isa = PBXGroup; children = ( 487917E11192601E002C086E /* Entry.cpp */, 487917E21192601E002C086E /* Entry.h */, 487917E31192601E002C086E /* SearchManager.cpp */, 487917E41192601E002C086E /* SearchManager.h */, ); name = kademlia; sourceTree = ""; }; 4879121111925FF4002C086E /* routing */ = { isa = PBXGroup; children = ( 48791CD91192607A002C086E /* Contact.cpp */, 48791CDA1192607A002C086E /* Contact.h */, 48791CDB1192607A002C086E /* RoutingBin.cpp */, 48791CDC1192607A002C086E /* RoutingBin.h */, ); name = routing; sourceTree = ""; }; 4879121211925FF9002C086E /* utils */ = { isa = PBXGroup; children = ( 48791D0A119260A0002C086E /* UInt128.cpp */, 48791D0B119260A0002C086E /* UInt128.h */, ); name = utils; sourceTree = ""; }; 48791D0D119269A0002C086E /* libmuleappgui */ = { isa = PBXGroup; children = ( 48791D3811926A11002C086E /* extern */, 48791D0E11926A0E002C086E /* BarShader.cpp */, 48791D0F11926A0E002C086E /* BarShader.h */, 48791D1011926A0E002C086E /* ChatWnd.cpp */, 48791D1111926A0E002C086E /* ChatWnd.h */, 48791D1211926A0E002C086E /* ColorFrameCtrl.cpp */, 48791D1311926A0E002C086E /* ColorFrameCtrl.h */, 48791D1411926A0E002C086E /* CommentDialog.cpp */, 48791D1511926A0E002C086E /* CommentDialog.h */, 48791D1611926A0E002C086E /* CommentDialogLst.cpp */, 48791D1711926A0E002C086E /* CommentDialogLst.h */, 48791D1811926A0E002C086E /* EditServerListDlg.cpp */, 48791D1911926A0E002C086E /* EditServerListDlg.h */, 48791D1A11926A0E002C086E /* FileDetailListCtrl.cpp */, 48791D1B11926A0E002C086E /* FileDetailListCtrl.h */, 48791D1C11926A0E002C086E /* IP2Country.cpp */, 48791D1D11926A0E002C086E /* IP2Country.h */, 48791D1E11926A0E002C086E /* MuleCollection.cpp */, 48791D1F11926A0E002C086E /* MuleCollection.h */, 48791D2011926A0E002C086E /* MuleGifCtrl.cpp */, 48791D2111926A0E002C086E /* MuleGifCtrl.h */, 48791D2211926A0E002C086E /* MuleListCtrl.cpp */, 48791D2311926A0E002C086E /* MuleListCtrl.h */, 48791D2411926A0E002C086E /* MuleNotebook.cpp */, 48791D2511926A0E002C086E /* MuleNotebook.h */, 48791D2611926A0E002C086E /* MuleTextCtrl.cpp */, 48791D2711926A0E002C086E /* MuleTextCtrl.h */, 48791D2811926A0E002C086E /* muuli_wdr.cpp */, 48791D2911926A0E002C086E /* muuli_wdr.h */, ); name = libmuleappgui; sourceTree = ""; }; 48791D3811926A11002C086E /* extern */ = { isa = PBXGroup; children = ( 48791D3911926A2E002C086E /* listctrl.cpp */, 48791D3A11926A2E002C086E /* listctrl.h */, ); name = extern; sourceTree = ""; }; 48791D3C11926A40002C086E /* core_sources */ = { isa = PBXGroup; children = ( 48791D9E11926AF6002C086E /* kademlia */, 48791D3D11926AEE002C086E /* amule.cpp */, 48791D3E11926AEE002C086E /* amule.h */, 48791D3F11926AEE002C086E /* BaseClient.cpp */, 48791D4011926AEE002C086E /* CanceledFileList.cpp */, 48791D4111926AEE002C086E /* CanceledFileList.h */, 48791D4211926AEE002C086E /* ClientCreditsList.cpp */, 48791D4311926AEE002C086E /* ClientCreditsList.h */, 48791D4411926AEE002C086E /* ClientList.cpp */, 48791D4511926AEE002C086E /* ClientList.h */, 48791D4611926AEE002C086E /* ClientTCPSocket.cpp */, 48791D4711926AEE002C086E /* ClientTCPSocket.h */, 48791D4811926AEE002C086E /* ClientUDPSocket.cpp */, 48791D4911926AEE002C086E /* ClientUDPSocket.h */, 48791D4A11926AEE002C086E /* CorruptionBlackBox.cpp */, 48791D4B11926AEE002C086E /* CorruptionBlackBox.h */, 48791D4C11926AEE002C086E /* DownloadClient.cpp */, 48791D4D11926AEE002C086E /* DownloadQueue.cpp */, 48791D4E11926AEE002C086E /* DownloadQueue.h */, 48791D4F11926AEE002C086E /* ECSpecialCoreTags.cpp */, 48791D5011926AEE002C086E /* EMSocket.cpp */, 48791D5111926AEE002C086E /* EMSocket.h */, 48791D5211926AEE002C086E /* EncryptedDatagramSocket.cpp */, 48791D5311926AEE002C086E /* EncryptedDatagramSocket.h */, 48791D5411926AEE002C086E /* EncryptedStreamSocket.cpp */, 48791D5511926AEE002C086E /* EncryptedStreamSocket.h */, 48791D5611926AEE002C086E /* ExternalConn.cpp */, 48791D5711926AEE002C086E /* FriendList.cpp */, 48791D5811926AEE002C086E /* FriendList.h */, 48791D5911926AEE002C086E /* HTTPDownload.cpp */, 48791D5A11926AEE002C086E /* HTTPDownload.h */, 48791D5B11926AEE002C086E /* IPFilter.cpp */, 48791D5C11926AEE002C086E /* IPFilter.h */, 48CB3DB511B58AA80051CAF2 /* IPFilterScanner.h */, 48CB3DB411B58AA80051CAF2 /* IPFilterScanner.cpp */, 48791D5D11926AEE002C086E /* KnownFileList.cpp */, 48791D5E11926AEE002C086E /* KnownFileList.h */, 48791D5F11926AEE002C086E /* ListenSocket.cpp */, 48791D6011926AEE002C086E /* ListenSocket.h */, 48791D6111926AEE002C086E /* MuleUDPSocket.cpp */, 48791D6211926AEE002C086E /* MuleUDPSocket.h */, 48791D6311926AEE002C086E /* PartFileConvert.cpp */, 48791D6411926AEE002C086E /* PartFileConvert.h */, 48791D6511926AEE002C086E /* SearchFile.cpp */, 48791D6611926AEE002C086E /* SearchFile.h */, 48791D6711926AEE002C086E /* SearchList.cpp */, 48791D6811926AEE002C086E /* SearchList.h */, 48791D6911926AEE002C086E /* ServerConnect.cpp */, 48791D6A11926AEE002C086E /* ServerConnect.h */, 48791D6B11926AEE002C086E /* ServerList.cpp */, 48791D6C11926AEE002C086E /* ServerList.h */, 48791D6D11926AEE002C086E /* ServerSocket.cpp */, 48791D6E11926AEE002C086E /* ServerSocket.h */, 48791D6F11926AEE002C086E /* ServerUDPSocket.cpp */, 48791D7011926AEE002C086E /* ServerUDPSocket.h */, 48791D7111926AEE002C086E /* SharedFileList.cpp */, 48791D7211926AEE002C086E /* SharedFileList.h */, 48791D7311926AEE002C086E /* TerminationProcessAmuleweb.cpp */, 48791D7411926AEE002C086E /* TerminationProcessAmuleweb.h */, 48791D7511926AEE002C086E /* ThreadTasks.cpp */, 48791D7611926AEE002C086E /* ThreadTasks.h */, 48791D7711926AEE002C086E /* UploadBandwidthThrottler.cpp */, 48791D7811926AEE002C086E /* UploadBandwidthThrottler.h */, 48791D7911926AEE002C086E /* UploadClient.cpp */, 48791D7A11926AEE002C086E /* UploadQueue.cpp */, 48791D7B11926AEE002C086E /* UploadQueue.h */, ); name = core_sources; sourceTree = ""; }; 48791D9E11926AF6002C086E /* kademlia */ = { isa = PBXGroup; children = ( 48791DA111926B07002C086E /* routing */, 48791DA011926B03002C086E /* kademlia */, 48791D9F11926AFF002C086E /* net */, ); name = kademlia; sourceTree = ""; }; 48791D9F11926AFF002C086E /* net */ = { isa = PBXGroup; children = ( 48791DE311926B21002C086E /* KademliaUDPListener.cpp */, 48791DE411926B21002C086E /* KademliaUDPListener.h */, 48791DE511926B21002C086E /* PacketTracking.cpp */, 48791DE611926B21002C086E /* PacketTracking.h */, ); name = net; sourceTree = ""; }; 48791DA011926B03002C086E /* kademlia */ = { isa = PBXGroup; children = ( 48791E2511926B41002C086E /* Indexed.cpp */, 48791E2611926B41002C086E /* Indexed.h */, 48791E2711926B41002C086E /* Kademlia.cpp */, 48791E2811926B41002C086E /* Kademlia.h */, 48791E2911926B41002C086E /* Prefs.cpp */, 48791E2A11926B41002C086E /* Prefs.h */, 48791E2B11926B41002C086E /* Search.cpp */, 48791E2C11926B41002C086E /* Search.h */, 48791E2D11926B41002C086E /* UDPFirewallTester.cpp */, 48791E2E11926B41002C086E /* UDPFirewallTester.h */, ); name = kademlia; sourceTree = ""; }; 48791DA111926B07002C086E /* routing */ = { isa = PBXGroup; children = ( 48791E7C11926B54002C086E /* RoutingZone.cpp */, 48791E7D11926B54002C086E /* RoutingZone.h */, ); name = routing; sourceTree = ""; }; 48791EAA11926B8E002C086E /* gui_sources */ = { isa = PBXGroup; children = ( 4848D8091192E85900ED40CC /* SharedFilePeersListCtrl.cpp */, 4848D80A1192E85900ED40CC /* SharedFilePeersListCtrl.h */, 4848D80B1192E85900ED40CC /* SourceListCtrl.cpp */, 4848D80C1192E85900ED40CC /* SourceListCtrl.h */, 4848D2CD1192E83100ED40CC /* GenericClientListCtrl.cpp */, 4848D2CE1192E83100ED40CC /* GenericClientListCtrl.h */, 48791EAB11926CC7002C086E /* AddFriend.cpp */, 48791EAC11926CC7002C086E /* AddFriend.h */, 48791EAD11926CC7002C086E /* amule-gui.cpp */, 48791EAE11926CC7002C086E /* amuleDlg.cpp */, 48791EAF11926CC7002C086E /* amuleDlg.h */, 48791EB011926CC7002C086E /* CatDialog.cpp */, 48791EB111926CC7002C086E /* CatDialog.h */, 48791EB211926CC7002C086E /* ChatSelector.cpp */, 48791EB311926CC7002C086E /* ChatSelector.h */, 48791EB411926CC7002C086E /* ClientDetailDialog.cpp */, 48791EB511926CC7002C086E /* ClientDetailDialog.h */, 48791EB811926CC7002C086E /* DirectoryTreeCtrl.cpp */, 48791EB911926CC7002C086E /* DirectoryTreeCtrl.h */, 48791EBA11926CC7002C086E /* DownloadListCtrl.cpp */, 48791EBB11926CC7002C086E /* DownloadListCtrl.h */, 48791EBC11926CC7002C086E /* FileDetailDialog.cpp */, 48791EBD11926CC7002C086E /* FileDetailDialog.h */, 48791EBE11926CC7002C086E /* FriendListCtrl.cpp */, 48791EBF11926CC7002C086E /* FriendListCtrl.h */, 48791EC011926CC7002C086E /* KadDlg.cpp */, 48791EC111926CC7002C086E /* KadDlg.h */, 48791EC211926CC7002C086E /* MuleColour.cpp */, 48791EC311926CC7002C086E /* MuleColour.h */, 48791EC411926CC7002C086E /* MuleTrayIcon.cpp */, 48791EC511926CC7002C086E /* MuleTrayIcon.h */, 48791EC611926CC7002C086E /* OScopeCtrl.cpp */, 48791EC711926CC7002C086E /* OScopeCtrl.h */, 48791EC811926CC7002C086E /* PartFileConvertDlg.cpp */, 48791EC911926CC7002C086E /* PartFileConvertDlg.h */, 48791ECA11926CC7002C086E /* PrefsUnifiedDlg.cpp */, 48791ECB11926CC7002C086E /* PrefsUnifiedDlg.h */, 48791ECC11926CC7002C086E /* SearchDlg.cpp */, 48791ECD11926CC7002C086E /* SearchDlg.h */, 48791ECE11926CC7002C086E /* SearchListCtrl.cpp */, 48791ECF11926CC7002C086E /* SearchListCtrl.h */, 48791ED011926CC7002C086E /* ServerListCtrl.cpp */, 48791ED111926CC7002C086E /* ServerListCtrl.h */, 48791ED211926CC7002C086E /* ServerWnd.cpp */, 48791ED311926CC7002C086E /* ServerWnd.h */, 48791ED411926CC7002C086E /* SharedFilesCtrl.cpp */, 48791ED511926CC7002C086E /* SharedFilesCtrl.h */, 48791ED611926CC7002C086E /* SharedFilesWnd.cpp */, 48791ED711926CC7002C086E /* SharedFilesWnd.h */, 48791ED811926CC7002C086E /* StatisticsDlg.cpp */, 48791ED911926CC7002C086E /* StatisticsDlg.h */, 48791EDA11926CC7002C086E /* TransferWnd.cpp */, 48791EDB11926CC7002C086E /* TransferWnd.h */, ); name = gui_sources; sourceTree = ""; }; 48791F6511926D4E002C086E /* common_sources */ = { isa = PBXGroup; children = ( 487922C811927626002C086E /* CaptchaDialog.cpp */, 487922C911927626002C086E /* CaptchaDialog.h */, 487922CA11927626002C086E /* CaptchaGenerator.cpp */, 487922CB11927626002C086E /* CaptchaGenerator.h */, 48791F6611926F24002C086E /* amuleAppCommon.cpp */, 48791F6711926F24002C086E /* ClientCredits.cpp */, 48791F6811926F24002C086E /* ClientCredits.h */, 48791F6911926F24002C086E /* ECSpecialMuleTags.cpp */, 48791F6A11926F24002C086E /* GetTickCount.cpp */, 48791F6B11926F24002C086E /* GetTickCount.h */, 48791F6C11926F24002C086E /* GuiEvents.cpp */, 48791F6D11926F24002C086E /* GuiEvents.h */, 48791F6E11926F24002C086E /* KnownFile.cpp */, 48791F6F11926F24002C086E /* KnownFile.h */, 48791F7011926F24002C086E /* Logger.cpp */, 48791F7111926F24002C086E /* Logger.h */, 48791F7211926F24002C086E /* PartFile.cpp */, 48791F7311926F24002C086E /* PartFile.h */, 48791F7411926F24002C086E /* Preferences.cpp */, 48791F7511926F24002C086E /* Preferences.h */, 48791F7611926F24002C086E /* Proxy.cpp */, 48791F7711926F24002C086E /* Proxy.h */, 48791F7811926F24002C086E /* Server.cpp */, 48791F7911926F24002C086E /* Server.h */, 48791F7A11926F24002C086E /* SHAHashSet.cpp */, 48791F7B11926F24002C086E /* SHAHashSet.h */, 48791F7C11926F24002C086E /* Statistics.cpp */, 48791F7D11926F24002C086E /* Statistics.h */, 48791F7E11926F24002C086E /* StatTree.cpp */, 48791F7F11926F24002C086E /* StatTree.h */, 48791F8011926F24002C086E /* TerminationProcess.cpp */, 48791F8111926F24002C086E /* TerminationProcess.h */, 48791F8211926F24002C086E /* UserEvents.cpp */, 48791F8311926F24002C086E /* UserEvents.h */, ); name = common_sources; sourceTree = ""; }; 48791F9411926F44002C086E /* remote_common_sources */ = { isa = PBXGroup; children = ( 48791FD611926F74002C086E /* NetworkFunctions.cpp */, 48791FD711926F74002C086E /* NetworkFunctions.h */, 48791FD811926F74002C086E /* OtherFunctions.cpp */, 48791FD911926F74002C086E /* OtherFunctions.h */, ); name = remote_common_sources; sourceTree = ""; }; 48792056119274B2002C086E /* libs */ = { isa = PBXGroup; children = ( 48792058119274BB002C086E /* ec */, 48792057119274B7002C086E /* common */, ); name = libs; sourceTree = ""; }; 48792057119274B7002C086E /* common */ = { isa = PBXGroup; children = ( 4879205C119274FA002C086E /* FileFunctions.cpp */, 4879205D119274FA002C086E /* FileFunctions.h */, 4879205E119274FA002C086E /* Format.cpp */, 4879205F119274FA002C086E /* Format.h */, 48792060119274FA002C086E /* MD5Sum.cpp */, 48792061119274FA002C086E /* MD5Sum.h */, 48792062119274FA002C086E /* MuleDebug.cpp */, 48792063119274FA002C086E /* MuleDebug.h */, 48792064119274FA002C086E /* Path.cpp */, 48792065119274FA002C086E /* Path.h */, 48792066119274FA002C086E /* StringFunctions.cpp */, 48792067119274FA002C086E /* StringFunctions.h */, 48792068119274FA002C086E /* TextFile.cpp */, 48792069119274FA002C086E /* TextFile.h */, ); name = common; sourceTree = ""; }; 48792058119274BB002C086E /* ec */ = { isa = PBXGroup; children = ( 487921F011927592002C086E /* cpp */, ); name = ec; sourceTree = ""; }; 487921F011927592002C086E /* cpp */ = { isa = PBXGroup; children = ( 4879213211927582002C086E /* ECMuleSocket.cpp */, 4879213311927582002C086E /* ECMuleSocket.h */, 4879213411927582002C086E /* ECPacket.cpp */, 4879213511927582002C086E /* ECPacket.h */, 4879213611927582002C086E /* ECSocket.cpp */, 4879213711927582002C086E /* ECSocket.h */, 4879213811927582002C086E /* ECSpecialTags.cpp */, 4879213911927582002C086E /* ECSpecialTags.h */, 4879213A11927582002C086E /* ECTag.cpp */, 4879213B11927582002C086E /* ECTag.h */, 4879213C11927582002C086E /* RemoteConnect.cpp */, 4879213D11927582002C086E /* RemoteConnect.h */, ); name = cpp; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 8D1107260486CEB800E47090 /* aMule */ = { isa = PBXNativeTarget; buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "aMule" */; buildPhases = ( 8D1107290486CEB800E47090 /* Resources */, 8D11072C0486CEB800E47090 /* Sources */, 8D11072E0486CEB800E47090 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = aMule; productInstallPath = "$(HOME)/Applications"; productName = "aMule-Xcode"; productReference = 8D1107320486CEB800E47090 /* aMule.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "aMule" */; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 1; mainGroup = 29B97314FDCFA39411CA2CEA /* aMule-Xcode */; projectDirPath = ""; projectRoots = ( "", .., ); targets = ( 8D1107260486CEB800E47090 /* aMule */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 8D1107290486CEB800E47090 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, 488D4E8F1192CB880089BF8E /* README BEFORE BUILDING.rtf in Resources */, 483344701196275F00D9BE75 /* amule.icns in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 8D11072C0486CEB800E47090 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 487911DA11925E61002C086E /* CFile.cpp in Sources */, 487911DB11925E61002C086E /* DataToText.cpp in Sources */, 487911DC11925E61002C086E /* ED2KLink.cpp in Sources */, 487911DD11925E61002C086E /* GapList.cpp in Sources */, 487911DE11925E61002C086E /* MagnetURI.cpp in Sources */, 487911DF11925E61002C086E /* MemFile.cpp in Sources */, 487911E111925E61002C086E /* Packet.cpp in Sources */, 487911E211925E61002C086E /* RLE.cpp in Sources */, 487911E311925E61002C086E /* SafeFile.cpp in Sources */, 487911E411925E61002C086E /* SHA.cpp in Sources */, 487911E511925E61002C086E /* Tag.cpp in Sources */, 487911E611925E61002C086E /* Timer.cpp in Sources */, 4879120211925FDD002C086E /* AsyncDNS.cpp in Sources */, 4879120311925FDD002C086E /* DeadSourceList.cpp in Sources */, 4879120411925FDD002C086E /* FileArea.cpp in Sources */, 4879120511925FDD002C086E /* FileAutoClose.cpp in Sources */, 4879120611925FDD002C086E /* Friend.cpp in Sources */, 4879120711925FDD002C086E /* Parser.cpp in Sources */, 4879120811925FDD002C086E /* PlatformSpecific.cpp in Sources */, 4879120911925FDD002C086E /* RandomFunctions.cpp in Sources */, 4879120A11925FDD002C086E /* RC4Encrypt.cpp in Sources */, 4879120B11925FDD002C086E /* Scanner.cpp in Sources */, 4879120C11925FDD002C086E /* StateMachine.cpp in Sources */, 4879120D11925FDD002C086E /* ThreadScheduler.cpp in Sources */, 4879120E11925FDD002C086E /* UPnPBase.cpp in Sources */, 48791C961192601F002C086E /* Entry.cpp in Sources */, 48791C971192601F002C086E /* SearchManager.cpp in Sources */, 48791D081192607A002C086E /* Contact.cpp in Sources */, 48791D091192607A002C086E /* RoutingBin.cpp in Sources */, 48791D0C119260A0002C086E /* UInt128.cpp in Sources */, 48791D2A11926A0E002C086E /* BarShader.cpp in Sources */, 48791D2B11926A0E002C086E /* ChatWnd.cpp in Sources */, 48791D2C11926A0E002C086E /* ColorFrameCtrl.cpp in Sources */, 48791D2D11926A0E002C086E /* CommentDialog.cpp in Sources */, 48791D2E11926A0E002C086E /* CommentDialogLst.cpp in Sources */, 48791D2F11926A0E002C086E /* EditServerListDlg.cpp in Sources */, 48791D3011926A0E002C086E /* FileDetailListCtrl.cpp in Sources */, 48791D3111926A0E002C086E /* IP2Country.cpp in Sources */, 48791D3211926A0E002C086E /* MuleCollection.cpp in Sources */, 48791D3311926A0E002C086E /* MuleGifCtrl.cpp in Sources */, 48791D3411926A0E002C086E /* MuleListCtrl.cpp in Sources */, 48791D3511926A0E002C086E /* MuleNotebook.cpp in Sources */, 48791D3611926A0E002C086E /* MuleTextCtrl.cpp in Sources */, 48791D3711926A0E002C086E /* muuli_wdr.cpp in Sources */, 48791D3B11926A2E002C086E /* listctrl.cpp in Sources */, 48791D7C11926AEE002C086E /* amule.cpp in Sources */, 48791D7D11926AEE002C086E /* BaseClient.cpp in Sources */, 48791D7E11926AEE002C086E /* CanceledFileList.cpp in Sources */, 48791D7F11926AEE002C086E /* ClientCreditsList.cpp in Sources */, 48791D8011926AEE002C086E /* ClientList.cpp in Sources */, 48791D8111926AEE002C086E /* ClientTCPSocket.cpp in Sources */, 48791D8211926AEE002C086E /* ClientUDPSocket.cpp in Sources */, 48791D8311926AEE002C086E /* CorruptionBlackBox.cpp in Sources */, 48791D8411926AEE002C086E /* DownloadClient.cpp in Sources */, 48791D8511926AEE002C086E /* DownloadQueue.cpp in Sources */, 48791D8611926AEE002C086E /* ECSpecialCoreTags.cpp in Sources */, 48791D8711926AEE002C086E /* EMSocket.cpp in Sources */, 48791D8811926AEE002C086E /* EncryptedDatagramSocket.cpp in Sources */, 48791D8911926AEE002C086E /* EncryptedStreamSocket.cpp in Sources */, 48791D8A11926AEE002C086E /* ExternalConn.cpp in Sources */, 48791D8B11926AEE002C086E /* FriendList.cpp in Sources */, 48791D8C11926AEE002C086E /* HTTPDownload.cpp in Sources */, 48791D8D11926AEE002C086E /* IPFilter.cpp in Sources */, 48791D8E11926AEE002C086E /* KnownFileList.cpp in Sources */, 48791D8F11926AEE002C086E /* ListenSocket.cpp in Sources */, 48791D9011926AEE002C086E /* MuleUDPSocket.cpp in Sources */, 48791D9111926AEE002C086E /* PartFileConvert.cpp in Sources */, 48791D9211926AEE002C086E /* SearchFile.cpp in Sources */, 48791D9311926AEE002C086E /* SearchList.cpp in Sources */, 48791D9411926AEE002C086E /* ServerConnect.cpp in Sources */, 48791D9511926AEE002C086E /* ServerList.cpp in Sources */, 48791D9611926AEE002C086E /* ServerSocket.cpp in Sources */, 48791D9711926AEE002C086E /* ServerUDPSocket.cpp in Sources */, 48791D9811926AEE002C086E /* SharedFileList.cpp in Sources */, 48791D9911926AEE002C086E /* TerminationProcessAmuleweb.cpp in Sources */, 48791D9A11926AEE002C086E /* ThreadTasks.cpp in Sources */, 48791D9B11926AEE002C086E /* UploadBandwidthThrottler.cpp in Sources */, 48791D9C11926AEE002C086E /* UploadClient.cpp in Sources */, 48791D9D11926AEE002C086E /* UploadQueue.cpp in Sources */, 48791E1211926B21002C086E /* KademliaUDPListener.cpp in Sources */, 48791E1311926B21002C086E /* PacketTracking.cpp in Sources */, 48791E3611926B41002C086E /* Indexed.cpp in Sources */, 48791E3711926B41002C086E /* Kademlia.cpp in Sources */, 48791E3811926B41002C086E /* Prefs.cpp in Sources */, 48791E3911926B41002C086E /* Search.cpp in Sources */, 48791E3A11926B41002C086E /* UDPFirewallTester.cpp in Sources */, 48791EA911926B54002C086E /* RoutingZone.cpp in Sources */, 48791EDC11926CC7002C086E /* AddFriend.cpp in Sources */, 48791EDD11926CC7002C086E /* amule-gui.cpp in Sources */, 48791EDE11926CC7002C086E /* amuleDlg.cpp in Sources */, 48791EDF11926CC7002C086E /* CatDialog.cpp in Sources */, 48791EE011926CC7002C086E /* ChatSelector.cpp in Sources */, 48791EE111926CC7002C086E /* ClientDetailDialog.cpp in Sources */, 48791EE311926CC7002C086E /* DirectoryTreeCtrl.cpp in Sources */, 48791EE411926CC7002C086E /* DownloadListCtrl.cpp in Sources */, 48791EE511926CC7002C086E /* FileDetailDialog.cpp in Sources */, 48791EE611926CC7002C086E /* FriendListCtrl.cpp in Sources */, 48791EE711926CC7002C086E /* KadDlg.cpp in Sources */, 48791EE811926CC7002C086E /* MuleColour.cpp in Sources */, 48791EE911926CC7002C086E /* MuleTrayIcon.cpp in Sources */, 48791EEA11926CC7002C086E /* OScopeCtrl.cpp in Sources */, 48791EEB11926CC7002C086E /* PartFileConvertDlg.cpp in Sources */, 48791EEC11926CC7002C086E /* PrefsUnifiedDlg.cpp in Sources */, 48791EED11926CC7002C086E /* SearchDlg.cpp in Sources */, 48791EEE11926CC7002C086E /* SearchListCtrl.cpp in Sources */, 48791EEF11926CC7002C086E /* ServerListCtrl.cpp in Sources */, 48791EF011926CC7002C086E /* ServerWnd.cpp in Sources */, 48791EF111926CC7002C086E /* SharedFilesCtrl.cpp in Sources */, 48791EF211926CC7002C086E /* SharedFilesWnd.cpp in Sources */, 48791EF311926CC7002C086E /* StatisticsDlg.cpp in Sources */, 48791EF411926CC7002C086E /* TransferWnd.cpp in Sources */, 48791F8411926F24002C086E /* amuleAppCommon.cpp in Sources */, 48791F8511926F24002C086E /* ClientCredits.cpp in Sources */, 48791F8611926F24002C086E /* ECSpecialMuleTags.cpp in Sources */, 48791F8711926F24002C086E /* GetTickCount.cpp in Sources */, 48791F8811926F24002C086E /* GuiEvents.cpp in Sources */, 48791F8911926F24002C086E /* KnownFile.cpp in Sources */, 48791F8A11926F24002C086E /* Logger.cpp in Sources */, 48791F8B11926F24002C086E /* PartFile.cpp in Sources */, 48791F8C11926F24002C086E /* Preferences.cpp in Sources */, 48791F8D11926F24002C086E /* Proxy.cpp in Sources */, 48791F8E11926F24002C086E /* Server.cpp in Sources */, 48791F8F11926F24002C086E /* SHAHashSet.cpp in Sources */, 48791F9011926F24002C086E /* Statistics.cpp in Sources */, 48791F9111926F24002C086E /* StatTree.cpp in Sources */, 48791F9211926F24002C086E /* TerminationProcess.cpp in Sources */, 48791F9311926F24002C086E /* UserEvents.cpp in Sources */, 4879200511926F74002C086E /* NetworkFunctions.cpp in Sources */, 4879200611926F74002C086E /* OtherFunctions.cpp in Sources */, 4879206A119274FA002C086E /* FileFunctions.cpp in Sources */, 4879206B119274FA002C086E /* Format.cpp in Sources */, 4879206C119274FA002C086E /* MD5Sum.cpp in Sources */, 4879206D119274FA002C086E /* MuleDebug.cpp in Sources */, 4879206E119274FA002C086E /* Path.cpp in Sources */, 4879206F119274FA002C086E /* StringFunctions.cpp in Sources */, 48792070119274FA002C086E /* TextFile.cpp in Sources */, 487921EA11927582002C086E /* ECMuleSocket.cpp in Sources */, 487921EB11927582002C086E /* ECPacket.cpp in Sources */, 487921EC11927582002C086E /* ECSocket.cpp in Sources */, 487921ED11927582002C086E /* ECSpecialTags.cpp in Sources */, 487921EE11927582002C086E /* ECTag.cpp in Sources */, 487921EF11927582002C086E /* RemoteConnect.cpp in Sources */, 4879238511927626002C086E /* CaptchaDialog.cpp in Sources */, 4879238611927626002C086E /* CaptchaGenerator.cpp in Sources */, 4848D2CF1192E83100ED40CC /* GenericClientListCtrl.cpp in Sources */, 4848DC291192E85A00ED40CC /* SharedFilePeersListCtrl.cpp in Sources */, 4848DC2A1192E85A00ED40CC /* SourceListCtrl.cpp in Sources */, 48CB3DB611B58AA80051CAF2 /* IPFilterScanner.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( 089C165DFE840E0CC02AAC07 /* en */, ); name = InfoPlist.strings; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ 48636E0A119E4DBA00BC3DB6 /* Development Debug - wxWidgets 2.9+ */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_OPTIMIZATION_LEVEL = 0; GCC_THREADSAFE_STATICS = NO; GCC_VERSION = 4.0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "../../src/**"; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-I../../../..//wxWidgets/lib/wx/include/osx_cocoa-unicode-static-2.9", "-I../../../../wxWidgets/include", "-D_FILE_OFFSET_BITS=64", "-D__WXMAC__", "-D__WXOSX__", "-D__WXOSX_COCOA__", ); OTHER_LDFLAGS = "-L../../../../wxWidgets/lib"; PREBINDING = NO; SDKROOT = macosx10.4; VALID_ARCHS = "$(NATIVE_ARCH_ACTUAL)"; }; name = "Development Debug - wxWidgets 2.9+"; }; 48636E0B119E4DBA00BC3DB6 /* Development Debug - wxWidgets 2.9+ */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = "$(NATIVE_ARCH_ACTUAL)"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = aMule_Xcode_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = ( USE_WX_EXTENSIONS, "CRYPTOPP_INCLUDE_PREFIX=cryptopp-64bits", ); GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = ""; HEADER_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../../../src\"", "\"$(SRCROOT)/../../../src/libs/\"/**", "\"$(SRCROOT)/../../../src/include/\"/**", ); INFOPLIST_FILE = "aMule_Xcode-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../src\"", "\"$(SRCROOT)/../src/libs/\"/**", "\"$(SRCROOT)/../src/libs/ec/cpp\"", ); MACOSX_DEPLOYMENT_TARGET = 10.6; OTHER_CFLAGS = ( "-I../../../../", "-I../../../../wxWidgets/lib/wx/include/osx_cocoa-unicode-static-2.9", "-I../../../../wxWidgets/include", "-D_FILE_OFFSET_BITS=64", "-D__WXMAC__", "-D__WXOSX__", "-D__WXOSX_COCOA__", ); OTHER_LDFLAGS = ( "-L../../../../cryptopp-64bits/", "-lcryptopp", "-L../../../../wxWidgets/lib", "-framework", IOKit, "-framework", Carbon, "-framework", Cocoa, "-framework", AudioToolbox, "-framework", System, "-framework", OpenGL, "-framework", QuickTime, "../../../../wxWidgets/lib/libwx_osx_cocoau_xrc-2.9.a", "../../../../wxWidgets/lib/libwx_osx_cocoau_html-2.9.a", "../../../../wxWidgets/lib/libwx_osx_cocoau_qa-2.9.a", "../../../../wxWidgets/lib/libwx_osx_cocoau_adv-2.9.a", "../../../../wxWidgets/lib/libwx_osx_cocoau_core-2.9.a", "../../../../wxWidgets/lib/libwx_baseu_xml-2.9.a", "../../../../wxWidgets/lib/libwx_baseu_net-2.9.a", "../../../../wxWidgets/lib/libwx_baseu-2.9.a", "-framework", WebKit, "-lexpat", "-lwxregexu-2.9", "-lwxtiff-2.9", "-lwxjpeg-2.9", "-lwxpng-2.9", "-lz", "-lpthread", "-liconv", ); PRODUCT_NAME = aMule; SDKROOT = macosx10.6; VALID_ARCHS = "ppc i386 x86_64"; }; name = "Development Debug - wxWidgets 2.9+"; }; 48636E0C119E4DC400BC3DB6 /* Deployment Debug - wxWidgets 2.9+ */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_OPTIMIZATION_LEVEL = 0; GCC_THREADSAFE_STATICS = NO; GCC_VERSION = 4.0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "../../src/**"; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "-I../../../../wxWidgets-2.8/lib/wx/include/mac-unicode-debug-2.8", "-I../../../../wxWidgets-2.8/include", "-I../../../../wxWidgets-2.8/contrib/include", "-D_FILE_OFFSET_BITS=64", "-D_LARGE_FILES", "-D__WXDEBUG__", "-D__WXMAC__", ); OTHER_LDFLAGS = ( "-L../../../../wxWidgets-2.8/lib", "-framework", IOKit, "-framework", Carbon, "-framework", Cocoa, "-framework", System, "-framework", QuickTime, "-framework", OpenGL, "-framework", AGL, "-lwx_macud_richtext-2.8", "-lwx_macud_aui-2.8", "-lwx_macud_xrc-2.8", "-lwx_macud_qa-2.8", "-lwx_macud_html-2.8", "-lwx_macud_adv-2.8", "-lwx_macud_core-2.8", "-lwx_base_carbonud_xml-2.8", "-lwx_base_carbonud_net-2.8", "-lwx_base_carbonud-2.8", ); PREBINDING = NO; SDKROOT = macosx10.4; VALID_ARCHS = "i386 ppc"; }; name = "Deployment Debug - wxWidgets 2.9+"; }; 48636E0D119E4DC400BC3DB6 /* Deployment Debug - wxWidgets 2.9+ */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = "$(ARCHS_STANDARD_32_BIT)"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = aMule_Xcode_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = USE_WX_EXTENSIONS; GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = 4.0; HEADER_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../../../src\"", "\"$(SRCROOT)/../../../src/libs/\"/**", "\"$(SRCROOT)/../../../src/include/\"/**", ); INFOPLIST_FILE = "aMule_Xcode-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../src\"", "\"$(SRCROOT)/../src/libs/\"/**", "\"$(SRCROOT)/../src/libs/ec/cpp\"", ); MACOSX_DEPLOYMENT_TARGET = 10.4; OTHER_CFLAGS = ( "-I../../../../", "-I../../../../wxWidgets-2.8/lib/wx/include/mac-unicode-debug-static-2.8", "-I../../../../wxWidgets-2.8/include", "-I../../../../wxWidgets-2.8/contrib/include", "-D_FILE_OFFSET_BITS=64", "-D_LARGE_FILES", "-D__WXDEBUG__", "-D__WXMAC__", ); OTHER_LDFLAGS = ( "-L../../../../cryptopp/", "-lcryptopp", "-L../../../../wxWidgets-2.8/lib", "-framework", IOKit, "-framework", Carbon, "-framework", Cocoa, "-framework", System, "-framework", QuickTime, "-framework", OpenGL, "-framework", AGL, "../../../../wxWidgets-2.8/lib/libwx_macud_richtext-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_aui-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_xrc-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_qa-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_html-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_adv-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_core-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud_xml-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud_net-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud-2.8.a", "-framework", WebKit, "-lwxregexud-2.8", "-lwxexpatd-2.8", "-lwxtiffd-2.8", "-lwxjpegd-2.8", "-lwxpngd-2.8", "-lz", "-lpthread", "-liconv", ); PRODUCT_NAME = aMule; SDKROOT = macosx10.4; VALID_ARCHS = "ppc i386"; }; name = "Deployment Debug - wxWidgets 2.9+"; }; 48636E0E119E4DCB00BC3DB6 /* Deployment Release - wxWidgets 2.9+ */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_THREADSAFE_STATICS = NO; GCC_VERSION = 4.0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "../../src/**"; OTHER_CFLAGS = ( "-I../../../../wxWidgets-2.8/lib/wx/include/mac-unicode-debug-2.8", "-I../../../../wxWidgets-2.8/include", "-I../../../../wxWidgets-2.8/contrib/include", "-D_FILE_OFFSET_BITS=64", "-D_LARGE_FILES", "-D__WXDEBUG__", "-D__WXMAC__", ); OTHER_LDFLAGS = ( "-L../../../../wxWidgets-2.8/lib", "-framework", IOKit, "-framework", Carbon, "-framework", Cocoa, "-framework", System, "-framework", QuickTime, "-framework", OpenGL, "-framework", AGL, "-lwx_macud_richtext-2.8", "-lwx_macud_aui-2.8", "-lwx_macud_xrc-2.8", "-lwx_macud_qa-2.8", "-lwx_macud_html-2.8", "-lwx_macud_adv-2.8", "-lwx_macud_core-2.8", "-lwx_base_carbonud_xml-2.8", "-lwx_base_carbonud_net-2.8", "-lwx_base_carbonud-2.8", ); PREBINDING = NO; SDKROOT = macosx10.4; VALID_ARCHS = "i386 ppc"; }; name = "Deployment Release - wxWidgets 2.9+"; }; 48636E0F119E4DCB00BC3DB6 /* Deployment Release - wxWidgets 2.9+ */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = "$(ARCHS_STANDARD_32_BIT)"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = aMule_Xcode_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = USE_WX_EXTENSIONS; GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = 4.0; HEADER_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../../../src\"", "\"$(SRCROOT)/../../../src/libs/\"/**", "\"$(SRCROOT)/../../../src/include/\"/**", ); INFOPLIST_FILE = "aMule_Xcode-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../src\"", "\"$(SRCROOT)/../src/libs/\"/**", "\"$(SRCROOT)/../src/libs/ec/cpp\"", ); MACOSX_DEPLOYMENT_TARGET = 10.4; OTHER_CFLAGS = ( "-I../../../../", "-I../../../../wxWidgets-2.8/lib/wx/include/mac-unicode-debug-static-2.8", "-I../../../../wxWidgets-2.8/include", "-I../../../../wxWidgets-2.8/contrib/include", "-D_FILE_OFFSET_BITS=64", "-D_LARGE_FILES", "-D__WXDEBUG__", "-D__WXMAC__", ); OTHER_LDFLAGS = ( "-L../../../../cryptopp/", "-lcryptopp", "-L../../../../wxWidgets-2.8/lib", "-framework", IOKit, "-framework", Carbon, "-framework", Cocoa, "-framework", System, "-framework", QuickTime, "-framework", OpenGL, "-framework", AGL, "../../../../wxWidgets-2.8/lib/libwx_macud_richtext-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_aui-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_xrc-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_qa-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_html-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_adv-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_core-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud_xml-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud_net-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud-2.8.a", "-framework", WebKit, "-lwxregexud-2.8", "-lwxexpatd-2.8", "-lwxtiffd-2.8", "-lwxjpegd-2.8", "-lwxpngd-2.8", "-lz", "-lpthread", "-liconv", ); PRODUCT_NAME = aMule; SDKROOT = macosx10.4; VALID_ARCHS = "ppc i386"; }; name = "Deployment Release - wxWidgets 2.9+"; }; 4875E6EA1192DCF9004ABCD5 /* Deployment Debug - wxWidgets 2.8 */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_OPTIMIZATION_LEVEL = 0; GCC_THREADSAFE_STATICS = NO; GCC_VERSION = 4.0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "../../src/**"; ONLY_ACTIVE_ARCH = NO; OTHER_CFLAGS = ( "-I../../../../wxWidgets-2.8/lib/wx/include/mac-unicode-debug-2.8", "-I../../../../wxWidgets-2.8/include", "-I../../../../wxWidgets-2.8/contrib/include", "-D_FILE_OFFSET_BITS=64", "-D_LARGE_FILES", "-D__WXDEBUG__", "-D__WXMAC__", ); OTHER_LDFLAGS = ( "-L../../../../wxWidgets-2.8/lib", "-framework", IOKit, "-framework", Carbon, "-framework", Cocoa, "-framework", System, "-framework", QuickTime, "-framework", OpenGL, "-framework", AGL, "-lwx_macud_richtext-2.8", "-lwx_macud_aui-2.8", "-lwx_macud_xrc-2.8", "-lwx_macud_qa-2.8", "-lwx_macud_html-2.8", "-lwx_macud_adv-2.8", "-lwx_macud_core-2.8", "-lwx_base_carbonud_xml-2.8", "-lwx_base_carbonud_net-2.8", "-lwx_base_carbonud-2.8", ); PREBINDING = NO; SDKROOT = macosx10.4; VALID_ARCHS = "i386 ppc"; }; name = "Deployment Debug - wxWidgets 2.8"; }; 4875E6EB1192DCF9004ABCD5 /* Deployment Debug - wxWidgets 2.8 */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = "$(ARCHS_STANDARD_32_BIT)"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = aMule_Xcode_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = USE_WX_EXTENSIONS; GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = 4.0; HEADER_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../../../src\"", "\"$(SRCROOT)/../../../src/libs/\"/**", "\"$(SRCROOT)/../../../src/include/\"/**", ); INFOPLIST_FILE = "aMule_Xcode-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../src\"", "\"$(SRCROOT)/../src/libs/\"/**", "\"$(SRCROOT)/../src/libs/ec/cpp\"", ); MACOSX_DEPLOYMENT_TARGET = 10.4; OTHER_CFLAGS = ( "-I../../../../", "-I../../../../wxWidgets-2.8/lib/wx/include/mac-unicode-debug-static-2.8", "-I../../../../wxWidgets-2.8/include", "-I../../../../wxWidgets-2.8/contrib/include", "-D_FILE_OFFSET_BITS=64", "-D_LARGE_FILES", "-D__WXDEBUG__", "-D__WXMAC__", ); OTHER_LDFLAGS = ( "-L../../../../cryptopp/", "-lcryptopp", "-L../../../../wxWidgets-2.8/lib", "-framework", IOKit, "-framework", Carbon, "-framework", Cocoa, "-framework", System, "-framework", QuickTime, "-framework", OpenGL, "-framework", AGL, "../../../../wxWidgets-2.8/lib/libwx_macud_richtext-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_aui-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_xrc-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_qa-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_html-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_adv-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_core-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud_xml-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud_net-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud-2.8.a", "-framework", WebKit, "-lwxregexud-2.8", "-lwxexpatd-2.8", "-lwxtiffd-2.8", "-lwxjpegd-2.8", "-lwxpngd-2.8", "-lz", "-lpthread", "-liconv", ); PRODUCT_NAME = aMule; SDKROOT = macosx10.4; VALID_ARCHS = "ppc i386"; }; name = "Deployment Debug - wxWidgets 2.8"; }; C01FCF4B08A954540054247B /* Development Debug - wxWidgets 2.8 */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; COPY_PHASE_STRIP = NO; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = aMule_Xcode_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = USE_WX_EXTENSIONS; GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = 4.0; HEADER_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../../../src\"", "\"$(SRCROOT)/../../../src/libs/\"/**", "\"$(SRCROOT)/../../../src/include/\"/**", ); INFOPLIST_FILE = "aMule_Xcode-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../src\"", "\"$(SRCROOT)/../src/libs/\"/**", "\"$(SRCROOT)/../src/libs/ec/cpp\"", ); MACOSX_DEPLOYMENT_TARGET = 10.4; OTHER_CFLAGS = ( "-I../../../../", "-I../../../../wxWidgets-2.8/lib/wx/include/mac-unicode-debug-static-2.8", "-I../../../../wxWidgets-2.8/include", "-I../../../../wxWidgets-2.8/contrib/include", "-D_FILE_OFFSET_BITS=64", "-D_LARGE_FILES", "-D__WXDEBUG__", "-D__WXMAC__", ); OTHER_LDFLAGS = ( "-L../../../../cryptopp/", "-lcryptopp", "-L../../../../wxWidgets-2.8/lib", "-framework", IOKit, "-framework", Carbon, "-framework", Cocoa, "-framework", System, "-framework", QuickTime, "-framework", OpenGL, "-framework", AGL, "../../../../wxWidgets-2.8/lib/libwx_macud_richtext-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_aui-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_xrc-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_qa-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_html-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_adv-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_core-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud_xml-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud_net-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud-2.8.a", "-framework", WebKit, "-lwxregexud-2.8", "-lwxexpatd-2.8", "-lwxtiffd-2.8", "-lwxjpegd-2.8", "-lwxpngd-2.8", "-lz", "-lpthread", "-liconv", ); PRODUCT_NAME = aMule; SDKROOT = macosx10.4; VALID_ARCHS = "ppc i386"; }; name = "Development Debug - wxWidgets 2.8"; }; C01FCF4C08A954540054247B /* Deployment Release - wxWidgets 2.8 */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = "$(ARCHS_STANDARD_32_BIT)"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_INLINES_ARE_PRIVATE_EXTERN = NO; GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = aMule_Xcode_Prefix.pch; GCC_PREPROCESSOR_DEFINITIONS = USE_WX_EXTENSIONS; GCC_SYMBOLS_PRIVATE_EXTERN = NO; GCC_VERSION = 4.0; HEADER_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../../../src\"", "\"$(SRCROOT)/../../../src/libs/\"/**", "\"$(SRCROOT)/../../../src/include/\"/**", ); INFOPLIST_FILE = "aMule_Xcode-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../src\"", "\"$(SRCROOT)/../src/libs/\"/**", "\"$(SRCROOT)/../src/libs/ec/cpp\"", ); MACOSX_DEPLOYMENT_TARGET = 10.4; OTHER_CFLAGS = ( "-I../../../../", "-I../../../../wxWidgets-2.8/lib/wx/include/mac-unicode-debug-static-2.8", "-I../../../../wxWidgets-2.8/include", "-I../../../../wxWidgets-2.8/contrib/include", "-D_FILE_OFFSET_BITS=64", "-D_LARGE_FILES", "-D__WXDEBUG__", "-D__WXMAC__", ); OTHER_LDFLAGS = ( "-L../../../../cryptopp/", "-lcryptopp", "-L../../../../wxWidgets-2.8/lib", "-framework", IOKit, "-framework", Carbon, "-framework", Cocoa, "-framework", System, "-framework", QuickTime, "-framework", OpenGL, "-framework", AGL, "../../../../wxWidgets-2.8/lib/libwx_macud_richtext-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_aui-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_xrc-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_qa-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_html-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_adv-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_macud_core-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud_xml-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud_net-2.8.a", "../../../../wxWidgets-2.8/lib/libwx_base_carbonud-2.8.a", "-framework", WebKit, "-lwxregexud-2.8", "-lwxexpatd-2.8", "-lwxtiffd-2.8", "-lwxjpegd-2.8", "-lwxpngd-2.8", "-lz", "-lpthread", "-liconv", ); PRODUCT_NAME = aMule; SDKROOT = macosx10.4; VALID_ARCHS = "ppc i386"; }; name = "Deployment Release - wxWidgets 2.8"; }; C01FCF4F08A954540054247B /* Development Debug - wxWidgets 2.8 */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_OPTIMIZATION_LEVEL = 0; GCC_THREADSAFE_STATICS = NO; GCC_VERSION = 4.0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "../../src/**"; ONLY_ACTIVE_ARCH = YES; OTHER_CFLAGS = ( "-I../../../../wxWidgets-2.8/lib/wx/include/mac-unicode-debug-2.8", "-I../../../../wxWidgets-2.8/include", "-I../../../../wxWidgets-2.8/contrib/include", "-D_FILE_OFFSET_BITS=64", "-D_LARGE_FILES", "-D__WXDEBUG__", "-D__WXMAC__", ); OTHER_LDFLAGS = ( "-L../../../../wxWidgets-2.8/lib", "-framework", IOKit, "-framework", Carbon, "-framework", Cocoa, "-framework", System, "-framework", QuickTime, "-framework", OpenGL, "-framework", AGL, "-lwx_macud_richtext-2.8", "-lwx_macud_aui-2.8", "-lwx_macud_xrc-2.8", "-lwx_macud_qa-2.8", "-lwx_macud_html-2.8", "-lwx_macud_adv-2.8", "-lwx_macud_core-2.8", "-lwx_base_carbonud_xml-2.8", "-lwx_base_carbonud_net-2.8", "-lwx_base_carbonud-2.8", ); PREBINDING = NO; SDKROOT = macosx10.4; VALID_ARCHS = "$(NATIVE_ARCH_ACTUAL)"; }; name = "Development Debug - wxWidgets 2.8"; }; C01FCF5008A954540054247B /* Deployment Release - wxWidgets 2.8 */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_THREADSAFE_STATICS = NO; GCC_VERSION = 4.0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = "../../src/**"; OTHER_CFLAGS = ( "-I../../../../wxWidgets-2.8/lib/wx/include/mac-unicode-debug-2.8", "-I../../../../wxWidgets-2.8/include", "-I../../../../wxWidgets-2.8/contrib/include", "-D_FILE_OFFSET_BITS=64", "-D_LARGE_FILES", "-D__WXDEBUG__", "-D__WXMAC__", ); OTHER_LDFLAGS = ( "-L../../../../wxWidgets-2.8/lib", "-framework", IOKit, "-framework", Carbon, "-framework", Cocoa, "-framework", System, "-framework", QuickTime, "-framework", OpenGL, "-framework", AGL, "-lwx_macud_richtext-2.8", "-lwx_macud_aui-2.8", "-lwx_macud_xrc-2.8", "-lwx_macud_qa-2.8", "-lwx_macud_html-2.8", "-lwx_macud_adv-2.8", "-lwx_macud_core-2.8", "-lwx_base_carbonud_xml-2.8", "-lwx_base_carbonud_net-2.8", "-lwx_base_carbonud-2.8", ); PREBINDING = NO; SDKROOT = macosx10.4; VALID_ARCHS = "i386 ppc"; }; name = "Deployment Release - wxWidgets 2.8"; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "aMule" */ = { isa = XCConfigurationList; buildConfigurations = ( C01FCF4B08A954540054247B /* Development Debug - wxWidgets 2.8 */, 48636E0B119E4DBA00BC3DB6 /* Development Debug - wxWidgets 2.9+ */, 4875E6EB1192DCF9004ABCD5 /* Deployment Debug - wxWidgets 2.8 */, 48636E0D119E4DC400BC3DB6 /* Deployment Debug - wxWidgets 2.9+ */, C01FCF4C08A954540054247B /* Deployment Release - wxWidgets 2.8 */, 48636E0F119E4DCB00BC3DB6 /* Deployment Release - wxWidgets 2.9+ */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = "Deployment Release - wxWidgets 2.8"; }; C01FCF4E08A954540054247B /* Build configuration list for PBXProject "aMule" */ = { isa = XCConfigurationList; buildConfigurations = ( C01FCF4F08A954540054247B /* Development Debug - wxWidgets 2.8 */, 48636E0A119E4DBA00BC3DB6 /* Development Debug - wxWidgets 2.9+ */, 4875E6EA1192DCF9004ABCD5 /* Deployment Debug - wxWidgets 2.8 */, 48636E0C119E4DC400BC3DB6 /* Deployment Debug - wxWidgets 2.9+ */, C01FCF5008A954540054247B /* Deployment Release - wxWidgets 2.8 */, 48636E0E119E4DCB00BC3DB6 /* Deployment Release - wxWidgets 2.9+ */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = "Deployment Release - wxWidgets 2.8"; }; /* End XCConfigurationList section */ }; rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; } amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/aMule-Xcode/aMule_Xcode-Info.plist0000644000175000017500000000176712611472361027055 0ustar morphmorph CFBundleDevelopmentRegion English CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIconFile amule.icns CFBundleIdentifier com.amuleproject.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundleName ${PRODUCT_NAME} CFBundlePackageType APPL CFBundleShortVersionString 1.0 CFBundleSignature ???? CFBundleVersion 3.0 LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} NSMainNibFile MainMenu NSPrincipalClass NSApplication amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/aMule-Xcode/aMule_Xcode_Prefix.pch0000644000175000017500000000023112611472361027101 0ustar morphmorph// // Prefix header for all source files of the 'aMule-Xcode' target in the 'aMule-Xcode' project // #ifdef __OBJC__ #import #endif amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/aMule-Xcode/amule.icns0000644000175000017500000011033312611472361024671 0ustar morphmorphicnsit32Pb"Tgu{1)Zrw+(f|9;ouy tij~k KKopѭsq 7[xvћoo +qx͉q 38h~Ѷ|\ !VnѤj7 Gi}͙i fy̶yj  HjѭxgzB @jv͡xlVdlN foֶwmU[QO60- 7ryѶ}k }cZTZR"-atѤz}^ K^\WYYq\0%%kyֹzZ i\_Wa_~v+q9NpֶuU >\a__ggnqR%M$h~ͥxw Na_aajjx{uI1UQi̜xl OVa_aagqzu~D5%ixѹz}\:^_gRgqqyzst\"Zrѯz~T\L_g_Mgqyyqz`\Okwݽy}H"\UqgM_gqzpnhJJtfzѶ)PLM_qMgqryyy}nC8`szѶwm3ZM Qgqyytu1 W^!rͥueVLMMPPWgqyv{q7 &qzͯtP0ZM agqygfozѽynH@+TJMM?EQggrvpsRtzh qѽvfCS5ME!Uqqyyê|f&x5O04 pzѽuM&V6E"MMgqywt &nc'&szd# <9E!MMqqy~gqNaf;iѽ}R ,9@5E Mqgqh Y^ENWkxѹ|CaD35$MWgquxX9CEEMN^tѶ~LC;355EMWgqys]E=PZ``qѯyY8BWC ==535EQagqyq_V>[_gqjq s 7x'60$33EQ_gqyaQQ\_quyzuF((S1%%3MUgjjPEWgqyå}E>=܁CI"3M__PE_jy |\ӽ܂!-G$5MEQ_qyh ӽHG<RMau56?0*5Maq i dTAKLRWqy{$a$E" :Ng;π . 8)2Mu Vρ,H] c ӽσ UsĂ dĽρYtøpӀ b軸с̥&$cw 誀<ٽdÀրё\ٽ)b} l ʽ:h~Å؀kʽAmyˆ l7ý Npˆ t(UxO Nià oz`$܀4eÁt%9ր baGat OͻX7ʂ^!Nw H车ʨlQ%G j0ÕüڅʟV'ܽ ṔͩnN"ܽT Ӏ T1ϽʀU˼ ًJϽE\ڀ jdK!ϽSZϼ ⼤49X_!Ͻ܀4Vʷ܆ ָb46bهdW 22[Ӽ N4?Rqp;(5ӮB4?Wܦ\Ͻπ$E q47B[dEϽπ Akv9zo46HjԸ[_܀ WKO1BP7?N{N܀ 7jX٦H94]?9FXګG$z X^ӪU?969?HQ5z vVϷbB67Pj7Hjq>Dzzπ oUÂN?77zW6]ۄFnzz%bmƪ[H94NPFܗJbnzz&QWH97zHzڗN,bnzztEXH9H~OӈJzzt R 8>>hffb`!XXWʾ{aQduр̳aF``{GPOPPURXXU@(<-AOONNO MFeaA,+3<;:EWjyׂѸ1.&#::97=@BFLE,0#/EH"L@21/6*(AWjz׃ T  )**07 "(3/+ (?J5QWqفy  D7#1I;fXVI&  !3(30O_rك-H   $/.$8, 1;K)#)(+*&&.8,0+&"(*--/5?Q_rل&==,28=7,&&3::7:49ACHHDKI@D9K+W~*vvwqjjljgSWES_rلR6??@AP@DQQEDDPLGLGGLGE4IK2(<2{uqqjgg_MT_rل {qrrs{ėn2V!1V'{uqqjggMW_rك r{׻AB;.%lyrqqggMQ_rˀրف׀$xrryӪ[4K x#yuqqggMN_r׃ׁr{˹v(e%m'yyrqpgWM]j̀փׁr{̯6a0$Th{yrqqg_EZgyψ rĶj8N OHNyrqqg_MO_uͅ rħ]W2> &"0Pzé#yrrqgg_P]q́nrryˀ ϹzHBM(2#0=${urqgg_MUgy Ćr{˹W05@,!6>yrqqggMMXqĀˀĀrprryDZ/JK$'MyrqqggWMRauunryĪMB@%M&ttzyrqqggWRME_trkry{ϪV49(+8ztqnoljhyrqqgWZWME Xqrjrtry{ˇtzM8C11)oonjfhffb`[!yrqqj_LF5%$'($2Q~!sREFEQgjeurtryѪjjlnqtzz?9^T1b``[]`XU]UPf~m\E5$$%):E!:I0<$!$2EQQWeeRPQE5('29''$$'%6FWjx|b fhhjjnnq1>})GWRPPONXywaE$##%0(+D, <9.@!/413,*'339B/+EU14D"-Y?HNUjXJB]^ K=/1.2[\0%$OANQgoSJBaZ [/6165Mm+p9IAHNSjjQJCoU>4699DbR%N%MDJQ`wgNJEn  96??AUlI1VJAHJSgW^NJKfH169ABGgD5%NAJQXwoUPBU\:<6969::IBBV["WGENSgg>PB^TP+696,9:FIENk[\O^EJNXjwXNNFmH";,:9,69:HHBE[iJJtXBJ>gjXNMGo)K,,6:,9:FFHFAVnE8`\BNSjjXNJHl3B, 19:FFJMDIf1 W^!U@NSugSNHIdU+,,//29AFHP]JGlq6 &TBN^gXRGVP/I, 69AFJ]hXH^eSBNewgUJA_H@U*,%(199FEWn]GisQtzg NENdwgUJG`DK,(!,::II]rT`%y6M/4 SBNgwd>EOM&E(",,9:FJ]ÄZs &dR'&UBNgrdSDK" ;(!,,:AFJrh^hp?W]5VEEjwXRCG ,7%"( ,:9AE]ѸV_ VE0.FVANjoXJGBa="$,19:CMhђQY.'((>MLCJgjUJ^MC*6""(,29AFR|ÞCKE$//0B>6:JgNEcW8BVD =+"(169AF]gaE=?%369A?A XgdQRMI 7w'5(169AHF611/5ACFHHMMJJEBCPgr`jD((K,,9??/(19AFHMMNPVgwgMSgglC>=݁CG,66/(6?FHKMPPSRVan gHM]lZӽ݂!-E",(16AFMMPPVWW]]`YU`raRPRd ӽHF*6,6CHMNPVW]^^aeeggd\WXVf56@0'",6AHMPPV]^^eg f`^WZh aT?DE62AFKPPW]^egjge^^k%a#C)/9HMPPW]`gojjggee]n<̀ . 6*)+CMNPW]`gjorrpo jhggbqV́,54HJPS]^eghjooruqjdhdla ӽ̓ 5BJPP]^eghjopuuy vøhjfdƽ́=BMPRW]dhlppuuyz{}hffӀ BDJN^Ähquuy{т]o&$IEJhÀpxz{ro<ٽKDSтrÅf]ٽ*J?|go ʽ' >Hdhg{ vnhd`\N pmmpphhmppkpkpS@)CJMPUZ`jpvz{ tW:H>* B@EEm|ry{8vnnd`ZUFSphppmpmphpmpphppshB>Dfuf@GPRV]djsyz{{~n]DC< G8>Ip{zvnd`]VRI?M]zmupuupu&pouzhB>)$$fjfuf>OUW]envyz{{|r|XV* ZBTno}{vne`]VNMLA/9CMPSR]bhnps~6$)DXXf uX@W]`jnvyz |eOA I@py~{"vne``WNMF6;HLOPNMBFENNQQSZZ``X>6)DDfuj>W]`jnvyzzu{eB30:pu{vpje`WPMF2CCMPPRX^ZPM PSPXUgj4)4DXfjWS]`jpyyzzohkppsuyyWE! -5g{yypsupu{zvne`WPL6=FHMPPX^^dggnoruyx@)4DXXffjDW^`epy r]ae]ehkmpsMI 36Sumppmhhedh{zvj`]VQF4FFMPPX^`g!jooruyyz{z|W)44DSXffuW]T^ajrv{hNTY]]aee9O 8<9eaa_]!WWTrwzvji^YSG1=CHMPS]`eggjooruyy{~z4))DXXfjW]GBFFdry]INLNNQRWWQ7F/?1WWTRQLGo}|g]GA<<65?FMMPX]`ggjooruyz~!W))4DSXjD[]W8E:1:@@AEFIILINN9<(;)@LLIILFBAG;()2<9909?FMNS]`egjjoouyz~D))4DXXDDjga/. &#;94279L4+16AHMPV]`egnoouyyWSWupoojjR  D7#JH9dXUH&  !3(1'.6CHNPW^dehoopuyzyvrpoojb)H   #--#7* 3:G$ $#'&",1(.'"$%)(&1,/6CMNPW^dehoopuy{ zyvroojb8<,06:4*%&2:94727?BDIF>B9K%Vz~(z`]PPOGIIGCBA?:62(26FHNPX^dejoopvy~yyroond62668898@8=A ==AEDEDDEDA0FK4(9-le^ZWPNMMFFA:996,16FJPPW^dejnorvy~yyroongMEFGNRY[bhnrvuk-U*S*njkj`]WWRNMMFCA:99,16FHNPW^dgjjoruy~~yyoneFHMPVZ`ejsyy@@;4#iubS`pjjd`]WVPNMIFC:99,.6CHMPW^`gjjoruyy~yuogeIFMPVZ`djryzz}r[1L w]N]j#d`]WVRNMIFFA99,,6CHMPW^`ggjjoryy~zyuoong^F HMPWZ`jnvy{ yo`]us%c"k'M^gjjd``WWRNMIFFA:92,5?HJPPX`ggjjoruyzzyuroojg]F HPPW]`jnyz{zg]|2^ PeWE]hj ``ZWVPMIHFAA96(49FHPPX^eggjopuuy{ ~yyuponggOF MPRW``jpyz{ xj^h5K MEI{zhUej``ZWVPNJHFAA96,-6CHMPR^egouuyz ~~yyuroojg_F MPVZ`dnsyz{ yfWaYT/= &+NyėXhj``ZWVPNMHFCA996/5AHMPP^^eggjouuyzz ~zzyyurpoojfMCFNPWZ`envy{ ugyEAH#1 0:]Mljd`]WWPNMIFCA996,39FHP^eeggjouuyvurojh]F HNPW]`jnvz{t^T+4@ !19sdne`]ZWPPMIHFA:99,,6AHMPPX^eeghnopuuyvurpojhWFEF MNPW`djpvy{~w`n*GK %Hunj``ZWVPMIHFA:992,17CHPPR^^eegjnopruurpojdXCBFMNSW`ejpvz{{~xsH5@!H{uuyon``ZWVPNMIFA:9926,(5CHPPS^^eegjjnong^MF@FHMPWX`ensyz{{~sS09((5{yupkmmhene``WVPNMIFA:9642,( 4EPPS]^eeghjnond^OF?FEF HMRW]dhnvyz{uuy{H1CD1-&mmkhaeaa_][inne`]WQPMIFAB:8.)"!%9KS[^aeegjjknooje[I6(1(19?AFHFMMWZdhnyy{{zrhhmkpuyy:1^-_]][Y]WQYQNWeB`WVQPMB6(%:C:H0;(112AA6/1(""!08%!!12?FNPSW`ejvyzz{f_ aeehhkkp,<}'FTRNNLIP[ecWH60$/%(C, <9-? .3/1*)$118A-)ET04=TI23>*"1?OZagnyzyuYRTTWY]]__e_DW $QILIB>A2"@/! %//*"1'?)49%# /KauisTGN QQTTYYIN%%ALIG>6)" :*95 (*$&0.>FINR& ]""($&E0A)( ),3>FN:BG "+Q&  &3%$ 3l !   0,'?91G`"O)H1)T!N+'*0E9;<"CB tTCCR KKo"Q+O 7\60Q$Y +Z QEf 28*/Q0\ !B!CQ*-8 @#+QE5 :6f0=  D!$QQ+OzC @6!0QE VJXoN W"CX0 _K"450- 6//QQ0#3` }%&:"-S$0XQ"?^ K#E[0%#6/QX6 >Z N%e+q8D 0QX0ZW=TR%O&5*C_E4e ,2dI1VE /QX>(%^ B SD5%5!"CXQ6$"3\:#%!;Y"U# /EXQ/%"@TD !/^W\NR"0Q_C"]H"#JjIJtK%4[QQ0"a)G3nG8`F 0QXQ0" j32$Z0 W^!: 7QXE4 $dT"8 _p5 &:(EXXE/"#;O/; !8C( Vc8,QXQC/$RH@+V%4B[8 bsPtzh .+QXQC/$ ZDD!!!8[~C2Z%z6L/4 9/XXQC+%/M&8"!8~[Ds &\B'&:/XXQ6+ 3" :"CC@ip3PU1F0fXQC"#< ,7 8['W V5#9A0TXQ6" Aa8$!C~f0Y%1M9/WXQ0$@MC2##Z~9E2$![QQ/QU7BUD <846$0 (4+#) 7u'4!"46"NC((E"$4Cf~~4(/4]B>=݁CE!!""'#$6B[ 4!(_Zӽ݂!-B""$&&(()%$*C[6#"(c ӽHE#%!"$$(,,//.-&#($K56@/%""$(,/ -*(#6g _T>>@%""&((,/0/,(([&a#B""&(*/1310/,,"Q=π . 6+!"&(*/0363310/%SUρ+("#&(+//036776 2)++,/+A_ ӽσ !""&(+//0367 3X[)0.cɽρ%!"##"+*0336778?9_~)/^Ӏ '!(f[)47?@f"Y&$2Cf167?E_C_<׽3(_3?ELQA^׽+8ZX:EHQWՅBp ʽ=;~?GHHOVBiʽDI @KKQUBY8ƽ OK PFKVWtPCDR OV~9KQWkbEb$݀6S~t3?EKK]S]FVbJ?EQE[V0ʂb_Z!K TBCZZbT{iQ%?AU g%~bbs~ՅV'ݽ MbZkK"ݽSr{ Ӏ O0ϽʀR ׅFϽEYՀ gzaM!ϽRTϻ ໟ+3S_!Ͻ݀3Pʷ݆ ٯ]+4]ׂ`Z 22Wӻ H+8T]l;(2|Ӯ@+8RݥVzϽπ$B o+0@\zaEϽπ @fq3wk+4BgүUY݀ WIJ)@M08HvM݀ 7fYץB3+X83@V۫C$w X[ӨP83438FK3w vQϷ]@40Mg0Bgo;CwwπoPƀH800wR4X܂Aiww%ah\B3+HM@ݔL]iwwz&L~RB30wFwՔJ*]iwwztFVB3B~JӆEwwzt 9R@0ggmS4׺g8BwUc)Fh6   7A׺w8iTVQSZNL QV^`cjoiqKmyuh`ZYTRXTWUF/)D׹wRz~S247BE _^\W[WURLj@:AA@@CDJLEE>;<5ݵgw~~}wwwtw{#"$*/288BXO^8.IGyyB6970/!Cϵwxw tqwwiowwt*#"#%,1489=bh>@=7yYC9864,)wtwogttqtqotw5" #%,3889?CbvB3I;pZ798740,) CϤwqtkoto qoo6!"#$,14889?5CsC'DHT,0998840,)$Ʌqooeiooigioogiomm}'!" #$,14889>-v?( AQZ+98 73,)$""~ɠqkokgoqkoiiomioomoitM"$%,37889;/CoW<& >GeC-98 3,)$##b okkooggkooio mooqoozM:4"#$)0378897fV8G<) @>BBksZC9983,,$##!(bogoqjojqgokqogq_=%Beve:#""#$)14789?,{ZAB< F69Hs29843,$##""&7bsktottot&oidpC=%4""epeve%""##%,3478:8CZWT* [?RB->983,%#""!"(27CB109*"4BSSevS%##$),3789?ZaN@2J;obC:9883,%$#"!!"  "*(%*4BBevp%##$),378:QtzaA1/8o+c?:9831)%#""""$(()"&!!"("($40848BSep>%&)1479?igiooqtwwVD!%,1fzwwoqtqP:9843,%#""""&((+//2367#88:48BSSeepB#')14689CZ_aZagikoqLG 35Qtkoojggae_?98641)%#"""&(*/03367889;>488BMSeev>'+.47789CMRXZZ_aa7N 8:7a__]ZVVRC98643.&&4"$(*,//033679?844BSSep>26@556A7FLMJMMPTVVP6F.>.VVRTPJFT99476&>>3"&(*//0336778:?!EB>448BMSTpB<446G9/534?@AHHJHMM7;(9%?JJHHJA@&66$'1=88#$&(,/0033778:?EB448BSSBB4,. &$<8/1357@@?%/#'@FBB@0)('1%& "$&),/0336779?EEHEKEKS8448:>7642 &%#+3 #-*)&=M4"$(*,/1337?HHOOQQOKE;>M>=764311  D7#JF7aWUH&  !2(1$"$(*,/336778??EHOQQWTQPKEE>:7763304&H   #,+"4* 3:F $#*+%+$!#&##.%"$(+,/136779??HKQQW(TQOEE?>776331-6<+.482(%%2982617>ACCEGE<@9K!Uyb*&"" $$%&&%!"$"((+,0336779??EOQQW(QOEE?:776633,%/0/112141855?884@A@AA@A?.EK(8)b,)&#"!""$(+,0136779??EOQQW!QPE??:77633/4&$! "##$$)*23637tzzi)T%QzB)*)$##""#!!!"#(+/0036779??EHQQW QPOE??:77633/-!" $)035789[?>;#gdC(*0*)$##"!!"$(*/00367??EEKQPOH?:77633/,!"#$)14789:Ct\.Lu7"**)$#!!!"#(*//006677?EHHOHHE?977630/("#),3788973*8dq$bit(+$#!!""(*//0036779?EEHEE?77633//&"#),478=/"Z/]Oa4&,++)#""!!""((,//01679?EE?7630/,#"#)0478 70(sg2ILBHzsbC%,**)#"!!"#(,/13679?76330/("#$,1478 7,#6sXR,<%(MwƇ(,*))$"!""((,//033679?9766330-!"#%,348 7.bwB@G00970,,)$""(,,//0336763300&" #),3488998(R)3@!.7U,0,,%" !""((,,//3676330.#"#$)037897*B%FK"Gd6,,)"! ""#((,,//3631,+("#%)13789:9CtG+@G zttwQ0,,##"! %""#((,/0013,,(""##%,14799:BzQ.9'%2zwtoikjgaB,,%#""!"##((*,/0113,*# ""#$),3779::dtwzG+C1+%kkig_a__]Z\D1,%##"!$#!#&),.-//013!1-*'%#& !"#$),4799:Cggjiotww8+^*]ZZ\XZVPXPMC1,%"#"= "=A9G/:&&%0:$##"##%)4799:S] _aaggiio)9}'ERTMMJHF1/%$#&.$(C, <9,>-5/1-,#11:A-'ET/3>TH13='!!)*4679=NTRRVXZZ]]a]CX #PHJH@9& >0! %/.*!0'?(39%"(.79>RFM PPRRXXHM%% ?JHF93&;+94 (*$#*9AHMT%\ &"$C/A*&&)09AM8BG !)P%  % 3$ 1l !   0,&>71Gt8mk@0uZ ;#+,+x0i4$Z6@4#{2=~-&m`(DM# (A   P;Q# 95 *-& !u2/D)>/f͇F!  u~- OךJ 7u+ ;ׂ+ gk'4}I 5G" +SӁ2 c>  A= 463t_#  d|/%IG+%k) 7mj./S$ (Lۅ3 8D  9w1 D9(M( I5 9s+  !Fi6'I'    !GI.  4])$I7 !?r)XZ !4U\.(Hs)$mіeVG* 0P@5h;6  5YQ7,D$ >dy6 4F: /M^  7^c "?K (P|G"  FVa&7^-?h> 4@X  *G' +Hy/ 2Y7%K? !GK  !G`"  "I) "P1 $\= %fQ  &p{' 'n: $_^  !Q/ D^ ;18h! :;<(Qd"  be  UM  ,\20u @M gU %X .X 3X 2T /Q -vo! )ml" &bU"  $[G  !U= O1HW'6w릃}; %Gğzomr|^QOT\gs|ۓH( 7_ƵrdYPKLVnN8138>CIOXboV5  ,14421$ A*@-B-Ag*A^%>Z" =W @Z Cc! Cm" 8q# .l²upbbdpռh" #Jѿ~q_XRLE@<98:>CHLQXfszse^YUTTUX^dyL  >xͮzgWKC=71,'#"%(+17?FJLMMLJHD@:51.--.14:@FKPXam|6'NǴ|i[QJC=6.("  #&((('&%"#'+/4:AFLR\hb+ 1gîqeZRKC:2+&"    $(,3:CLTbpw; 9Pdlk`VI@82,'!  "(.4:@GQ_p͹D()3774-&  %+4=FOW[XO>*    $*/21+! amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/0000755000175000017500000000000012611472361022630 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/AddLinkDialogController.h0000644000175000017500000000046612611472361027501 0ustar morphmorph#import @interface AddLinkDialogController : NSObject { IBOutlet NSPopUpButton *m_cat; IBOutlet NSTextField *m_link; IBOutlet id m_dlg; bool m_dlg_result; NSString *m_link_val; } - (bool)showDlg:(NSWindow *)window; - (IBAction)closeOK:(id)sender; - (NSString *)link; @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/AddLinkDialogController.m0000644000175000017500000000103212611472361027474 0ustar morphmorph#import "AddLinkDialogController.h" @implementation AddLinkDialogController - (bool)showDlg:(NSWindow *)window { [m_link setStringValue:@""]; [NSApp beginSheet: m_dlg modalForWindow: window modalDelegate: nil didEndSelector: nil contextInfo: nil]; [NSApp runModalForWindow: m_dlg]; [NSApp endSheet: m_dlg]; [m_dlg orderOut: self]; return m_dlg_result; } - (IBAction)closeOK:(id)sender { [NSApp stopModal]; m_link_val = [m_link stringValue]; m_dlg_result = true; } - (NSString *)link { return m_link_val; } @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/AppController.h0000644000175000017500000000143012611472361025563 0ustar morphmorph#import #import "EC.h" #import "amuleData.h" @interface AppController : NSObject { IBOutlet id m_main_tabview; IBOutlet id m_dload_controller; IBOutlet id m_search_controller; IBOutlet id m_shared_controller; IBOutlet id m_add_link_dlg; IBOutlet id m_connection_status_text; ECRemoteConnection *m_connection; amuleData *m_data; int m_daemon_pid; NSString *m_targetaddr; int m_targetport; NSString *m_corepass; } - (IBAction)show_Networks:(id)sender; - (IBAction)show_Search:(id)sender; - (IBAction)show_Sharing:(id)sender; - (IBAction)show_Stats:(id)sender; - (IBAction)show_Xfers:(id)sender; - (IBAction)show_Preferences:(id)sender; - (IBAction)show_About:(id)sender; - (IBAction)addLink:(id)sender; - (int)startDaemon; - (bool)askCoreParams; @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/AppController.mm0000644000175000017500000001421612611472361025753 0ustar morphmorph#import "AppController.h" #import "LoginDialogController.h" #import "DownloadsViewController.h" #import "AddLinkDialogController.h" #include #include @implementation AppController - (IBAction)show_Networks:(id)sender { [m_main_tabview selectTabViewItemAtIndex: 2]; // ECLoginPacket *p = [ECLoginPacket loginPacket:@"123456" withVersion:@"0.1"]; // NSOutputStream *stream = [NSOutputStream outputStreamToMemory]; // uint8_t buffer[1024]; // memset(buffer, 0, 1024); // NSOutputStream *stream = [NSOutputStream outputStreamToBuffer:buffer capacity:1024]; // [stream open]; // [p writeToSocket:stream]; // id data = [stream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; // int off = [data length]; // NSLog(@"off=%d", off); // [m_connection sendPacket:p]; } - (IBAction)show_Search:(id)sender { [m_main_tabview selectTabViewItemAtIndex: 1]; } - (IBAction)show_Sharing:(id)sender { [m_main_tabview selectTabViewItemAtIndex: 3]; } - (IBAction)show_Stats:(id)sender { [m_main_tabview selectTabViewItemAtIndex: 4]; } - (IBAction)show_Xfers:(id)sender { [m_main_tabview selectTabViewItemAtIndex: 0]; } -(IBAction)show_Preferences:(id)sender { } -(IBAction)show_About:(id)sender { } - (IBAction)addLink:(id)sender;{ bool dlgResult = [m_add_link_dlg showDlg:nil]; if ( dlgResult ) { ECPacket *packet = [ECPacket packetWithOpcode:EC_OP_ADD_LINK]; [packet.subtags addObject:[ECTagString tagFromString:[m_add_link_dlg link] withName:EC_TAG_ED2K_ID] ]; [m_connection sendPacket:packet]; } } - (bool)askCoreParams { LoginDialogController *dlg = [[LoginDialogController alloc] init]; bool dlgResult = [dlg showDlg:nil]; m_targetaddr = dlg.host; m_targetport = dlg.port; m_corepass = dlg.pass; return dlgResult; } - (void)applicationWillTerminate:(NSNotification *)aNotification { // // Save gui state in all views // if ([m_dload_controller respondsToSelector:@selector(saveGui)]) { [m_dload_controller performSelector:@selector(saveGui)]; } // // Save main window // [[NSUserDefaults standardUserDefaults] setInteger:[m_main_tabview indexOfTabViewItem: [m_main_tabview selectedTabViewItem] ] forKey:@"activeTab"]; // // If we have slave daemon process, terminate it // if ( m_daemon_pid ) { // // started in local mode - terminate daemon // kill(m_daemon_pid, SIGTERM); } NSLog(@"Exiting ...\n"); } - (void)restoreMainWindow { int activeTab = [[NSUserDefaults standardUserDefaults] integerForKey:@"activeTab"]; [m_main_tabview selectTabViewItemAtIndex: activeTab]; } - (void)awakeFromNib { NSUserDefaults *args = [NSUserDefaults standardUserDefaults]; NSString *mode = [args stringForKey:@"mode"]; NSLog(@"amule controller started, mode = [%@]\n", mode); [[NSApplication sharedApplication] setDelegate:self]; [self restoreMainWindow]; m_targetaddr = 0; m_targetport = 0; m_corepass = nil; m_daemon_pid = 0; if ( (mode != nil) && ([mode compare:@"guitest"] == NSOrderedSame) ) { NSLog(@"Started in GUI test mode - will not connect to core"); return; } if ( (mode != nil) && ([mode compare:@"remote"] == NSOrderedSame) ) { m_targetaddr = @"127.0.0.1"; m_targetaddr = @"localhost"; m_targetport = 4712; if (![self askCoreParams] ) { // "Cancel" selected on login dialog [[NSApplication sharedApplication] terminate:self]; } [[NSUserDefaults standardUserDefaults] setObject:m_targetaddr forKey:@"LastTargetHost"]; [[NSUserDefaults standardUserDefaults] setInteger:m_targetport forKey:@"LastTargetPort"]; [[NSUserDefaults standardUserDefaults] synchronize]; NSLog(@"Remote mode selected, target=%@:%d\n", m_targetaddr, m_targetport); } else { NSLog(@"Local mode selected - starting daemon\n"); m_targetaddr = @"127.0.0.1"; m_targetport = 4712; if ( [self startDaemon] == -1 ) { NSRunCriticalAlertPanel(@"Daemon startup error", @"Unable to start core daemon (amuled)", @"OK", nil,nil); [[NSApplication sharedApplication] terminate:self]; } } m_connection = [ECRemoteConnection remoteConnection]; [m_connection retain]; m_data = [amuleData initWithConnection:m_connection]; [m_data retain]; // // bind datastructure to GUI controllers // [m_dload_controller linkAmuleData:m_data]; [m_search_controller linkAmuleData:m_data]; [m_shared_controller linkAmuleData:m_data]; // // daemon (either local or remote) must be running by now // // try to connect 3 times, hopefully giving daemon enough // time to start listening for EC // for(int i = 0; i < 3; i++) { sleep(1); [m_connection connectToAddress:m_targetaddr withPort:m_targetport]; [m_connection sendLogin:@"123456"]; if ( !m_connection.error ) { break; } } if ( m_connection.error ) { NSRunCriticalAlertPanel(@"Connection error", @"Unable to start communication with daemon", @"OK", nil,nil); exit(-1); } } - (int)startDaemon { int pid = fork(); if ( pid == -1 ) { // fork failed return -1; } else if ( pid > 0 ) { sleep(2); NSLog(@"Parent running, calling waitpid for pid %d\n", pid); // parent int status; switch ( waitpid(pid, &status, WNOHANG) ) { case -1: NSLog(@"waitpid() call failed with code %d\n", errno); break; case 0: NSLog(@"Daemon running on pid %d status %d\n", pid, status); m_daemon_pid = pid; break; default: //NSLog(@"waitpid returned pid=%d status=%x\n", pid, status); if ( WIFEXITED(status) ) { int exit_code = WEXITSTATUS(status); NSLog(@"Daemon exec failed - child process exited with status %d", exit_code); return -1; } else if ( WIFSIGNALED(status) ) { int sig_num = WTERMSIG(status); NSLog(@"Child process terminated on signal %d", sig_num); return -1; } else if ( WIFSTOPPED(status) ) { NSLog(@"Child process stopped. Not supposed to happen."); return -1; } else { NSLog(@"Should not get here: child status unknown = %x", status); } break; } return 0; } else { // child NSLog(@"Child running, calling execlp\n"); //execlp("/usr/bin/touch", "/usr/bin/touch", "xxxx", 0); execlp("/Users/lfroen/prog/amule/src/amuled", "/Users/lfroen/prog/amule/src/amuled", 0); NSLog(@"execlp() failed\n"); exit(-1); } return 0; } @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/DownloadsViewController.h0000644000175000017500000000074312611472361027636 0ustar morphmorph#import #import "amuleData.h" @interface DownloadsViewController : NSObject { IBOutlet NSTableView *m_tableview; amuleFileSet *m_fileset; amuleData *m_amuledata; } - (void)saveGui; // TableView datasource methods - (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex; - (int)numberOfRowsInTableView:(NSTableView *)aTableView; - (void)linkAmuleData:(amuleData *)amuledata; - (void)reload; @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/DownloadsViewController.mm0000644000175000017500000000747012611472361030024 0ustar morphmorph#import "DownloadsViewController.h" @implementation DownloadsViewController - (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex { id value = nil; NSString *columnId = [aTableColumn identifier]; DownloadingFile *i = [m_fileset objectAtIndex:rowIndex]; // if ( [columnId compare:@"filename"] == NSOrderedSame ) { // value = @"val-for-filename"; // } else if ( [columnId compare:@"progress"] == NSOrderedSame ) { // value = @"val-for-progress"; // } else if ( [columnId compare:@"size"] == NSOrderedSame ) { // value = @"val-for-name"; // } else if ( [columnId compare:@"xferred"] == NSOrderedSame ) { // value = @"val-for-size"; // } else if ( [columnId compare:@"completed"] == NSOrderedSame ) { // value = @"val-for-completed"; // } else if ( [columnId compare:@"speed"] == NSOrderedSame ) { // value = @"val-for-speed"; // } else if ( [columnId compare:@"prio"] == NSOrderedSame ) { // value = @"val-for-prio"; // } else if ( [columnId compare:@"timerem"] == NSOrderedSame ) { // value = @"val-for-timerem"; // } else if ( [columnId compare:@"lastcomp"] == NSOrderedSame ) { // value = @"val-for-lastcomp"; // } else if ( [columnId compare:@"lastrx"] == NSOrderedSame ) { // value = @"val-for-lastrx"; // } else { // value = @"ERROR: bad column id"; // } if ( [columnId compare:@"filename"] == NSOrderedSame ) { value = i.name; } else if ( [columnId compare:@"progress"] == NSOrderedSame ) { value = @"progress-colored-bar"; } else if ( [columnId compare:@"size"] == NSOrderedSame ) { value = [i convertWithPrefix: i.size]; } else if ( [columnId compare:@"xferred"] == NSOrderedSame ) { value = [i convertWithPrefix: i.size_xfer]; } else if ( [columnId compare:@"completed"] == NSOrderedSame ) { value = [i convertWithPrefix: i.size_done]; } else if ( [columnId compare:@"speed"] == NSOrderedSame ) { value = ( i.speed ) ? [[i convertWithPrefix: i.speed] stringByAppendingString: @"/sec"] : @""; } else if ( [columnId compare:@"prio"] == NSOrderedSame ) { value = i.sprio; } else if ( [columnId compare:@"timerem"] == NSOrderedSame ) { value = @"val-for-timerem"; } else if ( [columnId compare:@"lastcomp"] == NSOrderedSame ) { value = @"val-for-lastcomp"; } else if ( [columnId compare:@"lastrx"] == NSOrderedSame ) { value = @"val-for-lastrx"; } else { value = @"ERROR: bad column id"; } return value; } - (int)numberOfRowsInTableView:(NSTableView *)aTableView { // return 3; return [m_fileset count]; } - (void)linkAmuleData:(amuleData *)amuledata { m_amuledata = amuledata; m_fileset = m_amuledata.downloads; [amuledata.downloads setGuiController:self]; } - (void)reload { [m_tableview reloadData]; } - (void)awakeFromNib { [m_tableview setDelegate:self]; [m_tableview setDataSource:self]; // // load column status // for (NSTableColumn *c in [m_tableview tableColumns]) { NSString *columnId = [c identifier]; NSString *keyWidth = [NSString stringWithFormat:@"DownloadView.Column_%@_Width", columnId]; int width = [[NSUserDefaults standardUserDefaults] integerForKey:keyWidth]; if ( width ) { NSLog(@"Column %@ setting width %d\n", columnId, width); [c setWidth:width]; } NSString *keyHide = [NSString stringWithFormat:@"DownloadView.Column_%@_Hide", columnId]; int hide = [[NSUserDefaults standardUserDefaults] integerForKey:keyHide]; [c setHidden:hide]; } } - (void)saveGui { for (NSTableColumn *c in [m_tableview tableColumns]) { NSString *columnId = [c identifier]; NSString *keyWidth = [NSString stringWithFormat:@"DownloadView.Column_%@_Width", columnId]; [[NSUserDefaults standardUserDefaults] setInteger:c.width forKey:keyWidth]; NSString *keyHide = [NSString stringWithFormat:@"DownloadView.Column_%@_Hide", columnId]; [[NSUserDefaults standardUserDefaults] setInteger:[c isHidden] forKey:keyHide]; } } @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/EC.h0000644000175000017500000000777012611472361023303 0ustar morphmorph#import #include "ECCodes.h" #include "ECTagTypes.h" @interface ECTag : NSObject { ECTagTypes m_type; ECTagNames m_name; int m_size; NSMutableArray *m_subtags; } + (id)tagFromBuffer:(uint8_t **) buffer withLenght:(int) length; + (NSMutableArray *)readSubtags:(uint8_t **) buffer withLenght:(int) length; - (void)initSubtags; - (void)writeToSocket:(NSOutputStream *) socket; - (void)writeSubtagsToSocket:(NSOutputStream *) socket; - (int)getSize; - (int)tagCount; - (id)tagByName:(ECTagNames) tagname; - (uint64_t)tagInt64ByName:(ECTagNames) tagname; @property (readonly) ECTagTypes tagType; @property (readonly) ECTagNames tagName; // needed for fast enumeration of subtags in data updates @property (readonly) NSMutableArray *subtags; @end @interface ECTagInt8 : ECTag { uint8_t m_val; } + (id)tagFromInt8:(uint8_t) value withName:(ECTagNames) name; + (id)tagFromBuffer:(uint8_t **) buffer; @property (readonly)uint8_t uint8Value; @end @interface ECTagInt16 : ECTag { uint16_t m_val; } + (id)tagFromInt16:(uint16_t) value withName:(ECTagNames) name; + (id)tagFromBuffer:(uint8_t **) buffer; @property (readonly)uint16_t uint16Value; @end @interface ECTagInt32 : ECTag { uint32_t m_val; } + (id)tagFromInt32:(uint32_t) value withName:(ECTagNames) name; + (id)tagFromBuffer:(uint8_t **) buffer; @property (readonly)uint32_t uint32Value; @end @interface ECTagInt64 : ECTag { uint64_t m_val; } + (id)tagFromInt64:(uint64_t) value withName:(ECTagNames) name; + (id)tagFromBuffer:(uint8_t **) buffer; @property (readonly)uint64_t uint64Value; @end @interface ECTagData : ECTag { NSData *m_data; } - (void)writeToSocket:(NSOutputStream *) socket; + (id)tagFromBuffer:(uint8_t **) buffer withLenght:(int) length; @end typedef struct { uint64_t lo, hi; } MD5Data; @interface ECTagMD5 : ECTagData { // contain either raw data (in case of hashed string) or 2 64-bit words (in case of tag coming from ec) MD5Data m_val; } + (id)tagFromString:(NSString *) string withName:(ECTagNames) name; + (id)tagFromBuffer:(uint8_t **) buffer; - (MD5Data)getMD5Data; - (NSString *)stringKey; @end @interface ECTagString : ECTagData { // string NSString *m_val; } + tagFromString:(NSString *) string withName:(ECTagNames) name; + (id)tagFromBuffer:(uint8_t **) buffer; @property (readonly) NSString * stringValue; @end @interface ECPacket : ECTag { ec_opcode_t m_opcode; uint32_t m_flags; } + (id)packetWithOpcode:(ec_opcode_t) opcode; + (id)packetFromBuffer:(uint8_t *) buffer withLength:(int)length; - (void)initWithOpcode:(ec_opcode_t) opcode; - (void)writeToSocket:(NSOutputStream *) socket; @property (readonly) ec_opcode_t opcode; @end @interface ECLoginAuthPacket : ECPacket { } + (id)loginPacket:(NSString *) password withSalt:(uint64_t) salt; - (NSString *)getMD5_Str:(NSString *) str; @end @interface ECLoginRequestPacket : ECPacket { } + (id)loginPacket:(NSString *) version; @end @class ECRemoteConnection; @interface amuleLoginHandler : NSObject { enum LOGIN_REQUEST_STATE { LOGIN_IDLE, LOGIN_REQUEST_SENT, LOGIN_PASS_SENT, LOGIN_OK } m_state; ECRemoteConnection *m_connection; NSString *m_pass; } + (id)initWithConnection:(ECRemoteConnection *) connection; - (void)handlePacket:(ECPacket *) packet; - (void)usePass:(NSString *) pass; - (void)reset; - (bool)loginOK; @end @interface NSObject (ECRemoteConnection) - (void)handlePacket:(ECPacket *) packet; @end @interface ECRemoteConnection : NSObject { NSInputStream *m_istream; NSOutputStream *m_ostream; NSMutableData *m_rxbuf; int m_rx_size; int m_remaining_size; NSData *m_txbuf; int m_tx_ptr; int m_tx_size; amuleLoginHandler *m_login_handler; id delegate; bool m_error; } + (id)remoteConnection; - (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode; - (void)connectToAddress:(NSString *) hostname withPort:(int)trgport; - (void)sendLogin:(NSString *) password; - (void)sendPacket:(ECPacket *) packet; @property (readonly) bool error; - (void)setDelegate:(id) val; - (id)delegate; @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/EC.mm0000644000175000017500000004763312611472361023467 0ustar morphmorph #import "EC.h" #import @implementation ECTag @synthesize tagName = m_name; @synthesize tagType = m_type; @synthesize subtags = m_subtags; + (id)tagFromBuffer:(uint8_t **) buffer withLenght:(int) length { ECTag *tag = nil; //[[ECTag alloc] init]; if ( length < 4 ) { NSLog(@"[EC] buffer for tag is too short"); return nil; } uint16_t name16 = *(uint16_t *)(*buffer); name16 = ntohs(name16); bool have_subtags = (name16 & 1) != 0; name16 >>= 1; ECTagNames tag_name = (ECTagNames)(name16); *buffer += sizeof(name16); uint8_t type8 = *(*buffer); ECTagTypes tag_type = (ECTagTypes)type8; *buffer += sizeof(type8); uint32_t size32 = *(uint32_t *)(*buffer); size32 = ntohl(size32); *buffer += sizeof(uint32_t); NSMutableArray *subtags = have_subtags ? [ECTag readSubtags:buffer withLenght:(length-3)] : nil; switch (tag_type) { case EC_TAGTYPE_UINT8: tag = [ECTagInt8 tagFromBuffer:buffer]; break; case EC_TAGTYPE_UINT16: tag = [ECTagInt16 tagFromBuffer:buffer]; break; case EC_TAGTYPE_UINT32: tag = [ECTagInt32 tagFromBuffer:buffer]; break; case EC_TAGTYPE_UINT64: tag = [ECTagInt64 tagFromBuffer:buffer]; break; case EC_TAGTYPE_HASH16: tag = [ECTagMD5 tagFromBuffer:buffer]; break; case EC_TAGTYPE_STRING: tag = [ECTagString tagFromBuffer:buffer]; break; default: ; break; } if ( tag != nil ) { tag->m_name = tag_name; tag->m_subtags = subtags; } return tag; } + (NSMutableArray *)readSubtags:(uint8_t **) buffer withLenght:(int) length { uint16_t count16 = *(uint16_t *)(*buffer); count16 = ntohs(count16); *buffer += sizeof(count16); NSMutableArray *array = [[NSMutableArray alloc] init]; [array retain]; for(int i = 0; i < count16; i++) { id tag = [ECTag tagFromBuffer:buffer withLenght:length]; if ( tag != nil ) { [array addObject:tag]; } } return array; } - (void)writeToSocket:(NSOutputStream *) socket { uint16_t name16 = (uint16_t)m_name; name16 <<= 1; uint8_t type8 = (uint8_t)m_type; if ( [m_subtags count] ) { name16 |= 1; } name16 = htons(name16); [socket write:(uint8_t *)&name16 maxLength:sizeof(name16)]; [socket write:&type8 maxLength:sizeof(type8)]; uint32_t size32 = [self getSize]; size32 = htonl(size32); [socket write:(uint8_t *)&size32 maxLength:sizeof(size32)]; } - (void)writeSubtagsToSocket:(NSOutputStream *) socket { uint16_t count16 = [m_subtags count]; count16 = htons(count16); [socket write:(uint8_t *)&count16 maxLength:sizeof(count16)]; for (ECTag *t in m_subtags) { [t writeToSocket:socket]; } } - (int)getSize { int total_size = m_size; for (ECTag *t in m_subtags) { total_size += [t getSize]; // name + type + size total_size += (2 + 1 + 4); if ([t->m_subtags count]) { total_size += 2; } } return total_size; } - (id)tagByName:(ECTagNames) tagname { ECTag *mytag = nil; for (ECTag *t in m_subtags) { if (t.tagName == tagname) { mytag = t; break; } } return mytag; } - (void)initSubtags { m_subtags = [NSMutableArray array]; [m_subtags retain]; } - (void) dealloc { [m_subtags release]; [super dealloc]; } - (uint64_t)tagInt64ByName: (ECTagNames) tagname { ECTag *st = [self tagByName: tagname]; if (st == nil) { return 0; } uint64_t value = 0; switch ([st getSize]) { case 1: { ECTagInt8 *t = (ECTagInt8 *)st; value = t.uint8Value; break; } case 2: { ECTagInt16 *t = (ECTagInt16 *)st; value = t.uint16Value; break; } case 4: { ECTagInt32 *t = (ECTagInt32 *)st; value = t.uint32Value; break; } case 8: { ECTagInt64 *t = (ECTagInt64 *)st; value = t.uint64Value; break; } } return value; } - (int)tagCount { return [m_subtags count]; } @end @implementation ECTagInt8 @synthesize uint8Value = m_val; + (id)tagFromInt8:(uint8_t) value withName:(ECTagNames) name { ECTagInt8 *tag = [[ECTagInt8 alloc] init]; tag->m_val = value; tag->m_size = 1; tag->m_type = EC_TAGTYPE_UINT8; tag->m_name = name; return tag; } + (id)tagFromBuffer:(uint8_t **) buffer { ECTagInt8 *tag = [[ECTagInt8 alloc] init]; tag->m_val = **buffer; tag->m_size = 1; tag->m_type = EC_TAGTYPE_UINT8; *buffer += 1; return tag; } - (void)writeToSocket:(NSOutputStream *) socket { [super writeToSocket:socket]; [socket write:&m_val maxLength:sizeof(m_val)]; } @end @implementation ECTagInt16 @synthesize uint16Value = m_val; + (id)tagFromInt16:(uint16_t) value withName:(ECTagNames) name { ECTagInt16 *tag = [[ECTagInt16 alloc] init]; tag->m_val = value; tag->m_size = 2; tag->m_type = EC_TAGTYPE_UINT16; tag->m_name = name; return tag; } + (id)tagFromBuffer:(uint8_t **) buffer { ECTagInt16 *tag = [[ECTagInt16 alloc] init]; tag->m_val = ntohs(*((uint16_t *)(*buffer))); tag->m_size = 2; tag->m_type = EC_TAGTYPE_UINT16; *buffer += 2; return tag; } @end @implementation ECTagInt32 @synthesize uint32Value = m_val; + (id)tagFromInt32:(uint32_t) value withName:(ECTagNames) name { ECTagInt32 *tag = [[ECTagInt32 alloc] init]; tag->m_val = value; tag->m_size = 4; tag->m_type = EC_TAGTYPE_UINT32; tag->m_name = name; return tag; } + (id)tagFromBuffer:(uint8_t **) buffer { ECTagInt32 *tag = [[ECTagInt32 alloc] init]; tag->m_val = ntohl(*((uint32_t *)(*buffer))); tag->m_size = 4; tag->m_type = EC_TAGTYPE_UINT32; *buffer += 4; return tag; } @end @implementation ECTagInt64 @synthesize uint64Value = m_val; + (id)tagFromInt64:(uint64_t) value withName:(ECTagNames) name { ECTagInt64 *tag = [[ECTagInt64 alloc] init]; tag->m_val = value; tag->m_size = 8; tag->m_type = EC_TAGTYPE_UINT64; tag->m_name = name; return tag; } + (id)tagFromBuffer:(uint8_t **) buffer { ECTagInt64 *tag = [[ECTagInt64 alloc] init]; uint64_t lo, hi; uint32 val32 = *((uint32_t *)(*buffer)); hi = ntohl(val32); *buffer += 4; val32 = *((uint32_t *)(*buffer)); lo = ntohl(val32); *buffer += 4; tag->m_val = (hi << 32) | lo; tag->m_size = 8; tag->m_type = EC_TAGTYPE_UINT64; return tag; } - (void)writeToSocket:(NSOutputStream *) socket { [super writeToSocket:socket]; uint32_t val32 = m_val >> 32; val32 = htonl(val32); [socket write:(uint8_t *)&val32 maxLength:sizeof(val32)]; val32 = m_val & 0xffffffff; val32 = htonl(val32); [socket write:(uint8_t *)&val32 maxLength:sizeof(val32)]; } @end @implementation ECTagData - (void)writeToSocket:(NSOutputStream *) socket { [super writeToSocket:socket]; [socket write:(const uint8_t *)[m_data bytes] maxLength:m_size]; } - (void) dealloc { [m_data release]; [super dealloc]; } + (id)tagFromBuffer:(uint8_t **) buffer withLenght:(int) length { ECTagData *tag = [[ECTagData alloc] init]; tag->m_data = [NSData dataWithBytes: *buffer length: length]; [tag->m_data retain]; return tag; } @end @implementation ECTagMD5 + (id)tagFromString:(NSString *) string withName:(ECTagNames) name { ECTagMD5 *tag = [[ECTagMD5 alloc] init]; CC_MD5_CTX ctx; unsigned char md5data[16]; CC_MD5_Init(&ctx); CC_MD5_Update(&ctx, [string UTF8String], [string length]); CC_MD5_Final(md5data, &ctx); tag->m_data = [NSData dataWithBytes: md5data length: sizeof(md5data)]; [tag->m_data retain]; tag->m_size = 16; tag->m_type = EC_TAGTYPE_HASH16; tag->m_name = name; return tag; } + (id)tagFromBuffer:(uint8_t **) buffer { ECTagMD5 *tag = [[ECTagMD5 alloc] init]; tag->m_data = 0; tag->m_val.lo = *((uint64_t *)(*buffer)); (*buffer) += 8; tag->m_val.hi = *((uint64_t *)(*buffer)); (*buffer) += 8; return tag; } - (MD5Data)getMD5Data { if ( m_data ) { uint8_t *data_ptr = (uint8_t *)[m_data bytes]; uint64_t hi = *(uint64_t *)data_ptr; data_ptr += 8; uint64_t lo = *(uint64_t *)data_ptr; MD5Data md5 = {hi, lo}; return md5; } else { return m_val; } } - (NSString *)stringKey { NSString *s = [NSString stringWithFormat:@"%qx%qx", m_val.hi, m_val.lo]; return s; } @end @implementation ECTagString @synthesize stringValue = m_val; + tagFromString:(NSString *) string withName:(ECTagNames) name { ECTagString *tag = [[ECTagString alloc] init]; const char *rawstring = [string UTF8String]; tag->m_size = strlen(rawstring) + 1; tag->m_data = [NSData dataWithBytes: rawstring length: tag->m_size]; [tag->m_data retain]; tag->m_type = EC_TAGTYPE_STRING; tag->m_name = name; return tag; } + (id)tagFromBuffer:(uint8_t **) buffer { ECTagString *tag = [[ECTagString alloc] init]; tag->m_val = [NSString stringWithCString:(char *)(*buffer) encoding:NSUTF8StringEncoding]; *buffer += [tag->m_val length] + 1; return tag; } @end @implementation ECPacket @synthesize opcode = m_opcode; + (id)packetWithOpcode:(ec_opcode_t) opcode { ECPacket *p = [[ECPacket alloc] init]; [p initWithOpcode:opcode]; return p; } - (void)initWithOpcode:(ec_opcode_t) opcode { m_opcode = opcode; m_flags = 0x20; // allow notification push to my client m_flags |= EC_FLAG_NOTIFY | EC_FLAG_ACCEPTS; [self initSubtags]; } + (id)packetFromBuffer:(uint8_t *) buffer withLength:(int)length { if ( length < 11 ) { return nil; } ECPacket *p = [[ECPacket alloc] init]; uint8_t *data = buffer; p->m_flags = ntohl(*((uint32_t *)data)); data += 4; uint32_t packet_size = ntohl(*((uint32_t *)data)); data += 4; if ( packet_size > 1024*1024 ) { return nil; } p->m_opcode = (ec_opcode_t)(*data); data++; uint16_t tag_count = ntohs(*((uint16_t *)data)); data += 2; if ( tag_count ) { p->m_subtags = [[NSMutableArray alloc] init]; [p->m_subtags retain]; uint8_t *start_ptr = data; for(int i = 0; i < tag_count; i++) { ECTag *tag = [ECTag tagFromBuffer:&data withLenght:(length - (data - start_ptr))]; // some tags are not supported yet if ( tag != nil ) { [p->m_subtags addObject:tag]; } } } return p; } - (void)writeToSocket:(NSOutputStream *) socket { // 1 (command) + 2 (tag count) int packet_size = [self getSize] + 1 + 2; // No need for zlib on client side // if ( packet_size > MaxUncompressedPacket ) { // m_flags |= (Int32)ECFlags.EC_FLAG_ZLIB; // } uint32_t val32 = htonl(m_flags); [socket write:(uint8_t *)&val32 maxLength:sizeof(val32)]; if ( m_flags & EC_FLAG_ACCEPTS ) { [socket write:(uint8_t *)&val32 maxLength:sizeof(val32)]; } val32 = htonl(packet_size); [socket write:(uint8_t *)&val32 maxLength:sizeof(val32)]; [socket write:(uint8_t *)&m_opcode maxLength:sizeof(m_opcode)]; if ( [m_subtags count] ) { [self writeSubtagsToSocket:socket]; } else { uint16_t val16 = 0; [socket write:(uint8_t *)&val16 maxLength:sizeof(val16)]; } } @end @implementation ECLoginAuthPacket - (NSString *)getMD5_Str:(NSString *) str { CC_MD5_CTX ctx; unsigned char md5data[16]; CC_MD5_Init(&ctx); CC_MD5_Update(&ctx, [str UTF8String], [str length]); CC_MD5_Final(md5data, &ctx); NSString *MD5str = [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", md5data[0], md5data[1],md5data[2],md5data[3], md5data[4],md5data[5],md5data[6],md5data[7], md5data[8],md5data[9],md5data[10],md5data[11], md5data[12],md5data[13],md5data[14],md5data[15] ]; return MD5str; } + (id)loginPacket:(NSString *) password withSalt:(uint64_t) salt { ECLoginAuthPacket *p = [[ECLoginAuthPacket alloc] init]; [p initWithOpcode:EC_OP_AUTH_PASSWD]; NSString *saltStr = [NSString stringWithFormat:@"%llX", salt]; // CC_MD5_CTX ctx; // unsigned char md5data[16]; // CC_MD5_Init(&ctx); // CC_MD5_Update(&ctx, [saltStr UTF8String], [saltStr length]); // CC_MD5_Final(md5data, &ctx); // NSString *saltMD5 = [NSString stringWithFormat:@"%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x%x", // md5data[0], md5data[1],md5data[2],md5data[3], // md5data[4],md5data[5],md5data[6],md5data[7], // md5data[8],md5data[9],md5data[10],md5data[11], // md5data[12],md5data[13],md5data[14],md5data[15] // ]; NSString *saltMD5 = [p getMD5_Str: saltStr]; NSString *newPass = [NSString stringWithFormat:@"%@%@", [p getMD5_Str: password], saltMD5]; NSLog(@"[EC] using salt=%@ saltHash=%@ newPass=%@\n", saltStr, saltMD5, newPass); ECTagMD5 *passtag = [ECTagMD5 tagFromString: newPass withName:EC_TAG_PASSWD_HASH]; [p->m_subtags addObject:passtag]; return p; } @end @implementation ECLoginRequestPacket + (id)loginPacket:(NSString *) version { ECLoginRequestPacket *p = [[ECLoginRequestPacket alloc] init]; [p initWithOpcode:EC_OP_AUTH_REQ]; ECTagString *version_tag = [ECTagString tagFromString:version withName:EC_TAG_CLIENT_VERSION]; [p->m_subtags addObject:version_tag]; ECTagString *client_name_tag = [ECTagString tagFromString:@"cocoa-frontend" withName:EC_TAG_CLIENT_NAME]; [p->m_subtags addObject:client_name_tag]; ECTagInt64 *proto_version_tag = [ECTagInt64 tagFromInt64:EC_CURRENT_PROTOCOL_VERSION withName:EC_TAG_PROTOCOL_VERSION]; [p->m_subtags addObject:proto_version_tag]; return p; } @end @implementation ECRemoteConnection @synthesize error = m_error; + (id)remoteConnection { ECRemoteConnection *p = [[ECRemoteConnection alloc] init]; // // rx buffer can be resized as needed // p->m_rxbuf = [NSMutableData dataWithLength:1024]; [p->m_rxbuf retain]; p->m_login_handler = [amuleLoginHandler initWithConnection:p]; [p->m_login_handler retain]; // // client only transmit commands, which are // quite small in size. "big enough" buffer will do the trick // // p->m_txbuf = [NSMutableData dataWithLength:1024]; // [p->m_txbuf retain]; p->m_txbuf = nil; return p; } - (void) dealloc { [m_rxbuf release]; [m_txbuf release]; [m_istream release]; [m_ostream release]; [super dealloc]; } - (bool)isIpv4Address:(NSString *) address { NSArray *ar = [address componentsSeparatedByString:@"."]; if ( [ar count] != 4 ) { return false; } for (NSString *s in ar) { const char *p = [s UTF8String]; while ( *p ) { if ( !isdigit(*p) ) { return false; } p++; } } return true; } - (void)connectToAddress:(NSString *) hostname withPort:(int)trgport { m_error = false; NSHost *host = [NSHost hostWithName:hostname]; NSString *addr = nil; // // On Mac localhost has ipv6 address (linklocal), but amuled listen // only on ipv4 // for (NSString *ad in host.addresses) { NSLog(@"host have address=%@ is_ipv4=%d\n", ad, [self isIpv4Address:ad]); if ( [self isIpv4Address:ad] ) { addr = ad; break; } } if ( addr == nil ) { return; } host = [NSHost hostWithAddress:addr]; [NSStream getStreamsToHost:host port:trgport inputStream:&m_istream outputStream:&m_ostream]; [m_istream retain]; [m_ostream retain]; [m_istream setDelegate:self]; [m_ostream setDelegate:self]; [m_istream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [m_ostream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; [m_istream open]; [m_ostream open]; m_remaining_size = 8; m_rx_size = 0; } - (void)sendLogin:(NSString *) password { [m_login_handler usePass: password]; ECLoginRequestPacket *p = [ECLoginRequestPacket loginPacket:@"0.1"]; [self sendPacket:p]; } - (void)sendPacket:(ECPacket *) packet { NSOutputStream *memstream = [NSOutputStream outputStreamToMemory]; [memstream open]; [packet writeToSocket:memstream]; id data = [memstream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; m_tx_size = [data length]; NSLog(@"[EC] sending packet %d bytes\n", m_tx_size); m_tx_ptr = [m_ostream write:(const uint8_t *)[data bytes] maxLength:[data length]]; NSLog(@"[EC] %d bytes sent\n", m_tx_ptr); if ( m_tx_ptr == m_tx_size ) { m_txbuf = nil; } else { m_txbuf = (NSData *)data; [m_txbuf retain]; } NSStreamStatus stream_status = [m_ostream streamStatus]; switch ( stream_status ) { case NSStreamStatusNotOpen: case NSStreamStatusClosed: case NSStreamStatusError: NSLog(@"[EC] error in output stream\n"); m_error = true; break; default:; } // NSLog(@"[EC] status in output stream=%d\n", stream_status); } - (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode { switch(eventCode) { case NSStreamEventOpenCompleted: { NSLog(@"[EC] open complete\n"); break; } case NSStreamEventErrorOccurred: { NSError *e = [stream streamError]; NSString *description = [e localizedDescription]; NSLog(@"[EC] socket error [%s]\n", [description UTF8String]); break; } case NSStreamEventHasBytesAvailable: { uint8_t *data_ptr = (uint8_t *)[m_rxbuf mutableBytes]; unsigned int len = [m_rxbuf length]; len = [(NSInputStream *)stream read:data_ptr + m_rx_size maxLength:len]; #ifdef EC_RX_DEBUG NSLog(@"[EC] receiving %d bytes, %d in total, %d remaining\n", len, m_rx_size, m_remaining_size); #endif if ( len == 0 ) { // // Remote side must be closed connection // m_error = true; if ( [delegate respondsToSelector:@selector(handleError)] ) { [delegate performSelector:@selector(handleError)]; } } int total_len = len; int packet_offset = 0; while ( total_len != 0 ) { len = ( m_remaining_size > total_len ) ? total_len : m_remaining_size; total_len -= len; // are we still waiting for flags and size? if ( m_rx_size < 8 ) { if ( (m_rx_size + len) >= 8 ) { // got flags and packet size - may proceed //uint32_t flags = *(((uint32_t *)[m_rxbuf mutableBytes]) + 0); uint32_t val32 = *((uint32_t *)(data_ptr + 4 + packet_offset)); int delta = 8 - m_rx_size; m_remaining_size = ntohl(val32) - (len - delta); #ifdef EC_RX_DEBUG NSLog(@"[EC] rx got flags+size, remaining count %d\n", m_remaining_size); #endif } else { m_remaining_size -= len; } } else { m_remaining_size -= len; } m_rx_size += len; if ( m_remaining_size == 0 ) { // // full packet received, call handler // uint8_t *packet_start = data_ptr + packet_offset; int packet_length = [m_rxbuf length] - packet_offset; ECPacket *packet = [ECPacket packetFromBuffer:packet_start withLength:packet_length]; packet_offset += m_rx_size; if ( [m_login_handler loginOK] ) { #ifdef EC_RX_DEBUG NSLog(@"[EC] calling delegate\n"); #endif if ( [delegate respondsToSelector:@selector(handlePacket:)] ) { [delegate performSelector:@selector(handlePacket:) withObject:packet]; } } else { NSLog(@"[EC] login handler\n"); [m_login_handler handlePacket: packet]; } m_remaining_size = 8; m_rx_size = 0; } } break; } case NSStreamEventHasSpaceAvailable: { if ( m_txbuf != nil ) { int remaining = [m_txbuf length] - m_tx_ptr; if ( remaining ) { const uint8_t *txdata = ((const uint8_t *)[m_txbuf bytes]) + m_tx_ptr; int txcount = [m_ostream write:txdata maxLength:remaining]; m_tx_ptr += txcount; } else { [m_txbuf release]; m_txbuf = nil; } } break; } } } - (void)setDelegate:(id)val { delegate = val; } - (id)delegate { return delegate; } @end @implementation amuleLoginHandler + (id)initWithConnection:(ECRemoteConnection *) connection { amuleLoginHandler *obj = [[amuleLoginHandler alloc] init]; obj->m_connection = connection; obj->m_state = LOGIN_REQUEST_SENT; return obj; } - (void)usePass:(NSString *) pass { m_pass = pass; } - (void)handlePacket:(ECPacket *) packet { switch(m_state) { case LOGIN_IDLE: NSLog(@"[EC]: error - no packet should come until request is sent\n"); break; case LOGIN_REQUEST_SENT: if ( packet.opcode == EC_OP_AUTH_SALT ) { uint64_t salt = [packet tagInt64ByName:EC_TAG_PASSWD_SALT]; ECLoginAuthPacket *auth_packet = [ECLoginAuthPacket loginPacket:m_pass withSalt:salt]; [m_connection sendPacket:auth_packet]; m_state = LOGIN_PASS_SENT; } else { NSLog(@"[EC]: error - expecting packet with EC_OP_AUTH_SALT, not [%d]\n", packet.opcode); m_state = LOGIN_IDLE; } break; case LOGIN_PASS_SENT: if ( packet.opcode == EC_OP_AUTH_OK ) { m_state = LOGIN_OK; } else { NSLog(@"[EC]: error - login failed, core replied with code=[%d]\n", packet.opcode); } break; case LOGIN_OK: NSLog(@"[EC]: error - this delegate should be replaced after login completed\n"); break; } } - (void)reset { m_state = LOGIN_IDLE; } - (bool)loginOK { return m_state == LOGIN_OK; } @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/0000755000175000017500000000000012611472361025346 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/InfoPlist.strings0000644000175000017500000000030212611472361030663 0ustar morphmorph/* Localized versions of Info.plist keys */ NSHumanReadableCopyright = " aMule project, 2008";amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/LoginDialog.nib/0000755000175000017500000000000012611472361030305 5ustar morphmorph././@LongLink0000644000000000000000000000015600000000000011605 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/LoginDialog.nib/classes.nibamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/LoginDialog.nib/cl0000644000175000017500000000220612611472361030626 0ustar morphmorph IBClasses CLASS FirstResponder LANGUAGE ObjC SUPERCLASS NSObject ACTIONS closeCancel id closeOK id CLASS LoginDialogController LANGUAGE ObjC OUTLETS m_dlg id m_host_field NSTextField m_pass_field NSTextField m_port_field NSTextField SUPERCLASS NSObject CLASS NSObject LANGUAGE ObjC IBVersion 1 ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/LoginDialog.nib/info.nibamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/LoginDialog.nib/in0000644000175000017500000000105612611472361030640 0ustar morphmorph IBFramework Version 629 IBLastKnownRelativeProjectPath ../../cocoa-mule.xcodeproj IBOldestOS 5 IBOpenObjects 6 IBSystem Version 9G55 targetFramework IBCocoaFramework ././@LongLink0000644000000000000000000000016300000000000011603 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/LoginDialog.nib/keyedobjects.nibamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/LoginDialog.nib/ke0000644000175000017500000001725512611472361030641 0ustar morphmorphbplist00 X$versionT$topY$archiverX$objects]IB.objectdata_NSKeyedArchiver 156<=AENVfo p$%'*+,349<>AIJ]^_bemnuvw  %&( ),-./2389<ABGHMNadexU$null  !"#$%&'()*+,-./0VNSRootV$class]NSObjectsKeys_NSClassesValues_NSAccessibilityOidsValues]NSConnections[NSNamesKeys[NSFramework]NSClassesKeysZNSOidsKeys]NSNamesValues_NSAccessibilityConnectors]NSFontManager_NSVisibleWindows_NSObjectsValues_NSAccessibilityOidsKeysYNSNextOid\NSOidsValuesA234[NSClassName_LoginDialogController789:X$classesZ$classname:;^NSCustomObjectXNSObject_IBCocoaFramework>?@ZNS.objects78BCCD;\NSMutableSetUNSSet>FG2HIJKLM "z}OPQRSU]NSDestinationXNSSourceWNSLabel!  WXYZ[\]^_`abcd^_NSNextResponderWNSFrameVNSCellXNSvFlagsYNSEnabledXNSWindow[NSSuperview   WXgZ\]hijkldhZNSSubviews[1m] [_{{84, 27}, {180, 22}}qrstuvwxyz{|}~Sc_NSAllowedInputLocales[NSCellFlags_NSBackgroundColorZNSContentsYNSSupport]NSControlView\NSCellFlags2_NSDrawsBackground[NSTextColora@ @ PVNSSizeVNSNameXNSfFlags#@*\LucidaGrande78;VNSFontWNSColor\NSColorSpace[NSColorName]NSCatalogNameVSystem_textBackgroundColorWNSWhiteB178;YtextColorB0>_&NSAllRomanInputSourcesLocaleIdentifier78;WNSArray78Y;_NSSecureTextFieldCell_NSTextFieldCell\NSActionCell78;_NSSecureTextField[NSTextFieldYNSControlVNSView[NSResponder\m_pass_field78ģ;_NSNibOutletConnector^NSNibConnectorOPQRʀ!#y\NSWindowView\NSScreenRect]NSWindowTitleYNSWTFlags]NSWindowClass\NSWindowRectYNSMaxSize_NSWindowBacking_NSWindowStyleMaskYNSMinSize[NSViewClass)xu%px&$wv(_{{242, 477}, {568, 282}}_Connect to aMule core\YNS.string'78;_NSMutableStringXNSString'TViewWgZ\2]dld_NSOriginalClassName[NSFrameSize t+,r *s[loginDialog>F2h-;BGQUX[WX gZ \  ] bdYNSBoxType[NSTitleCell]NSTransparent\NSBorderTypeYNSOffsets_NSTitlePosition]NSContentView):53. 4)/>F2/WXZ\]i!ld-10 -_{{1, 1}, {529, 61}}78&;78());^NSMutableArray_{{17, 185}, {531, 77}}V{0, 0}rstuwy-.}0129678_aMule core running at:68#@& ;M0 0.8000000178=Y;78?@@;UNSBoxWXYZ[\]CDEbcd׀)A<= )_{{155, 36}, {96, 32}}rKLMNtuvOwPQR~TUVWZ[\_NSAlternateContents_NSPeriodicInterval^NSButtonFlags2_NSKeyEquivalent_NSPeriodicDelay]NSButtonFlags@?>;@ROKQ 78`aaY;\NSButtonCell78cdd;XNSButtonWXYZ[\]Chibcd׀)ACD )_{{312, 36}, {96, 32}}rKLMNtuvOwP-R~TUqrZ[\@FEBVCancelQWXYZ[\]yz{bcd׀)PHI )_{{33, 217}, {38, 17}}rstuvwy.@9KJGNUHost:ML\controlColorK0.66666669O_controlTextColor78;WXYZ[\]ybcd׀)PRS )_{{322, 217}, {38, 17}}rstuvwy.9KTQNUPort:WXYZ[\]ybcd׀)PVW )_{{365, 215}, {96, 22}}rstuvwxy.}~cqA9U@$ WXYZ[\]ybcd׀)PYZ )_{{80, 215}, {191, 22}}rstuvwxy.}~c9X WX gZ \  ] d^):on\ 4) >F݀2^ >F2S^ bWXYZ[\]^ybcd^ P_` _{{15, 29}, {64, 17}}rstuvwy.9Ka^NXPasswordWXYZ[\]^Cbcd^ Acd _{{340, 28}, {126, 18}}rKLMNtuvOwPQR~T~Z ]NSNormalImage_NSAlternateImage@fjebHP^UhSU )Q[/X^#Bb ;-G23c]NSApplication>gh^^^׀)[#))-) ) )))>zUhSU)Q#^Bb[ ;-GX>ZText Field]login Dialog_Static Text (Port:)VWindow_Static Text (Password)[Application_Push Button (Cancel)_Check Box (Save password)_Box (Authentication)\File's Owner\Text Field-2_Push Button (OK)_Box (aMule core running at:)_Static Text (Host:)\Text Field-1>׀)>*>JIH^UhLKSMUz")Q [/X}^#Bb ;-G>π怜# ";?4>@$:5<69  !>F2>>78;^NSIBObjectData"'1:?DRTf(/6DVr(2?ACEGIKMOQSUWY[]_aclxz|$&3579;=?P^goqsuw!$&(@i  #*35>@CPY^ez!.03<>ACluz  -6=Tctvxz|   * 4 @ B D F H M O Q S U W Y [ v   % ' ) + - / 1 3 5 A J L ] _ a c e g i k m           ! # & ( A C E G I K a j q z      # % 3 < E N W ] ~  2 @ I K M O Q S U W Y [ ` i l n w !#%')+-46WY[]_`bd|)2=^`bdfgik#,.0246;<>_aceghjl ')+-NPRTVWY[r(6IKMOQSUWY^ly,IKMOQSboq|&/6N_acegt %.0SUWY[]_acegikmoqs|~ 6=Vby$&)+469;DFwy{}   $&(*,.02468:<>GIJSUV_abkpamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/MainMenu.nib/0000755000175000017500000000000012611472361027626 5ustar morphmorph././@LongLink0000644000000000000000000000015600000000000011605 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/MainMenu.nib/designable.nibamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/MainMenu.nib/desig0000644000175000017500000062132712611472361030657 0ustar morphmorph 1050 9G55 677 949.43 353.00 YES YES com.brandonwalkin.BWToolkit com.apple.InterfaceBuilderKit com.apple.InterfaceBuilder.CocoaPlugin YES YES YES YES NSApplication FirstResponder NSApplication AMainMenu YES aMule 1048576 2147483647 NSImage NSMenuCheckmark NSImage NSMenuMixedState submenuAction: aMule YES About aMule 2147483647 YES YES 1048576 2147483647 UHJlZmVyZW5jZXPigKY , 1048576 2147483647 YES YES 1048576 2147483647 Services 1048576 2147483647 submenuAction: Services YES _NSServicesMenu YES YES 1048576 2147483647 Hide aMule h 1048576 2147483647 Hide Others h 1572864 2147483647 Show All 1048576 2147483647 YES YES 1048576 2147483647 Quit aMule q 1048576 2147483647 _NSAppleMenu File 1048576 2147483647 submenuAction: File YES Add ed2k link n 1048576 2147483647 YES YES 1048576 2147483647 Page Setup... P 1179648 2147483647 UHJpbnTigKY p 1048576 2147483647 View 1048576 2147483647 submenuAction: View YES Show Toolbar t 1572864 2147483647 Window 1048576 2147483647 submenuAction: Window YES Minimize m 1048576 2147483647 Zoom 1048576 2147483647 YES YES 1048576 2147483647 Bring All to Front 1048576 2147483647 _NSWindowsMenu Help 1048576 2147483647 submenuAction: Help YES aMule Help ? 1048576 2147483647 _NSMainMenu 15 2 {{335, 74}, {1008, 676}} 1946157056 aMule NSWindow 4914F9B0-9937-4196-9689-7544DD4FD074 YES YES NO NO 1 1 YES YES 159427B1-5D8B-4F3C-A2FC-F2F453EA1D14 62AA47AC-884E-456B-9F94-1F3F04647AF6 767BD347-1697-4006-B735-86CBF19465F8 958D1D36-B9A4-4CDD-8CDC-7693F081D29B D068E44F-D3FF-4B1C-BB88-295078B93B92 NSToolbarCustomizeToolbarItem NSToolbarFlexibleSpaceItem NSToolbarPrintItem NSToolbarSeparatorItem NSToolbarShowColorsItem NSToolbarShowFontsItem NSToolbarSpaceItem YES 159427B1-5D8B-4F3C-A2FC-F2F453EA1D14 Transfers Transfers NSImage Toolbar_Transfers {0, 0} {0, 0} YES YES -1 YES 0 62AA47AC-884E-456B-9F94-1F3F04647AF6 Shared Shared NSImage Toolbar_Shared {0, 0} {0, 0} YES YES -1 YES 0 767BD347-1697-4006-B735-86CBF19465F8 Stats Stats NSImage Toolbar_Stats {0, 0} {0, 0} YES YES -1 YES 0 958D1D36-B9A4-4CDD-8CDC-7693F081D29B Network Network NSImage Toolbar_Network {0, 0} {0, 0} YES YES -1 YES 0 D068E44F-D3FF-4B1C-BB88-295078B93B92 Search Search NSImage Toolbar_Search {0, 0} {0, 0} YES YES -1 YES 0 NSToolbarCustomizeToolbarItem Customize Customize Customize Toolbar 683671552 {32, 32} YES YES TU0AKgAAEAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAICAgbAAAABAAAAAAEBAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAQEBAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAENDQ0dJSUlW11dXbBpaWnDb29vzyAgIGUPDw8xAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAABsbGyUoKChIHh4ePSkpKUonJycsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDCEJCQoWvr6/i9fX1/fX19f7h4eH82dnZ+YODg9sYGBg8 AAAAAAAAAAAAAAAAAAAAAAAAAAJFRUV6ZGRkvf39/f/+/v7//////0NDQ7QAAAAEAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8PDx9ISEiH2tra8/7+/v/j4+P/2NjY/7a2tv+ysrL/ i4uL7j09PeUKCgoSAAAAAAAAAAAAAAAAUVFRlo2NjfTIyMj6x8fH/56env97e3v/ISEhMAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPDw8lRUVFjtDQ0Pb+/v7/4eHh/dDQ0P+NjY3/ Tk5O6yoqKrIfHx+gGhoarCIiImwAAAABAAAAADg4OGWenp7/y8vL/d3d3f+8vLz/hYWF/0RERE0AAAAA AAAAAAAAAAAfHx8sAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj8/P2za2try9/f3/+vr6/7Kysr/ dnZ2/D4+PvwgICB+EBAQNAICAgcAAAAPERERPQMDAwkQEBASh4eH2MHBwf/o6Oj/39/f/3R0dP88PDxO AAAAAAAAAAAAAAAAcnJylkNDQ58HBwcIAAAAAAAAAAAAAAAAAAAAAAAAAAAGBgYMfn5+uMvLy/3Hx8f+ u7u7/5OTk/9CQkL7HRYL7AICAgQAAAAAAAAAAAAAAAAAAAAAAgICBS4uLjOWlpbz6urq/+7u7v+rq6v/ IyMj0wAAAAAAAAAAAAAAAIGBgZGLi4v/QkJC2Q0NDSYAAAAAAAAAAAAAAAAAAAAAGRkZJF5eXoylpaXz pqam/4qKiv91dXX/YWFh+iwkHvojEADrJhcGoAgICA0AAAAAAAAAAAAAAAAAAAAAPj4+RJaWlvr19fX/ 6+vr/7W1tfVaWlrlAwMDbAAAAACKioqcoqKi/7+/v/9HR0fnDg4OJwAAAAAAAAAAHR0dK3V1dZ+pqanC +vr6/9vb2/99fX3+Y2Nj+EhISOgMCAP4JhIA8jgaAPBxNADsNyMMjgcHBwsAAAAAAAAAAAAAAAAMDAwO m5ub+Orq6v/y8vL/0NDQ7ICAgMtkZGTqcHBwzLOzs//Pz8//0tLS/0xMTNoJCQkhAAAAABoaGjZ/f3+4 //////j4+P/9/f3/9vb2/0dHR/8oKCjkKSkpoAQCAJUNBQDXVSgA5XY5AOuTSADcOiUOewYGBgoAAAAA AAAAAB4eHmFlZWX76Ojo/+7u7v/5+fn/5OTk9Li4uO3f39//8PDw/+Hh4f/Ly8v/Ozs7rQICAgMAAAAA GBgYL3x8fP///////////7S0tP+np6f/QEBA+xUVFXUJCQkkBAQEDgcFA20jEQC7YzIA3n9BAOiiUwDK NiMObgYGBgoTExNIOzs74bGxsf3Dw8P/1dXV////////////////////////////8/Pz/3R0dOcPDw9H AAAAAQAAAAAAAAAAVVVVooCAgP/v7+//v7+//2VlZf86OjrLAQEBBgAAAAAAAAAAAAAAABENCVctFwCl ZTQA1oZFAOCqWgDAMiMTgzExMcKzs7P4wcHB/5+fn//W1tb///////v7+/v//////////729vfOFhYXy IyMjdAAAAAMAAAABAAAAAAAAAAAAAAAASkpKmlpaWv+RkZH/Nzc38hgYGG4AAAABAAAAAAAAAAAAAAAA AAAAAAsFAEUwGACbaDcAzXpCAOFnRiLjs7Kx+MTExP+pqan/09PT/3p6evpdXV3rbGxs6l1dXfVXV1fs UlJSxykpKWMAAAAGAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAQUFBmiMjI/8cHBysBQUFHQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAsFAEAuGACfSzAT47y4s/24uLj/lJSU/9TU1P+Dg4PkMzMzzwYGBgw6OjpB QEBASQ8PDxYbGxshAAAAAgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIimgoKCi4AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAwJBYS9u7n4r6+v/4GBgf/Pz8//iISB6CYmJqoDAwMK AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAABUwcHB7qurq/9ubm7/zs7O/5yOgPhlPhbf MhsCegAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMnCgoKZsvLy++pqan/Wlpa/9LS0v+Nh4Hq SCYE4IdDAeSbTgDLNxsAhwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMOxoaGobV1dXzq6ur/0ZGRv/Z2dn/ hoaGxQkEAIY6HgCyaDMA2YVAAOuWSQDZPh4AngAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYGFEoKCio0tLS86urq/8xMTH/ 4uLi/4+Pj84AAABIAAAAAg8HAGg6HQDKaDIA4YI+APCVRQDsRSEAuAAAABMAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFhYrNTU1z9ra2vb8/Pz/ FxcX/+rq6v+amprZAAAASAAAAAIAAAAAAAAAABAIAIY4GwDiaTEA6X46APeVRAD/SyIA0gAAABIAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICBT8/P4asrKz3 0dHR//39/f/z8/P/paWl5gUFBVkAAAACAAAAAAAAAAAAAAAAAAAAABIJAKUxFgD6bTMA9no4AP9uLwD/ KxIAxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBwcO QUFBmpqamv+pqan/+Pj4/7GxsfIXFxeBAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAHAMogDgD/ WSkA/zwaAPcuEwCyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAEBAQMnJydWUFBQ85aWlvqoqKjfKioqrQEBAQUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAsFAOUXCQD6IA4AwgQCADMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAgICBBR0dHmi4uLnACAgIHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAgDAMwFAgA9AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE AAAACQAAABAAAAAYAAAAIAAAACoAAAAxAAAANgAAADkAAAA4AQEBOQAAAC8AAAAnAAAAHQAAABUAAAAO AAAACgAAAAsAAAAPAAAAFwAAACAAAAAqAAAAMQAAADQAAAAzAAAALQAAACQAAAAbAAAAEgAAAAsAAAAA AAAAAAAAAAQAAAAJAAAAEAAAABgAAAAgAAAAKgAAADEAAAA2AAAAOQAAADgAAAA1AAAALwAAACcAAAAd AAAAFQAAAA4AAAAKAAAACwAAAA8AAAAXAAAAIAAAACoAAAAxAAAANAAAADMAAAAtAAAAJAAAABsAAAAS AAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0BAAADAAAAAQAgAAABAQADAAAAAQAgAAABAgADAAAABAAA EKoBAwADAAAAAQABAAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAE AAABFgADAAAAAQD8AAABFwAEAAAAAQAAEAABHAADAAAAAQABAAABUgADAAAAAQABAAABUwADAAAABAAA ELIAAAAAAAgACAAIAAgAAQABAAEAAQ 3 MCAwAA runToolbarCustomizationPalette: {0, 0} {0, 0} YES YES -1 YES 0 NSToolbarFlexibleSpaceItem Flexible Space {1, 5} {20000, 32} YES YES -1 YES 0 YES YES 1048576 2147483647 NSToolbarPrintItem Print Print Print 750780416 {32, 32} YES YES YES YES imageNameKey widget YES image.ToolbarPrint image {32, 32} 0 YES printDocument: {0, 0} {0, 0} YES YES -1 YES 0 NSToolbarSeparatorItem Separator {12, 5} {12, 1000} YES YES -1 YES 0 YES YES 1048576 2147483647 NSToolbarShowColorsItem Colors Colors Show Color Panel 683671552 {32, 32} YES YES TU0AKgAAEAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCQEOEzkMUylkF5BChyLCWqEq6G+wL/1voSro ZYciwlFkGJAyOQxTCAkBDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADkEPXiWEIbtJyTf/Yt9C/370Tf+d/lf/ tv9c/77+V/+/9E7/u99C/7XJOf9+hCK7QUAOXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxQHHRZjIY42zEH+RvBI/2r/W/9//2D/ kf9k/6L/Zv+w/mf/wf9m/9T/Zv/l/2H//v9e/+/ySv/Mwzj+Y1kXjhQRAx0AAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMUCR0adDOgP91f/1n/c/9c/2P/ aP5i/4P+bv+Y/nL/qP53/7r+d//K/nb/2P5z/+f+bv/5/2f///9i///8W//dwD//dF4coBQPAx0AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFmM0jj7dc/9Z/4r/ Yf5//2z+ff9y/nX/iP59/6H+hf+w/on/wf6K/9H+if/g/ob/7/6A////eP//823//uNk///kXf/drT// Y0cXjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1BKF41zHv+ WP+m/2H+mP9s/pb/eP6T/4L+jf+P/or/p/6V/7j+mv/L/p3/2/6a/+f+lv/8/5D///uH//7pe//+3G// /sxk///MXf/Mizj+QSkOXgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCQYO IIRau0fwov9d/6//a/6q/3j+qv+H/qj/k/6l/5r+nv+s/qL/wv6q/9T+rP/i/qv/8v+m////n//+8ZX/ /uGK//7Se//+w23//7hh//CdSv+ETiK7CQUBDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAw5K1M2yZX/Wv/K/2P+vv90/rz/hP67/5L+uv+f/rr/qf60/7L+sP/K/rr/2/69/+z+u//8/7X/ //mt//7nov/+2Jb//sqJ//65eP/+q2f//6Re/8htOf85GwxSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAFmRRkD7ftv9d/9f/a/7O/3r+zv+M/s//mv7N/6r+zP+3/s3/wP7F/87+yP/l/s// 9v/N////xP/+7bv//t6t//7Qn//+v5D//q+A//6fbv//lGH/321C/2MrGI8AAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAfh3fCSfTW/2D/4/9v/t//g/7f/5H+3/+k/t//sv7g/8H+3v/Q/t7/ 2P7Z/+3+4P///93///fT//7kxP/+17T//sSo//61l//+pYb//pRz//+FZv/0bU7/hzIiwgAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACihmehT/vn/Yv/z/3L/8f+F//H/lv/z/6f/8/+3//H/ yf/x/9n/8v/o//D/+P/x///97f/+6dv//tnK//7Iuv/+tqr//qeZ//6WiP/+hXb//3Nl//5jVv+hMyno AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAK62w/Vb///9j/v//dP7//4b+//+X/v// qP7//7f+///L/v//3P7//+////////////L0//7e4P/+zc///ru9//6qrP/+mZv//oiK//51d//+ZWf/ /1pc/7AvMf0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAolqHoUfX+/2Hu//9x7f7/ hO3+/5ft/v+m7f7/tu3+/8jt/v/X7P7/5Or+//Xt////6f///tvt//7K3f/+usv//qq7//6YrP/+h5r/ /neK//9md//+VWj/oSk26AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB91h8JJ0fT/ Yd///27b/v+A2/7/kdv+/6Hc/v+w2v7/wNv+/8rX/v/V1P7/69z+//7Z////0Pn//sLm//602P/+pcj/ /pW3//6EqP/+cpb//2WJ//RNcP+HIjTCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA FlBkkD+x3/9a0f//asr+/3rL/v+Kyf7/mcr+/6fH/v+0x/7/u8D+/83F/v/ky/7/8sn///+////+uPD/ /qng//6d0f/+jsP//n6y//5uov//Xpf/30Jx/2MXLI8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAALKjlTNJLJ/1jG//9huP7/crf+/4G2/v+Ptf7/nLP+/6av/v+xrP7/yLb+/9q3/v/qt/7/ +7L///+q+//+n+n//pPa//6Fy//+dLz//mWu//9cqP/IN3D/OAwbUgAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAEGCQ4eWIS7RZ3w/1us//9npf7/daX+/4Wj/v+OoP7/l5j+/6qg/v/Apv7/ 0Kj+/+Cn/v/wpP7//5r///+S8//+h+P//njU//5sxf//X7r/8Emd/4QhT7sJAQUOAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0mQV4zd8z+V6D//16T/v9pkf7/dY7+/3+G/v+Nh/7/ pZH+/7aX/v/Jl/7/2Zb+/+aR/v/3jP///4L+//556//+bN7//mHO//9Zzv/MNo3+QA0pXQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUyY446bt3/VoX//156/v9ndv7/ bm7+/4d3/v+fgv7/roP+/7+G/v/Phf7/3oL+/+18/v//dP///2v2//5h5f//Web/3T2u/2MWSI4AAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwgUHRkwdKA6WN3/ VWz//1le//9nX/7/gWr+/5Ru/v+ncf7/tnT+/8hy/v/Wb/7/5mr+//Rj////Xf///1j+/90+wv90Gl+g EwMOHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA BAcWHxciaJMzPMz+RkTw/2hY//98Wv//j2H//6Bh//+uY/7/v2L//9Jg///jXf///Fr//+5H8v/MNcX+ aBhdkxUEEh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAACAAAABRMTU3QoI5TMSDPI/2FA3/9+SfT/mVH+/7RW//+8U/7/vUn0/7o+3/+zNcj/ jSSUzFMSUnMAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAQIAAAkFAAAVCAAAIg8EEkEmFl+UPCGOyE8op+dgK7D3biux/ncrsPd9KKfn dSGOyFkWX5QbBBJBCAAAIgUAABUCAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAABgIAABAFAAAcCAAAKQwAADkRAABIFQAAVRgAAF0YAABf GAAAXRUAAFURAABIDAAAOQgAACkFAAAcAgAAEAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAUAAAAIAAAACwAAAA4AAAAS AAAAFAAAABUAAAAUAAAAEgAAAA4AAAALAAAACAAAAAUAAAACAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0BAAADAAAAAQAgAAABAQADAAAAAQAgAAABAgADAAAABAAA EKoBAwADAAAAAQABAAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAE AAABFgADAAAAAQD8AAABFwAEAAAAAQAAEAABHAADAAAAAQABAAABUgADAAAAAQABAAABUwADAAAABAAA ELIAAAAAAAgACAAIAAgAAQABAAEAAQ orderFrontColorPanel: {0, 0} {0, 0} YES YES -1 YES 0 NSToolbarShowFontsItem Fonts Fonts Show Font Panel 683671552 {32, 32} YES YES TU0AKgAAEAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAABQfL3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAOFiJQLkdt/wsRG0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACg+X+AuR23/FB8vcAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXIzaALkdt/y5Hbf8XIzaAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQgNICtCZvAuR23/Lkdt/yI1UsAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcLESgJTlY0C5Hbf8uR23/ JTlY0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQgNIC5Hbf8LERtA Lkdt/y5Hbf8uR23/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiNVLA IjVSwAAAAAAoPl/gLkdt/y5Hbf8IDRQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA CxEbQC5Hbf8FCA0gAAAAACI1UsAuR23/Lkdt/wsRG0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAiNVLAHCxEoAAAAAAAAAAAHzFLsC5Hbf8uR23/FyM2gAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAACxEbQC5Hbf8FCA0gAAAAAAAAAAAXIzaALkdt/y5Hbf8cLESgAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAiNVLAIjVSwAsRG0ALERtACxEbQBwsRKAuR23/Lkdt/yI1UsAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxEbQC5Hbf8uR23/Lkdt/y5Hbf8uR23/Lkdt/y5Hbf8uR23/ K0Jm8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiNVLAHCxEoAAAAAAAAAAAAAAAAAAAAAAFCA0g Lkdt/y5Hbf8uR23/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxEbQC5Hbf8FCA0gAAAAAAAAAAAAAAAA AAAAAAAAAAAuR23/Lkdt/y5Hbf8LERtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiNVLAIjVSwAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAACg+X+AuR23/Lkdt/xEaKWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACxEbQC5Hbf8LERtA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIjVSwC5Hbf8uR23/FyM2gAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUIDSArQmbw Lkdt/wIEBhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiNVLALkdt/y5Hbf8fMUuwAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBAYQ JTlY0C5Hbf8uR23/JTlY0AgNFDAAAAAAAAAAAAAAAAAAAAAADhYiUCg+X+AuR23/Lkdt/y5Hbf8IDRQw AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAP AAAAFiU5WNUlOVjWIjVRyiI1UcsiNVLMKD5f5gAAADQAAAA2AAAANhEaKYAuR23/JTlY2SI1UcsiNVHK JTlY1i5Hbf8FCQ0zAAAADwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAACAAAAA8AAAAWAAAAHQAAACIAAAAnAAAALAAAAC8AAAAyAAAANAAAADYAAAA2AAAANAAAADIAAAAv AAAALAAAACcAAAAiAAAAHQAAABYAAAAPAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0BAAADAAAAAQAgAAABAQADAAAAAQAgAAABAgADAAAABAAA EKoBAwADAAAAAQABAAABBgADAAAAAQACAAABEQAEAAAAAQAAAAgBEgADAAAAAQABAAABFQADAAAAAQAE AAABFgADAAAAAQD8AAABFwAEAAAAAQAAEAABHAADAAAAAQABAAABUgADAAAAAQABAAABUwADAAAABAAA ELIAAAAAAAgACAAIAAgAAQABAAEAAQ orderFrontFontPanel: {0, 0} {0, 0} YES YES -1 YES 0 NSToolbarSpaceItem Space {32, 5} {32, 32} YES YES -1 YES 0 YES YES 1048576 2147483647 YES YES YES {3.40282e+38, 3.40282e+38} 274 YES 274 YES 274 YES 256 YES 274 YES 2304 YES 256 {212, 639} YES -2147483392 {{-26, 0}, {16, 17}} YES source 1.500000e+02 1.600000e+01 1.000000e+03 75628032 0 LucidaGrande 1.100000e+01 3100 3 MC4zMzMzMzI5OQA 6 System headerTextColor 3 MAA 337772096 2048 Text Cell LucidaGrande 1.300000e+01 1044 6 System controlBackgroundColor 3 MC42NjY2NjY2OQA 6 System controlTextColor 3 YES status 5.600000e+01 4.000000e+01 1.000000e+03 75628032 0 337772096 2048 Text Cell 2 YES 3.000000e+00 6 System _sourceListBackgroundColor 1 MC44MzkyMTU3IDAuODY2NjY2NjcgMC44OTgwMzkyMgA 6 System gridColor 3 MC41AA 2.000000e+01 -767557632 4 15 0 YES 1 1.400000e+01 {{1, 1}, {212, 639}} 6 System selectedControlColor 3 MQA 2 -2147483392 {{198, 1}, {15, 624}} _doScroller: 9.984375e-01 -2147483392 {{1, 625}, {197, 15}} 1 _doScroller: 9.953052e-01 {{0, 1}, {214, 641}} 562 QSAAAEEgAABBoAAAQaAAAA {214, 642} NSView 258 YES 18 {{-8, -10}, {808, 658}} YES downloads 274 YES 274 YES 274 YES 274 YES 2304 YES 256 {794, 605} YES 256 {794, 17} -2147483392 {{-26, 0}, {16, 17}} YES filename 2.000000e+02 4.000000e+01 1.000000e+03 75628032 0 Filename 3 MC4zMzMzMzI5OQA 337772096 2048 Text Cell 3 YES progress 1.000000e+02 4.000000e+01 1.000000e+03 75628032 0 Progress 337772096 2048 Text Cell 3 YES YES size 6.400000e+01 1.000000e+01 3.402823e+38 75628032 0 Size 6 System headerColor 337772096 2048 Text Cell 3 YES YES xferred 7.000000e+01 1.000000e+01 3.402823e+38 75628032 0 Transferred 337772096 2048 Text Cell 3 YES YES completed 6.400000e+01 1.000000e+01 3.402823e+38 75628032 0 %% 337772096 2048 Text Cell 3 YES YES speed 6.400000e+01 1.000000e+01 3.402823e+38 75628032 0 Speed 337772096 2048 Text Cell 3 YES YES prio 6.400000e+01 1.000000e+01 3.402823e+38 75628032 0 Priority 337772096 2048 Text Cell 3 YES YES timerem 6.400000e+01 1.000000e+01 3.402823e+38 75628032 0 Rem. time 337772096 2048 Text Cell 3 YES YES lastcomp 6.400000e+01 1.000000e+01 3.402823e+38 75628032 0 Last seen complete 337772096 2048 Text Cell 3 YES YES lastrx 1.000000e+01 1.000000e+01 3.402823e+38 75628032 0 337772096 2048 Text Cell 3 YES YES 3.000000e+00 2.000000e+00 1.700000e+01 -698351616 1 4 15 0 YES {{1, 17}, {785, 605}} 4 -2147483392 {{771, 17}, {15, 605}} _doScroller: 9.758065e-01 256 {{1, 622}, {785, 15}} YES 1 _doScroller: 9.886650e-01 2304 YES {{1, 0}, {785, 17}} 4 {787, 638} 690 QSAAAEEgAABBmAAAQZgAAA {796, 658} NSView {{2, -3}, {796, 658}} 2 {{10, 7}, {788, 638}} Downloads 6 System controlColor search 256 {{10, 7}, {788, 638}} Search network 256 {{10, 7}, {788, 638}} Network shared 256 YES 274 YES 2304 YES 274 {792, 623} YES 256 {792, 17} -2147483392 {{778, 0}, {16, 17}} YES filename 1.010000e+02 4.000000e+01 1.000000e+03 75628032 0 Name 3 MC4zMzMzMzI5OQA 337772096 2048 Text Cell 3 YES size 8.000000e+01 4.000000e+01 1.000000e+02 75628032 0 Size 337772096 2048 Text Cell 3 YES req 6.400000e+01 1.000000e+01 1.000000e+02 75628032 0 Requested 337772096 2048 Text Cell 3 YES req_all 8.400000e+01 1.000000e+01 3.402823e+38 75628032 0 Total Requests 337772096 2048 Text Cell 3 YES accept 6.400000e+01 1.000000e+01 3.402823e+38 75628032 0 Accepted 337772096 2048 Text Cell 3 YES accept_all 9.400000e+01 1.000000e+01 3.402823e+38 75628032 0 Total Accepted 337772096 2048 Text Cell 3 YES xfer 8.400000e+01 1.000000e+01 3.402823e+38 75628032 0 Transferred 337772096 2048 Text Cell 3 YES xfer_all 1.970000e+02 1.000000e+01 3.402823e+38 75628032 0 Total Transferred 337772096 2048 Text Cell 3 YES 3.000000e+00 2.000000e+00 1.700000e+01 -692060160 4 15 0 YES {{1, 17}, {792, 623}} 4 -2147483392 {{778, 17}, {15, 608}} _doScroller: 9.759229e-01 -2147483392 {{1, 625}, {792, 15}} 1 _doScroller: 9.753695e-01 2304 YES {{1, 0}, {792, 17}} 4 {{0, -5}, {794, 641}} 562 QSAAAEEgAABBmAAAQZgAAA {{10, 7}, {788, 638}} Sharing 5 256 {{10, 7}, {788, 638}} Statistics 4 YES YES YES {{215, 0}, {792, 642}} NSView {1007, 642} YES 2 NO YES YES YES YES YES YES YES YES YES YES YES YES 1 NO 270 {{1008, 0}, {0, 642}} {{0, 34}, {1008, 642}} YES 2 NO YES YES YES YES YES YES 0 NO 268 {{8, 12}, {300, 14}} YES 68288064 272761856 Conection status {1008, 676} {{0, 0}, {1440, 878}} {3.40282e+38, 3.40282e+38} AppController DownloadsViewController SearchViewController 3 2 {{196, 428}, {752, 82}} 1946157056 Add link NSWindow {3.40282e+38, 3.40282e+38} 256 YES 268 {{20, 40}, {481, 22}} YES -1804468671 272630784 YES 6 System textBackgroundColor 6 System textColor 268 {{501, 37}, {100, 26}} YES -2076049856 2048 109199615 1 400 75 Category 1048576 2147483647 1 _popUpItemAction: YES OtherViews YES Item 2 1048576 2147483647 _popUpItemAction: Item 3 1048576 2147483647 _popUpItemAction: 1 YES YES 2 268 {{621, 33}, {96, 32}} YES 67239424 134217728 OK -2038284033 129 200 25 {752, 82} {{0, 0}, {1440, 878}} {3.40282e+38, 3.40282e+38} AddLinkDialogController SourceViewController SharedFilesViewController YES performMiniaturize: 37 arrangeInFront: 39 print: 86 runPageLayout: 87 performZoom: 240 showHelp: 360 toggleToolbarShown: 366 hide: 367 hideOtherApplications: 368 terminate: 369 unhideAllApplications: 370 show_Preferences: 376 show_About: 377 show_Xfers: 406 show_Networks: 407 show_Search: 408 show_Sharing: 409 show_Stats: 410 m_dload_controller 428 m_search_controller 489 addLink: 502 closeOK: 505 m_cat 506 m_link 507 m_dlg 508 m_add_link_dlg 509 m_tableview 810 m_main_tabview 813 m_tab_view 825 m_outline_view 826 m_connection_status_text 837 m_shared_controller 860 m_table_view 861 YES 0 YES -2 RmlsZSdzIE93bmVyA -1 First Responder -3 Application 29 YES MainMenu 19 YES 56 YES 103 YES 1 83 YES 81 YES 78 6 82 9 77 5 79 7 106 YES 2 111 57 YES 58 134 150 136 1111 144 129 121 143 236 131 YES 149 145 130 24 YES 92 5 239 23 295 YES 296 YES 297 371 YES 372 YES 375 378 YES 379 380 381 382 383 384 385 401 402 403 404 405 427 486 490 YES 491 YES 492 YES 493 494 YES 495 YES 496 YES 497 498 499 500 YES 501 504 510 YES 574 575 YES 576 YES 577 YES 690 YES 691 YES 692 YES 693 YES 694 YES 724 YES 743 744 YES 745 695 YES 696 YES 697 YES 698 YES 772 YES 773 774 775 YES 776 777 YES 778 YES 779 780 781 YES 782 783 YES 784 785 YES 786 787 YES 788 789 YES 790 791 YES 792 793 YES 794 795 YES 796 821 798 YES 801 YES 804 YES 805 803 YES 806 800 799 835 YES 836 838 YES 839 840 841 YES 842 843 YES 844 YES 845 846 847 YES 848 849 YES 850 851 YES 852 853 YES 854 855 YES 856 857 YES 858 859 Object YES YES -1.IBPluginDependency -2.IBPluginDependency -3.IBPluginDependency 103.IBPluginDependency 103.ImportedFromIB2 106.IBPluginDependency 106.ImportedFromIB2 106.editorWindowContentRectSynchronizationRect 111.IBPluginDependency 111.ImportedFromIB2 129.IBPluginDependency 129.ImportedFromIB2 130.IBPluginDependency 130.ImportedFromIB2 130.editorWindowContentRectSynchronizationRect 131.IBPluginDependency 131.ImportedFromIB2 134.IBPluginDependency 134.ImportedFromIB2 136.IBPluginDependency 136.ImportedFromIB2 143.IBPluginDependency 143.ImportedFromIB2 144.IBPluginDependency 144.ImportedFromIB2 145.IBPluginDependency 145.ImportedFromIB2 149.IBPluginDependency 149.ImportedFromIB2 150.IBPluginDependency 150.ImportedFromIB2 19.IBPluginDependency 19.ImportedFromIB2 23.IBPluginDependency 23.ImportedFromIB2 236.IBPluginDependency 236.ImportedFromIB2 239.IBPluginDependency 239.ImportedFromIB2 24.IBPluginDependency 24.ImportedFromIB2 24.editorWindowContentRectSynchronizationRect 29.IBPluginDependency 29.ImportedFromIB2 29.WindowOrigin 29.editorWindowContentRectSynchronizationRect 295.IBPluginDependency 296.IBPluginDependency 296.editorWindowContentRectSynchronizationRect 297.IBPluginDependency 371.IBEditorWindowLastContentRect 371.IBViewEditorWindowController.showingBoundsRectangles 371.IBViewEditorWindowController.showingLayoutRectangles 371.IBWindowTemplateEditedContentRect 371.NSWindowTemplate.visibleAtLaunch 371.editorWindowContentRectSynchronizationRect 372.IBPluginDependency 375.IBPluginDependency 378.IBEditorWindowLastContentRect 378.IBPluginDependency 378.editorWindowContentRectSynchronizationRect 379.IBPluginDependency 380.IBPluginDependency 382.IBPluginDependency 385.IBPluginDependency 401.IBPluginDependency 402.IBPluginDependency 403.IBPluginDependency 404.IBPluginDependency 405.IBPluginDependency 427.IBPluginDependency 486.IBPluginDependency 490.IBEditorWindowLastContentRect 490.IBWindowTemplateEditedContentRect 490.NSWindowTemplate.visibleAtLaunch 490.editorWindowContentRectSynchronizationRect 491.IBPluginDependency 492.IBPluginDependency 493.IBPluginDependency 494.IBPluginDependency 495.IBPluginDependency 496.IBPluginDependency 497.IBPluginDependency 498.IBPluginDependency 499.IBPluginDependency 5.IBPluginDependency 5.ImportedFromIB2 500.IBPluginDependency 501.IBPluginDependency 504.IBPluginDependency 510.IBPluginDependency 56.IBPluginDependency 56.ImportedFromIB2 57.IBPluginDependency 57.ImportedFromIB2 57.editorWindowContentRectSynchronizationRect 574.IBPluginDependency 575.IBPluginDependency 576.IBPluginDependency 577.IBPluginDependency 58.IBPluginDependency 58.ImportedFromIB2 690.IBPluginDependency 691.IBPluginDependency 692.IBPluginDependency 693.IBPluginDependency 694.IBPluginDependency 695.IBPluginDependency 696.IBPluginDependency 697.IBPluginDependency 698.IBPluginDependency 724.IBPluginDependency 743.IBPluginDependency 744.IBPluginDependency 745.IBPluginDependency 77.IBPluginDependency 77.ImportedFromIB2 772.IBPluginDependency 773.IBPluginDependency 774.IBPluginDependency 775.IBPluginDependency 776.IBPluginDependency 777.IBPluginDependency 778.IBPluginDependency 779.IBPluginDependency 78.IBPluginDependency 78.ImportedFromIB2 780.IBPluginDependency 781.IBPluginDependency 782.IBPluginDependency 783.IBPluginDependency 784.IBPluginDependency 785.IBPluginDependency 786.IBPluginDependency 787.IBPluginDependency 788.IBPluginDependency 789.IBPluginDependency 79.IBPluginDependency 79.ImportedFromIB2 790.IBPluginDependency 791.IBPluginDependency 792.IBPluginDependency 793.IBPluginDependency 794.IBPluginDependency 795.IBPluginDependency 796.IBPluginDependency 798.IBPluginDependency 799.IBPluginDependency 800.IBPluginDependency 801.IBPluginDependency 803.IBPluginDependency 804.IBPluginDependency 805.IBPluginDependency 806.CustomClassName 806.IBPluginDependency 81.IBPluginDependency 81.ImportedFromIB2 81.editorWindowContentRectSynchronizationRect 82.IBPluginDependency 82.ImportedFromIB2 821.IBPluginDependency 83.IBPluginDependency 83.ImportedFromIB2 835.IBPluginDependency 836.IBPluginDependency 838.IBPluginDependency 839.IBPluginDependency 840.IBPluginDependency 841.IBPluginDependency 842.IBPluginDependency 843.IBPluginDependency 844.IBPluginDependency 845.IBPluginDependency 846.IBPluginDependency 859.IBPluginDependency 92.IBPluginDependency 92.ImportedFromIB2 YES com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilderKit com.apple.InterfaceBuilderKit com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{599, 444}, {150, 23}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{436, 809}, {64, 6}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{528, 394}, {197, 73}} com.apple.InterfaceBuilder.CocoaPlugin {74, 862} {{366, 467}, {297, 20}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{478, 444}, {184, 23}} com.apple.InterfaceBuilder.CocoaPlugin {{170, -73}, {1008, 676}} {{170, -73}, {1008, 676}} {{318, 123}, {905, 557}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{381, 800}, {616, 0}} com.apple.InterfaceBuilder.CocoaPlugin {{408, 770}, {617, 0}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{315, 763}, {752, 82}} {{315, 763}, {752, 82}} {{318, 428}, {752, 82}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.brandonwalkin.BWToolkit com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{378, 284}, {186, 183}} com.brandonwalkin.BWToolkit com.brandonwalkin.BWToolkit com.brandonwalkin.BWToolkit com.brandonwalkin.BWToolkit com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin CellWithIcon com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{439, 394}, {188, 73}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.brandonwalkin.BWToolkit com.brandonwalkin.BWToolkit com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin YES YES YES YES YES YES 861 YES AddLinkDialogController NSObject closeOK: id YES YES m_cat m_dlg m_link YES NSPopUpButton id NSTextField IBProjectSource AddLinkDialogController.h AddLinkDialogController NSObject IBUserSource AppController NSObject YES YES addLink: show_About: show_Networks: show_Preferences: show_Search: show_Sharing: show_Stats: show_Xfers: YES id id id id id id id id YES YES m_add_link_dlg m_connection_status_text m_dload_controller m_main_tabview m_search_controller m_shared_controller YES id id id id id id IBProjectSource AppController.h AppController NSObject IBUserSource CellWithIcon NSTextFieldCell IBProjectSource SourceViewController.h DownloadsViewController NSObject m_tableview NSTableView IBProjectSource DownloadsViewController.h DownloadsViewController NSObject IBUserSource NSObject IBProjectSource EC.h SearchViewController NSObject startSearch: id YES YES m_result_list m_search_text YES NSOutlineView NSTextField IBProjectSource SearchViewController.h SearchViewController NSObject IBUserSource SharedFilesViewController NSObject m_table_view NSTableView IBProjectSource SharedFilesViewController.h SharedFilesViewController NSObject IBUserSource SourceViewController NSObject YES YES m_outline_view m_tab_view YES id id SourceViewController NSObject IBUserSource 0 ../cocoa-mule.xcodeproj 3 ././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/MainMenu.nib/keyedobjects.nibamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/English.lproj/MainMenu.nib/keyed0000644000175000017500000014543012611472361030661 0ustar morphmorphbplist00 X$versionT$topY$archiverX$objects]IB.objectdata_NSKeyedArchiver 156<=BZ[\]vz~    123451GLMPTUXZijkpty|}~1-./79HJKOP_abfgv $%*+05HIU\]`cklmpvs.   $+/>FPTfgnxy| ")*018@AGHOQR[\efjklmopx* #,29BC0IPXY_`gopvw~l  ll#$%,-l1 2456:>oFNQXY\]aekqz{ "&'()/8'9B'CEJNOTUZ]^_dnopv}~       # $ % & * 1 6 7 8 9 = D H I J K O V W X ] ^ b i j k p q v w | a b f o y ~  ~ ~ ~ ~  ~    6                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?2 @ A B C D E F G H I J K L M N O P Q R V Z       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijknqtU$null  !"#$%&'()*+,-./0VNSRootV$class]NSObjectsKeys_NSClassesValues_NSAccessibilityOidsValues]NSConnections[NSNamesKeys[NSFramework]NSClassesKeysZNSOidsKeys]NSNamesValues_NSAccessibilityConnectors]NSFontManager_NSVisibleWindows_NSObjectsValues_NSAccessibilityOidsKeysYNSNextOid\NSOidsValuesNvwu_234[NSClassName]NSApplication789:X$classesZ$classname:;^NSCustomObjectXNSObject_IBCocoaFramework>?@ZNS.objectsACDEFGHIJKLMNOPQRSTUVWXY\NSWindowView_NSWindowContentMaxSize\NSScreenRect]NSWindowTitleYNSWTFlags]NSWindowClass\NSWindowRectYNSMaxSize_NSWindowBacking_NSWindowStyleMask[NSViewClass t  _{{335, 74}, {1008, 676}}UaMuleXNSWindow^_`abcdefghijklmnop+lntou_NSToolbarIBDefaultItems_NSToolbarShowsBaselineSeparator_NSToolbarIBAllowedItems_NSToolbarAutosavesConfiguration_NSToolbarSizeMode_NSToolbarIBIdentifiedItems_NSToolbarDelegate_NSToolbarPrefersToBeShown_ NSToolbarAllowsUserCustomization_NSToolbarIBSelectableItems_NSToolbarDisplayMode_NSToolbarIdentifier   wxyYNS.string _$4914F9B0-9937-4196-9689-7544DD4FD07478{||};_NSMutableStringXNSString>WNS.keyst/:JU[`gx}_NSToolbarShowColorsItem_NSToolbarShowFontsItem_NSToolbarSeparatorItem_NSToolbarCustomizeToolbarItem_$767BD347-1697-4006-B735-86CBF19465F8_$62AA47AC-884E-456B-9F94-1F3F04647AF6_NSToolbarFlexibleSpaceItem_NSToolbarPrintItem_$D068E44F-D3FF-4B1C-BB88-295078B93B92_NSToolbarSpaceItem_$159427B1-5D8B-4F3C-A2FC-F2F453EA1D14_$958D1D36-B9A4-4CDD-8CDC-7693F081D29B+ll+l_NSToolbarItemVisibilityPriority_NSToolbarItemView_NSToolbarItemEnabled_NSToolbarItemAction_NSToolbarIsUserRemovable_NSToolbarItemTarget_NSToolbarItemAutovalidates_NSToolbarItemIdentifier_NSToolbarItemPaletteLabel_NSToolbarItemToolTip_NSToolbarItemTag_NSToolbarItemMaxSize_NSToolbarItemMinSize_NSToolbarItemLabel_NSToolbarItemImage. , --VColors_Show Color PanelVNSSize\NSImageFlagsVNSRepsWNSColor+ (!)X{32, 32}>ր(׀">ڀ'܀#$_NSTIFFRepresentation&%OMM* 9 S)dB"Z*o/o*e"Qd29 S A^%!I7bB~MW\WNB9~"A@^c!6AFHj[`dfgffa^J8cY t3?_Ys\chbnrwwvsngb[?t^c4>sYal}ru}xmd]ݭ?cG A(^5{Xalx{od]̋8A)^  ZG]kx{maJN"  9+S6ɕZctؖʉxg^m99 RdQ>߶]kzޭПnamBc+wI`o״ĨsfmN2"(SbrȺvsecV3)+VctuwegZ\/1(QaqwfwUh)6uIanreMp"4Pd?Zjz~n^Bqc, *9S4Xarȶڷte\7p8 R XE[guШxl_I!O  &A^3wW^iuɗٖylaY6@ )]2c:nV^zgvnnwυނ|tkaY=cH0t:XUlY^g_jnqtrojc]X>t_"h35$SRs "A&_(6>'#7&8OMM*/p"P.Gm @(>_.Gm/p#6.Gm.Gm#6 +Bf.Gm.Gm"5R,D%9X.Gm.Gm%9X .Gm @.Gm.Gm.Gm"5R"5R(>_.Gm.Gm 0 @.Gm "5R.Gm.Gm @"5R,D1K.Gm.Gm#6 @.Gm #6.Gm.Gm,D"5R"5R @ @ @,D.Gm.Gm"5R @.Gm.Gm.Gm.Gm.Gm.Gm.Gm.Gm+Bf"5R,D .Gm.Gm.Gm @.Gm .Gm.Gm.Gm @"5R"5R(>_.Gm.Gm)` @.Gm @"5R.Gm.Gm#6 +Bf.Gm"5R.Gm.Gm1K%9X.Gm.Gm%9X 0"P(>_.Gm.Gm.Gm 0%9X%9X"5Q"5Q"5R(>_466).Gm%9X"5Q"5Q%9X.Gm 3"',/246642/,'"   RS_orderFrontFontPanel:!"#+l+l+l*++-./+_#NSToolbarItemMenuFormRepresentationI@ ;=?><PYSeparatorW{12, 5}Z{12, 1000}6789:;<=>?@l?lDEFWNSTitle_NSKeyEquivModMask]NSIsSeparatorZNSKeyEquiv\NSIsDisabled]NSMnemonicLocYNSOnImage\NSMixedImageHA A BF2HIJK^NSResourceNameECD_NSMenuCheckmark78NOO;_NSCustomResource2HIJSECG_NSMenuMixedState78VWW;ZNSMenuItem78Y;+l^l+lbcdch. T KLM--LNYCustomize_Customize ToolbarmnҀ+OP)>r(sQ>v'x#R{&SOMM* %%%[]]]iiiooo e1%(((H=)))J''',BBB<EEEzdddCCCHHH=== QQQ{{{!!!0%EEENNN***"""l888eDDDM,???lvvv>>> ~4= ttt<<>>DZZZlGGG'+uuu}}}cccHHH &8q47#  쀀dddppp̳LLL !6GGG((())) U(v9H:%{ aeee;;;/|||@@@u $m#c2AS6#n H;;;ᱱtttGUUUeee::: W-e4ֆEZ2#111³󅅅###tJJJZZZ777n E0h7zBgF"㳲zzz]]]lll]]]WWWRRR)))cAAA### @.K0㼸333 :::A@@@I!""" . &&& Tnnne>2z ' f響ZZZH&CN7 ;󫫫FFF :h3م@I>Q(((󫫫111Hh:h2>EE!+555H8i1~:DK"???Y 1m3z8n/+AAA Y)<.'''VPPP󖖖***  3 AGGG...p=  *16989/'  *143-$   *16985/'  *143-$   RS_runToolbarCustomizationPalette:+l+l+l. VWX--WYwx UStats2HIJECZ]Toolbar_Stats+l+l+l. \]X--]^wx VShared2HIJEC_^Toolbar_Shared!+l+l+l+/+fe abdc<^Flexible SpaceV{1, 5}[{20000, 32}6789:;<=>?@l?lDEFHA A BF78;+ll+l׀. w hii--ijUPrintҀ+k,l)>(m>'#nl_NSCoreUIImageOptions_NSBitsPerSampleZNSHasAlphavou >tpqrs\imageNameKeyVwidgetwx _image.ToolbarPrintUimage78;_NSMutableDictionary\NSDictionary78;_NSCoreUIImageRep^printDocument:+l+l+l. yzX--z{wx VSearch2HIJEC|^Toolbar_Search!+l+l+l&'+)*/+ ~<USpaceW{32, 5}6789:;<=>?@l?lDEFHA A BF788;+l+l+lABBG. X--wx YTransfers2HIJNEC_Toolbar_Transfers+l+l+lXYY^. X--wx WNetwork2HIJeEC_Toolbar_Network>i'/:g}`Jx[U>x(:x[U}`>(78;YNSToolbar_{3.40282e+38, 3.40282e+38}\_NSNextResponderZNSSubviewsXNSvFlags[NSFrameSize[NSSuperview#>(\NnnWNl_BWSVCollapsiblePopupSelection_BWSVDividerCanCollapseWNSFrame\BWSVMaxUnits_BWSVColorIsEnabledYBWSVColor^NSDividerStyle\BWSVMinUnits\NSIsVertical]BWSVMaxValues]BWSVMinValues >(\onnWlǀ >ʀ(̀\2ـ׀؀>؀(ـ\[NSHScrollerXNSsFlags\NSScrollAmts[NSVScroller]NSNextKeyView]NSContentViewӀր2OA A AAπ>(„π\WYNScvFlagsYNSDocViewYNSBGColor΀ʀ ˀ>(     \oll X"#_NSDraggingSourceMaskForNonLocalYNSTvFlags_"NSTableViewSelectionHighlightStyle_NSBackgroundColor_NSAllowsTypeSelect\NSCornerView_NSIntercellSpacingWidth_NSColumnAutoresizingStyle_#NSOutlineViewIndentationPerLevelKeyYNSEnabled[NSGridColor_NSDraggingSourceMaskForLocal^NSTableColumns[NSRowHeight@ #@"A` ƀ#@4Z{212, 639}+'()_{{-26, 0}, {16, 17}}78,--./;]_NSCornerViewVNSView[NSResponder>2(346789:;<=>l@ABCDEF^NSIsResizeable\NSHeaderCell\NSIdentifierWNSWidthZNSDataCell^NSResizingMaskZNSMinWidthZNSMaxWidth[NSTableView #@b#@0#@@VsourceJ KLMNOPQST[NSCellFlagsZNSContentsYNSSupport\NSCellFlags2[NSTextColorXVWXYZ[VNSNameXNSfFlags#@& \LucidaGrande78^__;VNSFontb*K0.33333299dehij[NSColorName]NSCatalogName*VSystem_headerTextColoro*B078qrrstu;_NSTableHeaderCell_NSTextFieldCell\NSActionCellVNSCellJw KLxM2Nyz{|}~_NSOriginalClassName]NSControlView!@\CellWithIconYText CellVWXZ#@*dehj*_controlBackgroundColor*K0.66666669dehj*_controlTextColor78;^NSClassSwapper78;]NSTableColumn6789:;<=>l@WF #@L#@DVstatusJ KLMNOPQSTXJ KLxMNy|}~€78sstu;dehj*ŀĀ__sourceListBackgroundColoroUNSRGB*O 0.8392157 0.86666667 0.89803922dehj*ȀǀYgridColorʀ*D0.578ͦ>./;]NSOutlineViewYNSControl_{{1, 1}, {212, 639}}dehj*̀̀_selectedControlColor؀*B178ۤ./;ZNSClipView\)XNSTargetXNSActionYNSPercentҀЀр#?3@_{{198, 1}, {15, 624}}\_doScroller:78./;ZNSScroller\o)ҀԀр#?ي@_{{1, 625}, {197, 15}}_{{0, 1}, {214, 641}}78./;\NSScrollViewZ{214, 642}78./;\BWCustomView\NSCustomView\2ف؀> ( _\~ll^NSTabViewItems_NSDrawsBackground_NSAllowTruncatedLabels_NSSelectedTabViewItemZNSDelegateځ%$ >"(#\ '( ܁#"߀>-(. 0\#245678#;<<_NSHeaderClipViewށց!OA A AAށ>@(<;265\.IJK|.K΁䀔>R(KU     V\<XYZ|l5^_l X<de\NSHeaderView_NSIntercellSpacingHeight怷 #@ ƀ#@1Z{792, 623}\>6ij6K耔\.qrZ|.Z΁ 怔Y{792, 17}78z{{./;_NSTableHeaderView\.').뀔_{{778, 0}, {16, 17}}>( 6789:;<=>l@FK #@Y@XfilenameJ KLMNOPSTTNameb*J KLxMNy|}~K€䀺6789:;<=>l@K #@T#@YTsizeJ KLMNOPSTTSizeJ KLxMNy|}~K€䀺6789:;<=>l@K #@P#@$SreqJ KLMNOPSTYRequesteddehj*̀[headerColorJ KLxMNy|~K€䀺6789:;<=>l@K #@U#GWreq_allJ KLMNOPST^Total RequestsJ KLxMNy|~K€䀺6789:;<=>l@K  VacceptJ KLMNOPSTXAcceptedJ KLxMNy|~K€䀺6789:;<=>l@K   #@WZaccept_allJ KLMNOPST ^Total AcceptedJ KLxMNy|~K€䀺6789:;<=>l@%&'K TxferJ KLMNOP-ST[TransferredJ KLxMNy|~K€䀺6789:;<=>l@;<=>K #@hXxfer_allJ KLMNOPDST_Total TransferredJ KLxMNy|~K€䀺78P>>./;_{{1, 17}, {792, 623}}\..V).Zҁр#?:_{{778, 17}, {15, 608}}\..`o).dҁр#?6:_{{1, 625}, {792, 15}}>h(Z_{{1, 0}, {792, 17}}_{{0, -5}, {794, 641}}_{{10, 7}, {788, 638}}78n../;_{{-8, -10}, {808, 658}}>r(stuw&}8.yz{|} YNSTabViewWNSLabel|'(܁zyYdownloads+#x)>(*}W}(wv+(>(,2*u-t؁*>(. 08,o75/s,m00>(0mo57|.΁l12.2>(2U     VXl^l oXe_NSGridStyleMask0`4 73 Ɓ09Z{794, 605}>i5652|ǁ.΁rq4.4Y{794, 17}').8.>(:@EJOTY^ch6789:;<=>l@F <;#@i?2J KLMNOPST>=XFilenameb*J KLxMNy|}~€26789:;<= >l@Fl\NSIsEditable BAD 2XprogressJ KLMNOPST>CXProgressJ KLxMNy|}~€26789:;<= >l@&'()l GFI#G 2J KLMNOP/STHJ KLxMNy|}~€26789:;<= >l@<=>?)l LK#@QN 2WxferredJ KLMNOPFSTMJ KLxMNy|}~€26789:;<= >l@STU)l QPS 2YcompletedJ KLMNOP\STRR%%J KLxMNy|}~€26789:;<= >l@jkl)l VUX 2UspeedJ KLMNOPsSTWUSpeedJ KLxMNy|}~€26789:;<= >l@)l [Z] 2TprioJ KLMNOPST\XPriorityJ KLxMNy|}~€26789:;<= >l@)l `_b 2WtimeremJ KLMNOPSTaYRem. timeJ KLxMNy|}~€26789:;<= >l@)l edg 2XlastcompJ KLMNOPSTf_Last seen completeJ KLxMNy|}~€26789:;<= >l@)l jik 2VlastrxJ KLMNOPSTXJ KLxMNy|}~€2_{{1, 17}, {785, 605}})..ҁnс.#?9΀_{{771, 17}, {15, 605}}ol..ҁp с.#?$_{{1, 622}, {785, 15}}>(ǁ4_{{1, 0}, {785, 17}}Z{787, 638}Z{796, 658}78./;_{{2, -3}, {796, 658}}78./;[NSSplitViewYDownloadsdehj*{\controlColor78;]NSTabViewItem8.yz{ |~܁zzVsearch+р#8.yz{ Y|܁zWnetwork+р#8.yz{# "|ހ܁zVsharedWSharing8.yz{'( +|܁zQ5+0р#ZStatistics783yy./;_{{215, 0}, {792, 642}}[{1007, 642}>89t><=t>@CtAہ#ۀ##>HKtAہ#ۀ##78OPP./;[BWSplitView\STU_{{1008, 0}, {0, 642}}78Z[[./;_BWAddRegularBottomBar_{{0, 34}, {1008, 642}}>_`t>cdt>gitۀ#ۀ#>motۀ#ۀ#u\NstuvlN _{{8, 12}, {300, 14}}J KLxMN|S@zB_Conection status78./;_BWInsetTextField[NSTextField[{1008, 676}_{{0, 0}, {1440, 878}}78;_NSWindowTemplate78;\NSMutableSetUNSSet>(!ҁԁ؁ #')-/168=?DFHLz]NSDestinationXNSSource23]AppController23À_DownloadsViewController_m_dload_controller78ȣ;_NSNibOutletConnector^NSNibConnectorź679;<=>@DEFVNSMenuHBF6VR[NSMenuItems΀ geZQuit aMuleQqZterminate:78;_NSNibControlConnectorz[show_Xfers:z23_AddLinkDialogControlleruvlЁ +#݁_{{501, 37}, {100, 26}}JLWxM  lW o~oll_NSMenuItemRespectAlignment_NSArrowPosition_NSAlternateContents_NSPeriodicInterval^NSButtonFlags2_NSKeyEquivalent_NSPreferredEdge_NSUsesItemFromMenu]NSAltersState_NSPeriodicDelay]NSButtonFlagsA@ XKπX @679;<=>@DEF!oWNSStateHĀXBFÁ6$%΁ƁXCategory__popUpItemAction:ZOtherViews>+(-.ȁ679;<=>2@DEF7HɀXBFÁVItem 2679;<=><@DEFAH̀XBFÁVItem 378DϢ;78FGGHItu;_NSPopUpButtonCell^NSMenuItemCell\NSButtonCell78KLLM./;]NSPopUpButtonXNSButtonUm_catzS[]show_Sharing:zWYՁ23\_SearchViewController_m_search_controllerzacفCDEFGHIJKLMOghiSTklW+܁ۀ ځ_{{196, 428}, {752, 82}}XAdd link>r(suށuxyzvl߁ _{{20, 40}, {481, 22}}J KLxMN~slqAX@ dehj*́‮_textBackgroundColordehj*䀮YtextColor78./;uvl _{{621, 33}, {96, 32}}JKLxM ~uXX逶@ROK78IItu;78MM./;Y{752, 82}Um_dlgz679;<=>DEFHBF6΁OP\Show ToolbarQt_toggleToolbarShown:zɁ23̀_SharedFilesViewController_m_shared_controllerz Ӂ܁23ր_SourceViewControllerZm_tab_viewzK݁\m_table_viewz69;<=>DEFՀHXBF[About aMule[show_About:z 679;<=>@DEFHBF6΁kmZaMule HelpQ?YshowHelp:z    679;<=> @DEFՀH XBFXShow All_unhideAllApplications:z  ܁^m_main_tabviewz x\show_Search:z  679;<=>  DEFՀHBF[Hide OthersQh_hideOtherApplications:z ( )679;<=> ,@ -DEF 0HBF6V 3 4 5΁[^\XMinimizeQm_performMiniaturize:z ; <"679;<=> ?@ @DEF CH !BF6 F G΁oqfPrint &QpVprint:z M N$&679;<=> Q@DEF 0H%XBFTZoom\performZoom:z \(^m_add_link_dlgz ` a*,679;<=> d@ DEFՀH+BFZHide aMuleUhide:z o._m_connection_status_textzu u0XcloseOK:z z {25679;<=> ~@ DEF CH34BF]Add ed2k linkQnXaddLink:z 7^show_Networks:z 9< 679;<=> DEF CYNSToolTipHX:;BF]Page Setup...QP^runPageLayout:z >^m_outline_viewz @C679;<=> @ DEFՀHABBFlPreferences &Q,_show_Preferences:z 2E[m_tableviewzs ށGVm_linkz IK679;<=> @DEF 0HJXBF_Bring All to Front_arrangeInFront:z ρUM[show_Stats:> Ӏ'( }zs l Z2(? M - 0 w  ;  sD3W "UK ( (>u , .  z 2' Ct. 9 NuAY ` G M4#.a;u o ,D/(E&QRO[πX9IN$Uȁ.ӁY4_*`Jh`k^b?c:ހ 2cڀ}ՁÁhSm@䀘ijnU2f}ˀX@] *SJgg܁] :ށxفbTITView> d(6789:;<=>@llDEFՀHX X BF p679;<=>@DEF G xYNSSubmenuHOXBFST6V { | }΁rts^submenuAction: p679;<=> 9 @DEF HXVXBFWXServices6V ΁VZY> (__NSServicesMenuVWindow> ( ( M M $]I6789:;<=>@llDEF 0HX X BF^_NSWindowsMenu6789:;<=>@llDEFՀHX X BF p679;<=> 0 3@DEF G H[XBFSa6789:;<=>@llDEFՀHX X BF p679;<=>R@DEF G ǀH XBFSd> ʀ( 2 `   ́b@fU_* Q6789:;<=>@llDEFՀHX X BF\_NSAppleMenu6789:;<=>@llDEF CHX X BF234 p679;<=>@DEF G HkXBFSlTHelp> ( p679;<=> C F@DEF G HoXBFSpTFile> ( z " ;2h9YAMainMenu> (  .  ,cnR`j[_NSMainMenu> 'w Ysu sK  GYKu C.. 0K  } GYY CY GY3KKKNYY C. 0 Gt GY CK .  aNAAKY 0#YY. ,  04.܁*@ &Rށ2܁S2 TEJÁ,2.`܁(S  2 h2 :S .2 O.2܁S}S n܁ÀUـY2c ځ2ހ Áj^2c> ' (}zs l Z2(? M - 0 w  ;  sD3W "UK ( (>u , .  z 2' C.t 9 NuYA ` G M4#.a;u o/ (,DE&QRO[πX9IN$Uȁ.Ӂ4Y_*`Jh`k^b?c:ހ }ՀځÁ2chSm@䀘ijnU2fˁ}X@x *SgJ]܁] ށ:gفbTI> 8' 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T' V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~   Ɓxyz{|}~ÁāŁƁǁȁɁʁˁ́́΁ρЁсҁӁԁՁցׁ؁فځہ܁݁ށ߁O_Horizontal Scroller-2_ Selected Tab View Item (Sharing)_Toolbar Item (Fonts)_Menu Item (Show All)\File's Owner_Button Cell (OK)VView-2VView-1]Custom View-2[Menu (View)_Text Field Cell_Text Field Cell (Text Cell)-15_Table Column (size)-1_Table Column (xfer_all)_Add Link Dialog Controller_Menu Item (About aMule)_Tab View Item (Downloads)[Separator-1_Menu Item (View)^App Controller_Table Column (completed)_Toolbar Item (Shared)_Vertical Scroller_Table Column (req)VView-3_Text Field Cell (Text Cell)-18VObjectT1111_Table Header View_Horizontal Scroller-1_Text Field Cell (Text Cell)-9_Text Field Cell (Text Cell)-16_Menu Item (Zoom)_Menu Item (Services)_Add Regular Bottom Bar_Menu Item (Item 2)_#Bordered Scroll View (Table View)-1_Horizontal Scroller_Table Header View-1_Table Column (size)_Table Column (prio)]Menu (Window)[Separator-2_Tab View Item (Statistics)\Split View-2_Menu Item (Window)_Toolbar Item (Customize)_Popup Button (Category)_Text Field Cell (Text Cell)-5_Source View Controller_Table Column (lastrx)_,Toolbar Flexible Space Item (Flexible Space)Q6_Text Field Cell (Text Cell)-12_Toolbar Item (Colors)_Table Column (timerem)[Separator-3_Text Field Cell (Text Cell)-17_Pop Up Button Cell (Category)_Menu Item (aMule)_"Toolbar Separator Item (Separator)ZText Field_Cell With Icon (Text Cell)_Toolbar Item (Transfers)_Menu Item (aMule Help)\Outline View_Table Column (source)_Table Column (accept)_Table Column (accept_all)_Static Text (Conection status)_Toolbar Space Item (Space)_Table Column (xfer)_Text Field Cell (Text Cell)-2_Search View Controller[Custom View_Menu (OtherViews)_fTable View (Filename, Progress, Size, Transferred, %%, Speed, Priority, Rem. time, Last seen complete)_Table Column (lastcomp)Q7_Text Field Cell (Text Cell)-10_Vertical Scroller-2_Table Column (progress)_lTable View (Name, Size, Requested, Total Requests, Accepted, Total Accepted, Transferred, Total Transferred)\Split View-1[Application_Menu Item (Minimize)_Text Field Cell (Text Cell)-1_Tab View Item (Network)Q1VView-4_Menu Item (File)_Toolbar Item (Stats)_Menu Item (Hide Others)Q9[Separator-4_Table Column (filename)_Text Field Cell (Text Cell)-6[Menu (File)_Menu Item (Item 3)_Tab View Item (Search)]Custom View-1^Content View-1_Menu (Services)ZSplit ViewS121_Text Field Cell (Text Cell)-8\Content View_Toolbar Item (Search)_"Text Field Cell (Conection status)WToolbar^Window (aMule)_#Bordered Scroll View (Outline View)_Text Field Cell (Text Cell)-7_Text Field Cell (Text Cell)-3_Menu Item (Hide aMule)XMainMenu_Toolbar Item (Print)_Table Column (req_all)_Table Column (xferred)_Text Field Cell (Text Cell)-11_BNo Tabs Tab View (Downloads, Search, Network, Sharing, Statistics)_Toolbar Item (Network)_Text Field Cell (Text Cell)-4_Table Column (status)_Menu Item (Show Toolbar)_Downloads View Controller_!Bordered Scroll View (Table View)_Table Column (filename)-1_Text Field Cell (Text Cell)-14_Window (Add link)_Vertical Scroller-1_Menu Item (Category)_Push Button (OK)Q2_Text Field Cell (Text Cell)-13_Table Column (speed)\Menu (aMule)_Menu Item (Bring All to Front)_Text Field Cell (Text Cell)> T'D> X'> \'( }zs l Z2(? M - 0 w  ;  sD3W "UK ( (>u , .  z 2' Ct. 9 NuAY ` G M4#.a;u o ,D(/EF&؁QRDO[ρ1X9IN$Uȁ.Ӂ/Y4_*`Jh`k^b?c:=ހ 2cڀ}ՁÁ6hSm@8䀘i jnU#H2fҁ-L}ˀX@] *SJgg܁] :ށxف'bT?)I>' !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~^ |( %Y:'*wpOqMJH[9> L-V5N{ 8}y:&o!#SPUWCAhO] WI?rZgS'RKXQE@RtNDszMQ~\T $)FnVG\jxo9%>m(>p'>s'78uvv;^NSIBObjectData"'1:?DRTf18?M_{   1 ; H J M P S V Y \ ^ a d g j l n q t w z    ; H a n |   % Z t   3 V s   ( 0 2 K M O Q S U W Y [ ] _ a c | ~ 'Nk Mo4K^u $,.0579BKMPR[]bdfo"H"Q"X"k"v"""""""""""""""""###"#'#5#x#z#|#}##############################445595;5=5?5@5B5C5E5F5H5J5L5N5P5R5T5U5_5g5r55555555566666 6 6666!606264666H6Q6V6i6v6x6z6|6666666667777777 7 77777727G7I7K7M7O7X7Z7]7_7h7j7o7q7s7|7~7H>H`HHHHHHHHHHHHHHHHHHHHHHHI1I3I5I6I8I9I;II@IBIDIFIHIJISIUI\IiIkImIoI~IIIIIIIIIIIIIIIIIIJJ'J)J+J,J.J/J1J3JL@LBLCLELFLHLILKLMLOLQLSLULWL`LbLiLvLxLzL|LLLLLLLLLLLLLLLLLLLM M"M$M%M'M(M*M,M5MVGVIVLVYVbVgVnV{V}VVVVVVVVVVVVVVVWWW'W4W;WdWzWWWWWWWWWWWWWWWWWWWWWWWXXXX)X>X@XBXDXFXYXbXgXvXXXXXXXXXXXXXXXYYYYY'Y)Y+Y-Y/Y1Y3Y\@\y\\\\\\\\\\\\\\\\\\\]]]]"]$]']*],].]0]9];]>]@]]]]]]]]]]]]]]]]]]]]]]]^^^^^^^^^ ^"^+^-^0^2^^^^^^^^^^^^^^^^^^^__ _ _ ____@_B_D_G_J_L_N_P_R_T_^_g_p___________________``````(`*`,`5`R`T`V`X`Z`\`a`n`p`````````````````aaa a a aaa5a7a9a;a=a?aAajakamaoaqaza|aaaaaaaaaaaaaaaabbb b bbbb;bbAbDbMbPbYb[bcbbbbbbbbbbbbbbbbbbbbbcc"c$c&c)c+c-c6cWcYc[c]c_caccccccccccccccccccddd d dddd;ddAdDdGdIdNdkdmdodrdtdvdddddddddddddddddeeeeee e4eUeWeYe[e]e_eaejeueeeeeeeeeeef ffffffff$fgAgDgGgPgRgUgXgugxg{g~gggggggggggggggggh hhhhhhh!h$h'h*h-h0h9h;hFhIhLhOhRhUh~hhhhhhhhhhhhhi i iiiiii"i%i&i(i+i.i9iRiUiWiZi]i`iiiiiiiiiiiiiiiiiiiiiiiiijjjj0j1j3j6j9jBjEjHjejgjjjmjojqjzjjjjjjjjjjjjjjjjjkk k'k)k,k/k1k3krErVrXr[r^rwrzr}rrrrrrrrrrrrrrrrrrrrrssss s sss"s%s0s9sBs[sgstsvswsxsssssssssssssssssssssssttt ttttt-t6t?tWtpt}ttttttttttttttttttttttttttttuu0u5u7u:u=u?uBuGuIu\ueuruuuuuuuuuuuvvvIvLvOvRvUvXv[v^vavdvgvjvmvpvsvvvyv|vvvvvvvvvvvvvvvvvvvvvvvvvvvwww w$w9wBwIw`wow|wwwwwwwwwwwwwwwwwwwwxx x$x5x8x;x=x@xLx]x`xcxfxixrxtxwxxxxxxxxxxxxxxyBy_yqyyyyyyyzzzzzz z#z%z'z*z-z.z/z2z5z:zgzozrztzwzyz{z}zzzzzzzzzzzzzzz{{{ { {{{{{{ {I{L{N{Q{S{U{W{Z{]{d{m{r{{{{{{{{{{{{{|||||&|)|,|/|2|;|=|@|W|m|~||||||||||||||||}}} } }}}/}2}5}8};}<}?}W}|}}}}}}}}}}}}}}}}}}}}}}~ ~'~*~-~0~3~4~7~O~~~~~~~~~~~~~~~~~~~~~~~~"%'),9<?BOQgx{~!$&),9JMPSVsuxz|~ЀҀՀ؀ڀ܀߀ "CEHJLNQZsǁԁׁځ݁ 4ADGJkmpsuwzłȂ˂΂ !#*7:=@acfhjlotÃ!AFOQTWÍ̍΍ٍ܍ߍ"%'*-/258;>@BEGJMORTVX[^adfhknpsvx{~ÏƏȏʏ̏ΏЏҏՏ؏ڏ܏ޏ  "%(*-02469;>@BEGILOQSVY\^adfhjlnpsvy|đǑʑ͑Бӑّܑ֑ߑ "$'*-0368;>ADFILNQTWZ]_bdfikmpsvx{}Òƒɒ˒ΒђӒْ֒ےݒ  #&),/24=?^adgjmpsvy|Ĕǔʔ͔ДӔ֔ٔܔߔ !$'*-0369ACFILOQTWZ\_acfhknqtwy{}¥ťȥʥͥХӥ֥٥ܥߥ !$&(*-0369ADFILORUX[^adgiknqtwy|ëƫɫҫԫիޫw amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/Info.plist0000644000175000017500000000171112611472361024600 0ustar morphmorph CFBundleDevelopmentRegion English CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIconFile CFBundleIdentifier org.amule.aMule CFBundleInfoDictionaryVersion 6.0 CFBundleName ${PRODUCT_NAME} CFBundlePackageType APPL CFBundleShortVersionString 1.0.0 CFBundleSignature ???? CFBundleVersion 100 NSHumanReadableCopyright © 2009, aMule project NSMainNibFile MainMenu NSPrincipalClass NSApplication amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/LoginDialogController.h0000644000175000017500000000076212611472361027242 0ustar morphmorph#import @interface LoginDialogController : NSObject { IBOutlet id m_dlg; IBOutlet NSTextField *m_host_field; IBOutlet NSTextField *m_port_field; IBOutlet NSTextField *m_pass_field; bool m_dlg_result; NSString *m_host, *m_pass; int m_port; } - (bool)showDlg:(NSWindow *)window; - (IBAction)closeCancel:(id)sender; - (IBAction)closeOK:(id)sender; @property (readonly) NSString *host; @property (readonly) int port; @property (readonly) NSString *pass; @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/LoginDialogController.m0000644000175000017500000000233112611472361027241 0ustar morphmorph#import "LoginDialogController.h" @implementation LoginDialogController @synthesize host = m_host; @synthesize pass = m_pass; @synthesize port = m_port; - (bool)showDlg:(NSWindow *)window { if ( m_dlg == nil ) { [NSBundle loadNibNamed: @"LoginDialog" owner: self]; } NSString *default_host = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastTargetHost"]; if ( default_host != nil ) { [m_host_field setStringValue: default_host]; } NSString *default_port = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastTargetPort"]; if ( default_port != nil ) { [m_port_field setStringValue:[[NSUserDefaults standardUserDefaults] stringForKey:@"LastTargetPort"]]; } [NSApp beginSheet: m_dlg modalForWindow: window modalDelegate: nil didEndSelector: nil contextInfo: nil]; [NSApp runModalForWindow: m_dlg]; [NSApp endSheet: m_dlg]; [m_dlg orderOut: self]; return m_dlg_result; } - (IBAction)closeCancel:(id)sender { m_dlg_result = false; [NSApp stopModal]; } - (IBAction)closeOK:(id)sender { m_dlg_result = true; m_host = [m_host_field stringValue]; NSString *port = [m_port_field stringValue]; m_port = [port intValue]; m_pass = [m_pass_field stringValue]; [NSApp stopModal]; } @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/SearchViewController.h0000644000175000017500000000050112611472361027101 0ustar morphmorph#import #import "amuleData.h" @interface SearchViewController : NSObject { IBOutlet NSOutlineView *m_result_list; IBOutlet NSTextField *m_search_text; amuleFileSet *m_fileset; amuleData *m_amuledata; } - (IBAction)startSearch:(id)sender; - (void)linkAmuleData:(amuleData *)amuledata; @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/SearchViewController.mm0000644000175000017500000000043412611472361027270 0ustar morphmorph#import "SearchViewController.h" @implementation SearchViewController - (IBAction)startSearch:(id)sender { } - (void)linkAmuleData:(amuleData *)amuledata { m_amuledata = amuledata; m_fileset = m_amuledata.search_resuls; [amuledata.search_resuls setGuiController:self]; } @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/SharedFilesViewController.h0000644000175000017500000000072612611472361030076 0ustar morphmorph#import #import "amuleData.h" @interface SharedFilesViewController : NSObject { IBOutlet NSTableView *m_table_view; amuleFileSet *m_fileset; amuleData *m_amuledata; } // TableView datasource methods - (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex; - (int)numberOfRowsInTableView:(NSTableView *)aTableView; - (void)linkAmuleData:(amuleData *)amuledata; - (void)reload; @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/SharedFilesViewController.mm0000644000175000017500000000240712611472361030256 0ustar morphmorph#import "SharedFilesViewController.h" @implementation SharedFilesViewController - (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex { id value = nil; NSString *columnId = [aTableColumn identifier]; SharedFile *i = [m_fileset objectAtIndex:rowIndex]; if ( [columnId compare:@"filename"] == NSOrderedSame ) { value = i.name; } else if ( [columnId compare:@"size"] == NSOrderedSame ) { value = [i convertWithPrefix: i.size]; } else if ( [columnId compare:@"xfer"] == NSOrderedSame ) { value = [i convertWithPrefix: i.size_xfer]; } else if ( [columnId compare:@"xfer_all"] == NSOrderedSame ) { value = [i convertWithPrefix: i.size_xfer_all]; } else if ( [columnId compare:@"prio"] == NSOrderedSame ) { value = i.sprio; } else { value = @"ERROR: bad column id"; } return value; } - (int)numberOfRowsInTableView:(NSTableView *)aTableView { return [m_fileset count]; } - (void)linkAmuleData:(amuleData *)amuledata { m_amuledata = amuledata; m_fileset = m_amuledata.shared; [amuledata.shared setGuiController:self]; } - (void)reload { [m_table_view reloadData]; } - (void)awakeFromNib { [m_table_view setDelegate:self]; [m_table_view setDataSource:self]; // // load column status // } @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/SourceViewController.h0000644000175000017500000000264612611472361027150 0ustar morphmorph#import @interface BaseItem : NSObject { NSString *m_text; NSString *m_view_id; NSMutableArray *m_subitems; int m_subitems_count; NSImage *m_icon; } + (BaseItem *) initWithText:(NSString *)text withViewId:(NSString *) viewId; - (void)activateView:(NSTabView *) view; - (int)subitemsCount; - (BaseItem *)itemAtIndex: (int) index; - (void)addSubItem:(BaseItem *) item; - (NSString *)text; - (NSString *)viewId; - (NSImage *)icon; @end @interface CategoryItemFactory : BaseItem { } + (BaseItem *)initFilesItem; + (BaseItem *)initNetworksItem; + (BaseItem *)initSearchItem; @end enum { RootItemNetwork = 0, RootItemFiles, RootItemSearch, RootItemLast }; @interface amuleSourceListDataSource : NSObject { BaseItem *g_root_items[RootItemLast]; } + (amuleSourceListDataSource *)initWithData; - (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item; - (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item; - (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item; - (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item; @end @interface CellWithIcon : NSTextFieldCell { @private NSImage *m_icon; } - (NSImage *)icon; - (void)setIcon:(NSImage *)icon; @end @interface SourceViewController : NSObject { IBOutlet id m_outline_view; IBOutlet id m_tab_view; } @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/SourceViewController.m0000644000175000017500000001463612611472361027157 0ustar morphmorph#import "SourceViewController.h" @implementation BaseItem +(BaseItem*)initWithText:(NSString *)text withViewId:(NSString *) viewId { BaseItem *node = [[BaseItem alloc] init]; node->m_text = [NSString stringWithString:text]; [node->m_text retain]; node->m_subitems = [NSMutableArray arrayWithCapacity:16]; [node->m_subitems retain]; node->m_subitems_count = 0; node->m_view_id = viewId; if ( viewId != nil ) { [node->m_view_id retain]; } // NSString* imageName = [[NSBundle mainBundle] pathForResource:@"Client_Transfer" ofType:@"png"]; // NSImage* imageObj = [[NSImage alloc] initWithContentsOfFile:imageName]; NSString *imageName = @"Client_Transfer"; NSImage* imageObj = [NSImage imageNamed:imageName]; [imageObj retain]; assert(imageObj); node->m_icon = imageObj; return node; } - (void)dealloc { [m_text release]; [m_subitems release]; [super dealloc]; } -(int)subitemsCount { return m_subitems_count; } - (NSString *)text { return m_text; } - (NSString *)viewId { return m_view_id; } - (NSImage *)icon { return m_icon; } - (BaseItem*)itemAtIndex: (int) index { if ( m_subitems_count ) { return [m_subitems objectAtIndex:index]; } return nil; } - (void)activateView:(NSTabView *) view { } - (void)addSubItem:(BaseItem *) item { [m_subitems insertObject:item atIndex:m_subitems_count]; m_subitems_count++; } @end @implementation CategoryItemFactory + (BaseItem *)initFilesItem { BaseItem *it = [BaseItem initWithText:@"Files" withViewId:nil]; BaseItem *all = [BaseItem initWithText:@"All files" withViewId:@"all"]; BaseItem *dl = [BaseItem initWithText:@"Downloads" withViewId:@"downloads"]; BaseItem *ul = [BaseItem initWithText:@"Uploads" withViewId:@"upload"]; BaseItem *sh = [BaseItem initWithText:@"Shared" withViewId:@"shared"]; [it addSubItem:all]; [it addSubItem:dl]; [it addSubItem:ul]; [it addSubItem:sh]; return it; } + (BaseItem *)initNetworksItem { BaseItem *it = [BaseItem initWithText:@"Networks" withViewId:nil]; return it; } + (BaseItem *)initSearchItem { BaseItem *it = [BaseItem initWithText:@"Search" withViewId:nil]; return it; } @end @implementation amuleSourceListDataSource + (amuleSourceListDataSource *)initWithData { amuleSourceListDataSource *obj = [[amuleSourceListDataSource alloc] init]; obj->g_root_items[RootItemFiles] = [CategoryItemFactory initFilesItem]; obj->g_root_items[RootItemNetwork] = [CategoryItemFactory initNetworksItem]; obj->g_root_items[RootItemSearch] = [CategoryItemFactory initSearchItem]; return obj; } - (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item { if ( item == nil ) { return RootItemLast; } return [item subitemsCount]; } - (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item { if ( item == nil ) { return YES; } return [item subitemsCount] ? YES : NO; } - (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item { if ( item == nil ) { return g_root_items[index]; } return [item itemAtIndex: index]; } - (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item { NSString *columnId = [tableColumn identifier]; if ( [columnId compare:@"status"] == NSOrderedSame ) { return nil; } NSString *s = [item text]; return s; } @end @implementation CellWithIcon - (id)init { self = [super init]; if (self != nil) { [self setLineBreakMode:NSLineBreakByTruncatingTail]; } return self; } - (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; return self; } - (id)copyWithZone:(NSZone *)zone { CellWithIcon *result = [super copyWithZone:zone]; if (result != nil) { result->m_icon = nil; [result setIcon:[self icon]]; } return result; } - (void)dealloc { [m_icon release]; [super dealloc]; } - (NSImage *)icon { return m_icon; } - (void)setIcon:(NSImage *)icon { if (icon != m_icon) { [m_icon release]; m_icon = [icon retain]; } } #define PADDING_BEFORE_IMAGE 5.0 #define PADDING_BETWEEN_TITLE_AND_IMAGE 4.0 - (NSRect)imageRectForBounds:(NSRect)bounds { NSRect result = bounds; result.origin.x += PADDING_BEFORE_IMAGE; result.size = [m_icon size]; return result; } - (NSRect)titleRectForBounds:(NSRect)bounds { NSAttributedString *text = [self attributedStringValue]; NSRect result = bounds; NSRect icon_size; icon_size.size = [m_icon size]; result.origin.x += PADDING_BEFORE_IMAGE + icon_size.size.width + PADDING_BETWEEN_TITLE_AND_IMAGE; if (text != nil) { result.size = [text size]; } else { result.size = NSZeroSize; } CGFloat maxX = NSMaxX(bounds) - icon_size.size.height; CGFloat maxWidth = maxX - NSMinX(result); if (maxWidth < 0) { maxWidth = 0; } result.size.width = MIN(NSWidth(result), maxWidth); return result; } - (void)drawInteriorWithFrame:(NSRect)bounds inView:(NSView *)controlView { NSRect imageRect = [self imageRectForBounds:bounds]; [m_icon setFlipped:[controlView isFlipped]]; [m_icon drawInRect:imageRect fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0]; NSRect titleRect = [self titleRectForBounds:bounds]; NSAttributedString *title = [self attributedStringValue]; if ([title length] > 0) { [title drawInRect:titleRect]; } } @end @implementation SourceViewController - (void)awakeFromNib { [m_outline_view setDelegate:self]; id datasource = [amuleSourceListDataSource initWithData]; [m_outline_view setDataSource:datasource]; [m_outline_view reloadData]; int i; for(i = 0; i < [m_outline_view numberOfRows];i++) { id item = [m_outline_view itemAtRow:i]; [m_outline_view expandItem:item]; } } - (void)outlineViewSelectionDidChange:(NSNotification *)notification { int selRow = [m_outline_view selectedRow]; id item = [m_outline_view itemAtRow:selRow]; id viewId = [item viewId]; NSLog(@"select tab=%@\n", viewId); [m_tab_view selectTabViewItemWithIdentifier:viewId]; } - (BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item { id viewId = [item viewId]; return (viewId == nil) ? NO : YES; } - (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item { // if (tableColumn && [[tableColumn identifier] isEqualToString:@"status"]) { NSImage *icon = [item icon]; if ( [cell isKindOfClass:[CellWithIcon class]] ) { [cell setIcon:icon]; } } @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/amuleData.h0000644000175000017500000000647612611472361024713 0ustar morphmorph#import #import "EC.h" @interface amuleFile : NSObject { NSString *m_name; uint64_t m_size; MD5Data m_hash; } - (unsigned)hash; - (NSString *)key; - (BOOL)isEqual: (id) object; - (NSString *)convertWithPrefix:(uint64_t)number; @property (readonly) NSString *name; @property (readonly) uint64_t size; @end @interface DownloadingFile : amuleFile { int m_src_count; int m_non_current_src_count; int m_xfer_src_count; int m_a4af_src_count; uint64_t m_size_done; uint64_t m_size_xfer; int m_prio; bool m_auto_prio; int m_speed; } + (id)createFromEC:(ECTagMD5 *) tag; - (void)updateFromEC:(ECTagMD5 *) tag; - (NSString *)prioToString:(int)prio; @property (readonly) int src_count; @property (readonly) int non_current_src_count; @property (readonly) int xfer_src_count; @property (readonly) int a4af_src_count; @property (readonly) int speed; @property (readonly) uint64_t size_done; @property (readonly) uint64_t size_xfer; @property (readonly) int prio; @property (copy, readonly) NSString * sprio; @end @interface SearchFile : amuleFile { int m_src_count; int m_complete_src_count; bool m_known; } + (id)createFromEC:(ECTagMD5 *) tag; - (void)updateFromEC:(ECTagMD5 *) tag; @property (readonly) int src_count; @property (readonly) int complete_src_count; @end @interface SharedFile : amuleFile { int m_req_count; int m_req_count_all; int m_accept_count; int m_accept_count_all; uint64_t m_size_xfer; uint64_t m_size_xfer_all; int m_prio; bool m_auto_prio; } + (id)createFromEC:(ECTagMD5 *) tag; - (void)updateFromEC:(ECTagMD5 *) tag; - (NSString *)prioToString:(int)prio; @property (readonly) int req_count; @property (readonly) int req_count_all; @property (readonly) int accept_count; @property (readonly) int accept_count_all; @property (readonly) uint64_t size_xfer; @property (readonly) uint64_t size_xfer_all; @property (readonly) int prio; @property (copy, readonly) NSString * sprio; @end @interface amuleFileSet : NSObject { NSMutableDictionary *m_file_dict; NSMutableArray *m_file_array; id m_gui_controller; } - (id)init; - (int)count; - (void)insertObject:(id)object; - (id)objectAtIndex:(int)index; - (id)objectForKey:(id)key; - (void)removeAtIndex:(int)index; - (void)removeAtKey:(id)key; - (void)setGuiController:(id)controller; - (void)reloadGui; @end @interface amuleData : NSObject { // // Core status // uint32_t m_ed2k_id; bool m_ed2k_connected; bool m_kad_connected; NSString *m_ed2k_server; int m_down_speed; int m_up_speed; amuleFileSet *m_downloads; amuleFileSet *m_shared; // // Search info // bool m_search_running; amuleFileSet *m_search_results; ECRemoteConnection *m_connection; } + (id)initWithConnection:(ECRemoteConnection *) connection; // // Binding to EC // - (void)handlePacket:(ECPacket *) packet; - (void)handleError; - (void)handleDownloadQueueUpdate:(ECPacket *) packet; - (void)handleSharedFilesUpdate:(ECPacket *) packet; - (void)handleSearchUpdate:(ECPacket *) packet; - (void)handleStatusUpdate:(ECPacket *) packet; - (void)startSearch:(NSString *)text searchType:(EC_SEARCH_TYPE)searchType minSize:(uint64_t)minSize maxSize:(uint64_t)maxSize avail:(uint32_t)avail; - (void)stopSearch; @property (readonly) amuleFileSet *downloads; @property (readonly) amuleFileSet *shared; @property (readonly) amuleFileSet *search_resuls; @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/amuleData.mm0000644000175000017500000002646012611472361025070 0ustar morphmorph #import "amuleData.h" @implementation amuleFile @synthesize name = m_name; @synthesize size = m_size; - (unsigned)hash { return m_hash.lo ^ m_hash.hi; } - (NSString *)key { NSString *s = [NSString stringWithFormat:@"%qx%qx", m_hash.hi, m_hash.lo]; return s; } - (BOOL)isEqual: (id) object { if ([object isKindOfClass:[amuleFile class]]) { amuleFile *myobj = (amuleFile *)object; return ((myobj->m_hash.lo == m_hash.lo) && (myobj->m_hash.hi == m_hash.hi)); } else { return false; } } - (NSString *)convertWithPrefix:(uint64_t)number { NSString *res = nil; double dnum = number; if ( number < 1024 ) { // bytes res = [NSString stringWithFormat:@"%llu bytes", number]; } else if ( number < 1024*1024 ) { // K res = [NSString stringWithFormat:@"%0.2f Kb", dnum / 1024.0]; } else if ( number < 1024*1024*1024 ) { // M res = [NSString stringWithFormat:@"%.2f Mb", dnum / 1048576.0]; } else { res = [NSString stringWithFormat:@"%.2f Gb", dnum / 1073741824.0]; } return res; } @end @implementation DownloadingFile @synthesize src_count = m_src_count; @synthesize non_current_src_count = m_non_current_src_count; @synthesize xfer_src_count = m_xfer_src_count; @synthesize a4af_src_count = m_a4af_src_count; @synthesize speed = m_speed; @synthesize size_done = m_size_done; @synthesize size_xfer = m_size_xfer; @synthesize prio = m_prio; @dynamic sprio; - (NSString *)sprio { return [self prioToString: m_prio]; } + (id)createFromEC: (ECTagMD5 *) tag { DownloadingFile *obj = [[DownloadingFile alloc] init]; obj->m_hash = [tag getMD5Data]; ECTag *nametag = [tag tagByName: EC_TAG_PARTFILE_NAME]; ECTagString *stag = (ECTagString *)nametag; obj->m_name = stag.stringValue;; obj->m_size = [tag tagInt64ByName: EC_TAG_PARTFILE_SIZE_FULL]; NSLog(@"[EC]: added partfile [%@]\n", obj->m_name); [obj updateFromEC:tag]; return obj; } - (void)updateFromEC:(ECTagMD5 *) tag { NSLog(@"[EC]: updating partfile [%@]\n", m_name); m_size_done = [tag tagInt64ByName: EC_TAG_PARTFILE_SIZE_DONE]; m_size_xfer = [tag tagInt64ByName:EC_TAG_PARTFILE_SIZE_XFER]; m_speed = [tag tagInt64ByName:EC_TAG_PARTFILE_SPEED]; m_src_count = [tag tagInt64ByName: EC_TAG_PARTFILE_SOURCE_COUNT]; m_non_current_src_count = [tag tagInt64ByName: EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT]; m_xfer_src_count = [tag tagInt64ByName: EC_TAG_PARTFILE_SOURCE_COUNT_XFER]; m_a4af_src_count = [tag tagInt64ByName: EC_TAG_PARTFILE_SOURCE_COUNT_A4AF]; m_prio = [tag tagInt64ByName:EC_TAG_PARTFILE_PRIO]; if ( m_prio > 10 ) { m_auto_prio = true; m_prio -= 10; } else { m_auto_prio = false; } } - (NSString *)prioToString:(int)prio { NSString *s = nil; switch (prio) { case 0: s = @"Low"; break; case 1: s = @"Normal"; break; case 2: s = @"High"; break; case 3: s = @"Very High"; break; case 4: s = @"Very Low"; break; case 5: s = @"Auto"; break; case 6: s = @"PowerShare"; break; default: break; } if ( m_auto_prio ) { s = [s stringByAppendingString:@" (auto)"]; } return s; } @end @implementation SearchFile @synthesize src_count = m_src_count; @synthesize complete_src_count = m_complete_src_count; + (id)createFromEC: (ECTagMD5 *) tag { SearchFile *obj = [[SearchFile alloc] init]; obj->m_hash = [tag getMD5Data]; ECTag *nametag = [tag tagByName: EC_TAG_PARTFILE_NAME]; ECTagString *stag = (ECTagString *)nametag; obj->m_name = stag.stringValue;; obj->m_size = [tag tagInt64ByName: EC_TAG_PARTFILE_SIZE_FULL]; obj->m_known = ([tag tagByName: EC_TAG_KNOWNFILE] == nil) ? false : true; [obj updateFromEC:tag]; return obj; } - (void)updateFromEC:(ECTagMD5 *) tag { m_src_count = [tag tagInt64ByName: EC_TAG_PARTFILE_SOURCE_COUNT]; m_complete_src_count = [tag tagInt64ByName: EC_TAG_PARTFILE_SOURCE_COUNT_XFER]; } @end @implementation SharedFile @synthesize size_xfer = m_size_xfer; @synthesize size_xfer_all = m_size_xfer_all; @synthesize req_count = m_req_count; @synthesize req_count_all = m_req_count_all; @synthesize accept_count = m_accept_count; @synthesize accept_count_all = m_accept_count_all; @synthesize prio = m_prio; @dynamic sprio; - (NSString *)sprio { return [self prioToString: m_prio]; } + (id)createFromEC: (ECTagMD5 *) tag { SharedFile *obj = [[SharedFile alloc] init]; obj->m_hash = [tag getMD5Data]; ECTag *nametag = [tag tagByName: EC_TAG_PARTFILE_NAME]; ECTagString *stag = (ECTagString *)nametag; obj->m_name = stag.stringValue;; obj->m_size = [tag tagInt64ByName: EC_TAG_PARTFILE_SIZE_FULL]; [obj updateFromEC:tag]; return obj; } - (NSString *)prioToString:(int)prio { NSString *s = nil; switch (prio) { case 0: s = @"Low"; break; case 1: s = @"Normal"; break; case 2: s = @"High"; break; case 3: s = @"Very High"; break; case 4: s = @"Very Low"; break; case 5: s = @"Auto"; break; case 6: s = @"PowerShare"; break; default: break; } if ( m_auto_prio ) { s = [s stringByAppendingString:@" (auto)"]; } return s; } - (void)updateFromEC:(ECTagMD5 *) tag { m_req_count = [tag tagInt64ByName: EC_TAG_KNOWNFILE_REQ_COUNT]; m_req_count_all = [tag tagInt64ByName: EC_TAG_KNOWNFILE_REQ_COUNT_ALL]; m_accept_count = [tag tagInt64ByName: EC_TAG_KNOWNFILE_ACCEPT_COUNT]; m_accept_count_all = [tag tagInt64ByName: EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL]; m_size_xfer = [tag tagInt64ByName: EC_TAG_KNOWNFILE_XFERRED]; m_size_xfer_all = [tag tagInt64ByName: EC_TAG_KNOWNFILE_XFERRED_ALL]; m_prio = [tag tagInt64ByName:EC_TAG_PARTFILE_PRIO]; if ( m_prio > 10 ) { m_auto_prio = true; m_prio -= 10; } else { m_auto_prio = false; } } @end @implementation amuleFileSet - (id)init { if ((self = [super init])) { m_file_dict = [NSMutableDictionary dictionaryWithCapacity:256]; m_file_array = [[NSMutableArray alloc] init]; } return self; } - (int)count { return [m_file_dict count]; } - (void)insertObject:(id)object { id objKey = [object key]; [m_file_dict setObject:object forKey:objKey]; [m_file_array addObject:object]; [self reloadGui]; } - (void)reloadGui { if ([m_gui_controller respondsToSelector:@selector(reload:)]) { [m_gui_controller performSelector:@selector(reload:)]; } else { NSLog(@"Internal error: gui controller doesnt respond to 'reload'\n"); } // if ([m_gui_controller respondsToSelector:[m_gui_controller reload]) { // [m_gui_controller performSelector:@selector(reload)]; // } else { // NSLog(@"Internal error: gui controller doesnt respond to 'reload'\n"); // } } - (id)objectAtIndex:(int)index { return [m_file_array objectAtIndex:index]; } - (id)objectForKey:(id)key { return [m_file_dict objectForKey:key]; } - (void)removeAtIndex:(int)index { id curr_obj = [m_file_array objectAtIndex:index]; id key = [curr_obj key]; [m_file_dict removeObjectForKey:key]; [m_file_array removeObjectAtIndex:index]; [self reloadGui]; } - (void)removeAtKey:(id)key { [m_file_dict removeObjectForKey:key]; int index = -1; for (int i = 0; i < [m_file_array count]; i++) { id curr_obj = [m_file_array objectAtIndex:i]; if ([curr_obj key] == key) { index = i; break; } } if ( index != -1 ) { [m_file_array removeObjectAtIndex:index]; } else { NSLog(@"Internal error: object not found in array\n"); } [self reloadGui]; } - (void)setGuiController:(id)controller { m_gui_controller = controller; } @end @implementation amuleData @synthesize downloads = m_downloads; @synthesize shared = m_shared; @synthesize search_resuls = m_search_results; + (id)initWithConnection:(ECRemoteConnection *) connection { amuleData *obj = [[amuleData alloc] init]; connection.delegate = obj; obj->m_connection = connection; obj->m_downloads = [[amuleFileSet alloc] init]; obj->m_shared = [[amuleFileSet alloc] init]; obj->m_search_results = [[amuleFileSet alloc] init]; return obj; } - (void)handlePacket:(ECPacket *) packet { switch(packet.opcode) { case EC_OP_STATS : { break; } case EC_OP_DLOAD_QUEUE: { [self handleDownloadQueueUpdate: packet]; break; } case EC_OP_SHARED_FILES: { [self handleSharedFilesUpdate: packet]; break; } case EC_OP_SEARCH_RESULTS: { [self handleSearchUpdate: packet]; break; } default: { NSLog(@"[EC] packet with opcode %d not handled\n", packet.opcode); } } } - (void)handleError { NSRunCriticalAlertPanel(@"Daemon communication error", @"Connection with core daemon (amuled) failed", @"Quit", nil,nil); exit(-1); } - (void)handleDownloadQueueUpdate:(ECPacket *) packet { for (ECTag *t in packet.subtags) { if ( [t isKindOfClass:[ECTagMD5 class]] ) { ECTagMD5 *tag = (ECTagMD5 *)t; if ( [tag tagCount] == 0 ) { // // Only hash here - indication to remove the object // [m_downloads removeAtKey:[tag stringKey]]; } else { NSLog(@"[EC] filehash=[%@]\n", [tag stringKey]); DownloadingFile *file = [m_downloads objectForKey:[tag stringKey]]; if ( file == nil ) { file = [DownloadingFile createFromEC:tag]; [m_downloads insertObject:file]; } else { DownloadingFile *file = [m_downloads objectForKey:[tag stringKey]]; [file updateFromEC:tag]; } } } else { NSLog(@"[EC] bad tag type '%s'\n", [t class]); } } } - (void)handleSharedFilesUpdate:(ECPacket *) packet { for (ECTag *t in packet.subtags) { if ( [t isKindOfClass:[ECTagMD5 class]] ) { ECTagMD5 *tag = (ECTagMD5 *)t; if ( [tag tagCount] == 0 ) { // // Only hash here - indication to remove the object // [m_shared removeAtKey:[tag stringKey]]; } else { NSLog(@"[EC] filehash=[%@]\n", [tag stringKey]); SharedFile *file = [m_shared objectForKey:[tag stringKey]]; if ( file == nil ) { file = [SharedFile createFromEC:tag]; [m_shared insertObject:file]; } else { SharedFile *file = [m_shared objectForKey:[tag stringKey]]; [file updateFromEC:tag]; } } } else { NSLog(@"[EC] bad tag type '%s'\n", [t class]); } } } - (void)handleSearchUpdate:(ECPacket *) packet { for (ECTag *t in packet.subtags) { if ( [t isKindOfClass:[ECTagMD5 class]] ) { ECTagMD5 *tag = (ECTagMD5 *)t; SearchFile *file = [m_search_results objectForKey:[tag stringKey]]; if ( file == nil ) { file = [SearchFile createFromEC:tag]; [m_search_results insertObject:file]; } else { SearchFile *file = [m_search_results objectForKey:[tag stringKey]]; [file updateFromEC:tag]; } } } } - (void)handleStatusUpdate:(ECPacket *) packet { } - (void)startSearch:(NSString *)text searchType:(EC_SEARCH_TYPE)searchType minSize:(uint64_t)minSize maxSize:(uint64_t)maxSize avail:(uint32_t)avail { ECPacket *packet = [ECPacket packetWithOpcode:EC_OP_SEARCH_START]; ECTagInt8 *searchtag = [ECTagInt8 tagFromInt8:searchType withName:EC_TAG_SEARCH_TYPE]; [searchtag.subtags addObject:[ECTagString tagFromString:text withName:EC_TAG_SEARCH_NAME]]; if ( minSize ) { [searchtag.subtags addObject:[ECTagInt64 tagFromInt64:minSize withName:EC_TAG_SEARCH_MIN_SIZE]]; } if ( maxSize ) { [searchtag.subtags addObject:[ECTagInt64 tagFromInt64:maxSize withName:EC_TAG_SEARCH_MAX_SIZE]]; } if ( avail ) { [searchtag.subtags addObject:[ECTagInt32 tagFromInt32:avail withName:EC_TAG_SEARCH_AVAILABILITY]]; } [packet.subtags addObject:searchtag]; [m_connection sendPacket:packet]; m_search_running = true; } - (void)stopSearch { ECPacket *packet = [ECPacket packetWithOpcode:EC_OP_SEARCH_STOP]; [m_connection sendPacket:packet]; m_search_running = false; } @end amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/cocoa-mule.xcodeproj/0000755000175000017500000000000012611472361026650 5ustar morphmorph././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/cocoa-mule.xcodeproj/project.pbxprojamule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/cocoa-mule.xcodeproj/project.pbx0000644000175000017500000011251012611472361031031 0ustar morphmorph// !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 44; objects = { /* Begin PBXBuildFile section */ 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; B201E59A0F77F945002001E0 /* BWToolkitFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B203F8B10F719AE100054498 /* BWToolkitFramework.framework */; }; B203F8EF0F719B4C00054498 /* BWToolkitFramework.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B203F8B10F719AE100054498 /* BWToolkitFramework.framework */; }; B20467430F20DD1E00972AD8 /* AddLinkDialogController.m in Sources */ = {isa = PBXBuildFile; fileRef = B20467420F20DD1E00972AD8 /* AddLinkDialogController.m */; }; B20E7E300EFD313400EF0D8D /* LoginDialog.nib in Resources */ = {isa = PBXBuildFile; fileRef = B20E7E2F0EFD313400EF0D8D /* LoginDialog.nib */; }; B20E7E360EFD322C00EF0D8D /* LoginDialogController.m in Sources */ = {isa = PBXBuildFile; fileRef = B20E7E350EFD322C00EF0D8D /* LoginDialogController.m */; }; B228A7A60E7C426B009B94B4 /* EC.mm in Sources */ = {isa = PBXBuildFile; fileRef = B228A7A50E7C426B009B94B4 /* EC.mm */; }; B2499CA70E7CBBF400F67575 /* Client_A4AFNoNeededPartsQueueFull.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C7E0E7CBBF400F67575 /* Client_A4AFNoNeededPartsQueueFull.png */; }; B2499CA80E7CBBF400F67575 /* Client_aMule.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C7F0E7CBBF400F67575 /* Client_aMule.png */; }; B2499CA90E7CBBF400F67575 /* Client_BadGuy.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C800E7CBBF400F67575 /* Client_BadGuy.png */; }; B2499CAA0E7CBBF400F67575 /* Client_CommentOnly.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C810E7CBBF400F67575 /* Client_CommentOnly.png */; }; B2499CAB0E7CBBF400F67575 /* Client_Connecting.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C820E7CBBF400F67575 /* Client_Connecting.png */; }; B2499CAC0E7CBBF400F67575 /* Client_CreditsGrey.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C830E7CBBF400F67575 /* Client_CreditsGrey.png */; }; B2499CAD0E7CBBF400F67575 /* Client_CreditsYellow.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C840E7CBBF400F67575 /* Client_CreditsYellow.png */; }; B2499CAE0E7CBBF400F67575 /* Client_eDonkeyHybrid.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C850E7CBBF400F67575 /* Client_eDonkeyHybrid.png */; }; B2499CAF0E7CBBF400F67575 /* Client_eMule.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C860E7CBBF400F67575 /* Client_eMule.png */; }; B2499CB00E7CBBF400F67575 /* Client_Encrypted.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C870E7CBBF400F67575 /* Client_Encrypted.png */; }; B2499CB10E7CBBF400F67575 /* Client_ExcellentRatingOnFile.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C880E7CBBF400F67575 /* Client_ExcellentRatingOnFile.png */; }; B2499CB20E7CBBF400F67575 /* Client_ExtendedProtocol.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C890E7CBBF400F67575 /* Client_ExtendedProtocol.png */; }; B2499CB30E7CBBF400F67575 /* Client_FairRatingOnFile.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C8A0E7CBBF400F67575 /* Client_FairRatingOnFile.png */; }; B2499CB40E7CBBF400F67575 /* Client_Friend.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C8B0E7CBBF400F67575 /* Client_Friend.png */; }; B2499CB50E7CBBF400F67575 /* Client_GoodRatingOnFile.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C8C0E7CBBF400F67575 /* Client_GoodRatingOnFile.png */; }; B2499CB60E7CBBF400F67575 /* Client_InvalidRatingOnFile.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C8D0E7CBBF400F67575 /* Client_InvalidRatingOnFile.png */; }; B2499CB70E7CBBF400F67575 /* Client_lphant.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C8E0E7CBBF400F67575 /* Client_lphant.png */; }; B2499CB80E7CBBF400F67575 /* Client_mlDonkey.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C8F0E7CBBF400F67575 /* Client_mlDonkey.png */; }; B2499CB90E7CBBF400F67575 /* Client_OnQueue.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C900E7CBBF400F67575 /* Client_OnQueue.png */; }; B2499CBA0E7CBBF400F67575 /* Client_PoorRatingOnFile.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C910E7CBBF400F67575 /* Client_PoorRatingOnFile.png */; }; B2499CBB0E7CBBF400F67575 /* Client_SecIdent.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C920E7CBBF400F67575 /* Client_SecIdent.png */; }; B2499CBC0E7CBBF400F67575 /* Client_Shareaza.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C930E7CBBF400F67575 /* Client_Shareaza.png */; }; B2499CBD0E7CBBF400F67575 /* Client_StatusUnknown.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C940E7CBBF400F67575 /* Client_StatusUnknown.png */; }; B2499CBE0E7CBBF400F67575 /* Client_Transfer.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C950E7CBBF400F67575 /* Client_Transfer.png */; }; B2499CBF0E7CBBF400F67575 /* Client_Unknown.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C960E7CBBF400F67575 /* Client_Unknown.png */; }; B2499CC00E7CBBF400F67575 /* Client_Upload.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C970E7CBBF400F67575 /* Client_Upload.png */; }; B2499CC10E7CBBF400F67575 /* Client_xMule.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C980E7CBBF400F67575 /* Client_xMule.png */; }; B2499CC30E7CBBF400F67575 /* Toolbar_About.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C9A0E7CBBF400F67575 /* Toolbar_About.png */; }; B2499CC40E7CBBF400F67575 /* Toolbar_Blink.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C9B0E7CBBF400F67575 /* Toolbar_Blink.png */; }; B2499CC50E7CBBF400F67575 /* Toolbar_Connect.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C9C0E7CBBF400F67575 /* Toolbar_Connect.png */; }; B2499CC60E7CBBF400F67575 /* Toolbar_Connecting.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C9D0E7CBBF400F67575 /* Toolbar_Connecting.png */; }; B2499CC70E7CBBF400F67575 /* Toolbar_Disconnect.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C9E0E7CBBF400F67575 /* Toolbar_Disconnect.png */; }; B2499CC80E7CBBF400F67575 /* Toolbar_Import.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499C9F0E7CBBF400F67575 /* Toolbar_Import.png */; }; B2499CC90E7CBBF400F67575 /* Toolbar_Messages.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499CA00E7CBBF400F67575 /* Toolbar_Messages.png */; }; B2499CCA0E7CBBF400F67575 /* Toolbar_Network.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499CA10E7CBBF400F67575 /* Toolbar_Network.png */; }; B2499CCB0E7CBBF400F67575 /* Toolbar_Prefs.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499CA20E7CBBF400F67575 /* Toolbar_Prefs.png */; }; B2499CCC0E7CBBF400F67575 /* Toolbar_Search.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499CA30E7CBBF400F67575 /* Toolbar_Search.png */; }; B2499CCD0E7CBBF400F67575 /* Toolbar_Shared.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499CA40E7CBBF400F67575 /* Toolbar_Shared.png */; }; B2499CCE0E7CBBF400F67575 /* Toolbar_Stats.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499CA50E7CBBF400F67575 /* Toolbar_Stats.png */; }; B2499CCF0E7CBBF400F67575 /* Toolbar_Transfers.png in Resources */ = {isa = PBXBuildFile; fileRef = B2499CA60E7CBBF400F67575 /* Toolbar_Transfers.png */; }; B253EAAB0F87465E000EC011 /* SharedFilesViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = B253EAA90F87465E000EC011 /* SharedFilesViewController.mm */; }; B257A4550F1A7AD800DC958E /* SearchViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = B257A4540F1A7AD800DC958E /* SearchViewController.mm */; }; B291B8130F7E122500FF9F46 /* SourceViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B291B8110F7E122500FF9F46 /* SourceViewController.m */; }; B2B307A40F05470200AE5E79 /* DownloadsViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2B307A30F05470200AE5E79 /* DownloadsViewController.mm */; }; B2CDC5AD0E9541D5009370D9 /* amuleData.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2CDC5AC0E9541D5009370D9 /* amuleData.mm */; }; B2DD60230E7BC65400987099 /* AppController.mm in Sources */ = {isa = PBXBuildFile; fileRef = B2DD60220E7BC65400987099 /* AppController.mm */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ B203F8C60F719B1F00054498 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( B203F8EF0F719B4C00054498 /* BWToolkitFramework.framework in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 29B97319FDCFA39411CA2CEA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/MainMenu.nib; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* cocoa-mule_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "cocoa-mule_Prefix.pch"; sourceTree = ""; }; 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* cocoa-mule.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "cocoa-mule.app"; sourceTree = BUILT_PRODUCTS_DIR; }; B203F8B10F719AE100054498 /* BWToolkitFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = BWToolkitFramework.framework; path = ../../BWToolkit/BWToolkitFramework.framework; sourceTree = SOURCE_ROOT; }; B20467410F20DD1E00972AD8 /* AddLinkDialogController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddLinkDialogController.h; sourceTree = ""; }; B20467420F20DD1E00972AD8 /* AddLinkDialogController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddLinkDialogController.m; sourceTree = ""; }; B20E7E340EFD322C00EF0D8D /* LoginDialogController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoginDialogController.h; sourceTree = ""; }; B20E7E350EFD322C00EF0D8D /* LoginDialogController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LoginDialogController.m; sourceTree = ""; }; B228A7A40E7C426B009B94B4 /* EC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EC.h; sourceTree = ""; }; B228A7A50E7C426B009B94B4 /* EC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EC.mm; sourceTree = ""; }; B228A7BA0E7C438A009B94B4 /* ECCodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ECCodes.h; path = ../src/libs/ec/cpp/ECCodes.h; sourceTree = SOURCE_ROOT; }; B228A7C70E7C43E1009B94B4 /* ECTagTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ECTagTypes.h; path = ../src/libs/ec/cpp/ECTagTypes.h; sourceTree = SOURCE_ROOT; }; B228A7CA0E7C441A009B94B4 /* ECVersion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ECVersion.h; path = ../src/libs/ec/cpp/ECVersion.h; sourceTree = SOURCE_ROOT; }; B2499C7E0E7CBBF400F67575 /* Client_A4AFNoNeededPartsQueueFull.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_A4AFNoNeededPartsQueueFull.png; sourceTree = ""; }; B2499C7F0E7CBBF400F67575 /* Client_aMule.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_aMule.png; sourceTree = ""; }; B2499C800E7CBBF400F67575 /* Client_BadGuy.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_BadGuy.png; sourceTree = ""; }; B2499C810E7CBBF400F67575 /* Client_CommentOnly.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_CommentOnly.png; sourceTree = ""; }; B2499C820E7CBBF400F67575 /* Client_Connecting.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_Connecting.png; sourceTree = ""; }; B2499C830E7CBBF400F67575 /* Client_CreditsGrey.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_CreditsGrey.png; sourceTree = ""; }; B2499C840E7CBBF400F67575 /* Client_CreditsYellow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_CreditsYellow.png; sourceTree = ""; }; B2499C850E7CBBF400F67575 /* Client_eDonkeyHybrid.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_eDonkeyHybrid.png; sourceTree = ""; }; B2499C860E7CBBF400F67575 /* Client_eMule.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_eMule.png; sourceTree = ""; }; B2499C870E7CBBF400F67575 /* Client_Encrypted.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_Encrypted.png; sourceTree = ""; }; B2499C880E7CBBF400F67575 /* Client_ExcellentRatingOnFile.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_ExcellentRatingOnFile.png; sourceTree = ""; }; B2499C890E7CBBF400F67575 /* Client_ExtendedProtocol.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_ExtendedProtocol.png; sourceTree = ""; }; B2499C8A0E7CBBF400F67575 /* Client_FairRatingOnFile.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_FairRatingOnFile.png; sourceTree = ""; }; B2499C8B0E7CBBF400F67575 /* Client_Friend.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_Friend.png; sourceTree = ""; }; B2499C8C0E7CBBF400F67575 /* Client_GoodRatingOnFile.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_GoodRatingOnFile.png; sourceTree = ""; }; B2499C8D0E7CBBF400F67575 /* Client_InvalidRatingOnFile.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_InvalidRatingOnFile.png; sourceTree = ""; }; B2499C8E0E7CBBF400F67575 /* Client_lphant.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_lphant.png; sourceTree = ""; }; B2499C8F0E7CBBF400F67575 /* Client_mlDonkey.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_mlDonkey.png; sourceTree = ""; }; B2499C900E7CBBF400F67575 /* Client_OnQueue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_OnQueue.png; sourceTree = ""; }; B2499C910E7CBBF400F67575 /* Client_PoorRatingOnFile.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_PoorRatingOnFile.png; sourceTree = ""; }; B2499C920E7CBBF400F67575 /* Client_SecIdent.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_SecIdent.png; sourceTree = ""; }; B2499C930E7CBBF400F67575 /* Client_Shareaza.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_Shareaza.png; sourceTree = ""; }; B2499C940E7CBBF400F67575 /* Client_StatusUnknown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_StatusUnknown.png; sourceTree = ""; }; B2499C950E7CBBF400F67575 /* Client_Transfer.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_Transfer.png; sourceTree = ""; }; B2499C960E7CBBF400F67575 /* Client_Unknown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_Unknown.png; sourceTree = ""; }; B2499C970E7CBBF400F67575 /* Client_Upload.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_Upload.png; sourceTree = ""; }; B2499C980E7CBBF400F67575 /* Client_xMule.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Client_xMule.png; sourceTree = ""; }; B2499C9A0E7CBBF400F67575 /* Toolbar_About.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_About.png; sourceTree = ""; }; B2499C9B0E7CBBF400F67575 /* Toolbar_Blink.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_Blink.png; sourceTree = ""; }; B2499C9C0E7CBBF400F67575 /* Toolbar_Connect.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_Connect.png; sourceTree = ""; }; B2499C9D0E7CBBF400F67575 /* Toolbar_Connecting.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_Connecting.png; sourceTree = ""; }; B2499C9E0E7CBBF400F67575 /* Toolbar_Disconnect.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_Disconnect.png; sourceTree = ""; }; B2499C9F0E7CBBF400F67575 /* Toolbar_Import.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_Import.png; sourceTree = ""; }; B2499CA00E7CBBF400F67575 /* Toolbar_Messages.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_Messages.png; sourceTree = ""; }; B2499CA10E7CBBF400F67575 /* Toolbar_Network.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_Network.png; sourceTree = ""; }; B2499CA20E7CBBF400F67575 /* Toolbar_Prefs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_Prefs.png; sourceTree = ""; }; B2499CA30E7CBBF400F67575 /* Toolbar_Search.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_Search.png; sourceTree = ""; }; B2499CA40E7CBBF400F67575 /* Toolbar_Shared.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_Shared.png; sourceTree = ""; }; B2499CA50E7CBBF400F67575 /* Toolbar_Stats.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_Stats.png; sourceTree = ""; }; B2499CA60E7CBBF400F67575 /* Toolbar_Transfers.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Toolbar_Transfers.png; sourceTree = ""; }; B253EAA90F87465E000EC011 /* SharedFilesViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SharedFilesViewController.mm; sourceTree = ""; }; B253EAAA0F87465E000EC011 /* SharedFilesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SharedFilesViewController.h; sourceTree = ""; }; B257A4530F1A7AD800DC958E /* SearchViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchViewController.h; sourceTree = ""; }; B257A4540F1A7AD800DC958E /* SearchViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SearchViewController.mm; sourceTree = ""; }; B291B8110F7E122500FF9F46 /* SourceViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SourceViewController.m; sourceTree = ""; }; B291B8120F7E122500FF9F46 /* SourceViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SourceViewController.h; sourceTree = ""; }; B29E77B50EFC357600F4C677 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/LoginDialog.nib; sourceTree = ""; }; B2B307A20F05470200AE5E79 /* DownloadsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DownloadsViewController.h; sourceTree = ""; }; B2B307A30F05470200AE5E79 /* DownloadsViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DownloadsViewController.mm; sourceTree = ""; }; B2CDC5AB0E9541D5009370D9 /* amuleData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = amuleData.h; sourceTree = ""; }; B2CDC5AC0E9541D5009370D9 /* amuleData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = amuleData.mm; sourceTree = ""; }; B2DD601F0E7BC62A00987099 /* AppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppController.h; sourceTree = ""; }; B2DD60220E7BC65400987099 /* AppController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AppController.mm; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 8D11072E0486CEB800E47090 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( B201E59A0F77F945002001E0 /* BWToolkitFramework.framework in Frameworks */, 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( B2CDC5AB0E9541D5009370D9 /* amuleData.h */, B2CDC5AC0E9541D5009370D9 /* amuleData.mm */, B2B307A20F05470200AE5E79 /* DownloadsViewController.h */, B2B307A30F05470200AE5E79 /* DownloadsViewController.mm */, B253EAA90F87465E000EC011 /* SharedFilesViewController.mm */, B253EAAA0F87465E000EC011 /* SharedFilesViewController.h */, B257A4530F1A7AD800DC958E /* SearchViewController.h */, B257A4540F1A7AD800DC958E /* SearchViewController.mm */, B291B8110F7E122500FF9F46 /* SourceViewController.m */, B291B8120F7E122500FF9F46 /* SourceViewController.h */, 32CA4F630368D1EE00C91783 /* cocoa-mule_Prefix.pch */, ); name = Classes; sourceTree = ""; }; 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { isa = PBXGroup; children = ( B203F8B10F719AE100054498 /* BWToolkitFramework.framework */, 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, ); name = "Linked Frameworks"; sourceTree = ""; }; 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { isa = PBXGroup; children = ( 29B97324FDCFA39411CA2CEA /* AppKit.framework */, 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, 29B97325FDCFA39411CA2CEA /* Foundation.framework */, ); name = "Other Frameworks"; sourceTree = ""; }; 19C28FACFE9D520D11CA2CBB /* Products */ = { isa = PBXGroup; children = ( 8D1107320486CEB800E47090 /* cocoa-mule.app */, ); name = Products; sourceTree = ""; }; 29B97314FDCFA39411CA2CEA /* cocoa-mule */ = { isa = PBXGroup; children = ( B2499C7D0E7CBBF400F67575 /* images */, B228A7C30E7C4393009B94B4 /* EC */, 080E96DDFE201D6D7F000001 /* Classes */, 29B97315FDCFA39411CA2CEA /* GUI */, 29B97317FDCFA39411CA2CEA /* Resources */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 19C28FACFE9D520D11CA2CBB /* Products */, ); name = "cocoa-mule"; sourceTree = ""; }; 29B97315FDCFA39411CA2CEA /* GUI */ = { isa = PBXGroup; children = ( 29B97316FDCFA39411CA2CEA /* main.m */, B2DD60220E7BC65400987099 /* AppController.mm */, B2DD601F0E7BC62A00987099 /* AppController.h */, B20467410F20DD1E00972AD8 /* AddLinkDialogController.h */, B20467420F20DD1E00972AD8 /* AddLinkDialogController.m */, B20E7E350EFD322C00EF0D8D /* LoginDialogController.m */, B20E7E340EFD322C00EF0D8D /* LoginDialogController.h */, ); name = GUI; sourceTree = ""; }; 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( 8D1107310486CEB800E47090 /* Info.plist */, 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, 29B97318FDCFA39411CA2CEA /* MainMenu.nib */, B20E7E2F0EFD313400EF0D8D /* LoginDialog.nib */, ); name = Resources; sourceTree = ""; }; 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, ); name = Frameworks; sourceTree = ""; }; B228A7C30E7C4393009B94B4 /* EC */ = { isa = PBXGroup; children = ( B228A7A50E7C426B009B94B4 /* EC.mm */, B228A7A40E7C426B009B94B4 /* EC.h */, B228A7BA0E7C438A009B94B4 /* ECCodes.h */, B228A7CA0E7C441A009B94B4 /* ECVersion.h */, B228A7C70E7C43E1009B94B4 /* ECTagTypes.h */, ); name = EC; sourceTree = ""; }; B2499C7D0E7CBBF400F67575 /* images */ = { isa = PBXGroup; children = ( B2499C7E0E7CBBF400F67575 /* Client_A4AFNoNeededPartsQueueFull.png */, B2499C7F0E7CBBF400F67575 /* Client_aMule.png */, B2499C800E7CBBF400F67575 /* Client_BadGuy.png */, B2499C810E7CBBF400F67575 /* Client_CommentOnly.png */, B2499C820E7CBBF400F67575 /* Client_Connecting.png */, B2499C830E7CBBF400F67575 /* Client_CreditsGrey.png */, B2499C840E7CBBF400F67575 /* Client_CreditsYellow.png */, B2499C850E7CBBF400F67575 /* Client_eDonkeyHybrid.png */, B2499C860E7CBBF400F67575 /* Client_eMule.png */, B2499C870E7CBBF400F67575 /* Client_Encrypted.png */, B2499C880E7CBBF400F67575 /* Client_ExcellentRatingOnFile.png */, B2499C890E7CBBF400F67575 /* Client_ExtendedProtocol.png */, B2499C8A0E7CBBF400F67575 /* Client_FairRatingOnFile.png */, B2499C8B0E7CBBF400F67575 /* Client_Friend.png */, B2499C8C0E7CBBF400F67575 /* Client_GoodRatingOnFile.png */, B2499C8D0E7CBBF400F67575 /* Client_InvalidRatingOnFile.png */, B2499C8E0E7CBBF400F67575 /* Client_lphant.png */, B2499C8F0E7CBBF400F67575 /* Client_mlDonkey.png */, B2499C900E7CBBF400F67575 /* Client_OnQueue.png */, B2499C910E7CBBF400F67575 /* Client_PoorRatingOnFile.png */, B2499C920E7CBBF400F67575 /* Client_SecIdent.png */, B2499C930E7CBBF400F67575 /* Client_Shareaza.png */, B2499C940E7CBBF400F67575 /* Client_StatusUnknown.png */, B2499C950E7CBBF400F67575 /* Client_Transfer.png */, B2499C960E7CBBF400F67575 /* Client_Unknown.png */, B2499C970E7CBBF400F67575 /* Client_Upload.png */, B2499C980E7CBBF400F67575 /* Client_xMule.png */, B2499C9A0E7CBBF400F67575 /* Toolbar_About.png */, B2499C9B0E7CBBF400F67575 /* Toolbar_Blink.png */, B2499C9C0E7CBBF400F67575 /* Toolbar_Connect.png */, B2499C9D0E7CBBF400F67575 /* Toolbar_Connecting.png */, B2499C9E0E7CBBF400F67575 /* Toolbar_Disconnect.png */, B2499C9F0E7CBBF400F67575 /* Toolbar_Import.png */, B2499CA00E7CBBF400F67575 /* Toolbar_Messages.png */, B2499CA10E7CBBF400F67575 /* Toolbar_Network.png */, B2499CA20E7CBBF400F67575 /* Toolbar_Prefs.png */, B2499CA30E7CBBF400F67575 /* Toolbar_Search.png */, B2499CA40E7CBBF400F67575 /* Toolbar_Shared.png */, B2499CA50E7CBBF400F67575 /* Toolbar_Stats.png */, B2499CA60E7CBBF400F67575 /* Toolbar_Transfers.png */, ); path = images; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 8D1107260486CEB800E47090 /* cocoa-mule */ = { isa = PBXNativeTarget; buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "cocoa-mule" */; buildPhases = ( 8D1107290486CEB800E47090 /* Resources */, 8D11072C0486CEB800E47090 /* Sources */, 8D11072E0486CEB800E47090 /* Frameworks */, B203F8C60F719B1F00054498 /* CopyFiles */, ); buildRules = ( ); dependencies = ( ); name = "cocoa-mule"; productInstallPath = "$(HOME)/Applications"; productName = "cocoa-mule"; productReference = 8D1107320486CEB800E47090 /* cocoa-mule.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "cocoa-mule" */; compatibilityVersion = "Xcode 3.0"; hasScannedForEncodings = 1; mainGroup = 29B97314FDCFA39411CA2CEA /* cocoa-mule */; projectDirPath = ""; projectRoot = ""; targets = ( 8D1107260486CEB800E47090 /* cocoa-mule */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 8D1107290486CEB800E47090 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 8D11072A0486CEB800E47090 /* MainMenu.nib in Resources */, 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, B2499CA70E7CBBF400F67575 /* Client_A4AFNoNeededPartsQueueFull.png in Resources */, B2499CA80E7CBBF400F67575 /* Client_aMule.png in Resources */, B2499CA90E7CBBF400F67575 /* Client_BadGuy.png in Resources */, B2499CAA0E7CBBF400F67575 /* Client_CommentOnly.png in Resources */, B2499CAB0E7CBBF400F67575 /* Client_Connecting.png in Resources */, B2499CAC0E7CBBF400F67575 /* Client_CreditsGrey.png in Resources */, B2499CAD0E7CBBF400F67575 /* Client_CreditsYellow.png in Resources */, B2499CAE0E7CBBF400F67575 /* Client_eDonkeyHybrid.png in Resources */, B2499CAF0E7CBBF400F67575 /* Client_eMule.png in Resources */, B2499CB00E7CBBF400F67575 /* Client_Encrypted.png in Resources */, B2499CB10E7CBBF400F67575 /* Client_ExcellentRatingOnFile.png in Resources */, B2499CB20E7CBBF400F67575 /* Client_ExtendedProtocol.png in Resources */, B2499CB30E7CBBF400F67575 /* Client_FairRatingOnFile.png in Resources */, B2499CB40E7CBBF400F67575 /* Client_Friend.png in Resources */, B2499CB50E7CBBF400F67575 /* Client_GoodRatingOnFile.png in Resources */, B2499CB60E7CBBF400F67575 /* Client_InvalidRatingOnFile.png in Resources */, B2499CB70E7CBBF400F67575 /* Client_lphant.png in Resources */, B2499CB80E7CBBF400F67575 /* Client_mlDonkey.png in Resources */, B2499CB90E7CBBF400F67575 /* Client_OnQueue.png in Resources */, B2499CBA0E7CBBF400F67575 /* Client_PoorRatingOnFile.png in Resources */, B2499CBB0E7CBBF400F67575 /* Client_SecIdent.png in Resources */, B2499CBC0E7CBBF400F67575 /* Client_Shareaza.png in Resources */, B2499CBD0E7CBBF400F67575 /* Client_StatusUnknown.png in Resources */, B2499CBE0E7CBBF400F67575 /* Client_Transfer.png in Resources */, B2499CBF0E7CBBF400F67575 /* Client_Unknown.png in Resources */, B2499CC00E7CBBF400F67575 /* Client_Upload.png in Resources */, B2499CC10E7CBBF400F67575 /* Client_xMule.png in Resources */, B2499CC30E7CBBF400F67575 /* Toolbar_About.png in Resources */, B2499CC40E7CBBF400F67575 /* Toolbar_Blink.png in Resources */, B2499CC50E7CBBF400F67575 /* Toolbar_Connect.png in Resources */, B2499CC60E7CBBF400F67575 /* Toolbar_Connecting.png in Resources */, B2499CC70E7CBBF400F67575 /* Toolbar_Disconnect.png in Resources */, B2499CC80E7CBBF400F67575 /* Toolbar_Import.png in Resources */, B2499CC90E7CBBF400F67575 /* Toolbar_Messages.png in Resources */, B2499CCA0E7CBBF400F67575 /* Toolbar_Network.png in Resources */, B2499CCB0E7CBBF400F67575 /* Toolbar_Prefs.png in Resources */, B2499CCC0E7CBBF400F67575 /* Toolbar_Search.png in Resources */, B2499CCD0E7CBBF400F67575 /* Toolbar_Shared.png in Resources */, B2499CCE0E7CBBF400F67575 /* Toolbar_Stats.png in Resources */, B2499CCF0E7CBBF400F67575 /* Toolbar_Transfers.png in Resources */, B20E7E300EFD313400EF0D8D /* LoginDialog.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 8D11072C0486CEB800E47090 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 8D11072D0486CEB800E47090 /* main.m in Sources */, B2DD60230E7BC65400987099 /* AppController.mm in Sources */, B228A7A60E7C426B009B94B4 /* EC.mm in Sources */, B2CDC5AD0E9541D5009370D9 /* amuleData.mm in Sources */, B20E7E360EFD322C00EF0D8D /* LoginDialogController.m in Sources */, B2B307A40F05470200AE5E79 /* DownloadsViewController.mm in Sources */, B257A4550F1A7AD800DC958E /* SearchViewController.mm in Sources */, B20467430F20DD1E00972AD8 /* AddLinkDialogController.m in Sources */, B291B8130F7E122500FF9F46 /* SourceViewController.m in Sources */, B253EAAB0F87465E000EC011 /* SharedFilesViewController.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXVariantGroup section */ 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { isa = PBXVariantGroup; children = ( 089C165DFE840E0CC02AAC07 /* English */, ); name = InfoPlist.strings; sourceTree = ""; }; 29B97318FDCFA39411CA2CEA /* MainMenu.nib */ = { isa = PBXVariantGroup; children = ( 29B97319FDCFA39411CA2CEA /* English */, ); name = MainMenu.nib; sourceTree = ""; }; B20E7E2F0EFD313400EF0D8D /* LoginDialog.nib */ = { isa = PBXVariantGroup; children = ( B29E77B50EFC357600F4C677 /* English */, ); name = LoginDialog.nib; sourceTree = ""; }; /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ C01FCF4B08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../../../bin/BWToolkit\"", "\"$(SRCROOT)/../../BWToolkit\"", ); GCC_DEBUGGING_SYMBOLS = full; GCC_DYNAMIC_NO_PIC = NO; GCC_ENABLE_FIX_AND_CONTINUE = YES; GCC_ENABLE_OBJC_GC = supported; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "cocoa-mule_Prefix.pch"; GCC_SYMBOLS_PRIVATE_EXTERN = NO; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; PRODUCT_NAME = "cocoa-mule"; WRAPPER_EXTENSION = app; ZERO_LINK = YES; }; name = Debug; }; C01FCF4C08A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)/../../../bin/BWToolkit\"", "\"$(SRCROOT)/../../BWToolkit\"", ); GCC_MODEL_TUNING = G5; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "cocoa-mule_Prefix.pch"; INFOPLIST_FILE = Info.plist; INSTALL_PATH = "$(HOME)/Applications"; PRODUCT_NAME = "cocoa-mule"; WRAPPER_EXTENSION = app; }; name = Release; }; C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CURRENT_PROJECT_VERSION = 2.2; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = YES; GCC_WARN_UNUSED_VARIABLE = YES; PREBINDING = NO; SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; }; name = Debug; }; C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = ( ppc, i386, ); GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; PREBINDING = NO; SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk"; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "cocoa-mule" */ = { isa = XCConfigurationList; buildConfigurations = ( C01FCF4B08A954540054247B /* Debug */, C01FCF4C08A954540054247B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; C01FCF4E08A954540054247B /* Build configuration list for PBXProject "cocoa-mule" */ = { isa = XCConfigurationList; buildConfigurations = ( C01FCF4F08A954540054247B /* Debug */, C01FCF5008A954540054247B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; } amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/cocoa-mule_Prefix.pch0000644000175000017500000000022712611472361026666 0ustar morphmorph// // Prefix header for all source files of the 'cocoa-mule' target in the 'cocoa-mule' project // #ifdef __OBJC__ #import #endif amule_2.3.1+git20151120.0023527bc2.orig/platforms/MacOSX/cocoa-mule/main.m0000644000175000017500000000037312611472361023735 0ustar morphmorph// // main.m // cocoa-mule // // Created by leonid on 13/09/08. // Copyright __MyCompanyName__ 2008. All rights reserved. // #import int main(int argc, char *argv[]) { return NSApplicationMain(argc, (const char **) argv); } amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/0000755000175000017500000000000012611472361021144 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/0000755000175000017500000000000012611472361022055 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/PCH.cpp0000644000175000017500000000016612611472361023176 0ustar morphmorph// This file is used to build the precompiled headers. // Since PCH.h is included by compiler option, it's just empty.amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/PCH.h0000644000175000017500000000462412611472361022646 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Stu Redman ( sturedman@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef PCH_H #define PCH_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "CryptoPP_Inc.h" #include "amule.h" #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include "ClientCreditsList.h" #include "ClientList.h" #include "ClientRef.h" #include "ClientUDPSocket.h" #include "ExternalConn.h" #include "InternalEvents.h" #include "KnownFileList.h" #include "ListenSocket.h" #include "Logger.h" #include "MD4Hash.h" #include "OtherFunctions.h" #include "PartFile.h" #include "Preferences.h" #include "ScopedPtr.h" #include "Server.h" #include "Statistics.h" #include "ThreadTasks.h" #include "UserEvents.h" #ifndef CLIENT_GUI #include "kademlia/kademlia/Kademlia.h" #include "kademlia/kademlia/Prefs.h" #include "IPFilter.h" #endif #ifndef AMULE_DAEMON #include "amuleDlg.h" #include "muuli_wdr.h" #endif #endif amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/README - MSVC.txt0000644000175000017500000000743712611472361024434 0ustar morphmorphHow to build aMule with Visual Studio 2010 Express Edition See also http://www.amule.org/wiki/index.php/HowTo_compile_with_Visual_Studio This solution for Microsoft's Visual Studio 2010 has been configured to be as easy as possible to set up. However, given the size of the aMule project and the libraries it uses, along with limitations in the way Visual Studio works, a couple of items must be setup separately. Additionally, some source code files might need patching due to incompatibilities with some generated files. The solution expects to find the following items: * wxWidgets ( http://www.wxwidgets.org ) at a specific location: ..\..\wxWidgets\ from the solution directory. * crypto++ ( http://www.cryptopp.com/ ) at a specific location: ..\..\cryptopp\ from the solution directory. This means you must create a folder where you will compile aMule, and it must have this structure: - - Your main folder. You can name it whatever you want. | | - wxWidgets ( wxWidgets sources, no intermediate subfolder ) | | - wxWidgets29 ( wxWidgets 2.9 sources, only required if you want to build against unstable wx 2.9 ) | | - cryptopp ( Crypto++ sources, no intermediate subfolder ) | | - ( aMule sources, no intermediate subfolder, can have any name ) I hope this is simple enough to get you started. If wxWidgets fails to compile, please read http://wiki.wxwidgets.org/Microsoft_Visual_CPP_Guide There is sometimes a problem with the cryptopp project in the release and debug build, if some projects fail to link and give you a warning about redefined symbols, go to the properties on the cryptopp project, configuration "release" and change the "Configuration Properties"->"C/C++"->"Code generation"->"Runtime library" to "Multithreaded DLL (/MD)" in the release build or "Multithreaded Debug DLL (/MDd)" for the debug build. There are 3 solutions: 1) aMule-MSVC10E.sln which includes aMule, aMule tools and aMule's internal libs 2) aMule-MSVC10E-ExtLibs.sln includes only wxWidgets and Crypto++ and builds a single library libext.lib from them. You must first build this solution before building aMule-MSVCE.sln 3) aMule-MSVC10E-ExtLibs29.sln same but using wxWidgets 2.9 The Debug/Release configs build against wxWidgets 2.8 (stable), Debug29/Release29 configs build against wxWidgets 2.9 (unstable) To build aMule with GeoIP see libs\libGeoIP\readme.txt . Without it you get an error building libGeoIP when you build the full solution. Just ignore it or unload the libGeoIP project. If aMule fails to compile, here are some guidelines/patches to the most common problems: [*] If Scanner.cpp fails to compile, apply this change around line 1545: - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + b->yy_is_interactive = 0; if necessary. [*] The file muuli_wdr.cpp can also fail if it hasn't been patched for MSVC in the current code. The most common problem comes from this kind of lines: _("For a film you can say its length, its story, language ...\n" "and if it's a fake, you can tell that to other users of aMule."), Notice the opening and closing parentheses are on a different line, and the quotes opened again. While this is ok for gcc, Visual Studio won't allow it. Change this lines to be a single-line quoted text. In the above example, the result will be: _("For a film you can say its length, its story, language ...\nand if it's a fake, you can tell that to other users of aMule."), And that should be it. Feel free to ask in the aMule forum at forum.amule.org, "Compilation problems" section if you have further doubts. If you want to run aMule from inside Visual Studio, always set _NO_DEBUG_HEAP=1 in Properties / Debugging / Environment! amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aLinkCreator/0000755000175000017500000000000012611472361024433 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aLinkCreator/aLinkCreator.vcxproj0000644000175000017500000003305312611472361030432 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5} aLinkCreator Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) NDEBUG;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) NDEBUG;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 {293e6133-239a-4ed4-838e-9182b07c6b35} false ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aLinkCreator/aLinkCreator.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aLinkCreator/aLinkCreator.vcxproj.f0000644000175000017500000000524412611472361030657 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Resource Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aLinkCreator/alcc.vcxproj0000644000175000017500000003233012611472361026753 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6} alcc Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)ALC\ false $(SolutionDir)$(Configuration)\ $(Configuration)ALC\ false $(SolutionDir)$(Configuration)\ $(Configuration)ALC\ false $(SolutionDir)$(Configuration)\ $(Configuration)ALC\ false /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 {293e6133-239a-4ed4-838e-9182b07c6b35} false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aLinkCreator/alcc.vcxproj.filters0000644000175000017500000000402612611472361030423 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Header Files Header Files Header Files Header Files Resource Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMule-MSVC10E-ExtLibs.sln0000644000175000017500000002704412611472361026231 0ustar morphmorphMicrosoft Visual Studio Solution File, Format Version 11.00 # Visual C++ Express 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buildlibext", "libs\libext\buildlibext.vcxproj", "{F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}" ProjectSection(ProjectDependencies) = postProject {3423EC9A-52E4-4A4D-9753-EDEBC38785EF} = {3423EC9A-52E4-4A4D-9753-EDEBC38785EF} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxregex", "..\..\..\..\wxWidgets\build\msw\wx_wxregex.vcxproj", "{A960D0AD-C20E-4FD6-B477-6509232C7D94}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxzlib", "..\..\..\..\wxWidgets\build\msw\wx_wxzlib.vcxproj", "{99A6CD35-A635-4E39-93FF-F9A359E356D2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxpng", "..\..\..\..\wxWidgets\build\msw\wx_wxpng.vcxproj", "{4F88C347-8C7A-47C1-84C8-D4E154A33D30}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxjpeg", "..\..\..\..\wxWidgets\build\msw\wx_wxjpeg.vcxproj", "{4C6519FA-63B7-4631-B087-A17A368DBCD9}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxtiff", "..\..\..\..\wxWidgets\build\msw\wx_wxtiff.vcxproj", "{456E58BD-84CA-4190-A88B-0A9B30DFD6D6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxexpat", "..\..\..\..\wxWidgets\build\msw\wx_wxexpat.vcxproj", "{474A0ED2-5969-47F0-B37F-7BC05C44F99B}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "base", "..\..\..\..\wxWidgets\build\msw\wx_base.vcxproj", "{3EA1CE4C-C6FA-42C0-A152-10FDA37FE935}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net", "..\..\..\..\wxWidgets\build\msw\wx_net.vcxproj", "{C963A510-37EB-4D71-85B9-2380FCD4B3D3}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core", "..\..\..\..\wxWidgets\build\msw\wx_core.vcxproj", "{83E249BF-12A0-4D0D-B9A5-B9560FDE0BA1}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adv", "..\..\..\..\wxWidgets\build\msw\wx_adv.vcxproj", "{FE8C58CE-6828-4125-8563-28F929D307C2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "media", "..\..\..\..\wxWidgets\build\msw\wx_media.vcxproj", "{6B245136-054C-4400-BF21-D30B05C231CD}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "odbc", "..\..\..\..\wxWidgets\build\msw\wx_odbc.vcxproj", "{B535BE44-FCCC-4911-862F-A7ED6CC6B597}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dbgrid", "..\..\..\..\wxWidgets\build\msw\wx_dbgrid.vcxproj", "{C4590207-2D76-445F-833D-D59BB14D2C51}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "html", "..\..\..\..\wxWidgets\build\msw\wx_html.vcxproj", "{8E917A7A-CC97-45C8-80A1-2EBD30936D23}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qa", "..\..\..\..\wxWidgets\build\msw\wx_qa.vcxproj", "{AE383B44-EE53-4353-9BF0-2F3767D6CE51}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml", "..\..\..\..\wxWidgets\build\msw\wx_xml.vcxproj", "{46B97E73-8E57-42C1-A46E-AF0495D625DD}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xrc", "..\..\..\..\wxWidgets\build\msw\wx_xrc.vcxproj", "{BA59346E-5EB2-4D25-94A7-132D9C953A05}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aui", "..\..\..\..\wxWidgets\build\msw\wx_aui.vcxproj", "{64DD39FC-B3FA-4625-86BA-D8A7AE7D1D2C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "richtext", "..\..\..\..\wxWidgets\build\msw\wx_richtext.vcxproj", "{4740520C-ADF1-464D-97C5-85FCFEECF76D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gl", "..\..\..\..\wxWidgets\build\msw\wx_gl.vcxproj", "{8CF291F4-6284-4118-98A7-9D2146C6D5EA}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cryptlib", "..\..\..\..\cryptopp\cryptlib.vcxproj", "{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Debug|Win32.ActiveCfg = Debug|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Debug|Win32.Build.0 = Debug|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Release|Win32.ActiveCfg = Release|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Release|Win32.Build.0 = Release|Win32 {A960D0AD-C20E-4FD6-B477-6509232C7D94}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {A960D0AD-C20E-4FD6-B477-6509232C7D94}.Debug|Win32.Build.0 = Unicode Debug|Win32 {A960D0AD-C20E-4FD6-B477-6509232C7D94}.Release|Win32.ActiveCfg = Unicode Release|Win32 {A960D0AD-C20E-4FD6-B477-6509232C7D94}.Release|Win32.Build.0 = Unicode Release|Win32 {99A6CD35-A635-4E39-93FF-F9A359E356D2}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {99A6CD35-A635-4E39-93FF-F9A359E356D2}.Debug|Win32.Build.0 = Unicode Debug|Win32 {99A6CD35-A635-4E39-93FF-F9A359E356D2}.Release|Win32.ActiveCfg = Unicode Release|Win32 {99A6CD35-A635-4E39-93FF-F9A359E356D2}.Release|Win32.Build.0 = Unicode Release|Win32 {4F88C347-8C7A-47C1-84C8-D4E154A33D30}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {4F88C347-8C7A-47C1-84C8-D4E154A33D30}.Debug|Win32.Build.0 = Unicode Debug|Win32 {4F88C347-8C7A-47C1-84C8-D4E154A33D30}.Release|Win32.ActiveCfg = Unicode Release|Win32 {4F88C347-8C7A-47C1-84C8-D4E154A33D30}.Release|Win32.Build.0 = Unicode Release|Win32 {4C6519FA-63B7-4631-B087-A17A368DBCD9}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {4C6519FA-63B7-4631-B087-A17A368DBCD9}.Debug|Win32.Build.0 = Unicode Debug|Win32 {4C6519FA-63B7-4631-B087-A17A368DBCD9}.Release|Win32.ActiveCfg = Unicode Release|Win32 {4C6519FA-63B7-4631-B087-A17A368DBCD9}.Release|Win32.Build.0 = Unicode Release|Win32 {456E58BD-84CA-4190-A88B-0A9B30DFD6D6}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {456E58BD-84CA-4190-A88B-0A9B30DFD6D6}.Debug|Win32.Build.0 = Unicode Debug|Win32 {456E58BD-84CA-4190-A88B-0A9B30DFD6D6}.Release|Win32.ActiveCfg = Unicode Release|Win32 {456E58BD-84CA-4190-A88B-0A9B30DFD6D6}.Release|Win32.Build.0 = Unicode Release|Win32 {474A0ED2-5969-47F0-B37F-7BC05C44F99B}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {474A0ED2-5969-47F0-B37F-7BC05C44F99B}.Debug|Win32.Build.0 = Unicode Debug|Win32 {474A0ED2-5969-47F0-B37F-7BC05C44F99B}.Release|Win32.ActiveCfg = Unicode Release|Win32 {474A0ED2-5969-47F0-B37F-7BC05C44F99B}.Release|Win32.Build.0 = Unicode Release|Win32 {3EA1CE4C-C6FA-42C0-A152-10FDA37FE935}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {3EA1CE4C-C6FA-42C0-A152-10FDA37FE935}.Debug|Win32.Build.0 = Unicode Debug|Win32 {3EA1CE4C-C6FA-42C0-A152-10FDA37FE935}.Release|Win32.ActiveCfg = Unicode Release|Win32 {3EA1CE4C-C6FA-42C0-A152-10FDA37FE935}.Release|Win32.Build.0 = Unicode Release|Win32 {C963A510-37EB-4D71-85B9-2380FCD4B3D3}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {C963A510-37EB-4D71-85B9-2380FCD4B3D3}.Debug|Win32.Build.0 = Unicode Debug|Win32 {C963A510-37EB-4D71-85B9-2380FCD4B3D3}.Release|Win32.ActiveCfg = Unicode Release|Win32 {C963A510-37EB-4D71-85B9-2380FCD4B3D3}.Release|Win32.Build.0 = Unicode Release|Win32 {83E249BF-12A0-4D0D-B9A5-B9560FDE0BA1}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {83E249BF-12A0-4D0D-B9A5-B9560FDE0BA1}.Debug|Win32.Build.0 = Unicode Debug|Win32 {83E249BF-12A0-4D0D-B9A5-B9560FDE0BA1}.Release|Win32.ActiveCfg = Unicode Release|Win32 {83E249BF-12A0-4D0D-B9A5-B9560FDE0BA1}.Release|Win32.Build.0 = Unicode Release|Win32 {FE8C58CE-6828-4125-8563-28F929D307C2}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {FE8C58CE-6828-4125-8563-28F929D307C2}.Debug|Win32.Build.0 = Unicode Debug|Win32 {FE8C58CE-6828-4125-8563-28F929D307C2}.Release|Win32.ActiveCfg = Unicode Release|Win32 {FE8C58CE-6828-4125-8563-28F929D307C2}.Release|Win32.Build.0 = Unicode Release|Win32 {6B245136-054C-4400-BF21-D30B05C231CD}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {6B245136-054C-4400-BF21-D30B05C231CD}.Debug|Win32.Build.0 = Unicode Debug|Win32 {6B245136-054C-4400-BF21-D30B05C231CD}.Release|Win32.ActiveCfg = Unicode Release|Win32 {6B245136-054C-4400-BF21-D30B05C231CD}.Release|Win32.Build.0 = Unicode Release|Win32 {B535BE44-FCCC-4911-862F-A7ED6CC6B597}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {B535BE44-FCCC-4911-862F-A7ED6CC6B597}.Debug|Win32.Build.0 = Unicode Debug|Win32 {B535BE44-FCCC-4911-862F-A7ED6CC6B597}.Release|Win32.ActiveCfg = Unicode Release|Win32 {B535BE44-FCCC-4911-862F-A7ED6CC6B597}.Release|Win32.Build.0 = Unicode Release|Win32 {C4590207-2D76-445F-833D-D59BB14D2C51}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {C4590207-2D76-445F-833D-D59BB14D2C51}.Debug|Win32.Build.0 = Unicode Debug|Win32 {C4590207-2D76-445F-833D-D59BB14D2C51}.Release|Win32.ActiveCfg = Unicode Release|Win32 {C4590207-2D76-445F-833D-D59BB14D2C51}.Release|Win32.Build.0 = Unicode Release|Win32 {8E917A7A-CC97-45C8-80A1-2EBD30936D23}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {8E917A7A-CC97-45C8-80A1-2EBD30936D23}.Debug|Win32.Build.0 = Unicode Debug|Win32 {8E917A7A-CC97-45C8-80A1-2EBD30936D23}.Release|Win32.ActiveCfg = Unicode Release|Win32 {8E917A7A-CC97-45C8-80A1-2EBD30936D23}.Release|Win32.Build.0 = Unicode Release|Win32 {AE383B44-EE53-4353-9BF0-2F3767D6CE51}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {AE383B44-EE53-4353-9BF0-2F3767D6CE51}.Debug|Win32.Build.0 = Unicode Debug|Win32 {AE383B44-EE53-4353-9BF0-2F3767D6CE51}.Release|Win32.ActiveCfg = Unicode Release|Win32 {AE383B44-EE53-4353-9BF0-2F3767D6CE51}.Release|Win32.Build.0 = Unicode Release|Win32 {46B97E73-8E57-42C1-A46E-AF0495D625DD}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {46B97E73-8E57-42C1-A46E-AF0495D625DD}.Debug|Win32.Build.0 = Unicode Debug|Win32 {46B97E73-8E57-42C1-A46E-AF0495D625DD}.Release|Win32.ActiveCfg = Unicode Release|Win32 {46B97E73-8E57-42C1-A46E-AF0495D625DD}.Release|Win32.Build.0 = Unicode Release|Win32 {BA59346E-5EB2-4D25-94A7-132D9C953A05}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {BA59346E-5EB2-4D25-94A7-132D9C953A05}.Debug|Win32.Build.0 = Unicode Debug|Win32 {BA59346E-5EB2-4D25-94A7-132D9C953A05}.Release|Win32.ActiveCfg = Unicode Release|Win32 {BA59346E-5EB2-4D25-94A7-132D9C953A05}.Release|Win32.Build.0 = Unicode Release|Win32 {64DD39FC-B3FA-4625-86BA-D8A7AE7D1D2C}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {64DD39FC-B3FA-4625-86BA-D8A7AE7D1D2C}.Debug|Win32.Build.0 = Unicode Debug|Win32 {64DD39FC-B3FA-4625-86BA-D8A7AE7D1D2C}.Release|Win32.ActiveCfg = Unicode Release|Win32 {64DD39FC-B3FA-4625-86BA-D8A7AE7D1D2C}.Release|Win32.Build.0 = Unicode Release|Win32 {4740520C-ADF1-464D-97C5-85FCFEECF76D}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {4740520C-ADF1-464D-97C5-85FCFEECF76D}.Debug|Win32.Build.0 = Unicode Debug|Win32 {4740520C-ADF1-464D-97C5-85FCFEECF76D}.Release|Win32.ActiveCfg = Unicode Release|Win32 {4740520C-ADF1-464D-97C5-85FCFEECF76D}.Release|Win32.Build.0 = Unicode Release|Win32 {8CF291F4-6284-4118-98A7-9D2146C6D5EA}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {8CF291F4-6284-4118-98A7-9D2146C6D5EA}.Debug|Win32.Build.0 = Unicode Debug|Win32 {8CF291F4-6284-4118-98A7-9D2146C6D5EA}.Release|Win32.ActiveCfg = Unicode Release|Win32 {8CF291F4-6284-4118-98A7-9D2146C6D5EA}.Release|Win32.Build.0 = Unicode Release|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.ActiveCfg = Debug|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.Build.0 = Debug|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.ActiveCfg = Release|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMule-MSVC10E-ExtLibs29.sln0000644000175000017500000002371112611472361026401 0ustar morphmorphMicrosoft Visual Studio Solution File, Format Version 11.00 # Visual C++ Express 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buildlibext", "libs\libext\buildlibext.vcxproj", "{F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cryptlib", "..\..\..\..\cryptopp\cryptlib.vcxproj", "{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxregex", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_wxregex.vcxproj", "{56A4B526-BB81-5D01-AAA9-16D23BBB169D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxzlib", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_wxzlib.vcxproj", "{8B867186-A0B5-5479-B824-E176EDD27C40}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxpng", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_wxpng.vcxproj", "{8ACC122A-CA6A-5AA6-9C97-9CDD2E533DB0}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxjpeg", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_wxjpeg.vcxproj", "{6053CC38-CDEE-584C-8BC8-4B000D800FC7}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxtiff", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_wxtiff.vcxproj", "{75596CE6-5AE7-55C9-B890-C07B0A657A83}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxexpat", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_wxexpat.vcxproj", "{A1A8355B-0988-528E-9CC2-B971D6266669}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "base", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_base.vcxproj", "{3FCC50C2-81E9-5DB2-B8D8-2129427568B1}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_net.vcxproj", "{69F2EDE4-7D21-5738-9BC0-F66F61C9AE00}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_core.vcxproj", "{6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adv", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_adv.vcxproj", "{24C45343-FD20-5C92-81C1-35A2AE841E79}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "media", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_media.vcxproj", "{8BD8F8D9-4275-5B42-A8F4-F1DB2970A550}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "html", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_html.vcxproj", "{33CC42F9-7756-5587-863C-8D4461B7C5DD}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qa", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_qa.vcxproj", "{E21129E0-7C08-5936-9D8C-0D60B5319BA7}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_xml.vcxproj", "{3E6DCA27-5FA3-53EC-BBD6-2D42294B7AE6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xrc", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_xrc.vcxproj", "{09F2F96A-1CC6-5E43-AF1D-956EC2A4888D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aui", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_aui.vcxproj", "{A16D3832-0F42-57CE-8F48-50E06649ADE8}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "richtext", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_richtext.vcxproj", "{7FB0902D-8579-5DCE-B883-DAF66A885005}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gl", "..\..\..\..\wxWidgets29\build\msw\wx_vc10_gl.vcxproj", "{DA8B15EF-6750-5928-BC0E-C748213CF9B2}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Debug|Win32.ActiveCfg = Debug29|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Debug|Win32.Build.0 = Debug29|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Release|Win32.ActiveCfg = Release29|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Release|Win32.Build.0 = Release29|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.ActiveCfg = Debug|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.Build.0 = Debug|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.ActiveCfg = Release|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.Build.0 = Release|Win32 {56A4B526-BB81-5D01-AAA9-16D23BBB169D}.Debug|Win32.ActiveCfg = Debug|Win32 {56A4B526-BB81-5D01-AAA9-16D23BBB169D}.Debug|Win32.Build.0 = Debug|Win32 {56A4B526-BB81-5D01-AAA9-16D23BBB169D}.Release|Win32.ActiveCfg = Release|Win32 {56A4B526-BB81-5D01-AAA9-16D23BBB169D}.Release|Win32.Build.0 = Release|Win32 {8B867186-A0B5-5479-B824-E176EDD27C40}.Debug|Win32.ActiveCfg = Debug|Win32 {8B867186-A0B5-5479-B824-E176EDD27C40}.Debug|Win32.Build.0 = Debug|Win32 {8B867186-A0B5-5479-B824-E176EDD27C40}.Release|Win32.ActiveCfg = Release|Win32 {8B867186-A0B5-5479-B824-E176EDD27C40}.Release|Win32.Build.0 = Release|Win32 {8ACC122A-CA6A-5AA6-9C97-9CDD2E533DB0}.Debug|Win32.ActiveCfg = Debug|Win32 {8ACC122A-CA6A-5AA6-9C97-9CDD2E533DB0}.Debug|Win32.Build.0 = Debug|Win32 {8ACC122A-CA6A-5AA6-9C97-9CDD2E533DB0}.Release|Win32.ActiveCfg = Release|Win32 {8ACC122A-CA6A-5AA6-9C97-9CDD2E533DB0}.Release|Win32.Build.0 = Release|Win32 {6053CC38-CDEE-584C-8BC8-4B000D800FC7}.Debug|Win32.ActiveCfg = Debug|Win32 {6053CC38-CDEE-584C-8BC8-4B000D800FC7}.Debug|Win32.Build.0 = Debug|Win32 {6053CC38-CDEE-584C-8BC8-4B000D800FC7}.Release|Win32.ActiveCfg = Release|Win32 {6053CC38-CDEE-584C-8BC8-4B000D800FC7}.Release|Win32.Build.0 = Release|Win32 {75596CE6-5AE7-55C9-B890-C07B0A657A83}.Debug|Win32.ActiveCfg = Debug|Win32 {75596CE6-5AE7-55C9-B890-C07B0A657A83}.Debug|Win32.Build.0 = Debug|Win32 {75596CE6-5AE7-55C9-B890-C07B0A657A83}.Release|Win32.ActiveCfg = Release|Win32 {75596CE6-5AE7-55C9-B890-C07B0A657A83}.Release|Win32.Build.0 = Release|Win32 {A1A8355B-0988-528E-9CC2-B971D6266669}.Debug|Win32.ActiveCfg = Debug|Win32 {A1A8355B-0988-528E-9CC2-B971D6266669}.Debug|Win32.Build.0 = Debug|Win32 {A1A8355B-0988-528E-9CC2-B971D6266669}.Release|Win32.ActiveCfg = Release|Win32 {A1A8355B-0988-528E-9CC2-B971D6266669}.Release|Win32.Build.0 = Release|Win32 {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|Win32.ActiveCfg = Debug|Win32 {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Debug|Win32.Build.0 = Debug|Win32 {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|Win32.ActiveCfg = Release|Win32 {3FCC50C2-81E9-5DB2-B8D8-2129427568B1}.Release|Win32.Build.0 = Release|Win32 {69F2EDE4-7D21-5738-9BC0-F66F61C9AE00}.Debug|Win32.ActiveCfg = Debug|Win32 {69F2EDE4-7D21-5738-9BC0-F66F61C9AE00}.Debug|Win32.Build.0 = Debug|Win32 {69F2EDE4-7D21-5738-9BC0-F66F61C9AE00}.Release|Win32.ActiveCfg = Release|Win32 {69F2EDE4-7D21-5738-9BC0-F66F61C9AE00}.Release|Win32.Build.0 = Release|Win32 {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|Win32.ActiveCfg = Debug|Win32 {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Debug|Win32.Build.0 = Debug|Win32 {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|Win32.ActiveCfg = Release|Win32 {6744DAD8-9C70-574A-BFF2-9F8DDDB24A75}.Release|Win32.Build.0 = Release|Win32 {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|Win32.ActiveCfg = Debug|Win32 {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|Win32.Build.0 = Debug|Win32 {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|Win32.ActiveCfg = Release|Win32 {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|Win32.Build.0 = Release|Win32 {8BD8F8D9-4275-5B42-A8F4-F1DB2970A550}.Debug|Win32.ActiveCfg = Debug|Win32 {8BD8F8D9-4275-5B42-A8F4-F1DB2970A550}.Debug|Win32.Build.0 = Debug|Win32 {8BD8F8D9-4275-5B42-A8F4-F1DB2970A550}.Release|Win32.ActiveCfg = Release|Win32 {8BD8F8D9-4275-5B42-A8F4-F1DB2970A550}.Release|Win32.Build.0 = Release|Win32 {33CC42F9-7756-5587-863C-8D4461B7C5DD}.Debug|Win32.ActiveCfg = Debug|Win32 {33CC42F9-7756-5587-863C-8D4461B7C5DD}.Debug|Win32.Build.0 = Debug|Win32 {33CC42F9-7756-5587-863C-8D4461B7C5DD}.Release|Win32.ActiveCfg = Release|Win32 {33CC42F9-7756-5587-863C-8D4461B7C5DD}.Release|Win32.Build.0 = Release|Win32 {E21129E0-7C08-5936-9D8C-0D60B5319BA7}.Debug|Win32.ActiveCfg = Debug|Win32 {E21129E0-7C08-5936-9D8C-0D60B5319BA7}.Debug|Win32.Build.0 = Debug|Win32 {E21129E0-7C08-5936-9D8C-0D60B5319BA7}.Release|Win32.ActiveCfg = Release|Win32 {E21129E0-7C08-5936-9D8C-0D60B5319BA7}.Release|Win32.Build.0 = Release|Win32 {3E6DCA27-5FA3-53EC-BBD6-2D42294B7AE6}.Debug|Win32.ActiveCfg = Debug|Win32 {3E6DCA27-5FA3-53EC-BBD6-2D42294B7AE6}.Debug|Win32.Build.0 = Debug|Win32 {3E6DCA27-5FA3-53EC-BBD6-2D42294B7AE6}.Release|Win32.ActiveCfg = Release|Win32 {3E6DCA27-5FA3-53EC-BBD6-2D42294B7AE6}.Release|Win32.Build.0 = Release|Win32 {09F2F96A-1CC6-5E43-AF1D-956EC2A4888D}.Debug|Win32.ActiveCfg = Debug|Win32 {09F2F96A-1CC6-5E43-AF1D-956EC2A4888D}.Debug|Win32.Build.0 = Debug|Win32 {09F2F96A-1CC6-5E43-AF1D-956EC2A4888D}.Release|Win32.ActiveCfg = Release|Win32 {09F2F96A-1CC6-5E43-AF1D-956EC2A4888D}.Release|Win32.Build.0 = Release|Win32 {A16D3832-0F42-57CE-8F48-50E06649ADE8}.Debug|Win32.ActiveCfg = Debug|Win32 {A16D3832-0F42-57CE-8F48-50E06649ADE8}.Debug|Win32.Build.0 = Debug|Win32 {A16D3832-0F42-57CE-8F48-50E06649ADE8}.Release|Win32.ActiveCfg = Release|Win32 {A16D3832-0F42-57CE-8F48-50E06649ADE8}.Release|Win32.Build.0 = Release|Win32 {7FB0902D-8579-5DCE-B883-DAF66A885005}.Debug|Win32.ActiveCfg = Debug|Win32 {7FB0902D-8579-5DCE-B883-DAF66A885005}.Debug|Win32.Build.0 = Debug|Win32 {7FB0902D-8579-5DCE-B883-DAF66A885005}.Release|Win32.ActiveCfg = Release|Win32 {7FB0902D-8579-5DCE-B883-DAF66A885005}.Release|Win32.Build.0 = Release|Win32 {DA8B15EF-6750-5928-BC0E-C748213CF9B2}.Debug|Win32.ActiveCfg = Debug|Win32 {DA8B15EF-6750-5928-BC0E-C748213CF9B2}.Debug|Win32.Build.0 = Debug|Win32 {DA8B15EF-6750-5928-BC0E-C748213CF9B2}.Release|Win32.ActiveCfg = Release|Win32 {DA8B15EF-6750-5928-BC0E-C748213CF9B2}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMule-MSVC10E.sln0000644000175000017500000003213612611472361024657 0ustar morphmorphMicrosoft Visual Studio Solution File, Format Version 11.00 # Visual C++ Express 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aMule", "aMule\aMule.vcxproj", "{5FCAFC30-922E-446F-8DF5-D71819ABC2FE}" ProjectSection(ProjectDependencies) = postProject {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} = {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmuleec", "libs\libmuleec\libmuleec.vcxproj", "{5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}" ProjectSection(ProjectDependencies) = postProject {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} = {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmulecommon", "libs\libmulecommon\libmulecommon.vcxproj", "{293E6133-239A-4ED4-838E-9182B07C6B35}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmuleexternalwxlistctrl", "libs\libmuleexternalwxlistctrl\libmuleexternalwxlistctrl.vcxproj", "{16C7A051-9097-41A5-BA26-FEC1EA1F16EF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aLinkCreator", "aLinkCreator\aLinkCreator.vcxproj", "{FF560C5D-4369-4DEF-B2EC-6F507D554DB5}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aMuleCMD", "aMuleCMD\aMuleCMD.vcxproj", "{EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}" ProjectSection(ProjectDependencies) = postProject {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} = {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aMuleGUI", "aMuleGUI\aMuleGUI.vcxproj", "{9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}" ProjectSection(ProjectDependencies) = postProject {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} = {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ed2k", "ed2k\ed2k.vcxproj", "{FF560C5D-4369-4DEF-B2EC-6F507D554DB6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fileview", "fileview\fileview.vcxproj", "{02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libGeoIP", "libs\libGeoIP\libGeoIP.vcxproj", "{8CA0F896-7689-4CE0-9D16-99C9C83847E1}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aMuleD", "aMuleD\aMuleD.vcxproj", "{10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}" ProjectSection(ProjectDependencies) = postProject {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} = {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aMuleWeb", "aMuleWeb\aMuleWeb.vcxproj", "{EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}" ProjectSection(ProjectDependencies) = postProject {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} = {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxCas", "wxCas\wxCas.vcxproj", "{5FCAFC30-922E-446F-8DF5-D71819AB6356}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "alcc", "aLinkCreator\alcc.vcxproj", "{FF560C5D-4369-4DEF-B2EC-6F507D994DB6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsocket", "libs\libsocket\libsocket.vcxproj", "{5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug29|Win32 = Debug29|Win32 Release|Win32 = Release|Win32 Release29|Win32 = Release29|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Debug|Win32.ActiveCfg = Debug|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Debug|Win32.Build.0 = Debug|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Debug29|Win32.ActiveCfg = Debug29|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Debug29|Win32.Build.0 = Debug29|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Release|Win32.ActiveCfg = Release|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Release|Win32.Build.0 = Release|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Release29|Win32.ActiveCfg = Release29|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Release29|Win32.Build.0 = Release29|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Debug|Win32.ActiveCfg = Debug|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Debug|Win32.Build.0 = Debug|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Debug29|Win32.ActiveCfg = Debug29|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Debug29|Win32.Build.0 = Debug29|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Release|Win32.ActiveCfg = Release|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Release|Win32.Build.0 = Release|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Release29|Win32.ActiveCfg = Release29|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Release29|Win32.Build.0 = Release29|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Debug|Win32.ActiveCfg = Debug|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Debug|Win32.Build.0 = Debug|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Debug29|Win32.ActiveCfg = Debug29|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Debug29|Win32.Build.0 = Debug29|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Release|Win32.ActiveCfg = Release|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Release|Win32.Build.0 = Release|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Release29|Win32.ActiveCfg = Release29|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Release29|Win32.Build.0 = Release29|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Debug|Win32.ActiveCfg = Debug|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Debug|Win32.Build.0 = Debug|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Debug29|Win32.ActiveCfg = Debug29|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Debug29|Win32.Build.0 = Debug29|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Release|Win32.ActiveCfg = Release|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Release|Win32.Build.0 = Release|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Release29|Win32.ActiveCfg = Release29|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Release29|Win32.Build.0 = Release29|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Debug|Win32.ActiveCfg = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Debug|Win32.Build.0 = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Debug29|Win32.ActiveCfg = Debug29|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Debug29|Win32.Build.0 = Debug29|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Release|Win32.ActiveCfg = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Release|Win32.Build.0 = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Release29|Win32.ActiveCfg = Release29|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Release29|Win32.Build.0 = Release29|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Debug|Win32.ActiveCfg = Debug|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Debug|Win32.Build.0 = Debug|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Debug29|Win32.ActiveCfg = Debug29|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Debug29|Win32.Build.0 = Debug29|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Release|Win32.ActiveCfg = Release|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Release|Win32.Build.0 = Release|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Release29|Win32.ActiveCfg = Release29|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Release29|Win32.Build.0 = Release29|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Debug|Win32.ActiveCfg = Debug|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Debug|Win32.Build.0 = Debug|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Debug29|Win32.ActiveCfg = Debug29|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Debug29|Win32.Build.0 = Debug29|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Release|Win32.ActiveCfg = Release|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Release|Win32.Build.0 = Release|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Release29|Win32.ActiveCfg = Release29|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Release29|Win32.Build.0 = Release29|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Debug|Win32.ActiveCfg = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Debug|Win32.Build.0 = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Debug29|Win32.ActiveCfg = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Debug29|Win32.Build.0 = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Release|Win32.ActiveCfg = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Release|Win32.Build.0 = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Release29|Win32.ActiveCfg = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Release29|Win32.Build.0 = Release|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Debug|Win32.ActiveCfg = Debug|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Debug|Win32.Build.0 = Debug|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Debug29|Win32.ActiveCfg = Debug29|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Debug29|Win32.Build.0 = Debug29|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Release|Win32.ActiveCfg = Release|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Release|Win32.Build.0 = Release|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Release29|Win32.ActiveCfg = Release29|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Release29|Win32.Build.0 = Release29|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Debug|Win32.ActiveCfg = Debug|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Debug|Win32.Build.0 = Debug|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Debug29|Win32.ActiveCfg = Debug|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Debug29|Win32.Build.0 = Debug|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Release|Win32.ActiveCfg = Release|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Release|Win32.Build.0 = Release|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Release29|Win32.ActiveCfg = Release|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Release29|Win32.Build.0 = Release|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Debug|Win32.ActiveCfg = Debug|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Debug|Win32.Build.0 = Debug|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Debug29|Win32.ActiveCfg = Debug29|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Debug29|Win32.Build.0 = Debug29|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Release|Win32.ActiveCfg = Release|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Release|Win32.Build.0 = Release|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Release29|Win32.ActiveCfg = Release29|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Release29|Win32.Build.0 = Release29|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Debug|Win32.ActiveCfg = Debug|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Debug|Win32.Build.0 = Debug|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Debug29|Win32.ActiveCfg = Debug29|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Debug29|Win32.Build.0 = Debug29|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Release|Win32.ActiveCfg = Release|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Release|Win32.Build.0 = Release|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Release29|Win32.ActiveCfg = Release29|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Release29|Win32.Build.0 = Release29|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Debug|Win32.ActiveCfg = Debug|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Debug|Win32.Build.0 = Debug|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Debug29|Win32.ActiveCfg = Debug29|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Debug29|Win32.Build.0 = Debug29|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Release|Win32.ActiveCfg = Release|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Release|Win32.Build.0 = Release|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Release29|Win32.ActiveCfg = Release29|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Release29|Win32.Build.0 = Release29|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Debug|Win32.ActiveCfg = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Debug|Win32.Build.0 = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Debug29|Win32.ActiveCfg = Debug29|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Debug29|Win32.Build.0 = Debug29|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Release|Win32.ActiveCfg = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Release|Win32.Build.0 = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Release29|Win32.ActiveCfg = Release29|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Release29|Win32.Build.0 = Release29|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Debug|Win32.ActiveCfg = Debug|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Debug|Win32.Build.0 = Debug|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Debug29|Win32.ActiveCfg = Debug29|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Debug29|Win32.Build.0 = Debug29|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Release|Win32.ActiveCfg = Release|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Release|Win32.Build.0 = Release|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Release29|Win32.ActiveCfg = Release29|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Release29|Win32.Build.0 = Release29|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMule/0000755000175000017500000000000012611472361023120 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMule/aMule.vcxproj0000644000175000017500000010552012611472361025603 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE} aMule Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP /Zm120 %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;ENABLE_NLS;ENABLE_IP2COUNTRY;HAVE_CONFIG_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"All-Platform P2P Client Based on eMule\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP /Zm120 %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;ENABLE_NLS;ENABLE_IP2COUNTRY;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"All-Platform P2P Client Based on eMule\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";wxUSE_NO_MANIFEST=1;%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 /MP /Zm150 %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;ENABLE_NLS;ENABLE_IP2COUNTRY;HAVE_CONFIG_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"All-Platform P2P Client Based on eMule\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP /Zm120 %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;ENABLE_NLS;ENABLE_IP2COUNTRY;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"All-Platform P2P Client Based on eMule\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 4065;%(DisableSpecificWarnings) 4065;%(DisableSpecificWarnings) 4065;%(DisableSpecificWarnings) 4065;%(DisableSpecificWarnings) Create Create Create Create 4003;%(DisableSpecificWarnings) 4003;%(DisableSpecificWarnings) 4003;%(DisableSpecificWarnings) 4003;%(DisableSpecificWarnings) {8ca0f896-7689-4ce0-9d16-99c9c83847e1} false {293e6133-239a-4ed4-838e-9182b07c6b35} false {5a9ec6a5-68a3-43c8-960e-f7f03b16f1d1} false {16c7a051-9097-41a5-ba26-fec1ea1f16ef} false {5a9ec6a5-68a3-43c8-960e-f7f99b16f1d1} true false false true false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMule/aMule.vcxproj.filters0000644000175000017500000010442412611472361027254 0ustar morphmorph {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {cc8a6595-b6d5-4afe-8d44-0e3fed36e009} {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {ac85d3b7-e7e5-48af-ba9c-3bbd46cebb91} {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files Header Files Resource Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMuleCMD/0000755000175000017500000000000012611472361023444 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMuleCMD/aMuleCMD.vcxproj0000644000175000017500000003427612611472361026464 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA} aMuleCMD Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Text Client\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Text Client\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Text Client\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Text Client\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 {293e6133-239a-4ed4-838e-9182b07c6b35} false {5a9ec6a5-68a3-43c8-960e-f7f03b16f1d1} false {5a9ec6a5-68a3-43c8-960e-f7f99b16f1d1} true false false true false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMuleCMD/aMuleCMD.vcxproj.filters0000644000175000017500000000402312611472361030116 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMuleD/0000755000175000017500000000000012611472361023224 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMuleD/aMuleD.vcxproj0000644000175000017500000005344512611472361026023 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F} aMuleD Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP /Zm120 %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;AMULE_DAEMON;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Daemon\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP /Zm120 %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;AMULE_DAEMON;%(PreprocessorDefinitions) MultiThreaded Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Daemon\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 /MP /Zm120 %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;AMULE_DAEMON;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Daemon\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP /Zm120 %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;AMULE_DAEMON;%(PreprocessorDefinitions) MultiThreaded Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Daemon\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 4065;%(DisableSpecificWarnings) 4065;%(DisableSpecificWarnings) 4065;%(DisableSpecificWarnings) 4065;%(DisableSpecificWarnings) Create Create Create Create 4003;%(DisableSpecificWarnings) 4003;%(DisableSpecificWarnings) 4003;%(DisableSpecificWarnings) 4003;%(DisableSpecificWarnings) {293e6133-239a-4ed4-838e-9182b07c6b35} false {5a9ec6a5-68a3-43c8-960e-f7f03b16f1d1} false {5a9ec6a5-68a3-43c8-960e-f7f99b16f1d1} true false false true false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMuleD/aMuleD.vcxproj.filters0000644000175000017500000002751012611472361027464 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {a595d5a5-1d4c-4c56-ba8f-b0ac15403f03} Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files Header Files Header Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMuleGUI/0000755000175000017500000000000012611472361023465 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMuleGUI/aMuleGUI.vcxproj0000644000175000017500000006450712611472361026526 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7} aMuleGUI Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP /Zm120 %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;CLIENT_GUI;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Remote GUI\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP /Zm120 %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;CLIENT_GUI;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) MultiThreaded Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Remote GUI\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 /MP /Zm120 %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;CLIENT_GUI;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Remote GUI\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP /Zm120 %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;CLIENT_GUI;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) MultiThreaded Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Remote GUI\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 Create Create Create Create {8ca0f896-7689-4ce0-9d16-99c9c83847e1} false {293e6133-239a-4ed4-838e-9182b07c6b35} false {5a9ec6a5-68a3-43c8-960e-f7f03b16f1d1} false {16c7a051-9097-41a5-ba26-fec1ea1f16ef} false {5a9ec6a5-68a3-43c8-960e-f7f99b16f1d1} true false false true false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMuleGUI/aMuleGUI.vcxproj.filters0000644000175000017500000005151312611472361030166 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {26a80d8b-0652-4504-9031-910968275e24} Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMuleWeb/0000755000175000017500000000000012611472361023556 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMuleWeb/aMuleWeb.vcxproj0000644000175000017500000003636112611472361026705 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA} aMuleWeb Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Web Server\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Web Server\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;$(SolutionDir)..\..\..\..\wxWidgets29\src\png;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;WITH_LIBPNG;HAVE_CONFIG_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Web Server\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;$(SolutionDir)..\..\..\..\wxWidgets29\src\png;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;WITH_LIBPNG;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Web Server\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 {293e6133-239a-4ed4-838e-9182b07c6b35} false {5a9ec6a5-68a3-43c8-960e-f7f03b16f1d1} false {5a9ec6a5-68a3-43c8-960e-f7f99b16f1d1} true false false true false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/aMuleWeb/aMuleWeb.vcxproj.filters0000644000175000017500000000720712611472361030351 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/ed2k/0000755000175000017500000000000012611472361022702 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/ed2k/ed2k.vcxproj0000644000175000017500000001557612611472361025162 0ustar morphmorph Debug Win32 Release Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6} ed2k Win32Proj Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP %(AdditionalOptions) Disabled %(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_STD_STRING;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"ED2K Links Handler\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) shlwapi.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full %(AdditionalIncludeDirectories) USE_STD_STRING;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"ED2K Links Handler\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) shlwapi.lib;%(AdditionalDependencies) true Console true true false MachineX86 {293e6133-239a-4ed4-838e-9182b07c6b35} false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/ed2k/ed2k.vcxproj.filters0000644000175000017500000000320112611472361026607 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Header Files Header Files Header Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/fileview/0000755000175000017500000000000012611472361023667 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/fileview/fileview.vcxproj0000644000175000017500000002734612611472361027132 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6} fileview Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_SCL_SECURE_NO_WARNINGS;wxUSE_GUI=0;USE_WX_EXTENSIONS;MULEUNIT;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\..\;%(AdditionalIncludeDirectories) _SCL_SECURE_NO_WARNINGS;wxUSE_GUI=0;USE_WX_EXTENSIONS;MULEUNIT;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_SCL_SECURE_NO_WARNINGS;wxUSE_GUI=0;USE_WX_EXTENSIONS;MULEUNIT;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\..\;%(AdditionalIncludeDirectories) _SCL_SECURE_NO_WARNINGS;wxUSE_GUI=0;USE_WX_EXTENSIONS;MULEUNIT;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 {293e6133-239a-4ed4-838e-9182b07c6b35} false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/fileview/fileview.vcxproj.filters0000644000175000017500000000441712611472361030573 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/fixwxGUIDs.pl0000644000175000017500000000263412611472361024420 0ustar morphmorph#!perl # # This script is only useful if your source is in a SVN working copy! # # Problem: whenever you add a new wxWidgets version and convert the VC6 projects, # they are converted to VC8 XML .vcproj . In the process, a new project GUID is created. # When you then open your solution, all GUIDs are updated. # # To avoid this: # 1) Open and close wx.dsw with VS9 to convert to wx.sln (VS10 can't open them) # 2) Open and close wx.sln, creating the .vcxproj # 3) Run this script. It will replace the new GUIDs in the wx vcxproj by the old ones from the aMule-MSVC10E-ExtLibs.sln . # 4) Now load aMule-MSVCE-ExtLibs.sln. It won't be changed anymore. # use strict; open(sln, 'aMule-MSVC10E-ExtLibs.sln') or die $!; #Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxregex", "..\..\..\..\wxWidgets\build\msw\wx_wxregex.vcxproj", "{A960D0AD-C20E-4FD6-B477-6509232C7D94}" # {B499DD81-BCA2-42D8-986C-E0FBAAC25B13} while () { if (/^Project.*, \"(.+)\", \"(.+)\"/) { my ($path, $guid) = ($1, $2); next unless $path =~ /\\wxWidgets/; $path =~ s-\\-/-g; print "fix $path\n"; open(prj, $path) or die "$path $!"; my @content = ; close prj; foreach (@content) { if (//) { $_ = " $guid\n"; print $_; last; } } open(prj, ">$path") or die; print prj @content; close prj; } } amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/0000755000175000017500000000000012611472361023006 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libGeoIP/0000755000175000017500000000000012611472361024440 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libGeoIP/GeoIP.cmd0000644000175000017500000000054012611472361026067 0ustar morphmorph@echo off if exist geoip.h goto h_exist echo creating GeoIP.h echo #undef ENABLE_IP2COUNTRY > GeoIP.h echo typedef void GeoIP; >> GeoIP.h :h_exist if exist geoip.c goto c_exist echo creating GeoIP.c echo // Dummy > GeoIP.c :c_exist if exist geoip_x.c goto finish echo creating GeoIP_X.c echo #include "GeoIP_X.hpp" >> GeoIP_X.c :finish amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libGeoIP/GeoIP_X.hpp0000644000175000017500000000043412611472361026404 0ustar morphmorph#pragma warning(disable:4996) #define ssize_t int #include #include char PACKAGE_VERSION[] = ""; ssize_t pread(int fildes, void *buf, size_t nbyte, size_t offset) { lseek(fildes, offset, SEEK_SET); return read(fildes, buf, nbyte); } #include "GeoIP.c" amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libGeoIP/libGeoIP.vcxproj0000644000175000017500000001211412611472361027506 0ustar morphmorph Debug Win32 Release Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1} libGeoIP Win32Proj StaticLibrary MultiByte true StaticLibrary Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ /MP %(AdditionalOptions) Disabled %(AdditionalIncludeDirectories) WIN32;_DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full %(AdditionalIncludeDirectories) WIN32;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase create dummy files GeoIP.cmd GeoIP_X.c;%(Outputs) create dummy files GeoIP.cmd GeoIP_X.c;%(Outputs) ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libGeoIP/libGeoIP.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libGeoIP/libGeoIP.vcxproj.filt0000644000175000017500000000231412611472361030444 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Header Files Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libGeoIP/readme.txt0000644000175000017500000000105712611472361026441 0ustar morphmorphHow to build aMule with GeoIP support The MaxMind GeoIP library can detect the country an IP adress comes from. aMule uses this information to display a little country flag for each source or ed2k server. Since this is an external library it is disabled by default. This is how to enable it: Download the free GeoIP C library from http://www.maxmind.com/download/geoip/api/c/GeoIP-1.4.6.tar.gz From the folder libGeoIP take GeoIP.h and GeoIP.c and put them into "MSVC Solution\libs\libGeoIP" (removing the dummy files there). Rebuild aMule. That's it. :-) amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libext/0000755000175000017500000000000012611472361024275 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libext/buildlibext.vcxproj0000644000175000017500000004757112611472361030237 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6} MSVCExpressExtLibs Utility MultiByte true Utility MultiByte Utility MultiByte true Utility MultiByte <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ join external libs if not exist ..\..\$(Configuration) mkdir ..\..\$(Configuration) lib /LTCG /out:..\..\$(Configuration)\libext.lib "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_media.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxjpegd.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_adv.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxregexud.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_richtext.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxzlibd.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28ud.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_qa.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28ud_xml.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28ud_odbc.lib" "..\..\..\..\..\..\cryptopp\win32\output\debug\cryptlib.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxtiffd.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28ud_net.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_core.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_gl.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxpngd.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_dbgrid.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_xrc.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxexpatd.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_html.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_aui.lib" join external libs if not exist ..\..\$(Configuration) mkdir ..\..\$(Configuration) lib /LTCG /out:..\..\$(Configuration)\libext.lib "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_media.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxjpeg.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_adv.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxregexu.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_richtext.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxzlib.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28u.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_qa.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28u_xml.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28u_odbc.lib" "..\..\..\..\..\..\cryptopp\win32\output\release\cryptlib.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxtiff.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28u_net.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_core.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_gl.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxpng.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_dbgrid.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_xrc.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxexpat.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_html.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_aui.lib" join external libs if not exist ..\..\$(Configuration) mkdir ..\..\$(Configuration) lib /LTCG /out:..\..\$(Configuration)\libext.lib "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30ud_media.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxjpegd.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30ud_adv.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxregexud.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30ud_richtext.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxzlibd.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxbase30ud.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30ud_qa.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxbase30ud_xml.lib" "..\..\..\..\..\..\cryptopp\win32\output\debug\cryptlib.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxtiffd.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxbase30ud_net.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30ud_core.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30ud_gl.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxpngd.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30ud_xrc.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxexpatd.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30ud_html.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30ud_aui.lib" join external libs if not exist ..\..\$(Configuration) mkdir ..\..\$(Configuration) lib /LTCG /out:..\..\$(Configuration)\libext.lib "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30u_media.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxjpeg.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30u_adv.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxregexu.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30u_richtext.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxzlib.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxbase30u.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30u_qa.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxbase30u_xml.lib" "..\..\..\..\..\..\cryptopp\win32\output\release\cryptlib.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxtiff.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxbase30u_net.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30u_core.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30u_gl.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxpng.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30u_xrc.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxexpat.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30u_html.lib" "..\..\..\..\..\..\wxWidgets29\lib\vc_lib\wxmsw30u_aui.lib" {24c45343-fd20-5c92-81c1-35a2ae841e79} false {a16d3832-0f42-57ce-8f48-50e06649ade8} false {3fcc50c2-81e9-5db2-b8d8-2129427568b1} false {6744dad8-9c70-574a-bff2-9f8dddb24a75} false {da8b15ef-6750-5928-bc0e-c748213cf9b2} false {33cc42f9-7756-5587-863c-8d4461b7c5dd} false {8bd8f8d9-4275-5b42-a8f4-f1db2970a550} false {69f2ede4-7d21-5738-9bc0-f66f61c9ae00} false {e21129e0-7c08-5936-9d8c-0d60b5319ba7} false {7fb0902d-8579-5dce-b883-daf66a885005} false {a1a8355b-0988-528e-9cc2-b971d6266669} false {6053cc38-cdee-584c-8bc8-4b000d800fc7} false {8acc122a-ca6a-5aa6-9c97-9cdd2e533db0} false {56a4b526-bb81-5d01-aaa9-16d23bbb169d} false {75596ce6-5ae7-55c9-b890-c07b0a657a83} false {8b867186-a0b5-5479-b824-e176edd27c40} false {3e6dca27-5fa3-53ec-bbd6-2d42294b7ae6} false {09f2f96a-1cc6-5e43-af1d-956ec2a4888d} false {fe8c58ce-6828-4125-8563-28f929d307c2} false {64dd39fc-b3fa-4625-86ba-d8a7ae7d1d2c} false {3ea1ce4c-c6fa-42c0-a152-10fda37fe935} false {83e249bf-12a0-4d0d-b9a5-b9560fde0ba1} false {c4590207-2d76-445f-833d-d59bb14d2c51} false {8cf291f4-6284-4118-98a7-9d2146c6d5ea} false {8e917a7a-cc97-45c8-80a1-2ebd30936d23} false {6b245136-054c-4400-bf21-d30b05c231cd} false {c963a510-37eb-4d71-85b9-2380fcd4b3d3} false {b535be44-fccc-4911-862f-a7ed6cc6b597} false {ae383b44-ee53-4353-9bf0-2f3767d6ce51} false {4740520c-adf1-464d-97c5-85fcfeecf76d} false {474a0ed2-5969-47f0-b37f-7bc05c44f99b} false {4c6519fa-63b7-4631-b087-a17a368dbcd9} false {4f88c347-8c7a-47c1-84c8-d4e154a33d30} false {a960d0ad-c20e-4fd6-b477-6509232c7d94} false {456e58bd-84ca-4190-a88b-0a9b30dfd6d6} false {99a6cd35-a635-4e39-93ff-f9a359e356d2} false {46b97e73-8e57-42c1-a46e-af0495d625dd} false {ba59346e-5eb2-4d25-94a7-132d9c953a05} false ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libext/buildlibext.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libext/buildlibext.vcxproj.fil0000644000175000017500000000165312611472361030777 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmulecommon/0000755000175000017500000000000012611472361025650 5ustar morphmorph././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmulecommon/libmulecommon.vcxprojamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmulecommon/libmulecommon.vc0000644000175000017500000002635412611472361031056 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {293E6133-239A-4ED4-838E-9182B07C6B35} libmulecommon Win32Proj StaticLibrary Unicode true StaticLibrary Unicode StaticLibrary Unicode true StaticLibrary Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase Create config.h cd "$(SolutionDir)..\..\.." "$(SolutionDir)makeconfig.cmd" $(SolutionDir)..\..\..\config.h;%(Outputs) Create config.h cd "$(SolutionDir)..\..\.." "$(SolutionDir)makeconfig.cmd" $(SolutionDir)..\..\..\config.h;%(Outputs) Create config.h cd "$(SolutionDir)..\..\.." "$(SolutionDir)makeconfig.cmd" $(SolutionDir)..\..\..\config.h;%(Outputs) Create config.h cd "$(SolutionDir)..\..\.." "$(SolutionDir)makeconfig.cmd" $(SolutionDir)..\..\..\config.h;%(Outputs) ././@LongLink0000644000000000000000000000016200000000000011602 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmulecommon/libmulecommon.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmulecommon/libmulecommon.vc0000644000175000017500000000576312611472361031057 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmuleec/0000755000175000017500000000000012611472361024747 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmuleec/libmuleec.vcxproj0000644000175000017500000002475612611472361030343 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1} libmuleec Win32Proj StaticLibrary Unicode true StaticLibrary Unicode StaticLibrary Unicode true StaticLibrary Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase true /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase true /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase true /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase true {293e6133-239a-4ed4-838e-9182b07c6b35} false ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmuleec/libmuleec.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmuleec/libmuleec.vcxproj.fi0000644000175000017500000000552312611472361030727 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmuleexternalwxlistctrl/0000755000175000017500000000000012611472361030342 5ustar morphmorph././@LongLink0000644000000000000000000000020200000000000011575 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmuleexternalwxlistctrl/libmuleexternalwxlistctrl.vcxprojamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmuleexternalwxlistctrl/libm0000644000175000017500000002050712611472361031214 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF} libmuleexternalwxlistctrl Win32Proj StaticLibrary Unicode true StaticLibrary Unicode StaticLibrary Unicode true StaticLibrary Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase ././@LongLink0000644000000000000000000000021200000000000011576 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmuleexternalwxlistctrl/libmuleexternalwxlistctrl.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libmuleexternalwxlistctrl/libm0000644000175000017500000000215012611472361031206 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libsocket/0000755000175000017500000000000012611472361024765 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libsocket/libsocket.vcxproj0000644000175000017500000002455012611472361030367 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 true true true true true true true true {293e6133-239a-4ed4-838e-9182b07c6b35} true false false false false {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} libmuleec Win32Proj StaticLibrary Unicode true StaticLibrary Unicode StaticLibrary Unicode true StaticLibrary Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\boost;$(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\boost;$(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\boost;$(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\boost;$(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libsocket/libsocket.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/libs/libsocket/libsocket.vcxproj.fi0000644000175000017500000000250012611472361030753 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A31D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-6251BE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83B1121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/makeconfig.cmd0000644000175000017500000000246512611472361024654 0ustar morphmorph@echo off echo #ifndef CONFIG_H>config.h echo #define CONFIG_H>>config.h rem Tarballs have a .svn-revision for identification if not exist .svn-revision goto svn1 FOR /F %%i IN (.svn-revision) DO set svnv=%%i goto :foundsvnversion :svn1 rem Try to get version from a SVN working copy, svnversion must be in path set svnv=exported call svnversion >nul 2>&1 if errorlevel 1 goto nosvnversion FOR /F %%i IN ('svnversion src') DO set svnv=%%i if %svnv%==exported goto nosvnversion if %svnv%==Unversioned goto nosvnversion :foundsvnversion echo SVNDATE is %svnv% echo #define SVNDATE "rev. %svnv%">>config.h echo #define VERSION "SVN">>config.h echo #define __PRERELEASE__>>config.h goto boost1 :nosvnversion echo release build, version from ^ echo #include ^ >>config.h :boost1 if not exist ..\boost\boost\asio.hpp goto boost2 if not exist ..\boost\libs\system\src\error_code.cpp goto boost2 echo Boost detected, using Asio sockets echo #define ASIO_SOCKETS>>config.h echo #define HAVE_BOOST_SOURCES>>config.h goto finish :boost2 echo no Boost found, using wx sockets :finish echo #define CRYPTOPP_INCLUDE_PREFIX ../cryptopp>>config.h echo #define PACKAGE "amule">>config.h echo #define HAVE_ERRNO_H>>config.h echo #define HAVE_STRERROR>>config.h echo #endif>>config.h amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/version.rc0000644000175000017500000000256712611472361024102 0ustar morphmorph#include #define HAVE_CONFIG_H #include "../../../src/include/common/ClientVersion.h" #ifdef __PRERELEASE__ #define VER_PRERELEASE VS_FF_PRERELEASE #undef VER_RELEASE #define VER_RELEASE 0 #define VER_PRODUCTVERSION_STR VERSION " " SVNDATE #else #define VER_PRERELEASE 0 #ifndef VER_RELEASE #define VER_RELEASE 1 #endif #define VER_PRODUCTVERSION_STR VERSION #endif #ifdef __DEBUG__ #define VER_DEBUG VS_FF_DEBUG #else #define VER_DEBUG 0 #endif VS_VERSION_INFO VERSIONINFO FILEVERSION VERSION_MJR, VERSION_MIN, VERSION_UPDATE, VER_RELEASE PRODUCTVERSION VERSION_MJR, VERSION_MIN, VERSION_UPDATE, VER_RELEASE FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS VER_DEBUG | VER_PRERELEASE FILEOS VOS__WINDOWS32 FILETYPE VFT_APP FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "Comments", "http://www.amule.org/" VALUE "FileDescription", VER_FILEDESCRIPTION_STR VALUE "FileVersion", VER_PRODUCTVERSION_STR VALUE "InternalName", VER_INTERNALNAME_STR VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR VALUE "ProductName", "aMule" VALUE "ProductVersion", VER_PRODUCTVERSION_STR VALUE "LegalCopyright", "aMule Team ( admin@amule.org )" VALUE "CompanyName", "http://www.amule.org/" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x0409, 1200 END END amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/wxCas/0000755000175000017500000000000012611472361023142 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/wxCas/wxCas.vcxproj0000644000175000017500000003534412611472361025655 0ustar morphmorph Debug29 Win32 Debug Win32 Release29 Win32 Release Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356} wxCas Win32Proj Application Unicode true Application Unicode Application Unicode true Application Unicode <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"Graphical aMule Statistics\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"Graphical aMule Statistics\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"Graphical aMule Statistics\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..\..\wxWidgets29\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets29\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"Graphical aMule Statistics\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets29\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 {293e6133-239a-4ed4-838e-9182b07c6b35} false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC10/wxCas/wxCas.vcxproj.filters0000644000175000017500000000615212611472361027317 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Resource Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/0000755000175000017500000000000012611472361022057 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/PCH.cpp0000644000175000017500000000016612611472361023200 0ustar morphmorph// This file is used to build the precompiled headers. // Since PCH.h is included by compiler option, it's just empty.amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/PCH.h0000644000175000017500000000462412611472361022650 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Stu Redman ( sturedman@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef PCH_H #define PCH_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "CryptoPP_Inc.h" #include "amule.h" #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include "ClientCreditsList.h" #include "ClientList.h" #include "ClientRef.h" #include "ClientUDPSocket.h" #include "ExternalConn.h" #include "InternalEvents.h" #include "KnownFileList.h" #include "ListenSocket.h" #include "Logger.h" #include "MD4Hash.h" #include "OtherFunctions.h" #include "PartFile.h" #include "Preferences.h" #include "ScopedPtr.h" #include "Server.h" #include "Statistics.h" #include "ThreadTasks.h" #include "UserEvents.h" #ifndef CLIENT_GUI #include "kademlia/kademlia/Kademlia.h" #include "kademlia/kademlia/Prefs.h" #include "IPFilter.h" #endif #ifndef AMULE_DAEMON #include "amuleDlg.h" #include "muuli_wdr.h" #endif #endif amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/README - MSVC.txt0000644000175000017500000000743712611472361024436 0ustar morphmorphHow to build aMule with Visual Studio 2010 Express Edition See also http://www.amule.org/wiki/index.php/HowTo_compile_with_Visual_Studio This solution for Microsoft's Visual Studio 2010 has been configured to be as easy as possible to set up. However, given the size of the aMule project and the libraries it uses, along with limitations in the way Visual Studio works, a couple of items must be setup separately. Additionally, some source code files might need patching due to incompatibilities with some generated files. The solution expects to find the following items: * wxWidgets ( http://www.wxwidgets.org ) at a specific location: ..\..\wxWidgets\ from the solution directory. * crypto++ ( http://www.cryptopp.com/ ) at a specific location: ..\..\cryptopp\ from the solution directory. This means you must create a folder where you will compile aMule, and it must have this structure: - - Your main folder. You can name it whatever you want. | | - wxWidgets ( wxWidgets sources, no intermediate subfolder ) | | - wxWidgets29 ( wxWidgets 2.9 sources, only required if you want to build against unstable wx 2.9 ) | | - cryptopp ( Crypto++ sources, no intermediate subfolder ) | | - ( aMule sources, no intermediate subfolder, can have any name ) I hope this is simple enough to get you started. If wxWidgets fails to compile, please read http://wiki.wxwidgets.org/Microsoft_Visual_CPP_Guide There is sometimes a problem with the cryptopp project in the release and debug build, if some projects fail to link and give you a warning about redefined symbols, go to the properties on the cryptopp project, configuration "release" and change the "Configuration Properties"->"C/C++"->"Code generation"->"Runtime library" to "Multithreaded DLL (/MD)" in the release build or "Multithreaded Debug DLL (/MDd)" for the debug build. There are 3 solutions: 1) aMule-MSVC10E.sln which includes aMule, aMule tools and aMule's internal libs 2) aMule-MSVC10E-ExtLibs.sln includes only wxWidgets and Crypto++ and builds a single library libext.lib from them. You must first build this solution before building aMule-MSVCE.sln 3) aMule-MSVC10E-ExtLibs29.sln same but using wxWidgets 2.9 The Debug/Release configs build against wxWidgets 2.8 (stable), Debug29/Release29 configs build against wxWidgets 2.9 (unstable) To build aMule with GeoIP see libs\libGeoIP\readme.txt . Without it you get an error building libGeoIP when you build the full solution. Just ignore it or unload the libGeoIP project. If aMule fails to compile, here are some guidelines/patches to the most common problems: [*] If Scanner.cpp fails to compile, apply this change around line 1545: - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + b->yy_is_interactive = 0; if necessary. [*] The file muuli_wdr.cpp can also fail if it hasn't been patched for MSVC in the current code. The most common problem comes from this kind of lines: _("For a film you can say its length, its story, language ...\n" "and if it's a fake, you can tell that to other users of aMule."), Notice the opening and closing parentheses are on a different line, and the quotes opened again. While this is ok for gcc, Visual Studio won't allow it. Change this lines to be a single-line quoted text. In the above example, the result will be: _("For a film you can say its length, its story, language ...\nand if it's a fake, you can tell that to other users of aMule."), And that should be it. Feel free to ask in the aMule forum at forum.amule.org, "Compilation problems" section if you have further doubts. If you want to run aMule from inside Visual Studio, always set _NO_DEBUG_HEAP=1 in Properties / Debugging / Environment! amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aLinkCreator/0000755000175000017500000000000012611472361024435 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aLinkCreator/aLinkCreator.vcxproj0000644000175000017500000003365012611472361030437 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5} aLinkCreator Win32Proj Application Unicode true v120 Application Unicode v120 Application Unicode true v120 Application Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;wxUSE_NO_MANIFEST=1;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) NDEBUG;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;wxUSE_NO_MANIFEST=1;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) NDEBUG;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 {293e6133-239a-4ed4-838e-9182b07c6b35} false ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aLinkCreator/aLinkCreator.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aLinkCreator/aLinkCreator.vcxproj.f0000644000175000017500000000524412611472361030661 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Resource Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aLinkCreator/alcc.vcxproj0000644000175000017500000003312512611472361026760 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6} alcc Win32Proj Application Unicode true v120 Application Unicode v120 Application Unicode true v120 Application Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)ALC\ false $(SolutionDir)$(Configuration)\ $(Configuration)ALC\ false $(SolutionDir)$(Configuration)\ $(Configuration)ALC\ false $(SolutionDir)$(Configuration)\ $(Configuration)ALC\ false /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;wxUSE_NO_MANIFEST=1;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;wxUSE_NO_MANIFEST=1;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Link Creator\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 {293e6133-239a-4ed4-838e-9182b07c6b35} false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aLinkCreator/alcc.vcxproj.filters0000644000175000017500000000402612611472361030425 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Header Files Header Files Header Files Header Files Resource Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMule-MSVC12E-ExtLibs.sln0000644000175000017500000002721212611472361026232 0ustar morphmorphMicrosoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Express 2013 for Windows Desktop VisualStudioVersion = 12.0.21005.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buildlibext", "libs\libext\buildlibext.vcxproj", "{F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}" ProjectSection(ProjectDependencies) = postProject {3423EC9A-52E4-4A4D-9753-EDEBC38785EF} = {3423EC9A-52E4-4A4D-9753-EDEBC38785EF} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxregex", "..\..\..\..\wxWidgets\build\msw\wx_wxregex.vcxproj", "{A960D0AD-C20E-4FD6-B477-6509232C7D94}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxzlib", "..\..\..\..\wxWidgets\build\msw\wx_wxzlib.vcxproj", "{99A6CD35-A635-4E39-93FF-F9A359E356D2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxpng", "..\..\..\..\wxWidgets\build\msw\wx_wxpng.vcxproj", "{4F88C347-8C7A-47C1-84C8-D4E154A33D30}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxjpeg", "..\..\..\..\wxWidgets\build\msw\wx_wxjpeg.vcxproj", "{4C6519FA-63B7-4631-B087-A17A368DBCD9}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxtiff", "..\..\..\..\wxWidgets\build\msw\wx_wxtiff.vcxproj", "{456E58BD-84CA-4190-A88B-0A9B30DFD6D6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxexpat", "..\..\..\..\wxWidgets\build\msw\wx_wxexpat.vcxproj", "{474A0ED2-5969-47F0-B37F-7BC05C44F99B}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "base", "..\..\..\..\wxWidgets\build\msw\wx_base.vcxproj", "{3EA1CE4C-C6FA-42C0-A152-10FDA37FE935}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net", "..\..\..\..\wxWidgets\build\msw\wx_net.vcxproj", "{C963A510-37EB-4D71-85B9-2380FCD4B3D3}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core", "..\..\..\..\wxWidgets\build\msw\wx_core.vcxproj", "{83E249BF-12A0-4D0D-B9A5-B9560FDE0BA1}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adv", "..\..\..\..\wxWidgets\build\msw\wx_adv.vcxproj", "{FE8C58CE-6828-4125-8563-28F929D307C2}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "media", "..\..\..\..\wxWidgets\build\msw\wx_media.vcxproj", "{6B245136-054C-4400-BF21-D30B05C231CD}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "odbc", "..\..\..\..\wxWidgets\build\msw\wx_odbc.vcxproj", "{B535BE44-FCCC-4911-862F-A7ED6CC6B597}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dbgrid", "..\..\..\..\wxWidgets\build\msw\wx_dbgrid.vcxproj", "{C4590207-2D76-445F-833D-D59BB14D2C51}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "html", "..\..\..\..\wxWidgets\build\msw\wx_html.vcxproj", "{8E917A7A-CC97-45C8-80A1-2EBD30936D23}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "qa", "..\..\..\..\wxWidgets\build\msw\wx_qa.vcxproj", "{AE383B44-EE53-4353-9BF0-2F3767D6CE51}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml", "..\..\..\..\wxWidgets\build\msw\wx_xml.vcxproj", "{46B97E73-8E57-42C1-A46E-AF0495D625DD}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xrc", "..\..\..\..\wxWidgets\build\msw\wx_xrc.vcxproj", "{BA59346E-5EB2-4D25-94A7-132D9C953A05}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aui", "..\..\..\..\wxWidgets\build\msw\wx_aui.vcxproj", "{64DD39FC-B3FA-4625-86BA-D8A7AE7D1D2C}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "richtext", "..\..\..\..\wxWidgets\build\msw\wx_richtext.vcxproj", "{4740520C-ADF1-464D-97C5-85FCFEECF76D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gl", "..\..\..\..\wxWidgets\build\msw\wx_gl.vcxproj", "{8CF291F4-6284-4118-98A7-9D2146C6D5EA}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cryptlib", "..\..\..\..\cryptopp\cryptlib.vcxproj", "{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Debug|Win32.ActiveCfg = Debug|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Debug|Win32.Build.0 = Debug|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Release|Win32.ActiveCfg = Release|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Release|Win32.Build.0 = Release|Win32 {A960D0AD-C20E-4FD6-B477-6509232C7D94}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {A960D0AD-C20E-4FD6-B477-6509232C7D94}.Debug|Win32.Build.0 = Unicode Debug|Win32 {A960D0AD-C20E-4FD6-B477-6509232C7D94}.Release|Win32.ActiveCfg = Unicode Release|Win32 {A960D0AD-C20E-4FD6-B477-6509232C7D94}.Release|Win32.Build.0 = Unicode Release|Win32 {99A6CD35-A635-4E39-93FF-F9A359E356D2}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {99A6CD35-A635-4E39-93FF-F9A359E356D2}.Debug|Win32.Build.0 = Unicode Debug|Win32 {99A6CD35-A635-4E39-93FF-F9A359E356D2}.Release|Win32.ActiveCfg = Unicode Release|Win32 {99A6CD35-A635-4E39-93FF-F9A359E356D2}.Release|Win32.Build.0 = Unicode Release|Win32 {4F88C347-8C7A-47C1-84C8-D4E154A33D30}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {4F88C347-8C7A-47C1-84C8-D4E154A33D30}.Debug|Win32.Build.0 = Unicode Debug|Win32 {4F88C347-8C7A-47C1-84C8-D4E154A33D30}.Release|Win32.ActiveCfg = Unicode Release|Win32 {4F88C347-8C7A-47C1-84C8-D4E154A33D30}.Release|Win32.Build.0 = Unicode Release|Win32 {4C6519FA-63B7-4631-B087-A17A368DBCD9}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {4C6519FA-63B7-4631-B087-A17A368DBCD9}.Debug|Win32.Build.0 = Unicode Debug|Win32 {4C6519FA-63B7-4631-B087-A17A368DBCD9}.Release|Win32.ActiveCfg = Unicode Release|Win32 {4C6519FA-63B7-4631-B087-A17A368DBCD9}.Release|Win32.Build.0 = Unicode Release|Win32 {456E58BD-84CA-4190-A88B-0A9B30DFD6D6}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {456E58BD-84CA-4190-A88B-0A9B30DFD6D6}.Debug|Win32.Build.0 = Unicode Debug|Win32 {456E58BD-84CA-4190-A88B-0A9B30DFD6D6}.Release|Win32.ActiveCfg = Unicode Release|Win32 {456E58BD-84CA-4190-A88B-0A9B30DFD6D6}.Release|Win32.Build.0 = Unicode Release|Win32 {474A0ED2-5969-47F0-B37F-7BC05C44F99B}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {474A0ED2-5969-47F0-B37F-7BC05C44F99B}.Debug|Win32.Build.0 = Unicode Debug|Win32 {474A0ED2-5969-47F0-B37F-7BC05C44F99B}.Release|Win32.ActiveCfg = Unicode Release|Win32 {474A0ED2-5969-47F0-B37F-7BC05C44F99B}.Release|Win32.Build.0 = Unicode Release|Win32 {3EA1CE4C-C6FA-42C0-A152-10FDA37FE935}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {3EA1CE4C-C6FA-42C0-A152-10FDA37FE935}.Debug|Win32.Build.0 = Unicode Debug|Win32 {3EA1CE4C-C6FA-42C0-A152-10FDA37FE935}.Release|Win32.ActiveCfg = Unicode Release|Win32 {3EA1CE4C-C6FA-42C0-A152-10FDA37FE935}.Release|Win32.Build.0 = Unicode Release|Win32 {C963A510-37EB-4D71-85B9-2380FCD4B3D3}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {C963A510-37EB-4D71-85B9-2380FCD4B3D3}.Debug|Win32.Build.0 = Unicode Debug|Win32 {C963A510-37EB-4D71-85B9-2380FCD4B3D3}.Release|Win32.ActiveCfg = Unicode Release|Win32 {C963A510-37EB-4D71-85B9-2380FCD4B3D3}.Release|Win32.Build.0 = Unicode Release|Win32 {83E249BF-12A0-4D0D-B9A5-B9560FDE0BA1}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {83E249BF-12A0-4D0D-B9A5-B9560FDE0BA1}.Debug|Win32.Build.0 = Unicode Debug|Win32 {83E249BF-12A0-4D0D-B9A5-B9560FDE0BA1}.Release|Win32.ActiveCfg = Unicode Release|Win32 {83E249BF-12A0-4D0D-B9A5-B9560FDE0BA1}.Release|Win32.Build.0 = Unicode Release|Win32 {FE8C58CE-6828-4125-8563-28F929D307C2}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {FE8C58CE-6828-4125-8563-28F929D307C2}.Debug|Win32.Build.0 = Unicode Debug|Win32 {FE8C58CE-6828-4125-8563-28F929D307C2}.Release|Win32.ActiveCfg = Unicode Release|Win32 {FE8C58CE-6828-4125-8563-28F929D307C2}.Release|Win32.Build.0 = Unicode Release|Win32 {6B245136-054C-4400-BF21-D30B05C231CD}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {6B245136-054C-4400-BF21-D30B05C231CD}.Debug|Win32.Build.0 = Unicode Debug|Win32 {6B245136-054C-4400-BF21-D30B05C231CD}.Release|Win32.ActiveCfg = Unicode Release|Win32 {6B245136-054C-4400-BF21-D30B05C231CD}.Release|Win32.Build.0 = Unicode Release|Win32 {B535BE44-FCCC-4911-862F-A7ED6CC6B597}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {B535BE44-FCCC-4911-862F-A7ED6CC6B597}.Debug|Win32.Build.0 = Unicode Debug|Win32 {B535BE44-FCCC-4911-862F-A7ED6CC6B597}.Release|Win32.ActiveCfg = Unicode Release|Win32 {B535BE44-FCCC-4911-862F-A7ED6CC6B597}.Release|Win32.Build.0 = Unicode Release|Win32 {C4590207-2D76-445F-833D-D59BB14D2C51}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {C4590207-2D76-445F-833D-D59BB14D2C51}.Debug|Win32.Build.0 = Unicode Debug|Win32 {C4590207-2D76-445F-833D-D59BB14D2C51}.Release|Win32.ActiveCfg = Unicode Release|Win32 {C4590207-2D76-445F-833D-D59BB14D2C51}.Release|Win32.Build.0 = Unicode Release|Win32 {8E917A7A-CC97-45C8-80A1-2EBD30936D23}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {8E917A7A-CC97-45C8-80A1-2EBD30936D23}.Debug|Win32.Build.0 = Unicode Debug|Win32 {8E917A7A-CC97-45C8-80A1-2EBD30936D23}.Release|Win32.ActiveCfg = Unicode Release|Win32 {8E917A7A-CC97-45C8-80A1-2EBD30936D23}.Release|Win32.Build.0 = Unicode Release|Win32 {AE383B44-EE53-4353-9BF0-2F3767D6CE51}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {AE383B44-EE53-4353-9BF0-2F3767D6CE51}.Debug|Win32.Build.0 = Unicode Debug|Win32 {AE383B44-EE53-4353-9BF0-2F3767D6CE51}.Release|Win32.ActiveCfg = Unicode Release|Win32 {AE383B44-EE53-4353-9BF0-2F3767D6CE51}.Release|Win32.Build.0 = Unicode Release|Win32 {46B97E73-8E57-42C1-A46E-AF0495D625DD}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {46B97E73-8E57-42C1-A46E-AF0495D625DD}.Debug|Win32.Build.0 = Unicode Debug|Win32 {46B97E73-8E57-42C1-A46E-AF0495D625DD}.Release|Win32.ActiveCfg = Unicode Release|Win32 {46B97E73-8E57-42C1-A46E-AF0495D625DD}.Release|Win32.Build.0 = Unicode Release|Win32 {BA59346E-5EB2-4D25-94A7-132D9C953A05}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {BA59346E-5EB2-4D25-94A7-132D9C953A05}.Debug|Win32.Build.0 = Unicode Debug|Win32 {BA59346E-5EB2-4D25-94A7-132D9C953A05}.Release|Win32.ActiveCfg = Unicode Release|Win32 {BA59346E-5EB2-4D25-94A7-132D9C953A05}.Release|Win32.Build.0 = Unicode Release|Win32 {64DD39FC-B3FA-4625-86BA-D8A7AE7D1D2C}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {64DD39FC-B3FA-4625-86BA-D8A7AE7D1D2C}.Debug|Win32.Build.0 = Unicode Debug|Win32 {64DD39FC-B3FA-4625-86BA-D8A7AE7D1D2C}.Release|Win32.ActiveCfg = Unicode Release|Win32 {64DD39FC-B3FA-4625-86BA-D8A7AE7D1D2C}.Release|Win32.Build.0 = Unicode Release|Win32 {4740520C-ADF1-464D-97C5-85FCFEECF76D}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {4740520C-ADF1-464D-97C5-85FCFEECF76D}.Debug|Win32.Build.0 = Unicode Debug|Win32 {4740520C-ADF1-464D-97C5-85FCFEECF76D}.Release|Win32.ActiveCfg = Unicode Release|Win32 {4740520C-ADF1-464D-97C5-85FCFEECF76D}.Release|Win32.Build.0 = Unicode Release|Win32 {8CF291F4-6284-4118-98A7-9D2146C6D5EA}.Debug|Win32.ActiveCfg = Unicode Debug|Win32 {8CF291F4-6284-4118-98A7-9D2146C6D5EA}.Debug|Win32.Build.0 = Unicode Debug|Win32 {8CF291F4-6284-4118-98A7-9D2146C6D5EA}.Release|Win32.ActiveCfg = Unicode Release|Win32 {8CF291F4-6284-4118-98A7-9D2146C6D5EA}.Release|Win32.Build.0 = Unicode Release|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.ActiveCfg = Debug|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.Build.0 = Debug|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.ActiveCfg = Release|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMule-MSVC12E-ExtLibs30.sln0000644000175000017500000003000012611472361026362 0ustar morphmorphMicrosoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Express 2013 for Windows Desktop VisualStudioVersion = 12.0.21005.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "buildlibext", "libs\libext\buildlibext.vcxproj", "{F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}" ProjectSection(ProjectDependencies) = postProject {850CDA04-EF5A-40CB-B168-B01CB209EA6D} = {850CDA04-EF5A-40CB-B168-B01CB209EA6D} {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {01F4CE10-2CFB-41A8-B41F-E54337868A1D} {56A4B526-BB81-5D01-AAA9-16D23BBB169D} = {56A4B526-BB81-5D01-AAA9-16D23BBB169D} {24C45343-FD20-5C92-81C1-35A2AE841E79} = {24C45343-FD20-5C92-81C1-35A2AE841E79} {C060B24E-4ED9-4C85-9252-6A18663040F4} = {C060B24E-4ED9-4C85-9252-6A18663040F4} {954A3B62-FFA0-47F4-9979-7857D1C06BB4} = {954A3B62-FFA0-47F4-9979-7857D1C06BB4} {14EF9978-2ED5-4FEF-96AB-39DCB2C12A63} = {14EF9978-2ED5-4FEF-96AB-39DCB2C12A63} {DBAD7689-4C00-4444-93AC-E911D6597098} = {DBAD7689-4C00-4444-93AC-E911D6597098} {3423EC9A-52E4-4A4D-9753-EDEBC38785EF} = {3423EC9A-52E4-4A4D-9753-EDEBC38785EF} {CB8C76A0-7AFA-4A82-BCA1-92FDC78CE701} = {CB8C76A0-7AFA-4A82-BCA1-92FDC78CE701} {D61744B5-C233-4DD2-BDFC-F46FBA0189DF} = {D61744B5-C233-4DD2-BDFC-F46FBA0189DF} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cryptlib", "..\..\..\..\cryptopp\cryptlib.vcxproj", "{3423EC9A-52E4-4A4D-9753-EDEBC38785EF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "base", "..\..\..\..\wxWidgets30\build\msw\wx_vc12_base.vcxproj", "{D61744B5-C233-4DD2-BDFC-F46FBA0189DF}" ProjectSection(ProjectDependencies) = postProject {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {01F4CE10-2CFB-41A8-B41F-E54337868A1D} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core", "..\..\..\..\wxWidgets30\build\msw\wx_vc12_core.vcxproj", "{954A3B62-FFA0-47F4-9979-7857D1C06BB4}" ProjectSection(ProjectDependencies) = postProject {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {01F4CE10-2CFB-41A8-B41F-E54337868A1D} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "net", "..\..\..\..\wxWidgets30\build\msw\wx_vc12_net.vcxproj", "{850CDA04-EF5A-40CB-B168-B01CB209EA6D}" ProjectSection(ProjectDependencies) = postProject {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {01F4CE10-2CFB-41A8-B41F-E54337868A1D} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxjpeg", "..\..\..\..\wxWidgets30\build\msw\wx_vc12_wxjpeg.vcxproj", "{DBAD7689-4C00-4444-93AC-E911D6597098}" ProjectSection(ProjectDependencies) = postProject {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {01F4CE10-2CFB-41A8-B41F-E54337868A1D} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxpng", "..\..\..\..\wxWidgets30\build\msw\wx_vc12_wxpng.vcxproj", "{CB8C76A0-7AFA-4A82-BCA1-92FDC78CE701}" ProjectSection(ProjectDependencies) = postProject {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {01F4CE10-2CFB-41A8-B41F-E54337868A1D} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxtiff", "..\..\..\..\wxWidgets30\build\msw\wx_vc12_wxtiff.vcxproj", "{C060B24E-4ED9-4C85-9252-6A18663040F4}" ProjectSection(ProjectDependencies) = postProject {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {01F4CE10-2CFB-41A8-B41F-E54337868A1D} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxzlib", "..\..\..\..\wxWidgets30\build\msw\wx_vc12_wxzlib.vcxproj", "{14EF9978-2ED5-4FEF-96AB-39DCB2C12A63}" ProjectSection(ProjectDependencies) = postProject {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {01F4CE10-2CFB-41A8-B41F-E54337868A1D} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_custom_build", "..\..\..\..\wxWidgets30\build\msw\wx_vc12_custom_build.vcxproj", "{01F4CE10-2CFB-41A8-B41F-E54337868A1D}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxregex", "..\..\..\..\wxWidgets30\build\msw\wx_vc12_wxregex.vcxproj", "{56A4B526-BB81-5D01-AAA9-16D23BBB169D}" ProjectSection(ProjectDependencies) = postProject {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {01F4CE10-2CFB-41A8-B41F-E54337868A1D} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "adv", "..\..\..\..\wxWidgets30\build\msw\wx_vc12_adv.vcxproj", "{24C45343-FD20-5C92-81C1-35A2AE841E79}" ProjectSection(ProjectDependencies) = postProject {01F4CE10-2CFB-41A8-B41F-E54337868A1D} = {01F4CE10-2CFB-41A8-B41F-E54337868A1D} EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Debug|Win32.ActiveCfg = Debug30|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Debug|Win32.Build.0 = Debug30|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Debug|x64.ActiveCfg = Debug|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Release|Win32.ActiveCfg = Release30|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Release|Win32.Build.0 = Release30|Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6}.Release|x64.ActiveCfg = Release|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.ActiveCfg = Debug|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|Win32.Build.0 = Debug|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|x64.ActiveCfg = Debug|x64 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Debug|x64.Build.0 = Debug|x64 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.ActiveCfg = Release|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|Win32.Build.0 = Release|Win32 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|x64.ActiveCfg = Release|x64 {3423EC9A-52E4-4A4D-9753-EDEBC38785EF}.Release|x64.Build.0 = Release|x64 {D61744B5-C233-4DD2-BDFC-F46FBA0189DF}.Debug|Win32.ActiveCfg = Debug|Win32 {D61744B5-C233-4DD2-BDFC-F46FBA0189DF}.Debug|Win32.Build.0 = Debug|Win32 {D61744B5-C233-4DD2-BDFC-F46FBA0189DF}.Debug|x64.ActiveCfg = Debug|x64 {D61744B5-C233-4DD2-BDFC-F46FBA0189DF}.Debug|x64.Build.0 = Debug|x64 {D61744B5-C233-4DD2-BDFC-F46FBA0189DF}.Release|Win32.ActiveCfg = Release|Win32 {D61744B5-C233-4DD2-BDFC-F46FBA0189DF}.Release|Win32.Build.0 = Release|Win32 {D61744B5-C233-4DD2-BDFC-F46FBA0189DF}.Release|x64.ActiveCfg = Release|x64 {D61744B5-C233-4DD2-BDFC-F46FBA0189DF}.Release|x64.Build.0 = Release|x64 {954A3B62-FFA0-47F4-9979-7857D1C06BB4}.Debug|Win32.ActiveCfg = Debug|Win32 {954A3B62-FFA0-47F4-9979-7857D1C06BB4}.Debug|Win32.Build.0 = Debug|Win32 {954A3B62-FFA0-47F4-9979-7857D1C06BB4}.Debug|x64.ActiveCfg = Debug|x64 {954A3B62-FFA0-47F4-9979-7857D1C06BB4}.Debug|x64.Build.0 = Debug|x64 {954A3B62-FFA0-47F4-9979-7857D1C06BB4}.Release|Win32.ActiveCfg = Release|Win32 {954A3B62-FFA0-47F4-9979-7857D1C06BB4}.Release|Win32.Build.0 = Release|Win32 {954A3B62-FFA0-47F4-9979-7857D1C06BB4}.Release|x64.ActiveCfg = Release|x64 {954A3B62-FFA0-47F4-9979-7857D1C06BB4}.Release|x64.Build.0 = Release|x64 {850CDA04-EF5A-40CB-B168-B01CB209EA6D}.Debug|Win32.ActiveCfg = Debug|Win32 {850CDA04-EF5A-40CB-B168-B01CB209EA6D}.Debug|Win32.Build.0 = Debug|Win32 {850CDA04-EF5A-40CB-B168-B01CB209EA6D}.Debug|x64.ActiveCfg = Debug|x64 {850CDA04-EF5A-40CB-B168-B01CB209EA6D}.Debug|x64.Build.0 = Debug|x64 {850CDA04-EF5A-40CB-B168-B01CB209EA6D}.Release|Win32.ActiveCfg = Release|Win32 {850CDA04-EF5A-40CB-B168-B01CB209EA6D}.Release|Win32.Build.0 = Release|Win32 {850CDA04-EF5A-40CB-B168-B01CB209EA6D}.Release|x64.ActiveCfg = Release|x64 {850CDA04-EF5A-40CB-B168-B01CB209EA6D}.Release|x64.Build.0 = Release|x64 {DBAD7689-4C00-4444-93AC-E911D6597098}.Debug|Win32.ActiveCfg = Debug|Win32 {DBAD7689-4C00-4444-93AC-E911D6597098}.Debug|Win32.Build.0 = Debug|Win32 {DBAD7689-4C00-4444-93AC-E911D6597098}.Debug|x64.ActiveCfg = Debug|x64 {DBAD7689-4C00-4444-93AC-E911D6597098}.Debug|x64.Build.0 = Debug|x64 {DBAD7689-4C00-4444-93AC-E911D6597098}.Release|Win32.ActiveCfg = Release|Win32 {DBAD7689-4C00-4444-93AC-E911D6597098}.Release|Win32.Build.0 = Release|Win32 {DBAD7689-4C00-4444-93AC-E911D6597098}.Release|x64.ActiveCfg = Release|x64 {DBAD7689-4C00-4444-93AC-E911D6597098}.Release|x64.Build.0 = Release|x64 {CB8C76A0-7AFA-4A82-BCA1-92FDC78CE701}.Debug|Win32.ActiveCfg = Debug|Win32 {CB8C76A0-7AFA-4A82-BCA1-92FDC78CE701}.Debug|Win32.Build.0 = Debug|Win32 {CB8C76A0-7AFA-4A82-BCA1-92FDC78CE701}.Debug|x64.ActiveCfg = Debug|x64 {CB8C76A0-7AFA-4A82-BCA1-92FDC78CE701}.Debug|x64.Build.0 = Debug|x64 {CB8C76A0-7AFA-4A82-BCA1-92FDC78CE701}.Release|Win32.ActiveCfg = Release|Win32 {CB8C76A0-7AFA-4A82-BCA1-92FDC78CE701}.Release|Win32.Build.0 = Release|Win32 {CB8C76A0-7AFA-4A82-BCA1-92FDC78CE701}.Release|x64.ActiveCfg = Release|x64 {CB8C76A0-7AFA-4A82-BCA1-92FDC78CE701}.Release|x64.Build.0 = Release|x64 {C060B24E-4ED9-4C85-9252-6A18663040F4}.Debug|Win32.ActiveCfg = Debug|Win32 {C060B24E-4ED9-4C85-9252-6A18663040F4}.Debug|Win32.Build.0 = Debug|Win32 {C060B24E-4ED9-4C85-9252-6A18663040F4}.Debug|x64.ActiveCfg = Debug|x64 {C060B24E-4ED9-4C85-9252-6A18663040F4}.Debug|x64.Build.0 = Debug|x64 {C060B24E-4ED9-4C85-9252-6A18663040F4}.Release|Win32.ActiveCfg = Release|Win32 {C060B24E-4ED9-4C85-9252-6A18663040F4}.Release|Win32.Build.0 = Release|Win32 {C060B24E-4ED9-4C85-9252-6A18663040F4}.Release|x64.ActiveCfg = Release|x64 {C060B24E-4ED9-4C85-9252-6A18663040F4}.Release|x64.Build.0 = Release|x64 {14EF9978-2ED5-4FEF-96AB-39DCB2C12A63}.Debug|Win32.ActiveCfg = Debug|Win32 {14EF9978-2ED5-4FEF-96AB-39DCB2C12A63}.Debug|Win32.Build.0 = Debug|Win32 {14EF9978-2ED5-4FEF-96AB-39DCB2C12A63}.Debug|x64.ActiveCfg = Debug|x64 {14EF9978-2ED5-4FEF-96AB-39DCB2C12A63}.Debug|x64.Build.0 = Debug|x64 {14EF9978-2ED5-4FEF-96AB-39DCB2C12A63}.Release|Win32.ActiveCfg = Release|Win32 {14EF9978-2ED5-4FEF-96AB-39DCB2C12A63}.Release|Win32.Build.0 = Release|Win32 {14EF9978-2ED5-4FEF-96AB-39DCB2C12A63}.Release|x64.ActiveCfg = Release|x64 {14EF9978-2ED5-4FEF-96AB-39DCB2C12A63}.Release|x64.Build.0 = Release|x64 {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|Win32.ActiveCfg = Debug|Win32 {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|Win32.Build.0 = Debug|Win32 {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|x64.ActiveCfg = Debug|x64 {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Debug|x64.Build.0 = Debug|x64 {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|Win32.ActiveCfg = Release|Win32 {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|Win32.Build.0 = Release|Win32 {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|x64.ActiveCfg = Release|x64 {01F4CE10-2CFB-41A8-B41F-E54337868A1D}.Release|x64.Build.0 = Release|x64 {56A4B526-BB81-5D01-AAA9-16D23BBB169D}.Debug|Win32.ActiveCfg = Debug|Win32 {56A4B526-BB81-5D01-AAA9-16D23BBB169D}.Debug|Win32.Build.0 = Debug|Win32 {56A4B526-BB81-5D01-AAA9-16D23BBB169D}.Debug|x64.ActiveCfg = Debug|x64 {56A4B526-BB81-5D01-AAA9-16D23BBB169D}.Debug|x64.Build.0 = Debug|x64 {56A4B526-BB81-5D01-AAA9-16D23BBB169D}.Release|Win32.ActiveCfg = Release|Win32 {56A4B526-BB81-5D01-AAA9-16D23BBB169D}.Release|Win32.Build.0 = Release|Win32 {56A4B526-BB81-5D01-AAA9-16D23BBB169D}.Release|x64.ActiveCfg = Release|x64 {56A4B526-BB81-5D01-AAA9-16D23BBB169D}.Release|x64.Build.0 = Release|x64 {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|Win32.ActiveCfg = Debug|Win32 {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|Win32.Build.0 = Debug|Win32 {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|x64.ActiveCfg = Debug|x64 {24C45343-FD20-5C92-81C1-35A2AE841E79}.Debug|x64.Build.0 = Debug|x64 {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|Win32.ActiveCfg = Release|Win32 {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|Win32.Build.0 = Release|Win32 {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|x64.ActiveCfg = Release|x64 {24C45343-FD20-5C92-81C1-35A2AE841E79}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMule-MSVC12E.sln0000644000175000017500000003230412611472361024660 0ustar morphmorphMicrosoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Express 2013 for Windows Desktop VisualStudioVersion = 12.0.21005.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aMule", "aMule\aMule.vcxproj", "{5FCAFC30-922E-446F-8DF5-D71819ABC2FE}" ProjectSection(ProjectDependencies) = postProject {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} = {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmuleec", "libs\libmuleec\libmuleec.vcxproj", "{5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}" ProjectSection(ProjectDependencies) = postProject {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} = {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmulecommon", "libs\libmulecommon\libmulecommon.vcxproj", "{293E6133-239A-4ED4-838E-9182B07C6B35}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libmuleexternalwxlistctrl", "libs\libmuleexternalwxlistctrl\libmuleexternalwxlistctrl.vcxproj", "{16C7A051-9097-41A5-BA26-FEC1EA1F16EF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aLinkCreator", "aLinkCreator\aLinkCreator.vcxproj", "{FF560C5D-4369-4DEF-B2EC-6F507D554DB5}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aMuleCMD", "aMuleCMD\aMuleCMD.vcxproj", "{EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}" ProjectSection(ProjectDependencies) = postProject {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} = {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aMuleGUI", "aMuleGUI\aMuleGUI.vcxproj", "{9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}" ProjectSection(ProjectDependencies) = postProject {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} = {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ed2k", "ed2k\ed2k.vcxproj", "{FF560C5D-4369-4DEF-B2EC-6F507D554DB6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fileview", "fileview\fileview.vcxproj", "{02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libGeoIP", "libs\libGeoIP\libGeoIP.vcxproj", "{8CA0F896-7689-4CE0-9D16-99C9C83847E1}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aMuleD", "aMuleD\aMuleD.vcxproj", "{10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}" ProjectSection(ProjectDependencies) = postProject {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} = {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aMuleWeb", "aMuleWeb\aMuleWeb.vcxproj", "{EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}" ProjectSection(ProjectDependencies) = postProject {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} = {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxCas", "wxCas\wxCas.vcxproj", "{5FCAFC30-922E-446F-8DF5-D71819AB6356}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "alcc", "aLinkCreator\alcc.vcxproj", "{FF560C5D-4369-4DEF-B2EC-6F507D994DB6}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsocket", "libs\libsocket\libsocket.vcxproj", "{5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug30|Win32 = Debug30|Win32 Release|Win32 = Release|Win32 Release30|Win32 = Release30|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Debug|Win32.ActiveCfg = Debug|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Debug|Win32.Build.0 = Debug|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Debug30|Win32.ActiveCfg = Debug30|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Debug30|Win32.Build.0 = Debug30|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Release|Win32.ActiveCfg = Release|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Release|Win32.Build.0 = Release|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Release30|Win32.ActiveCfg = Release30|Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE}.Release30|Win32.Build.0 = Release30|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Debug|Win32.ActiveCfg = Debug|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Debug|Win32.Build.0 = Debug|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Debug30|Win32.ActiveCfg = Debug30|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Debug30|Win32.Build.0 = Debug30|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Release|Win32.ActiveCfg = Release|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Release|Win32.Build.0 = Release|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Release30|Win32.ActiveCfg = Release30|Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1}.Release30|Win32.Build.0 = Release30|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Debug|Win32.ActiveCfg = Debug|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Debug|Win32.Build.0 = Debug|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Debug30|Win32.ActiveCfg = Debug30|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Debug30|Win32.Build.0 = Debug30|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Release|Win32.ActiveCfg = Release|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Release|Win32.Build.0 = Release|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Release30|Win32.ActiveCfg = Release30|Win32 {293E6133-239A-4ED4-838E-9182B07C6B35}.Release30|Win32.Build.0 = Release30|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Debug|Win32.ActiveCfg = Debug|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Debug|Win32.Build.0 = Debug|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Debug30|Win32.ActiveCfg = Debug30|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Debug30|Win32.Build.0 = Debug30|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Release|Win32.ActiveCfg = Release|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Release|Win32.Build.0 = Release|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Release30|Win32.ActiveCfg = Release30|Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF}.Release30|Win32.Build.0 = Release30|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Debug|Win32.ActiveCfg = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Debug|Win32.Build.0 = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Debug30|Win32.ActiveCfg = Debug30|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Debug30|Win32.Build.0 = Debug30|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Release|Win32.ActiveCfg = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Release|Win32.Build.0 = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Release30|Win32.ActiveCfg = Release30|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB5}.Release30|Win32.Build.0 = Release30|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Debug|Win32.ActiveCfg = Debug|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Debug|Win32.Build.0 = Debug|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Debug30|Win32.ActiveCfg = Debug30|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Debug30|Win32.Build.0 = Debug30|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Release|Win32.ActiveCfg = Release|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Release|Win32.Build.0 = Release|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Release30|Win32.ActiveCfg = Release30|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA}.Release30|Win32.Build.0 = Release30|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Debug|Win32.ActiveCfg = Debug|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Debug|Win32.Build.0 = Debug|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Debug30|Win32.ActiveCfg = Debug30|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Debug30|Win32.Build.0 = Debug30|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Release|Win32.ActiveCfg = Release|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Release|Win32.Build.0 = Release|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Release30|Win32.ActiveCfg = Release30|Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7}.Release30|Win32.Build.0 = Release30|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Debug|Win32.ActiveCfg = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Debug|Win32.Build.0 = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Debug30|Win32.ActiveCfg = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Debug30|Win32.Build.0 = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Release|Win32.ActiveCfg = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Release|Win32.Build.0 = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Release30|Win32.ActiveCfg = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6}.Release30|Win32.Build.0 = Release|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Debug|Win32.ActiveCfg = Debug|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Debug|Win32.Build.0 = Debug|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Debug30|Win32.ActiveCfg = Debug30|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Debug30|Win32.Build.0 = Debug30|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Release|Win32.ActiveCfg = Release|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Release|Win32.Build.0 = Release|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Release30|Win32.ActiveCfg = Release30|Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6}.Release30|Win32.Build.0 = Release30|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Debug|Win32.ActiveCfg = Debug|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Debug|Win32.Build.0 = Debug|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Debug30|Win32.ActiveCfg = Debug|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Debug30|Win32.Build.0 = Debug|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Release|Win32.ActiveCfg = Release|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Release|Win32.Build.0 = Release|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Release30|Win32.ActiveCfg = Release|Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1}.Release30|Win32.Build.0 = Release|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Debug|Win32.ActiveCfg = Debug|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Debug|Win32.Build.0 = Debug|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Debug30|Win32.ActiveCfg = Debug30|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Debug30|Win32.Build.0 = Debug30|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Release|Win32.ActiveCfg = Release|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Release|Win32.Build.0 = Release|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Release30|Win32.ActiveCfg = Release30|Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F}.Release30|Win32.Build.0 = Release30|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Debug|Win32.ActiveCfg = Debug|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Debug|Win32.Build.0 = Debug|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Debug30|Win32.ActiveCfg = Debug30|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Debug30|Win32.Build.0 = Debug30|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Release|Win32.ActiveCfg = Release|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Release|Win32.Build.0 = Release|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Release30|Win32.ActiveCfg = Release30|Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA}.Release30|Win32.Build.0 = Release30|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Debug|Win32.ActiveCfg = Debug|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Debug|Win32.Build.0 = Debug|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Debug30|Win32.ActiveCfg = Debug30|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Debug30|Win32.Build.0 = Debug30|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Release|Win32.ActiveCfg = Release|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Release|Win32.Build.0 = Release|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Release30|Win32.ActiveCfg = Release30|Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356}.Release30|Win32.Build.0 = Release30|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Debug|Win32.ActiveCfg = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Debug|Win32.Build.0 = Debug|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Debug30|Win32.ActiveCfg = Debug30|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Debug30|Win32.Build.0 = Debug30|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Release|Win32.ActiveCfg = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Release|Win32.Build.0 = Release|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Release30|Win32.ActiveCfg = Release30|Win32 {FF560C5D-4369-4DEF-B2EC-6F507D994DB6}.Release30|Win32.Build.0 = Release30|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Debug|Win32.ActiveCfg = Debug|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Debug|Win32.Build.0 = Debug|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Debug30|Win32.ActiveCfg = Debug30|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Debug30|Win32.Build.0 = Debug30|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Release|Win32.ActiveCfg = Release|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Release|Win32.Build.0 = Release|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Release30|Win32.ActiveCfg = Release30|Win32 {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1}.Release30|Win32.Build.0 = Release30|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMule/0000755000175000017500000000000012611472361023122 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMule/aMule.vcxproj0000644000175000017500000010717012611472361025610 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {5FCAFC30-922E-446F-8DF5-D71819ABC2FE} aMule Win32Proj Application Unicode true v120 Application Unicode v120 Application Unicode true v120 Application Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP /Zm120 %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;ENABLE_NLS;ENABLE_IP2COUNTRY;HAVE_CONFIG_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;wxUSE_NO_MANIFEST=1;VER_FILEDESCRIPTION_STR=\"All-Platform P2P Client Based on eMule\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP /Zm120 %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;ENABLE_NLS;ENABLE_IP2COUNTRY;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;wxUSE_NO_MANIFEST=1;VER_FILEDESCRIPTION_STR=\"All-Platform P2P Client Based on eMule\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";wxUSE_NO_MANIFEST=1;%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 /MP /Zm150 %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;ENABLE_NLS;ENABLE_IP2COUNTRY;HAVE_CONFIG_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"All-Platform P2P Client Based on eMule\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP /Zm120 %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;ENABLE_NLS;ENABLE_IP2COUNTRY;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"All-Platform P2P Client Based on eMule\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 4018 4018 4018 4018 4065;%(DisableSpecificWarnings) 4065;%(DisableSpecificWarnings) 4065;%(DisableSpecificWarnings) 4065;%(DisableSpecificWarnings) Create Create Create Create 4003;%(DisableSpecificWarnings) 4003;%(DisableSpecificWarnings) 4003;%(DisableSpecificWarnings) 4003;%(DisableSpecificWarnings) {8ca0f896-7689-4ce0-9d16-99c9c83847e1} false {293e6133-239a-4ed4-838e-9182b07c6b35} false {5a9ec6a5-68a3-43c8-960e-f7f03b16f1d1} false {16c7a051-9097-41a5-ba26-fec1ea1f16ef} false {5a9ec6a5-68a3-43c8-960e-f7f99b16f1d1} true false false true false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMule/aMule.vcxproj.filters0000644000175000017500000010442412611472361027256 0ustar morphmorph {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {cc8a6595-b6d5-4afe-8d44-0e3fed36e009} {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {ac85d3b7-e7e5-48af-ba9c-3bbd46cebb91} {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files KAD Header Files Header Files Resource Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMuleCMD/0000755000175000017500000000000012611472361023446 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMuleCMD/aMuleCMD.vcxproj0000644000175000017500000003456312611472361026465 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09472BA} aMuleCMD Win32Proj Application Unicode true v120 Application Unicode v120 Application Unicode true v120 Application Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Text Client\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Text Client\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Text Client\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Text Client\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 {293e6133-239a-4ed4-838e-9182b07c6b35} false {5a9ec6a5-68a3-43c8-960e-f7f03b16f1d1} false {5a9ec6a5-68a3-43c8-960e-f7f99b16f1d1} true false false true false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMuleCMD/aMuleCMD.vcxproj.filters0000644000175000017500000000402312611472361030120 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMuleD/0000755000175000017500000000000012611472361023226 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMuleD/aMuleD.vcxproj0000644000175000017500000005472612611472361026030 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {10E42FDA-AA34-4F8E-BC7C-B51EACA4E75F} aMuleD Win32Proj Application Unicode true v120 Application Unicode v120 Application Unicode true v120 Application Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP /Zm120 %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;AMULE_DAEMON;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Daemon\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP /Zm120 %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;AMULE_DAEMON;%(PreprocessorDefinitions) MultiThreaded Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Daemon\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 /MP /Zm120 %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;AMULE_DAEMON;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Daemon\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP /Zm120 %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;AMULE_DAEMON;%(PreprocessorDefinitions) MultiThreaded Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Daemon\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 4018 4018 4018 4018 4065;%(DisableSpecificWarnings) 4065;%(DisableSpecificWarnings) 4065;%(DisableSpecificWarnings) 4065;%(DisableSpecificWarnings) Create Create Create Create 4003;%(DisableSpecificWarnings) 4003;%(DisableSpecificWarnings) 4003;%(DisableSpecificWarnings) 4003;%(DisableSpecificWarnings) {293e6133-239a-4ed4-838e-9182b07c6b35} false {5a9ec6a5-68a3-43c8-960e-f7f03b16f1d1} false {5a9ec6a5-68a3-43c8-960e-f7f99b16f1d1} true false false true false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMuleD/aMuleD.vcxproj.filters0000644000175000017500000002751012611472361027466 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav {a595d5a5-1d4c-4c56-ba8f-b0ac15403f03} Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files KAD Source Files Header Files Header Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMuleGUI/0000755000175000017500000000000012611472361023467 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMuleGUI/aMuleGUI.vcxproj0000644000175000017500000006530412611472361026524 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {9E601FE7-C3E1-48A8-8EAB-A1EEB501FBC7} aMuleGUI Win32Proj Application Unicode true v120 Application Unicode v120 Application Unicode true v120 Application Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP /Zm120 %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;CLIENT_GUI;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;wxUSE_NO_MANIFEST=1;VER_FILEDESCRIPTION_STR=\"aMule Remote GUI\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP /Zm120 %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;CLIENT_GUI;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) MultiThreaded Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;wxUSE_NO_MANIFEST=1;VER_FILEDESCRIPTION_STR=\"aMule Remote GUI\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 /MP /Zm120 %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;CLIENT_GUI;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Remote GUI\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP /Zm120 %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;CLIENT_GUI;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) MultiThreaded Use $(SolutionDir)PCH.h Level3 ProgramDatabase $(SolutionDir)PCH.h;%(ForcedIncludeFiles) _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Remote GUI\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 Create Create Create Create {8ca0f896-7689-4ce0-9d16-99c9c83847e1} false {293e6133-239a-4ed4-838e-9182b07c6b35} false {5a9ec6a5-68a3-43c8-960e-f7f03b16f1d1} false {16c7a051-9097-41a5-ba26-fec1ea1f16ef} false {5a9ec6a5-68a3-43c8-960e-f7f99b16f1d1} true false false true false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMuleGUI/aMuleGUI.vcxproj.filters0000644000175000017500000005151312611472361030170 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {26a80d8b-0652-4504-9031-910968275e24} Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMuleWeb/0000755000175000017500000000000012611472361023560 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMuleWeb/aMuleWeb.vcxproj0000644000175000017500000003771212611472361026710 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {EC3DE6B0-0C01-4D64-928A-4ADDB09473BA} aMuleWeb Win32Proj Application Unicode true v120 Application Unicode v120 Application Unicode true v120 Application Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Web Server\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Web Server\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;$(SolutionDir)..\..\..\..\wxWidgets30\src\png;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;WITH_LIBPNG;HAVE_CONFIG_H;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Web Server\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;$(SolutionDir)..\..\..\..\wxWidgets30\src\png;%(AdditionalIncludeDirectories) _CONSOLE;wxUSE_GUI=0;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;WITH_LIBPNG;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"aMule Web Server\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) ws2_32.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 4018;4244;4996 4018;4244;4996 4018;4244;4996 4018;4244;4996 {293e6133-239a-4ed4-838e-9182b07c6b35} false {5a9ec6a5-68a3-43c8-960e-f7f03b16f1d1} false {5a9ec6a5-68a3-43c8-960e-f7f99b16f1d1} true false false true false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/aMuleWeb/aMuleWeb.vcxproj.filters0000644000175000017500000000720712611472361030353 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/ed2k/0000755000175000017500000000000012611472361022704 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/ed2k/ed2k.vcxproj0000644000175000017500000001573112611472361025155 0ustar morphmorph Debug Win32 Release Win32 {FF560C5D-4369-4DEF-B2EC-6F507D554DB6} ed2k Win32Proj Application Unicode true v120 Application Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP %(AdditionalOptions) Disabled %(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_STD_STRING;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"ED2K Links Handler\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) shlwapi.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full %(AdditionalIncludeDirectories) USE_STD_STRING;_SCL_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"ED2K Links Handler\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) shlwapi.lib;%(AdditionalDependencies) true Console true true false MachineX86 {293e6133-239a-4ed4-838e-9182b07c6b35} false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/ed2k/ed2k.vcxproj.filters0000644000175000017500000000324512611472361026621 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Header Files Header Files Header Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/fileview/0000755000175000017500000000000012611472361023671 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/fileview/fileview.vcxproj0000644000175000017500000003062712611472361027130 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {02A90868-EC36-4EA2-8D46-3B0BB33AEAC6} fileview Win32Proj Application Unicode true v120 Application Unicode v120 Application Unicode true v120 Application Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_SCL_SECURE_NO_WARNINGS;wxUSE_GUI=0;USE_WX_EXTENSIONS;MULEUNIT;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\..\;%(AdditionalIncludeDirectories) _SCL_SECURE_NO_WARNINGS;wxUSE_GUI=0;USE_WX_EXTENSIONS;MULEUNIT;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_SCL_SECURE_NO_WARNINGS;wxUSE_GUI=0;USE_WX_EXTENSIONS;MULEUNIT;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\..\;%(AdditionalIncludeDirectories) _SCL_SECURE_NO_WARNINGS;wxUSE_GUI=0;USE_WX_EXTENSIONS;MULEUNIT;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Console true true false MachineX86 4101 4101 4101 4101 {293e6133-239a-4ed4-838e-9182b07c6b35} false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/fileview/fileview.vcxproj.filters0000644000175000017500000000441712611472361030575 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/fixwxGUIDs.pl0000644000175000017500000000263412611472361024422 0ustar morphmorph#!perl # # This script is only useful if your source is in a SVN working copy! # # Problem: whenever you add a new wxWidgets version and convert the VC6 projects, # they are converted to VC8 XML .vcproj . In the process, a new project GUID is created. # When you then open your solution, all GUIDs are updated. # # To avoid this: # 1) Open and close wx.dsw with VS9 to convert to wx.sln (VS10 can't open them) # 2) Open and close wx.sln, creating the .vcxproj # 3) Run this script. It will replace the new GUIDs in the wx vcxproj by the old ones from the aMule-MSVC10E-ExtLibs.sln . # 4) Now load aMule-MSVCE-ExtLibs.sln. It won't be changed anymore. # use strict; open(sln, 'aMule-MSVC10E-ExtLibs.sln') or die $!; #Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wxregex", "..\..\..\..\wxWidgets\build\msw\wx_wxregex.vcxproj", "{A960D0AD-C20E-4FD6-B477-6509232C7D94}" # {B499DD81-BCA2-42D8-986C-E0FBAAC25B13} while () { if (/^Project.*, \"(.+)\", \"(.+)\"/) { my ($path, $guid) = ($1, $2); next unless $path =~ /\\wxWidgets/; $path =~ s-\\-/-g; print "fix $path\n"; open(prj, $path) or die "$path $!"; my @content = ; close prj; foreach (@content) { if (//) { $_ = " $guid\n"; print $_; last; } } open(prj, ">$path") or die; print prj @content; close prj; } } amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/0000755000175000017500000000000012611472361023010 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libGeoIP/0000755000175000017500000000000012611472361024442 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libGeoIP/GeoIP.cmd0000644000175000017500000000054012611472361026071 0ustar morphmorph@echo off if exist geoip.h goto h_exist echo creating GeoIP.h echo #undef ENABLE_IP2COUNTRY > GeoIP.h echo typedef void GeoIP; >> GeoIP.h :h_exist if exist geoip.c goto c_exist echo creating GeoIP.c echo // Dummy > GeoIP.c :c_exist if exist geoip_x.c goto finish echo creating GeoIP_X.c echo #include "GeoIP_X.hpp" >> GeoIP_X.c :finish amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libGeoIP/GeoIP_X.hpp0000644000175000017500000000043412611472361026406 0ustar morphmorph#pragma warning(disable:4996) #define ssize_t int #include #include char PACKAGE_VERSION[] = ""; ssize_t pread(int fildes, void *buf, size_t nbyte, size_t offset) { lseek(fildes, offset, SEEK_SET); return read(fildes, buf, nbyte); } #include "GeoIP.c" amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libGeoIP/libGeoIP.vcxproj0000644000175000017500000001224712611472361027517 0ustar morphmorph Debug Win32 Release Win32 {8CA0F896-7689-4CE0-9D16-99C9C83847E1} libGeoIP Win32Proj StaticLibrary MultiByte true v120 StaticLibrary Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ /MP %(AdditionalOptions) Disabled %(AdditionalIncludeDirectories) WIN32;_DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full %(AdditionalIncludeDirectories) WIN32;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase create dummy files GeoIP.cmd GeoIP_X.c;%(Outputs) create dummy files GeoIP.cmd GeoIP_X.c;%(Outputs) ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libGeoIP/libGeoIP.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libGeoIP/libGeoIP.vcxproj.filt0000644000175000017500000000231412611472361030446 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Header Files Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libGeoIP/readme.txt0000644000175000017500000000105712611472361026443 0ustar morphmorphHow to build aMule with GeoIP support The MaxMind GeoIP library can detect the country an IP adress comes from. aMule uses this information to display a little country flag for each source or ed2k server. Since this is an external library it is disabled by default. This is how to enable it: Download the free GeoIP C library from http://www.maxmind.com/download/geoip/api/c/GeoIP-1.4.6.tar.gz From the folder libGeoIP take GeoIP.h and GeoIP.c and put them into "MSVC Solution\libs\libGeoIP" (removing the dummy files there). Rebuild aMule. That's it. :-) amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libext/0000755000175000017500000000000012611472361024277 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libext/buildlibext.vcxproj0000644000175000017500000002352012611472361030225 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {F8C2C7F5-CBF1-46C1-81C9-22AD406B52C6} MSVCExpressExtLibs Utility MultiByte true v120 Utility MultiByte v120 Utility MultiByte true v120 Utility MultiByte v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ join external libs if not exist ..\..\$(Configuration) mkdir ..\..\$(Configuration) lib /LTCG /out:..\..\$(Configuration)\libext.lib "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_media.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxjpegd.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_adv.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxregexud.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_richtext.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxzlibd.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28ud.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_qa.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28ud_xml.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28ud_odbc.lib" "..\..\..\..\..\..\cryptopp\win32\output\debug\cryptlib.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxtiffd.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28ud_net.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_core.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_gl.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxpngd.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_dbgrid.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_xrc.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxexpatd.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_html.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28ud_aui.lib" join external libs if not exist ..\..\$(Configuration) mkdir ..\..\$(Configuration) lib /LTCG /out:..\..\$(Configuration)\libext.lib "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_media.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxjpeg.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_adv.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxregexu.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_richtext.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxzlib.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28u.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_qa.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28u_xml.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28u_odbc.lib" "..\..\..\..\..\..\cryptopp\win32\output\release\cryptlib.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxtiff.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxbase28u_net.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_core.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_gl.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxpng.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_dbgrid.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_xrc.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxexpat.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_html.lib" "..\..\..\..\..\..\wxwidgets\lib\vc_lib\wxmsw28u_aui.lib" join external libs if not exist ..\..\$(Configuration) mkdir ..\..\$(Configuration) lib /LTCG /out:..\..\$(Configuration)\libext.lib "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxjpegd.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxzlibd.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxbase30ud.lib" "..\..\..\..\..\..\cryptopp\win32\output\debug\cryptlib.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxtiffd.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxbase30ud_net.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxmsw30ud_core.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxpngd.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxmsw30ud_adv.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxregexud.lib" join external libs if not exist ..\..\$(Configuration) mkdir ..\..\$(Configuration) lib /LTCG /out:..\..\$(Configuration)\libext.lib "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxjpeg.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxzlib.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxbase30u.lib" "..\..\..\..\..\..\cryptopp\win32\output\release\cryptlib.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxtiff.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxbase30u_net.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxmsw30u_core.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxpng.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxmsw30u_adv.lib" "..\..\..\..\..\..\wxWidgets30\lib\vc_lib\wxregexu.lib" ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libext/buildlibext.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libext/buildlibext.vcxproj.fil0000644000175000017500000000165312611472361031001 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmulecommon/0000755000175000017500000000000012611472361025652 5ustar morphmorph././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmulecommon/libmulecommon.vcxprojamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmulecommon/libmulecommon.vc0000644000175000017500000002664112611472361031057 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {293E6133-239A-4ED4-838E-9182B07C6B35} libmulecommon Win32Proj StaticLibrary Unicode true v120 StaticLibrary Unicode v120 StaticLibrary Unicode true v120 StaticLibrary Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\;$(SolutionDir)..\..\..\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase Create config.h cd "$(SolutionDir)..\..\.." "$(SolutionDir)makeconfig.cmd" $(SolutionDir)..\..\..\config.h;%(Outputs) Create config.h cd "$(SolutionDir)..\..\.." "$(SolutionDir)makeconfig.cmd" $(SolutionDir)..\..\..\config.h;%(Outputs) Create config.h cd "$(SolutionDir)..\..\.." "$(SolutionDir)makeconfig.cmd" $(SolutionDir)..\..\..\config.h;%(Outputs) Create config.h cd "$(SolutionDir)..\..\.." "$(SolutionDir)makeconfig.cmd" $(SolutionDir)..\..\..\config.h;%(Outputs) ././@LongLink0000644000000000000000000000016200000000000011602 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmulecommon/libmulecommon.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmulecommon/libmulecommon.vc0000644000175000017500000000576312611472361031061 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmuleec/0000755000175000017500000000000012611472361024751 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmuleec/libmuleec.vcxproj0000644000175000017500000002524312611472361030335 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {5A9EC6A5-68A3-43C8-960E-F7F03B16F1D1} libmuleec Win32Proj StaticLibrary Unicode true v120 StaticLibrary Unicode v120 StaticLibrary Unicode true v120 StaticLibrary Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase true /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase true /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase true /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase true {293e6133-239a-4ed4-838e-9182b07c6b35} false ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmuleec/libmuleec.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmuleec/libmuleec.vcxproj.fi0000644000175000017500000000552312611472361030731 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmuleexternalwxlistctrl/0000755000175000017500000000000012611472361030344 5ustar morphmorph././@LongLink0000644000000000000000000000020200000000000011575 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmuleexternalwxlistctrl/libmuleexternalwxlistctrl.vcxprojamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmuleexternalwxlistctrl/libm0000644000175000017500000002077412611472361031224 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {16C7A051-9097-41A5-BA26-FEC1EA1F16EF} libmuleexternalwxlistctrl Win32Proj StaticLibrary Unicode true v120 StaticLibrary Unicode v120 StaticLibrary Unicode true v120 StaticLibrary Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase ././@LongLink0000644000000000000000000000021200000000000011576 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmuleexternalwxlistctrl/libmuleexternalwxlistctrl.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libmuleexternalwxlistctrl/libm0000644000175000017500000000216412611472361031215 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libsocket/0000755000175000017500000000000012611472361024767 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libsocket/libsocket.vcxproj0000644000175000017500000002503512611472361030370 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 true true true true true true true true {293e6133-239a-4ed4-838e-9182b07c6b35} true false false false false {5A9EC6A5-68A3-43C8-960E-F7F99B16F1D1} libmuleec Win32Proj StaticLibrary Unicode true v120 StaticLibrary Unicode v120 StaticLibrary Unicode true v120 StaticLibrary Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ $(SolutionDir)$(Configuration)\ $(Configuration)\ /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\boost;$(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\boost;$(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\boost;$(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;_LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) Async EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\boost;$(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib\;%(AdditionalIncludeDirectories) _LIB;USE_WX_EXTENSIONS;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libsocket/libsocket.vcxproj.filtersamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/libs/libsocket/libsocket.vcxproj.fi0000644000175000017500000000250012611472361030755 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A31D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-6251BE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83B1121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Header Files amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/makeconfig.cmd0000644000175000017500000000246512611472361024656 0ustar morphmorph@echo off echo #ifndef CONFIG_H>config.h echo #define CONFIG_H>>config.h rem Tarballs have a .svn-revision for identification if not exist .svn-revision goto svn1 FOR /F %%i IN (.svn-revision) DO set svnv=%%i goto :foundsvnversion :svn1 rem Try to get version from a SVN working copy, svnversion must be in path set svnv=exported call svnversion >nul 2>&1 if errorlevel 1 goto nosvnversion FOR /F %%i IN ('svnversion src') DO set svnv=%%i if %svnv%==exported goto nosvnversion if %svnv%==Unversioned goto nosvnversion :foundsvnversion echo SVNDATE is %svnv% echo #define SVNDATE "rev. %svnv%">>config.h echo #define VERSION "SVN">>config.h echo #define __PRERELEASE__>>config.h goto boost1 :nosvnversion echo release build, version from ^ echo #include ^ >>config.h :boost1 if not exist ..\boost\boost\asio.hpp goto boost2 if not exist ..\boost\libs\system\src\error_code.cpp goto boost2 echo Boost detected, using Asio sockets echo #define ASIO_SOCKETS>>config.h echo #define HAVE_BOOST_SOURCES>>config.h goto finish :boost2 echo no Boost found, using wx sockets :finish echo #define CRYPTOPP_INCLUDE_PREFIX ../cryptopp>>config.h echo #define PACKAGE "amule">>config.h echo #define HAVE_ERRNO_H>>config.h echo #define HAVE_STRERROR>>config.h echo #endif>>config.h amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/version.rc0000644000175000017500000000256712611472361024104 0ustar morphmorph#include #define HAVE_CONFIG_H #include "../../../src/include/common/ClientVersion.h" #ifdef __PRERELEASE__ #define VER_PRERELEASE VS_FF_PRERELEASE #undef VER_RELEASE #define VER_RELEASE 0 #define VER_PRODUCTVERSION_STR VERSION " " SVNDATE #else #define VER_PRERELEASE 0 #ifndef VER_RELEASE #define VER_RELEASE 1 #endif #define VER_PRODUCTVERSION_STR VERSION #endif #ifdef __DEBUG__ #define VER_DEBUG VS_FF_DEBUG #else #define VER_DEBUG 0 #endif VS_VERSION_INFO VERSIONINFO FILEVERSION VERSION_MJR, VERSION_MIN, VERSION_UPDATE, VER_RELEASE PRODUCTVERSION VERSION_MJR, VERSION_MIN, VERSION_UPDATE, VER_RELEASE FILEFLAGSMASK VS_FFI_FILEFLAGSMASK FILEFLAGS VER_DEBUG | VER_PRERELEASE FILEOS VOS__WINDOWS32 FILETYPE VFT_APP FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "Comments", "http://www.amule.org/" VALUE "FileDescription", VER_FILEDESCRIPTION_STR VALUE "FileVersion", VER_PRODUCTVERSION_STR VALUE "InternalName", VER_INTERNALNAME_STR VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR VALUE "ProductName", "aMule" VALUE "ProductVersion", VER_PRODUCTVERSION_STR VALUE "LegalCopyright", "aMule Team ( admin@amule.org )" VALUE "CompanyName", "http://www.amule.org/" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x0409, 1200 END END amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/wxCas/0000755000175000017500000000000012611472361023144 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/wxCas/wxCas.vcxproj0000644000175000017500000003614112611472361025653 0ustar morphmorph Debug30 Win32 Debug Win32 Release30 Win32 Release Win32 {5FCAFC30-922E-446F-8DF5-D71819AB6356} wxCas Win32Proj Application Unicode true v120 Application Unicode v120 Application Unicode true v120 Application Unicode v120 <_ProjectFileVersion>10.0.30319.1 $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false $(SolutionDir)$(Configuration)\ $(Configuration)\ false /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;wxUSE_NO_MANIFEST=1;VER_FILEDESCRIPTION_STR=\"Graphical aMule Statistics\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..\..\wxWidgets\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;wxUSE_NO_MANIFEST=1;VER_FILEDESCRIPTION_STR=\"Graphical aMule Statistics\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 /MP %(AdditionalOptions) Disabled $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswud;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) _DEBUG;__DEBUG__;USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"Graphical aMule Statistics\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows false MachineX86 /MP %(AdditionalOptions) Full $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..\..\wxWidgets30\lib\vc_lib\mswu;$(SolutionDir)..\..\..\src\libs;$(SolutionDir)..\..\..\src;$(SolutionDir)..\..\..\src\include;$(SolutionDir)..\..\..\;$(SolutionDir)..\..\..\..\wxWidgets30\src\zlib;$(SolutionDir)libs\libGeoIP;%(AdditionalIncludeDirectories) USE_WX_EXTENSIONS;CONVAMULE_CPP;_CRT_SECURE_NO_WARNINGS;HAVE_CONFIG_H;ENABLE_NLS;ENABLE_IP2COUNTRY;%(PreprocessorDefinitions) MultiThreaded Level3 ProgramDatabase _UNICODE;UNICODE;VER_FILEDESCRIPTION_STR=\"Graphical aMule Statistics\";VER_INTERNALNAME_STR=\"$(ProjectName)\";VER_ORIGINALFILENAME_STR=\"$(TargetFileName)\";%(PreprocessorDefinitions) $(SolutionDir)..\..\..\..\wxWidgets30\include;$(SolutionDir)..\..\..;$(SolutionDir)..\..\..\src\include;%(AdditionalIncludeDirectories) comctl32.lib;ws2_32.lib;rpcrt4.lib;shlwapi.lib;$(OutDir)libext.lib;%(AdditionalDependencies) true Windows true true false MachineX86 {293e6133-239a-4ed4-838e-9182b07c6b35} false amule_2.3.1+git20151120.0023527bc2.orig/platforms/Windows/MSVC12/wxCas/wxCas.vcxproj.filters0000644000175000017500000000615212611472361027321 0ustar morphmorph {4FC737F1-C7A5-4376-A066-2A32D752A2FF} cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hpp;hxx;hm;inl;inc;xsd {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav Source Files Source Files Source Files Source Files Source Files Source Files Source Files Source Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Header Files Resource Files Resource Files amule_2.3.1+git20151120.0023527bc2.orig/po/0000755000175000017500000000000012611472361016121 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/po/LINGUAS0000644000175000017500000000024612611472361017150 0ustar morphmorph# Set of available languages. ar ast bg ca cs da de el en_GB es et_EE eu fi fr gl he hr hu it it_CH ja ko_KR lt nl nn pl pt_BR pt_PT ro ru sl sq sv tr uk zh_CN zh_TW amule_2.3.1+git20151120.0023527bc2.orig/po/Makevars0000644000175000017500000000213312611472361017614 0ustar morphmorph# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=wxTRANSLATE --keyword=wxPLURAL:1,2 # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Free Software Foundation, Inc. # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = amule_2.3.1+git20151120.0023527bc2.orig/po/POTFILES.in0000644000175000017500000000417412611472361017704 0ustar morphmorphsrc/AddFriend.cpp src/amuleAppCommon.cpp src/amule.cpp src/amuled.cpp src/amuleDlg.cpp src/amule-gui.cpp src/amule-remote-gui.cpp src/BaseClient.cpp src/CanceledFileList.cpp src/CaptchaDialog.cpp src/CatDialog.cpp src/ChatSelector.cpp src/ChatWnd.cpp src/ClientCreditsList.cpp src/ClientDetailDialog.cpp src/ClientRef.cpp src/ClientTCPSocket.cpp src/CommentDialog.cpp src/CommentDialogLst.cpp src/CorruptionBlackBox.cpp src/DataToText.cpp src/DownloadListCtrl.cpp src/DownloadQueue.cpp src/ExternalConn.cpp src/ExternalConnector.cpp src/FileDetailDialog.cpp src/FileDetailListCtrl.cpp src/FriendList.cpp src/FriendListCtrl.cpp src/GenericClientListCtrl.cpp src/HTTPDownload.cpp src/IP2Country.cpp src/IPFilter.cpp src/KadDlg.cpp src/kademlia/kademlia/SearchManager.cpp src/kademlia/routing/RoutingZone.cpp src/KnownFile.cpp src/KnownFileList.cpp src/libs/common/Format.cpp src/libs/ec/cpp/ECSpecialTags.cpp src/libs/ec/cpp/RemoteConnect.cpp src/LibSocketAsio.cpp src/ListenSocket.cpp src/Logger.cpp src/MuleNotebook.cpp src/MuleTextCtrl.cpp src/MuleTrayIcon.cpp src/muuli_wdr.cpp src/OScopeCtrl.cpp src/OtherFunctions.cpp src/PartFileConvert.cpp src/PartFileConvertDlg.cpp src/PartFile.cpp src/Preferences.cpp src/PrefsUnifiedDlg.cpp src/SearchDlg.cpp src/SearchList.cpp src/SearchListCtrl.cpp src/ServerConnect.cpp src/Server.cpp src/ServerList.cpp src/ServerListCtrl.cpp src/ServerSocket.cpp src/ServerWnd.cpp src/SharedFileList.cpp src/SharedFilePeersListCtrl.cpp src/SharedFilesCtrl.cpp src/SourceListCtrl.cpp src/Statistics.cpp src/StatisticsDlg.cpp src/StatTree.cpp src/TerminationProcess.cpp src/TextClient.cpp src/TextClient.h src/ThreadTasks.cpp src/TransferWnd.cpp src/UploadClient.cpp src/UploadQueue.cpp src/UserEvents.cpp src/UserEvents.h src/utils/aLinkCreator/src/alcc.cpp src/utils/aLinkCreator/src/alc.cpp src/utils/aLinkCreator/src/alcframe.cpp src/utils/aLinkCreator/src/ed2khash.cpp src/utils/aLinkCreator/src/md4.cpp src/utils/wxCas/src/linuxmon.cpp src/utils/wxCas/src/onlinesig.cpp src/utils/wxCas/src/wxcas.cpp src/utils/wxCas/src/wxcasframe.cpp src/utils/wxCas/src/wxcasprefs.cpp src/webserver/src/WebInterface.cpp src/webserver/src/WebServer.cpp amule_2.3.1+git20151120.0023527bc2.orig/po/Rules-quot0000644000175000017500000000323112611472361020123 0ustar morphmorph# Special Makefile rules for English message catalogs with quotation marks. DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot .SUFFIXES: .insert-header .po-update-en en@quot.po-update: en@quot.po-update-en en@boldquot.po-update: en@boldquot.po-update-en .insert-header.po-update-en: @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ tmpdir=`pwd`; \ echo "$$lang:"; \ ll=`echo $$lang | sed -e 's/@.*//'`; \ LC_ALL=C; export LC_ALL; \ cd $(srcdir); \ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ exit 1; \ fi; \ fi; \ else \ echo "creation of $$lang.po failed!" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ fi en@quot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header en@boldquot.insert-header: insert-header.sin sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header mostlyclean: mostlyclean-quot mostlyclean-quot: rm -f *.insert-header amule_2.3.1+git20151120.0023527bc2.orig/po/amule.pot0000644000175000017500000043651512611472361017766 0ustar morphmorph# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the aMule package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: aMule VERSION\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: LL\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" #: src/amule.cpp:581 msgid "Server list download" msgstr "" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "" #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "" #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "" #: src/amule.cpp:1888 msgid "Kad started." msgstr "" #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "" #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "" #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "" #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr "" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr "" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" msgstr[1] "" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" msgstr[1] "" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "" #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "" #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "" msgstr[1] "" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "" #: src/DataToText.cpp:62 msgid "Asking" msgstr "" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "" #: src/DataToText.cpp:73 msgid "Banned" msgstr "" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "" #: src/DataToText.cpp:132 msgid "Passive" msgstr "" #: src/DataToText.cpp:133 msgid "Link" msgstr "" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "" #: src/DataToText.cpp:146 msgid "In progress" msgstr "" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "" msgstr[1] "" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "" #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "" #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "" #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "" #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "" #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "" #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "" #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "" #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "" #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "" #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "" #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "" #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "" #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "" #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "" #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "" #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "" #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "" #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "" #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "" #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "" #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "" #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "" #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "" #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "" #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "" #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "" #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "" #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "" #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "" #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "" #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "" msgstr[1] "" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "" #: src/LibSocketAsio.cpp:1260 #, c-format msgid "Asio thread %d started" msgstr "" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "" #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "" #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "" #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "" #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "" #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "" #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "" #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "" #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "" #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "" #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "" #: src/muuli_wdr.cpp:3169 msgid "Only to Logfile" msgstr "" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "" #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "" msgstr[1] "" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "" msgstr[1] "" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "" #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "" #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1050 #, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "" #: src/Preferences.cpp:632 msgid "System default" msgstr "" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "" #: src/Preferences.cpp:636 msgid "Basque" msgstr "" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "" #: src/Preferences.cpp:642 msgid "Czech" msgstr "" #: src/Preferences.cpp:643 msgid "Danish" msgstr "" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "" #: src/Preferences.cpp:648 msgid "French" msgstr "" #: src/Preferences.cpp:649 msgid "Galician" msgstr "" #: src/Preferences.cpp:650 msgid "German" msgstr "" #: src/Preferences.cpp:651 msgid "Greek" msgstr "" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "" #: src/Preferences.cpp:654 msgid "Italian" msgstr "" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "" #: src/Preferences.cpp:657 msgid "Korean" msgstr "" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "" #: src/Preferences.cpp:660 msgid "Polish" msgstr "" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "" #: src/Preferences.cpp:664 msgid "Russian" msgstr "" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:619 msgid "- Protocol obfuscation support changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "" #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "" #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "" msgstr[1] "" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "" #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "" msgstr[1] "" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "" msgstr[1] "" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "" #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "" msgstr[1] "" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "" #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "" #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "" #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "" #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "" msgstr[1] "" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "" msgstr[1] "" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "" #: src/SharedFilesCtrl.cpp:170 msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:790 msgid "Clients" msgstr "" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "" #: src/StatTree.cpp:550 msgid "Not available" msgstr "" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "" #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "" #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "" #: src/TextClient.cpp:553 #, c-format msgid "Download File: %lu %s\n" msgstr "" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "" #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "" #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "" #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "" #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "" #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "" #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "" #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "" #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "" #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "" #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "" #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "" #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "" #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "" #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "" #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "" #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "" #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "" #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "" #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "" #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "" #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "" #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "" #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "" #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "" #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "" #: src/TextClient.cpp:900 src/TextClient.cpp:902 msgid "The given value must be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "" #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "" #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "" #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "" #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "" #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "" #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "" #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "" #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "" #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "" #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "" #: src/TextClient.cpp:938 msgid "Resume download." msgstr "" #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "" #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "" #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "" #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "" #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "" #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "" #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "" #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "" #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "" #: src/TextClient.cpp:955 msgid "Show log." msgstr "" #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "" #: src/TextClient.cpp:959 msgid "Reset log." msgstr "" #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" #: src/TextClient.h:59 msgid "aMule text client" msgstr "" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "" #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "" #: src/UserEvents.h:60 msgid "Download completed" msgstr "" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "" #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "" #: src/UserEvents.h:85 msgid "Message sender." msgstr "" #: src/UserEvents.h:88 msgid "Out of space" msgstr "" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "" #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "" #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "" amule_2.3.1+git20151120.0023527bc2.orig/po/ar.po0000644000175000017500000056061012611472361017073 0ustar morphmorph# Translation of amule interface to arabic # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. # saleh alhathal , 2004. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2004-03-28 22:15+0300\n" "Last-Translator: saleh alhathal \n" "Language-Team: \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "أضف صديق" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "يجب ان تضيف عنوان شبكي ومنفذ صحيحان!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "فشل لفتح %s (%s)" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "فشل" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "تاكيد الخروج" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "قبل إتصال خارجي جديد\n" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "معلومات" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" #: src/amule.cpp:581 msgid "Server list download" msgstr "" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "ﻻ نضمن انه خالي من اﻻخطاء, قد يتسبب باعطال\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" #: src/amule.cpp:1116 #, fuzzy msgid "Server hostname notified" msgstr "إسم الخادم" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "" #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "" #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "" #: src/amule.cpp:1888 msgid "Kad started." msgstr "" #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "" #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "" #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "يتم الإتصال" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "" #: src/amuleDlg.cpp:719 #, fuzzy msgid "Kad: Connected" msgstr "متصل" #: src/amuleDlg.cpp:724 #, fuzzy msgid "Kad: Connecting" msgstr "يتم الإتصال" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "إلغاء" #: src/amuleDlg.cpp:775 #, fuzzy msgid "Stop the current connection attempts" msgstr "إيقاف محاولة اﻹتصال الحاليه" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "فصل" #: src/amuleDlg.cpp:781 #, fuzzy msgid "Disconnect from the currently connected networks" msgstr "فصل من المستضيف الحالي" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "إتصال" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "تحميل: %.1f(%.1f) | رفع: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "رفع : %.1f |تحميل : %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "هل تريد حقا الخروج من البرنامج؟" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "تاكيد الخروج" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "بحث" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "نافذة البحث" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "تحميل" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "تحميل" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "نافذة ملفات المشاركة" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "رسائل" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "نافذة الرسائل" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "احصائات" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "نافذة اﻻحصائيات" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "اعدادت" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "نافذة اﻹعدادات" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "خطأ قاتل :فشل في تكوين الموَقت" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "خطأ قاتل :فشل في تكوين الموَقت" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "" #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "يتم الإتصال" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 #, fuzzy msgid "Going down" msgstr "تسجيل الدخول اﻻن" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 #, fuzzy msgid "Ready" msgstr "اعد تحميل" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "غير معرف" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" #: src/BaseClient.cpp:1586 #, fuzzy msgid "Searching buddy for lowid connection" msgstr "بانتظار اﻻتصال ..." #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr "" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr "" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "" #: src/BaseClient.cpp:2027 #, fuzzy, c-format msgid "Requested: %s\n" msgstr "طلب:" #: src/BaseClient.cpp:2029 #, fuzzy, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "إحصائية الملفات لهذة الجلسة: قبل %d من %d طلب , %s تم نقله \n" msgstr[1] "إحصائية الملفات لهذة الجلسة: قبل %d من %d طلب , %s تم نقله \n" #: src/BaseClient.cpp:2032 #, fuzzy, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "إحصائية الملفات لهذة الجلسة: قبل %d من %d طلب , %s تم نقله \n" msgstr[1] "إحصائية الملفات لهذة الجلسة: قبل %d من %d طلب , %s تم نقله \n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "طلب ملف غير معروف" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "" #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "فشل غير متوقع اثناء كتابة ملف %s : %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "خطأ أثناء اﻹتصال بي%s (%s:%i): %d" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "صنف" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "اختر مكان الملفات القادمة" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "اضف لي صديق" #: src/ClientCreditsList.cpp:158 #, fuzzy, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "حمل ملف الرصيد, تم التعرف على %u عميل" msgstr[1] "حمل ملف الرصيد, تم التعرف على %u عميل" #: src/ClientCreditsList.cpp:161 #, fuzzy, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] "الرصيد منتهى!" msgstr[1] "الرصيد منتهى!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "" #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "تفاصيل العميل" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "هوية متدنية" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "متصل" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "فصل الإتصال" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "غير مكتمل" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "شخص سيئ" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "تأكيد - صحيح" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "غير متوفر" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "ملف تعليقات" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "اسم مستخدم" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "اسم الملف" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "تقيم" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "ﻻ تعليق " #: src/CommentDialogLst.cpp:105 #, fuzzy, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "ﻻ تعليق " msgstr[1] "ﻻ تعليق " #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "ذاتي منخفض" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "ذاتي " #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "ذاتي عالي" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "متدني جدا" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "متدني" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "عادي" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "مرتفع" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "عالي جدا" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "" #: src/DataToText.cpp:62 msgid "Asking" msgstr "اطلب" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "اتصال من خلال خادم" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "اﻻنتظار ممتلئ" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "في اﻻنتظار" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "تحميل" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "اجزاء غير مطلوبة" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "عدد اتصلات كثيرة" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "" #: src/DataToText.cpp:73 msgid "Banned" msgstr "حظر" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "" #: src/DataToText.cpp:132 msgid "Passive" msgstr "" #: src/DataToText.cpp:133 msgid "Link" msgstr "" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "اكمل" #: src/DataToText.cpp:146 msgid "In progress" msgstr "" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "حجم" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "نقل" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "سرعة" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "تقدم" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "مصدر" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "أولوية" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "حالة" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "الوقت المتبقي" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "اخر اكتمال" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "اخر إستقبال" #: src/DownloadListCtrl.cpp:411 #, fuzzy msgid "Are you sure that you wish to delete the selected file?" msgstr "هل انت متاكد من الغاء زحذف هذه الملفات ؟\n" #: src/DownloadListCtrl.cpp:413 #, fuzzy msgid "Are you sure that you wish to delete the selected files?" msgstr "هل انت متاكد من الغاء زحذف هذه الملفات ؟\n" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "ذاتي" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "%إيقاف" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&إيقاف مؤقت" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "%إكمل" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "إ&نتهاء التنظيف" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "خيرات اضافية" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "مشاهدة" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "اعرض الملف &تفاصيل" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "اعرض كل التعليقات" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&فتح الملف" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "تحميل (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "طلب ملف مشاركة من '%s'" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "ﻻ وجود ﻻجزاء الملفات" #: src/DownloadQueue.cpp:168 #, fuzzy, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "وجد %i جزء ملفات" msgstr[1] "وجد %i جزء ملفات" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "تحميل %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "قمت بمحاولت تحميل الملف مسبقا %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "" #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "" #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "" #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "" #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "" #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "" #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "" #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "" #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "جاري البحث ستم جلب النتيجة في لحظة" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "" #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "" #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "" #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "" #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "" #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "" #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "" #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "" #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "" #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "" #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "" #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "" #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "" #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "" #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "" #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "" #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "" #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "" #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "" #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "" #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "اصدقاء" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "عرض &تفاصيل" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "اضف صديق" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "احذف صديق" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "ارسل &رسالة" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "اعرض الملفات" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "" #: src/FriendListCtrl.cpp:169 #, fuzzy msgid "Are you sure that you wish to delete the selected friend?" msgstr "هل انت متاكد من الغاء زحذف هذه الملفات ؟\n" #: src/FriendListCtrl.cpp:171 #, fuzzy msgid "Are you sure that you wish to delete the selected friends?" msgstr "هل انت متاكد من الغاء زحذف هذه الملفات ؟\n" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "في اﻻنتظار" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "طلب ملف اخر" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "تحميل ينتظر: %i" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "في اﻻنتظار" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "الرفع" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "ﻻ احد" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "ﻻ" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "نعم" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "تحميل ..." #: src/HTTPDownload.cpp:109 #, fuzzy msgid "HTTP download cancelled" msgstr "سعة نطاق التحميل الحقيقية" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "مجموع التحميل" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "أنت غير متصل بي مستظيف!" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "فشل في تحميل قائمة الخادمات من %s" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "فشل في تحميل النموذج %s\n" #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "" #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "" msgstr[1] "" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "غير معروف :%i" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "اكتمال" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "اكتمل" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "ايقاف مؤقت" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "خاطئ" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "انتظار" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "عوامل اﻻتصال الخارجي" #: src/LibSocketAsio.cpp:1260 #, c-format msgid "Asio thread %d started" msgstr "" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "اغلق" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "واضح" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "بلا حدود" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "هوية العميل: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "إسم الخادم: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "عنوان الخادم: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "غير متصل" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "توقيع أثناء الإتصال: ممكن" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "توقيع أثناء الإتصال: معطل" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "فترة التشغيل: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "خروج" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "ارتكب" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "تحميل ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "عدد المستخدمين على الخادم الذي تتصل به..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "مستخدمين: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "رفع :0.0 | تحميل : 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "غير متصل" #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "" #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "بحث" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "نوع" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "اي" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "ارشيف" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "سمعي" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "صور" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "برامج" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "فيديو" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "إمتداد" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "اقل حجم" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "بايت" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "اكبر حجم" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "ابدء" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "التحميل" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "ايجاد المصدر :" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "عام" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "اﻻسم كامل :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "غير متوفر" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "حجم الملف :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "حالة جزء الملف :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "اخر مرة تم اكتمال :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "نقل" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "ايجاد المصدر :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "نقل المصدر :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "احصاء اجزاء الملف :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "متوفر :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "نسبة المصادر :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "محول :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "حجم المكمل :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "معالجة الفاسد بذكاء" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "فقد بسبب فساد :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "أكتسب بواسطة الضغط :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "سيطر" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "نظف" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "طبق" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "جودة الملف" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "غير مقيم" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "غير صحيح / معطوب / مزيف" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "فقير" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "عادل" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "جيد" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "ممتاز" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "انعش" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "تحميل ,رجاء انتظر..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "مطلوب معلومات" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "عنوان IP :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "منفذ :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "معلومت إضافية" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "اسم المستخدم :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "اضف" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "سرعة-التحميل" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "الحالي" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "معدل العمل" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "معدل الجلسة" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "سرعة-الرفع" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "تحميل نشط" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "إتصال نشط (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "رفع نشط" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "شجرة اﻻحصائيات" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "اسم المستخدم:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "مصدر" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "اﻻنتظار ممتلئ" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "مستعار" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "" #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "بدء مصغر" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "تصفح" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "مشغل الفيديو" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "الرفع" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "ربط تلقائي عند بدء التشغيل" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "إعادة اﻹتصال عند الفصل" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "إحذ الخادمات التي ﻻ تعمل بعد" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "أعد المحاولة" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "قائمة" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "إستخدم نظام اﻷولوية" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "إتصال أمن" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "جعل الخادمات المضافة يدويا ذو اولوية عالية" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "أضف الملفات للتحميل بوضع متوقف" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "أضف الملفات للتحميل بوضع ذاتي" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "حاول تحميل القطع اﻻولى واﻻخيرة اوﻻ" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "ارفع" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "أضف ملفات مشاركة جديدة بوضع ذاتي" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "رسم بياني" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "تحيدث كل:5 ثواني" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "خلفية" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "شبكة" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "حمل الحالي" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "معدل تحميل الحالي" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "معدل تحميل الجلسة" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "ارفع الحالي" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "معدل رفع الحالي" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "معدل رفع الجلسة" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "اتصال نشط" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "اختر" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!!تحذير!!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "الحد اﻷعلى للتصالات لكل 5 ثواني" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "اظهر معدل النقل علي العنوان" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "اظهر معدل النقل علي العنوان" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "عوامل اﻻتصال الخارجي" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "اقبل اتصال خارجي" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "زمن تحديث الصفحة (بالثانية)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr " Gzipتمكين ضغط نوع" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "موافق" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "عنوان :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "تعليق :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "مجلد القادم" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "تغير الأولوية للملفات الحديثة :" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "ﻻ تغير" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "معاد" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "" #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "قم بالضغط على هذا الزر لتحديث قائمة الخادمات من العنوان ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "قائمة الخادمات" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "عنوان شبكي :منفذ" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "اضف خادم يدويا )قم بمل الخانة على اليسار اوﻻ)..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "سجل aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "معلومات الخادم" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "الكل" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "تمكين التوقيع الشبكي" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&فتح الملف" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "إنتظار..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "رفع نشط :" #: src/muuli_wdr.cpp:3371 #, fuzzy msgid "Percent of total files" msgstr "مجموع الملفات" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "ملفات مشاركة" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "إختر فلتر العرض" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "رفع نشط" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "منفذ العميل" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "اعد تحميل" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "ارسل" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "ملفات مشاركة" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "تعطيل [%s]" #: src/OtherFunctions.cpp:111 #, fuzzy msgid "byte" msgid_plural "bytes" msgstr[0] "بايت" msgstr[1] "بايت" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "" #: src/OtherFunctions.cpp:142 #, fuzzy msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "بايت" msgstr[1] "بايت" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "ثانية" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "دقيقة" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "الكل" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "الكل ماعدا" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "غير مكتمل" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "إيقاف" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "فيديو" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "أرشيف" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "نص" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "خطأ: فشل في تكوين ملف اجزاء)" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "خطأ: %s (%s) معطوب, غير قادر لتحميل الملف" #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "" #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "فشل لفتح %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "" #: src/PartFile.cpp:904 #, fuzzy msgid "IO failure while saving partfile: " msgstr "خطأ أثناء حفظ ملف اجزاء: %s (%s => %s)" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "" #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "فشل في حفظ ملف part.met.seeds لي %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1050 #, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "" #: src/Preferences.cpp:632 msgid "System default" msgstr "اﻹفتراضية بالنظام" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "العربيه" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "الأستونيه" #: src/Preferences.cpp:636 msgid "Basque" msgstr "" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "البلغاريه" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "" #: src/Preferences.cpp:642 msgid "Czech" msgstr "" #: src/Preferences.cpp:643 msgid "Danish" msgstr "الدانماركيه" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "الهولنديه" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "الأستونيه" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "الفلنديه" #: src/Preferences.cpp:648 msgid "French" msgstr "الفرنسية" #: src/Preferences.cpp:649 msgid "Galician" msgstr "" #: src/Preferences.cpp:650 msgid "German" msgstr "الألمانيه" #: src/Preferences.cpp:651 msgid "Greek" msgstr "" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "الهنغاريه" #: src/Preferences.cpp:654 msgid "Italian" msgstr "الايطاليه" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "" #: src/Preferences.cpp:657 msgid "Korean" msgstr "الكوريه" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "الليتوانيه" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "" #: src/Preferences.cpp:660 msgid "Polish" msgstr "" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "البرتغاليه" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "الأستونيه" #: src/Preferences.cpp:664 msgid "Russian" msgstr "الروسيه" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "الإسبانيه" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "الغة" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "غير متوفر" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "اتصال" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "مجلدات" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "الخادمات" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "ملفات" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "تحكم عن بعد" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "عوامل اﻻتصال الخارجي" #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "عوامل اﻻتصال الخارجي" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "عوامل اﻻتصال الخارجي" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "عوامل اﻻتصال الخارجي" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "أضف هنا عنوان لتحميل ملفات server.met \n" "عنوان واحد فقط لكل سطر" #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, fuzzy, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "تحيدث كل:5 ثواني" msgstr[1] "تحيدث كل:5 ثواني" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1157 #, fuzzy, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "فترة تحديث الإتصال بالخادم %i دقيقة" msgstr[1] "فترة تحديث الإتصال بالخادم %i دقيقة" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "فترة تحديث الإتصال بالخادم :معطل" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "تعطيل" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "تعريف ملف" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "ملف" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "طلب ملف اخر" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "إلغاء" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "فشل في اﻹتصال باي خادم في القائمة القيام بمحاولة اخرى" #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "متصل بي %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "إتصال بي : %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "خطأ قاتل اثناء محاولة اﻹتصال . احتمال أنك غير متصل باﻹنترنت" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "فقد اﻹتصال بي %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) يظهر انه ﻻ يعمل" #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "" #: src/ServerConnect.cpp:392 #, fuzzy, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "اﻹتصال الذاتي بالخادم سيعيد المحاولة بعد %d ثانية" msgstr[1] "اﻹتصال الذاتي بالخادم سيعيد المحاولة بعد %d ثانية" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "اﻹتصال فقد" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "" #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" #: src/ServerList.cpp:174 #, fuzzy, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i خادمات وجدت في server.met" msgstr[1] "%i خادمات وجدت في server.met" #: src/ServerList.cpp:176 #, fuzzy, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d خادم مضاف" msgstr[1] "%d خادم مضاف" #: src/ServerList.cpp:179 #, fuzzy msgid "Error: the file 'server.met' is corrupted: " msgstr "خطأ: ملف server.met معطوب" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "فشل غير متوقع اثناء كتابة ملف %s : %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "" #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "فشل في حفظ server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "عنوان شبكي غير صحيح" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "فشل في تحميل قائمة الخادمات من %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "إسم الخادم" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "منفذ" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "وصف" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "مستخدمين" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "ثابت" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "نسخة" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "خادمات (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "خادم" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "الغاء الخادم" #: src/ServerListCtrl.cpp:420 #, fuzzy msgid "Remove servers" msgstr "الغاء الخادم" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "الغاء كل الخادمات" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "" #: src/ServerListCtrl.cpp:542 #, fuzzy msgid "Are you sure that you wish to delete the selected server?" msgstr "هل انت متاكد من الغاء زحذف هذه الملفات ؟\n" #: src/ServerListCtrl.cpp:544 #, fuzzy msgid "Are you sure that you wish to delete the selected servers?" msgstr "هل انت متاكد من الغاء زحذف هذه الملفات ؟\n" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "عميل جديد هو %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "" #: src/ServerSocket.cpp:532 #, fuzzy, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "تلقي %d خادم جديد" msgstr[1] "تلقي %d خادم جديد" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "" #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "الخادم رفض اخر امر" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "" #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "" #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "" #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "هوية" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "اعلى سرعة اتصال تقديرية" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "يتم الإتصال" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "متصل بي %s (%s:%i)" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "ايجاد المصدر :" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, fuzzy, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "وجد %i ملف مشاركة معرف" msgstr[1] "وجد %i ملف مشاركة معرف" #: src/SharedFileList.cpp:377 #, fuzzy, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "وجد %i ملفات مشاركة معروفة , %i غير معروفة" msgstr[1] "وجد %i ملفات مشاركة معروفة , %i غير معروفة" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "اسم مستخدم" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "سرعة-التحميل" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "سرعة-الرفع" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "متوفر :" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "ارفع" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 #, fuzzy msgid "Download Status" msgstr "تحميل" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "اسم الملف" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "ملفات مشاركة" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "طلبات" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "طلبات مقبوله" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "بينات محوله" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "أجزاء مكتسبة" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "اعد تسمية" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "نسخ رابط ED2k للحافظة" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "يجب ان تكون ذا هوية مرتفعة لتتمكن من انشاء رابط مصدر" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "ملفات مشاركة (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "اسم الملف" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "متوسط زمن التحميل : %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "اعادة اﻹتصال : %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "الوقت منذ بدء التحميل: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "متصل بالخادم منذ : %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:790 msgid "Clients" msgstr "عميل" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "غير معروف :%i" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "تم ترشيح : %i" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "حظر" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "إحتلال الخادم: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "مجموع حجم ملفات المشاركة : %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "إتصال نشط (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "" #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "" #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "تحميل (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "" #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "" #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 #, fuzzy msgid "Search progress not available" msgstr "%s غير متوفر" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "" #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "" #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "" #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "" #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "" #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "" #: src/TextClient.cpp:866 #, fuzzy msgid "Update IP filtering table from URL." msgstr "حدث server.met من العنوان" #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "" #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "" #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "" #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "" #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "" #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "" #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "" #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "" #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "" #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "" #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "" #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "" #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "" #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "" #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "" #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "" #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "" #: src/TextClient.cpp:900 src/TextClient.cpp:902 msgid "The given value must be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "" #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "" #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "" #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "" #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "" #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "" #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "" #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "" #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "" #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "إظهار شريط التقدم" #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "إظهار شريط التقدم" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "" #: src/TextClient.cpp:938 msgid "Resume download." msgstr "" #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "" #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "" #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "" #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "" #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "" #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "" #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "" #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "" #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "" #: src/TextClient.cpp:955 msgid "Show log." msgstr "" #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "" #: src/TextClient.cpp:959 msgid "Reset log." msgstr "" #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" #: src/TextClient.h:59 msgid "aMule text client" msgstr "" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "" #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "هل أنت متاكد من حذف كل الملفات في هذا المصنف؟" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "مطلوب التاكيد" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "عدد اتصلات كثيرة" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "إختر فلتر العرض" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "اضف مجموعة" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "عرض المجموعة" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "الغاء المجموعة" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "" #: src/UserEvents.h:60 msgid "Download completed" msgstr "" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "" #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "" #: src/UserEvents.h:85 msgid "Message sender." msgstr "" #: src/UserEvents.h:88 msgid "Out of space" msgstr "" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 #, fuzzy msgid "Cancelled !" msgstr "إلغاء" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "" #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "" #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "" #, fuzzy #~ msgid "Download status" #~ msgstr "تحميل" #, fuzzy #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "تحيدث كل:5 ثواني" #~ msgstr[1] "تحيدث كل:5 ثواني" #~ msgid "Transferring" #~ msgstr "نقل" #, fuzzy #~ msgid "Only files currently uploading" #~ msgstr "حاليا تحميل :" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "اﻻنتظار ممتلئ" #, fuzzy #~ msgid "Downloads window" #~ msgstr "تحميل" #~ msgid "Transfers" #~ msgstr "نقل" #~ msgid "Unban" #~ msgstr "ﻻ تمنع" #~ msgid "Show Uploads" #~ msgstr "عرض الرفع" #~ msgid "Show Queue" #~ msgstr "أظهر المنتظرين" #~ msgid "Waited" #~ msgstr "إنتظار" #~ msgid "Upload Time" #~ msgstr "زمن الرفع" #~ msgid "File Priority" #~ msgstr "أولوية ملف" #~ msgid "Score" #~ msgstr "نتيجة" #~ msgid "Asked" #~ msgstr "طلب" #~ msgid "Last Seen" #~ msgstr "اخر مشاهدة" #~ msgid "Entered Queue" #~ msgstr "داخل اﻻنتظار" #~ msgid "Clients on queue :" #~ msgstr "عملاء في اﻻنتظار:" #~ msgid "Current Session" #~ msgstr "الجلسة الحالية" #~ msgid "Total" #~ msgstr "المجموع" #~ msgid "Requested :" #~ msgstr "طلب :" #~ msgid "Files Transfers Window" #~ msgstr "نافذة ملفات النقل" #, fuzzy #~ msgid "HTTP download thread ended" #~ msgstr "سعة نطاق التحميل الحقيقية" #, fuzzy #~ msgid "Killed!" #~ msgstr "فشل" #~ msgid "Line Capacities" #~ msgstr "قدرة الخط" #~ msgid "Max Sources per File" #~ msgstr "حد أعلى للمصادر لكل ملف" #~ msgid "Start next paused file when a file completed" #~ msgstr "إبدا الملف الموقف التالي عند اﻻنتهاء من ملف" #~ msgid "Select Statistics Colors" #~ msgstr "اختر لون اﻻحصائيات" #~ msgid "Download Queue Files Progress" #~ msgstr "تقدم طابور ملفات التحميل" #~ msgid "Show percentage" #~ msgstr "إظهار نسبة مئوية" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. نشط" #~ msgid "Progressbar Style" #~ msgstr "سمة شريط التطور" #~ msgid "Misc Options" #~ msgstr "خيرات متفرقة" #~ msgid "Max Connections" #~ msgstr "أعلى أتصال" #~ msgid "Could not determine the command for running the browser." #~ msgstr "لم يحديد إمر لتشغيل المتصفح" #, fuzzy #~ msgid "Copy ED2k links to clipboard" #~ msgstr "نسخ رابط ED2k للحافظة" #, fuzzy #~ msgid "ED2K: Connecting" #~ msgstr "يتم الإتصال" #, fuzzy #~ msgid "ED2K: Disconnected" #~ msgstr "فصل الإتصال" #~ msgid "Edit Serverlist" #~ msgstr "حرر قائمة الخادمات" #~ msgid "Average filesize: %s" #~ msgstr "متوسط حجم الملف : %s" #~ msgid "Error" #~ msgstr "خطأ" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "خطأ غير متوقع أثناء إكمال ملف %s. الملف متوقف" #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "ﻻ يوجد خادمات صحيحة في قائمة الخادمات" #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "حدود سعة النطاق" #~ msgid "Connection Limits" #~ msgstr "حدود اﻷتصال" #~ msgid "Auto-update serverlist at startup" #~ msgstr "حدث قائمة الخادمات عند بدء التشغيل تلقائي" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "حدث قائمة الخادمات عند اﻻتصال بخادم" #~ msgid "Update serverlist when a client connect" #~ msgstr "حدث قائمة الخادمات عند اتصال عميل" #~ msgid "Incoming Directory :" #~ msgstr "مجلد الوصول :" #~ msgid "Temporary Directory :" #~ msgstr "مجلد المؤقت :" #~ msgid "Shared Directories" #~ msgstr "مجلدات المشاركة" #~ msgid "Webserver Parameters" #~ msgstr "متغيرلت خادم الشبكة" #~ msgid "Webserver port" #~ msgstr "منفذ خادم شبكة" #~ msgid "Serverlist" #~ msgstr "قائمة الخادمات" #~ msgid "Manual Server Add : Name" #~ msgstr "اضافة خادم يدويا : اسم" #~ msgid "TCP Port: Not Ready" #~ msgstr "منفذ TCP: غير جاهز" #~ msgid "UDP Port: Not Ready" #~ msgstr "منفذ UDP: غير جاهز" #~ msgid "Upload Limit" #~ msgstr "وقت رفع المعلومات" #~ msgid "Download Limit" #~ msgstr "وقت تنزيل المعلومات" #~ msgid "Not Supported" #~ msgstr "غير مدعوم" #~ msgid "Browse wav" #~ msgstr "تصفح wav" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "ملف wav (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "ﻻ تعليق" #~ msgid "Messages popup" #~ msgstr "رسالة قافزة" #~ msgid "Use sound" #~ msgstr "استخدم صوت" #~ msgid "Pop out when :" #~ msgstr "قفز عندما :" #~ msgid "New entry on log" #~ msgstr "حدث جديد على السجل" #~ msgid "Starts a new chat session" #~ msgstr "ابدء جلسة محادثة جديدة" #~ msgid "A new chat message is received" #~ msgstr "تلقي رسالة محادثة جديدة" #~ msgid "A download is added or finished" #~ msgstr "تحميل أضيف او إنتها" #~ msgid "New aMule version detected" #~ msgstr "نسخة حديثة من aMule" #~ msgid "Notify by Mail" #~ msgstr "اشعار بالبريد" #~ msgid "Send an Email when transfer complete." #~ msgstr "قم بارسال رسالة بريدية عند اﻻتمام" #~ msgid "SMTP server :" #~ msgstr "خادم SMTP :" #~ msgid "Email Address :" #~ msgstr "عنوان البريد :" #~ msgid ":" #~ msgstr ":" #~ msgid "Sources Dropping" #~ msgstr "سقوط الخادم" #~ msgid "(Min 300 / Max 3000)" #~ msgstr "(حد أدنى 300 / حد أعلى 3000)" #~ msgid "Timer (in secs)" #~ msgstr "توقيت بثانية" #~ msgid "(Min 60 / 3600 Max)" #~ msgstr "(حد أدنى 60 / حد أعلى 3600)" #~ msgid "Global Search" #~ msgstr "بحث عالمي" #~ msgid "Port %d is not available. You will be LOWID" #~ msgstr "منفذ %d غير صحيح ستكون ذا هوية متدنية" #~ msgid "Failed to save" #~ msgstr "فشل في الحفظ" #~ msgid "" #~ "Unable to launch browser. Please set correct browser executable path in " #~ "Preferences." #~ msgstr "لم اتمكن من تشغيل المتصفح. رجاء ضع مسار صحيح للمتصفح في اﻹعدادات." #~ msgid "" #~ " --- This is the first time you run aMule %s ---\n" #~ "\n" #~ msgstr "" #~ " --- هذة أول مرة تقوم بتشغيل aMule %s ---\n" #~ "\n" #~ msgid "This version is a testing version, updated daily, and \n" #~ msgstr "هذا اﻹصدار إصدار تجريبي ويتم تحديثة يوميا و\n" #~ msgid "or kill your dog. But it *should* be safe to use anyway. \n" #~ msgstr "لكن المفترض انه يعمل بأمان.\n" #~ msgid "This version has new SecureIdent support, so your \n" #~ msgstr "هذة النسخة تدعم هوبة المصدر جديدة لذا \n" #~ msgid "client credits will be lost on this first run. \n" #~ msgstr "سيفقد العملاء ارصدتهم عند اول تشغيل \n" #~ msgid "There is no way to fix that, and eMule did the same.\n" #~ msgstr "ﻻ يوجد طريقة لحلها كما حصل مع eMule\n" #~ msgid "Feel free to report any bugs to forum.amule.org" #~ msgstr "يمكنك التبليغ عن اﻷخطاء في forum.amule.org" #~ msgid "Desktop integration" #~ msgstr "تبني سطح مكتب" #~ msgid "Connection established on:" #~ msgstr "تم الاتصال بي:" #~ msgid "Connect to any server" #~ msgstr "إتصل باي مستظيف" #~ msgid "This ed2k link is invalid (%s)" #~ msgstr "رابط ed2k غير صحيح (%s)" #~ msgid "Invalid link: %s" #~ msgstr "رابط غير صحيح: %s" #~ msgid "Filtered IP: %s (%s)" #~ msgstr "ترشيحIP: %s (%s)" #~ msgid "Rating for file '%s' received: %i" #~ msgstr "تقيم ملف '%s' تم تلقيه: %i" #~ msgid "Description for file '%s' received: %s" #~ msgstr "وصف لي ملف '%s' تولقي : %s" #~ msgid "Unable to retrieve shared files from '%s'" #~ msgstr "غير قادر علي استرجاعملف مشاركة من '%s'" #~ msgid "Requesting shared files from user %s (%u) is already in progress" #~ msgstr "طلب ملفات المشاركةمن المستخدم %s (%u) في طور العمل" #~ msgid "NickName: %s\n" #~ msgstr "إسم مستعار: %s\n" #~ msgid "Filestats for all sessions: Accepted %d of %d requests" #~ msgstr "إحصائية الملفات في كل الجلسات :قبل %d من %d طلب" #~ msgid "can't create file '%s'" #~ msgstr "غير قادر لتكوين ملف '%s'" #~ msgid "Can't open file '%s'" #~ msgstr "غير قادر لفتح ملف '%s'" #~ msgid "can't close file descriptor %d" #~ msgstr "غير قادر لغلق ملف وصف %d" #~ msgid "can't read from file descriptor %d" #~ msgstr "غير قادر قراءة ملف وصف %d" #~ msgid "can't write to file descriptor %d" #~ msgstr "غير قادر كتابة ملف وصف %d" #~ msgid "unknown seek origin" #~ msgstr "المرجع غير معرف" #~ msgid "can't find length of file on file descriptor %d" #~ msgstr "غير قادر للحصول على طول الملف من ملف الوصف %d" #~ msgid "can't determine if the end of file is reached on descriptor %d" #~ msgstr "غير قادر على التاكد من انتهاء الملف من ملف الوصف %d" #~ msgid "*** Chatsession Start : " #~ msgstr "*** بدء جلسة المحادثة :" #~ msgid "Message from" #~ msgstr "رسالة من" #~ msgid "failed" #~ msgstr "فشل" #~ msgid "*** Disconnected" #~ msgstr "*** فصل" #~ msgid "Failed to load creditfile" #~ msgstr "فشل في تحميل ملف الرصيد" #~ msgid "Creditfile is out of date and will be replaced" #~ msgstr "ملف الرصيد قديم وسيتم استبداله" #~ msgid "Failed to save creditfile" #~ msgstr "فشل في حفظ ملف الرصيد" #~ msgid "ClientSoftware ->" #~ msgstr "برنامج العميل ->" #~ msgid "<- ClientVersion ->v" #~ msgstr "<-نسخة العميل ->v" #~ msgid "" #~ "WARNING! Found matching client, to a currently connected client: %s (%s) " #~ "and with %s" #~ msgstr "تحذير! وجد عميل مطابق لعميل متصل:%s (%s) مع %s" #~ msgid "Check Fake" #~ msgstr "مراقبة المزيف" #~ msgid "Preview [" #~ msgstr "عرض [" #~ msgid "Are you sure that you want to cancel and delete this file ?\n" #~ msgstr "هل انت متاكد من الغاء وحذف هذا الملف ؟\n" #~ msgid "You already have the file %s" #~ msgstr "تمتلك هذا الملف مسبقا %s" #~ msgid "Bad link." #~ msgstr "رابط غير صالح" #~ msgid "not a well-formed ed2k link" #~ msgstr "رايط ed2k غير مكتمل" #~ msgid "Not an ED2K server or file link" #~ msgstr "ليس رابط خادم او ملف ED2K" #~ msgid "can't write file '%s'" #~ msgstr "غير قادر لكتابة ملف '%s'" #~ msgid "done" #~ msgstr "إنتها" #~ msgid "Failed to copy the file '%s' to '%s'" #~ msgstr "فشل في نسخ ملف '%s' الى '%s'" #~ msgid "Impossible to get permissions for file '%s'" #~ msgstr "مستحيل الحصول على سماحية لي ملف '%s'" #~ msgid "Impossible to overwrite the file '%s'" #~ msgstr "مستحيل الكتابة فوق الملف '%s'" #~ msgid "Impossible to set permissions for the file '%s'" #~ msgstr "مستحيل وضع سماحية لي ملف '%s'" #~ msgid "Error: the file known.met is corrupted, unable to load known files" #~ msgstr "خطأ ملف known.met معطوب, لم اتمكن من تحميل الملفات المعروفة" #~ msgid "accepted" #~ msgstr "قبل" #~ msgid "denied" #~ msgstr "رفض" #~ msgid "Desktop" #~ msgstr "سطح المكتب" #~ msgid "No systray integration, please" #~ msgstr "فضلا بلا تبني لواجهة رسومية" #~ msgid "Name" #~ msgstr "اسم" #~ msgid "Min Availability" #~ msgstr "اقل توفر" #~ msgid "Search global" #~ msgstr "بحث عالمي" #~ msgid "Clear All" #~ msgstr "مسح الكل" #~ msgid "Download selected" #~ msgstr "حمل المختارات" #~ msgid "Media Info" #~ msgstr "معلومات الوسائط" #~ msgid "Bitrate:" #~ msgstr "معدل البت:" #~ msgid "Length:" #~ msgstr "طول:" #~ msgid "Source Names" #~ msgstr "اسماء المصادر" #~ msgid "Clientsoftware :" #~ msgstr "برنامج العميل :" #~ msgid "Server IP :" #~ msgstr "عنوان الخادم :" #~ msgid "Clientversion :" #~ msgstr "نسخة العميل" #~ msgid "ID :" #~ msgstr "هوية :" #~ msgid "Servername :" #~ msgstr "اسم الخادم :" #~ msgid "Downloaded (this session) :" #~ msgstr "حمل في الجلسة :" #~ msgid "Average downloadrate :" #~ msgstr "متوسط معدل التحميل :" #~ msgid "Downloaded total :" #~ msgstr "مجموع التحميل :" #~ msgid "Uploaded (this session) :" #~ msgstr "رفع في الجلسة :" #~ msgid "Average Uploadrate :" #~ msgstr "متوسط معدل الرفع :" #~ msgid "Uploaded total :" #~ msgstr "مجموع الرفع :" #~ msgid "Rating (total) :" #~ msgstr "تقييم (المجموع) :" #~ msgid "Chinese" #~ msgstr "الصينيه" #~ msgid "English" #~ msgstr "الإنجليزيه" #~ msgid "Portuguese (Brazil)" #~ msgstr "البرتغاليه (البرازيل)" #~ msgid "Spanish (Chile)" #~ msgstr "الإسبانيه (تشيلي)" #~ msgid "Spanish (Mexico)" #~ msgstr "الإسبانيه (المكسيك)" #~ msgid "Turkey" #~ msgstr "التركيه" #~ msgid "Beep on errors" #~ msgstr "صوت عند الخطاء" #~ msgid "Downloadlist doubleclick to expand" #~ msgstr "اضغط لعرض قائمة التحميل" #~ msgid "Startup" #~ msgstr "بدء التشغيل" #~ msgid "5 Days" #~ msgstr "5 أيام" #~ msgid "Check for new version" #~ msgstr "مراقبة لوجود إصدار أحدث" #~ msgid "Show Splashscreen" #~ msgstr "عرض شاشة ترحيب" #~ msgid "IP-Filter" #~ msgstr "فلتر -IP" #~ msgid "IP-Filter ON / OFF" #~ msgstr "فلتر -IP ON / OFF" #~ msgid "Always filter bad IPs" #~ msgstr "دائما فلتر IPs السيئة" #~ msgid "See my shares" #~ msgstr "مشاهدة المشاركة" #~ msgid "Arrange Downloads" #~ msgstr "رتب التحميل" #~ msgid "Enable auto-arranging download list " #~ msgstr "السماح للترتيب الذاتي لقائمة التحميل" #~ msgid "Download speed" #~ msgstr "سرحة التحميل" #~ msgid "Number of sources" #~ msgstr "عدد المصادر" #~ msgid "Theme :" #~ msgstr "سمه :" #~ msgid "Use Font " #~ msgstr " استخدم خط" #~ msgid "Font" #~ msgstr "خط" #~ msgid "Enable Webserver" #~ msgstr "تمكين خادم شبكة" #~ msgid "Enable password" #~ msgstr "السماح لي كلمة مرور" #~ msgid "Notify" #~ msgstr "أشعار" #~ msgid "Servers List Window" #~ msgstr "نافذة قائمة الخادمات" #~ msgid "SharedFiles" #~ msgstr "ملفات المشاركة" #~ msgid "New Prefs" #~ msgstr "إعدادات جديدة" #~ msgid "h" #~ msgstr "س" #~ msgid "D" #~ msgstr "ي" #~ msgid "Error: Failed to open part.met file! (%s => %s)" #~ msgstr "خطأ: فشل في فتح ملف part.met ! (%s => %s)" #~ msgid "Error: Invalid part.met fileversion! (%s => %s)" #~ msgstr "خطأ: نسخة ملف غير صحيحة part.met ! (%s => %s)" #~ msgid "Error: %s (%s) is corrupt" #~ msgstr "خطأ : %s (%s) معطوب" #~ msgid "" #~ "Unexpected file error while reading server.met: %s, unable to load " #~ "serverlist" #~ msgstr "" #~ "خطأ غير متوقع أثناء قراءة ملف server.met: %s,غير قادر على تحميل قائمة " #~ "الخادمات" #~ msgid "Warning: %s might be corrupted" #~ msgstr "تحذير : %sقد يكون معطوب" #~ msgid ".part file not found" #~ msgstr "ملف .partغير موجود" #~ msgid "Unable to open %s file - using .bak file.\n" #~ msgstr "لم اتمكن من فتح ملف %s بإستخدام ملف .bak \n" #~ msgid "Failed to delete %s" #~ msgstr "فشل لحذف %s" #~ msgid "Failed to delete %s%s" #~ msgstr "فشل لحذف %s%s" #~ msgid "A file with that name already exists, the file has been renamed" #~ msgstr "ملف بهذا اﻹسم موجود مسبقا, أعيد تسمية الملف" #~ msgid "Finished downloading %s :-)" #~ msgstr "انهاء تحميل %s :-)" #~ msgid "Downloaded:" #~ msgstr "تحميل :" #~ msgid "ERROR: Cannot write to disk" #~ msgstr "خطأ غير قادر على الكتابعلى القرص الصلب" #~ msgid "Downloaded part %i is corrupt :( (%s)" #~ msgstr "جزء التحميل %i معطوب :( (%s)" #~ msgid "ICH: Recovered corrupted part %i (%s)" #~ msgstr "ICH: تم تصحيح الجزء المعطوب %i (%s)" #~ msgid "" #~ "Partfilename: %s\n" #~ "Parts: %d , %s: %d (%.1f%%)\n" #~ msgstr "" #~ "ملف اجزاء بإسم: %s\n" #~ "اجزاء: %d , %s: %d (%.1f%%)\n" #~ msgid "%d%% done (%s) - Transferring from %d sources" #~ msgstr "%d%% تم (%s) -نقل من %d مصادر" #~ msgid "Available" #~ msgstr "متوفر" #~ msgid "Last Seen Complete :" #~ msgstr "اخر اكتمال شوهد :" #~ msgid "Last Reception:" #~ msgstr "اخر إستقبال:" #~ msgid "Language change will not be applied until aMule is restarted." #~ msgstr "تغير اللغة لن يتم تفعيل اﻻ بإعادة تشغيل aMule." #~ msgid "Update: Disabled" #~ msgstr "تحيث: معطل" #~ msgid "Update period: %i sec" #~ msgstr "فترة التحديث: %i ثانية" #~ msgid "Update period: %i secs" #~ msgstr "فترة التحديث: %i ثانية" #~ msgid "Server connection refresh interval %i mins" #~ msgstr "فترة تحديث الإتصال بالخادم %i دقيقة" #~ msgid "OLD Preferences" #~ msgstr "إعدادات قديمة" #~ msgid "Choose a folder for " #~ msgstr "إختر مجلد لي " #~ msgid "%i days" #~ msgstr "%i يوم" #~ msgid "%i day" #~ msgstr "%i يوم" #~ msgid "Upload/Download list refresh time: Disable" #~ msgstr "زمن تحديث قائمة الرفع/التحميل : معطل" #~ msgid "Close this search result" #~ msgstr "اغلاق نتيجة البحث هذه" #~ msgid "Description: %s" #~ msgstr "وصف: %s" #~ msgid "User: %i" #~ msgstr "مستخدم: %i" #~ msgid "Unable to retrieve serverlist" #~ msgstr "غير قادر على إسترجاع قائمة الخادمات" #~ msgid "Failed to load server.met!" #~ msgstr "فشل في تحميل server.met!" #~ msgid "Server added: " #~ msgstr "خادم مضاف: " #~ msgid "Connect to this server" #~ msgstr "إتصال بهذا الخادم" #~ msgid "Add to static" #~ msgstr "أضف الى الثابتة" #~ msgid "Remove from static server list" #~ msgstr "حذف من قائمة الخادمات الثابتة" #~ msgid "Preference" #~ msgstr "أداء" #~ msgid "Failed to open staticservers.dat" #~ msgstr "فشل في فتح staticservers.dat" #~ msgid "Added to static server list" #~ msgstr "أضيف خادم للقائمة الثابتة" #~ msgid "Unknown server info received !" #~ msgstr "تلقي معلومات خادم غير معرفة !" #~ msgid "Connecting to %s (%s:%i)..." #~ msgstr "إتصال بي %s (%s:%i)..." #~ msgid "This is " #~ msgstr "هذا هو" #~ msgid " (based on " #~ msgstr "(مبني على" #~ msgid "Please enter a serveraddress" #~ msgstr "رجاء إدخل عنوان خادم" #~ msgid "Incomplete serverport: Please enter a serverport" #~ msgstr "منفذ الخادم غير مكتمل: رجاء إدخل منفذ للخادم" #~ msgid "Server not added!" #~ msgstr "خادم غير مضاف" #~ msgid "Low ID" #~ msgstr "هوية متدنية" #~ msgid "High ID" #~ msgstr "هوية مرتفعة" #~ msgid "Loading..." #~ msgstr "تحميل..." #~ msgid "Permission" #~ msgstr "رخصة" #~ msgid "Public" #~ msgstr "عام" #~ msgid "Friends only" #~ msgstr "اﻻصدقاء فقط" #~ msgid "Locked" #~ msgstr "مقفل" #~ msgid "Permissions" #~ msgstr "رخصة" #~ msgid "Change this file's comment..." #~ msgstr "تغير التعليق على هذا الملف..." #~ msgid "Auto [Re]" #~ msgstr "ذاتي" #~ msgid "Hidden" #~ msgstr "مخفي" #~ msgid "You cannot change permissions while a file is still downloading!" #~ msgstr "ﻻ يمكنك تغير سماحية ملف وهو قيد التحميل!" #~ msgid "%s (%s:%i) appears to be full" #~ msgstr "%s (%s:%i) يظهر انه ملي" #~ msgid "Connecting to %s (%s:%i ) failed." #~ msgstr "اﻹتصال بي %s (%s:%i) فشل." #~ msgid "Connection attempt to %s (%s:%i ) timed out" #~ msgstr "محاولت اﻹتصال بي %s (%s:%i ) إنتهى الوقت" #~ msgid "Refreshing server connection" #~ msgstr "إعادة تنشيط اﻹتصال بالخادم" #~ msgid "Uptime: " #~ msgstr "مدة التشغيل: " #~ msgid "Downloaded Data (Session (Total)): %s (%s)" #~ msgstr "بيانات التحميل (الجلسة (المجموع)): %s (%s)" #~ msgid "Found Sources: %i" #~ msgstr "وجد مصادر : %i" #~ msgid "Active Downloads (chunks): %i" #~ msgstr "التحميل النشط: %i" #~ msgid "Uploaded Data (Session (Total)): %s (%s)" #~ msgstr "بيانات الرفع (الجلسة (المجموع)): %s (%s)" #~ msgid "Active Uploads: %i" #~ msgstr "تحميل نشط : %i" #~ msgid "Total successful upload sessions: %i" #~ msgstr "مجموع الجلسات الناجحة للتحميل :%i" #~ msgid "Total failed upload sessions: %i" #~ msgstr "مجموع الجلسات الفاشلة للتحميل :%i" #~ msgid "Average Downloadrate (Session): %.2f kB/s" #~ msgstr "متوسط معدل التحميل)الجلسة(: %.2f kB/s" #~ msgid "Average Uploadrate (Session): %.2f kB/s" #~ msgstr "متوسط معدل الرفع )الجلسة(: %.2f kB/s" #~ msgid "Max Downloadrate Average (Session): %.2f kB/s" #~ msgstr "معدل أعلى مستوى تحميل (الجلسة): %.2f kB/s" #~ msgid "Max Downloadrate (Session): %.2f kB/s" #~ msgstr "أعلى مستوى تحميل (الجلسة): %.2f kB/s" #~ msgid "waiting for transfer..." #~ msgstr "بإنتظار التحميل ..." #~ msgid "Session UL:DL Ratio (Total):" #~ msgstr "نسبة الرفع للتحميل في الجلسة (المجموع):" #~ msgid "Number of Shared Files: %i" #~ msgstr "عدد ملفات المشاركة : %i" #~ msgid "Working Servers" #~ msgstr "خادم يعمل" #~ msgid "Failed Servers" #~ msgstr "خادم فاشل" #~ msgid "Deleted Servers" #~ msgstr "خادم محذوف" #~ msgid "Users on Working Servers" #~ msgstr "المستخدمين في الخادمات حاليا" #~ msgid "Files on Working Servers" #~ msgstr "ملفات في الخادمات حاليا" #~ msgid "Total Users" #~ msgstr "مجموع المستخدمين" #~ msgid "Active Connections (estimate)" #~ msgstr "إتصاﻻت نشطة تقديري" #~ msgid "Max Connection Limit Reached" #~ msgstr "وصل اقصى حد إتصالات" #~ msgid "Average Connections (estimate)" #~ msgstr "متوسط سرعة اﻻتصال تقديرية" #~ msgid "Detection Disabled" #~ msgstr "الكشف عن المعطل" #~ msgid "Not Found" #~ msgstr "غير موجود" #~ msgid "Actual Speed Limits:" #~ msgstr "حدود السرعة الحقيقية:" #~ msgid "DL: " #~ msgstr "تحميل: " #~ msgid "UP: " #~ msgstr "رفع: " #~ msgid "ID: Not Connected" #~ msgstr "هوية: غير متصل" #~ msgid "TCP Port: " #~ msgstr "منفذ TCP: " #~ msgid "UDP Port: " #~ msgstr "منفذ UDP:" #~ msgid "Uptime: None" #~ msgstr "فترة التشغيل: ﻻ شيئ" #~ msgid "ServerName: Not Connected" #~ msgstr "إسم الخادم: غير متصل" #~ msgid "ServerIP: Not Connected" #~ msgstr "عنوان الخادم: غير متصل" #~ msgid "Shared Files: " #~ msgstr "ملفات المشاركة: " #~ msgid "Queued Clients: " #~ msgstr "عملاء في اﻻنتظار: " #~ msgid "Total DL: " #~ msgstr "مجموع التحميل: " #~ msgid "Total UP: " #~ msgstr "مجموع الرفع: " #~ msgid "Personal Infos" #~ msgstr "معلومات شخصية" #~ msgid "Hide" #~ msgstr "إخفاء" #~ msgid "Show" #~ msgstr "إضهار" #~ msgid "All To Max Speed" #~ msgstr "الكل ﻷعلى سرعة" #~ msgid "All To Min Speed" #~ msgstr "الكل ﻷقل سرعة" #~ msgid "Disconnect from server" #~ msgstr "فصل من الخادم" #~ msgid "aMule for Linux" #~ msgstr "aMule لي لينكس" #~ msgid "requested file not found" #~ msgstr "لم يتم العثور على الملف المطلوب" #~ msgid "Access denied!" #~ msgstr "رفض الدخول!" #~ msgid "Web Control Panel" #~ msgstr "لوحة تحكم الويب" #~ msgid "ED2K Link(s)" #~ msgstr "رابط ED2K" #~ msgid "Log" #~ msgstr "سجل" #~ msgid "Serverinfo" #~ msgstr "معلومات الخادم" #~ msgid "Debug Log" #~ msgstr "سجل اﻷخطاء" #~ msgid "&Preferences" #~ msgstr "&أداء" #~ msgid "Logout" #~ msgstr "تسجيل الخروج" #~ msgid "users" #~ msgstr "مستخدمين" #~ msgid "Limits" #~ msgstr "حدود" #~ msgid "files" #~ msgstr "ملفات" #~ msgid "Actions" #~ msgstr "عمل" #~ msgid "Remove selected server" #~ msgstr "حذف الخادمات المختارة" #~ msgid "Are you sure to remove this server from list?" #~ msgstr "هل انت متاكد من حذف الخادم من القائمة؟" #~ msgid "Uploaded total" #~ msgstr "مجموع الرفع" #~ msgid "Are you sure that you want to cancel and delete this file?\\n" #~ msgstr "هل انت متاكد من الغاء وحذف هذا الملف؟\\n" #~ msgid "Increase Priority" #~ msgstr "زيادة اﻷولوية" #~ msgid "Decrease Priority" #~ msgstr "تقليل اﻷولوية" #~ msgid "Download Selected" #~ msgstr "تحميل المختار" #~ msgid "Time" #~ msgstr "الوقت" #~ msgid "Add to list" #~ msgstr "أضف الى القائمة" #~ msgid "URL" #~ msgstr "عنوان" #~ msgid "Web-based Search" #~ msgstr "بحث انترنت" #~ msgid "File Settings" #~ msgstr "إعدادات الملف" #~ msgid "Max Sources Per File" #~ msgstr "اقصى عدد مصادر للملف" #~ msgid "Max. Connections" #~ msgstr "اقصى عدد إتصالات" #~ msgid "max. new connections / 5secs" #~ msgstr "اقصى عدد إتصالات جديدة لكل 5 ثواني" #~ msgid "Gzip Compression" #~ msgstr "ضغط Gzip" #~ msgid "Refresh-Time of Pages" #~ msgstr "زمن تحديث الصفحة" #~ msgid "Time in seconds (zero=disabled):" #~ msgstr "الوقت بالثواني (صفر=للتعطيل):" #~ msgid "Speed Limits" #~ msgstr "حدود السرعة" #~ msgid "Bandwidth Limits" #~ msgstr "حدود النطاق" #~ msgid "Login" #~ msgstr "تسجيل الدخول" #~ msgid "Enter your password here" #~ msgstr "أدخل كلمة المرور هنا" #~ msgid "Webserver: Logout" #~ msgstr "خادم شبكة: تسجيل الخروج" #~ msgid "Search Results" #~ msgstr "نتيجت البحث" #~ msgid "Refetch Results" #~ msgstr "إعادة جلب النتيجة" #~ msgid "Method" #~ msgstr "طريقة" #~ msgid "Global (Server)" #~ msgstr "خادم عالمي" #~ msgid "Wizard" #~ msgstr "مساعداﻹعداد" #~ msgid "Down (kbit/s)" #~ msgstr "تحميل (kbit/s)" #~ msgid "Up (kbit/s)" #~ msgstr "رفع (kbit/s)" #~ msgid "Custom" #~ msgstr "مخصص" #~ msgid "(enter below!)" #~ msgstr "(أدخل في اﻷسفل)" #~ msgid "" #~ "Unable to launch browser. Please set correct browserexecutable path in " #~ "Preferences." #~ msgstr "لم أتمكن من تشغيل المتصفح. رجاء حدد مسار صحيح للمتصفح في اﻹعدادات." #~ msgid "Not Avaiable" #~ msgstr "غير متوفر" #~ msgid "Show Lists" #~ msgstr "اعرض قائمة" #~ msgid "Hide Lists" #~ msgstr "اخفاء القائمة" #~ msgid "Concurrent Downloads" #~ msgstr "تحميل متلاقي" #~ msgid "Connection Type" #~ msgstr "نوع اﻻتصال" #~ msgid "Select your connection type here :" #~ msgstr "اختر نوع اﻻتصال هنا:" #~ msgid "True upload bandwidth" #~ msgstr "سعة نطاق الرفع الحقيقية" #~ msgid "Unit:" #~ msgstr "الوحدة:" #~ msgid "Connection Wizard" #~ msgstr "مساعد إعداد اﻹتصال" #~ msgid "" #~ "http://ocbmaurice.dyndns.org/pl/slist.pl/server.met?download/server-good." #~ "met" #~ msgstr "" #~ "http://ocbmaurice.dyndns.org/pl/slist.pl/server.met?download/server-good." #~ "met" #~ msgid "A file with that name already exists, the file has been saved as %s" #~ msgstr "ملف بهذا اﻻسم موجود مسبقا, الملف حفظ باسم %s" #~ msgid "Upload/Download list refresh time: %i sec" #~ msgstr "زمن تحديث قائمة الرفع/التحميل : %i ثانية" #~ msgid "Upload/Download list refresh time: %i secs" #~ msgstr "زمن تحديث قائمة الرفع/التحميل : %i ثانية" #~ msgid "&Transfers" #~ msgstr "&نقل" #~ msgid "&Servers" #~ msgstr "&مستظيفات" #~ msgid "S&earch" #~ msgstr "ب&حث" #~ msgid "Shared &Files" #~ msgstr "مشاركة & ملفات" #~ msgid "&Messages" #~ msgstr "&رسائل" #~ msgid "St&atistics" #~ msgstr "اح&صائيات" #~ msgid "Creditfile loaded" #~ msgstr "تم تحميل ملف الرصيد" #~ msgid "Servers list" #~ msgstr "قائمة الخادمات" #~ msgid "Files Transfers" #~ msgstr "نقل الملفات" #~ msgid "Preferences Settings Windows" #~ msgstr "نافذة ادارة الاعدادت" #~ msgid "Please enter a serveradress" #~ msgstr "رجاء ادخل عنوان خادم" amule_2.3.1+git20151120.0023527bc2.orig/po/ast.po0000644000175000017500000063321012611472361017255 0ustar morphmorph# Language ast translations for aMule package. # Copyright (C) 2008 Free Software Foundation, Inc. # This file is distributed under the same license as the aMule package. # root , 2008. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2009-11-04 21:31+0100\n" "Last-Translator: astur \n" "Language-Team: Language ast \n" "Language: ast\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" "X-Poedit-Language: Asturian\n" "X-Poedit-SourceCharset: utf-8\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Amestar a un Collaciu" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Ye necesario introducir una IP y puertu válidos" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Información" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "¡El hash d'usuariu especificáu nun ye válidu!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Fallu al abrir ficheru ED2KLinks." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "AVISU: Nun pues amestate a tí mesmu como una fonte pa un enllaz eD2k " "teniendo ID baxa." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Agora, saliendo de l'aplicación principal..." #: src/amule.cpp:248 #, fuzzy, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Matando instancia amuleweb con pid `%ld' ... " #: src/amule.cpp:251 #, fuzzy, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Matando instancia amuleweb con pid `%ld' ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Falló" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Terminando núcleu." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "Zarru d'aMule completáu." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Resultaos de depuración de memoria na salida d'aMule: " #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "Configuración EC" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Contraseña fixada y conexones esternes habilitaes." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "ALERTA" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "La to llingua foi camudada a la de por defeutu del sistema, darréu d'un " "cambéu de configuración. Siéntolo." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Nun tienes dengún sirvidor na llista de sirvidores.\n" "¿Quies que aMule descargue una nueva llista agora?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Descarga llista de sirvidores" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "sirvidor web corriendo con pid: %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Solicitaste executar el sirvidor web al aniciu pero nun pudo correse'l " "binariu d'amuleweb. Por favor instala'l paquete que contenga'l sirvidor web " "d'aMule o compila aMule usando --enable-webserver y executa make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "FALLU" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Nun ye dable direicionar los puertos a la direición especificada: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "El puertu %u nun ta disponible. Tendrás IDBaxa\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Puertu %u nun ta disponible!\n" "\n" "Esto significa que tendrás IDBaxa.\n" "\n" "Comprueba la to rede y asegúrate de que'l puertu ta abiertu pa entrada y " "salida." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Fallu al criar el ficheru de RoblaOnline" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Fallu al criar el ficheru de RoblaOnline aMule" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "La llingua seleicionada nun paez tar instalada. (Nota: Tentará de ponese de " "toes formes)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Ye la primer vegada qu'anicies aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Esto ye una versión de preba, actualízate diariamente, y \n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "nun damos garantía si fraña daqué, ambura to casa,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "o fila la to sidra. Pero *tendría* de ser seguru de toes formes. \n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Podrás alcontrar na nuesa web, más información, sofitu y nueves versiones, \n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "en www.aMule.org, o nel nuesu canal de IRC #aMule en irc.freenode.net. \n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Unvíanos cualesquier fallu a http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "El direutoriu qu'especificaste de Robla Online nun ye válidu\n" "La Robla Online deshabilitóse hasta que lo igües nes opciones." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Nome sirvidor notificáu" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "La reserva del espaciu en discu pal ficheru '%s' falló: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "FALLU: nun puede abrise'l ficheru de rexistru" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "ALERTA: el ficheru de rexistru ta ermu. Hai daqué mal." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "El rexistru resetióse" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Mensax del sirvidor: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Fallu al descargar la llista de nodos." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Fallu al abrir el ficheru de comprobación de versión descargáu" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Ficheru de comprobación de versión toyíu" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "¡Tas usando una versión antigua de aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "La to versión de aMule ye %i.%i.%i y la cabera versión ye %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "La cabera versión pues alcontrala siempres en http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "ALERTA: La to versión de aMuled ye obsoleta: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "LA to copia de aMule ta actualizada." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Fallu al descargar el ficheru de comprobación de versión" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Usuarios: %s | Ficheros: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Usuarios: E: %s K: %s | Ficheros: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Ensin redes seleicionaes" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "con IDBaxa" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "con IDAlta" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Coneutáu a %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Coneutando a %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Desconeutáu de eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad aniciáu." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad deteníu." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Coneutáu a Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Coneutáu a Kad (tres torgafueos)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Desconeutáu de Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Red Kad nun pue usase si'l puertu UDP ta deshabilitáu n'opciones, non " "aniciando." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Red Kad deshabilitada n'opciones, nun coneutará." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ERROR: el daemon d'aMule nun pue usase cuando tán desactivaes les conexones " "esternes. P'activales, use o bien un aMule normal, anicie amuled cola opción " "--ec-config, o bien, afite \"AcceptExternalConnections\" a 1, nel ficheru ~/." "aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "ERROR: Contraseña válida ye requería pa usar conexones esternes y el demoniu " "aMule nun pue usase ensin conexones esternes. P'aniciar el demoniu aMule, " "tienes d'especificar nel campu \"ECPassword\" del ficheru ~/.aMule/amule." "conf col valor apropiáu. Executa amuled col parámetru --ec-config pa " "especificar la contraseña. Más información pue alcontrase en http://wiki." "amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: EnAniciu - Aniciando reló" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: derivando al fondu - vémonos" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Nun puede Crease un Ficheru Pid" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "ERROR: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Esto ye aMule %s basáu en eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Executándose en %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Visita http://www.amule.org pa comprobar si hai una nueva versión disponible" #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "FALLU GRAVE: Nun pudo criase'l temporizador" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Control remotu de aMule" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Versión:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "Veceru p2p multiplataforma basáu en eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Web: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Foru: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Contautar: admin@amule.org (problemes alministrativos) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (C) 2003-2011 Equipu aMule \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Parte d'aMule básase en \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Direicionamientu P2P basáu na métrica XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Mensax" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "Diálogu aMule afaráu" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Coneutando" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Coneutando" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Desconeutáu" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Tres Tornafueos" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Coneutáu" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Coneutando" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Apagada" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Encaboxar" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Detener los intentos de conexón actuales" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Desconeutar" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Desconeutase de les redes coneutaes" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Coneutar" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Coneutase a les redes disponibles" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Xu: %.1f(%.1f) | Desc: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Xu: %.1f | Desc: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Coneutáu)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Desconeutáu)" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "Daveres quies colar de aMule?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Confirmar colar." #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Llanzar comandu:" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- Por defeutu -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "El direutorio de tema '%s' nun esiste" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "ATENCIÓN: Nun pue abrise'l ficheru de temes '%s' pa llectura" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Redes" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Ventana de redes" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Guetar" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Ventana de gueta" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Descargues" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "Descargando" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Ficheros compartíos" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Ventana de ficheros compartíos" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Mensaxes" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Ventana de mensaxes" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Estadístiques" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Ventana de gráficos d'estadístiques" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Preferencies" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Ventana d'opciones" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importar" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "La ferramienta pa importar ficheros part" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Tocante a" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Tocante a/Aida" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Rede eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Rede Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Ensin rede" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "control remotu de aMule" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Fallu Grave: Nun pudo criase'l temporizador" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Coneutar a amule remotu" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Fallu Grave: Nun pudo criase'l temporizador" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Diendo a eventu bucle..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Coneutando..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Conexón fallida" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Remanador d'eventu EC n'Interface Remota" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Baxando" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Fallu de conexón. Nun ye dable coneutar a %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Zarróse la conexón - ye dable que aMule finare." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Llistu" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Toos" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Nun puede crease'l direutoriu '%s' pa la categoría '%s', calteniendo " "direutoriu '%s'." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Desconocíu" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Fallu al obtener la llista de compartíos del usuariu '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Guetando a un collaciu con conexón idbaxa" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Versión Falsa eMule %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Falsu eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Falsu eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basáu en eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Nomatu: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Solicitáu: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Estadístiques de ficheru pa esta sesión: %d Aceutada de %d petición, %s " "tresfería\n" msgstr[1] "" "Estadístiques de ficheru pa esta sesión: %d Aceutaes de %d peticiones, %s " "tresferíes\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Estadístiques de ficheru pa toles sesiones: %d Aceutada de %d petición, %s " "tresfería\n" msgstr[1] "" "Estadístiques de ficheru pa toles sesiones: %d Aceutaes de %d peticiones, %s " "tresferíes\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Solicitáu un ficheru desconocíu" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Mensax fieltráu de '%s' (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nuevu mensax de '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Usuariu %s (%u) solicitó la to llista de ficheros compartíos del direutoriu %" "s-> Refugada" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, fuzzy, c-format msgid "WARNING: %s cannot be opened." msgstr "ALVERTENCIA: nun puede abrise known.met." #: src/CanceledFileList.cpp:61 #, fuzzy msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "AVISU: Ficheru de llista de compartíos corruptu, tien una testera inválida." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "IO error lleendo'l ficheru known.met: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "Fallu guardando ficheru known.met: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Inxertar Captcha" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Categoría" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nueva Categoría" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Seleiciona un direutoriu pa los ficheros entrantes" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "¡Tienes d'especificar un nome pa la categoría!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "¡Tienes d'especificar un camín pa la categoría!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "¡Fallu al criar el direutoriu entrante de la categoría. Por favor " "especifique un camín correutu!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Sesión Charra Aniciada: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Coneutáu al Veceru ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Coneutando al veceru ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Fallu al coneutar col veceru / Conexón perdía ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "*** Aprobóse'l captcha, y l'usuariu recibirá'l to mensax. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** La to rempuesta al captcha nun ye correuta y el to mensax va inorase. " "Puedes solicitar otru captcha unviando un mensax nuevu. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Zarrar llingüeta" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Zarrar toles llingüetes" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Zarrar les otres llingüetes" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Amestar a collacios" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Ficheru de créditos cargáu, %u veceru conocíu" msgstr[1] "Ficheru de créditos cargáu, %u veceros conocíos" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - ¡Caducó'l créditu de %u veceru!" msgstr[1] " - ¡Caducaron los créditos de %u veceros!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Ficheru 'cryptkey.dat' nun alcontráu, criando." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Detalles del veceru" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "ID-Baxa" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "ID-Alta" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Habilitáu" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Sofitáu" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Non sofitáu" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Deshabilitáu" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Coneutáu" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Desconeutáu" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Non completáu" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Veceru sospechosu" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Verificáu - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Non disponible" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "Usuariu %s (%u) solicitó la to llista de ficheros compartíos -> Aceutada" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "Usuariu %s (%u) solicitó la to llista de ficheros compartíos -> Refugada" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "Usuariu %s (%u) solicitó la to llista de direutorios compartíos -> Aceutada" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "Usuariu %s (%u) solicitó la to llista de direutorios compartíos -> Refugada" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Usuariu %s (%u) solicitó la to llista de ficheros compartíos del direutoriu %" "s -> Aceutada" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Usuariu %s (%u) solicitó la to llista de ficheros compartíos del direutoriu %" "s-> Refugada" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Usuariu %s (%u) direutorios compartíos %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Usuariu %s (%u) unviáu direutorios compartíos non solicitaos." #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "Usuariu %s (%u) unviada la llista de ficheros compartíos por direutoriu %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Usuariu %s (%u) finó l'unvíu de la llista de ficheros compartíos" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Usuariu %s (%u) unviada la llista de ficheros compartíos non deseyada" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Usuariu %s (%u) refugó l'accesu a la llista de direutorios/ficheros " "compartíos" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Comentarios de ficheru" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Nome d'usuariu" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Nome de ficheru" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Valoración" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Comentariu" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Ensin comentarios" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u comentariu" msgstr[1] "%u comentarios" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Veceru %s baneáu por unviar %s datos toyíos de %s en total pal ficheru '%s'" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Ba]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Al]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Mui baxa" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Baxa" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normal" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Alta" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Mui alta" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Llanzamientu" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Entrugando" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Coneutando vía sirvidor" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Cola enllena" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Na cola" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Descargando" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Recibiendo hashset" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Partes non necesitaes" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Nun se pue coneutar IDBaxa con IDBaxa" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Abondes conexones" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Coneutando vía Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Abondes conexones Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Baneáu" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Fallu de conexón" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Cola remota enllena" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Antiguu MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Nuevu MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule Compatible" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Sirvidor llocal" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Sirvidor remotu" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Intercambéu de Fontes" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Pasivu" #: src/DataToText.cpp:133 msgid "Link" msgstr "Enllaz" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Semientes fonte" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Resultáu de la gueta" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Completáu" #: src/DataToText.cpp:146 msgid "In progress" msgstr "En progresu" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "ERROR: Nun queda espaciu en discu" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "ERROR: Partmet non alcontráu" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ERROR: Error d'entrada/salida!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ERROR: Falló!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "En cola" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Yá tás descargando" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Formatu de ficheru temp incorreutu o desconocíu." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Parte" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Tamañu" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Tresferío" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Velocidá" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Progresu" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Fontes" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioridá" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Estáu" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Tiempu Restante" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Cabera comprobación completa" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Cabera receición" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "¿De xuru quies desaniciar esti ficheru?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "¿De xuru quies desaniciar estos ficheros?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Reaición dende: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Detener" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Posar" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Reanudar" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "&Llimpiar completaos" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Intercambiar toles fontes (A4AF) a esti ficheru" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Intercambiar toles fontes (A4AF) a esti ficheru (Auto)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Intercambiar toles fontes (A4AF) a otru ficheru" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Opciones estendíes" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Previsualizar" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Amosar detalles fi&cheru" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Amosar tolos comentarios" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Copiar la URL magnético al cartafueyos" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Copiar l'en&llaz eD2k al cartafueyos." #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Copiar rempuesta al cartafueyos" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "non asignáu" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Asignar a categoría" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Abrir el ficheru" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Introduza'l nuevu nome pa esti ficheru:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Renomar ficheru" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Descargues (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Pa prevenir l'apaición d'esta alvertencia en cada vista previa,\n" "afita'l to reproductor de vídeos nes preferencies (mplayer por defeutu)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Previsualizar" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" "ERROR:¡Fallu al executar un reproductor de medios esternu! Comandu: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Guardando ficheru part %u de %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Tolos ficheros part atroxaos." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Cargando ficheros temporales dende %s." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Cargando ficheru part %u de %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "ERROR: Nun pudo cargase'l ficheru de copia de seguridá. Llea en http://forum." "amule.org p'alcontrar soluciones de recuperación d'archivos part.met." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Tolos ficheros part cargaos." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Nun s'alcontraron ficheros .part" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Alcontróse %u parte de ficheru" msgstr[1] "Alcontráronse %u partes de ficheru" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "El sistema de ficheros del direutoriu Temporal, nun pue remanar ficheros " "grandes." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "El sistema de ficheros del direutoriu Entrante, nun pue remanar ficheros " "grandes." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Descargando %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Yá tas descargando esti ficheru '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Yá tienes esti ficheru '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Yá tas descargando el ficheru %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Nun pue convertise l'enllaz magnet a eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Protocolu desconocíu del enllaz: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Enllaz eD2k inválidu! FALLU: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "El veceru unvió un paquete dempués que falló l'autenticación." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Conexón esterna zarrada." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "¡Conexones esternas deshabilitaes darréu d'una contraseña en blanco!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Conexones esternas deshabilitaes nel ficheru de configuración" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Nueva conexón esterna, aceutada" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "FALLU: nun pudo aceutase una nueva conexón esterna" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "¡Conexón esterna refugada darréu d'una contraseña en blanco nes opciones!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Coneutando con veceru: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Versión desconocía" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "EC Incorreutu na ID de versión, tien d'haber una incompatibilidá. Usa núcleu " "y remotu de la mesma versión." #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "¡Nun pues coneutar a una versión final dende una versión SVN cualesquiera! " "*sigh* dable fallu evitáu" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Versión de protocolu non válida" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Marcador de versión de protocolu inesistente" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 #, fuzzy msgid "Authentication failed: wrong password." msgstr "Autenticación fallía" #: src/ExternalConn.cpp:512 #, fuzzy msgid "Authentication failed: missing password." msgstr "Autenticación fallía" #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Solicitú non válida, tendríes d'autenticate primero." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Accesu concedíu." #: src/ExternalConn.cpp:535 #, fuzzy, c-format msgid "Sent error message \"%s\" to client." msgstr "Fieltrar mensaxes de veceros desconocíos" #: src/ExternalConn.cpp:538 #, fuzzy, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Intentu d'accesu non autorizáu. Conexón zarrada." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "Fallu en comandu remotu del ficheru Part: Hash de ficheru non alcontráu: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Hash de ficheru non alcontráu: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "¡OOPS! ¡Fallu procesando OpCode!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Sirvidor non amestáu" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "sirvidor non amestáu: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "necesites definir un sirvidor pa desanicialu" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k ta desabilitáu nes preferencies" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Gueta en procesu. Resultaos obteníos aína! " #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Gueta web dende un interface remotu nun tien xacíu" #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Ensin puntos pal gráficu." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "El to veceru nun ta configuráu pa esti nivel de detalle." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Conexón esterna: apagáu solicitáu" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Yá tas zarrando." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Conexón esterna: amestando enllaz '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Enllaz non válidu o yá ta na llista." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Ficheru non alcontráu" #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Nome de ficheru incorreutu" #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Nun ye dable renomar ficheru" #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad ta deshabilitáu n'opciones." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Yá tas coneutáu a eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Coneutando a eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Yá tas coneutáu a Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Coneutando a Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Toles redes tán deshabilitaes" #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Desconeutando de eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Desconeutando de Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Conexón esterna: recibíu códigu d'operación inválidu: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "opcode non válidu (¿versión de protocolu incorreuta?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Estensión desconocía '%s' pal comandu '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Comandu desconocíu '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Esti comandu nun tien un argumentu.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Esti comandu tien de tener un argumentu.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Esti comandu ta incompletu, tienes d'usar una de les estensiones....\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Estensiones disponibles:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Comandos disponibles:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Tolos comandos son sensibles a les mayúscules.\n" "Teclea '%s ' pa obtener información detallao del .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Colar de l'aplicación." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Amosar aida" #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Pa tener aida d'un comandu, teclea 'help '.\n" "Pa tener la llista completa de comandos, teclea 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Usa '%s' pa la llista de comandos\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "¡Fallu de sintaxis!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Fallu procesando'l comandu - ¡enxamás tendría de pasar! Informa del fallu, " "por favor\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Esti comandu nun tendría de tener dengún parámetru" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Esti comandu tien de tener un parámetru." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Argumentu non válidu." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Esto ye un comandu incompletu." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Teclea '%s' pa tener más aida.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Esto ye %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Esto ye %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Criando veceru...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, colando %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Nun ye dable coneutar con una contraseña en blanco.\n" "Tienes d'especificar una contraseña nel ficheru config\n" "o na llinia de comandos, o introduz una cuando t'entrugue.\n" "\n" "Colando...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Amosar esta aida." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Host au ta executándose aMule. (por defeutu: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Puertu de conexón esterna de aMule. (por defeutu: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Contraseña de conexones esternes" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Lleer configuración dende'l ficheru." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Nun amueses denguna salida." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Mou Estendíu - amuesa tamién los mensaxes de depuración" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Seleiciona la llingua del programa." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Escribe opciones de la llinia de comandu al ficheru de configuración." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" "Criar ficheru de configuración basáu nel ficheru de configuración de aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Imprenta versión del programa." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Detalles del ficheru" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% fináu." #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "¡ Nun pudo abrise'l ficheru de collacios 'emfriends.met' pa la so llectura !" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "¡ Nun pudo abrise'l ficheru de collacios 'emfriends.met' pa la so escritura !" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "CRITICU - ensin veceru en sesión charra d'aniciu" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Collacios" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Amosar &Detalles" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Amestar un collaciu" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Desaniciar collaciu" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Unviar &Mensax" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Ver ficheros" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Afitar puestu reserváu a un collaciu" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "¿Daveres quies desaniciar al collaciu seleicionáu?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "¿Daveres quies desaniciar a los collacios seleicionaos?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Nun se-y permite asignar más d'ún puestu reserváu.\n" " Namái s'asignó un puestu reserváu." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Seleición múltiple" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Unviar mensax al usuariu" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Mensax a unviar:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Desaniciar de collacios" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Unviar mensax" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Intercambia esti ficheru" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "LC: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Pidióse otru ficheru" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Xubíes n'espera: %s" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "Na cola" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Xuba" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "Dengún" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Non" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Sí" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Descargando..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "Descarga HTTP encaboxada" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "Carpeta de destín pa les descargues" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "Descargaos %d bytes" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Esperábense %d bytes pero descargáronse %d bytes" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "Reconeutar al sirvidor" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Descargar nuevu GeoIP.dat dende %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Fallu al descargar ficheru GeoIP.dat, albortando actualización." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, fuzzy, c-format msgid "Failed to remove %s file, aborting update." msgstr "Fallu al desaniciar el ficheru GeoIP.dat, albortando actualización." #: src/IP2Country.cpp:141 #, fuzzy, c-format msgid "Failed to rename %s file, aborting update." msgstr "Fallu al renomar el nuevu ficheru GeoIP.dat, albortando actualización." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, fuzzy, c-format msgid "Successfully updated %s" msgstr "Actualizacion GeoIP.dat satisfactoria" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Fallu actualizando GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "Fallu al descargar GeoIP.dat dende %s" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Fallu al descargar GeoIP.dat dende %s" #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Cargando fieltros IP 'ipfilter.dat' y 'ipfilter_static.dat'" #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "Fallu al cargar ipfilter.dat '%s', alcontráu formatu desconocíu." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "Fallu al cargar ipfilter.dat '%s', nun ye dable abrir el ficheru." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Cargáu %u rangu IP dende '%s'." msgstr[1] "Cargáu %u rangos IP dende '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u llinia malformada descartóse" msgstr[1] "%u llinies malformaes descartáronse" #: src/IPFilter.cpp:503 #, fuzzy, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Fallu al renomar el nuevu ficheru GeoIP.dat, albortando actualización." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Coneutar dende \n" "veceros conocíos" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nodos (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "IP non válida pa coneutar" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Puertu non válidu pa coneutar" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Por favor enllene tolos campos requeríos" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "¿De xuru quies descargar un nuevu nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Si lo faes, desaniciarás tolos tos nodos actuales y reaniciarás la conexón " "Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "¿Siguir?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: pallabra de gueta enforma curtia" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Pallabra clave pa gueta: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Pallabra de gueta enforma curtia:" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Lleíu %u contautu Kad" msgstr[1] "Lleíos %u contautos Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "Contautos non alcontraos, por favor descarga un ficheru nodes.dat." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Namái %d contautu Kad disponible, nodes.dat non escritu" msgstr[1] "Namái %d contautos Kad disponible, nodes.dat non escritu" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Escritu %d contautu Kad" msgstr[1] "Escritos %d contautos Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Nome ficheru" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Tamañu ficheru" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Media compartío" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Xubío" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Pidío" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Aceutao" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Fontes completes" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "AVISU: Ficheru de llista de compartíos corruptu, tien una testera inválida." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Versión desconocía" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "Carpeta de destín pa les descargues" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Codificando" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Completando" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Completáu" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Posáu" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Erróneu" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Aguardando" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Tienes d'especificar una contraseña non erma" #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Contraseña incorreuta, nun ye un códigu MD5!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Fallu de conexón" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "La conexón EC falló. Rempuesta erma." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Conexón esterna: Rempuesta del sirvidor incorreuta, falló handshake. Conexón " "zarrada." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "¡Fecho! Conexón afitada con aMule" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "¡Fecho! Conexón afitada." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Conexón esterna: Accesu denegáu, xida:" #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Conexón esterna: Falló handshake." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Descarga HTTP filu entamáu" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "Socket d'escucha: Ok" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "FALLU: Nun pue escuchase nel puertu TCP." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "FALLU:" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "AVISU:" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Zarrar" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Cortar" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Copiar" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Apegar" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Llimpiar" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Esbillar too" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Illimitáu" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Menú aMule" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Llímites de velocidá" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "XU: Dengún" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "XU: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DE: Denguna, " #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DE: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Velocidá de descarga: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Velocidá de xuba: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Información del veceru" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Nomatu: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "¡Dengún nomatu conseñáu!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID Veceru:" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Non coneutáu" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Nome del sirvidor: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP del sirvidor: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Non coneutáu" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "Puertu TCP: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Puertu TCP: Nun ta llistu" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "Puertu UDP: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "Puertu UDP: Nun ta llistu" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Robla Online: Activada" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Robla Online: Desactivada" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Tiempu d'execución: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Ficheros compartíos: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Veceros na cola: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Total DE: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Total XU: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Llímite de xuba" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Llímite de descarga" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Anubrir aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Amosar aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Colar" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "Enllaz eD2k:" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Unviar" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Fai Click equí p'amestar l'enllaz eD2k de la entrada de testu de control a " "la cola de descargues." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Los eventos son amosaos equí. Pa una llista completa d'eventos, empobina al " "rexistru de la llingüeta de sirvidores." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Cargando ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Númberu d'usuarios nel sirvidor al que tas coneutáu ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Usuarios: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Usuarios coneutaos al sirvidor actual y una estimación del númberu total " "d'usuarios." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Xu: 0.0 | Desc: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Índiz actual de xubíes y descargues. Si habilites los númberos signifiquen " "los gastos indireutos na comunicación del veceru." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Amuesa l'estáu de conexón y les tresferencies actives. Les fleches bermeyes " "quieren dicir que tas desconeutáu, les marielles que tienes ID-Baxa (darrera " "d'un torgafueos) y les verdes que tienes ID-Alta (La triba de conexón ye " "bona)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Non Coneutáu ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Coneutáu al sirvidor." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Guetar" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Nome:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Triba" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Llocal" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Global" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "FileHash" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Opciones estendíes" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Fieltrar" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Triba de ficheru" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Toos" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Archivos" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Imáxenes de CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Imáxenes" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programes" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Testos" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Videos" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Estensión" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Tamañu mín" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Tamañu Máx" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Disponibilidá" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Fieltru:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Fieltrar Resultaos" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Invertir Resultáu" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Anubrir Ficheros Conocíos" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Entamar" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Más" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Guetar más resultaos en eD2k. Entá nun furrula en Kad." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Encaboxar" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Descarga" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Llimpiar Campos" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Resultaos" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Llimpiar descargues completaes" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Fontes completes" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Xeneral" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Nome Completu :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "Ficheru-met :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Tamañu :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Estáu ficheru part :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Cabera comprobación completa :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Tresferencia" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Fontes alcontraes :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Tresfiriendo fontes :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Númberu de partes :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Disponibles :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Fluxu de datos :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Tiempu Descarga Activa: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Tresferío :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Tamañu Completáu :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Xestión intelixente de corrupción" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Perdío por corrupción :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Ganao por compresión :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Paquetes salvaos por I.C.H.:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Nomes de ficheru" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Tomar" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Llimpiar" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Aplicar" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" "Comentariu/Calificación del ficheru (El testu podrán velu tolos usuarios)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Pa una película, pues poner la so duración, la so hestoria, la llingua ...\\n" "\\ny si ye una falsificación (fake) pues informar a los demás usuarios " "d'aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Calificación de ficheru" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Non evaluada" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Inválidu / Toyíu / Falsificación" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Probe" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Aceutable" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Bonu" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Mui bonu" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Camudar la calificación del ficheru o alvertir a otros usuarios si nun ye " "válidu" #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Actualizar" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Descargando, por favor aguarda ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Tamañu desconocíu" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Información requería" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Señes IP :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Puertu :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Información adicional" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Nome d'usuariu :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Hash del usuariu :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Amestar" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Velocidá de descarga" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Actual" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Media d'execución" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Media de la sesión" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Velocidá de xuba" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Conexones" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Descargues actives" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Conexones actives (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Xubes actives" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Árbol d'estadístiques" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Nome d'usuariu:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Hash d'usuariu:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Software del veceru:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Versión del veceru:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Señes IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID usuariu:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP Sirvidor:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Nome sirvidor:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Ofuscación:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Tresferencies al veceru" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Solicitú actual:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Velocidá media de xuba :" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Velocidá media de descarga :" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Xubíu (sesión):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Descargáu (sesión):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Xubíu (total):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Descargáu (total):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Resultaos" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Modificador DE/XU:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Ident Segura:" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "En cola" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Puntuación cola:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Nomatu" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - la mula multi-plataforma" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" "Esti ye'l nome que verán los otros usuarios verán cuando se coneuten a tí." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Llingua: " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Allanciu enantes d'amosar los mensaxes emerxentes." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Esto especifica la llingua usada nos controles." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Comprobar nueva versión al entamu" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Habilitando esto, fadrá que aMule compruebe si esiste una nueva versión al " "entamu." #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Aniciar minimizáu" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Habilitando esto, faes que aMule se minimice nel aniciu." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Entrugar al colar" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Facer que aMule entrugue enantes de colar." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Habilitar iconu de sistema" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Esto habilita/deshabilita iconu de sistema (o de la barra de xeres)." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimizar al iconu de la bandexa" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Activando esto fadrás que aMule se minimice na bandexa del sistema, asemeyao " "a la barra de xeres." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Tiempu d'allanciu de los mensaxes emerxentes: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "segundos" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Seleición del restolador" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Introduz el nome del to restolador. Déxalo ermo si quies usar el que hai por " "defeutu." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Desaminar" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Abrir en nueva llingüeta si ye dable" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Abrir cuando seya dable, la páxina web nuna nueva llingüeta n'arroú de nuna " "nueva ventana" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Reproductor de vídeu" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Llímites del anchor de banda" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Xuba" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Asignación de puestu reserváu" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Puertos" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Puertu TCP estándar " #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Esti ye'l puertu eD2k estándar y nun pue deshabilitase" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Puertu UDP pa peticiones del sirvidor (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Puertu UDP estándar (Kad / gueta global) " #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "Esti puertu UDP úsase pa peticiones estendíes de eD2k y la rede Kad" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Habilitar UPnP pal reunvíu de puertu del router" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "Puertu UPnP TCP (Opcional):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Señes IP llocal de enllaz: (erma pa cualesquiera):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Namái usuarios avanzaos: Si tu tienes múltiples tarxetes de rede, introduz " "la direición de la tarxeta, que aMule tendrá d'usar." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Max. fontes descargando un ficheru:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Máx. conexones al empar:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Autoconeutar al aniciar" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Reconeutar al perder la conexón" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Desaniciar sirvidores cayíos tres" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "reintentos" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Auto-actualizar la llista de sirvidores al aniciu" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Llista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Actualizar la llista de sirvidores al coneutar a un sirvidor" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Actualizar la llista de sirvidores cuando un veceru se coneuta" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Usar sistema de prioridaes" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Control intelixente de IDBaxa al coneutar" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Conexón segura" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Autoconeutar namái a Sirvidores fixos" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Asignar alta prioridá a los sirvidores amestaos manualmente" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Remanador Intelixente de Corrupciones (I.C.H)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Habilitar" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "I.C.H. avanzáu, confiar en tolos hash (non recomendáu)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Amestar ficheros pa descargar en mou posáu" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Amestar nueves descargues con auto prioridá" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Tentar descargar enantes la primer y cabera parte" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Descargar siguiente ficheru posáu cuandu otru se complete" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Namái na mesma categoría" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Reservar espaciu en discu pa los nuevos ficheros" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Pa los nuevos ficheros reservar tol espaciu del ficheru, esto amenorga la " "fragmentación" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Detener descargues cuando s'algame l'espaciu llibre en discu" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Seleiciona esta opción si quies que aMule comprebe l'espaciu en discu" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Introduz l'espaciu mínimu de discu deseyáu." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Guardar 10 fontes en ficheros raros (< 20 fontes)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Xubíes" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Amestar nuevos ficheros compartíos con auto prioridá" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Carpeta de destín pa les descargues" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Carpeta pa los ficheros temporales de descargues" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Carpetes compartíes" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(Click drechu n'iconu de carpeta, pa compartición recursiva)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Compartir ficheros anubríos" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Gráficos" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Intervalu d'actualización : 5 segs" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Tiempu de promediu del gráficu: 100 min" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Escala del gráficu de les conexones: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Descargar escala gráfica:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Escala gráfica de descarga:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Colores: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Fondu" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Rexella" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Descarga actual" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Promediu descarga n'execución" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Promediu Descarga/sesión" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Xuba actual" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Promediu Xuba/tiempu" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Promediu xuba/sesión" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Conexones actives" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Barra de velocidá del iconu de sistema" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Kad-nodos actual" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Kad-nodos executando" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Kad-nodos sesión" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Seleicionar" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Árbol" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Númberu de versiones de veceros a amosar (0=ensin llímite)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "¡¡¡ AVISU !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Nueves conexones máx. / 5 segs" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Tamañu del buffer de ficheru: 240000 bytes" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Tamañu cola d'espera: 5000 veceros" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Intervalu d'actualización de conexón al sirvidor: Desactiváu" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Tema a usar: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Amosar \"Xestor rápidu d'enllaces eD2k\", en toles ventanes." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Amosar info estendía nes llingüetes de les categoríes" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Amosar índices de tresferencia nel títulu" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Amosar índices de tresferencia nel títulu" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Enantes del nome de l'aplicación" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Dempués del nome de l'aplicación" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Amosar anchor de banda escedente" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Orientación vertical de la barra de ferramientes" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Ficheros de la cola de descarga" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Amosar porcentax de progresu" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Amosar barra de progresu" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Planu" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "3D" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Auto-ordenar ficheros (Alta CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule ordenará automáticamente les columnes na to llista de descargues" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parámetros de conexón esterna" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Aceutar conexones esternes" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP de la interface que ta escuchando" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Introduz una IP válida de la interface que ta escuchando. Un campu ermu o " "0.0.0.0 significará cualesquier interface." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "Puertu TCP:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Habilitar UPnP port forwarding nel puertu EC" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Contraseña" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Parámetros del sirvidor web" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Aniciar sirvidor web al entamu" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Plantía Web" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Contraseña alministrador" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Activar invitáu" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Contraseña invitáu" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Usar forwarding de puertos UPnP nel puertu del sirvidor web" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Puertu HTTP del sirvidor web (Opcional)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Tiempu d'actualización de páxina (en segs)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Activar compresión gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "Aceutar" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Aplicar cualesquier cambéu fechu nes opciones." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Encaboxar cualesquier cambéu fechu nes opciones." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Títulu :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Comentariu : " #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Direutoriu entrante :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Cambiar prioridá a nuevos ficheros asignaos :" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "Non cambiar" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Seleiciona color pa esta categoría (seleicionada) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Reafitar" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Calca esti botón pa llimpiar el registru." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" "Click nesti botón p'actualizar la llista de sirvidores dende una URL ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Llista de sirvidores" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Introduz la url a un ficheru server.met y calca'l botón de la esquierda " "p'actualizar la llista de sirvidores conocíos." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Amestar sirvidor manualmente: Nome" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Introduz el nome del nuevu sirvidor" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Puertu" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Introduz la IP del sirvidor, usando'l formatu X.X.X.X." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Introduz el puertu del sirvidor" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Amestar manualmente un sirvidor (rellena los campos) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Rexistru" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Info. sirvidores" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Info ED2K" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Info Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Click nesti botón p'actualizar la llista de nodos dende la URL ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nodos (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Introduz equí la url al ficheru nodes.dat y calca'l botón de la esquierda, " "p'actualizar la llista de nodos conocíos." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Estadístiques nodos" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Coneutar" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Nuevu nodu" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Puertu:" #: src/muuli_wdr.cpp:2763 #, fuzzy msgid "Bootstrap from known clients" msgstr "" "Coneutar dende \n" "veceros conocíos" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Desconeutar Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Usar Identificación Segura d'Usuariu" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Encamiéntase a activar esta opción. Nun recibirá créditos si la ISU " "(Identificación Segura d'Usuariu) nun ta habilitada." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Ofuscación de protocolu" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Sofitu d'ofuscación de protocolu" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Esta opción activa la ofuscación de protocolu, y fai que aMule aceute " "conexones ofuscaes de otros veceros." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Usar ofuscación pa conexones salientes" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Esta opción fai que aMule use ofuscación de protocolu cuando se coneuten " "otros veceros/sirvidores." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Aceutar namái conexones ofuscaes" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Esa opción fai que aMule namái aceute conexones ofuscaes. Tendrá menos " "fontes, pero tol so tráficu sedrá ofuscáu." #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Toos" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Dengún" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Quién pue adicar los mios ficheros compartíos:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" "Seleiciona quién pue solicitar adicar la nuesa llista de ficheros compartíos." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Fieltráu de IPs" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Fieltru veceros" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Habilitar fieltráu de IPs de veceros definíu nel ficheru ~/.aMule/ipfilter." "dat" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Fieltru sirvidores" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Habilitar fieltráu de IPs de sirvidores definíu nel ficheru ~/.aMule/" "ipfilter.dat" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Recargar llista" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "Recargar llista de fieltráu de IPs dende ficheru ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Actualizar agora" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Auto-actualizar el fieltráu de IPs al entamu" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Nivel de fieltráu:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Fieltrar siempres IP's de LAN" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Control paranoicu de IPs non comprobaes" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Refugar paquetes si la ip del veceru ye diferente de la ip dende au el " "paquete ye recibíu. Usar con curiáu." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Usar el ipfilter.dat de sistema si ta disponible" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Si nun s'alcuentra un ficheru ipfilter.dat llocal, permitir l'usu d'un " "ficheru ipfilter de sistema" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Activar Robla online" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Habilitar la escritura de ficheros del SO, suel usase pa criar robles por " "aplicaciones esternes." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Frecuencia d'actualización (segs):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" "Cambiar la frecuencia (en segundos) de l'actualización de la robla-online" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Guardar ficheru de robla online en: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Click equí pa seleicionar el direutoriu que contién los ficheros de robles-" "online." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Fieltrar mensaxes entrantes (sacantes conversación actual):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Fieltrar tolos mensaxes" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Fieltrar mensaxes de xente que nun ta na to llista de collacios" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Fieltrar mensaxes de veceros desconocíos" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Fieltrar mensaxes que contienen (usa ',' como separtador):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "amiesta equí les pallabres que amule tien de fieltrar y bloquiar mensaxes " "incluyíos" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Amosar mensaxes recibíos nel rexistru" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Comentarios" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Fieltrar comentarios que contengan (usar ',' como separtador):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Conexón automática al sirvidor ensin proxy" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Habilitar autentificación" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Habilita/deshabilita autentificación usuariu/contraseña" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Nome d'usuariu:" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "El nome d'usuariu a usar pa coneutar al proxy" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Contraseña:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "La contraseña a usar pa coneutar al proxy" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Habilitar Proxy" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Habilitar/Deshabilitar soporte Proxy" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Triba Proxy:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Sirvidor Proxy:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Nome del host del proxy" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Puertu Proxy:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "El puertu del proxy" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Coneutar a:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Conexón a aMule remotu" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Nome usuariu:" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Remembrar estes opciones" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Habilita mou estendíu de depuración al aniciu" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Abrir el ficheru" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Mensaxes de categoríes:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Esperando..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Amestar imports" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Reintentar seleicionáu" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Desaniciar seleicionáu" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Tipos Eventos" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Xubes aceutaes :" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Anubre los ficheros compartíos" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Seleicionar fieltru de vistes" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Xubes actives" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Amosar Veceros" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Recargar llista" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Recargar los tos ficheros compartíos" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Unviar" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Unviar un mensax específicu." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Zarrar esta sesión de charra" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Coneutar a cualesquier sirvidor y/o Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Fich compartíos" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Deshabilitáu [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/seg" msgstr[1] "bytes/seg" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "segs" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "mins" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "hores" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Díes" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "too" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "el restu" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Incompletu" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Deteníu" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Vídeu" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Ficheru" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Testu" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Activu" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Esperando a ficheru part matando filu..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Importando %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Lleendo direutoriu temp" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Obteniendo información básica de ficheru info de descarga" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Criando ficheru de destín" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Cargando datos dende l'antigua descarga del ficheru (%u de %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Atroxando bloque de datos nun nuevu ficheru de descarga (%u de %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Obteniendo información del ficheru fonte de descarga" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Amestando descarga y guardando nuevu ficheru part" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importar ficheros part" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Estáu" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Hash de ficheru" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Discu: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "¡Por favor escueye un direutoriu pa guetar por descargues temporales! " "(incluyiránse subdireutorios)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "¿Quies que los ficheros fonte d'una descarga importada satisfactoriamente " "seyan desaniciaos?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "¿Desaniciar fontes?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "ERROR: Fallu al criar el ficheru part" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Intentando cargar copia de seguridá del ficheru met dende %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "ERROR: Nun pudo abrise'l ficheru part.met: %s ===> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "ERROR: el ficheru part.met tien tamañu 0: %s ===> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "ERROR: Versión de ficheru part.met Inválida: %s ==> %s" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "ERROR: %s (%s) ta toyíu (cuenta d'etiquetes errónea), nun se pue cargar el " "ficheru." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "ERROR: %s (%s) ta toyíu (cuenta d'etiquetes errónea), nun se pue cargar el " "ficheru." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Intentando recuperar info de ficheru..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "Recuperando ficheru ensin nome - recuperarase como RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "Recuperóse tola info disponible del ficheru :D - Tentando usala..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Nun pudo recuperase la info de ficheru..." #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Fallu al abrir %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "AVISU: %s pue tar toyíu (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "FALLU salvando ficheru part: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "ERROR E/S atroxando ficheru part: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Nun pue recuperase la duración de '%s' - usando'l ficheru %s." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "de dalgún mou el tamañu de '%s' ye 0 - usando ficheru %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Fallu al guardar ficheru part.met.seeds por %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Guardáu %i semiente de fontes en ficheru part: %s (%s)" msgstr[1] "Guardaes %i semientes de fontes en ficheru part: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Guardáu %i semiente de fontes en ficheru part: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Fallu lleendo semientes del ficheru part (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Parte toyía alcontrada (%i) en %d parte del ficheru %s - Resultáu del hash " "del ficheru |%s| Hash del ficheru |%s|" msgstr[1] "" "Parte toyía alcontrada (%i) en %d partes del ficheru %s - Resultáu del hash " "del ficheru |%s| Hash del ficheru |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Parte (%i) completa alcontrada en %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Recodificación finada %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Fallu inesperáu mientres se completaba %s. Ficheru posáu" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Descarga finada: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Desaniciando ficheru: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "AVISU: Nun pue criase'l hash de la parte descargada, set de hashes " "incompletu pa '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "ERROR: Nun pue criase'l hash de la parte descargada, set de hashes " "incompletu pa (%s). Esto nun tendría de pasar enxamás" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "AVISU: Nun hai espaciu llibre nel discu! Posando ficheru: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Parte descargada %i toyía nel ficheru: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Recuperada parte toyía %i de %s -> Bytes salvaos: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Asignando" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Espaciu en discu insuficiente" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Descargáu" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "ERROR: Fallu al abrir ficheru part '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Por defeutu" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albanés" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Árabe" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturianu" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Euskera" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Búlgaru" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Catalán" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Chinu (simplificáu)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Chinu (Tradicional)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Croata" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Checu" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Danés" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Holandés" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Inglés (U.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estoniu" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finlandés" #: src/Preferences.cpp:648 msgid "French" msgstr "Francés" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Gallegu" #: src/Preferences.cpp:650 msgid "German" msgstr "Alemán" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Griegu" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebréu" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Húngaru" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italianu" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italianu (Suizu)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Xaponés" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Coreanu" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lituanu" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Noruegu" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polacu" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugués" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugués (Brasil)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Albanés" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Rusu" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Eslovenu" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Español" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Suecu" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turcu" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ucranianu" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Llingua: " #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Non disponible" #: src/Preferences.cpp:906 msgid "no options available" msgstr "opciones non disponibles" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Categoría inválida alcontrada, saltando" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "Puertu TCP nun pue ser más altu de 65532 darréu que'l socket del sirvidor " "UDP ye TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Puertu por defeutu que s'usará (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Quitando direutoriu compartíu non esistente: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Conexón" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Direutorios" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Sirvidores" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Ficheros" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Seguridá" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Interface" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Fieltros" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Controles remotos" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Robla online" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Avanzáu" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Eventos" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Debugging" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Nun cambies estos parámetros sacante que sepas\n" "lo que faes, de nun ser d'esta miente pues\n" "facer que aMule furrule peor.\n" "\n" "aMule furrulará bien ensin que camudes dengún\n" "d'estos parámetros." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Error al coneutar configuración con programa, col ID %d y clave %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" "Error al tresferir datos dende la configuración al programa, col ID %d y la " "clave %s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "La triba de proxy a la que tas coneutando" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" "Error al tresferir datos dende'l programa a la configuración, col ID %d y la " "clave %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule tien de reaniciase p'aplicar los cambeos:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- Puertu TCP camudáu.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- Puertu UDP camudáu.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Conexón esterna zarrada." #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Nueva conexón esterna, aceutada" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Conexón esterna zarrada." #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Ofuscación de protocolu" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "La to llista Auto-actualizable de sirvidores ta erma.\n" "La llista de sirvidores auto-actualizable al entamu desactivaráse." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Tienes habilitao les conexones externes, pero nun tienes especificada una " "contraseña.\n" "Les conexones externes nun puen ser habilitaes sacante qu'especifiques una " "contraseña válida." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Llingua camudada.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Direutoriu TEMP camudáu.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- Rede ED2K activada.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "eD2k y Kad tán desactivaos.\n" "Nun podrás coneutate hasta qu'actives a lo menos ún d'ellos." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad nun s'aniciará si'l to puertu UDP ta deshabilitáu.\n" "Habilita un puertu UDP o deshabilita Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Hai de reaniciar aMule agora.\n" "Si nun reanicies agora, nun sabemos si pasará daqué malo.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "La to auto-actualización de llista de sirvidores ta en blanco.\n" "Por favor introduz a lo menos una URL con un ficheru server.met válidu.\n" "Click nel botón \"Llista\" d'esta caxella pa introducir una URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Ficheros temporales" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Ficheros entrantes" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Robles online" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Escueye una carpeta pa %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Esplorar" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Seleiciona restolador" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Executable%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Editar llista de sirvidores" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Amesta equí les URL's pa descargar los ficheros server.met.\n" "Namái una url per llinia." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Intervalu d'actualización: %d seg" msgstr[1] "Intervalu d'actualización: %d segs" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Tiempu mediu del gráficu: %d min" msgstr[1] "Tiempu mediu del gráficu: %d mins" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Escala gráfica de conexones: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Tamañu del buffer de ficheru: %d byte" msgstr[1] "Tamañu del buffer de ficheru: %d bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Tamañu de la cola de xuba: %d veceru" msgstr[1] "Tamañu de la cola de xuba: %d veceros" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Intervalu de refrescu de la conexón al sirvidor: %d minutu" msgstr[1] "Intervalu de refrescu de la conexón al sirvidor: %d minutos" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Intervalu de refrescu de la conexón al sirvidor: Deshabilitáu" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "deshabilitáu" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "Executar comandu nel eventu `%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Habilitar execución de comandu nel núcleu" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Comandu del núcleu:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Habilitar execución de comandu na Interface" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Comandu de la Interface: " #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Les siguientes variables trocaránse:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "El tamañu mínimu tien de ser menor al tamañu máximu. Tamañu máximu inoráu." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Alerta de gueta" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Principal" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Nun se pue guetar en Kad si nun ta coneutáu a Kad" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "Nun pue facese una gueta en eD2k si nun se ta coneutáu a eD2k" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Fallu non esperáu mentantu tentaba guetar en Kad: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ID Ficheru" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Ficheru" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Descargar na categoría" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Amestar URLs opcionales pa esti ficheru" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Guetar ficheros rellacionaos (eD2k, gueta llocal)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Conseñar como ficheru conocíu" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Copiar l'enllaz eD2k al cartafueyos" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "Encaboxar" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Fallu al coneutar a tolos sirvidores ofuscaos llistaos. Tentándolo de nuevu " "ensin ofuscación." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Fallu al coneutar a tolos sirvidores." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Protocolu eD2k deshabilitáu nes preferencies, nun se coneuta." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" "Nun s'alcontraron sirvidores válidos pa coneutar na llista de sirvidores" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Coneutáu a %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Conexón afitada en: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "Fallu fatal coneutando. La conexón a Internet podría tar desactivada" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Conexón perdía con %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) paez tar cayíu." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) paez tar enllenu." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Reintentaráse la conexón automática al sirvidor en %d segundu" msgstr[1] "Reintentaráse la conexón automática al sirvidor en %d segundos" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Conexón perdida" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Coneutando con %s (%s:%i) fallíu" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "ERROR: Socket inválidu al comprobar el timeout" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Intentu de conexón con %s (%s:%i) tiempu escosáu." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Recibióse'l caberu resultáu de la to gueta DNS, descartando." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Cargando ficheru server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "¡Nun s'alcontró ficheru server.met!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Fallu al cargar el ficheru server.met '%s', alcontróse formatu desconocíu." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "¡Fallu al abrir server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Ficheru server.met toyíu, alcontróse versión non válida: 0x%x, tamañu %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i sirvidor alcontráu en server.met" msgstr[1] "%i sirvidores alcontraos en server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d sirvidor amestáu" msgstr[1] "%d sirvidores amestaos" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "IO error lleendo'l ficheru known.met: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Sirvidor non amestáu: [%s:%d] nun especificaste un puertu válidu." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Sirvidor non amestáu: La IP de [%s:%d] ta fieltrada o nun ye válida." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "Sirvidor non amestáu: Sirvidor IP:Puertu [%s:%d] alcontráu na llista." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Sirvidor amestáu: Sirvidor en [%s:%d] usando'l nome '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Tas coneutáu al sirvidor, que tentes desaniciar. Por favor desconéutate " "primero." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Fallu al abrir '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "¡Fallu al guardar server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "URL non válida" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "Descarga finada de la llista de sirvidores de %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Nun s'alcontró una entrada de direición en 'addresses.dat'. Por favor, apega " "una llista de sirvidores válida nesti ficheru pa poder actualizar de mou " "automáticu la llista de sirvidores." #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Descargando llista de sirvidores de %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "ALVERTENCIA: especificada una URL inválida pa l'actualización automática de " "sirvidores : %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "Fallu en addresses.dat, server.met de la url de auto descarga inválidu" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Fallu al descargar la llista de sirvidores dende %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Sirvidor llocal ye fieltráu polos Fieltros IP, ¡coneutando a un sirvidor " "distintu!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Nome del Sirvidor" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Direición" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Puertu" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Descripción" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Usuarios" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Sirvidor fixu" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versión" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Tas coneutáu a un sirvidor, que tas tentando desaniciar. Desconéutate " "enantes. El sirvidor NUN se desaniciará." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Nome desconocíu)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "De xuru quies desaniciar el sirvidor fixu %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Sirvidores (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Sirvidor" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Coneutar al sirvidor" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Conseñar como sirvidor fixu" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Conseñar como sirvidor non-fixu" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Conseñar sirvidores como fixos" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Conseñar sirvidores como non-fixos" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Desaniciar sirvidor" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Desaniciar sirvidores" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Desaniciar tolos sirvidores" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Copiar los enllaces eD2k al cartafueyos" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Reconeutar al sirvidor" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "¿De xuru quies desaniciar tolos sirvidores?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "¿De xuru quies desaniciar el sirvidor seleicionáu?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "¿De xuru quies desaniciar los sirvidores seleicionaos?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "ERROR: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "AVISU: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "El nuevU ID-Veceru ye %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "AVISU: ¡Recibiste ID-Baxa!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tEsto asocede porque tas darrera d'un torgafueos o d'un router." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPa mas información, por favor ve a http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "¡Información recibía del sirvidor desconocía! - enforma pequeña" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Recibíu %d nuevu sirvidor" msgstr[1] "Recibiéronse %d nuevos sirvidores" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Guardáu de llista de sirvidores fechu." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "El sirvidor refuga'l caberu comandu" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Paquete bogus recibíu dende'l sirvidor: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Fallu mientres que se taba procesando un paquete dende'l sirvidor: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Nun pue criase un filu de resolución de DNS pa coneutar con %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "Sirvidor IP %s (%s) ta fieltráu. Nun coneutará." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "usando ofuscación de protocolu." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Coneutando a %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Imposible resolver dns pal sirvidor %s: ¡Imposible coneutar! " #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Sirvidor non amestáu: IP o nome de host non especificáu." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Sirvidor non amestáu: Sirvidor-puertu especificáu non válidu." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Estáu de eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Estáu Kademlia:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "Executándose en %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Executando" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Estáu:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Estáu de conexón:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Tres torgafueos - abre'l puertu TCP %d nel to router o torgafueos" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "Estáu de conexón UDP:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Tres torgafueos - abre'l puertu UDP %d nel to router o torgafueos" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Estáu tres tornafueos:" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Nun se requier collaciu - puertu TCP abiertu" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Nun se requier collaciu - puertu UDP abiertu" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Non collaciu" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Coneutando a collaciu" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Coneutáu a collaciu en %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Fontes indizaes: %s" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Pallabres clave indizaes:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Notes indizaes: " #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Notes indizaes:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Media d'usuarios:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Media de ficheros:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Non executando" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Amestando ficheru %s a compartíos" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Alcontróse %i ficheru compartíu" msgstr[1] "Alcontráronse %i ficheros compartíos" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Alcontróse %i ficheru compartíu, %i desconocíu" msgstr[1] "Alcontráronse %i ficheros compartíos, %i desconocíos" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "FALLU: Tentando compartir %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Direutoriu compartíu non alcontráu, saltando: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Ensin ficheros que compartir en direutoriu: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Nome usuariu:" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Velocidá de descarga" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Velocidá de xuba" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Disponibles :" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Estáu de la xuba" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Estáu de la descarga" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Nome de ficheru" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Fich compartíos" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Peticiones" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Peticiones aceutaes" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Datos tresferíos" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Media Compartíu" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Partes obteníes" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Fontes completes" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Direutoriu" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Amestar Comentariu/Valoración" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Editar Comentariu/Valoración" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Renomar" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Amestar ficheros en colleición a la llista de descargues" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Copiar &URL magnéticu al cartafueyos" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Copiar l'enllaz eD2k al cartafueyos (&Fonte)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Copiar l'enllaz eD2k al cartafueyos (Fonte) (&Con opciones de cifráu)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Copiar l'enllaz eD2k al cartafueyos (&Nome del host)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Copiar l'enllaz eD2k al cartafueyos (Nome del host) (Co&n opciones de cifráu)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Copiar l'enllaz eD2k al cartafueyos (Información &AICH)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Copiar l'enllaz eD2k al cartafueyos (Información &AICH)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Necesites IDAlta pa criar un enllaz fonte válidu" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Ficheros Compartíos (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Ficheru part]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Nome de ficheru" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Datos xubíos (Sesión (Total)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Total por tráficu escedente (Paquetes): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Escedente por peticiones de ficheru (Paquetes): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Escedente por intercambéu de fontes (Paquetes): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Tráficu escedente de sirvidores (Paquetes): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Tráficu escedente Kad (Paquetes): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Cifráu escedente (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Xubíes actives: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Xubíes n'espera: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Total de xubíes satisfactories: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Total de xubíes fallíes: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Tiempu mediu de xuba: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Datos descargaos (Sesión (Total)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Fontes alcontraes: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Descargues actives (partes): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Índiz XU:DE Sesión (Total): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Velocidá media de descarga (Sesión): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Velocidá media de xuba (Sesión): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Velocidá máxima de descarga (Sesión): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Velocidá máxima de xuba (Sesión): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Reconexones: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Tiempu dende la primer tresferencia: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Coneutáu al sirvidor dende: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Conexones actives (estimáu): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Algamóse'l llímite máximu de conexones: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Media de conexones (estimáu): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Picu de conexones (estimáu): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Veceros" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Desconocíu: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Filtráu: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Baneáu: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Total: %i Conocíu(os): %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Sirvidores activos: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Sirvidores cayíos: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Total: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Sirvidores desaniciaos: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Sirvidores fieltraos: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Usuarios en sirvidores activos: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Ficheros en sirvidores activos: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Usuarios totales: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Ficheros totales: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Ocupación de Sirvidores: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Númberu de ficheros compartíos: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Tamañu total de ficheros compartíos: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Tamañu mediu de ficheru: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Sistema Operativu" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Non recibíu" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Conexones actives (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Non disponible" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Enxamás" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Comandu `%s' con pid `%d' finó con códigu `%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Executa y cuela." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Formatu IP non válidu. Usa xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Esti comandu requier un argumentu. Argumentos válidos: 'all (too)' o un " "númberu.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Procesando por hash: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Procesando por nome de ficheru: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Esti comandu requier un argumentu. Argumentos válidos: un hash de ficheru.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Númberu inválidu\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" "Hash non válidu (la llonxitú tendría de ser esautamente 32 carauteres)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Teclea '%s' pa tener más aida.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Tamañu de descarga: %i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Solicitú fallía con un fallu desconocíu." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operación satisfactoria." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Solicitú fallía col siguiente fallu: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "El Fieltru IP pa veceros ye %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "APAGÁU" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "ENCENDÍU" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "El Fieltru IP pa sirvidores ye %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "El nivel de fieltráu de IP actual ye %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Llímites del anchor de banda: Xuba: %u kB/s, Baxada: %u kB/s\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Coneutáu a %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Coneutando agora" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "tres tornafueos" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Descarga:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Xuba:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Veceros na cola:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Fontes totales:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Númberu de resultaos de la gueta: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 #, fuzzy msgid "Search progress not available" msgstr "Amosar porcentax de progresu" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Recibióse una rempuesta desconocía dende'l sirvidor, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Amosar una información curtia sobro l'estáu." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Amosar estáu de conexón, velocidá xuba/descarga actual, etc.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Amosar árbol d'estadístiques ensembre." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Opcionalmente, un númberu ente 0-255 pue ser un argumentu d'esti comandu,\n" "que diz cuántes entraes del árbol de versión de veceru tendríen d'amosase.\n" "Con 0 o ensin valor significa 'ensin llímite'.\n" "\n" "Exemplu: 'statistics 5' amosará namái les 5 versiones que más se repiten de " "cualesquier veceru.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Finar aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Finar el núcleu remotu (amule/amuled) en funcionamientu.\n" "Esto finará tamién el veceru mou testu, darréu que nun se pue\n" "usar ensin un núcleu en funcionamientu.\n" #: src/TextClient.cpp:861 #, fuzzy msgid "Reload the given object." msgstr "Recargar l'oxetu dau." #: src/TextClient.cpp:862 #, fuzzy msgid "Reload shared files list." msgstr "Recargar llista de ficheros compartíos." #: src/TextClient.cpp:864 #, fuzzy msgid "Reload IP filtering table." msgstr "Recargar tabla de fieltru de IP dende ficheru." #: src/TextClient.cpp:865 #, fuzzy msgid "Reload current IP filtering table." msgstr "Seleición nivel de fieltráu de IP" #: src/TextClient.cpp:866 #, fuzzy msgid "Update IP filtering table from URL." msgstr "Recargar tabla de fieltru de IP dende ficheru." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Coneutáu a la rede." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Esto coneutará a toles redes que tean habilitaes nes opciones.\n" "Opcionalmente tamién puedes especificar un sirvidor de forma IP:Puertu, pa\n" "coneutar a esi sirvidor namái. La IP tien de ser una direición IPv4,\n" "o un nome DNS." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Coneutar namái a eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Coneutar namái a Kad" #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Desconeutáu de la rede." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Esto desconeutaráte de toles redes nes que tas coneutáu nesti intre.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Desconeutar de eD2k namái." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Desconeutar de Kad namái." #: src/TextClient.cpp:879 #, fuzzy msgid "Add an eD2k or magnet link to core." msgstr "Amiesta un enllaz eD2k o magnet al núcleu." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "El enllaz eD2k a amestar pue ser:\n" "*) un enllaz a un ficheru (ed2k://|file|...),amestaráse a la cola de " "descargues,\n" "*) un enllaz a un sirvidor (ed2k://|server|...), amestaráse a la llista de " "sirvidores,\n" "*) o un enllaz a una llista de sirvidores, en talu casu, tolos sirvidores na " "llista\n" "amestaránse a la llista de sirvidores.\n" "\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Asigna un valor d'opción" #: src/TextClient.cpp:885 #, fuzzy msgid "Set IP filtering preferences." msgstr "Asignar opciones de fieltráu de IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Activa el fieltru pa veceros y sirvidores." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Desactiva el fieltru pa veceros y sirvidores." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Activa/Desactiva el fieltru IP pa veceros." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Activa el fieltru pa veceros." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Desactiva el fieltru pa veceros." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Activa/Desactiva el fieltru pa sirvidores." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Activa el fieltru pa sirvidores." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Desactiva el fieltru pa sirvidores." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Seleición nivel de fieltráu de IP" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Niveles válidos nel fieltru 0-255, y el valor por defeutu (inicial)\n" "ye 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Asignar llímites d'anchor de banda." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "El valor dau a estos comandos han ser en kilobytes/seg.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Asignar un llímite de xuba." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "El valor dau a estos comandos han ser en kilobytes/seg.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Asignar un llímite de descarga." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Obtener y amosar un valor d'opciones" #: src/TextClient.cpp:907 #, fuzzy msgid "Get IP filtering preferences." msgstr "Obtener opciones de fieltráu de IP" #: src/TextClient.cpp:908 #, fuzzy msgid "Get IP filtering state for both clients and servers." msgstr "Obtener estáu del fieltru IP pa veceros y sirvidores." #: src/TextClient.cpp:909 #, fuzzy msgid "Get IP filtering state for clients only." msgstr "Obtener estáu del fieltru IP pa veceros." #: src/TextClient.cpp:910 #, fuzzy msgid "Get IP filtering state for servers only." msgstr "Obtener estáu del fieltru IP pa sirvidores." #: src/TextClient.cpp:911 #, fuzzy msgid "Get IP filtering level." msgstr "Seleición nivel de fieltráu de IP" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Obtener llímites d'anchor de banda." #: src/TextClient.cpp:915 #, fuzzy msgid "Execute a search." msgstr "Fai una gueta en kad." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Una gueta por triba, tien d'especificase la triba:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Exemplu: 'search kad ficheru' executara una gueta en kad de \"ficheru\".\n" #: src/TextClient.cpp:917 #, fuzzy msgid "Execute a global search." msgstr "Fai una gueta global." #: src/TextClient.cpp:918 #, fuzzy msgid "Execute a local search" msgstr "Fai una gueta llocal." #: src/TextClient.cpp:919 #, fuzzy msgid "Execute a kad search" msgstr "Fai una gueta en kad." #: src/TextClient.cpp:921 #, fuzzy msgid "Show the results of the last search." msgstr "Amuesa los resultaos de la cabera gueta." #: src/TextClient.cpp:922 #, fuzzy msgid "Return the results of the previous search.\n" msgstr "Devuelve los resultaos de la gueta anterior.\n" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "Amuesa'l progresu d'una gueta." #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "Amuesa'l progresu d'una gueta.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Entamar descargando un ficheru" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "El númberu d'un ficheru de la cabera gueta tien de dase.\n" "Exemplu: 'download 12' aniciará la descarga del ficheru col númberu 12 de la " "gueta anterior.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Posar descarga." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Resumir descarga." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Encaboxar descarga." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Asignar prioridá de descarga." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Fixa prioridá de la descarga a Baxa, Normal, Alta o Auto.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Afitar la prioridá a baxa." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Afitar la prioridá a normal." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Afitar la prioridá a alta." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Afitar la prioridá a auto." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Amosar coles/llistes." #: src/TextClient.cpp:952 #, fuzzy msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Amosar cola xuba/descarga, llista de sirvidores o llista de ficheros " "compartíos.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Amosar cola de xuba" #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Amosar cola de descarga." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Amosar rexistru." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Amosar llista de sirvidores." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Llimpiar rexistru." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Comandu en desusu, usa %s." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Esti ye un comandu en desusu, y desaniciaráse nel futuru.\n" "Usa '%s' en so llugar.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Veceru de testu aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Convirtiendo antiguos hashsets AICH en '%s' a 64b en '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "ALERTA: El nome de ficheru '%s' ye incorreutu y sedrá renomáu a '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "ALERTA: El ficheru '%s' yá esiste, renomando el nuevu a '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "¿Daveres quies encaboxar y desaniciar tolos ficheros d'esta categoría?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Requierse Confirmación" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Abondes conexones" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Ensin catalogar" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Seleicionar fieltru de vistes" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Amestar categoría" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Editar categoría" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Desaniciar categoría" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Fallu al abrir el ficheru (%s), desaniciando de la llista de compartíos." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Hashset solicitáu de ficheru desconocíu: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Resumiendo xubíes del ficheru: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Suspendiendo xuba del ficheru: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Fallu al executar el comandu '%s' nel eventu `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Descarga fecha ensembre" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "El camín completu al ficheru." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "El nome del ficheru ensin el camín." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "El hash eD2k del ficheru." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "El tamañu del ficheru en bytes." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Tiempu d'actividá de descarga acumuláu." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Aniciada Nueva sesión de charra" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Remitente del mensax." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Ensin espaciu" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Partición de discu" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Fallu completando" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Procesando númberu de ficheru %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Entrugaste por hashes de partes (Namái usáu por ficheros > 9.5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s --->¡ Nun esiste'l ficheru !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, el criador d'enllaces eD2k p'aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "¡Bienllegáu!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Parámetros d'entrada" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Ficheru a codificar" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Amestar URLs opcionales pa esti ficheru" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Introduz equí el ficheru del que quieras calcular l'enllaz eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Introduz equí la URL que quies amestar al enllaz eD2k: Amiesta / al final pa " "permitir a aLinkCreator amestar el nome del ficheru actual" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Desaniciar" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Criar enllaz con hashes de partes" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Aida pa separtar ficheros nuevos y raros más aína, el costu sedrá un tamañu " "d'enllaz mayor" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Hash de ficheru MD4" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Hash de ficheru eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "Enllaz eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Guardar" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Copiar al cartafueyos" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Abrir" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Abrir un ficheru pa calcular el so enllaz eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Copiar l'enllaz eD2k calculáu al cartafueyos" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Guardar como" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Guardar l'enllaz eD2k calculáu nun ficheru" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Tocante a aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Seleiciona el ficheru del que quieras calcular l'enllaz eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Nun pue abrise'l cartafueyos" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "¡Res pa copiar agora!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Seleiciona'l ficheru pal enllaz eD2k calculáu" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Imposible abrir" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Por favor, introduz un nome de ficheru" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "¡Nun hai res agora pa guardar!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, el criador d'enllaces eD2k de aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Imáxenes dende http://www.everaldo.com y http://www.icomania.com\n" "y http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distribuyíu baxo la llicencia GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Calculando hash..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator trabayando pa ti" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Calculando MD4 Hash..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Calculando eD2k Hashes..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "¡ Encaboxáu !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Fináu en %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "¡ Yá amestaste esa URL !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Por favor, introduz una URL" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Nun ye dable abrir %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i día(es) %i hora(es) %i min %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, Estadístiques aMule en llinia" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Máximu índiz Desc dende que wxCas ta executándose: " #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Máximu índiz Desc absolutu durante execuciones anteriores de wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistema" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Parar auto recargar" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Salvar imaxe d'estadístiques en llinia" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Imprentar imaxe d'estadístiques en llinia" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Opciones" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Tocante a wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Aniciar Auto Recargar" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Auto recargar, deteníu" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Auto recargar, aniciáu" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Salvar imaxe d'estadístiques" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Estadístiques aMule en llinia" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Hebo un fallu imprentando.\n" "Seique la to imprentadora actual nun tea configurada" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Imprentando" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, Estadística de robla en llinia de aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Eeepa, aMule nun ta executándose..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule yá ta executándose" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule ta executándose, pero ta desconeutáu" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule ta coneutando..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh Oh, l'estáu d'aMule ye desconocíu..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " foi executáu durante " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " ¡ ta deteníu !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " ¡ nun ta coneutáu !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " ta coneutando..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " ta faciendo daqué raro, ¡ compruébalo !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " ta coneutáu a " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "apagáu" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " coneutáu " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " con " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Total Descargáu: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Xubío:" #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Descarga de sesión" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Descargáu:" #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Xuba: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Compartiendo:" #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " ficheru(os), Veceros na cola: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Tiempu:" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " en " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Media de carga del sistema (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Tiempu d'execución del sistema: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Direutoriu que contién el ficheru amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Introduz el direutoriu au s'alluga'l to ficheru amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Intervalu de refrescu en segundos" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Xenerar un ficheru d'estadístiques siempres que s'actualice" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Introduz el direutoriu au quies xenerar la imaxe d'estadístiques" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Xube periódicamente la to imaxe d'estadístiques al sirvidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "Url FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Direutoriu FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Introduz la URL del to sirvidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Introduz el direutoriu del to sirvidor FTP au poner la to imaxe " "d'estadístiques" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Usuariu" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Introduz el nome d'usuariu pa coneutate al to sirvidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Introduz la contraseña d'usuariu pa coneutate al to sirvidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Intervalu d'actualización de FTP en minutos" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Validáu" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Direutoriu que contién el to ficheru de robla" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Direutoriu au se xenera la imaxe d'estadístiques" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Carga la plantía " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Puertu HTTP del sirvidor web" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Usar forwarding de puertos UPnP nel puertu del sirvidor web" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Puertu UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Usar compresión gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Contraseña d'accesu total pal sirvidor web" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Contraseña d'invitáu pa sirvidor web" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Permitir accesu a invitáu" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Denegar accesu a invitáu" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Cargar/guardar la configuración del sirvidor web dende/a aMule remotu" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Camín al ficheru config de aMule. ¡NUN USAR DIREUTAMENTE!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Deshabilitar intérprete PHP (desusu)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Recompila páxines PHP pa otra solicitú" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Sirvidor Web aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "conexón aceutada del veceru web\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "FALLU: nun pue aceutase la conexón del veceru web\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Solicitú fallía col siguiente fallu: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Ficheru índiz non alcontráu: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sesión finada - solicitando conexón\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sesión ok, coneutáu\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sesión ok, non coneutáu\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Nun hai denguna sesión - coneute de nuevu\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sesión criada - solicitando conexón\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Procesando solicitú [orixinal]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Nun s'especificó dengún password, nun se permite l'accesu." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Comprobando contraseña\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Hash de la contraseña incorreutu\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Contraseña ok\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Contraseña incorreuta\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" "Nun introduxisti denguna contraseña. Nun ta permitía una contraseña en " "blancu.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Desconexón solicitada\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Procesando solicitú [redirixía]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Ficheru part %s (%s) nun tien ficheru de semientes" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Ficheru part %s (%s) tien un ficheru de semientes ermu" #, fuzzy #~ msgid "Download status" #~ msgstr "Estáu de la descarga" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Intervalu d'actualización: %d seg" #~ msgstr[1] "Intervalu d'actualización: %d segs" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "Comentarios y valoraciones entá nun tán sofitaos na gui remota" #~ msgid "Transferring" #~ msgstr "Tresfiriendo" #, fuzzy #~ msgid "QR: ???" #~ msgstr "LC: %u" #~ msgid "QR: %u" #~ msgstr "LC: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "En cola" #~ msgid "TODO - show progress of a search" #~ msgstr "TOU - amuesa'l progresu d'una gueta" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Entamando a criar el hash MD4 y AICH del ficheru: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Entamando a criar el hash MD4 del ficheru: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Entamando a criar el hash AICH del ficheru: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "ALERTA: Nun se pue desaniciar '%s' orixinal, criando copia de seguridá" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "ALERTA: Fallu al desaniciar %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Calificación (total):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Tentar tresferir partes completes en toles xubes" #~ msgid "Networks window" #~ msgstr "Ventana de redes" #~ msgid "Searches window" #~ msgstr "Ventana de gueta" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Descargando" #~ msgid "Shared files window" #~ msgstr "Ventana de ficheros compartíos" #~ msgid "Messages window" #~ msgstr "Ventana de mensaxes" #~ msgid "Statistics graph window" #~ msgstr "Ventana del gráficu de les estadístiques" #~ msgid "Preferences settings window" #~ msgstr "Ventana de la configuración de les preferencies" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Iconu de sistema perdíu, tentando recrialu..." #~ msgid "Transfers" #~ msgstr "Tráficu" #~ msgid "Files transfers window" #~ msgstr "Ventana de tresferencia de ficheros" #~ msgid "Unban" #~ msgstr "Realmitir" #~ msgid "Show Uploads" #~ msgstr "Amosar xubíes" #~ msgid "Show Queue" #~ msgstr "Amosar Cola" #~ msgid "Select View" #~ msgstr "Seleicionar Vista" #~ msgid "Client Software" #~ msgstr "Software Veceru" #~ msgid "Waited" #~ msgstr "N'espera" #~ msgid "Upload Time" #~ msgstr "Xubiendo" #~ msgid "Upload/Download" #~ msgstr "Xuba/Descarga" #~ msgid "Remote Status" #~ msgstr "Estáu remotu" #~ msgid "File Priority" #~ msgstr "Prioridá del ficheru" #~ msgid "Score" #~ msgstr "Resultáu" #~ msgid "Asked" #~ msgstr "Entrugáu" #~ msgid "Last Seen" #~ msgstr "Cabera comprobación" #~ msgid "Entered Queue" #~ msgstr "Entráu na cola" #~ msgid "Transferred Up" #~ msgstr "Xubío" #~ msgid "Transferred Down" #~ msgstr "Descargáu" #~ msgid "Userhash" #~ msgstr "Hash d'usuariu" #~ msgid "Encrypted" #~ msgstr "Cifráu" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "Cargaes %d semeyes de banderes." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Amosar xuba / Cola de xuba" #~ msgid "Clients on queue :" #~ msgstr "Veceros na cola :" #~ msgid "Current Session" #~ msgstr "Sesión actual" #~ msgid "Total" #~ msgstr "Total" #~ msgid "Requested :" #~ msgstr "Peticiones:" #~ msgid "Create backup for preview" #~ msgstr "Criar un copia pa la previsualización" #~ msgid "Files Transfers Window" #~ msgstr "Ventana de tresferencies de ficheros" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Total Usuarios: %s | Total Ficheros: %s" #~ msgid "Download size not received, downloading until connection is closed" #~ msgstr "" #~ "Nun se recibió tamañu de la descarga; descargando hasta que se zarre la " #~ "conexón" #~ msgid "HTTP download thread ended" #~ msgstr "Descarga HTTP filu fináu" #~ msgid "Host: %s:%i\n" #~ msgstr "Host: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Rempuesta: %i (Error: %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "ALERTA: Rempuesta erma na criación del mediu" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "FALLU: Códigu de redireición ensin URL" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country(): Fallu al cargar el datu del país dende " #~ msgid "Get IPFilter level." #~ msgstr "Obtener nivel de fieltráu de IP." #~ msgid "Makes a search." #~ msgstr "Fai una gueta." #~ msgid "Killed!" #~ msgstr "¡Matáu!" #~ msgid "Using amuleweb in '%s'." #~ msgstr "Usando amuleweb en '%s'." #~ msgid "Shutting down aMule..." #~ msgstr "Apagando aMule..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Les siguientes opciones camudaron nesta versión por razones de seguridá:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Activáu sofitu d'ofuscación de protocolu pa conexones entrantes y " #~ "salientes.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Desactivada l'actualización de la llista de sirvidores dende otru " #~ "veceru o sirvidor.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Pa más información de la sida d'estos cambeos, guete información\n" #~ "de \"fake servers\" na wiki de aMule http://wiki.amule.org.\n" #~ "Ye importante que llimpie cualesquier sirvidor falsu de la so llista de " #~ "sirvidores pa que aMule furrule correcho." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "Adicionalmente, les opciones del restolador foron restauraes. Por favor " #~ "configura les opciones del to restolador otra vegada si ye necesario.\n" #~ msgid "Fetching status..." #~ msgstr "Obteniendo estáu..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Usuarios: E: %s K: %s | Ficheros E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Veceru %s en IP:Puertu %s:%d usando %s %s %s" #~ msgid "Unable to determine selected browser!" #~ msgstr "¡Nun se pue determinar el restolador seleicionáu!" #~ msgid "User Defined" #~ msgstr "Definíu pol usuariu" #~ msgid "Firewalled" #~ msgstr "Tres Tornafueos" amule_2.3.1+git20151120.0023527bc2.orig/po/bg.po0000644000175000017500000052046612611472361017066 0ustar morphmorph# translation of source_strings.po to Bulgarian # aMule i18n resource file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. # Kry , 2004. # Boyan Ivanov , 2004. # # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2004-02-07 21:55+0200\n" "Last-Translator: Boyan Ivanov \n" "Language-Team: Bulgarian \n" "Language: bg\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.0.2\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Добавяне на приятел" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Трябва да въведете валиден адрес и порт" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "Грешка при запис на файла с кредити" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Грешка" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "Потвърждение за изход" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" #: src/amule.cpp:581 msgid "Server list download" msgstr "" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "" #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "" #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "" #: src/amule.cpp:1888 msgid "Kad started." msgstr "" #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "" #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "" #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Свързва" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "" #: src/amuleDlg.cpp:719 #, fuzzy msgid "Kad: Connected" msgstr "Връзкате е установена" #: src/amuleDlg.cpp:724 #, fuzzy msgid "Kad: Connecting" msgstr "Свързва" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Отказ" #: src/amuleDlg.cpp:775 #, fuzzy msgid "Stop the current connection attempts" msgstr "Спира текущите опити за свързване" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Разкачи" #: src/amuleDlg.cpp:781 #, fuzzy msgid "Disconnect from the currently connected networks" msgstr "Изключване от текущия сървър" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Връзка" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Кач.: %.1f(%.1f) | Свал.: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Кач.: %.1f | Свал.: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "Наистина ли желаете да изключите aМуле?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Потвърждение за изход" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "Изтегляне" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Съобщения" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Статистика" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Настройки" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "Фатална грешка: не можах да създам брояч" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "Фатална грешка: не можах да създам брояч" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "" #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "Свързва" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Неизвестен" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" #: src/BaseClient.cpp:1586 #, fuzzy msgid "Searching buddy for lowid connection" msgstr "изчакване за свързване..." #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr "" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr "" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "" #: src/BaseClient.cpp:2027 #, fuzzy, c-format msgid "Requested: %s\n" msgstr "Поискан:" #: src/BaseClient.cpp:2029 #, fuzzy, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Статистика за текущата сесия : Приети %d от %d заявки,%s осъществени\n" msgstr[1] "" "Статистика за текущата сесия : Приети %d от %d заявки,%s осъществени\n" #: src/BaseClient.cpp:2032 #, fuzzy, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Статистика за текущата сесия : Приети %d от %d заявки,%s осъществени\n" msgstr[1] "" "Статистика за текущата сесия : Приети %d от %d заявки,%s осъществени\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Заявен е несъществуващ файл" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "" #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Категория" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Изберете папка за входящи файлове" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "" #: src/ClientCreditsList.cpp:158 #, fuzzy, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Файлът с кредити зареден, %u клиента са разпознати" msgstr[1] "Файлът с кредити зареден, %u клиента са разпознати" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "" #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Връзкате е установена" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Връзката е разпадната" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Коментари за файла" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Потребителско име" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Име на файл" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Оценка" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Няма коментари" #: src/CommentDialogLst.cpp:105 #, fuzzy, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "Няма коментари" msgstr[1] "Няма коментари" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Автоматичен [Lo]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Автоматичен [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Автоматичен [Hi]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Ниско" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Нормален" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Високо" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Запитване" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Свързване чрез сървър" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Опашката е пълна" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "На опашката" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Изтегляне" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Получаване на hash сумите" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Не може LowID да се свърже към LowID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Твърде много връзки" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "" #: src/DataToText.cpp:73 msgid "Banned" msgstr "" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "" #: src/DataToText.cpp:132 msgid "Passive" msgstr "" #: src/DataToText.cpp:133 msgid "Link" msgstr "" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Завършен" #: src/DataToText.cpp:146 msgid "In progress" msgstr "" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Размер" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Пренесен" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Скорост" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Прогрес" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Източници" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Приоритет" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Статус" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "" #: src/DownloadListCtrl.cpp:411 #, fuzzy msgid "Are you sure that you wish to delete the selected file?" msgstr "" "Сигурни ли сте,че желаете да откажете свалянето и изтриете тези файлове ?\n" #: src/DownloadListCtrl.cpp:413 #, fuzzy msgid "Are you sure that you wish to delete the selected files?" msgstr "" "Сигурни ли сте,че желаете да откажете свалянето и изтриете тези файлове ?\n" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Автоматично" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Стоп" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Пауза" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "В&ъзобновява" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Преглед" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Файлове за сваляне (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "Искане на споделени файлове от '%s'" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Не са открити части от файлове" #: src/DownloadQueue.cpp:168 #, fuzzy, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Открити са %i части от файлове" msgstr[1] "Открити са %i части от файлове" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Сваляне %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Вие вече опитвате да свалите файла %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "" #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "" #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "" #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "" #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "" #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "" #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "" #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "" #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "" #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "" #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "" #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "" #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "" #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "" #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "" #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "" #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "" #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "" #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "" #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "" #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "" #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "" #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "" #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "" #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "" #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "" #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "" #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "" #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Приятели" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Показване на &детайли" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Добавяне на приятел" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Изтриване на приятел" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Изпращане на &съобщение" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Преглед на файловете" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Създаване на приятелска връзка" #: src/FriendListCtrl.cpp:169 #, fuzzy msgid "Are you sure that you wish to delete the selected friend?" msgstr "" "Сигурни ли сте,че желаете да откажете свалянето и изтриете тези файлове ?\n" #: src/FriendListCtrl.cpp:171 #, fuzzy msgid "Are you sure that you wish to delete the selected friends?" msgstr "" "Сигурни ли сте,че желаете да откажете свалянето и изтриете тези файлове ?\n" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "На опашката" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Поискан му е друг файл" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Файлове за качване: %i" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "На опашката" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Качване" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "готово" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Не" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Да" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Изтеглям..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "Свален:" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Грешка при зареждане на файла с кредити" #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "" #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "" msgstr[1] "" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Неизвестно: %i" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Завършено" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Пауза" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "" #: src/LibSocketAsio.cpp:1260 #, c-format msgid "Asio thread %d started" msgstr "" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Затвори" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Изчисти" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "кБ/с" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "" #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "" #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Изход" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Зареждам..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "" #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "" #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "" #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Търсене" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Тип" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Всеки" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Архиви" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Аудио" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD-изображения" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Картинки" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Програми" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Клипове" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Разширение" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Минимален размер" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Байта" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Максимален размер" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Старт" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Изтегляне" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Намерени източници: %i" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Общи" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "Няма" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Трансфер" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Изчистване" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Потвърди" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Няма оценки" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Грешен / Развален / Фалшив" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Лош" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Средно добър" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Добър" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Отличен" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Опресняване" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "" #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Добавяне" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Текущ" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Име на потребител:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Точки" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "Опашката е пълна" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "" #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Избери" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Видео плеър" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Качване" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Списък" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Диаграми" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Фон" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Мрежа" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Избор" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Коментар:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Нулира" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "" #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "" #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Всеки" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "" #: src/muuli_wdr.cpp:3169 msgid "Only to Logfile" msgstr "" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Изчакване" #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Активни качвания: %i" #: src/muuli_wdr.cpp:3371 #, fuzzy msgid "Percent of total files" msgstr "Общо файлове" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Споделени файлове (%i)" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Избор на филтър" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Активни качвания: %i" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Клиенти" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Качване" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Изпраща" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "" #: src/OtherFunctions.cpp:111 #, fuzzy msgid "byte" msgid_plural "bytes" msgstr[0] "Байта" msgstr[1] "Байта" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 #, fuzzy msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "Байта" msgstr[1] "Байта" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "сек." #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "мин." #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "Всички" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "всички останали" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Незавършен" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Спрян" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Видео" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Архив" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Текст" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "Фатална грешка: не можах да създам брояч" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "Грешка:файлът known.met е повреден,зареждането на списъка пропадна" #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "" #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "" #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1050 #, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "" #: src/Preferences.cpp:632 msgid "System default" msgstr "" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "" #: src/Preferences.cpp:636 msgid "Basque" msgstr "" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Каталунски" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "" #: src/Preferences.cpp:642 msgid "Czech" msgstr "" #: src/Preferences.cpp:643 msgid "Danish" msgstr "" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "" #: src/Preferences.cpp:648 msgid "French" msgstr "Френски" #: src/Preferences.cpp:649 msgid "Galician" msgstr "" #: src/Preferences.cpp:650 msgid "German" msgstr "Немски" #: src/Preferences.cpp:651 msgid "Greek" msgstr "" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Италиански" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "" #: src/Preferences.cpp:657 msgid "Korean" msgstr "" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "" #: src/Preferences.cpp:660 msgid "Polish" msgstr "" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Руски" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Език" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Връзка" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Директории" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Сървъри" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Файлове" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Дистанционни управления" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:619 msgid "- Protocol obfuscation support changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Търсене на видео плеър" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Тук добавете линкове за сваляне на .met файлове.\n" "Само по един URL на ред." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "деактивиране" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Файл" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Поискан му е друг файл" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "Отказ" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Грешка при свързване към всички сървъри в списъка - започвам отначало." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Свързан към %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Връзката установена на: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Фатална грешка при опит за свързване,вероятно не сте се включили към интернет" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Връзката към %s (%s:%i) бе прекъсната" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) изглежда не отговаря" #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "" #: src/ServerConnect.cpp:392 #, fuzzy, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "На всеки %d секунди ще бъде правен автоматичен опит за свързване" msgstr[1] "На всеки %d секунди ще бъде правен автоматичен опит за свързване" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Връзката е прекъсната" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "" #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" #: src/ServerList.cpp:174 #, fuzzy, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i сървъра бяха намерени в server.met" msgstr[1] "%i сървъра бяха намерени в server.met" #: src/ServerList.cpp:176 #, fuzzy, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d сървъра бяха добавени" msgstr[1] "%d сървъра бяха добавени" #: src/ServerList.cpp:179 #, fuzzy msgid "Error: the file 'server.met' is corrupted: " msgstr "Грешка: файлът server.met е повреден" #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "" #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Грешка при записа на server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Грешен URL" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Име на сървър" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Порт" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Описание" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Потребители" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Статичен" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Сървъри (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Сървър" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Премахване на сървър" #: src/ServerListCtrl.cpp:420 #, fuzzy msgid "Remove servers" msgstr "Премахване на сървър" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Изтриване на всички сървъри" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "" #: src/ServerListCtrl.cpp:542 #, fuzzy msgid "Are you sure that you wish to delete the selected server?" msgstr "" "Сигурни ли сте,че желаете да откажете свалянето и изтриете тези файлове ?\n" #: src/ServerListCtrl.cpp:544 #, fuzzy msgid "Are you sure that you wish to delete the selected servers?" msgstr "" "Сигурни ли сте,че желаете да откажете свалянето и изтриете тези файлове ?\n" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Новият номер на клиента е %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "" #: src/ServerSocket.cpp:532 #, fuzzy, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Получени са %d нови сървъра" msgstr[1] "Получени са %d нови сървъра" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "" #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Сървърът отхвърли последната команда" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "" #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "" #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "" #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "Максимален брой връзки (изчисляване)" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "Свързва" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "Свързан към %s (%s:%i)" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "Намерени източници: %i" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, fuzzy, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Известни са %i споделени файлове" msgstr[1] "Известни са %i споделени файлове" #: src/SharedFileList.cpp:377 #, fuzzy, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Известни са %i споделени файлове" msgstr[1] "Известни са %i споделени файлове" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Потребителско име" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Изтегляне" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Време на качване" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Наличен" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Лимит за качване" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 #, fuzzy msgid "Download Status" msgstr "Изтегляне" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Име на файл" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Споделени файлове (%i)" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Заявки" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Приети заявки" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Пренесени данни" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Копиране на ED2k линк в системния буфер (име на хост)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Трябва да имате HighID, за да създадете валиден сорс линк" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Споделени файлове (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Име на файл" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Средно време за качване: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Повторни свързвания: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Изтекло време от пърия трансфер: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Свързан към сървъра от : %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Клиенти" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "Неизвестно: %i" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "Филтрирани: %i" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Общ размер на споределните файлове : %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Активни връзки (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "" #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "" #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Файлове за сваляне (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "" #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "" #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "" #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "" #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "" #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "" #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "" #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "" #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "" #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "" #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "" #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "" #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "" #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "" #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "" #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "" #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "" #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "" #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "" #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "" #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "" #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "" #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "" #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "" #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "" #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "" #: src/TextClient.cpp:900 src/TextClient.cpp:902 msgid "The given value must be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "" #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "" #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "" #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "" #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "" #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "" #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "" #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "" #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "" #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "" #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "" #: src/TextClient.cpp:938 msgid "Resume download." msgstr "" #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "" #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "" #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "" #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "" #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "" #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "" #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "" #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "" #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "" #: src/TextClient.cpp:955 msgid "Show log." msgstr "" #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "" #: src/TextClient.cpp:959 msgid "Reset log." msgstr "" #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" #: src/TextClient.h:59 msgid "aMule text client" msgstr "" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "" #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Сигурни ли сте,че желаете да откажете и изтриете всички файлове в тази " "категория?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Изисква потвърждение" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Твърде много връзки" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Избор на филтър" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Добавяне на категория" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Промяна на категория" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Премахване на категория" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "" #: src/UserEvents.h:60 msgid "Download completed" msgstr "" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "" #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "" #: src/UserEvents.h:85 msgid "Message sender." msgstr "" #: src/UserEvents.h:88 msgid "Out of space" msgstr "" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 #, fuzzy msgid "Cancelled !" msgstr "Отказ" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1110 #, fuzzy msgid " kB/s" msgstr "кБ/с" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "" #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "" #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "" #, fuzzy #~ msgid "Download status" #~ msgstr "Изтегляне" #~ msgid "..." #~ msgstr "..." #~ msgid "Transferring" #~ msgstr "Сваляне" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "Опашката е пълна" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Изтегляне" #~ msgid "Show Queue" #~ msgstr "Показване на опашка" #~ msgid "Waited" #~ msgstr "Изчакал" #~ msgid "Total" #~ msgstr "Общо" #, fuzzy #~ msgid "Killed!" #~ msgstr "Грешка" #~ msgid "Misc Options" #~ msgstr "Допълнителни Опции" #, fuzzy #~ msgid "ED2K: Connecting" #~ msgstr "Свързва" #, fuzzy #~ msgid "ED2K: Disconnected" #~ msgstr "Връзката е разпадната" #~ msgid "Edit Serverlist" #~ msgstr "Редактиране на списъка със сървъри" #~ msgid "Average filesize: %s" #~ msgstr "Среден размер на файловете: %s" #~ msgid "Error" #~ msgstr "Грешка" #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "Не са намерени валидни сървъри в списъка" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "Грешка:Невалиден сокет при проверка" #~ msgid "0" #~ msgstr "0" #~ msgid "Download Limit" #~ msgstr "Лимит за сваляне" #~ msgid "Browse wav" #~ msgstr "Търсене на wav" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "wav файлове (*.wav)|*.wav||" #~ msgid ":" #~ msgstr ":" #~ msgid "Sources Dropping" #~ msgstr "Намаляване на източниците" #~ msgid "Port %d is not available. You will be LOWID" #~ msgstr "Порт %d е недостъпен : ще бъдете с LOWID" #~ msgid "" #~ "Port %d is not available !!\n" #~ "\n" #~ "This will mean that you will be LOWID.\n" #~ "\n" #~ "Use netstat to determine when port becomes available\n" #~ "and try starting amule again." #~ msgstr "" #~ "Порт %d е недостъпен !!\n" #~ "\n" #~ "Това означава,че ще бъдете с LOWID.\n" #~ "\n" #~ "Използвайте netstat, за да раберете кои портове са достъпни\n" #~ "и опитайте да пуснете програмата отново." #~ msgid "Failed to save" #~ msgstr "Грешка при запис" #~ msgid " OnlineSig File" #~ msgstr " Файл с онлайн подпис" #~ msgid "Desktop integration" #~ msgstr "Интегриране с работното място" #~ msgid "Connection established on:" #~ msgstr "Връзката установена на:" #~ msgid "Connect to any server" #~ msgstr "Свързване към който и да е сървър" #~ msgid "S&earch" #~ msgstr "Т&ърсене" #~ msgid "&Messages" #~ msgstr "&Съобщения" #~ msgid "This ed2k link is invalid (%s)" #~ msgstr "Този ed2k линк не е валиден (%s)" #~ msgid "Invalid link: %s" #~ msgstr "Невалиден линк: %s" #~ msgid "Filtered IP: %s (%s)" #~ msgstr "Филтрирани адреси: %s (%s)" #~ msgid "Rating for file '%s' received: %i" #~ msgstr "Рейтинг за файл '%s' получени: %i " #~ msgid "Description for file '%s' received: %s" #~ msgstr "Описанието на файл '%s' получено: %s" #~ msgid "Unable to retrieve shared files from '%s'" #~ msgstr "Получаването на споделени файлове от '%s' е невъзможно" #~ msgid "Requesting shared files from user %s (%u) is already in progress" #~ msgstr "Вече е поискан списъкът със споделени файлове на %s (%u)" #~ msgid "NickName: %s\n" #~ msgstr "Псевдоним:%s\n" #~ msgid "Filestats for all sessions: Accepted %d of %d requests" #~ msgstr "Статистика за всички сесии : Приети %d от %d заявки" #~ msgid "can't create file '%s'" #~ msgstr "не е възможно създаването на файл '%s'" #~ msgid "Can't open file '%s'" #~ msgstr "Файлът '%s' не може да бъде отворен" #~ msgid "can't close file descriptor %d" #~ msgstr "грешка при затваряне описателя на файл %d" #~ msgid "can't read from file descriptor %d" #~ msgstr "грешка при четене описателя на файла %d" #~ msgid "can't write to file descriptor %d" #~ msgstr "грешка при записване описателя на файла %d" #~ msgid "can't flush file descriptor %d" #~ msgstr "описателят на файла %d не може да бъде изтрит" #~ msgid "" #~ "Instant Messaging\n" #~ " \n" #~ "Right-click on any client and select 'Send Message' to start a chatsession" #~ msgstr "" #~ "Моментни съобщения\n" #~ " \n" #~ "Щракнете с десен бутон на кой да е клиент и изберете \"Изпращане на " #~ "съобщение\", за да започнете разговор" #~ msgid "*** Chatsession Start : " #~ msgstr "*** Начало на разговор : " #~ msgid "Message from" #~ msgstr "Съобщение от" #~ msgid "failed" #~ msgstr "провал" #~ msgid "*** Disconnected" #~ msgstr "*** Изключен" #~ msgid "Creditfile is out of date and will be replaced" #~ msgstr "Файлът с кредити е остарял и ще бъде заменен" #~ msgid "Creditfile loaded" #~ msgstr "Файлът с кредити зареден" #~ msgid "" #~ "Error while processing incoming UDP Packet (Most likely a misconfigured " #~ "server)" #~ msgstr "" #~ "Грешка при обработването на входящ UDP пакет. (Най-вероятно неправилно " #~ "конфигуриран сървър)" #~ msgid "eDonkey v%i" #~ msgstr "eDonkey в%i" #~ msgid "eDonkeyHybrid v%i" #~ msgstr "eDonkeyHybrid в%i" #~ msgid "eMule v%02X" #~ msgstr "eМуле в%02X" #~ msgid "aMule [ %s ]" #~ msgstr "aМуле [ %s ]" #~ msgid "aMule v0.%02X" #~ msgstr "aМуле в0.%02X" #~ msgid "lMule/xMule v0.%02X" #~ msgstr "lМуле/xМуле в0.%02X" #~ msgid "Old MLdonkey" #~ msgstr "Старо MLdonkey" #~ msgid "New MLdonkey" #~ msgstr "Ново MLdonkey" #~ msgid "Are you sure that you want to cancel and delete this file ?\n" #~ msgstr "" #~ "Сигурни ли сте,че желаете да откажете свалянето и изтриете този файл ?\n" #~ msgid "You already have the file %s" #~ msgstr "Имате го файла %s" #~ msgid "Bad link." #~ msgstr "Лош линк." #~ msgid "not a well-formed ed2k link" #~ msgstr "ed2k линкът не е написан правилно" #~ msgid "Not an ED2K server or file link" #~ msgstr "Не е ed2k сървър или линк към файл" #~ msgid "can't write file '%s'" #~ msgstr "писането във файла '%s' е невъзможно" #~ msgid "Loaded ipfilter with %d IP addresses." #~ msgstr "Зареден е ip филтър с %d ip адреса." #~ msgid "accepted" #~ msgstr "приет" #~ msgid "denied" #~ msgstr "отказан" #~ msgid "Connection Type" #~ msgstr "Тип на Връзка" #~ msgid "Unit:" #~ msgstr "Измервателна единица:" #~ msgid "Desktop" #~ msgstr "Работно място" #~ msgid "Name" #~ msgstr "Име" #~ msgid "Clear All" #~ msgstr "Изчисти всичко" #~ msgid "Search Results" #~ msgstr "Резултати от Търсене" #~ msgid ")" #~ msgstr ")" #~ msgid "(" #~ msgstr "(" #~ msgid "English" #~ msgstr "Английски" #~ msgid "Startup" #~ msgstr "Стартиране" #~ msgid "5 Days" #~ msgstr "5 дни" #~ msgid "Font" #~ msgstr "Шрифт" #~ msgid "Notify" #~ msgstr "Известяване" #~ msgid "h" #~ msgstr "ч" #~ msgid "D" #~ msgstr "дн." #~ msgid "?" #~ msgstr "?" #~ msgid "Executable (*)|*||" #~ msgstr "Изпълними (*)|*||" #~ msgid "Description: %s" #~ msgstr "Описание: %s" #~ msgid "IP" #~ msgstr "IP адрес" #~ msgid "User: %i" #~ msgstr "Потребител: %i" #~ msgid "Invalid versiontag in server.met (0x%X)!" #~ msgstr "Невалиден етикет за версия в server.met (0x%X)!" #~ msgid "Server added: " #~ msgstr "Добавен сървър:" #~ msgid "Connect to this server" #~ msgstr "Свързване с този сървър" #~ msgid "Add to static" #~ msgstr "Добавяне в статичния" #~ msgid "Remove from static server list" #~ msgstr "Премахване от статичния списък със сървъри" #~ msgid "Preference" #~ msgstr "Предпочитание" #~ msgid "No Pref" #~ msgstr "Няма предпочитания" #~ msgid "Failed to open staticservers.dat" #~ msgstr "Грешка при отваряне на staticservers.dat" #~ msgid "Added to static server list" #~ msgstr "Добавен към статични списък със сървъри" #~ msgid "Unknown server info received !" #~ msgstr "Получена е информация за сървъра,която не може да бъде разпозната" #~ msgid "Connecting to %s (%s:%i)..." #~ msgstr "Свързване с %s (%s:%i)..." #~ msgid "This is " #~ msgstr "Това е" #~ msgid " (based on " #~ msgstr " (на основата на " #~ msgid "Visit http://www.amule.org to check if a new version is available.\n" #~ msgstr "Посетете http://www.amule.org ,за да проверите за нова версия.\n" #~ msgid "Please enter a serveradress" #~ msgstr "Моля въведете адрес на сървър" #~ msgid "Incomplete serverport: Please enter a serverport" #~ msgstr "Не е въведен порт,моля въведете го " #~ msgid "Server not added!" #~ msgstr "Сървърът не е добавен" #~ msgid "Low ID" #~ msgstr "Low ID" #~ msgid "High ID" #~ msgstr "High ID" #~ msgid "Loading..." #~ msgstr "Зареждам..." #~ msgid "Permission" #~ msgstr "Права" #~ msgid "Public" #~ msgstr "Публичен" #~ msgid "Friends only" #~ msgstr "Само приятели" #~ msgid "Locked" #~ msgstr "Заключен" #~ msgid "Permissions" #~ msgstr "Права" #~ msgid "Change this file's comment..." #~ msgstr "Промяна на коментарите за този файл ..." #~ msgid "Auto [Re]" #~ msgstr "Автоматично[Re]" #~ msgid "Hidden" #~ msgstr "Скрит" #~ msgid "You cannot change permissions while a file is still downloading!" #~ msgstr "Не можете да промените правата на файл,който се сваля в момента!" #~ msgid "%s (%s:%i) appears to be full" #~ msgstr "%s (%s:%i) изглежда е пълен" #~ msgid "Connecting to %s (%s:%i ) failed." #~ msgstr "Свързването към %s (%s:%i ) не бе осъществено." #~ msgid "Connection attempt to %s (%s:%i ) timed out" #~ msgstr "Времето за свързване към %s (%s:%i ) изтече" #~ msgid "Refreshing server connection" #~ msgstr "Опресняване на връзката" #~ msgid "Active Downloads (chunks): %i" #~ msgstr "Активни сваляния (парчета) : %i" #~ msgid "Uploaded Data (Session (Total)): %s (%s)" #~ msgstr "Качена информация (На сесия (Общо)): %s (%s)" #~ msgid "Total successful upload sessions: %i" #~ msgstr "Общо успешни сесии на качване: %i" #~ msgid "Total failed upload sessions: %i" #~ msgstr "Общо провалени сесии на качване: %i" #~ msgid "Average Downloadrate (Session): %.2f kB/s" #~ msgstr "Средна скорост на сваляне (на сесия): %.2f kB/s" #~ msgid "Average Uploadrate (Session): %.2f kB/s" #~ msgstr "Средна скорост на качване (на сесия): %.2f кБ/с" #~ msgid "Max Downloadrate Average (Session): %.2f kB/s" #~ msgstr "Максимална средна скорост на сваляне (за сесия): %.2f кБ/с" #~ msgid "Max Downloadrate (Session): %.2f kB/s" #~ msgstr "Максимална скорост на сваляне (за сесия): %.2f кБ/с" #~ msgid "waiting for transfer..." #~ msgstr "изчакване за трансфер..." #~ msgid "Session UL:DL Ratio (Total):" #~ msgstr "UL:DL съотношение (общо)" #~ msgid "Number of Shared Files: %i" #~ msgstr "Брой споделени файлове : %i" #~ msgid "eMule: %i (%1.1f%%)" #~ msgstr "eМуле: %i (%1.1f%%)" #~ msgid "aMule: %i (%1.1f%%)" #~ msgstr "aМуле: %i (%1.1f%%)" #~ msgid "lMule/xMule: %i (%1.1f%%)" #~ msgstr "lМуле/xМуле: %i (%1.1f%%)" #~ msgid "eDonkeyHybrid: %i (%1.1f%%)" #~ msgstr "eDonkeyHybrid: %i (%1.1f%%)" #~ msgid "eDonkey: %i (%1.1f%%)" #~ msgstr "eDonkey: %i (%1.1f%%)" #~ msgid "cDonkey: %i (%1.1f%%)" #~ msgstr "cDonkey: %i (%1.1f%%)" #~ msgid "Old MLDonkey: %i (%1.1f%%)" #~ msgstr "Старо MlDonkey:%i (%1.1f%%)" #~ msgid "New MLDonkey: %i (%1.1f%%)" #~ msgstr "Ново MlDonkey: %i (%1.1f%%)" #~ msgid "Working Servers" #~ msgstr "Работещи сървъри" #~ msgid "Failed Servers" #~ msgstr "Неуспешни сървъри" #~ msgid "Deleted Servers" #~ msgstr "Изтрити сървъри" #~ msgid "Users on Working Servers" #~ msgstr "Потребители на работещи сървъри" #~ msgid "Files on Working Servers" #~ msgstr "Файлове на работещи сървъри" #~ msgid "Total Users" #~ msgstr "Общо потребители" #~ msgid "Active Connections (estimate)" #~ msgstr "Активни връзки (изчисляване)" #~ msgid "Max Connection Limit Reached" #~ msgstr "Максималният лимит за връзка е достигнат" #~ msgid "Average Connections (estimate)" #~ msgstr "Среден брой връзки (изчисляване)" #~ msgid "Show" #~ msgstr "Показва" #~ msgid "Hide" #~ msgstr "Скрива" #~ msgid "All To Max Speed" #~ msgstr "Всичко на максимална скорост" #~ msgid "All To Min Speed" #~ msgstr "Всичко на минимална скорост" #~ msgid "Disconnect from server" #~ msgstr "Връзката със сървъра прекъсната" #~ msgid "aMule for Linux" #~ msgstr "aМуле за Линукс" #~ msgid "requested file not found" #~ msgstr "пожелания файл не е намерен" #~ msgid "" #~ "Client '%s' seems to be an aggressive client and is banned from the " #~ "uploadqueue" #~ msgstr "Клиент '%s' изглежда е агресивен и бе махнат от опашката" #~ msgid "Wizard" #~ msgstr "Магьосник" #~ msgid "Down (kbit/s)" #~ msgstr "Вход. (kbit/s)" #~ msgid "Up (kbit/s)" #~ msgstr "Изх. (kbit/s)" #~ msgid "Custom" #~ msgstr "Потребителски" #~ msgid "(enter below!)" #~ msgstr "(въведете долу!)" #~ msgid "56-k Modem" #~ msgstr "56-k модем" #~ msgid "ISDN" #~ msgstr "ISDN" #~ msgid "ISDN 2x" #~ msgstr "ISDN 2x" #~ msgid "xDSL" #~ msgstr "xDSL" #~ msgid "Cable" #~ msgstr "Кабел" #~ msgid "T1" #~ msgstr "T1" #~ msgid "T3+" #~ msgstr "T3+" #~ msgid "100 Mbits" #~ msgstr "100 Mbits" #~ msgid "155 Mbits (ATM)" #~ msgstr "155 Mbits (ATM)" amule_2.3.1+git20151120.0023527bc2.orig/po/boldquot.sed0000644000175000017500000000033112611472361020444 0ustar morphmorphs/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g s/“/“/g s/”/”/g s/‘/‘/g s/’/’/g amule_2.3.1+git20151120.0023527bc2.orig/po/ca.po0000644000175000017500000074702112611472361017057 0ustar morphmorph# aMule i18n resource file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. # # Translation of aMule to Catalan / Valencian # # Main translation: # pukyxd 2004 - 2005 # simkin 2005 - 2010 # # Contributors: # Kry , Diego Silva Galan , sergei manolo msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2010-01-15 03:38+0200\n" "Last-Translator: simkin \n" "Language-Team: Català\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" "X-Poedit-Language: Catalan\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Afegeix un amic" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Heu d'introduir una IP i port vàlids!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informació" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "El resum d'usuari especificat no és vàlid!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "No s'ha pogut obrir el fitxer de enllaços ED2K." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "AVÍS: No us podeu afegir com a font per a un enllaç eD2k mentre teniu ID " "Baixa." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Sortint del programa..." #: src/amule.cpp:248 #, fuzzy, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "S'està aturant el procés amuleweb amb pid `%ld' ... " #: src/amule.cpp:251 #, fuzzy, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Aturant procés amuleweb amb pid `%ld' ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Fallades" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule Sortida: Finalitzant nucli." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "Aturada aMule completada." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Resultat de la depuració de la memòria a la sortida de l'aMule:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "Configuració EC" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Contrassenya definida i connexions externes activades." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "AVÍS" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "S'ha establert l'idioma Predeterminat del Sistema a causa d'un canvi de " "configuració. Disculpeu." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Informació" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "No teniu cap servidor a la llista de servidors.\n" "Voleu que l'aMule baixi una llista nova?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Baixada de la llista de servidors" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "servidor web executant-se al pid %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Heu demanat que s'executi el servidor web a l'inici, però no s'ha trobat el " "fitxer binari de l'amuleweb. Si us plau instal·leu el paquet que conté el " "servidor web de l'aMule, o compileu l'aMule usant la opció --enable-" "webserver i executeu make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "ERROR" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "No s'han pogut vincular els ports a l'adreça especificada: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "El port %u no està disponible. Tindreu ID BAIXA\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "El port %u no està disponible!\n" "\n" "Això significa que tindreu ID BAIXA.\n" "\n" "Comproveu la configuració de la xarxa per a assegurar-vos que el port està " "obert." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "No s'ha pogut crear el fitxer de la signatura en línia" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "No s'ha pogut crear el fitxer de la signatura en línia de l'aMule" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "L'idioma seleccionat no està instal·lat al PC. (Nota: s'intentarà establir " "igualment)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "És la primera vegada que executeu l'aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Aquesta és una versió de prova, actualitzada diàriament, i\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "no podem garantir que no trenqui res, cremi casa vostra,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "o mati al gos. Tanmateix el seu ús *hauria* de ser segur.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Podeu trobar més informació, ajuda i noves versions a la nostra pàgina web,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "www.aMule.org, o al nostre canal IRC #aMule de irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Podeu informar de qualsevol error a http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "La carpeta especificada per als fitxers de la signatura en línia és " "INVÀLIDA!\n" " S'INHABILITARÀ la signatura en línia fins que ho resolgueu a les " "preferències." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Nom del servidor notificat" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "La preassignació d'espai per al fitxer '%s' ha fallat: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "ERROR: no es pot obrir el fitxer de registre" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "AVÍS: el fitxer de registre està buit. Alguna cosa no va bé." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "S'ha reiniciat el registre" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Missatge del servidor: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "No s'ha pogut baixar la llista de nodes." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "No s'ha pogut obrir el fitxer de comprovació de versió" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Fitxer de comprovació de versió corrupte" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Esteu usant una versió antiga de l'aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" "La vostra versió de l'aMule és %i.%i.%i i l'última versió és %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Sempre podeu trobar l'última versió a http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "AVÍS: La vostra versió d'aMuled és antiga: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "La vostra versió de l'aMule és l'última." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "No s'ha pogut baixar el fitxer de comprovació de versió" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Usuaris: %s | Fitxers: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Usuaris: E: %s K: %s | Fitxers: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "No s'han seleccionat xarxes" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "amb ID Baixa" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "amb ID Alta" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Connectat a %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "S'està connectant a %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Desconnectat de eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "S'ha engegat la xarxa Kad." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "S'ha aturat la xarxa Kad." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Connectat a Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Connectat a Kad (tallafocs)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Desconnectat de Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "No es pot usar la xarxa Kad si el port UDP està inhabilitat a les " "preferències, no s'engegarà." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "La xarxa Kad està inhabilitada a les preferències, no es connectarà." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ERROR: no es pot usar el dimoni aMule quan les connexions externes estan " "inhabilitades. Per a activar les connexions externes, feu servir l'aMule " "normal, inicieu l'amuled amb la opció --ec-config o establiu el paràmetre " "\"AcceptExternalConnections\" a 1 al fitxer ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "ERROR: És obligatori l'ús d'una contrassenya vàlida per usar connexions " "externes, el dimoni de l'aMule no pot usar-se sense connexions externes. Per " "executar el dimoni aMule, el camp \"ECPassword\" del fitxer ~/.aMule/amule." "conf ha de tenir un valor assignat. Executa amuled amb els paràmetres --ec-" "config per establir una contrassenya. Més informació a http://wiki.amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: A l'Inici - Iniciant timer" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: Bifurcant-se a segon pla - adeu siau" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "No s'ha pogut crear el fitxer Pid" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "ERROR: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "aMule %s basat en eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "S'està executant sobre %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Visiteu http://www.amule.org per a comprovar si hi ha disponible una versió " "nova." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ERROR GREU: No s'ha pogut crear el temporitzador" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Control remot de l'aMule " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Snapshot:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "Client P2P 'Multiplataforma' basat en eMule \n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Lloc web: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Fòrum: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "PMF: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Contacte: admin@amule.org (temes administratius) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 aMule Team \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Part de l'aMule està basat en \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Encaminament p2p basat en la mètrica XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Missatge" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "Diàleg de l'aMule tancat" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Connectant" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: S'està connectant" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Desconnectat" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Bloquejat" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Connectat" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Connectant" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Inativa" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Cancel·la" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Atura els intents de connexió actuals" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Desconnecta" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Desconnecta de les xarxes on s'està connectat actualment." #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Connecta" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Connecta a la xarxa habilitades." #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "PU: %.1f(%.1f) | BA: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "PU: %.1f | BA: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Connectat)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Desconnectat)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Esteu segur que voleu eixir de %s?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Confirmació de sortida" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Ordre:" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- defecte -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "El directori del tema '%s' no existeix" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" "AVÍS: No ha estat possible obrir el fitxer d'aparença '%s' per a lectura" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Xarxes" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Finestra de les Xarxes" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Cerques" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Finestra de cerques" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Baixades" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "S'està baixant" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Compartits" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Finestra de fitxers compartits" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Missatges" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Finestra de Missatges" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Estadístiques" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Finestra del gràfic d'estadístiques" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Preferències" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Finestra de la configuració de preferències" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importa" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Eina d'importació de fitxers de parts" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Quant a" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Quant a / Ajuda" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Xarxa eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Xarxa Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Cap xarxa" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "Control remot de l'aMule" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Error Fatal: Ha fallat la creació del Core Timer" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Connecta a l'amule remot" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Error Fatal: Ha fallat la creació del Poll Timer" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "S'està executant un bucle..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Connectant..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "La connexió ha fallat " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Gestor d'esdeveniments de la IGU EC Remota " #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Aturant" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Connexió fallida. No ha estat possible connectar-se a %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "S'ha tancat la connexió - segurament l'aMule s'ha terminat." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "A punt" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Tots" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "No s'ha pogut crear el directori '%s' per a la categoria '%s', es mantindrà " "el directori '%s'." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Desconegut" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "No s'han pogut obtenir els compartits de l'usuari '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Buscant amic per connexió amb ID Baixa" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Versió d'eMule falsa %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (eMule fals)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (eMule fals)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basat en l'eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Sobrenom: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Demanat: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Estadístiques dels fitxers per a aquesta sessió: %d petició acceptada de %d, " "%s transferida\n" msgstr[1] "" "Estadístiques dels fitxers per a aquesta sessió: %d peticions acceptades de %" "d, %s transferides\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Estadístiques dels fitxers per a totes les sessions: %d petició acceptada de " "%d, %s transferida\n" msgstr[1] "" "Estadístiques dels fitxers per a totes les sessions: %d peticions acceptades " "de %d, %s transferides\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "S'ha demanat un fitxer desconegut" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Missatge filtrat de '%s' (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nou missatge de '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "L'usuari %s (%u) ha demanat la llista de fitxers compartits del directori %" "s -> Denegada" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "AVÍS: No es pot obrir %s." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "AVÍS: La llista dels fitxers cancel·lats és malmesa, conté una capçalera no " "vàlida." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "Error d'E/S metre es llegia el fitxer %s: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Error mentre es desava el fitxer %s: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Entra " #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Categoria" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nova categoria" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Carpeta per als fitxers entrants" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Heu d'especificar un nom per a la categoria!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Heu d'especificar un directori per a la categoria!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "No s'ha pogut crear el carpeta d'entrada per a la categoria. Si us plau, " "especifiqueu un directori vàlid!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "S'ha iniciat una sessió de xat: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Connectat amb el client ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** S'està connectant amb el client ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** No s'ha pogut connectar amb el client / Connexió perduda ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" "*** Has superat el procés de comprovació del captcha i l'usuari ha rebut el " "teu missatge. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** La teva resposta al captcha he estat errònea i el teu missatge ha " "estatignorat. Pots demanar un nou captcha enviant un nou missatge. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Xat" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Tanca la pestanya" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Tanca totes les pestanyes" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Tanca les altres pestanyes" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Afegeix a la llista d'amics" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "El fitxer de crèdits ha estat carregat, %u és un client conegut" msgstr[1] "El fitxer de crèdits ha estat carregat, %u són clients coneguts" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Han vençut els crèdits de %u client!" msgstr[1] " - Han vençut els crèdits de %u clients!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "No s'ha trobat el fitxer 'cryptkey.dat', creant-lo." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Detalls del client" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "ID Baixa" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "ID Alta" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Habilitada" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Suportada" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "No suportada" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Inhabilitada" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Connectat" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Desconnectat" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Sense completar" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Dolent" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Verificat - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "No disponible" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "L'usuari %s (%u) ha demanat la llista de fitxers compartits -> Acceptada" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "L'usuari %s (%u) ha demanat la llista de fitxers compartits -> Denegada" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "L'usuari %s (%u) ha demanat la llista de directoris compartits -> Acceptada" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "L'usuari %s (%u) ha demanat la llista de directoris compartits -> Denegada" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "L'usuari %s (%u) ha demanat la llista de fitxers compartits del directori %" "s -> Acceptada" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "L'usuari %s (%u) ha demanat la llista de fitxers compartits del directori %" "s -> Denegada" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "L'usuari %s (%u) comparteix el directori %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "L'usuari %s (%u) ha enviat directoris compartits no demanats." #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "L'usuari %s (%u) ha enviat la llista de fitxers compartits del directori %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" "L'usuari %s (%u) ha acabat l'enviament de la llista de fitxers compartits" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" "L'usuari %s (%u) ha enviat una llista de fitxers compartits no desitjada" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "L'usuari %s (%u) ha denegat l'accés a la llista de fitxers/directoris " "compartits" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Comentaris del Fitxer" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Usuari" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Fitxer" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Valoració" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Comentari" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Sense comentaris" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u comentari" msgstr[1] "%u comentaris" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "S'ha expulsat el client %s per haver enviat %s dades corruptes d'un total de " "%s del fitxer '%s'" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Ba]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Al]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Molt baixa" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Baixa" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normal" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Alta" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Molt alta" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Llançament" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Preguntant" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "S'està connectant via servidor" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Cua plena" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Cua" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "S'està baixant" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Rebent el conjunt de resums" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "No es necessiten parts" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "No és possible connectar d' ID Baixa a ID Baixa" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Massa connexions" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "S'està connectant via Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Massa connexions Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Expulsats" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Error de la connexió" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Cua remota plena" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "MLDonkey antic" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "MLDonkey nou" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "Compatible amb eMule" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Servidor local" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Servidor remot" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Intercanvi de fonts" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passiu" #: src/DataToText.cpp:133 msgid "Link" msgstr "Enllaç" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Llavors font" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Resultat de la cerca" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Completat" #: src/DataToText.cpp:146 msgid "In progress" msgstr "En progrés" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "ERROR: Sense espai al disc" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "ERROR: No s'ha trobat el partmet" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ERROR: error d'E/S!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ERROR: Ha fallat!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "En cua" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Ja s'està baixant" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Format de fitxer temporal desconegut o defectuós." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Part" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Mida" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Transferit" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Velocitat" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Progrés" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Fonts" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioritat" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Estat" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Temps Restant" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Últim cop vist complet" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Última recepció" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Esteu segur que voleu esborrar el fitxer seleccionat?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Esteu segur que voleu esborrar els fitxers seleccionats?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Retroacció des de: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Atura" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pausa" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Continua" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "&Neteja els completats" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Intercanvia cada A4AF a aquest fitxer ara" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Intercanvia cada A4AF a aquest fitxer (Automàtic)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Intercanvia cada A4AF a qualsevol altre fitxer ara" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Opcions avançades" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Previsualitza" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Mostra els &detalls del fitxer" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Mostra els comentaris" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Copia l'enllaç amb format Magnet al porta-retalls" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Copia &l'enllaç eD2k al porta-retalls" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Copia la &informació al porta-retalls" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "Cap categoria" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Assigna a una categoria" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Obre el fitxer" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Introduïu un nom nou per al fitxer:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Reanomena" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%d/%m/%y %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Baixades (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Per a evitar que en cada previsualització aparegui aquest avís, configureu\n" "un reproductor de vídeo a les preferències (per defecte s'usa mplayer)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Previsualització" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" "ERROR: No s'ha pogut executar un reproductor multimèdia extern! Ordre: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Desant fitxer de parts %u de %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Tots els fitxers de parts desats." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "S'estan carregant els fitxers de %s." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "S'està carregant els fitxer de descarrega %u de %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "ERROR: No s'ha pogut carregar la còpia de seguretat. Cerqueu '.part.met " "recovery solutions' a http://forum.amule.org" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Tots els fitxers de parts carregats." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "No s'han trobat fitxers de parts" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Trobat %u fitxer de parts" msgstr[1] "Trobats %u fitxers de parts" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "El sistema de fitxers del directori Temp no pot gestionar fitxers de grans " "dimensions." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "El sistema de fitxers per al directori Incoming no pot gestionar fitxers de " "grans dimensions." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "S'està baixant %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Ja esteu intentant baixar el fitxer '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Ja disposeu del fitxer '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Ja esteu intentant baixar el fitxer %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "No s'ha pogut convertir l'enllaç magnet a eD2k: %s+" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Protocol desconegut de l'enllaç: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Enllaç eD2k invàlid! ERROR: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "El client ha enviat un paquet després d'una autenticació fallida." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Connexió externa tancada." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "" "Les connexions externes han estat inhabilitades per manca d'una contrasenya!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Les connexions externes estan inhabilitades al fitxer de configuració" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Nova connexió externa acceptada" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "ERROR: no s'ha pogut acceptar una nova connexió externa" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "S'ha rebutjat la connexió externa per manca d'una contrasenya a les " "preferències!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "S'està connectant al client: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Versió desconeguda" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "ID de versió EC incorrecta, pot haver-hi incompatibilitat binaria. Useu un " "nucli i un client remot del mateix llançament (versió)." #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "No podeu connectar a una versió estable des d'una versió CVS arbitrària! " "Quedeu advertit de possibles fallades." #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Versió del protocol invàlida." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Marcador de la versió del protocol inexistent." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 #, fuzzy msgid "Authentication failed: wrong password." msgstr "Ha fallat l'autenticació." #: src/ExternalConn.cpp:512 #, fuzzy msgid "Authentication failed: missing password." msgstr "Ha fallat l'autenticació." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Petició invàlida, primer heu d'autenticar-vos." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Accés concedit." #: src/ExternalConn.cpp:535 #, fuzzy, c-format msgid "Sent error message \"%s\" to client." msgstr "Filtra els missatges dels clients desconeguts" #: src/ExternalConn.cpp:538 #, fuzzy, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Intent d'accés no autoritzat. Connexió tancada." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "Ha fallat una ordre remota de fitxer de parts: No s'ha trobat el resum del " "fitxer: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "No s'ha trobat el resum del fitxer: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "Error en processar el codi d'opció!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "No s'ha afegit el servidor" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "no s'ha trobat el servidor: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "és necessari definir el servidor a esborrar" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k és inhabilitada a les preferències." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Cerca en procés. S'obtindran resultats en un moment!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "La recerca web des de la interfície remota no té sentit." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Cap punt per al gràfic." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "El vostre client no està configurat per a aquest nivell de detall." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Connexió externa: s'ha demanat l'aturada" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Ja s'està aturant." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "ExternalConn: afegint l'enllaç '%s'" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "L'enllaç és invàlid o ja és present a la llista." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "No s'ha trobat el fitxer." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Nom de fitxer invàlid." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "No s'ha pogut canviar el nom del fitxer." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad està inhabilitada a les preferències." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Ja esteu connectat a eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Connectant a eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Ja esteu connectat a Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "S'està connectant a Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Totes les xarxes estan inhabilitades." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Desconnectat de eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Desconnectat de Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Connexió externa: s'ha rebut un codi d'opció invàlid: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Codi d'opció invàlid (versió de protocol errònia?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Extensió '%s' desconeguda per a l'ordre '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Ordre '%s' desconeguda.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Aquesta ordre no pot tenir un argument.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Aquesta ordre ha de tenir un argument.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Aquesta ordre és incompleta, heu d'usar una de les extensions de sota.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Extensions disponibles:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Ordres disponibles:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Les majúscules no influeixen a les ordres.\n" "Escriviu '%s ' per a aconseguir informació sobre l' .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Surt de l'aplicació." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Mostra l'ajuda." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Per a aconseguir ajuda sobre una ordre, escriviu 'help '.\n" "Per a veure la llista completa d'ordres escriviu 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Useu '%s' per a la llista d'ordres\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Error de sintaxi!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "S'ha produït un error processant una ordre - això no hauria de passar mai! " "Informeu de l'error, si us plau\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Aquesta ordre no hauria de tenir cap paràmetre." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Aquesta ordre ha de tenir un paràmetre." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Argument invàlid." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Aquesta ordre és incompleta." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Escriviu '%s' per a aconseguir més ajuda.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Això és %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Això és %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "S'està creant el client...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "D'acord, eixint %s ...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "No es pot connectar amb una contrasenya buida.\n" "Heu d'especificar una contrasenya o bé al fitxer de configuració\n" "o a la línia d'ordres, o introduir-ne una quan se vos demani.\n" "\n" "Eixint...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Mostra aquest text d'ajuda." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Ordinador on està executant-se l'aMule. (per defecte: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Port de l'aMule per a connexions externes. (per defecte: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Contrasenya per a les connexions externes." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Llegeix la configuració des del fitxer." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "No mostra res per la sortida estàndard." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Detallat - mostra també els missatges de depuració." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Estableix la localització del programa (idioma)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Escriu al fitxer de configuració les opcions de la línia d'ordres." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Crea un fitxer de configuració basat en el de l'aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Mostra la versió del programa." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Detalls del fitxer" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% fet" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "No s'ha pogut obrir el fitxer amb la llista d'amics 'emfriends.met' per a " "lectura!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "No s'ha pogut obrir el fitxer amb la llista d'amics 'emfriends.met' per a " "escriptura!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "CRITIC - no hi ha client a l'Inici de Sessió del Xat" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Amics" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Mostra els &detalls" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Afegeix un amic" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Elimina l'amic" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Envia un &missatge" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Veure els compartits" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Estableix posició (slot) d'amic" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Esteu segur que voleu esborrar l'amic seleccionat?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Esteu segur que voleu esborrar els amics seleccionats?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "No podeu establir més d'una posició d'amic.\n" " Només s'ha assignat una posició." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Selecció múltiple" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Envia un missatge a l'usuari" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Missatge a enviar:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Elimina'l dels amics" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Envia un missatge" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Intercanvia cap a aquest fitxer" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "C: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "S'ha preguntat per un altre fitxer" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Pujades en espera: %s" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "Cua" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Pujada" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "Ningú" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "No" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Sí" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "S'està baixant..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "Descàrrega HTTP cancel·lada" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "Carpeta on desar les descàrregues" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "S'han baixat %d bytes" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Esperats %d bytes, però %d bytes descarregats." #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "Reconnecta amb el servidor" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Baixant nou GeoIP.dat de %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Baixada del fitxer GeoIP.dat fallida, actualització interrompuda." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, fuzzy, c-format msgid "Failed to remove %s file, aborting update." msgstr "Fallada a l'esborrar GeoIP.dat, actualització interrompuda." #: src/IP2Country.cpp:141 #, fuzzy, c-format msgid "Failed to rename %s file, aborting update." msgstr "" "Fallada al canviar de nom el nou fitxer GeoIP.dat, actualització " "interrompuda." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, fuzzy, c-format msgid "Successfully updated %s" msgstr "Actualització GeoIP.dat correcta." #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Error actualitzant GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "Descarregar GeoIP.dat de %s fallida" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Descarregar GeoIP.dat de %s fallida" #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "" "S'està carregant els filtres IP 'ipfilter.dat' i 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "No s'ha pogut carregar el fitxer ipfilter.dat '%s', s'ha trobat un format " "desconegut." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "No s'ha pogut carregar el fitxer ipfilter.dat '%s', ha estat impossible " "obrir el fitxer." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "S'ha carregat %u rang IP des de '%s'." msgstr[1] "S'han carregat %u rangs IP des de '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "S'ha descartat %u línia malformada." msgstr[1] "S'han descartat %u línies malformades." #: src/IPFilter.cpp:503 #, fuzzy, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" "Fallada al canviar de nom el nou fitxer GeoIP.dat, actualització " "interrompuda." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Inicia des dels \n" "clients coneguts" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nodes (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "IP invàlida per a l'arrancada" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Port invàlid per a l'arrancada" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Si us plau empleneu tots els camps requerits" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Esteu segur que voleu baixar un nou fitxer nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "Fer-ho esborrarà els nodes actuals i reiniciarà la connexió Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Voleu continuar?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: la paraula clau de cerca és massa curta" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Paraula clau de cerca: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Paraula clau de cerca ja es troba a la llista de cerca: " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "S'ha llegit %u contacte Kad" msgstr[1] "S'han llegit %u contactes Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "No es troben contactes, si us plau reinicia o baixa un nou fitxer nodes.dat." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Només %d contacte Kad disponible, nodes.dat no es pot escriure" msgstr[1] "Només %d contactes Kad disponibles, nodes.dat no es pot escriure" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "S'ha escrit %d contecte Kad" msgstr[1] "S'han escrit %d contactes Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Nom del fitxer" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Mida" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Ràtio" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Transferit" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Peticions" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Acceptades" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Fonts completes" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "ALERTA: Llista de fitxers coneguts malmesa, conté una capçalera no vàlida." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Versió desconeguda" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "Carpeta on desar les descàrregues" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Resumint" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Completant" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Complet" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Pausat" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Erroni" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Esperant" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Heu d'especificar una contrasenya (no buida)." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Contrasenya invàlida, no és un resum MD5!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Fallada en la connexió" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "La connexió externa ha fallat. Resposta buida." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Connexió externa: Resposta incorrecta, confirmació de connexió fallida. S'ha " "tancat la connexió." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Connexió establerta amb l'aMule" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Connexió establerta amb èxit." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Connexió externa: Accés denegat perquè: " #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Connexió externa: Conformitat de connexió denegada." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "S'ha iniciat el fil de descàrrega HTTP." #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket: Ok." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "ERROR: No s'ha pogut escoltar el port TCP." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "ERROR: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "AVÍS: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Tanca" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Retalla" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Copia" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Enganxa" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Neteja" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Selecciona-ho tot" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Il·limitat" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Menú de la icona d'estat" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Límits de velocitat" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "PU: cap" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "PU: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "BA: cap" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "BA: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Velocitat de baixada: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Velocitat de pujada: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Informació del client" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Sobrenom: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "No heu seleccionat cap sobrenom!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID de client: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Desconnectat" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Servidor: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP del Servidor: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Desconnectat" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "Port TCP: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Port TCP: No està llest" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "Port UDP: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "Port UDP: No està llest" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Signatura en línia: Habilitada" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Signatura en línia: Inhabilitada" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Funcionant: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Fitxers compartits: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Clients en cua: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Total BA: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Total PU: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Límit de pujada" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Límit de baixada" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Amaga l'aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Mostra l'aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Surt" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "Enllaç eD2k: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "D'acord" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Feu clic per a afegir l'enllaç eD2k del camp de text a la cua de " "descàrregues." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Els esdeveniments es mostren aquí. Per a veure la llista completa, mireu el " "registre de la pestanya Servidors." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Carregant..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Número d'usuaris al servidor on esteu connectat ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Usuaris: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Usuaris connectats al servidor actual i una estimació del nombre total " "d'usuaris." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "PU: 0.0 | BA: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "La mitjana de pujada i baixada actuals. Si està habilitat, el valor entre " "parèntesis mostra la sobrecàrrega provinent de les comunicacions amb els " "clients." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Mostra l'estat de la connexió i les transferències actives. El vermell vol " "dir que no esteu connectat actualment, el groc que teniu ID baixa (bloquejat " "per un tallafocs) i el verd que teniu ID alta (el tipus de connexió òptim)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Desconnectat ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Servidor connectat actualment." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Cerca" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Nom:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tipus" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Local" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Global" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Resum del fitxer" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Cerca avançada" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtratge" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Tipus de fitxer" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Qualsevol" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Arxius" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Àudio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Imatges de CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Imatges" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programes" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Documents" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Vídeos" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Extensió" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Mida Mín." #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Mida Màx." #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Disponibilitat" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filtre:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Resultat del filtre" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Inverteix el resultat" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Amaga els fitxers coneguts" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Inicia" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Més" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Cerca més resultats a eD2k. No disponible per a Kad encara." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Atura" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Baixada" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Buida els camps" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Resultats" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Neteja les baixades completades" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Fonts completes" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "General" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Nom Complet:" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/D" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "Fitxer-met:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Resum:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Mida:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Estat de les parts:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Últim cop vist complet:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Transferència" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Fonts trobades:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Fonts transferint:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Compte de parts:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Disponibilitat:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Velocitat:" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Temps actiu de baixada: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Transferit:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Completats:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Gestió intel·ligent de la Corrupció " #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Perdut per corrupció:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Guanyat per compressió:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Paquets recuperats per I.C.H.:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Noms del fitxer" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Copia" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Neteja" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Aplica" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Comenta o valora el fitxer (visible per a tots els usuaris)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Per una pel·lícula es pot definir la seva durada, la seva història, " "llenguatge...\\n\\ni si és falsa, es pot informar a altres usuaris d'aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Qualitat del fitxer" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Sense Valorar" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Invàlid / Corrupte / Fals" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Pobre" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Correcte" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Bo" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Excel·lent" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "Seleccioneu una valoració, o aviseu si el fitxer no és correcte ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Refresca" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "S'està baixant, si us plau espereu ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Mida desconeguda" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Informació requerida" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Adreça IP:" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port:" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Informació addicional" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Usuari:" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Resum de l'usuari:" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Afegeix" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Velocitat de baixada" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Actual" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Mitjana total" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Mitjana de la sessió" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Velocitat de pujada" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Connexions" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Baixades actives" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Connexions actives (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Pujades actives" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Arbre d'estadístiques" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Nom d'usuari:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Resum de l'usuari:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Programari:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Versió:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Adreça IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID de l'usuari:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP del servidor:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Nom del servidor:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Ofuscació:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Transferències amb el client" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Petició actual:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Mitjana de pujada:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Mitjana de baixada:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Pujat (sessió):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Baixat (sessió):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Pujat (total):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Baixat (total):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Puntuacions" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Modificador PU/BA:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Identificació segura:" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "En cua" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Puntuació (a la cua):" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Sobrenom" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - el Mule multi-plataforma" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" "Aquest és el (vostre) nom que els altres usuaris veuran en connectar-se." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Idioma:" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "El retard abans de mostrar els consells (notes emergents)." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Açò especifica la llengua que s'usarà." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Comprova si hi ha noves versions a l'inici" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "L'aMule comprovarà si hi ha noves versions durant l'inici" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Inicia minimitzat" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "L'aMule es minimitzarà automàticament a l'inici." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Confirmació per a eixir" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Sol·licita confirmació al sortir." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Habilita la icona d'estat" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Habilita/Inhabilita la icona d'estat a la safata del sistema." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimitzar a la safata de sistema" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "L'aMule es minimitzarà a la safata de sistema (icona), enlloc de a la barra " "de tasques (llista de programes)." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Temps de retard de l'indicador de funció:" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "segons" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Selecció del navegador" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Introdueix el nom del teu navegador. Deixa el camp buit per usar el " "navegador per defecte del sistema." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Explora" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Obre en una nova pestanya si és possible" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Obre la pàgina web en una nova pestanya en comptes de obrir una nova " "finestra si és possible" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Reproductor de vídeo" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Límits d'ample de banda" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Pujada" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Per posició (slot)" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Ports" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Port TCP per defecte" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Aquest és el port eD2k estàndard i no es pot inhabilitar." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Port UDP per sol·licituds del servidor (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Port UDP extès (Kad / cerca global)" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "Aquest port UDP és utilitzat per sol·licituds eD2k i Kad exteses" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Activa UPnP per redirecció de ports" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnP Port TCP (Opcional):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Vincula l'adreça local a l'IP (buit per qualsevol): " #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Només usuaris avançats: Si disposeu de multiples interfícies de xarxa, " "entreu l'adreça de la interfície a la que l'aMule hauria d'estar vinculada." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Nombre màxim de fonts per descàrrega:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Nombre màxim de connexions simultànies:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Autoconnecta a l'inici" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Reconnecta en perdre la connexió" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Elimina els servidors morts després de" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "intents" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Actualitza automàticament la llista de servidors a l'inici" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Llista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Actualitza la llista de servidors quan es connecti amb un servidor" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Actualitza la llista de servidors quan es connecta un client" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Usa el sistema de prioritats" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Usa la comprovació intel·ligent d'ID Baixa en connectar" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Connexió segura" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Autoconnecta només a servidors de la llista estàtica" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Estableix prioritat Alta per als servidors afegits manualment" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Gestió d'Errors Inteligent (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Activa" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "I.C.H. avançat confia en totes les comprovacions (no recomanat)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Afegeix les noves baixades en mode pausat" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Afegeix les noves baixades amb prioritat automàtica" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Intenta baixar abans les parts inicials i finals" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Inicia el següent fitxer pausat quan s'acabi una descàrrega" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "De la mateixa categoria" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Preassigna l'espai al disc per als fitxers nous" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Per a fitxers nous reserva l'espai que ocuparà el fitxer complet. Açò " "redueix la fragmentació" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Atura les descàrregues quan l'espai buit al disc arribi a " #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Seleccioneu-ho si voleu que l'aMule comprovi l'espai del disc" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Poseu l'espai mínim de disc desitjat." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Recorda 10 fonts dels fitxers rars (amb < 20 fonts)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Pujades" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Afegeix els nous fitxer compartits amb prioritat automàtica" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Carpeta on desar les descàrregues" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Carpeta on desar les descàrregues temporals" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Carpetes compartides" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(Per a compartir recursivament feu clic dret sobre el directori)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Comparteix els fitxers ocults" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Gràfics" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Actualitza cada: 5 segs" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Temps per al gràfic de mitjana: 100 mins" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Escala del Gràfic de Connexions: 100 " #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Escala del gràfic de descàrrega: " #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Escala del gràfic de pujada: " #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Colors: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Fons" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Graella" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Baixada actual" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Mitjana de baixada total" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Mitjana de baixada de la sessió" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Pujada actual" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Mitjana de pujada total" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Mitjana de pujada de la sessió" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Connexions actives" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Barra de velocitat de la icona d'estat" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Nodes-Kad actuals" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Nodes-Kad funcionant" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Nodes-Kad de la sessió" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Selecciona" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Arbre" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Nombre de versions de client a mostrar (0=il·limitat)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! AVÍS !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Connexions noves màx. / 5 segs" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Mida del buffer de fitxer: 240000 bytes" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Mida de la cua de pujades: 5000 clients" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Interval de refresc de la connexió amb el servidor: Inhabilitat" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Aparença a usar:" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Mostra \"Gestor ràpid de links eD2k\" en totes les finestres." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Mostra informació estesa a les pestanyes de les categories" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Mostra les velocitats de transferència al títol" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Mostra les velocitats de transferència al títol" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Abans del nom de l'aplicació" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Després del nom de l'aplicació" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Mostra ample de banda sobrecarregat" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Orientació vertical de la barra d'eines" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Cua de descàrregues" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Mostra el percentatge de descàrrega" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Mostra barra de descàrrega" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Plana" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Arrodonida" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Auto ordena els fitxers (Alta CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "L'aMule ordenarà automàticament les columnes de la llista de baixades" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Paràmetres de la connexió externa" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Accepta connexions externes" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP de la interfície que rep connexions:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Introduïu una IP vàlida amb format a.b.c.d per a la interfície EC que " "escolta. Un camp buit o 0.0.0.0 significarà qualsevol interfície." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "Port TCP:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Activa l'encaminament UPnP al port de connexions externes" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Contrasenya" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Paràmetres del servidor web" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Executa el servidor web a l'inici" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Plantilla web" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Contrasenya de l'administrador" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Habilita l'usuari convidat" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Contrasenya del convidat" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Activa redirecció de ports UPnP en el port del servidor web" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Port TCP del servidor web (Opcional) " #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Temps de refresc de la pàgina (en segons)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Habilita la compressió Gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Feu clic per a aplicar qualsevol canvi fet a les preferències." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Reinicia qualsevol canvi fet a les preferències." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Títol:" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Comentari:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Dir. d'entrada:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Canvia la prioritat per als nous fitxers assignats:" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "No canviïs" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Seleccioneu un color per a la Categoria (actualment seleccionat):" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Reinicia" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Feu clic per a reiniciar el registre." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" "Feu clic en aquest botó per a actualitzar la llista de servidors des d'una " "URL ... " #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Llista de servidors" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Introduïu l'adreça d'un fitxer server.met i premeu el botó de l'esquerra per " "a actualitzar la llista de servidors coneguts." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Afegeix un servidor manualment: Nom" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Introduïu el nom del nou servidor" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Introduïu la IP del servidor, fent servir el format x.x.x.x." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Introduïu el port del servidor." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "" "Afegeix un servidor manualment (abans omple els camps de l'esquerra) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Registre de l'aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Informació del servidor" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Info. ED2K" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Info. Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" "Feu clic en aquest botó per a actualitzar la llista de nodes des d'una " "URL ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nodes (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Introduïu la URL d'un fitxer nodes.dat i premeu el botó de l'esquerra per a " "actualitzar la llista de nodes coneguts." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Estadístiques de nodes" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Arrancada" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Nou node" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Port:" #: src/muuli_wdr.cpp:2763 #, fuzzy msgid "Bootstrap from known clients" msgstr "" "Inicia des dels \n" "clients coneguts" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Desconnecta Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Usa la Identificació Segura d'Usuari" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Es recomana activar aquesta opció. No rebreu crèdits (punts) si la " "Identificació Segura d'Usuari no és habilitada." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Ofuscació de protocol" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Suport per a l'ofuscació de protocol" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Habilita l'ofuscació de protocol, i permet a l'aMule acceptar connexions " "ofuscades d'altres clients." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Usa l'ofuscació per a les connexions sortints" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "L'aMule usarà l'ofuscació de protocol en connectar amb altres clients/" "servidors" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Accepta únicament les connexions ofuscades" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "L'aMule només acceptarà les connexions ofuscades. Tindreu menys fonts, però " "tot el tràfic serà ofuscat" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Tothom" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Ningú" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Qui pot veure els meus fitxers compartits:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Selecciona qui pot veure la llista de fitxers compartits." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Filtratge IP" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtra els clients" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Habilita el filtratge de les IP de clients especificades al fitxer ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtra els servidors" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Habilita el filtratge de les IP de servidors especificades al fitxer ~/." "aMule/ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Recarrega la llista" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "Recarrega la llista d'IPs a filtrar des del fitxer ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "Adreça:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Actualitza ara" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Actualitza automàticament a l'inici" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Nivell de filtratge:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Filtra sempre les IP LAN" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Gestió paranoica de les IP no corresponents" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Rebutja el paquet si l'IP del client és diferent de l'IP on es rep el " "paquet. Useu amb prudència." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Usa l'ipfilter.dat del sistema si està disponible" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Si no es troba l'ipfilter.dat local, permet l'ús del fitxer ipfilter del " "sistema." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Habilita la signatura en línia" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Habilita l'escriptura del fitxer de signatura, que altres aplicacions " "externes poden usar per a crear signatures i similars." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Freqüència d'actualització (segs):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" "Canvia la freqüència d'actualització (en segons) de la signatura en línia." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Desa el fitxer de signatura en línia a: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Feu clic per a seleccionar el directori que conté els fitxers de signatura " "en línia." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtra els missatges entrants (excepte el xat actual):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtra tots els missatges" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtra els missatges de la gent que no és a la llista d'amics" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtra els missatges dels clients desconeguts" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtra els missatges que continguin (useu ',' per a separar):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "Els missatges que continguin aquestes paraules seran filtrats i bloquejats " "per l'aMule" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Mostra els missatges rebuts en el registre" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Comentaris" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtra els comentaris que continguin (useu ',' per a separar):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Connexió automàtica al servidor sense servidor intermediari" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Habilita l'autenticació" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Habilita/inhabilita l'autenticació amb usuari/contrasenya" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Nom d'usuari:" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "El nom d'usuari per a connectar al servidor intermediari" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Contrasenya:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "La contrasenya per a connectar al servidor intermediari" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Habilita el servidor intermediari" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Habilita/inhabilita el suport per a servidor intermediari" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Tipus de servidor:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Servidor intermediari:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "El nom del servidor intermediari" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Port del servidor:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "El port del servidor intermediari" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Connecta a:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Entra a l'aMule remot" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Nom d'usuari" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Recorda la configuració" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Habilita la depuració-registre detallats." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Obre el fitxer" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Categories de missatge:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Esperant..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Afegeix" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Reintenta" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Esborra" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Tipus d'esdeveniments" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Pujades actives:" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Oculta els fitxers compartits" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Selecciona un filtre de vista" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Pujades actives" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Mostra els clients" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Recarrega la llista" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Recarrega els compartits" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Envia" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Envia el missatge especificat." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Tanca aquesta sessió de xat." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Connecta amb qualsevol servidor i/o Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Compartits" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Inhabilitat [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/seg" msgstr[1] "bytes/seg" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "segs" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "mins" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "hores" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Dies" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "tot" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "tota la resta" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Incomplet" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Aturat" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Vídeos" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Arxius" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Documents" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Actiu" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Esperant que el fil de conversió de fitxers de parts acabi..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "S'està important %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "S'està llegint la carpeta temporal" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "" "S'està recuperant la informació bàsica del fitxer d'informació de baixada" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "S'està creant el fitxer de destí" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "S'està carregant les dades del fitxer de baixada antic (%u de %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" "S'està desant el bloc de dades a un nou fitxer de baixada únic (%u de %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "S'està recuperant informació del fitxer de baixada font" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "S'està afegint la baixada i desant un nou fitxer de parts" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importa fitxers de parts" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Estat" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Resum del fitxer" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Disc: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "Seleccioneu una carpeta amb baixades temporals! (recursiu)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Voleu que s'esborrin els fitxers originals de les baixades importades amb " "èxit?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Voleu esborrar les fonts?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "ERROR: No s'ha pogut crear el fitxer de parts)" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "S'està intentant carregar la còpia del fitxer met des de %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "ERROR: No s'ha pogut obrir el fitxer part.met: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "ERROR: el fitxer part.met té mida 0: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "ERROR: Versió del fitxer part.met invàlida: %s ==> %s" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Error: %s (%s) és corrupte (etiqueta de compte incorrecta), no s'ha pogut " "carregar el fitxer." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "ERROR: %s (%s) és corrupte (compte d'etiquetes erroni), no s'ha pogut " "carregar el fitxer." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "S'està intentant recuperar la informació del fitxer..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "S'està recuperant un fitxer sense nom - s'intentarà recuperar com a " "RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "S'ha recuperat tota la informació disponible :D - S'està intentant usar-la..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "No s'ha pogut recuperar la informació del fitxer :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "No s'ha pogut obrir %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "AVÍS: %s pot ser corrupte (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "ERROR mentre es desava un fitxer de parts: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "ERROR E/S mentre es desava un fitxer de parts: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "No s'ha pogut recuperar la mida de '%s' - usant el fitxer %s." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' és buit - s'està usant el fitxer %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "No s'ha pogut desar el fitxer part.met.seeds per a %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "%i llavor font desada per al fitxer de parts: %s (%s)" msgstr[1] "%i llavors fonts desades per al fitxer de parts: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "%i llavor font desada per al fitxer de parts: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Error en llegir el fitxer de llavors del fitxer de parts (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "S'ha trobat una part corrupta (%d) en el fitxer de parts %d %s - " "FileResultHash |%s| FileHash |%s|" msgstr[1] "" "S'ha trobat una part corrupta (%d) en els fitxers de parts %d %s - " "FileResultHash |%s| FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "S'ha trobat una part completa (%i) a %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "S'ha acabat de refer els resums de %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" "S'ha produït un error inesperat mentre es completava %s. S'ha pausat el " "fitxer." #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "S'ha acabat de baixar: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "S'està esborrant el fitxer: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "AVÍS: No ha estat possible fer el resum de la part descarregada - conjunt de " "resums incomplet per a '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "ERROR: No ha estat possible fer el resum de la part descarregada - conjunt " "de resums incomplet (%s). Açò no hauria de passar mai." #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" "AVÍS: No hi ha suficient espai al disc dur! S'està pausant el fitxer: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Corrupció a la part baixada %i del fitxer: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: S'ha recuperat la part corrupta %i de %s -> Bytes desats: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Assignant" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Espai en disc insuficient" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Baixat" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "ERROR: No s'ha pogut obrir el fitxer part '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Predeterminat" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albanès" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Àrab" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturià" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Basc" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Búlgar" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Català; Valencià" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Xinès (Simplificat)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Xinès (Tradicional)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Croat" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Txec" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Danès" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Holandès" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Anglès (R.U.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estonià" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finès" #: src/Preferences.cpp:648 msgid "French" msgstr "Francès" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Gallec" #: src/Preferences.cpp:650 msgid "German" msgstr "Alemany" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Grec" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebreu" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Hongarès" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italià" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italià (Suïssa)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japonès" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Coreà" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lituà" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Noruec" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polonès" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portuguès" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portuguès (Brasil)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Albanès" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Rus" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Eslovè" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Espanyol; Castellà" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Suec" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turc" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ucranià" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Idioma" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "No disponible" #: src/Preferences.cpp:906 msgid "no options available" msgstr "No hi ha opcions disponibles" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Categoria invàlida trobada, omitint" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "El port TCP no pot ser més gran que 65532 puix el sòcol UDP del servidor és " "TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "S'usarà el port per defecte (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Ignorant carpeta compartida inexistent: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Connexió" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Directoris" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Servidors" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Fitxers" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Seguretat" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Interfície " #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Servidor intermediari" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filtres " #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Control remot" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Signatura en línia" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Avançat " #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Esdeveniments" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Depuració" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "No canvieu aquests paràmetres si no sabeu\n" "el que esteu fent, d'altra manera podeu\n" "fer que tot funcioni pitjor.\n" "\n" "L'aMule anirà bé sense canviar cap\n" "d'aquests paràmetres." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Connexió fallida entre Cfg i el giny amb ID %d i clau %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "Fallida en l'enviament de dades de Cfg al giny amb ID %d i clau %s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "El tipus de servidor intermediari al que connecteu" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "Fallida en l'enviament de dades del giny al Cfg amb ID %d i clau %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "S'ha de reiniciar l'aMule per a habilitar aquests canvis:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- El port TCP ha canviat.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- El port UDP ha canviat.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Connexió externa tancada." #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Nova connexió externa acceptada" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Connexió externa tancada." #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Ofuscació de protocol" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "La llista d'actualització de servidors és buida.\n" "L'actualització de servidors a l'inici serà desactivada." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Heu habilitat les connexions externes però no heu especificat una " "contrasenya.\n" "Les connexions externes no poden ser habilitades a menys que s'hagi " "especificat una contrasenya externa vàlida." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- L'idioma ha canviat.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- El directori temporal ha canviat.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- Xarxa ED2K habilitada.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Les xarxes eD2k i Kad estan inhabilitades.\n" "No podreu connectar fins que n'habiliteu almenys una." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "La xarxa Kad no s'engegarà si el port UDP està inhabilitat.\n" "Habiliteu el port UDP o inhabiliteu la xarxa Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "HEU de reiniciar l'aMule ara mateix.\n" "Si no reinicieu ara, no vos queixeu dels possibles problemes.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "La llista d'actualització automàtica de servidors és buida.\n" "Si us plau, ompliu-la amb una URL que apunti a un fitxer server.met vàlid.\n" "Feu clic sobre el botó \"Llista\" d'aquest quadre de verificació per afegir " "una adreça." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Fitxers temporals" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Fitxers entrants" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Signatures en línia" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Carpeta per a %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Explora per a trobar un reproductor de vídeo" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Selecciona navegador" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Executable%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Edita la llista de servidors" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Afegiu adreces URL d'on baixar el fitxer server.met.\n" "Només una adreça a cada línia." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Retard de l'actualització: %d seg" msgstr[1] "Retard de l'actualització: %d segs" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Temps per al gràfic de mitjanes: %d min" msgstr[1] "Temps per al gràfic de mitjanes: %d mins" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Escala del gràfic de connexions: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Mida de la memòria intermèdia de fitxer: %d byte" msgstr[1] "Mida de la memòria intermèdia de fitxer: %d bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Mida de la cua de pujada: %d client" msgstr[1] "Mida de la cua de pujada: %d clients" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Interval de refresc de la connexió amb el servidor: %d minut" msgstr[1] "Interval de refresc de la connexió amb el servidor: %d minuts" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Interval de refresc de la connexió amb el servidor: Inhabilitat" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "inhabilitat" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "Executa una ordre per a l'esdeveniment '%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Activa l'execució d'ordres al nucli" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Odre del nucli:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Activa l'execució d'ordres a la interfície gràfica" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Ordre de la GUI:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Les següents variables seran reemplaçades:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "La mida mínima ha de ser menor que la màxima. S'ignorarà la mida màxima." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Avís de cerca" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Principal" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "No es pot fer una cerca Kad si la xarxa Kad no està engegada" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "No es pot executar una cerca eD2k si la xarxa eD2k no està connectada" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Error inesperat mentre s'intentava fer una cerca Kad: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "Resum del fitxer" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Fitxer" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Baixa a la categoria" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Afegeix URL opcionals per al fitxer" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Cerca fitxers relacionats (eD2k, servidor local)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Marca com a fitxer conegut" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Copia l'enllaç eD2k al porta-retalls" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Cancel·lat" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Nou" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "No s'ha pogut connectar amb els servidors ofuscats de la llista. Intentant-" "ho de nou sense ofuscació." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "No s'ha pogut connectar amb cap servidor de la llista. Intentant-ho de nou." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "La xarxa eD2k és inhabilitada a les preferències, no es connectarà." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "No s'han trobat a la llista servidors vàlids als que connectar" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Connectat a %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Connexió establerta amb: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Error fatal en intentar connectar. La connexió a Internet pot haver caigut" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "S'ha perdut la connexió a %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) sembla estar aturat." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) sembla estar ple." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Es reintentarà la connexió al servidor en %d segon" msgstr[1] "Es reintentarà la connexió al servidor en %d segons" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "S'ha perdut la connexió" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "No s'ha pogut connectar a %s (%s:%i)." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "ERROR: Sòcol invàlid en comprovar el temps d'espera" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "L'intent de connexió a %s (%s:%i) ha excedit el temps." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Resposta de DNS rebuda a destemps, omitint." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "S'està carregant el fitxer server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "No s'ha trobat el fitxer server.met!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "No s'ha pogut carregar el fitxer server.met '%s', s'ha trobat un format " "desconegut." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "No s'ha pogut obrir el server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Fitxer server.met corrupte, s'ha trobat una etiqueta de versió invàlida: 0x%" "x, mida %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "S'ha trobat %i servidor al server.met" msgstr[1] "S'han trobat %i servidors al server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d servidor afegit" msgstr[1] "%d servidors afegits" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "Error d'E/S metre es llegia el fitxer %s: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "No s'ha afegit el servidor: [%s:%d] no s'especifica un port vàlid." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" "No s'ha afegit el servidor: L'IP de [%s:%d] ha estat filtrada o no és vàlida." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "No s'ha afegit el servidor: S'ha trobat un servidor amb IP:Port [%s:%d] " "iguals." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "S'ha afegit un Servidor: [%s:%d] s'està usant el nom '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Esteu connectat al servidor què intenteu eliminar. Si us plau, primer " "desconnecteu-vos." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "No s'ha pogut obrir '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "No s'ha pogut desar el server.met" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Adreça invàlida" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "S'ha acabat de baixar la llista de servidors des de %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "No s'ha trobat cap adreça d'una llista de servidors al fitxer 'addresses." "dat'. Enganxeu una adreça cap a una llista de servidors vàlida a aquest " "fitxer per a que es pugui actualitzar automàticament la llista de servidors" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Comença a baixar la llista de servidors des de %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "AVÍS: s'ha especificat una URL invàlida per a l'actualització automàtica de " "servidors: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "No s'ha trobat una URL per a baixar un server.met al fitxer addresses.dat" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "No s'ha pogut baixar la llista de servidors des de %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "El servidor local està filtrat pels filtres IP, s'està reconnectant a un " "servidor diferent!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Nom" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Adreça" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Descripció" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Usuaris" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Estàtic" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versió" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Esteu intentant esborrar un servidor al què esteu connectat. Si us plau, " "desconnecteu-vos primer. NO s'ha esborrat el servidor." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Nom desconegut)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Esteu segur que voleu esborrar el servidor estàtic %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Servidors (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Servidor" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Connecta al servidor" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Marca el servidor com a estàtic" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Marca el servidor com a no estàtic" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Marca els servidors com a estàtics" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Marca els servidors com a no estàtics" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Esborra el servidor" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Esborra els servidors" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Esborra tots els servidors" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Copia els enllaços eD2k al porta-retalls" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Reconnecta amb el servidor" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Esteu segur que voleu esborrar tots els servidors?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Esteu segur que voleu esborrar el servidor seleccionat?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Esteu segur que voleu esborrar els servidors seleccionats?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "ERROR: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "AVÍS: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "La nova ID d'usuari és %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "AVÍS: Heu rebut una ID Baixa!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" "\tAixò normalment és perquè esteu darrere d'un tallafocs o un encaminador." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPer a rebre més informació, si us plau visiteu http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "S'ha rebut una informació desconeguda del servidor! - massa curta" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "S'han rebut %d servidor nou" msgstr[1] "S'han rebut %d servidors nous" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "S'ha desat la llista de servidors." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "El servidor ha rebutjat l'última ordre" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "S'ha rebut un paquet fals del servidor: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "" "S'ha produït un error sense tractament mentre es processava un paquet del " "servidor: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "No es pot crear el fil per a resoldre DNSs per a connectar amb %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "L'IP del servidor %s (%s) està filtrada. No es connectarà." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "S'està utilitzant l'ofuscació de protocol" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "S'està connectant a %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" "No es pot resoldre el dns per al servidor %s: Ha estat impossible connectar!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "" "No s'ha afegit el servidor: No s'ha especificat cap IP o nom de servidor." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "" "No s'ha afegit el servidor: El port del servidor especificat és invàlid." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Estat eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Estat Kademlia:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "S'està executant sobre %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Funcionant" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Estat:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Estat de la connexió:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Bloquejat - obre el port TCP %d en el teu encaminador o tallafocs" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "Estat de la connexió UDP:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Bloquejat - obre el port UDP %d en el teu encaminador o tallafocs" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Estat rere-tallafocs: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Cap amic necessari - Port TCP obert" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Cap amic necessari - Port UDP obert" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Cap amic" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Connectant amb un amic" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Connectat amb l'amic a %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Fonts indexades:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Paraules clau indexades: " #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Notes indexades:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Càrrega indexada: " #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Mitjana d'usuaris:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Mitjana de fitxers:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Aturat" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Afegint fitxer %s a compartits" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "S'ha trobat %i fitxer compartit" msgstr[1] "S'han trobat %i fitxers compartits" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "S'ha trobat %i fitxer compartit conegut, %i desconeguts" msgstr[1] "S'han trobat %i fitxers compartits coneguts, %i desconeguts" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "ERROR: S'ha intentat compartir %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Carpeta compartida no trobada, omitint: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "No s'ha trobat cap fitxer en el directori: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Nom d'usuari" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Velocitat de baixada" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Velocitat de pujada" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Disponibilitat:" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Estat local" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Estat remot" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Fitxer" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Compartits" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Peticions" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Peticions acceptades" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Dades transferides" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Ràtio" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Parts obtingudes" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Fonts completes" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Ubicació" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Afegeix comentari / valoració" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Edita comentari / valoració" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Reanomena" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Afegeix els fitxers de la col·lecció a les transferències" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Copia l'enllaç en format &Magnet al porta-retalls" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Copia l'enllaç eD2k al porta-retalls (&Font)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" "Copia l'enllaç eD2k al porta-retalls (Font) (amb les opcions de &xifrat)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Copia l'enllaç eD2k al porta-retalls (&Nom de l'ordinador)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Copia l'enllaç eD2k al porta-retalls (Nom de l'ordinador) (amb les &opcions " "de xifrat)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Copia l'enllaç eD2k al porta-retalls (amb l'informació &AICH)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Copia l'enllaç eD2k al porta-retalls (amb l'informació &AICH)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Necessiteu ID Alta per crear un enllaç font vàlid" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Fitxers compartits (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Fitxer de parts]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Fitxer" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Dades pujades (sessió (total)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Sobrecàrrega total (paquets): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Sobrecàrrega per peticions de fitxers (paquets): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Sobrecàrrega en l'intercanvi de fonts (paquets): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Sobrecàrrega del servidor (paquets): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Sobrecàrrega Kad (paquets): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Excedent per xifrat (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Pujades actius: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Pujades en espera: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Total de sessions de pujada resoltes: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Total de sessions de pujada fallades: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Temps mitjà de pujada: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Dades baixades (sessió (total)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Fonts trobades: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Baixades actives (trossos): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Raó PU:BA de la sessió (total): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Raó de baixada mitjana (Sessió): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Raó de pujada mitjana (Sessió): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Raó de baixada màxima (Sessió): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Raó de pujada màxima (Sessió): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Reconnexions: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Temps des de la primera transferència: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Connectat al servidor des de fa: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Connexions actives (aprox.): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "S'ha arribat al límit de connexions màxim: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Mitjana de connexions (aprox.): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Pic de connexions (aprox.): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Clients" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Desconegut: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Filtrat: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Expulsat: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Total: %i Coneguts: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Servidors funcionant: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Servidors que han fallat: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Total: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Servidors esborrats: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Servidors filtrats: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Usuaris en servidors funcionant: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Fitxers en servidors funcionant: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Usuaris totals: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Fitxers totals: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Càrrega del servidor: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Fitxers compartits: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Mida total dels fitxers compartits: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Mida mitjana de fitxer: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Sistema operatiu" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "No s'ha rebut" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Connexions actives (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "No disponible" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Mai" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "El procés '%s' amb pid '%d' ha finalitzat amb el codi d'estat '%d'" #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Executa i surt." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Format IP invàlid. Useu xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Aquesta ordre requereix un argument. Arguments vàlids: 'all', nom del " "fitxer, o un número.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "S'està processant per resum: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "S'està processant per nom del fitxer: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Aquesta ordre requereix un argument. Arguments vàlids: un resum de fitxer " "(hash).\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Número invàlid\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" "No és un resum vàlid (la longitud hauria de ser exactament de 32 caràcters)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Escriviu '%s' per a aconseguir més ajuda.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Mida descarrega: %i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "La petició ha fallat amb un error desconegut." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "La operació ha finalitzat amb èxit." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "La petició ha fallat amb el següent error: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "El filtre IP per a clients és: %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "Desactivat" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "Activat" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "El filtre IP per a servidors és: %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "El nivell actual del filtre IP és %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Límits d'ample de banda: Pujada: %u kB/s, Baixada: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Connectat a %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Connectant" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "protegit per un tallafocs" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "correcte" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Baixada:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Pujada:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Clients a la cua:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Fonts totals:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Número de resultats de la cerca: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 #, fuzzy msgid "Search progress not available" msgstr "Mostra el percentatge de descàrrega" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "S'ha rebut una resposta desconeguda del servidor, codi d'opció = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Mostra la informació d'estat resumida." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" "Mostra l'estat de la connexió, velocitat de pujada/baixada actuals, etc.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Mostra l'arbre d'estadístiques complet." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "De manera opcional, es pot passar un número en el rang 0-255 com a argument " "d'aquesta\n" "ordre, que diu quantes entrades del subarbre de la versió de client " "s'haurien de\n" "mostrar. Passar 0 o ometre'l es igual a 'il·limitades'.\n" "\n" "Exemple: 'statistics 5' només mostrarà les 5 versions més usades de cada " "tipus de client.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Atura l'aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Atura el nucli remot en execució (amule/amuled).\n" "Açò també aturarà el client de text, ja que no és pot usar sense\n" "haver un nucli en execució.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Recarrega l'objecte donat." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Recarrega la llista de fitxers compartits." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Recarrega la taula de filtrat IP." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Recarrega la taula de filtrat IP actual." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Recarrega la taula de filtrat IP des d'una URL." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Si s'omet l'URL s'usa l'URL de les preferències." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Connecta a la xarxa." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Connectarà amb totes les xarxes que són habilitades a les Preferències.\n" "Opcionalment també podeu especificar l'adreça d'un servidor en format IP:" "Port, per a \n" "connectar només amb aquest servidor. L'IP ha de ser una adreça IPv4 decimal " "puntejada,\n" "o un nom DNS resoluble." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Connecta només a eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Connecta només a Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Desconnecta de la xarxa." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Desconnectarà de totes les xarxes que estiguin connectades ara.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Desconnecta només de eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Desconnecta només de Kad." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Afegeix un enllaç magnet o eD2k al nucli." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "L'enllaç eD2k a afegir pot ser:\n" "*) un enllaç a un fitxer (ed2k://|file|...), s'afegirà a la cua de " "baixades,\n" "*) un enllaç a un servidor (ed2k://|server|...), s'afegirà a la llista de " "servidors,\n" "*) o un enllaç a una llista de servidors, en aquest cas tots els servidors " "en la llista s'afegiràn\n" " a la llista de servidors.\n" "\n" "L'enllaç magnet ha de contenir el resum (hash) eD2k i la mida del fitxer.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Defineix un valor de configuració." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Defineix les preferències del filtrat IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Activa el filtre IP per a clients i servidors" #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Atura el filtre IP per a clients i servidors" #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Activa/Desactiva el filtre IP per a clients" #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Activa el filtre IP per a clients" #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Atura el filtre IP per a clients" #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Activa/Desactiva el filtre IP per a servidors" #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Activa el filtre IP per a servidors" #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Atura el filtre IP per a servidors" #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Selecciona el nivell de filtratge IP." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Els nivells de filtratge vàlids són en el rang 0-255, i el valor per " "defecte\n" "(inicial) és 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Defineix els límits d'ample de banda." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "El valor donat ha de ser en kilobytes/seg.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Defineix el límit d'ample de banda de pujada." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "El valor donat ha de ser en kilobytes/seg.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Defineix el límit d'ample de banda de baixada." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Obté i mostra un valor de les preferències." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Obté les preferències del filtratge IP." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Obtenir l'estat del filtre IP per a clients i servidors" #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Obtenir l'estat del filtre IP només per a clients" #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Obtenir l'estat del filtre IP només per a servidors" #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Selecciona el nivell de filtratge IP." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Obté els límits d'ample de banda." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Realitza una cerca" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "S'ha d'especificat un tipus de cerca:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Exemple:'search kad fitxer' executarà una cerca kad per a \"fitxer\".\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Realitza una cerca global" #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Realitza una cerca local" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Realitza una cerca kad" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Mostra els resultats de l'última cerca." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Retorna els resultats de la cerca anterior.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Mostra el progrés d'una cerca." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Mostra el progrés d'una cerca.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Comença a baixar un fitxer" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "S'ha de donar el número d'un fitxer de l'última recerca.\n" "Exemple: 'download 12' començarà a baixar el fitxer amb el número 12 de la " "recerca anterior.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Pausa la baixada." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Reprèn la baixada." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Cancel·la la baixada." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Assigna una prioritat de baixada" #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Estableix la prioritat d'una baixada a Baixa, Normal, Alta o Auto.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Estableix la prioritat a baixa" #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Estableix la prioritat a normal." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Estableix la prioritat a alta." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Estableix la prioritat a auto." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Mostra les cues/llistes." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Mostra la cua de pujades/baixades, la llista de servidors o la llista de " "fitxers compartits.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Mostra la cua de pujades." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Mostra la cua de baixades." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Mostrar el registre." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Mostra la llista de servidors." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Buida el registre." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Ordre obsoleta, useu '%s' en el seu lloc." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Aquesta és una ordre obsoleta, i pot ser s'elimini en el futur.\n" "Useu '%s' en el seu lloc.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "client de text de l'aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "" "S'està convertint els conjunts de resums AICH antics en '%s' a 64b en '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "AVÍS: El nom de fitxer '%s' és invàlid i ha estat reanomenat com a '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "AVÍS: El fitxer '%s' ja existeix, el fitxer nou ha estat reanomenat com a '%" "s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Esteu segur que voleu cancel·lar i esborrar tots els fitxer d'aquesta " "categoria?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Es Requereix Confirmació" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Massa connexions" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Tota la resta" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Selecciona un filtre de vista" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Afegeix una categoria" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Edita la categoria" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Elimina la categoria" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "No s'ha pogut obrir el fitxer (%s), s'eliminarà de la llista de fitxers " "compartits." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "S'ha demanat un conjunt de resums d'un fitxer desconegut: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "S'està reprenent la pujada del fitxer: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "S'està suspenent la pujada del fitxer: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Error en executar l'ordre '%s' per a l'esdeveniment '%s'" #: src/UserEvents.h:60 msgid "Download completed" msgstr "Descàrrega completada" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "La ruta completa al fitxer" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "El nom del fitxer sense la ruta." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "El resum eD2k del fitxer." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "La mida del fitxer en bytes." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Temps d'activitat de baixada acumulat." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Inici d'una nova sessió de xat" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Remitent del missatge." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Sense espai" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Partició de disc." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Error completant" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "S'està processant el fitxer número %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" "Heu preguntat per els resums de les parts (Només per a fitxers > 9.5MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Fitxer inexistent !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, el creador d'enllaços eD2k de l'aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Benvinguts!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Paràmetres d'entrada" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Fitxer" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Afegeix URL opcionals per al fitxer" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Introduïu el fitxer per al qual voleu calcular l'enllaç eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Introduïu la URL que voleu agregar a l'enllaç eD2k: Afegiu / al final perqué " "aLinkCreator integri el nom del fitxer actual" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Esborra" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Crea l'enllaç amb resums per a cada part" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Ajuda a escampar més ràpidament els fitxer nous i rars, a costa d'un enllaç " "més gros" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Resum MD4 del fitxer" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Resum eD2k del fitxer" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "Enllaç eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Desa" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Copia al porta-retalls" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Obre" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Obre un fitxer per a crear-ne l'enllaç eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Copia l'enllaç eD2k al porta-retalls" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Anomena i desa" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Desa l'enllaç eD2k a un fitxer" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Quant a l'aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Seleccioneu el fitxer per al qual voleu crear l'enllaç eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "No es pot obrir el porta-retalls" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "No hi ha res a copiar!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Seleccioneu el fitxer per a l'enllaç eD2k creat" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "No s'ha pogut obrir " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Si us plau, introduïu un nom que no sigui buit" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "No hi ha res a desar!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, el creador d'enllaços eD2k de l'aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Gràfics de http://www.everaldo.com i http://www.icomania.com\n" "i http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distribuït sota llicència GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Fent el resum..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator està funcionant" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Calculant comprovació MD4..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Calculant comprovació eD2k..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Cancel·lat !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Fet en %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Ja heu afegit aquesta adreça URL!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Si us plau, introduïu una URL que no sigui buida" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "No s'ha pogut obrir %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i dies %i hores %i min %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, Estadístiques en línia de l'aMule" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Raó de BA màxima des que el wxCas funciona" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Velocitat màxima de BA des que s'usa l'wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistema" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Atura l'autorefresc" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Desa la imatge de les estadístiques en línia" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Imprimeix la imatge de les estadístiques en línia" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Paràmetre de les preferències" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Quant al wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Inicia l'autorefresc" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Autorefresc aturat" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Autorefresc iniciat" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Desa la imatge de les estadístiques" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Estadístiques en línia de l'aMule" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Ha hagut un problema en imprimir.\n" "Tal volta la impressora actual no està configurada correctament?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Imprimint" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCAS, Signatura d'estadístiques en Línia de l'aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Basat en CAS de Pedro de Oliveira \n" "\n" "Distribuït sota GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "L'aMule no s'està executant..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "L'aMule s'està executant" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "L'aMule s'està executant, però desconnectat" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "L'aMule s'està connectant..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "L'estat de l'aMule és desconegut..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule" #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " ha estat funcionant durant " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " està aturat!" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " no està connectat!" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " està connectant..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " està fent alguna cosa estranya, comproveu-lo!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " està connectat a " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "inactiu" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " és a " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " amb " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Total baixat: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", pujat: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Baixat durant la sessió: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Baixant: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr "kB/s, pujant: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Compartint: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " fitxers, clients a la cua: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Hora: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " a " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Mitjana de càrrega del sistema (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Sistema en funcionament des de: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "El directori on està el fitxer amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Introduïu el directori on es troba el fitxer amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Interval de refresc en segons" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Genera una imatge a cada refresc" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Introduïu el directori on es generarà la imatge d'estadístiques" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Puja periòdicament la imatge d'estat a un servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "Adreça FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Directori FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Introduïu l'adreça del servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "Introduïu el directori del servidor FTP on es desarà la imatge" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Usuari" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Introduïu el nom d'usuari per a entrar al servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Introduïu la contrasenya per a entrar al servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Interval d'actualització de l'FTP en minuts" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "D'acord" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Directori on està el fitxer de signatura" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Directori on es genera la imatge" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Carrega la plantilla " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Port HTTP del servidor web" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Usa l'encaminament UPnP al port del servidor web" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Port UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Usa la compressió gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Contrasenya d'accés total per al servidor web" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Contrasenya de convidat per al servidor web" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Permetre l'accés de convidats" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Denega l'accés de convidats" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" "Carrega / desa la configuració del servidor web des de / a l'aMule remot" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "" "Directori del fitxer de configuració de l'aMule. NO L'USEU DIRECTAMENT!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Inhabilita el intèrpret PHP (obsolet)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Recompila les pàgines PHP a cada petició" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Servidor web de l'aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "s'ha acceptat la connexió del client web\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "ERROR: no es pot acceptar connexions de clients web\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Ha fallat la petició amb el següent error: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "No s'ha trobat el fitxer d'índex:" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "La sessió ha caducat - s'està demanant la identificació\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sessió correcta, identificat\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sessió correcta, sense identificar\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "No hi ha cap sessió oberta - es demanarà identificació\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sessió creada - s'està demanant la identificació\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "S'està processant la petició [original]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "No s'ha especificat cap contrasenya, no es permetrà la identificació." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "S'està comprovant la contrasenya\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "El resum de la contrasenya és invàlid\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Contrasenya correcta\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Contrasenya incorrecta\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" "No heu especificat cap contrasenya. No es permet una contrasenya en blanc.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Eixida sol·licitada\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "S'està processant la petició [redirigit]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "El fitxer de parts %s (%s) no té fitxer de llavors" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "El fitxer de parts %s (%s) té un fitxer de llavors buit" #, fuzzy #~ msgid "Download status" #~ msgstr "Estat remot" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Retard de l'actualització: %d seg" #~ msgstr[1] "Retard de l'actualització: %d segs" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "Encara no es poden fer comentaris ni valoracions al client remot" #~ msgid "Transferring" #~ msgstr "Transferint" #, fuzzy #~ msgid "QR: ???" #~ msgstr "C: %u" #~ msgid "QR: %u" #~ msgstr "C: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "En cua" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - mostra el progrés d'una cerca" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "S'està començant la creació del resum MD4 i AICH per al fitxer: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "S'està començant la creació del resum MD4 per al fitxer: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "S'està començant el creació del resum AICH per al fitxer: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "AVÍS: No s'ha pogut esborrar l'original '%s' després de crear la còpia de " #~ "seguretat" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "AVÍS: No s'ha pogut esborrar %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (C: %u)" #~ msgid "" #~ "You cannot connect to a release version from an arbitrary SVN version! " #~ "*sigh* possible crash prevented" #~ msgstr "" #~ "No podeu connectar a una versió estable des de una versió SVN arbitrària! " #~ "és possible que es produeixin fallades" #~ msgid "Rating (total):" #~ msgstr "Puntuació (total):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Intenta transferir parts completes a totes les pujades" #~ msgid "Networks window" #~ msgstr "Finestra de xarxes" #~ msgid "Searches window" #~ msgstr "Finestra de cerques" #, fuzzy #~ msgid "Downloads window" #~ msgstr "S'està baixant" #~ msgid "Shared files window" #~ msgstr "Finestra de fitxers compartits" #~ msgid "Messages window" #~ msgstr "Finestra de missatges" #~ msgid "Statistics graph window" #~ msgstr "Finestra del gràfic d'estadístiques" #~ msgid "Preferences settings window" #~ msgstr "Finestra dels paràmetres de configuració" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Icona de la safata del sistema perduda, recreant-la ..." #~ msgid "Transfers" #~ msgstr "Transferències" #~ msgid "Files transfers window" #~ msgstr "Finestra de transferència de fitxers" #~ msgid "Unban" #~ msgstr "Admet de nou" #~ msgid "Show Uploads" #~ msgstr "Mostra les pujades" #~ msgid "Show Queue" #~ msgstr "Mostra la cua" #~ msgid "Select View" #~ msgstr "Selecciona la vista" #~ msgid "Client Software" #~ msgstr "Programari" #~ msgid "Waited" #~ msgstr "Temps esperat" #~ msgid "Upload Time" #~ msgstr "Temps pujant" #~ msgid "Upload/Download" #~ msgstr "Pujat/Baixat" #~ msgid "Remote Status" #~ msgstr "Estat remot" #~ msgid "File Priority" #~ msgstr "Prioritat" #~ msgid "Score" #~ msgstr "Puntuació" #~ msgid "Asked" #~ msgstr "Demanat" #~ msgid "Last Seen" #~ msgstr "Últim cop vist" #~ msgid "Entered Queue" #~ msgstr "En cua" #~ msgid "Transferred Up" #~ msgstr "Pujat" #~ msgid "Transferred Down" #~ msgstr "Baixat" #~ msgid "Userhash" #~ msgstr "Resum de l'usuari" #~ msgid "Encrypted" #~ msgstr "Xifrat" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "Carregat %d senyaladors de mapa de bits." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Mostra les Pujades / Cua" #~ msgid "Clients on queue :" #~ msgstr "Clients a la cua:" #~ msgid "Current Session" #~ msgstr "Sessió actual" #~ msgid "Total" #~ msgstr "Total" #~ msgid "Requested :" #~ msgstr "Demanat:" #~ msgid "Create backup for preview" #~ msgstr "Crea còpia de seguretat al previsualitzar" #~ msgid "Files Transfers Window" #~ msgstr "Finestra de transferència de fitxers" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Usuaris Totals: %s | Fitxers Totals: %s" #~ msgid "Download size not received, downloading until connection is closed" #~ msgstr "No s'ha rebut la mida, descarregant fins que la connexió es tanqui" #~ msgid "HTTP download thread ended" #~ msgstr "Fil de Descàrrega HTTP " #~ msgid "Host: %s:%i\n" #~ msgstr "Servidor: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Resposta: %i (Error: %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "AVÍS: Resposta buida en la creació del flux." #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "ERROR: Codi de redirecció rebut sense URL" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "" #~ "CIP2Country::CIP2Country(): No s'han pogut carregar les dades del país " #~ "des de" #~ msgid "Get IPFilter level." #~ msgstr "Obté el nivell del filtratge IP." #~ msgid "Makes a search." #~ msgstr "Realitza una cerca." #~ msgid "Killed!" #~ msgstr "Aturat!" #~ msgid "Using amuleweb in '%s'." #~ msgstr "Utilitzant amuleweb a '%s'." #~ msgid "Shutting down aMule..." #~ msgstr "Aturant l'aMule..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "En aquesta versió s'han canviat les següents opcions per motius de " #~ "seguretat:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Habilitada l'ofuscació de protocol per a les connexions d'entrada i " #~ "sortida.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Inhabilitada l'actualització de la llista de servidors des d'altres " #~ "servidors i clients.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Per a més informació sobre els motius d'aquests canvis, cerqueu " #~ "informació sobre \"fake servers\" al wiki de l'aMule http://wiki.amule." #~ "org.\n" #~ "És important que esborreu qualsevol servidor fals de la llista per a que " #~ "tot funcioni correctament." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "A més a més, s'ha reiniciat les preferències del navegador als valors per " #~ "defecte del sistema. Si us plau configureu-les de nou si és necessari.\n" #~ msgid "Fetching status..." #~ msgstr "Recollint l'estat..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Usuaris: E: %s K: %s | Fitxers E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Client %s amb IP:Port %s:%d usant %s %s %s" #~ msgid "Filtered" #~ msgstr "Filtrats" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() ha retornat NULL" #~ msgid "Firewalled" #~ msgstr "Bloquejat per un tallafocs" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "S'ha carregat %d imatge de bandera." #~ msgstr[1] "S'han carregat %d imatges de banderes." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "El fitxer %s és massa gran per al Donkey: el màxim permès són 4GB." #~ msgid "No handler for this file type." #~ msgstr "No hi ha gestor per a aquest tipus de fitxer" #~ msgid "File was not saved" #~ msgstr "No s'ha desat el fitxer" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "" #~ "La connexió ha fallat. Ha estat impossible connectar amb l'ordinador " #~ "especificat\n" #~ msgid "Message Filter" #~ msgstr "Filtre de missatges" #~ msgid "Gui Tweaks" #~ msgstr "GUI" #~ msgid "Core Tweaks" #~ msgstr "Nucli" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Temps de retard dels consells en segons" #~ msgid "Show part file number before file name" #~ msgstr "Mostra el número del fitxer part abans del nom del fitxer" #~ msgid "Skin Support" #~ msgstr "Suport d'aparences" #~ msgid "- no skins available -" #~ msgstr "- no hi han temes disponibles - " #~ msgid "Online Signature Directory:" #~ msgstr "Directori de la signatura en línia:" #~ msgid "Filtering Options:" #~ msgstr "Opcions de filtratge:" #~ msgid "Line Capacities" #~ msgstr "Capacitat de la línia" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Nota: Aquests valors només\n" #~ "s'usen per a les estadístiques." #~ msgid "Standard client TCP Port:" #~ msgstr "Port TCP del client estàndard:" #~ msgid "Extended client UDP Port:" #~ msgstr "Port UDP del client estès:" #~ msgid "Bind Address" #~ msgstr "Adreça d'escolta" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "Port UDP per a peticions esteses del servidor (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "Màx. fonts per fitxer" #~ msgid "Connection limits" #~ msgstr "Límit de connexions" #~ msgid "Universal Plug and Play" #~ msgstr "Universal Plug and Play" #~ msgid "Enable UPnP" #~ msgstr "Activa UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "Port TCP UPnP:" #~ msgid "Start next paused file when a file completed" #~ msgstr "Comença el següent fitxer pausat quan es completi un fitxer" #~ msgid "Check disk space" #~ msgstr "Comprova l'espai de disc" #~ msgid "Min disk space:" #~ msgstr "Espai mín. al disc:" #~ msgid "Incoming" #~ msgstr "Entrada" #~ msgid "Temporary" #~ msgstr "Temporal" #~ msgid "Shared" #~ msgstr "Compartit" #~ msgid "Select Statistics Colors" #~ msgstr "Selecciona els colors de les estadístiques" #~ msgid "Download Queue Files Progress" #~ msgstr "Progrés dels fitxers de la cua de baixades" #~ msgid "Show percentage" #~ msgstr "Mostra el percentatge" #~ msgid "Show progressbar " #~ msgstr "Mostra la barra de progrés" #~ msgid "Enable skin support " #~ msgstr "Habilitar el suport d'aparences" #~ msgid "Skin:" #~ msgstr "Tema:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "Ordena automàticament els fitxers de la cua de baixades (més CPU)" #~ msgid "Show Fast eD2k Links Handler" #~ msgstr "Mostra el gestor ràpid d'enllaços eD2k" #~ msgid "Web server port" #~ msgstr "Port del servidor web" #~ msgid "Enable UPnP port forwarding on the web server port" #~ msgstr "Activa l'encaminament UPnP al port del servidor web" #~ msgid "Web server UPnP TCP port" #~ msgstr "Port TCP UPnP del servidor web" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "IP de la interfície que escolta\n" #~ "(buit per a qualsevol)" #~ msgid "TCP port" #~ msgstr "Port TCP" #~ msgid "Who can see shared files:" #~ msgstr "Qui pot veure els fitxers compartits:" #~ msgid "Event types" #~ msgstr "Tipus d'esdeveniments" #~ msgid "ERROR: can not accept web client connection\n" #~ msgstr "ERROR: no es pot acceptar la connexió del client web\n" #~ msgid "" #~ "Your Auto-update server list is empty.\n" #~ "'Auto-update server list at startup will be disabled." #~ msgstr "" #~ "La llista d'autoactualització de servidors és buida.\n" #~ "Es desactivarà l'actualització automàtica a l'inici." #~ msgid "ERROR: Invalid part.met fileversion: %s ==> %s" #~ msgstr "ERROR: Versió del fitxer part.met invàlida: %s ==> %s" #~ msgid "WARNING: Knownfile list corrupted, contains invalid header." #~ msgstr "" #~ "AVÍS: La llista de fitxers coneguts és corrupta, conté una capçalera " #~ "invàlida." #~ msgid "Makes aMule promt before exiting." #~ msgstr "L'aMule demanarà confirmació abans de sortir." #~ msgid "Bandwith limits" #~ msgstr "Límits d'ample de banda" #~ msgid "This UDP port is used for extended ed2k requests and Kad network" #~ msgstr "Aquest port UDP s'usa per a peticions ed2k esteses i la xarxa Kad" #~ msgid "Show overhead bandwith" #~ msgstr "Mostra la sobrecàrrega d'ample" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. actiu" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "L'AICH es refia de cada resum (no recomanat)" #~ msgid "Disk space" #~ msgstr "Espai de disc" #~ msgid "Create Backup for preview" #~ msgstr "Crea una còpia per a fer la previsualització" #~ msgid "Advanced Settings" #~ msgstr "Configuració avançada" #~ msgid "Progressbar Style" #~ msgstr "Aspecte de la barra de progrés" #~ msgid "Column Sorting" #~ msgstr "Ordre de les columnes" #~ msgid "Misc Gui Tweaks" #~ msgstr "Miscel·lània" #~ msgid "File Options" #~ msgstr "Opcions de fitxer" #~ msgid "Status text" #~ msgstr "Text d'estat" #~ msgid "Pop-up status text" #~ msgstr "Text d'estat en finestra emergent" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ " Client p2p multiplataforma basat en l'eMule \n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr " Pàgina: http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr " Fòrum: http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ " PMF: http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " Contacte: admin@amule.org (problemes administratius) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr " Una part de l'aMule està basada en \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " Copyright (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "D'una pel·lícula pots dir la durada, el gènere, l'idioma ...\n" #~ "i si és falsa, pots avisar a la resta d'usuaris." #~ msgid "Misc Options" #~ msgstr "Miscel·lània" #~ msgid "Server Options" #~ msgstr "Opcions del servidor" #~ msgid "Display server motd when connected ..." #~ msgstr "Visualitza el \"missatge del dia\" del servidor en connectar ..." #~ msgid "eD2k Info" #~ msgstr "Info eD2k" #~ msgid "Disable/Enable" #~ msgstr "Inhabilita/Habilita" #~ msgid "Authentication" #~ msgstr "Autenticació" #~ msgid "General Settings" #~ msgstr "Paràmetres generals" #~ msgid "Hard limit" #~ msgstr "Límit dur" #~ msgid "Max Connections" #~ msgstr "Màx. connexions" #~ msgid "GUI Tweaks" #~ msgstr "Paràmetres de la GUI" #~ msgid "Remote Control" #~ msgstr "Control remot" #~ msgid "Unable to determine selected browser!" #~ msgstr "No s'ha pogut determinar el navegador seleccionat" #~ msgid "User Defined" #~ msgstr "Definit per l'usuari" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - la Mula de Linux" #~ msgid "System Default" #~ msgstr "Valor per defecte del sistema" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Seleccioneu el navegador ací" #~ msgid "Custom Browser:" #~ msgstr "Navegador personalitzat:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Poseu ací el nom del navegador. Per a usar un navegador personalitzar, " #~ "seleccioneu Personalitzat al menú de sota." #~ msgid "Please wait... " #~ msgstr "Per favor, espereu... " #~ msgid "" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed." #~ msgstr "" #~ "A més a més, s'han reiniciat les preferències del navegador als valors " #~ "per defecte del sistema. Per favor configureu-les de nou si és necessari." #~ msgid "Could not determine the command for running the browser." #~ msgstr "No s'ha pogut determinar l'ordre per a executar el navegador." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "La connexió EC ha fallat. Resposta buida." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "ExternalConn: Accés denegat perquè: " #~ msgid "ExternalConn: Access denied" #~ msgstr "ExternalConn: Accés denegat" #~ msgid "ExternalConn: Bad reply from server. Connection closed." #~ msgstr "ExternalConn: Resposta invàlida del servidor. Connexió tancada." #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Copia &l'enllaç ED2K al porta-retalls" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "Copia l'enllaç ED2K al porta-retalls (&Font)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "" #~ "Copia l'enllaç ED2K al porta-retalls (Font) (&amb opcions de xifrat)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "Copia l'enllaç ED2K al porta-retalls (&Ordinador)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "" #~ "Copia l'enllaç ED2K al porta-retalls (Ordinador) (amb opcions de &xifrat)" #~ msgid "Copy ED2k link to clipboard (&AICH info)" #~ msgstr "Copia l'enllaç ED2k al porta-retalls (informació AIC&H)" #~ msgid "Warning" #~ msgstr "Avís" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "Error: No s'ha pogut escoltar el port TCP." #~ msgid "Webserver HTTP port" #~ msgstr "Port HTTP del servidor web" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "Utilitza l'encaminament UPnP al port del servidor web" #~ msgid "Full access password for webserver" #~ msgstr "Contrasenya d'accés complet per al servidor web" #~ msgid "Guest password for webserver" #~ msgstr "Contrasenya de convidat per al servidor web" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "Obre/desa els paràmetres del servidor web des de l'aMule remot" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "Introduïu ací el fitxer del qual voleu calcular l'enllaç Ed2k" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "Introduïu ací l'adreça que voleu afegir a l'enllaç Ed2k: Afegiu una / al " #~ "final per a que s'adjunti el nom actual del fitxer automàticament" #~ msgid "Ed2k File Hash" #~ msgstr "Clau Ed2k del fitxer" #~ msgid "Ed2k link" #~ msgstr "Enllaç ed2k" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "Obriu un fitxer per a calcular l'enllaç ed2k" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "Copia al porta-retalls l'enllaç ed2k calculat" #~ msgid "Save computed ed2k link to file" #~ msgstr "Desa a un fitxer l'enllaç ed2k calculat" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "Seleccioneu el fitxer del qual voleu calcular l'enllaç ed2k" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "Seleccioneu el fitxer a l'enllaç ed2k calculat" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, el creador d'enllaços ed2k de l'aMule\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Imatges de http://www.everaldo.com i http://www.icomania.com\n" #~ "i http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distribuït sota la llicència GPL" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, el creador d'enllaços ed2k de l'aMule" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Copia l'enllaç ED2K al porta-retalls" #, fuzzy #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Copia l'enllaç ED2K al porta-retalls" #, fuzzy #~ msgid "ED2K: Connecting" #~ msgstr "Connectant" #, fuzzy #~ msgid "ED2K: Disconnected" #~ msgstr "Desconnectat" #~ msgid "Warning: Unable to open skin file '%s' for read" #~ msgstr "AVÍS: Impossible d'obrir el fitxer de tema '%s' per a lectura" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "La llista d'actualització automàtica és buida.\n" #~ "S'inhabilitarà l'actualització automàtica de la llista de servidors a " #~ "l'inici'." #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "Les xarxes ED2K i Kad són ambdós inhabilitades.\n" #~ "No podreu connectar fins que habiliteu almenys una d'elles." #~ msgid "Edit Serverlist" #~ msgstr "Edita la llista de servidors" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "Error: no s'ha pogut acceptar una nova connexió externa" #~ msgid "ED2K is disabled in preferences." #~ msgstr "ED2K està inhabilitat a les preferències." #~ msgid "ExternalConn: shutdown requested" #~ msgstr "ExternalConn: s'ha demanat la parada" #~ msgid "Already connected to ED2K." #~ msgstr "Ja esteu connectat a ED2K." #~ msgid "Connecting to ED2K..." #~ msgstr "S'està connectant a ED2K..." #~ msgid "Disconnected from ED2K." #~ msgstr "Desconnectat de ED2K." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "ExternalConn: s'ha rebut un opcode invàlid: %#x" #~ msgid "ED2K Status:" #~ msgstr "Estat ED2K:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "Rati mitjà de baixada (sessió): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "Rati mitjà de pujada (sessió): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "Rati màx. de baixada (sessió): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "Rati màx. de pujada (sessió): %s" #~ msgid "Average filesize: %s" #~ msgstr "Mida mitjana dels fitxers: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "No es pot fer una cerca ED2K si la xarxa ED2K no està connectada" #~ msgid "Error: " #~ msgstr "Error: " #~ msgid "Warning: " #~ msgstr "Avís: " #~ msgid "Search related files (ED2k, local server)" #~ msgstr "Cerca fitxers similars (ED2K, servidor local)" #~ msgid "Error" #~ msgstr "Error" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "AVÍS: No podeu afegir-vos com a font d'un enllaç ed2k mentre teniu ID " #~ "Baixa." #, fuzzy #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "Per favor especifiqueu el reproductor de vídeo a les preferències.\n" #~ "Mentrestant, l'aMule intentarà usar l'mplayer i rebreu aquest avís a cada " #~ "previsualització" #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "Error: No s'ha pogut obrir el fitxer part.met: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "Error: el fitxer part.met és buit: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "Error: La versió del fitxer part.met és invàlida: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "Avís: %s podria ser corrupte (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "Error inesperat mentre es completava %s. Fitxer pausat" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "Avís: Ha estat impossible fer la clau de la part baixada - conjunt de " #~ "claus incomplet per a '%s'" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "Error: No s'ha pogut fer la clau de la part baixada - conjunt de claus " #~ "incomplet (%s). Açò no hauria de passar mai" #~ msgid "Insufficient Diskspace" #~ msgstr "L'espai de disc és insuficient" #~ msgid "Warning: known.met cannot be opened." #~ msgstr "AVÍS: no es pot obrir 'known.met'." #~ msgid "Warning: Knownfile list corrupted, contains invalid header." #~ msgstr "" #~ "Avís: llista de fitxers coneguts és corrupta, conté una capçalera " #~ "invàlida." #~ msgid "ERROR! Attempted to share %s" #~ msgstr "ERROR! S'ha intentat compartir %s" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "La xarxa ED2K és inhabilitada a les preferències, no es connectarà." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "No s'ha trobat cap servidor vàlid a la llista de servidors" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "Error: Sòcol invàlid en la comprovació de temps" #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "No es pot convertir l'enllaç Magnet a ED2K: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "Enllaç e2dk invàlid! Error: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "Límits d'ample de banda: pujada: %u kB/s, baixada: %u kB/s.\n" #~ msgid "Shutdown aMule." #~ msgstr "Atura l'aMule." #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "Atura el nucli remot engegat (amule/amuled).\n" #~ "Açò també pararà el client de text, puix és inusable sense\n" #~ "un nucli en marxa.\n" #~ msgid "Connect to ED2K only." #~ msgstr "Connecta només a ED2K." #~ msgid "Disconnect from ED2K only." #~ msgstr "Desconnecta només d' ED2K." #~ msgid "Adds an ed2k or magnet link to core." #~ msgstr "Afegeix un enllaç ed2k o Magnet al nucli." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "L'enllaç edk2 que s'afegirà pot ser.\n" #~ "*) un enllaç a un fitxer (ed2k://|file|...), serà afegit a la cua de " #~ "baixades,\n" #~ "*) un enllaç a un servidor (ed2k://|server|...), serà afegit a la llista " #~ "de servidors,\n" #~ "*) o un enllaç a una llista de servidors, en el que tots els servidors en " #~ "la llista seran afegits\n" #~ " a la llista de servidors.\n" #~ "\n" #~ "Un enllaç Magnet ha de contenir la clau ed2k i la longitud del fitxer.\n" #~ msgid "Error: %s (%s) - %s" #~ msgstr "Error: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "Avís: %s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "Error: No hi ha espai al disc" #~ msgid "Error: Partmet not found" #~ msgstr "Error: no s'ha trobat partmet" #~ msgid "Error: IO error!" #~ msgstr "Error: error d'E/S!" #~ msgid "Error: Failed!" #~ msgstr "Error: Ha fallat!" #~ msgid "ED2K Link: " #~ msgstr "Enllaç ED2K:" #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "" #~ "Feu clic ací per a afegir a la cua de baixades l'enllaç ed2k del control " #~ "de text." #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "Cerca més resultat a la xarxa ED2K. Encara no disponible per a Kad." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Límits d'ample" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "Aquest és el port ED2K estàndard i no es pot inhabilitar." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "Aquest port UDP s'usa per a peticions ED2K esteses i la xarxa Kad" #~ msgid "Hard Limit" #~ msgstr "Límit dur" #~ msgid "Connection Limits" #~ msgstr "Límit de connexions" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Actualitza automàticament la llista de servidors a l'inici" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Actualitza la llista de servidors quan es connecti a un servidor" #~ msgid "Update serverlist when a client connect" #~ msgstr "Actualitza la llista de servidors quan es connecti a un usuari" #~ msgid "Disk Space" #~ msgstr "Espai al disc" #~ msgid "Check Disk Space" #~ msgstr "Comprova l'espai restant al disc" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "L'aMule comprarà l'espai restant al disc" #~ msgid "Min Disk Space:" #~ msgstr "Espai mín. al disc:" #~ msgid "Incoming Directory :" #~ msgstr "Directori d'entrada:" #~ msgid "Temporary Directory :" #~ msgstr "Directori temporal:" #~ msgid "Shared Directories" #~ msgstr "Directoris compartits" #~ msgid "Create Backup to preview" #~ msgstr "Crea una còpia per a fer la previsualització" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Mostra el quadre d'entrada d'enllaços ED2K" #~ msgid "Webserver Parameters" #~ msgstr "Paràmetres del servidor web" #~ msgid "Webserver port" #~ msgstr "Port del servidor web" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "Activa l'encaminament UPnP al port del servidor web" #~ msgid "Webserver UPnP TCP port" #~ msgstr "Port UPnP TCP del servidor web" #~ msgid "Serverlist" #~ msgstr "Llista de servidors" #~ msgid "Manual Server Add : Name" #~ msgstr "Afegeix un servidor manualment: Nom" #~ msgid "No One" #~ msgstr "Ningú" #~ msgid "Speed Limits:" #~ msgstr "Límits de velocitat:" #~ msgid "Download Speed: %.1f" #~ msgstr "Velocitat de baixada: %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "Velocitat de pujada: %.1f" #~ msgid "TCP Port: %d" #~ msgstr "Port TCP: %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "Port TCP: No està llest" #~ msgid "UDP Port: %d" #~ msgstr "Port UDP: %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "Port UDP: No està llest" #~ msgid "Shared Files: %d" #~ msgstr "Compartits: %d" #~ msgid "Queued Clients: %d" #~ msgstr "Clients a la cua: %d" #~ msgid "Upload Limit" #~ msgstr "Límit de pujada" #~ msgid "Download Limit" #~ msgstr "Límit de baixada" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "No s'ha trobat cap adreça d'una llista de servidors al fitxer 'adresses." #~ "dat'. Per favor, enganxeu-hi dintre d'aquest fitxer una adreça d'una " #~ "llista de servidors vàlida per tal d'actualitzar automàticament la llista." #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "" #~ "Avís, l'adreça especificada és invàlida per a l'actualtizació automàtica " #~ "de servidors: %s" #~ msgid "webserver running on pid %d" #~ msgstr "servidor web executant-se amb pid %d" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "S'ha configurat el servidor web per a que s'engegui a l'inici, però no es " #~ "pot executar el binari. Instal·leu el paquet que conté el servidor web de " #~ "l'aMule o compileu l'aMule amb l'opció --enable-webserver i feu make " #~ "install" #~ msgid "Disconnected from ED2K" #~ msgstr "Desconnectat de ED2K" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "" #~ "No s'ha pogut obrir per a lectura el fitxer de la llista d'amics " #~ "'emfriends.met'!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "" #~ "No s'ha pogut obrir per a escriure el fitxer de la llista d'amics " #~ "'emfriends.met'!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "ERROR: No s'ha pogut obrir el fitxer de parts)" #~ msgid "Mb" #~ msgstr "Mb" #~ msgid "Can't create web socket thread\n" #~ msgstr "No s'ha pogut crear el fil del sòcol web\n" #~ msgid "Web Server: Started\n" #~ msgstr "Servidor web: Iniciat\n" #~ msgid "Not Supported" #~ msgstr "No suportat" #~ msgid "LowID: %u (%.2f%% Total %.2f%% Known)" #~ msgstr "ID Baixa: %u (%.2f%% total %.2f%% coneguts)" #~ msgid "SecIdent On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgstr "IdentSeg Activa/inactiva: %u (%.2f%%): %u (%.2f%%)" #~ msgid "Browse wav" #~ msgstr "Explora per a trobar un wav" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "Fitxer wav (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "Sense comentaris" #~ msgid "Notifications" #~ msgstr "Notificacions" #~ msgid "Messages popup" #~ msgstr "Missatges emergents" #~ msgid "Use sound" #~ msgstr "Usa so" #~ msgid "Pop out when :" #~ msgstr "Emergeix quan:" #~ msgid "New entry on log" #~ msgstr "Nova entrada al registre" #~ msgid "Starts a new chat session" #~ msgstr "Nova sessió de xat" #~ msgid "A new chat message is received" #~ msgstr "Nou missatge de xat rebut" #~ msgid "A download is added or finished" #~ msgstr "S'afegeix o s'acaba una baixada" #~ msgid "New aMule version detected" #~ msgstr "Nova versió de l'aMule" #~ msgid "Urgent OOD, serverconnection lost" #~ msgstr "OOD urgent, connexió al servidor perduda" #~ msgid "Notify by Mail" #~ msgstr "Notifica per correu" #~ msgid "Send an Email when transfer complete." #~ msgstr "Envia un correu quan es completi una transferència." #~ msgid "SMTP server :" #~ msgstr "Servidor SMTP:" #~ msgid "Email Address :" #~ msgstr "Adreça de correu:" #~ msgid ":" #~ msgstr ":" #~ msgid "" #~ "The selected locale seems not to be installed on your box\n" #~ "You must generate it to use this language.\n" #~ "A good start on linux systems is the file /etc/locale.gen and the package " #~ "'locales'\n" #~ "Good luck!\n" #~ "(Note: I'll try to set it anyway)" #~ msgstr "" #~ "La localització seleccionada no està instal·lada al PC\n" #~ "L'heu de generar per a usar-la.\n" #~ "Un bon punt d'inici en sistemes GNU/Linux és el fitxer /etc/locale.gen i " #~ "el paquet 'locales'\n" #~ "Bona sort!\n" #~ "(Nota: s'intentarà establir igualment)" #~ msgid "Never show this again" #~ msgstr "No mostrar mai més" #~ msgid "Enable/Disable" #~ msgstr "Habilita/Inhabilita" #~ msgid "You can't bootstrap an specific ip from remote GUI yet." #~ msgstr "No podeu arrancar una ip específica des de la GUI remota, encara." #~ msgid "You can't update server.met from remote GUI yet." #~ msgstr "Encara no es pot actualitzar el server.met des de la GUI remota." #~ msgid "Disconnect from " #~ msgstr "Desconnecta del " #~ msgid "current server" #~ msgstr "servidor actual" #~ msgid " and " #~ msgstr " i " #~ msgid "Disconnect from any server and/or Kad" #~ msgstr "Desconnecta de qualsevol servidor i/o Kad" #~ msgid " [" #~ msgstr " [" #~ msgid " | Kad: " #~ msgstr " | Kad: " #~ msgid "TCP Flags" #~ msgstr "Opcions TCP" #~ msgid "UDP Flags" #~ msgstr "Opcions UDP" #~ msgid "Copy ED2k link(s) to clipboard" #~ msgstr "Copia els enllaços ED2K al porta-retalls" #~ msgid "Client requests %u" #~ msgstr "Peticions del client %u" #~ msgid "File block %u-%u (%d bytes):" #~ msgstr "Bloc del fitxer %u-%u (%d bytes):" #~ msgid "Client request is invalid!" #~ msgstr "La petició del client és invàlida!" #~ msgid "Client request is invalid! %i / %i" #~ msgstr "La petició del client és invàlida! %i / %i" #~ msgid "Unable to open %s file - using %s file." #~ msgstr "No s'ha pogut obrir el fitxer %s - usant el fitxer %s." #~ msgid "Warning: known.met does not exist." #~ msgstr "AVÍS: 'known.met' no existeix." #~ msgid "" #~ "CSharedFileList::FindSharedFiles: Removing %s from shared directory list: " #~ "directory not found." #~ msgstr "" #~ "CSharedFileList::FindSharedFiles: S'està eliminant %s de la llista de " #~ "directoris compartits: directori no trobat." #~ msgid "Waiting for subprocess termination failed" #~ msgstr "L'espera de la terminació del procés fill ha fallat" #~ msgid "doesn't work" #~ msgstr "No funciona" #~ msgid "remote gui" #~ msgstr "Interfície gràfica remota" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "Error: No s'ha pogut carregar la còpia de seguretat. Cerqueu solucions " #~ "per recuperar un .part.met a http://forum.amule.org " #~ msgid "" #~ "Error: Backup part.met file is 0 size! Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "Error: la còpia del fitxer part.met és buida! Cerqueu solucions de " #~ "recuperació a http://forum.amule.org" #~ msgid "Error: part.met backup file is 0 size: %s ==> %s" #~ msgstr "Error: el fitxer de còpia del part.met és buit: %s ==> %s" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " Website: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contact: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ " Part of aMule is based on \n" #~ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr "" #~ "Client p2p 'Multi-Plataforma' basat en eMule \n" #~ "\n" #~ " Web: http://www.amule.org\n" #~ " Fòrum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contacte: admin@amule.org (problemes administratius) \n" #~ " Copyright (C) 2003-2008 Equip aMule \n" #~ "\n" #~ " Una part de l'aMule està basada en\n" #~ " Kademlia: Encaminament P2P basat en la mètrica XOR.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "Masterhashes of known files have been loaded." #~ msgstr "S'han carregat les claus mestres dels fitxers coneguts." #~ msgid "Error while reading Kad contacts - 0 entries" #~ msgstr "S'ha produït un error en llegir els contactes Kad - 0 entrades" #~ msgid "Merge attempt" #~ msgstr "Intent d'unió" #~ msgid "Recursive merge" #~ msgstr "Unió recursiva" #~ msgid "Sucessful merge!" #~ msgstr "S'ha unit amb èxit!" #~ msgid "No merge possible" #~ msgstr "Cap unió és possible" #~ msgid "%d" #~ msgstr "%d" #~ msgid "WARNING: You have recieved Low-ID!" #~ msgstr "AVÍS: Teniu ID Baixa!" #~ msgid "Buddy address: " #~ msgstr "Adreça de l'amic: " #~ msgid "This command requieres an argument. Valid arguments: a file hash.\n" #~ msgstr "" #~ "Aquesta ordre requereix un argument. Arguments vàlids: una clau (hash) de " #~ "fitxer.\n" #~ msgid " %d" #~ msgstr " %d" #~ msgid ".%d" #~ msgstr ".%d" #~ msgid "Shows the process of a search." #~ msgstr "Mostra el procés d'una cerca." #~ msgid "Shows the process of a search..\n" #~ msgstr "Mostra el procés d'una cerca..\n" #~ msgid "Deprecated command, now 'Status'." #~ msgstr "Ordre obsoleta, ara és 'Status'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Status' instead.\n" #~ msgstr "" #~ "Aquesta és una ordre obsoleta, i pot ser esborrada en un futur.\n" #~ "Useu 'Status' en el seu lloc.\n" #~ msgid "Deprecated command, now 'Set IPFilter'." #~ msgstr "Ordre obsoleta, ara és 'Set IPFilter'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter' instead.\n" #~ msgstr "" #~ "Aquesta és una ordre obsoleta, i pot ser esborrada en un futur.\n" #~ "Useu 'Set IPFilter' en el seu lloc.\n" #~ msgid "Deprecated command, now 'Get IPFilter Level'." #~ msgstr "Ordre obsoleta, ara és 'Get IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get IPFilter Level' instead.\n" #~ msgstr "" #~ "Aquesta és una ordre obsoleta, i pot ser esborrada en un futur.\n" #~ "Useu 'Get IPFilter Level' en el seu lloc.\n" #~ msgid "Deprecated command, now 'Set IPFilter Level'." #~ msgstr "Ordre obsoleta, ara és 'Set IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter Level' instead.\n" #~ msgstr "" #~ "Aquesta és una ordre obsoleta, i pot ser esborrada en un futur.\n" #~ "Useu 'Set IPFilter Level' en el seu lloc.\n" #~ msgid "Deprecated command, now 'Get/Set IPFilter Level'." #~ msgstr "Ordre obsoleta, ara és 'Get/Set IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get/Set IPFilter Level' instead.\n" #~ msgstr "" #~ "Aquesta és una ordre obsoleta, i pot ser esborrada en un futur.\n" #~ "Useu 'Get/Set IPFilter Level' en el seu lloc.\n" #~ msgid "Deprecated command, now 'Show Servers'." #~ msgstr "Ordre obsoleta, ara és 'Show Servers'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Show Servers' instead.\n" #~ msgstr "" #~ "Aquesta és una ordre obsoleta, i pot ser esborrada en el futur.\n" #~ "Useu 'Show Servers' en el seu lloc.\n" #~ msgid "Deprecated command, now 'Get BwLimits'." #~ msgstr "Ordre obsoleta, ara és 'Get BwLimits'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get BwLimits' instead.\n" #~ msgstr "" #~ "Aquesta és una ordre obsoleta, i pot ser esborrada en un futur.\n" #~ "Useu 'Get BwLimits' en el seu lloc.\n" #~ msgid "Deprecated command, now 'Set BwLimit Up'." #~ msgstr "Ordre obsoleta, ara és 'Set BwLimit Up'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Up' instead.\n" #~ msgstr "" #~ "Aquesta és una ordre obsoleta, i pot ser esborrada en un futur.\n" #~ "Useu 'Set BwLimit Up' en el seu lloc.\n" #~ msgid "Deprecated command, now 'Set BwLimit Down'." #~ msgstr "Ordre obsoleta, ara és 'Set BwLimit Down'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Down' instead.\n" #~ msgstr "" #~ "Aquesta és una ordre obsoleta, i pot ser esborrada en un futur.\n" #~ "Useu 'Get BwLimit Down' en el seu lloc.\n" #~ msgid "Client Identification:" #~ msgstr "Identificació del client:" #~ msgid "Use Secure Identification" #~ msgstr "Usa la identificació segura" #~ msgid "" #~ "Secure Identification uses a handshake approch to safely identify clients " #~ "for use with the credit system." #~ msgstr "" #~ "La Identificació Segura fa una aproximació per tal d'identificar amb " #~ "seguretat els clients que intervenen al sistema de crèdits." #~ msgid "Search warning." #~ msgstr "Avís de cerca." amule_2.3.1+git20151120.0023527bc2.orig/po/cs.po0000644000175000017500000064255512611472361017107 0ustar morphmorph# # Czech aMule 2.2.6 translation # This file is distributed under the same license as the aMule package. # David Watzke , 2010. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2010-08-01 01:11+0100\n" "Last-Translator: David Watzke \n" "Language-Team: cs \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Czech\n" "X-Poedit-Country: CZECH REPUBLIC\n" "X-Poedit-SourceCharset: UTF-8\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Přidat kamaráda" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Musíte zadat platnou IP adresu a port!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informace" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Zadaný userhash je neplatný!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Selhalo otvírání souboru ED2KLinks." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "VAROVÁNÍ: Nemůžete přidat sebe jako zdroj pro eD2k odkaz, když máte LowID." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Ukončuji hlavní aplikaci..." #: src/amule.cpp:248 #, fuzzy, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Ukončuji instanci amuleweb s PID `%ld'..." #: src/amule.cpp:251 #, fuzzy, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Zabíjím instanci amuleweb s PID `%ld'..." #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Selhal" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Ukončuji jádro." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "Ukončení aMule dokončeno." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "Konfigurace EC" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Heslo nastaveno a externí připojení povoleno." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "VAROVÁNÍ" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Vaše nastavení locale bylo změněno na výchozí systémové nastavení kvůli " "změně v konfiguraci. Pardon." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" #: src/amule.cpp:581 msgid "Server list download" msgstr "" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "webserver běží s PID %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "CHYBA" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Port %u je nedostupný. Budete mít LowID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Port %u je nedostupný!\n" "\n" "To znamená, že budete mít LowID.\n" "\n" "Zkontrolujte nastavení vaší sítě a ujistěte se, že je port v obou směrech " "otevřený." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Selhalo vytvoření OnlineSig souboru" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Selhalo vytvoření aMule OnlineSig souboru" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Toto je vaše první spuštění aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Toto je testovací verze, která je denně aktualizovaná a\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "my nezaručujeme, že nemůže nic pokazit, zapálit váš dům,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "nebo zabít vašeho psa. Nicméně i tak by *mělo* být její používání bezpečné.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Více informací, podporu a nová vydání naleznete na naší domovské stránce,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "na www.aMule.org, nebo na našem IRC kanálu #aMule na irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Hlašte chyby na adrese http://forum.amule.org/" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Předalokace místa na disku pro soubor '%s' selhala: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "CHYBA: nelze otevřít logovací soubor" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "VAROVÁNÍ: log je prázdný. Něco je špatně." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Log byl vymazán" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Zpráva od serveru: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Selhalo stahování seznamu uzlů." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Selhalo otvírání staženého kontrolního souboru s verzí" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Porušený soubor pro kontrolu verze" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Používáte zastaralou verzi aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Vaše verze aMule je %i.%i.%i a poslední verze je %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Poslední verze jsou vždy k nalezení na http://www.amule.org/" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "VAROVÁNÍ: Vaše verze aMuled je zastaralá: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Vaše verze aMule je aktuální." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Selhalo stahování kontrolního souboru s verzí" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Uživatelů: %s | Souborů: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Uživatelů: E: %s K: %s | Souborů: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Nezvoleny žádné sítě" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "s LowID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "s HighID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Připojen k %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Připojování k %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Odpojen od eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad spuštěn" #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad zastaven" #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Připojen ke Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Připojen ke kad (za firewallem)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Odpojen od Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "Síť Kad nelze použít, když je v nastavení zakázán UDP port." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Síť Kad je zakázána v nastavení, nepřipojuji se." #: src/amuled.cpp:589 #, fuzzy msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "CHYBA: démon aMule nelze použít, když jsou zakázaná externí připojení. Pro " "jejich povolení použijte buď normální aMule, nebo klíči " "\"AcceptExternalConnections\" v souboru ~/.aMule/amule.conf nastavte hodnotu " "1" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: jdu do pozadí - měj se" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Nelze vytvořit soubor s PID" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "CHYBA: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Toto je aMule %s založená na eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Běží na %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Navštivte http://www.amule.org/ pro kontrolu, jestli není dostupná nová " "verze." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "KRITICKÁ CHYBA: Vytváření časovače selhalo" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Vzdálené ovládání aMule" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Snapshot:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "Multiplatformní p2p klient založený na eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Web: http://www.amule.org\n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Fórum: http://forum.amule.org\n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 Tým aMule \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Část aMule je založena na \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Zpráva" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "Dialog aMule zničen" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Připojuji" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: připojuji" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: odpojeno" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Za firewallem" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Připojen" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Připojuji" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: vypnut" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Zrušit" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Zastaví aktuální pokusy o připojení" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Odpojit" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Odpojit se od aktuálně připojených sítí" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Připojit" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Připojit se k povoleným sítím" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Od: %.1f(%.1f) | St: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Od: %.1f | St: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | připojen)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | odpojen)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Opravdu si přejete ukončit %s?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Potvrzení ukončení" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Spustit příkaz: " #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- výchozí -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Adresář se skiny '%s' neexistuje" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "VAROVÁNÍ: Nelze otevřít soubor se vzhledem '%s' pro čtení" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Sítě" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Okno sítí" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Vyhledávání" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Vyhledávací okno" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Stahování" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Stahování" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Sdílené soubory" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Okno se sdílenými soubory" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Zprávy" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Okno zpráv" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistiky" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Okno se statistikami" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Nastavení" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Okno s nastavením" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Import" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Nástroj pro import částečných souborů" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "O programu" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "O programu/Nápověda" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Síť eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Síť Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Žádná síť" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "Vzdálené ovládání aMule" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Kritická chyba: Selhalo vytváření časovače jádra" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Připojit se ke vzdálené amuli" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Kritická chyba: Selhalo vytváření časovače pro dotazování" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Zahajuji smyčku událostí..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Připojuji..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Připojení selhalo" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Ukončuji" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Spojení uzavřeno - aMule se pravděpodobně ukončila." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Připraven" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Vše" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Neznámý" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Nelze získat seznam sdílených souborů od uživatele '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Hledám kamaráda pro LowID připojení" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (falešná eMule verze %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (falešná eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (falešná eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (založeno na eMule v.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Přezdívka: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Vyžádáno: %s\n" #: src/BaseClient.cpp:2029 #, fuzzy, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statistika souboru pro toto sezení: Přijat %d z %d požadavku, %s přeneseno\n" msgstr[1] "" "Statistika souboru pro toto sezení: Přijato %d z %d požadavků, %s přeneseno\n" #: src/BaseClient.cpp:2032 #, fuzzy, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statistika souboru pro všechna sezení: Přijat %d z %d požadavku, %s " "přeneseno\n" msgstr[1] "" "Statistika souboru pro všechna sezení: Přijato %d z %d požadavků, %s " "přeneseno\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Vyžádán neznámý soubor" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Zpráva od '%s' filtrována (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nová zpráva od '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Uživatel %s (%u) si vyžádal váš seznam sdílených souborů v adresáři %s -> " "zakázáno" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "VAROVÁNÍ: %s nelze otevřít." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "VAROVÁNÍ: Soubor je porušen, obsahuje neplatnou hlavičku." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "I/O chyba při čtení souboru known.met: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "Došlo k chybě při ukládání souboru known.met: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Vložte captchu" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategorie" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nová kategorie" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Zvolte adresář pro stažené soubory" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Musíte zadat název kategorie!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Musíte zadat cestu pro kategorii!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Nemohu vytvořit příchozí adresář pro kategorii. Zadejte prosím platnou cestu!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Připojen ke klientovi ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Připojuji se ke klientovi ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Připojování ke klientovi selhalo / připojení ztraceno ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Chat" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Zavřít tab" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Zavřít všechny taby" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Zavřít ostatní taby" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Přidat do přátel" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Soubor 'cryptkey.dat' nenalezen, vytvářím." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Podrobnosti klienta" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Povoleno" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Podporováno" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Nepodporováno" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Zakázáno" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Připojen" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Odpojeno" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Nekompletní" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Zloduch" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Ověřeno - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Nedostupný" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Uživatel %s (%u) si vyžádal váš seznam sdílených souborů -> přijato" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Uživatel %s (%u) si vyžádal váš seznam sdílených souborů -> odmítnuto" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "Uživatel %s (%u) si vyžádal váš seznam sdílených adresářů -> přijato" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "Uživatel %s (%u) si vyžádal váš seznam sdílených adresářů -> odmítnuto" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Uživatel %s (%u) si vyžádal váš seznam sdílených souborů v adresáři %s -> " "přijato" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Uživatel %s (%u) si vyžádal váš seznam sdílených souborů v adresáři %s -> " "zakázáno" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Uživatel %s (%u) sdílí adresář %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "Uživatel %s (%u) si vyžádal váš seznam sdílených souborů v adresáři %s -> " "zakázáno" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Komentáře k souboru" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Jméno" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Název souboru" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Hodnocení" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Komentář" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Žádné komentáře" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "" msgstr[1] "" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Ní]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Vy]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Velmi nízká" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Nízká" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normální" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Vysoká" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Velmi vysoká" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Vydání" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Vyžaduji" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Připojuji se přes server" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Plná fronta" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Ve frontě" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Stahuji" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Získávám hashset" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Bez potřebných částí" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Nelze spojit LowID s LowID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Příliš mnoho připojení" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Připojuji se přes Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Příliš Kad připojení" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Zabanován" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Chyba připojení" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Vzdálená fronta je plná" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Starý MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Nový MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule kompatibilní" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Lokální server" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Vzdálený server" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Výměna zdrojů" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Pasivní" #: src/DataToText.cpp:133 msgid "Link" msgstr "Odkaz" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Výsledek hledání" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Dokončeno" #: src/DataToText.cpp:146 msgid "In progress" msgstr "Probíhá" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "CHYBA: Došlo místo na disku" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "CHYBA: I/O chyba!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "CHYBA: Selhání!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "Ve frontě" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Již stahuji" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Neznámý nebo špatný formát dočasného souboru." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Část" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Velikost" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Přeneseno" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Rychlost" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Průběh" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Zdroje" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Priorita" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Stav" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Zbývající čas" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Naposledy spatřen kompletní" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Poslední příjem" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Opravdu si přejete smazat vybraný soubor?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Opravdu si přejete smazat vybrané soubory?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Odezva od: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Zastavit" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pozastavit" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Obnovit" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "V&yčistit dokončené" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Přesunout A4AF zdroje k tomuto souboru" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Přesunout A4AF zdroje k tomuto souboru (automaticky)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Přesunout A4AF zdroje k jinému souboru" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Rozšířené nastavení" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Náhled" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Zobrazit &podrobnosti souboru" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Zobrazit všechny komentáře" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Zkopírovat magnet URI do schránky" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Zkopírovat eD2k &odkaz do schránky" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Uložit odezvu do schránky" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "zrušit přiřazení" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Zařadit do kategorie" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Otevřít tento soubor" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Zadejte nový název pro tento soubor:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Přejmenování souboru" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Stahování (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Náhled souboru" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "CHYBA: Nezdařilo se spustit externí přehrávač! Příkaz: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Načítám dočasné soubory z %s" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Nenalezeny žádné částečné soubory" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "" msgstr[1] "" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Stahování %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Soubor '%s' se již pokoušíte stáhnout" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Soubor '%s' již máte" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Soubor %s se již pokoušíte stáhnout" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Neplatný eD2k odkaz! CHYBA: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Klient odeslal paket poté, co selhala autentizace." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Externí připojení uzavřeno." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Externí připojení jsou zakázány kvůli prázdnému heslu!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Externí připojení jsou zakázány v konfiguračním souboru" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Nové externí připojení přijato" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "Externí připojení odmítnuto kvůli prázdnému heslu v nastavení!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Připojuji klienta: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Neznámá verze" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Neplatná verze protokolu." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Autentizace selhala: nesprávné heslo." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Autentizace selhala: chybějící heslo." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Neplatný požadavek, nejdřív se prosím autentizujte." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Přistup povolen." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Odeslána chybová hláška \"%s\" pro klienta." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Neautorizovaný pokus o přístup z %s. Připojení uzavřeno." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "FileHash nenalezen: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Server nepřidán" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "server nenalezen: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k je zakázané v nastavení." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "" #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Žádné údaje pro graf." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Vás klient není nakonfigurován pro tuto úroveň detailů." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Již se ukončuji." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Neplatný odkaz, nebo je již v seznamu." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Soubor nenalezen." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Neplatný název souboru." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Nelze přejmenovat soubor." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad je zakázaný v nastavení." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Již připojen k eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Připojuji se k eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Již jste připojen k síti Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Připojuji se k síti Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Všechny sítě jsou zakázány." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Odpojen od eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Odpojen od Kademlia." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Neznámé rozšíření '%s' pro příkaz '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Neznámý příkaz '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Tento příkaz nesmí dostat argument.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Tento příkaz musí dostat argument.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Dostupná rozšíření:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Dostupné příkazy:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Ukončí aplikaci." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Zobrazit nápovědu." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Chyba syntaxe!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Chyba při zpracování příkazu - to by se nikdy nemělo stát! Prosím, nahlašte " "chybu\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Tento příkaz by neměl mít parametry." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Tento příkaz musí mít parametr." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Neplatný argument." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Toto je nekompletní příkaz." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Pro nápovědu spusťte '%s'.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Tohle je %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Tohle je %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Vytvářím klienta...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "OK, opouštím %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Zobrazí tuto nápovědu." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Hostitel, kde běží aMule. (výchozí: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Port aMule pro externí připojení. (výchozí: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Heslo pro externí připojení." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Načíst konfiguraci ze souboru." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Nevypisovat nic na stdout." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Buď upovídaný - ukaž také debugovací hlášky" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Nastaví locale programu (jazyk)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Vypíše verzi programu." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Podrobnosti souboru" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% dokončeno" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Kamarádi" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Zobrazit &podrobnosti" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Přidat kamaráda" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Odstranit kamaráda" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Poslat &zprávu" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Zobrazit soubory" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Založit kamarádský slot" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Opravdu si přejete odstranit vybraného kamaráda?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Opravdu si přejete odstranit vybrané kamarády?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Nemůžete založit více než jeden kamarádský slot.\n" " Byl přidělen pouze jeden slot." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Vícenásobný výběr" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Poslat zprávu uživateli" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Zpráva k odeslání:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Odstranit z přátel" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Poslat zprávu" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "QR: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Vyžádán jiný soubor" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Čekání na odesílací slot" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "Ve frontě" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Odesílám" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Nic" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Ne" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Ano" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Stahuji..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "HTTP stahování zrušeno" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "Nemohu otevřít soubor se skinem %s pro čtení" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "URL pro stahování nesmí být prázdné" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "URL %s vrátilo: %i - Chyba (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Kritická chyba během zápisu staženého souboru" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "Staženo %d bytů" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Očekáváno %d bytů, ale staženo %d bytů" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Nelze se připojit k HTTP serveru" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Neplatná odpověď od HTTP serveru" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Přejmenování souboru %s selhalo, přerušuji aktualizaci." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Přejmenování souboru %s selhalo, přerušuji aktualizaci." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "Úspěšně aktualizováno: %s" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Selhala aktualizace GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Stahování %s z %s selhalo" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Stahování seznamu serverů z %s selhalo" #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Načítám IP filtry 'ipfilter.dat' a 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "Nemohu načíst ipfilter.dat (%s), neznámý formát." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "Nemohu načíst ipfilter.dat (%s), soubor nelze otevřít." #: src/IPFilter.cpp:329 #, fuzzy, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Načteno %u IP rozsahů z '%s'. %u vadných řádků bylo vyřazeno." msgstr[1] "Načteno %u IP rozsahů z '%s'. %u vadných řádků bylo vyřazeno." #: src/IPFilter.cpp:331 #, fuzzy, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "Načteno %u IP rozsahů z '%s'. %u vadných řádků bylo vyřazeno." msgstr[1] "Načteno %u IP rozsahů z '%s'. %u vadných řádků bylo vyřazeno." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "IP filtr je připraven" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Bootstrap od \n" "známých klientů" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Uzly (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Neplatná IP pro bootstrap" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Neplatný port pro bootstrap" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Prosím vyplňte všechna potřebná pole" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Opravdu chcete stáhnout nový soubor nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "Odstraní se tak současné uzly a restartuje se připojení ke Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Pokračovat?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: hledaný výraz je příliš krátký" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, fuzzy, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Přečteno %u Kad kontaktů" msgstr[1] "Přečteno %u Kad kontaktů" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "" msgstr[1] "" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Název souboru" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Velikost souboru" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Poměr sdílení" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Odesláno" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Vyžádáno" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Přijato" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Kompletní zdroje" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Neznámá verze" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "Nemohu otevřít soubor se skinem %s pro čtení" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Hashuji" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Dokončování" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Dokončeno" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Pozastaveno" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Poškozený" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Čekám" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Musíte zadat (neprázdné) heslo." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Neplatné heslo, není MD5 hash!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Chyba při připojování" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:258 #, fuzzy msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "Špatná odpověď od serveru. Spojení uzavřeno." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Připojení k aMule uspělo" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Připojení uspělo." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "Heslo pro externí připojení." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Synchronizační vlákno spuštěno." #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "Naslouchací socket: Ok." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "CHYBA: Nemohu naslouchat na TCP portu" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "CHYBA: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "VAROVÁNÍ: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Zavřít" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Vyjmout" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Kopírovat" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Vložit" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Vyprázdnit" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Označit vše" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Neomezený" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Tray menu aMule" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Rychlostní limity:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "UL: žádný" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "UL: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DL: žádný" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DL: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Rychlost stahování: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Rychlost odesílání: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Informace o klientu" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Přezdívka: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Nezvolena žádná přezdívka!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID klienta: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Nepřipojen" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Název serveru: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP serveru: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Nepřipojen" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP port: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP port: nepřipraven" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "UDP port: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UDP port: nepřipraven" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Online podpis: Povolen" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Online podpis: Zakázán" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Uptime: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Sdílené soubory: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Klienti ve frontě: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Celkem DL: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Celkem UL: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Limit odesílání" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Limit stahování" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Skrýt aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Zobrazit aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Ukončit" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k odkaz: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Přidat" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Načítání ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "" #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Uživatelů: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Up: 0.0 | Down: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Nepřipojen ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Aktuální připojený server." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Vyhledávání" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Název:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Typ" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Lokální" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Globální" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "FileHash" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Rozšířené parametry" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtrování" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Typ souboru" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Cokoliv" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Archívy" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Obrazy CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Obrázky" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programy" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Texty" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Videa" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Přípona" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Min. velikost" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "bajtů" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Max. velikost" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Dostupnost" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filtr:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filtrování výsledků" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Invertovat výsledek" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Skrýt známé soubory" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Spustit" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Více" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Zastavit" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Stahování" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Vyprázdnit pole" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Výsledky" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Vyčistí dokončená stahování" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Zdroje souboru:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Hlavní" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Celá název:" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "Soubor .met:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Velikost:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Naposledy spatřen kompletní:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Přenos" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Nalezené zdroje:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Dostupný:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Doba stahování:" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Přeneseno:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Dokončeno:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Chytré zacházení s poškozenými částmi" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Ztraceno poškozením:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Získáno kompresí:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Balíčků zachráněných pomocí I.C.H.:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Názvy souborů" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Převzít" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Upravit" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Použít" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Budiž" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Kvalita souboru" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Nehodnocené" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Neplatný / porušený / podvod" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Špatný" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "V pořádku" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Dobrý" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Výborný" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Obnovit" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Stahuji, prosím čekejte ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Neznámá velikost" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Nezbytné informace" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP adresa :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Dodatečné informace" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Uživatelské jméno:" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Přidat" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Rychlost stahování" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Průměr sezení" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Rychlost odesílání" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Připojení" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktivní stahování" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktivní připojení (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Aktivní odesílání" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Strom statistik" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Jméno:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Software klienta:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Verze klienta:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP adresa:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID uživ.:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP serveru:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Název serveru:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Zatemnění:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Přenosy ke klientovi" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Průmerná rychlost odesílání:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Průměrná rychlost stahování:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Odesláno (sezení):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Staženo (sezení):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Odesláno (celkem):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Staženo (celkem):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Skóre" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "DL/UP poměr:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "Pořadí ve frontě" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Přezdívka" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "Toto jméno uvidí ostatní uživatelé, kteří se k vám připojí." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Prodleva před zobrazením tooltipů." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Jazyk ovládání programu" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Kontrola nové verze po spuštění" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "aMule po spuštění zkontroluje, zda nevyšla nová verze" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Minimalizace po spuštění" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "aMule se po spuštění minimalizuje" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Ptát se na ukončení programu" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Povolit ikonu v trayi" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Povolí/zakáže ikonu v systray." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimalizovat do tray ikony" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "Povolením tohoto se aMule minimalizuje do traye (místo pruhu úloh)." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Výběr prohlížeče" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Procházet" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Otevřít pokud možno v novém tabu" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Otevřít webovou stránku v novém tabu místo otvírání nového okna, pokud je to " "možné" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Video přehrávač" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Limity šířky pásma" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Odesílání" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Přidělování slotů" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Porty" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Standardní TCP port" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Tohle je standardní eD2k port a nelze jej zakázat." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "UDP port pro požadavky serveru (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Rozšířený UDP port (Kad / globální vyhledávání)" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "Tento UDP port je použit pro rozšířené požadavky eD2k a pro síť Kad" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Povolit UPnP port forwarding" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnP TCP port (volitelné):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Max. zdrojů na stahovaný soubor:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Maximum připojení naráz:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Automatické připojení po spuštění" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Po odpojení znovu připojit" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Odstranit mrtvý server po" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "pokusech" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Automaticky aktualizovat seznam serverů po spuštění" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Seznam" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Použít systém priorit" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Použít po připojení chytrou kontrolu LowID" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Bezpečné připojení" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Přidělit ručně přidaným serverům vysokou prioritu" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Inteligentní zpracování poškození (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Povolit" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Přidávat soubory ke stažení do fronty pozastavené" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Přidávat soubory ke stažení do fronty s \"auto\" prioritou" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Pokusit se nejprve stáhnout první a poslední části" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Ze stejné kategorie" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Předalokovat místo na disku pro nové soubory" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Toto zvolte chcete-li, aby aMule kontrolovala místo na disku" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Zadejte minimum místa na disku." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Odesílání" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Přidat nově sdílené soubory s \"auto\" prioritou" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Cílový adresář pro stahování" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Sdílené adresáře" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Sdílet skryté soubory" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafy" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Prodleva aktualizace: 5 sekund" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Barvy: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Na pozadí" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Mřížka" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Aktivní připojení" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Ukazatel rychlosti v tray ikoně" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Vyberte" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Strom" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Počet verzí klientů k zobrazení (0=neomezeně)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! VAROVÁNÍ !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Max. nových připojení za 5 sek." #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Velikost zásobníku pro soubory: 240000 bytů" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Velikost fronty odesílání: 5000 klientů" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Vzhled: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Zobrazit rozšířené informace na tabech kategorií" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Zobrazit rychlosti přenosu v titulku okna" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Zobrazit rychlosti přenosu v titulku okna" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Před názvem programu" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Za názvem programu" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Zobrazit šířku pásma režie" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Vertikální umístění nástrojové lišty" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Zobrazit procenta průběhu" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Zobrazit ukazatel průběhu" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Plochý" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Kulatý" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Automaticky řadit soubory (žere CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule automaticky seřadí kolonky ve vaší frontě stahování" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Nastavení externího připojení" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Přijímat externí připojení" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP naslouchajícího zařízení:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "TCP port:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Povolit UPnP port forwarding na EC portu" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Heslo" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Parametry webserveru" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Spustit webserver při spuštění aMule" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Šablona webu" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Heslo pro plná práva" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Povolit uživatele s omezenými právy" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Heslo pro omezená práva" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Povolit UPnP port forwarding portu webserveru" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "UPnP TCP port webserveru (volitelné)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Obnovování stránky (v sek.)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Povoliz Gzip kompresi" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "Budiž" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Klikněte zde pro aplikování změn nastavení." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Zahodí všechny změny v nastavení." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Titulek:" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Komentář:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Příchozí adresář:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Změnit prioritu pro nově přiřazené soubory:" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "Neměnit" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Barva pro tuto kategorii:" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Reset" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Klikněte na toto tlačítko pro vynulování logu." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Seznam serverů" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Přidat server ručně: Název" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Zadejte název serveru" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Zadejte IP serveru ve tvaru x.x.x.x." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Zadejte port serveru." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "" #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Log aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Info o serveru" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2K Info" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad Info" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Aktualizuje seznam uzlů z dané URL..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Uzly (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Statistiky uzlů" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Bootstrap" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Nový uzel" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Port:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Bootstrap od známých klientů" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Odpojit Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Použít bezpečnou uživatelskou identifikaci" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Zatemnění protokolu" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Podporuje zatemnění protokolu" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Použít zatemnění protokolu pro odchozí spojení" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Přijímat pouze zatemněná spojení" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Všichni" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Nikdo" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Kdo může prohlížet moje sdílené soubory:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP filtrování" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtrovat klienty" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtrovat servery" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Obnovit seznam" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Obnovit" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Automaticky aktualizovat IP filtr po spuštění" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Úroveň filtrování:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Vždy filtrovat LAN IP" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Paranoidní nakládání s nesouhlasícími IP" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Použít systémový ipfilter.dat, je-li dostupný" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "Neexistuje-li místní ipfilter.dat, umožní použití systémového." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Povolit online podpis" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Prodleva aktualizace (sek.):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtrovat všechny zprávy" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtrovat zprávy, které nejsou od přátel" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtrovat zprávy od neznámých klientů" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtrovat zprávy obsahující (použijte ',' jako oddělovač):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "zadejte slova, která by měla amule filtrovat a blokovat zprávy obsahující je" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Komentáře" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtrovat komentáře obsahující (použijte ',' jako oddělovač):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Povolit autentizaci" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Povolí/zakáže autentizaci (uživatelské jméno a heslo)" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Uživatelské jméno: " #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Uživatelské jméno, které se použije pro přihlášení k proxy" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Heslo:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Heslo, které se použije pro přihlášení k proxy" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Povolit proxy" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Povolí/zakáže proxy" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Typ proxy:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Hostitel proxy:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Název hostitele proxy" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Port proxy:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Port proxy" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Připojit se k:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Připojit k vzdálené aMuli" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Uživatelské jméno" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Zapamatovat si toto nastavení" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Otevřít tento soubor" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Čekání..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Odstranit vybrané" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Aktivní odesílání" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Všechny sdílené soubory" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Sdílené soubory" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Aktivní odesílání" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Zobrazit klienty" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Obnovit:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Znovu načíst vaše sdílené soubory" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Odeslat" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Odešle zadanou zprávu." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Zavře tento chat." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Připojit k nějakému serveru a/nebo Kadu" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Sdílené soubory" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Zakázaný [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "" msgstr[1] "" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "" msgstr[1] "" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "sek." #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "min." #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "hod." #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "dní" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "vše" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "vše ostatní" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Nekompletní" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Zastaveno" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Archív" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Text" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Aktivní" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Používám konfigurační adresář: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Importování %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Čtení dočasného adresáře" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Vytvářím cílový soubor" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Přidávám do stahování a ukládám nový částečný soubor" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Import částečných souborů" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Stav" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Hash souboru" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (disk: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Prosím zvolte adresář pro vyhledávání dočasných souborů! (budou zahrnuty i " "podadresáře)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "Přejete si smazat zdrojové soubory úspěšný importovaných stahování?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Odstranit zdroje?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "CHYBA: Částečný soubor nelze vytvořit)" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Zkouší se načíst záloha .met souboru z %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "CHYBA: Selhalo otevírání souboru part.met: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "CHYBA: Soubor part.met má nulovou velikost: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "CHYBA: Neplatná verze souboru part.met: %s ==> %s" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "Chyba: %s (%s) je porušený (špatný \"tagcount\"), nelze načíst soubor." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Zkouším obnovit info o souboru..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "Obnovuje se soubor bez názvu - bude obnoven s názvem RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Všechny dostupné informace o souboru obnoveny :D - Zkouším je použít..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Nelze obnovit info o souboru :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Nelze otevřít %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "VAROVÁNÍ: %s je možná poškozený (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "CHYBA během ukládání částečného souboru: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "I/O chyba během ukládání části: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' má nulovou velikost - používám soubor %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Selhalo ukládání souboru part.met.seeds pro %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1050 #, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Dokončeno přehashování %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Dokončené stahování: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Mazání souboru: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "VAROVÁNÍ: Nedostatek volného místa na disku! Pozastavuji soubor: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Stažená část %i souboru '%s' je poškozená." #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Alokuji" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Nedostatek místa na disku" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Staženo" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "" #: src/Preferences.cpp:632 msgid "System default" msgstr "Výchozí pro systém" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albánština" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabský" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Baskičtina" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulharský" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Katalánština" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Čínština (zjednodušená)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Čínština (tradiční)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Chorvatština" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Česky" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Dánština" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Nizozemština" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Angličtina (britská)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estonština" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finština" #: src/Preferences.cpp:648 msgid "French" msgstr "Francouzština" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galicijština" #: src/Preferences.cpp:650 msgid "German" msgstr "Němčina" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Řečtina" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebrejština" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Maďarština" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italština" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italština (švýcarská)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japonština" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Korejština" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Litevština" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norština" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polština" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugalština" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugalština (brazilská)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Rumunština" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Ruština" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Slovinština" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Španělština" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Švédština" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turečtina" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ukrajinština" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Změnit jazyk" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Nedostupný" #: src/Preferences.cpp:906 msgid "no options available" msgstr "není dostupné žádné nastavení" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Nalezena neplatná kategorie, přeskakuji" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "TCP port nemůže být vyšší než 65532, protože UDP port je TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Bude použit výchozí port (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Ignoruji neexistující sdílený adresář: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Připojení" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Adresáře" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Servery" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Soubory" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Bezpečnost" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Rozhraní" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filtry" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Vzdálené ovládání" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Online podpis" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Pokročilé" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Události" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Debugování" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Neměňte tato nastavení, pokud nevíte\n" "co děláte, protože jinak můžete snadno\n" "pokazit různé věci.\n" "\n" "aMule poběží v pohodě bez změny\n" "nastavení na tomto tabu." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Typ proxy, ke které se připojujete" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "Restartujte aMule, aby se projevily následující změny:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP port změněn.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP port změněn.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Externí připojení uzavřeno." #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Nové externí připojení přijato" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Externí připojení uzavřeno." #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Zatemnění protokolu" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Jazyk byl změněn.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Dočasný adresář byl změněn.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- Síť eD2k povolena.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad se nespustí, když máte zakázaný UDP port.\n" "Povolte UDP port, nebo zakažte připojování na Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Nyní MUSÍTE restartovat aMule.\n" "Pokud to neuděláte, tak si pak nestěžujte, když se přihodí něco špatného.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Dočasné soubory" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Příchozí soubory" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Online podpisy" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Zvolte adresář pro %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Zvolit přehrávač videa" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Výběr prohlížeče" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Spustitelný soubor %s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Upravit seznam serverů" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Sem přidejte URL pro stažení server.met souborů.\n" "Pouze jedno URL na každý řádek." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1126 #, fuzzy, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Čas pro průměrný graf: %d minut" msgstr[1] "Čas pro průměrný graf: %d minut" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "" #: src/PrefsUnifiedDlg.cpp:1144 #, fuzzy, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Velikost zásobníku pro soubory: %d bajtů" msgstr[1] "Velikost zásobníku pro soubory: %d bajtů" #: src/PrefsUnifiedDlg.cpp:1150 #, fuzzy, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Velikost fronty pro odesílání: %d klientů" msgstr[1] "Velikost fronty pro odesílání: %d klientů" #: src/PrefsUnifiedDlg.cpp:1157 #, fuzzy, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Interval pro obnovení připojení k serveru: %d minut" msgstr[1] "Interval pro obnovení připojení k serveru: %d minut" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Interval pro obnovení připojení k serveru: Zakázáno" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "zakázáno" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "Spustí příkaz při událost `%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Povolit jaderné příkazy" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Příkaz jádra:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Povolit GUI příkazy" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Příkaz GUI:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Následující proměnné budou nahrazeny:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "Min. velikost musí být menší než max. velikost. Ignoruji max. velikost." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Varování při vyhledávání" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Hlavní" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Nemohu vyhledávat přes Kad, když není spuštěn" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "Nelze vyhledávat na eD2k, když nejste připojen" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Neočekávaná chyba během vyhledávání v síti Kad: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ID souboru" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Soubor" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Přidat volitelné URL pro tento soubor" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Vyhledat související soubory (eD2k, lokální server)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Označit jako známý soubor" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Zkopírovat eD2k odkaz do schránky" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Zrušeno" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Nový" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Selhalo připojení ke všem vybraným serverům. Zkouším to znovu bez obfuskace." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Selhalo připojení ke všem vybraným serverům. Zkouším znovu." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Síť eD2k je zakázána v nastavení, nepřipojuji se." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Připojen k %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Připojení vytvořeno k %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Kritická chyba během pokusu o připojení. Možná je vypnuté/nefunkční " "připojení k Internetu" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Ztracené připojení k %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) se zdá být mrtvý." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) se zdá být plný." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "" msgstr[1] "" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Připojení ztraceno." #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Připojování k %s (%s:%i) selhalo." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Pokusu o připojení k %s (%s:%i) vypršel čas." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Načítám soubor server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Soubor server.met nenalezen!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "Otevření souboru server.met (%s) selhalo: neznámý formát." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Nelze otevřít server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Soubor server.met je porušený, nalezena neplatná verze: 0x%x, velikost %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "" msgstr[1] "" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "" msgstr[1] "" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "I/O chyba při čtení souboru known.met: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Server nebyl přidán: [%s:%d] neudává platný port." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Server nebyl přidán: IP adresa [%s:%d] je neplatná, nebo blokovaná." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Server nebyl přidán: Server s totožnou IP a portem [%s:%d] je již v seznamu." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Server byl přidán: [%s:%d] pod názvem '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Snažíte se smazat server, na který jste právě připojen(a). Nejprve se prosím " "odpojte." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Nemohu otevřít '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Ukládání server.met selhalo!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Neplatná URL" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "Stahování seznamu serverů z %s selhalo" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Stáhnout seznam serverů z %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "V addresses.dat není žádná platná URL pro automatické stahování server.met" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Stahování seznamu serverů z %s selhalo" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Název serveru" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Adresa" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Popis" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Uživatelé" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Pevný" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Verze" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Jste připojen(a) na server, který se pokoušíte smazat. Nejprve se prosím " "odpojte. Server NEbyl smazán." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(neznámý název)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Opravdu si přejete smazat stálý server %s?" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Servery (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Server" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Připojit k serveru" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Označit server jako stálý" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Označit server jako nestálý" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Označit servery jako stálé" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Označit servery jako nestálé" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Vzdálený server" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Vzdálené servery" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Odstranit všechny servery" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Znovu připojit k serveru" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Opravdu si přejete smazat všechny servery?" #: src/ServerListCtrl.cpp:542 #, fuzzy msgid "Are you sure that you wish to delete the selected server?" msgstr "Opravdu si přejete smazat vybrané servery?" #: src/ServerListCtrl.cpp:544 #, fuzzy msgid "Are you sure that you wish to delete the selected servers?" msgstr "Opravdu si přejete smazat vybrané servery?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Nové ID klienta je %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" "\tPravděpodobně je to způsobeno tím, že jste za firewallem či routerem." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPro více informací prosím běžte na http://wiki.amule.org/" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "" msgstr[1] "" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Uložení seznamu serverů dokončeno." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Server odmítl poslední příkaz" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Chybný paket obdržen od serveru: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Došlo k neznámé chybě při zpracovávání paketu od serveru: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "IP serveru %s (%s) je filtrována. Nepřipojuji se." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "používám zatemňování protokolu (obfuscation)." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Připojování k %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "" #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "" #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Stav eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Stav Kademlia:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "Běží na %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Běží" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Stav:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Stav připojení:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Za firewallem - otevřete TCP port %d na vašem routeru či ve firewallu" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "Stav UDP připojení:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Za firewallem - otevřete UDP port %d na vašem routeru či ve firewallu" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Stav firewallu: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Není třeba kamaráda - TCP port je otevřený" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Není třeba kamaráda - UDP port je otevřený" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Žádný kamarád" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Připojuji se ke kamarádovi" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Připojen ke kamarádovi na %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Indexované zdroje:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Indexovaná klíčová slova:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Neběží" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "" msgstr[1] "" #: src/SharedFileList.cpp:377 #, fuzzy, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Nalezeno %i známých a %i neznámých sdílených souborů" msgstr[1] "Nalezeno %i známých a %i neznámých sdílených souborů" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Sdílený adresář nenalezen, přeskakuji: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Uživatelské jméno" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Rychlost stahování" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Rychlost odesílání" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Dostupné části" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Stav odesílání" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Průběh stahování" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Původ" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Název souboru" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Sdílené soubory" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Požadavky" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Přijaté požadavky" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Přenesená data" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Poměr sdílení" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Obdržené části" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Kompletní zdroje" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Cesta" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Přidat komentář/hodnocení" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Upravit komentář/hodnocení" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Přejmenovat" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Zkopírovat magnet URI do schránky" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Zkopírovat eD2k odkaz do schránky (%zdroj)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Zkopírovat ED2K odkaz do schránky (AICH info)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "K vytvoření platného odkazu potřebujete HighID" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Sdílené soubory (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[PartSoubor]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Název souboru" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Odeslaná data (sezení (celkem)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Celková režie (pakety): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Režie serveru (pakety): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Režie Kadu (pakety): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Aktivní odesílání: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Čekající odesílání: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Průměrný čas odesílání: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Stažená data (sezení (celkem)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Nalezené zdroje: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Aktivní stahování (části): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "UL:DL poměr sezení (celkem): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Průměrzná rychlost stahování (sezení): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Průměrzná rychlost odesílání (sezení): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Maximální rychlost stahování (sezení): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Maximální rychlost odesílání (sezení): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Znovupřipojení: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Doba od prvního přenosu: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Připojen k serveru od: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Aktivních připojení (odhad): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Limit připojení dosažen: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Průměrný počet připojení (odhad): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Klienti" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Neznámý: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Filtrován: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Zabanován: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Celkem: %i Známých: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Fungující servery: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Nefungující servery: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Celkem: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Smazané servery: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Filtrované servery: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Uživatelů na fungujících serverech: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Souborů na fungujících serverech: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Celkem uživatelů: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Celkem souborů: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Zaplnění serveru: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Počet sdílených souborů: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Celková velikost sdílených souborů: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Průměrná velikost souboru: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Operační systém" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Neobdrženo" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktivní připojení (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Nedostupný" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Nikdy" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "" #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Spustí a ukončí se." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Neplatný formát IP adresy. Použijte xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Zpracovávám podle hashe: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Zpracovávám podle názvu souboru: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Neplatné číslo\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Pro nápovědu spusťte '%s'.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Stahování (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Požadavek selhal kvůli neznámé chybě." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operace byla úspěšná." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "vypnuto" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "zapnuto" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Připojen k %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Připojování" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "za firewallem" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Stahování:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Odesílání:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Klientů ve frontě:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Celkem zdrojů:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Počet výsledků vyhledávání: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 #, fuzzy msgid "Search progress not available" msgstr "Zobrazit procenta průběhu" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Obdržena neznámá odpověď od serveru, kód operace = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "" #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Zobrazit celý strom statistik." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Ukončit aMuli" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "" #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Znovu načte seznam sdílených souborů." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "" #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "" #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "" #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Připojit se k síti." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Připojit se pouze k eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Připojit se pouze ke Kademlia." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Odpojit se od sítě." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Odpojit se pouze od eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Odpojit se pouze od Kademlia." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Přidat eD2k nebo magnet odkaz do jádra." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Nastavit hodnotu nastavení." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Nastavit filtrování IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Povolit klientům i serverům filtrování IP." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Zakázat klientům i serverům filtrování IP." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Povolit/zakázat klientům filtrování IP." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Povolit klientům filtrování IP." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Zakázat klientům filtrování IP." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Povolit/zakázat klientům filtrování IP." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Povolit serverům filtrování IP." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Zakázat serverům filtrování IP." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Zvolte úroveň filtrování IP." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Nastavit limity šířky pásma." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Nastavit limit šířky pásma pro odesílání." #: src/TextClient.cpp:900 src/TextClient.cpp:902 msgid "The given value must be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Nastavit limit šířky pásma pro stahování." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "" #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "" #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "" #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "" #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "" #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "" #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Spustí vyhledávání v síti Kad" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Spustí globální vyhledávání" #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Spustí lokální vyhledávání" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Spustí vyhledávání v síti Kad" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Zobrazí výsledky posledního vyhledávání." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Zobrazí výsledky posledního vyhledávání.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Zobrazí průběh vyhledávání." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Zobrazí průběh vyhledávání.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Pozastavit stahování." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Pokračovat ve stahování." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Zrušit stahování." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Nastaví prioritu stahování." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" "Nastavte prioritu stahovaného souboru na nízkou, normální, vysokou, nebo " "automatickou.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Nastaví nízkou prioritu." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Nastaví normální prioritu." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Nastaví vysokou prioritu." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Nastaví automatickou prioritu." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Zobrazit fronty/seznamy." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Zobrazit frontu odesílání." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Zobrazit frontu stahování." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Zobrazit log." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Zobrazit seznam serverů." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Vyčistit log." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Toto je zastaralý příkaz, který může být v budoucnosti odstraněn.\n" "Použijte místo něj '%s'.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Textový klient aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Převádí se staré AICH hashsety v '%s' do 64b v '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "VAROVÁNÍ: Název souboru '%s' je neplatný a byl změněn na '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "VAROVÁNÍ: Soubor '%s' již existuje, nový soubor byl přejmenován na '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "Opravdu si přejete zrušit a smazat všechny soubory v této kategorii?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Potvrzení je nutné" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Příliš mnoho připojení" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Vše ostatní" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Přidat kategorii" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Upravit kategorii" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Odstranit kategorii" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Obnovuji odesílání souboru %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Zastavuji odesílání souboru %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "" #: src/UserEvents.h:60 msgid "Download completed" msgstr "Stahování dokončeno" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Celá cesta k souboru." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "ED2k hash souboru." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Velikost souboru v bytech." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Zahájeno nové sezení v chatu" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Odesílač zpráv." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Došlo místo" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Diskový oddíl." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Chyba při dokončení" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Zpracovávám soubor č. %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Vyžádal jste si částečné hashe (používá se pouze pro soubory > 9,5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Neexistující soubor !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, tvůrce eD2k odkazů z aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Vítejte!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Vstupní parametry" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Soubor k hashování" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Přidat volitelné URL pro tento soubor" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Sem zadejte soubor pro který chcete vypočítat eD2k odkaz" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Odebrat" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Vytvořit odkaz s hashi částí" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Pomůže rozšířit nové a raritní soubory rychleji, za cenu zvýšené velikosti " "odkazu" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4 hash souboru" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k hash souboru" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k odkaz" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Uložit" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Zkopírovat do schránky" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Otevřít" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Otevřít soubor pro vytvoření jeho eD2k odkazu" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Zkopírovat vypočítaný eD2k odkaz do schránky" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Uložit jako" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Uložit vytvořený eD2k odkaz do souboru" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "O aLinkCreatoru" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Vyberte soubor jemuž chcete vytvořit eD2k odkaz" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Nelze otevřít schránku" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Zatím není co zkopírovat!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Zvolte soubor s vaším vytvořeným eD2k odkazem" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Nelze otevřít" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Zadejte prosím (neprázdný) název souboru" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Zatím není co ukládat!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, tvůrce eD2k odkazů, součást aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Ikony z http://www.everaldo.com a http://www.icomania.com\n" "a http://jimmac.musichall.cz/ikony.php3\n" "\n" "Šířeno pod GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Hashování..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator pracuje" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Počítám MD4 hash..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Počítám eD2k hashe..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Přerušeno!" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Hotovo za %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Tato URL je již přidána!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Zadejte prosím neprázdnou URL" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Nelze otevřít %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i dní %i hodin %i min %i sek" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, online statistiky aMule" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Maximální rychlost stahování během tohoto běhu wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Maximální rychlost stahování během všech běhů wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Systém" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Přerušit automatické obnovování" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Uložit obrázek online statistik" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Vytisknout obrázek online statistik" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Nastavení" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "O wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Spustit automatické obnovování" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Automatické obnovování zastaveno" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Automatické obnovování spuštěno" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Uložit obrázek statistiky" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Online statistiky aMule" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Nastal problém při tisku.\n" "Možná vaše tiskárna není správně nastavena." #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Tisknu" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule online statistiky\n" "(c) 2004 ThePolish \n" "\n" "Založený na CAS od Pedro de Oliveira \n" "\n" "Distribuovaný pod GPL licencí" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "aMule neběží..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule běží" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule běží, ale je odpojená" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule se připojuje..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Stav aMule je neznámý..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule" #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " běží už " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " je zastavená!" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " je nepřipojená!" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " se připojuje..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " je asi vypnutá, zkontrolujte to!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " je připojena k " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "vypnuto" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr "běží" #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " s" #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Celkem staženo:" #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Odesláno:" #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Stahování: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, odesílání: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Sdílení:" #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " soubor(ů), klientů ve frontě: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Čas:" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " na " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Průměrná zátěž systému (1-5-15 minut): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Běh systému: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Adresář obsahující soubor amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Zadejte cestu k adresáři, ve kterém je soubor amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Interval pro obnovování v sekundách" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Vygenerovat obrázek při každém obnovení" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Zadejte adresář, do kterého si přejete vygenerovat obrázek statistik" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Pravidelně nahrávat obrázek statistik na FTP server" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP url" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP cesta" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Zadejte URL vašeho FTP serveru" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Zadejte sem adresář, do kterého se na FTP budou ukládat obrázky statistik" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Uživatel" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Zadejte sem uživatelské jméno pro přihlášení k vašemu FTP serveru" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Zadejte sem heslo pro přihlášení k vašemu FTP serveru" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Interval aktualizace FTP v minutách" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Zkontrolovat" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Adresář obsahující váš soubor s podpisem" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Adresář pro generování obrázků statistik" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Načte šablonu " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "HTTP port webserveru" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Použít UPnP port forwarding pro webserver" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP port" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Použít gzip kompresi" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Heslo pro plný přístup k webserveru" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Heslo pro omezený přístup k webserveru" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Povolit přístup hostům" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Zakázat přístup hostům" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Cesta ke konfiguráku aMule. NEPOUŽÍVEJTE PŘÍMO!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Zakázat PHP interpreter (zastaralé)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Překompilovat PHP stránky při každém požadavku" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Webový server aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "CHYBA: nelze přijmout připojení na webového klienta\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Požadavek selhal kvůli následující chybě: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Index nenalezen: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sezení vypršelo - vyžaduji přihlášení\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Relace je v pořádku, přihlášen\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Relace je v pořádku, nepřihlášen\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Není otevřené žádné sezení - vyžaduji přihlášení\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Relace zahájena - vyžadování přihlášení\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Zpracování požadavku [původní]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Heslo nezadáno, přihlášení nebude možné." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Kontrola hesla\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Hash hesla je neplatný\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Heslo v pořádku\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Špatné heslo\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Nezadal(a) jste heslo. Prázdné heslo není povoleno.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Bylo vyžádáno odhlášení\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Zpracování požadavku [přesměrovaný]:" #, fuzzy #~ msgid "Download status" #~ msgstr "Průběh stahování" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Transferring" #~ msgstr "Přenáším" #~ msgid "QR: ???" #~ msgstr "QR: ???" #~ msgid "QR: %u" #~ msgstr "QR: %u" #~ msgid "Only files currently uploading" #~ msgstr "Pouze soubory zrovna odesílané" #~ msgid "Queue Rank" #~ msgstr "Pořadí ve frontě" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - zobrazit průběh vyhledávání" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Vytváří se MD4 a AICH hash pro soubor: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Vytváří se MD4 hash pro soubor: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Vytváří se AICH hash pro soubor: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "VAROVÁNÍ: Nelze smazat původní '%s' po vytvoření zálohy" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "VAROVÁNÍ: Nelze smazat %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Hodnocení (celkové):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Pokusit se odesílat celé části všem" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Stahuji" #~ msgid "Transfers" #~ msgstr "Přenosy" #~ msgid "Unban" #~ msgstr "Odbanovat" #~ msgid "Show Uploads" #~ msgstr "Zobrazit odesílání" #~ msgid "Show Queue" #~ msgstr "Zobrazit frontu" #~ msgid "Client Software" #~ msgstr "Software klienta" #~ msgid "Waited" #~ msgstr "Čekání" #~ msgid "Upload Time" #~ msgstr "Čas odesílání" #~ msgid "Upload/Download" #~ msgstr "Odesláno/Staženo" #~ msgid "Remote Status" #~ msgstr "Vzdálený stav" #~ msgid "File Priority" #~ msgstr "Priorita souboru" #~ msgid "Score" #~ msgstr "Skóre" #~ msgid "Last Seen" #~ msgstr "Naposledy spatřen" #~ msgid "Transferred Up" #~ msgstr "Odesláno" #~ msgid "Transferred Down" #~ msgstr "Staženo" #~ msgid "Userhash" #~ msgstr "Userhash" #~ msgid "Clients on queue :" #~ msgstr "Klienti ve frontě" #~ msgid "Current Session" #~ msgstr "Současné sezení" #~ msgid "Total" #~ msgstr "Celkem" #~ msgid "Files Transfers Window" #~ msgstr "Okno s přenosy" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Celkem uživ.: %s | Celkem soub.: %s" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "VAROVÁNÍ: Nelze smazat původní '%s' po vytvoření zálohy" #~ msgid "Makes a search." #~ msgstr "Provede vyhledávání." #, fuzzy #~ msgid "Killed!" #~ msgstr "Selhal" #, fuzzy #~ msgid "Using amuleweb in '%s'." #~ msgstr "Spustit amuleweb po spuštění" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "Ukončit aMule." #~ msgid "Fetching status..." #~ msgstr "Zjišťuji stav..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Uživ.: E: %s K: %s | Soub. E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Klient %s s IP %s na portu %d používá %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() vrátila NULL" #~ msgid "Firewalled" #~ msgstr "Za firewallem" #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "Soubor %s je pro Donkey příliš velký: maximum jsou 4 GB." #~ msgid "No handler for this file type." #~ msgstr "Nenalezen žádný obslužný program pro tento typ souboru." #~ msgid "File was not saved" #~ msgstr "Soubor nebyl uložen" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "Připojení selhalo. Nemohu se připojit k zadanému hostiteli\n" #~ msgid "Message Filter" #~ msgstr "Filtr zpráv" #~ msgid "Gui Tweaks" #~ msgstr "Vychytávky GUI" #~ msgid "Core Tweaks" #~ msgstr "Vychytávky jádra" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Prodleva mezi zobrazením nástrojových tipů" #~ msgid "Show part file number before file name" #~ msgstr "Zobrazit číslo částečného souboru před názvem" #~ msgid "Skin Support" #~ msgstr "Podpora skinů" #~ msgid "- no skins available -" #~ msgstr "- nejsou dostupné žádné skiny -" #~ msgid "Online Signature Directory:" #~ msgstr "Adresář s online podpisy:" #~ msgid "Filtering Options:" #~ msgstr "Nastavení filtrování:" #~ msgid "Line Capacities" #~ msgstr "Kapacita linky" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Pozn.: Tyto hodnoty používají\n" #~ " pouze statistiky." #~ msgid "Standard client TCP Port:" #~ msgstr "Standardní TCP port klienta:" #~ msgid "Extended client UDP Port:" #~ msgstr "Rozšířující UDP port klienta:" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "UDP port pro rozšířené požadavky serveru (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "Maximum zdrojů na soubor" #~ msgid "Universal Plug and Play" #~ msgstr "Univerzální Plug and Play" #~ msgid "Enable UPnP" #~ msgstr "Povolit UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "UPnP TCP port:" #~ msgid "Select Statistics Colors" #~ msgstr "Zvolte barvy statistik" #~ msgid "Download Queue Files Progress" #~ msgstr "Průběh stahování souborů ve frontě" #~ msgid "Show percentage" #~ msgstr "Zobrazit procenta" #~ msgid "Show progressbar " #~ msgstr "Zobrazit ukazatel průběhu" #~ msgid "Enable skin support " #~ msgstr "Povolit skiny" #~ msgid "Skin:" #~ msgstr "Skin:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "Automaticky řadit sloupce ve frontě stahování (žere CPU)" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "IP naslouchajícího rozhraní\n" #~ "(prázdné = jakékoliv)" #~ msgid "TCP port" #~ msgstr "TCP port" #~ msgid "Who can see shared files:" #~ msgstr "Kdo může vidět sdílené soubory:" #~ msgid "Event types" #~ msgstr "Typy událostí" #~ msgid "Makes aMule promt before exiting." #~ msgstr "aMule se před ukončením zeptá." #~ msgid "Show overhead bandwith" #~ msgstr "Zobrazit šířku pásma režie" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. aktivní" #~ msgid "Advanced Settings" #~ msgstr "Pokročilá nastavení" #~ msgid "Progressbar Style" #~ msgstr "Styl ukazatele průběhu" #~ msgid "Column Sorting" #~ msgstr "Řazení sloupců" #~ msgid "Misc Gui Tweaks" #~ msgstr "Různé vychytávky GUI" #~ msgid "File Options" #~ msgstr "Volby souboru" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "U filmu můžete sdělit jeho délku, příběh, jazyk ...\n" #~ "a pokud je to podfuk (fake), můžete o tom informovat ostatní." #~ msgid "Misc Options" #~ msgstr "Různá nastavení" #~ msgid "Server Options" #~ msgstr "Nastavení serverů" #~ msgid "Display server motd when connected ..." #~ msgstr "Zobrazit MOTD serveru po připojení ..." #~ msgid "Disable/Enable" #~ msgstr "Zakázat/povolit" #~ msgid "Authentication" #~ msgstr "Autentizace" #~ msgid "General Settings" #~ msgstr "Hlavní nastavení" #~ msgid "Max Connections" #~ msgstr "Maximum připojení" #~ msgid "GUI Tweaks" #~ msgstr "Vychytávky GUI" #~ msgid "Remote Control" #~ msgstr "Ovládání na dálku" #~ msgid "Unable to determine selected browser!" #~ msgstr "Nemohu rozpoznat vybraný prohlížeč!" #~ msgid "User Defined" #~ msgstr "Uživatelem definované" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org/ - Linuxová Mula" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Select your browser here" #~ msgid "Custom Browser:" #~ msgstr "Vlastní prohlížeč:" #~ msgid "Please wait... " #~ msgstr "Prosím čekejte..." #~ msgid "Could not determine the command for running the browser." #~ msgstr "Nelze zjistit příkaz pro spuštění prohlížeče." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "Připojování selhalo. Nulová odpověď." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "Přístup odepřen, protože: " #~ msgid "ExternalConn: Access denied" #~ msgstr "Přístup odepřen" #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Zkopírovat eD2k do &schránky" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "Zkopírovat ED2K odkaz do schránky (&zdroj)" #, fuzzy #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "Zkopírovat ED2K odkaz do schránky (&zdroj)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "Zkopírovat ED2K odkaz do schránky (&hostname)" #, fuzzy #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "Zkopírovat ED2K odkaz do s&chránky (hostname)" #~ msgid "Warning" #~ msgstr "Varování" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "Chyba: Nelze naslouchat na TCP portu." #~ msgid "Webserver HTTP port" #~ msgstr "HTTP port webserveru" #~ msgid "Full access password for webserver" #~ msgstr "Přístupové heslo k webserveru" #~ msgid "Guest password for webserver" #~ msgstr "Heslo pro hosta na webserveru" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "Načítat/ukládat nastavení webserveru z/do vzdálené aMule" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "Zadejte soubor, kterému chcete vygenerovat Ed2k odkaz" #~ msgid "Ed2k File Hash" #~ msgstr "ED2K hash souboru" #~ msgid "Ed2k link" #~ msgstr "ED2K odkaz" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "Otevřít soubor pro výpočet jeho ed2k odkazu" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "Zkopírovat vygenerovaný ed2k odkaz do schránky" #~ msgid "Save computed ed2k link to file" #~ msgstr "Uložit vygenerovaný ed2k odkaz do souboru" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, vytvářeč ED2K odkazů\n" #~ "\n" #~ "(c) 2004 ThePolish\n" #~ "Obrázky z http://www.everaldo.com/, http://www.icomania.com/\n" #~ "a http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distribuován pod GPL" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, vytvářeč ED2K odkazů" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Zkopírovat ED2k odkaz do schránky" #, fuzzy #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Zkopírovat ED2k odkaz do schránky" #, fuzzy #~ msgid "ED2K: Connecting" #~ msgstr "Připojuji" #, fuzzy #~ msgid "ED2K: Disconnected" #~ msgstr "Odpojeno" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "Váš seznam serverů pro automatickou obnovu je prázdný.\n" #~ "Aktualizace seznamu serverů po spuštění bude zakázána." #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "Sítě ED2K i Kademlia jsou zakázány.\n" #~ "Nebudete se moci připojit, dokud nepovolíte alespoň jednu z nich." #~ msgid "Edit Serverlist" #~ msgstr "Upravit seznam serverů" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "Chyba: nemohu přijmout nové externí připojení" #~ msgid "ED2K is disabled in preferences." #~ msgstr "ED2K je zakázaný v nastavení." #~ msgid "Already connected to ED2K." #~ msgstr "Již jste připojen k ED2K." #~ msgid "Connecting to ED2K..." #~ msgstr "Připojuji se k ED2K..." #~ msgid "Disconnected from ED2K." #~ msgstr "Odpojen od ED2K." #~ msgid "ED2K Status:" #~ msgstr "Stav ED2K:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "Průměrná rychlost stahování (sezení): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "Průměrná rychlost odesílání (sezení): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "Maximální rychl. stahování (sezení): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "Maximální rychl. odesílání (sezení): %s" #~ msgid "Average filesize: %s" #~ msgstr "Průměrná velikost souborů: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "Nemohu vyhledávat přes ED2K, když neběží" #~ msgid "Error: " #~ msgstr "Chyba: " #~ msgid "Warning: " #~ msgstr "Varování: " #~ msgid "Error" #~ msgstr "Chyba" #, fuzzy #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "Zvolte si prosím v nastavení preferovaný video přehrávač.\n" #~ "Mezitím se aMule pokusí použít mplayer a vždy zobrazí toto varování." #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "Chyba: Nelze otevřít soubor part.met: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "Chyba: Soubor part.met má nulovou velikost: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "Chyba: Neplatná verze souboru part.met: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "Varování: %s může být porušen (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "Neočekávaná chyba souboru při dokončování %s. Pozastaveno" #~ msgid "ERROR! Attempted to share %s" #~ msgstr "CHYBA! Pokus o sdílení %s" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "Síť ED2K je zakázána v nastavení, nepřipojuji se." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "V seznamu nejsou žádné platné servery" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "Neplatný ed2k odkaz! Chyba: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "Omezení šířky pásma: Od: %u kB/s, St: %u kB/s.\n" #~ msgid "Connect to ED2K only." #~ msgstr "Připojit se pouze k ED2K." #~ msgid "Disconnect from ED2K only." #~ msgstr "Odpojit se pouze od ED2K." #~ msgid "Error: %s (%s) - %s" #~ msgstr "Chyba: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "Varování: %s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "Error: Došlo místo na disku" #~ msgid "Error: Partmet not found" #~ msgstr "Chyba: part.met soubor nenalezen" #~ msgid "Error: IO error!" #~ msgstr "Chyba: I/O chyba!" #~ msgid "Error: Failed!" #~ msgstr "Chyba: Selhání!" #~ msgid "ED2K Link: " #~ msgstr "ED2K odkaz: " #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "Vyhledává více výsledků na ED2K. Zatím nepodporováno na Kadu." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Limity šířky pásma" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "Toto je standardní port ED2K a nelze jej zakázat." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "" #~ "Tento UDP port je použit pro rozšiřující ED2K požadavky a pro síť Kad" #~ msgid "Hard Limit" #~ msgstr "Tvrdý limit" #~ msgid "Connection Limits" #~ msgstr "Limity připojení" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Po spuštění aktualizovat seznam serverů" #~ msgid "Disk Space" #~ msgstr "Místo na disku" #~ msgid "Check Disk Space" #~ msgstr "Zkontrolovat místo na disku" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "Zvolte, pokud chcete, aby aMule zkontrolovala místo na disku" #~ msgid "Min Disk Space:" #~ msgstr "Minimální místo na disku" #~ msgid "Incoming Directory :" #~ msgstr "Příchozí adresář:" #~ msgid "Temporary Directory :" #~ msgstr "Dočasný adresář:" #~ msgid "Shared Directories" #~ msgstr "Sdílené adresáře" #~ msgid "Create Backup to preview" #~ msgstr "Vytvořit zálohu pro náhled" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Zobrazit rychlý obsluhovač ED2K odkazů" #~ msgid "Webserver Parameters" #~ msgstr "Parametry webserveru" #~ msgid "Webserver port" #~ msgstr "Port webserveru" #~ msgid "Webserver UPnP TCP port" #~ msgstr "UPnP TCP port webserveru" #~ msgid "Serverlist" #~ msgstr "Seznam serverů" #~ msgid "Manual Server Add : Name" #~ msgstr "Ruční přidání serveru : Název" #~ msgid "Speed Limits:" #~ msgstr "Rychlostní omezení:" #~ msgid "Download Speed: %.1f" #~ msgstr "Rychlost stahování: %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "Rychlost odesílání: %.1f" #~ msgid "TCP Port: %d" #~ msgstr "TCP port: %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "TCP port: Nepřipraven" #~ msgid "UDP Port: %d" #~ msgstr "UDP port: %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "UDP port: Nepřipraven" #~ msgid "Shared Files: %d" #~ msgstr "Sdílené soubory: %d" #~ msgid "Queued Clients: %d" #~ msgstr "Klientů ve frontě: %d" #~ msgid "Upload Limit" #~ msgstr "Limit odesílání" #~ msgid "Download Limit" #~ msgstr "Limit stahování" #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "" #~ "Varování: byla zadána neplatná URL pro automatickou aktualizaci serverů: %" #~ "s" #~ msgid "webserver running on pid %d" #~ msgstr "webový server běží s PID %d" #~ msgid "Disconnected from ED2K" #~ msgstr "Odpojen od ED2K" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "Nelze otevřít soubor 'emfriends.met' pro čtení!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "Nelze otevřít soubor 'emfriends.met' pro zápis!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "CHYBA: Částečný soubor nelze otevřít)" #~ msgid "Mb" #~ msgstr "Mb" #~ msgid "Web Server: Started\n" #~ msgstr "Webový server: spuštěn\n" #~ msgid "Not Supported" #~ msgstr "Nepodporovaný" #~ msgid "LowID: %u (%.2f%% Total %.2f%% Known)" #~ msgstr "LowID: %u (%.2f%% celkem %.2f%% známých)" #~ msgid "Browse wav" #~ msgstr "Zvolit wav" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "WAV soubor (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "Žádné komentáře" #~ msgid "Notifications" #~ msgstr "Oznámení" #~ msgid "Messages popup" #~ msgstr "Vyskakovací zpráva" #~ msgid "Use sound" #~ msgstr "Použít zvuk" #~ msgid "Pop out when :" #~ msgstr "Vyskočit při:" #~ msgid "New entry on log" #~ msgstr "Nová záznam v logu" #~ msgid "Starts a new chat session" #~ msgstr "Začne nový chat" #~ msgid "A new chat message is received" #~ msgstr "Přijde do chatu nová zpráva" #~ msgid "A download is added or finished" #~ msgstr "Stahování bylo přidáno nebo dokončeno" #~ msgid "New aMule version detected" #~ msgstr "Byla detekována nová verze aMule" #~ msgid "Notify by Mail" #~ msgstr "Oznámit na e-mail" #~ msgid "Send an Email when transfer complete." #~ msgstr "Odeslat e-mail, když je přenos dokončen." #~ msgid "SMTP server :" #~ msgstr "SMTP server:" #~ msgid "Email Address :" #~ msgstr "E-mailová adresa:" #~ msgid ":" #~ msgstr ":" #~ msgid "" #~ "The selected locale seems not to be installed on your box\n" #~ "You must generate it to use this language.\n" #~ "A good start on linux systems is the file /etc/locale.gen and the package " #~ "'locales'\n" #~ "Good luck!\n" #~ "(Note: I'll try to set it anyway)" #~ msgstr "" #~ "Zdá se, že vaše locale není správně nainstalovaná\n" #~ "Musíte si ji vygenerovat, pro použití tohoto jazyka.\n" #~ "Na linuxových systémech hledejte soubor /etc/locale.gen a balíček " #~ "'locales'\n" #~ "Hodně štěstí!(Poznámka: Přesto se program pokusí nastavit ji)" #~ msgid "Never show this again" #~ msgstr "Toto již nezobrazovat" #~ msgid "Enable/Disable" #~ msgstr "Povolit/zakázat" #~ msgid "You can't update server.met from remote GUI yet." #~ msgstr "Zatím nelze aktualizovat server.met ze vzdálené GUI." #~ msgid "Disconnect from " #~ msgstr "Odpojit od " #, fuzzy #~ msgid "current server" #~ msgstr "současného serveru" #~ msgid " and " #~ msgstr " a " #~ msgid "Disconnect from any server and/or Kad" #~ msgstr "Odpojit se od serverů a/nebo Kadu" #~ msgid " [" #~ msgstr " [" #~ msgid " | Kad: " #~ msgstr " | Kad: " #~ msgid "TCP Flags" #~ msgstr "TCP příznaky" #~ msgid "UDP Flags" #~ msgstr "UDP příznaky" #~ msgid "Copy ED2k link(s) to clipboard" #~ msgstr "Zkopírovat ED2K odkaz(y) do schránky" #~ msgid "Client request is invalid!" #~ msgstr "Požadavek klienta je neplatný!" #~ msgid "Client request is invalid! %i / %i" #~ msgstr "Požadavek klienta je neplatný! %i / %i" #~ msgid "Unable to open %s file - using %s file." #~ msgstr "Nelze otevřít soubor %s - používám %s." #~ msgid "Warning: known.met does not exist." #~ msgstr "Varování: soubor known.met neexistuje." #~ msgid "" #~ "CSharedFileList::FindSharedFiles: Removing %s from shared directory list: " #~ "directory not found." #~ msgstr "" #~ "CSharedFileList::FindSharedFiles: Odstraňuji %s ze seznamu sdílených " #~ "adresářů: adresář nenalezen." #~ msgid "Masterhashes of known files have been loaded." #~ msgstr "Masterhashe známých souborů byly načteny." #~ msgid "Error while reading Kad contacts - 0 entries" #~ msgstr "Chyba při čtení Kad kontaktů - 0 záznamů" #~ msgid "Merge attempt" #~ msgstr "Pokus o sloučení" #~ msgid "Recursive merge" #~ msgstr "Rekurzivní sloučení" #~ msgid "Sucessful merge!" #~ msgstr "Sloučení proběhlo úspěšně!" #~ msgid "No merge possible" #~ msgstr "Sloučení není možné" #~ msgid "%d" #~ msgstr "%d" #~ msgid "English (U.S.)" #~ msgstr "Angličtina (americká)" #~ msgid "Spanish (Mexican)" #~ msgstr "Španělština (mexická)" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " Website: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contact: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ " Part of aMule is based on \n" #~ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr "" #~ " P2P klient pro všechny platformy založený na eMule \n" #~ "\n" #~ " Web: http://www.amule.org/ \n" #~ " Fórum: http://forum.amule.org/ \n" #~ " FAQ: http://wiki.amule.org/ \n" #~ "\n" #~ " Kontakt: admin@amule.org (administrativní záležitosti)\n" #~ " Copyright (C) 2003-2008 Tým aMule \n" #~ "\n" #~ " Část aMule je založená na \n" #~ " Kademlia: P2P protokol založený na XOR metrice.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "WARNING: You have recieved Low-ID!" #~ msgstr "VAROVÁNÍ: Bylo vám přiděleno Low-ID!" #~ msgid "Sources Dropping" #~ msgstr "Zahazování zdrojů" #~ msgid "Buddy address: " #~ msgstr "Adresa kamaráda: " #~ msgid "Drop No Needed Sources now" #~ msgstr "Odstranit zdroje bez potřebných částí" #~ msgid "Drop Full Queue Sources now" #~ msgstr "Odstranit zdroje s plnou frontou" #~ msgid "Drop High Queue Rating Sources now" #~ msgstr "Odstranit zdroje s dlouhou frontou" #~ msgid "Clean Up Sources now (NNS, FQS && HQRS)" #~ msgstr "Pročistit zdroje (NNS, FQS && HQRS)" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "Chyba: Nelze načíst záložní soubor. Vyhledejte si na http://forum.amule." #~ "org/ řešení obnovy .part.met" #~ msgid "" #~ "Error: Backup part.met file is 0 size! Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "Chyba: Záložní soubor part.met má nulovou velikost! Vyhledejte si na " #~ "http://forum.amule.org/ řešení obnovy .part.met" #~ msgid "Error: part.met backup file is 0 size: %s ==> %s" #~ msgstr "Chyba: Záložní soubor part.met má nulovou velikost: %s ==> %s" #~ msgid "doesn't work" #~ msgstr "nefunguje" #~ msgid "remote gui" #~ msgstr "vzdálené gui" #~ msgid " %d" #~ msgstr " %d" #~ msgid ".%d" #~ msgstr ".%d" #~ msgid "Set riority to low." #~ msgstr "Nastaví nízkou prioritu." #~ msgid "Set riority to normal." #~ msgstr "Nastaví normální prioritu." #~ msgid "Set riority to high." #~ msgstr "Nastaví vysokou prioritu." #~ msgid "Set riority to auto." #~ msgstr "Nastaví automatickou prioritu." #~ msgid "Deprecated command, now 'Status'." #~ msgstr "Zastaralý příkaz, použijte 'Status'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Status' instead.\n" #~ msgstr "" #~ "Toto je zastaralý příkaz, který může být v budoucnosti odstraněn.\n" #~ "Používejte místo něj 'Status'.\n" #~ msgid "Deprecated command, now 'Set IPFilter'." #~ msgstr "Zastaralý příkaz, použijte 'Set IPFilter'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter' instead.\n" #~ msgstr "" #~ "Toto je zastaralý příkaz, který může být v budoucnosti odstraněn.\n" #~ "Používejte místo něj 'Set IPFilter'.\n" #~ msgid "Deprecated command, now 'Get IPFilter Level'." #~ msgstr "Zastaralý příkaz, použijte 'Get IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get IPFilter Level' instead.\n" #~ msgstr "" #~ "Toto je zastaralý příkaz, který může být v budoucnosti odstraněn.\n" #~ "Používejte místo něj 'Get IPFilter Level'.\n" #~ msgid "Deprecated command, now 'Set IPFilter Level'." #~ msgstr "Zastaralý příkaz, použijte 'Set IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter Level' instead.\n" #~ msgstr "" #~ "Toto je zastaralý příkaz, který může být v budoucnosti odstraněn.\n" #~ "Používejte místo něj 'Set IPFilter Level'.\n" #~ msgid "Deprecated command, now 'Get/Set IPFilter Level'." #~ msgstr "Zastaralý příkaz, použijte 'Get/Set IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get/Set IPFilter Level' instead.\n" #~ msgstr "" #~ "Toto je zastaralý příkaz, který může být v budoucnosti odstraněn.\n" #~ "Používejte místo něj 'Get/Set IPFilter Level'.\n" #~ msgid "Deprecated command, now 'Show Servers'." #~ msgstr "Zastaralý příkaz, použijte 'Show Servers'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Show Servers' instead.\n" #~ msgstr "" #~ "Toto je zastaralý příkaz, který může být v budoucnosti odstraněn.\n" #~ "Používejte místo něj 'Show Servers'.\n" #~ msgid "Deprecated command, now 'Get BwLimits'." #~ msgstr "Zastaralý příkaz, použijte 'Get BwLimits'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get BwLimits' instead.\n" #~ msgstr "" #~ "Toto je zastaralý příkaz, který může být v budoucnosti odstraněn.\n" #~ "Používejte místo něj 'Get BwLimits'.\n" #~ msgid "Deprecated command, now 'Set BwLimit Up'." #~ msgstr "Zastaralý příkaz, použijte 'Set BwLimit Up'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Up' instead.\n" #~ msgstr "" #~ "Toto je zastaralý příkaz, který může být v budoucnosti odstraněn.\n" #~ "Používejte místo něj 'Get BwLimit Up'.\n" #~ msgid "Deprecated command, now 'Set BwLimit Down'." #~ msgstr "Zastaralý příkaz, použijte 'Set BwLimit Down'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Down' instead.\n" #~ msgstr "" #~ "Toto je zastaralý příkaz, který může být v budoucnosti odstraněn.\n" #~ "Používejte místo něj 'Get BwLimit Down'.\n" #~ msgid "Source Dropping" #~ msgstr "Zahazování zdrojů" #~ msgid "Drop sources" #~ msgstr "Zahodit zdroje" #~ msgid "Send sources to any other file before dropping (High CPU)" #~ msgstr "Poslat zdroje na jiný soubor před zahozením (žere CPU)" #~ msgid "Sources with no needed file-parts." #~ msgstr "Zdroje, které nemají potřebné části" #~ msgid "Full Queue Sources Handling" #~ msgstr "Zacházení se zdroji s plnou frontou" #~ msgid "Enable auto drop Full Queue Sources" #~ msgstr "Povolit automatické zahazování zdrojů s plnou frontou" #~ msgid "High Queue Rating Sources Handling" #~ msgstr "Zacházení se zdroji s dlouhou frontou" #~ msgid "Enable auto drop High Queue Rating Sources" #~ msgstr "Povolit automatické zahazování zdrojů s dlouhou frontou" #~ msgid "High Queue Rating value" #~ msgstr "Hodnota dlouhé fronty" #~ msgid "(Min 300 / Max 3000)" #~ msgstr "(min. 300 / max. 3000)" #~ msgid "Auto Drop Sources Timer" #~ msgstr "Časovač automatického zahození zdrojů" #~ msgid "Timer (in secs)" #~ msgstr "Časovač (v sekundách)" #~ msgid "(Min 60 / 3600 Max)" #~ msgstr "(min 60, max 3600)" amule_2.3.1+git20151120.0023527bc2.orig/po/da.po0000644000175000017500000056720112611472361017060 0ustar morphmorph# aMule i18n resource file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. # Kry , 2004. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2007-10-13 18:09+0200\n" "Last-Translator: Alex Thomsen Leth \n" "Language-Team: aMule Team \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Tilføj en Ven" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Du skal indtaste en brugbar IP og port" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "Kunne ikke åbne %s (%s)" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Fejlede" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "Bekræft afslut" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "Accepter ydre forbindelser" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" #: src/amule.cpp:581 msgid "Server list download" msgstr "" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "Vi giver ikke garanti for at det ikke vil ødelægge noget, brænde dit hus,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" #: src/amule.cpp:1116 #, fuzzy msgid "Server hostname notified" msgstr "Servernavn :" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "FEJL: Kan ikke åbne logfil" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "FARE: logfilen er tom. Noget er galt" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Log nulstillet" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "ServerBesked: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Fejl ved hentning af node listen" #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Fejl ved åbning af den hentet version check filen" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Korrupt version check fil" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Du bruger en forældet version af aMule" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Din aMule version er %i.%i.%i og den sisdte nye version er %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Den sidste nye version kan altid findes hos http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "FARE: Din aMule version er forældet: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Din kopi af aMule er op til dato" #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Fejl ved hentning af version check filen" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Forbundet til %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Forbundet til %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad startet." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad stoppet." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Forbundet til Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Forbundet til Kad (med firewall)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Afbrudt fra Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Kad netværk kan ikke bruges hvis UDP port er fravalgt i instillinger, " "starter ikke." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Kad netværk fravalgt i instillinger, forbinder ikke." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Forbinder" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "" #: src/amuleDlg.cpp:715 #, fuzzy msgid "Kad: Firewalled" msgstr "firewalled" #: src/amuleDlg.cpp:719 #, fuzzy msgid "Kad: Connected" msgstr "Forbundet" #: src/amuleDlg.cpp:724 #, fuzzy msgid "Kad: Connecting" msgstr "Forbinder" #: src/amuleDlg.cpp:728 #, fuzzy msgid "Kad: Off" msgstr " Kad: " #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Afbryd" #: src/amuleDlg.cpp:775 #, fuzzy msgid "Stop the current connection attempts" msgstr "Stop de nuværende forbindelses forsøg" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Afbryd" #: src/amuleDlg.cpp:781 #, fuzzy msgid "Disconnect from the currently connected networks" msgstr "Afbryd fra nuvÊrende server" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Forbind" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Up: %.1f(%.1f) | Down: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Op: %.1f | Ned: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "Vil du virkelig afslutte aMule?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Bekræft afslut" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Søg" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Søge Vindue" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Downloads" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "Henter" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Beskeder" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Besked Vindue" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistik" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Indstillinger" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "Fatal Fejl: Kunne ikke oprette timer" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "Fatal Fejl: Kunne ikke oprette timer" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "" #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "Forbinder" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 #, fuzzy msgid "Ready" msgstr "Opdater" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Ukendt" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Hentelse af delte fier fra bruger '%s' fejlede" #: src/BaseClient.cpp:1586 #, fuzzy msgid "Searching buddy for lowid connection" msgstr "venter pÃ¥ forbindelse..." #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Falsk eMule version-%#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " Falsk eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Falsk eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (baseret på eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "" #: src/BaseClient.cpp:2027 #, fuzzy, c-format msgid "Requested: %s\n" msgstr "Anmodede:" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" msgstr[1] "" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" msgstr[1] "" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Anmodet om ukendt fil" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "Bruger %s (%u) anmodede om din deleliste -> %s" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "" #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "Uventet fil fejl ved skrivning %s : %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "Fejl ved forbindelse til %s (%s:%i): %d" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategori" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Vælg en mappe til indkommende filer" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Luk tab" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Luk alle tabs" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Luk andre tabs" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Tilføj til Venner" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:161 #, fuzzy, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] "Kredit udlÞbet!" msgstr[1] "Kredit udlÞbet!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "" #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Klient Detaljer" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "Lavt ID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HøjtID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Forbundet" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Afbrudt" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Ikke færdig" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "Bruger %s (%u) anmodede om din deleliste -> %s" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "Bruger %s (%u) anmodede om din deleliste -> %s" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "Bruger %s (%u) anmodede om din deleliste -> %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Fil Kommentarer" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Brugernavn" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Fil Navn" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Ingen kommentarer" #: src/CommentDialogLst.cpp:105 #, fuzzy, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "Ingen kommentarer" msgstr[1] "Ingen kommentarer" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [La]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Hø]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Meget lav" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Lav" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normal" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Høj" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Meget Høj" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Udgiv" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Spørger" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Forbinder via Server" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Kø Fuld" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "I Kø" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Henter" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Modtaget Hashsæt" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Ingen brugbare dele" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Kan ikke forbinde LavID til LavID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "For mange forbindelser" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Banlyst" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "" #: src/DataToText.cpp:132 msgid "Passive" msgstr "" #: src/DataToText.cpp:133 msgid "Link" msgstr "" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Færdig" #: src/DataToText.cpp:146 msgid "In progress" msgstr "" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Størrelse" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Overført" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Hastighed" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Forløb" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Kilder" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Priotet" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Status" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Tid Tilbage" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Sidst Færdig" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Sidste Kontakt" #: src/DownloadListCtrl.cpp:411 #, fuzzy msgid "Are you sure that you wish to delete the selected file?" msgstr "Er du sikker på at du ønsker at slette de(n) valgt(e) ven(ner)?" #: src/DownloadListCtrl.cpp:413 #, fuzzy msgid "Are you sure that you wish to delete the selected files?" msgstr "Er du sikker på at du ønsker at slette de(n) valgt(e) ven(ner)?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Stop" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pause" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Genoptag" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "Ryd færdige" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Udvidet Muligheder" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Smug Kig" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Vis fil &detaljer" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Vis alle kommentarer" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "fjern fra ketegori" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Flyt til kategori" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Åben filen" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Indtast nyt navn for denne fil:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Omdøb fil" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Downloads (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "Anmoder om delte filer fra '%s'" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Ingen part filer fundet" #: src/DownloadQueue.cpp:168 #, fuzzy, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Fandt %i part filer" msgstr[1] "Fandt %i part filer" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Downloader %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Du prøver allerede at downloade denne fil %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "" #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "" #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "" #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "" #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "" #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "" #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "" #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "" #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "" #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "" #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "" #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "" #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "" #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "" #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "" #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "" #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "" #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "" #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "" #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "" #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "" #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "" #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "" #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "" #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "" #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "" #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "" #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "" #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Venner" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Vis &Detaljer" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Tilføj en ven" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Fjern Ven" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Send &Besked" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Se Filer" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "" #: src/FriendListCtrl.cpp:169 #, fuzzy msgid "Are you sure that you wish to delete the selected friend?" msgstr "Er du sikker på at du ønsker at slette de(n) valgt(e) ven(ner)?" #: src/FriendListCtrl.cpp:171 #, fuzzy msgid "Are you sure that you wish to delete the selected friends?" msgstr "Er du sikker på at du ønsker at slette de(n) valgt(e) ven(ner)?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "I Kø" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Spørger efter en anden fil" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Ventende Uploads: %i" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "I Kø" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Upload" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "Ingen" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Nej" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Ja" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Downloader..." #: src/HTTPDownload.cpp:109 #, fuzzy msgid "HTTP download cancelled" msgstr "Max download grÊnse" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "Downloaded:" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "Du er ikke forbundet til en server!" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "Kunne ikke hente serverlist fra %s" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Fejl ved indlÊsning af kreditfil" #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "" #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: søgeord er for kort" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, fuzzy, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Læs %u Kad kontakter" msgstr[1] "Læs %u Kad kontakter" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "" msgstr[1] "" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Ukendt: %i" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Hasher" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Færdiggør" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Færdig" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Pause" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Beskadiget" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Venter" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Du skal specificere et ikke tomt kodeord" #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Forkert kodeord, ikke it MD5 hash!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Forbindelsen fejlede" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:258 #, fuzzy msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "ExternalConn: Dårligt svar fra server. Forbindelse lukket" #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Succes! Forbindelse oprettet til aMule" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Succes! Forbindelse oprettet" #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "Ydre Forbindelses Parametre" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Synkroniserings tråd startet." #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Luk" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Ryd" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Ubegrænset" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "Klient ID: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "ServerNavn: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "ServerIP: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Ingen Forbindelse" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Online Signatur: Aktiv" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Online Signatur: Inaktiv" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Afslut" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Overfør" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Henter ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Antal brugere på den server du er forbundet til ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Brugere: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Op: 0.0 | Ned: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Ikke Forbundet ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "" #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Søg" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Type" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Alle" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Arkiver" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Lyd" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD-Aftryk" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Billeder" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programer" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Videoer" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Endelse" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Min Størrelse" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Max Størrelse" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Start" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Download" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Fundne Kilder :" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "General" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Navn :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met-Fil :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Filstørrelse :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Sidst færdig :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Overfør" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Fundne Kilder :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Overfører Kilder :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Tilgængelig :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Overført :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Færdig Størrelse :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Intelligent Fejl Håndtering" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Tabt pga beskadigelse :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Overtag" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Ryd Op" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Anvend" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Fil Kvalitet" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Ikke anslået" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Invalid / fejl / Falsk" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Dårlig" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Nogen Lunde" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "God" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Glimrende" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Opdater" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Henter, vent venligst" #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Krævet Information" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP Adresse :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Aktuelle Adresse" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Brugernavn :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Tilføj" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Download-Hastighed" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Nuværende" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Nuværende Gennemsnit" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Sessions Gennemsnit" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Upload-Hastighed" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktive Downloads" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktive Forbindelser (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Aktive Uploads" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Navn:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Point:" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "Kø Fuld" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Brugernavn" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "" #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Start minimeret" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Spørg ved afslut" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Gennemse" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Video Afspiller" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Upload" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Slot Tildeling" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Auto forbind ved start" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Genforbind ved fejl" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Fjern ikke tilgængelige servere, efter" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "forsøg" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Liste" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Brug prioterings system" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Brug smart LavID tjek ved forbindelse" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Sikker forbindelse" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Autoforbind kun til servere i statik liste" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Sæt manuelt tilføjede servere til Høj Priotet" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Tilføj filer til download i pause tilstand" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Tilføj filer til download med auto priotet" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Prøv at download første og sidste del først" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Uploads" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Tilføj nye delte filer med auto priotet" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafer" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Opdaterings interval : 5 sek" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Tid for gennemsnitlig graf: 100 min" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Baggrund" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Download nu" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Upload nu" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Aktive Forbindelser" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Vælg" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! Advarsel !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Max nye forbindelser / 5 sekunder" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Fil Buffer Størrelse" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Vis overførsels hastighed i titel" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Vis overførsels hastighed i titel" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Flad" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Rund" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Ydre Forbindelses Parametre" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Accepter ydre forbindelser" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Password" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Fuld rettigheds kodeord" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Aktiver lav rettigheds brugere" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Lav rettigheds kodeord" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Side Opdaterings Tid (i sek)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Aktiver Gzip komprimering" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Titel :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Kommentar :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Indkommende Mappe :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Reset" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "" #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Tryk på denne knap for at opdatere serverlisten fra URL ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "" #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule Log" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Server Info" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Alle" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Aktiver online-signatur" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Åben filen" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Venter..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Aktive Uploads :" #: src/muuli_wdr.cpp:3371 #, fuzzy msgid "Percent of total files" msgstr "Antal Filer Total" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Delte Filer" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Slettede Servere" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Aktive Uploads" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Vis Liste" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Opdater" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Send" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Delte Filer" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Inaktiv [%s]" #: src/OtherFunctions.cpp:111 #, fuzzy msgid "byte" msgid_plural "bytes" msgstr[0] "Bytes" msgstr[1] "Bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 #, fuzzy msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "kB/s" msgstr[1] "kB/s" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "sek" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "min" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "alt" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "alt andet" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Mangelfuld" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "stoppet" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Arkiv" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Tekst" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "Fejl: Kunne ikke oprette partfil" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "Fejl: filen known.met er beskadiget, kunne ikke hente kendte filer" #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "" #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Kunne ikke åbne %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "" #: src/PartFile.cpp:904 #, fuzzy msgid "IO failure while saving partfile: " msgstr "Fejl ved gemning af partfil: %s (%s => %s)" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "" #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1050 #, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "" #: src/Preferences.cpp:632 msgid "System default" msgstr "System standard" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabic" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "Estonian" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Basque" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgarian" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Catalan" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "" #: src/Preferences.cpp:642 msgid "Czech" msgstr "" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Danish" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Dutch" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estonian" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finnish" #: src/Preferences.cpp:648 msgid "French" msgstr "French" #: src/Preferences.cpp:649 msgid "Galician" msgstr "" #: src/Preferences.cpp:650 msgid "German" msgstr "German" #: src/Preferences.cpp:651 msgid "Greek" msgstr "" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italian" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Korean" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lithuanian" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polish" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portuguese" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Estonian" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Russian" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Spanish" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Sprog" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Ikke tilgængelig" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Forbindelse" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Mapper" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Servere" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Filer" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Fjern Kontrol" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Ydre Forbindelses Parametre" #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Ydre Forbindelses Parametre" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Ydre Forbindelses Parametre" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Ydre Forbindelses Parametre" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Gennemse efter Video Afspiller" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Tilføj URLer hvor der kan hentes server.met filer.\n" "Kun en URL på hver linje." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, fuzzy, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Opdaterings interval : 5 sek" msgstr[1] "Opdaterings interval : 5 sek" #: src/PrefsUnifiedDlg.cpp:1126 #, fuzzy, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Tid for gennemsnitlig graf: 100 min" msgstr[1] "Tid for gennemsnitlig graf: 100 min" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "" #: src/PrefsUnifiedDlg.cpp:1144 #, fuzzy, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Fil Buffer StÞrrelse %i bytes" msgstr[1] "Fil Buffer StÞrrelse %i bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1157 #, fuzzy, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Server forbindelses opdaterings interval %i min" msgstr[1] "Server forbindelses opdaterings interval %i min" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Server forbindelses opdaterings interval: Inaktiv" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "deaktiver" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "Fil ID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Fil" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Indtast nyt navn for denne fil:" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "Afbryd" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Forbundet til %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Forbindelse oprettet til: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "Kunne ikke forbinde. Internettet må være nede." #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Mistede forbindelsen til %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) ser ud til at være død" #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "" #: src/ServerConnect.cpp:392 #, fuzzy, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Automatisk forbindelse til server vil prøve igen om %d sekunder" msgstr[1] "Automatisk forbindelse til server vil prøve igen om %d sekunder" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Forbindelse afbrudt" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "" #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" #: src/ServerList.cpp:174 #, fuzzy, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i Serverer fundet i server.met" msgstr[1] "%i Serverer fundet i server.met" #: src/ServerList.cpp:176 #, fuzzy, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "Servere tilfÞjet: " msgstr[1] "Servere tilfÞjet: " #: src/ServerList.cpp:179 #, fuzzy msgid "Error: the file 'server.met' is corrupted: " msgstr "Fejl: filen server.met er beskadiget" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "Uventet fil fejl ved skrivning %s : %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "" #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Fejl ved gemning af server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Invalid URL" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "Kunne ikke hente serverlist fra %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Servernavn" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Beskrivelse" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Brugere" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Statistik" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Servere (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Server" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Fjern server" #: src/ServerListCtrl.cpp:420 #, fuzzy msgid "Remove servers" msgstr "Fjern server" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Fjern Alle servere" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "" #: src/ServerListCtrl.cpp:542 #, fuzzy msgid "Are you sure that you wish to delete the selected server?" msgstr "Er du sikker på at du ønsker at slette de(n) valgt(e) ven(ner)?" #: src/ServerListCtrl.cpp:544 #, fuzzy msgid "Are you sure that you wish to delete the selected servers?" msgstr "Er du sikker på at du ønsker at slette de(n) valgt(e) ven(ner)?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Ny Klient-ID er %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "" #: src/ServerSocket.cpp:532 #, fuzzy, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Modtog %d nye Servere" msgstr[1] "Modtog %d nye Servere" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "" #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Server afviste sidste kommando" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "" #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "" #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "" #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "Peak Forbindelser (anslÃ¥et)" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "Forbundet til %s" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "Forbundet til %s %s" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "Fundne Kilder :" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 #, fuzzy msgid "Indexed notes:" msgstr "Index fil ikke fundet: " #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, fuzzy, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Fandt %i kendte delte filer" msgstr[1] "Fandt %i kendte delte filer" #: src/SharedFileList.cpp:377 #, fuzzy, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Fandt %i kendte delte filer" msgstr[1] "Fandt %i kendte delte filer" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Brugernavn" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Download-Hastighed" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Upload-Hastighed" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Tilgængelig :" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Uploads" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 #, fuzzy msgid "Download Status" msgstr "Downloads" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Fil Navn" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Delte Filer" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Anmodninger" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Godtaget Anmodninger" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Overført Data" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Delings Kvote" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Sendte Dele" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Hele kilder" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Mappe sti" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Tilføj kommentar/bedømmelse" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Rediger Kommentar/Bedømmelse" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Omdøb" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Tilføj filer i samling til overførelses liste" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Kopier magnet &URI til udklipsholder" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Kopier eD2k link til udklipsholder (&AICH info)" #: src/SharedFilesCtrl.cpp:318 #, fuzzy msgid "You need a HighID to create a valid sourcelink" msgstr "Du skal have et HighID for at lave et godkendt kildelink" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Delte Filer (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[DeleAfFil]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Fil Navn" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Gennemsnitlig upload tid: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Genforbindelser: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Tid Siden Første Overførsel: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Forbundet Til Server Siden: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Klienter" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "Ukendt: %i" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "Filtreret: %i" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "Banlyst" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Total Størrelse Af Delte Filer: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktive forbindelser (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Ikke tilgængelig" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Aldrig" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "" #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "" #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "" #: src/TextClient.cpp:373 #, fuzzy msgid "Processing by filename: " msgstr "Udfører anmodning [Original]: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Downloads (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Admodning fejlede med en ukendt fejl." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "" #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "firewalled" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 #, fuzzy msgid "Search progress not available" msgstr "%s Ikke tilgÊngelig" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "" #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "" #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "" #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "" #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "" #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "" #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "" #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "" #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "" #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "" #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "" #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "" #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "" #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "" #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "" #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "" #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "" #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "" #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "" #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "" #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "" #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "" #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "" #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "" #: src/TextClient.cpp:900 src/TextClient.cpp:902 msgid "The given value must be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "" #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "" #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "" #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "" #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "" #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "" #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "" #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "" #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "" #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "Viss statusbar" #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "Viss statusbar" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "" #: src/TextClient.cpp:938 msgid "Resume download." msgstr "" #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "" #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "" #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "" #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "" #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "" #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "" #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "" #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "" #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "" #: src/TextClient.cpp:955 msgid "Show log." msgstr "" #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "" #: src/TextClient.cpp:959 msgid "Reset log." msgstr "" #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" #: src/TextClient.h:59 msgid "aMule text client" msgstr "" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Konverter gamle AICH hashsæt i '%s' til 64b i '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "ADVARSEL: Filnavnet '%s' er ikke understøttet og er blevet omdøbt til '%s'" #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "ADVARSEL: Filen '%s' eksistere, ny fil omdøbt til '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Er du sikker på du vil annullere og slette alle filer i denne kategori?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Bekræftelse Krævet" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "For mange forbindelser" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Tilføj kategori" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Ændre kategori" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Fjern kategori" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Genoptager uploads af fil: %s" #: src/UploadQueue.cpp:613 #, fuzzy, c-format msgid "Suspending upload of file: %s" msgstr "Suspender upload af fil: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "" #: src/UserEvents.h:60 msgid "Download completed" msgstr "" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "" #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "" #: src/UserEvents.h:85 msgid "Message sender." msgstr "" #: src/UserEvents.h:88 msgid "Out of space" msgstr "" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Velkommen" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Indput parametre" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 #, fuzzy msgid "Cancelled !" msgstr "Anulleret !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Ikke muligt at åbne %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i dag(e) %i time(r) %i Minut(ter) %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, aMule Online Statistik" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Maksimum DL rate siden wxCas er startet" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Absolute Maksimum DL rate gennem wxCas forrige kørsel" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "System" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Stop Auto Genopfriskning" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Gem Online Statistisk billede" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Print Online Statistisk billede" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Omking wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Start Auto Opdatering" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Auto Opdatering stoppet" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Auto Opdatering startet" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Gem Statistisk Billede" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMule Online Statistik" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Der var et problem med udskrivningen.\n" "Måske printer instillingerne er forkerte." #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Udskrivning" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule Online Signatur Statistik\n" "\n" "(c) 2004 ThePolish \n" "\n" "Baseret på CAS af Pedro de Oliveira \n" "Omdelt under GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh Oh, aMule kører ikke..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule kører" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule kører men ikke forbundet" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule forbinder" #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh Oh, aMule status ukendt..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " har kørt i " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " er stoppet !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " er ikke forbundet !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " forbinder..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr "gør noget mærkeligt, undersøg det !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " er forbundet til " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "afbrudt" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " er tændt " #: src/utils/wxCas/src/wxcasframe.cpp:1066 #, fuzzy msgid " with " msgstr "] med " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr " Total Download: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Sesion Download: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Download: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 #, fuzzy msgid " kB/s" msgstr "kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Deling: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " fil(er), Klienter i kø: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Tid: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " tændt " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "System Hentnings Gennemsnit (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Mappe indholdende amulesig.dat fil" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Skriv her i hvilken mappe amulesig.dat befinder sig" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Opdaterings rate interval i sekunder" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Generer et statistisk billede for hver opdaterings hændelse" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Skriv her mappen hvor du vil generere det statistiske billede" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Upload periodisk dit statistiske billede til en FTP server" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP Url" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP Sti" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Skriv her URL på din FTP server" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Skriv her biblioteket hvor dit statistiske billede på FPT serveren skal ligge" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Bruger" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Skriv her brugernavnet for at logge på din FTP server" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Skriv her bruger passworded for at logge på din FTP server" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "FTP opdaterings interval i minutter" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Valider" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Mapper der indeholder din signatur fil" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Mappe hvor det statistiske billede bliver genereret" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Henter template " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP port" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Brug gzip komprimering" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Tillad bruger adgang" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMule configurations fil sti. BRUG IKKE DIREKTE" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule Web Server" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Admoding fejlede med følgende fejl: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Index fil ikke fundet: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Session udløbet - admoder login\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Session ok, logget in\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Session ok, ikke logget in\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Ingen session åbnet - vil admode om login\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Session oprettet - admoder login\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Udfører anmodning [Original]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Undersøger password\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Password hash invalid\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Passwork ok\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Password forkert\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Intet password skrevet. Blank password er ikke gyldigt.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Logout anmodning\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Udfører forespørgsel [omledt]: " #, fuzzy #~ msgid "Download status" #~ msgstr "Downloads" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #, fuzzy #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Opdaterings interval : 5 sek" #~ msgstr[1] "Opdaterings interval : 5 sek" #~ msgid "Transferring" #~ msgstr "Overfører" #, fuzzy #~ msgid "Only files currently uploading" #~ msgstr "Downloader Nu :" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "Kø Fuld" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Begynder at lave MD4 og AICH hash for fil: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Begynder at lave MD4 hash for fil: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Begynder at lave AICH hash for fil: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "ADVARSEL: Kunne ikke fjerne orginal '%s' efter oprettelse af backup" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "ADVARSEL: Kunne ikke slette '%s'" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Prøv at overføre hele dele til uploads" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Henter" #~ msgid "Transfers" #~ msgstr "Overførsler" #~ msgid "Show Uploads" #~ msgstr "Vis Uploads" #~ msgid "Show Queue" #~ msgstr "Vis Køen" #~ msgid "Waited" #~ msgstr "Ventet" #~ msgid "Upload Time" #~ msgstr "Upload Tid" #~ msgid "File Priority" #~ msgstr "Fil Priotet" #~ msgid "Score" #~ msgstr "Point" #~ msgid "Asked" #~ msgstr "Spurgte" #~ msgid "Last Seen" #~ msgstr "Sidst Set" #~ msgid "Entered Queue" #~ msgstr "Kom I Kø" #~ msgid "Clients on queue :" #~ msgstr "Klienter i kø :" #~ msgid "Current Session" #~ msgstr "Nuværende Session" #~ msgid "Total" #~ msgstr "Total" #~ msgid "Requested :" #~ msgstr "Anmodet :" #~ msgid "Files Transfers Window" #~ msgstr "Fil Overførsel Vindue" #, fuzzy #~ msgid "HTTP download thread ended" #~ msgstr "Max download grÊnse" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "ADVARSEL: Kunne ikke fjerne orginal '%s' efter oprettelse af backup" #, fuzzy #~ msgid "Killed!" #~ msgstr "Fejlede" #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Brugere E: %s K: %s | Filer E: %s K: %s" #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "Filen %s er for stor til Donkey: maksimum tilladt er 4GB." #~ msgid "File was not saved" #~ msgstr "Fil ikke gemt" #~ msgid "Line Capacities" #~ msgstr "Linie Kapasitet" #~ msgid "Max Sources per File" #~ msgstr "Max Kilder Pr Fil" #~ msgid "Start next paused file when a file completed" #~ msgstr "Start næste pausede fil når en fil er færdig" #~ msgid "Show percentage" #~ msgstr "Vis procent" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. aktiv" #~ msgid "Progressbar Style" #~ msgstr "Forløbs Stil" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "For en film kan du sige den længde, dens histori, sprog ...\n" #~ "og hvis den er falsk, kan du også fortælle det til andre aMule brugere." #~ msgid "Misc Options" #~ msgstr "Andre Indstillinger" #~ msgid "Max Connections" #~ msgstr "Max Forbindelser" #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "EC-Forbindelse-fejlede. Tomt svar" #~ msgid "ExternalConn: Access denied because: " #~ msgstr "ExternalConn: Adgang afvist fordi:" #~ msgid "ExternalConn: Access denied" #~ msgstr "ExternalConn: Adgang afvist" #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Kopier ED2k-Link til udklipsholder" #, fuzzy #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "Kopier eD2k link til udklipsholder (&Source)" #, fuzzy #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "Kopier eD2k link til udklips holder (Kilde) (&With Crypt options)" #, fuzzy #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "Kopier eD2k link til udklipsholder (&Hostname)" #, fuzzy #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "Kopier eD2k link til udklipsholder (Hostname) (With &Crypt options)" #~ msgid "Warning" #~ msgstr "Advarsel" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "Fejl: Kunne ikke lytte til TCP-port" #~ msgid "Webserver HTTP port" #~ msgstr "Webserver HTTP port" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "Brug UPnP port forwarding til webserver port" #~ msgid "Full access password for webserver" #~ msgstr "Fuldt adgangs password til webserver" #~ msgid "Guest password for webserver" #~ msgstr "Bruger password til webserver" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "Hent/gem webserver instillinger fra/til fjern aMule" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Kopier ED2k-Link til udklipsholder" #, fuzzy #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Kopier ED2k-Link til udklipsholder" #, fuzzy #~ msgid "ED2K: Connecting" #~ msgstr "Forbinder" #, fuzzy #~ msgid "ED2K: Disconnected" #~ msgstr "Afbrudt" #~ msgid "Edit Serverlist" #~ msgstr "Ændre Serverlisten" #~ msgid "Average filesize: %s" #~ msgstr "Gennemsnitlig filstørrelse: %s" #~ msgid "Error" #~ msgstr "Fejl" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "Fejl: Kunne ikke hashe downloadede del - hashsæt ikke færdig (%s). Dette " #~ "skulle aldrig ske" #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "Ingen brugbare servere i serverliste" #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Tilladte Hastigheder" #~ msgid "Hard Limit" #~ msgstr "Fast Grænse" #~ msgid "Connection Limits" #~ msgstr "Forbindelses Grænser" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Opdater serverliste ved start" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Opdater serverliste ved forbindelse til server" #~ msgid "Update serverlist when a client connect" #~ msgstr "Opdater serverliste når en klient forbinder" #~ msgid "Incoming Directory :" #~ msgstr "Indkommende Mappe :" #~ msgid "Temporary Directory :" #~ msgstr "Midlertidig Mappe :" #~ msgid "Shared Directories" #~ msgstr "Delte Mapper" #~ msgid "Create Backup to preview" #~ msgstr "Opret backup for smug kig" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Vis hurtig ED2K link håndtering" #~ msgid "Webserver Parameters" #~ msgstr "Webserver Parametre" #~ msgid "Webserver port" #~ msgstr "Webserver port" #~ msgid "Serverlist" #~ msgstr "Serverliste" #~ msgid "Manual Server Add : Name" #~ msgstr "Tilføj Manuelt en server : Navn" #~ msgid "TCP Port: Not Ready" #~ msgstr "TCP Port: Ikke Klar" #~ msgid "UDP Port: Not Ready" #~ msgstr "UDP Port: Ikke Klar" #~ msgid "Upload Limit" #~ msgstr "Upload Grænse" #~ msgid "Download Limit" #~ msgstr "Download Grænse" #~ msgid "Disconnected from ED2K" #~ msgstr "Afbrudt fra ED2K" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "Fejl ved åbning af venneliste fil 'emfriends.met' ved læsning!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "Fejl ved åbing af venneliste fil 'emfriends.met' ved skrivning!" #~ msgid "Can't create web socket thread\n" #~ msgstr "Kan ikke oprette web socket tråd\n" #~ msgid "Web Server: Started\n" #~ msgstr "Web Server: Startet\n" #~ msgid "Not Supported" #~ msgstr "Ikke Understøttet" #~ msgid "Browse wav" #~ msgstr "Find wav" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "Fil wav (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "Ingen Kommentar(er)" #~ msgid "Messages popup" #~ msgstr "Besked popup" #~ msgid "Use sound" #~ msgstr "Brug lyd" #~ msgid "Pop out when :" #~ msgstr "Popop når :" #~ msgid "New entry on log" #~ msgstr "Ny tekst i log" #~ msgid "Starts a new chat session" #~ msgstr "Starter en ny chat session" #~ msgid "A new chat message is received" #~ msgstr "En ny chat besked er modtaget" #~ msgid "A download is added or finished" #~ msgstr "En download er tilføjet eller færdig" #~ msgid "New aMule version detected" #~ msgstr "Ny aMule version fundet" #~ msgid "Urgent OOD, serverconnection lost" #~ msgstr "Vigtig OOD serverforbindelse mistet" #~ msgid "Notify by Mail" #~ msgstr "Underret via Mail" #~ msgid "Send an Email when transfer complete." #~ msgstr "Send en Email når overførsel er færdig." #~ msgid "SMTP server :" #~ msgstr "SMTP server :" #~ msgid "Email Address :" #~ msgstr "Email Adresse :" #~ msgid ":" #~ msgstr ":" #~ msgid " [" #~ msgstr " [" #~ msgid " | Kad: " #~ msgstr " | Kad: " #~ msgid "Masterhashes of known files have been loaded." #~ msgstr "Masterhashes af kendte filer er indlæst." #, fuzzy #~ msgid "Error while reading Kad contacts - 0 entries" #~ msgstr "Fejl under indlæsning af Kad kontakter - 0 indtastninger" #~ msgid "Merge attempt" #~ msgstr "Samlings forsøg" #~ msgid "Sucessful merge!" #~ msgstr "Succesfuld samling" #~ msgid "No merge possible" #~ msgstr "Samling ikke mulig" #~ msgid "%d" #~ msgstr "%d" #~ msgid "Send sources to any other file before dropping (High CPU)" #~ msgstr "Send kilder til en anden fil før droppelse (Høj CPU)" #~ msgid "Full Queue Sources Handling" #~ msgstr "Kilder i fyldt kø håndtering" #~ msgid "Enable auto drop Full Queue Sources" #~ msgstr "Drop kilder som er i en fuld kø" #~ msgid "High Queue Rating Sources Handling" #~ msgstr "Kilder i lang kø håndtering" #~ msgid "Enable auto drop High Queue Rating Sources" #~ msgstr "Drop automatisk kilder i lang kø" #~ msgid "High Queue Rating value" #~ msgstr "For køer som er over" #~ msgid "(Min 300 / Max 3000)" #~ msgstr "(Min 300 / Max 3000)" #~ msgid "Auto Drop Sources Timer" #~ msgstr "Interval for auto dropning af kilder" #~ msgid "Timer (in secs)" #~ msgstr "Tid (i sek)" #~ msgid "(Min 60 / 3600 Max)" #~ msgstr "(Min 60 / 3600 Max)" #~ msgid "Minimize to trayicon" #~ msgstr "Minimer til statusomrÃ¥de" #~ msgid "Port %d is not available. You will be LOWID" #~ msgstr "Port %d er ikke tilgÊngelig. Du fÃ¥r LAVID" #~ msgid "" #~ "Port %d is not available !!\n" #~ "\n" #~ "This will mean that you will be LOWID.\n" #~ "\n" #~ "Use netstat to determine when port becomes available\n" #~ "and try starting amule again." #~ msgstr "" #~ "Port %d er ikke tilgÊngelig !!\n" #~ "\n" #~ "Dette vil sige du fÃ¥r et LAV ID.\n" #~ "\n" #~ "Brug netstat for at finde ud af nÃ¥r porten er fri\n" #~ "og start aMule igen." #~ msgid "Failed to save" #~ msgstr "Kunne ikke gemme" #~ msgid " OnlineSig File" #~ msgstr " OnlineSig Fil" #~ msgid "" #~ "Unable to launch browser. Please set correct browserexecutable path in " #~ "Preferences." #~ msgstr "" #~ "Kunne ikke starte din browser. VÊlg venligt en korekt sti til den under " #~ "indstillinger." #~ msgid "" #~ " --- This is the first time you run aMule %s ---\n" #~ "\n" #~ msgstr "" #~ " --- Dette er fÞrste fanf du kÞrer aMule %s ---\n" #~ "\n" #~ msgid "This version is a testing version, updated daily, and \n" #~ msgstr "Denne version er en test version, opdateret daglig, og \n" #~ msgid "or kill your dog. But it *should* be safe to use anyway. \n" #~ msgstr "eller drÊbe din hund, Men det skulle vÊre sikkert at bruge. \n" #~ msgid "client credits will be lost on this first run. \n" #~ msgstr "klient kredits vil gÃ¥ tabt ved denne fÞrste kÞrsel \n" #~ msgid "Feel free to report any bugs to forum.amule.org" #~ msgstr "Reporter gerne alle fejl pÃ¥ forum.amule.org" #~ msgid "Desktop integration" #~ msgstr "Desktop integration" #~ msgid "Connection established on:" #~ msgstr "Forbindelse etableret til: " #~ msgid "Connect to any server" #~ msgstr "Forbind til en tilfÊldig server" #~ msgid "This ed2k link is invalid (%s)" #~ msgstr "Dette ed2k link er invalid (%s)" #~ msgid "Invalid link: %s" #~ msgstr "Invalid Link: %s" #~ msgid "Filtered IP: %s (%s)" #~ msgstr "Filtreret IP: %s (%s)" #~ msgid "Description for file '%s' received: %s" #~ msgstr "Beskrivelse af fil '%s' modtaget: %s" #~ msgid "Unable to retrieve shared files from '%s'" #~ msgstr "Kunne ikke modtage delte filer fra '%s'" #~ msgid "Requesting shared files from user %s (%u) is already in progress" #~ msgstr "Anmoder bruger %s (%u) om delte filer, allerede igang." #~ msgid "NickName: %s\n" #~ msgstr "BrugerNavn: %s\n" #~ msgid "can't create file '%s'" #~ msgstr "kan ikke oprette fil '%s'" #~ msgid "Can't open file '%s'" #~ msgstr "Kan ikke Ã¥bne fil '%s'" #~ msgid "can't close file descriptor %d" #~ msgstr "kan ikke lukke fil beskrivelse %d" #~ msgid "can't read from file descriptor %d" #~ msgstr "kan ikke lÊse fil beskrivelse %d" #~ msgid "can't write to file descriptor %d" #~ msgstr "kan ikke skrive til fil beskrivelse %d" #~ msgid "can't flush file descriptor %d" #~ msgstr "kan ikke tÞmme fil beskrivelse %d" #~ msgid "unknown seek origin" #~ msgstr "ikke kendt sÞge oprindelse" #~ msgid "can't get seek position on file descriptor %d" #~ msgstr "kan ikke sÞge position i fil beskrivelse %d" #~ msgid "can't find length of file on file descriptor %d" #~ msgstr "kan ikke finde lÊngde af fil i fil beskrivelse %d" #~ msgid "can't determine if the end of file is reached on descriptor %d" #~ msgstr "kan ikke afgÞre om enden af filen er nÃ¥et i beskrivelse %d" #~ msgid "invalid eof() return value." #~ msgstr "invalid eof() tilbage melding." #~ msgid "*** Chatsession Start : " #~ msgstr "*** Chat Begyndt : " #~ msgid "Message from" #~ msgstr "Besked fra" #~ msgid "failed" #~ msgstr "fejlede" #~ msgid "*** Disconnected" #~ msgstr "*** Ikke Forbundet" #~ msgid "Failed to save creditfile" #~ msgstr "Kunne ikke gemme kreditfil" #~ msgid "ClientSoftware ->" #~ msgstr "KlientSoftware >" #~ msgid "<- ClientVersion ->v" #~ msgstr "<- Klient Version ->v" #~ msgid "Not Avaiable" #~ msgstr "Ikke TilgÊngelig" #~ msgid "Corrupted compressed packet for %s received (error %i)" #~ msgstr "Beskadiget pakket pakke fra %s modtaget (fejl %i)" #~ msgid "Check Fake" #~ msgstr "Tjek om filen er falsk" #~ msgid "Copy ED2k link to clipboard (&HTML)" #~ msgstr "Kopier ED2k-Link til udklipsholder (&HTML)" #~ msgid "Hide Lists" #~ msgstr "Skjul Liste" #~ msgid "Preview [" #~ msgstr "Smug Kig [" #~ msgid "eDonkey v%i" #~ msgstr "eDonkey v%i" #~ msgid "eDonkeyHybrid v%i" #~ msgstr "eDonkeyHybrid v%i" #~ msgid "eMule v%02X" #~ msgstr "eMule v%02X" #~ msgid "aMule [ %s ]" #~ msgstr "aMule [ %s ]" #~ msgid "aMule v0.%02X" #~ msgstr "aMule v0.%02X" #~ msgid "lMule/xMule v0.%02X" #~ msgstr "lMule/xMule v0.%02X" #~ msgid "Old MLdonkey" #~ msgstr "Gammel MLdonkey" #~ msgid "New MLdonkey" #~ msgstr "Ny MLdonkey" #~ msgid "Are you sure that you want to cancel and delete this file ?\n" #~ msgstr "Er du sikker pÃ¥ du vil annullere og slette denne fil ?\n" #~ msgid "Are you sure that you want to cancel and delete these files ?\n" #~ msgstr "Er du sikker pÃ¥ du vil annullere og slette denne fil ?\n" #~ msgid "You already have the file %s" #~ msgstr "Du har allerede filen %s" #~ msgid "Bad link." #~ msgstr "DÃ¥rligt link." #~ msgid "not a well-formed ed2k link" #~ msgstr "ikke et odentligt ed2k link" #~ msgid "Not an ED2K server or file link" #~ msgstr "Ikke en ED2K server eller fil link" #~ msgid "can't write file '%s'" #~ msgstr "kan ikke skrive fil '%s'" #~ msgid "done" #~ msgstr "fÊrdig" #~ msgid "Failed to copy the file '%s' to '%s'" #~ msgstr "Fejlede ved kopiering af fil '%s' til '%s'" #~ msgid "Loaded ipfilter with %d IP addresses." #~ msgstr "IndlÊste ipfilter med IP adresse %d." #~ msgid "" #~ "Unexpected file error while reading known.met: %s, unable to load known " #~ "files" #~ msgstr "" #~ "Uventet fejl ved lÊsning af known.met: %s, kunne ikke hente kendte filer" #~ msgid "accepted" #~ msgstr "accepteret" #~ msgid "denied" #~ msgstr "nÊgtet" #~ msgid "Client '%s' (IP:%s) caused an error: %s. Disconnecting client!" #~ msgstr "Klient '%s' (IP:%s) lavede en fejl: %s. Afbryder Klient" #~ msgid "" #~ "A client caused an error or did something bad: %s. Disconnecting client!" #~ msgstr "" #~ "En klient lavede en fejl eller gjode noget slemt: %s. Afbryder klient!" #~ msgid "Concurrent Downloads" #~ msgstr "Samtidige Downloads" #~ msgid "1-5" #~ msgstr "1-5" #~ msgid "6-15" #~ msgstr "6-15" #~ msgid "16+" #~ msgstr "16+" #~ msgid "Connection Type" #~ msgstr "Forbindelses Type" #~ msgid "Select your connection type here :" #~ msgstr "VÊlg din forbindelse type her :" #~ msgid "True upload bandwidth" #~ msgstr "Max upload grÊnse" #~ msgid "Unit:" #~ msgstr "Enhed:" #~ msgid "kbits/sec" #~ msgstr "kbits/sek" #~ msgid "" #~ "For system tray integration to work,\n" #~ "you must specify which desktop you are using.\n" #~ "You can change this later from preferences." #~ msgstr "" #~ "For at fÃ¥ amule til at integrere med statusomrÃ¥det,\n" #~ "skal du vÊlge hvilken desktop du bruger.\n" #~ "du kan Êndre dette senere." #~ msgid "Desktop" #~ msgstr "Desktop" #~ msgid "Gnome 2.x (or other XEMBED compatible)" #~ msgstr "Gnome 2.x (eller andre XEMBED-kompatible)" #~ msgid "KDE 3.x" #~ msgstr "KDE 3.x" #~ msgid "KDE 2.x / Gnome 1.2 " #~ msgstr "KDE 2.x / Gnome 1.2 " #~ msgid "No systray integration, please" #~ msgstr "Ingen integration til statusomrÃ¥de" #~ msgid "Fast ED2K Links Handler (Direct Download)" #~ msgstr "Hurtig ED2K Link HÃ¥ndtering (Direkte Download)" #~ msgid "Name" #~ msgstr "Navn" #~ msgid "Min Availability" #~ msgstr "Min TilgÊngelighed" #~ msgid "Search global" #~ msgstr "SÞg globalt" #~ msgid "Clear All" #~ msgstr "Ryd Alt" #~ msgid "Download selected" #~ msgstr "Download markerede" #~ msgid "Codec:" #~ msgstr "Codec:" #~ msgid "Length:" #~ msgstr "LÊngde:" #~ msgid " / (" #~ msgstr " / (" #~ msgid ")" #~ msgstr ")" #~ msgid "Source Names" #~ msgstr "Kilde Navne" #~ msgid "Clientsoftware :" #~ msgstr "Klientsoftware :" #~ msgid "Server IP :" #~ msgstr "Server IP :" #~ msgid "Clientversion :" #~ msgstr "Klientversion :" #~ msgid "ID :" #~ msgstr "ID :" #~ msgid "Downloaded (this session) :" #~ msgstr "Downloaded (denne session) :" #~ msgid "Average downloadrate :" #~ msgstr "Gennemsnits downloadhastighed :" #~ msgid "Downloaded total :" #~ msgstr "Downloaded total :" #~ msgid "Uploaded (this session) :" #~ msgstr "Uploaded (denne session) :" #~ msgid "Average Uploadrate :" #~ msgstr "Gennemsnitlig Uploadshastighed :" #~ msgid "Uploaded total :" #~ msgstr "Uploaded total :" #~ msgid "http://www.aMule.org" #~ msgstr "http://www.aMule.org" #~ msgid "Chinese" #~ msgstr "Chinese" #~ msgid "English" #~ msgstr "Dansk" #~ msgid "Galego" #~ msgstr "Galego" #~ msgid "German (Swiss)" #~ msgstr "German (Swiss)" #~ msgid "Portuguese (Brazil)" #~ msgstr "Portuguese (Brazil)" #~ msgid "Spanish (Chile)" #~ msgstr "Spanish (Chile)" #~ msgid "Spanish (Mexico)" #~ msgstr "Spanish (Mexico)" #~ msgid "Turkey" #~ msgstr "Turkey" #~ msgid "Beep on errors" #~ msgstr "Bip ved fejl" #~ msgid "Bring to front on link click" #~ msgstr "Bring frem ved link klik" #~ msgid "Downloadlist doubleclick to expand" #~ msgstr "Dobbeltklik for udfoldelse af downloadlist" #~ msgid "Tooltip Delay Time in secs (1s to 5s)" #~ msgstr "StatusomrÃ¥de ikons opdaterings tid i sekunder (1s til 5s)" #~ msgid "Systray Integration" #~ msgstr "StatusomrÃ¥de Integration" #~ msgid "Startup" #~ msgstr "Programm start" #~ msgid "5 Days" #~ msgstr "5 Dage" #~ msgid "Check for new version" #~ msgstr "Se efter ny version" #~ msgid "Show Splashscreen" #~ msgstr "Vis velkomstskÊrm" #~ msgid "Clientport" #~ msgstr "Klient Port" #~ msgid "TCP" #~ msgstr "TCP" #~ msgid "UDP" #~ msgstr "UDP" #~ msgid "Connection Wizard" #~ msgstr "Forbindelses Assistent" #~ msgid "IP-Filter" #~ msgstr "IP-Filter" #~ msgid "IP-Filter ON / OFF" #~ msgstr "IP-Filter Aktiv / Inaktiv" #~ msgid "Always filter bad IPs" #~ msgstr "Filtrer dÃ¥rlige IPer" #~ msgid "See my shares" #~ msgstr "Kan se mine delte filer" #~ msgid "mplayer -idx" #~ msgstr "mplayer -idx" #~ msgid "Autotake ED2K Links only during runtime" #~ msgstr "Overtag kun ED2K links nÃ¥r amule kÞrer" #~ msgid "Arrange Downloads" #~ msgstr "Arranger Downloads" #~ msgid "Enable auto-arranging download list " #~ msgstr "Aktiver auto arrangering af download liste" #~ msgid "Download speed" #~ msgstr "Downloads hastighed" #~ msgid "Number of sources" #~ msgstr "Antal kilder" #~ msgid "GTK Theme Selector" #~ msgstr "GTK Tema VÊlger" #~ msgid "Theme :" #~ msgstr "Tema :" #~ msgid "Use Font " #~ msgstr "Brug Font " #~ msgid "Font" #~ msgstr "Font" #~ msgid "No Needed Sources Handling" #~ msgstr "Ikke Brugbar Kilde HÃ¥ndtering" #~ msgid "Enable auto drop No Needed Sources" #~ msgstr "Aktiver auto dropning af ikke brugbare kilder" #~ msgid "Extended Dropping" #~ msgstr "Udvidet Droppelse" #~ msgid "Drop sources anyway" #~ msgstr "Drop kilde alligevel" #~ msgid "Enable Webserver" #~ msgstr "Aktiver Webserver" #~ msgid "Use TCP ports instead of unix local sockets" #~ msgstr "Brug TCP istedet for unix lokal socket" #~ msgid "External TCP port" #~ msgstr "Ydre TCP port" #~ msgid "Enable password" #~ msgstr "Aktiver kodeord" #~ msgid "Notify" #~ msgstr "PÃ¥mind" #~ msgid "" #~ "http://ocbmaurice.dyndns.org/pl/slist.pl/server.met?download/server-good." #~ "met" #~ msgstr "" #~ "http://ocbmaurice.dyndns.org/pl/slist.pl/server.met?download/server-good." #~ "met" #~ msgid "Servers List Window" #~ msgstr "Server Vindue" #~ msgid "SharedFiles" #~ msgstr "Delte Filer" #~ msgid "New Prefs" #~ msgstr "Nye Indstillinger" #~ msgid "K" #~ msgstr "K" #~ msgid "h" #~ msgstr "t" #~ msgid "D" #~ msgstr "D" #~ msgid "Error: Failed to open part.met file! (%s => %s)" #~ msgstr "Kunne ikke Ã¥bne part.met fil! (%s => %s)" #~ msgid "Error: Invalid part.met fileversion! (%s => %s)" #~ msgstr "Fejl: Invalid part.met filversion! (%s => %s)" #~ msgid "Error: %s (%s) is corrupt" #~ msgstr "Fejl: %s (%s) er beskadiget" #~ msgid "Warning: %s might be corrupted" #~ msgstr "Advarsel: %s er mÃ¥ske beskadiget" #~ msgid ".part file not found" #~ msgstr ".part fil ikke fundet" #~ msgid "Unable to open %s file - using .bak file.\n" #~ msgstr "Kunne ikke indlÊse %s - bruger .bak fil.\n" #~ msgid "Found corrupted part (%i) in %s" #~ msgstr "Fandt beskadigede dele (%i) i %s" #~ msgid "Failed to delete %s" #~ msgstr "Kunne ikke slette %s" #~ msgid "Finished downloading %s :-)" #~ msgstr "FÊrdig med downloading af %s :-)" #~ msgid "A file with that name already exists, the file has been saved as %s" #~ msgstr "En fil med dette navn findes allerede, filen er blevet gemt som %s" #~ msgid "Warning: Unable to hash downloaded part - hashset incomplete (%s)" #~ msgstr "" #~ "Advarsel: kunne ikke hashe downloadede del - hashsÊt ikke fÊrdig (%s)" #~ msgid "ERROR: Cannot write to disk" #~ msgstr "Fejl: Kan ikke skrive til disk" #~ msgid "Downloaded part %i is corrupt :( (%s)" #~ msgstr "Downloadet del %i er beskadiget :( (%s)" #~ msgid "ICH: Recovered corrupted part %i (%s)" #~ msgstr "I.C.H.: Reddede beskadiget del %i (%s)" #~ msgid "" #~ "Partfilename: %s\n" #~ "Parts: %d , %s: %d (%.1f%%)\n" #~ msgstr "" #~ "Partfilnavn: %s\n" #~ "Dele: %d , %s: %d (%.1f%%)\n" #~ msgid "%d%% done (%s) - Transferring from %d sources" #~ msgstr "%d%% fÊrdig (%s) - OverfÞrer fra %d kilder" #~ msgid "Available" #~ msgstr "TilgÊngelig" #~ msgid "Last Seen Complete :" #~ msgstr "Sidst FÊrdig :" #~ msgid "Last Reception:" #~ msgstr "Sidst Aktiv" #~ msgid "Executable (*)|*||" #~ msgstr "Program (*)|*||" #~ msgid "Language change will not be applied until aMule is restarted." #~ msgstr "Sprog Êndringer vil ikke blive aktiveret fÞr du genstarter aMule." #~ msgid "Update: Disabled" #~ msgstr "Opdater: Inaktiv" #~ msgid "Update period: %i sec" #~ msgstr "Opdaterings interval: %i sek" #~ msgid "Update period: %i secs" #~ msgstr "Opdaterings interval: %i sek" #~ msgid "Tweaks" #~ msgstr "Tuning" #~ msgid "Choose a folder for " #~ msgstr "VÊlg en mappe til " #~ msgid "%i days" #~ msgstr "%i dage" #~ msgid "%i day" #~ msgstr "%i dag" #~ msgid "Copy ED2k link to clipboard (HTML)" #~ msgstr "Kopier ED2k-Link til udklipsholder (HTML)" #~ msgid "Close this search result" #~ msgstr "Luk dette sÞge resultat" #~ msgid "Description: %s" #~ msgstr "Beskrivelse: %s" #~ msgid "IP" #~ msgstr "IP" #~ msgid "User: %i" #~ msgstr "Bruger: %i" #~ msgid "Unable to retrieve serverlist" #~ msgstr "Kunne ikke modtage serverliste" #~ msgid "Failed to load server.met!" #~ msgstr "Fejl ved indlÊsning af server.met!" #~ msgid "Invalid versiontag in server.met (0x%i , size %i)!" #~ msgstr "Invalid versionsnummer i server.met (0x%i , stÞrrelse %i)!" #~ msgid "Connect to this server" #~ msgstr "Forbind til denne server" #~ msgid "Add to static" #~ msgstr "TilfÞj til statitik" #~ msgid "Remove from static server list" #~ msgstr "Fjern fra static server liste" #~ msgid "Preference" #~ msgstr "Indstilling" #~ msgid "No Pref" #~ msgstr "Ingen Indstilling" #~ msgid "Failed to open staticservers.dat" #~ msgstr "Kunne ikke Ã¥bne staticservers.dat" #~ msgid "Added to static server list" #~ msgstr "TilfÞj til statik server liste" #~ msgid "Unknown server info received !" #~ msgstr "Ukendt server info modtaget !" #~ msgid "Connecting to %s (%s:%i)..." #~ msgstr "Forbinder til %s (%s:%i)..." #~ msgid "Error in serversocket: %s (%s:%i): %u" #~ msgstr "Fejl i Serversocket: %s (%s:%i): %u" #~ msgid "This is " #~ msgstr "Dette er " #~ msgid " (based on " #~ msgstr " (baseret pÃ¥ " #~ msgid "Visit http://www.amule.org to check if a new version is available.\n" #~ msgstr "" #~ "BesÞg http://www.amule.org for at tjekke om der er en ny version " #~ "tilgÊngelig.\n" #~ msgid "Please enter a serveraddress" #~ msgstr "Indtast venligst en serveradresse" #~ msgid "Incomplete serverport: Please enter a serverport" #~ msgstr "forkert serverport: IndsÊt en serverport" #~ msgid "Server not added!" #~ msgstr "Server ikke tilfÞjet!" #~ msgid "Low ID" #~ msgstr "Lav ID" #~ msgid "High ID" #~ msgstr "hÞj ID" #~ msgid "Loading..." #~ msgstr "Henter..." #~ msgid "Permission" #~ msgstr "Rettighed" #~ msgid "Public" #~ msgstr "Offentlig" #~ msgid "Friends only" #~ msgstr "Kun venner" #~ msgid "Locked" #~ msgstr "LÃ¥st" #~ msgid "Permissions" #~ msgstr "Tilladelser" #~ msgid "Change this file's comment..." #~ msgstr "Ændre kommentaren til denne fil" #~ msgid "Auto [Re]" #~ msgstr "Auto [Re]" #~ msgid "Hidden" #~ msgstr "Skjult" #~ msgid "You cannot change permissions while a file is still downloading!" #~ msgstr "Du kan ikke Êndre rettigheder mens filen stadig downloader!" #~ msgid "%s (%s:%i) appears to be full" #~ msgstr "%s (%s:%i) ser ud til at vÊre fuld" #~ msgid "Connecting to %s (%s:%i ) failed." #~ msgstr "Forbindelse til %s (%s:%i ) fejlede." #~ msgid "Connection attempt to %s (%s:%i ) timed out" #~ msgstr "Forbindelses forsÞg til %s (%s:%i ) tid gik" #~ msgid "Downloaded Data (Session (Total)): %s (%s)" #~ msgstr "Downloadet Data (session (Total)): %s (%s)" #~ msgid "Found Sources: %i" #~ msgstr "Fundne Kilder: %i" #~ msgid "Active Downloads (chunks): %i" #~ msgstr "Aktive Downloades: %i" #~ msgid "Uploaded Data (Session (Total)): %s (%s)" #~ msgstr "Uploadet Data (Session (Total)): %s (%s)" #~ msgid "Active Uploads: %i" #~ msgstr "Aktive Uploads: %i" #~ msgid "Total successful upload sessions: %i" #~ msgstr "FÊrdige upload sessioner (Total): %i" #~ msgid "Total failed upload sessions: %i" #~ msgstr "Fejlede upload sessioner (Total): %i" #~ msgid "Average Downloadrate (Session): %.2f kB/s" #~ msgstr "Gennemsnitlig Downloadhastighed (Session): %.2f kB/s" #~ msgid "Average Uploadrate (Session): %.2f kB/s" #~ msgstr "Gennemsnitlig Uploadhastighed (Session): %.2f kB/s" #~ msgid "Max Downloadrate Average (Session): %.2f kB/s" #~ msgstr "Max Gennemsnitlig Download Hastighed (Session): %.2f kB/s" #~ msgid "Max Downloadrate (Session): %.2f kB/s" #~ msgstr "Max Download Hastighed (Session): %.2f kB/s" #~ msgid "waiting for transfer..." #~ msgstr "Venter pÃ¥ overfÞrsel..." #~ msgid "Number of Shared Files: %i" #~ msgstr "Antal Delte Filer: %i" #~ msgid "eMule: %i (%1.1f%%)" #~ msgstr "eMule: %i (%1.1f%%)" #~ msgid "aMule: %i (%1.1f%%)" #~ msgstr "aMule: %i (%1.1f%%)" #~ msgid "lMule/xMule: %i (%1.1f%%)" #~ msgstr "lMule/xMule: %i (%1.1f%%)" #~ msgid "eDonkeyHybrid: %i (%1.1f%%)" #~ msgstr "eDonkeyHybrid: %i (%1.1f%%)" #~ msgid "eDonkey: %i (%1.1f%%)" #~ msgstr "eDonkey: %i (%1.1f%%)" #~ msgid "cDonkey: %i (%1.1f%%)" #~ msgstr "cDonkey: %i (%1.1f%%)" #~ msgid "Old MLDonkey: %i (%1.1f%%)" #~ msgstr "Gammel MLDonkey: %i (%1.1f%%)" #~ msgid "New MLDonkey: %i (%1.1f%%)" #~ msgstr "Ny MLDonkey: %i (%1.1f%%)" #~ msgid "Working Servers" #~ msgstr "Virkende Servere" #~ msgid "Failed Servers" #~ msgstr "Fejlede Servere" #~ msgid "Users on Working Servers" #~ msgstr "Brugere PÃ¥ Virkende Servere" #~ msgid "Files on Working Servers" #~ msgstr "Filer PÃ¥ Virkende Servere" #~ msgid "Total Users" #~ msgstr "Antal Brugere Total" #~ msgid "Active Connections (estimate)" #~ msgstr "Aktive Forbindelser (anslÃ¥et)" #~ msgid "Max Connection Limit Reached" #~ msgstr "Max Forbindelses GrÊnse NÃ¥et" #~ msgid "Average Connections (estimate)" #~ msgstr "Gennemsnitlige Forbindelser (anslÃ¥et)" #~ msgid "Not Found" #~ msgstr "Ikke Fundet" #~ msgid "Actual Speed Limits:" #~ msgstr "NuvÊrende Hastigheds GrÊnser:" #~ msgid "DL: " #~ msgstr "DL: " #~ msgid " kb/s " #~ msgstr " kb/s " #~ msgid "UP: " #~ msgstr "UP: " #~ msgid " kb/s" #~ msgstr " kb/s" #~ msgid "Nick: " #~ msgstr "Brugernavn: " #~ msgid "Nick: Not Ready" #~ msgstr "Brugernavn: Ikke Klar" #~ msgid "Hash: " #~ msgstr "Hash: " #~ msgid "Hash: Not Ready" #~ msgstr "Hash: Ikke Klar" #~ msgid "ID: Not Connected" #~ msgstr "ID: Ikke Forbundet" #~ msgid "IP: " #~ msgstr "IP: " #~ msgid "TCP Port: " #~ msgstr "TCP Port: " #~ msgid "UDP Port: " #~ msgstr "UDP Port: " #~ msgid "ServerName: Not Connected" #~ msgstr "ServerNavn: Ikke Forbundet" #~ msgid "ServerIP: Not Connected" #~ msgstr "ServerIP: Ikke Forbundet" #~ msgid "Shared Files: " #~ msgstr "Delte Filer" #~ msgid "Queued Clients: " #~ msgstr "Klienter i KÞ: " #~ msgid "Total DL: " #~ msgstr "Total DL: " #~ msgid " GB" #~ msgstr " GB" #~ msgid "Total UP: " #~ msgstr "Total UP: " #~ msgid "Personal Infos" #~ msgstr "Personlig Info" #~ msgid "Show" #~ msgstr "Vis" #~ msgid "Hide" #~ msgstr "Skjul" #~ msgid "All To Max Speed" #~ msgstr "Alt Til Max Hastighed" #~ msgid "All To Min Speed" #~ msgstr "Alt Til Min Hastighed" #~ msgid "Disconnect from server" #~ msgstr "Afbryd fra server" #~ msgid "aMule for Linux" #~ msgstr "aMule til Linux" #~ msgid "Error while processing incoming extended protocol UDP Packet" #~ msgstr "Fejl i inkomende protocol UDP pak" #~ msgid "" #~ "Client '%s' caused error while creating package (%s) - disconnecting " #~ "client" #~ msgstr "" #~ "Klient '%s' lavede fejl ved oprettelse af pakker (%s) - afbryder klient" #~ msgid "requested file not found" #~ msgstr "anmodet fil ikke fundet" #~ msgid "" #~ "Client '%s' seems to be an aggressive client and is banned from the " #~ "uploadqueue" #~ msgstr "" #~ "Klient '%s' ser ud til at være en aggresiv klient og er banlyst fra " #~ "upload køen" #~ msgid "%s [%s:%i] using %s removed : invalide eMule client" #~ msgstr "%s [%s:%i] bruger %s fjernet : invalid eMule klient" #~ msgid "%s [%s:%i] using %s removed : suspicious mod string change" #~ msgstr "%s [%s:%i] bruger %s fjernet : mÊrklig mod string Êndring" #~ msgid "Wizard" #~ msgstr "Assistent" #~ msgid "Down (kbit/s)" #~ msgstr "Ned (kbit/s)" #~ msgid "Up (kbit/s)" #~ msgstr "Up (kbit/s)" #~ msgid "Custom" #~ msgstr "manuel" #~ msgid "(enter below!)" #~ msgstr "(indsÊt nedenfor!)" #~ msgid "56-k Modem" #~ msgstr "56k-Modem" #~ msgid "ISDN" #~ msgstr "ISDN" #~ msgid "ISDN 2x" #~ msgstr "ISDN 2x" #~ msgid "xDSL" #~ msgstr "xDSL" #~ msgid "Cable" #~ msgstr "Kabelmodem" #~ msgid "T1" #~ msgstr "T1" #~ msgid "T3+" #~ msgstr "T3+" #~ msgid "100 Mbits" #~ msgstr "100 Mbits" #~ msgid "155 Mbits (ATM)" #~ msgstr "155 Mbits (ATM)" amule_2.3.1+git20151120.0023527bc2.orig/po/de.po0000644000175000017500000076206512611472361017071 0ustar morphmorph# translation of de.po to # aMule i18n resource file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. # # Kry , 2004. # Stefan Baldus , 2004, 2005. # Michael Weyershäuser , 2005. # ihmselbst , 2005, 2006. # Werner Mahr , 2007. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-11-02 00:10+0100\n" "Last-Translator: Stu Redman \n" "Language-Team: \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" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Einen Freund hinzufügen" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Du musst einen gültigen Port und eine gültige IP eingeben!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Information" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Die angegebene Benutzerprüfsumme ist nicht gültig!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Fehler beim Öffnen der ED2KLinks-Datei." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "WARNUNG: Man kann sich nicht als Quelle für einen eD2k-Verweis hinzufügen " "während man eine niedrige ID hat." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Beende nun Hauptanwendung ..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Beende amuleweb-Instanz mit pid '%ld' ... " #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Erzwinge Beenden der amuleweb-Instanz mit pid '%ld' ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Fehlgeschlagen" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Beende Programmkern." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "aMule-Herunterfahren abgeschlossen." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Speicherfehlerbehebungsresultate für aMule-Beendung:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "EC-Konfiguration" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Passwort eingestellt und externe Verbindungen aktiviert." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "WARNUNG" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Deine Locale wurde wegen einer Konfigurationsänderung auf Systemstandard " "geändert. Sorry." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Es sind keinerlei Server in der Server-Liste.\n" "Soll aMule jetzt eine neue Liste herunterladen?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Server-Liste herunterladen" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "Webserver läuft mit pid %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Du hast \"amuleweb zusammen mit aMule starten\" aktiviert, allerdings kann " "die amuleweb-Programmdatei nicht gestartet werden. Bitte installiere das " "Paket, das amuleweb enthält, oder kompiliere aMule mit --enable-webserver " "neu." #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "FEHLER" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Kann Ports nicht mit der festgelegten Adresse verbinden: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Port %u ist nicht erreichbar. Du wirst eine niedrige ID erhalten\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Port %u ist nicht erreichbar!\n" "\n" "Dies bedeutet, dass du eine niedrige ID erhalten wirst.\n" "\n" "Bitte überprüfe deine Netzwerkeinstellungen, um sicherzugehen, dass der Port " "für ein- und ausgehenden Traffic geöffnet ist." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Erstellen der OnlineSig-Datei gescheitert" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Erstellen der aMule OnlineSig-Datei gescheitert" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Die ausgewählte Locale scheint nicht auf dem System installiert zu sein." "(INFO: Ich werde trotzdem versuchen, sie zu setzen)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Dies ist das erste Mal, dass du aMule %s startest" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Dies ist eine Testversion, täglich aktualisiert, und\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "wir garantieren nicht, dass sie keine Daten zerstört, dein Haus anzündet\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "oder deinen Hund tötet. Aber es *sollte* sicher sein, sie zu benutzen.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Mehr Informationen und neue Releases können auf unserer Homepage gefunden " "werden\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "unter www.aMule.org, oder in unserem IRC-Channel #amule auf irc.freenode." "net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Bitte melde Fehler unter http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Das angegebene Verzeichnis für die Online-Signaturdateien ist UNGÜLTIG!\n" "Online-Signatur wird bis zur Fehlerbehebung in den Einstellungen DEAKTIVIERT." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Server Hostname benachrichtigt." #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Speicherplatzvorbelegung für Datei '%s' fehlgeschlagen: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "FEHLER: kann Logdatei nicht öffnen" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "WARNUNG: Logdatei ist leer. Etwas ist falsch." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Das Log wurde zurückgesetzt" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Servernachricht: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "Lade %s nicht herunter, weil die angeforderte Datei nicht neuer ist." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Knotenliste kann nicht geholt werden." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Konnte heruntergeladene Datei zur Versionsprüfung nicht öffnen" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Fehlerhafte Versionsprüfungsdatei" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Du benutzt eine veraltete aMule-Version!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" "Diese Version von aMule ist %i.%i.%i und die aktuelle Version ist %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Die neueste Version kann man immer auf http://www.amule.org finden." #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "WARNUNG: Diese Version von aMuled ist veraltet: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Deine Kopie von aMule ist aktuell." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Konnte die Versionsprüfungsdatei nicht herunterladen" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Benutzer: %s | Dateien: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Benutzer: E: %s K: %s | Dateien: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Keine Netzwerke ausgewählt" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "mit niedriger ID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "mit hoher ID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Verbunden zu %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Verbinde zu %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "eD2k getrennt" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad gestartet." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad beendet." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Kad verbunden (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Kad verbunden (firewalled)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Kad getrennt" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Kad-Netzwerk kann mit deaktiviertem UDP-Port nicht benutzt werden, nicht " "gestartet." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "" "Kad-Netzwerk ist in den Voreinstellungen deaktiviert, kein " "Verbindungsversuch." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "FEHLER: aMule daemon kann nicht verwendet werden wenn externe Verbindungen " "deaktiviert sind. Zum aktivieren von externen Verbindungen entweder normales " "aMule benutzen, amuled mit der Option --ec-config starten oder in der Datei " "~/.aMule/amule.conf die Einstellung \"AcceptExternalConnections\" auf 1 " "ändern." #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "FEHLER: Ein gültiges Password ist nötig um externe Verbindungen nutzen zu " "können und aMule daemon kann ohne externe Verbindungen nicht benutzt werden. " "Um aMule daemon zu starten muss das \"ECPassword\"-Feld in der Datei ~/." "aMule/amule.conf mit einem richtigen Wert versehen sein. amuled kann mit dem " "Argument --ec-config gestartet werden um das Passwort zu setzen. Mehr " "Informationen können in der Wiki unter http://wiki.amule.org gefunden werden." #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - Zeitmesser wird gestartet" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: Wechsele in den Hintergrund." #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Kann keine Pid-Datei erstellen" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "FEHLER: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Dies ist aMule %s, basierend auf eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Läuft auf %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Besuche http://www.amule.org um zu sehen, ob eine neue Version verfügbar ist." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "UNBEHEBBARER FEHLER: Es konnte kein Zeitgeber erstellt werden." #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "aMule-Fernbedienung " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Schnappschuss:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "'All-Plattform' p2p Client basierend auf eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Webseite: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Forum: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Kontakt: admin@amule.org (administrative Fragen) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 aMule Team \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Teile von aMule basieren auf \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Peer-to-peer Weiterleitung basierend auf der XOR Funktion.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Nachricht" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "aMule Dialog zerstört." #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Verbinden" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Baue Verbindung auf" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Verbindung getrennt" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Firewalled" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Verbunden" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Baue Verbindung auf" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: aus" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Abbruch" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Beendet die derzeitigen Verbindungsversuche" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Trennen" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Von den momentan verbundenen Netzwerken trennen." #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Verbinden" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Mit den aktuell aktivierten Netzwerken verbinden." #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Hoch: %.1f(%.1f) | Herunter: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Hoch: %.1f | Herunter: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Verbunden)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Getrennt)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "%s wirklich beenden?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Beenden bestätigen" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Startbefehl:" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- Voreinstellung -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Skin-Verzeichnis '%s' existiert nicht" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "WARNUNG: Öffnen der Skin-Datei '%s' zum Lesen nicht möglich" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Netzwerke" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Übersicht der verwendeten Netzwerke" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Suchen" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Dateisuche in den verbundenen Netzwerken" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Downloads" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Download-Fenster" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Freigegebene Dateien" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Übersicht der freigegebenen Dateien" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Nachrichten" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Nachrichten, Chat, Freundesliste" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistiken" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Diverse Statistiken über Up- und Download, Verbindungen, Clients usw." #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Einstellungen" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Fenster für Einstellungen" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importiere" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Das Importierwerkzeug für Part-Dateien" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Über" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Über/Hilfe - Hinweise zur Version usw." #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "eD2k-Netzwerk" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Kad-Netzwerk" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Kein Netzwerk" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "aMule Fernsteuerung" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Schwerer Fehler: Der Kern-Zeitgeber konnte nicht erstellt werden." #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Verbinde mit entferntem aMule" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Schwerer Fehler: Der Nachfrage-Zeitgeber konnte nicht erstellt werden." #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Gehe in Ereignisschleife..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Verbinde..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Verbindung fehlgeschlagen " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "EC-Ereignissteuerung für entfernte Benutzeroberfläche" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Beende..." #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Verbindung fehlgeschlagen. Konnte nicht zu %s:%d verbinden\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Verbindung getrennt - wahrscheinlich hat aMule sich beendet" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Bereit" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Alle" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Konnte das Verzeichnis '%s' für die Kategorie '%s' nicht erstellen, nutze " "weiter das Verzeichnis '%s'." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Unbekannt" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Konnte Liste der freigegebenen Dateien von Benutzer '%s' nicht abrufen" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Suche Kumpel für Verbindung mit niedriger ID" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Fake eMule version %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Fake eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Fake eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basiert auf eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Spitzname: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Angefordert: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Dateistatistik dieser Sitzung: %d von %d Anfrage akzeptiert, %s übertragen\n" msgstr[1] "" "Dateistatistik dieser Sitzung: %d von %d Anfragen akzeptiert, %s übertragen\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Dateistatistik aller Sitzungen: %d von %d Anfrage akzeptiert, %s übertragen\n" msgstr[1] "" "Dateistatistik aller Sitzungen: %d von %d Anfragen akzeptiert, %s " "übertragen\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Unbekannte Datei angefordert" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Nachricht gefiltert von '%s' (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Neue Nachricht von '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Benutzer %s (%u) hat die Liste freigegebener Dateien für das nicht " "vorhandene Verzeichnis '%s' angefordert -> Ignoriert" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "WARNUNG: Datei '%s' kann nicht geöffnet werden." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "WARNUNG: Liste der abgebrochenen Dateien korrumpiert, enthält ungültigen " "Header." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "IO-Fehler während des Lesens der Datei '%s': %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Fehler während des Speicherns der Datei '%s': %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Captcha eingeben" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategorie" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Neue Kategorie" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Wähle einen Ordner für eingehende Dateien" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Du musst einen Namen für diese Kategorie festlegen!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Du musst einen Pfad für diese Kategorie festlegen!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Anlegen des Verzeichnisses für eingehende Dateien der Kategorie " "fehlgeschlagen. Bitte einen gültigen Pfad angeben!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Beginn der Chat-Sitzung: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Verbunden mit Client ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Verbinde mit Client ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Verbindung zum Client fehlgeschlagen / Verbindung verloren ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" "*** Captcha-Überprüfung bestanden, Nachricht wurde vom Benutzer empfangen. " "***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Falsche Antwort zum Captcha, Nachricht wurde ignoriert. Bitte eine neue " "Nachricht senden um ein neues Captcha anzufordern. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Chat" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Reiter schließen" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Alle Reiter schließen" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Andere Reiter schließen" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Zu Freunden hinzufügen" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Credit-Datei geladen, %u Client ist bekannt" msgstr[1] "Credit-Datei geladen, %u Clients sind bekannt" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Credits für %u Client abgelaufen!" msgstr[1] " - Credits für %u Clients abgelaufen!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Keine 'cryptkey.dat' gefunden, erzeuge eine neue." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Client-Details" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "Niedrige ID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "Hohe ID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Aktiviert" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Unterstützt" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Nicht Unterstützt" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Deaktiviert" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Verbunden" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Verbindung getrennt" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Nicht vollständig" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Böser Bube" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Verifiziert - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Nicht verfügbar" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "Benutzer %s (%u) hat Deine Liste der freigegebenen Dateien angefordert -> " "akzeptiert" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "Benutzer %s (%u) hat Deine Liste der freigegebenen Dateien angefordert -> " "abgelehnt" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "Benutzer %s (%u) hat die Liste Deiner freigegebenen Verzeichnisse angefragt -" "> akzeptiert" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "Benutzer %s (%u) hat die Liste Deiner freigegebenen Dateien angefragt -> " "abgelehnt" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Benutzer %s (%u) hat deine Liste freigegebener Dateien für das Verzeichnis '%" "s' angefordert -> akzeptiert" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Benutzer %s (%u) hat deine Liste freigegebener Dateien für das Verzeichnis '%" "s' angefordert -> abgelehnt" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Benutzer %s (%u) hat das Verzeichnis '%s' freigegeben" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" "Benutzer %s (%u) hat ungefragt seine freigegebenen Verzeichnisse gesendet." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "Benutzer %s (%u) hat die Liste freigegebener Dateien für das Verzeichnis '%" "s' gesendet" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" "Benutzer %s (%u) hat das Senden der Liste freigegebener Dateien abgeschlossen" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" "Benutzer %s (%u) hat ungefragt die Liste seiner freigegebenen Dateien " "gesendet" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Benutzer %s (%u) verweigert den Zugriff auf die Liste freigegebener " "Verzeichnisse/Dateien." #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Dateikommentare" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Benutzername" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Dateiname" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Bewertung" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Kommentar" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Keine Kommentare" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u Kommentar" msgstr[1] "%u Kommentare" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Client %s wurde gebannt, weil er %s korrupte Daten für %s gesamt für die " "Datei '%s' gesendet hat." #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Ni]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Ho]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Sehr niedrig" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Niedrig" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normal" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Hoch" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Sehr hoch" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Release" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Anfragen" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Verbunden über Server" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Warteschlange voll" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "in Warteschlange" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Herunterladen" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Empfange Prüfsummensatz" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Keine benötigten Teile" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Verbindung niedriger ID zu niedriger ID nicht möglich" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Zu viele Verbindungen" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Verbinde über Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Zu viele Kad-Verbindungen" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Gebannt" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Verbindungsfehler" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Entfernte Warteschlange voll" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Alter MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Neuer MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule-kompatibel" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Lokaler Server" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Entfernter Server" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Quellenaustausch" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passiv" #: src/DataToText.cpp:133 msgid "Link" msgstr "Verweis" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Einstiegsquellen" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Suchresultate:" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Fertiggestellt" #: src/DataToText.cpp:146 msgid "In progress" msgstr "In Arbeit" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "FEHLER: Ungenügender Festplattenplatz" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "FEHLER: part.met nicht gefunden" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "FEHLER: IO-Fehler!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "FEHLER: Fehlgeschlagen!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "In Warteschlange" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Wird bereits heruntergeladen" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Unbekanntes oder fehlerhaftes Format der Temp-Datei." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Teil" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Größe" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Übertragen" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Geschwindigkeit" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Fortschritt" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Quellen" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Priorität" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Status" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Verbleibende Zeit" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Zuletzt vollständig gesehen" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Letzter Empfang" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Wirklich die ausgewählte Datei löschen?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Wirklich die ausgewählten Dateien löschen?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Rückmeldung von: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Automatisch" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Stopp" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pausieren" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "Fo&rtsetzen" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "&Liste um fertige Dateien bereinigen" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "[A4AF] Weise alle Quellen dieser Datei zu" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "[A4AF] Automatisches Zuweisen von Quellen zu dieser Datei" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "[A4AF] Weise alle Quellen einer anderen Datei zu" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Erweiterte Optionen" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Vorschau" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Zeige &Dateieigenschaften" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Zeige alle Kommentare" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Kopiere Magnet-URI in Zwischenablage" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Kopiere eD2k &Link in die Zwischenablage" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Feedback in die Zwischenablage kopieren" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "Zuweisung rückgängig machen" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Einer Kategorie hinzufügen" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Oeffne diese Datei" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Einen neuen Namen für diese Datei eingeben:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Datei umbenennen" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Downloads (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Bitte trage deinen bevorzugten Videoplayer in den Einstellungen ein.\n" "Bis dahin wird aMule versuchen, mplayer zu starten, und bei jeder Vorschau " "wird diese Warnung angezeigt werden." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Dateivorschau" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "FEHLER: Konnte externen Mediaplayer nicht starten!Befehl: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Speichere unfertige Datei %u von %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Alle unfertigen Dateien gespeichert." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Lade temporäre Dateien von %s." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Lade unfertige Datei %u von %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "FEHLER: Konnte Sicherungsdatei nicht laden. Suche auf http://forum.amule.org " "nach .part.met Wiederherstellungslösungen." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Alle unfertigen Dateien geladen." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Keine Part-Dateien gefunden" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "%u part-Datei gefunden" msgstr[1] "%u part-Dateien gefunden" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "Das Dateisystem für temporäre Dateien unterstützt keine großen Dateien." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "Das Dateisystem für fertige Dateien unterstützt keine großen Dateien." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Herunterladen von %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Du versuchst bereits, die Datei '%s' herunterzuladen" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Die Datei '%s' ist bereits vorhanden" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Die Datei %s wird bereits heruntergeladen" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Kann Magnet-Verweis nicht in eD2k umwandeln: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Unbekanntes Protokoll von Verweis: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Ungültiger eD2k-Link! Fehler: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Client sendete Paket nach fehlgeschlagener Authentifizierung." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Externe Verbindung getrennt." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Externe Verbindungen deaktiviert. Leeres Passwort!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Externe Verbindungen in der Konfigurationsdatei deaktiviert" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Neue externe Verbindung akzeptiert" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "FEHLER: Konnte keine neue externe Verbindung akzeptieren" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Externe Verbindung verweigert. Kein Passwort in den Einstellungen angegeben!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Verbinde mit Client: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Unbekannte Version" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Unkorrekte EC-Versions-ID; es könnte eine binär-Inkompatibilität vorliegen. " "Benutze Kern und Fernsteuerung desselben Schnappschusses." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Du kannst nicht zu einer Release-Version von einer beliebigen Entwicklungs-" "Version verbinden! *seufz* möglicher Absturz verhindert" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Ungültige Protokollversion." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Fehlende Protokollversionsmarke." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" "Authentifizierung fehlgeschlagen: ungültiger Hash als EC-Passwort angegeben." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Authentifizierung fehlgeschlagen: falsches Passwort." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Authentifizierung fehlgeschlagen: fehlendes Passwort." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Ungültige Anfrage, bitte zuerst authentifizieren." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Zugang gewährt." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Fehlermeldung \"%s\" zu Client gesendet." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Unerlaubter Verbindungsversuch von %s. Verbindung getrennt." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "Fernsteuerungs-Part-Datei-Kommando gescheitert: Dateiprüfsumme nicht " "gefunden: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Dateiprüfsumme nicht gefunden: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OOPS! OpCode-Verarbeitungsfehler!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Server nicht hinzugefügt" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "Server nicht gefunden: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "Der zu entfernende Server muss angegeben sein" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k ist in den Einstellungen deaktiviert." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Suche läuft gerade. Aktualisiere gleich die Ergebnisse!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Websuche mit der Fernsteuerungsschnittstelle macht keinen Sinn." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Keine Punkte für Graphen." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Der Client ist nicht nicht für diese Detailstufe eingestellt." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Externe Verbindungen: Herunterfahren gefordert" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Wird bereits heruntergefahren." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Externe Verbindungen: Füge hinzu Verweis '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Ungültiger Verweis oder schon auf der Liste" #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Datei nicht gefunden." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Ungültiger Dateiname." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Datei kann nicht umbenannt werden." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad ist in den Einstellungen deaktiviert." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Bereits mit eD2k verbunden." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Verbinde mit eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Bereits mit Kad verbunden." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Verbinde mit Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Alle Netzwerke sind deaktiviert." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Von eD2k getrennt." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Von Kad getrennt." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Externe Verbindungen: ungültigen Opcode empfangen: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Ungültiger OpCode (falsche Protokollversion?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Unbekannte Erweiterung '%s' für Befehl '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Unbekannter Befehl '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Dieser Befehl kann kein Argument haben.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Dieser Befehl muss ein Argument haben.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Befehl unvollständig, eine der folgenden Erweiterungen muss verwendet " "werden:\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Verfügbare Erweiterungen:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Verfügbare Befehle:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Alle Befehle sind unabhängig von Groß- und Kleinschreibung.\n" "Eingabe von '%s ' für weitere Informationen zu .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Programm verlassen." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Hilfe anzeigen." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Um Hilfe zu einem Befehl zu bekommen, gib 'help ' ein.\n" "Eine vollständige Befehlsübersicht erhält man mit 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "'%s' zeigt die Befehlsübersicht.\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Syntax Fehler!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Fehler beim Ausführen des Befehls - sollte niemals passieren! Bitte den " "Fehler melden.\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Dieser Befehl sollte keine Parameter haben." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Dieser Befehl muss einen Parameter haben." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Ungültiges Argument." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Unvollständiger Befehl." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Gib '%s' ein, um mehr Hilfe zu bekommen.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Dies ist %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Dies ist %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Erstelle Client...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, beende %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Kann nicht mit leerem Passwort verbinden.\n" "Gib ein Passwort in der Konfigurationsdatei\n" "oder als Option an oder gib es nach Aufforderung ein.\n" "\n" "Beende...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Zeige diese Hilfe." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Host, auf dem aMule läuft. (Standard: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "aMules Port für externe Verbindungen. (Standard: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Passwort für externe Verbindungen." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Lese Konfiguration aus Datei." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Schreibe keinerlei Ausgabe auf stdout." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Sei ausführlich - Zeige auch Debug-Nachrichten." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Setze Programm-Locale (Sprache)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Schreibe Kommandozeilen-Optionen in Konfigurationsdatei." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Erstelle Konfigurationsdatei basierend auf aMules Konfigurationsdatei." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Drucke Programmversion." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Dateieinzelheiten" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "%.1f%% erledigt" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "Konnte Freundes-Liste 'emfriends.met' nicht lesen!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "Konnte Freundes-Liste 'emfriends.met' nicht schreiben!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "KRITISCH - kein Client bei StartChatSession" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Freunde" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Zeige &Details" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Freund hinzufügen" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Freund entfernen" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "&Message senden" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Dateien ansehen" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Friendslot erstellen" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Den markierten Freund wirklich löschen?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Die markierten Freunde wirklich löschen?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Du darfst nicht mehr als einen Friendslot vergeben.\n" " Nur ein Slot wurde vergeben." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Mehrfachauswahl" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Sende Nachricht an Benutzer" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Zu sendende Nachricht:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Entferne von Freundesliste" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Sende Nachricht" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Zu dieser Datei verschieben" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "In Warteschlange: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Andere Datei angefordert" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Warte auf Uploadslot" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "In Warteschlange: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Hochladen" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Keine" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Nein" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Ja" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Lädt herunter..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "HTTP-Download abgebrochen" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Kann Zieldatei %s für Download nicht erstellen!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "Die Download-URL kann nicht leer sein." #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "Die URL %s antwortet mit %i - Fehler (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Kritischer Fehler während des Schreibens der heruntergeladenen Datei." #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "%d Bytes heruntergeladen" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "%d Bytes erwartet, aber %d Bytes heruntergeladen." #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "Ungültige URL für HTTP-Download oder HTTP-Weiterleitung ('http://' " "vergessen?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Kann nicht zu HTTP-Downloadserver verbinden." #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Ungültige Antwort von HTTP-Downloadserver" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Lade neue GeoIP.dat-Datei von %s." #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" "Das Herunterladen der GeoIP.dat-Datei ist fehlgeschlagen, breche " "Aktualisierung ab." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" "Das Entfernen der %s-Datei ist fehlgeschlagen, breche Aktualisierung ab." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" "Das Umbenennen der neuen %s-Datei ist fehlgeschlagen, breche Aktualisierung " "ab." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "%s erfolgreich aktualisiert." #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Fehler beim aktualisieren der GeoIP.dat-Datei" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Herunterladen der Datei %s von %s fehlgeschlagen." #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "Herunterladen der Länderdaten für '%s' fehlgeschlagen." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Lade IP-Filter 'ipfilter.dat'·und·'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "Laden der ipfilter.dat '%s' fehlgeschlagen, unbekanntes Format aufgetreten." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Fehler beim Laden der ipfilter.dat '%s', Datei konnte nicht geöffnet werden." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "%u IP-Bereich von '%s' geladen." msgstr[1] "%u IP-Bereiche von '%s' geladen." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u fehlerhafte Zeile wurde ignoriert." msgstr[1] "%u fehlerhafte Zeilen wurden ignoriert." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" "Das Umbenennen der neuen %s-Datei ist fehlgeschlagen, breche Aktualisierung " "ab." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "IP-Filter ist bereit" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Bootstrap von \n" "bekannten Clients" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Knoten (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Ungültige Bootstrap-IP" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Ungültiger Bootstrap-Port" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Bitte alle erforderlichen Felder ausfüllen" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Wirklich neue nodes.dat herunterladen?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Dies wird alle momentanen Knoten entfernen und die Kademlia-Verbindung neu " "starten." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Fortsetzen?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: Suchbegriff zu kurz" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Schlüsselwort für Suche: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Das Suchwort ist bereits auf der Suchliste." #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "Lesen der nodes.dat Datei fehlgeschlagen - zu alt. Diese Version (0) wird " "nicht mehr unterstützt." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Lese %u Kad-Kontakt" msgstr[1] "Lese %u Kad-Kontakte" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "Keine Kontakte gefunden, bitte von einem anderen Client bootstrappen oder " "eine nodes.dat-Datei herunterladen." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Nur %d Kad-Kontakt verfügbar, nodes.dat wurde nicht geschrieben." msgstr[1] "Nur %d Kad-Kontakte verfügbar, nodes.dat wurde nicht geschrieben." #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "%d Kad-Kontakt geschrieben." msgstr[1] "%d Kad-Kontakte geschrieben." #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Dateiname" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Dateigröße" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Tauschverhältnis" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Hochgeladen" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Angefordert" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Akzeptiert" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "vollständige Quellen" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "WARNUNG: Liste der bekannten Dateien korrumpiert, enthält ungültigen Header." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Laden eines Eintrags aus der Liste bekannter Dateien fehlgeschlagen, Datei " "möglicherweise beschädigt" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Ungültiger Eintrag in der Liste bekannter Dateien, Datei möglicherweise " "beschädigt: " #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Unbekannter Fehler %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "Kann Fehlerbeschreibung für Fehler %d nicht erhalten" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Prüfsumme erstellen" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Wird abgeschlossen" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Vollständig" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Pausiert" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Fehlerhaft" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Warten" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Das angegebene Passwort darf nicht leer sein." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Ungültiges Passwort, keine MD5-Prüfsumme!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Verbindungsfehler" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "EC-Verbindung fehlgeschlagen. Leere Antwort." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Externe Verbindungen: Falsche Antwort, Verhandlung fehlgeschlagen. " "Verbindung beendet." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Gelungen! Verbindung aufgebaut zu aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Verbindung hergestellt." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Externe Verbindungen: Zugriff verweigert wegen:" #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Externe Verbindungen: Verhandlung fehlgeschlagen." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "HTTP-Download-Thread gestartet." #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket: OK" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "FEHLER: Kann nicht auf TCP-Port lauschen." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "FEHLER: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "WARNUNG: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Schließen" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Ausschneiden" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Kopieren" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Einfügen" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Leeren" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Alles auswählen" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Unbegrenzt" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule-Traymenü" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Geschwindigkeitsbegrenzungen:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "UL: Keine" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "UL: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DL: Keine" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DL: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Download-Geschwindigkeit: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Upload-Geschwindigkeit: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Client-Information" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Spitzname: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Kein Spitzname ausgewählt!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "Client-ID: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Nicht verbunden" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Servername: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "ServerIP: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Nicht verbunden" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP-Port: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP-Port: Nicht bereit" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "UDP-Port: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UDP-Port: Nicht bereit" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Online-Signatur: An" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Online-Signatur: Aus" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Laufzeit: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Freigegebene Dateien: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Clients in Warteschlange: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Gesamt-DL: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Gesamt-UL: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Upload-Einstellung" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Download-Einstellung" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Verstecke aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Zeige aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Schließen" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k-Verweis: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Übernehmen" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Hier klicken, um den eD2k-Verweis im Texteingabefeld zur Download-Liste " "hinzuzufügen. " #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Hier werden Ereignisse angezeigt. Eine komplette Ereignisliste kann im Log " "unter dem Server-Reiter eingesehen werden." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Lade ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Anzahl Benutzer auf dem Server, mit dem du verbunden bist ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Benutzer: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Zum aktuellen Server verbundene Benutzer und ungefähre Anzahl der Benutzer " "insgesamt im Netz." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Hoch: 0.0 | Herunter: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Derzeitige Upload- und Download-Raten im Schnitt. Wenn aktiviert, dann auch " "noch in Klammern der Overhead durch Client-Kommunikation." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Zeigt den aktuellen Verbindungsstatus an: rote Pfeile bedeuten, dass du im " "Moment nicht verbunden bist, gelb bedeutet, du hast eine niedrige ID " "(firewalled), und grün bedeutet, dass du eine hohe ID hast (die beste " "Verbindung)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Nicht verbunden..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Momentan verbundener Server." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Suche" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Name:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Suchtyp" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Lokal" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Global" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Dateiprüfsumme" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Erweiterte Parameter" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtere" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Dateityp" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Jeder" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Archive" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD-Abbilder" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Bilder" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programme" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Texte" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Videos" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Dateiendung" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Mindestgröße" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Höchstgröße" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Verfügbarkeit" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filter:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filterergebnisse" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Ergebnisse umkehren" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Bekannte Dateien ausblenden" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Start" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Mehr" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" "Sucht nach weiteren Ergebnissen in eD2k. Bislang keine Unterstützung für Kad." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Stopp" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Download" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Setze Felder zurück." #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Ergebnisse" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Vollständige Downloads entfernen" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Dateiquellen:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Allgemein" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Name:" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "Nicht verfügbar" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met-Datei:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Prüfsumme:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Dateigröße:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Status der Part-Datei:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Zuletzt vollständig gesehen:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Übertragungen" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Gefundene Quellen:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Übertragende Quellen:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Anzahl der Part-Dateien:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Verfügbar:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Datenrate:" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Dauer aktiven Herunterladens: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Übertragen:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Fertiggestellt:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Intelligente Fehlerkorrektur" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Durch Fehler verloren:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Durch Kompression gewonnen:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Durch I.C.H. gesparte Pakete:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Dateinamen" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Übernehmen" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Aufräumen" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Übernehmen" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" "Kommentiere/bewerte Datei (der Text wird für alle Benutzer sichtbar sein)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Für einen Film kann man die Länge, die Handlung, die Sprache,... angeben\n" "\n" "und wenn es eine Fälschung ist, kann man andere aMule-Benutzer davor warnen." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Dateiqualität" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Nicht bewertet" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Ungültig / fehlerhaft / Fälschung" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Schlecht" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Ordentlich" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Gut" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Hervorragend" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Bewerte diese Datei oder gib anderen Benutzern einen Hinweis, wenn sie " "ungültig ist..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Aktualisieren" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Wird geladen, bitte warten ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Unbekannte Größe" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Benötigte Information" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP-Adresse:" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port:" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Zusätzliche Information" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Benutzername:" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Benutzerprüfsumme:" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Hinzufügen" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Download-Geschwindigkeit" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Aktuell" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "gleitender Mittelwert" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Sitzungsdurchschnitt" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Upload-Geschwindigkeit" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Verbindungen" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktive Downloads" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktive Verbindungen (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Aktive Uploads" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Statistikbaum" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Benutzername:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Benutzerprüfsumme:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Client-Software:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Client-Version:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP-Adresse:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "Benutzer-ID:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "Server-IP:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Servername:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Verschleierung:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Übertragungen zum Client" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Momentane Anfrage:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Durchschnittliche Uploadrate:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Durchschnittliche Downloadrate:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Hochgeladen (Sitzung):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Heruntergeladen (Sitzung):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Hochgeladen (Gesamt):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Heruntergeladen (Gesamt):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Punkte" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "DL/UP-Modifikator:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Sichere Erkennung:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Warteschlangenposition:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Wartepunkte:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Spitzname" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - der multiplattform Muli" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" "Dies ist der Name, den andere Benutzer sehen, wenn sie mit dir verbunden " "sind." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Sprache:" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Verzögerung vor dem Anzeigen der Tooltips. " #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Verwendete Sprache für die Einstellungen festlegen." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Beim Start auf neue Version prüfen" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Wenn dies aktiviert ist, wird aMule beim Start überprüfen, ob eine neue " "Version vorliegt" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "minimiert starten" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Wenn dies aktiviert ist, wird aMule sofort nach dem Start minimiert. " #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Abfrage beim Beenden" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Sicherheitsabfrage vorm Beenden." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "Anwendungsfenster bei Klick auf \"Schließen\" verbergen" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Tray-Icon aktivieren" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" "Dies aktiviert/deaktiviert das Symbol im Infobereich (oder Taskleiste)." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimiere zu Symbol im Infobereich" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Wird dies aktiviert, minimiert sich aMule in den Infobereich, anstatt in die " "Taskleiste." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Tooltip-Verzögerungszeit:" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "Sekunden" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Browser-Wahl" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Gib den Namen des gewünschten Browsers hier ein. Bei einem leeren Feld wird " "der voreingestellte Systembrowser benutzt." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Durchsuchen" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Öffne in neuem Reiter, wenn möglich" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Öffne die Webseite in einem neuen Reiter, statt einem neuen Fenster, wenn " "möglich" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Videoplayer" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Bandbreitenbegrenzungen" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Upload" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Slotzuteilung" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Ports" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Standard-TCP-Port" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Dies ist der Standard-eD2k-Port. Er kann nicht deaktiviert werden." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "UDP-Port für Serveranfragen (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Erweiterter UDP-Port (Kad / globale Suche)" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" "Dieser UDP-Port wird für erweiterte ED2k-Anfragen und das Kad-Netzwerk " "benutzt." #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Aktiviere UPnP für Router-Port-Weiterleitung" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnP-TCP-Port (optional):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Verknüpfe lokale Adresse mit IP (Leer für beliebige):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Nur für fortgeschrittene Benutzer: Wenn es mehrere Netzwerkverbindungen " "gibt, hier die Adresse der Verbindung, mit der aMule verknüpft werden soll, " "eingeben." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Maximale Anzahl Quellen pro heruntergeladener Datei:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Maximale gleichzeitige Verbindungen:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "eD2k" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Automatisches Verbinden beim Start" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Wiederverbinden nach Trennung" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Lösche tote Server nach" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "Versuchen" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Serverliste beim Programmstart aktualisieren" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Liste" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Serverliste von verbundenem Server beziehen" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Serverliste beim Verbinden zu einem Client beziehen" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Benutze Prioritätssystem" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Benutze intelligente Prüfung für niedrige ID beim Verbinden" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Sicheres/langsames Verbinden zu Servern" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Automatisches Verbinden nur zu Servern aus der statischen Liste" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Setze manuell hinzugefügte Server auf hohe Priorität" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Intelligente Korruptionsverarbeitung (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Aktiviere" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "Advanced I.C.H vertraut jeder Prüfsumme (nicht empfohlen)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Neue Dateien dem Download pausiert hinzufügen" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Neu hinzugefügte Dateien im Download auf Autopriorität stellen" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Versuche, zuerst die ersten und letzten Dateiteile herunterzuladen" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Starte nächste pausierte Datei, wenn eine Datei fertiggestellt wird" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Aus der selben Kategorie" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "In alphabetischer Reihenfolge" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Reserviere Speicherplatz für neue Dateien" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Reserviert für neue Dateien Speicherplatz für die ganze Datei und reduziert " "so Fragmentierung." #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Stoppe Downloads wenn freier Speicherplatz folgenden Wert erreicht:" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Wähle dies aus, wenn aMule deinen Festplattenplatz prüfen soll" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Hier den minimalen erwünschten Festplattenplatz angeben." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Bei seltenen (< 20 Quellen) Dateien zehn Quellen speichern" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Uploads" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Neue freigegebene Dateien auf Autopriorität stellen" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Zielverzeichnis für Downloads." #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Verzeichnis für temporäre Downloaddateien" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Freigegebene Ordner" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" "(Rechtsklick auf das Symbol des rekursiv freizugebenden Verzeichnisses)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Versteckte Dateien freigeben" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Graphen" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Aktualisierungsverzögerung: 5 Sekunden" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Durchschnittsgraphen in Minuten berechnen: 100 min" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Verbindungsgraphenskalierung: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Downloadgraphenskalierung:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Uploadgraphenskalierung:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Farben:" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Hintergrund" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Gitter" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Aktueller Download" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Download: Durchschnitt" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Download: Sitzungsdurchschnitt" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Aktueller Upload" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Upload: Durchschnitt" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Upload: Sitzungsdurchschnitt" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Aktive Verbindungen" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Transferbalken des Symbols im Infobereich" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Momentane Kad-Knoten" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Laufende Kad-Knoten" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Kad-Knoten Sitzung" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Auswahl" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Baum" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Anzahl angezeigter Client-Versionen (0=unbegrenzt)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! WARNUNG !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Maximale neue Verbindungen pro 5 Sekunden" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Dateipuffergröße: 240000 Bytes" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Upload-Warteschlangengröße: 5000 Clients" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Server-Wiederverbindungsintervall: Aus" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Zeitgesteuerten Bereitschaftsmodus des Computers deaktivieren" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "benutztes Aussehen:" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Zeige \"schnelle eD2k-Linkverarbeitung\" in jedem Fenster" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Zeige erweiterte Informationen auf Kategorie-Reitern" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "Zeige Programmversion im Titel" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Zeige Transferraten im Titel" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Vor dem Anwendungsnamen" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Nach dem Anwendungsnamen" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Zeige Overhead-Bandbreite" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Toolbar senkrecht ausrichten" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Landesflaggen für Clients anzeigen" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Downloadwarteschlangendateien" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Zeige Prozent des Fortschritts" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Zeige Fortschrittsbalken" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Flach" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Rund" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "sortiere Dateien automatisch (hohe CPU-Auslastung)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule sortiert automatisch die Spalten der Downloadliste" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parameter für externe Verbindungen" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Externe Verbindungen annehmen" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP der lauschenden Schnittstelle:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Hier eine gültige IP im Format a.b.c.d für das lauschende EC-Interface " "eingeben. Ein leeres Feld oder 0.0.0.0 bedeutet ein beliebiges Interface." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "TCP-Port:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Aktiviere UPnP-Port-Weiterleitung zu EC-Port" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Passwort" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Webserver-Parameter" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Starte Webserver mit aMule" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Webvorlage" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Kennwort für Vollzugriff" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Eingeschränkten Benutzer aktivieren" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Kennwort für eingeschränkten Zugriff" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Aktiviere UPnP-Port-Weiterleitung des Webserverports" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Webserver UPnP-TCP-Port (optional)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Aktualisierungsintervall in Sekunden" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Gzip-Kompression an" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Hier klicken, um alle Einstellungsänderungen zu übernehmen." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Alle Änderungen zu den Einstellungen zurücksetzen." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Titel:" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Kommentar:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Verzeichnis für eingehende Dateien:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Priorität bei neu zugewiesenen Dateien ändern:" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Nicht ändern" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Farbe für diese Kategorie wählen (momentan ausgewählt):" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Zurücksetzen" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Drücke diesen Knopf, um das Log zurückzusetzen." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" "Hier klicken, um die Serverliste über die angegebene URL zu aktualisieren" #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Serverliste" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Hier die URL einer server.met eingeben, und dann den Knopf links vom " "Eingabefeld drücken, um die Serverliste zu aktualisieren." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Server manuell hinzufügen: Name" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Gib den Namen das neuen Servers hier ein" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Hier die IP des Servers im Format x.x.x.x eingeben." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Hier den Serverport eingeben." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "" "Einen Server manuell hinzufügen (vorher bitte links die Felder ausfüllen)..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule-Log" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Serverinformation" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "eD2k-Info" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad-Info" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Zum Aktualisieren der nodes.dat von URL diese Schaltfläche drücken." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Knoten (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Hier die URL einer nodes.dat eingeben, und dann den Knopf links vom " "Eingabefeld drücken, um die Liste der bekannten Knoten zu aktualisieren." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Knotenstatistik" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Bootstrap" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Neuer Knoten" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Port:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Bootstrap von bekannten Clients" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Kad trennen" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Benutze sichere Benutzeridentifikation" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Es wird empfohlen diese Option zu aktivieren. Du wirst keine Credits " "erhalten, wenn SUI nicht aktiviert ist." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Protokollverschleierung" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Unterstütze Protokollverschleierung" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Diese Option aktiviert die Protokollverschleierung und verfügt aMule, " "verschleierte Verbindungen von anderen Clients anzunehmen." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Verschleiere ausgehende Verbindungen" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Diese Option verfügt aMule, Protokollverschleierung zu verwenden bei der " "Verbindung zu anderen Clients und/oder Servern." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Akzeptiere ausschließlich verschleierte Verbindungen" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Diese Option verfügt aMule, ausschließlich verschleierte Verbindungen zu " "akzeptieren. Das führt zu weniger Quellen, jedoch ist sämtlicher Verkehr " "verschleiert." #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Jeder" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Niemand" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Wer kann freigegebene Dateien sehen:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Wähle, wer deine freigegebenen Dateien einsehen darf." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP-Filterung" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtere Clients" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Aktiviere die Filterung von Client-IPs, die in der Datei ~/.aMule/ipfilter." "dat definiert sind." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtere Server" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Aktiviere das Filtern von Server-IPs, die in der Datei ~/.aMule/ipfilter.dat " "definiert sind." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Aktualisieren der Liste" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "Aktualisiert die Liste der zu filternden IPs in der ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Jetzt aktualisieren" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "IP-Filter beim Start automatisch aktualisieren" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Filterstufe:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "LAN-IP-Adressen immer filtern" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Paranoides Handhaben nicht-passender IP-Adressen" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Weise Paket zurück, wenn die Client-IP abweicht von der IP, von der das " "Paket empfangen wurde. Mit Vorsicht zu benutzen." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Benutze systemweite ipfilter.dat, wenn verfügbar." #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Erlaube die Benutzung der systemweiten ipfilter-Datei, falls keine lokale " "ipfilter.dat gefunden wird." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Online-Signatur aktivieren" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Aktiviert das Schreiben der Online-Signaturdatei, die von externen " "Programmen verwendet werden kann, um Signaturen o.ä. zu erstellen." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Aktualisierungsintervall (Sekunden):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Ändern des Online-Signatur-Aktualisierungsintervalls (in Sekunden)." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Speichere Online-Signatur-Datei in:" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Hier klicken, um das Verzeichnis mit den Dateien für die Online-Signatur " "auszuwählen." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Eingehende Nachrichten filtern (außer momentanen Chats):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtere alle Nachrichten" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "" "Filtere Nachrichten von Benutzern, die nicht auf deiner Freundesliste stehen" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtere Nachrichten von unbekannten Clients" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "" "Filtere Nachrichten, die folgende Worte enthalten (benutze ',' als Trenner):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "Hier die Worte eingeben, die aMule filtern soll, und um Nachrichten " "abzuweisen, in denen sie vorkommen" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Zeige empfangene Nachrichten im Log an" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Kommentare" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "" "Filtere Komentare, die folgende Worte enthalten (benutze ',' als Trenner):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Automatisch zum Server verbinden ohne Proxy" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Authentifizierung aktivieren" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Aktiviere/Deaktiviere Authentifizierung mit Benutzername/Passwort" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Benutzername:" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Der Benutzername, um sich beim Proxy anzumelden" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Passwort:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Proxy-Verbindungspasswort" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Proxy aktivieren" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Aktiviere/Deaktiviere Proxy-Unterstützung" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Proxy-Typ:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Proxy-Host:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Der Hostname des Proxy" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Proxy-Port:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Der Port des Proxy" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Verbinde zu:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Beim entfernten aMule anmelden" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Benutzername" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Diese Einstellungen speichern" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Aktiviere ausführliche Debug-Protokollierung" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Oeffne diese Datei" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Nachrichtenkategorien:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Wartend..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Füge Importe hinzu" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Versuche Ausgewähltes noch einmal" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Auswahl entfernen" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Ereignisarten" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Statistiken und Clients in der Warteschlange für ausgewählte Datei(en): " "Sitzung / Insgesamt" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Aktive Uploads" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Prozent aller Dateien" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Alle Dateien" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Ausgewählte Dateien" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Nur aktive Uploads" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Clients anzeigen für" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Aktualisieren:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Freigegebene Dateien neu laden" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Senden" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Sendet die angegebene Nachricht." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Schließe diese Chat-Sitzung." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Mit irgendeinem Server und/oder Kad verbinden" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Freigaben" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Ausgeschaltet [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "Byte" msgstr[1] "Bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "Byte/Sek" msgstr[1] "Bytes/Sek" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "Sekunden" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "Minuten" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "Stunden" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Tage" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "alle" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "alle anderen" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Unvollständig" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Angehalten" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Archiv" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Text" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Aktiv" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Verwende Konfigurationsverzeichnis: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Warte auf Ende des Umwandlungsthreads für unfertige Dateien..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Importiere %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Lese Temp-Verzeichnis" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Hole Basis-Informationen aus der Download-Info-Datei" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Erzeuge Zieldatei" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Lade Daten aus der alten Download-Datei (%u von %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Speichere Datenblock in die neue, einzelne Download-Datei (%u von %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Hole Quellen-Download-Datei-Informationen" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Füge Download hinzu und speichere neue Part-Datei" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importiere Part-Dateien" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Status" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Dateiprüfsumme" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Platte: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Bitte wähle einen Ordner, um nach temporären Downloads zu suchen! " "(Unterordner werden mit eingeschlossen!)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "Quelldateien der erfolgreich importierten Downloads löschen?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Quellen entfernen?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "FEHLER: Erstellen der Part-Datei fehlgeschlagen" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Versuche, Sicherung der met-Datei von %s zu laden" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "FEHLER: Konnte part.met-Datei nicht öffnen: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "FEHLER: part.met-Datei hat die Größe 0: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "FEHLER: ungültige part.met-Dateiversion: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "Fehler: %s (%s) ist defekt (falsche Tags: %s), kann Datei nicht laden." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "Fehler: %s (%s) ist defekt (falscher Tagcount), kann Datei nicht öffnen)." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Versuche, Dateiinformation wiederherzustellen..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Unbenannte Datei wird versucht wiederherzustellen - Es wird versucht, sie " "als RecoveredFile.dat zu speichern" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Alle verfügbaren Dateiinformationen wiederhergestellt :D - Versuche, sie zu " "benutzen..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Konnte Dateiinfo nicht wiederherstellen :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Fehler beim Öffnen von %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "WARNUNG: %s könnte defekt sein (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "FEHLER beim Speichern der Part-Datei: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "Eingabe/Ausgabe-Fehler beim Speicher der unfertigen Dateien:" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Konnte die Länge von '%s' nicht ermitteln - benutze %s-Datei." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' hat die Größe 0 - benutze Datei %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Speichern der Datei 'part.met.seeds' für %s fehlgeschlagen" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "%i Einstiegsquelle für Part-Datei %s (%s) gespeichert." msgstr[1] "%i Einstiegsquellen für Part-Datei %s (%s) gespeichert." #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "%i Einstiegsquelle für Part-Datei %s (%s) gespeichert." #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Fehler beim Lesen der Partfile-Einstiegsquellendatei (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "korrumpierter Teil (%d) in %d-teiliger Datei %s gefunden - Dateiergebnishash " "|%s| Dateihash |%s|" msgstr[1] "" "korrumpierter Teil (%d) in %d-teiliger Datei %s gefunden - Dateiergebnishash " "|%s| Dateihash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Vollständigen Teil (%i) in %s gefunden" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Prüfsumme für %s neu erstellt" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" "Unerwarteter Fehler beim Abschließen des Herunterladens von %s. Datei " "pausiert." #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Herunterladen abgeschlossen: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Lösche Datei: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "WARNUNG: Konnte für heruntergeladenen Teil die Prüfsumme nicht berechnen - " "Prüfsummensatz unvollständig für '%s'." #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "FEHLER: Prüfsumme für einen Teil konnte nicht erstellt werden - Prüfsumme " "unvollständig (%s). Dies dürfte eigentlich nie passieren." #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "EOF beim Hashen des %u. heruntergeladenen Teils, mit der Länge %u (max %u), " "für die Part-Datei '%s', mit der Länge %u: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "WARNUNG: Nicht genügend freier Festplattenplatz! Pausiere Datei: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Heruntergeladener Teil %i in Datei '%s' ist defekt" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Defekter Teil %i in %s wiederhergestellt -> Gesparte Bytes: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Reserviere" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Zu wenig Festplattenplatz" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Heruntergeladen" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "FEHLER: Öffnen von Partfile '%s' fehlgeschlagen" #: src/Preferences.cpp:632 msgid "System default" msgstr "Systemvorgabe" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albanisch" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabisch" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturisch" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Baskisch" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgarisch" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Katalanisch" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Chinesisch (vereinfacht)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Chinesisch (traditionell)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Kroatisch" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Tschechisch" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Dänisch" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Holländisch" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Englisch (UK)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estnisch" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finnisch" #: src/Preferences.cpp:648 msgid "French" msgstr "Französisch" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galizisch" #: src/Preferences.cpp:650 msgid "German" msgstr "Deutsch" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Griechisch" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebräisch" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Ungarisch" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italienisch" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italienisch (Schweiz)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japanisch" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Koreanisch" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Litauisch" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norwegisch" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polnisch" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugiesisch" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugiesisch (Brasilianisch)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Rumänisch" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Russisch" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Slowenisch" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Spanisch" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Schwedisch" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Türkisch" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ukrainisch" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Sprache ändern" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "Für aMule sind keine Übersetzungen installiert" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "Keine Sprachen verfügbar" #: src/Preferences.cpp:906 msgid "no options available" msgstr "keine Optionen verfügbar" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Ungültige Kategorie gefunden, überspringe." #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "TCP-Port kann nicht größer als 65532 sein, da der Server-UDP-Port=TCP-Port+3 " "ist" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Standard-Port wird verwendet (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Lösche nicht existierenden freigegebenen Ordner: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Verbindung" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Verzeichnisse" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Server" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Dateien" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Sicherheit" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Aussehen" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filter" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Fernsteuerung" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Onlinesignatur" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Fortgeschritten" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Ereignisse" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Fehlersuche (Debugging)" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "Die folgenden Variablen werden ersetzt:\n" " %PARTFILE - ganzer Pfad zur Datei\n" " %PARTNAME - nur der Dateiname" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Ändere diese Einstellungen nur, wenn du genau\n" "weißt, was du tust, denn andernfalls können\n" "negative Effekte auftreten.\n" "\n" "aMule funktioniert auch hervorragend, ohne\n" "dass diese Einstellungen verändert werden." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" "Verbindung von Einstellung zu Steuerelement mit ID %d und Schlüssel %s " "fehlgeschlagen." #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" "Datentransfer von Einstellung zu Steuerelement mit ID %d und Schlüssel %s " "fehlgeschlagen." #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Der Typ des Proxy, zu dem du verbindest" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" "Datentransfer von Steuerelement zu Einstellung mit ID %d und Schlüssel %s " "fehlgeschlagen." #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule muss neu gestartet werden, um diese Änderungen zu übernehmen:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP-Port geändert.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP-Port geändert.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Port externer Verbindung geändert.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Akzeptanz externer Verbindung geändert.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Schnittstelle der externen Verbindung geändert.\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Protokollverschleierung" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Die Auto-Update-Serverliste ist leer.\n" "'Serverliste beim Programmstart aktualisieren' wird deaktiviert." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Du hast die externen Verbindungen aktiviert, aber kein Passwort angegeben.\n" "Externe Verbindungen können nur aktiviert werden, wenn ein gültiges Passwort " "angegeben wird." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Sprache geändert.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Temp-Verzeichnis geändert.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- ED2k-Netzwerk aktiviert.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Beide Netzwerke, eD2k und Kad, sind deaktiviert.\n" "Mindestens eins davon muss aktiviert sein, um sich verbinden zu können." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad wird nicht starten, solange der UDP-Port deaktiviert ist.\n" "Bitte UDP-Port aktivieren, oder Kad ausschalten." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "aMule MUSS jetzt neu gestartet werden.\n" "Wenn du jetzt nicht neu startest, beklage dich nicht, wenn irgendwas übles " "passiert.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Deine Auto-Update-Serverliste ist leer.\n" "Bitte gib mindestens eine URL zu einer gültigen server.met ein.\n" "Drücke dazu den Knopf \"Liste\" neben diesem Kontrollkästchen." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Temporäre Dateien" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Fertige Dateien" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Online-Signaturen" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Wähle einen Ordner für %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Suche nach einem Videoplayer" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Browser-Wahl" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Ausführbar%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Serverliste bearbeiten" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Hier URL's für server.met-Dateien eintragen.\n" "Nur eine URL pro Zeile!" #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Aktualisierungsverzögerung: %d Sekunde" msgstr[1] "Aktualisierungsverzögerung: %d Sekunden" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Zeit für Durchschnittslinie: %d Minute" msgstr[1] "Zeit für Durchschnittslinie: %d Minuten" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Verbindungsgraphenskala: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Dateipuffergröße: %d Byte" msgstr[1] "Dateipuffergröße: %d Bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Upload-Warteschlangengröße: %d Client" msgstr[1] "Upload-Warteschlangengröße: %d Clients" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Server-Wiederverbindungsintervall: %d Minute" msgstr[1] "Server-Wiederverbindungsintervall: %d Minuten" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Server-Wiederverbindungsintervall: Aus" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "deaktiviert" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Führe Kommando beim '%s' Ereignis aus" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Aktiviere Befehlsausführung im Kern" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Kern-Befehl:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Aktiviere Befehlsausführung in GUI" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "GUI-Befehl:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Die folgenden Variablen werden ersetzt:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "Mindestgröße muss kleiner sein, als die Höchstgröße: Höchstgröße ignoriert." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Suchwarnung" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Hauptkategorie" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Kad-Suche kann nicht ausgeführt werden, wenn Kad nicht läuft" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "eD2k-Suche kann nicht ausgeführt werden, wenn eD2k nicht verbunden ist" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Unerwarteter Fehler bei der Kad-Suche:" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "Datei-ID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Datei" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Herunterladen in Kategorie" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "%s für diese Datei erhalten" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Suche verwandte Dateien (eD2k, lokale Server)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Als bekannte Datei kennzeichnen" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Kopiere eD2k-Verweis in die Zwischenablage" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Abgebrochen" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Neu" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Verbindung zu allen gelisteten verschleierten Servern misslungen. Versuche " "erneut, ohne Verschleierung." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Fehler beim Verbinden zu allen Servern in der Liste. Ein neuer Durchgang " "wird gestartet." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "eD2k-Netzwerk ist in den Einstellungen deaktiviert - verbinde nicht." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "Keine gültigen Server zum Verbinden in der Serverliste gefunden" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Verbunden mit %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Verbindung hergestellt mit %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Schwerer Fehler beim Verbinden. Möglicherweise ist die Internetverbindung " "getrennt" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Verbindung verloren zu %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) scheint tot zu sein." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) scheint voll zu sein." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "" "Automatische Verbindungsherstellung zum Server wird in %d Sekunde wiederholt" msgstr[1] "" "Automatische Verbindungsherstellung zum Server wird in %d Sekunden wiederholt" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Verbindung verloren" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Verbindung zu %s (%s:%i) fehlgeschlagen." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "FEHLER: Ungültiger Socket bei Prüfung auf Zeitüberschreitung" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Verbindungsversuch zu %s (%s:%i): Zeitüberschreitung." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Verspätetes Ergebnis für DNS-Nachschlag erhalten, wird verworfen." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Lade Datei server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Datei server.met nicht gefunden!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Laden der server.met '%s' fehlgeschlagen, unbekanntes Format aufgetreten." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Konnte Datei server.met nicht öffnen!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Server.met unbrauchbar, unzulässige Versionsmarke gefunden: 0x%x, Größe %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i Server in server.met gefunden" msgstr[1] "%i Server in server.met gefunden" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d Server hinzugefügt" msgstr[1] "%d Server hinzugefügt" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Fehler: die 'server.met' Datei ist defekt: " #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "IO-Fehler beim Lesen der 'server.met' Datei: " #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Server nicht hinzugefügt: [%s:%d] Gibt keinen gültigen Port an." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" "Server nicht hinzugefügt: Die IP-Adresse [%s:%d] ist gefiltert oder ungültig." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Server nicht hinzugefügt: Server mit gleicher IP:Port [%s:%d] bereits " "vorhanden." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Server hinzugefügt: Server bei [%s:%d] mit Namen '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Du bist zu einem Server verbunden, den du zu löschen versuchst. Bitte zuerst " "trennen." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Konnte '%s' nicht öffnen" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Speichern der server.met fehlgeschlagen!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Ungültige URL" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Download der Serverliste von %s beendet" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Keine Serverlistenadresse in 'addresses.dat' gefunden. Bitte dort zum " "automatischen Aktualisieren eine gültige Serverlistenadresse eintragen." #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Beginne Download der Serverliste von %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "WARNUNG: ungültige URL für das automatische Aktualisieren der Serverliste " "angegeben: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "Keine gültige server.met Auto-Download URL in addresses.dat" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Konnte Serverliste von %s nicht herunterladen" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Lokaler Server ist gefiltert durch IPFilters, verbinde neu zu einem anderen " "Server!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Servername" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Adresse" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Beschreibung" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Benutzer" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Statisch" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Version" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Du möchtest einen Server löschen, mit dem Du verbunden bist. Bitte trenne " "Dich zuerst. Der Server wurde NICHT gelöscht." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Unbekannter Name)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Wirklich den statischen Server '%s' löschen?" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Server (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Server" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Verbinde mit Server" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Markiere den Server als statisch" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Markiere den Server als nicht statisch" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Markiere die Server als statisch" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Markiere die Server als nicht statisch" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Entferne Server" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Entferne die Server" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Alle Server entfernen" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Kopiere eD2k-Verweise in die Zwischenablage" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Wiederverbinden mit Server" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Wirklich alle Server löschen?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Wirklich den markierten Server löschen?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Wirklich die markierten Server löschen?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "Fehler: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "WARNUNG: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Neue Benutzer-ID ist %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "WARNUNG: Du hast eine Low-ID zugeordnet bekommen!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" "\tDies rührt vermutlich daher, dass Du Dich hinter einem Router oder einer " "Firewall befindest." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tMehr Informationen dazu gibt es hier: http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Unbekannte Serverinfo empfangen! - Zu kurz" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "%d neuen Server empfangen" msgstr[1] "%d neue Server empfangen" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Speichern der Serverliste abgeschlossen." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Server hat letzten Befehl abgelehnt" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Seltsames Paket vom Server empfangen: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Unbearbeiteter Fehler beim Verarbeiten eines Paketes vom Server: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Kann DNS-Auflöse-Thread nicht erstellen, um zu %s zu verbinden" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "Server-IP %s (%s) ist gefiltert. Verbinde nicht." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "verwende Protokollverschleierung." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Verbinde mit·%s·(%s·-·%s:%i)·%s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Konnte DNS-Namen von Server %s nicht auflösen: Kann nicht verbinden!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Server nicht hinzugefügt: Keine IP-Adresse oder Hostname angegeben." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Server nicht hinzugefügt: Ungültiger Server-Port angegeben." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "eD2k-Status:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kademlia-Status:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "Läuft im LAN Modus" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Läuft" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Status:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Verbindungszustand:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Firewalled - bitte TCP-Port %d in Router oder Firewall öffnen." #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "UDP-Verbindungszustand:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Firewalled - bitte UDP-Port %d in Router oder Firewall öffnen." #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Firewalled-Status: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Kein Kumpel notwendig - TCP-Port ist geöffnet." #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Kein Kumpel notwendig - UDP-Port ist geöffnet." #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Kein Kumpel" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Verbinde zu Kumpel" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Verbunden mit Kumpel an %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Indizierte Quellen:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Indizierte Schlüsselwörter:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Indizierte Anmerkungen:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Indizes geladen:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Benutzer im Schnitt:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Dateien im Schnitt:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Läuft nicht" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Füge Datei %s zu freigegebenen Dateien hinzu" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "%i bekannte freigegebene Datei gefunden" msgstr[1] "%i bekannte freigegebene Dateien gefunden" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "%i bekannte Datei gefunden, %i unbekannt" msgstr[1] "%i bekannte Dateien gefunden, %i unbekannt" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "FEHLER: Versuchte %s freizugeben" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Freigegebenes Verzeichnis nicht gefunden, überspringe: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Keine freigebbaren Dateien im Ordner gefunden: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Benutzername" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Download-Geschwindigkeit" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Upload-Geschwindigkeit" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Verfügbare Teile" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "Upload-Status" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Download-Status" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Ursprung" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Lokaler Dateiname" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "Liste der Freigaben" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Anfragen" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Akzeptierte Anfragen" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Übertragene Datenmenge" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Verteilungsfaktor" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Erhaltene Teile" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Vollständige Quellen" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Verzeichnispfad" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Kommentar/Bewertung abgeben" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Kommentar/Bewertung ändern" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Umbenennen" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Füge Dateien aus Sammlung zur Übertragungsliste" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Kopiere Magnet-URL &URI in Zwischenablage" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Kopiere eD2k-Verweis in die Zwischenablage (&Source)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Kopiere eD2k-Verweis in Zwischenablage (Source) (&With Crypt options)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "eD2k-Link in Zwischenablage kopieren (&Hostname)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Kopiere eD2k-Verweis in Zwischenablage (Hostname) (With &Crypt options)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Kopiere eD2k-Verweis in die Zwischenablage (&AICH Info)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Kopiere eD2k-Verweis in die Zwischenablage (&AICH Info)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "" "Du brauchst eine hohe ID, um einen gültigen Quellenverweis zu erstellen" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Freigegebene Dateien (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[PartFile]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Ferndateiname" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Hochgeladene Daten (Sitzung (Gesamt)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Gesamt-Overhead (Pakete): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Dateianfragen-Overhead (Pakete): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Quellenaustausch-Overhead (Pakete): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Server-Overhead (Pakete): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Kad-Overhead (Pakete): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "zusätzlicher Datenverkehr durch Verschlüsselung (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Laufende Uploads: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Wartende Uploads: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Erfolgreiche Upload-Sitzungen insgesamt: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Fehlgeschlagene Upload-Sitzungen insgesamt: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Gesamte Upload-Zeit: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Heruntergeladene Daten (Sitzung (Gesamt)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Gefundene Quellen: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Laufende Downloads (Chunks): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Sitzung UL:DL-Rate (Gesamt): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Durchschnittliche Download-Rate (Sitzung): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Durchschnittliche Upload-Rate (Sitzung): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Max. Download-Rate (Sitzung): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Max. Upload-Rate (Sitzung): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Server-Wiederverbindungen: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Zeit seit erster Übertragung: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Verbunden mit Server seit: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Aktive Verbindungen (geschätzt): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Verbindungslimit erreicht: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Durchschnittliche Verbindungen (geschätzt): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Höchste Verbindungsanzahl (geschätzt): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Clients" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Unbekannt: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Gefiltert: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Gebannt: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Gesamt: %i Bekannt: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Funktionierende Server: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Ausgefallene Server: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Gesamt: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Gelöschte Server: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Gefilterte Server: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Benutzer auf funktionierenden Servern: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Dateien auf funktionierenden Servern: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Benutzer insgesamt: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Dateien insgesamt: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Server-Auslastung: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Anzahl freigegebener Dateien: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Gesamtgröße der freigegebenen Dateien: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Durchschnittliche Dateigröße: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Betriebssystem" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Nicht empfangen" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktive Verbindungen (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Nicht verfügbar" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Niemals" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Befehl '%s' mit pid '%d' wurde mit Status-Code '%d' abgeschlossen." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Führe aus und beende." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Ungültiges IP-Format. Benutze xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Dieser Befehl benötigt ein Argument. Mögliche Argumente sind 'all', ein " "Dateiname oder eine Zahl.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Verarbeite Datei nach Hash:" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Verarbeite Datei nach Namen:" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Dieser Befehl benötigt ein Argument. Mögliche Argumente: ein Datei-Hash\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Keine gültige Nummer\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Keine gültige Prüfsumme (sollte genau 32 Zeichen lang sein)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Gib '%s' ein, um mehr Hilfe zu bekommen.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Downloadgröße: %i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Anfrage ist mit unbekanntem Fehler gescheitert." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Vorgang erfolgreich." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Anfrage mit folgendem Fehler gescheitert: %s." #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "IP-Filterung für Clients ist %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "AUS" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "AN" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "IP-Filterung für Server ist %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Momentane IP-Filterstufe ist %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Bandbreiteneinstellungen: Hoch: %u kB/s, Herunter: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Verbunden mit %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Verbinde" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "firewalled" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Download:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Upload:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Clients in Warteschlange:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Quellen insgesamt:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Anzahl der Suchergebnisse: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Vergleichsfortschritt: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Fortschritt der Suche nicht verfügbar" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Unbekannte Antwort vom Server empfangen, OpCode = %#x" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Zeige kurze Statusinformation." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" "Verbindungszustand, momentane Geschwindigkeit des Hoch-/Herunterladens, usw. " "zeigen\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Zeige vollständigen Statistikbaum." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Wahlweise kann man diesem Befehl eine Zahl zwischen 0-255 als Argument\n" "übergeben, um die Anzahl der angezeigten Einträge für die " "Unterverzeichnisse\n" "der Clientversionen anzugeben. 0 oder leer bedeutet 'unbegrenzt'.\n" "\n" "Beispiel: 'statistics 5' zeigt nur die ersten 5 Versionen für jeden " "Clienttyp.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "aMule beenden." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Herunterfahren des fernbedienten Kerns (amule/amuled):\n" "Dadurch wird auch der Textclient beendet, weil er\n" "ohne laufenden Kern (core) nicht verwendbar ist.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Neu laden des angegebenen Objekts." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Liste freigegebener Dateien neu laden." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "IP-Filtertabelle neu laden." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Aktuelle IP-Filtertabelle neu laden." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "IP-Filtertabelle von URL aktualisieren." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" "Wenn keine URL eingetragen wird, wird die URL aus den Einstellungen benutzt." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Mit Netzwerk verbinden." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Verbindet zu allen in den Voreinstellungen aktivierten Netzwerken.\n" "Wahlweise kann eine Serveradresse nach dem Schema IP:Port angegeben\n" "werden, um nur zu diesem Server zu verbinden. Die IP muss eine dezimale,\n" "punktgetrennte IPv4-Adresse, oder ein auflösbarer DNS-Name sein." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Nur mit eD2k verbinden." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Nur mit Kad verbinden." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Vom Netzwerk trennen." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Dies wird von allen momentan verbundenen Netzwerken trennen.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Nur von eD2k trennen." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Nur von Kad trennen." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Sendet einen eD2k- oder Magnet-Verweis an den Kern." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Der hinzuzufügende eD2k-Verweis kann sein:\n" "*) ein Dateiverweis (ed2k://|file|...), der in die Herunterlade-Schlange " "eingereiht wird\n" "*) ein Server-Verweis (ed2k://|server|...), der zur Server-Liste hinzugefügt " "wird\n" "*) oder ein Server-Listen-Verweis, wobei dann alle Server in der Liste zur\n" "···Server-Liste hinzugefügt werden\n" "\n" "Der Magnet-Verweis muss die eD2k-Prüfsumme(\"Hash\") und die Dateigröße " "beinhalten.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Einstellwert festlegen." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "IP-Filter-Einstellungen festlegen." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Aktiviere IP-Filterung sowohl für Clients als auch für Server." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Deaktiviere IP-Filterung sowohl für Clients als auch für Server." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Ein-/Ausschalten von IP-Filterung für Clients." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Einschalten der IP-Filterung für Clients." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Ausschalten der IP-Filterung für Clients." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Ein-/Ausschalten der IP-Filterung für Server." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Einschalten der IP-Filterung für Server." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Ausschalten der IP-Filterung für Server." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "IP-Filterstufe auswählen." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Gültige Filterlevel liegen im Bereich zwischen 0-255, und die\n" "Standardeinstellung (Ausgangswert) ist 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Bandbreiteneinstellungen festlegen." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "Der Wert für diese Befehle muss in Kilobytes/Sek. angegeben werden.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Upload-Bandbreitenbegrenzung festlegen." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "Der Wert für diese Befehle muss in Kilobytes/Sek. angegeben werden.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Download-Bandbreitenbegrenzung festlegen." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Einstellungswert holen und anzeigen." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "IP-Filter-Einstellungen holen." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Hole IP-Filter-Status für Clients und Server." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Hole IP-Filter-Status nur für Clients." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Hole IP-Filter-Status nur für Server." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "IP-Filterstufe holen." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Bandbreiteneinstellungen holen." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Suche ausführen." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Ein Suchtyp muss angegeben werden durch Auswahl von:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Beispiel: 'search kad Datei' führt eine kad Suche für \"Datei\" aus.\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Globale Suche ausführen." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Lokale Suche ausführen." #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Kad-Suche ausführen." #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Zeige die Ergebnisse der letzten Suche an." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Hole die Ergebnisse der vorhergehenden Suche.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Zeige den Fortschritt einer Suche." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Zeige den Fortschritt einer Suche.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Beginne, eine Datei herunterzuladen." #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Die Nummer einer Datei aus der letzten Suche muss angegeben sein.\n" "Beispiel: 'download 12' beginnt das Herunterladen der Datei Nr. 12 der " "letzten Suche.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Download anhalten." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Download weiterführen." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Download löschen." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Setze Herunterlade-Priorität." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" "Setze die Priorität einer herunterladenden Datei auf niedrig, normal, hoch " "oder Auto.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Setze niedrige Priorität." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Setze normale Priorität." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Setze hohe Priorität." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Setze automatische Priorität." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Warteschlangen/Listen zeigen." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Upload-/Download-Warteschlange, Serverliste, oder Liste freigegebener " "Dateien zeigen.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Upload-Warteschlange zeigen." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Download-Warteschlange zeigen." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Zeige Log." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Serverliste zeigen." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Setze Log zurück." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Veralteter Befehl, bitte '%s' nutzen." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Das ist ein veralteter Befehl und könnte in der Zukunft enfernt werden.\n" "Nutze stattdessen '%s'.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMule Textclient" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Wandle alte AICH-Prüfsummensätze von '%s' um in 64b in '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "WARNUNG: Der Dateiname '%s' ist ungültig und wurde in '%s' umbenannt." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "WARNUNG: Die Datei '%s' gibt es schon, neue Datei in '%s' umbenannt." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Wirklich das Herunterladen aller Dateien in dieser Kategorie abbrechen und " "alle Dateien darin löschen??" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Bestätigung erforderlich" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Es werden nur 99 Kategorien unterstützt." #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Zu viele Kategorien!" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Alle anderen" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Ansichtenfilter wählen" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Kategorie hinzufügen" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Kategorie bearbeiten" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Kategorie entfernen" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Öffnen der Datei '%s' fehlgeschlagen, sie wird aus der Liste freigegebener " "Dateien entfernt." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Prüfsummensatz angefordert für unbekannte Datei '%s'" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Wiederaufnahme des Hochladens der Datei '%s'." #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Aussetzen des Hochladens der Datei '%s'." #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Befehlsausführung fehlgeschlagen: Befehl `%s' aufgrund Ereignis `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Download fertiggestellt" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Der vollständige Pfad zur Datei." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Der Name der Datei ohne den Pfadanteil." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "Die eD2k-Prüfsumme der Datei." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Die Dateigröße in Byte." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Die Gesamtzeit aktiven Herunterladens." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Neue Chat-Sitzung gestartet." #: src/UserEvents.h:85 msgid "Message sender." msgstr "Nachrichtensender." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Kein Speicherplatz mehr vorhanden." #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Festplattenpartition." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Fehler beim Fertigstellen der Datei." #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Verarbeite Datei Nummer %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Du willst Part-Prüfsummen erstellen (nur bei Dateien > 9,5 MiB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Datei existiert nicht!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, der aMule-eD2k-Verweis-Ersteller" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Willkommen!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Eingabeparameter" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Datei für Prüfsummenberechnung" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Dieser Datei optionale URLs hinzufügen" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Hier die Datei zum Erzeugen des eD2k-Verweises eingeben." #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Hier die URL eingeben, die zum eD2k-Verweis hinzugefügt werden soll. Füge am " "Ende einen / ein, damit aLinkCreator den momentanen Dateinamen übernimmt." #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Entferne" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Erstelle Verweis mit Part-Prüfsummen" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Hilft, neue und seltene Dateien schneller zu verteilen auf Kosten einer " "erhöhten Verweisgröße" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4-Dateiprüfsumme" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k-Dateiprüfsumme" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k-Verweis" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Speichern" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "In die Zwischenablage kopieren" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Öffnen..." #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Eine Datei zum Erstellen ihres eD2k-Verweises öffnen" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Kopiere erstellten eD2k-Verweis in die Zwischenablage" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Speichern unter..." #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Speichere erstellten eD2k-Verweis in Datei" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Über aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Datei zum Erstellen des eD2k-Verweises auswählen" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Kann die Zwischenablage nicht öffnen." #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Derzeit nichts zu Kopieren!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Datei zu dem errechneten eD2k-Verweis auswählen" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Konnte Datei nicht öffnen " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Bitte keinen leeren Dateinamen eingeben" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Momentan nichts zu speichern!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, der aMule eD2k-Verweis-Ersteller\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps von http://www.everaldo.com\n" "und http://www.icomania.com\n" "und http://jimmac.musichall.cz/ikony.php3\n" "\n" "Vertrieben unter der GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Prüfsummenberechnung..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator arbeitet gerade für dich" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Berechne MD4-Hash..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Berechne eD2k-Hash..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Abgebrochen !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Fertig in %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Du hast diese URL bereits eingegeben!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Bitte keine leere URL eingeben" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Konnte '%s' nicht öffnen" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i Tag(e) %i Std. %i Min. %i Sek." #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uT %02uStd %02uMin %02uSek" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uStd %02uMin %02uSek" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02uMin %02uSek" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02uSek" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, die aMule-Onlinestatistik" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Höchste Downloadrate seit wxCas läuft" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Höchste Downloadrate während wxCas jemals lief" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "System" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Automatische Aktualisierung beenden" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Speichere Onlinestatistikbild" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Drucke Onlinestatistikbild" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Einstellungen" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Über wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Beginne automatische Aktualisierung" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Automatische Aktualisierung angehalten" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Automatische Aktualisierung begonnen" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Speichere Statistikbild" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMule-Onlinestatistik" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Es gab ein Problem beim Drucken.\n" "Vielleicht ist der aktuelle Drucker nicht richtig eingestellt?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Drucke" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule Online-Signatur-Statistiken\n" "\n" "(c) 2004 ThePolish \n" "\n" "Basierend auf CAS von Pedro de Oliveira \n" "\n" "Vertrieben unter der GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh-oh, aMule läuft nicht..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule läuft" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule läuft, aber nicht verbunden" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule verbindet gerade...." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh-oh, aMule-Status ist unbekannt..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " läuft seit " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr "ist angehalten!" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " ist nicht verbunden!" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " verbindet sich..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " macht irgendetwas Merkwürdiges, bitte überprüfen!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " ist verbunden mit " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "aus" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " ist auf " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " mit " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Gesamtdownload: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Sitzung Download: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Download: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Freigegeben: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " Datei(en), Clients in Warteschlange: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Zeit:" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " auf " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Durchschnittliche Systemlast (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Systemlaufzeit: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Verzeichnis mit der Datei amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Hier das Verzeichnis zur Datei amulesig.dat angeben" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Aktualisierungsintervall in Sekunden" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Erzeuge bei jeder Aktualisierung ein Statistikbild" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Hier das Zielverzeichnis zum Erstellen des Statistikbildes angeben" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Statistikbild periodisch auf einen FTP-Server hochladen" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP-URL" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP-Pfad" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Hier die URL deines FTP-Servers eingeben" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Hier das Zielverzeichnis für das Statistikbild auf dem FTP-Server angeben" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Benutzer" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Hier den Benutzernamen zur Anmeldung auf deinem FTP-Server eingeben" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Hier das Benutzerpasswort zur Anmeldung auf dem FTP-Server eingeben" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "FTP-Aktualisierungsintervall in Minuten" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Bestätigen" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Verzeichnis mit deiner Signaturdatei" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Verzeichnis zum Erzeugen des Statistikbildes" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Lädt Vorlage " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Webserver-HTTP-Port" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Benutze UPnP-Port-Weiterleitung für Webserver-Port" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP-Port" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Benutze gzip-Kompression" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Vollzugriff-Passwort für den Webserver" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Gast-Passwort für den Webserver" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Erlaube Gastzugriff" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Verweigere Gastzugriff" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Lade/Speichere Webserver-Einstellungen von/zu entferntem aMule" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMule-Konfigurationsdateipfad. NICHT DIREKT BENUTZEN!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "PHP-Interpreter deaktivieren (überholt)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Rekompiliere PHP-Seiten bei jeder Anfrage" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule Webserver" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "Webclient-Verbindung akzeptiert.\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "FEHLER: Kann Webclientverbindung nicht akzeptieren.\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Anfrage mit folgendem Fehler gescheitert: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Index-Datei nicht gefunden: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sitzung abgelaufen - fordere Anmeldung\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sitzung ok, angemeldet\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sitzung ok, nicht angemeldet\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Keine Sitzung geöffnet - fordere Anmeldung\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sitzung eröffnet - fordere Anmeldung\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Anfrage verarbeiten [original]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Kein Passwort angegeben, Anmeldung wird nicht erlaubt." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Prüfe Passwort\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Passwort-Prüfsumme ungültig\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Passwort ok\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Falsches Passwort\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Du hast kein Passwort angegeben. Leeres Passwort ist nicht erlaubt.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Fordere Abmeldung\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Anfrage verarbeiten [umgeleitet]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Part-Datei %s (%s) hat keine Einstiegsquellendatei" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Part-Datei %s (%s) hat eine leere Einstiegsquellendatei" #~ msgid "Download status" #~ msgstr "Download-Status" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Aktualisierungsverzögerung: %d Sekunde" #~ msgstr[1] "Aktualisierungsverzögerung: %d Sekunden" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "" #~ "Kommentare und Bewertungen werden im Fernsteuerungs-GUI noch nicht " #~ "unterstützt" #~ msgid "Transferring" #~ msgstr "Übertragen" #~ msgid "QR: ???" #~ msgstr "QR: ???" #~ msgid "QR: %u" #~ msgstr "QR: %u" #~ msgid "Only files currently uploading" #~ msgstr "Nur momentan hochgeladene Dateien" #~ msgid "Queue Rank" #~ msgstr "Warteschlangenposition" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - Suchfortschrittsanzeige" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Beginne, MD4- und AICH-Prüfsummen zu berechnen für Datei %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Beginne, MD4-Prüfsumme zu berechnen für Datei %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Beginne, AICH-Prüfsumme zu berechnen für Datei %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "WARNUNG: Konnte original '%s' nach Erstellen des Backups nicht entfernen" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "WARNUNG: Fehler beim Löschen von %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "" #~ "You cannot connect to a release version from an arbitrary SVN version! " #~ "*sigh* possible crash prevented" #~ msgstr "" #~ "Du kannst nicht von einer beliebigen SVN-Version zu einer Release-Version " #~ "verbinden! *seufz* möglichen Absturz verhindert" #~ msgid "Rating (total):" #~ msgstr "Bewertung (Gesamt):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Versuche, nur komplette Chunks hochzuladen" #~ msgid "Networks window" #~ msgstr "Übersicht der verwendeten Netzwerke" #~ msgid "Searches window" #~ msgstr "Dateisuche in den verbundenen Netzwerken" #~ msgid "Shared files window" #~ msgstr "Übersicht der freigegebenen Dateien" #~ msgid "Messages window" #~ msgstr "Nachrichten, Chat, Freundesliste" #~ msgid "Statistics graph window" #~ msgstr "" #~ "Diverse Statistiken über Up- und Download, Verbindungen, Clients usw." #~ msgid "Preferences settings window" #~ msgstr "Hier können die verschiedenen Einstellungen vorgenommen werden." #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Trayicon verloren, versuche neu zu erstellen ..." #~ msgid "Transfers" #~ msgstr "Übertragungen" #~ msgid "Files transfers window" #~ msgstr "Datentransfer - Zeigt Up- und Downloads, Warteschlangen usw." #~ msgid "Unban" #~ msgstr "Bann entfernen" #~ msgid "Show Uploads" #~ msgstr "Uploads zeigen" #~ msgid "Show Queue" #~ msgstr "Warteschlange anzeigen" #~ msgid "Select View" #~ msgstr "Ansicht auswählen" #~ msgid "Client Software" #~ msgstr "Client-Software" #~ msgid "Waited" #~ msgstr "Wartete" #~ msgid "Upload Time" #~ msgstr "Uploadzeit" #~ msgid "Upload/Download" #~ msgstr "Upload/Download" #~ msgid "Remote Status" #~ msgstr "entfernter Status" #~ msgid "File Priority" #~ msgstr "Dateipriorität" #~ msgid "Score" #~ msgstr "Punkte" #~ msgid "Asked" #~ msgstr "Gefragt" #~ msgid "Last Seen" #~ msgstr "Zuletzt gesehen" #~ msgid "Entered Queue" #~ msgstr "In Warteschlange seit" #~ msgid "Transferred Up" #~ msgstr "Übertragen Up" #~ msgid "Transferred Down" #~ msgstr "Übertragen Down" #~ msgid "Userhash" #~ msgstr "Benutzerprüfsumme" #~ msgid "Encrypted" #~ msgstr "Verschlüsselt" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "%d Flaggenbitmaps geladen." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Uploads/Warteschlange/Clients" #~ msgid "Clients on queue :" #~ msgstr "Clients in der Warteschlange:" #~ msgid "Current Session" #~ msgstr "Laufende Sitzung" #~ msgid "Total" #~ msgstr "Gesamt" #~ msgid "Requested :" #~ msgstr "Nachfragen:" #~ msgid "Create backup for preview" #~ msgstr "Erstelle Sicherheitskopie für Vorschau" #~ msgid "Files Transfers Window" #~ msgstr "Datentransfer - Zeigt Up- und Downloads, Warteschlangen usw." #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Benutzer insgesamt: %s | Dateien insgesamt: %s" #~ msgid "Download size not received, downloading until connection is closed" #~ msgstr "" #~ "Downloadgröße nicht empfangen, lade herunter bis Verbindung beendet wird" #~ msgid "HTTP download thread ended" #~ msgstr "HTTP-Download-Thread beendet." #~ msgid "Host: %s:%i\n" #~ msgstr "Host: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Antwort: %i (Fehler: %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "WARNUNG: Leere Antwort auf Verbindungsstromerstellung" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "FEHLER: Umleitungscode ohne URL erhalten" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country():·Misslungenes Laden von Länderdaten von " #~ msgid "Get IPFilter level." #~ msgstr "IP-Filterstufe holen." #~ msgid "Makes a search." #~ msgstr "Beginnt eine Suche." #~ msgid "Killed!" #~ msgstr "Beendet!" #~ msgid "Using amuleweb in '%s'." #~ msgstr "Benutze amuleweb in '%s'." #~ msgid "Shutting down aMule..." #~ msgstr "Beende aMule ..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Die folgenden Optionen wurden in dieser Veröffentlichung aus " #~ "Sicherheitsgründen geändert:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Aktivierung der Protokollverschleierungsunterstützung für eingehende " #~ "und ausgehende Verbindungen.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Deaktivierung der Aktualisierung der Server-Liste von anderen Servern " #~ "oder Clients.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Für mehr Informationen über die Hintergründe für diese Änderungen,\n" #~ "suche im aMule-Wiki auf http://wiki.amule.org nach \"fake servers\".\n" #~ "Es ist wichtig, dass Du keine gefälschten (\"fake\") Server in Deiner " #~ "Server-Liste hast, damit aMule vernünftig funktioniert." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "Außerdem wurden die Browsereinstellungen auf die Systemvoreinstellung " #~ "zurückgesetzt. Bitte die Browseroptionen neu konfigurieren, wenn nötig.\n" #~ msgid "Fetching status..." #~ msgstr "Hole Status..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "User: E: %s K: %s | Dateien E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Client %s auf IP:Port %s:%d benutzt %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgid "Firewalled" #~ msgstr "Firewalled" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "%d Flaggenbitmap geladen." #~ msgstr[1] "%d Flaggenbitmaps geladen." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "" #~ "Die Datei '%s' ist zu groß für den Esel: erlaubtes Maximum ist 4 GiB." #~ msgid "User:" #~ msgstr "Benutzer:" #~ msgid "System:" #~ msgstr "System:" #~ msgid "No handler for this file type." #~ msgstr "Keine Verarbeitungsmethode für diesen Dateityp." #~ msgid "File was not saved" #~ msgstr "Datei wurde nicht gespeichert" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "" #~ "Verbindung fehlgeschlagen. Verbindung zum angegebenen Host nicht möglich\n" #~ msgid "" #~ "Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ "Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgid "Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr "Copyright (C) 2002 Petar Maymounkov\n" #~ msgid "Message Filter" #~ msgstr "Nachrichtenfilter" #~ msgid "Gui Tweaks" #~ msgstr "GUI-Einstellungen" #~ msgid "Core Tweaks" #~ msgstr "Feinabstimmung" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Tooltip-Verzögerung in Sek." #~ msgid "Show part file number before file name" #~ msgstr "Zeige Part-Datei-Nummer vor Dateinamen" #~ msgid "Skin Support" #~ msgstr "Verkleidungs(\"Skin\")-Unterstützung" #~ msgid "- no skins available -" #~ msgstr "- keine Verkleidungen(\"Skins\") verfügbar -" #~ msgid "Online Signature Directory:" #~ msgstr "Online-Signaturverzeichnis:" #~ msgid "Show messages in log" #~ msgstr "Zeige Nachrichten im Log" #~ msgid "Filtering Options:" #~ msgstr "Filterauswahl:" #~ msgid "UDP port for extended server requests (TCP+3):" #~ msgstr "UDP-Port für erweiterte Serveranfragen (TCP+3):" #~ msgid "Line Capacities" #~ msgstr "Kapazitäten" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Hinweis: Diese Werte werden\n" #~ "nur für die Statistik gebraucht." #~ msgid "Standard client TCP Port:" #~ msgstr "Standard-Client-TCP-Port:" #~ msgid "Extended client UDP Port:" #~ msgstr "Erweiterter Client-UDP-Port:" #~ msgid "Bind Address" #~ msgstr "Bind-Adresse" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "UDP-Port für erweiterte Serveranfragen (TCP+3):4665" #~ msgid "Max Sources per File" #~ msgstr "max. Quellen pro Datei" #~ msgid "Connection limits" #~ msgstr "Verbindungslimits" #~ msgid "Universal Plug and Play" #~ msgstr "Universelles Plug and Play" #~ msgid "Enable UPnP" #~ msgstr "Aktiviere UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "UPnP-TCP-Port:" #~ msgid "Start next paused file when a file completed" #~ msgstr "Bei fertigem Download nächste pausierte Datei fortsetzen" #~ msgid "Check disk space" #~ msgstr "Festplattenplatz überprüfen" #~ msgid "Min disk space:" #~ msgstr "Mindest-Festplattenplatz:" #~ msgid "Incoming" #~ msgstr "Eingehende Dateien:" #~ msgid "Temporary" #~ msgstr "Temporäre Dateien:" #~ msgid "Shared" #~ msgstr "Freigegebene Verzeichnisse" #~ msgid "Select Statistics Colors" #~ msgstr "Farben des Graphen" #~ msgid "Download Queue Files Progress" #~ msgstr "Download-Fortschrittsanzeige" #~ msgid "Show percentage" #~ msgstr "Prozentsatz anzeigen" #~ msgid "Show progressbar " #~ msgstr "Statusbalken anzeigen " #~ msgid "Enable skin support " #~ msgstr "Aktiviere Verkleidungs(\"Skin\")-Unterstützung" #~ msgid "Skin:" #~ msgstr "Verkleidung(\"Skin\"):" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "" #~ "Automatisches Sortieren der Dateien in der Downloadschlange (hohe CPU-" #~ "Last)" #~ msgid "Show Fast eD2k Links Handler" #~ msgstr "Zeige schnelle eD2k-Linkverarbeitung" #~ msgid "Web server port" #~ msgstr "Webserver-Port" #~ msgid "Enable UPnP port forwarding on the web server port" #~ msgstr "Aktiviere UPnP-Port-Weiterleitung zu Webserver-Port" #~ msgid "Web server UPnP TCP port" #~ msgstr "Webserver-UPnP-TCP-Port" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "IP-Adresse der lauschenden Schnittstelle\n" #~ "(leerlassen für beliebig)" #~ msgid "TCP port" #~ msgstr "TCP-Port" #~ msgid "Who can see shared files:" #~ msgstr "Wer kann die freigegebenen Dateien sehen:" #~ msgid "Event types" #~ msgstr "Ereignis-Typen" #~ msgid "ERROR: can not accept web client connection\n" #~ msgstr "FEHLER: Kann Webclient-Verbindung nicht akzeptieren.\n" #~ msgid "" #~ "Your Auto-update server list is empty.\n" #~ "'Auto-update server list at startup will be disabled." #~ msgstr "" #~ "Die Auto-Update-Serverliste ist leer.\n" #~ "'Automatisches Aktualisieren der Serverliste beim Start' wird deaktiviert." #~ msgid "ERROR: Invalid part.met fileversion: %s ==> %s" #~ msgstr "FEHLER: Ungültige part.met-Dateiversion: %s ==> %s" #~ msgid "WARNING: Knownfile list corrupted, contains invalid header." #~ msgstr "" #~ "WARNUNG: Die Liste bekannter Dateien ist beschädigt, enthält ungültigen " #~ "Header." #~ msgid "Makes aMule promt before exiting." #~ msgstr "Sicherheitsabfrage vor dem Beenden." #~ msgid "Bandwith limits" #~ msgstr "Bandbreiteneinstellungen" #~ msgid "This UDP port is used for extended ed2k requests and Kad network" #~ msgstr "" #~ "Dieser UDP-Port wird für erweiterte eD2k-Anfragen und das Kad-Netzwerk " #~ "verwendet." #~ msgid "Show overhead bandwith" #~ msgstr "Zeige Overhead-Bandbreite" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. aktiviert" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICH vertraut jeder Prüfsumme (nicht empfohlen)" #~ msgid "Disk space" #~ msgstr "Festplattenplatz" #~ msgid "Create Backup for preview" #~ msgstr "Erstelle eine Kopie für die Vorschau" #~ msgid "Advanced Settings" #~ msgstr "Erweiterte Einstellungen" #~ msgid "Progressbar Style" #~ msgstr "Statusbalkenstil" #~ msgid "Column Sorting" #~ msgstr "Spaltensortierung" #~ msgid "Misc Gui Tweaks" #~ msgstr "Diverse Oberflächeneinstellungen" #~ msgid "File Options" #~ msgstr "Dateieigenschaften" #~ msgid "Status text" #~ msgstr "Statustext" #~ msgid "Pop-up status text" #~ msgstr "Statustextfenster zeigen" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "portabler P2P-Client, basierend auf eMule\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr "Webseite: http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr "Forum: http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " Kontakt: admin@amule.org (administrative Fragen) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr " Teile von aMule basieren auf \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " Copyright (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "Bei einem Film beispielsweise Laufzeit, Thema, Sprache...\n" #~ "oder informiere andere Benutzer über Täuschungen." #~ msgid "Misc Options" #~ msgstr "Weitere Optionen" #~ msgid "Server Options" #~ msgstr "Serveroptionen" #~ msgid "Display server motd when connected ..." #~ msgstr "Tagesmotto des Servers anzeigen, wenn verbunden..." #~ msgid "eD2k Info" #~ msgstr "eD2k Informationen" #~ msgid "Disable/Enable" #~ msgstr "Deaktivieren/Aktivieren" #~ msgid "Authentication" #~ msgstr "Authentifizierung" #~ msgid "General Settings" #~ msgstr "Allgemeine Einstellungen" #~ msgid "Hard limit" #~ msgstr "Hartes Limit" #~ msgid "Max Connections" #~ msgstr "Maximale Verbindungen" #~ msgid "GUI Tweaks" #~ msgstr "GUI-Einstellungen" #~ msgid "Remote Control" #~ msgstr "Fernbedienung" #~ msgid "Unable to determine selected browser!" #~ msgstr "Kann ausgewählten Browser nicht bestimmen!" #~ msgid "User Defined" #~ msgstr "Benutzerdefiniert" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - Der Linux-Muli" #~ msgid "System Default" #~ msgstr "Systemvoreinstellung" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Hier den Browser auswählen" #~ msgid "Custom Browser:" #~ msgstr "Benutzerdefinierter Browser:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Gebe hier den Namen deines Browsers ein. Um einen individuellen Browser " #~ "zu nehmen, wähle Benutzerdefiniert vom Auswahlmenü darüber." #~ msgid "Please wait... " #~ msgstr "Bitte warten... " #~ msgid "Could not determine the command for running the browser." #~ msgstr "Konnte den Befehl zur Ausführung des Browsers nicht ermitteln." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "EC-Verbindung fehlgeschlagen. Leere Antwort." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "ExternalConn: Zugriff verweigert wegen:" #~ msgid "ExternalConn: Access denied" #~ msgstr "ExternalConn: Zugriff verweigert" #~ msgid "ExternalConn: Bad reply from server. Connection closed." #~ msgstr "ExternalConn: Falsche Antwort vom Server. Verbindung beendet." #~ msgid "The ed2k hash of the file." #~ msgstr "Die eD2k-Prüfsumme der Datei." #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Kopiere eD2k &Link in die Zwischenablage" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "Kopiere eD2k-Verweis in die Zwischenablage (&Source)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "" #~ "Kopiere eD2k-Verweis in Zwischenablage (Source) (&With Crypt options)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "eD2k-Link in Zwischenablage kopieren (&Hostname)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "" #~ "Kopiere eD2k-Verweis in Zwischenablage (Hostname) (With &Crypt options)" #~ msgid "Copy ED2k link to clipboard (&AICH info)" #~ msgstr "Kopiere eD2k-Verweis in die Zwischenablage (&AICH Info)" #~ msgid "Warning" #~ msgstr "Warnung" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "Fehler: Kann nicht auf TCP-Port lauschen." #~ msgid "Error: can not accept web client connection\n" #~ msgstr "Fehler: Kann Webclient-Verbindung nicht akzeptieren.\n" #~ msgid "Webserver HTTP port" #~ msgstr "Webserver-HTTP-Port" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "Benütze UPnP-Port-Weiterleitung zu Webserver-Port" #~ msgid "Full access password for webserver" #~ msgstr "Vollzugriff-Passwort für den Webserver" #~ msgid "Guest password for webserver" #~ msgstr "Gast-Passwort für den Webserver" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "Lade/Speichere Webserver-Einstellungen von/zu entferntem aMule" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "Hier die Datei zum Erzeugen des eD2k-Verweises eingeben." #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "Hier die URL eingeben, die zum eD2k-Vereis hinzugefügt werden soll. Füge " #~ "am Ende einen / ein, damit aLinkCreator den momentanen Dateinamen " #~ "übernimmt." #~ msgid "Ed2k File Hash" #~ msgstr "eD2k-Dateiprüfsumme" #~ msgid "Ed2k link" #~ msgstr "eD2k-Verweis" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "Eine Datei zum Erstellen ihres eD2k-Verweises öffnen" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "Kopiere erstellten eD2k-Verweis in die Zwischenablage" #~ msgid "Save computed ed2k link to file" #~ msgstr "Speichere erstellten eD2k-Verweis in Datei" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "Datei zum Erstellen des eD2k-Verweises auswählen" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "Datei zu dem errechneten eD2k-Verweis auswählen" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, der aMule eD2k-Verweis-Ersteller\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps von http://www.everaldo.com\n" #~ "und http://www.icomania.com\n" #~ "und http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Vertrieben unter der GPL" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, der aMule-eD2k-Verweis-Ersteller" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Kopiere eD2k-Verweis in die Zwischenablage" #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Kopiere eD2k-Verweise in die Zwischenablage" #~ msgid "ED2K: Connecting" #~ msgstr "eD2k: Baue Verbindung auf" #~ msgid "ED2K: Disconnected" #~ msgstr "eD2k: Verbindung getrennt" #~ msgid "Warning: Unable to open skin file '%s' for read" #~ msgstr "Warnung: Öffnen der Verkleidungsdatei '%s' zum Lesen nicht möglich" #~ msgid "ed2k network" #~ msgstr "eD2k-Netzwerk" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "Deine Auto-Update-Serverliste ist leer.\n" #~ "'Automatisches Aktualisieren der Serverliste beim Start' wird deaktiviert." #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "Beide Netzwerke, eD2k und Kad, sind deaktiviert.\n" #~ "Mindestens eins davon muss aktiviert sein, um sich verbinden zu können." #~ msgid "Edit Serverlist" #~ msgstr "Serverliste bearbeiten" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "Fehler: Konnte keine neue externe Verbindung akzeptieren" #~ msgid "ED2K is disabled in preferences." #~ msgstr "eD2k ist in den Einstellungen deaktiviert." #~ msgid "ExternalConn: shutdown requested" #~ msgstr "Externe Verbindungen: Herunterfahren gefordert" #~ msgid "Already connected to ED2K." #~ msgstr "Bereits mit eD2k verbunden." #~ msgid "Connecting to ED2K..." #~ msgstr "Verbinde mit eD2k..." #~ msgid "Disconnected from ED2K." #~ msgstr "Von eD2k getrennt." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "Externe Verbindungen: ungültigen Opcode empfangen: %#x" #~ msgid "ED2K Status:" #~ msgstr "eD2k-Status:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "Durchschnittliche Download-Rate (Sitzung): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "Durchschnittliche Upload-Rate (Sitzung): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "Max. Download-Rate (Sitzung): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "Max. Upload-Rate (Sitzung): %s" #~ msgid "Average filesize: %s" #~ msgstr "Durchschnittliche Dateigröße: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "" #~ "eD2k-Suche kann nicht ausgeführt werden, wenn eD2k nicht verbunden ist" #~ msgid "Error: " #~ msgstr "Fehler: " #~ msgid "Warning: " #~ msgstr "Warnung: " #~ msgid "Search related files (ED2k, local server)" #~ msgstr "Suche verwandte Dateien (eD2k, lokale Server)" #~ msgid "Error" #~ msgstr "Fehler" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "WARNUNG: Du kannst Dich nicht als Quelle für einen eD2k-Verweis " #~ "hinzufügen während Du eine niedrige ID hast (\"LowID\")." #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "Bitte trage deinen bevorzugten Videoplayer in den Einstellungen ein.\n" #~ "Bis dahin wird aMule versuchen, mplayer zu starten, und bei jeder " #~ "Vorschau wird diese Warnung angezeigt werden." #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "Fehler: Konnte part.met-Datei nicht öffnen: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "Fehler: part.met-Datei hat die Größe 0: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "Fehler: Ungültige part.met-Dateiversion: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "Warnung: %s könnte defekt sein (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "" #~ "Unerwarteter Fehler beim Abschließen des Herunterladens von %s. Datei " #~ "pausiert." #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "Warnung: Konnte für heruntergeladenen Teil die Prüfsumme nicht berechnen " #~ "- Prüfsummensatz unvollständig für '%s'." #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "Fehler: Prüfsumme für einen Teil konnte nicht erstellt werden - Prüfsumme " #~ "unvollständig (%s). Dies dürfte eigentlich nie passieren." #~ msgid "Insufficient Diskspace" #~ msgstr "Ungenügender Festplattenplatz" #~ msgid "Warning: known.met cannot be opened." #~ msgstr "Warnung: Datei 'known.met' kann nicht geöffnet werden." #~ msgid "Warning: Knownfile list corrupted, contains invalid header." #~ msgstr "" #~ "Warnung: Die Liste bekannter Dateien ist beschädigt, enthält ungültigen " #~ "Header." #~ msgid "ERROR! Attempted to share %s" #~ msgstr "FEHLER! Versucht, %s freizugeben" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "" #~ "eD2k-Netzwerk ist in den Voreinstellungen deaktiviert - verbinde nicht." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "Keine gültigen Server zum Verbinden in der Serverliste gefunden" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "Fehler: Ungültiger Socket bei Prüfung auf Zeitüberschreitung" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions." #~ msgstr "" #~ "Fehler: Konnte Sicherungsdatei nicht laden.Suche aufhttp://forum.amule." #~ "org nach .part.met Wiederherstellungslösungen." #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "Kann Magnet-Verweis nicht in eD2k umwandeln: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "Ungültiger eD2k-Link! Fehler: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "Bandbreiteneinstellungen: Up: %u kB/s, Down: %u kB/s.\n" #~ msgid "Shutdown aMule." #~ msgstr "aMule beenden." #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "Herunterfahren des fernbedienten Kerns (amule/amuled):\n" #~ "Dadurch wird auch der Textclient beendet, weil der\n" #~ "ohne laufenden Kern (core) nicht verwendbar ist.\n" #~ msgid "Connect to ED2K only." #~ msgstr "Nur mit eD2k verbinden." #~ msgid "Disconnect from ED2K only." #~ msgstr "Nur von eD2k trennen." #~ msgid "Adds an ed2k or magnet link to core." #~ msgstr "Sendet einen eD2k- oder Magnet-Verweis an den Kern." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "Der hinzuzufügende eD2k-Verweis kann sein:\n" #~ "*) ein Dateiverweis (ed2k://|file|...), der in die Herunterlade-Schlange " #~ "eingereiht wird\n" #~ "*) ein Server-Verweis (ed2k://|server|...), der zur Server-Liste " #~ "hinzugefügt wird\n" #~ "*) oder ein Server-Listen-Verweis, wobei dann alle Server in der Liste " #~ "zur\n" #~ "···Server-Liste hinzugefügt werden\n" #~ "\n" #~ "Der Magnet-Verweis muss die eD2k-Prüfsumme(\"Hash\") und die Dateigröße " #~ "beinhalten.\n" #~ msgid "Deprecated command, now '%s'." #~ msgstr "Veralteter Befehl, nun '%s'." #~ msgid "Error: %s (%s) - %s" #~ msgstr "Fehler: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "Warnung: %s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "Fehler: Ungenügender Festplattenplatz" #~ msgid "Error: Partmet not found" #~ msgstr "Fehler: part.met nicht gefunden" #~ msgid "Error: IO error!" #~ msgstr "Fehler: IO-Fehler!" #~ msgid "Error: Failed!" #~ msgstr "Fehler: Versagt!" #~ msgid "ED2K Link: " #~ msgstr "eD2k-Verweis: " #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "" #~ "Hier klicken, um den eD2k-Verweis im Texteingabefeld zur Downloadschlange " #~ "hinzuzufügen. " #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "" #~ "Sucht nach weiteren Ergebnissen in eD2k. Bislang keine Unterstützung für " #~ "Kad." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Bandbreiteneinstellungen" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "Dies ist der Standard-eD2k-Port. Er kann nicht deaktiviert werden." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "" #~ "Dieser UDP-Port wird für erweiterte eD2k-Anfragen und das Kad-Netzwerk " #~ "verwendet." #~ msgid "Hard Limit" #~ msgstr "Hartes Limit" #~ msgid "Connection Limits" #~ msgstr "Verbindungslimits" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Serverliste beim Programmstart aktualisieren" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Serverliste von verbundenem Server beziehen" #~ msgid "Update serverlist when a client connect" #~ msgstr "Serverliste von verbundenem Client beziehen" #~ msgid "Disk Space" #~ msgstr "Festplattenplatz" #~ msgid "Check Disk Space" #~ msgstr "Festplattenplatz überprüfen" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "Wähle dies aus, wenn aMule deinen Festplattenplatz prüfen soll" #~ msgid "Min Disk Space:" #~ msgstr "Mindest-Festplattenplatz:" #~ msgid "Incoming Directory :" #~ msgstr "Eingehende Dateien:" #~ msgid "Temporary Directory :" #~ msgstr "Temporäre Dateien:" #~ msgid "Shared Directories" #~ msgstr "Freigegebene Verzeichnisse" #~ msgid "Create Backup to preview" #~ msgstr "Erstelle eine Kopie für die Vorschau" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Zeige schnelle eD2k-Linkverarbeitung" #~ msgid "Webserver Parameters" #~ msgstr "Webserver-Parameter" #~ msgid "Webserver port" #~ msgstr "Webserver-Port" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "Aktiviere UPnP-Port-Weiterleitung zu Webserver-Port" #~ msgid "Webserver UPnP TCP port" #~ msgstr "Webserver-UPnP-TCP-Port" #~ msgid "Serverlist" #~ msgstr "Serverliste" #~ msgid "Manual Server Add : Name" #~ msgstr "Server manuell hinzufügen: Name" #~ msgid "No One" #~ msgstr "Niemand" #~ msgid "Speed Limits:" #~ msgstr "Geschwindigkeitsbegrenzungen:" #~ msgid "Download Speed: %.1f" #~ msgstr "Download-Geschwindigkeit: %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "Upload-Geschwindigkeit: %.1f" #~ msgid "TCP Port: %d" #~ msgstr "TCP-Port: %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "TCP-Port: Nicht bereit" #~ msgid "UDP Port: %d" #~ msgstr "UDP-Port: %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "UDP-Port: Nicht bereit" #~ msgid "Shared Files: %d" #~ msgstr "Freigegebene Dateien: %d" #~ msgid "Queued Clients: %d" #~ msgstr "Clients in Warteschlange: %d" #~ msgid "Upload Limit" #~ msgstr "Upload-Einstellung" #~ msgid "Download Limit" #~ msgstr "Download-Einstellung" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "Keine Serverlistenadresse in 'addresses.dat' gefunden. Bitte dort zum " #~ "automatischen Aktualisieren eine gültige Serverlistenadresse eintragen." #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "" #~ "Warnung, ungültige URL für das automatische Aktualisieren der Serverliste " #~ "angegeben: %s" #~ msgid "webserver running on pid %d" #~ msgstr "Webserver läuft mit PID %d" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "Du hast \"amuleweb zusammen mit aMule starten\" aktiviert, allerdings " #~ "kann die amuleweb-Programmdatei nicht gestartet werden. Bitte installiere " #~ "das Paket, das amuleweb enthält, oder kompiliere aMule mit --enable-" #~ "webserver neu." #~ msgid "Disconnected from ED2K" #~ msgstr "eD2k getrennt" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "Konnte Freundes-Liste 'emfriends.dat' nicht lesen!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "Konnte Freundes-Liste 'emfriends.dat' nicht schreiben!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "FEHLER: Erstellen der Part-Datei fehlgeschlagen)" #~ msgid "Mb" #~ msgstr "MB" #~ msgid "Can't create web socket thread\n" #~ msgstr "Konnte Websocketthread nicht erstellen\n" #~ msgid "Web Server: Started\n" #~ msgstr "Webserver: gestartet\n" #~ msgid "Not Supported" #~ msgstr "Nicht unterstützt" #~ msgid "" #~ "Filestats for this session: Accepted %d of %d request, %s transferred\n" #~ "Filestats for this session: Accepted %d of %d requests, %s transferred\n" #~ msgstr "" #~ "Dateistatistik für diese Sitzung: %d von %d Anfrage akzeptiert, %s " #~ "übertragen\n" #~ "Dateistatistik für diese Sitzung: %d von %d Anfragen akzeptiert, %s " #~ "übertragen\n" #~ msgid "" #~ "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" #~ "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" #~ msgstr "" #~ "Dateistatistik für alle Sitzungen: %d von %d Anfrage akzeptiert, %s " #~ "übertragen\n" #~ "Dateistatistik für alle Sitzungen: %d von %d Anfragen akzeptiert, %s " #~ "übertragen\n" #~ msgid "" #~ "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| " #~ "FileHash |%s|Found corrupted part (%d) in %d parts file %s - " #~ "FileResultHash |%s| FileHash |%s|" #~ msgstr "" #~ "Fehlerhaften Teil (%d) in %d Part-Datei %s gefunden - FileResultHash |%s| " #~ "FileHash |%s|Fehlerhaften Teil (%d) in %d Part-Datei %s gefunden - " #~ "FileResultHash |%s| FileHash |%s|" #~ msgid "LowID: %u (%.2f%% Total %.2f%% Known)" #~ msgstr "LowID: %u (%.2f%% Gesamt %.2f%% Bekannt)" #~ msgid "SecIdent On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgstr "SecIdent An/Aus: %u (%.2f%%) : %u (%.2f%%)" #~ msgid "Browse wav" #~ msgstr "Suche nach .wav-Datei" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "WAV-Dateien (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "Kein(e) Kommentar(e)" #~ msgid "" #~ "Note: These values are\n" #~ "only used for statistics." #~ msgstr "" #~ "Anmerkung: Diese Werte werden\n" #~ "nur für die Statistik verwendet." #~ msgid "Notifications" #~ msgstr "Benachrichtigungen" #~ msgid "Messages popup" #~ msgstr "Nachrichteneinblendung" #~ msgid "Use sound" #~ msgstr "Mit Ton" #~ msgid "Pop out when :" #~ msgstr "Einblenden, wenn:" #~ msgid "New entry on log" #~ msgstr "Neuer Log-Eintrag" #~ msgid "Starts a new chat session" #~ msgstr "Neue Chat-Sitzung" #~ msgid "A new chat message is received" #~ msgstr "Eine neue Nachricht wurde empfangen" #~ msgid "A download is added or finished" #~ msgstr "Ein Download wurde hinzugefügt oder beendet" #~ msgid "New aMule version detected" #~ msgstr "Neue aMule-Version gefunden" #~ msgid "Urgent OOD, serverconnection lost" #~ msgstr "Dringend: Kein Festplattenplatz mehr, Serververbindung verloren" #~ msgid "Notify by Mail" #~ msgstr "Benachrichtigung per E-Mail" #~ msgid "Send an Email when transfer complete." #~ msgstr "Bei beendetem Download eine E-Mail senden." #~ msgid "SMTP server :" #~ msgstr "SMTP Server:" #~ msgid "Email Address :" #~ msgstr "E-Mail-Adresse:" #~ msgid ":" #~ msgstr ":" #~ msgid "" #~ "The selected locale seems not to be installed on your box\n" #~ "You must generate it to use this language.\n" #~ "A good start on linux systems is the file /etc/locale.gen and the package " #~ "'locales'\n" #~ "Good luck!\n" #~ "(Note: I'll try to set it anyway)" #~ msgstr "" #~ "Die gewählte Locale scheint nicht auf dem System installiert zu sein\n" #~ "Du musst die Sprache generieren(installieren), um sie zu nutzen.\n" #~ "Ein guter Startpunkt auf einem Linuxsystem ist die Datei /etc/locale.gen " #~ "und das Paket 'locales'\n" #~ "Viel Glück!\n" #~ "(Info: Ich werde trotzdem versuchen, sie zu setzen)" #~ msgid "Never show this again" #~ msgstr "Niemals wieder anzeigen" #~ msgid "Enable/Disable" #~ msgstr "Aktivieren/Deaktivieren" #~ msgid "You can't bootstrap an specific ip from remote GUI yet." #~ msgstr "" #~ "Bootstrap über eine bestimmte IP von Fernsteuerungs-GUI noch nicht " #~ "unterstützt." #~ msgid "You can't update server.met from remote GUI yet." #~ msgstr "" #~ "Aktualisierung der server.met über Fernsteuerungs-GUI momentan noch nicht " #~ "unterstützt." #~ msgid "Disconnect from " #~ msgstr "Trennt vom " #~ msgid "current server" #~ msgstr "derzeitigen Server" #~ msgid " and " #~ msgstr " und von " #~ msgid "Disconnect from any server and/or Kad" #~ msgstr "Trenne von allen Servern und/oder Kad" #~ msgid " [" #~ msgstr " [" #~ msgid " | Kad: " #~ msgstr " | Kad: " #~ msgid "TCP Flags" #~ msgstr "TCP-Schalter" #~ msgid "UDP Flags" #~ msgstr "UDP-Schalter" #~ msgid "Copy ED2k link(s) to clipboard" #~ msgstr "Kopiere eD2k-Verweis(e) in die Zwischenablage" #~ msgid "Client requests %u" #~ msgstr "Client-Anfrage %u" #~ msgid "File block %u-%u (%d bytes):" #~ msgstr "Datei-Block %u-%u (%d Bytes):" #~ msgid "Client request is invalid!" #~ msgstr "Client-Anfrage ist ungültig!" #~ msgid "Client request is invalid! %i / %i" #~ msgstr "Client-Anfrage ist ungültig! %i / %i" #~ msgid "Unable to open %s file - using %s file." #~ msgstr "Kann %s-Datei nicht öffnen - benutze %s-Datei." #~ msgid "Warning: known.met does not exist." #~ msgstr "Warnung: Keine Datei 'known.met' vorhanden." #~ msgid "" #~ "CSharedFileList::FindSharedFiles: Removing %s from shared directory list: " #~ "directory not found." #~ msgstr "" #~ "CSharedFileList::FindSharedFiles:·Entferne %s aus " #~ "Freigabeverzeichnisliste:Freigabeverzeichnis nicht gefunden." #~ msgid "Waiting for subprocess termination failed" #~ msgstr "Warten auf Unterprozess-Abbruch fehlgeschlagen" #~ msgid "doesn't work" #~ msgstr "funktioniert nicht" #~ msgid "remote gui" #~ msgstr "entferntes GUI" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "FEHLER: Fehler beim Laden der Sicherungsdatei. Suche in http://forum." #~ "amule.org nach .part.met-Wiederherstellungslösungen." #~ msgid "" #~ "Error: Backup part.met file is 0 size! Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "Fehler: part.met-Sicherungsdatei hat die Größe 0! Suche auf http://forum." #~ "amule.org nach part.met-Wiederherstellungslösungen" #~ msgid "Error: part.met backup file is 0 size: %s ==> %s" #~ msgstr "Fehler: part.met-Sicherungsdatei hat die Größe 0: %s ==> %s" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " Website: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contact: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ " Part of aMule is based on \n" #~ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr "" #~ " 'All-Plattform'-p2p-Client, basierend auf eMule \n" #~ "\n" #~ " Netzseite: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Kontakt: admin@amule.org·(für administrative Anliegen) \n" #~ "Copyright (C) 2003-2008 aMule-Team \n" #~ "\n" #~ " Teile von aMule basieren auf \n" #~ " Kademlia: Peer-to-peer-Routing basierend auf der XOR-Metrik.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "WARNING: You have recieved Low-ID!" #~ msgstr "WARNUNG: Dir wurde eine niedrige ID (LowID) gegeben!" #~ msgid "" #~ "This command requieres an argument. Valid arguments: 'all' or a number.\n" #~ msgstr "" #~ "Dieser Befehl benötigt ein Argument. Gültige Argumente: 'all', oder eine " #~ "Nummer.\n" #~ msgid "This command requieres an argument. Valid arguments: a file hash.\n" #~ msgstr "" #~ "Dieser Befehl benötigt als gültiges Argument eine Dateiprüfsumme (\"Hash" #~ "\").\n" #~ msgid "Deprecated command, now 'Status'." #~ msgstr "Veralteter Befehl, jetzt 'Status'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Status' instead.\n" #~ msgstr "" #~ "Dieser Befehl ist veraltet, und kann demnächst entfernt werden.\n" #~ "Verwende stattdessen 'Status'.\n" #~ msgid "Deprecated command, now 'Set IPFilter'." #~ msgstr "Veralteter Befehl, jetzt 'Set IPFilter'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter' instead.\n" #~ msgstr "" #~ "Dieser Befehl ist veraltet, und kann demnächst entfernt werden.\n" #~ "Verwende stattdessen 'Set IPFilter'.\n" #~ msgid "Deprecated command, now 'Get IPFilter Level'." #~ msgstr "Veralteter Befehl, jetzt 'Get IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get IPFilter Level' instead.\n" #~ msgstr "" #~ "Dieser Befehl ist veraltet, und kann demnächst entfernt werden.\n" #~ "Verwende stattdessen 'Get IPFilter Level'.\n" #~ msgid "Deprecated command, now 'Set IPFilter Level'." #~ msgstr "Veralteter Befehl, jetzt 'Set IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter Level' instead.\n" #~ msgstr "" #~ "Dieser Befehl ist veraltet, und kann demnächst entfernt werden.\n" #~ "Verwende stattdessen 'Set IPFilter Level'.\n" #~ msgid "Deprecated command, now 'Get/Set IPFilter Level'." #~ msgstr "Veralteter Befehl, jetzt 'Get/Set IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get/Set IPFilter Level' instead.\n" #~ msgstr "" #~ "Dieser Befehl ist veraltet, und kann demnächst entfernt werden.\n" #~ "Verwende stattdessen 'Get/Set IPFilter Level'.\n" #~ msgid "Deprecated command, now 'Show Servers'." #~ msgstr "Veralteter Befehl, jetzt 'Show Servers'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Show Servers' instead.\n" #~ msgstr "" #~ "Dieser Befehl ist veraltet, und kann demnächst entfernt werden.\n" #~ "Verwende stattdessen 'Show Servers'.\n" #~ msgid "Deprecated command, now 'Get BwLimits'." #~ msgstr "Veralteter Befehl, jetzt 'Get BwLimits'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get BwLimits' instead.\n" #~ msgstr "" #~ "Dieser Befehl ist veraltet, und kann demnächst entfernt werden.\n" #~ "Verwende stattdessen 'Get BwLimits'.\n" #~ msgid "Deprecated command, now 'Set BwLimit Up'." #~ msgstr "Veralteter Befehl, jetzt 'Set BwLimit Up'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Up' instead.\n" #~ msgstr "" #~ "Dieser Befehl ist veraltet, und kann demnächst entfernt werden.\n" #~ "Verwende stattdessen 'Set BwLimit Up'.\n" #~ msgid "Deprecated command, now 'Set BwLimit Down'." #~ msgstr "Veralteter Befehl, jetzt 'Set BwLimit Down'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Down' instead.\n" #~ msgstr "" #~ "Dieser Befehl ist veraltet, und kann demnächst entfernt werden.\n" #~ "Verwende stattdessen 'Set BwLimit Down'.\n" #~ msgid "Masterhashes of known files have been loaded." #~ msgstr "Hauptprüfsummen bekannter Dateien wurden geladen" #~ msgid "Error while reading Kad contacts - 0 entries" #~ msgstr "Fehler beim Lesen der Kad-Kontakte - 0 Einträge" #~ msgid "Merge attempt" #~ msgstr "Zusammenfügungsversuch" #~ msgid "Recursive merge" #~ msgstr "Rekursives Zusammenfügen" #~ msgid "Sucessful merge!" #~ msgstr "Erfolgreich zusammengefügt!" #~ msgid "No merge possible" #~ msgstr "Zusammenfügen nicht möglich" #~ msgid "Buddy address: " #~ msgstr "Buddy-Adresse: " #~ msgid "Allow usage of system wide ipfilter.dat" #~ msgstr "Erlaube Benutzung der systemweiten ipfilter.dat" #~ msgid "%d" #~ msgstr "%d" #~ msgid " %d" #~ msgstr " %d" #~ msgid ".%d" #~ msgstr ".%d" #~ msgid "Shows the process of a search." #~ msgstr "Zeigt den Fortschritt einer Suche." #~ msgid "Shows the process of a search..\n" #~ msgstr "Zeigt den Fortschritt einer Suche.\n" #~ msgid "Search warning." #~ msgstr "Suchwarnung." #~ msgid "Client Identification:" #~ msgstr "Client-Identifizierung:" #~ msgid "Use Secure Identification" #~ msgstr "Benutze sichere Identifikation" #~ msgid "" #~ "Secure Identification uses a handshake approch to safely identify clients " #~ "for use with the credit system." #~ msgstr "" #~ "Sichere Identifikation benutzt einen Handshake, um andere Clients " #~ "eindeutig zu erkennen. Dies wird für das Creditsystem benötigt." #~ msgid "Sources Dropping" #~ msgstr "Quellenverwurf" #~ msgid "Source Dropping" #~ msgstr "Quellenverwurf" #~ msgid "Drop sources" #~ msgstr "Quellen verwerfen" #~ msgid "Send sources to any other file before dropping (High CPU)" #~ msgstr "" #~ "Quellen vor dem Verwurf auf eine andere Datei übertragen (hohe CPU-Last)" #~ msgid "Sources with no needed file-parts." #~ msgstr "Quellen ohne benötigte Teile" #~ msgid "Full Queue Sources Handling" #~ msgstr "Behandlung von Quellen mit voller Warteschlange" #~ msgid "Enable auto drop Full Queue Sources" #~ msgstr "" #~ "Automatisches Verwerfen von Quellen mit voller Warteschlange aktivieren" #~ msgid "High Queue Rating Sources Handling" #~ msgstr "Behandlung, wenn weit hinten in der Warteschlange" #~ msgid "Enable auto drop High Queue Rating Sources" #~ msgstr "'weit hinten in der Warteschlange' automatisch entfernen" #~ msgid "High Queue Rating value" #~ msgstr "Hinterster Platz in Warteschlange" #~ msgid "(Min 300 / Max 3000)" #~ msgstr "(Min 300 / Max 3000)" #~ msgid "Auto Drop Sources Timer" #~ msgstr "Zeit bis zum automatischen Quellenverwurf" #~ msgid "Timer (in secs)" #~ msgstr "Intervall in Sekunden" #~ msgid "(Min 60 / 3600 Max)" #~ msgstr "(Min 60 / 3600 Max)" #~ msgid "Drop No Needed Sources now" #~ msgstr "Verwerfe unbenötigte Quellen" #~ msgid "Drop Full Queue Sources now" #~ msgstr "Verwerfe Quellen mit voller Warteschlange" #~ msgid "Drop High Queue Rating Sources now" #~ msgstr "Verwerfe Quellen mit hoher Warteposition" #~ msgid "Clean Up Sources now (NNS, FQS && HQRS)" #~ msgstr "Quellen aufräumen (NBQ, QVW && QHW)" amule_2.3.1+git20151120.0023527bc2.orig/po/el.po0000644000175000017500000110315412611472361017066 0ustar morphmorph# Greek translations for aMule. # This file is distributed under the same license as aMule. # Dimitrios Galanakis , 2007. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2008-07-30 01:25-0600\n" "Last-Translator: Dimitris \n" "Language-Team: Greek\n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Προσθήκη φίλου" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Πρέπει να βάλετε σωστή IP και θύρα!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Πληροφορίες" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Ο προσδιορισμένος κατακερματισμός χρήστη δεν είναι έγκυρος!" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "Αποτυχία ανοίγματος %s (%s)" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Δεν μπορείτε να προσθέσετε τον εαυτό σας σαν πηγή για έναν " "σύνδεσμο eD2k ενώ έχετε χαμηλή προτεραιότητα." #: src/amule.cpp:229 #, fuzzy msgid "Now, exiting main app..." msgstr "" "\n" "Όλα μια χαρά, έξοδος %s...\n" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Απέτυχε" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 #, fuzzy msgid "aMule shutdown completed." msgstr "Το κατέβασμα ολοκληρώθηκε" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "Έξοδος επιβεβαίωσης" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "Νέα εξωτερική σύνδεση έγινε δεκτή" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Οι τοπικές ρυθμίσεις άλλαξαν στις προεπιλεγμένες του συστήματος λόγο μιας " "αλλαγής παραμέτρων. Sorry!" #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Πληροφορίες" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Δεν υπάρχουν διακομιστές στην λίστα.\n" "Θέλετε το aMule να κατεβάσει μία νέα λίστα τώρα;" #: src/amule.cpp:581 msgid "Server list download" msgstr "Κατέβασμα της λίστας διακομιστών" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "διακομιστής ιστού τρέχει με αριθμό διεργασίας %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Ζητήσατε να τρέχετε τον διακομιστή ιστού κατά την εκκίνηση, αλλά το " "εκτελέσιμο αρχείο amuleweb δεν βρέθηκε. Παρακαλώ εγκαταστήστε το πακέτο που " "περιέχει τον διακομιστή ιστού του aMule, ή μεταφράστε το aMule " "χρησιμοποιώντας την παράμετρο --enable-webserver" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "ΣΦΑΛΜΑ" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Δεν μπόρεσε να προσδέσει τις θύρες στην προσδιορισμένη διεύθυνση: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "" "Η θύρα %u δεν είναι διαθέσιμη. Θα σας αποδωθεί LOWID (χαμηλή προτεραιότητα)\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Η θύρα %u δεν είναι διαθέσιμη!\n" "\n" "Αυτό σημαίνει ότι θα έχετε LOWID (χαμηλή προτεραιότητα).\n" "\n" "Ελέξτε το δίκτυο σας για να βεβαιωθήτε ότι η θύρα είναι ανοιχτή για είσοδο " "και έξοδο." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Αποτυχία δημιουργίας αρχείου Συνδεδεμένων Υπογραφών" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Αποτυχία δημιουργίας αρχείου Συνδεδεμένων Υπογραφών του aMule" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Οι επιλεγμένες τοπικές ρυθμίσεις δεν φαίνεται να είναι εγκατεστημένες στο " "σύστημά σας. (Σημ. Θα προσπαθήσω να τις θέσω ούτως ή άλλως)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Αυτή είναι η πρώτη φορά που τρέχετε το aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Αυτή η έκδοση είναι δοκιμαστική, και αναβαθμίζεται καθημερινά, και\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "δεν δίνουμε εγγύηση ότι δεν θα χαλάσει κάτι, δεν θα κάψει το σπίτι σας,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "ή δεν θα σκοτώσει το σκύλο σας. Αλλά πρέπει να είναι ασφαλές στη χρήση\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Περισσότερες πληροφορίες, υποστήριξη και νέες εκδόσεις μπορούν να βρεθούν " "στην ιστοσελίδα μας,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "στο www.aMule.org, ή στο κανάλι #aMule του IRC στο irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "" "Παρακαλούμε αναφέρετε σφάλματα του προγράμματος στο http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Ο δικτυακός κατάλογος των ηλεκτρονικών αρχείων υπογραφών που προσδιορίσατε " "είναι ΑΚΥΡΟΣ!\n" "Οι ηλεκτρονικές υπογραφές θα ΑΠΕΝΕΡΓΟΠΟΙΗΘΟΥΝ μέχρι να το φτιάξετε στις " "προτιμήσεις." #: src/amule.cpp:1116 #, fuzzy msgid "Server hostname notified" msgstr "Όνομα διακομιστή:" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Η εκχώρηση χώρου για το αρχείο '%s' απέτυχε: '%s'" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "ΣΦΑΛΜΑ: το αρχείο καταγραφής δεν μπορεί να ανοίξει" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: το αρχείο καταγραφών είναι άδειο. Κάτι δεν πάει καλά." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Το αρχείο καταγραφών επαναφέρθηκε στην αρχική κατάσταση" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Μήνυμα Διακομιστή: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Αποτυχία κατεβάσματος της λίστας κόμβων." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Αποτυχία ανοίγματος του κατεβασμένου αρχείου ελέγχου έκδοσης" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Φθαρμένο αρχείο ελέγχου έκδοσης" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Χρησιμοποιείται μία ξεπερασμένη έκδοση του aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Η παρούσα έκδοση του aMule είναι %i.%i.%i και η τελευταία %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Η τελευταία έκδοση μπορεί να βρεθεί στο http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η έκδοση του aMuled είναι ξεπερασμένη: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Αυτό το αντίγραφο του aMule είναι σύγχρονο. " #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Αποτυχία κατεβάσματος του αρχείου ελέγχου έκδοσης" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Χρήστες: %s | Αρχεία: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Χρήστες: E: %s K: %s | Αρχεία: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Δεν έχουν επιλεχθεί δίκτυα" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "με Χαμηλή Προτεραιότητα" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "με Υψηλή Προτεραιότητα" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Σύνδεση με το %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Διαδικασία σύνδεσης με %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Αποσυνδεδεμένο από το eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Το Kad ξεκίνησε." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Το Kad είναι σταματημένο." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Συνδεδεμένο στο Kad (ΟΚ)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Συνδεδεμένο στο Kad (με προστατευτικό τοίχο)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Αποσυνδεδεμένο από το Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Το δίκτυο Kad δεν μπορεί να χρησιμοποιηθεί αν η θύρα UDP είναι " "απενεργοποιημένη στις προτιμήσεις. Δεν έγινε εκκίνηση." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "" "Το δίκτυο Kad είναι απενεργοποιημένο από τις προτιμήσεις. Δεν έγινε σύνδεση." #: src/amuled.cpp:589 #, fuzzy msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ΣΦΑΛΜΑ: ο δαίμονας του aMule δεν μπορεί να χρησιμοποιηθεί όταν οι εξωτερικές " "συνδέσεις είναι απενεργοποιημένες. Για να ενεργοποιήσετε τις εξωτερικές " "συνδέσεις, χρησιμοποιήστε είτε ένα κανονικό aMule, ξεκινήστε το amuled με " "την παράμετρο --ec-config ή θέστε το κλειδί \"AcceptExternalConnections\" " "στην τιμή 1 στο αρχείο ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "ΣΦΑΛΜΑ: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Αυτό το aMule %s είναι βασισμένο στο eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Τρέχει στο %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Επισκεφτείτε το http://www.amule.org για να δείτε αν υπάρχει νέα έκδοση." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ΜΟΙΡΑΙΟ ΣΦΑΛΜΑ: Αποτυχία δημιουργίας Χρονομέτρου" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Τηλεχειρισμός aMule" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Στιγμιότυπο" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "Πελάτης P2P για όλες τις πλατφόρμες βασισμένος στο eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Ιστοσελίδα: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Συζητήσεις: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "Συχνές Ερωτήσεις: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Επικοινωνία: admin@amule.org (διαδικαστικά θέματα) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Πνευματικά Δικαιώματα (c) 2003-2008 η ομάδα του aMule \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Μέρος του aMule είναι βασισμένο στο \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Δρομολόγηση Peer-to-peer βασισμένη στην μετρική XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Μήνυμα" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Συνδέοντας" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Συνδέεται" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Αποσυνδεδεμένο" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Πίσω από τοίχο προστασίας" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Συνδεδεμένο" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Σε διαδικασία σύνδεσης" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Εκτός" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Ακύρωση" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Σταμάτησε τις τρέχουσες απόπειρες σύνδεσης" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Αποσύνδεση" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Αποσύνδεση από τα συνδεδεμένα δίκτυα" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Σύνδεση" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Σύνδεση στα ενεργοποιημένα δίκτυα" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Πάνω: %.1f(%.1f) | Κάτω: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Πάνω: %.1f | Κάτω: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Συνδεδεμένο)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Αποσυνδεδεμένο)" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "Σίγουρα θέλετε να κλείσετε το aMule;" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Έξοδος επιβεβαίωσης" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- Προεπιλεγμένο -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Ο κατάλογος των θεμάτων '%s' δεν υπάρχει" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Δεν είναι δυνατή η ανάγνωση του αρχείου θέματος '%s' " #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Δίκτυα" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Παράθυρο δικτύων" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Αναζητήσεις" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Παράθυρο αναζητήσεων" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Κατεβασμένα" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "Κατεβαίνει" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Κοινόχρηστα αρχεία" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Παράθυρο κοινόχρηστων αρχείων" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Μηνύματα" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Παράθυρό μηνυμάτων" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Στατιστικές" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Παράθυρο στατιστικών διαγραμμάτων" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Προτιμήσεις" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Παράθυρο ρυθμίσεων" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Εισαγωγή" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Το εργαλείο εισαγωγής ημιτελών αρχείων" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Σχετικά" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Σχετικά/Βοήθεια" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Δίκτυο eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Δίκτυο Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Κανένα δίκτυο" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "Έλεγχος του aMule εξ' αποστασεως" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "Μοιραίο σφάλμα: Αποτυχία δημιουργίας χρονομέτρου" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Σύνδεση σε απομακρυσμένο amule" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "Μοιραίο σφάλμα: Αποτυχία δημιουργίας χρονομέτρου" #: src/amule-remote-gui.cpp:274 #, fuzzy msgid "Going to event loop..." msgstr "Προσπάθεια ανάκτηση πληροφοριών αρχείου..." #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "Συνδέοντας" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Αποτυχία σύνδεσης" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Όλα" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Άγνωστο" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Αποτυχία λήψης των κοινόχρηστων αρχείων του χρήστη '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr "(Πλασματική έκδοση eMule %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr "(Πλασματικό eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Πλασματικό eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (βασισμένο στο eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Παρατσούκλι: %s Ταυτότητα: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Ζητήθηκε: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Στατιστικές αρχείων για αυτή τη συνεδρία: Δεκτό %d από %d αίτηση, %s " "μεταφέρθηκε\n" msgstr[1] "" "Στατιστικές αρχείων για αυτή τη συνεδρία: Δεκτά %d από %d αίτησεις, %s " "μεταφέρθηκαν\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Στατιστικές αρχείων για όλες τις συνεδρίες: Δεκτό %d από %d αίτηση, %s " "μεταφέρθηκε\n" msgstr[1] "" "Στατιστικές αρχείων για όλες τις συνεδρίες: Δεκτά %d από %d αίτησεις, %s " "μεταφέρθηκαν\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Αναζητήθηκε άγνωστο αρχείο" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Φιλτραρίστηκε το μήνυμα από τον '%s' (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Καινούριο μήνυμα από τον '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Ο χρήστης %s (%u) ζήτησε λίστα κοινόχρηστων αρχείων του κατάλογου %s -> " "Απορρίφθηκε" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, fuzzy, c-format msgid "WARNING: %s cannot be opened." msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: το αρχείο known.met δεν μπορεί να ανοιχτεί." #: src/CanceledFileList.cpp:61 #, fuzzy msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: η λίστα των γνωστών αρχείων είναι φθαρμένη, περιέχει άκυρη " "επικεφαλίδα." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "Σφάλμα εισόδου εξόδου κατά την ανάγνωση του αρχείου known.met: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "Σφάλμα κατά το αποθήκευση του αρχείου known.met: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Κατηγορία" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Καινούρια κατηγορία" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Επιλέξτε έναν κατάλογο για τα εισερχόμενα αρχεία" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Πρέπει να προσδιορίσετε ένα όνομα για την κατηγορία!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Πρέπει να προσδιορίσετε μία διαδρομή για την κατηγορία!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Αποτυχία δημιουργίας καταλόγου εισερχομένων για την κατηγορία. Παρακαλώ " "προσδιορίστε μία έγκυρη διαδρομή!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Ξεκίνησε συνεδρία συνομιλίας: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Συνδεδεμένος σε πελάτη ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Συνδέεται σε πελάτη ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Αποτυχία σύνδεσης σε πελάτη/η σύνδεση χάθηκε ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Κλείσιμο καρτέλας" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Κλείσιμο όλων των καρτελών" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Κλείσιμο των άλλων καρτελών" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Προσθήκη στους φίλους" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Φορτώθηκε το αρχείο πιστώσεων, %u πελάτη είναι γνωστός" msgstr[1] "Φορτώθηκε το αρχείο πιστώσεων, %u πελάτες είναι γνωστοί" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] "- Εξέπνευσε η προθεσμία πιστώσεων για %u πελάτη!" msgstr[1] "- Εξέπνευσε η προθεσμία πιστώσεων για %u πελάτες!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Δεν βρέθηκε το αρχείο 'cryptkey.dat' και γι αυτό το δημιουργώ" #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Πληροφορίες πελάτη" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "Κακή ποιότητα σύνδεσης (LowID)" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "Καλή ποιότητα σύνδεσης (HighID)" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Ενεργό" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Υποστηρίζεται" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Δεν υποστηρίζεται" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Απενεργοποιημένο" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Συνδεδεμένο" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Αποσυνδεδεμένο" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Δεν ολοκληρώθηκε" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Κακό παιδί" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Επιβεβαιώθηκε - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Δεν υπάρχει" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "Ο χρήστης %s (%u) ζήτησε τη λίστα με τα κοινόχρηστα αρχεία -> Έγινε δεκτό" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "Ο χρήστης %s (%u) ζήτησε τη λίστα με τα κοινόχρηστα αρχεία -> Απορρίφθηκε" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "Ο χρήστης %s (%u) ζήτησε τη λίστα με τους κοινόχρηστους καταλόγους -> Έγινε " "δεκτό" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "Ο χρήστης %s (%u) ζήτησε τη λίστα με τους κοινόχρηστους καταλόγους -> " "Απορρίφθηκε" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Ο χρήστης %s (%u) ζήτησε λίστα κοινόχρηστων αρχεία του κατάλογου %s -> Έγινε " "δεκτό" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Ο χρήστης %s (%u) ζήτησε λίστα κοινόχρηστων αρχείων του κατάλογου %s -> " "Απορρίφθηκε" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Ο χρήστης %s (%u) μοιράζεται τον κατάλογο %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Ο χρήστης %s (%u) έστειλε κοινόχρηστους καταλόγους χωρίς να ζητηθούν." #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "Ο χρήσης %s (%u) έστειλε λίστα κοινόχρηστων αρχείων για κατάλογο %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" "Ο χρήστης %s (%u) τελείωσε την αποστολή της λίστας κοινόχρηστων αρχείων" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Ο χρήστης %s (%u) έστειλε αχρείαστη λίστα κοινόχρηστων αρχείων" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Ο χρήστης %s (%u) αρνήθηκε πρόσβαση στη λίστα κοινόχρηστψων καταλόγων/αρχείων" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Σχόλια αρχείου" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Όνομα Χρήστη" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Όνομα αρχείου" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Αξιολόγηση" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Σχόλιο" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Κανένα σχόλιο" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u σχόλιο" msgstr[1] "%u σχόλια" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Αυτόματη [Χαμηλή]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Αυτόματη [Κανονική]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Αυτόματη [Υψηλή]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Πολύ χαμηλή" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Χαμηλή" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Κανονική" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Υψηλή" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Πολύ υψηλή" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Επίσημη έκδοση" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Ζητώντας" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Σύνδεση μέσω διακομιστή" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Ουρά γεμάτη" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Εν αναμονή" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Κατεβαίνει" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Λαμβάνοντας το σύνολο των τεμαχίων" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Δεν υπάρχουν χρειαζούμενα κομμάτια" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Δεν μπορεί να γίνει σύνδεση από LowID σε LowID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Υπερβολικά πολλές συνδέσεις" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Σύνδεση μέσω Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Υπερβολικά πολλές συνδέσεις Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Απαγορευμένοι" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Σφάλμα σύνδεσης" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Η απομακρυσμένη ουρά είναι γεμάτη" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Παλιό MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Νέο MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "Συμβατό με eMule" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Τοπικός διακομιστής" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Απομακρυσμένος διακομιστής" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Ανταλλαγή πηγών" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Παθητικό" #: src/DataToText.cpp:133 msgid "Link" msgstr "Σύνδεσμος" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Πηγαίος σπόρος" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Αποτέλεσμα Αναζήτησης" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Ολοκληρώθηκαν" #: src/DataToText.cpp:146 msgid "In progress" msgstr "Σε εξέλιξη" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "ΣΦΑΛΜΑ: Δεν υπάρχει χώρος στο δίσκο" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "ΣΦΑΛΜΑ: Δεν βρέθηκε το Partmet" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ΣΦΑΛΜΑ: σφάλμα εισόδου/εξόδου!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ΣΦΑΛΜΑ: Απέτυχε!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "Εν αναμονή" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Ήδη κατεβαίνει" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Άγνωστος ή κακός τύπος προσωρινού αρχείου." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Μέρος" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Μέγεθος" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Μεταφέρθηκαν" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Ταχύτητα" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Πρόοδος" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Αρ. πηγών" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Προτεραιότητα" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Κατάσταση" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Υπόλοιπος Χρόνος" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Τελευταία φορά που εμφανίστηκε ολοκληρωμένο" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Τελευταία λήψη" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε το συγκεκριμένο αρχείο;" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε τα συγκεκριμένα αρχεία;" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Αντίδραση από %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Αυτόματη" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Σταμάτημα" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Παύση" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Συνέχιση" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "Κ&αθάρισμα των ολοκληρωμένων" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Εναλλαγή κάθε A4AF μέχρι αυτό το αρχείο τώρα" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Εναλλαγή κάθε A4AF μέχρι αυτό το αρχείο (αυτόματα)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Εναλλαγή κάθε A4AF μέχρι κάθε άλλο αρχείο (αυτόματα)" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Εκτεταμένες Προτιμήσεις" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Προεπισκόπιση" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Εμφάνιση &λεπτομερειών για το αρχείο" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Εμφάνιση όλων των σχολίων" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Αντιγραφή μαγνητικής URI στο πρόχειρο" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Αντιγραφή του συνδέσμου eD2k στο πρόχειρο" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Αντιγραφή των συμβουλών στην πρόχειρη μνήμη" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "μη ανάθεση" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Ανάθεση σε κατηγορία" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Άνοιγμα αρχείου" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Δώστε νέο όνομα γι αυτό το αρχείο:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Μετονομασία αρχείου" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Κατεβασμένα (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Για να μην εμφανίζεται αυτή η προειδοποίηση σε κάθε προεπισκόπιση,\n" "θέστε το προτιμητέο πρόγραμμα βίντεο στις ρυθμίσεις (ο mplayer είναι " "προεπιλεγμένος)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Προεπισκόπηση αρχείου" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" "ΣΦΑΛΜΑ: Αποτυχία εκτέλεσης του εξωτερικού προγράμματος εμφάνισης πολυμέσων! " "Εντολή: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "Φόρτωση του αρχείου διακομιστών: %s" #: src/DownloadQueue.cpp:132 #, fuzzy, c-format msgid "Loading PartFile %u of %u" msgstr "Φόρτωση δεδομένων από το παλιό αρχείο κατεβάσματος (%u από %u)" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "ΣΦΑΛΜΑ: Αποτυχία φορτώματος του αντιγράφου ασφαλείας. Ψάξτε στο http://forum." "amule.org για λύσεις ανάκτησης αρχείων .part.met" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Δεν βρέθηκαν ημιτελή αρχεία" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Βρέθηκε %u ημιτελές αρχείο" msgstr[1] "Βρέθηκαν %u ημιτελή αρχεία" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "Το σύστημα αρχείων του προσωρινού καταλόγου δεν μπορεί να διαχειριστεί " "μεγάλα αρχεία." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "Το σύστημα αρχείων του καταλόγου εισερχομένων δεν μπορεί να διαχειριστεί " "μεγάλα αρχεία." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Κατεβάζοντας %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Προσπαθείτε ήδη να κατεβάσετε αυτό το αρχείο '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Το αρχείο '%s' υπάρχει ήδη" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Ήδη προσπαθείτε να κατεβάσετε το αρχείο %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Δεν γίνεται η μετατροπή του μαγνητικού συνδέσμου σε σύνδεσμο eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Άγνωστο πρωτόκολλο του συνδέσμου: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Άκυρος σύνδεσμος eD2k! ΣΦΑΛΜΑ: %s" #: src/ExternalConn.cpp:261 #, fuzzy msgid "Client sent packet after authentication failed." msgstr "Η πιστοποίηση απέτυχε." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Η εξωτερική σύνδεση έκλεισε." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Οι εξωτερικές συνδέσεις απενεργοποιήθηκαν λόγω καινού κωδικού!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Οι εξωτερικές συνδέσεις απενεργοποιήθηκαν στο αρχείο ρυθμίσεων" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Νέα εξωτερική σύνδεση έγινε δεκτή" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "ΣΦΑΛΜΑ: δεν μπόρεσα να αποδεχτώ νέα εξωτερική σύνδεση" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Οι εξωτερικές συνδέσεις απενεργοποιήθηκαν λόγω καινού κωδικού στις " "προτιμήσεις!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Συνδεόμενος πελάτης: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Άγνωστη έκδοση" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Λανθασμένη ταυτότητα έκδοσης EC, ίσως υπάρχει δυαδική ασυμβατότητα. " "Χρησιμοποιήστε πυρήνα και απομακρυσμένο μέρος από το ίδιο στιγμιότυπο." #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Δεν μπορείτε να συνδεθείτε σε μια επίσημη έκδοση από μια αναπτυσσόμενη (SVN) " "έκδοση! *ουφ* αποφευχθεί πιθανό κρέμασμα" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Άκυρη έκδοση πρωτοκόλλου." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Λείπει η ετικέτα με την έκδοση του πρωτοκόλλου." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 #, fuzzy msgid "Authentication failed: wrong password." msgstr "Η πιστοποίηση απέτυχε." #: src/ExternalConn.cpp:512 #, fuzzy msgid "Authentication failed: missing password." msgstr "Η πιστοποίηση απέτυχε." #: src/ExternalConn.cpp:522 #, fuzzy msgid "Invalid request, please authenticate first." msgstr "Άκυρη αίτηση, πρέπει πρώτα να πιστοποιηθήτε." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Η πρόσβαση επικυρώθηκε." #: src/ExternalConn.cpp:535 #, fuzzy, c-format msgid "Sent error message \"%s\" to client." msgstr "Διήθηση μηνυμάτων από άγνωστους πελάτες" #: src/ExternalConn.cpp:538 #, fuzzy, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Απόπειρα μη εξουσιοδοτημένης πρόσβασης. Η σύνδεση έκλεισε." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "Η απομακρυσμένη εντολή ημιτελούς αρχείου απέτυχε: Ο κατακερματισμός αρχείου " "δεν βρέθηκε: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Ο κατακερματισμός αρχείου δεν βρέθηκε: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "Όπα! Σφάλμα επεξεργασίας OpCode!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Ο διακομιστής δεν προστέθηκε" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "Ο διακομιστής δεν βρέθηκε: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "χρειάζεται να οριστεί ο διακομιστής που να διαγραφεί" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "Το eD2k είναι απενεργοποιημένο στις ρυθμίσεις." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Αναζήτηση δια εξέλιξη. Επανάκτηση αποτελεσμάτων σε λίγο!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "" "Η αναζήτηση από τον ιστό από απομακρυσμένο περιβάλλον δεν έχει κανένα νόημα." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Δεν υπάρχουν σημεία για γράφημα." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Ο πελάτης σας δεν έχει ρυθμιστεί με τόση λεπτομέρεια" #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Εξωτερική σύνδεση: ζητήθηκε κλείσιμο" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Ήδη η λειτουργία είναι σε φάση διακοπής" #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Εξωτερική Σύνδεση: προστίθεται ο σύνδεσμος '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Άκυρος σύνδεσμο ή ήδη στην λίστα." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Το αρχείο δεν βρέθηκε." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Άκυρο όνομα αρχείου." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Αποτυχία μετονομασίας αρχείου." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Το Kad έχει απενεργοποιηθεί στις προτιμήσεις." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Ήδη συνδεδεμένο στο eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Συνδέεται στο eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Ήδη συνδεδεμένο στο Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Διαδικασία σύνδεσης στο Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Όλα τα δίκτυα είναι απενεργοποιημένα." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Αποσυνδεδεμένο από το eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Αποσυνδεδεμένο από το Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Εξωτερική σύνδεση: λήφθηκε άκυρος opcode: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Εσφαλμένος κωδικός (λάθος έκδοση πρωτοκόλλου;)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Άγνωστη επέκταση '%s' για την εντολή '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Άγνωστη εντολή '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Αυτή η εντολή δεν μπορεί να έχει όρισμα.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Αυτή η εντολή πρέπει να έχει όρισμα.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Αυτή η εντολή είναι ημιτελής, πρέπει να χρησιμοποιήσετε μία από τις παρακάτω " "επεκτάσεις.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Διαθέσιμες επεκτάσεις:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Διαθέσιμες εντολές:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Όλες οι εντολές δεν διακρίνουν πεζά από κεφαλαία.\n" "Γράψτε '%s ' για να πάρετε λεπτομερείς πληροφορίες πάνω στην " "<εντολή>.\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Κλείσιμο της εφαρμογής." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Εμφάνιση βοήθειας." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Για βοήθεια πάνω σε μία εντολή, γράψτε 'help <εντολή>'.\n" "Για την πλήρη λίστα εντολών γράψτε 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Χρησιμοποιήστε '%s' για την λίστα εντολών\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Συντακτικό λάθος!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Σφάλμα κατά την επεξεργασία της εντολής - δεν έπρεπε να συμβεί ποτέ! " "Παρακαλείστε να αναφέρετε σφάλμα προγράμματος\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Αυτή η εντολή δεν πρέπει να έχει παραμέτρους." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Αυτή η εντολή πρέπει να έχει παράμετρο." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Άκυρο όρισμα." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Αυτή είναι ημιτελής εντολή." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Για περισσότερη βοήθεια, γράψτε '%s'.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Αυτό είναι %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Αυτό είναι %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" " Δημιουργία πελάτη...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Όλα μια χαρά, έξοδος %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Δεν είναι δυνατη η σύνδεση με κενό κωδικό.\n" "Πρέπει να προσδιορίσετε έναν κωδικό είτε στο αρχείο παραμέτρων\n" "είτε στην γραμμή εντολών είτε προσδιορίζοντας κάποιο όταν ζητηθεί.\n" "Έξοδος...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Δείξε αυτό το αρχείο βοήθειας." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "" "Υπολογιστής όπου το aMule τρέχει (προεπιλεγμένος: ο τοπικός υπολογιστής)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Η Θύρα του aMule για Εξωτερική σύνδεση. (προεπιλεγμένη: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Κωδικός εξωτερικής σύνδεσης" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Διάβασε το αρχείο διευθετήσεων" #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Μην στέλνεις μηνύματα στην stdout." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Να είσαι αναλυτικός - δείξε και να μηνύματα αποσφαλμάτωσης" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Θέσε τις τοπικές ρυθμίσεις" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Εγγραφή των παραμέτρων της γραμμής εντολών σε αρχείο." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" "Δημιουργεί ένα αρχείο παραμέτρων βασισμένο στο αρχείο παραμέτρων του aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Τύπωσε την έκδοση του προγράμματος." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Λεπτομέρειες αρχείου" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% ολοκληρώθηκαν" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "Αποτυχία ανάγνωσης του αρχείου της λίστας φίλων 'emfriends.met' " #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "Αποτυχία γραψίματος στο αρχείο της λίστας φίλων 'emfriends.met' " #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Φίλοι" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Εμφάνιση &Λεπτομερειών" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Πρόσθεσε έναν φίλο" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Αφαίρεσε έναν φίλο" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Στείλε &Μήνυμα" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Παρουσίαση αρχείων" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Εγκαθίδρυσε φιλική θυρίδα" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Σίγουρα θέλετε να διαγράψετε τον επιλεγμένο φίλο;" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Σίγουρα θέλετε να διαγράψετε τους επιλεγμένους φίλους;" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Δεν επιτρέπεται να θέσεις μόνο πανω από μία φιλική θυρίδα. \n" " Γι αυτό μόνο μία ανατέθηκε." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Πολλαπλή επιλογή" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Αποστολή μηνύματος στον χρήστη" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Μήνυμα προς αποστολή:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Αφαίρεση από του φίλους" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Αποστολή μηνύματος" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Εναλλαγή σε αυτό το αρχείο" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "QR: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Αίτηση ενός άλλου αρχείου" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Ανεβάσματα σε αναμονή: %s" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "Εν αναμονή" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Ανέβασμα" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "Κανείς" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Όχι" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Ναι" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Μεταφόρτωση..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "Κατάλογος για τα εισερχόμενα" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "Έχει κατεβεί" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "Επανασύνδεση στον διακομιστή" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "Αποτυχία κατεβάσματος της λίστας διακομιστών από το %s" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Αποτυχία κατεβάσματος της λίστας διακομιστών από το %s" #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Φόρτωση των φίλτρων IP 'ipfilter.dat' και 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "Αποτυχία φόρτωσης του αρχείου ipfilter.dat '%s', εκδηλώθηκε άγνωστο σφάλμα." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Αποτυχία φόρτωσης του αρχείου ipfilter.dat '%s', δεν μπόρεσε να ανοίξει το " "αρχείο." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Φορτώθηκε διάστημα IP %u από '%s'." msgstr[1] "Φορτώθηκαν διαστήματα IP %u από '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u παραμορφωμένη γραμμή απορρίφθηκε." msgstr[1] "%u παραμορφωμένες γραμμές απορρίφθηκαν." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Εκκίνηση από\n" "γνωστούς πελάτες" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Κόμβοι (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Άκυρη διεύθυνση ip για εκκινητήρα" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Άκυρη θύρα για εκκινητήρα" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Παρακαλώ συμπληρώστε όλα τα απαιτούμενα πεδία" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "" "Είστε σίγουροι ότι θέλετε να κατεβάσετε ένα καινούριο αρχείο nodes.dat;\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Κάτι τέτοιο θα αφαιρέσει του τρέχοντες κόμβους και θα ξαναξεκινήσει την " "σύνδεση Kademlia" #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Συνέχιση;" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: O κωδικός αναζήτησης είναι πολύ μικρός" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Ο κωδικός αναζήτησης υπάρχει ήδη στη λίστα αναζητήσεων: " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Ανάγνωση %u επαφής Kad" msgstr[1] "Ανάγνωση %u επαφών Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" "Μόνο %d γνωριμία Kad είναι διαθέσιμο. το αρχείο nodes.dat δεν γράφτηκε" msgstr[1] "" "Μόνο %d γνωριμίες Kad είναι διαθέσιμες. το αρχείο nodes.dat δεν γράφτηκε" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Γράψιμο %d επαφής Kad" msgstr[1] "Γράψιμο %d επαφών Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Όνομα αρχείου" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Μέγεθος αρχείου" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Λόγος μοιράσματος" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Ανέβηκε" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Ζητήθηκε:" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Έγινε δεκτό" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Ολοκλήρωση πηγών" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: η λίστα των γνωστών αρχείων είναι φθαρμένη, περιέχει άκυρη " "επικεφαλίδα." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Άγνωστη έκδοση" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "Κατάλογος για τα εισερχόμενα" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Κατακερματισμός" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Ολοκληρώνεται" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Ολοκληρωμένο" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Σταματημένο" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Εσφαλμένο" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Εν αναμονή" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Πρέπει να προσδιορίσετε ένα μη κενό κωδικό." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Άκυρο κωδικό, δεν είναι κατακερματισμός τύπου MD5!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Αποτυχία σύνδεσης" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "Η εξωτερική σύνδεση απέτυχε. Κενή ανταπόκριση." #: src/libs/ec/cpp/RemoteConnect.cpp:258 #, fuzzy msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Εξωτερική Σύνδεση: Κακή ανταπόκριση από τον διακομιστή. Η σύνδεση " "τερματίστηκε." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Επιτυχία! Έγινε σύνδεση με το aMule" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Επιτυχία! Έγινε σύνδεση" #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Εξωτερική Σύνδεση: Η πρόσβαση απορρίφθηκε επειδή" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "Εξωτερική σύνδεση: Η πρόσβαση απορρίφθηκε" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Η αυτόματη ανανέωση ξεκίνησε" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "ΣΦΑΛΜΑ: Δεν μπορώ να ακούσω την θύρα TCP." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "ΣΦΑΛΜΑ:" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ:" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Κλείσιμο" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Αποκοπή" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Αντιγραφή" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Επικόλληση" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Καθαρισμός" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Επιλογή όλων" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Απεριόριστο" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Μενού για το Tray του aMule" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Όρια ταχύτητας:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "Όριο Ανεβάσματος: Κανένα" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "Όριο Ανεβάσματος: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "Όριο Κατεβάσματος: Κανένα" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "Όριο Κατεβάσματος: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Ταχύτητα κατεβάσματος: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Ταχύτητα ανεβάσματος: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Πληροφορίες πελάτη" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Παρατσούκλι: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Δεν επιλέχτηκε παρατσούκλι!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "Ταυτότητα πελάτη:" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Συνδεδεμένο τώρα" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Όνομα διακομιστή:" #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "Διεύθυνση διακομιστή:" #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Δεν είναι συνδεδεμένο" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "Θύρα TCP: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Θύρα TCP: Δεν είναι έτοιμη" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "Θύρα UDP: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "Θύρα UDP: Δεν είναι έτοιμη" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Συνδεδεμένη Υπογραφή: Ενεργοποιημένη" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Συνδεδεμένη Υπογραφή: Απενεργοποιημένη" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Χρόνος λειτουργίας: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Κοινόχρηστα αρχεία: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Πελάτες στην αναμονή: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Συνολικό Κατέβασμα: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Συνολικό Ανέβασμα: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Όριο ανεβάσματος" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Όριο κατεβάσματος" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Κρύψιμο aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Εμφάνιση aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Έξοδος" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "Σύνδεσμος eD2k:" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Εκτέλεση" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Πατήστε εδώ για να προσθέσετε τον σύνδεσμο eD2k στον διαχειριστή κειμένου " "της λίστας αναμονής κατεβασμάτων." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Τα γεγονότα εμφανίζονται εδώ. Για μια πλήρη λίστα γεγονότων, αναφερθείτε στο " "αρχείο καταγραφής στην καρτέλα διακομιστών. " #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Φόρτωμα σε εξέλιξη ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Αριθμός χρηστών στον διακομιστή στον οποίο είστε συνδεδεμένος ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Χρήστες: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Χρήστες συνδεδεμένοι στην τρέχων διακομιστή και μία εκτίμηση του συνολικού " "αριθμού χρηστών." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Πάνω: 0.0 | Κάτω: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Τρέχωντες μέσοι ρυθμοί ανεβάσματος και κατεβάσματος. Όταν ενεργοποιηθεί, οι " "αριθμοί σε αγκύλες δείχνουν την επιβάρυνση λόγω της επικοινωνίας των πελατών." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Εμφανίζει το καθεστώς σύνδεσης καθώς και τις ενεργές μεταφορές. Τα κόκκινα " "βέλη δείχνουν ότι είστε συνδεδεμένοι, τα κίτρινα ότι έχετε χαμηλή ποιότητα " "(LowID, firewalled) και τα πράσινα ότι έχετε υψηλή ποιότητα (HighID, ο " "ιδανικός τύπος σύνδεσης)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Δεν είναι συνδεδεμένο ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Διακομιστές συνδεδεμένοι αυτή τη στιγμή." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Αναζήτηση" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Όνομα:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Τύπος" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Τοπικό" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Καθολικό" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Τεμάχιο Αρχείου" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Εκτεταμένες παράμετροι" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Διήθηση" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Τύπος αρχείου" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Οτιδήποτε" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Αρχεία" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Ήχος" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Είδωλα CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Φωτογραφίες" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Προγράμματα" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Κείμενα" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Βίντεο" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Κατάληξη" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Ελάχιστο μέγεθος" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Μέγιστο αρχείο" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Διαθεσιμότητα" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Φίλτρο:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Αποτελέσματα φιλτραρίσματος" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Αντιστροφή αποτελεσμάτων" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Απόκρυψη γνωστών τύπων" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Εκκίνηση" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Περισσότερα" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" "Αναζητεί περισσότερα αποτελέσματα στο eD2k. Δεν υποστηρίζεται ακόμα από το " "Kad." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Σταμάτημα" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Κατέβασμα" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Επαναφορά πεδίων" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Αποτελέσματα" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Καθάρισμα των ολοκληρωμένων κατεβασμάτων" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Ολοκλήρωση πηγών" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Γενικά" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Πλήρες Όνομα :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "Δεν υπάρχει" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "Αρχείο met:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Κατακερματισμός :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Μέγεθος αρχείου :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Κατάσταση ημιτελούς αρχείου:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Τελευταία φορά που εμφανίστηκε ολόκληρο :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Μεταφορά" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Βρέθηκαν πηγές :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Ενεργές πηγές :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Απαρίθμηση τμημάτων αρχείου:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Διαθέσιμα:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Ρυθμός ροής δεδομένων :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Ενεργός χρόνος κατεβάσματος:" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Μεταφέρθηκαν :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Ολοκληρωμένος όγκος :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Έξυπνη διαχείριση φθοράς (Ε.Δ.Φ.):" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Χάθηκε λόγο φθοράς :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Κέρδος σε μέγεθος λόγω συμπίεσης :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Πακέτα που σώθηκαν από την Ε.Δ.Φ. :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Ονόματα αρχείων" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Ανάληψη ελέγχου" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Καθάρισμα" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Εφαρμογή" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Εντάξει" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" "Αρχείο σχολίων/Αξιολόγησης (το κείμενο θα είναι ορατό σε όλους του χρήστες)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Για ταινίες μπορείτε να πείτε το μέγεθος, το σενάριο, τη γλωσσα ...\\n\\nκαι " "αν είναι ψεύτικη, μπορείτε να το πείτε στους άλλους χρήστες του aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Ποιότητα αρχείου" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Μη αποτιμημένο" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Άκυρο / Φθαρμένο / Πλαστό" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Φτωχή" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Ανεκτή" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Καλή" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Εξαιρετική" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Βαθμολογήστε την αξία του αρχείου ή ενημερώστε τους χρήστες αν το αρχείο " "είναι έγκυρο ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Ανανέωση" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Κατεβαίνει, παρακαλώ περιμένετε ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Άγνωστο μέγεθος" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Απαιτούμενες πληροφορίες" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Διεύθυνση IP :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Θύρα :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Πρόσθετες πληροφορίες" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Όνομα χρήστη :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Τεμάχιο χρήστη :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Προσθήκη" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Ταχύτητα κατεβάσματος" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Τρέχων" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Μέσο τρεξίματος" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Μέσο περιόδου" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Ταχύτητα ανεβάσματος" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Συνδέσεις" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Ενεργά κατεβάσματα" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Ενεργές συνδέσεις (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Ενεργά ανεβάσματα" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Δέντρο στατιστικών" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Όνομα χρήστη:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Τεμάχιο χρήστη:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Λογισμικό πελάτη:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Αριθμός έκδοσης πελάτη:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Διεύθυνση IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "Αριθμός Χρήστη:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "Διεύθυνση διακομιστή:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Όνομα διακομιστή:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Συσκότιση:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Μεταφορές προς τον πελάτη" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Τρέχουσα αίτηση:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Μέσος ρυθμός ανεβάσματος:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Μέσος ρυθμός κατεβάσματος:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Ανέβηκαν (συνεδρία):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Κατέβηκαν (συνεδρία):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Ανέβηκαν (συνολικά):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Κατέβηκαν (συνολικά):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Σκορ" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Τροποποιητής Ανεβοκατεβάσματος:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Ασφαλής ταυτότητα:" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "Εν αναμονή" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Βαθμολογία αναμονής:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Παρατσούκλι" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - το μουλάρι όλων των πλατφόρμων" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" "Αυτό είναι το όνομα που οι άλλοι χρήστες θα βλέπουν όταν είναι συνδεδεμένοι " "με εσάς." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Γλώσσα:" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Ο χρόνος πριν εμφανιστεί το επεξηγηματικό κείμενο." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Αυτό ορίζει την γλώσσα που χρησιμοποιείται στο γραφικό περιβάλλον." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Έλεγχος για νέα έκδοση κατά την εκκίνηση" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Αν ενεργοποιηθεί, το aMule θα ελέγχει αν υπάρχει νέα έκδοση κατά την εκκίνηση" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Εκκίνηση σαν ελαχιστοποιημένο" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Αν ενεργοποιηθεί, το aMule θα ξεκινήσει ελαχιστοποιημένο." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Επιβεβαίωση κατά την έξοδο" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Κάνει το aMule να επιβεβαιώνει πριν την έξοδο." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Ενεργοποιεί την εικόνα της μπάρας" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Αυτό ενεργοποιεί/απενεργοποιεί την εικόνα της μπάρας του συστήματος." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Ελαχιστοποίηση στην μπάρα" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Αν ενεργοποιηθεί το aMule θα ελαχιστοποιηθεί στην μπάρα του συστήματος αντί " "για την μπάρα εφαρμογών" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Χρόνος καθυστέρησης επεξηγήσεων:" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "δεπτερόλεπτα" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Επιλογή περιηγητή ιστοσελίδων" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Εισάγετε το όνομα το περιηγητή ιστολελίδων. Αφήστε αυτό το πεδίο κενό για " "τον προεπιλεγμένο περιηγητή." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Επιλογή" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Αν είναι δυνατόν, άνοιξε τη σελίδα σε καινούρια καρτέλα" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Άνοιξε την ιστοσελίδα σε καινούρια καρτέλα αντί σε καινούριο παράθυρο αν " "αυτό είναι εφικτό" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Πρόγραμμα προβολής βίντεο" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Ευρυζωνικά όρια" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Ανέβασμα" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Ανάθεση θυρίδας" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Θύρες" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Πρότυπη θύρα TCP" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Αυτή είναι η βασική θύρα eD2k και δεν μπορεί να απενεργοποιηθεί." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Θύρα UDP για αιτήσεις εξυπηρετητή (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Εκτεταμένη θύρα UDP (Kad / καθολική αναζήτηση)" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" "Αυτή η θύρα UDP χρησιμοποιήται για εκτεταμένες αιτήσεις eD2k και για το " "δίκτυο Kad" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Ενεργοποίηση UPnP για προώθηση της θύρας του δρομολογητή" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "Θύρα UPnP TCP (Προαιρετική):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Συνέδεσε την τοπική διεύθυνση στην διεύθυνση (κενό για όλες):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Μόνο για προχωρημένους χρήστες: Αν έχετε πολλαπλά δικτυακά περιβάλλοντα, " "εισάγετε την διεύθυνση του περιβάλλοντος με το οποίο το aMule πρέπει να " "συνδεθεί." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Μέγιστος αριθμός πηγών ανά εισερχόμενο αρχείο:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Μέγιστος αριθμός παράλληλων συνδέσεων:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Αυτόματη σύνδεση κατά την εκκίνηση" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Επανασύνδεση σε περίπτωση διακοπής" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Αφαίρεση του νεκρού διακομιστή ύστερα από" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "προσπάθειες" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Αυτόματη ενημέρωση λίστας διακομιστών κατά την εκκίνηση" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Λίστα" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Ενημέρωση της λίστας διακομιστών κατά τη σύνδεση σε διακομιστή" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Ενημέρωση της λίστας διακομιστών κατά τη σύνδεση σε πελάτη" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Χρήση συστήματος προτεραιότητα" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Χρήση έξυπνου ελέγχου LowID κατά τη σύνδεση" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Ασφαλής σύνδεση" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Αυτόματη σύνδεση μόνο με τους διακομιστές της στατικής λίστας" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Υψηλή προτεραιότητα στους διακομιστές που προστέθηκαν με το χέρι" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Έξυπνη διαχείριση φθοράς (Ε.Δ.Φ.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Ενεργοποιήση" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "Προχωρημένη Ε.Δ.Φ. εμπιστεύεται κάθε κατακερματισμό (δεν συνιστάται)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Προσθήκη αρχείων προς κατέβασμα κατά τη διάρκεια παύσης" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Προσθήκη αρχείων προς κατέβασμα με αυτόματη προτεραιότητα" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Προσπάθησε να κατεβάσεις πρώτα τα αρχικά και τελικά κομμάτια" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Εκκίνηση του επόμενου σταματημένου αρχείου όταν ένα αρχείο ολοκληρωθεί" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Από την ίδια κατηγορία" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Δέσμευση χώρου στο δίσκο για καινούρια αρχεία" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Δεσμεύει χώρο στο δίσκο για καινούρια αρχεία και έτσι μειώνει τον " "κατακερματισμό" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Σταμάτημα του κατεβάσματος όταν ο ελεύθερος δίσκος φτάσει τα" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Επιλέξτε αυτό αν θέλετε το aMule να ελέγξει τον χώρο στον δίσκο σας" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Γράψτε εδώ των ελάχιστο επιθυμητό χώρο στον δίσκο." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Αποθήκευση 10 πηγών σε σπάνια αρχεία (<20 πηγές)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Ανεβασμένα" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Προσθήκη νέων κοινόχρηστων αρχείων με αυτόματη προτεραιότητα" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Κατάλογος για τα εισερχόμενα" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Κατάλογος για τα προσωρινά αρχεία" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Κοινόχρηστα αρχεία" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" "(Δεξί κλικ στην εικόνα του καταλόγου για να γίνουν κοινόχρηστοι οι " "υποκατάλογοι)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Κάνε τα κρυφά αρχεία κοινόχρηστα" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Γραφικές Παραστάσεις" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Χρόνος καθυστέρηση ενημέρωσης : 5 δευτερόλεπτα" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Χρόνος μέσου γραφήματος: 100 λεπτά" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Κλίμακα διαγράμματος συνδέσεων: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Κλιματα του γραφήματος εισερχομένων:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Κλιμακα του γραφήματος εξερχομένων" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Χρώματα:" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Υπόβαθρο" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Πλέγμα" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Κατέβασμα του τρέχοντος" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Μέσο τρέξιμο κατεβάσματος" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Μέσο συνεδρίας κατεβάσματος" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Ανέβασμα του τρέχοντος" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Μέσο τρέξιμο ανεβάσματος" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Μέσο συνεδρίας ανεβάσματος" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Ενεργές συνδέσεις" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Εικόνα για την μπάρα ταχείας πρόσβασης του Systray" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Σύνδεσμοι-Kad παρόντες" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Σύνδεσμοι-Kad τρέχοντες" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Σύνδεσμοι-Kad συνεδρία" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Επέλεξε" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Δέντρο" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Αριθμός των εμφανιζόμενων εκδόσεων πελάτη (0=απεριόριστος)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! Προειδοποίηση !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Μέγιστος αρ. νέων συνδέσεων /5 δευτερόλεπτα" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Χώρος προσωρινής αποθήκευσης αρχείου: 240000 bytes" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Λίστα αναμονής ανεβάσματος: 5000 πελάτες" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Διάστημα ανανέωσης της σύνδεσης σε διακομιστή: Απενεργοποίηση" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Θέμα:" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Εμφάνιση \"Γρήγορου διαχειριστή συνδέσμων eD2k\" σε όλα τα παράθυρα." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Εμφάνιση εκτεταμένων πληροφοριών στην καρτέλα κατηγοριών" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Εμφάνιση των ταχυτήτων μεταφοράς στον τίτλο" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Εμφάνιση των ταχυτήτων μεταφοράς στον τίτλο" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Πριν απο το όνομα της εφαρμογής" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Μετά το όνομα της εφαρμογής" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Εμφάνιση επιβάρυνσης στο εύρος ζώνης" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Κατακόρυφος προσανατολισμός της γραμμής εντολών" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Ουρά εισερχομένων αρχείων" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Εμφάνιση ποσοστού προόδου" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Εμφάνιση μπάρας προόδου" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Επίπεδη" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Στρογγυλή" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Αυτόματη ταξινόμηση αρχείων (υψηλή απαίτηση σε υπολογική ισχύη)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "Το aMule θα ταξινομήσει τις στήλες τις λίστας κατεβασμάτων αυτόματα." #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Παράμετροι εξωτερικών συνδέσεων" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Να γίνονται αποδεκτές οι εξωτερικές συνδέσεις" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "Η διεύθυνση του εισακούοντος περιβάλλοντος:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Εισάγετε μία έγκυρη διεύθυνση με φόρμα a.b.c.d για σύνδεση με το περιβάλλον " "EC. Άδειο πεδίου ή 0.0.0.0 συμβολίζει όλα τα περιβάλλοντα." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "Θύρα TCP:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Ενεργοποίηση της προώθησης της θύρας UPnP στην θύρα EC" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Κωδικός" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Παράμετροι διακομιστή ιστού" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Έναρξη του εξυπηρετητή ιστού κατά την εκκίνηση" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Πρότυπη σελίδα" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Κωδικός πλήρων δικαιωμάτων" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Ενεργοποίηση χρήστη μειωμένων δικαιωμάτων" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Κωδικός μειωμένων δικαιωμάτων" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" "Ενεργοποίηση της προώθησης της θύρας του εξηπηρετητή ιστού στη θύρα UPnP" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Θύρα UPnP TCP του εξυπηρετητή (Προαιρετική)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Χρόνος ανανέωσης σελίδας (σε δευτερόλεπτα)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Ενεργοποίηση συμπίεσης Gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "Εντάξει" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Κλικ εδώ για εφαρμογή των αλλαγών που έγιναν στις προτιμήσεις." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Επαναφορά κάθε αλλαγής που έγινε στις προτιμήσεις." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Τίτλος:" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Σχόλιο:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Κατάλογος εισερχομένων :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Αλλαγή προτεραιότητας για τα νέα προσδιορισμένα αρχεία :" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "Να μην αλλάξει" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Επιλογή χρώματος για τη συγκεκριμένη κατηγορία (τρέχουσα επιλογή) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Καθαρισμός" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Πατήστε αυτό το κουμπί για το καθάρισμα του αρχείου καταγραφής." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" "Πατήστε αυτό το αρχείο για να ανανεώσετε την λίστα διακομιστών από την " "URL ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Λίστα διακομιστών" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Εισάγετε την url ενός αρχείου server.met και πατήστε το κουμπί στα αριστερά " "για να ανανεώσετε τη λίστα με τους γνωστούς διακομιστές" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Προσθήκη διακομιστή: Όνομα" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Γράψτε το όνομα του νέου διακομιστή εδώ" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "Διεύθυνση:Θύρα" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Γράψτε την IP του διακομιστή εδώ, σε μορφή x.x.x.x" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Γράψτε την θύρα του διακομιστή εδώ." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "" "Βάλτε τον διακομιστή με το χέρι (γεμίστε πρώτα τα πεδία στα αριστερά) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Αρχείο καταγραφής aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Πληροφορίες διακομιστή" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Πληροφορίες ED2K" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Πληροφορίες Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" "Πατήστε το κουμπί για να ανανεώσετε την λίστα των κόμβων από την URL ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Κόμβοι (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Βάλτε εδώ την url ενός αρχείου nodes.dat και πατήστε το κουμπί στα αριστερά " "για να ανανεώσετε την λίστα των γνωστών κόμβων." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Στατιστικές κόμβων" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Εκκινητήρας" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Καινούριος κόμβος" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Θύρα:" #: src/muuli_wdr.cpp:2763 #, fuzzy msgid "Bootstrap from known clients" msgstr "" "Εκκίνηση από\n" "γνωστούς πελάτες" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Αποσυνδεδεμένο Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Χρήση Ασφαλούς Ταυτοποίησης χρήστη" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Ενδείκνυται να ενεργοποιήσετε αυτήν την προτίμηση. Δεν θα λάβετε πίστωση αν " "το SUI δεν είναι ενεργοποιημένο." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Συσκότιση πρωτοκόλλου" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Υποστήριξη συσκότισης πρωτοκόλλου" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Αυτή η επιλογή ενεργοποίησε την συσκότιση πρωτοκόλλου και κάνει το aMule να " "δέχεται συσκοτισμένες συνδέσεις από άλλους πελάτες" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Χρήση συσκότισης για εξωτερικές συνδέσεις" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Αυτή η επιλογή κάνει το aMule να χρησιμοποιεί συσκότιση πρωτοκόλλου όταν " "συνδέεται σε άλλους πελάτες/διακομιστές." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Να γίνονται δεκτές μόνο συσκοτισμένες συνδέσεις" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Αυτή η επιλογή κάνει το aMule να δέχεται μόνο συσκοτισμένες συνδέσεις. Θα " "υπάρχουν λιγότερες πηγές αλλά όλη η κυκλοφορία θα είναι συσκοτισμένη" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Οι πάντες" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Κανείς" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Ποίος μπορεί να δεί τα κοινόχρηστα αρχεία μου:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" "Επιλέξτε ποίος μπορεί να ζητήσει να δει τη λίστα με τα κοινόχρηστα αρχεία " "σας." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Φίλτρο IP" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Φιλτράρισμα πελατών" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Ενεργοποίηση φίλτρου του IP των πελατών όπως ορίζεται στο ~/.aMule/ipfilter." "dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Φιλτράρισμα διακομιστών" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Ενεργοποίηση φίλτρου του IP των διακομιστών όπως ορίζεται στο ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Επαναφόρτωση λίστας" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "Επαναφόρτωση για φιλτράρισμα της λίστας των IP από το ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Ανανέωσε τώρα" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Αυτόματη ανανέωση του ipfilter κατά την εκκίνηση" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Επίπεδο φιλτραρίσματος:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Πάντα φίλτραρε τις IP του τοπικού δικτύου" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Παρανοϊκή διαχείριση των αταίριαστων διευθύνσεων IP" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Απορρίπτει τα πακέτα αν η IP του πελάτη είναι διαφορετική από την IP από την " "οποία ελήφθη το πακέτο. Χρήση με προσοχή." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Χρήση του ipfilter.dat όλου του συστήματος αν αυτό υπάρχει" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Αν δεν βρεθεί τοπικό ipfilter.dat, να γίνει επιτρεπτή η χρήση του αρχείου " "ipfilter (φίλτρο διευθύνσεων) όλου του συστήματος." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Ενεργοποίηση συνδεδεμένων υπογραφών" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Ενεργοποίηση γραψίματος του αρχείου συστήματος, το οποίο μπορεί να " "χρησιμοποιηθεί από εξωτερικές εφαρμογές για τη δημιουργία υπογραφών κτλ." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Συχνότητα ανανέωσης (δευτερόλεπτα):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" "Αλλαγή της συχνότητας (σε δευτερόλεπτα) για την ενημέρωση Συνδεδεμένων " "υπογραφών." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Αποθύκευση του αρχείου συνδεδεμένων υπογραφών σε:" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Κλικ εδώ για την επιλογή του καταλόγου που περιέχει τα αρχεία Συνδεδεμένων " "Υπογραφών." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Φιλτράρισμα εισερχομένων μηνυμάτων (εκτός από την τρέχουσα συνομιλία):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Διήθηση όλων των μηνυμάτων" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Διήθηση των μηνυμάτων από μέλη εκτός της λίστας φίλων" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Διήθηση μηνυμάτων από άγνωστους πελάτες" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Διήθηση των μηνυμάτων που περιέχουν (χρήση ',' ως διαχωριστικού):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "προσθήκη σε αυτό το σημείο των λέξεων που το aMule πρέπει να φιλτράρει και " "μπλοκάρισμα μηνυμάτων που το περιέχουν" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Εμφάνιση των ληφθέντων μηνυμάτων στο αρχείο καταγραφής" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Σχόλια" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Φιλτράρισμα σχολίων που περιέχουν (χρησιμοποίηση ',' ως διαχωριστή):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Αυτόματη σύνδεση χωρίς μεσολαβητή" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Ενεργοποίηση πιστοποίησης" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Ενεργοποίηση/Απενεργοποίηση πιστοποίησης ονόματος χρήστη/κωδικού" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Όνομα χρήστη:" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Το όνομα χρήστη για τη σύνδεση με τον μεσολαβητή" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Κωδικός:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Ο κωδικός που χρειάζεται για τη σύνδεση με τον μεσολαβητή" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Ενεργοποίηση διακομιστή μεσολάβησης" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Ενεργοποίηση/Απενεργοποίηση υποστήριξης διακομιστή μεσολάβησης" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Τύπος διαμεσολάβησης" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Διεύθυνση διακομιστή μεσολάβησης:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Όνομα του διακομιστή μεσολάβησης" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Θύρα διακομιστή μεσολάβησης:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Η θύρα διακομιστή μεσολάβησης" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Σύνδεση με:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Σύνδεση σε απομακρυσμένο amule" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Όνομα χρήστη" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Απομνημόνευση αυτών των ρυθμίσεων" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Ενεργοποίηση λεπτομερούς καταγραφής για έλεγχο σφαλμάτων" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Άνοιγμα αρχείου" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Κατηγορίες μηνυμάτων:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Αναμονή..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Προσθήκη εισακτέων" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Επαναπροσπάθεια των επιλεγμένων" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Αφαίρεση των επιλεγμένων" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Τύποι συμβάντων" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Ενεργά ανεβάσματα :" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Κρύψιμο των κοινόχρηστων αρχείων " #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Επιλογή φίλτρου εμφάνισης" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Ενεργά ανεβάσματα" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Δείξε τους πελάτες" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Επαναφόρτωση λίστας" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Επαναφόρτωση των κοινόχρηστων αρχείων" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Αποστολή" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Αποστολή του προσδιορισμένου μηνύματος." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Κλείσιμο της συνομιλίας." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Σύνδεση σε κάθε διακομιστή ή/και Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Κοινόχρηστα αρχεία" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Απενεργοποιημένο [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/δευτερόλεπτο" msgstr[1] "bytes/δευτερόλεπτο" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "δευτερόλεπτα" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "λεπτά" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "ώρες" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Μέρες" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "όλα" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "όλα τα άλλα" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Ημιτελές" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Σταματημένο" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Βίντεο" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Αρχείο" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Κείμενο " #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Ενεργό" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Εισαγωγή %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Ανάγνωση του προσωρινού καταλόγου" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "" "Ανάκτηση στοιχειωδών πληροφοριών από το αρχείο πληροφοριών κατεβάσματος" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Δημιουργία αρχείου προορισμού" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Φόρτωση δεδομένων από το παλιό αρχείο κατεβάσματος (%u από %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" "Αποθήκευση του τεμαχίου δεδομένων σε ένα καινούριο μοναδικό αρχείο " "κατεβάσματος (%u από %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Διαδικασία ανάκτησης πηγαίων πληροφοριών αρχείου κατεβασμάτων" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Προσθήκη κατεβάσματος και αποθήκευση του καινούριου ημιτελούς αρχείου" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Εισαγωγή ημιτελών αρχείων" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Κατάσταση" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Αρχείο κατακερματισμού" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Δίσκος: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Παρακαλώ διαλέξτε έναν κατάλογο για αναζήτηση προσωρινών κατεβασμάτων! (θα " "συμπεριληφθούν και οι υποκατάλογοι)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Θέλετε να σβηστούν τα πηγαία αρχεία των επιτυχών εισαγόμενων κατεβασμάτων;" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Αφαίρεση πηγών;" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "ΣΦΑΛΜΑ: Αποτυχία δημιουργίας ημιτελούς αρχείου" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Προσπάθεια φόρτωσης του αντιγράφου ασφαλείας του αρχείου met από το %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "ΣΦΑΛΜΑ: Αποτυχία ανοίγματος του αρχείου part.met: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "ΣΦΑΛΜΑ: το αρχείο έχει μηδενικό μέγεθος: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "ΣΦΑΛΜΑ: άκυρη έκδοση του αρχείου part.met: %s ==> %s" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Σφάλμα: το %s (%s) είναι φθαρμένο (εσφαλμένη απαρίθμηση ετικέτας), δεν είναι " "δυνατή η φόρτωση του αρχείου." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "ΣΦΑΛΜΑ: %s (%s) είναι φθαρμένο (εσφαλμένη απαρρίθμηση ετικέτας), δεν είναι " "δύνατο το φόρτωμα του αρχείου." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Προσπάθεια ανάκτηση πληροφοριών αρχείου..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Ανάκτηση αρχείου χωρίς όνομα - θα γίνει προσπάθεια ανάκτησης ως " "RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Ανακτήθηκαν όλες οι διαθέσιμες πληροφορίες αρχείου :D - Τώρα προσπαθώ να τις " "χρησιμοποιήσω..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Δεν είναι δυνατή η ανάκτηση πληροφοριών αρχείου :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Αποτυχία ανοίγματος %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: %s μπορεί να είναι φθαρμένο (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "ΣΦΑΛΜΑ κατά το αποθήκευση του ημιτελούς αρχείου: %s (%s ==> %s)" #: src/PartFile.cpp:904 #, fuzzy msgid "IO failure while saving partfile: " msgstr "ΣΦΑΛΜΑ κατά το αποθήκευση του ημιτελούς αρχείου: %s (%s ==> %s)" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Δεν μπορεί να βρεθεί το μέγεθος του '%s' - χρήση του αρχείου %s." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' έχει μηδενικό μέγεθος για κάποιο λόγο - χρήση του αρχείου %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Απέτυχε να σωθεί το αρχείο part.met.seeds για %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Σώθηκε %i σπόρος πηγής για το ημιτελές αρχείο: %s (%s) " msgstr[1] "Σώθηκαν %i σπόροι πηγής για το ημιτελές αρχείο: %s (%s) " #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Σώθηκε %i σπόρος πηγής για το ημιτελές αρχείο: %s (%s) " #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" "Σφάλμα κατά την ανάγνωση του αρχείου σπόρου του ημιτελούς αρχείου (%s - %s): " "%s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Βρέθηκε φθαρμένο τμήμα (%d) στο %d μέρος αρχείου %s - FileResultHash |%s| " "FileHash |%s|" msgstr[1] "" "Βρέθηκε φθαρμένο τμήμα (%d) στα %d μέρη αρχείου %s - FileResultHash |%s| " "FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Βρέθηκε ολοκληρωμένο μέρος (%i) στο %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Τελείωσε ο επανακατακερματισμός του %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Απρόσμενο σφάλμα κατά την ολοκλήρωση του %s. Το αρχεί έπαψε" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Ολοκλήρωση του κατεβάσματος: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Σβήσιμο αρχείου: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Δεν είναι δυνατός ο κατακερματισμός του κατεβασμένου τμήματος " "- του σύνολο κατακερματισμού για το '%s' είναι ημιτελές" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "ΣΦΑΛΜΑ: Δεν είναι δυνατός ο κατακερματισμός του κατεβασμένου τμήματος - του " "σύνολο κατακερματισμού για το '%s' είναι ημιτελές. Αυτό δεν πρέπει να " "ξανασυμβεί ποτέ" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Μη αρκετός χώρος στο δίσκο! Παύση αρχείου: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Το κατεβασμένο τμήμα υπ. αρ. %i είναι φθαρμένο στο αρχείο: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Ανακτήθηκε φθαρμένο τεμάχιο %i για το %s -> Σωσμένα bytes: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Κατανέμει" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Ανεπαρκής χώρος στο δίσκο" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Έχει κατεβεί" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "ΣΦΑΛΜΑ: Αποτυχία ανοίγματος του ημιτελούς αρχείου '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Εργοστασιακές ρυθμίσεις" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Αλβανικά" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Αραβικά" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "Εσθονικά" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Βάσκικα" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Βουλγάρικα" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Καταλανικά" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Κινέζικα (απλοποιημένα)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Κινέζικα (Παραδοσιακά)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Κροατικά" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Τσέχικα" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Δανέζικα" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Ολλανδικά" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Αγγλικά (Ην. Βασίλειο)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Εσθονικά" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Φιλανδικά" #: src/Preferences.cpp:648 msgid "French" msgstr "Γαλλικά" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Γαλικιακά" #: src/Preferences.cpp:650 msgid "German" msgstr "Γερμανικά" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Ελληνικά" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Εβραϊκά" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Ουγγαρέζικα" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Ιταλικά" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Ιταλικά (Ελβετίας)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Γιαπωνέζικα" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Κορεάτικα" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Λιθουανικά" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Νορβηγικά" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Πολωνέζικα" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Πορτογαλλικά" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Πορτογαλλικά (Βραζιλίας)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Αλβανικά" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Ρωσικά" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Σλοβένικα" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Ισπανικά" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Σουηδικά" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Τούρκικα" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Γλώσσα" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Δεν είναι διαθέσιμο" #: src/Preferences.cpp:906 msgid "no options available" msgstr "Δεν υπάρχουν επιλογές" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "Η θύρα TCP δεν μπορεί να είναι μεγαλύτερη από 65532, διότι η θύρα UDP του " "διακομιστή είναι TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Θα χρησιμοποιηθεί η στάνταρ θύρα (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Σύνδεση" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Κατάλογοι Αρχείων" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Διακομιστές" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Αρχεία" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Ασφάλεια" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Περιβάλλον" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Διακομιστής διαμεσολάβησης" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Φίλτρα" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Τηλεχειρισμός" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Διασυνδεδεμένη υπογραφή" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Προχωρημένες" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Γεγονότα" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Έλεγχος σφαλμάτων προγράμματος" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Μην αλλάξετε αυτές τις ρυθμίσεις εκτός και αν ξέρετε τι κάνετε,\n" "διαφορετικά μπορείτε εύκολα να κάνετε τη ζωή σας δύσκολη. \n" "\n" "Το aMule θα τρέχει μια χαρά χωρίς την αλλαγή καμιάς από αυτές\n" " τις ρυθμίσεις." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Ο τύπος του διακομιστή μεσολάβησης στον οποίον συνδέεστε" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "το aMule πρέπει να επανεκινηθεί για να ενεργοποιηθούν αυτές οι αλλαγές: \n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- Άλλαξε η θύρα TCP.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- Άλλαξε η θύρα UDP.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Η εξωτερική σύνδεση έκλεισε." #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Νέα εξωτερική σύνδεση έγινε δεκτή" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Η εξωτερική σύνδεση έκλεισε." #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Συσκότιση πρωτοκόλλου" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Η λίστα αυτόματης ενημέρωσης διακομιστών είναι κενή.\n" "Θα απενεργοποιηθεί η επιλογή: 'Αυτόματη ενημέρωση λίστας διακομιστών κατά " "την εκκίνηση' " #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Έχετε ενεργοποιήσει τις εξωτερικές συνδέσεις αλλά δεν έχετε προσδιορίσει " "κωδικό.\n" "Οι εξωτερικές συνδέσεις δεν μπορούν να ενεργοποιηθούν μέχρι να προσδιοριστεί " "ένας έγκυρος κωδικός." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Η γλώσσα άλλαξε.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Ο προσωρινός κατάλογος άλλαξε.\n" #: src/PrefsUnifiedDlg.cpp:657 #, fuzzy msgid "- ED2K network enabled.\n" msgstr "Όλα τα δίκτυα είναι απενεργοποιημένα." #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Και το δίκτυο eD2k και το Kad είναι απενεργοποιημένα.\n" "Δεν θα μπορέσετε να συνδεθείτε μέχρι να ενεργοποιήσετε τουλάχιστον ένα από " "αυτα." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Το δίκτυο Kad δεν θα ξεκινήσει αν η θύρα UDP είναι απενεργοποιημένη.\n" "Ενεργοποιήστε τη θύρα UDP ή απενεργοποιήστε το Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Τώρα πρέπει να επανεκινήσετε το aMule.\n" "Διαφορετικά μην διαμαρτυρηθείτε αν συμβεί κάτι κακό.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Η λίστα με τους διακομιστές αυτόματης ανανέωσης είναι κενή.\n" "Παρακαλώ βάλτε τουλάχιστον μία URL που να δείχνει σε ένα έγκυρο αρχείο sever." "met.\n" "Πατήστε το διπλανό κουμπί \"List\" για να βάλετε ένα URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Προσωρινά αρχεία" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Εισερχόμενα αρχεία" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Συνδεδεμένες υπογραφές" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Επιλέξτε κατάλογο για %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Αναζήτηση του προγράμματος για βίντεο" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Επιλογή περιηγητή" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Εκτελέσιμο%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Επεξεργασία λίστας διακομιστών" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Βάλτε εδώ τη διεύθυνση για το κατέβασμα των αρχείων server.met. \n" "Μία διεύθυνση σε κάθε γραμμή" #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Καθυστέρηση ενημέρωσης: %d δευτερόλεπτο" msgstr[1] "Καθυστέρηση ενημέρωσης: %d δευτερόλεπτα" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Χρόνος για μέσο γράφημα: %d λεπτό" msgstr[1] "Χρόνος για μέσο γράφημα: %d λεπτά" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Κλίμακα γραφήματος συνδέσεων: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Μέγεθος χώρου ενδιάμεσης αποθήκευση αρχείου: %d byte" msgstr[1] "Μέγεθος χώρου ενδιάμεσης αποθήκευση αρχείου: %d byteς" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Μέγεθος λίστας αναμονής αποστελλόμενων: %d πελάτης" msgstr[1] "Μέγεθος λίστας αναμονής ανεβασμάτων: %d πελάτες" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Διάστημα ανανέωσης της σύνδεσης σε διακομιστή: %d λεπτό" msgstr[1] "Διάστημα ανανέωσης της σύνδεσης σε διακομιστή: %d λεπτά" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Διάστημα ανανέωσης της σύνδεσης σε διακομιστή: Απενεργοποιημένο" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "απενεργοποίηση" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "Εκτέλεση εντολής κατά το γεγονός `%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Ενεργοποίηση εκτέλεσης εντολών στον πυρήνα" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Εντολή πυρήνα:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Ενεργοποίηση εκτέλεσης εντολών στο γραφικό περιβάλλον" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Εντολή γραφικού περιβάλλοντος:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Οι παρακάτω μεταβλητές θα αντικατασταθούν:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "Το ελάχιστο μέγεθος πρέπει να είναι μικρότερο από το μέγιστο. Το μέγιστο " "μέγεθος θα αγνοηθεί." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Προειδοποίηση ψαξίματος" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Κύρια" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Δεν μπορεί να γίνει αναζήτηση στο Kad αν το Kad δεν τρέχει" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" "Δεν μπορεί να γίνει αναζήτηση στο eD2k αν το eD2k δεν είναι συνδεδεμένο" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Άγνωστο σφάλμα όταν έγινε απόπειρα αναζήτησης στο Kad:" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "Τιμή ταυτότητας αρχείου" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Αρχείο" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Κατέβασμα στην κατηγορία" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Προσθήκη προαιρετικών URL για αυτό το αρχείο" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Αναζήτηση παρόμοιων αρχείων (στο eD2k, τοπικός διακομιστής)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Σημείωση αρχείου ως γνωστού" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Αντιγραφή του συνδέσμου eD2k στο πρόχειρο" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "Ακύρωση" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Αποτυχία σύνδεσης σε όλους τους συσκοτισμένους διακομιστές της λίστας. Θα " "γίνει άλλο ένα πέρασμα χωρίς συσκότιση." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Αποτυχία σύνδεσης σε όλους τους διακομιστές της λίστας. Θα γίνει άλλο ένα " "πέρασμα." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Το δίκτυο eD2k απενεργοποιήθηκε στις επιλογές, δεν γίνεται σύνδεση." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" "Δεν βρέθηκαν διακομιστές στη λίστα διακομιστών στους οποίους να γίνει σύνδεση" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Συνδεδεμένο στο %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Σύνδεση παγιώθηκε στο: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Μοιραίο Σφάλμα κατά την προσπάθεια σύνδεσης. Η σύνδεση στο διαδίκτυο πρέπει " "να έχει διακοπεί" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Χάθηκε η σύνδεση στο %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) φαίνεται να είναι νεκρό" #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) φαίνεται να είναι γεμάτο." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "" "Αυτόματη σύνδεση στον διακομιστή θα επιχειρηθεί ξανά σε %d δευτερόλεπτο" msgstr[1] "" "Αυτόματη σύνδεση στον διακομιστή θα επιχειρηθεί ξανά σε %d δευτερόλεπτα" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Η σύνδεση χάθηκε" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Η σύνδεση στο %s (%s:%i) απέτυχε." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "ΣΦΑΛΜΑ: Η υποδοχή κρίθηκε άκυρη κατά τον έλεγχο χρονικού ορίου" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Η απόπειρα σύνδεσης στο %s (%s:%i) ξεπέρασε το χρονικό όριο." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Φόρτωση του αρχείου διακομιστών: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Το αρχείο server.met δεν βρέθηκε" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Σφάλμα φόρτωσης του αρχείου server.met '%s', βρέθηκε άγνωστη μορφοποίηση." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Αποτυχία ανοίγματος του αρχείου server.met" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Το αρχείο server.met είναι φθαρμένο. βρέθηκε λανθασμένη ετικέτα έκδοσης: 0x%" "x, μεγεθος %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "βρέθηκε %i διακομιστής στο server.met" msgstr[1] "βρέθηκαν %i διακομιστές στο server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "Προστέθηκε %d διακομιστής" msgstr[1] "Προστέθηκαν %d διακομιστές" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "Σφάλμα εισόδου εξόδου κατά την ανάγνωση του αρχείου known.met: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Ο διακομιστής δεν προστέθηκε: [%s:%d] δεν προσδιορίζει έγκυρη θύρα." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" "Ο διακομιστής δεν προστέθηκε: Το IP του [%s:%d] είναι φιλτραρισμένο ή άκυρο." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Ο διακομιστής δεν προστέθηκε: Διακομιστής με το ίδιο IP:Θύρα [%s:%d] βρέθηκε " "στη λίστα." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Ο διακομιστής προστέθηκε: Διακομιστής στην [%s:%d] με όνομα '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Είστε συνδεδεμένος στον διακομιστή που προσπαθείτε να σβήσετε. Παρακαλείστε " "να αποσυνδεθείτε πρώτα" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Αποτυχημένη προσπάθεια να ανοίξει '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Αποτυχία σβησίματος του server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Άκυρη URL" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "Ολοκληρώθηκε το κατέβασμα της λίστας διακομιστών από το %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Δεν βρέθηκε πεδίο λίστας διακομιστών το αρχείο 'addresses.dat'. Παρακαλώ " "επικολλήστε μια έγκυρη λίστα σε αυτό το αρχείο έτσι ώστε να ενημερωθεί " "αυτόματα η λίστα διακομιστών σας" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Εκκίνηση του κατεβάσματος της λίστας διακομιστών από το %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Προσδιορίστηκε άκυρη διεύθυνση για την αυτόματη ενημέρωση των " "διακομιστών: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "Άκυρη URL αυτόματο κατέβασμα του server.met στο αρχείο addresses.dat" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Αποτυχία κατεβάσματος της λίστας διακομιστών από το %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Ο τοπικός διακομιστής είναι φιλτραρισμένος από τα IPFilters, επανασύνδεση σε " "διαφορετικό διακομιστή!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Όνομα διακομιστή" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Διεύθυνση" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Θύρα" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Περιγραφή" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ηχοβόλιση πακέτων" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Χρήστες" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Στατικό" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Έκδοση" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Είστε συνδεδεμένος σε έναν διακομιστή που προσπαθείτε να διαγράψετε. " "Παρακαλώ αποσυνδεθείτε πρώτα. Ο διακομιστής δεν διαγράφηκε." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Άγνωστο όνομα)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Είστε σίγουρος/η ότι θέλετε να διαγράψετε τον στατικό διακομιστή %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Διακομιστές (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Διακομιστής" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Σύνδεση σε διακομιστή" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Σημαδέψτε τον διακομιστή σαν στατικό" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Σημαδέψτε τον διακομιστή σαν μη στατικό" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Σημαδέψτε τους διακομιστές σαν στατικούς" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Σημαδέψτε τους διακομιστές σαν μη στατικούς" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Αφαίρεση διακομιστή" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Αφαίρεση διακομιστών" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Διαγράψτε όλους τους διακομιστές" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Αντιγραφή συνδέσμων eD2k στο πρόχειρο" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Επανασύνδεση στον διακομιστή" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Σίγουρα να σβηστούν όλοι οι διακομιστές;" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε τον επιλεγμένο διακομιστή;" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε τους επιλεγμένους διακομιστές;" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "ΣΦΑΛΜΑ: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Ο νέος πελάτης είναι %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: σας έχει αποδοθεί Low-ID!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" "\tΠιθανότατα αυτό είναι γιατί είστε πίσω από τοίχο προστασίας ή δρομολογητή." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "" "\tΓια περισσότερες πληροφορίες, παρακαλώ αναφερθείτε στο http://wiki.amule." "org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Ελήφθησαν άγνωστες πληροφορίες διακομιστή! - υπερβολικά σύντομες" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Λήφθηκε %d καινούριος διακομιστής" msgstr[1] "Λήφθηκαν %d καινούριοι διακομιστές" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Το αποθήκευση τις λίστας διακομιστών ολοκληρώθηκε." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Ο διακομιστής απέρριψε την τελευταία εντολή" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Κάλπικο πακέτο ελήφθει από τον διακομιστή: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "" "Αδιαχείριστο σφάλμα κατά την επεξεργασία πακέτου από τον διακομιστή: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Δεν μπορεί να δημιουργηθεί νήμα επίλυσης DNS για τη σύνδεση στο %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "" "Η διεύθυνση IP %s (%s) του διακομιστή είναι φιλτραρισμένη. Δεν γίνεται " "σύνδεση." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "χρήση πρωτοκόλλου συσκότισης." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Σύνδεση σε %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" "Δεν μπόρεσε να γίνει επίλυση dns για τον διακομιστή %s: Δεν είναι δυνατή ή " "σύνδεση!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Ο διακομιστής δεν προστέθηκε: Δεν προσδιορίστηκε διεύθυνση." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Ο διακομιστής δεν προστέθηκε: Προσδιορίστηκε άκυρη θύρα διακομιστή." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Κατάσταση eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "Ταυτότητα" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Κατάσταση Kademlia:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "Τρέχει στο %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Τρέχει" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Κατάσταση:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Κατάσταση σύνδεσης:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "Κατάσταση σύνδεσης:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Κατάσταση τοίχου προστασίας:" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Όχι φιλαράκος" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "Συνδεδεμένος στον φιλαράκο" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "Συνδεδεμένος στον φιλαράκο" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "Βρέθηκαν πηγές :" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 #, fuzzy msgid "Indexed notes:" msgstr "Το αρχείο δεικτών δεν βρέθηκε (ψάχνω ψάχνω και τίποτα δεν βρίσκω)" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Μέσοι χρήστες:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Μέσα αρχεία:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Δεν τρέχει" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Βρέθηκε %i γνωστό κοινόχρηστο αρχείο" msgstr[1] "Βρέθηκαν %i γνωστά κοινόχρηστα αρχεία" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Βρέθηκε %i γνωστό κοινόχρηστο αρχείο και %i άγνωστο" msgstr[1] "Βρέθηκαν %i γνωστά κοινόχρηστα αρχεία και %i άγνωστα" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "ΣΦΑΛΜΑ: Αποπειράθηκε να μοιραστεί το %s" #: src/SharedFileList.cpp:410 #, fuzzy, c-format msgid "Shared directory not found, skipping: %s" msgstr "Ο διακομιστής δεν βρέθηκε: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Όνομα χρήστη" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Ταχύτητα κατεβάσματος" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Ταχύτητα ανεβάσματος" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Διαθέσιμα:" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Κατάσταση ανεβάσματος" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Κατάσταση κατεβάσματος" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Όνομα αρχείου" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Κοινόχρηστα αρχεία" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Αιτήσεις" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Δεκτές αιτήσεις" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Όγκος δεδομένων που μεταφέρθηκαν" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Λόγος συμμετοχής" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Κεκτημένα τμήματα" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Ολοκληρωμένες πηγές" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Μονοπάτι καταλόγου" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Προσθήκη σχολίου/Αξιολόγησης" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Επεξεργασία σχολίου/Αξιολόγησης" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Μετονομασία" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Προσθήκη των αρχείων της συλλογής στην λίστα με τα μεταφερόμενα" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Αντιγραφή μαγνήτη &URI στην πρόχειρη μνήμη" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Αντιγραφή του συνδέσμου eD2k στο πρόχειρο (&Πηγή)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" "Αντιγραφή του συνδέσμου eD2k στο πρόχειρο (Πηγή) (& Με κρυπτογραφικές " "επιλογές)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Αντιγραφή του συνδέσμου eD2k στο πρόχειρο (&Όνομα υπολογιστή)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Αντιγραφή του συνδέσμου eD2k στο πρόχειρο (Όνομα υπολογιστή) (&Με " "κρυπτογραφικές επιλογές)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Αντιγραφή του συνδέσμου eD2k στο πρόχειρο) (Πληροφορίες AICH)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Αντιγραφή του συνδέσμου eD2k στο πρόχειρο) (Πληροφορίες AICH)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "" "Χρειάζεται Υψηλή Προτεραιότητα για τη δημιουργία έγκυρου πηγαίου συνδέσμου" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Κοινόχρηστα αρχεία (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Μέρος αρχείου]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Όνομα αρχείου" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Ανεβασμένα Δεδομένα (Συνεδρία (Συνολικά)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Συνολική επιβάρυνση (Πακέτα): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Επιβάρυνση αίτησης αρχείου (Πακέτα): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Επιβάρυνση ανταλλαγής πηγών (Πακέτα): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Επιβάρυνση διακομιστή (Πακέτα): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Επιβάρυνση Kad (Πακέτα): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Κρυπτογραφική επιβάρυνση (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Ενεργά ανεβάσματα: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Ανεβάσματα σε αναμονή: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Συνολικός αρ. επιτυχών συνεδριών ανεβάσματος: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Συνολικός αριθμός αποτυχημένων συνεδριών ανεβάσματος: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Μέσος χρόνος ανεβάσματος: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Κατέβηκαν δεδομένα (Συνεδρία (Συνολικά)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Βρέθηκαν πηγές: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Ενεργά κατεβάσματα (κομμάτια): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Συνεδρία λόγος Άνω:Κάτω (Σύνολο): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Μέσος ρυθμός κατεβάσματος (Συνεδρία): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Μέσος ρυθμός ανεβάσματος (Συνεδρία): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Μέγιστος ρυθμός κατεβάσματος (Συνεδρία): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Ελάχιστος ρυθμός κατεβάσματος (Συνεδρία): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Επανασυνδέσεις: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Χρόνος μετά από την πρώτη μεταφορά: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Σύνδεση με τον διακομιστή από: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Ενεργές συνδέσεις (εκτίμηση): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Έφτασε στο μέγιστο αρ. συνδέσεων: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Μέσες συνδέσεις (εκτίμηση): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Κορυφαίες συνδέσεις (εκτίμηση): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Πελάτες" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "Άγνωστο μέγεθος" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "Φιλτραρισμένοι" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "Απαγορευμένοι" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Συνολικοί: %i Γνωστοί: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Εργαζόμενοι διακομιστές: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Αποτυχημένοι διακομιστές: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Σύνολο: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Διαγραμμένοι διακομιστές: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Φιλτραρισμένοι διακομιστές: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Χρήστες στους εργαζόμενους διακομιστές: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Αρχεία στους εργαζόμενους διακομιστές: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Σύνολο χρηστών: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Σύνολο αρχείων: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Κατοχή διακομιστών: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Αριθμός κοινόχρηστων αρχείων: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Συνολικό μέγεθος κοινόχρηστων αρχείων: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Μέσο μέγεθος αρχείου: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Λειτουργικό σύστημα" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Δεν ελήφθει" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Ενεργές συνδέσεις (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Δεν είναι διαθέσιμο" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Ποτέ" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Η εντολή `%s' με pid `%d' τελείωση με κωδικό κατάστασης `%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Εκτέλεση και έξοδος." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Άκυρη μορφή διεύθυνσης IP. Χρησιμοποιήστε xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Αυτή η εντολή χρειάζεται ένα όρισμα. Έγκυρα ορίσματα: 'all', όνομα αρχείου ή " "έναν αριθμό.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Επεξεργασία κατά κατακερματιστή:" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Επεξεργασία κατά όνομα αρχείου:" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Αυτή η εντολή χρειάζεται ένα όρισμα. Έγκυρα ορίσματα: ένας κατακερματιστής " "αρχείου.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Άκυρος αριθμός\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" "Δεν είναι έγκυρος κατακερματισμός (το μήκος πρέπει να είναι ακριβώς 32 " "χαρακτήρες)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Για περισσότερη βοήθεια, γράψτε '%s'.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Κατεβασμένα (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Η αίτηση απέτυχε για άγνωστο λόγο" #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Η διαδικασία ολοκληρώθηκε επιτυχώς." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Η αίτηση απέτυχε με το ακόλουθο σφάλμα: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Το φίλτρο IP για πελάτες είναι %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "Εκτός" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "Σε λειτουργία" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Το φιλτράρισμα διευθύνσεων για διακομιστές είναι %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Το τρέχον επίπεδο IPFilter είναι %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Ευρυζωνικά όρια: Πάνω: %u kB/s, Κάτω: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Συνδεδεμένο στο %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Συνδέεται τώρα" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "βρίσκεται πίσω από τοίχο προστασίας" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "Εντάξει" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Κατέβασμα:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Ανέβασμα:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Πελάτες σε αναμονή:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Συνολικές πηγές:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Αριθμός αποτελεσμάτων αναζήτησης: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 #, fuzzy msgid "Search progress not available" msgstr "Εμφάνιση ποσοστού προόδου" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Ελήφθη άγνωστη απάντηση από τον διακομιστή, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Εμφάνιση σύντομων πληροφοριών κατάστασης." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" "Εμφάνιση κατάστασης σύνδεσης, τρέχουσες ταχύτητες ανεβοκατεβάσματος, κτλ.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Εμφάνιση πλήρους δέντρου στατιστικών." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Προαιρετικά, ένας αριθμός από 0 ώς 255 μπορεί να δωθεί σαν όρισμα σε αυτήν\n" "την εντολή και ο οποίος λέει πόσες καταχωρήσεις των υποδέντρων της έκδοσης " "πελάτη θα πρέπει\n" "να εμφανίζονται. Το μηδέν ή παράλειψη ερμηνεύεται σαν 'απεριόριστο'.\n" "\n" "Παράδειγμα: 'statistics 5' θα δείξει μόνο τις 5 πρώτες εκδόσεις του κάθε " "τύπου πελάτη.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Κλείσιμο του aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Κλείσιμο του απομακρυσμένου πυρήνα (amule/amuled).\n" "Αυτό θα κλείσει και τον πελάτη κειμένου, γιατί είναι άχρηστος χωρίς έναν\n" "τρέχοντα πυρήνα.\n" #: src/TextClient.cpp:861 #, fuzzy msgid "Reload the given object." msgstr "Επαναφορτώνει το δεδομένο αντικείμενο" #: src/TextClient.cpp:862 #, fuzzy msgid "Reload shared files list." msgstr "Επαναφορτώνει τη λίστα κοινοχρήστων αρχείων." #: src/TextClient.cpp:864 #, fuzzy msgid "Reload IP filtering table." msgstr "Επαναφορτώνει τον πίνακα φίλτρων IP από αρχείο" #: src/TextClient.cpp:865 #, fuzzy msgid "Reload current IP filtering table." msgstr "Επιλογή επιπέδου φιλτραρίσματος IP." #: src/TextClient.cpp:866 #, fuzzy msgid "Update IP filtering table from URL." msgstr "Επαναφορτώνει τον πίνακα φίλτρων IP από αρχείο" #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Σύνδεση στο δίκτυο." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Αυτό θα προκαλέσει σύνδεση σε όλα τα δίκτυα που είναι ενεργοποιημένα στις " "Προτιμήσεις.\n" "Προαιρετικά, μπορείτε να προσδιορίσετε μία διεύθυνση διακομιστή της μορφής " "IP:θύρα για σύνδεση\n" "μόνο σε αυτόν τον διακομιστή. Η διεύθυνση IP πρέπει να είναι μια διάστικτη " "δεκαδική διεύθυνση IPv4\n" "ή ένα επιλύσιμο όνομα DNS." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Σύνδεση μόνο στο eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Σύνδεση μόνο στο Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Αποσύνδεση από το δίκτυο." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Αυτό θα προκαλέσει αποσύνδεση από όλα τα συνδεδεμένα δίκτυα.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Αποσύνδεση μόνο από το eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Αποσύνδεση μόνο από το Kad." #: src/TextClient.cpp:879 #, fuzzy msgid "Add an eD2k or magnet link to core." msgstr "Προσθήκη ενός μαγνητικού συνδέσμου ή συνδέσμου eD2k στον πυρήνα." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Ο καινούριος συνδεσμος eD2k μπορεί να είναι:\n" "*) ένας σύνδεσμος αρχείου (ed2k://|file|...), θα προστεθεί στην λίστα " "αναμονής κατεβασμάτων,\n" "*) ένας σύνδεσμος διακομιστή (ed2k://|server|...), θα προστεθεί στην λίστα " "διακομιστών,\n" "*) ένας σύνδεσμος σε λίστα διακομιστών, στην οποία περίπτωση όλοι οι " "διακομιστές τις λίστας θα προστεθούν\n" " στη λίστα διακομιστών.\n" "\n" "Ο μαγνητικός σύνδεσμος πρέπει να περιέχει τον κατακερματισμό \n" " και το μέγεθος αρχείου.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Θέτει την τιμή μίας προτίμησης." #: src/TextClient.cpp:885 #, fuzzy msgid "Set IP filtering preferences." msgstr "Θέτει τις προτιμήσεις του φίλτρου IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Άνοιγμα του φίλτρου IP τόσο για πελάτες όσο και για διακομιστές." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Κλείσιμο του φίλτρου IP τόσο για πελάτες όσο και για διακομιστές." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Ενεργοποίηση/Απενεργοποίηση του φίλτρου IP για πελάτες." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Άνοιγμα του φίλτρου IP τόσο για πελάτες." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Κλείσιμο του φίλτρου IP τόσο για πελάτες." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Ενεργοποίηση/Απενεργοποίηση του φίλτρου IP για διακομιστές." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Άνοιγμα του φιλτραρίσματος IP για τους διακομιστές." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Κλείσιμο του φιλτραρίσματος IP για τους διακομιστές." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Επιλογή επιπέδου φιλτραρίσματος IP." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Έγκυρα επίπερα φιλτραρίσματος είναι στο διάστημα 0-255, και η προεπιλεγμένη " "(αρχική)\n" "τιμή είναι 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Ρύθμιση ορίων εύρους ζώνης." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" "Η τιμή που δίνεται σε αυτές τις εντολές πρέπει να είναι σε kilobytes/" "δευτερόλεπτο.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Θέσε το όριο εύρους ζώνης για ανέβασμα." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "" "Η τιμή που δίνεται σε αυτές τις εντολές πρέπει να είναι σε kilobytes/" "δευτερόλεπτο.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Θέσε το όριο εύρους ζώνης για κατέβασμα." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Λήψη και εμφάνιση της τιμής μίας προτίμησης." #: src/TextClient.cpp:907 #, fuzzy msgid "Get IP filtering preferences." msgstr "Λήψη προτιμήσεων φίλτρου IP." #: src/TextClient.cpp:908 #, fuzzy msgid "Get IP filtering state for both clients and servers." msgstr "Λήψη κατάστασης φίλτρου IP για πελάτες και διακομιστές." #: src/TextClient.cpp:909 #, fuzzy msgid "Get IP filtering state for clients only." msgstr "Λήψη κατάστασης φίλτρου IP μόνο για πελάτες." #: src/TextClient.cpp:910 #, fuzzy msgid "Get IP filtering state for servers only." msgstr "Λήψη κατάστασης φίλτρου IP μόνο για διακομιστές." #: src/TextClient.cpp:911 #, fuzzy msgid "Get IP filtering level." msgstr "Επιλογή επιπέδου φιλτραρίσματος IP." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Λήψη τον ορίων εύρους ζώνης." #: src/TextClient.cpp:915 #, fuzzy msgid "Execute a search." msgstr "Εκτελεί αναζήτηση στο Kad" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Ο τύπος της αναζήτησης πρέπει να δωθεί μέσω των εξής επιλογών:\n" " ΚΑΘΟΛΙΚΗ\n" " ΤΟΠΙΚΗ\n" " KAD\n" "Για παράδειγμα: 'search kad αρχειάκι' θα εκτελέσει μία αναζήτηση Kad για το " "αρχείο \"αρχειάκι\".\n" #: src/TextClient.cpp:917 #, fuzzy msgid "Execute a global search." msgstr "Εκτελεί συνολική αναζήτηση." #: src/TextClient.cpp:918 #, fuzzy msgid "Execute a local search" msgstr "Εκτελεί τοπική αναζήτηση" #: src/TextClient.cpp:919 #, fuzzy msgid "Execute a kad search" msgstr "Εκτελεί αναζήτηση στο Kad" #: src/TextClient.cpp:921 #, fuzzy msgid "Show the results of the last search." msgstr "Δείχνει τα αποτελέσματα της τελευταίας αναζήτησης." #: src/TextClient.cpp:922 #, fuzzy msgid "Return the results of the previous search.\n" msgstr "Επιστρέφει τα αποτελέσματα της προηγούμενης αναζήτησης.\n" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "Δείχνει την πρόοδο της αναζήτησης." #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "Δείχνει την πρόοδο της αναζήτησης.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Ξεκινά να κατεβάζει ένα αρχείο" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Πρέπει να δωθεί αριθμός του αρχείου από την τελευταί αναζήτηση.\n" " Για παράδειγμα \"download 12\" θα ξεκινήσει να κατεβάζει το αρχείο υπ' " "αριθμό 12 της προηγούμενης αναζήτησης.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Παύση κατεβάσματος." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Συνέχιση κατεβάσματος." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Ακύρωση κατεβάσματος." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Θέσε την προτεραιότητα κατεβάσματος." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" "Βάλτε την προτεραιότητα κατεβάσματος σε χαμηλή, κανονική, ηψηλή ή αυτόματη.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Θέστε χαμηλή προτεραιότητα." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Θέστε κανονική προτεραιότητα." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Θέστε υψηλή προτεραιότητα." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Θέστε αυτόματη προτεραιότητα." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Δείξε τις ουρές/λίστες." #: src/TextClient.cpp:952 #, fuzzy msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Δείχνει την ουρά ανεβάσματος/κατεβάσματος, τη λίστα διακομιστών ή " "κοινόχρηστων αρχείων.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Δείξε την ουρά ανεβάσματος." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Δείξε την ουρά κατεβάσματος." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Δείξε τον αρχείο καταγραφής." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Δείξε τη λίστα των διακομιστών." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Καθάρισμα αρχείου καταγραφής." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Δεν συνίσταται αυτή η εντολή, αντ' αυτής χρησιμοποιήστε την '%s'." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Αυτή είναι μη συνιστώμενη εντολή και μπορεί να αφαιρεθεί στο μέλλον. \n" "Χρησιμοποιήστε '%s' καλύτερα.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Διακομιστής κειμένου του aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "" "Μετατροπή των παλιών συνόλων κατακερματισμού AICH στο '%s' σε 64b στο '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "Ειδοποίηση: Το όνομα αρχείου '%s' είναι άκυρο και μετονομάστηκε σε '%s' " #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "Ειδοποίηση: Το αρχείο '%s' υπάρχει ήδη, το νέο αρχείο μετονομάστηκε σε '%s'" #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Είστε σίγουροι ότι θέλετε να ακυρώσετε και να σβήσετε όλα τα αρχεία σε αυτήν " "την κατηγορία;" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Χρειάζεται επιβεβαίωση" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Υπερβολικά πολλές συνδέσεις" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Όλα τα άλλα" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Επιλογή φίλτρου εμφάνισης" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Προσθήκη κατηγορίας" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Επεξεργασία κατηγορίας" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Διαγραφή κατηγορίας" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Αποτυχία ανοίγματος του αρχείου (%s), αφαίρεση από τη λίστα κοινοχρήστων " "αρχείων." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Σύνολο κατακερματισμού για άγνωστο αρχείο: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Συνέχεια του ανεβάσματος του αρχείου: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Αναστολή ανεβάσματος του αρχείου: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Αποτυχία εκτέλεσης εντολής `%s' στο συμβάν `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Το κατέβασμα ολοκληρώθηκε" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Η πλήρης διαδρομή του αρχείου" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Το όνομα του αρχείου χωρίς τη διαδρομή." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "Ο κατακερματισμός eD2k του αρχείου." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Το μέγεθος του αρχείου σε byte." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Συνολική διάρκεια κατεβάσματος" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Ξεκίνησε καινούρια περίοδος συνομιλίας" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Αποστολέας μηνύματος" #: src/UserEvents.h:88 msgid "Out of space" msgstr "Δεν υπάρχει χώρος" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Κατάτμηση δίσκου" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Σφάλμα κατά την ολοκλήρωση" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Επεξεργασία του αρχείου υπ' αριθμόν %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Ζητήσατε μερικά τεμάχια (Χρησιμοποιείται μόνο για αρχεία > 9.5ΜΒ)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Ανύπαρκτο αρχείο !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, ο δημιουργός συνδέσμων eD2k του aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Καλώς ήρθατε (Καλώς σας βρήκαμε)" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Παράμετρος εισόδου" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Αρχείο προς κατακερματισμό" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Προσθήκη προαιρετικών URL για αυτό το αρχείο" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "" "Εδώ εισάγετε το αρχείο για το οποίο θέλετε να υπολογίσετε τον σύνδεσμο eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Εδώ εισάγετε την διεύθυνση που θέλετε να προσθέσετε στον σύνδεσμο eD2k: " "Προσθέστε / στο τέλος για να ενημερώσετε τον δημιουργό συνδέσμων να " "επισυνάψει το τρέχων όνομα αρχείου" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Αφαίρεση" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Δημιουργία συνδέσμου με μερικό κατακερματισμό" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Βοηθήστε στην διανομή καινούριων και σπάνιων αρχείων ταχύτερα, με αντίτιμο " "ένα μεγαλύτερο μέγεθος συνδέσμου" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Κατακερματισμός αρχείου MD4" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Αρχείο κατακερματισμού eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "σύνδεσμος eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Αποθήκευση" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Αντιγραφή στο πρόχειρο" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Άνοιγμα αρχείου για τον υπολογισμού του συνδέσμου eD2k του" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Αντιγραφή υπολογισμένου συνδέσμου eD2k στο πρόχειρο" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Αποθήκευση υπολογισμένου συνδέσμου eD2k σε αρχείο" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Σχετικά με τον aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "" "Επιλέξτε το αρχείο για το οποίο θέλετε να υπολογίσετε τον σύνδεσμο eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Δεν υπάρχει τίποτα για να αντιγραφεί σε αυτή τη φάση !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Επιλέξτε το αρχείο για τον υπολογισμένο σύνδεσμο eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Αδύνατο το άνοιγμα" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Παρακαλώ δώστε ένα μη κενό όνομα αρχείου" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Δεν υπάρχει τίποτα για να σωθεί σε αυτή τη φάση !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, ο δημιουργός συνδέσμων eD2k του aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Εικονίδια από το http://www.everaldo.com και το http://www.icomania.com\n" "καθώς και το http://jimmac.musichall.cz/ikony.php3\n" "\n" "Διανέμεται υπό την GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Κατακερματίζεται..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Ακυρώθηκε!" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Ολοκληρώθηκε σε %.2f δεύτερα" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Έχετε ήδη προσθέσει αυτήν την URL !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Παρακαλώ εισάγετε μια μη κενή URL" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Αποτυχία ανοίγματος του %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i Ημέρες %i Ώρες %i λεπτά %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, Στατιστικές σύνδεσης aMule" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Μέγιστη ταχύτητα κατεβάσματος στη διάρκεια που το wxCas τρέχει" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "" "Απόλυτα ελάχιστη ταχύτητα κατεβάσματος στις προηγούμενες εκτελέσεις του wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Σύστημα" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Διακοπή της αυτόματης ανανέωσης" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Αποθήκευση της απεικόνισης στατιστικών σύνδεσης" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Εκτύπωση της απεικόνισης στατιστικών σύνδεσης" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Ρυθμίσεις προτιμήσεων" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Σχετικά με το wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Εκκίνηση της αυτόματης ανανέωσης" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Η αυτόματη ανανέωση σταμάτησε" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Η αυτόματη ανανέωση ξεκίνησε" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Αποθήκευση της στατιστικής απεικόνισης" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Στατιστικές σύνδεσης του aMule" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Υπήρξε πρόβλημα κατά την εκτύπωση.\n" "Μήπως ο τρέχων εκτυπωτής δεν έχει ρυθμιστεί σωστά;" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Εκτύπωση" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, Στατιστικές συνδεδεμένων υπογραφών\n" "\n" "(c) 2004 ThePolish \n" "\n" "Βασισμένο στο CAS του Pedro de Oliveira \n" "\n" "Διανέμετε υπό την GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Να πάρει! Το amule δεν τρέχει.." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "Το aMule τρέχει" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "Το aMule τρέχει, αλλά δεν είναι συνδεδεμένο" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "Το aMule συνδέεται..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Στο καλό! Η κατάσταση του aMule είναι άγνωστη..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule" #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr "τρέχει επί" #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr "έχει διακοπεί !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr "δεν είναι συνδεδεμένο !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr "συνδέεται.." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr "κάνει κάτι περίεργο, τσεκάρει το!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr "είναι συνδεδεμένο με" #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "κλειστό" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr "είναι ανοιχτό" #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr "με" #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Συνολική μεταφόρτωση:" #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Ανέβασμα: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Περίοδος κατεβάσματος:" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Μεταφόρτωση" #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Ανέβασμα: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Κοινοκτημοσύνη" #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr "Αρχείο(α), Πελάτες στην αναμονή: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Χρόνος" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " ανοιχτό" #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Μέσο φορτίο συστήματος (1-5-15 λεπτά): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Χρόνος λειτουργικότητας συστήματος:" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Ο κατάλογος που περιέχει το αρχείο amulesig.dat." #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Γράψτε εδώ το όνομα του καταλόγου που περιέχει το αρχείο amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Περίοδος ανανέωσης σε δευτερόλεπτα" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Παραγωγή στατιστικής απεικόνισης σε κάθε συμβάν ανανέωσης" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" "Γράψτε εδώ τον κατάλογο όπου θέλετε να παραχθεί η στατιστική απεικόνιση" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Περιοδικό ανέβασμα του ειδώλου στατιστικών στον διακομιστή FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "Διεύθυνση FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Διαδρομή FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Εδώ εισάγετε τη διεύθυνση του διακομιστή FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Εισάγετε εδώ τον κατάλογο που θα μπει το είδωλο στατιστικών στον διακομιστή " "FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Χρήστης" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Γράψτε εδώ το όνομα χρήστη για να συνδεθείτε στον διακομιστή FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Γράψτε εδώ τον κωδικό χρήστη για να συνδεθείτε στον διακομιστή FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Περίοδος ενημέρωσης του FTP σε λεπτά" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Τεκμηρίωση" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Κατάλογος που περιέχει το αρχείο υπογραφής" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Κατάλογος όπου να δημιουργηθεί η στατιστική απεικόνιση" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Φορτώνει προτύπου " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Θύρα HTTP του διακομιστή ιστού" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Χρήση της προώθησης της θύρας UPnP στη θύρα διακομιστή ιστού" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Θύρα UPnP " #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr " Χρήση συμπίεσης τύπου gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Κωδικός πλήρους πρόσβασης για τον διακομιστή ιστού" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Κωδικός επισκέπτη για τον διακομιστή ιστού" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Να επιτρέπεται η πρόσβαση σε επισκέπτες" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Να απαγορεύεται η πρόσβαση σε επισκέπτες" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" "Φόρτωση/Αποθήκευση των ρυθμίσεων του διακομιστή ιστού από/προς απομακρυσμένο " "aMule" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Η διαδρομή στα αρχεία ρυθμίσεων του aMule. ΜΗΝ ΑΛΛΑΖΕΤΕ ΑΠΕΥΘΕΙΑΣ" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Απενεργοποίηση του διερμηνέα PHP (απαρχαιωμένο)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Μεταγλώττιση των σελίδων PHP σε κάθε αίτηση" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Ο διακομιστής δικτύου του aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "η σύνδεση πελάτη ιστού έγινε αποδεκτή\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "ΣΦΑΛΜΑ: δεν μπορεί να γίνει δεκτή η σύνδεση πελάτη ιστού\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Η αίτηση απέτυχε με το εξής σφάλμα: %s" #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Το αρχείο δεικτών δεν βρέθηκε (ψάχνω ψάχνω και τίποτα δεν βρίσκω)" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Η περίοδος εργασίας έληξε - αίτηση επανασύνδεσης\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Η Περίοδος εργασίας είναι εντάξει, συνδεδεμένο\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Η περίοδος εργασίας είναι εντάξει, μη συνδεδεμένο\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Δεν έχει ξεκινήσει περίοδος εργασίας - θα ζητήσει σύνδεση\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Δημιουργία περιόδου εργασίας - ζήτηση σύνδεσης\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "H αίτηση διεκπεραιώνεται [αρχικό]:" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Έλεγχος κωδικού\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Ο κωδικός κατακερματισμού είναι άκυρος\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Ο κωδικός είναι εντάξει\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Κακός κωδικός\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Δεν βάλατε κανέναν κωδικό. Δεν επιτρέπεται κενός κωδικός.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Ζητήθηκε αποσύνδεση\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Επεξεργασία αιτήματος [ανακατεύθυνση]" #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Το ημιτελές αρχείο %s (%s) δεν έχει αρχείο σπόρων" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Το ημιτελές αρχείο %s (%s) έχει κενό αρχείο σπόρων" #, fuzzy #~ msgid "Download status" #~ msgstr "Κατάσταση κατεβάσματος" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Καθυστέρηση ενημέρωσης: %d δευτερόλεπτο" #~ msgstr[1] "Καθυστέρηση ενημέρωσης: %d δευτερόλεπτα" #~ msgid "Transferring" #~ msgstr "Μεταφέρεται" #, fuzzy #~ msgid "QR: ???" #~ msgstr "QR: %u" #~ msgid "QR: %u" #~ msgstr "QR: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "Εν αναμονή" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - εμφάνιση πρόοδο αναζήτησης" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "" #~ "Ξεκινάει η δημιουργία κατακερματισμού MD5 και AICH για το αρχείο: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Εκκίνηση δημιουργίας κατακερματισμού MD5 για το αρχείο: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Εκκίνηση δημιουργίας κατακερματισμού AICH για το αρχείο: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "Ειδοποίηση: Δεν μπόρεσα να σβήσω το αρχικό '%s' μετά τη δημιουργία " #~ "αντιγράφου ασφαλείας" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "Ειδοποίηση: Απέτυχα να σβήσω το %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Αξιολόγηση (σύνολο):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Προσπάθησε να μεταφέρει ολόκληρα κομμάτια σε όλα τα ανεβάσματα" #~ msgid "Networks window" #~ msgstr "Παράθυρο δικτύων" #~ msgid "Searches window" #~ msgstr "Παράθυρο αναζητήσεων" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Κατεβαίνει" #~ msgid "Shared files window" #~ msgstr "Παράθυρο κοινόχρηστων αρχείων" #~ msgid "Messages window" #~ msgstr "Παράθυρο μηνυμάτων" #~ msgid "Statistics graph window" #~ msgstr "Παράθυρο γραφημάτων στατιστικών" #~ msgid "Preferences settings window" #~ msgstr "Παράθυρο ρυθμίσεων" #~ msgid "Transfers" #~ msgstr "Μεταφορές" #~ msgid "Files transfers window" #~ msgstr "Παράθυρο μεταφορών αρχείων" #~ msgid "Unban" #~ msgstr "Άρση απαγόρευσης" #~ msgid "Show Uploads" #~ msgstr "Δείξε τα ανεβάσματα" #~ msgid "Show Queue" #~ msgstr "Δείξε τη λίστα προτεραιότητας" #~ msgid "Select View" #~ msgstr "Επιλογή προβολής" #~ msgid "Client Software" #~ msgstr "Λογισμικό πελάτη" #~ msgid "Waited" #~ msgstr "Περίμενε" #~ msgid "Upload Time" #~ msgstr "Χρόνος ανεβάσματος" #~ msgid "Upload/Download" #~ msgstr "Κατέβασμα/Ανέβασμα" #~ msgid "Remote Status" #~ msgstr "Κατάσταση του μακρινού πελάτη" #~ msgid "File Priority" #~ msgstr "Προτεραιότητα αρχείου" #~ msgid "Score" #~ msgstr "Σκορ" #~ msgid "Asked" #~ msgstr "Ερωτήθηκε" #~ msgid "Last Seen" #~ msgstr "Εμφανίστηκε τελευταία φορά" #~ msgid "Entered Queue" #~ msgstr "Εισήλθε στην λίστα προτεραιότητας" #~ msgid "Transferred Up" #~ msgstr "Εστάλησαν" #~ msgid "Transferred Down" #~ msgstr "Ελήφθησαν" #~ msgid "Userhash" #~ msgstr "Πίνακας κατακερματισμού χρηστών" #~ msgid "Encrypted" #~ msgstr "Κρυπτογραφημένο" #~ msgid "Shows Upload / Up-queue" #~ msgstr "Δείχνει το ανέβασμα / ουρά ανεβάσματος" #~ msgid "Clients on queue :" #~ msgstr "Πελάτες στην ουρά" #~ msgid "Current Session" #~ msgstr "Τρέχουσα συνεδρία" #~ msgid "Total" #~ msgstr "Σύνολο" #~ msgid "Requested :" #~ msgstr "Ζητήθηκε :" #~ msgid "Create backup for preview" #~ msgstr "Δημιουργία αντιγράφου ασφαλείας για προεπισκόπιση" #~ msgid "Files Transfers Window" #~ msgstr "Παράθυρο μεταφοράς αρχείων" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Συνολικοί Χρήστες: %s | Συνολικά Αρχεία: %s" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "" #~ "Ειδοποίηση: Δεν μπόρεσα να σβήσω το αρχικό '%s' μετά τη δημιουργία " #~ "αντιγράφου ασφαλείας" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country(): Αποτυχία φορτώματος δεδομένων χώρας από" #~ msgid "Get IPFilter level." #~ msgstr "Λήψη επιπέδου φίλτρου IP." #~ msgid "Makes a search." #~ msgstr "Εκτελεί μία αναζήτηση." #, fuzzy #~ msgid "Killed!" #~ msgstr "Απέτυχε" #, fuzzy #~ msgid "Using amuleweb in '%s'." #~ msgstr "Τρέξε τον διακομιστή ιστού του aΜule κατά την εκκίνηση" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "Κλείσιμο του aMule." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Οι παρακάτω επιλογές έχουν αλλάξει σε αυτήν την έκδοση για λόγους " #~ "ασφαλείας: \n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Ενεργοποιημένη υποστήριξης συσκότισης πρωτοκόλλου για εισερχόμενες και " #~ "εξερχόμενες συνδέσεις. \n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Απενεργοποίηση της ενημέρωσης της λίστας διακομιστών από άλλους " #~ "διακομιστές και πελάτες.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Για περισσότερες πληροφορίες για του λόγους αυτών των αλλαγών, ψάξτε\n" #~ "στo βίκυ του aMule στη διεύθυνση http://wiki.amule.org για \"fake servers" #~ "\" info.\n" #~ "Είναι σημαντικό να εκκαθαρίσετε κάθε πλαστό διακομιστή από τη λίστα σας " #~ "ώστε το aMule να δουλεύει σωστά." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "Επιπλέον, οι ρυθμίσεις του περιηγητή ιστοσελίδων τέθηκαν στις " #~ "προσδιορισμένες συστήματος. Παρακαλώ ρυθμίστε τις ξανά αν χρειάζεται.\n" #~ msgid "Fetching status..." #~ msgstr "Ανάκληση κατάστασης..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Χρήστες: E: %s K: %s | Αρχεία E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Πελάτης %s στην θύρα IP %s:%d ο οποίος χρησιμοποιεί %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() επέστρεψε NULL" #~ msgid "Firewalled" #~ msgstr "Πίσω από τοίχο προστασίας" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "Φορτώθηκε %d ψηφιογραφημένο γραφικό σημαίας" #~ msgstr[1] "Φορτώθηκαν %d ψηφιογραφημένα γραφικά σημαιών" #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "" #~ "Το αρχείο %s είναι πολύ μεγάλο για το Μουλάρι: το μέγιστο επιτρεπτό είναι " #~ "4 GB." #~ msgid "User:" #~ msgstr "Χρήστης:" #~ msgid "System:" #~ msgstr "Σύστημα:" #~ msgid "No handler for this file type." #~ msgstr "Δεν υπάρχει χειριστής για αυτόν τον τύπο αρχείου" #~ msgid "File was not saved" #~ msgstr "Το αρχείο δεν αποθηκεύτηκε" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "" #~ "Η σύνδεση απέτυχε. Αποτυχία σύνδεσης με τον προσδιορισμένο υπολογιστή\n" #~ msgid " Copyright (C) 2002 Petar Maymounkov \n" #~ msgstr "" #~ "Πνευματικά Δικαιώματα (C) 2002 Petar Maymounkov \n" #~ msgid "" #~ "Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ "Πνευματικά δικαιώματα (C) 2003-2008 η ομάδα του aMule \n" #~ "\n" #~ msgid "Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr "Πνευματικά δικαιώματα (C) 2002 Petar Maymounkov\n" #~ msgid "Show part file number before file name" #~ msgstr "Εμφάνιση του αριθμού ημιτελούς αρχείου πριν το όνομα αρχείου" #~ msgid "Message Filter" #~ msgstr "Φίλτρο μηνυμάτων" #~ msgid "Gui Tweaks" #~ msgstr "Φινίρισμα γραφικού περιβάλλοντος" #~ msgid "Core Tweaks" #~ msgstr "Φινίρισμα πυρήνα" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Χρόνος καθυστέρησης επεξηγήσεων σε δευτερόλεπτα" #~ msgid "Skin Support" #~ msgstr "Υποστήριξη θεμάτων" #~ msgid "- no skins available -" #~ msgstr "- δεν υπάρχουν θέματα -" #~ msgid "Other" #~ msgstr "Άλλο" #~ msgid "Online Signature Directory:" #~ msgstr "Κατάλογος Συνδεδεμένων Υπογραφών:" #~ msgid "Show messages in log" #~ msgstr "Εμφάνιση μηνημάτων στο αρχείο καταχωρίσεων" #~ msgid "Filtering Options:" #~ msgstr "Ρυθμίσεις διήθησης:" #~ msgid "UDP port for extended server requests (TCP+3):" #~ msgstr "Θύρα UDP για εκτεταμένες αιτήσεις διακομιστή (TCP+3):" #~ msgid "Line Capacities" #~ msgstr "Χωρητικότητες γραμμών" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Σημείωση: Αυτές οι τιμές\n" #~ "χρημιμοποιούνται μόνο για στατιστική." #~ msgid "Standard client TCP Port:" #~ msgstr "Πρότυπη θύρα TCP πελάτη:" #~ msgid "Extended client UDP Port:" #~ msgstr "Εκτεταμένη θύρα UDP πελάτη:" #~ msgid "Bind Address" #~ msgstr "Προσδεδεμένη διεύθυνση" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "Θύρα UDP για εκτεταμένες αιτήσεις στο διακομιστή (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "Μέγιστος αριθμός πηγών ανά αρχείο" #~ msgid "Connection limits" #~ msgstr "Όρια σύνδεσης" #~ msgid "Universal Plug and Play" #~ msgstr "Universal Plug and Play" #~ msgid "Enable UPnP" #~ msgstr "Ενεργοποίηση UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "Θύρα UPnP TCP:" #~ msgid "Activate Intelligent Corruption Handling (I.C.H.)" #~ msgstr "Ενεργοποίηση της έξυπνης διαχείρισης φθοράς (Ε.Δ.Φ.)" #~ msgid "Start next paused file when a file completed" #~ msgstr "" #~ "Εκκίνηση του επόμενου σταματημένου αρχείου όταν ένα αρχείο ολοκληρωθεί" #~ msgid "Check disk space" #~ msgstr "Έλεγχος χώρου στο δίσκο" #~ msgid "Min disk space:" #~ msgstr "Ελάχιστος χώρος στο δίσκο:" #~ msgid "Incoming" #~ msgstr "Εισερχόμενα" #~ msgid "Temporary" #~ msgstr "Προσωρινά" #~ msgid "Shared" #~ msgstr "Κοινόχρηστα" #~ msgid "Select Statistics Colors" #~ msgstr "Επιλογή χρωμάτων για στατιστικές" #~ msgid "Download Queue Files Progress" #~ msgstr "Πρόοδος αρχείων λίστας κατεβασμάτων" #~ msgid "Show percentage" #~ msgstr "Εμφάνιση ποσοστού" #~ msgid "Show progressbar " #~ msgstr "Εμφάνιση μπάρας προόδου" #~ msgid "Progressbar style" #~ msgstr "Τύπος μπάρος προόδου" #~ msgid "Enable skin support " #~ msgstr "Ενεργοποίηση υποστήριξης θεμάτων" #~ msgid "Skin:" #~ msgstr "Θέμα:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "" #~ "Αυτόματη ταξινόμηση των αρχείων στην λίστα αναμονής κατεβάσματος (υψηλή " #~ "χρήση υπολογιστικής ισχύος)" #~ msgid "Show Fast eD2k Links Handler" #~ msgstr "Εμφάνιση γρήγορου διαχειριστή συνδέσμων eD2k" #~ msgid "Web server port" #~ msgstr "Θύρα διακομιστή ιστού" #~ msgid "Enable UPnP port forwarding on the web server port" #~ msgstr "Ενεργοποίηση προώθησης θύρας UPnP στη θύρα διακομιστή ιστού" #~ msgid "Web server UPnP TCP port" #~ msgstr "Θύρα UPnP TCP διακομιστή ιστού" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "Το IP του εισακούοντος περιβάλλοντος\n" #~ "(κενό για όλα)" #~ msgid "TCP port" #~ msgstr "Θύρα TCP" #~ msgid "Who can see shared files:" #~ msgstr "Ποίος μπορεί να δει τα κοινόχρηστα αρχεία:" #~ msgid "Event types" #~ msgstr "Τύποι γεγονότων" #~ msgid "ERROR: can not accept web client connection\n" #~ msgstr "ΣΦΑΛΜΑ: Η σύνδεση πελάτη ιστού δεν μπορεί να γίνει δεκτή.\n" #~ msgid "" #~ "Your Auto-update server list is empty.\n" #~ "'Auto-update server list at startup will be disabled." #~ msgstr "" #~ "Η λίστα διακομιστών αυτόματης ενημέρωσης είναι κενή.\n" #~ "Η αυτόματη ενημέρωση λίστας διακομιστών κατά την εκκίνηση θα " #~ "απενεργοποιηθεί." #~ msgid "ERROR: Invalid part.met fileversion: %s ==> %s" #~ msgstr "ΣΦΑΛΜΑ: Άκυρη έκδοση αρχείου part.met: %s ==> %s" #~ msgid "WARNING: Knownfile list corrupted, contains invalid header." #~ msgstr "" #~ "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η λίστα γνωστών αρχείων είναι φθαρμένη, περιέχει άκυρη " #~ "επικεφαλίδα." #~ msgid "Makes aMule promt before exiting." #~ msgstr "Κάνει το aMule να ζητά άδεια πριν κλείσει." #~ msgid "Bandwith limits" #~ msgstr "Ευρυζωνικά όρια" #~ msgid "This UDP port is used for extended ed2k requests and Kad network" #~ msgstr "" #~ "Αυτή η θύρα UDP χρησιμοποιείται για εκτεταμένες αιτήσεις στα δίκτυα ed2k " #~ "και Kad" #~ msgid "Show overhead bandwith" #~ msgstr "Εμφάνιση επιβάρυνσης στο εύρος ζώνης" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. Ενεργό" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "το AICH εμπιστεύεται κάθε κατακερματισμό (δεν συνιστάται)" #~ msgid "Disk space" #~ msgstr "Χώρος στο δίσκο" #~ msgid "Create Backup for preview" #~ msgstr "Δημιουργία αντιγράφου ασφαλείας" #~ msgid "Advanced Settings" #~ msgstr "Προχωρημένες επιλογές" #~ msgid "Progressbar Style" #~ msgstr "Μορφή μπάρας προόδου" #~ msgid "Column Sorting" #~ msgstr "Ταξινόμηση στήλης" #~ msgid "Misc Gui Tweaks" #~ msgstr "Ποικίλα φινιρίσματα του γραφικού περιβάλλοντος" #~ msgid "File Options" #~ msgstr "Παράμετροι αρχείων" #~ msgid "Status text" #~ msgstr "Κατάσταση κειμένου" #~ msgid "Pop-up status text" #~ msgstr "Αναδυόμενο κείμενο κατάστασης" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ "Πελάτης P2P βασισμένος στο eMule \n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr "Ιστοσελίδα: http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr "Τόπος συζήτησης: http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ "Συχνές Ερωτήσεις: http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr "Επικοινωνία: admin@amule.org (διοικητικά θέματα) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ "Πνευματικά δικαιώματα (C) 2003-2008 η ομάδα του aMule \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr "Μέρος του aMule βασίζεται στο \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr "Πνευματικά δικαιώματα (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "Για μια ταινία μπορείτε να πείτε τη διάρκεια, το σενάριο, τη γλώσσα ...\n" #~ "και αν είναι πλαστό, μπορείτε να το πείτε στούς άλλους χρήστες του aMule." #~ msgid "Misc Options" #~ msgstr "Διάφορες επιλογές" #~ msgid "Server Options" #~ msgstr "Επιλογές διακομιστή" #~ msgid "Display server motd when connected ..." #~ msgstr "Εμφάνιση του διακομιστή motd κατά τη σύνδεση ..." #~ msgid "eD2k Info" #~ msgstr "Πληροφορίες eD2k" #~ msgid "Disable/Enable" #~ msgstr "Απενεργοποίηση/Ενεργοποίηση" #~ msgid "Authentication" #~ msgstr "Πιστοποίηση" #~ msgid "General Settings" #~ msgstr "Γενικές ρυθμίσεις" #~ msgid "Hard limit" #~ msgstr "Σκληρό όριο" #~ msgid "Max Connections" #~ msgstr "Μέγιστες συνδέσεις" #~ msgid "GUI Tweaks" #~ msgstr "Φινίρισμα γραφικού περιβάλλοντος" #~ msgid "Remote Control" #~ msgstr "Τηλεχειριστήριο" #~ msgid "Unable to determine selected browser!" #~ msgstr "Ο τύπος του πλοηγού δεν μπορεί να προσδιοριστεί" #~ msgid "User Defined" #~ msgstr "Επιλογή χρήστη" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - Το μουλάρι του Λίνουξ" #~ msgid "System Default" #~ msgstr "Προεπιλογή συστήματος" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Εδώ επιλέγετε τον περιηγητή ιστοσελίδων σας" #~ msgid "Custom Browser:" #~ msgstr "Προσωπικός περιηγητής ιστοσελίδων" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Γράψτε το όνομα του περιηγητή ιστοσελίδων σας εδώ. Για χρήση του " #~ "προσωπικού φυλλομετρητή ιστοσελίδων, επιλέξτε το \"Προσωπικό\" στοιχείο " #~ "του μενού από την παραπάνω λίστα." #~ msgid "Please wait... " #~ msgstr "Παρακαλώ περιμένετε..." #~ msgid "Could not determine the command for running the browser." #~ msgstr "" #~ "Δεν μπόρεσε να προσδιορίσει την εντολή για το τρέξιμο του φυλλομετρηρή " #~ "ιστοσελίδων." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "Αποτυχημένη συνδεση EC, Κενή απάντηση" #~ msgid "ExternalConn: Access denied because: " #~ msgstr "Εξωτερική σύνδεση: Απαγορεύεται η πρόσβαση διότι:" #~ msgid "ExternalConn: Access denied" #~ msgstr "Εξωτερική σύνδεση: Απαγορεύεται η πρόσβαση" #~ msgid "ExternalConn: Bad reply from server. Connection closed." #~ msgstr "" #~ "Εξωτερική σύνδεση: Κακή απάντηση του διακομιστή. Η σύνδεση τερματίστηκε." #~ msgid "The ed2k hash of the file." #~ msgstr "Ο κατακερματισμός ed2k του αρχείου." #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Αντιγραφή ED2k &διασύνδεσης στην πρόχειρη μνήμη" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "Αντιγραφή ED2k &διασύνδεσης στην πρόχειρη μνήμη (&Πηγή)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "" #~ "Αντιγραφή ED2k &διασύνδεσης στην πρόχειρη μνήμη (Πηγή) (&Με κρυπογραφικές " #~ "επιλογές)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "Αντιγραφή ED2k &διασύνδεσης στην πρόχειρη μνήμη (&Όνομα υπολογιστή)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "" #~ "Αντιγραφή ED2k &διασύνδεσης στην πρόχειρη μνήμη (Όνομα υπολογιστή) (&Με " #~ "κρυπογραφικές επιλογές)" #~ msgid "Copy ED2k link to clipboard (&AICH info)" #~ msgstr "" #~ "Αντιγραφή ED2k &διασύνδεσης στην πρόχειρη μνήμη (&Πληροφορίες AICH) " #~ msgid "Warning" #~ msgstr "Προειδοποίηση" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "Σφάλμα: Αδύνατη η επικοινωνία μέσω της TCP θύρας" #~ msgid "Error: can not accept web client connection\n" #~ msgstr "Σφάλμα: δεν μπορεί να γίνει αποδεκτή ή σύνδεση πελάτη ιστού\n" #~ msgid "Webserver HTTP port" #~ msgstr "Θύρα HTTP του διακομιστή δικτύου" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "Χρήση προώθησης θύρας UPnP προς τη θύρα του διακομιστή δικτύου" #~ msgid "Full access password for webserver" #~ msgstr "Κωδικός πλήρους πρόσβασης για τον διακομιστή δικτύου" #~ msgid "Guest password for webserver" #~ msgstr "Κωδικός επισκέπτη για τον διακομιστή δικτύου" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "" #~ "Φόρτωση/Αποθήκευση των προτιμήσεων του διακομιστή δικτύου από/πρός το " #~ "απομακρυσμένο aMule" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "Γράψτε εδώ το αρχείο όπου θέλετε να υπολογίσετε τον σύνδεσμο Ed2k" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "Γράψτε εδώ τη διεύθηνση που θέλετε να προσθέσετε στον σύνδεσμο Ed2k: " #~ "Προσθέστε ένα / στο τέλος ώστε ο aLinkCreator να επισυνάψει το τρέχον " #~ "όνομα αρχείου" #~ msgid "Ed2k File Hash" #~ msgstr "Κατακερματισμός αρχείου Ed2k" #~ msgid "Ed2k link" #~ msgstr "Σύνδεσμος Ed2k" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "Ανοίξτε ένα αρχείο για να υπολογίσετε τον σύνδεσμο ed2k" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "Αντιγραφή του υπολογισμένου συνδέσμου ed2k στο πρόχειρο " #~ msgid "Save computed ed2k link to file" #~ msgstr "Εγγραφή του υπολογισμένου συνδέσμου ed2k σε αρχείο" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "Επιλέξτε το αρχείο του θέλετε για να υπολογίσετε τον σύνδεσμο ed2k" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "Διαλέξτε το αρχείο στο υπολογισμένο σύνδεσμο ed2k" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, ο δημιουργός συνδέσμων ed2k του aMule\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, ο δημιουργός συνδέσμων του aMule" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Αντιγραφή συνδέσμου ED2k πρόχειρο" #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Αντιγραφή συνδέσμων ED2k πρόχειρο" #~ msgid "ED2K: Connecting" #~ msgstr "ED2K: Σε διαδικασία σύνδεσης" #~ msgid "ED2K: Disconnected" #~ msgstr "ED2K: Αποσυνδεδεμένο" #~ msgid "Warning: Unable to open skin file '%s' for read" #~ msgstr "" #~ "Προειδοποίηση: δεν μπόρεσε να ανοίξει το αρχείο εξωτερικής εμφάνισης '%s' " #~ "για ανάγνωση" #~ msgid "ed2k network" #~ msgstr "Δίκτυο ed2k" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "Η λίστα διακομιστών αυτόματης ενημέρωσης είναι κενή .\n" #~ "Η 'Αυτόματη ενημέρωση της λίστας διακομιστών κατά την εκκίνηση' θα " #~ "απενεργοποιηθεί." #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "Τόσο το δίκτυο ED2K όσο και το Kad είναι απενεργοποιημένα.\n" #~ "Δεν είναι δυνατή η σύνδεση έως ότου να ενεργοποιηθεί τουλάχιστον ένα από " #~ "αυτά." #~ msgid "Edit Serverlist" #~ msgstr "Επεξεργασία λίστας διακομιστών" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "Σφάλμα: δεν μπόρεσε να γίνει αποδεκτή η νέα εξωτερική σύνδεση" #~ msgid "ED2K is disabled in preferences." #~ msgstr "Το ED2K έχει απενεργοποιηθεί στις προτιμήσεις." #~ msgid "ExternalConn: shutdown requested" #~ msgstr "ExternalConn: ζητήθηκε διακοπή λειτουργίας" #~ msgid "Already connected to ED2K." #~ msgstr "Ήδη συνδεδεμένο στο ED2K." #~ msgid "Connecting to ED2K..." #~ msgstr "Διαδικασία σύνδεση στο ED2K..." #~ msgid "Disconnected from ED2K." #~ msgstr "Αποσυνδεδεμένο από το ED2K." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "ExternalConn: ελήφθει εσφαλμένος κωδικός: %#x" #~ msgid "ED2K Status:" #~ msgstr "Κατάσταση ED2K:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "Μέσος ρυθμός κατεβάσματος (Συνεδρίες): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "Μέσος ρυθμός ανεβάσματος (Συνεδρία): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "Μέγιστος ρυθμός κατεβάσματος (Συνεδρία): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "Μέγιστος ρυθμός ανεβάσματος (Συνεδρία): %s" #~ msgid "Average filesize: %s" #~ msgstr "Μέσο μέγεθος αρχείου: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "" #~ "Δεν μπορεί να γίνει αναζήτηση στο ED2K αν το ED2K δεν είναι συνδεδεμένο" #~ msgid "Error: " #~ msgstr "Σφάλμα:" #~ msgid "Warning: " #~ msgstr "Προειδοποίηση:" #~ msgid "Search related files (ED2k, local server)" #~ msgstr "Αναζήτηση σχετικών αρχείων (ED2k, τοπικός διακομιστής)" #~ msgid "Error" #~ msgstr "Σφάλμα" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: δεν μπορείτε να προσθέσετε τον εαυτό σας σαν πηγή ενός " #~ "συνδέσμου ed2k ενώ έχετε χαμηλή προτεραιότητα." #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "Παρακαλώ ορίστε το προτιμητέο πρόγραμμα εμφάνισης βίντεο στις " #~ "προτιμήσεις.\n" #~ "Στο μεταξύ, το aMule θα προσπαθήσει να χρησιμοποιήσει τον mplayer και θα " #~ "βλέπετε αυτό το προειδοποιητικό μήνυμα σε κάθε προεπισκόπιση" #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "Σφάλμα: Αποτυχία ανοίγματος του αρχείου part.met: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "Σφάλμα: το αρχείο part.met έχει μηδενικό μέγεθος: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "Σφάλμα: Άκυρή έκδοση αρχείου part.met: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "Προειδοποίηση: το %s μπορεί να είναι φθαρμένο (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "Απρόσμενο σφάλμα αρχείου κατά την ολοκλήρωση του %s. Παύση αρχείου" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "Προειδοποίηση: Δεν είναι δυνατός ο κατακερματισμός του μέρους που " #~ "κατέβηκε - το σύνολο κατακερματισμού είναι ημιτελές για '%s'" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "Σφάλμα: Δεν είναι δυνατός ο κατακερματισμός του μέρους που κατέβηκε - το " #~ "σύνολο κατακερματισμού είναι ημιτελές (%s'). Αυτό δεν πρέπει να ξανασυμβεί" #~ msgid "Insufficient Diskspace" #~ msgstr "Ανεπαρκής χώρος στον δίσκο" #~ msgid "Warning: known.met cannot be opened." #~ msgstr "Προειδοποίηση: το known.met δεν μπορεί να ανοίξει." #~ msgid "Warning: Knownfile list corrupted, contains invalid header." #~ msgstr "" #~ "Προειδοποίηση: το αρχείο με τα γνωστά είναι φθαρμένο, περιέχει άκυρη " #~ "επικεφαλίδα." #~ msgid "ERROR! Attempted to share %s" #~ msgstr "ΣΦΑΛΜΑ! Απόπειρα το %s να γινει κοινόχρηστο" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "" #~ "Το δίκτυο ED2K είναι απενεργοποιημένο στις προτιμήσεις, δεν γίνεται " #~ "σύνδεση." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "Δεν βρέθηκαν έγκυροι διακομιστές προς σύνδεση στη λίστα διακομιστών" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "Σφάλμα: Η υποδοχή είναι άκυρη κατά τον έλεγχο χρονικού περιθωρίου" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions." #~ msgstr "" #~ "Σφάλμα: Αποτυχία φόρτωσης του αντιγράφου ασφαλείας. Ψάξτε στο http://" #~ "forum.amule.org για λύσεις ανάκτησης .part.met." #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "Δεν μπορεί να μετατραπεί ο μαγνητικός σύνδεσμος σε ed2k: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "Άκυρος σύνδεσμος ed2k! Σφάλμα: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "Όρια εύρους ζώνης: Πάνω: %u kB/s, Κάτω: %u kB/s.\n" #~ msgid "Shutdown aMule." #~ msgstr "Κλείσιμο του aMule." #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "Κλείσιμο που απομακρυσμένου πυρήνα (amule/amuled).\n" #~ "Αυτό θα κλείσει και τον πελάτη κειμένου, επειδή αυτός είναι άχρηστος " #~ "χωρίς έναν\n" #~ "πυρήνα που να τρέχει.\n" #~ msgid "Connect to ED2K only." #~ msgstr "Σύνδεση μόνο στο ED2K." #~ msgid "Disconnect from ED2K only." #~ msgstr "Αποσύνδεση μόνο από το ED2K." #~ msgid "Adds an ed2k or magnet link to core." #~ msgstr "Προσθέτει ένα ed2k ή μαγνητικό σύνδεσμο στον πυρήνα." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "Ο σύνδεσμος ed2k προς προσθήκη πρέπει να είναι:\n" #~ "*) ένας σύνδεσμος αρχείου (ed2k://|file|...), που θα προστεθεί στη λίστα " #~ "αναμονής κατεβασμάτων,\n" #~ "*) ένας σύνδεσμος διακομιστή (ed2k://|server|...), που θα προστεθεί στη " #~ "λίστα διακομιστών,\n" #~ "*) ή ένας σύνδεσμος σε λίστα διακομιστών, στην οποία περίπτωση όλοι οι " #~ "διακομιστές αυτής της λίστας θα προστεθούν\n" #~ "στη λίστα διακομιστών.\n" #~ "\n" #~ "Ο μαγνητικός σύνδεσμος πρέπει να περιέχει τον κατακερματισμό ed2k και το " #~ "μέγεθος αρχείου.\n" #~ msgid "Deprecated command, now '%s'." #~ msgstr "Παροχυμένη εντολή, τώρα '%s'." #~ msgid "Error: %s (%s) - %s" #~ msgstr "Σφάλμα: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "Προειδοποίηση: %s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "Σφάλμα: δεν υπάρχει χώρος στον δίσκο" #~ msgid "Error: Partmet not found" #~ msgstr "Σφάλμα: δεν βρέθηκε το Partmet" #~ msgid "Error: IO error!" #~ msgstr "Σφάλμα εισόδου/εξόδου!" #~ msgid "Error: Failed!" #~ msgstr "Σφάλμα: Αποτυχία!" #~ msgid "ED2K Link: " #~ msgstr "Σύνδεσμος ED2K:" #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "" #~ "Κλικ εδώ για προσθήκη του συνδέσμου ed2k από τον πίνακα κειμένου στην " #~ "ουρά αναμονής κατεβασμάτων." #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "" #~ "Αναζητά για περισσότερα αποτελέσματα στο ED2K. Δεν υποστηρίζεται από το " #~ "Kad ακόμα." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Όρια εύρους ζώνης" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "Αυτή έιναι η πρότυπη θύρα ED2K και δεν μπορεί να απενεργοποιηθεί." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "" #~ "Αυτή η θύρα UDP χρησιμοποιήται για εκτεταμένες αιτήσεις Ed2K καθώς και το " #~ "δίκτυο Kad" #~ msgid "Hard Limit" #~ msgstr "Σκληρό όριο" #~ msgid "Connection Limits" #~ msgstr "Όρια σύνδεσης" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Αυτόματη ενημέρωση της λίστας διακομιστών κατά την εκκίνηση" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Ενημέρωση της λίστας διακομιστών κατά τη σύνδεση στον διακομιστή" #~ msgid "Update serverlist when a client connect" #~ msgstr "Ενημέρωση της λίστας διακομιστών κατά τη σύνδεση πελάτη" #~ msgid "Disk Space" #~ msgstr "Χώρος στο δίσκο" #~ msgid "Check Disk Space" #~ msgstr "Έλεγχος χώρου στο δίσκο" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "" #~ "Επιλέξτε αυτό αν θέλετε το aMule να τσεκάρει τον Χώρο στον Δίσκο σας" #~ msgid "Min Disk Space:" #~ msgstr "Ελάχιστος Χώρος στο Δίσκο:" #~ msgid "Incoming Directory :" #~ msgstr "Κατάλογος εισερχομένων :" #~ msgid "Temporary Directory :" #~ msgstr "Προσωρινός Κατάλογος :" #~ msgid "Shared Directories" #~ msgstr "Κοινόχρηστοι Κατάλογοι" #~ msgid "Create Backup to preview" #~ msgstr "Δημιουργία αντιγράφου για προεπισκόπηση" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Εμφάνιση Γρήγορου Διαχειριστή Συνδέσμων ED2K" #~ msgid "Webserver Parameters" #~ msgstr "Παράμετροι του διακομιστή ιστού" #~ msgid "Webserver port" #~ msgstr "Θύρα του διακομιστή ιστού" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "Ενεργοποίηση της θύρας UPnP προς τη θύρα του διακομιστή ιστού" #~ msgid "Webserver UPnP TCP port" #~ msgstr "Θύρα UPnP TCP του διακομιστή ιστού" #~ msgid "Serverlist" #~ msgstr "Λίστα διακομιστών" #~ msgid "Manual Server Add : Name" #~ msgstr "Προσθήκη διακομιστή με το χέρι: Όνομα" #~ msgid "No One" #~ msgstr "Κανείς" #~ msgid "Speed Limits:" #~ msgstr "Όρια ταχύτητας:" #~ msgid "Download Speed: %.1f" #~ msgstr "Ταχύτητα Κατεβάσματος: %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "Ταχύτητα ανεβάσματος: %.1f" #~ msgid "TCP Port: %d" #~ msgstr "Θύρα TCP: %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "Θύρα TCP: Ανέτοιμη" #~ msgid "UDP Port: %d" #~ msgstr "Θύρα UDP: %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "Θύρα UDP: Ανέτοιμη" #~ msgid "Shared Files: %d" #~ msgstr "Κοινόχρηστα αρχεία: %d" #~ msgid "Queued Clients: %d" #~ msgstr "Πελάτες στην αναμονή: %d" #~ msgid "Upload Limit" #~ msgstr "Όριο ανεβάσματος" #~ msgid "Download Limit" #~ msgstr "Όριο κατεβάσματος" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "Δεν βρέθηκε εγγραφη διεύθυνση λίστας διακομιστών στο 'addresses.dat'. " #~ "Παρακαλείστε να επικολλήσετε μια έγκυρη διεύθυνση λίστας διακομιστών στο " #~ "αρχείο ώστε να ενημερωθεί η λίστα διακομιστών" #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "" #~ "Προειδοποίηση, προσδιορίστηκε άκυρη URL για αυτόματη ενημέρωση των " #~ "διακομιστών: %s" #~ msgid "webserver running on pid %d" #~ msgstr "O διακομιστής τρέχει στην pid %d" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "Ζητήσατε να τρέξετε διακομιστή ιστού στην εκκίνηση, αλλά το εκτελέσιμο " #~ "του amuleweb δεν βρέθηκε. Παρακαλώ εγκαταστήστε στο πακέτο που περιέχει " #~ "τον διακομιστή ιστού του aMule η μετραφράστε το aMule χρησιμοποιώντας --" #~ "enable-webserver και τρέξτε make install" #~ msgid "Disconnected from ED2K" #~ msgstr "Αποσυνδεση από το ED2K" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "Αδύνατη η ανάγνωση από το αρχείο της λιστας-φίλων 'emfriends.met'" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "Αδύνατη η εγγραφη στο αρχείο της λιστας-φίλων 'emfriends.met'" #~ msgid "Spanish (Mexican)" #~ msgstr "Ισπανικά (Μεξικού)" amule_2.3.1+git20151120.0023527bc2.orig/po/en@boldquot.header0000644000175000017500000000247112611472361021553 0ustar morphmorph# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # # This catalog furthermore displays the text between the quotation marks in # bold face, assuming the VT100/XTerm escape sequences. # amule_2.3.1+git20151120.0023527bc2.orig/po/en@quot.header0000644000175000017500000000226312611472361020711 0ustar morphmorph# All this catalog "translates" are quotation characters. # The msgids must be ASCII and therefore cannot contain real quotation # characters, only substitutes like grave accent (0x60), apostrophe (0x27) # and double quote (0x22). These substitutes look strange; see # http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html # # This catalog translates grave accent (0x60) and apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019). # It also translates pairs of apostrophe (0x27) to # left single quotation mark (U+2018) and right single quotation mark (U+2019) # and pairs of quotation mark (0x22) to # left double quotation mark (U+201C) and right double quotation mark (U+201D). # # When output to an UTF-8 terminal, the quotation characters appear perfectly. # When output to an ISO-8859-1 terminal, the single quotation marks are # transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to # grave/acute accent (by libiconv), and the double quotation marks are # transliterated to 0x22. # When output to an ASCII terminal, the single quotation marks are # transliterated to apostrophes, and the double quotation marks are # transliterated to 0x22. # amule_2.3.1+git20151120.0023527bc2.orig/po/en_GB.po0000644000175000017500000043642012611472361017444 0ustar morphmorph# aMule i18n resource file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. # Kry , 2004. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2008-07-08 02:22+0100\n" "Last-Translator: Dévai Tamás \n" "Language-Team: aMule Team \n" "Language: en_GB\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" #: src/amule.cpp:581 msgid "Server list download" msgstr "" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "" #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "" #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "" #: src/amule.cpp:1888 msgid "Kad started." msgstr "" #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "" #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "" #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "" #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr "" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr "" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" msgstr[1] "" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" msgstr[1] "" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "" #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "" #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "" msgstr[1] "" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "" #: src/DataToText.cpp:62 msgid "Asking" msgstr "" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "" #: src/DataToText.cpp:73 msgid "Banned" msgstr "" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "" #: src/DataToText.cpp:132 msgid "Passive" msgstr "" #: src/DataToText.cpp:133 msgid "Link" msgstr "" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "" #: src/DataToText.cpp:146 msgid "In progress" msgstr "" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "" msgstr[1] "" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "" #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "" #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "" #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "" #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "" #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "" #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "" #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "" #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "" #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "" #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "" #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "" #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "" #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "" #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "" #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "" #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "" #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "" #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "" #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "" #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "" #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "" #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "" #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "" #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "" #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "" #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "" #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "" #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "" #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "" #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "" #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "" msgstr[1] "" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "" #: src/LibSocketAsio.cpp:1260 #, c-format msgid "Asio thread %d started" msgstr "" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "" #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "" #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "" #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "" #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "" #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "" #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "" #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "" #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "" #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "" #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "" #: src/muuli_wdr.cpp:3169 msgid "Only to Logfile" msgstr "" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "" #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "" msgstr[1] "" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "" msgstr[1] "" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "" #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "" #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1050 #, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "" #: src/Preferences.cpp:632 msgid "System default" msgstr "" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "" #: src/Preferences.cpp:636 msgid "Basque" msgstr "" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "" #: src/Preferences.cpp:642 msgid "Czech" msgstr "" #: src/Preferences.cpp:643 msgid "Danish" msgstr "" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "" #: src/Preferences.cpp:648 msgid "French" msgstr "" #: src/Preferences.cpp:649 msgid "Galician" msgstr "" #: src/Preferences.cpp:650 msgid "German" msgstr "" #: src/Preferences.cpp:651 msgid "Greek" msgstr "" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "" #: src/Preferences.cpp:654 msgid "Italian" msgstr "" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "" #: src/Preferences.cpp:657 msgid "Korean" msgstr "" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "" #: src/Preferences.cpp:660 msgid "Polish" msgstr "" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "" #: src/Preferences.cpp:664 msgid "Russian" msgstr "" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:619 msgid "- Protocol obfuscation support changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "" #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "" #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "" msgstr[1] "" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "" #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "" msgstr[1] "" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "" msgstr[1] "" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "" #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "" msgstr[1] "" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "" #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "" #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "" #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "" #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "" msgstr[1] "" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "" msgstr[1] "" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "" #: src/SharedFilesCtrl.cpp:170 msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:790 msgid "Clients" msgstr "" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "" #: src/StatTree.cpp:550 msgid "Not available" msgstr "" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "" #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "" #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "" #: src/TextClient.cpp:553 #, c-format msgid "Download File: %lu %s\n" msgstr "" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "" #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "" #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "" #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "" #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "" #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "" #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "" #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "" #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "" #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "" #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "" #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "" #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "" #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "" #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "" #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "" #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "" #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "" #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "" #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "" #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "" #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "" #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "" #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "" #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "" #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "" #: src/TextClient.cpp:900 src/TextClient.cpp:902 msgid "The given value must be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "" #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "" #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "" #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "" #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "" #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "" #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "" #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "" #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "" #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "" #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "" #: src/TextClient.cpp:938 msgid "Resume download." msgstr "" #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "" #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "" #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "" #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "" #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "" #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "" #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "" #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "" #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "" #: src/TextClient.cpp:955 msgid "Show log." msgstr "" #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "" #: src/TextClient.cpp:959 msgid "Reset log." msgstr "" #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" #: src/TextClient.h:59 msgid "aMule text client" msgstr "" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "" #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "" #: src/UserEvents.h:60 msgid "Download completed" msgstr "" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "" #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "" #: src/UserEvents.h:85 msgid "Message sender." msgstr "" #: src/UserEvents.h:88 msgid "Out of space" msgstr "" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "" #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "" #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "" amule_2.3.1+git20151120.0023527bc2.orig/po/es.po0000644000175000017500000063756112611472361017112 0ustar morphmorph# translation of es.po to Spanish # Copyright (c) 2003-2011 aMule Team # This file is distributed under the terms of the GNU General Public # License # # FIRST AUTHOR , 2004. # Errico2 , 2011 # Mad-Soft , 2004, 2005, 2006, 2007, 2008, 2009, 2010 # Ignacio Casal Quinteiro , 2007. # Carlos Diaz , 2007, 2008. # Festor Wailon Dacoba , 2007. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2012-01-06 13:53+0100\n" "Last-Translator: tHatdUde\n" "Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Country: SPAIN\n" "X-Poedit-SourceCharset: utf-8\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Language: es_ES\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Añadir un amigo" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Has de introducir una IP y puerto válidos!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Información" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "¡El hash de usuario especificado no es válido!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Imposible abrir el archivo de enlaces ED2K." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "ADVERTENCIA: No puedes añadirte a ti mismo como una fuente para un enlace " "eD2k teniendo ID baja." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Ahora, saliendo de aplicación principal..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Cerrando instancia amuleweb con pid '%ld' ... " #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Matando instancia amulweb con pid '%ld' ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Error" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Terminando núcleo." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "Cierre de aMule completado." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Resultados de depuración de memoria en la salida de aMule: " #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "Configuración EC" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Contraseña fijada y conexiones externas habilitadas." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "ALERTA" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Tu idioma ha sido cambiado al de por defecto de tu sistema, debido a un " "cambio de configuración. Lo siento." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "No tienes ningún servidor en la lista de servidores.\n" "¿Quieres que aMule descargue una nueva lista ahora?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Descarga lista de servidores" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "servidor web corriendo con pid: %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Has solicitado ejecutar el servidor web al inicio pero no se ha podido " "iniciar el binario de amuleweb. Por favor instala el paquete que contenga el " "servidor web de aMule o compila aMule usando --enable-webserver y ejecuta " "make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "ERROR" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Imposible direccionar los puertos a la dirección especificada: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Puerto %u no está disponible. Tendrás IDBaja\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Puerto %u no está disponible!\n" "\n" "Esto significa que tendrás IDBaja.\n" "\n" "Comprueba tu red y asegúrate de que el puerto está abierto para entrada y " "salida." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Error al crear el archivo de FirmaOnline" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Error al crear el archivo de FirmaOnline aMule" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "El idioma seleccionado no parece estar instalado. (Nota: Intentaré ponerlo " "de todos modos)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Es la primera vez que inicias aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Esto es una versión de prueba, actualizada diariamente, y \n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "no damos garantía si rompiera algo, quemara tu casa,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "o matara a tu perro. Pero *debería* ser seguro de todas formas. \n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Podrás encontrar en nuestra web, mas información, soporte y nuevas " "versiones, \n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "en www.aMule.org, o en nuestro canal de IRC #aMule en irc.freenode.net. \n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Envíanos cualquier fallo a http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "El directorio que has especificado de Firma Online no es válido\n" "La Firma Online ha sido deshabilitada hasta que lo arregles en opciones." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Nombre servidor notificado" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "La reserva del espacio en disco para el archivo '%s' falló: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "ERROR: no puedo abrir el archivo de registro" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "ALERTA: el archivo de registro está vacío. Algo está mal" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Registro ha sido borrado" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Mensaje del servidor: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" "Se ha descartado la descarga de %s, porque el archivo solicitado no es mas " "nuevo." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Error al descargar la lista de nodos." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Error al abrir el archivo de comprobación de versión descargado" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Archivo de comprobación de versión corrupto" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "¡Estás usando una versión obsoleta de aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Tu versión de aMule es %i.%i.%i y la última versión es %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "La última versión puede siempre ser encontrada en http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "ALERTA: Tu versión de aMuled está obsoleta: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Tu copia de aMule está actualizada." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Error al descargar el archivo de comprobación de versión" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Usuarios: %s | Archivos: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Usuarios: E: %s K: %s | Archivos: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Sin redes seleccionadas" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "con IDBaja" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "con IDAlta" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Conectado a %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Conectando a %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Desconectado de eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad iniciado." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad detenido." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Conectado a Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Conectado a Kad (tras cortafuegos)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Desconectado de Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Red Kad no puede ser usada si el puerto UDP está deshabilitado en opciones, " "no iniciando." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Red Kad deshabilitada en opciones, no conectará." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ERROR: el daemon de aMule no se puede usar cuando están desactivadas las " "conexiones externas. Para activarlas, usa o bien un aMule normal, inicia " "amuled con la opción --ec-config, o bien, establece " "\"AcceptExternalConnections\" a 1, en el archivo ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "ERROR: Se requiere una contraseña para usar conexiones externas, y el " "demonio aMule no se puede usar sin conexiones externas. Para iniciar el " "demonio aMule, debes especificar en el campo \"ECPassword\" del archivo ~/." "aMule/amule.conf con el valor apropiado. Ejecuta amuled con el parámetro --" "ec-config para especificar la contraseña. Mas información puede ser " "encontrada en http://wiki.amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: EnInicio - Iniciando reloj" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: derivando a segundo plano - nos vemos" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "No se puede crear el archivo Pid" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "ERROR: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Esto es aMule %s basado en eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Ejecutándose en %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Visita http://www.amule.org para comprobar si hay una nueva versión " "disponible" #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ERROR GRAVE: No se ha podido crear el temporizador" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Control remoto de aMule" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Versión:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "Cliente p2p multiplataforma basado en eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Web: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Foro: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Contactar: admin@amule.org (problemas administrativos) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 aMule Team \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Parte de aMule está basado en \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr " Kademlia: Direccionamiento P2P basado en la métrica XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Mensaje" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "Diálogo aMule destruido" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Conectando" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Conectando" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Desconectado" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Tras Cortafuegos" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Conectado" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Conectando" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Apagada" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Cancelar" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Detener los intentos de conexión actuales" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Desconectar" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Desconectarse de las redes conectadas" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Conectar" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Conectarse a las redes disponibles" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Su: %.1f(%.1f) | Desc: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Su: %.1f | Desc: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Conectado)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Desconectado)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "¿Realmente deseas cerrar %s?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Confirmación de salida" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Lanzar comando:" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- defecto -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "El directorio de tema '%s' no existe" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "ATENCIÓN: No se puede abrir el archivo de tema '%s' para lectura" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Redes" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Ventana de redes" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Buscar" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Ventana de búsquedas" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Descargas" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Descargas" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Compartidos" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Ventana de archivos compartidos" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Mensajes" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Ventana de mensajes" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Estadísticas" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Ventana de gráficos de estadísticas" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Opciones" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Ventana de opciones" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importar" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "La herramienta para importar archivos part" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Acerca de" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Acerca de/Ayuda" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Red eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Red Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Sin red" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "Control remoto de aMule" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Error Fatal: Imposible crear el reloj del núcleo" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Conectar a amule remoto" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Error Fatal: Imposible crear el Poll Timer" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Entrando en bucle de eventos..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Conectando..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Conexión fallida" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Manejador de evento EC en Interfaz Remota" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Bajando" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Error de conexión. Imposible conectar a %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Conexión cerrada - Probablemente aMule se habrá cerrado." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Listo" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Todos" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Imposible crear el directorio '%s' para la categoría '%s', manteniendo el " "directorio '%s'." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Desconocido" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Error al obtener la lista de compartidos del usuario '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Buscando amigo con conexión idbaja" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Versión Falsa eMule %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Falso eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Falso eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basado en eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Alias: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Solicitado: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Estadísticas de archivo para esta sesión: %d Aceptada de %d petición, %s " "transferida\n" msgstr[1] "" "Estadísticas de archivo para esta sesión: %d Aceptadas de %d peticiones, %s " "transferidas\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Estadísticas de archivo para todas las sesiones: %d Aceptada de %d petición, " "%s transferida\n" msgstr[1] "" "Estadísticas de archivo para todas las sesiones: %d Aceptadas de %d " "peticiones, %s transferidas\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Solicitado un archivo desconocido" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Mensaje filtrado de '%s' (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nuevo mensaje de '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Usuario %s (%u) solicitó tu lista de archivos compartidos del directorio %s -" "> Ignorado" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "ALERTA: %s no se puede abrir." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "ALERTA: Cancelada lista de archivos corruptos, contiene una cabecera " "inválida." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "IO error leyendo %s archivo: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Error guardando %s archivo: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Introduce " #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Categoría" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nueva Categoría" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Selecciona un directorio para los archivos entrantes" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "¡Debes especificar un nombre para la categoría!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "¡Debes especificar una ruta para la categoría!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "¡Error al crear el directorio entrante de la categoría. Por favor " "especifique una ruta correcta!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Sesión Chat Iniciada: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Conectado al cliente ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Conectando al cliente ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Error al conectar con el cliente / Conexión perdida ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" "*** Has pasado la comprobación del captcha y el usuario recibirá tu mensaje. " "***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Tu repuesta al captcha fue incorrecta y tu mensaje ha sido ignorado. " "Puedes pedir un nuevo captcha enviando un nuevo mensaje. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Chat" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Cerrar pestaña" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Cerrar todas las pestañas" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Cerrar las otras pestañas" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Añadir a Amigos" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Archivo de créditos cargado, %u cliente conocido" msgstr[1] "Archivo de créditos cargado, %u clientes conocidos" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - ¡Ha expirado el crédito de %u cliente!" msgstr[1] " - ¡Han expirado los créditos de %u clientes!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Archivo 'cryptkey.dat' no encontrado, creando." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Detalles del cliente" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "ID Baja" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "ID Alta" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Habilitado" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Soportado" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "No soportado" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Deshabilitado" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Conectado" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Desconectado" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "No completado" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Cliente sospechoso" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Verificado - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "No disponible" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Usuario %s (%u) solicitó tu lista de archivos compartidos -> Aceptada" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Usuario %s (%u) solicitó tu lista de archivos compartidos -> Denegada" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "Usuario %s (%u) ha solicitado tu lista de directorios compartidos -> Aceptada" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "Usuario %s (%u) ha solicitado tu lista de directorios compartidos -> Denegada" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Usuario %s (%u) solicitó tu lista de archivos compartidos del directorio %s -" "> aceptada" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Usuario %s (%u) solicitó tu lista de archivos compartidos del directorio %s -" "> denegada" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Usuario %s (%u) comparte el directorio '%s'" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Usuario %s (%u) enviado directorios compartidos no solicitados." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "Usuario %s (%u) envió la lista de archivos compartidos del directorio %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Usuario %s (%u) finalizó el envío de la lista de archivos compartidos" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Usuario %s (%u) enviada la lista de archivos compartidos no deseada" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Usuario %s (%u) denegó el acceso a la lista de directorios/archivos " "compartidos" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Comentarios del archivo" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Nombre de usuario" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Nombre de archivo" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Valoración" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Comentario" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Sin comentarios" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u comentario" msgstr[1] "%u comentarios" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Cliente bloqueado %s por enviar %s datos corruptos de un total de %s para el " "archivo '%s'" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Ba]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Al]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Muy baja" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Baja" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normal" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Alta" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Muy alta" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Lanzamiento" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Preguntando" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Conectando vía servidor" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Cola Llena" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "En Cola" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Descargando" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Recibiendo hashset" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Partes no necesitadas" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Imposible conectar IDBaja con IDBaja" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Demasiadas conexiones" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Conectando vía Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Demasiadas conexiones Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Baneado" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Error de Conexión" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Cola Remota Llena" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Antiguo MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Nuevo MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule Compatible" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Servidor local" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Servidor remoto" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Intercambio de Fuentes" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Pasivo" #: src/DataToText.cpp:133 msgid "Link" msgstr "Enlace" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Semillas fuente" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Resultado de la búsqueda" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Completado" #: src/DataToText.cpp:146 msgid "In progress" msgstr "En progreso" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "ERROR: No queda espacio en disco" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "ERROR: Partmet no encontrado" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ERROR: ¡Error de entrada/salida!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ERROR: ¡No se ha podido realizar la acción!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "En cola" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Ya estás descargando" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Formato de archivo temp incorrecto o desconocido." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Parte" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Tamaño" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Transferido" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Velocidad" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Progreso" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Fuentes" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioridad" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Estado" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Tiempo restante" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Última comprobación completa" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Última recepción" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "¿Estás seguro de que deseas borrar este archivo?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "¿Estás seguro de que deseas borrar estos archivos?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Reacción desde: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Detener" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pausar" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Reanudar" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "&Limpiar completados" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Intercambiar todas las fuentes (A4AF) a este archivo" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Intercambiar todas las fuentes (A4AF) a este archivo (Auto)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Intercambiar todas las fuentes (A4AF) a otro archivo" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Opciones Extendidas" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Previsualizar" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Mostrar detalles archivo" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Mostrar todos los comentarios" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Copiar la URL magnética al portapapeles" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Copiar el en&lace eD2k al portapapeles." #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Copiar respuesta al portapapeles" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "no asignado" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Asignar a categoría" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Abrir el archivo" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Introduce el nuevo nombre para este archivo:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Renombrar archivo" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Descargas (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Para prevenir la aparición de esta advertencia en cada vista previa,\n" "establece tu reproductor de vídeos en las preferencias (mplayer por defecto)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Previsualizar" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" "ERROR:¡Fallo al ejecutar un reproductor de medios externo! Comando: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Guardando archivo part %u de %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Todos los archivos part guardados." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Cargando archivos temporales desde %s." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Cargando archivo part %u de %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "ERROR: No se ha podido cargar el archivo de copia de seguridad. Busca en " "http://forum.amule.org para encontrar soluciones de recuperación de archivos " "part.met." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Todos los archivos part cargados." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "No se han encontrado archivos .part" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Encontrado %u parte de archivo" msgstr[1] "Encontrado %u partes de archivo" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "El sistema de ficheros del directorio Temporal, no puede manejar archivos " "grandes." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "El sistema de ficheros del directorio Entrante, no puede manejar archivos " "grandes." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Descargando %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Ya estás descargando este archivo '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Ya tienes este archivo '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Ya estás descargando el archivo %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "No se puede convertir el enlace magnet a eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Protocolo desconocido del enlace: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Enlace eD2k inválido! ERROR: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Cliente envió un paquete despues de una autentificación fallida." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Conexión externa cerrada." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "¡Conexiones externas deshabilitadas debido a contraseña en blanco!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Conexiones externas deshabilitadas en el archivo de configuración" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Nueva conexión externa, aceptada" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "ERROR: no se ha podido aceptar una nueva conexión externa" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "¡Conexión externa rechazada debido a contraseña en blanco en las opciones!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Conectando con cliente: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Versión desconocida" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "EC Incorrecto en la ID de versión, debe haber una incompatibilidad. Usa " "núcleo y remoto de la misma versión." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "¡No puedes conectar a una versión final desde una versión SVN cualquiera! " "*ufff* posible error evitado" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Versión de protocolo no válida." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Marcador de versión de protocolo inexistente." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" "Autentificación fallida: hash inválido especificado como contraseña EC." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Autentificación fallida: contraseña incorrecta." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Autentificación fallida: falta contraseña." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Solicitud no válida, deberías autentificarte primero." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Acceso concedido." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Mensaje \"%s\" de error enviado al cliente." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Intento de acceso no autorizado desde %s. Conexión cerrada." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "Error en comando remoto del archivo Part: Hash de archivo no encontrado: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Hash de archivo no encontrado: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "¡OOPS! ¡Error procesando OpCode!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Servidor no añadido" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "servidor no encontrado: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "necesitas definir un servidor para borrarlo" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k está deshabilitado en las preferencias." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Búsqueda en proceso. ¡Resultados obtenidos en breve!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Búsqueda web desde una interfaz remota no tiene sentido." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Sin puntos para el gráfico." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Tu cliente no está configurado para este nivel de detalle." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Conexión externa: apagado solicitado" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Ya estás cerrando." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Conexión externa: añadiendo enlace '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Enlace no válido o ya está en la lista." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Archivo no encontrado" #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Nombre de archivo incorrecto" #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Imposible renombrar archivo." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad está deshabilitado en opciones." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Ya estás conectado a eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Conectado a eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Ya estás conectado a Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Conectando a Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Todas las redes están deshabilitadas." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Desconectado de eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Desconectado de Kad" #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Conexión externa: recibido código de operación inválido: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "opcode no válido (¿versión de protocolo incorrecta?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Extensión desconocida '%s' para el comando '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Comando desconocido '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Este comando no tiene un argumento.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Este comando debe tener un argumento.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Este comando está incompleto, debes usar una de la extensiones....\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Extensiones disponibles:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Comandos disponibles:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Todos los comandos son sensibles a las mayúsculas.\n" "Teclea '%s ' para obtener información detallada del .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Salir de la aplicación." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Mostrar ayuda." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Para obtener ayuda de un comando, teclea 'help '.\n" "Para obtener la lista completa de comandos, teclea 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Usa '%s' para la lista de comandos\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "¡Error de sintaxis!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Error procesando el comando - ¡nunca debería pasar! Informa del fallo, por " "favor\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Este comando no debería tener ningún parámetro" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Este comando debe tener un parámetro." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Argumento no válido." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Esto es un comando incompleto." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Teclea '%s' para obtener mas ayuda.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Esto es %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Esto es %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Creando cliente...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, saliendo %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Imposible conectar con una contraseña en blanco.\n" "Debes especificar una contraseña en el archivo config\n" "o en linea de comandos, o introduce una cuando te pregunte.\n" "\n" "Saliendo...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Mostrar esta ayuda." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Host donde se está ejecutando aMule. (por defecto: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Puerto de conexión externa de aMule. (por defecto: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Contraseña de conexiones externas." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Leer configuración desde el archivo." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "No muestres ninguna salida." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Modo Extendido - muestra también los mensajes de depuración" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Selecciona el idioma del programa." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Escribe opciones de la línea de comando al archivo de configuración." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" "Crear archivo de configuración basado en el archivo de configuración de " "aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Imprime versión del programa." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Detalles del archivo" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "%.1f%% terminado." #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "¡No se ha podido abrir el archivo de amigos 'emfriends.met' para su lectura!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "¡No se ha podido abrir el archivo de amigos 'emfriends.met' para su " "escritura!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "CRÍTICO - sin cliente en sesión chat de inicio" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Amigos" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Mostrar &Detalles" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Añadir un amigo" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Eliminar amigo" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Enviar &Mensaje" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Ver archivos" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Establecer puesto reservado a un amigo" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "¿Estás seguro de que deseas borrar al amigo seleccionado?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "¿Estás seguro de que deseas borrar a los amigos seleccionados?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "No se le permite asignar mas de un puesto reservado.\n" " Solo se asignó un puesto reservado." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Selección múltiple" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Enviar mensaje al usuario" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Mensaje a enviar:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Borrar desde amigos" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Enviar mensaje" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Intercambia a este archivo" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "En cola: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Se ha pedido otro archivo" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Esperando por un puesto de subida" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "En Cola: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Subiendo" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Ninguno" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "No" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Sí" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Descargando..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "Descarga HTTP cancelada" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Imposible crear archivo de destino %s para la descarga!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "La URL a descargar no puede estar vacía" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "La URL %s devolvió: %i - Error (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Error crítico guardando el archivo descargado" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "Descargado %d bytes" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Se experaban %d bytes, pero se descargaron %d bytes" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "URL inválida para descarga HTTP o redirección HTTP (¿no habrás olvidado " "'http://'?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Imposible conectar al servidor de descarga HTTP" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Respuesta incorrecta desde el servidor de descarga HTTP" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Descargar nuevo GeoIP.dat desde %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Descarga del archivo GeoIP.dat fallida, abortando actualización." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Error al borrar el archivo %s, abortando actualización." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Error al renombrar el archivo %s, abortando actualización." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "Actualización realizada %s" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Error actualizando GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Error al descargar %s desde %s" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "Error al cargar datos de paises desde '%s'." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Cargando filtros IP 'ipfilter.dat' y 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "Error al cargar ipfilter.dat '%s', encontrado formato desconocido." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "Error al cargar ipfilter.dat '%s', imposible abrir el archivo." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Cargado %u rango IP desde '%s'." msgstr[1] "Cargados %u rangos IP desde '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u línea malformada fue descartada." msgstr[1] "%u líneas malformadas fueron descartadas." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Error al renombrar el archivo %s, abortando actualización." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "Filtro IP está listo" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Conectar desde \n" "clientes conocidos" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nodos (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "IP no válida para conectar" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Puerto no válido para conectar" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Por favor rellena todos los campos requeridos" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "¿Estás seguro de que quieres descargar un nuevo nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Si lo haces borrarás tus nodos actuales y reiniciarás la conexión Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "¿Continuar?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: palabra de búsqueda demasiado corta" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Palabra clave para búsqueda: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: palabra de búsqueda ya está en la lista de búsqueda: " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "Error al leer el archivo nodes.dat - demasiado antiguo. Esta versión (0) ya " "no está soportada." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Leído %u contacto Kad" msgstr[1] "Leídos %u contactos Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "Contactos no encontrados, por favor descarga un archivo nodes.dat." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Solo %d contacto Kad disponible, nodes.dat no escrito" msgstr[1] "Solo %d contactos Kad disponibles, nodes.dat no escrito" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Escrito %d contacto Kad" msgstr[1] "Escritos %d contactos Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Nombre de archivo" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Tamaño de archivo" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Media compartido" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Subido" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Pedido" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Aceptado" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Fuentes completas" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "ALERTA: Fichero de lista de compartidos corrupto, contiene una cabecera " "inválida." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Error al cargar entrada en lista de conocidos, el archivo debe de estar " "corrupto" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Entrada inválida en lista de conocidos, el archivo debe de estar corrupto: " #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Error desconocido %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "Imposible obtener descripción de error para el error %d" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Codificando" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Completando" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Completado" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Pausado" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Erróneo" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Esperando" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Debes especificar una contraseña no vacía." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "¡Contraseña incorrecta, no es un código MD5!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Error de conexión" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "La conexión EC ha fallado, Respuesta vacía." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Conexión externa: Respuesta errónea, falló el manejador. Conexión cerrada." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "¡Hecho! Conexión establecida con aMule" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "¡Hecho! Conexión establecida." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Conexión externa: Acceso denegado, razón:" #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Conexión externa: Falló el manejador." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Descarga HTTP hilo comenzado" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "Socket de escucha: Ok" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "ERROR: No se puede escuchar en el puerto TCP." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "ERROR:" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "ADVERTENCIA:" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Cerrar" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Cortar" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Copiar" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Pegar" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Limpiar" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Seleccionar todo" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Ilimitado" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Menú aMule" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Límites de velocidad" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "SU: Ninguno" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "SU: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DE: Ninguna, " #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DE: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Velocidad de descarga: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Velocidad de subida: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Información del cliente" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Alias: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "¡Ningún alias introducido!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID Cliente:" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "No conectado" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Nombre del servidor: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP del servidor: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "No conectado" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "Puerto TCP: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Puerto TCP: No está listo" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "Puerto UDP: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "Puerto UDP: No está listo" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Firma Online: Activada" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Firma Online: Desactivada" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Tiempo de ejecución: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Archivos compartidos: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Clientes en cola: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Total DE: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Total SU: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Límite de subida" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Límite de descarga" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Ocultar aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Mostrar aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Salir" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "Enlace eD2k:" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Enviar" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Haz Click aquí para añadir el enlace eD2k de la entrada de texto de control " "a la cola de descargas." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Los eventos son mostrados aquí. Para una lista completa de eventos, ve al " "registro, de la pestaña de servidores." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Cargando ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Número de usuarios en el servidor al cual estás conectado ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Usuarios: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Usuarios conectados al servidor actual y una estimación de el número total " "de usuarios." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Su: 0.0 | Desc: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Índice actual de subidas y descargas. Si habilitas los números significan " "los gastos indirectos en la comunicación del cliente." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Muestra el estado de conexión y las transferencias activas. Las flechas " "rojas significan que estás desconectado, las flechas amarillas significan " "que tienes ID-Baja (detrás de cortafuegos) y las flechas verdes significan " "que tienes ID-Alta (El tipo de conexión óptima)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "No Conectado ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Conectado al servidor." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Buscar" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Nombre: " #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tipo" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Local" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Global" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "FileHash" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Opciones extendidas" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtrar" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Tipo de archivo" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Todos" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Archivos" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Imágenes de CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Imágenes" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programas" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Textos" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Vídeos" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Extensión" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Tamaño Min" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Tamaño Max" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Disponibilidad" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filtro:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filtrar Resultados" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Invertir Resultado" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Ocultar Archivos Conocidos" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Comenzar" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Mas" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Busca más resultados en eD2k. Aún no soportado por Kad." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Cancelar" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Descarga" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Limpiar campos" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Resultados" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Limpiar descargas completadas" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Fuentes de archivo:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "General" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Nombre Completo :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/D" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "Archivo-met :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Tamaño :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Estado archivo part :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Última comprobación completa :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Transferencia" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Fuentes encontradas :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Transfiriendo fuentes :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Número de partes :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Disponibles :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Flujo de datos :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Tiempo Descarga Activa: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Transferido :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Tamaño Completado :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Gestión inteligente de corrupción" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Perdido por corrupción :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Ganado por compresión :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Paquetes salvados por I.C.H.:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Nombres de archivo" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Tomar" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Limpiar" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Aplicar" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" "Comentario/Calificación del archivo (El texto será visible por todos los " "usuarios)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Para una película, puedes poner su duración, su historia, el idioma ...\\n" "\\ny si es una falsificación (fake) puedes informar a los demás usuarios de " "aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Calificación de archivo" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Sin evaluar" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Inválido / Corrupto / Falsificación" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Pobre" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Aceptable" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Bueno" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Excelente" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Cambiar la calificación del archivo o advertir a otros usuarios si no es " "válido" #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Actualizar" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Descargando, por favor espera ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Tamaño desconocido" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Información requerida" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Dirección IP :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Puerto :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Información adicional" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Nombre de usuario :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Hash del usuario :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Añadir" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Velocidad de descarga" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Actual" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Media de ejecución" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Media de la sesión" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Velocidad de subida" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Conexiones" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Descargas activas" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Conexiones activas (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Subidas activas" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Árbol de estadísticas" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Nombre de usuario:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Hash de usuario:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Software del cliente:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Versión del cliente:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Dirección IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID usuario:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP Servidor:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Nombre servidor:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Ofuscación:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Transferencias al cliente" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Solicitud actual:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Velocidad media de subida :" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Velocidad media de descarga :" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Subido (sesión):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Descargado (sesión):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Subido (total):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Descargado (total):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Resultados" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Modificador DE/SU:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Ident Segura:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Rango de cola" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Puntuación cola:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Alias" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - la mula multi-plataforma" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" "Este es el nombre que los otros usuarios verán cuando se conecten a ti." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Lenguaje: " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Retardo antes de mostrar los mensajes emergentes." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Esto especifica el lenguaje usado en los controles." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Comprobar nueva versión al inicio" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Habilitando esto, haces que aMule compruebe si existe una nueva versión al " "inicio." #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Iniciar minimizado" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Habilitando esto, haces que aMule se minimice en el inicio." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Preguntar al salir" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Hacer que aMule pregunte antes de salir." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "Ocultar ventana cuando se pulse el botón cerrar" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Habilitar icono de sistema" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Esto habilita/deshabilita icono de sistema (o de la barra de tareas)." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimizar al icono de la bandeja" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Activando esto haces que aMule se minimice en la bandeja del sistema, " "parecido a la barra de tareas." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Tiempo de retardo de los mensajes emergentes: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "segundos" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Selección de navegador" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Introduce el nombre de tu navegador. Déjalo en blanco si quieres usar el de " "por defecto." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Examinar" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Abrir en nueva pestaña si es posible" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Abrir cuando sea posible, la página web en una nueva pestaña en lugar de en " "una nueva ventana" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Reproductor de vídeo" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Límites del ancho de banda" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Subida" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Asignación de puesto reservado" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Puertos" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Puerto TCP estándar " #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Este es el puerto eD2k estándar y no puede ser deshabilitado." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Puerto UDP para peticiones del servidor (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Puerto UDP estándar (Kad / búsqueda global) " #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" "Este puerto UDP es usado para peticiones extendidas de eD2k y la red Kad" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Habilitar UPnP para el reenvío de puerto del router" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "Puerto UPnP TCP (Opcional):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Dirección IP local de enlace: (vacía para cualquiera):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Solo usuarios avanzados: Si tienes múltiples tarjetas de red, introduce la " "dirección de la tarjeta que aMule deberá usar." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Max. fuentes descargando un archivo:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Max. conexiones simultaneas:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Autoconectar al iniciar" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Reconectar al perder la conexión" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Eliminar servidores caídos tras" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "reintentos" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Auto-actualizar la lista de servidores al inicio" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Lista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Actualizar la lista de servidores al conectar a un servidor" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Actualizar la lista de servidores cuando un cliente se conecta" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Usar sistema de prioridades" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Control inteligente de IDBaja al conectar" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Conexión segura" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Autoconectar sólo a Servidores fijos" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Asignar alta prioridad a los servidores añadidos manualmente" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Manejador Inteligente de Corrupciones (I.C.H)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Habilitar" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "I.C.H. avanzado, confiar en todos los hash (no recomendado)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Añadir archivos para descargar en modo pausado" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Añadir nuevas descargas con auto prioridad" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Intentar descargar antes la primera y última parte" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Descargar siguiente archivo pausado cuando otro se complete" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Solo en la misma categoría" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "En orden alfabético" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Reservar espacio en disco para los nuevos archivos" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Para los nuevos archivos reservar todo el espacio del archivo, esto reduce " "la fragmentación" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Detener descargas cuando se alcance el espacio libre en disco" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" "Selecciona esta opción si quieres que aMule compruebe el espacio en disco" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Introduce el espacio mínimo de disco deseado." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Guardar 10 fuentes en archivos raros (< 20 fuentes)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Subidas" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Añadir nuevos archivos compartidos con auto prioridad" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Carpeta de destino para las descargas" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Carpeta para los archivos temporales de descargas" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Carpeta de compartidos" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(Click derecho en icono de carpeta, para compartición recursiva)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Compartir archivos ocultos" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Gráficos" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Intervalo de actualización : 5 segs" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Tiempo de promedio del gráfico: 100 min" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Escala del gráfico de las conexiones: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Escala gráfica de descarga:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Escala gráfica de subida:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Colores: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Fondo" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Rejilla" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Descarga actual" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Promedio descarga en ejecución" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Promedio Descarga/sesión" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Subida actual" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Promedio Subida/tiempo" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Promedio subida/sesión" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Conexiones activas" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Barra de velocidad del icono de sistema" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Kad-nodos actual" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Kad-nodos ejecutando" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Kad-nodos sesión" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Seleccionar" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Árbol" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Número de versiones de clientes a mostrar (0=sin limite)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "¡¡¡ AVISO !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Nuevas conexiones max. / 5 segs" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Tamaño del buffer de archivo: 240000 bytes" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Tamaño cola de espera: 5000 clientes" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Intervalo de actualización de conexión al servidor: Desactivado" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Deshabilitar modo en reposo de ordenador" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Tema a usar: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Mostrar \"Gestor rápido de enlaces eD2k\", en todas las ventanas." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Mostrar info extendida en las pestañas de las categorías" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "Mostrar versión de la aplicación en el título" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Mostrar índices de transferencia en el título" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Antes del nombre de la aplicación" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Después del nombre de la aplicación" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Mostrar ancho de banda excedente" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Orientación vertical de la barra de herramientas" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Mostrar las banderas de los países para los clientes" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Archivos de la cola de descarga" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Mostrar porcentaje de progreso" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Mostrar barra de progreso" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Plano" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "3D" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Auto-ordenar archivos (Alta CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule ordenará automáticamente las columnas en tu lista de descargas" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parámetros de conexión externa" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Aceptar conexiones externas" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP de la interfaz que está escuchando" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Introduce una IP válida de la interfaz que está escuchando. Un campo vacío o " "0.0.0.0 significará cualquier interfaz." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "Puerto TCP:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Habilitar redirección de puertos UPnP en el puerto EC" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Contraseña" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Parámetros del servidor web" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Iniciar servidor web al inicio" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Plantilla Web" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Contraseña administrador" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Activar invitado" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Contraseña invitado" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Habilitar el reenvío de puertos UPnP en el puerto del servidor web" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Puerto TCP del servidor web para UPnP (Opcional)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Tiempo de actualización de página (en segs)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Activar compresión gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "Aceptar" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Aplicar cualquier cambio hecho en las opciones." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Cancelar cualquier cambio hecho en las opciones." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Titulo :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Comentario : " #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Directorio entrante :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Cambiar prioridad a nuevos archivos asignados :" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "No cambiar" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Selecciona color para esta categoría (seleccionada) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Restablecer" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Pulsa este botón para limpiar el registro." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" "Pulsa este botón para actualizar la lista de servidores desde una URL ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Lista de servidores" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Introduce la url de un archivo server.met y presiona el botón de la " "izquierda para actualizar la lista de servidores conocidos." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Añadir servidor manualmente: Nombre" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Introduce el nombre del nuevo servidor" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Puerto" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Introduce la IP del servidor, usando el formato X.X.X.X." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Introduce el puerto del servidor" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Añadir manualmente un servidor (rellena los campos) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Registro" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Info. servidores" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Info ED2K" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Info Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Click en este botón para actualizar la lista de nodos desde la URL ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nodos (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Introduce aquí la url del archivo nodes.dat y presiona el botón de la " "izquierda para actualizar la lista de nodos conocidos." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Estadísticas nodos" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Conectar" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Nuevo nodo" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Puerto:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Conectar desde clientes conocidos" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Desconectar Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Usar Identificación Segura de Usuario" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Se recomienda activar esta opción. No recibirá créditos si la ISU " "(Identificación Segura de Usuario) no está habilitada." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Ofuscación de protocolo" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Soporte de ofuscación de protocolo" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Esta opción activa la ofuscación de protocolo y hace que aMule acepte " "conexiones ofuscadas de otros clientes." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Usar ofuscación para conexiones salientes" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Esta opción hace que aMule use ofuscación de protocolo cuando se conecta a " "otros clientes/servidores." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Aceptar solo conexiones ofuscadas" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Esa opción hace que aMule solo acepte conexiones ofuscadas. Tendrá menos " "fuentes, pero todo su tráfico será ofuscado." #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Todos" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Ninguno" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Quién puede ver mis archivos compartidos:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" "Selecciona quién puede solicitar ver nuestra lista de archivos compartidos." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Filtrado de IPs" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtro clientes" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Habilitar filtrado de IPs de clientes definido en el archivo ~/.aMule/" "ipfilter.dat" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtro servidores" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Habilitar filtrado de IPs de servidores definido en el archivo ~/.aMule/" "ipfilter.dat" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Recargar lista" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "Recargar lista de filtrado de IPs desde archivo ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Actualizar ahora" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Auto-actualizar el filtrado de IPs al inicio" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Nivel de filtrado:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Filtrar siempre IP's de LAN" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Control paranoico de IPs no comprobadas" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Rechazar paquetes si la ip del cliente es diferente de la ip desde donde el " "paquete es recibido. Usar con cautela." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Usar el ipfilter.dat de sistema si está disponible" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Si no se encuentra un archivo ipfilter.dat local, permitir el uso de un " "archivo ipfilter del sistema." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Activar Firma online" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Habilitar la escritura de archivos del SO, se suele usar para crear firmas " "por aplicaciones externas." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Frecuencia de actualización (segs):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" "Cambiar la frecuencia (en segundos) de la actualización de la firma-online" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Guardar archivo de firma online en: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Pulsa aquí para seleccionar el directorio que contienen los archivos de " "firmas-online." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtrar mensajes entrantes (excepto conversación actual):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtrar todos los mensajes" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtrar mensajes de gente que no está en tu lista de amigos" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtrar mensajes de clientes desconocidos" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtrar mensajes que contienen (usa ',' como separador):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "añade aquí las palabras que amule debe filtrar y bloquear mensajes que las " "incluyan" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Mostrar mensajes recibidos en el registro" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Comentarios" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtrar comentarios que contengan (usar ',' como separador):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Conexión automática al servidor sin proxy" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Habilitar autentificación" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Habilita/deshabilita autentificación usuario/contraseña" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Nombre de usuario: " #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "El nombre de usuario a usar para conectar al proxy" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Contraseña:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "La contraseña a usar para conectar al proxy" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Habilitar Proxy" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Habilitar/Deshabilitar soporte Proxy" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Tipo Proxy:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Servidor Proxy:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Nombre del host del proxy" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Puerto Proxy:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "El puerto del proxy" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Conectar a:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Conexión a aMule remoto" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Nombre usuario:" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Recordar estas opciones" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Habilita modo extendido de depuración al inicio" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Abrir el archivo" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Mensajes de categorías:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Esperando..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Añadir .part" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Reintentar seleccionado" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Borrar seleccionado" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Tipos de eventos" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Estadísticas y clientes encolados para archivo(s) seleccionado(s) : Sesión / " "Total" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Subidas activas" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Porcentaje de archivos totales" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Todos los archivos" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Archivos seleccionados" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Solo subidas activas" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Mostrar clientes para" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Recargar:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Recargar tus archivos compartidos" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Enviar" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Enviar un mensaje específico." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Cerrar esta sesión de chat" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Conectar a cualquier servidor y/o Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Compartidos" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Deshabilitado [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/seg" msgstr[1] "bytes/seg" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "segs" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "mins" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "horas" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "días" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "Todo" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "El resto" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Incompleto" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Detenido" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Vídeo" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Archivos" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Texto" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Activo" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Usando directorio de configuración: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Esperando que la conversión de archivo part termine..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Importando %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Leyendo directorio temp" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Obteniendo información básica de archivo info de descarga" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Creando archivo de destino" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Cargando datos desde la antigua descarga del archivo (%u de %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Guardando bloque de datos en un nuevo archivo de descarga (%u de %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Obteniendo información del archivo fuente de descarga" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Añadiendo descarga y guardando nuevo archivo part" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importar archivos part" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Estado" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Hash de archivo" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Disco: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "¡Por favor elige un directorio para buscar descargas temporales! " "(subdirectorios serán incluidos)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "¿Quieres que los archivos fuente de una descarga importada " "satisfactoriamente sean borrados?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "¿Borrar fuentes?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "ERROR: Falló crear el archivo part" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Intentando cargar copia de seguridad del archivo met desde %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "ERROR: No se ha podido abrir el archivo part.met: %s ===> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "ERROR: el archivo part.met tiene tamaño 0: %s ===> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "ERROR:Versión de archivo part.met Inválida: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Error: %s (%s) está corrupto (etiquetas erróneas: %s), imposible cargar el " "archivo." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "ERROR: %s (%s) está corrupto (cuenta de etiquetas errónea), imposible cargar " "el archivo." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Intentando recuperar info de archivo..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "Recuperando archivo sin nombre - lo recuperaré como RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Recuperada toda la info disponible del archivo :D - Intentando usarla..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Imposible recuperar info de archivo..." #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Error al abrir %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "ADVERTENCIA: %s puede estar corrupto (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "ERROR salvando archivo part: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "ERROR E/S guardando archivo part: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "No se puede recuperar la duración de '%s' - usando el archivo %s." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "de alguna manera el tamaño de '%s' es 0 - usando archivo %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Error al guardar archivo part.met.seeds por %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Guardado %i semilla de fuentes en archivo part: %s (%s)" msgstr[1] "Guardado %i semillas de fuentes en archivo part: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Guardado %i semilla de fuentes en archivo part: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Error leyendo fuentes del archivo part (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Parte corrupta encontrada (%i) en %d parte del archivo %s - Resultado del " "hash del archivo |%s| Hash del archivo |%s|" msgstr[1] "" "Parte corrupta encontrada (%i) en %d partes del archivo %s - Resultado del " "hash del archivo |%s| Hash del archivo |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Parte (%i) completa encontrada en %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Recodificación terminada %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Error inesperado mientras se completaba %s. Archivo pausado" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Descarga terminada: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Borrando archivo: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "ADVERTENCIA: No se puede crear el hash de la parte descargada, set de hashes " "incompleto para '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "ERROR: No se puede crear el hash de la parte descargada, set de hashes " "incompleto para (%s). Esto no debería pasar nunca" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "EOF mientras comprobaba el hash de la parte %u con longitud %u (max %u) del " "trozo de fichero '%s' con longitud %u: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "ALERTA: No hay espacio libre en el disco! Pausando archivo: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Parte descargada %i corrupta en archivo: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Recuperada parte corrupta %i de %s -> Bytes salvados: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Asignando" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Espacio en disco insuficiente" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Descargado" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "ERROR: Fallo al abrir archivo part '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Por defecto" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albanés" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Árabe" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturiano" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Euskera" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Búlgaro" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Catalán" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Chino (Simplificado)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Chino (Tradicional)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Croata" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Checo" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Danés" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Holandés" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Inglés (U.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estonio" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finlandés" #: src/Preferences.cpp:648 msgid "French" msgstr "Francés" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Gallego" #: src/Preferences.cpp:650 msgid "German" msgstr "Alemán" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Griego" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebreo" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Húngaro" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italiano" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italiano (Suizo)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japonés" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Coreano" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lituano" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Noruego" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polaco" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugués" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugués (Brasileño)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Rumano" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Ruso" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Esloveno" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Español" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Sueco" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turco" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ucraniano" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Cambiar Lenguaje: " #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "No existen traducciones instaladas para aMule" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "No hay idiomas disponibles" #: src/Preferences.cpp:906 msgid "no options available" msgstr "opciones no disponibles" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Categoría inválida encontrada, saltando" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "Puerto TCP no puede ser mas alto de 65532 debido a que el socket del " "servidor UDP es TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Puerto por defecto que será usado (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Quitando directorio compartido no existente: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Conexión" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Directorios" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Servidores" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Archivos" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Seguridad" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Interfaz" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filtros" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Controles remotos" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Firma online" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Avanzado" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Eventos" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Depurando" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "Las siguientes variables serán sustituidas:\n" " %PARTFILE - ruta completa al archivo\n" " %PARTNAME - nombre del archivo" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "No cambies estos parámetros a menos que sepas\n" "lo que estás haciendo, de lo contrario puedes\n" "hacer que aMule funcione peor.\n" "\n" "aMule funcionará bien sin que cambies ninguno\n" "de estos parámetros." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Error al conectar configuración con programa, con el ID %d y clave %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" "Error al transferir datos desde la configuración al programa, con el ID %d y " "la clave %s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "El tipo de proxy al que estás conectando" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" "Error al transferir datos desde el programa a la configuración, con el ID %d " "y la clave %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule debe reiniciarse para aplicar los cambios:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- Puerto TCP cambiado.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- Puerto UDP cambiado.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Puerto de conexión externa cambiado.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Aprobación de conexión externa cambiada.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Interfaz de conexión externa cambiada.\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Ofuscación de protocolo" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Tu lista auto-actualizable de servidores esta vacía.\n" "La lista de servidores auto-actualizable al inicio será desactivada." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Tienes habilitadas las conexiones externas, pero no tienes especificada una " "contraseña.\n" "Las conexiones externas no pueden ser habilitadas a menos que especifiques " "una contraseña válida." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Lenguaje cambiado.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Directorio TEMP cambiado.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- Red ED2K habilitada.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "eD2k y Kad están desactivados.\n" "No podrás conectarte hasta que actives al menos uno de ellos." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad no se iniciará si tu puerto UDP está deshabilitado.\n" "Habilita un puerto UDP o deshabilita Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Debes reiniciar aMule ahora.\n" "Sino reinicias ahora, no sabemos si pasará algo malo.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Tu auto-actualización de lista de servidores está en blanco.\n" "Por favor introduce al menos una URL con un archivo server.met válido.\n" "Click en el botón \"Lista\" de esta casilla para introducir una URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Archivos temporales" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Archivos entrantes" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Firmas Online" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Elige una carpeta para %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Buscar reproductor de vídeo" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Selecciona navegador" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Ejecutable %s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Editar la lista de servidores" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Añade aquí las URL's para descargar los archivos server.met.\n" "Sólo una url por línea." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Intervalo de actualización: %d seg" msgstr[1] "Intervalo de actualización: %d segs" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Tiempo medio del gráfico: %d min" msgstr[1] "Tiempo medio del gráfico: %d mins" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Escala gráfica de conexiones: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Tamaño del buffer de archivo: %d byte" msgstr[1] "Tamaño del buffer de archivo: %d bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Tamaño de la cola de subida: %d cliente" msgstr[1] "Tamaño de la cola de subida: %d clientes" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Intervalo de refresco de la conexión al servidor: %d minuto" msgstr[1] "Intervalo de refresco de la conexión al servidor: %d minutos" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Intervalo de refresco de la conexión al servidor: Deshabilitado" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "deshabilitado" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Ejecutar comando en el evento '%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Habilitar ejecución de comando en el núcleo" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Comando del núcleo:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Habilitar ejecución de comando en la Interfaz" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Comando de la Interfaz: " #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Las siguientes variables serán reemplazadas:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "El tamaño mínimo debe ser menor al tamaño máximo. Tamaño máximo ignorado." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Alerta de búsqueda" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Principal" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "No se buscará en Kad si no está conectado a Kad" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" "No se puede realizar una búsqueda en eD2k si no se está conectado a eD2k" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Error inesperado mientras intentaba buscar en Kad: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ID Archivo" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Archivo" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Descargar en la categoría" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "Añadir %s para este archivo" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Buscar archivos relacionados (eD2k, búsqueda local)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Marcar como archivo conocido" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Copiar el enlace eD2k al portapapeles" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Cancelada" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Nuevo" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Fallo al conectar a todo los servidores ofuscados listados. Intentándolo de " "nuevo sin ofuscación." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Error al conectar a todos los servidores. Reintentando." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Protocolo eD2k deshabilitado en las preferencias, no se conecta." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" "No se han encontrado servidores válidos para conectar en la lista de " "servidores" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Conectado a %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Conexión establecida en: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Error fatal conectando. La conexión a Internet podría estar desactivada" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Conexión perdida con %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) parece estar caído." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) parece estar lleno." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Se reintentará la conexión automática al servidor en %d segundo" msgstr[1] "Se reintentará la conexión automática al servidor en %d segundos" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Conexión perdida" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Conectando con %s (%s:%i) fallido" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "ERROR: Socket inválido al comprobar el timeout" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Intento de conexión con %s (%s:%i) tiempo agotado." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Recibido último resultado de tu búsqueda DNS, descartando." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Cargando archivo server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "¡Archivo server.met no encontrado!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Error al cargar el archivo server.met '%s', encontrado formato desconocido." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "¡Error al abrir server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Archivo server.met corrupto, encontrada versión no válida: 0x%x, tamaño %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i servidor encontrado en server.met" msgstr[1] "%i servidores encontrados en server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d servidor añadido" msgstr[1] "%d servidores añadidos" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Error: el fichero 'server.met' está corrupto:" #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "Error E/S leyendo 'server.met'" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Servidor no añadido: [%s:%d] no has especificado un puerto válido." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Servidor no añadido: La IP de [%s:%d] está filtrada o no es válida." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Servidor no añadido: Servidor IP:Puerto [%s:%d] encontrado en la lista." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Servidor añadido: Servidor en [%s:%d] usando el nombre '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Estás conectado al servidor, que intentas borrar. Por favor desconéctate " "primero." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Error al abrir '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "¡Error al guardar server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "URL no válida" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Descarga de la lista de servidores finalizada desde %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "No se ha encontrado una entrada de dirección en 'addresses.dat'. Por favor, " "pega un lista de servidores válida en este archivo para poder actualizar de " "forma automática la lista de servidores." #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Descargando lista de servidores de %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "ADVERTENCIA: especificada una URL inválida para la actualización automática " "de servidores : %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "Error en addresses.dat, dirección para auto descarga de server.met inválida" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Error al descargar la lista de servidores desde %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Servidor local es filtrado por los Filtros IP, ¡conectando a un servidor " "diferente!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Nombre del servidor" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Dirección" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Puerto" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Descripción" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Usuarios" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Servidor fijo" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versión" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Estás conectado a un servidor que estás intentando borrar. Desconéctate " "primero. El servidor no será borrado." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Nombre desconocido)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Estás seguro de que quieres eliminar el servidor fijo %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Servidores (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Servidor" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Conectar al servidor" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Marcar servidor como fijo" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Desmarcar servidor como fijo" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Marcar servidores como fijos" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Desmarcar servidores como fijos" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Borrar servidor" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Borrar servidores" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Eliminar todos los servidores" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Copiar los enlaces eD2k al portapapeles" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Reconectar al servidor" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "¿Estás seguro de que deseas borrar todos los servidores?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "¿Estás seguro de que deseas borrar el servidor seleccionado?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "¿Estás seguro de que deseas borrar los servidores seleccionados?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "ERROR: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "ADVERTENCIA: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "El nuevo ID-Cliente es %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "ALERTA: ¡Has recibido ID-Baja!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tEsto sucede porque estás detrás de un cortafuegos o de un router." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPara mas información, por favor ve a http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "¡Información recibida del servidor desconocida! - demasiado pequeña" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Recibido %d servidores nuevo" msgstr[1] "Recibido %d servidores nuevos" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Guardado de lista de servidores completado." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "El servidor rechaza el último comando" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Paquete bogus recibido desde el servidor: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Error mientras se estaba procesando un paquete desde el servidor: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Imposible crear un hilo de resolución de DNS para conectar con %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "Servidor IP %s (%s) está filtrado. No conectará." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "usando ofuscación de protocolo." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Conectando a %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Imposible resolver dns para el servidor %s: ¡Imposible conectar! " #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Servidor no añadido: IP o nombre de host no especificado." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Servidor no añadido: Servidor-puerto especificado no válido." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Status de eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Estado Kademlia:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "Ejecutándose en modo Red Local" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Ejecutando" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Estado:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Estado de Conexión:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Tras cortafuegos - abre el puerto TCP %d en tu enrutador o cortafuegos" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "Estado de Conexión UDP:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Tras cortafuegos - abre el puerto UDP %d en tu enrutador o cortafuegos" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Estado tras cortafuegos: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "No se requiere amigo - puerto TCP abierto" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "No se requiere amigo - puerto UDP abierto" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "No amigo" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Conectando a amigo" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Conectando a amigo en %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Fuentes indexadas:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Palabras clave indexadas:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Notas indexadas:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Carga indexada:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Media de Usuarios:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Media de Archivos:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "No ejecutando" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Añadiendo archivo %s a compartidos" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Encontrado %i archivo compartido" msgstr[1] "Encontrados %i archivos compartidos" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Encontrado %i archivo compartido, %i desconocido" msgstr[1] "Encontrado %i archivos compartidos, %i desconocidos" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "ERROR: Intentando compartir %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Directorio compartido no encontrado, saltando: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Sin archivos que compartir en directorio: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Nombre Usuario" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Velocidad De Descarga" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Velocidad de subida" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Partes Disponibles" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "Estado de la subida" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Estado de la descarga" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Origen" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Nombre de archivo local" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "Compartidos" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Peticiones" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Peticiones aceptadas" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Datos transferidos" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Media Compartido" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Partes obtenidas" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Fuentes completas" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Directorio" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Añadir Comentario/Valoración" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Editar Comentario/Valoración" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Renombrar" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Añadir archivos en colección a la lista de descargas" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Copiar &URL magnético al portapapeles" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Copiar el enlace eD2k al portapapeles (&Fuente)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" "Copiar el enlace eD2k al portapapeles (Fuente) (&Con opciones de cifrado)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Copiar el enlace eD2k al portapapeles (&Nombre del host)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Copiar el enlace eD2k al portapapeles (Nombre del host) (&Con opciones de " "cifrado)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Copiar el enlace eD2k al portapapeles (Información &AICH)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Copiar el enlace eD2k al portapapeles (Información &AICH)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Necesitas IDAlta para crear un enlace fuente válido" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Archivos Compartidos (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Archivo part]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Nombre de archivo remoto" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Datos subidos (Sesión (Total)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Total por tráfico excedente (Paquetes): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Excedente por peticiones de archivo (Paquetes): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Excedente por intercambio de fuentes (Paquetes): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Tráfico excedente de servidores (Paquetes): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Tráfico excedente Kad (Paquetes): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Cifrado excedente (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Subidas activas: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Subidas en espera: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Total de subidas satisfactorias: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Total de subidas erróneas: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Tiempo medio de subida: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Datos descargados (Sesión (Total)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Fuentes encontradas: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Descargas activas (partes): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Índice SU:DE Sesión (Total): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Velocidad media de descarga (Sesión): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Velocidad media de subida (Sesión): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Velocidad máxima de descarga (Sesión): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Velocidad máxima de subida (Sesión): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Reconexiones: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Tiempo desde la primera transferencia: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Conectado al servidor desde: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Conexiones activas (estimado): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Alcanzado límite máximo de conexiones: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Media de conexiones (estimado): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Pico de conexiones (estimado): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Clientes" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Desconocido: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Filtrado: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Bloqueado: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Total: %i Conocido(s): %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Servidores activos: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Servidores caídos: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Total: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Servidores borrados: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Servidores filtrados: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Usuarios en servidores activos: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Archivos en servidores activos: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Usuarios totales: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Archivos totales: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Ocupación de Servidores: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Número de archivos compartidos: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Tamaño total de archivos compartidos: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Tamaño medio de archivo: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Sistema Operativo" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "No recibido" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Conexiones activas (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "No disponible" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Nunca" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Comando '%s' con pid '%d' ha terminado con código '%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Ejecuta y sal." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Formato IP no válido. Usa xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Este comando requiere un argumento. Argumentos válidos: 'all (todo)' o un " "numero.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Procesando por hash: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Procesando por nombre de archivo: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Este comando requiere un argumento. Argumentos válidos: un hash de archivo.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Número inválido\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Hash no válido (la longitud debería ser exactamente 32 caracteres)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Teclea '%s' para obtener mas ayuda.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Tamaño de descarga: %i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Solicitud fallida con un error desconocido." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operación satisfactoria." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Solicitud fallida con el siguiente error: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "El Filtro IP para clientes es %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "Apagado" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "Encendido" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "El Filtro IP para servidores es %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "El nivel de filtrado de IP actual es %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Límites del ancho de banda: Subida: %u kB/s, Bajada: %u kB/s\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Conectado a %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Conectando ahora" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "tras cortafuegos" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Descarga:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Subida:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Clientes en cola:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Fuentes totales:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Número de resultados de la búsqueda: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Progreso Búsqueda: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Progreso de búsqueda no disponible" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Recibida una respuesta desconocida desde el servidor, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Mostrar una breve información de estado." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Mostrar estado de conexión, velocidad subida/descarga actual, etc.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Mostrar árbol completo de estadísticas." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Opcionalmente, un número entre 0-255 puede ser un argumento de este " "comando,\n" "el cual dice cuantas entradas del árbol de versión de cliente deberían " "mostrarse.\n" "Con 0 o sin valor significa 'sin limite'.\n" "\n" "Ejemplo: 'statistics 5' mostrará solo las 5 versiones que mas se repiten de " "cualquier cliente.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Terminar aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Terminar el núcleo remoto (amule/amuled) en funcionamiento.\n" "Esto terminará también el cliente modo texto, ya que no se puede\n" "usar sin un núcleo en funcionamiento.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Recargar el objeto dado." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Recargar lista de compartidos." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Recargar tabla de filtrado IP." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Selección tabla actual de filtrado IP." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Actualizar tabla de filtrado IP desde URL." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Si la URL es omitida, será usada la URL de las opciones." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Conectado a la red." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Esto conectará a todas las redes que estén habilitadas en opciones.\n" "Opcionalmente también puedes especificar un servidor de forma IP:Puerto, " "para\n" "conectar a ese servidor solamente. La IP debe ser una dirección IPv4,\n" "o un nombre DNS." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Conectar solo a eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Conectar a Kad solamente." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Desconectado de la red." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" "Esto te desconectará de todas las redes en las que estás actualmente " "conectado.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Desconectarse solo de eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Desconectarse solo de Kad." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Añadir un enlace eD2k o magnet al núcleo." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "En enlace eD2k a añadir puede ser:\n" "*) un enlace a un archivo (ed2k://|file|...),será añadido a la cola de " "descargas,\n" "*) un enlace a un servidor (ed2k://|server|...), será añadido a la lista de " "servidores,\n" "*) o un enlace a una lista de servidores, en tal caso, todos los servidores " "en la lista\n" "serán añadidos a la lista de servidores.\n" "\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Asigna un valor de opción." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Asignar opciones de filtrado IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Activa el filtro para clientes y servidores." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Desactiva el filtro para clientes y servidores." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Activa/Desactiva el filtro para clientes." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Activa el filtro para clientes." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Desactiva el filtro para clientes." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Activa/Desactiva el filtro para servidores." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Activa el filtro para servidores." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Desactiva el filtro para servidores." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Selección nivel de filtrado de IP" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Niveles válidos en el filtro 0-255, y el valor por defecto (inicial)\n" "es 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Asignar limites de ancho de banda." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "El valor dado a estos comandos han de ser en kilobytes/seg.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Asignar un limite de subida." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "El valor dado a estos comandos han de ser en kilobytes/seg.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Asignar un limite de descarga." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Obtener y mostrar un valor de opciones" #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Obtener opciones de filtrado IP." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Obtener estado del filtrado IP para clientes y servidores." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Obtener estado del filtrado IP para clientes." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Obtener estado del filtrado IP para servidores." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Obtener nivel de filtrado IP." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Obtener limites de ancho de banda." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Ejecuta una búsqueda." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Una búsqueda por tipo, debe especificarse el tipo:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Ejemplo: 'search kad archivo' ejecutara una búsqueda en kad de \"archivo\".\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Ejecuta una búsqueda global." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Ejecuta una búsqueda local" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Ejecuta una búsqueda kad" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Muestra los resultados de la última búsqueda." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Devuelve los resultados de la búsqueda anterior.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Muestra el progreso de una búsqueda." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Muestra el progreso de una búsqueda.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Comenzar descargando un archivo" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "El número de un archivo de la última búsqueda se tiene que dar.\n" "Ejemplo: 'download 12' iniciará la descarga del archivo con el número 12 de " "la búsqueda anterior.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Pausar descarga." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Resumir descarga." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Cancelar descarga." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Asignar prioridad de descarga." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Fija prioridad de la descarga a Baja, Normal, Alta o Auto.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Establecer la prioridad a baja." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Establecer la prioridad a normal." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Establecer la prioridad a alta." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Establecer la prioridad a auto." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Mostrar colas/listas." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Mostrar cola subida/descarga, lista de servidores o lista de compartidos.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Mostrar cola de subida." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Mostrar cola de descarga." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Mostrar registro." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Mostrar lista de servidores." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Limpiar registro." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Comando deprecado, usa %s." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Este es un comando en desuso, y será borrado en el futuro.\n" "Usa '%s' en su lugar.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Cliente de texto aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Convirtiendo antiguos hashsets AICH en '%s' a 64b en '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "ALERTA: El nombre de archivo '%s' es incorrecto y será renombrado a '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "ALERTA: El archivo '%s' ya existe, renombrando el nuevo a '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "¿Estás seguro que deseas cancelar y borrar todos los archivos de esta " "categoría?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Confirmación requerida" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Máximo 99 categorías soportadas." #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Demasiadas categorías" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Sin catalogar" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Seleccionar filtro de vistas" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Añadir categoría" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Editar categoría" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Eliminar categoría" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "Error al abrir el archivo (%s), borrando de la lista de compartidos." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Hashset solicitado de archivo desconocido: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Resumiendo subidas del archivo: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Suspendiendo subida del archivo: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Error al ejecutar el comando `%s' en el evento `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Descarga completada" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "La ruta completa al archivo." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "El nombre del archivo sin la ruta." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "El hash eD2k del archivo." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "El tamaño del archivo en bytes." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Tiempo de actividad de descarga acumulado." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Nueva sesión de chat iniciada" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Remitente del mensaje." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Sin espacio" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Partición de disco." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Error completando" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Procesando numero de archivo %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Has preguntado por hashes de partes (Solo usado por archivos > 9.5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s --->¡ No existe el archivo !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, el creador de enlaces eD2k para aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "¡Bienvenido!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Parámetros de entrada" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Archivo a codificar" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Añadir URLs opcionales para este archivo" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Introduce aquí el archivo del que quieras calcular el enlace eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Introduce aquí la URL que quieres añadir al enlace eD2k: Añade / al final " "para permitir a aLinkCreator agregar el nombre del archivo actual" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Borrar" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Crear enlace con hashes de partes" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Ayuda para separar archivos nuevos y raros mas rápidamente, el coste será un " "tamaño de enlace mayor" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Hash de archivo MD4" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Hash del archivo eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "Enlace eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Guardar" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Copiar al portapapeles" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Abrir" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Abrir un archivo para calcular su enlace eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Copiar el enlace eD2k calculado al portapapeles" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Guardar como" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Guardar el enlace eD2k calculado en un archivo" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Acerca de aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Selecciona el archivo del que quieras calcular el enlace eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Imposible abrir el portapapeles" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "¡Nada para copiar ahora!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Selecciona el fichero para el enlace eD2k calculado" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Imposible abrir " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Por favor, introduce un nombre de archivo" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "¡Nada para guardar ahora!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, el creador de enlaces eD2k de aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Imágenes desde http://www.everaldo.com y http://www.icomania.com\n" "y http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distribuido bajo la licencia GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Calculando hash..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator está trabajando para ti" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Calculando Hash MD4..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Calculando Hashes eD2k..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "¡ Cancelado !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Terminado en %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "¡ Ya tienes añadida esa URL !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Por favor, introduce una URL" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Imposible abrir %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i día(s) %i hora(s) %i min %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, Estadísticas aMule en linea" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Máximo índice Desc desde que wxCas está ejecutándose" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Máximo índice Desc absoluto durante ejecuciones anteriores de wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistema" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Parar auto recargar" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Salvar imagen de estadísticas en linea" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Imprimir imagen de estadísticas en linea" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Opciones" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Acerca de wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Iniciar auto recargar" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Auto recargar, detenido" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Auto recargar, iniciado" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Salvar imagen de estadísticas" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Estadísticas aMule en linea" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Hubo un problema imprimiendo.\n" "Tal vez tu impresora actual no esté configurada" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Imprimiendo" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, Estadística de firma en linea de aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Basado en CAS por Pedro de Oliveira \n" "\n" "Distribuido bajo GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh Oh, aMule no está ejecutándose..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule ya está ejecutándose" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule se está ejecutando, pero está desconectado" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule está conectando..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh Oh, estado de aMule desconocido..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " ha sido ejecutado durante" #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " ¡ está detenido !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " ¡ no está conectado !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " está conectando..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " está haciendo algo extraño, ¡ compruébalo !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " está conectado a" #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "apagado" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " conectado" #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " con " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Total Descargado:" #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Subido: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Descarga de sesión" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Descargado: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Subida: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Compartiendo: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr "archivo(s), Clientes en cola: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Tiempo: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " en " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Media de carga del sistema (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Tiempo de ejecución del sistema" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Directorio que contiene el archivo amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Introduce el directorio donde está tu archivo amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Intervalo de refresco en segundos" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Generar un archivo de estadísticas siempre que se actualice" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" "Introduce el directorio donde tu quieres generar la imagen de estadísticas" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Sube periódicamente tu imagen de estadísticas al servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "Url FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Directorio FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Introduce la URL de tu servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Introduce el directorio de tu servidor FTP donde poner tu imagen de " "estadísticas" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Usuario" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Introduce el nombre de usuario para conectarte a tu servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Introduce la contraseña de usuario para conectarte a tu servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Intervalo de actualización de FTP en minutos" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Validado" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Directorio que contiene tu archivo de firma" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Directorio donde se genera la imagen de estadísticas" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Carga la plantilla " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Puerto HTTP del servidor web" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Usar redirección de puertos UPnP en el puerto del servidor web" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Puerto UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Usar compresión gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Contraseña de acceso total para el servidor web" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Contraseña de invitado para servidor web" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Permitir acceso a invitado" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Denegar acceso a invitado" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Cargar/guardar la configuración del servidor web desde/a aMule remoto" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Ruta al archivo config de aMule. ¡NO USAR DIRECTAMENTE!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Deshabilitar interprete PHP (desuso)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Recompila páginas PHP para otra solicitud" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Servidor web aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "conexión aceptada del cliente web\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "ERROR: no se acepta conexión del cliente web\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Solicitud fallida con el siguiente error: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Fichero índice no encontrado: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sesión terminada - solicitando conexión\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sesión ok, conectado\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sesión ok, no conectado\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "No hay ninguna sesión - conecte de nuevo\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sesión creada - solicitando conexión\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Procesando solicitud [original]:" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Contraseña no especificada, el inicio de sesión no será permitido." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Comprobando contraseña\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Hash de la contraseña incorrecto\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Contraseña ok\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Contraseña errónea\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" "No has introducido ninguna contraseña. No está permitida una contraseña en " "blanco.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Desconexión solicitada\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Procesando solicitud [redirigida]:" #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Archivo part %s (%s) no tiene archivo de fuentes" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Archivo part %s (%s) tiene un archivo de fuentes vacío" #~ msgid "Download status" #~ msgstr "Estado de la descarga" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Intervalo de actualización: %d seg" #~ msgstr[1] "Intervalo de actualización: %d segs" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "" #~ "Comentarios y valoraciones todavía no están soportadas en la interfaz " #~ "remota" #~ msgid "Transferring" #~ msgstr "Transfiriendo" #, fuzzy #~ msgid "QR: ???" #~ msgstr "LC: %u" #~ msgid "QR: %u" #~ msgstr "LC: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "En cola" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - muestra el progreso de una búsqueda" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Comenzando a crear el hash MD4 y AICH del archivo: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Comenzando a crear el hash MD4 del archivo: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Comenzando a crear el hash AICH del archivo: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "ALERTA: Imposible borrar '%s' original, creando copia de seguridad" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "ALERTA: Error al borrar %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Calificación (total):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Intentar transferir partes completas en todas las subidas" #~ msgid "Networks window" #~ msgstr "Ventana de redes" #~ msgid "Searches window" #~ msgstr "Ventana de búsquedas" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Descargando" #~ msgid "Shared files window" #~ msgstr "Ventana de archivos compartidos" #~ msgid "Messages window" #~ msgstr "Ventana de mensajes" #~ msgid "Statistics graph window" #~ msgstr "Ventana del gráfico de las estadísticas" #~ msgid "Preferences settings window" #~ msgstr "Ventana de la configuración de las preferencias" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Icono de sistema perdido, intentando recrearlo..." #~ msgid "Transfers" #~ msgstr "Tráfico" #~ msgid "Files transfers window" #~ msgstr "Ventana de transferencia de archivos" #~ msgid "Unban" #~ msgstr "Readmitir" #~ msgid "Show Uploads" #~ msgstr "Mostrar subidas" #~ msgid "Show Queue" #~ msgstr "Mostrar cola" #~ msgid "Select View" #~ msgstr "Seleccionar vista" #~ msgid "Client Software" #~ msgstr "Software Cliente" #~ msgid "Waited" #~ msgstr "En espera" #~ msgid "Upload Time" #~ msgstr "Subiendo" #~ msgid "Upload/Download" #~ msgstr "Subida/Descarga" #~ msgid "Remote Status" #~ msgstr "Estado remoto" #~ msgid "File Priority" #~ msgstr "Prioridad del archivo" #~ msgid "Score" #~ msgstr "Resultado" #~ msgid "Asked" #~ msgstr "Preguntado" #~ msgid "Last Seen" #~ msgstr "Última comprobación" #~ msgid "Entered Queue" #~ msgstr "Entrado en cola" #~ msgid "Transferred Up" #~ msgstr "Subido" #~ msgid "Transferred Down" #~ msgstr "Descargado" #~ msgid "Userhash" #~ msgstr "Hash de usuario" #~ msgid "Encrypted" #~ msgstr "Cifrado" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "Cargadas %d fotos de banderas." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Mostrar subida / Cola de subida" #~ msgid "Clients on queue :" #~ msgstr "Clientes en cola :" #~ msgid "Current Session" #~ msgstr "Sesión actual" #~ msgid "Total" #~ msgstr "Total" #~ msgid "Requested :" #~ msgstr "Peticiones:" #~ msgid "Create backup for preview" #~ msgstr "Crear un copia para la previsualización" #~ msgid "Files Transfers Window" #~ msgstr "Ventana de transferencias de archivos" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Total Usuarios: %s | Total Archivos: %s" #~ msgid "HTTP download thread ended" #~ msgstr "Descarga HTTP hilo finalizado" #~ msgid "Host: %s:%i\n" #~ msgstr "Host: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Respuesta: %i (Error: %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "ALERTA: Repuesta vacía en la creación del medio" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "ERROR: Código de redirección sin URL" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country(): Error al cargar el dato del país desde " #~ msgid "Get IPFilter level." #~ msgstr "Obtener nivel de filtrado de IP." #~ msgid "Makes a search." #~ msgstr "Haz una búsqueda." #~ msgid "Killed!" #~ msgstr "¡Matado!" #~ msgid "Using amuleweb in '%s'." #~ msgstr "Usando amuleweb en '%s'." #~ msgid "Shutting down aMule..." #~ msgstr "Apagando aMule..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Las siguientes opciones cambiaron en esta versión por razones de " #~ "seguridad:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Activado soporte de ofuscación de protocolo para conexiones entrantes y " #~ "salientes.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Desactivada la actualización de la lista de servidores desde otro " #~ "cliente o servidor.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Para más información de la razón de estés cambios, busque información\n" #~ "de \"fake servers\" en la wiki de aMule http://wiki.amule.org.\n" #~ "Es importante que limpie cualquier servidor falso de su lista de " #~ "servidores para que aMule funcione correctamente." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "Adicionalmente, las opciones del navegador han sido restauradas. Por " #~ "favor configura las opciones de tu navegador otra vez si es necesario.\n" #~ msgid "Fetching status..." #~ msgstr "Obteniendo estado..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Usuarios: E: %s K: %s | Archivos E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Cliente %s en IP:Puerto %s:%d usando %s %s %s" amule_2.3.1+git20151120.0023527bc2.orig/po/et_EE.po0000644000175000017500000061700612611472361017454 0ustar morphmorph# translation of aMule to Estonian # aMule i18n resource file. # Copyright (C) 2006 aMule Team # This file is distributed under the same license as the aMule package. # # Kry , 2004. # Hans , 2006, 2007, 2008, 2009, 2010, 2011. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-01-01 19:46+0200\n" "Last-Translator: \n" "Language-Team: Estonian \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" "X-Generator: Lokalize 1.0\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Lisa Sõber" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Pead sisestama kehtiva IP ja pordi!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informatsioon" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Määratud kasutaja kontrollsumma pole kehtiv!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Ei suuda avada ED2KLinks faili." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "HOIATUS: Sa ei saa ennast eD2k lingi jaoks allikana lisada ajal kui omad " "lowid'd." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Ok, lahkun põhiprogrammist..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Mõrvan amuleweb tegelase, protsessi id '%ld' ... " #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Mõrvan amuleweb tegelase, protsessi id '%ld' ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Nurjunud" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Peatan tuuma." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "aMule seiskamine lõpetatud." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "aMule väljumise mälu veajälituse tulemus:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "EC seadistused" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Parool on määratud ja välised ühendused võimalikud." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "!!! HOIATUS !!!" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Sinu keelelokaat muudeti süsteemi vaikeväärtuseks seoses konfiguratsiooni " "muudatustega. Sorry." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Serverite nimekirjas pole ühtegi serverit.\n" "Kas aMule võiks uue nimekirja tõmmata?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Serverite nimekiri tõmmatud" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "web server töötab protsessi id'ga %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Soovisid et web server käivitataks käivitumisel, kuid amuleweb programm pole " "võimeline käivituma. Palun paigalada versioon mis sisaldab aMule web " "serverit või kompileeri aMule kasutades võtit --enable-webserver ja seejärel " "make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "VIGA" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Ei suuda siduda porti määratud aadressiga: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Port %u ei ole kasutatav. Sa saad LOWID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Port %u ei ole kasutatav. !!\n" "\n" "Sa saad kasutada kui LOWID kasutaja.\n" "Kasuta netstat programmi kontrollimaks kuna port vabaneb\n" "ja proovi amule uuesti käivitada." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Ei suutnud luua OnlineSig Faili" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Ei suutnud luua aMule OnlineSig Faili" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Tundub et valitud keelelokaat pole sinu karpi installeritud. (Märkus: Ma " "proovin seda seada sellest hoolimata)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "See on aMule %s käivitamise esimene kord" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "See on testversioon, mida igapäevaselt uuendatakse ja\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "me ei anna mingit garantiid, et see ei lõhu midagi, ei süüta sinu elamist\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "ega tapa sinu koera. Sellest hoolimata peaks see olema *turvaline* " "kasutada.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Rohkem informatsiooni, tuge ja uusi programmi versioone leiad meie " "kodulehelt,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "aadressil www.aMule.org või meie IRC kanalis #aMule aadressil irc.freenode." "net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "" "Tunne ennast vabalt suvaliste vigade leidmisest teavitamisel aadressil " "http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Online Allkirja kataloog on VIGANE!\n" " Online Allkirja ei kasutata, kuni parandad vea seadetes." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Teatatud serveri nimi" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Kettaruumi eraldamine faili '%s' jaoks ebaõnnestus: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "VIGA: Ei suutnud avada logifaili" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "HOIATUS: logifail on tühi, miskit on kapitaalselt viltu." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Log on nullitud" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Serveri teade: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "Fail %s jäeti vahele, sest soovitud fail pole uuem." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Ebaõnnestus sõlmede nimekirja tõmbamine." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Ebaõnnestus tõmmatud versiooni kotrollfaili avamine" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Versiooni kontrollfail on korrumpeerunud" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Kasutad aegunud aMule versiooni!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Sinu aMule versioon on %i.%i.%i ja uusim versioon on %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Uuema aMule versiooni saad alati aadressilt http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "HOAITUS: Sinu aMuled versioon on vananenud: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Sinu aMule koopia on ajakohane." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Versiooni kontrollfaili tõmbamine ebaõnnestus" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Kasutajaid: %s | Faile: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Kasutajaid: E: %s K: %s | Faile E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Ühtegi võrku pole valitud" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "koos LowID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "koos HighID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Ühendatud %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Ühendun %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "eD2k ühendus katkestatud." #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad käivitatud." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad peatatud." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Ühendus Kad võrk (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Ühendus Kad võrku (tulemüüriga)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Ühendus Kad võrguga katkestatud" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Kad võrku ei saa kasutada kui seadetes on UDP port väljalülitatud, ei ühendu." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Kad on seadetes väljalülitatud, ei ühenda." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "VIGA: aMule deemonit ei saa katkestatud Välisühendustega kasutada. " "Välisühenduste lubamiseks kasuta tavalist aMule, käivita amuled võtmega '--" "ec-config' või määra võtme \"AcceptExternalConnections\" väärtuseks 1 " "konfiguratsioonifailis ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "VIGA: Väliste ühenduste jaoks peab olema määratud kehtiv parool ning aMule " "deemonit ei saa kasutada ilma väliste ühendusteta. aMule deemoni " "kasutamiseks pead määrama konfiguratsioonifailis ~/.aMule/amule.conf " "\"ECPassword\" väärtuseks kohase väärtuse.Parooli seadmiseks käivita amuled " "võtmega '--ec-config'. Lisainformatsiooni leiad http://wiki.amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - käivituse stopper" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: lahkun taustaprotsessiks - näeme veel" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Ei suuda luua PID faili" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "VIGA: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "See on eMulel põhinev aMule %s." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Jookseb %s peal" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "Külasta http://www.amule.org ja vaata ehk on uuem versioon saadaval." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "Fataalne VIGA: Ei suutnud luua stopperit." #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "aMule kaugjuhtimine " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Piiluvaade:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" " eMulel põhinev, platvormist sõltumatu, p2p klient \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Web: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Foorum: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "KKK: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Kontakt: admin@amule.org (administratiivsed küsimused) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 aMule Meeskond \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Osa aMule põhineb \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Sõlmest-Sõlmeni ruutimine põhineb XOR meetrikal.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (C) 2002-2011 Petar Maymounkov \n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Teade" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "aMule dialoog hävitatud" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Ühendun" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Ühendun" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Lahutatud" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Tulemüüriga" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Ühendatud" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Ühendun" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Väljas" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Loobu" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Lõpeta käimasolevad ühenduskatsed" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Ühendu lahti" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Lõpeta ühendus ühendatud võrkudega" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Ühenda" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Ühendu olemasolevate, aktiivsete võrkudega" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Üles: %.1f(%.1f) | Alla: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Üles: %.1f | Alla: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Ühendatud)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Ühenduseta)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Kas sa tõesti tahad %s'st väljuda?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Kinnitan väljumise" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Käivitamise korraldus: " #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- vaikimisi -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Rüüde kataloogi '%s' ei eksiteeri" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "HOIATUS: Ei suuda rüüfaili '%s' lugemiseks avada" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Võrgud" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Võrgud" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Otsingud" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Otsingu aken" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Tõmbamised" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Tõmbamised" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Jagatud failid" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Jagatud failide Aken" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Teated" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Teadete Aken" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistika" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Statistiliste graafikute aken" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Seaded" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Seadete aken" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Impordi" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Osafailide importimise tööriist" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Info" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Info/Appi" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "eD2k võrk" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Kad võrk" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Võrk puudub" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "aMule kaugjuhtimine" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Fataalne VIGA: Ei suutnud stopperit." #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Ühendu eemalasuva amuulaga" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Fataalne VIGA: Ei suutnud luua Poll stopperit." #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Lähen tegevuse tsüklisse..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Ühendun..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Ühendus ebaõnnestus " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Võrgu GUI EC sündmuse haldur" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Peatun " #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Ühendus ebaõnnestus. Ei suuda määratud ühenduda %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Ühendus suletud - aMule on ilmselt seisatud." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Valmis" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Kõik" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Ei suuda luua kataloogi '%s' '%s' kategooria jaoks, säilitan '%s' kataloogi." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Teadmata" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Ei suuda tõmmata kasutaja '%s' jagatud faili" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Otsin lowid ühenduse jaoks semu" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Valetatud eMule versioon %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Valetatud eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Valetatud eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (baseerub eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Kasutajanimi: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Küsitud: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Selle seansi failistatistika: Aksepteeritud %d/%d päringust, %s siirdatud\n" msgstr[1] "" "Selle seansi failistatistika: Aksepteeritud %d/%d päringust, %s siirdatud\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Kõikide seansside failistatistika: Aksepteeritud %d/%d päringust, %s " "siirdatud\n" msgstr[1] "" "Kõikide seansside failistatistika: Aksepteeritud %d/%d päringust, %s " "siirdatud\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Küsiti tundmatut faili" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "'%s' (IP:%s) teade filtreeriti" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "'%s' (IP:%s) saatis uue teate" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Kasutaja %s (%u) küsis sinu jagatudfailde loetelu kataloogile %s -> keeldusid" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "HOIATUS: %s faili ei saa avada." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "HOIATUS: Katkestatud failde loetelu on riknenud, sisaldab riknenud päist." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "IO viga %s faili lugemisel: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "VIGA: tekkis %s faili salvestamisel: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Sisesta inimtesti kontrollkood" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategooria" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Uus Kategooria" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Vali sissetulevate failide kataloog" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Sa pead kategooria jaoks nime defineerima!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Sa pead kategooria jaoks asukoha defineerima!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Ei suutnud luua kategooria sisendkataloogi. Palun defineeri kehtiv asukoht!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "VestlusSeanss Alustatud: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Ühenduses Kliendiga ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Ühendun Kliendiga ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Kliendiga ühendumine ebaõnnestus / Ühendus kadunud ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "*** Läbisid inimtesti ja kasutaja sai sinu sõnumi kätte. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Sinu vastus inimtestile oli vale, sinu sõnumit ignoreeriti. Inimtesti " "uuesti läbimiseks saada uus sõnbum. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Vestle" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Sulge leht" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Sulge kõik lehed" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Sulge teised lehed" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Lisa sõprade nimistusse" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Fail 'creditfile' loetud, tuvastati %u klienti" msgstr[1] "Fail 'creditfile' loetud, tuvastati %u klienti" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - %u Kliendi Krediit aegunud!" msgstr[1] " - %u Kliendi Krediit aegunud!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Ei leidnud 'cryptkey.dat' faili, loon uue." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Kliendi detailid" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Lubatud" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Toetatud" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Pole toetatud" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Keelatud" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Ühendatud" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Pole ühendust" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Pole täielik" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Paha Poiss" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Kontrollitud - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Info Puudub" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "Kasutaja %s (%u) küsis sinu jagatud kataloogide nimekirja -> Kinnitasid" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Kasutaja %s (%u) küsis sinu jagatud kataloogide nimekirja -> Keeldusid" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "Kasutaja %s (%u) küsis sinu jagatud kataloogide nimekirja -> Kinnitasid" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "Kasutaja %s (%u) küsis sinu jagatud kataloogide nimekirja -> Keeldusid" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Kasutaja %s (%u) küsis sinu jagatudfailde loetelu kataloogile %s -> " "Kinnitasid" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Kasutaja %s (%u) küsis sinu jagatudfailde loetelu kataloogile %s -> keeldusid" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Kasutaja %s (%u) jagab kataloogi %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Kasutaja %s (%u) saatis soovimatu jagatud kataloogide nimekirja." #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "Kasutaja %s (%u) saatis kataloogi %s jagatud failide nimekirja" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Kasutaja %s (%u) lõpetas jagatud failide nimekirja saatmise" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Kasutaja %s (%u) saatis soovimatu jagatud failide nimekirja" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Kasutaja %s (%u) keelas ligipääsu jagatud kataloogide/failide nimekirjale" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Faili kommentaarid" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Kasutajanimi" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Faili nimi" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Hinnang" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Kommentaar" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Kommentaarid puuduvad" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u kommentaar" msgstr[1] "%u kommentaar(i)" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Klient %s bänniti %s riknenud info saatmise eest (kokku %s faili '%s' kohta)" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Madal]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [Norm.]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Kõrge]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Väga madal" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Madal" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Keskmine" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Kõrge" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Väga Kõrge" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Versioon" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Pärin" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Ühendun serveri kaudu" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Järjekord täis" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Järjekorras" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Tõmban" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Võtan vastu kontrollsumma" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Pole vajalikke osi" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Ühendus LowID <-> LowID ei õnnestu" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Liiga palju ühendusi" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Ühendun Kad kaudu" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Liiga palju Kad ühendusi" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Blokeeritud" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Ühenduse viga" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "KaugJärjekord täis" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Vana MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Uus MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule Kokkusobiv" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Kohalik server" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Kaug server" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Allikate Vahetus" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passiivne" #: src/DataToText.cpp:133 msgid "Link" msgstr "Link" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Allikaid" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Otsingu tulemus" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Valmis" #: src/DataToText.cpp:146 msgid "In progress" msgstr "Edenemine" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "VIGA: Kettaruum otsas" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "VIGA: Osamet faili ei leitud." #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "VIGA: IO viga!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "VIGA: Ebaõnnestus!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "Järjekorras" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Juba tõmbad" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Tundmatu või paha tempfaili formaat." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Osa" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Suurus" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Siiratud" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Kiirus" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Edenemine" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Allikaid" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioriteet" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Olek" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Lõpetamiseni" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Viimati nähtud terviklikuna" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Viimane vastuvõtt" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Oled kindel et tahad valitud faili kustutada?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Oled kindel et tahad valitud failid kustutada?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Tagasiside : %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Seis" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Paus" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Taasta" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "Va&lmis" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Tõsta (A4AF) allikad selle faili külge" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Tõsta automaatselt kõik (A4AF) allikad selle faili külge" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Tõsta (A4AF) allikad teiste failide külge" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Laiendatud valikud" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Eelvaade" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Näita &detaile" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Näita kõiki kommentaare" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Kopeeri magnet URI lõikepuhvrisse" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Kopeeri eD2k &link lõikepuhvrisse" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Kopeeri tagasiside lõikepuhvrisse" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "määramata" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Määra kategooria" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "Ava Fail" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Sisesta selle faili uus nimi:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Faili ümbernimetamine" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%H:%M:%S %d/%m/%y" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Tõmbamised (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Et seda viga eelvaatuse ajal rohkem mitte näitdata \n" "määra oma seadetes eelistatud video mängija (vaikimisi mplayer)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Faili eelvaade" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "VIGA: Ei suutnud käivitada välist meediamängijat! Käsk: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Salvestan osafaili %u %u-st" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Kõik osafailid salvestatud" #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Laen temp faile %s" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Laen osafaili %u %u-st" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "VIGA: Ei suutnud laadida tagavarafaili. Vaata aadressilt http://forum.amule." "org, kas leiad juhiseid .part. met faili taastamiseks" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Kõik osafailid laetud" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Part(osalisi) faile ei leidnud!" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Leidsin %u osalist faili" msgstr[1] "Leidsin %u part(osalist) faili." #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "Temp kataloogi failisüsteem ei suuda suuri faile käidelda." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "Sisenevate failide kataloogi failisüsteem ei suuda suuri faile käidelda." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Tõmban '%s'" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Sa juba proovid faili '%s' tõmmata" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Fail '%s' on juba olemas" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Sa juba proovid '%s' faili tõmmata" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Ei suuda muuta magnet linki eD2k lingiks: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Lingi %s protokoll on tundmatu" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Vigane eD2k link! VIGA: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Klient saatis paketi peale ebaõnnestunud autoriseerimist." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Välisühendus suleti" #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Välisühendused on tühja parooli tõttu mitteaktiivsed" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Välisühendused on konfiguratsioonifailis defineeritud mitteaktiivsena." #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Kinnitati uus väline ühendus" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "VIGA: Ei suutnud uut välist ühendust aksepteerida" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "Välisühendustest keelduti tühja parooli tõttu seadetes!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Ühendan klienti: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Versioon teadmata" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Mittekorrektne Välisühenduste versiooni ID, siin võib olla binaarne " "kokkusobimatus.Kasuta sama versiooni tuuma ja kaugklienti." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Ajutise arendusversiooniga ei saa ühenduda reliisi versiooniga!!!! *RRRRRR* " "hoidsin ära võimaliku crässi" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Vigane protokolli versioon." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Puudub protokolli versiooni märgis" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "Autoriseerimine ebaõnnestus: EC parooliks on määratud vigane räsi." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Autoriserimine ebaõnnestus: vale parool." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Autoriserimine ebaõnnestus: parool puudub." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Vigane päring, alustuseks pead ennast autoriseerima." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Ligipääs Lubatud." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Veateade \"%s\" kliendile saadetud." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Autoriseerimata pääsukatse %s. Ühendus suletud." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "Kaug OsaFaili käsk ebaõnnestus: Faili kontrollsummat ei leidnud: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Faili '%s' kontrollsummat ei leitud" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OOPS! OpCode töötlemise viga!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Serverit ei lisatud" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "serverit ei leidnud: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "eemaldatav server on vaja määrata" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k on seadetes väljalülitatud." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Otsing on käimas. Varsti näed tulemusi!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Web Otsing kaugtöökohast ei oma mõtet." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Graafiku jaoks pole punkte." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Sinu klient pole seadistatud sellise detailsuse astme jaoks." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Väline Ühendus: nõutakse seiskamist" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Juba sulgun..." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Väline ühendus: lisan lingi '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Vigane link või on juba loetelus." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Faili ei leitud." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Vigane failinimi." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Ei suuda faili ringinimetada." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad on seadetes väljalülitatud." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Juba ühendatud eD2k võrku." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Ühendun eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Juba ühendatud Kad võrku." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Ühendun Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Kõik võrgud on väljalülitatud." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "eD2k ühendus katkestatud." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Kad ühendus katkestatud." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Väline Ühendus: sain vigase opkoodi: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Vigane opcode (vale protokolli versioon?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Tundmatu laiend '%s' käsule '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Tundmatu käsk '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "See käsk ei saa omada parameetrit.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Sellel käsul peavad olema parameetrid.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Käsk on lõpetamata, pead kasutama üht laienditest allpool.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Saadaval laiendid:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Võiamlikud käsud:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Kõik käsud on tõstutundetud.\n" "Tipi '%s ' et saada kohta rohkem infot.\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Lahkub rakendusest." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Näita Abimeest." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Käsu kohta abi saamiseks tipi 'help '.\n" "Käskude täieliku loetelu saamiseks tipi 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Käsuloendi saamiseks kasuta '%s'\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Süntaksi viga!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Viga käsu töötlemisel - sede ei tohiks mitte kunagi juhtuda!! Palun " "informeeri sellest\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Sellel käsul ei tohiks olla ühtegi parameetrit." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Sellel käsul peab olema parameeter." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Vigane muutuja." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "See on poolik/lõpetamata käsk." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Rohkema info saamiseks tipi '%s'.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "See on %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "See on %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Loon klienti ....\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, lahkun %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Ei suuda tühja parooliga ühenduda.\n" "Pead määrama parooli kas konfiguratsioonifailis või\n" "käsureal või selle küsimise korral sisestama.\n" "\n" "Lahkun...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Näita seda abiteksti." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Masin milles aMule töötab. (vaikimisi: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "aMule välisühenduse port. (vaikimisi: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Välisühenduse parool." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Loen konfiguratsiooni failist." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Ära trüki midagi standardväljudisse." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Ole jutukas - näita ka veajälituse infot." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Määrab programmi keele." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Kirjuta käsurea valikud konfiguratsioonifaili." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Loob konfiguratsioonifaili alusel aMule konfigratsioonifaili." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Näita programmi versiooni." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Faili detailid" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% tehtud" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "Sõprade faili 'emfriends.met' avamine lugemiseks ebaõnnestus!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "Sõprade faili 'emfriends.met' avamine kirjutamiseks ebaõnnestus!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "KRIITILINE - StartChatSession puudub klient" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Sõbrad" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Näita &detaile" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Lisa sõber." #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Eemalda sõber" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Saada sõnu&m" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Vaata faile" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Taasta sõbraslot" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Oled kindel et tahad valitud sõbra(d) kustutada?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Oled kindel et tahad valitud sõbra(d) kustutada? " #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Sul pole lubatud määrata rohkem kui üks sõbraslot.\n" "Määrati ainult üks slott." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Vali mitu" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Saada kasutajale teade" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Saadetav teade:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Eemalda sõpradest" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Saada teade" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Tõsta selle faili külge" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "JK: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Küsitud teist faili" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Ootan saatmise slotti" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "Järjekorras: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Saadan" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Mitte keegi" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Ei" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Jah" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Tõmban..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "HTTP allalaadimine katkestatud" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Ei suuda luua sihtkoha faili %s." #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "Tõmbamise URL ei saa olla tühi." #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "URL %s ütles: %i - VIGA (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Kriitiline viga tõmmatud faili salvestamisel" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "Tõmmatud %d baiti" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Oodati %d baiti, kuid tõmmates saadi %d baiti" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "Vigane link HTTP tõmbamiseks või HTTP ümbersuunamine (ega sa unustanud " "lisada 'http://' ?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Ei suuda ühenduda HTTP serveriga" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "HTTP serveri vigane vastus" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Tõmban uut GeoIP.dat faili aadressilt %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "GeoIP.dat faili tõmbamine ebaõnnastus, katkestan uuendamise." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Faili %s eemaldamine ebaõnnastus, katkestan uuendamise." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Faili %s ümbernimetamine ebaõnnestus, katkestan uuendamise." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "%s uuendamine õnnestus" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "GeoIP.dat uuendamise viga" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Faili %s tõmbamine aadressilt %s ebaõnnestus" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "'%s' riigiinfo laadimine ebaõnnestus." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Laen IP-filtrid 'ipfilter.dat' ja 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "Ebaõnnestus ipfilter.dat faili '%s' laadimine, arusaamatu formaat sattus " "ette." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "Ebaõnnestus ipfilter.dat faili '%s' laadimine, ei suuda faili avada." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Laetud %u IP-piirkond failist '%s'." msgstr[1] "Laetud %u IP-piirkonda failist '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "ignoreeritud %u vigast rida." msgstr[1] "ignoreeritud %u vigast rida." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Faili %s ümbernimetamine ebaõnnestus, katkestan uuendamise." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "IP filter on lähtestatud" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Tuntud klientide \n" "Bootstrap" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Sõlmed (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Bootstrapil vigane IP" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Bootstrapil vigane port" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Palun täida kõik nõutud väljad" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Oled kindel et tahad tõmmata uut nodes.dat faili?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Nii tehes eemaldad oma olemasolevad sõlmed ja taaskäivitad Kademlia ühenduse." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Kas jätkata?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: otsingu võtmesõna on liiga lühike" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Otsingu märksõna: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: otsingu võtmesõna on juba loetelus: " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "nodes.dat faili laadimine ebaõnnestus - fail on liiga vana. See versiooni " "(0) on toetuseta." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Loetud %u Kad kontakti" msgstr[1] "Loetud %u Kad kontakti" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "Kontakte ei leitud, palun bootstrap või tõmba nodes.dat fail." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Saadaval ainult %d Kad kontakt, nodes.dat ei lisatud" msgstr[1] "Saadaval ainult %d Kad kontakti, nodes.dat ei lisatud" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Salvestatud %d Kad kontakt" msgstr[1] "Salvestatud %d Kad kontakti" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Faili nimi" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Faili suurus" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Üles- ja allalaadimise suhe" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Üleslaaditud" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Küsitud" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Aksepteeritud" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Täielikke allikaid" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "HOIATUS: Tuttavate failde loetelu on riknenud, sisaldab riknenud päist." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "Tuntud falide loetelu laadimine ebaõnnestus, fail võib olla vigane" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "Tuntud falide loetelus vigane kirje, fail võib olla vigane: " #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Versioon teadmata" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "Ei suuda luua sihtkoha faili %s." #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Räsin" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Lõpetatud" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Valmis" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Peatatud" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Vigane" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Ootan" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Pead defineerima mittetühja parooli." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Vigane parool, pole MD5 kontrollsumma!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Ühenduse viga" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "EC ühendus ebaõnnestus. Tühi vastus." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "Väline Ühendus: Vigane vastus, kätlemine ebaõnnestus. Ühendus suletud." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Õnnestus! Ühendus aMulaga loodud " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Õnnestus! Ühendus loodud." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Väline Ühendus: Ligipääs keelatud sest: " #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Väline Ühendus: Kätlemine ebaõnnestus." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Automaatne värskendamine on käivitatud" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket: Ok." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "VIGA: Ei suuda kuulata TCP porti." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "VIGA: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "HOIATUS: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Sulge" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Lõika" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Kopeeri" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Aseta" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Puhasta" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Vali kõik" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Piiramatu" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule Riba Menüü" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Kiiruse piirangud:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "ÜL: puudub" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "ÜL: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "AL: pole" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "AL: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Tõmbamise kiirus: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Saatmise kiirus: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Kliendi informatsioon" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Hüüdnimi: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Hüüdnime pole valitud!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "KliendiID: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Pole ühendatud" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Serveri nimi: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "ServeriIP: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Pole ühendust" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP port: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP port: Pole valmis" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "UDP port: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UDP port: Pole valmis" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Online Allkiri: Lubatud" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Online Allkiri: Keelatud" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Elus juba: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Jagatud failid: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Kliente sabas: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Kokku AL: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Kokku ÜL: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Saatmise limiit" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Tõmbamise limiit" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Peida aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Näita aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Välju" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k Link: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Jõusta" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "Klikka siia, et lisada eD2k link tekstiväljalt tõmbamise järjekorda." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Siin näidatakse sündmusi. Kogu sündmuste loetelu on logis Serverid lehel." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Laadimine..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Kasutajate arv serveris, kuhu sinagi oled ühendunud ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Kasutajad: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "Kasutajaid serveriga ühenduses ja arvatav kasutajate koguarv." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Üles: 0.0 | Alla: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Hetkel kehtivad keskmised saatmise ja tõmbamise kiirused. Valituna näitavad " "numbrid sulgudes kliendikommunikatsiooni raisatud pakette." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Näitab ühenduse olekut ja käimasolevaid siirdamisi. Punane nool näitab, et " "sa pole hetkel üheduses, kollane nool näitab, et sul on LowID (või oled " "ühenduses läbi tulemüüri) ja roheline nool näitab et omad HighID " "(Optimaalseim) ühenduse tüüp." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Pole ühendust ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Sa oled serveriga ühenduses." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Otsing" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Nimi:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tüüp" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Kohalik" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Üleüldine" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Faili kontrollsumma" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Laiendatud parameetreid" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtreerimine" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Faili tüüp" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Suvaline" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Archiwum" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Muusika" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD-Image" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Pildid" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programmid" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Tekst" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Filmid" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Laiend" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Vähim Suurus" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Baiti" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Suurim Suurus" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Saadavus" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filter:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filtreerimise tulemused" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Tulemus peeglisse" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Vaata faile" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Alusta" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Rohkem" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Rohkemate eD2k tulemuste otsimine. Pole veel Kad poolt toetatud." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Seiska" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Tõmbamine" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Lähtesta väljad" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Tulemused" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Puhastab lõpetatud tõmbamised" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Faili allikad:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Üldine" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Täis nimi :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met-Fail :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Kontrollsumma :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Faili suurus :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Osafaili staatus :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Viimati nähtud tervikuna :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Liiklus" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Leitud allikaid :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Saatvaid allikaid :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Failiosi :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Saadaval :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Andmekiirus :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Aktiivne Tõmbamine: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Siiratud :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Valmis suurus :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Intelligentne riknemise vältimine" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Riknemise tõttu kaotatud :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Võidetud tänu kokkusurumisele :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "I.C.H. päästetud paketid :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Failide nimed" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Võta Üle" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Puhasta" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Jõusta" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Kommenteeri/Hinda faili (Tekst on nähtav kõigile)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Filmi puhul saad öelda tema pikkuse, tema süzee, keele ....\\n\\nja kui see " "on võltsing siis saad sellest teisi aMule kasutajaid hoiatada." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Faili kavliteet" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Pole hinnatud" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Vigane / Vigastatud / Pole õige" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Halb" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Hea" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Keskpärane" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Väga hea" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "Määra faili hinnang või hoiata kasutajaid juhul kui fail on vigane ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Värskenda" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Tõmban, palun oota ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Suurus teadmata" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Vajalik informatsioon" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP Aadress :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Lisainformatsioon" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Kasutajanimi :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Kasutaja kontrollsumma :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Lisa" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Tõmbamise kiirus" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Hetkel" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Hetke keskmine" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Seansi keskmine" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Saatmise kiirus" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Ühendused" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktiivsed tõmbamised" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktiivseid ühendusi (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Aktiivsed saatmised" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Statistika Puu" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Kasutajanimi:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Kasutaja kontrollsumma:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Klienditarkvara:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Kliendiversioon:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP aadress:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "Kasutaja ID:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "Serveri IP:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Serveri nimi:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Hämatud:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Liiklus kliendile" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Praegune päring:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Keskmine saatmise suhe:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Keskmine tõmbamise suhe:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Saadetud (selles seansis):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Tõmmatud (selles seansis):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Saadetud (kokku):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Tõmmatud (kokku):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Skoorid" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "AL/ÜL kordaja:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Turvaline ident:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Järjekorras:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Saba skoor:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Nimi" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - mitme platvormi Muul" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "See on see nimi mida teised näevad kui sinuga ühenduvad." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Keel: " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Abitekstide kuvamise ajaline viide." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "See määrab kasutatava keele." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Kontrolli käivitumisel uue versiooni olemasolu" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "Valituna kontrollib aMule käivitumisel värskema versiooni olemasolu" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Käivita vähendatult" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Valituna minimeerib aMule ennast peale käivitumist." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Kinnita väljumine" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Sunnib aMule väljumiseks kinnitust küsima." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Luba Riba(tray) ikoon" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Valituna lubadab süsteemiriba (või tegumiriba) ikooni." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Vähenda Ribale ikooniks" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Valituna vähendab aMule ennast pigem Süsteemiribale, kui tööriistaribale." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Abitekstide viide sekundites: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "sekundit" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Lehitseja valik" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Sisesta siia lehitsejaprogrammi nimi. Jättes välja tühjaks, kasutab süsteem " "vaikimisi määratud lehitsejat." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Lehitse" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Võimalusel ava uus sakk" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "Ava, kui võimalik, webileht uuel lehel selle asemel et avada uus aken" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Video mängija" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Ribalaiuse piirid" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Saatmine" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Määratud pesa" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Pordid" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Vaikimisi TCP Port " #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "See on eD2k standard port ja seda ei saa välja lülitada." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "UDP port serveri päringute jaoks (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Laiendatud UDP port (Kad / globaalne otsing) " #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" "Seda UDP porti kasutatkse laiendatud omadustega eD2k ja Kad võrgu puhul" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Luba UPnP ruuteri portide suunamiseks" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnp TCP Port (Lisana):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Seo lokaalne aadress IP'ga (suvaliseks jäta tühjaks)" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Ainult edasijõudnud kasutajatele: Kui sul on kasutada mitu võrguliidest, " "siis sisesta selle liidese aadress millega aMule võib ennast siduda." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Maksimaalseid allikaid tõmmatava faili kohta:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Maksimaalselt samaaegseid ühendusi:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Automaatne ühendumine käivitumisel" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Ühenduse kadumisel taasta ühendus" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Eemalda surnud server peale" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "katset" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Käivitamisel värskenda automaatselt serverite nimekirja" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Loend" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Värskenda serverite nimekirja serveriga ühendumisel" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Värskenda serverite nimekirja kliendi ühendumisel" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Kasuta prioriteedisüsteemi" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Ühendumisel kasuta nutikat LowID kontrolli " #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Ohutu ühendumine" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "" "Automaatne ühendumine ainult staatilises serverinimekirjas olevate " "serveritega" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Määra käsitsi lisatud serveritel Kõrge Prioriteet" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Intelligentne Riknemise Vältimine (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Luba" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" "Laiendatud I.C.H. usaldab suvalist kontrollsummat (pole soovitatav valik)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Lisa failid tõmbamiseks peatatud olekus" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Lisa failid tõmbamiseks automaatse prioriteediga" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Proovi alustuseks tõmmata esimene ja viimane tükk" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Alusta järgmise peatatud failiga, kui fail lõpetab" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Samast kategooriast" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "Tähestikulises järjekorras" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Eralda kettaruum uute failide jaoks" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Eraldab uuet failide jaoks vajamineva kettaruumi, seeläbi väheneb faili " "fragmenteerumine" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Lõpeta tõmbamine, kui vaba kettaruumi on jäänud " #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Vali see kui soovid et aMule sinu kettaruumi kontrolliks" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Sisesta siia vähim soovitud kettaruum" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Salvesta haruldaste failide 10 allikat (< 20 allikat)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Saatmised" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Lisa uued jagatud failid automaatse prioriteediga" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Tõmmatavate failide kataloog" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Ajutiste tõmmatavate failide kataloog" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Jagatud kataloogid" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(Rekursiivseks jagamiseks tee paremklikk kataloogi ikoonil)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Jaga peidetud failid" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Graafikud" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Värskenduste vahe : 5 sekundit" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Keskmine graafiku aeg: 100 minutit" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Ühenduse graafiku skaala: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Tõmbamise graafiku skaala:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Saatmise graafiku skaala:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Värvid: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Taust" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Alusvõrk" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Allalaadimine, jooksev" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Allalaadimine, jooksev keskmine" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Allalaadimine, seansi keskmine" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Saatmine hetkel" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Hetke saatmise keskmine" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Seansi keskmine saatmine" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Aktiivseid ühendusi" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Süsteemiriba Kiirvaliku Ikoon" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Kad-sõlmi hetkel" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Kad-sõlmi jooksvalt" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Kad-sõlmi seansis" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Vali" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Puu" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Kuvatavate Kliendi Versioonide arv (0=piiramatu)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! HOIATUS !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Maksimaalne arv uusi ühendusi / 5 sek." #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Faili puhvri suurus: 240000 baiti" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Saatmise saba suurus: 5000 klienti" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Serveriühenduse värskenadamise intervall: Ei kasuta" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Keela arvuti ajastatud uinumine" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Kasutatav rüü: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Näita igas aknas \"Kiiret eD2k lingi käsitlejat\". " #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Näita kategooria juures laiendatud infot" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Näita tiitelribal siirdamise kiirusi" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Näita tiitelribal siirdamise kiirusi" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Eelmise rakenduse nimi" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Järgneva rakenduse nimi" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Näita raisatud ribalaiust" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Vertikaalne tööriistariba paigutus" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Näita klientide riigi lippe" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Tõmbamise Järjekorrafailid" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Näita edenemist protsentuaalselt" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Näita edenemise riba" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Lame" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Ümar" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Sorteeri failid automaatselt (high CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule sorteerib tulbad tõmbamise sabas automaatselt" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Välisühenduse parameetrid" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Aksepteeri väliseid ühendusi" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "Kuulava liidese IP aadress:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Sisesta siia välisühenduse liidese kehtiv ip aadress a.b.c.d formaadis. Tühi " "väli või 0.0.0.0 tähendab suvalist liidest." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "TCP port:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Luba UPnP pordisuunamist EC pordile" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Parool" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Web serveri seaded" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Käivita WEBserver koos aMulega" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "WEB näidis/mall" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Täisõiguste parool" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Luba madalate õigustega kasutaja" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Madalate õiguste parool" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Luba webservri portide UPnP pordisuunamist" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Webserveri UPnP TCP port (Valikuline)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Lehekülje värskendusaeg (sekundites)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Luba Gzip pakkimine" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "Sobib" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Seadetes tehtud muudatuste jõustamiseks klikka siia." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Tühista kõik seadetes tehtud muudatused." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Tiitel :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Kommentaar :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Tõmmatud failide kataloog :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Muuda uute failide prioriteeti :" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Ära muuda" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Vali praegu valitud kategooriale värv :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Algväärtusta" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Klikates seda nuppu tühjendad logi." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Sellele nupule klikates värskendad serverite loetelu URL ilt ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Serverite nimekiri" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Sisesta siia server.met faili asukoha URL ja pressi vasakul olevat nuppu " "tuntud serverite nimekirja värskendamiseks." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Lisa server käsitsi: Nimi" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Sisesta siia uue serveri nimi" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Sisesta siia serveri IP aadrdess, kasutades x.x.x.x formaati." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Sisesta siia serveri port." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Täites esiteks vasakul olevad väljad, lisa server käsitsi ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule Logi" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Serveri info" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2K Info" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad Info" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Klikates sellele nupule värskendad sõlmede loetelu URL'ilt ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Sõlmed (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Sisesta siia nodes.dat faili url ja pressi vasakul olevat nuppu, et tuntud " "sõlmede loetelu täiendada." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Sõlmede statistika" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Bootstrap" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Uus sõlm" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Port:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Tuntud klientide Bootstrap" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Lõpeta Kad ühendus" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Kasuta Turvalist Kasutaja tuvastamist" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "On soovitatav see omadus lubada. Sa ei saa krediiti kui SUI on välja " "lülitatud." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Protokolli Hämamine" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Protokolli Hämamine lubatud" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "See valik lülitab Protokolli Hämamise sisse ja sunnib aMule aksepteerima " "ainult teiste klientide hämatud ühendusi." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Kasuta väljuvatel ühendustel hämamist" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "See valik sunnib aMule kasutama teiste serverite/klientidega ühendumisel " "Protokolli Hämamist." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Aksepteeri ainult hämatud ühendusi" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "See valik sunnib aMule aksepteerima ainult hämatud ühendusi. Sul on vähem " "allikaid aga kogu liiklus on hämatud." #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Igaüks" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Mitte keegi" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Kes näeb minu jagatud faile:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Vali, kes võib vaatamiseks küsida sinu jagatud falide nimekira." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP-Filtreerimine" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtreeri kliente" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Rakenda klientide IP filtreerimine failis ~/.aMule/ipfilter.dat defineeritud " "aadressidele." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtreeri servereid" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Rakenda serverite IP filtreerimine failis ~/.aMule/ipfilter.dat defineeritud " "aadressidele." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Lae loetelu uuesti" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "Taaslae filtreeritavad IP aadressid failist ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Värskenda" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Käivitamisel värskenda automaatselt ipfiltrit" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Filtreerimise tase:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Filtreeri alati LAN IP aadresse" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Mitteklappivate IP aadresside paranoiline käitlemine" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Viskab paketi minema kui kliendi IP erineb paketi saatja IP aadressist. " "Kasuta ettevaatlikult." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Kasuta süsteemi ipfilter.dat kui see on saadaval" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Kui kohalik ipfilter.dat fail puudub, kasuta süsteemi globaalset ipfilter " "faili." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Luba Online-Allkiri" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Võimaldab kirjutada OS faile, mida saavad kasutada välised rakendused kasvõi " "allkirja loomiseks." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Värskenduse sagedus (Sek):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Muuda Online Allkirja värskendamise (sekundites) sagedust." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Salvesta online ollkirja fail: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "Siin saad valida kataloogi kus asub sinu Online Allkirja fail." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtreeri saabuvaid teateid (va. käimasolev vestlus):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtreeri kõiki teateid" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtreeri sinu sõbralistiväliste kodanike teateid" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtreeri tundmatute klientide teateid" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtreeri teateid, mis sisaldavad (loetelus kasuta eraldajana koma):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "lisa siia sõnad mille amule peab väljafiltreerima ja bloki teated mis seda " "sisaldavad" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Näita logis saabunud teateid" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Kommentaarid" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtreeri teateid, mis sisaldavad (loetelus kasuta eraldajana koma):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Automaatne, ilma puhverserverita, serveriga ühendumine " #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Nõua autoriseerimist" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Autoriseerimisel Kasuta/Ära kasuta kasutajanime/parooli" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Kasutajanimi: " #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Puhverserveriga ühenduseks vajalik kasutajanimi" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Parool:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Puhverserveri kasutamiseks vajalik parool" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Kasuta puhverserverit" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Kasuta/ärakasuta puhverserveri tuge" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Puhverserveri tüüp:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Puhverserveri nimi:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Selle puhverserveri/hosti nimi " #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Puhverserveri port:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Selle puhverserveri pordi number" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Ühendu :" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Logi sisse eemalasuvasse amuula" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Kasutaja nimi" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Pea need seaded meeles" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Võimalda inimkieelne Veajälitus-Logimine" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "Ava Fail" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Saadetav teade:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Ootan..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Lisa imporditavad" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Proovi valitutega uuesti" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Eemalda valitud" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Sündmuse tüübid" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Statistika ja järjekorras kliendid valitud faili(de) kohta : Sessioon / Kokku" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Aktiivsed saatmised" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Protsenti kogufailidest" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Kõik failid" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Valitud failid" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Ainult aktiivsed saatmised" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Näita Kliente" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Taaslae:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Lae oma jagatud failid uuesti" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Saada" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Saada määratud teade." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Sulge see vestlus-seanss." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Ühendu suvalise serveri ja/või Kad võrguga" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Jagatud failid" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Eemaldatud [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "baiti" msgstr[1] "baiti" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "baiti/sek" msgstr[1] "baiti/sek" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "sek" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "min" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "tundi" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "päev(a)" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "kõik" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "kõik teised" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Poolik" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Peatatud" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Film" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Arhiiv" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Tekst" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Aktiivne" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Kasutan seadete kataloogi: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Ootan osafaili konverteerimise lõime suremist ..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Impordin %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Loen ajutist kataloogi" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Hangin põhiinformatsiooni tõmmatavast infofailist" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Loon sihtkohafaili" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Laen vanast tõmbamisefailist andmeid (%u %u-st)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Salvestan andmeblokki uude, üksikusse tõmbamisefaili (%u %u-st)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Hanging allika tõmmatavate failide informatsiooni" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Lisan tõmbamise ja salvestan osafili" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Imporditud osafailid" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Olek" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Faili kontrollsumma" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Ketas: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Palun vali ajutiste tõmbamiste otsingu kataloog (alamkataloogid kuuluvad ka " "siia)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "Kas soovid õnnestunult imporditud tõmmatud failide allikad kustutada?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Eemaldan allikaid?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "VIGA: Ei suutnud luua osafaili!" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Proovin laadida met-faili tagavarakoopiat aadressilt %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "VIGA: Ei suuda avada part.met faili: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "VIGA: part.met faili on 0 suurusega: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "VIGA: Vigane fail part.met versioon : %s ==> %s" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "VIGA: %s (%s) on vigane (vale märgiseloendur), ei suuda faili laadida." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "VIGA: %s (%s) on vigane (vale märgiseloendur), ei suuda faili laadida." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Proovin taastada faili infot..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "Taastan nimetu faili - proovin ta taastada nimega RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "Taastatud kogu olemasolev failiinfo :D - Proovin nüüd kasutada..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Ei suuda faili infot taastada :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Ei suuda avada: %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "HOIATUS: %s võib olla riknenud (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "VIGA salvestades osafaili: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "IO viga osafaili salvestamisel: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Ei suuda tõmmata '%s' pikkust - kasutan %s faili." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' on millegipärast 0 suurusega - kasutan %s faili." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Ei saanud salvestada faili part.met.seeds %s jaoks!" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Salvestatud %i allikat osafailile: %s (%s)" msgstr[1] "Salvestatud %i allikat osafailile: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Salvestatud %i allikat osafailile: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "VIGA osafaili toitefaili lugemisel (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Leidsin riknenud osa (%d) %d osast fail '%s' - Arvutatud Kontrollsumma |%s| " "Saadetud Kontrollsumma |%s|" msgstr[1] "" "Leidsin riknenud osa (%d) %d osast fail '%s' - Arvutatud Kontrollsumma |%s| " "Saadetud Kontrollsumma |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Leitud lõpetatud osa (%i) %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "'%s' faili kontrollsumma arvutamine lõpetatud" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Ootamatu viga %s lõpetamisel. Fail peatatud" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Faili '%s' tõmbamine lõpetatud" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Kustutan faili: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "HOIATUS: Ei suuda tõmmatud osale arvutada kontrollsummat - kontrollsumma on " "mittetäielik '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "VIGA: ei suuda tõmmatud osale arvutada kontrollsummat- kontrollsumma on " "mittetäielik(%s). Seda ei tohiks kunagi juhtuda." #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "HOIATUS: Pole piisavalt vaba kettaruumi! Pausin faili: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Tõmmatud osa %i on failis %s vigane" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Taastatud riknenud osa %i %s jaoks -> Päästsin: %s baiti" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Eraldamine" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Ebapiisav kettaruum" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Allalaetud" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "VIGA: Osafaili '%s' avamine ebaõnnestus" #: src/Preferences.cpp:632 msgid "System default" msgstr "Süsteemi vaikeväärtus" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albaania" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Araabia" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturia" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Baski" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgaaria" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Kataloonia" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Hiina (Lihtsustatud)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Hiina (Traditsiooniline)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Kroaatia" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Tšehhi" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Taani" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Hollandi" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Inglise (U.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Eesti" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Soome" #: src/Preferences.cpp:648 msgid "French" msgstr "Prantsuse" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galiitsia" #: src/Preferences.cpp:650 msgid "German" msgstr "Saksa" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Kreeka" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Heebrea" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Ungari" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Itaalia" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Itaalia (Shveits)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Jaapani" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Korea" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Leedu" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norra" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Poola" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugali" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugali (Brasiilia)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Rumeenia" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Vene" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Sloveenia" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Hispaania" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Rootsi" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Türgi" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ukraina" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Muuda keel" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Info puudub" #: src/Preferences.cpp:906 msgid "no options available" msgstr "valikud puuduvad" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Leidsin vigase kategooria, ignoreerin" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "TCP port ei saa olla suuerm kui 65532, sest serveri UDP soket on TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Kasutan vaikimisi porti (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Eemaldan olematu jagatud kataloogi: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Ühendus" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Kataloogid" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Serverid" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Failid" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Turvalisus" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Liides" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Puhverserver" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filtrid" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Kaugjuhtimine" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Online Allkiri" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Muud" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Sündmused" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Veajälitus" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "Järgmised muutujad asendatakse:\n" " %PARTFILE - fail täis rada\n" " %PARTNAME - faili nimi" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Ära muuda neid seadeid, kui sa ei tea mida sa teed,\n" "vastasel juhul võid omale kergesti probleeme tekitada\n" "ja olukord võib väljuda kontrolli alt.\n" "\n" "aMule toimib ilusasti ilma siinolevaid seadeid muutmata\n" "You Are WARNED!!." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Widgeti ühendamine Cfg'a, kasutades ID %d ja võtit %s, ebaõnnestus" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" "Andmete ülekandmine Cfg'st Widget'isse, kasutades ID %d ja võtit %s, " "ebaõnnestus" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Selle puhverserveri tüüp kuhu sa ühendud" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" "Andmete ülekandmine Widgetist Cfg'sse, kasutades ID %d ja võtit %s, " "ebaõnnestus" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "Nende muudatuste jõustamiseks pead aMUle taaskäivitama:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP port muudetud.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP port muudetud.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Välisühenduse port on muutunud.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Välisühenduse luba on muudetud.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Välisühenduse liides muutunud.\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Protokolli Hämamine" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Sinu automaane serverinimekirja värskendamise loetelu on tühi.\n" "Käivitamisel serverinimekirja automaatselt ei uuendata." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Lülitasid sisse välised ühendused kuid ei määranud parooli.\n" "Väliseid ühendusi ei saa enne kehtiva parooli määramist kasutada." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Keel on muudetud.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Ajutiste failide kataloog on muudetud.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- ED2K võrk on lubatud.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Mõlemad, nii eD2k kui ka Kad võrgud on mitteaktiivsed.\n" "Sa ei saa ühenduda enne, kui vähemalt üks neist on aktiivne." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad ei saa käivitada kuni UDP port on väljalülitatud.\n" "Lülita UDP port sisse, või Kad välja." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Sa PEAD aMule nüüd taaskäivitama.\n" "Kui sa seda ei tee siis ära tänita kui midagi paha juhtub.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Serverite automaatse värskendamise loetelu on tühi.\n" "Palun sisesta vähemalt üks server.met faili asukoha kehtiv URL.\n" "URL sisestamiseks kliki nupule 'Loend'." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Ajutised failid" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Saabuvad failid" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Online Allkirjad" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Vali %s kataloog" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Otsi filmi taasesitamise programmi" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Vali lehitseja (browser)" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Käivitusprogramm%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Muuda serverite nimekirja" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Lisa siia server.met faili(de) laadimise URL.\n" "Üks URL rea kohta." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Värskenduse viide: %d sekundit" msgstr[1] "Värskenduse viide: %d sekundit" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Keskmiste graafiku aeg: %d minutit" msgstr[1] "Keskmiste graafiku aeg: %d minutit" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Ühenduse graafiku skaala: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Failipuhvri suurus: %d baiti" msgstr[1] "Failipuhvri suurus: %d baiti" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Saatmise Saba suurus: %d klienti" msgstr[1] "Saatmise Saba suurus: %d klienti" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Serveri ühenduse värskendamise intervall: %d minutit" msgstr[1] "Serveri ühenduse värskendamise intervall: %d minutit" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Serveri ühenduse värskendamise intervall: Ei kasuta" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "keelatud" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Käivita käsk peale '%s' sündmust" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Luba käskude käivitamine tuumas" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Tuumkäsk:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Luba käskude käivitamine GUI's" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "GUI Käsk:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Järgnevad muutujad asendatakse:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "Min suurus peab olema väiksem kui max suurus. Ignoreerin Max suurust." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Otsingu hoiatus" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Peamine" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Kad otsing pole võimalik kui Kad ei tööta" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "eD2k otsing pole võimalik kui eD2k pole ühendatud" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Ootamatu viga proovides Kad otsingut: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "FailiID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Fail" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Tõmba kataloogi" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Lisa selle faili alternatiivsed URL'id" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Otsi seotud faile (eD2k, kohalik server)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Märgi fail tuntuks" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Kopeeri eD2k link lõikepuhvrisse" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Loobutud" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Uus" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Kõigi näidatud hämatud serveritega ühenduse loomine ebaõnnestus. Lähen uuele " "katsele, seekord ilma hämamiseta." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Serveritega ühenduse loomine ebaõnnestus. Lähen uuele katsele." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "eD2k on seadetes väljalülitatud, ei ühendu" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "Serverite loetelus pole ühendumiseks sobivat kehtivat serverit" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Ühendus %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Ühendus loodud: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "Fataalne viga ühendumisel. Kontrolli ühendust." #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Kaotasin ühenduse %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) on vist surnud." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) on vist täis." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Proovin %d sekundi pärast serveriga uuesti automaatselt ühenduda." msgstr[1] "Proovin %d sekundi pärast uuesti serveriga automaatselt ühenduda." #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Ühendus kadunud." #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Ühendumine %s (%s:%i) ebaõnnestus." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "VIGA: Vigane socket aegumise kontrollil" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Serveriga '%s (%s:%i)' ühendumise katsed aegusid." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Saabus DNS päringu hilinenud vastus, ignoreerin." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Laen server.met faili: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Server.met faili ei leitud." #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "server.met faili '%s' laadimine ebaõnnestus, arusaamatu formaat sattus ette." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Ei saanud avada server.met faili!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Server.met fail on riknenud, leidsin vigase versiooni sildi: 0x%x, suurus %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "Failis server.met on %i serverit" msgstr[1] "Failis server.met on %i serverit" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d server lisatud" msgstr[1] "%d server(it) lisatud" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "IO viga %s faili lugemisel: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Serverit ei lisatud: [%s:%d] ei määra kehtivat porti." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Serverit ei lisatud: [%s:%d] IP aadress on filtris või vigane." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "Serverit ei lisatud: Sama server IP:Port [%s:%d] on juba loetelus." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Lisati server: Server [%s:%d] kasutab nime *%s*." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Sa oled serveriga, mida soovid kustutada, ühenduses. Palun katkesta ühendus. " "Serverit ei kustutatud." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Ei suuda avada '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Ei saanud salvestada server.met faili!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Vigane URL" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Serverite nimekirja tõmbamine aadressilt %s lõpetatud" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "'addresses.dat' failis puudub serverite nimekirja asukoha kirje. Palun lisa " "kehtiv serveri nimekirja asukoha aadress sellesse faili, vastasel juhul " "nimekirja automaatset värskendamist ei toimu." #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Tõmba serverite nimekiri aadressilt %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "HOIATUS: vigane URL on määratud serverinimekirja automaatseks " "värskendamiseks: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "addresses.dat failis pole kehtivat server.met faili automaatse tõmbamise " "URL'i" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Serverite nimekirja tõmbamine aadressilt %s ebaõnnestus" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Kohalik server on IPFiltri poolt väljafiltreeritud, ühendud teise serveriga!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Serveri nimi" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Aadress" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Kirjeldus" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Kasutajad" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Staatiline" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versioon" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Sa oled ühenduses selle serveriga mida soovid kustutada. Palun katkesta " "ühendus. Serverit ei kustutatud." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Tundmatu nimi)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Oled kindel et tahad kustutada staatilise serveri %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Servereid (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Server" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Ühendu serveriga" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Märgi server staatilisena" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Märgi server mittestaatilisena" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Märgi serverid staatilisena" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Märgi serverid mittestaatilisena" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Eemalda server" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Eemalda serverid" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Eemalda kõik serverid" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Kopeeri eD2k lingid lõikepuhvrisse" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Taasühendu serveriga" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Oled kindel et tahad kõik serverid kustutada?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Oled kindel et tahad valitud serveri kustutada?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Oled kindel et tahad valitud serverid kustutada?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "VIGA: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "HOIATUS: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Uus kliendi ID %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "HOIATUS: Said omale Low-ID!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tTõenäolisem põhjus on sinu asumine tulemüüri või ruuteri 'taga'." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tTäpsemat informatsiooni leiad http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Saabus tundmatu serveriinfo! - liiga lühike" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Sain %d uut serverit" msgstr[1] "Sain %d uut serveri nime" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Serverite loetelu salvestamine lõpetatud." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Server lükkas viimase korralduse tagasi" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Tüngapakett saabus serverist: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Defineerimatu viga serverist %s saabunud paketi töötlemisel" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Ei suuda luua DNS lõime serveriga %s ühendumiseks" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "Server IP %s (%s) on filtris. Ei ühenda." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "kasutan protokolli hämamist" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Ühendun %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Ei suuda masina %s dns nime lahendada: Ei saa ühenduda!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Serverit ei lisatud: IP aadressi või masinanime pole defineeritud." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Serverit ei lisatud: Defineerisid vigase pordi." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "eD2k Olek:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kademlia Olek:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "Jookseb LAN olekus" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Töötab" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Olek:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Ühenduse olek:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Tulemüüriga - ava oma ruuteris või tulemüüris TCP%d port" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "UDP ühenduse olek:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Tulemüüriga - ava oma ruuteris või tulemüüris UDP %d port" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Olek tulemüüriga: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Semu pole tarvis - TCP port on avatud" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Semu pole tarvis - UDP port on avatud" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Semu puudub" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Ühendun semuga" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Ühendus semuga %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Indekseeritud allikaid:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Indekseeritud märksõnu:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Indekseeritud märkmeid:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Indekseeritud laadimisi:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Keskmiselt kasutajaid:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Keskmiselt faile:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Ei tööta" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Lisan faili '%s' jagatute hulka" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Leitud %i tuntud ja jagatud faili" msgstr[1] "Leitud %i tuntud ja jagatud faili." #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Leitud %i tuntud ja jagatud faili, %i tundmatut" msgstr[1] "Leitud %i tuntud ja jagatud faili, %i tundmatut." #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "VIGA: Katse jagada %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Jagatud kataloogi ei leitud, jätan vahele: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Kataloogis '%s' pole jagatavaid faile" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Kasutaja nimi" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Tõmbamise kiirus" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Saatmise kiirus" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Saadaval osi" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Saatmise olek" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Tõmbamise olek" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Allikas" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Kohalik faili nimi" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Jagatud failid" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Päringuid" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Aktsepteeritud päringuid" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Siiratud andmed" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Jagamise suhe" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Saadud osi" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Täielikke allikaid" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Kataloogi asukoht" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Lisa Kommentaar/Hinnang" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Muuda Kommentaari/Hinnangut" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Nimeta ümber" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Lisa failid ülekantavate failide loetellu" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Kopeeri magnet &URI lõikepuhvrisse" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Kopeeri eD2k link lõikepuhvrisse (Allika&s)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Kopeeri eD2k link lõikepuhvrisse (Allikas)(&Koos Krüpto seadetega)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Kopeeri eD2k link lõikepuhvrisse (&Hostinimi)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "Kopeeri eD2k link lõikepuhvrisse (Hostinimi)(Koos &Krüpto seadetega)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Kopeeri eD2k link lõikepuhvrisse (&AICH info)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Kopeeri eD2k link lõikepuhvrisse (&AICH info)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Allika lingi loomiseks pead omama HighID'd." #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Jagatud failid (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[FailiOsa]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Kaugfaili nimi" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Saadetud andmeid (Seansil (Kokku)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Raisatud Kokku (pakette): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Raisatud faili päringuid (pakette): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Raisatud allikavahetusi (pakette): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Raisatud Servereid (pakette): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Raisatud Kad (pakette): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Krüpteerimise ulatus (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Aktiivsed saatmised: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Ootel saatmised: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Kokku õnnestunud saatmisi: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Kokku ebaõnnestunud saatmisi: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Keskmine saatmise aeg: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Tõmmatud Andmed (Seansil (Kokku)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Leitud allikaid: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Aktiivsed tõmbamised (tükid): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Seanss ÜL:AL suhe (Kokku): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Keskmine tõmbamise kiirus (Sessioon): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Keskmine saatmise kiirus (Sessioon): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Maksimaalne tõmbamise kiirus (Sessioon): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Maksimaalne saatmise kiirus (Sessioon): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Ühenduse taastumised: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Aeg alates esimesest saatmisest: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Ühendatud serveriga alates: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Aktiivseid ühendusi (hinnang): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Saavutati maksimaalne arv ühendusi: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Keskmiselt ühendusi (hinnang): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Suurim ühenduste arv (hinnang): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Kliendid" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Tundmatu: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Filtreeritud: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Blokeeritud: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Kokku: %i Tuntuid: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Töötavad serverid: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Ebaõnnestunud serverid: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Kokku: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Kustutatud serverid: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Filtreeritud serverid: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Kasutajaid töötavail servereil: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Faile töötavail servereil: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Kokku kasutajaid: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Kokku faile: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Serveri hõivatus: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Jagatud failide arv: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Jagatud failide suurus kokku: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Keskmine faili suurus: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Operatsioonisüsteem" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Pole vastu võetud" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktiivseid ühendusi (l:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Info puudub" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Mitte kunagi" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Käsk '%s' protsessi'id '%d' lõpetas staatusega '%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Käivita ja välju." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Vigane IP formaat. Kasuta xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "See käsk vajab muutujat. Sobivad muutujad on: 'all', failinimi või number.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Töötlen räsi järgi: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Töötlen failinime järgi: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "See käsk vajab argumenti. Sobivad argumendid on: faili räasi.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Pole korrektne number\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Pole kehtiv kontrollsumma (pikkus peab olema täpselt 32 märki)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Rohkema info saamiseks tipi '%s'.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Tõmban '%s'" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Päring ebaõnnestus tundmatu vea tõttu." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operatsioon oli edukas." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Päring ebaõnnestus järgneval põhjusel: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Klientide IP-Filter on %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "Väljas" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "Sees" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Serverite IP-Filter on %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Kehtiv IPFilter Tase on %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Ribalaiuse piirangud: Üles :%u kB/s, Alla: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Ühendatud %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Ühendun" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "tulemüüriga" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Tõmbamine:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Saatmine:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Kliente järjekorras:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Kokku allikaid:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Otsingu tulemusi: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Otsing : %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Otsingu edenemist ei saa näidata" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Serverilt saabus tundmatu vastus, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Näitab lühikest oleku ja statistika infot." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Näita ühenduse olekut, kehtivat saatmise/tõmbamise kiirust jne.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Näitab täieliku statistika puud." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Sellele käsule võib argumendiks lisada numbri vahemikus 0 kuni 255, mis " "näitab\n" "mitu klienditarkvara erinevat versiooni statistika puu harudes näidata. " "Omistades\n" "väärtuseks 0, tähendab see 'piiramatult'.\n" "\n" "Näiteks: 'statistics 5' näitab ainult 5 enamesinenud versiooni iga kliendi " "tüübi kohta.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Seiska aMule" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Seiska eemalasuv töötav tuum (amule/amuled).\n" "Seiskab ka tekstikliendi, kuna see on kasutu ilma töötava tuumata.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Määratud objekt taaslaadimine." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Jagatud failide loetelu taaslaadimine." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "IP Filteri taaslaadimine." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Lae preagune IP filtreerimise tabel uuesti." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Uuenda IP filtrit URL'ist." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Kui URL puudub siis kasutatakseseadetes määratud URL'i." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Ühendu võrguga" #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Ühendab kõigi seadetes määratud võrkudega.\n" "Võid lisaks määrata serveri aadressi moel IP:Port, et ühenduda ainult selle\n" "serveriga. IP peab olema IPv4 vastav aadress või DNS lahenduv nimi." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Ühendu ainult eD2k võrku." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Ühendu ainult Kad võrku." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Lahku võrgust." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Lõpetad ühenduse kõigi, hetkel ühenduses olevate võrkudega.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Lõpeta ühendus ainult eD2k võrguga." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Lõpeta ühendus ainult Kad võrguga." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Lisa tuumale eD2k või magnet link." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Lisatav eD2k link saab olla:\n" "*) link failile (ed2k://|file|...), lisatakse tõmbamise järjekorda,\n" "*) link serverile (ed2k://|server|...), lisatakse serverite loetellu,\n" "*) või link serverite loetelule, sellisel juhul lisatakse kõik loetelus " "olevad\n" " serverid serverite nimekirja.\n" "Magnet link peab sisaldama eD2k kontrollsummat ja faili pikkust.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Määra seade väärtus." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Määra IP filtri seaded." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Lülita serverite ja klientide IP filtreerimine sisse." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Lülita serverite ja klientide IP filtreerimine välja." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Rakenda/ära rakenda klientide IP Filtreerimist." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Lülita klientide IP-filtreerimine sisse." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Lülita klientide IP-filtreerimine välja." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Rakenda/ära rakenda serverite IP Filtreerimist." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Lülita serverite IP-filtreerimine sisse." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Lülita serverite IP-filtreerimine välja." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Vali IP Filtreerimise tase." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Võimalikud filtreerimise tasemed on vahemikus 0 kuni 255, vaikeväärtus on " "127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Määra ribalaiuse piirang." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" "Väärtus, mis nendele käskudele antakse, peab olema kilobaiti/sekundis.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Määra saatmise ribalaiuse piirang." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "" "Väärtus, mis nendele käskudele antakse, peab olema kilobaiti/sekundis.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Määra tõmbamise ribalaiuse piirang." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Hangi ja näita atribuudi väärtus." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Hangi IP filtri seaded." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Hangi IP filtri olek nii klientide kui ka serverite kohta." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Hangi IP filtri olek ainult klientide kohta." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Hangi IP filtri olek ainult serverite kohta." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Vali IP filtreerimise tase." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Kehtiv Ribalaiuse piirang" #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Käivita otsing." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "ASelletüübilise otsingu jaoks peab määrama otsingu tüübi:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Näide: 'search kad fail' otsib \"fail\" kad võrgust.\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Käivita globaalne otsing." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Käivita lokaalne otsing." #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Käivita otsing kad võrgust." #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Näita viimase otsingu tulemusi." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Tagasta eelmise otsingu tulemuse.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Näita otsingu edenemist." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Näita otsingu edenemist.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Alusta faili tõmbamist" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Pead andma eelmise/viimase otsingu faili numbri.\n" "Näiteks 'download 12' alustab eelmise otsingu 12'nda faili tõmbamist.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Peata tõmbamine." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Jätka tõmbamist." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Katkesta tõmbamine." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Määra tõmbamise prioriteet." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Määra tõmbamise prioriteet Low, Normal, High või Auto.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Määra madal prioriteet." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Määra normaalne prioriteet." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Määra kõrge prioriteet." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Määra automaatne prioriteet." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Näita järjekorda/nimekirja." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Näita saatmise/tõmbamise järjekorda, serveri jagatud failide loetelu.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Näita saatmise saba." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Näita tõmbamise järjekorda." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Näita logi." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Näita serverite nimekirja." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Tühjenda logi." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Aegnud käsk, kasuta selle asemel '%s'." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "See on vananenud/aegunud käsk ja võidakse tulevikus eemaldada.\n" "Selle asemel kasuta '%s'.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMule tekstiline klient" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Konverteerin vanad '%s' AICH kontrollsummad 64b '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "HOIATUS: Fail ninega '%s' on vigane ja nimetatati ringi '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "HOIATUS: Sama nimega fail '%s' on olemas, uus fail nimetatati ringi '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Oled kindel et tahad katkestada ja kustutada kõik selle kategooria failid?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Ootan kinnitust" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Liiga palju ühendusi" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "kõik teised" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Vali vaate filter" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Lisa kategooria" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Muuda kategooria" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Eemalda kategooria" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "Faili '%s' avamine ebaõnnestus, eemaldan jagatud failide nimekirjast." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Tundmatu faili '%s' jaoks küsiti kontrollsummat." #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Taastan faili '%s' saatmise" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Peatan faili '%s' saatmise" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Käsu '%s' käivitamine '%s' sündmuse puhul ebaõnnestus" #: src/UserEvents.h:60 msgid "Download completed" msgstr "Tõmbamine lõpetatud" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Faili asukoht koos täieliku rajaga." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Faili nimi ilma raja osata." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "Faili eD2k räsi." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Faili suurus baitides." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Kumuleeruv tõmbamise aeg." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Uus vestlussession alustatud" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Teate saatja." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Pole enam ruumi" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Ketta partitsioon." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Viga lõpetamisel" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Töötlen faili number %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" "Soovisid osade kontrollsummasid (Kasutatakse ainult failidel mis on > 9.5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Faili pole olemas !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, aMule eD2k lingilooja" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Ohoo, rõõm sind näha!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Sisendparameetrid" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Räsitav fail" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Lisa selle faili alternatiivsed URL'id" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Sisesta siia fail, millele soovid luua eD2k linki" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Sisesta siia see URL mida soovid eD2k lingile lisada: Lisa / lõppu, et " "aLinkCreator lisaks sellele faili nime" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Eemalda" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Loo link osa-kontrollsummadega" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Aita suurenenud lingi hinnaga uusi ja haruldasi faile kiiremini levitada." #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4 Faili kontrollsumma" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k Faili kontrollsumma" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k link" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Salvesta" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Kopeeri lõikepuhvrisse" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Ava" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Ava fail tema eD2k lingi loomiseks" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Kopeeri arvutatud eD2k link lõikepuhvrisse" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Salvesta kui" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Salvesta arvutatud eD2k link faili" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "aLinkCreator'ist" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Vali fail, mille eD2k linki soovid arvutada" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Ei suuda lõikepuhvrit avada" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Praeguseks hetkeks pole midagi kopeerida !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Vali fail mille eD2k lingi arvutasid" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Ei suuda avada " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Palun sisesta mittetühi faili nimi" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Pole midagi praeguseks hetkeks salvestada !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, aMule eD2k lingilooja\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pildid pärinevad http://www.everaldo.com ja http://www.icomania.com\n" "ja http://jimmac.musichall.cz/ikony.php3\n" "\n" "Jaotatakse GPL litsentsi järgselt" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Räsin..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator toimib sinu jaoks" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Arvutan MD4 räsi..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Arvutan eD2k räsi..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Tühistatud !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Tehtud %.2f sekundiga" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Oled juba selle URL lisanud !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Palun sisesta mittetühi URL" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Ei suuda %s avada" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i päev(a) %i tundi %i min %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uP %02ut %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02ut %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, aMule Online Statistika" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Suurim Tõmbamine alates wxCas käivitamisest" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Absoluutselt suurim Tõmbamine wxCas eelmistest käivitamistest" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Süsteem" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Peata Automaatne Värskendus" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Salvesta Ühenduse Statistiline pilt" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Trüki Ühenduse Statistiline pilt" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Seaded" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "wxCas Info" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Käivita automaatne värskendamine" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Automaatne värskendamine on peatatud" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Automaatne värskendamine on käivitatud" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Salvesta Statistika" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMule Online Statistika" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Tekkis viga printimisel.\n" "Võibolla pole su printer korralikult seadistatud?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Trükin" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule OnLine Allkirja Statistikal\n" "\n" "(c) 2004 ThePolish \n" "\n" "Baseerub Pedro de Oliveira CAS\n" "\n" "Jaotatakse GPL litsentsi järgselt" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh Oh, aMule ei tööta ..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule töötab" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule töötab aga ühendus on katkestatud" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule ühendub..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh Oh, aMule olek on teadmata..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " on toimetanud juba " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " on seiskunud !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " pole ühendatud !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " ühendub..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " teeb midagi imelikku, kontrolli !!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " on ühendatud " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "väljas" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " baseerub " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " koos " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Kokku Tõmbamisi: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Saatmine: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Seansil Tõmmatud: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Tõmbamine: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Saatmine: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Jagamine: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " faili, Klienti järjekorras: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Kellaaeg: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " on " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Süsteemi koormuse keskmised (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Süsteem on elus juba: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "amulesig.dat fail asukoht" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Siia sisesta kataloog kus asub sinu amulesig.dat fail" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Värskendamise intervall sekundites" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Genereeri igal värskendamisel staatiline pilt" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Kataloog, kuhu soovid salvestada genereeritud staatilised pildid" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Saada perioodiliselt oma stat fail FTP serverisse" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP Url" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP asukoht" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Sisesta siia oma FTP serveri URL" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "Sisesta siia FTP serveri kataloog kuhu paigutada staatilised pildid" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Kasutaja" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Sinu kasutajanimi FTP serverisse logimiseks" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Sinu parool FTP serverisse logimiseks" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "FTP värskendamise intervall minutites" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Kinnita/kontrolli" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Sinu allkirjafaili asukoha kataloog" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Genereeritud statistiliste piltide kataloog" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Laeb malli " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "WEB serveri HTTP port" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Kasuta UPnP pordisuunamist webserveri portide suunamiseks" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP port" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Kasuta gzip pakkimist" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Webserveri täieliku ligipääsu parool" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Webserveri külalise (guest) parool" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Luba külalise (guest) ligipääs" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Keela külalise (guest) ligipääs" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Lae/salvesta webserveri parameetrid eemal-asuvast/asuvasse aMule" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMule seadetefaili asukoht. ÄRA KASUTA OTSE!!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Ära kasuta PHP interpretaatorit (aegunud)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Loo PHP lehed iga päringu puhul uuesti" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule WebServer" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "web kliendi ühenus lubatud\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "VIGA: ei luba web kliendil ühenduda\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Päring ebaõnnestus, põhjus: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Indeksfaili ei leidnud: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Seanss on aegunud - vajalik uuestilogimine\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Seanss ok, sisselogitud\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Seanss ok, pole sisselogitud\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Pole avatud seanssi - nõuan logimist\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Seanss loodud - nõuan logimist\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Töötlen päringut [algupärane]:" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Ilma paroolita logimine pole lubatud." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Kontrollin parooli\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Parooli kontrollsumma vigane\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Parool ok\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Parool, paha\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Sa ei sisestanud parooli. Tühja prooli kasutamine pole lubatud.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Nõuti väljalogimist\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Töötlen päringut [ümbersuunatud]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Osafail %s (%s) ei oma toitefaili" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Osafailil %s (%s) on kehtetu toitefail" #~ msgid "Download status" #~ msgstr "Tõmbamise olek" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Värskenduse viide: %d sekundit" #~ msgstr[1] "Värskenduse viide: %d sekundit" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "Võrguversioonis pole kommmentaarid ja hinnangud veel toetatud" #~ msgid "Transferring" #~ msgstr "Saadan" #~ msgid "QR: ???" #~ msgstr "JK: ???" #~ msgid "QR: %u" #~ msgstr "JK: %u" #~ msgid "Only files currently uploading" #~ msgstr "Ainult failid käimasolevast saatmisest" #~ msgid "Queue Rank" #~ msgstr "Järjekorras" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - näita otsingu edenemist" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Alustan faili '%s' MD4 ja AICH kontrollsumma loomist" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Alustan faili '%s' MD4 kontrollsumma loomist" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Alustan faili '%s' AICH kontrollsumma loomist" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "HOIATUS: peale varukoopia tegemist ei suuda '%s' originaali eemaldada" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "HOIATUS: Ei suutnud %s kustutada" #~ msgid "%u" #~ msgstr "%u" #~ msgid "%u (QR: %u)" #~ msgstr "%u (JK: %u)" #~ msgid "Rating (total):" #~ msgstr "Reiting (kokku):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Proovi saatmisel siirata täielikud tükid" #~ msgid "Networks window" #~ msgstr "Võrgud" #~ msgid "Searches window" #~ msgstr "Otsingu aken" #~ msgid "Downloads window" #~ msgstr "Tõmbamised" #~ msgid "Shared files window" #~ msgstr "Jagatud failide aken" #~ msgid "Messages window" #~ msgstr "Teadete aken" #~ msgid "Statistics graph window" #~ msgstr "Statistiliste graafikute aken" #~ msgid "Preferences settings window" #~ msgstr "Seadete aken" #~ msgid "Transfers" #~ msgstr "Liiklus" #~ msgid "Files transfers window" #~ msgstr "Failide siirdamise aken" #~ msgid "Unban" #~ msgstr "Lõpeta blokeering" #~ msgid "Show Uploads" #~ msgstr "Näita Saatmisi" #~ msgid "Show Queue" #~ msgstr "Näita Järjekorda" #~ msgid "Select View" #~ msgstr "Vali Vaade" #~ msgid "Client Software" #~ msgstr "Kliendi Tarkvara" #~ msgid "Waited" #~ msgstr "Oodanud" #~ msgid "Upload Time" #~ msgstr "Saadetud" #~ msgid "Upload/Download" #~ msgstr "Saatmine/Tõmbamine" #~ msgid "Remote Status" #~ msgstr "Staatus eemalt" #~ msgid "File Priority" #~ msgstr "Prioriteet" #~ msgid "Score" #~ msgstr "Skoor" #~ msgid "Asked" #~ msgstr "Küsitud" #~ msgid "Last Seen" #~ msgstr "Viimati nähtud" #~ msgid "Entered Queue" #~ msgstr "Võetud järjekorda" #~ msgid "Transferred Up" #~ msgstr "Saadetud" #~ msgid "Transferred Down" #~ msgstr "Tõmmatud" #~ msgid "Userhash" #~ msgstr "Kasutaja kontrollsumma" #~ msgid "Encrypted" #~ msgstr "Krüpteeritud" #~ msgid "" #~ "Client capabilities: ZLIB: %s UTF8 numbers: %s Push notification: %s" #~ msgstr "" #~ "Kliendi võimalused : ZLIB: %s UTF8 numbrid: %s Tõukamise märgend: %s" #~ msgid "yes" #~ msgstr "jah" #~ msgid "no" #~ msgstr "ei" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "Laetud %d riigilipu pilti." #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Tööriistaribe ikoon on kadunud, proovin taastada ...." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Näita saatmisi/saba" #~ msgid "Clients on queue :" #~ msgstr "Kliente sabas :" #~ msgid "Current Session" #~ msgstr "Käimasolev seanss" #~ msgid "Total" #~ msgstr "Kokku" #~ msgid "Requested :" #~ msgstr "Küsitud :" #~ msgid "Create backup for preview" #~ msgstr "Loo eelvaateks koopia" #~ msgid "Files Transfers Window" #~ msgstr "Failide siirdamise aken" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Kokku Kasutajaid: %s | Kokku Faile: %s" amule_2.3.1+git20151120.0023527bc2.orig/po/eu.po0000644000175000017500000071416512611472361017110 0ustar morphmorph# translation of eu.po to Euskara # translation of source_strings-04-08-2005.po to # This file is distributed under the same license as the aMule package. # Piarres Beobide , 2005, 2007, 2008, 2010, 2011. # Administrator , 2011. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-11-04 23:17+0100\n" "Last-Translator: Piarres Beobide \n" "Language-Team: Euskara \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: eu\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.2\n" "X-Poedit-SourceCharset: UTF-8\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Gehitu laguna" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Baliozko IP helbide eta ataka sartu behar dituzu!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Argibideak" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Emandako erabiltzaile egiaztapena ez da baliozkoa!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Huts ED2KLinks fitxategia irekitzerakoan." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "KONTUZ: Ezin duzu zure burua ezarri eD2k lotura batean Id baxua duzunean." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Orain, aplikazio nagusia ixten..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "'%ld' pid-a duen amuleweb instantzia amaitzen ... " #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "'%ld' pid-a duen amuleweb instantzia hiltzen ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Huts egin du" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule irteten: Muina ixten." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "aMule itzaltzea osaturik." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "aMule ixtearen memoria arazte irteera:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "EC konfigurazioa" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Pasahitza ezarria eta kanpo konexioak gaiturik." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "OHARRA" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Zure lokalak sistemako lehenetsira aldatu dira konfigurazio aldaketa bat " "dela eta. Barkatu." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Argb" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Ez duzu zerbitzaririk zerbitzari zerrendan.\n" "aMulek zerrenda berri bat orain deskargatzea nahi al duzu?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Zerbitzari zerrenda deskargatu" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "web zerbitzaria abiarazirik %d pid-arekin" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Abioan web-zerbitzaria exekutatzea eskatu duzu, baina amuleweb bitarra ezin " "da exekutatu. Mesedez instalatu amule web zerbitzaria duen paketea edo " "konpilatu ezazu amule --enable-webserver erabilian eta make install egin" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "ERROREA" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Ezin da atakak ezarritako helbidean ireki: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "%u ataka ez dago eskuragarri. IDBaxua izango duzu\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "%u ataka ez dago eskuragarri!\n" "\n" "Honek IDBaxua izango duzula esna nahi du.\n" "\n" "Egiaztatu zure sarea ataka sarrera eta irteerarako irekirik dagoela " "ziurtatzeko." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Huts online sinadura fitxategia sortzerakoan" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Huts aMule online sinadura fitxategia sortzerakoan" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Aukeratutako lokalak ez dirudi zure sisteman instalaturik. (Oharra: Hala ere " "erabiltzen saiatuko da)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "aMule %s abiarazten duzun lehen aldia da" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Bertsioa hau beta bertsio bat da, egunero eguneratzen da, eta\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "ez gara ezer apurtu, zure etxea erre, edo zure zakurra akatzen\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "badu ere kargu egingo. Baina erabiltzeko ziurra izan *beharko* litzateke.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Argibide gehiago, laguntza eta bertsio berriak gure webgunean aurki " "ditzakezu,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "www.aMule.org -en, edo irc.freenode.net IRC sareko #aMule kanalean.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Edozein akatsen berri emateko:http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Zuk aukeratutako sinadura karpeta BALIOGABEA da!\n" " Lehenespenak konpondu artean lineako sinadura EZGAITU egingo da." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Zerbitzari ostalari-izena notifikatua" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Disko aurresleipenak huts egin du '%s' fitxategiarentzat: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "ERROREA: ezin da erregistro fitxategia ireki" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "ABISUA: erregistro fitxategia hutsik dago. Zerbait oker dago." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Erregistroa berrezarri egin da" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "ZerbitzariMezua: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "%s-ren deskarga baztertua, eskatutako fitxategia ez da berria eta." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Huts egin du nodo zerrenda deskargatzerakoan." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Huts egin du" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Hondaturiko bertsio arakatze fitxategia" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Zaharkiturik dagoen aMule bertsio bat erabiltzen ari zara!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Zure aMule bertsioa %i.%i.%i da eta azken bertsioa %li.%li.%li da" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Azken bertsioa beti http://www.amule.org webgunean aurki daiteke" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "OHARRA: Zure aMuled bertsioa zaharkiturik dago: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Zure aMule kopia zaharkiturik dago." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Huts bertsio arakatze fitxategia deskargatzerakoan" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Erab: %s | Fitx: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Erab: E: %s K: %s | Fitx: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Ez dago sarerik hautatuta" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "IDBaxuarekin" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "IDAltuarekin" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "%s %s-ra konektaturik" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "%s-ra konektatzen" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "eD2k-tik deskonektatua" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad abiarazirik." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad gelditurik." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Kad-era Konektatuta (ondo)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Kad-era Konektatuta (suebakirik)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Kad-etik deskonektatua" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Kad sarea ezin da erabili hobespenetan UDP ataka ezgaiturik badago, ez da " "abiaraziko." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Kad sarea hobespenetan ezgaiturik, ez da konektatuko." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ERROREA: aMule deabrua ezin da erabili kanpo konexioak ezgaiturik badaude. " "Kanpo konexioak gaitzeko aMule arrunta erabili, amuled --ec-config aukeraz " "abiarazi edo ezarri \"AcceptExternalConnections\" gakoa 1 balioaz ~/.aMule/" "amule.conf fitxategian" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "ERROREA: Pasahitz erabilgarri bat behar da kanpo konexioak onartzeko, eta " "aMule deabrua ezin da erabili kanpo konexiorik gabe. aMule deabrua " "abiarazteko \"ECPassword\" eremua dagokion balioarekin ezarri behar duzu ~/." "aMule/amule.conf fitxategian. Exekutatu amule --ec-config banderarekin " "pasahitza ezartzeko. Argibide gehiago http://wiki.amule.org gunean" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: Abioan - ordularia abiarazten" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: bigarren planoan lanean - ikusten gaituk" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Ezin da Pid fitxategia sortu" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "ERROREA: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Hau eMulen oinarrituriko aMule %s da." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "%s-n abiarazirik" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Bisitatu http://www.amule.org gunea bertsio berriagorik eskuragarri dagoen " "jakiteko." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ERRORE KONPONEZINA: Huts kronometroa sortzean" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "aMule urruneko kontrola " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Argazkia:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "'Plataforma-orotarako' p2p bezeroa eMulen oinarritua \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Webgunea: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Foroa: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Kontaktua: admin@amule.org (arazo administratiboak) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 aMule taldea \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "aMuleren zati bat \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Parez-pareko routing-a XOR metrikan oinarritua.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Mezua" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "aMule elkarrizketa suntsitua" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Konektatzen" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Konektatzen" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Deskonektatua" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Suebakirik" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Konektaturik" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Konektatzen" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Itzalia" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Utzi" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Geratu uneko konexio saiakerak" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Deskonektatu" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Deskonektatu konektatutako sareetatik" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Konektatu" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Konektatu gaituriko sareetara" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Gora: %.1f(%.1f) | Behera: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Gora: %.1f | Behera: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Konektaturik)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Ez konektaturik)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Benetan %s utzi egin nahi duzu?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Irteera berrespena" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Abiarazi komandoa: " #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- lehenetsia -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Ez dago '%s' itxura direktorioa" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "ABISUA: Ezin da '%s' azal fitxategia irakurri" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Sareak" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Sare leihoa" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Bilaketak" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Bilaketa leihoa" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Deskargak" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Deskargak leihoa" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Partekatutako fitxategiak" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Partekatutako fitxategi leihoa" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Mezuak" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Mezu leihoa" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Estatistikak" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Estatistika grafiko leihoa" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Hobespenak" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Hobespen ezarpen leihoa" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Inportatu" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Zati fitxategi inportazio tresna" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Honi buruz" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Honi buruz/Laguntza" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "eD2k sarea" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Kad sarea" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Sarerik ez" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "aMule urruneko kontrola" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Errore konponezina: Akats ordutegi nagusia sortzerakoan" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Urruneko amulera konektatu" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Errore konponezina: Akats ilara ordutegia sortzerakoan" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Gertaera begizta batera joaten..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Konektatzen..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Konexioak huts egin du " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Urruneko interfaze KK gertaera kudeatzailea" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Itzaltzen" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Konexioak huts egin du. Ezin da %s-ra konektatu:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Konexioa itxita - aMule itxi egin da ziurrenik." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Prest" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Guztiak" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Ezin da '%s' direktorioa sortu '%s' kategoriarentzat, '%s' direktorioa " "mantenduko da." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Ezezaguna" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Huts '%s' erabiltzailearen partekatutako fitxategiak jasotzerakoan" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Laguna bilatzen id-baxu konexiorako" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Gezurrezko eMule bertsioa %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Gezurrezko eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Gezurrezko eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (eMule v0.%u-tan oinarriturik)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Ezizena: %s ID-a: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Eskaerak: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Fitxategi estatistikak saio honentzat. Onarturik %d - eskakizun %d-etik, %s " "transferiturik\n" msgstr[1] "" "Fitxategi estatistikak saio honentzat. Onarturik %d - %d eskakizunetik, %s " "transferiturik\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Fitxategi estatistikak saio guztientzat: Onarturik %d eskakizun %d-etik, %s " "transferiturik\n" msgstr[1] "" "Fitxategi estatistikak saio guztientzat: Onarturik %d %d eskakizunetik, %s " "transferiturik\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Fitxategi ezezaguna eskaturik" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "'%s'-ren mezu bat iragazi da (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "'%s'-ren mezu berria (IP:%s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "%s (%u) erabiltzaileak ez dagoen %s direktorioaren partekatutako fitxategi " "zerrenda eskatu du -> Ukatua" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "Oharra: %s ezin da ireki." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "Abisua: Utzitako fitxategi zerrenda hondaturik dago, buru baliogabeak ditu." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "SI errorea %s fitxategia irakurtzean: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Errorea %s fitxategia gordetzerakoan: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Idatzi kaptxa" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategoria" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Kategoria berria" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Aukeratu karpeta bat deskargatutako fitxategientzat" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Kategoria izen bat ezarri behar duzu!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Kategoriarentzat bide bat ezarri behar duzu!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Huts kategoriarentzat sarrera karpeta sortzerakoan. Mesedez ezarri baliozko " "bide bat!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Berriketa saioa abiarazirik: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Bezerora konektaturik ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Bezerora konektatzen ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Huts bezerora konektatzerakoan / Konexio galdua ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" "*** Kaptxa egiaztapena pasa duzu eta erabiltzaileak zure mezua jaso du. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Kaptxa egiaztapena huts egin du eta zure mezua baztertua izan da. Mezu " "berri bat bidaliaz kaptxa berri bat eskatu dezakezu. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Elkarrizketa" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Itxi fitxa" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Itxi fitxa guztiak" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Itxi beste fitxak" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Gehitu lagun zerrendara" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Kreditu fitxategia kargaturik, bezero %u ezagutzen da" msgstr[1] "Kreditu fitxategia kargaturik, %u bezero ezagutzen dira" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - bezero %u-ren kredituak amaitu dira!" msgstr[1] " - %u bezeroren kredituak amaitu dira!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Ez da 'cryptkey.dat' fitxategia aurkitu, sortzen." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Bezero xehetasunak" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "IDBaxua" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "IDAltua" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Gaitua" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Onartua" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Ez da onartzen" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Ezgaitua" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Konektaturik" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Deskonektatuta" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Ez osorik" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Tipo gaiztoa" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Egiaztaturik: Ondo" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Ez dago erabilgarri" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "%s (%u) erabiltzaileak zure partekatutako fitxategi zerrenda eskatu du -> " "Onartua" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "%s (%u) erabiltzaileak zure partekatutako fitxategi zerrenda eskatu du -> " "Ukatua" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "%s (%u) erabiltzaileak zure partekatutako direktorioen zerrenda eskatu du -> " "Onarturik" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "%s (%u) erabiltzaileak zure partekatutako direktorioen zerrenda eskatu du -> " "Ukaturik" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "%s (%u) erabiltzaileak '%s' direktorioaren partekatutako fitxategi zerrenda " "eskatu du -> Onartua" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "%s (%u) erabiltzaileak '%s' direktorioaren partekatutako fitxategi zerrenda " "eskatu du -> Ukatua" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "%s (%u) erabiltzailearen '%s' partekatutako direktorioa" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" "%s (%u) erabiltzailea eskatu gabeko partekatutako direktorioak bidali ditu." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "%s (%u) erabiltzaileak '%s' direktorioko partekatutako fitxategi zerrenda " "bidali du" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" "%s (%u) erabiltzaileak partekatutako fitxategi zerrenda bidaltzeaz bukatu du" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" "%s (%u) erabiltzaileak eskatu gabeko partekatutako fitxategi zerrenda bidali " "du" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "%s (%u) erabiltzaileak fitxategi/direktorio partekatuen zerrenda ikustea " "ukatu du" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Fitxategi Iruzkinak" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Erabiltzaile izena" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Fitxategi izena" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Kalifikazioa" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Iruzkina" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Ez dago iruzkinik" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "Iruzkin %u" msgstr[1] "%u iruzkin" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Baztertutako %s bezeroa %s datu hondatu bidaltzeagatik '%s' fitxategiaren " "osotasunaren %s" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Bax]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [Nor]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto[Alt]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Oso txikia" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Baxua" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normala" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Altua" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Oso Altua" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Bertsioa" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Eskatzen" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Konektatu zerbitzaria bidez" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Ilara Osoa" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Ilaran" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Deskargatzen" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Aztertze ezarpenak jasotzen" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Ez du behar den zatirik" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Ezin da IDBaxua-IDBaxua konektatu" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Konexio gehiegi" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Kad bidez Konektatzen" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Kad konexio gehiegi" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Ukatuak" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Konexioa errorea" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Urruneko ilara betea" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "MLDonkey zaharra" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "MLDonkey berria" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule bateragarria" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Zerbitzari lokala" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Urruneko zerbitzaria" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Jatorri trukaketa" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Pasibo" #: src/DataToText.cpp:133 msgid "Link" msgstr "Esteka" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Jatorri haziak" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Bilaketa emaitza" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Amaitua" #: src/DataToText.cpp:146 msgid "In progress" msgstr "Martxan" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "ERROREA: Disko-leku gabe" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "ERROREA: Partmet ez da aurkitu" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ERROREA: SI errorea!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ERROREA: Huts egin du!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "Ilaran" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Dagoeneko deskargatzen" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Aldiroko fitxategia formatu ezezagun edo okerrekoa." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Zatia" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Tamaina" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Transferituta" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Abiadura" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Egoera" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Jatorriak" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Lehentasuna" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Egoera" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Denbora faltan" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Azkenez osoa ikusirik" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Azkenez jasoa" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Ziur zaude aukeratutako fitxategia ezabatu nahi duzula?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Ziur zaude aukeratutako fitxategia ezabatu nahi duzula?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Erantzuna hemendik: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Gelditu" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pausa" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Berrekin" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "G&arbitu bukaturikoak" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Jaitsi fitxategi honen A4AF guztiak orain" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Jaitsi fitxategi honen A4AF guztiak (Auto)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Jaitsi fitxategi guztien A4AF guztiak orain" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Hedatutako aukerak" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Aurrebista" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Erakutsi &xehetasunak" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Erakutsi iruzkin guztiak" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Kopiatu URI magnetikoa arbelera" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Kopiatu eD2k &lotura arbelera" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Kopiatu berrelikadura arbelera" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "ezarri gabea" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Ezarri kategoria bat" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Ireki fitxategia" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Sar izen berri bat fitxategi honentzat:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Fitxategia berrizendatu" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Deskargak (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Ohar hau aurreikuspen bakoitzean agertzea saihesteko,\n" "ezarri zure bideo erreproduzigailu gogokoena hobespen leihoan (lehenetsia " "mplayer da)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Fitxategi aurreikuspena" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" "ERROREA: Huts kanpo bideo erreproduzigailua abiaraztean! Komandoa: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "%u zati fitxategia gordetzen %u-tik" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "ZatiFitxategi guztiak gorde dira." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "%sd-tik aldiroko fitxategiak kargatzen." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "%u zati fitxategia kargatzen %u-tik" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "ERROREA: Huts babeskopia fitxategia kargatzerakoan. Bilatu http://forum." "amule.org -en .part.met fitxategi berreskuratze konponbideak." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "ZatiFitxategi guztiak kargatu dira." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Ez da zati fitxategirik aurkitu" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "zati fitxategi %u aurkitu da" msgstr[1] "%u zati fitxategi aurkitu dira" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "Aldiroko direktorioaren fitxategi sistemak ez ditu fitxategi luzeak onartzen." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "Sarrera direktorioaren fitxategi sistemak ez ditu fitxategi luzeak onartzen." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "%s Deskargatzen" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Dagoeneko '%s' fitxategia deskargatzen ari zara" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Dagoeneko baduzu '%s' fitxategia" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Dagoeneko %s fitxategia deskargatzen ari zara" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Ezin da lotura magnetikoa eD2k bihurtu: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Lotura protokolo ezezaguna: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Okerreko eD2k lotura! ERROREA: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Bezeroak pakete bat bidali du egiaztapenak huts egin ondoren." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Kanpo konexioa ukaturik." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Pasahitz zuria dela eta kanpo konexioak ezgaiturik!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Kanpo konexioak ezgaiturik konfigurazio fitxategian" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Kanpo konexio berri bat onartu da" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "ERROREA: ezin da kanpo konexio berria onartu" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "Hobespenetan pasahitza zurian dela eta kanpo konexioak ukaturik!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Bezerora konektatzen: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Bertsio ezezaguna" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Okerreko bertsio ID-a, bitar bateratze ezintasuna dago. Erabili urruneko eta " "nagusi bertsio berdina." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Ezin zara argitaratutako bertsio batetara konektatu edozein garapen " "bertsiotik! *ikusi* apurketa aukera saihestua" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Protokolo bertsio baliogabea." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Protokolo bertsio marka falta da." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" "Autentifikazio errorea: okerreko egiaztapena ezarri da EC pasahitz gisa." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Egiaztapenak huts egin du: okerreko pasahitza." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Egiaztapenak huts egin du: pasahitza falta da." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Eskakizun baliogabea, mesedez identifikatu aurretik." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Sarrera onartua." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "\"%s\" errore mezua bezerora bidalia." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Baimendu gabeko sarrera saiakera %s-tik. Konexioa itxia." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "Urruneko ZatiFitxategi komandoak huts egin du: Ez da %s fitxategi " "egiaztapena aurkitu" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Ez da %s fitxategi egiaztapena aurkitu" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OOPS! OpCode prozesu errorea!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Zerbitzaria ez da gehitu" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "ez da zerbitzaria aurkitu: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "ezabatzeko zerbitzaria ezarri behar da" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k ezgaiturik dago hobespenetan." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Bilaketa bidean. Emaitzak emango une batean!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Urruneko interfazeko Web bilaketak ez du zentzurik." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Ez dago punturik grafikoarentzat." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Zure bezeroa ez dago xehetasun maila honetarako konfiguraturik." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Kanpo konexioa: itzaltzea eskatuta" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Dagoeneko irteten." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "KanpoKonexioa: '%s' lotura gehitzen." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Lotura baliogabea edo zerrendan dagoeneko." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Fitxategia ez da aurkitu." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Fitxategi izen baliogabea." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Ezinda fitxategia berrizendatu." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad ezgaiturik dago hobespenetan." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Dagoeneko eD2k-ra konektaturik." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "ed2k-era konektatzen..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Dagoeneko Kad-era konektaturik." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Kad-era konektatzen..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Sare guztiak ezgaiturik daude." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "eD2k-tik deskonektatua." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Kad-etik deskonektaturik." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Kanpo Konexioa: okerreko opcode-a jasoa: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Opcode baliogabea (okerreko protokolo bertsioa?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "'%s' luzapen ezezaguna '%s' komandoarentzat.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "'%s' komando ezezaguna.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Komando honek ezin du argumenturik eduki.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Komando honek argumentu bat eduki behar du.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Komando hau osotu gabe dago, beheko luzapen hauetako bat erabili dezakezu.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Gehigarri erabilgarriak:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Komando erabilgarriak:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Komando guztietan berdin da maiuskula/minuskula.\n" "Idatzi '%s ' -ri buruzko xehetasunak ikusteko.\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Aplikaziotik ateratzen da." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Laguntza bistarazi." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Komando bati buruz laguntza jasotzeko, idatz ezazu 'help '.\n" "Komandoen zerrenda osoa eskuratzeko, 'help' idatzi.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Erabili '%s' komando zerrendarentzako\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Sintaxi errorea!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Errorea komandoa prozesatzekoan - Ez zen inoiz pasa beharko! Mesedez " "zorriaren berri eman\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Komando honek ez luke parametrorik eduki beharko." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Komando honek parametro bat eduki beharko luke." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Argumentu baliogabea." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Hau komando osatugabe bat da." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Sakatu '%s' laguntza gehiagorako.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Hau %s %s %s da\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Hau %s %s da\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Bezeroa sortzen...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ados, %s uzten...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Ezin da pasahitz zuri batez konektatu.\n" "Pasahitz bat ezarri behar duzu konfigurazio fitxategian,\n" "komando lerroan, edo eskatzen zaizunean sartu.\n" "\n" "Irteten...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Laguntza testu hau bistarazi." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "aMule abiarazirik duen ostalaria. (lehenetsia: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Kanpo konexioetarako aMuleren ataka. (Lehenetsia 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Kanpo konexio pasahitza." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Konfigurazio fitxategitik irakurri." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Ez ezer bistarazi irteera estandarrean." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Luze - arazten mezuak ere bistarazi." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Programa lokala (hizkuntza) ezarri." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Idatzi komando lerroko aukerak konfigurazio fitxategira." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" "aMuleren konfigurazio fitxategian oinarriturik konfigurazio fitxategia " "sortzen du." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Programa bertsioa bistarazi." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Fitxategi xehetasunak" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "%.1f%% egina" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "Huts 'emfriends.met' lagun zerrenda fitxategia irakurketarako irekitzean!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "Huts 'emfriends.met' lagun zerrenda fitxategia idazteko irekitzean!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "KRITIKOA - ez dago bezerorik StartChatSession-en" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Lagunak" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Erakutsi &xehetasunak" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Gehitu laguna" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Ezabatu laguna" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Bidali &mezua" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Ikusi fitxategiak" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Ezarri lagunen ataka" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Ziur zaude hautatako laguna ezabatu nahi duzula?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Ziur zaude hautatako lagunak ezabatu nahi dituzula?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Ez duzu lagun-ataka bat baino gehiago ezartzeko baimenik.\n" " Ataka bat bakarrik dago sinaturik." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Aukera anitza" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Bidali mezua erabiltzaileari" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Bidali behar de mezua:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Lagunetatik kendu" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Mezua bidali" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Swap fitxategi honentzat" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "Ilaran: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Beste fitxategi batez galdeturik" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Igoera ataka baten zain" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "Ilaran: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Igotzen" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Batez" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Ez" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Bai" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Deskargatzen..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "HTTP deskarga utzia" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Ezin da helburu fitxategia sortu %s deskargarentzat!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "Deskargatzeko URLa ezin da hutsik egon" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "%s URL-aren erantzuna: %i - Errorea (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Errore larria deskargatutako fitxategia idazterakoan" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "%d byte deskargaturik" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "%d byte espero ziren, baina %d deskargatu dira" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "Okerreko URLa HTTP deskarga edo HTTP berbideraketarako ('http://' ahaztu al " "duzu?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Ezin da HTTP deskarga zerbitzaria konektatu" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Okerreko erantzuna HTTP deskarga zerbitzaritik" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Deskargatu GeoIP.dat berria %s-tik" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "GeoIP.dat deskargak huts egin du eguneraketa baztertzen." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Huts %s fitxategia ezabatzean, eguneraketa baztertzen." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Huts %s fitxategia berrizendatzean, eguneraketa baztertzen." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "%s behar bezala eguneratu da" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Huts GeoIP.dat deskargatzean" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Huts %s %s-tik deskargatzean" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "Huts '%s'-ren estatu datuak kargatzean." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "'ipfilter.dat' eta 'ipfilter_static.dat' IP iragazkiak kargatzen." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "Huts egin du ipfilter.dat '%s' fitxategia kargatzerakoan, formatu ezezagunak " "aurkitu dira." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Huts egin du ipfilter.dat '%s' fitxategia kargatzerakoan, ezin da fitxategia " "ireki." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "IP-eremu %u kargaturik'%s'-tik." msgstr[1] "%u IP-eremu kargaturik'%s'-tik." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "Gaizki eratutako lerro %u alde batetara utzi da." msgstr[1] "Gaizki eratutako %u lerro alde batetara utzi dira." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Huts %s fitxategi berria berrizendatzean, eguneraketa baztertzen." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "IP iragazkia presta dago" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Hemendik abiarazi:\n" "bezero ezagunak" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nodoak (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Abiarazteko ip baliogabea" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Abiarazteko ataka baliogabea" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Beharrezko eremu guztiak bete" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Ziur zaude nodes.dat fitxategi berri bat deskargatu nahi duzula?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Hau eginez zure nodo zerrenda ezabatu eta Kademlia konexioa berrabiaraziko " "da." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Jarraitu?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: bilaketa gako laburregia" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Bilatzeko gakoa: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Bilaketa gakoa dagoeneko bilaketa zerrendan dago: " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "Huts nodes.dat fitxategia irakurtzean - zaharregia. Bertsioa hau (0) ez da " "luzaroago onartzen." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Irakurri Kad kontaktu %u" msgstr[1] "Irakurri %u Kad kontaktu" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "Ez da kontakturik aurkitu, mesedez autoabiatu edo deskargatu nodes.dat " "fitxategi bat." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Bakarrik Kad kontaktu %d dago eskuragarri, nodes.dat ez da idatziko" msgstr[1] "" "Bakarrik %d Kad kontaktu daude eskuragarri, nodes.dat ez da idatziko" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Idatzi Kad kontaktu %d" msgstr[1] "Idatzi %d Kad kontaktu" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Fitxategia" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Fitxategi tamaina" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Partekatze erlazioa" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Igoa" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Eskatutakoa" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Onartua" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Jatorri osoak" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "Abisua: Fitxategi ezagun zerrenda hondaturik dago, buru baliogabeak ditu." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Huts fitxategi ezagunen zerrendako sarrera bat kargatzean, hondaturik egon " "liteke" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Okerreko sarrera fitxategi ezagunen zerrendako fitxategian, hondaturik egon " "liteke: " #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "%d errore ezezaguna" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "Ezin da %d errorearen azalpena eskuratu" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Aztertzen" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Osotzen" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Amaitua" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Geraturik" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Akasdun" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Zain" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Pasahitz ez zuri bat ezarri behar duzu." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Pasahitz baliogabea, ez da MD5 egiaztapena!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Konexio errorea" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "EC konexioa huts egin du. Erantzun hutsa." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Kanpo konexioa: Okerreko erantzuna, esku-emateak huts egin du. Konexioa " "itxirik." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Lortua! Amulera konexioa sortua " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Lortua! Konexioa sortua." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Kanpo konexioa: Sarrera ukatze arrazoia: " #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Kanpo Konexioa: Esku-emateak huts egin du." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "HTTP deskarga haria hasia" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket: Ondo." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "ERROREA: Ezin da TCP ataka entzun." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "ERROREA: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "OHARRA: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Itxi" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Ebaki" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Kopiatu" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Itsatsi" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Garbitu" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Hautatu dena" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Mugarik gabea" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule tresna-barra Menua" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Abiadura mugak:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "IG: Batez" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "IG: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DE: Batez" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DE: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Deskarga abiadura: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Igoera abiadura: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Bezero argibidea" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Ezizena: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Goitizena ez hautatuta!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "BezeroID: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "konektatu gabe" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Zerbitzari izena: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "ZerbitzariIP: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Konektatu gabe" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP ataka: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP ataka: Ez dago prest" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "TCP ataka: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UDP ataka: Ez dago prest" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Linean sinadura: Gaituta" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Linean sinadura: Ezgaitua" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Abiarazia: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Partekatutako fitxategiak: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Bezeroak ilaran: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "DE guztira: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "IG guztira: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Igoera muga" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Deskarga muga" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "aMule ezkutatu" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "aMule erakutsi" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Irten" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k lotura: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Burutu" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Hemen klikatu eD2k lotura deskarga ilararen testu kontrolean gehitzeko." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Gertaerak hemen agertuko dira. Gertaera zerrenda osorako, begiratu " "Zerbitzari fitxako erregistroan." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Kargatzen ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Konektatuta zauden zerbitzariaren erabiltzaile kopurua ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Erabiltzaile: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Uneko zerbitzarira konektaturiko erabiltzaileak eta guztirako erabiltzaile " "kalkulua." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Gora: 0.0 | Behera: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Unekoa igoera eta deskarga batez bestekoa. Gaiturik badago parentesi arteko " "zenbakiak bezero goiburu datuak dira." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Konexio egoera eta uneko transferentziak bistaratzen ditu. Gezi gorriak " "deskonektaturik zaudela adierazten du, horiak berriz ID baxua (suebakia) " "duzula eta berdeak ID altua (konexio mota hoberena)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Ez konektaturik ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Une honetan konektaturiko zerbitzaria." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Bilatu" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Izena:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Mota" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Lokala" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Orokorra" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "FitxategiEgiaztapena" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Hedatutako parametroak" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Iragazten" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Fitxategi mota" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Edozein" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Konprimituak" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audioa" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD-irudiak" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Irudiak" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programak" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Testuak" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Bideoak" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Hedapena" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Gutx. tamaina" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Byte" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Gehi. tamaina" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Eskuragarritasuna" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Iragazkia:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Iragazi emaitzak" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Emaitza alderantzikatu" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Fitxategi ezagunak ezkutatu" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Hasi" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Gehiago" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" "Bilatu emaitza gehiagoren bila eD2k sarean. Kad-en ez da onartzen oraindik." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Gelditu" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Deskargatu" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Eremuak garbitu" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Emaitzak" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Garbitu amaituriko deskargak" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Fitxategiaren iturburua:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Orokorra" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Izen osoa :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "E/G" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met-fitxategia :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Aztertze zenbakia :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Fitxategi tamaina :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Fitxategi zati egoera :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Azkenez osorik ikusia :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Transferentzia" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Aurkitutako jatorriak :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Jatorriak transferitzen :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Fitxategi zati kopurua :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Erabilgarri :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Data abiadura :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Deskarga aktibo denbora: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Transferituta :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Amaitua tamaina :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Hondatze kudeaketa adimentsua" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Hondaketan galdutakoa :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Konpresioaz irabazitakoa :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "I.C.H. gordetako paketeak :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Fitxategi izenak" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Konpondu" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Garbitu" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Ezarri" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ados" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Iruzkin/tasa fitxategia (testua erabiltzaile guztiek ikusgarria)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Filma batentzat iraupena, istorioa, hizkuntza ...\\n\\neta faltsua den esan " "dezakezu, aMule beste erabiltzaileei esan diezaiekezu." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Fitxategi kalitatea" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Kalifikatu gabea" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Baliogabe / Apurturik / Gezurra" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Pobrea" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Oso ona" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Ondo" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Hobezina" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Fitxategi kalifikazioa hartu edo fitxategia baliogabea bada besteak " "abisatu ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Berritu" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Deskargatzen, itxoin mesedez ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Ezezaguna" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Behar den Informazioa" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP helbidea :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Ataka :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Bestelako informazioa" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Erabiltzaile-izena :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Erabiltzaile aztertze zenbakia :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Gehitu" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Deskarga abiadura" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Unekoa" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Funtzionamendu bataz bestekoa" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "saio batez bestekoa" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Igoera abiadura" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Konexioak" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Deskarga aktiboak" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "konexio aktiboak (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Igoera aktiboak" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Estatistika zuhaitza" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Erabiltzaile izena:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Erabiltzaile-Egiaztapena:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Bezero softwarea:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Bezero bertsioa:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP helbidea:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "Erabiltzaile ID-a:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "Zerbitzaria IP-a:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Zerbitzari izena:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Nahasmena:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "bezerora transferentziak" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Uneko eskakizuna:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Bataz besteko igoera abiadura:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Bataz besteko deskarga abiadura:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Igoa (saioa):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Deskargatua (saioa):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Igoa (denera):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Deskargatua (denera):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Puntuak" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "DE/IG aldagaia:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Identitate ziurra:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Ilara ranking-a:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Ilara puntuak:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Ezizena" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - plataforma anitzetarako mandoa" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "Hau beste erabiltzaileek zuri konektatzerakoan ikusiko duten izena da." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Hizkuntza: " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Argibideak bistarazi aurreko denbora." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Honek kontroletan erabiliko den hizkuntza ezartzen du." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Arakatu bertsio berrien bila abiaraztean" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Hau gaitzean Amulek abiaraztean bertsio berririk dagoen arakatzea egingo du" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Hasi txikiturik" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Gaitzerakoan aMule txikituri abiaraziko da." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Galdetu irteterakoan" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "aMulek irten aurretik galdetzea egiten du." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "Ezkutatu aplikazio leihoa itxi botoia sakatzean" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Tresna-barra ikonoa gaitu" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Honek tresna-barra (edo lan-barra) ikonoa gaitu/ezgaitzen du." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Txikitu ikono-barrara" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Hau gaitzeak aMule zeregin-barrara beharrean sistema tresna-barrara " "txikitzea eragingo du." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Gomendio atzerapena: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "segundo" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Nabigatzaile hautaketa" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Idatzi zure nabigatzaile izena hemen. Zurian utzi sisteman lehenetsitako " "nabigatzailea erabiltzeko." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Arakatu" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Ireki fitxa berrian aukera dagoenenean" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "Ireki web orria fitxa berrian leiho berrian ordez aukera dagoenenean" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Bideo-erreproduzigailua" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Konexio mugak" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Igo" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Ataka ezarpena" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Atakak" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "TCP ataka estandarra " #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Hau eD2k ataka estandarra da eta ezin da ezgaitu." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "UDP ataka zerbitzari eskakizunetarako (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Hedatutako UDP ataka (Kad / bilaketa orokorra) " #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "UDP ataka hau hedaturiko eD2k eskakizun eta Kad sarerako erabiltzen da" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Gaitu UPnP router ataka berbideraketarako" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnP TCP ataka (aukerakoa):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Lotu helbide lokala IP batetara (zurian edozeinentzat):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Erabiltzaile aurreratuak bakarrik: Sare interfaze anitz badituzu idatzi " "amulek erabili behar duen sare interfazearen helbidea." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Jatorri muga deskarga bakoitzerako:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Aldibereko konexioa muga:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Konektatu abiaraztekoan" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "birkonektatu konexioa galtzean" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Ezabatu hildako zerbitzaria geroago" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "saiakerak" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Auto-eguneratu zerbitzari zerrenda abioan" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Zerrenda" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Eguneratu zerbitzari zerrenda zerbitzari batetara konektatzean" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Eguneratu zerbitzari zerrenda bezero bat konektatzean" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Erabili lehentasun sistema" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Erabili IDbaxu egiaztapena konektatzerakoan" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Konexio ziurra" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Estatiko zerbitzarietara bakarrik auto-konektatu" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Ezarri eskuz gehitutako zerbitzariak lehentasun altuan" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Hondatze kudeaketa adimentsua (I.C.H)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Gaitu" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" "I.C.H aurreratuak, egiaztapen bakoitza egiaztatzen du (ez da gomendatzen)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Gehitu fitxategiak deskargetara geldirik" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Gehitu fitxategiak deskarga zerrendara auto-lehentasunarekin" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Saiatu lehen eta azken zatiak hasieran deskargatzen" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Abiarazi lehen pausaturiko fitxategia fitxategi bat osatzean" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Kategoria berdinekoa" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "Orden alfabetikoan" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Aurresleitu disko lekua fitxategi berrientzat" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Fitxategi berrientzat fitxategi bakoitzarentzat disko leku osoa " "aurresleitzen du, honek fragmentazioa murrizten du" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Gelditu deskargak disko-leku librea hona iristean " #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Aukera hau hautatu aMulek zure disko-lekua egiaztatzea nahi baduzu" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Ezarri hemen nahi duzu disko toki txikiena." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "10 jatorri gorde fitxategi arraroentzat (< 20 jatorri)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Igoerak" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Gehitu partekatutako fitxategi berriak auto-lehentasunarekin" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Deskargentzat helburu karpeta" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Aldiroko deskarga fitxategientzat karpeta" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Partekatutako karpetak" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" "(Egin klik eskuineko botoiaz karpeta ikono batean barnekoak ere partekatzeko)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Partekatu ezkutatutako fitxategiak" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafikak" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Eguneratze atzerapena : 5 seg" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Bataz besteko grafiko denbora : 100 min" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Konexio graf eskala: 100 " #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Deskarga grafiko eskala:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Igoera grafiko eskala:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Koloreak: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Atzeko planoa" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Sareta" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Uneko deskargak" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Martxan deskargak bataz bestean" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Saioaren bataz besteko deskargak" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Uneko igoerak" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Martxan igoerak bataz bestean" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Saioaren bataz besteko igoerak" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Konexio aktiboak" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Sistema-barra abiadura-barra ikonoa" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Uneko Kad-nodoak" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Kad-nodoak martxan" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Kad-nodo saioa" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Hautatu" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Zuhaitza" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Erakutsiko diren bezero kopurua (0=mugagabea)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! KONTUZ !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Gehienezko konexio berri / 5 seg" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Fitxategia buffer tamaina: 240000 byte" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Igoera ilara tamaina: 5000 bezero" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Zerbitzari konexio berritze aldia: Ezgaiturik" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Ezgaitu ordenagailu ordulariaren bigarren planoko modua" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Erabiltzeko azala: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Erakutsi \"eD2k lotura kudeatzaile azkarra\" leiho bakoitzean." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Erakutsi argibide hedatuak kategoria fitxetan" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "Erakutsi aplikazio bertsioa izenburuan" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Erakutsi transferentziak izenburuan" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Aplikazio izenaren aurretik" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Aplikazio izenaren ondoren" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Erakutsi goiburu erabilpena" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Tresna-barra bertikal orientazioa" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Bistarazi estatu banderak bezeroentzat" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Deskargatu ilara fitxategiak" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Erakutsi aurrerapen ehunekoa" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Erakutsi aurrerapen barra" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Laua" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Biribildu" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Auto-ordenatu fitxategiak (PUZ handia)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "Amule-k zure deskarga zerrendako zutabeak automatikoki sailkatuko ditu" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Urruneko konexio ezarpenak" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Onartu urruneko konexioak" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "Entzunean dagoen interfazearen IPa:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Idatzi hemen a.b.c.d formatuan entzun behar den interfazearen baliozko ip " "helbidea. Eremu huts batek edo 0.0.0.0 ezartzeak edozein interfazetan " "entzutea eragingo du." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "TCP ataka:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "UPnP berbideraketa gaitu EC atakan" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Pasahitza" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Web zerbitzari parametroak" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Exekutatu web-zerbitzaria abioan" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Web txantiloia" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Baimen osorako pasahitza" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Gaitu baimen gutxiko erabiltzailea" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Baimen baxuko pasahitza" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Gaitu web zerbitzari atakaren UPnP ataka birbidalketa" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Web zerbitzari UPnP ataka (aukerakoa)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Orrialdea berritzeko denbora (segundotan)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Gaitu Gzip konpresioa" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "Ados" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Hemen klik egin hobespenetan eginiko edozein aldaketa ezartzeko." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Berrezarri hobespenetan eginiko edozein aldaketa." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Titulua :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Iruzkina :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Deskarga direktorioa :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Aldatu lehentasuna fitxategi berrientzat :" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Ez aldatu" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Hautatu kolorea kategoria honentzat (unean aukeratutakoa) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Garbitu" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Botoi hau klikatu erregistroa garbitzeko." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Klik egin botoi honetan zerbitzari zerrenda URL-tik eguneratzeko ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Zerbitzari zerrenda" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Idatzi server.met fitxategiaren URL bat hemen eta gero ezkerreko botoia " "sakatu zerbitzari ezagunen zerrenda eguneratzeko." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Gehitu zerbitzaria eskuz: Izena" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Idatzi zerbitzari berriaren izen hemen" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP ataka" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Idatzi x.x.x.x formatua erabiliaz zerbitzariaren ip helbidea." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Idatzi zerbitzariaren ataka hemen." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Gehitu zerbitzari bat eskuz (sar datuak ezkerrean lehenik) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule erregistroa" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Zerbitzari argibideak" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Argb" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad Argb" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Klikatu botoi honetan nodo zerrenda URL honetatik eguneratzeko ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nodoak (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "nodes.dat fitxategi baten URL-a idatzi eta ezkerreko botoia sakatu nodo " "ezagunen zerrenda eguneratzeko." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Nodo estatistikak" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Autoabioa" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Nodo berria" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Ataka:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Bezero ezagunetarik abiarazi" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Kad deskonektatu" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Erabili erabiltzaile identifikazio segurua" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Gomendagarri da aukera hau gaitzea. Ez duzu krediturik jasoko EIS erabiltzen " "ez baduzu." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Protokolo nahastea" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Gaitu protokolo nahastea" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Aukera honek protokolo nahastea gaitzen du eta aMule-k beste bezeroetako " "konexio nahastuak onartzea eragite du." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Erabili nahastea kanporako konexioetan" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Aukera honek Amulek beste bezero/zerbitzarietara konektatzerakoan protokolo " "nahastea erabiltzea eragiten du." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Onartu nahasitako konexioak bakarrik" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Aukera honek Amulek nahasitako konexioak bakarrik onartzea eragiten du. " "Jatorri gutxiago izango dituzu baina zure trafiko guztia nahasia egongo da" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Edozeini" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Bat ere ez" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Nork ikusi ditzaken nire partekatutako fitxategiak:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Hautatu zure partekatutako fitxategiak nork ikus ditzakeen." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP-Iragazkia" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Bezeroak iragazi" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "~/.aMule/ipfilter.dat fitxategian ezarritako bezero IP iragazketa gaitu." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Zerbitzariak iragazi" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "~/.aMule/ipfilter.dat fitxategian ezarritako zerbitzari IP iragazketa gaitu." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Berritu zerrenda" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "Berritu ~/.aMule/ipfilter.dat fitxategian ezarritako IP helbideen iragazkia" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL-a:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Eguneratu orain" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Automatikoki eguneratu ip iragazkia abioan" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Iragazki maila:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Beti iragazi LAN IP-ak" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Paranoia kudeaketa pareko ez diren IP helbideentzat" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Paketea atzera bota bezero ip-a paketea jaso den ip-aren ezberdina bada. " "Kontu handiaz erabili." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Erabili sistemako ipfilter.dat eskuragarri badago" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Ez bada ipfilter.dat fitxategi lokalik aurkitu, orduan onartu sistema " "ipfilter fitxategia erabiltzea." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Gaitu sinadura linean" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Gaitu sistemak fitxategiak idaztea, kanpo programek sinadurak sortu ahal " "izateko egiten da." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Eguneratu maiztasuna (Seg):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Aldatu linean sinadura eguneraketa aldia (segundotan)." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Gorde sare sinadura fitxategia hemen: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "Klikatu hemen linean sinadurak dituen karpeta aukeratzeko." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "sarrera mezu iragazkia (txat honetan ezik):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Mezu guztiak iragazi" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Lagun zerrendan ez daudenen mezuak iragazi" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Bezero ezezagunen mezuak iragazi" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Hau duten mezuak iragazi (erabili ',' bereizle bezala):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "Gehitu amulek mezuetan blokeatzea nahi dituzun hitzak" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Ikusi jasotako mezuak erregistroan" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Iruzkinak" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Fitxategi iruzkinak hau du (',' erabili bereizle gisa):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Proxy gabeko zerbitzari konexio automatikoa" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Gaitu autentifikazioa" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "erabiltzaile/pasahitz autentifikazioa gaitu/ezgaitu" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Erabiltzaile izena: " #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Proxy-ra konektatzeko erabiliko den erabiltzaile izena" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Pasahitza:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Proxy-ra konektatzeko erabiliko den pasahitza" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Proxy-a gaitu" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Proxy onarpena gaitu/ezgaitu" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Proxy mota:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Proxy ostalaria:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Proxy ostalari izena" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Proxy ataka:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Proxy ataka" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Hona konektaturik:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Urruneko aMulen saioa hasi" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Erabiltzaile izena" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Ezarpen hauek gogoratu" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Gaitu arazten luzeko saio hasiera." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Ireki fitxategia" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Mezu kategoriak:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Zain..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Gehitu" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Berriz saiatu hautaturikoak" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Ezabatu hautaturikoak" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Gertaera motak" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "Hautako fitxategientzat estatistika eta bezero ilara: Saioa / osotara" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Igoera aktiboak" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "fitxategi guztien ehunekoa" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Fitxategi guztiak" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Hautatutako fitxategiak" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Igoera aktiboak bakarrik" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Erakutsi bezeroak:" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Berritu:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Berritu zure partekatutako fitxategiak" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Bidali" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Zehaztutako mezua bidali." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Itxi elkarrizketa saio hau." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Konektatu edozein zerbitzari eta/edo Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Partekatutako fitxategiak" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Ezgaitua [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "byte" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "A" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/seg" msgstr[1] "byte/seg" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "seg" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "min" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "ordu" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Egunak" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "denak" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "Beste denak" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Amaitugabea" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Gelditua" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Bideoa" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Fitxategia" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Testua" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Martxan" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Konfigurazio direktorioa: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Zati-fitxategiak aria bihurtzearen zain ixteko..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "%s inportatzen: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Aldiroko karpeta irakurtzen" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Deskarga fitxategiaren argibide oinarrizkoak eskuratzen" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Helburu fitxategia sortzen" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Deskarga fitxategi zaharretik Kargatzen (%u %u-tik)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Datu blokeak deskarga fitxategi berrian gordetzen (%u %u-tik)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Deskarga fitxategi argibide jatorria eskuratzen" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Deskarga gehitu eta zati fitxategi berria gordetzen" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Zati fitxategiak inportatu" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Egoera" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "FitxategiEgiaztapena" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Diskoa: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Mesedez ezarri aldiroko fitxategiak bilatuko diren karpeta! (azpikarpetak " "ere arakatuko dira)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Behar bezala deskargaturiko fitxategien jatorri fitxategiak ezabatze nahi al " "duzu?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Ezabatu jatorriak?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "ERROREA: Huts zati fitxategia sortzerakoan" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "met-file fitxategiaren babes-kopia %s-tik kargatzen saiatzen" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "ERROREA: Huts part.met fitxategiak irekitzean: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "ERROREA: part.met fitxategi tamaina 0 da: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "ERROREA: part.met fitxategi bertsio okerra: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Errorea: %s (%s) hondaturik dago (marka okerrak: %s), ezin da fitxategia " "kargatu." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "ERROREA: %s (%s) hondaturik dago (okerreko etiketa-kopurua), ezin da " "fitxategia kargatu." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Fitxategi informazioa berreskuratzen saiatzen..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Izen gabeko fitxategia berreskuratzen - RecoveredFile.dat bezala " "berreskuratzen saiatuko da" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Fitxategi informazio eskuragarri guztia berreskuraturik :D - Erabiltzen " "saiatzen..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Ezin da fitxategi informazioa berreskuratu:(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Huts egin du irekitzerakoan: %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "ABISUA: %s agian hondaturik dago (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "ERROREA zati fitxategia gordetzerakoan: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "SI errorea zati fitxategia gordetzerakoan: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Ezin da '%s'-ren tamaina eskuratu - %s fitxategia erabiltzen." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' hutsik dago - %s fitxategia erabiliko da." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Errorea %s-ren part.met.seeds fitxategia gordetzerakoan" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "jatorri ale %i bildurik zati fitxategiarentzat: %s (%s)" msgstr[1] "%i jatorri ale bildurik zati fitxategiarentzat: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "jatorri ale %i bildurik zati fitxategiarentzat: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Errorea zati-fitxategi hazi fitxategia irakurtzerakoan (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Hondaturiko zatia (%d) aurkitu da %d zati %s zati fitxategian - " "FitxategiEgiaztapenEmaitza |%s| fitxategiEgiaztapena |%s|" msgstr[1] "" "Hondaturiko zatia (%d) aurkitu da %d zatitan %s zati fitxategian - " "FitxategiEgiaztapenEmaitza |%s| fitxategiEgiaztapena |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Bukatutako (%i) zatia aurkiturik %s-n" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Amaitutako berrazterketa: %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Ustekabeko errorea %s osatzean. Fitxategia gelditurik" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Deskarga amaiturik: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "fitxategia ezabatzen:%s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "ABISUA: Ezinda deskargaturiko zatia egiaztatu - egiaztapen-bilduma osatugabe " "'%s'-rentzat" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "ERROREA: Ezin da deskargaturiko zatia egiaztatu - egiaztapen-bilduma " "osatugabea (%s). Hau ez zen inoiz gertatu beharko" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "Egiaztapenean fitxategi amaiera deskargaturiko %2$u tamaina duen %1$u zatian " "(geh. %3$u) %5$u tamaina duen '%4$s' zati-fitxategian: %6$s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "KONTUZ: Diskoa leku askieza! Fitxategia gelditzen: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Deskargaturiko %i zatia hondaturik dago fitxategi honetan: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Hondaturiko %i zatia %s-rena -> Gordetako byte-ak: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Esleitzen" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Disko leku askieza" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Deskargatua" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "ERROREA: Huts '%s' zati fitxategia irekitzean" #: src/Preferences.cpp:632 msgid "System default" msgstr "Sistema lehenetsia" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albaniera" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabiera" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Bablea" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Euskara" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgariera" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Katalana" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Txinatarra (Sinplea)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Txinatarra (ohizkoa)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Kroaziera" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Txekiera" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Daniera" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Nederlandera" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Ingelesa (E.B.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estoniera" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finlandiera" #: src/Preferences.cpp:648 msgid "French" msgstr "Frantsesa" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galiziera" #: src/Preferences.cpp:650 msgid "German" msgstr "Alemana" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Grekoa" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebreera" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Hungariera" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italiera" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italiera (Suitzarra)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japoniera" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Koreera" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lituaniera" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norvegiera (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Poloniera" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugesa" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugesa (Brasildarra)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Albaniera" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Errusiera" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Esloveniera" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Gaztelera" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Suediera" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turkiera" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ukraniera" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Aldatu hizkuntza" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "Ez dago aMulerentzat itzulpen instalaturik" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "Ez dago hizkuntza erabilgarririk" #: src/Preferences.cpp:906 msgid "no options available" msgstr "ez dago aukera erabilgarririk" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Kategoria baliogabe aurkitua, baztertzen" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "TCP ataka ezin da 65532 baino altuagoa izan UDP socket-a TCP+3 bait da" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Lehenetsiriko ataka erabiliko da (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Kentzen ez-dagoen partekatutako direktorioa: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Konexioa" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Direktorioak" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Zerbitzariak" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Fitxategiak" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Segurtasuna" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Interfazea" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy-a" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Iragazkiak" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Urruneko kontrolak" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Sinadura linean" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Aurreratua" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Gertaerak" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Araztena" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "Hurrengo aldagaiak ordeztuko dira:\n" " %PARTFILE - fitxategiaren bide osoa\n" " %PARTNAME - fitxategi-izena soilik" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Ezarpen hauek ez aldatu ez badakizu zer egiten\n" "ari zaren, bestela normalean gauzak daudenak\n" "baino okerrago geratuko dira zuretzat.\n" "\n" "Amulek ondo funtzionatu beharko luke ezarpen\n" "hauek aldatu gabe." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Huts %d IDa eta %s gakoaz konfiguraziotik programara konektatzean" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "Huts %d IDa eta %s gakoaz konfiguraziotik programara datuak bidaltzean" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Konektatzen ari zaren Proxy-aren mota" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "Huts %d IDa eta %s gakoaz programatik konfiguraziora datuak bidaltzean" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule berrabiarazi egin behar da aldaketa hauek gaitu ahal izateko:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP ataka aldaturik.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP - ataka aldaturik.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Kanpo konexio ataka aldatua.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Lanpo konexio onarpena aldatua.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Kanpo konexio interfazea aldatua.\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Protokolo nahastea" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Auto-eguneraketa zerbitzari zerrenda hutsa dago.\n" "'Auto-eguneratu zerbitzari zerrenda abioan' ezgaitu egingo da." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Kanpo konexioak gaiturik dituzu baina ez duzu pasahitzik ezarri.\n" "Kanpo konexiorik ezin da onartu baliozko pasahitza ezarri arte." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Hizkuntza aldaturik.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Aldiroko karpeta aldaturik.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- ED2K sarea gaiturik.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Bai eD2k eta bai Kad sareak ezgaiturik daude.\n" "Ezingo zara konektatu behintzat bietako bat gaitu arte." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad ezin da abiarazi zure UDP ataka ezgaiturik badago.\n" "UDP ataka gaitu edo Kad ezgaitu." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "aMule orain berrabiarazi BEHAR duzu.\n" "Orain ez berrabiaraziaz gero ez kexatu ezer txarra gertatzen bada.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Zure auto-eguneraketa zerbitzari zerrenda zurian dago.\n" "Mesedez bete behintzat baliozko server.met fitxategi batetara zuzenduaz.\n" "Klikatu \"zerrenda\" botoia URL-a sartzeko." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Aldi baterako fitxategiak" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Sarrera fitxategiak" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Linean sinadurak" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Aukeratu karpeta bat %s-rentzat" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Arakatu bideo erreproduzigailua" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Hautatu nabigatzailea" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Abiarazgarria%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Editatu zerbitzari zerrenda" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Gehitu hemen server.met deskargatzeko URL-a.\n" "URL helbide bat lerro bakoitzean." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Eguneratze maiztasuna: seg %d" msgstr[1] "Eguneratze maiztasuna: %d seg" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Batez besteko grafiko denbora: minutu %d" msgstr[1] "Batez besteko grafiko denbora: %d minutu" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Konexio grafiko eskala: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Fitxategi buffer tamaina: byte %d" msgstr[1] "Fitxategi buffer tamaina: %d byte" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Igoera ilara tamaina: bezero %d" msgstr[1] "Igoera ilara tamaina: %d bezero" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Zerbitzari konexio berritze maiztasuna: minutu %d" msgstr[1] "Zerbitzari konexio berritze maiztasuna: %d minutu" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Zerbitzarira konexio berritze maiztasuna: Ezgaiturik" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "ezgaiturik" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Gertaeran'%s' komandoa exekutatu" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Gaitu komando exekuzioa muinean" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Muin komandoa:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Gaitu komando exekuzioa urruneko interfazean" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Urruneko interfaze komandoa:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Hurrengo aldagaiak aldatuko dira:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "Gutxienezko tamaina gehienezkoa baino txikiagoa izan behar da. Gehienezkoa " "alde batetara utziko da." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Bilaketa oharra" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Nagusia" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Ezin da Kad bilaketarik egin Kad ez badago abiarazirik" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "Ezin da eD2k bilaketarik egin eD2k ez badago konektaturik" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Espero gabeko errorea Kad bilaketa egitean: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "FitxategiID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Fitxategia" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Kategori honetan deskargatu" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "Eskuratu %s fitxategi honentzat" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Bilatu erlazionatutako fitxategiak (eD2k, zerbitzari lokala)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Markatu fitxategia ezaguna bezala" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Kopiatu ed2k lotura arbelera" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Utzia" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Berria" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Huts zerrendaturiko nahasitako zerbitzarietara konektatzean. Nahaste gabeko " "beste saiakera bat egiten." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Huts zerrendako zerbitzari guztietara konektatzen saiatzerakoan. Berriz " "hasiko nahiz." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "eD2k sarea hobespenetan ezgaiturik, ez da konektatuko." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "Ez da konektatzeko baliozko zerbitzaririk aurkitu zerbitzari zerrendan" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "%s (%s:%i)-ra konektaturik" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Konexioa sorturik: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Errore konponezina konektatzen saiatzean. Internet konexioa eroria egon " "daiteke" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "%s (%s:%i)-ra konexioa galduta" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) hilik dagoela dirudi." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) beterik dagoela dirudi." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "" "Zerbitzariarekiko konexio automatikoa berriz saiatuko da segundo %d-etan" msgstr[1] "" "Zerbitzariarekiko konexio automatikoa berriz saiatuko da %d segundotan" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Konexioa galdu egin da" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Huts %s (%s:%i) -ra konektatzerakoan." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "ERROREA: Socket baliogabea denbora-muga egiaztapenean" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "%s (%s:%i) -ra konexio saiakera denboraz kanpo geratu da." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Zaharkitutako DNS galdeketa erantzuna, baztertzen." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "server.met fitxategia kargatzen: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Server.met fitxategia ez da aurkitu!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Huts '%s' server.met fitxategi irakurtzerakoan, formatu ezezaguna aurkiturik." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Huts server.met fitxategia irekitzerakoan!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Server.met fitxategia hondaturik dago, bertsio marka baliogabea aurkitu da: " "0x%x, tamaina %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "zerbitzari %i aurkiturik server.met fitxategian" msgstr[1] "%i zerbitzari aurkiturik server.met fitxategian" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "zerbitzari %d gehiturik" msgstr[1] "%d zerbitzari gehiturik" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Errorea: 'server.met' fitxategia hondatua dago: " #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "SI errorea 'server.met' fitxategia irakurtzean: " #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Zerbitzaria ez da gehitu: [%s:%d] -ek ez du baliozko atakarik ezarri." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" "Zerbitzaria ez da gehitu: [%s:%d] -ren IP helbidea iragazirik dago edo " "baliogabea da." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Zerbitzaria ez da gehitu: [%s:%d] IP:Ataka dun zerbitzaria aurkitu da " "zerrendan." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Zerbitzaria gehiturik: [%s:%d] zerbitzaria '%s' izena erabiltzen." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Konektaturik zauden zerbitzaria ezabatu nahi duzu. Mesedez deskonektatu " "lehenik." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Huts '%s' irekitzerakoan" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Huts server.met gordetzerakoan!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "URL Baliogabea" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Amaituta zerbitzari zerrenda %s-tik deskargatzeaz" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Ez da zerbitzari zerrenda helbideri aurkitu 'addresses.dat' fitxategian. " "Mesedez itsatsi zerbitzari zerrenda erabilgarri bat fitxategi honetan " "zerbitzari-zerrenda eguneratu ahal izateko" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Hasi zerbitzari zerrenda %s-tik deskargatzen" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "OHARRA: URL baliogabea ezarri zerbitzari auto-eguneraketarako: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "Ez da baliozko server.met auto-deskarga url helbiderik aurkitu addresses.dat " "fitxategian" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Huts zerbitzari zerrenda %s-tik deskargatzerakoan" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Zerbitzari lokala IPIragazkiak iragazirik dago, beste zerbitzari batetara " "birkonektatzen!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Zerbitzaria izena" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Helbidea" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Ataka" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Azalpena" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Erabi." #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Estatikoa" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Bertsioa" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Ezabatu naian zauden zerbitzarira konektaturik zaude. Mesedez deskonektatu " "zaitez aurretik. Zerbitzaria EZ da ezabatuko." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Izen ezezaguna)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Ziur al zaude %s zerbitzari tinkoa ezabatu nahi duzula" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Zerbitzariak (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Zerbitzaria" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Zerbitzarira konektatu" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Zerbitzaria estatiko bezala markatu" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Zerbitzaria ez-estatiko bezala markatu" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Zerbitzariak estatiko bezala markatu" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Zerbitzariak ez-estatiko bezala markatu" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Ezabatu zerbitzaria" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Ezabatu zerbitzariak" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Kendu zerbitzari guztiak" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Kopiatu eD2k loturak arbelera" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Zerbitzarira birkonektatu" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Ziur zaude zerbitzari guztiak ezabatu nahi dituzula?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Ziur zaude aukeratutako zerbitzaria ezabatu nahi duzula?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Ziur zaude aukeratutako zerbitzariak ezabatu nahi dituzula?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "ERROREA: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "ABISUA: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Bezero id berria: %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "ABISUA: ID baxua jaso duzu!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tZiurrenik firewall edo router baten atzean zaudelako izan daiteke." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tArgibide gehiagorako begiratu http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Zerbitzari argibide ezezaguna jasoa! - laburregia" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Zerbitzari berri %d jasoa" msgstr[1] "%d zerbitzari berri jasoak" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Zerbitzari zerrenda gordetzeaz amaitu da." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Zerbitzariak azken komandoa ukatu du" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Hondaturiko pakete bat jaso da zerbitzaritik: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Errore kudeaezina zerbitzariko paketea prozesatzekoan: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Ezin da DNS ebazpen hari bat sortu %s-ra konektatzeko" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "%s (%s) IP-dun zerbitzaria iragazirik dago. Ez dago konektatzen." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "protokolo nahastea erabiltzen." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Konektatzen: %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Ezin da %s zerbitzariaren dns-a ebatzi: Ezin da konektatu!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Zerbitzaria ez da gehitu: ez da IP edo ostalari izenik ezarri." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Zerbitzaria ez da gehitu: Baliogabeko zerbitzari-ataka ezarririk." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "eD2k egoera:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kademlia egoera:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "LAN moduan abiarazirik" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Martxan" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Egoera:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Konexio egoera:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Suebakirik - ireki %d TCP ataka zure router edo suebakian" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "UDP konexio egoera:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Suebakirik - ireki %d UDP ataka zure router edo suebakian" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Suebaki egoera: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Ez da lagunik behar - TCP ataka irekia" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Ez da lagunik behar - UDP ataka irekia" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Laguna ez" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Lagunera konektatzen" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Lagunera %s-en konektaturik" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Indexatutako jatorriak:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Indexaturiko gakoak:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Indexatutako oharrak:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Indexaturiko karga:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Bataz besteko erab:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Bataz besteko fitxategiak:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Geldirik" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "%s fitxategia partekatuei gehitzen" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Ezagututako partekatutako fitxategi %i aurkiturik" msgstr[1] "%i ezagututako partekatutako fitxategi aurkiturik" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "%i ezagututako partekatutako eta ezezagun %i aurkiturik" msgstr[1] "%i ezagututako partekatutako eta %i ezezagun aurkiturik" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "ERROREA: %s partekatzeko saiakera" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Partekatutako direktorioa ez da aurkitu, baztertzen: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Ez da partekatu daitekeen fitxategirik direktorioan: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Erabiltzaile izena" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Deskarga abiadura" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Igoera abiadura" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Zati eskuragarriak" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "Igoera egoera" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Deskarga Egoera" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Jatorria" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Fitxategi lokalaren izena" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "Partekatutako fitxategi zerrendak" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Eskaerak" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Onartutako eskaerak" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Transferitutako datuak" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Partekatze erlazioa" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Eskuratutako zatiak" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Jatorri osoak" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Karpeta bidea" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Iruzkina/Kalifikazioa gehitu" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Iruzkina/Kalifikazioa editatu" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Izena aldatu" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Gehitu fitxategiak bildumara zerrenda bidaltzeko" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Kopiat&URI magnetikoa arbelera" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Kopiatu eD2k lotura arbelera (&Jatorria)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Kopiatu eD2k lotura arbelera (Jatorria) (&zifratu aukerekin)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Kopiatu eD2k lotura arbelera (&ostalaria)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "Kopiatu eD2k lotura arbelera (ostalaria) (&zifratu aukerekin)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Kopiatu eD2k lotura arbelera (&AICH argb)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Kopiatu eD2k lotura arbelera (&AICH argb)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "ID altua behar duzu baliozko jatorri lotura bat sortzeko" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Partekatutako fitxategiak (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[ZatiFitxategia]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Urruneko fitxategiaren izena" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Igotako datuak (saioa (guztira)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Guztira buruak (paketeak): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Fitxategi eskakizun buruak (paketeak): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Jatorri aldaketa buruak (paketeak): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Zerbitzari buruak (paketeak): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Kad buruak (paketeak): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Zifratu goiburua (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Igoera aktiboak: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Igoerak zain: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Guztira behar bezala igotako saioak: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Guztira oker igotako saioak: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Batez besteko igoera denbora: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Deskargaturiko datuak (saioa (guztira)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Aurkituriko iturburuak: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Deskarga aktiboak (zatiak): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Saio IG/DE abiadura (guztira): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Bataz besteko deskarga tasa (saioa): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Bataz besteko igoera tasa (saioa): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Gehienezko deskarga tasa (saioa): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Gehienezko igoera tasa (saioa): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Berkonexioak: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Denbora lehen transferentziatik: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Zerbitzaria noiztik konektatua: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Konexio aktiboak (estimazioa): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Gehienezko konexio mugara iritsi: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Batez besteko konexioak (ebaluazioa): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Puntako konexioak (estimazioa): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Bezeroak" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Ezezaguna: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Iragazirik: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Ukatuak: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Guztira: %i Ezagunak: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Zerbitzariak martxan: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Huts egindako zerbitzariak: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Guztira: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Ezabatutako zerbitzariak: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Iragaziriko zerbitzariak: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Erabiltzaileak - zerbitzariak martxan: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Fitxategiak - zerbitzariak martxan: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Guztira erabiltzaileak: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Guztira fitxategiak: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Zerbitzari lan karga %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Partekatutako fitxategi kopurua: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Guztira partekatutako fitxategi tamaina: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Bataz besteko fitxategi tamaina: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Sistema eragilea" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Ez Jasoa" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Konexio aktiboak (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Ez dago erabilgarri" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Inoiz ere ez" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "'%2$d' pid-a duen '%1$s' komandoa '%3$d' egoera kodeaz amaitu da." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr " exekutatu eta irten." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "IP Formatu baliogabea. Erabili xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Komando honek argumentu bat behar du. Baliozko argumentuak: 'all' fitxategi-" "izena edo zenbaki bat.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Egiaztapenez prozesatzen: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Izenez prozesatzen: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Komando honek argumentu bat behar du. Baliozko argumentuak: fitxategi " "egiaztapena.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Ez da baliozko zenbaki bat\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" "Ez da baliozko egiaztapen bat (luzera zehazki 32 karakterekoa izan behar " "da)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Sakatu '%s' laguntza gehiagorako.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Deskarga tamaina: %i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Eskakizunak errore ezezagun batez huts egin du." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Ekintza arrakastatsuki amaitu da." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Eskakizunak errore honekin huts egin du: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Bezero IP iragazketa %s dago.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "EZGAITURIK" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "GAITURIK" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Zerbitzari IP iragazketa %s dago.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Uneko IPiragazki maila %d da.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Banda-zabalera mugak: Gora: %u kB/s, Behera: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "%s %s %s-(e)ra konektaturik" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Ez konektatzen" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "suebakirik" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ondo" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Deskargatu:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Igo:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Bezero ilaran:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Jatorriak guztira:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Bilaketa emaitza kopurua: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Bilaketa aurrerapena: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Bilaketa aurrerapena ez dago eskuragarri" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Zerbitzaritik erantzun ezezagun bat jaso da, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Egoera informazio laburra bistarazi." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Konexio egoera bistarazi, uneko igo/deskarga abiadura, etab.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Estatistika zuhaitz osoa bistarazi." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Aukeran, 0-255 tarteko argumentu bat eman daiteke komando honi. Honekin " "bezero\n" "zuhaitzean ikusiko diren sarrera muga ezarri daiteke. 0 emanez edo ez emanez " "gero\n" "'mugagabea' izango da.\n" "\n" "Adibidea: 'statistics 5' erabiliaz bezero mota bakoitzeko 5 bertsio nagusiak " "ikusiriko dira.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Itzali aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Itzali urruneko muina (amule/amuled).\n" "Honek testu bezeroa ere itxiko du ez bait da muinik gabe funtzionatzeko\n" "gai.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Emandako objektua birkargatu." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Partekatutako fitxategi zerrenda birkargatu." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "IP iragazki taula birkargatu." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Uneko Ip iragazte taula birkargatu." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "IP iragazki taula URLtik eguneratu." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "URLa ez bada ezartzen hobespenetakoa erabiliko da." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Sarera konektatu." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Honek hobespenetan gaiturik dauden sare guztietara konektatuko du.\n" "Aukeran IP:Ataka formatuan zerbitzari helbide bat ezarri dezakezu " "zerbitzari\n" "horretara bakarrik konektatzeko. IP helbidea puntuaturiko IPv4 hamartar " "helbide\n" "bat izan behar da edo ebatzi daitekeen izen bat." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "eD2k sarera bakarrik konektatu." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "KAD sarera bakarrik konektatu." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Saretik deskonektatu." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Honek konektaturik zauden sare guztietatik deskonektatuko zaitu.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "eD2k saretik bakarrik deskonektatu." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Kad saretik bakarrik deskonektatu." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Ed2k edo lotura magnetiko bat gehitu muinera." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Gehitzeko eD2k lotura hauetako bat izan daiteke:\n" "*) fitxategi lotura bat (ed2k://|file|...), berau deskarga ilaran gehituko " "da,\n" "*) zerbitzari lotura bat (ed2k://|server|...), berau zerbitzari zerrendan " "gehituko da\n" "*) edo zerbitzari-zerrenda lotura bat, kasu honetan zerbitzari guztiak " "gehituko dira\n" " zerbitzari zerrendara.\n" "\n" "Lotura magnetikoak ed2k egiaztapena eta fitxategi tamaina eduki behar ditu.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Hobespen balio bat ezarri." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "IP iragazki hobespenak ezarri." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "IP iragazketa gaitu bai bezero bai zerbitzarientzat." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "IP iragazketa ezgaitu bai bezero bai zerbitzarientzat." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "IP iragazketa gaitu/ezgaitu bezeroentzat." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "IP iragazketa gaitu bezeroentzat." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "IP iragazketa ezgaitu bezeroentzat." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "IP iragazketa gaitu/ezgaitu zerbitzarientzat." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "IP iragazketa gaitu zerbitzarientzat." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "IP iragazketa ezgaitu zerbitzarientzat." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Ip Iragazte maila hautatu." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Baliozko iragazte maila 0-255 tartekoak dira, eta lehenetsiriko balioa\n" "(hasierakoa) 127 da.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Konexio zabalera mugak ezarri." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "Komando hauentzat emandako balioa Kb/s-tan egon behar da.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Igoera konexio zabalera muga ezarri." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "Komando hauentzat emandako balioa Kb/s-tan egon behar da.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Deskarga konexio zabalera muga ezarri." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Hobespen balio bat eskuratu eta bistarazi." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "IP iragazki hobespenak eskuratu." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "IP iragazketa egoera eskuratu bai bezero bai zerbitzarientzat." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "IP iragazketa egoera eskuratu bezeroentzat." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "IP iragazketa egoera eskuratu zerbitzarientzat." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Ip iragazte maila hautatu." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Konexio zabalera mugak eskuratu." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Bilaketa bat egiten." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Bilaketa mota ezarri behar da mota idatziaz:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Adibidez: 'search kad fitxategia' erabiliaz \"fitxategia\" bilatuko du Kad " "sarean.\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Bilaketa orokor bat egin." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Bilaketa lokal bat egin" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Kad bilaketa bat egin" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Azken bilaketaren emaitzak bistaratzen ditu." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Aurreko bilaketaren emaitzak bistaratzen ditu.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Ikusi bilaketaren aurrerapena." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Ikusi bilaketaren aurrerapena.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Fitxategia deskargatzen hasi" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Azkenengo bilaketako fitxategiaren zenbakia eman behar da.\n" "Adibidez: 'download 12' erabiliaz azken bilaketako 12. emaitzaren deskarga " "abiaraziko da.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Deskarga pausarazi." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Deskarga berrekin." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Deskarga utzi." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Deskarga lehentasuna ezarri." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" "Deskarga baten lehentasuna ezarri Baxua, Normala, Altua edo Auto bezala.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Ezarri lehentasun txikia." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Ezarri lehentasun normala." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Ezarri lehentasun handia." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Ezarri lehentasun automatikoa." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Ilarak/zerrenda bistarazi." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Igoera/deskarga- ilara, zerbitzari zerrenda edo partekatutako fitxategi " "zerrenda bistarazi.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Igoera ilara bistarazi." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Deskarga ilara bistarazi." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Erregistroa ikusi." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Zerbitzari zerrenda bistarazi." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Erregistroa garbitu." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Zaharkitutako komandoa, '%s' erabili horren ordez." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Hau zaharkituriko komando bat da eta etorkizunean ezabatu egin daiteke.\n" "Erabili '%s' horren ordez.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMule testu bezeroa" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "'%s'-ko AICH egiaztapen zaharra 64b-ekoa bihurtzen '%s'-en." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "Oharra: '%s' fitxategi izena baliogabea da eta'%s' bezala berrizendatuko da." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "Oharra: '%s' fitxategia badago dagoeneko eta'%s' bezala berrizendatuko da." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Ziur zaude kategoria honetako fitxategi guztiak ezeztatu eta ezabatu nahi " "dituzula?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Berrespena beharrezkoa" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "99 kategoria soilik onartzen dira." #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Kategoria gehiegi!" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Beste guztiak" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Hautatu ikuspen iruzkina" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Gehitu kategoria" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Editatu kategoria" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Ezabatu kategoria" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Huts fitxategia irekitzean (%s), partekatutako fitxategi zerrendatik kentzen." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Egiaztapena eskaturik fitxategi ezezagunarentzat: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Fitxategiaren igoerak berriarazten: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Fitxategiaren igoerak gelditzen: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Huts `%s' komandoa `%s' gertaeran exekutatzean." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Deskarga osatua" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Fitxategiaren bide osoa." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Fitxategiaren izena biderik gabe." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "Fitxategiaren eD2k egiaztapena." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Fitxategi tamaina byte-etan." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Batutako deskarga aktibitate denbora." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Elkarrizketa saio berria hasia" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Mezu bidaltzailea." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Ez dago lekurik" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Disko partizioa." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Errorea osatzean" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "%u zenbakidun fitxategia prozesatzen: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" "Zati egiaztapenak eskatu dituzu (9.5 MB baino fitxategi txikiagoekin " "bakarrik)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Fitxategia ez dago !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, aMuleren eD2k lotura sortzailea" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Ongietorria!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Sarrera parametroak" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Egiaztatzeko Fitxategia" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Gehitu aukerako URL gehiago fitxategi honentzat" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Sar hemen eD2k lotura konputatzea nahi duzun fitxategia" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Sartu hemen eD2k loturara gehitzea nahi duzun URLa: Gehitu / amaieran " "aLinkCreator-ek uneko fitxategi izena gehitzeko" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Ezabatu" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Zati egiaztapenekin lotura bat sortu" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Fitxategi berri eta arraroak zabaltzen laguntzen du, lotura tamaina " "handitzearen kostuarekin" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4 fitxategi egiaztapena" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "MD4 fitxategi egiaztapena" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k lotura" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Gorde" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Kopiatu arbelera" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Ireki" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Ireki fitxategi bat bere eD2k lotura konputatzeko" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Kopiatu konputaturiko eD2l lotura arbelera" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Gorde honela" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Gorde konputaturiko eD2k lotura fitxategi batean" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "ALinkCreator-ri buruz" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Hautatu eD2k lotura konputatzea nahi duzun fitxategia" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Ezin da arbela ireki" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Kopiatzeko ezer ez oraingoz !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Hautatu eD2k lotura konputazioaren fitxategia" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Ezin da ireki " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Mesedez idatzi fitxategi izen bat" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Gordetzeko ezer ez oraingoz !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, aMule eD2k lotura sortzailea\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmap-ak: http://www.everaldo.com eta http://www.icomania.com\n" "eta http://jimmac.musichall.cz/ikony.php3\n" "\n" "GPL-pean banatua" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Aztertzen..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator zuretzat lanean dago" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "MD4 egiaztapena konputatzen..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "eD2k egiaztapena konputatzen..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Ezeztaturik !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "%.2f seg-etan egina" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "URL dagoeneko gehiturik duzu !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Mesedez idatzi zurian ez dagoen URL bat" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Ezin da %s ireki" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i egun %i ordu %i min %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uE %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, amule Estatistika" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Deskarga abiadura handiena wxCas abiarazirik dagoenetik" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Guztizko gehienezko deskarga abiadura wxCas aurreko abiarazteetan" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistema" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Auto berritzea gelditu" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Gorde estatistikak irudiak" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Inprimatu estatistika irudia" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Hobespen ezarpenak" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "WxCas-ri buruz" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Auto berritzea abiarazi" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Auto berritzea geraturik" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Auto berritzea abiarazirik" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Gorde estatistika Irudia" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMule estatistikak" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Arazo bat dago inprimatzerakoan.\n" "Agian zure inprimagailua ez dago behar bezala ezarririk?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Inprimatzen" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pedro de Oliveiraren CAS-en oinarriturik \n" "\n" "GPL lizentziapean banaturik" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh Oh, aMule ez dago abiarazirik..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule abiarazirik dago" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule abiarazirik dago, baina deskonektaturik" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule konektatzen ari da..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh Oh, aMule egoera ezezaguna da..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " noiz abiarazirik " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " gelditurik dago !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " ez dago konektaturik !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " konektatzen..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " zerbait arraroa egiten ari da, araka ezazu !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " hona konektaturik dago: " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "deskonektaturik" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " hona konektaturik " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " eta " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Deskargak guztira: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Igoerak: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Saio deskargak: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Deskargak: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Igoerak: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Partekatuak: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " fitxategia(k), bezero ilaran: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Denbora: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " - " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Sistema karga bataz-bestekoak (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Sistema noiztik abiarazirik: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "amulesig.dat fitxategia duen karpeta" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Idatzi zure amulesig.dat fitxategia dagoen karpeta izena" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Berritze aldia segundotan" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Sortu estatistika irudi bat berritze bakoitzean" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Idatzi hemen estatistika irudiak sortzea nahi duzun karpeta" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Igo aldiro zure estatistika irudia FTP zerbitzarira" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP Url-a" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP bidea" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Sar hemen zure FTP zerbitzariaren helbidea" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Idatzi hemen estatistika irudiak FTP zerbitzarian gordeko diren karpeta" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Erabiltzaile" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Idatzi hemen zure FTP zerbitzarian sartzeko erabiltzaile izena" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Idatzi hemen zure FTP zerbitzarian sartzeko pasahitza" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "FTP igoera aldia minututan" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Egiaztatu" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Zure sinadura fitxategia duen karpeta" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Estatistika irudiak sortuko diren karpeta" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr " txantiloia kargatzen du" #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Web zerbitzariaren HTTP ataka" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Erabili UPnP ataka berbideraketa web zerbitzari atakan" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP ataka" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Erabili gzip konpresioa" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Sarrera osoko pasahitza web zerbitzarirako" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Gonbidatu pasahitza web zerbitzarirako" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Gaitu gonbidatu sarrera" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Gonbidatu sarrera ezgaitu" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Kargatu/gorde web-zerbitzari ezarpenak urruneko aMule-tik/ra" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMule konfigurazio fitxategi bidea. EZ ERABILI ZUZENEAN!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "PHP interpretea ezgaitu (zaharkiturik)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "PHP orrialdeak eskakizun bakoitzean birkonpilatu" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule web zerbitzaria" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "web bezero konexioa onartua\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "ERROREA: ezin da web bezero konexioa onartu\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Eskakizunak errore honez huts egin du: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Ez da index fitxategia aurkitu: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Saioa Iraungirik - saio hasiera eskatzen\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Saioa ondo, saioa hasirik\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Saioa ondo, saioa hasi gabe\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Ez dago saio irekirik - saio hasiera eskatuko da\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Saioa sorturik - saio hasiera eskatzen\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Eskakizuna prozesatzen [jatorrizkoa]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Ez da pasahitzik ezarri, ez da saioa hastea onartzen." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Pasahitz egiaztatzen\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Pasahitz egiaztapen baliogabea\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Pasahitza ondo\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Pasahitza oker\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Ez duzu pasahitzik idatzi. Ez da pasahitz zuria onartzen.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Saio amaiera eskakizuna\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Eskakizuna prozesatzen [birbidalia]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "%s (%s) zati fitxategiak ez du ale fitxategirik" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "%s (%s) zati fitxategiak ale fitxategi huts bat du" #, fuzzy #~ msgid "Download status" #~ msgstr "Deskarga Egoera" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Eguneratze atzerapena : segundo %d" #~ msgstr[1] "Eguneratze atzerapena : %d segundo" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "" #~ "Iruzkinak eta botazioak ez dira onartzen urruneko interfazean oraindik" #~ msgid "Transferring" #~ msgstr "Bidaltzen" #, fuzzy #~ msgid "QR: ???" #~ msgstr "QR: %u" #~ msgid "QR: %u" #~ msgstr "QR: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "Ilaran" #~ msgid "TODO - show progress of a search" #~ msgstr "EGITEKE - bilaketa aurrerapena ikusi" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Fitxategiarentzat AICH eta MD4 egiaztapenak sortzen: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Fitxategiarentzat MD4 egiaztapena sortzen: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Fitxategiarentzat AICH egiaztapena sortzen: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "KONTUZ: Ezin da jatorrizko '%s' ezabatu basbeskopia sortu ondoren" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "KONTUZ: Huts %s ezabatzerakoan" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Kalifikazioa (Guztira):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Saiatu zati osoak transferitzen bidaltze guztietan" #~ msgid "Networks window" #~ msgstr "Sare leihoa" #~ msgid "Searches window" #~ msgstr "Bilaketa leihoa" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Deskargatzen" #~ msgid "Shared files window" #~ msgstr "Partekatutako fitxategi leihoa" #~ msgid "Messages window" #~ msgstr "Mezu leihoa" #~ msgid "Statistics graph window" #~ msgstr "Estatistika grafiko leihoa" #~ msgid "Preferences settings window" #~ msgstr "Hobespen ezarpen leihoa" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Ataza-barra ikonoa galdua, birsortzen saiatzen ..." #~ msgid "Transfers" #~ msgstr "Transferentziak" #~ msgid "Files transfers window" #~ msgstr "Fitxategi transferentzia leihoa" #~ msgid "Unban" #~ msgstr "Barkatu" #~ msgid "Show Uploads" #~ msgstr "Erakutsi igoerak" #~ msgid "Show Queue" #~ msgstr "Erakutsi ilara" #~ msgid "Select View" #~ msgstr "Hautatu Ikuspegia" #~ msgid "Client Software" #~ msgstr "Bezero Softwarea" #~ msgid "Waited" #~ msgstr "Itxoindakoa" #~ msgid "Upload Time" #~ msgstr "Ordu Denbora" #~ msgid "Upload/Download" #~ msgstr "Igo/Deskargatu" #~ msgid "Remote Status" #~ msgstr "Urruneko Egoera" #~ msgid "File Priority" #~ msgstr "Fitxategia Lehentasuna" #~ msgid "Score" #~ msgstr "Puntuak" #~ msgid "Asked" #~ msgstr "Galdeturik" #~ msgid "Last Seen" #~ msgstr "Azkenez ikusia" #~ msgid "Entered Queue" #~ msgstr "Ilaran jarri da" #~ msgid "Transferred Up" #~ msgstr "Igotarikoa" #~ msgid "Transferred Down" #~ msgstr "Deskargaturikoa" #~ msgid "Userhash" #~ msgstr "ErabiltzaileEgiaztapena" #~ msgid "Encrypted" #~ msgstr "Enkriptatuta" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "%d bandera bit-mapa deskargaturik." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Bistaratu igoera / ilara" #~ msgid "Clients on queue :" #~ msgstr "Bezeroak ilaran:" #~ msgid "Current Session" #~ msgstr "Uneko saioa" #~ msgid "Total" #~ msgstr "Guztira" #~ msgid "Requested :" #~ msgstr "Eskaerak:" #~ msgid "Create backup for preview" #~ msgstr "Sortu babeskopia aurreikuspenerako" #~ msgid "Files Transfers Window" #~ msgstr "Fitxategi transferentzia leihoa" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Guztira Erab: %s | Guztira Fitxategiak: %s" #~ msgid "Download size not received, downloading until connection is closed" #~ msgstr "Deskarga tamaina ez da jaso, konexioa itxi arte deskargatzen" #~ msgid "HTTP download thread ended" #~ msgstr "HTTP deskarga haria gaitua" #~ msgid "Host: %s:%i\n" #~ msgstr "Ostalaria: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Erantzuna: %i (Errorea: %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "KONTUZ: Erantzun hutsa korrontea sortzean" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "ERROREA: Berbideraketa kodea jasoa URL gabe" #~ msgid "Successfully updated GeoIP.dat" #~ msgstr "GeoIP.dat behar bezala bertsio-berritu da" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "" #~ "CIP2Country::CIP2Country(): Huts herrialde datuak hemendik kargatzean: " #~ msgid "Get IPFilter level." #~ msgstr "IPiragazki maila eskuratu." #~ msgid "Makes a search." #~ msgstr "Bilaketa bat egiten du." #, fuzzy #~ msgid "Killed!" #~ msgstr "Huts egin du" #, fuzzy #~ msgid "Using amuleweb in '%s'." #~ msgstr "Abiaraztean amuleweb abiarazi" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "aMule Itzali." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Hurrengo aukerak aldatu egion dira bertsio honetan segurtasun arrazoiak " #~ "direla eta:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Kanporako eta barnerako konexioetan protokolo nahastea gaiturik.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Zerbitzari zerrenda beste bezero eta zerbitzarietatik deskargatzea " #~ "ezgaitu.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Aldaketa hauen arrazoiei buruz argibide gehiagorako, bilatu\n" #~ "AMule wikian (http://wiki.amule.org) \"fake servers\" buruzko " #~ "argibideak.\n" #~ "Garrantzitsua da zuk gezurrezko zerbitzariak ezabatzea zerbitzari " #~ "zerrendatik aMule-k behar bezala funtziona dezan." #~ msgid "Fetching status..." #~ msgstr "Bilaketa egoera..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Erabiltzaileak: E: %s K: %s | Fitxategiak E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "%s bezeroa %s:%d IP:Atakan %s %s %s erabiliaz" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() NULL itzuli du" #~ msgid "Firewalled" #~ msgstr "Suebakirik" #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "%s fitxategia edonkey-rentzat handiegia da, onarpen muga 4GB da." #~ msgid "No handler for this file type." #~ msgstr "Ez dago mota honetarako kudeatzailerik." #~ msgid "File was not saved" #~ msgstr "Fitxategia ez da gorde" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "Konexioa Huts egin du. Ezin da eskatutako ostalarira konektatu\n" #~ msgid "Message Filter" #~ msgstr "Mezu Iragazkia" #~ msgid "Gui Tweaks" #~ msgstr "Interfaze Aldagaiak" #~ msgid "Core Tweaks" #~ msgstr "Oinarri Aldagaiak" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Argibide atzerapena segundotan" #~ msgid "Show part file number before file name" #~ msgstr "Zati fitxategi zenbakia ikusi fitxategi izenaren aurretik" #~ msgid "Skin Support" #~ msgstr "Itxura Onarpena" #~ msgid "- no skins available -" #~ msgstr " - ez dago itxira erabilgarririk -" #~ msgid "Online Signature Directory:" #~ msgstr "Sare Sinadura Karpeta:" #~ msgid "Filtering Options:" #~ msgstr "Iragazki Aukerak:" #~ msgid "Line Capacities" #~ msgstr "Konexio gaitasunak" #~ msgid "Standard client TCP Port:" #~ msgstr "Bezero TCP ataka estandarra:" #~ msgid "Extended client UDP Port:" #~ msgstr "Hedaturiko bezero UDP ataka:" #~ msgid "Bind Address" #~ msgstr "Helbidea Behartu" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "Eskaera hedatuetarako UDP ataka (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "Fitxategiko jatorri muga" #~ msgid "Universal Plug and Play" #~ msgstr "Universal Plug and Play" #~ msgid "Enable UPnP" #~ msgstr "UPnP gaitu" #~ msgid "UPnP TCP Port:" #~ msgstr "UPnP TCP Ataka:" #~ msgid "Start next paused file when a file completed" #~ msgstr "Abiarazi geratutako hurrengo fitxategia bat bukatzerakoan" #~ msgid "Select Statistics Colors" #~ msgstr "Aukeratu Estatistikak Koloreak" #~ msgid "Download Queue Files Progress" #~ msgstr "Deskarga Ilara Fitxategi aurrerapena" #~ msgid "Show percentage" #~ msgstr "Ikusi Ehunekoa" #~ msgid "Show progressbar " #~ msgstr "Ikusi aurrerapen barra" #~ msgid "Enable skin support " #~ msgstr "Gaitu itxura onarpena" #~ msgid "Skin:" #~ msgstr "Itxura:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "Auto-sailkatu fitxategiak deskarga hilaran (CPU altua)" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "Entzuten den interfazearen IP-a\n" #~ "(hutsik edozeinentzat)" #~ msgid "TCP port" #~ msgstr "TCP ataka" #~ msgid "Who can see shared files:" #~ msgstr "Nork ikus ditzake partekatutako fitxategiak:" #~ msgid "Event types" #~ msgstr "Gertaera motak" #~ msgid "Makes aMule promt before exiting." #~ msgstr "aMule-k itxi aurretik galdetzea egiten du." #~ msgid "Show overhead bandwith" #~ msgstr "Ikusi konexio erabilpena" #~ msgid "I.C.H. active" #~ msgstr "K.K.A. gaiturik" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICH egiaztapen guztiez fidatu (ez gomendaturik)" #~ msgid "Advanced Settings" #~ msgstr "Ezarpen aurreratuak" #~ msgid "Progressbar Style" #~ msgstr "Aurrerapen barra Estiloa" #~ msgid "Column Sorting" #~ msgstr "Zutabe Sailkapena" #~ msgid "Misc Gui Tweaks" #~ msgstr "Beste Interfaze Aldagaiak" #~ msgid "File Options" #~ msgstr "Fitxategi aukerak" #~ msgid "Status text" #~ msgstr "Egoera testua" #~ msgid "Pop-up status text" #~ msgstr "Bistaratu egoera testua" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ " 'Plataforma-orotarako' parez-pareko bezeroa eMule-n oinarritua \n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr " Web gunea: http://www.amule.org\n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr " Foroa: http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " Kontaktua: admin@amule.org (administrazio arazoak) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr " aMule zati bat honetan oinarriturik dago: \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " Copyright (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "Filma batentzat bere luzera, hizkuntza ... esan ditzakezu.\n" #~ "eta gezurra bada, zuk beste aMule erabiltzeei abisatu dezakezu." #~ msgid "Misc Options" #~ msgstr "Beste aukerak" #~ msgid "Server Options" #~ msgstr "Zerbitzari Aukerak" #~ msgid "Display server motd when connected ..." #~ msgstr "Bistaratu zerbitzariko motd konektatzerakoan..." #~ msgid "Disable/Enable" #~ msgstr "Ezgaitu/Gaitu" #~ msgid "Authentication" #~ msgstr "Egiaztapena" #~ msgid "General Settings" #~ msgstr "Ezarpen orokorrak" #~ msgid "Max Connections" #~ msgstr "Gehienezko konexioak" #~ msgid "GUI Tweaks" #~ msgstr "GUI Aldagaiak" #~ msgid "Remote Control" #~ msgstr "Urruneko kontrola" #~ msgid "Unable to determine selected browser!" #~ msgstr "Ezin da ezarritako nabigatzailea jakin!" #~ msgid "User Defined" #~ msgstr "Erabiltzaileak ezarririk" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - Linux Mandoa" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Aukeratu zure nabigatzailea hemen" #~ msgid "Custom Browser:" #~ msgstr "Nabigatzaile Pertsonalizatua:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Idatzi zure nabigatzaile izena hemen. Pertsonalizatutako nabigatzailea " #~ "erabiltzeko 'Erabiltzaileak ezarririk' aukeratu goiko menuan." #~ msgid "Please wait... " #~ msgstr "Itxoin mesedez... " #~ msgid "Could not determine the command for running the browser." #~ msgstr "Ezin dut nabigatzailea irekitzeko komandoa asmatu." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "EC Konexioa huts egin du. Erantzun hutsa." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "KanpoKon: Sarrera honegatik ukatua: " #~ msgid "ExternalConn: Access denied" #~ msgstr "KanpoKon: Sarrera ukaturik" #~ msgid "The ed2k hash of the file." #~ msgstr "Fitxategiaren ed2k egiaztapena." #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Kopiatu ED2k &lotura arbelera" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "Kopiatu ED2k lotura arbelara (&Jatorria)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "Kopiatu ED2k lotura arbelara (Jatorria) (Kriptogra&fia aukerekin)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "Kopiatu ED2k esteka arbelara (&Ostalari-izena)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "Kopiatu ED2k esteka arbelara (Ostalari-izena) (&Kripto aukerekin)." #~ msgid "Copy ED2k link to clipboard (&AICH info)" #~ msgstr "Kopiatu ED2k esteka arbelara (&AICH argb)" #~ msgid "Warning" #~ msgstr "Oharra" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "Errorea: Ezin dira TCP atakak entzun." #~ msgid "Webserver HTTP port" #~ msgstr "Web zerbitzari HTTP ataka" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "UPnP ataka berbideraketa erabili web zerbitzari atakan" #~ msgid "Full access password for webserver" #~ msgstr "Web zerbitzariaren baimen guztiko pasahitza" #~ msgid "Guest password for webserver" #~ msgstr "Web zerbitzariaren gonbidatu pasahitza" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "" #~ "Kargatu/gorde web zerbitzari ezarpenak urruneko aMule zerbitzaritik/" #~ "zerbitzarira" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "Sar hemen ed2k lotura konputatu nahi duzun fitxategia" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "Sar Ed2k loturara gehitu nahi duzun URL-a: Gehitu / bukaeran aLinkCreator-" #~ "ri uneko fitxategi izena gehitzeko" #~ msgid "Ed2k File Hash" #~ msgstr "Ed2k Fitxategi egiaztapena" #~ msgid "Ed2k link" #~ msgstr "Ed2k lotura" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "ed2k lotura konputatzeko fitxategi bat ireki" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "Konputaturiko ed2k lotura arbelara kopiatu" #~ msgid "Save computed ed2k link to file" #~ msgstr "Konputaturiko ed2k lotura fitxategi batetan gorde" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "Ed2k lotura konputatu nahi duzun fitxategia aukeratu" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "Ed2k lotura konputatzeko fitxategia aukeratu" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, aMule ed2k lotura sortzailea\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "GPL lizentziapean banaturik" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, aMule ed2k lotura sortzailea" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Kopiatu ED2k lotura arbelera" #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Kopiatu ED2k loturak arbelera" #~ msgid "ED2K: Connecting" #~ msgstr "ED2K: Konektatzen" #~ msgid "ED2K: Disconnected" #~ msgstr "ED2K: Deskonektatuta" #~ msgid "Warning: Unable to open skin file '%s' for read" #~ msgstr "Abisua: Ezin da '%s' itxura fitxategia irakurketarako ireki" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "Zure zerbitzari auto-eguneraketa zerrenda hutsik dago.\n" #~ "'Abiaraztean zerbitzari zerrenda auto-eguneraketa' ezgaituko da" #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "Bai ED2K bai Kad sareak ezgaiturik daude,\n" #~ "Ez zara konektatzeko gai izango behintzat bietako bat gaitu arte." #~ msgid "Edit Serverlist" #~ msgstr "Editatu zerbitzari zerrenda" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "Errorea: ezin da kanpo konexio berririk onartu" #~ msgid "ED2K is disabled in preferences." #~ msgstr "ED2K hobespenetan ezgaiturik dago." #~ msgid "ExternalConn: shutdown requested" #~ msgstr "KanpoKonexioa: itzaltzeko eskaera eginik" #~ msgid "Already connected to ED2K." #~ msgstr "Dagoeneko ED2K-ra konektaturik." #~ msgid "Connecting to ED2K..." #~ msgstr "ED2K-ra konektatzen..." #~ msgid "Disconnected from ED2K." #~ msgstr "ED2k-tik deskonektaturik." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "KanpoKonexioa: opcode baliogabea jasoa: %#x" #~ msgid "ED2K Status:" #~ msgstr "ED2k Egoera:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "Batez besteko deskarga (Saioa): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "Batez besteko igoera (Saioa): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "Gehienezko deskarga abiadura (Saioa): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "Gehienezko igoera abiadura (Saioa): %s" #~ msgid "Average filesize: %s" #~ msgstr "Batez besteko fitxategi tamaina: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "Ezin da ED2K bilaketarik egin ED2K ez badago konektaturik" #~ msgid "Error: " #~ msgstr "Errorea:" #~ msgid "Warning: " #~ msgstr "Oharra:" #~ msgid "Search related files (ED2k, local server)" #~ msgstr "Zerikusia duten fitxategiak bilatu (ED2k, zerbitzari lokala)" #~ msgid "Error" #~ msgstr "Errorea" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "ABISUA: Ezin duzu zure burua ed2k lotura jatorri bezala ezarri id-baxua " #~ "duzun bitartean." #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "Mesedez ezarri zure bideo erreproduktore lehenetsia ezarpenetan.\n" #~ "Bestela, aMule mplayer erabiltzen saiatu eta aurreikuspen bakoitzean mezu " #~ "hau bistaraziko da" #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "Errorea: huts part.met fitxategia irekitzerakoan: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "Errorea: part.met fitxategia hutsik dago: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "Errorea: part.met fitxategi bertsio baliogabea: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "Abisua: %s hondaturik egon liteke (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "Espero ez zen errorea %s osatzerakoan. Fitxategia gelditurik" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "Kontuz: Ezin da deskargaturiko zatia egiaztatu - '%s' egiaztapen " #~ "osatugabea" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "Errorea: Ezin da deskargatutako zatia aztertu - azterketa burua ez dago " #~ "osorik (%s). Hau ez zen\n" #~ "inoiz gertatu beharko" #~ msgid "Insufficient Diskspace" #~ msgstr "Disko leku askieza" #~ msgid "ERROR! Attempted to share %s" #~ msgstr "ERROREA! %s partekatzen saiatzen" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "ED2K sarea ezgaiturik dago hobespenetan, ez da konektatuko." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "" #~ "Ez da konektatzeko baliozko zerbitzaririk aurkitu zerbitzari zerrendan" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "Errorea: Socket baliogabea denboraz kanpo arakatzean" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions." #~ msgstr "" #~ "Errorea: Huts basbeskopia fitxategia irekitzean. Bilatu http://forum." #~ "amule.org-en part.met berreskuraketa konponbideetarako." #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "Ezin da lotura magnetikoa ed2k lotura bihurtu: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "ed2k lotura baliogabea! Errorea: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "Konexio Mugak: Gora: %u kB/s, Behera: %u kB/s.\n" #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "Urruneko abiaraziriko muina itxi (amule/amuled).\n" #~ "Honek testu bezeroa ere itxiko du, ezin bait da abiaraziriko muin bat\n" #~ "gabe erabili.\n" #~ msgid "Connect to ED2K only." #~ msgstr "ED2K sarera bakarrik konektatu." #~ msgid "Disconnect from ED2K only." #~ msgstr "ED2K saretik bakarrik deskonektatu." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "Gehitzeko ed2k lotura aukerak:\n" #~ "*) fitxategi lotura bat (ed2k://|file|...), berau deskarga hilarara " #~ "gehituko da,\n" #~ "*) zerbitzari lotura bat (ed2k://|server|...), berau zerbitzari " #~ "zerrendara gehituko da,\n" #~ "*) edo zerbitzari-zerenda lotura, kasu honetan zerrendako zerbitzari " #~ "guztiak\n" #~ " zerbitzari-zerrendara gehitukodira.\n" #~ "\n" #~ "Lotura magnetikoak ed2k egiaztapena eta fitxategi tamaina eduki behar " #~ "ditu.\n" #~ msgid "Deprecated command, now '%s'." #~ msgstr "Zaharkitutako komandoa, orain '%s' erabili." #~ msgid "Error: %s (%s) - %s" #~ msgstr "Errorea: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "Kontuz: %s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "Errorea. Disko leku gabe" #~ msgid "Error: Partmet not found" #~ msgstr "Errorea: Partmet ez da aurkitu" #~ msgid "Error: IO error!" #~ msgstr "Errorea: IO errorea!" #~ msgid "Error: Failed!" #~ msgstr "Errorea Huts egin du!" #~ msgid "ED2K Link: " #~ msgstr "ED2K Lotura: " #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "" #~ "Klikatu hemen testu kontrolean dagoen ed2k lotura deskarga hilarara " #~ "gehitzeko." #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "ED2K emaitza gehiago bilatu. Ez da onartzen Kad-ekin oraindik." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Konexio gaitasunak" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "Hau ED2K ataka estandarra da eta ezin da ezgaitu." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "" #~ "UDP ataka hau Ed2k hedaturiko eskaera eta Kad sarearentzat erabiliko da." #~ msgid "Hard Limit" #~ msgstr "Muga gogorra" #~ msgid "Connection Limits" #~ msgstr "Konexio mugak" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Eguneratu zerbitzari zerrenda abiaraztean" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Eguneratu zerbitzari zerrenda zerbitzari batetara konektatzean" #~ msgid "Update serverlist when a client connect" #~ msgstr "Eguneratu zerbitzari zerrenda bezero bat konektatzerakoan" #~ msgid "Disk Space" #~ msgstr "Disko Tokia" #~ msgid "Check Disk Space" #~ msgstr "Arakatu Disko Tokia" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "Aukeratu hau zuk Amule-k disko tokia araztea nahi baduzu" #~ msgid "Min Disk Space:" #~ msgstr "Gutxienezko Disko Lekua:" #~ msgid "Incoming Directory :" #~ msgstr "Deskarga direktorioa:" #~ msgid "Temporary Directory :" #~ msgstr "Aldi baterakoa Direktorioa:" #~ msgid "Shared Directories" #~ msgstr "Partekatutako direktorioak" #~ msgid "Create Backup to preview" #~ msgstr "Sortu Babeskopia aurreikusteko" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Erakutsi ED2K lastermarka kudeatzaile azkarra" #~ msgid "Webserver Parameters" #~ msgstr "Web zerbitzari ezarpenak" #~ msgid "Webserver port" #~ msgstr "Web zerbitzari ataka" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "UPnP ataka berbideraketa gaitu Web zerbitzari atakan" #~ msgid "Webserver UPnP TCP port" #~ msgstr "Web zerbitzari UPnP TCP ataka" #~ msgid "Serverlist" #~ msgstr "Zerbitzari Zerrenda" #~ msgid "Manual Server Add : Name" #~ msgstr "Zerbitzaria eskuz gehitu: Izena" #~ msgid "No One" #~ msgstr "Inori" #~ msgid "Speed Limits:" #~ msgstr "Abiadura Mugak:" #~ msgid "Download Speed: %.1f" #~ msgstr "Deskargatu Abiadura: %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "Igo Abiadura: %.1f" #~ msgid "TCP Port: %d" #~ msgstr "TCP Ataka: %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "TCP Ataka: Ez dago prest" #~ msgid "UDP Port: %d" #~ msgstr "UDP Ataka: %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "UDP Ataka: Ez dago prest" #~ msgid "Shared Files: %d" #~ msgstr "Partekatutako Fitxategiak: %d" #~ msgid "Queued Clients: %d" #~ msgstr "Hilarako Bezeroak: %d" #~ msgid "Upload Limit" #~ msgstr "Igoera muga" #~ msgid "Download Limit" #~ msgstr "Deskarga muga" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "'addresses.dat' fitxategian ez da zerbitzari zerrenda helbiderik aurkitu. " #~ "Mesedez itsatsi baliozko zerbitzari zerrenda helbide bat fitxategian " #~ "zerbitzari zerenda auto-eguneratzeko" #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "Abisua, Baliogabeko URL bat ezarria zerbitzariak eguneratzeko: %s" #~ msgid "webserver running on pid %d" #~ msgstr "webzerbitzari abiarazia %d pid-arekin" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "Webzerbitzaria abiaraztean exekutatzea eskatu duzu, baina amuleweb " #~ "bitarra ezin da abiarazi. Mesedez aMule web zerbitzaria duen paketea " #~ "instalatu edo -enable-webserver erabiliaz aMule konpilatu eta make " #~ "install abiarazi" #~ msgid "Disconnected from ED2K" #~ msgstr "ED2K-tik Deskonektatuta" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "Huts 'emfriends.met' lagun fitxategia irakurtzeko irekitzerakoan!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "Huts 'emfriends.met' lagun fitxategia idazteko irekitzerakoan!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "ERROREA: Huts zati fitxategia irekitzerakoan)" #~ msgid "Mb" #~ msgstr "Mb" #~ msgid "Can't create web socket thread\n" #~ msgstr "Ezin da Web socket haria sortu\n" #~ msgid "Web Server: Started\n" #~ msgstr "WebZerbitzaria: Abiarazirik\n" #~ msgid "Not Supported" #~ msgstr "Ez da onartzen" #~ msgid "LowID: %u (%.2f%% Total %.2f%% Known)" #~ msgstr "IDBaxua: %u (%.2f%% Guztira %.2f%% Ezagun)" #~ msgid "SecIdent On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgstr "Identitate ziurra gaitu/ezgaiturik: %u (%.2f%%) : %u (%.2f%%)" #~ msgid "Browse wav" #~ msgstr "Arakatu wav" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "wav fitxategia (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "Iruzkinik ez" #~ msgid "" #~ "Note: These values are\n" #~ "only used for statistics." #~ msgstr "" #~ "Oharra: Balio hauek estatistiketarako\n" #~ "bakarrik erabiltzen dira." #~ msgid "Notifications" #~ msgstr "Abisuak" #~ msgid "Messages popup" #~ msgstr "Mezu popup" #~ msgid "Use sound" #~ msgstr "Erabili soinua" #~ msgid "Pop out when :" #~ msgstr "Leihoa ireki :" #~ msgid "New entry on log" #~ msgstr "Log-ean sarrera berria" #~ msgid "Starts a new chat session" #~ msgstr "Txat saio berri bat hasi" #~ msgid "A new chat message is received" #~ msgstr "Txat mezu berri bat jaso da" #~ msgid "A download is added or finished" #~ msgstr "Deskarga gehitu edo amaitu da" #~ msgid "New aMule version detected" #~ msgstr "aMule bertsio berria aurkitua" #~ msgid "Urgent OOD, serverconnection lost" #~ msgstr "Presazko OOD, zerbitzari konexioa galduta" #~ msgid "Notify by Mail" #~ msgstr "Jakinarazi epostaz" #~ msgid "Send an Email when transfer complete." #~ msgstr "Bidali ePosta mezu bat deskarga amaitzerakoan." #~ msgid "SMTP server :" #~ msgstr "SMTP zerbitzaria :" #~ msgid "Email Address :" #~ msgstr "Eposta Helbidea:" #~ msgid ":" #~ msgstr ":" #~ msgid "" #~ "The selected locale seems not to be installed on your box\n" #~ "You must generate it to use this language.\n" #~ "A good start on linux systems is the file /etc/locale.gen and the package " #~ "'locales'\n" #~ "Good luck!\n" #~ "(Note: I'll try to set it anyway)" #~ msgstr "" #~ "Aukeratutako lokala zure ekipoan instalaturik ez dagoela dirudi\n" #~ "Zuk lokalak sortu beharko zenituzke erabili ahal izateko. Linux " #~ "sistemetan abiapuntu on bat /etc/locale.gen fitxategia eta locales " #~ "paketea dira\n" #~ "Zorte on!\n" #~ "(Oharra: Ezartzen saiatuko da)" #~ msgid "Never show this again" #~ msgstr "Ez erakutsi berriro" #~ msgid "Enable/Disable" #~ msgstr "Gaitu/ezgaitu" amule_2.3.1+git20151120.0023527bc2.orig/po/fi.po0000644000175000017500000063100712611472361017066 0ustar morphmorph# aMule i18n resource file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. # Kry , 2004. # Tapio Rantala , 2007-2008. # Tapio Rantala , 2010. # # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-11-11 10:38+0200\n" "Last-Translator: Tapio Rantala \n" "Language-Team: aMule Team \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Lisää kaveri" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Sinun on annettava kelvollinen IP ja portti!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Tietoa" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Annettu käyttäjätarkiste ei ole kelvollinen!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "ED2KLinks-tiedoston avaus epäonnistui." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "VAROITUS: Et voi lisätä itseäsi lähteeksi eD2k-linkkiin kun sinulla on LowID." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Pääohjelmaa suljetaan..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Lopetetaan amulewebin instanssi prosessinumerolla '%ld' ... " #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Tuhotaan amulewebin instanssi prosessinumerolla '%ld' ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Epäonnistunut" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMulen poistuessa: Lopetetaan ydin." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "aMule sammutettu." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Muistin virheiden etsinnän tulokset aMulen sulkeutuessa:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "Etäyhteyksien asetukset" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Salasana asetettu ja etäyhteydet sallittu." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "VAROITUS" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Maa-asetuksesi vaihdettiin järjestelmän oletuksiksi asetusmuutoksen takia. " "Pahoittelen." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Palvelinlistallasi ei ole palvelimia.\n" "Haluatko että aMule hakee uuden listan nyt?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Palvelinlistan lataus" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "web-palvelin käynnissä prosessinumerolla %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Olet asettanut web-palvelimen ajettavaksi käynnistettäessä, mutta amuleweb-" "ohjelmaa ei voida ajaa. Ole hyvä ja asenna aMule web-palvelimen sisältävä " "paketti tai käännä aMule käyttäen parametria --enable-webserver ja suorita " "make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "VIRHE" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Ei voitu sitoa portteja annettuun osoitteeseen: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Portti %u ei ole saatavilla. Sinulle annetaan LowID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Portti %u ei ole saatavilla!\n" "\n" "Tämä tarkoittaa että sinulle annetaan LowID.\n" "\n" "Tarkista yhteytesi varmistaaksesi että portti on avoinna sekä ulos että " "sisään." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Online-Signeeraustiedoston luonti epäonnistui" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "aMulen Online-Signeeraustiedoston luonti epäonnistui" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Valittu maa-asetus ei näytä olevan asennettuna järjestelmääsi. (Huom: Yritän " "asettaa sen kuitenkin)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Tämä on ensimmäinen kerta kun käynnistät aMulen version %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Tämä versio on testiversio jota päivitetään päivittäin,\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "emmekä me anna takuuta ettei se riko mitään, polta taloasi,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "tai tapa koiraasi. Mutta sen *pitäisi* olla silti turvallinen käyttää.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Lisätietoa, tukea ja uudet julkaisut löytyvät kotisivuiltamme osoitteessa\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "http://www.aMule.org tai IRC-kanavaltamme #aMule palvelimella irc.freenode." "net (englanniksi).\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Voit vapaasti raportoida bugeista osoitteessa http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Online-Signeeraukselle asettamasi kansio ei ole kelvollinen!\n" " Online-Signeeraus kytketään pois päältä kunnes korjaat asian asetuksista." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Palvelimen verkkonimi ilmoitettu" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Levytilan esivaraus tiedostolle '%s' epäonnistui: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "VIRHE: Lokitiedostoa ei voida avata" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "VAROITUS: Lokitiedosto on tyhjä. Jotain on pielessä." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Loki nollattiin" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Palvelimen viesti: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "Hypättiin yli latauksesta %s, koska pyydetty tiedosto ei ole uudempi." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Yhteyspisteiden listan lataus epäonnistui." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Ladatun versiotarkistustiedoston avaus epäonnistui" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Turmeltunut versiotarkistustiedosto" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Käytät vanhentunutta versiota aMulesta!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Tämän aMulen versio on %i.%i.%i ja uusin versio on %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Uusin version löytyy aina osoitteesta http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "VAROITUS: aMulesi versio on vanhentunut: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "aMulesi on uusinta versiota." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Versiotarkistustiedoston lataus epäonnistui" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Käyttäjiä: %s | Tiedostoja: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Käyttäjiä: E: %s K: %s | Tiedostoja: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Ei valittuja verkkoja" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "LowID:llä" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "HighID:llä" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Yhdistetty %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Yhdistän %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "eD2k-yhteys katkaistu" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Käynnistettiin Kad." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Pysäytettiin Kad." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Yhdistetty Kadiin (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Yhdistetty Kadiin (palomuurattu)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Yhteys Kadiin katkaistu" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Kad-verkkoa ei voida käyttää mikäli UDP-portti on estetty asetuksissa, ei " "käynnistetä." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Kad-verkko estetty asetuksissa, ei yhdistetä." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "VIRHE: aMule-taustaprosessia ei voida käyttää kun etäyhteydet ovat poissa " "päältä. Etäyhteydet voidaan kytkeä päälle normaalista aMulesta, " "käynnistämällä amuled parametrilla --ec-config tai asettamalla avain " "\"AcceptExternalConnections\" arvoon 1 tiedostossa ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "VIRHE: Kelvollinen salasana vaaditaan etäyhteyksien käyttämiseksi ja aMule-" "taustaprosessia ei voida käyttää ilman etäyhteyksiä. Käynnistääksesi aMule-" "taustaprosessin sinun pitää asettaa kenttään \"ECPassword\" tiedostossa ~/." "aMule/amule.conf kelvollinen arvo. Käynnistä amuled parametrilla --ec-config " "asettaaksesi salasanan. Lisää tiedoa löytyy osoitteesta at http://wiki.amule." "org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: käynnistettäessä - käynnistän ajastimen" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: haaroitun taustalle - nähdään" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Ei voitu luoda prosessinumerotiedostoa" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "VIRHE: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Tämä on aMule %s ja pohjautuu eMuleen." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Käynnissä %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Vieraile nettisivulla http://www.amule.org tarkistaaksi uuden version " "saatavuuden." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "KRIITTINEN VIRHE: Ajastimen luominen epäonnistui" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "aMule etähallinta " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Tilannevedos:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "'Kaikkien alustojen' p2p-asiakas perustuen eMuleen\n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Verkkosivu: http://www.amule.org\n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Foorumi: http://forum.amule.org\n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "UKK: http://wiki.amule.org\n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Yhteys: admin@amule.org (hallinnolliset asiat, englanniksi)\n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Tekijänoikeudet (c) 2003-2008 aMule-Tiimi\n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Osa aMulesta perustuu\n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademliaan: Vertaisreititys perustuen XOR-metriikkaan.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" " Tekijänoikeudet (c) 2002-2008 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Viesti" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "aMulen dialogi tuhottu" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Yhdistetään" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Yhdistetään" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Ei yhdistetty" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Palomuurattu" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Yhdistety" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Yhdistetään" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Pois päältä" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Peruuta" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Pysäytä nykyiset yhteysyritykset" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Katkaise yhteys" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Katkaise yhteys yhdistettyihin verkkoihin" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Yhdistä" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Yhdistä sallittuihin verkkoihin" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Ylös: %.1f(%.1f) | Alas: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Ylös: %.1f | Alas: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Yhdistetty)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Ei yhdistetty)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Haluatko varmasti sulkea %sn?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Lopettamisen varmistus" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Suorita komento: " #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- oletus -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Teemakansiota '%s' ei ole olemassa" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "VAROITUS: Ei voida avata teematiedostoa '%s' luettavaksi" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Verkot" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Verkkoikkuna" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Haut" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Hakujen ikkuna" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Lataukset" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Latausten ikkuna" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Jaetut tiedostot" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Jaettujen tiedostojen ikkuna" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Viestit" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Viestien ikkuna" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Tilastot" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Tilastokuvaajien ikkuna" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Asetukset" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Asetuksien säätöikkuna" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Tuonti" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Osatiedostojen tuontityökalu" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Tietoja" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Tietoja/Ohje" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "eD2k-verkko" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Kad-verkko" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Ei verkkoa" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "aMulen etähallinta" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Kriittinen virhe: Ytimen ajastimen luominen epäonnistui" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Yhdistä etä-aMuleen" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Kriittinen virhe: Kyselyajastimen luominen epäonnistui" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Siirrytään tapahtumasilmukkaan..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Yhdistetään..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Yhdistäminen epäonnistui " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Graafisen etäkäyttöliittymän tapahtumakäsittelijä" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Suljen" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Yhdistäminen epäonnistui. Ei saatu yhteyttä %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Yhteys suljettu - aMule on varmaankin lopetettu." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Valmis" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Kaikki" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "Ei voida luoda kansiota '%s' luokalle '%s', pidän kansion '%s'." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Tuntematon" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Jaettujen tiedostojen listaus käyttäjältä '%s' ei onnistunut" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Etsitään kaveria lowid-yhteydelle" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Vale-eMule versio %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Vale-eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Vale-eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (pohjautuu eMule-versioon v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Nimimerkki: %s Tunnus: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Pyydetty: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Tiedostotilasto tästä sessiosta: Hyväksytty %d / %d pyynnöstä, %s siirretty\n" msgstr[1] "" "Tiedostotilasto tästä sessiosta: Hyväksytty %d / %d pyynnöstä, %s siirretty\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Tiedostotilasto kaikista sessioista: Hyväksytty %d / %d pyynnöstä, %s " "siirretty\n" msgstr[1] "" "Tiedostotilasto kaikista sessioista: Hyväksytty %d / %d pyynnöstä, %s " "siirretty\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Pyydetty tuntematonta tiedostoa" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Viesti suodatettu käyttäjältä '%s' (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Viesti käyttäjältä '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Käyttäjä %s (%u) kysyi listaa jaetuista tiedostoista olemattomassa kansiossa " "'%s' -> Jätettiin huomioimatta" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "VAROITUS: Tiedostoa %s ei voida avata." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "VAROITUS: Peruutettujen latausten lista on turmeltunut, sisältää epäkelvon " "otsakkeen." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "IO-virhe luettaessa tiedostoa %s: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Virhe tallennettaessa tiedostoa %s: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Syötä kuvavarmennus" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Luokittelu" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Uusi luokka" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Valitse kansio saapuville tiedostoille" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Sinun on annettava nimi luokalle!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Sinun on annettava polku luokalle!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "Saapuvien kansion luonti luokalle epäonnistui. Anna kelvollinen polku!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Keskustelu aloitettu: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Yhdistetty asiakkaaseen ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Yhdistetään asiakkaaseen ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Asiakkaaseen yhdistäminen epäonnistui / Yhteys katkesi ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "*** Läpäisit kuvavarmennuksen ja käyttäjä on saanut viestisi. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Vastauksesi kuvavarmennukseen on väärä ja viestisi on jätetty " "huomioimatta. Voit yrittää uudestaan lähettämällä uuden viestin. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Keskustelu" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Sulje välilehti" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Sulje kaikki välilehdet" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Sulje muut välilehdet" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Lisää kavereihin" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Pisteytystiedosto avattu, %u tunnettu asiakas" msgstr[1] "Pisteytystiedosto avattu, %u tunnettua asiakasta" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Pisteet ovat vanhentuneet %u asiakkaalle!" msgstr[1] " - Pisteet ovat vanhentuneet %u asiakkaalle!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Tiedostoa 'cryptkey.dat' ei löydetty, luodaan." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Asiakkaan tiedot" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Käytössä" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Tuettu" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Ei tuettu" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Poissa käytöstä" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Yhdistetty" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Yhteys katkaistu" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f KB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Ei vielä valmis" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Pahis" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Vahvistettu - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Ei saatavilla" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Käyttäjä %s (%u) kysyi listaa jaetuista tiedostoista -> Annettu" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Käyttäjä %s (%u) kysyi listaa jaetuista tiedostoista -> Estetty" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "Käyttäjä %s (%u) kysyi listaa jaetuista kansioista -> Annettu" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "Käyttäjä %s (%u) kysyi listaa jaetuista kansioista -> Estetty" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Käyttäjä %s (%u) kysyi listaa jaetuista tiedostoista kansiossa '%s' -> " "Annettu" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Käyttäjä %s (%u) kysyi listaa jaetuista tiedostoista kansiossa '%s' -> " "Estetty" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Käyttäjä %s (%u) jakaa kansion '%s'" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Käyttäjä %s (%u) lähetti jakolistan pyytämättä." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "Käyttäjä %s (%u) lähetti listan jaetuista tiedostoista kansiossa '%s'" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Käyttäjän %s (%u) jaettujen tiedostojen lista on lähetetty" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Käyttäjä %s (%u) lähetti pyytämättä jaettujen tiedostojen listan" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Käyttäjä %s (%u) on estänyt jaettujen kansioiden/tiedostojen listaamisen." #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Tiedoston kommentit" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Käyttäjänimi" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Tiedoston nimi" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Luokitus" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Kommentti" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Ei kommentteja" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u kommentti" msgstr[1] "%u kommenttia" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Estettiin asiakas %s, lähetti turmeltunutta dataa %s yhteismäärästä %s " "tiedostolle '%s'" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Ma]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Ko]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Erittäin matala" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Matala" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normaali" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Korkea" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Erittäin korkea" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Julkaisu" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Kysyy" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Yhdistetään serverin kautta" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Jono täynnä" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Jonossa" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Lataa" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Ladataan tarkistejoukkoa" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Ei tarvittavia osia" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Ei voi yhdistää LowID:llä LowID:hen" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Liian monta yhteyttä" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Yhdistetään Kadilla" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Liian monta Kad-yhteyttä" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Estetty" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Yhteysvirhe" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Etäjono Täysi" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Vanha MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Uusi MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule-Yhteensopiva" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Paikallinen Palvelin" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Etäpalvelin" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Lähdevälitys" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passiivinen" #: src/DataToText.cpp:133 msgid "Link" msgstr "Linkki" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Lähteitä" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Haun tulos" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Valmiina" #: src/DataToText.cpp:146 msgid "In progress" msgstr "Käynnissä" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "VIRHE: Levytila on loppu" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "VIRHE: Osatiedostoa ei löytynyt" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "VIRHE: IO-virhe!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "VIRHE: Epäonnistui!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "Jonossa" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Lataus on jo käynnissä" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Tuntematon tai käyttökelvoton väliaikaistiedostomuoto." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Osa" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Koko" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Siirretty" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Nopeus" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Edistyminen" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Lähteet" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Tärkeys" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Tila" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Aikaa jäljellä" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Viimeksi nähty kokonaisena" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Viimeisin vastaanotto" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Oletko varma että haluat poistaa valitun tiedoston?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Oletko varma että haluat poistaa valitut tiedostot?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Palaute tullut: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Automaattinen" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "Py&säytä" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Tauota" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Jatka" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "Poista va&lmistuneet" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Vaihda jokainen A4AF tälle tiedostolle nyt" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Vaihda jokainen A4AF tälle tiedostolle nyt (Automaattinen)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Vaihda jokainen A4AF muille tiedostolle nyt" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Laajat asetukset" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Esikatsele" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Näytä tie&doston tiedot" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Näytä kaikki kommentit" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Kopioi magnet-URI leikepöydälle" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Kopioi eD2k-&linkki leikepöydälle" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Kopioi palaute leikepöydälle" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "poista luokittelu" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Luokittele" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "Avaa tied&osto" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Anna uusi nimi tälle tiedostolle:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Tiedoston uudelleennimeäminen" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Lataukset (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Estääksesi tämän varoituksen näyttämisen joka kerralla,\n" "aseta haluamasi videotoistin asetuksissa (oletuksena mplayer)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Tiedoston esikatselu" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "VIRHE: Ulkoista mediatoistinta ei voitu käynnistää! Komento: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Tallennetaan osatiedostoa %u / %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Kaikki osatiedostot tallennettu." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Lataan väliaikaistiedostoja kohteesta %s." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Lataan osatiedostoa %u %u:sta" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "VIRHE: Varmuuskopiotiedostoa ei saatu avattua. Katso sivuilta http://forum." "amule.org ratkaisuja .part.met -palautukseen." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Kaikki osatiedostot avattu." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Osatiedostoja ei löytynyt" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Löydetty %u osatiedosto" msgstr[1] "Löydetty %u osatiedostoa" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "Väliaikaiskansion tiedostojärjestelmä ei osaa käsitellä suuria tiedostoja." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "Saapuvien kansion tiedostojärjestelmä ei osaa käsitellä suuria tiedostoja." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Ladataan %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Olet jo lataamassa tiedostoa '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Sinulla on jo tiedosto '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Lataat jo tiedostoa %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Ei voitu kääntää magnet-linkkiä eD2k-linkiksi: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Linkin protokolla tuntematon: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Virheellinen eD2k-linkki! VIRHE: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Asiakas lähetti paketin tunnistautumisen epäonnistumisen jälkeen." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Etäyhteys suljettu." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Etäyhteydet kielletty sillä salasana on tyhjä!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Etäyhteydet estetty asetustiedostossa" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Uusi etäyhteys hyväksytty" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "VIRHE: uutta etäyhteyttä ei voitu ottaa vastaan" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "Etäyhteys torjuttu koska salasana on tyhjä asetuksissa!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Yhdistän asiakkaaseen: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Tuntematon versio" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Epäkelpo etäversiotunniste, binäärinen epäyhteensopivuus on mahdollinen. " "Käytä ydintä ja etäpäätettä samasta vedoksesta." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Et voi yhdistää julkaisuversioon mielivaltaisella kehitysversiolla! *huoh* " "mahdollinen kaatuminen estetty" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Väärä protokollaversio." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Puuttuva protokollan versiomerkintä." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "Tunnistautuminen epäonnistui: etäyhteyssalasanan tarkiste on väärin." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Tunnistautuminen epäonnistui: väärä salasana." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Tunnistautuminen epäonnistui: salasana puuttui." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Epäkelpo pyyntö, tunnistaudu ensin." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Pääsy myönnetty." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Virheilmoitus \"%s\" lähetetty asiakkaalle." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Luvaton yhteysyritys osoitteesta %s. Yhteys suljettu." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "Etäosatiedoston komento epäonnistui: Tiedostotarkistetta ei löytynyt: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Tiedostotarkistetta ei löytynyt: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "Hupsis! Komentosanan käsittelyvirhe!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Palvelinta ei lisätty" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "palvelinta ei löytynyt: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "poistettava palvelin on määriteltävä" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k on poistettu käytöstä asetuksissa." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Haku on käynnissä. Nouda tuloksia kohta uudelleen!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Verkkohaku etäliittymästä ei ole mielekästä." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Ei pisteitä kaavioon." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Asiakasohjelmaasi ei ole asetettu tälle tarkkuustasolle." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Etäyhteys: sulkemista pyydetty" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Sulkeminen on jo käynnissä." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Etäyhteys: lisään linkkiä '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Virheellinen linkki tai se on jo listalla." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Tiedostoa ei löytynyt." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Epäkelpo tiedostonimi." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Tiedostoa ei voitu uudelleennimetä." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad on poistettu päältä asetuksissa." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "eD2k on jo yhdistetty." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Yhdistetään eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Kad on jo yhdistetty." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Yhdistetään Kadiin..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Kaikki verkot ovat pois päältä." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "eD2k-yhteys katkaistu" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Kad-yhteys katkaistu." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Etäyhteys: vastaanotettiin epäkelpo komentosana: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Epäkelpo komentosana (väärä protokollaversio?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Tuntematon laajennos '%s' komennolle '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Tuntematon komento '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Tälle komennolle ei voi antaa parametria.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Tälle komennolle on annettava parametri.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Tämä komento on puutteellinen, sinun on käytettävä jotakin alla olevista " "laajennoksista.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Mahdolliset laajennokset:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Käytettävissä olevat komennot:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Komennot eivät erottele isoja ja pieniä kirjaimia.\n" "Kirjoita '%s ' saadaksesi lisätietoa komennosta.\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Poistuu sovelluksesta." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Näyttää ohjeen." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Saadaksesi ohjeen komennosta, kirjoita 'help '.\n" "Saadaksesi listan komennoista kirjoita 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Käytä '%s' listataksesi komennot\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Syntaksivirhe!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Virhe käsiteltäessä komentoa - näin ei pitäisi tapahtua! Ole hyvä ja " "raportoi tästä\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Tämä komento ei tarvitse parametreja." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Tälle komennolle on annettava parametri." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Virheellinen parametri." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Komento on puutteellinen." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Kirjoita '%s' saadaksesi lisää ohjeita.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Tämä on %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Tämä on %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Luon asiakasta...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, suljen %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Tyhjällä salasanalla ei voida yhdistää.\n" "Sinun on annettava salasana joko asetustiedostossa,\n" "komentorivillä tai annettava se kysyttäessä.\n" "\n" "Suljen...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Näytä tämä ohje." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Verkkonimi koneelle jossa aMule on käynnissä. (oletus: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "aMulen portti etäyhteydelle. (oletus: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Etäyhteyden salasana." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Lue asetukset tiedostosta." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Älä tulosta mitään stdout:iin." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Ole monisanainen - näytä myös virheenetsintäviestit." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Asettaa ohjelman maa-asetukset (kielen)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Kirjoita komentoriviparametrit asetustiedostoon." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Luo asetustiedoston perustuen aMulen asetustiedostoon." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Näyttää ohjelman version." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Tiedoston tiedot" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "%.1f%% valmiina" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f KB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "Kaverilistatiedostoa 'emfriends.met' ei saatu avattua luettavaksi!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "Kaverilistatiedostoa 'emfriends.met' ei saatu avattua kirjoitettavaksi!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "KRIITTINEN - ei asiakasta keskustelun aloituksessa" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Kaverit" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Näytä tie&dot" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Lisää kaveri" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Poista kaveri" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Lähetä Viesti" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Näytä tiedostot" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Vapauta kaveripaikka" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Oletko varma että haluat poistaa valitun kaverin?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Oletko varma että haluat poistaa valitut kaverit?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Et voi asettaa enempää kuin yhden kaveripaikan.\n" " Asetettiin yksi paikka." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Monivalinta" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Lähetä viesti käyttäjälle" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Lähetettävä viesti:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Poista ystävistä" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Lähetä viesti" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Vaihda tähän tiedostoon" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "Jonossa: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Kysyttiin toista tiedostoa" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Odottaa lähetyspaikkaa" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "Jonossa: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Lähettää" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Ei yhtään" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Ei" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Kyllä" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Ladataan..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "HTTP-lataus peruutettu" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Kohdetiedostoa %s ei voitu luoda lataukselle!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "Ladattava URL ei voi olla tyhjä" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "URL %s palautti: %i - Virhe (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Kriittinen virhe ladattua tiedostoa tallennettaessa" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "Ladattu %d tavua" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Odotettiin %d tavua, mutta ladattiin %d tavua" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "Epäkelpo URL HTTP lataukseen tai HTTP uudelleenohjaus (unohditko edestä " "'http://' ?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "HTTP-palvelimeen ei voitu yhdistää" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Epäkelpo vastaus HTTP-palvelimelta" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Hae uusi GeoIP.dat osoitteesta %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "GeoIP.dat-tiedoston lataus epäonnistui, keskeytän päivittämisen." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Tiedoston %s poisto epäonnistui, keskeytän päivityksen." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Tiedoston %s uudelleennimeäminen epäonnistui, keskeytän päivityksen." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "Tiedoston %s päivitys onnistui" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Virhe päivitettäessä GeoIP.dat-tiedostoa" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Tiedoston %s lataus osoitteesta %s epäonnistui" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "Valtiotietojen lataus osoitteesta '%s' epäonnistui." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Lataan IP-suodattimet 'ipfilter.dat' sekä 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "Ipfilter.dat-tiedoston '%s' avaaminen epäonnistui, muoto tuntematon." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Ipfilter.dat-tiedoston '%s' avaaminen epäonnistui, tiedostoa ei voitu avata." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Ladattu %u IP-alue kohteesta '%s'." msgstr[1] "Ladattu %u IP-aluetta kohteesta '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u epämuodostunut rivi ohitettiin." msgstr[1] "%u epämuodostunutta riviä ohitettiin." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" "Uuden tiedoston %s uudelleennimeäminen epäonnistui, keskeytän päivityksen." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "IP-suodatin on valmiina" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Käytä tunnettuja \n" "asiakkaita yhdistämisapuna" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Yhteyspisteitä (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "IP ei kelpaa yhdistämisavuksi" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Portti ei kelpaa yhdistämisavuksi" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Ole hyvä ja täytä kaikki vaaditut kentät" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Oletko varma että haluat ladata uuden nodes.dat-tiedoston?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Tämä toiminto korvaa kaikki tunnetut yhteyspisteet ja uudelleenyhdistää " "Kademlian." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Jatketaanko?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: hakusana on liian lyhyt" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Avainsana hakuun: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Hakusana on jo hakulistalla:" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "Tiedoston nodes.dat luku epäonnistui sillä se liian vanha. Versio 0 ei ole " "enää tuettu." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Luettu %u Kad-kontakti" msgstr[1] "Luettu %u Kad-kontaktia" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "Ei kontakteja, käytä yhdistämisapua tai hae nodes.dat-tiedosto." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Vain %d Kad-kontakti saatavilla, tiedostoa nodes.dat ei tallennettu" msgstr[1] "" "Vain %d Kad-kontaktia saatavilla, tiedostoa nodes.dat ei tallennettu" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Kirjoitettu %d Kad-kontakti" msgstr[1] "Kirjoitettu %d Kad-kontaktia" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Tiedoston nimi" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Tiedostokoko" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Jakosuhde" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Lähetetty" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Pyydetty" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Hyväksytty" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Täysiä lähteitä" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "VAROITUS: Tunnettujen tiedostojen lista on turmeltunut, sisältää epäkelvon " "otsakkeen." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Merkinnän luku tunnettujen tiedostojen lista -tiedostosta epäonnistui, " "tiedosto saattaa olla turmeltunut" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Epäkelpo merkintä tunnettujen tiedostojen lista -tiedostossa, tiedosto " "saattaa olla turmeltunut: " #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Tuntematon virhe %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "Virheelle %d ei ole virhekuvausta" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Luo tarkistetta" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Viimeistelee" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Valmis" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Tauotettu" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Virheellinen" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Odottaa" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Salasana ei voi olla tyhjä." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Virheellinen salasana, ei MD5-tarkiste!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Yhdistäminen ei onnistunut" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "Etäyhteysyritys epäonnistui. Vastaus oli tyhjä." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "Etäyhteys: Epäkelpo vastaus, kättely epäonnistui. Yhteys suljettu." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Yhdistetty onnistuneesti kohteeseen aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Yhdistetty onnistuneesti." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Etäyhteys: Pääsy evättiin: " #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Etäyhteys: Kättely epäonnistui" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "HTTP-lataussäie käynnistetty" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "KuunteluPistukka: Ok." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "VIRHE: Ei voida kuunnella TCP-porttia." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "VIRHE: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "VAROITUS: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Sulje" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Leikkaa" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Kopioi" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Liitä" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Pyyhi" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Valitse kaikki" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "KB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Rajoittamaton" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMulen palkkivalikko" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Nopeusrajoitukset:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "Ylös: Ei ole" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "Ylös: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "Alas: Ei ole" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "Alas: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Latausnopeus: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Lähetysnopeus: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Asiakkaan tiedot" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Nimimerkki: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Nimimerkkiä ei ole valittu!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "Asiakastunnus: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Ei yhdistetty" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Palvelinnimi: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "Palvelin-IP: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Ei yhdistetty" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP-portti: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP-portti: Ei valmis" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "UDP-portti: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UPD-portti: Ei valmis" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Online-Signeeraus: Käytössä" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Online-Signeeraus: Pois päältä" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Päälläoloaika: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Jaettuja tiedostoja: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Asiakkaita jonossa: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Yht alas: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Yht ylös: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Lähetysraja" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Latausraja" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Piilota aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Näytä aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Sulje" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k-linkki: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Suorita" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "Klikkaa tästä lisätäksesi eD2k-linkin tekstikentästä latauslistaasi." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Tapahtumat näytetään tässä. Nähdäksesi täyden listan tapahtumista, katso " "loki Palvelimet-välilehdeltä." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Lataa ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Käyttäjien määrä palvelimella johon olet yhteydessä ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Käyttäjiä: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Yhdistettyjen käyttäjien määrä nykyisellä palvelimella sekä arvio kaikkien " "käyttäjien määrästä." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Ylös: 0,0 | Alas: 0,0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Nykyiset keskimääräiset lähetys- ja latausnopeudet. Mikäli aktivoitu, " "numerot suluissa näyttävät asiakasyhteyksien otsikkotietojen nopeuksia." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Näyttää yhteyden tilan ja aktiiviset siirrot. Punaiset nuolet osoittavat " "että et ole yhdistetty, keltaiset nuolet että sinulla on LowID (olet " "palomuurin takana) ja vihreät nuolet että sinulla on HighID (paras " "yhdistettävyys)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Ei yhdistetty ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Palvelin johon yhdistetty." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Etsi" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Nimi:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tyyppi" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Paikallinen" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Kaikkialta" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Tiedostotarkiste" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Laajat parametrit" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Suodatus" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Tiedostotyyppi" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Kaikki" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Pakatut" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Ääni" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD-levykuvat" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Kuvat" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Ohjelmat" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Tekstiä" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Videot" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Pääte" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Vähimmäiskoko" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Tavua" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Enimmäiskoko" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Saatavuus" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Suodatin:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Suodata tulokset" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Käännä tulos" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Piilota tunnetut tiedostot" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Käynnistä haku" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Hae lisää" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Hakee enemmän tuloksia eD2k:sta. Ei vielä tuettuna Kadissa." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Pysäytä" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Lataa" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Nollaa kentät" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Tulokset" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Siivoaa valmistuneet lataukset pois näkyvistä" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Tiedostolähteet:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Yleiset" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Koko nimi :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "Ei saatavilla" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "Osatiedosto (met) :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Tarkiste :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Tiedostokoko :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Osatiedoston tila :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Viimeksi nähty kokonaisena :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Siirto" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Löydetyt lähteet :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Siirtäviä lähteitä :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Osien määrä :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Saatavilla :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Siirtonopeus :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Lataus ollut aktiivisena: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Siirretty :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Valmiina :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Älykäs turmeltumien käsittely (I.C.H.)" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Menetetty turmeltumille :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Pakkaamalla saatu hyöty :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Pelastetut paketit (I.C.H.) :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Tiedostonimet" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Muuta nimi" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Siivoa" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Käytä" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Kommentoi/luokittele tiedosto (Teksti näkyy kaikille käyttäjille)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Elokuvalle voit kertoa sen pituuden, tarinan, kielen ...\\n\\nja mikäli se " "on väärennös, voit kertoa sen muille aMulen käyttäjille." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Tiedoston laatu" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Ei luokitusta" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Epäkelpo / Turmeltunut / Väärennös" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Huono" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Kohtalainen" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Hyvä" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Erinomainen" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Valitse tiedoston luokitus tai ilmoita muille käyttäjille jos tiedosto on " "viallinen ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Päivitä" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Lataan, odota hetki ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Koko on tuntematon" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Vaadittavat tiedot" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP-osoite :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Portti :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Lisätiedot" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Käyttäjänimi :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Käyttäjätarkiste :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Lisää" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Latausnopeus" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Nykyinen" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Yhtäjaksoinen keskiarvo" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Session keskiarvo" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Lähetysnopeus" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Yhteydet" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktiiviset lataukset" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktiiviset yhteydet (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Aktiiviset lähetykset" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Tilastopuu" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Käyttäjänimi:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Käyttäjätarkiste:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Asiakasohjelma:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Asiakasversio:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP-osoite:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "Käyttäjätunniste:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "Palvelimen IP:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Palvelimen nimi:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Kätkeminen:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Siirrot asiakkaalle" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Nykyinen pyyntö:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Keskimääräinen lähetysnopeus:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Keskimääräinen latausnopeus:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Lähetetty (sessiossa):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Ladattu (sessiossa):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Lähetetty (yhteensä):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Ladattu (yhteensä):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Pisteet" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Lähetys/vastaanotto-määre:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Turvattu tunnistus:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Sijoitus jonossa:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Jonopisteet:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Nimimerkki" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - monen alustan Mule" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "Tämä on nimi jonka muut käyttäjät näkevät yhdistäessään sinuun." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Kieli:" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Viive työkaluvihjeiden näyttämiseen." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Tämä määrittää kontrolleissa käytetyn kielen." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Tarkista uuden version saatavuus käynnistettäessä" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "aMule tarkistaa käynnistyessään uuden version olemassaolon kun tämä on " "päällä." #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Aloita pienennettynä" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Tämä päällä aMule pienentää itsensä käynnistyessään." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Vahvista sulkeminen" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Amule kysyy varmistuksen ennen poistumista." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "Piilota sovelluksen ikkuna painettaessa sulje -nappulaa" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Näytä kuvake palkissa" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" "Tämä sallii tai estää kuvakkeen näyttämisen järjestelmä-/tehtäväpalkissa." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Pienennä palkkikuvakkeeksi" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "Tämä päällä aMule pienentyy järjestelmäpalkkiin tehtäväpalkin sijaan." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Työkaluvihjeiden viive:" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "sekuntia" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Selaimen valinta" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Syötä tähän selaimesi nimi. Jätä tyhjäksi jos haluat käyttää järjestelmän " "oletusselainta." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Selaa" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Avaa uuteen välilehteen mikäli mahdollista" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Avaa verkkosivun uuteen välilehteen uuden ikkunan sijaan kun se on " "mahdollista" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Videotoistin" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Kaistankäytön rajoitukset" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Lähetys" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Paikkavaraus" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Portit" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Vakio TCP-portti" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Tämä on vakio eD2k-portti eikä sitä voi kytkeä pois päältä." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "UDP-portti palvelinpyyntöihin (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Laajennettu UDP-portti (Kad / haku kaikkialta)." #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" "Tätä UDP-porttia käytetään laajennettuihin eD2k-hakuihin sekä Kad-verkossa" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Käytä UPnP:tä reitittimen portinohjauksessa" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnP:n TCP-portti (Valinnainen):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Sido paikallinen osoite IP:hen (tyhjä sallii mihin tahansa):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Vain edistyneille käyttäjille: mikäli sinulla on useampia verkkoliitäntöjä, " "syötä sen liitännän osoite johon haluat aMulen sidottavan." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Lähteitä enintään tiedostoa kohden:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Yhtäaikaisten yhteyksien enimmäismäärä:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Yhdistä automaattisesti käynnistettäessä" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Yhdistä uudelleen yhteyden katketessa" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Poista toimimattomat palvelimet" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "yrityksen jälkeen" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Päivitä palvelinlista käynnistettäessä" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Lista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Päivitä palvelinlista yhdistettäessä palvelimelle" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Päivitä palvelinlista asiakkaan yhdistäessä" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Käytä tärkeysjärjestystä" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Käytä älykästä LowID-tarkistusta yhdistettäessä" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Turvallinen yhdistäminen" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Yhdistä automaattisesti vain pysyville palvelimille" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Aseta käsin syötetyt palvelimet korkealle tärkeydelle" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Älykäs turmeltumien käsittely (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Käytä" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "Kehittynyt I.C.H. luottaa kaikkiin tarkisteisiin (ei suositella)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Lisää tiedostot lataukseen tauotettuna" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Lisää tiedostot lataukseen tärkeys automaattisella" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Yritä ladata ensimmäiset ja viimeiset palat ensin" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Käynnistä seuraava tauotetty tiedosto kun tiedosto valmistuu" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Samasta luokasta" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "Aakkosellisessa järjestyksessä" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Esivaraa levytila uusille tiedostoille" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Uusia tiedostoja lisätessä varaa levytilaa koko tiedostolle, vähentää " "pirstaloitumista" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Pysäytä lataukset kun tyhjän levytilan määrä saavuttaa " #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Valitse tämä mikäli haluat aMulen tarkistavan vapaan levytilan määrän" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Syötä tähän levytila jonka haluat jättää vapaaksi." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Tallenna 10 lähdettä harvinaisille tiedostoille (< 20 lähdettä)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Lähetykset" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Lisää uudet jaetut tiedostot tärkeys automaattisella" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Kansio ladatuille tiedostoille" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Kansio latauksen väliaikaisille tiedostoille" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Jaetut kansiot" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" "(Klikkaa oikealla painikkeella kansion kuvaketta jakaaksesi rekursiivisesti)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Jaa piilotiedostot" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Kuvaajat" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Päivitysväli : 5 sekuntia" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Keskimääräiskuvaajan aika: 100 minuuttia" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Yhteyskuvaajan Skaala: 100 " #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Latauskuvaajan skaala:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Lähetyskuvaajan skaala:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Värit:" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Taustaväri" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Ruudukko" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Hetkittäinen lataus" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Latauksen yhtäjaksoinen keskiarvo" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Latauksen keskiarvo sessiossa" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Hetkittäinen lähetys" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Lähetyksen yhtäjaksoinen keskiarvo" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Lähetyksen keskiarvo sessiossa" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Aktiiviset yhteydet" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Järjestelmäpalkin nopeusnäyttö" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Kad-yhteyksiä tällä hetkellä" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Kad-yhteyksiä aktiivisena" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Kad-yhteyksiä sessiossa" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Valitse" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Puu" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Näytettävien asiakasversioiden määrä (0=rajoittamattomasti)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! VAROITUS !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Enimmäismäärä uusia yhteyksiä / 5 s" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Tiedostopuskurin koko: 240000 tavua" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Lähetysjonon koko: 5000 asiakasta" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Palvelinyhteyden päivitysväli: Poissa käytöstä" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Poista käytöstä tietokoneen ajastettu siirtyminen valmiustilaan" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Käytettävä teema:" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Näytä \"Nopea eD2k-linkkien käsittelijä\" jokaisessa ikkunassa." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Näytä laajennetut tiedot luokitteluvälilehdillä" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "Näytä sovelluksen versio otsikossa" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Näytä siirtonopeudet otsikossa" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Ennen sovelluksen nimeä" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Sovelluksen nimen perässä" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Näytä otsikkotietoihin kuluva kaista" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Pystysuuntainen työkalupalkki" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Näytä asiakkaiden valtioiden liput" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Latausjonon tiedostot" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Näytä edistyminen prosentteina" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Näytä edistymispalkki" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Tasainen" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Pyöreä" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Järjestä tiedostot automaattisesti (iso suorittimen käyttö)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule järjestää sarakkeet latauslistassasi automaattisesti" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Etäyhteyksien asetukset" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Hyväksy etäyhteydet" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "Kuunneltavan verkkoliitännän IP:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Syötä tähän sen verkkoliitännän ip jota kuunnellaan etäyhteyksiä varten. " "Tyhjä tai 0.0.0.0 tarkoittaa kaikkia verkkoliitäntöjä." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "TCP-portti:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Kytke päälle UPnP-portinohjaus etäyhteysportissa" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Salasana" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Web-palvelimen asetukset" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Käynnistä web-palvelin käynnistettäessä" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Web-sapluuna" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Täysien oikeuksien salasana" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Salli rajoitettujen oikeuksien käyttäjä" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Rajoitettujen oikeuksien salasana" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Käytä UPnP-portinohjausta web-palvelimen portissa" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Web-palvelimen UPnP TCP-portti (Valinnainen)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Sivun päivitysväli (sekunneissa)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Salli gzip-pakkaus" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Napsauta tästä saattaaksesi voimaan asetuksiin tehdyt muutokset." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Nollaa asetuksiin tekemäsi muutokset." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Otsikko :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Kommentti :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Saapuvien kansio :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Vaihda tärkeyttä uusille sijoitetuille tiedostoille :" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Älä vaihda" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Valitse väri tälle luokalle (valittuna) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Tyhjennä" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Napsauta tätä painiketta nollataksesi lokin." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Napsauta tätä nappia päivittääksesi palvelinlistan osoitteesta ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Palvelinlista" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Syötä tähän server.met-tiedostoon osoittava url ja paina nappia vasemmalla " "päivittääksesi tunnettujen palvelimien listan." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Palvelimen lisäys käsin: Nimi" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Syötä uuden palvelimen nimi tähän" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Portti" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Syötä uuden palvelimen IP tähän, muodossa x.x.x.x." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Syötä palvelimen portti tähän." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Lisää palvelin käsin (täytä vasemmalla olevat kentät) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule loki" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Palvelimen tiedot" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2K Info" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad Info" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" "Napsauta tätä nappia päivittääksesi yhteyspisteiden listan osoitteesta ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Yhteyspisteitä (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Syötä tähän nodes.dat-tiedostoon osoittava url ja paina nappia vasemmalla " "päivittääksesi tunnettujen yhteyspisteiden listan." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Yhteyspisteiden tilastot" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Yhdistämisapu" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Uusi yhteyspiste" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Portti:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Käytä tunnettuja asiakkaita yhdistämisapuna" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Katkaise Kad-yhteys" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Käytä turvattua käyttäjän tunnistusta" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Tunnistuksen käyttö on suositeltavaa. Muuten et hyödy pistejärjestelmästä." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Protokollan kätkeminen" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Tuki protokollan kätkemiselle" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Tämä valinta sallii aMulen ottaa vastaan kätketyn protokollan yhteyksiä " "muilta asiakkailta." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Käytä kätkemistä lähtevissä yhteyksissä" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Tämä valittuna aMule käyttää protokollan kätkemistä ottaessaan yhteyttä " "muihin asiakkaisiin/palvelimiin." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Vastaanota vain kätkettyjä yhteyksiä" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Tämä valittuna aMule hyväksyy vain kätketyt yhteydet. Lähteitä on vähemmän " "saatavilla mutta kaikki liikenteesi on kätketyllä protokollalla." #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Kaikki" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Ei kukaan" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Ketkä voivat nähdä jaetut tiedostoni:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" "Valitse ketkä voivat pyytää nähtäville sinun jaettujen tiedostojen listaasi." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP-suodatus" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Suodata asiakkaat" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Salli asiakas-IP:den suodatus kuten määritelty tiedostossa ~/.aMule/ipfilter." "dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Suodata palvelimet" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Salli palvelin-IP:den suodatus kuten määritelty tiedostossa ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Uudelleenlataa lista" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "Uudelleenlataa suodatettavien IP:den lista tiedostosta ~/.aMule/ipfilter.dat." #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Päivitä nyt" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Päivitä ip-suodatus automaattisesti käynnistettäessä" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Suodatustaso:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Suodata aina lähiverkon IP:t" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Käsittele muut IP:t vainoharhaisesti" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Hylkää paketit mikäli asiakkaan ip on eri kuin mistä paketti saapui. Käytä " "varoen." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Käytä järjestelmänlaajuista ipfilter.dat-tiedostoa mikäli saatavilla" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Mikäli paikallista ipfilter.dat:ia ei löydy, käytetään järjestelmänlaajuista " "ipfilter.dat-tiedostoa." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Kytke Online-Signeeraus päälle" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Kytkee päälle Online-Signeeraustiedoston kirjoittamisen, jota muut ohjelmat " "voivat käyttää esimerkiksi signeerauksissa." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Päivitysväli (sekuntia):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Muuttaa Online-Signeerauksen päivitysväliä, annetaan sekunteina." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Online-signeeraus-tiedoston tallennuspaikka:" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "Napsauta tästä valitaksesi kansio Online-Signeerauksen tiedostoille." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Suodata saapuvat viestit (ei koske keskusteluja):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Suodata kaikki viestit" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Suodata viestit ihmisiltä jotka eivät ole kaverilistallasi" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Suodata viestit tuntemattomilta asiakkailta" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Suodata viestit jotka sisältävät (käytä merkkiä ',' erottimena):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "Syötä tähän suodatettavat sanat ja aMule estää viestit jotka sisältävät " "sellaisen" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Näytä vastaanotetut viestit lokissa" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Kommentit" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Suodata kommentit jotka sisältävät (käytä merkkiä ',' erottimena):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Automaattinen palvelinyhteys ilman välityspalvelinta" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Käytä tunnistautumista" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Kytkee päälle/pois käyttäjänimellä/salasanalla tunnistautumisen" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Käyttäjänimi:" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Käyttäjänimi tunnistautuessa välityspalvelimelle" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Salasana:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Salasana tunnistautuessa välityspalvelimelle" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Käytä välityspalvelinta" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Kytke päälle/pois välityspalvelimen tuki" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Tyyppi:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Välityspalvelin:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Välityspalvelimen verkkonimi" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Portti:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Välityspalvelimen portti" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Yhdistä:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Kirjaudu etä-aMuleen" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Käyttäjänimi" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Muista nämä asetukset" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Käytä monisanaista lokiin kirjausta." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "Avaa tied&osto" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Viestien luokittelut:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Odottaa..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Lisää tuonteja" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Yritä uudelleen valittuja" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Poista valitut" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Tapahtumatyypit" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Tilastot ja jonottavat asiakkaat valitu(i)lle tiedosto(i)lle: Sessiossa / " "Yhteensä" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Aktiiviset lähetykset" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Prosenttia kaikista tiedostoista" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Kaikki tiedostot" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Valitut tiedostot" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Vain aktiiviset lähetykset" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Näytä asiakkaat" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Uudelleenlataa:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Uudelleenlataa jaetut tiedostot" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Lähetä" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Lähettää annetun viestin." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Sulje tämä keskustelu." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Yhdistä mihin tahansa palvelimeen ja/tai Kadiin" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Jaetut tiedostot" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Poissa käytöstä [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "tavu" msgstr[1] "tavua" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "KB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "tavu/s" msgstr[1] "tavua/s" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "s" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "m" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "tuntia" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "päivää" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "kaikki" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "kaikki muut" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Keskeneräinen" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Pysäytetty" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Pakattu" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Teksti" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Aktiivinen" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Asetuskansio: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Odotellaan osatiedostojen muuntosäikeen päättymistä..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Tuon %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Luen väliaikaiskansiota" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Haen perustietoja ladatusta tietopaketista" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Luon kohdetiedostoa" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Lataan tiedot vanhasta lataustiedostosta (%u %u:sta)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Tallennan datalohkon yhteen uuteen lataustiedostoon (%u %u:sta)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Haen lähdelataustiedoston tietoja" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Lisään latauksen ja tallennan uuden osatiedoston" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Tuo osatiedostot" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Tila" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Tiedostotarkiste" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Levy: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Valitse kansio josta etsitään väliaikaislatauksia (alikansiot sisällytetään " "hakuun)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Haluatko että lähteenä käytetyt tiedostot poistetaan onnistuneen tuonnin " "jälkeen?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Poistetaanko lähteet?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "VIRHE: Osatiedoston luominen epäonnistui" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Yritän avata met-tiedoston varmuuskopion kohteesta %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "VIRHE: part.met-tiedostoa ei avattu: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "VIRHE: part.met-tiedosto on tyhjä: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "VIRHE: Epäkelpo part.met-tiedoston versio: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Virhe: %s (%s) on turmeltunut (väärät tagit: %s), tiedostoa ei voitu ladata." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "VIRHE: %s (%s) on turmeltunut (väärä tagimäärä), tiedostoa ei voitu avata." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Yritän palauttaa tiedoston tietoja..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Palautan nimetöntä tiedostoa - yritetään tallentaa nimelle RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "Saatavissa olevat tiedot palautettiin :D - Yritän käyttää niitä..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Tiedoston tietoja ei saatu palautettua :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Avaaminen epäonnistui: %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "VAROITUS: %s voi olla turmeltunut (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "VIRHE osatiedostoa tallennettaessa: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "IO-virhe osatiedostoa tallennettaessa: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Pituutta ei saatu noudettua: '%s' - käytän %s tiedostoa." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' on jostain syystä tyhjä - käytetään tiedostoa %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Tiedoston part.met.seeds tallentaminen epäonnistui kohteelle %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Tallennettu %i lähde osatiedostolle: %s (%s)" msgstr[1] "Tallennettu %i lähdettä osatiedostolle: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Tallennettu %i lähde osatiedostolle: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Virhe luettaessa osatiedoston lähdetiedostoa (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Turmeltunut osa (%d) %d osasta tiedostossa %s - Tiedostotulostarkiste |%s| " "Tiedostotarkiste |%s|" msgstr[1] "" "Turmeltunut osa (%d) %d osasta tiedostossa %s - Tiedostotulostarkiste |%s| " "Tiedostotarkiste |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Valmis osa (%i) kohteessa %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Tarkiste uudelleenluotu: %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Odottamaton virhe viimeistellessä %s. Tiedosto tauotettu" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Lataus suoritettu: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Poistetaan tiedosto: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "VAROITUS: Ei voitu laskea tarkistetta ladatusta osasta - tarkistejoukko on " "puutteellinen kohteelle '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "VIRHE: Ei voitu luoda tarkistetta ladatulle osalle - tarkistejoukko on " "puutteellinen (%s). Näin ei pitäisi koskaan tapahtua." #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "Data loppui (EOF) luotaessa tarkistetta ladatulle osalle %u jonka pituus on %" "u (maksimi on %u) osatiedostosta '%s' jonka pituus on %u: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "VAROITUS: Levytilaa ei ole tarpeeksi! Tauotan tiedoston: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Ladattu osa %i on turmeltunut tiedostossa: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "" "ICH: Ennallistettu turmeltunut osa %i kohteessa %s -> Säästetyt tavut: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Allokoidaan" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Riittämätön levytila" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Ladattu" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "VIRHE: Ei voida avata osatiedostoa '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Järjestelmän vakio" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albania" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabia" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturia" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Baski" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgaria" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Katalaani" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Kiina (Yksinkertaistettu)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Kiina (Perinteinen)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Kroatia" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Tsekki" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Tanska" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Hollanti" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Englanti (U.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Viro" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Suomi" #: src/Preferences.cpp:648 msgid "French" msgstr "Ranska" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galicia (Galego)" #: src/Preferences.cpp:650 msgid "German" msgstr "Saksa" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Kreikka" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Heprea" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Unkari" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italia" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italia (Sveitsi)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japani" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Korea" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Liettua" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norja (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Puola" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugali" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugali (Brazilia)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Albania" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Venäjä" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Slovenia" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Espanja" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Ruotsi" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turkki" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ukraina" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Vaihda kieli" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "Käännöksiä ei ole asennettuna aMulelle" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "Kieliä ei saatavilla" #: src/Preferences.cpp:906 msgid "no options available" msgstr "vaihtoehtoja ei saatavilla" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Löytyi epäkelpo luokka, hypätään yli" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "TCP-portti ei voi olla korkeampi kuin 65532 koska serverin käyttämä UDP-" "pistukka on TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Käytetään oletusporttia (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Unohdetaan olematon jaettu kansio: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Yhteys" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Kansiot" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Palvelimet" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Tiedostot" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Turvallisuus" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Käyttöliittymä" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Välityspalvelin" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Suodattimet" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Etähallinta" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Online-Signeeraus" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Laajennetut" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Tapahtumat" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Debuggaus" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "Seuraavat muuttujat korvataan:\n" " %PARTFILE - koko polku tiedostoon\n" " %PARTNAME - pelkästään tiedoston nimi" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Älä koske näihin asetuksiin ellet tiedä mitä\n" "olet tekemässä, muuten voit helposti\n" "hankaloittaa omia asioitasi.\n" "\n" "aMule toimii hyvin vaikka näitä ei\n" "säädettäisikään." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Asetuksen kytkeminen widgettiin epäonnistui ID:llä %d ja avaimella %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" "Datan siirtäminen asetuksesta widgettiin epäonnistui ID:llä %d ja avaimella %" "s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Yhdistettävän välityspalvelimen tyyppi" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" "Datan siirtäminen widgetistä asetukseen epäonnistui ID:llä %d ja avaimella %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule on käynnistettävä uudelleen näiden muutosten voimaansaattamiseksi:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP-portti muuttui.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP-portti muuttui.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Etäyhteyden portti vaihtui.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Etäyhteyden vastaanotto muuttui.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Etäyhteyden sovitin muuttui.\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Protokollan kätkeminen" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Palvelinlistan automaattisen päivityksen lista on tyhjä.\n" "'Päivitä palvelinlista käynnistettäessä' kytketään pois päältä." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Olet sallinut etäyhteydet mutta et ole antanut salasanaa.\n" "Etäyhteydet eivät ole mahdollisia ellei salasanaa ole annettu." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Kieli vaihtui.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Väliaikaiskansio muuttui.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- ED2K-verkko käytössä.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Sekä eD2k- että Kad-verkko on pois päältä.\n" "Et voi yhdistää ennen kuin ainakin toinen niistä on sallittu." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad ei käynnisty mikäli UDP-portti on pois päältä.\n" "Salli UDP-portti tai kytke Kad pois päältä." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Sinun on uudelleenkäynnistettävä aMule nyt.\n" "Mikäli et uudelleenkäynnistä nyt, älä valita mikäli jotain pahaa tapahtuu.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Palvelinlistan päivitysten hakulista on tyhjä.\n" "Ole hyvä ja syötä ainakin yksi URL joka osoittaa käypään server.met-" "tiedostoon.\n" "Klikkaa nappia \"Lista\" tämän valintaruudun vierestä syöttääksesi URLin." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Väliaikaiset tiedostot" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Saapuvat tiedostot" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Online-Signeeraukset" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Valitse kansio kohteelle %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Etsi videosoitin" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Valitse selain" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Suoritettava tiedosto%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Muokkaa palvelinlistaa" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Syötä tähän URLit joista server.met-tiedostot haetaan.\n" "Vain yksi urli riville." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Päivitysväli: %d sekunti" msgstr[1] "Päivitysväli: %d sekuntia" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Keskimääräiskuvaajan aika: %d minuutti" msgstr[1] "Keskimääräiskuvaajan aika: %d minuuttia" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Yhteyskuvaajan skaala: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Tiedostopuskurin koko: %d tavu" msgstr[1] "Tiedostopuskurin koko: %d tavua" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Lähetysjonon koko: %d asiakas" msgstr[1] "Lähetysjonon koko: %d asiakasta" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Palvelinyhteyden päivitysväli: %d minuutti" msgstr[1] "Palvelinyhteyden päivitysväli: %d minuuttia" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Palvelinyhteyden päivitysväli: Ei käytössä" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "poissa käytöstä" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Suorita komento tapahtuman '%s' yhteydessä" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Mahdollista komentojen suorittaminen ytimestä" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Ytimen komento:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Mahdollista komentojen suorittaminen graafisesta käyttöliittymästä" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Graafisen käyttöliittymän komento:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Seuraavat muuttujat korvataan:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "Vähimmäiskoon pitää olla pienempi kuin enimmäiskoon. Enimmäiskokoa ei " "huomioida." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Hakuvaroitus" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Kaikki" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Kad-hakua ei voida tehdä mikäli Kad ei ole päällä" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "eD2k-hakua ei voida tehdä mikäli eD2k ei ole yhdistettynä" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Odottamaton virhe Kad-hakua tehtäessä: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "Tiedostotunniste" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Tiedosto" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Lataa luokassa" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "Hanki %s tälle tiedostolle" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Hae tähän liittyviä tiedostoja (eD2k, paikallinen palvelin)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Merkitse tunnetuksi tiedostoksi" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Kopioi eD2k-linkki leikepöydälle" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Peruutettu" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Uusi" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Kätketyt yhteysyritykset palvelimille epäonnistuivat. Yritetään uudelleen " "ilman kätkemistä." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Yhdistäminen kaikkiin listattuihin palvelimiin epäonnistui. Aloitetaan uusi " "kierros." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "eD2k-verkko kytketty pois päältä asetuksista, ei yhdistetä." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "Palvelinlistasta ei löytynyt toimivia palvelimia joihin yhdistää" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Yhdistetty %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Yhteys muodostettu: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Kriittinen virhe yhdistettäessä. Internet-yhteys on mahdollisesti poikki" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Yhteys palvelimeen %s (%s:%i) katkesi" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) näyttää kuolleelta." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) on ilmeisesti täysi." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Automaattinen uudelleenyhdistäminen palvelimelle %d sekunnin päästä" msgstr[1] "Automaattinen uudelleenyhdistäminen palvelimelle %d sekunnin päästä" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Yhteys katkesi" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Yhdistäminen kohteeseen %s (%s:%i) epäonnistui." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "VIRHE: Pistukka virheellinen aikakatkaisutarkistuksessa" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Yhteysyritys kohteeseen %s (%s:%i) aikakatkaistiin." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Vastaanotettiin myöhästynyt vastaus DNS-kyselyyn, ohitetaan." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Lataan tiedostoa server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Tiedostoa server.met ei löytynyt!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "Server.met-tiedoston '%s' avaaminen epäonnistui, tuntematon muotoilu." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Server.met:in avaus epäonnistui!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "Server.met on turmeltunut, virheellinen versiotunniste: 0x%x, koko %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i palvelin tiedostossa server.met" msgstr[1] "%i palvelinta tiedostossa server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d palvelin lisätty" msgstr[1] "%d palvelinta lisätty" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Virhe: tiedosto 'server.met' on turmeltunut: " #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "IO-virhe luettaessa tiedostoa 'server.met': " #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Palvelinta ei lisätty: [%s:%d] ei määritä kelvollista porttia." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Palvelinta ei lisätty: IP [%s:%d] on suodatettu tai virheellinen." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Palvelinta ei lisätty: IP:porttia [%s:%d] vastaava palvelin on jo listalla." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Palvelin lisätty: Palvelin [%s:%d] on nimeltään '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Olet yhdistettynä palvelimeen jota yrität poistaa, katkaise yhteys ensin." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Kohteen '%s' avaaminen ei onnistunut" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Server.met:n tallennus epäonnistui!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Virheellinen URL" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Palvelinlista ladattu osoitteesta %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Palvelinlistan osoitetta ei löydetty tiedostosta 'addresses.dat'. Ole hyvä " "ja liitä kelvollinen palvelinlistan osoite tähän tiedostoon palvelinlistan " "automaattiseksi päivittämiseksi" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Aloita palvelinlistan lataus osoitteesta %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "VAROITUS: palvelinlistan automaattisen päivityksen url ei kelpaa: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "Addresses.dat-tiedostosta ei löytynyt kelvollisia urleja server.met:in " "automaattilataukselle" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Palvelinlistan %s lataus epäonnistui" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "Paikallinen palvelin IP-suodatetaan, yhdistän toiselle palvelimelle!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Palvelimen nimi" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Osoite" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Portti" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Kuvaus" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Viive" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Käyttäjiä" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Kiinteä" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versio" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Olet yhdistettynä palvelimeen jota yrität poistaa. Katkaise yhteys ensin. " "Palvelinta EI poistettu." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Tuntematon nimi)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Oletko varma että haluat poistaa pysyvän palvelimen %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Palvelimet (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Palvelin" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Yhdistä palvelimelle" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Merkitse palvelin pysyväksi" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Poista palvelimen pysyvyysmerkintä" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Merkitse palvelimet pysyviksi" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Poista palvelimien pysyvyysmerkintä" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Poista palvelin" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Poista palvelimet" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Poista kaikki palvelimet" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Kopioi eD2k-linkit leikepöydälle" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Uudelleenyhdistä palvelimelle" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Oletko varma että haluat poistaa kaikki palvelimet?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Oletko varma että haluat poistaa valitun palvelimen?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Oletko varma että haluat poistaa valitut palvelimet?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "VIRHE: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "VAROITUS: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Uusi asiakastunnus on %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "VAROITUS: Sinulla on Low-ID!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" "\tTodennäköisimmin tämä johtuu siitä että olet palomuurin tai reitittimen " "takana" #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tLisätietoa http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Tuntematon palvelintieto vastaanotettu! - liian lyhyt" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Vastaanotettiin %d uusi palvelin" msgstr[1] "Vastaanotettiin %d uutta palvelinta" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Palvelinlista tallennettu." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Palvelin hylkäsi viimeisimmän komennon" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Virheellinen paketti saatu palvelimelta: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Odottamaton virhe käsiteltäessä pakettia palvelimelta: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Ei voitu luoda DNS-selvityssäiettä kohteeseen %s yhdistämiseen" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "Palvelin IP %s (%s) on suodatettu. Ei yhdistetä." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "käyttää protokollan kätkentää." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Yhdistetään %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Ei voitu selvittää dns-nimeä palvelimelle %s: Ei voida yhdistää!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Palvelinta ei lisätty: IP:tä tai verkkonimeä ei annettu." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Palvelinta ei lisätty: Epäkelpo palvelinportti." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "eD2k-tilanne:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kademlian tilanne:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "Lähiverkkokäyttö" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Käynnissä" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Tila:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Yhteyden tila:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Palomuurattu - avaa TCP-portti %d reitittimestä tai palomuurista" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "UDP-yhteyden tila:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Palomuurattu - avaa UDP-portti %d reitittimestä tai palomuurista" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Palomuurattu tilanne: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Kaveria ei vaadita - TCP-portti auki" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Kaveria ei vaadita - UDP-portti auki" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Ei kaveria" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Yhdistetään kaveriin" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Yhdistetty kaveriin osoitteessa %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Indeksoidut lähteet:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Indeksoidut avainsanat:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Indeksoidut huomautukset:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Indeksoitu kuorma:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Keskimäärin käyttäjiä:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Keskimäärin tiedostoja:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Ei käynnissä" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Lisään tiedoston %s jaettaviin" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Löydetty %i tunnettu jaettu tiedosto" msgstr[1] "Löydetty %i tunnettua jaettua tiedostoa" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Löydetty %i tunnettu jaettu tiedosto, %i tuntematonta" msgstr[1] "Löydetty %i tunnettua jaettua tiedostoa, %i tuntematonta" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "VIRHE: Yritettiin jakaa %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Jaettua kansiota ei löytynyt, hypätään yli: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Jaettavia tiedostoja ei löytynyt kansiosta: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Käyttäjänimi" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Latausnopeus" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Lähetysnopeus" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Saatavilla olevat osat" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "Lähetyksen tilanne" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Latauksen tilanne" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Alkuperä" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Paikallinen tiedoston nimi" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "Jaettujen tiedostojen lista" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Pyynnöt" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Hyväksytyt pyynnöt" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Siirretty data" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Jakosuhde" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Hankitut osat" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Täysiä kopioita" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Kansiopolku" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Lisää kommentti/luokitus" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Muuta kommenttia/luokitusta" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Uudelleennimeä" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Lisää tiedostot kokoelmassa siirtolistalle" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Kopioi magnet-&URI leikepöydälle" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Kopioi eD2k-linkki työpöydälle (Lähde)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Kopioi eD2k-linkki leikepöydälle (Lähde) (Kryptaustiedoilla)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Kopioi eD2k-linkki leikepöydälle (Verkkonimi)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "Kopioi eD2k-linkki leikepöydälle (Verkkonimi) (Kyptaustiedoilla)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Kopioi eD2k-linkki leikepöydälle (&AICH-tiedot)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Kopioi eD2k-linkki leikepöydälle (&AICH-tiedot)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Tarvitset HighID:een luodaksesi voimassa olevan lähdelinkin" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Jaetut tiedostot (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Osatiedosto]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Tiedoston nimi etäpäässä" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Lähetetty data (Sessiossa (Yhteensä)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Otsikkotietoja yhteensä (Paketteja): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Tiedostopyyntöotsikkoja (Paketteja): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Lähdevaihdon otsikkoja (Paketteja): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Palvelimen otsikkoja (Paketteja): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Kad-otsikkoja (Paketteja): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Kryptauksen otsikkoja (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Lähetyksiä käynnissä: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Lähetyksiä odottamassa: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Onnistuneita lähetyksiä yhteensä: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Epäonnistuneita lähetyksiä yhteensä: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Keskimääräinen lähetysaika: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Ladattu data (Sessiossa (Yhteensä)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Lähteitä löytynyt: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Latauksia käynnissä (paloja): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Session jakosuhde lähetys:lataus (Yhteensä): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Keskimääräinen latausnopeus (Sessiossa): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Keskimääräinen lähetysnopeus (Sessiossa): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Suurin latausnopeus (Sessiossa): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Suurin lähetysnopeus (Sessiossa): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Uudelleenyhdistämisiä: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Aikaa ensimmäisestä siirrosta: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Yhdistetty palvelimeen: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Aktiivisia yhteyksiä (arvio): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Maksimimäärä yhteyksiä saavutettu: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Yhteyksiä keskimäärin (arvio): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Yhteyksiä enimmillään (arvio): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Asiakkaat" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Tuntematon: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Suodatettu: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Estetty: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Yhteensä: %i Tunnettuja: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Toimivia palvelimia: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Toimimattomia palvelimia: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Yhteensä: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Poistettuja palvelimia: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Suodatettuja palvelimia: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Käyttäjiä toimivilla palvelimilla: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Tiedostoja toimivilla palvelimilla: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Käyttäjiä yhteensä: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Tiedostoja yhteensä: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Palvelimien käyttö: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Jaettuja tiedostoja: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Jaettujen tiedostojen yhteenlaskettu koko: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Keskimääräinen tiedostokoko: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Käyttöjärjestelmä" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Ei vastaanotettu" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktiiviset yhteydet: (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Ei saatavissa" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Ei koskaan" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Komento '%s' prosessinumerolla '%d' on suoritettu paluukoodilla '%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Suorita ja poistu." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Virheellinen IP-muoto. Käytä xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Tälle komennolle on annettava parametri. Kelvollisia ovat: 'all', " "tiedostonimi, tai numero.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Käsittelee tarkisteen mukaan: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Käsittelee tiedostonimen mukaan: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Tälle komennolle on annettava parametri. Kelvollisia ovat: " "tiedostotarkiste.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Ei ole kelvollinen numero\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Tarkiste ei ole kelvollinen (pituuden on oltava tasan 32 merkkiä)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Kirjoita '%s' saadaksesi lisää ohjeita.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Latauksen koko: %i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Pyyntö ei onnistunut, tuntematon virhe." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Toiminto onnistui." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Pyyntö epäonnistui virheeseen: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Asiakkaiden IP-suodatus on %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "POIS PÄÄLTÄ" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "PÄÄLLÄ" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Palvelimien IP-suodatus on %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Nykyinen IP-suodatustaso on %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Kaistarajoitukset: Ylös: %u KB/s, Alas: %u KB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Yhdistetty %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Yhdistän" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "palomuurattu" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Lataus:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Lähetys:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Asiakkaita jonossa:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Lähteitä yhteensä:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Hakutuloksia: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Haun edistyminen: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Haun edistyminen ei ole tiedossa" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Palvelin lähetti tunnistamattoman vastauksen, komentosana = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Näytä tilannetiedot lyhyesti." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Näyttää yhteyden tilan, nykyiset lähetys-/latausnopeudet, jne.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Näytä täydet tilastotiedot." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Tälle komennolle voidaan antaa valinnaisesti parametrina luku väliltä 0-" "255,\n" "joka määrää kuinka monta merkintää asiakkaiden versiopuusta näytetään.\n" "Luku 0 tai ei parametria tarkoittaa rajoittamattomasti.\n" "\n" "Esimerkki: 'statistics 5' näyttää vain viisi suosituinta versiota kustakin " "asiakastyypistä.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Sammuta aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Sulje etäsuorituksessa oleva ydin (amule/amuled).\n" "Tämä sulkee myös tekstikäyttöliittymän, koska se on käyttökelvoton ilman\n" "suoritettavaa ydintä.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Lataa uudelleen annetun kohteen." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Lataa uudelleen lista jaetuista tiedostoista." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Lataa uudelleen IP-suodatustaulukko." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Lataa nykyinen IP-suodatustaulukko uudelleen." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Päivittää IP-suodatustaulukon URLista." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Mikäli URL jätetään pois, käytetään URLia asetuksista." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Yhdistä verkkoon." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Tämä yhdistää kaikkiin verkkoihin jotka on sallittu asetuksista.\n" "Voit myös antaa palvelimen muodossa IP:Portti yhdistääksesi vain\n" "kyseiselle palvelimelle. IP:n on oltava pisteillä erotettu IPv4-numero\n" "tai DNS-nimi." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Yhdistä vain eD2k:hon." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Yhdistä vain Kadiin." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Katkaise yhteys verkkoon." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Tämä katkaisee yhteyden kaikkiin yhdistettyihin verkkoihin.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Katkaise vain eD2k-yhteys." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Katkaise vain Kad-yhteys." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Lisää eD2k- tai magnet-linkin ytimelle." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Lisättävä eD2k-linkki voi olla:\n" "*) tiedostolinkki (ed2k://|file|...), ja se lisätään latauslistalle,\n" "*) palvelinlinkki (ed2k://|server|...), ja se lisätään palvelinlistalle,\n" "*) tai palvelinlistalinkki, ja kaikki palvelimet listalta lisätään\n" " palvelinlistalle.\n" "\n" "Magnet-linkin on sisällettävä eD2k-tarkiste ja tiedoston pituus.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Aseta haluamasi asetukset." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Aseta IP-suodatuksen asetukset." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Kytke IP-suodatus päälle sekä asiakkaille että palvelimille." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Kytke IP-suodatus pois päältä sekä asiakkailta että palvelimilta." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Salli/estä asiakkaiden IP-suodatus." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Kytke IP-suodatus päälle asiakkaille." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Kytke IP-suodatus pois päältä asiakkailta." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Salli/estä palvelinten IP-suodatus." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Kytke IP-suodatus päälle palvelimille." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Kytke IP-suodatus pois päältä palvelimilta." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Valitse IP-suodatuksen taso." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Sallitut suodatustasot ovat välillä 0-255 oletusarvon (myös lähtöarvon)\n" "ollessa 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Aseta kaistankäytön rajoitukset." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" "Näille komennoille annettujen arvojen on oltava kilotavuja sekunnissa.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Aseta lähetyskaistan raja." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "" "Näille komennoille annettujen arvojen on oltava kilotavuja sekunnissa.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Aseta latauskaistan raja." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Näytä asetuksen arvo." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Hae IP-suodatuksen asetukset." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Hae IP-suodatuksen tila sekä asiakkaille että palvelimille." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Hae IP-suodatuksen tila asiakkaille." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Hae IP-suodatuksen tila palvelimille." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Hae IP-suodatuksen taso." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Hae kaistankäytön rajat." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Suorittaa haun" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Haun tyyppi on annettava:\n" " GLOBAL (kaikkialta)\n" " LOCAL (paikallinen)\n" " KAD (vain kadista)\n" "Esimerkki: 'search kad tiedosto' suorittaa kad-haun nimellä \"tiedosto\".\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Suorittaa haun kaikkialta." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Suorittaa haun paikallisesti" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Suorittaa kad-haun" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Näyttää viimeisimmän haun tulokset." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Näyttää edellisen haun tulokset.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Näyttää haun edistymisen." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Näyttää haun edistymisen.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Aloittaa tiedoston lataamisen" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Tiedoston numero viimeisimmästä hausta on annettava.\n" "Esimerkki: 'download 12' aloittaa viimeisen haun tiedoston numero 12 " "latauksen.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Tauota lataus." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Jatka latausta." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Peruuta lataus." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Aseta latauksen tärkeys." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" "Aseta tärkeys lataukselle, joko Alhainen, Normaali, Korkea tai " "Automaattinen.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Aseta tärkeys alhaiseksi." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Aseta tärkeys normaaliksi." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Aseta tärkeys korkeaksi." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Aseta tärkeys automaattiseksi." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Näytä jonot/listaukset." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Näyttää lähetys/latausjonon, palvelinlistan tai jaettujen tiedostojen " "listan.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Näytä lähetysjono." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Näytä latausjono." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Näytä loki." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Näytä palvelinlista." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Nollaa loki." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Vanhentunut komento, käytä sen sijaan '%s'." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Tämä on vanhentunut komento ja se voidaan poistaa tulevaisuudessa.\n" "Käytä sen sijaan '%s'.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMule tekstiasiakas" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Muunnetaan vanhat AICH-tarkistejoukot '%s' 64-bittisiksi '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "VAROITUS: Tiedostonimi '%s' ei kelpaa ja tiedosto uudelleennimettiin '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "VAROITUS: Tiedosto '%s' on jo olemassa, uusi tiedosto nimettiin '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Oletko varma että haluat perua ja poistaa kaikki tiedostot tässä luokassa?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Vaaditaan vahvistus" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Luokittelujen maksimimäärä on 99." #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Liian monta luokkaa!" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Kaikki muut" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Valitse suodatin" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Lisää luokka" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Muokkaa luokkaa" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Poista luokka" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Tiedostoa '%s' ei voitu avata, poistetaan jaettujen tiedostojen listalta." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Tarkistejoukkoa pyydettiin tuntemattomalle tiedostolle: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Jatketaan tiedoston %s lähetyksiä" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Keskeytetään tiedoston %s lähetys" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Komennon '%s' suoritus epäonnistui tapahtuman '%s' yhteydessä." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Lataus valmistunut" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Koko polku tiedostoon." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Tiedoston nimi ilman polkua." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "Tiedoston e2dk-tarkiste." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Tiedoston koko tavuina." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Kumulatiivinen latausaika." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Uusi keskustelu aloitettu" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Viestin lähettäjä." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Levytila loppu" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Levyosio." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Virhe viimeistellessä" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Käsittelee tiedostoa numero %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Olet pyytänyt osatarkisteita (Vain tiedostoille jotka ovat > 9.5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Tiedostoa ei ole !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "\"aLinkCreator, aMule eD2k-linkkien tekijä" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Tervetuloa!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Syöteparametrit" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Tiedostosta Tarkiste" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Lisää Valinnaisia URLeja tälle tiedostolle" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Syötä tähän tiedosto josta haluat laskea eD2k-linkin" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Syötä tähän url jonka haluat lisätä eD2k-linkkiin: Lisää / perään jotta " "aLinkCreator voi lisätä tiedoston nimen" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Poista" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Luo linkki osatarkisteilla" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Auttaa levittämään uusia ja harvinaisia tiedostoja nopeammin, kustannuksena " "linkin koon kasvu" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4-Tiedostotarkiste" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k-tiedostotarkiste" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k-linkki" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Tallenna" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Kopioi leikepöydälle" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Avaa" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Avaa tiedosto laskeaksesi sen eD2k-linkin" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Kopioi laskettu eD2k-linkki leikepöydälle" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Tallenna nimellä" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Tallenna laskettu eD2k-linkki tiedostoon" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Tietoja aLinkCreatorista" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Valitse tiedosto josta haluat laskea eD2k-linkin" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Leikepöytää ei voitu avata" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Toistaiseksi ei mitään kopioitavaa !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Valitse tiedosto lasketulle eD2k-linkille" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Ei voitu avata " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Ole hyvä ja syötä ei-tyhjä tiedoston nimi" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Toistaiseksi ei mitään tallennettavaa !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, aMule eD2k-linkkien tekijä\n" "\n" "(c) 2004 ThePolish \n" "\n" "Bittikartat osoitteista http://www.everaldo.com, http://www.icomania.com\n" "ja http://jimmac.musichall.cz/ikony.php3\n" "\n" "Jaetaan GPL:n alaisena" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Laskee tarkistetta..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator on toiminnassa" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Lasken MD4-tarkistetta..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Lasken eD2k-tarkisteita..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Peruutettu !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Valmis %.2f sekunnissa" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Olet jo lisännyt tämän URLin !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Ole hyvä ja syötä ei-tyhjä URL" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Ei voida avata %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i päivä(ä) %i tunti(a) %i minuutti(a) %i sekunti(a)" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uvrk %02ut %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02ut %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, aMulen Online-Tilastotiedot" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Suurin latausnopeus wxCasin käynnistämisestä lähtien" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Suurin latausnopeus edellisten wxCasin ajokertojen aikana" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Järjestelmä" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Pysäytä Automaattinen Päivitys" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Tallenna Online-Tilastotietokuva" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Tulosta Online-Tilastotietokuva" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Asetus" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Tietoja wxCasista" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Aloita Automaattinen Päivitys" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Automaattinen Päivitys pysäytetty" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Automaattinen Päivitys aloitettu" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Tallenna Tilastokuva" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMulen Online-Tilastotiedot" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Tulostamisessa oli ongelma.\n" "Kenties tulostin ei ole asennettu oikein?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Tulostus" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMulen OnLine Signeeraus-Tilastotiedot\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pohjautuu CAS:iin jonka on tehnyt Pedro de Oliveira \n" "\n" "Jaetaan GPL:n alaisena" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oi Oi, aMule ei ole käynnissä..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule on käynnissä" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule on käynnissä, mutta ei yhdistettynä" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule yhdistää..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oi Oi, aMulen tila on tuntematon..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " on ollut käynnissä " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " on pysäytetty !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " ei ole yhdistetty !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " on yhdistämässä..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " on tekemässä jotain outoa, tarkista se !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " on yhdistetty: " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "pois päältä" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " palvelimella " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " käyttäen " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Yhteensä Ladattu: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Lähetetty: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Istunnossa Ladattu: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Lataus: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " KB/s, Lähetys: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " KB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Jako: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " tiedosto(a), Asiakkaita jonossa: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Aika: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " hetkellä " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Järjestelmän Kuormituskeskiarvo (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Järjestelmä päällä: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Tiedoston amulesig.dat sisältävä kansio" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Syötä tähän kansio jossa on amulesig.dat-tiedostosi" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Päivitysväli sekunteina" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Luo tilastokuva joka päivityksen yhteydessä" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Syötä tähän kansio johon haluat tilastokuvan luotavan" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Lähetä tilastokuvasi toistuvasti FTP-palvelimelle" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP-osoite" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP-kansiopolku" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Syötä tähän FTP-palvelimen osoite" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "Syötä tähän kansio FTP-palvelimella mihin tilastokuvasi tallennetaan" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Käyttäjänimi" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Syötä tähän käyttäjänimi jota käytät kirjautuessasi FTP-palvelimelle" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Syötä tähän salasana jota käytät kirjautuessasi FTP-palvelimelle" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "FTP-päivityksien väli minuuteissa" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Tarkista oikeellisuus" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Kansio joka sisältää signeeraustiedostosi" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Kansio mihin luodaan tilastokuva" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Lataa mallin " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Web-palvelimen HTTP-portti" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Käytä UPnP-portinohjausta web-palvelimen portissa" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP-portti" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Käytä gzip-pakkausta" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Täyden käyttöoikeuden salasana web-palvelimelle" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Vieraan salasana web-palvelimelle" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Salli vieraskäyttö" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Estä vieraskäyttö" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Hae/tallenna web-palvelimen asetukset etä-aMulesta/een" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMulen asetustiedoston polku. ÄLÄ KÄYTÄ SUORAAN!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Poista PHP-tulkki käytöstä (vanhentunut)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Uudelleenkoosta PHP-sivut joka pyynnöllä" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule Web-Palvelin" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "web-asiakasyhteys hyväksytty\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "VIRHE: Web-asiakasyhteyttä ei voitu hyväksyä\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Pyyntö ei onnistunut, virhe: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Indeksitiedostoa ei löydetty: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sessio vanhentunut - pyydetään kirjautumista\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sessio kunnossa, kirjautuneena\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sessio kunnossa, ei kirjautuneena\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Ei avattua sessiota - tulee pyytämään kirjautumista\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sessio luotu - pyytää kirjautumista\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Käsittelee pyyntöä [alkuperäinen]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Salasanaa ei annettu, kirjautumista ei sallita" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Tarkistaa salasanaa\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Salasanatarkiste ei kelpaa\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Salasana hyväksytty\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Virheellinen salasana\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Et antanut salasanaa. Tyhjä salasana ei ole sallittu.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Uloskirjautumista pyydetty\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Käsittelee pyyntöä [uudelleenohjattu]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Osatiedostolla %s (%s) ei ole lähdetiedostoa" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Osatiedostolla %s (%s) on tyhjä lähdetiedosto" #, fuzzy #~ msgid "Download status" #~ msgstr "Latauksen tilanne" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Päivitysviive: %d sekunti" #~ msgstr[1] "Päivitysviive: %d sekuntia" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "" #~ "Kommentit ja luokitukset eivät ole vielä tuettuja graafisessa " #~ "etäkäyttöliittymässä" #~ msgid "Transferring" #~ msgstr "Siirtää" #, fuzzy #~ msgid "QR: ???" #~ msgstr "Jonossa: %u" #~ msgid "QR: %u" #~ msgstr "Jonossa: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "Jonossa" #~ msgid "TODO - show progress of a search" #~ msgstr "KESKENERÄINEN - haun edistymisen näyttö" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Lasketaan MD4- sekä AICH-tarkistetta tiedostolle %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Lasketaan MD4-tarkistetta tiedostolle %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Lasketaan AICH-tarkistetta tiedostolle %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "VAROITUS: Alkuperäistä '%s' ei voitu poistaa varmuuskopion valmistuttua" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "VAROITUS: Ei voitu poistaa %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (Jono: %u)" #~ msgid "Rating (total):" #~ msgstr "Luokitus (yhteensä):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Yritä siirtää kokonaisia paloja lähetettäessä" #~ msgid "Networks window" #~ msgstr "Verkkoikkuna" #~ msgid "Searches window" #~ msgstr "Hakujen ikkuna" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Lataa" #~ msgid "Shared files window" #~ msgstr "Jaettujen tiedostojen ikkuna" #~ msgid "Messages window" #~ msgstr "Viestien ikkuna" #~ msgid "Statistics graph window" #~ msgstr "Tilastokuvaajien ikkuna" #~ msgid "Preferences settings window" #~ msgstr "Asetuksien säätöikkuna" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Tehtäväpalkin kuvake katosi, yritän uudelleenluoda..." #~ msgid "Transfers" #~ msgstr "Siirrot" #~ msgid "Files transfers window" #~ msgstr "Siirrettävien tiedostojen ikkuna" #~ msgid "Unban" #~ msgstr "Salli" #~ msgid "Show Uploads" #~ msgstr "Näytä lähetykset" #~ msgid "Show Queue" #~ msgstr "Näytä jono" #~ msgid "Select View" #~ msgstr "Valitse näkymä" #~ msgid "Client Software" #~ msgstr "Asiakasohjelma" #~ msgid "Waited" #~ msgstr "Odottanut" #~ msgid "Upload Time" #~ msgstr "Lähetysaika" #~ msgid "Upload/Download" #~ msgstr "Lähetetty/vastaanotettu" #~ msgid "Remote Status" #~ msgstr "Etäpään tilanne" #~ msgid "File Priority" #~ msgstr "Tiedoston tärkeys" #~ msgid "Score" #~ msgstr "Pisteet" #~ msgid "Asked" #~ msgstr "Kysytty" #~ msgid "Last Seen" #~ msgstr "Viimeksi nähty" #~ msgid "Entered Queue" #~ msgstr "Saapunut jonoon" #~ msgid "Transferred Up" #~ msgstr "Lähetetty" #~ msgid "Transferred Down" #~ msgstr "Ladattu" #~ msgid "Userhash" #~ msgstr "Käyttäjätarkiste" #~ msgid "Encrypted" #~ msgstr "Salattu" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "Avattiin %d lippukuvaa." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Näytä lähetykset / lähetysjono" #~ msgid "Clients on queue :" #~ msgstr "Asiakkaita jonossa :" #~ msgid "Current Session" #~ msgstr "Nykyinen sessio" #~ msgid "Total" #~ msgstr "Yhteensä" #~ msgid "Requested :" #~ msgstr "Pyydetty :" #~ msgid "Create backup for preview" #~ msgstr "Luo varmuuskopio esikatseluun" #~ msgid "Files Transfers Window" #~ msgstr "Siirrettävien tiedostojen ikkuna" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Käyttäjiä yhteensä: %s | Tiedostoja yhteensä: %s" #~ msgid "Download size not received, downloading until connection is closed" #~ msgstr "Latauksen kokoa ei saatu, ladataan kunnes yhteys suljetaan" #~ msgid "HTTP download thread ended" #~ msgstr "HTTP-lataussäie päättyi" #~ msgid "Host: %s:%i\n" #~ msgstr "Verkkonimi: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Vastaus: %i (Virhe: %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "VAROITUS: Tyhjä vastaus yhteyttä muodostaessa" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "VIRHE: Uudelleenohjauksen koodi vastaanotettu ilman URLia" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "" #~ "CIP2Country::CIP2Country(): Maatietojen avaaminen epäonnistui kohteesta " amule_2.3.1+git20151120.0023527bc2.orig/po/fr.po0000644000175000017500000074124512611472361017105 0ustar morphmorph# aMule i18n resource file. # Copyright (C) 2004 - 2014 aMule Team # This file is distributed under the same license as the aMule package. # # Translation of aMule to French # # ThePolish , 2005. # kaouete , 2005, 2006. # kaouete , 2006. # Guillaume , 2007. # Carlos Diaz , 2008. # Youpla , 2008. # Olivier Sannier , 2009, 2010. # Dylan Aïssi , 2008 - 2014. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2014-02-15 13:05+0100\n" "Last-Translator: Dylan Aïssi \n" "Language-Team: Français\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Ajouter un ami" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Vous devez entrer une IP et un port valides !" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Information" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Le hachage utilisateur spécifié est invalide !" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Échec de l'ouverture du fichier ED2KLinks." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "AVERTISSEMENT : Vous ne pouvez pas vous ajouter vous-même en tant que source " "pour un lien eD2k alors que vous avez un LowID." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Et maintenant on quitte l'application principale…" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Interruption de l'instance amuleweb avec le pid '%ld' …" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Mise à mort de l'instance amuleweb avec le pid '%ld' …" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Échec" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit : Arrêt du noyau." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "Fermeture d'aMule terminée." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Résultats du débogage de la mémoire pour la sortie d'aMule :" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "Configuration EC" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Mot de passe renseigné et connexions externes activées." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "AVERTISSEMENT" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Votre localisation à été remise par défaut à cause d'un changement dans la " "configuration. Désolé." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Infos" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Vous n'avez pas de serveurs dans votre liste de serveurs.\n" "Voulez vous qu'aMule télécharge une nouvelle liste maintenant ?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Téléchargement de la liste de serveurs." #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "serveur web s'exécutant avec le pid %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Vous avez demandé à activer le serveur web au démarrage, mais l'exécutable " "amuleweb n'a pas pu être lancé. Veuillez installer le paquet contenant le " "serveur web aMule, ou compilez aMule en utilisant --enable-webserver et " "exécutez make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "ERREUR" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Impossible de lier les ports à l'adresse spécifiée : %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Le port %u n'est pas disponible. Vous serez LowID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Le port %u n'est pas disponible !\n" "\n" "Ceci signifie que vous serez LowID.\n" "\n" "Vérifiez votre réseau pour être sûr que le port est ouvert en sortie et en " "entrée." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Échec de la création du fichier OnlineSig" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Échec de la création du fichier aMule OnlineSig" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "La localisation choisie semble ne pas être installer sur votre machine. " "(Note : Je tente de la forcer quant même)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "C'est la première fois que vous lancez aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Cette version est une version de test, mis à jour quotidienne, et\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "nous ne fournissons aucune garantie que cela n'endommagera rien, brûlera " "votre maison,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "ou tuera votre chien. Mais ça *devrait* être à peu près sûr quand-même.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Plus d'informations, de l'aide et de nouvelles versions peuvent être " "trouvées sur notre page web,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" " www.aMule.org, ou sur notre canal IRC : #aMule sur irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Ne vous gênez pas pour reporter tout bogue sur http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Le répertoire choisi pour les fichiers de signature en ligne est INVALIDE !\n" "La signature en ligne sera DÉSACTIVÉE jusqu'à ce que cela soit corrigé dans " "les préférences." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Nom du serveur signalé" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Erreur lors de la réserve d'espace pour le fichier '%s' : %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "ERREUR : impossible d'ouvrir le fichier journal" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "AVERTISSEMENT : le fichier journal est vide. Quelque chose ne va pas." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Le journal a été effacé" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "ServerMessage : %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "Saut du téléchargement de %s, car le fichier demandé n'est pas récent." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Échec du téléchargement de la liste des nœuds." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Échec de l'ouverture du fichier de vérification de version téléchargé" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Fichier de vérification de version corrompu" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Vous utilisez une version obsolète d'aMule !" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" "Votre version d'aMule est %i.%i.%i et la dernière version est %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "" "La dernière version peut toujours être trouvée sur http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" "AVERTISSEMENT : votre version d'aMuled est obsolète : %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Votre version d'aMule est à jour." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Échec du téléchargement du fichier de vérification de version" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Utilisateurs : %s | Fichiers : %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Utilisateurs : E : %s K : %s | Fichiers : E : %s K : %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Aucun réseau sélectionné" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "avec un LowID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "avec un HighID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Connecté à %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Connexion à %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Déconnecté de eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad démarré." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad arrêté." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Connecté à Kad (OK)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Connecté à Kad (pare-feu)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Déconnecté de Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Le réseau Kad ne peut être utilisé si le port UDP est désactivé dans les " "préférences, pas de démarrage." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Le réseau Kad est désactivé dans les préférences, pas de connexion." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ERREUR : le démon aMule ne peut être utilisé quand les connexions externes " "sont désactivées. Pour activer les Connexions Externes, utilisez soit un " "aMule normal, démarrez amuled avec l'option --ec-config ou passez la clé " "\"AcceptExternalConnections\" à 1 dans le fichier ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "ERREUR : Un mot de passe valide est requis pour utiliser les connexions " "externes, et le démon aMule ne peut pas être utilisé sans connexions " "externes. Pour exécuter le démon aMule, vous devez indiquer une valeur " "appropriée dans le champ \"Mot de passe EC\" dans le fichier ~/.aMule/amule." "conf. Lancez amuled avec le flag --ec-config pour affecter le mot de passe. " "Plus d'information est disponible sur http://wiki.amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - démarrage du timer" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: passage en arrière plan - à bientôt" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Impossible de créer le fichier Pid" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "Erreur : %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Ceci est aMule %s basé sur eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Tourne sur %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Visitez http://www.amule.org pour vérifier si une nouvelle version est " "disponible." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ERREUR FATALE : Échec de la création du minuteur" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Contrôle à distance d'aMule " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Snapshot :" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "Client P2P multiplateforme basé sur eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Site web : http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Forum : http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ : http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Contact: admin@amule.org (problèmes administratifs) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 aMule Team \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Une partie d'aMule est basée sur \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia : Routage peer-to-peer basé sur la métrique XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Message" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "boîte de dialogue aMule détruite" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Connexion en cours" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k : Connexion en cours" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k : Déconnecté" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad : Derrière un pare-feu" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad : Connecté" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad : Connexion en cours" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad : Coupé" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Annuler" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Stopper les essais de connexions en cours" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Déconnecter" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Se déconnecter des réseaux actuellement connectés" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Se connecter" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Se connecter aux réseaux actuellement activés" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "E : %.1f(%.1f) | R : %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "E : %.1f | R : %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Connecté)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Déconnecté)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Voulez-vous vraiment quitter %s ?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Confirmation de sortie" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Commande de lancement :" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- défaut -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Le répertoire de thèmes '%s' n'existe pas" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" "AVERTISSEMENT : Impossible d'ouvrir le fichier thème '%s' pour la lecture" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Réseaux" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Fenêtre des réseaux" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Recherches" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Fenêtre de Recherche" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Téléchargements" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Fenêtre des Téléchargements" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Fichiers partagés" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Fenêtre des Fichiers Partagés" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Messages" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Fenêtre des Messages" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistiques" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Fenêtre des Statistiques" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Préférences" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Fenêtre des Préférences" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importer" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "L'outil d'importation de fichier .part" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "À propos" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "À propos/Aide" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Réseau eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Réseau Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Pas de réseau" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "Contrôle à distance d'aMule" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Erreur Fatale : Échec de la création du minuteur noyau" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Connexion distante à aMule" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Erreur Fatale : Échec de la création du minuteur d'interrogation" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Départ vers la boucle d'événement…" #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Connexion…" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "La connexion a échouée " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Gestionnaire d'événement GUI EC distant" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Descendant" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Connexion échoué. Impossible de se connecter à %s : %d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Connexion fermée - aMule s'est probablement arrêté." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Prêt" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Tous" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Impossible de créer le répertoire '%s' pour la catégorie '%s', on garde le " "répertoire '%s'." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Inconnu" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Échec de la réception des fichiers partagés de l'utilisateur '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Recherche d'un pote pour une connexion lowid" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Fausse version d'eMule %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Faux eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Faux eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basé sur eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Pseudo : %s ID : %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Demandé : %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statistiques des fichiers pour cette session : %d requête acceptée sur %d, %" "s transférés\n" msgstr[1] "" "Statistiques des fichiers pour cette session : %d requêtes acceptées sur %d, " "%s transférées\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statistiques des fichiers pour toutes les sessions : %d requête acceptée sur " "%d, %s transférés\n" msgstr[1] "" "Statistiques des fichiers pour toutes les sessions : %d requêtes acceptées " "sur %d, %s transférées\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Fichier demandé inconnu" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Message filtré de '%s' (IP : %s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nouveau message de '%s' (IP : %s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "L'utilisateur %s (%u) a demandé votre liste de fichier partagés pour le " "répertoire inexistant '%s' -> ignoré" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "AVERTISSEMENT : %s n'a pas pu être ouvert." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "AVERTISSEMENT : Annulation de la liste des fichiers corrompus, elle contient " "des entêtes invalides." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "Erreur d'E/S lors de la lecture du fichier %s : %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Erreur lors de la sauvegarde du fichier %s : %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Entrer le Captcha" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Catégorie" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nouvelle Catégorie" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Choisissez un répertoire pour les fichiers entrants" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Vous devez indiquer un nom pour cette catégorie !" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Vous devez indiquer un chemin pour cette catégorie !" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Échec de la création du répertoire de réception pour cette catégorie. " "Veuillez indiquer un chemin valide !" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Début de la session de chat : %s (%s : %u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Connecté au Client ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Connexion au Client ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Échec de la connexion au client / Connexion perdue ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" "*** Vous avez passé la vérification captcha et l'utilisateur a reçu votre " "message. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Votre réponse captcha était fausse et votre message a été ignoré. Vous " "pouvez demander un nouveau captcha par l'envoi d'un nouveau message. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Discussion" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Fermer l'onglet" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Fermer tous les onglets" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Fermer les autres onglets" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Ajouter aux amis" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Fichier de Crédits chargé, il y a %u client connu" msgstr[1] "Fichier de Crédits chargé, il y a %u clients connus" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Crédits expirés pour %u client !" msgstr[1] " - Crédits expirés pour %u clients !" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Pas de fichier 'cryptkey.dat' trouvé, création." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Détails du client" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Activé" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Supporté" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Non supporté" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Désactivé" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Connecté" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Déconnecté" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f Ko/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Incomplet" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Mauvais garçon" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Vérification - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Non disponible" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "L'utilisateur %s (%u) a demandé votre liste de fichier partagés -> Accepté" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "L'utilisateur %s (%u) a demandé votre liste de fichier partagés -> Refusé" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "L'utilisateur %s (%u) a demandé votre liste de dossiers partagés -> Accepté" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "L'utilisateur %s (%u) a demandé votre liste de dossiers partagés -> Refusé" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "L'utilisateur %s (%u) a demandé votre liste de fichier partagés pour le " "répertoire '%s' -> accepté" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "L'utilisateur %s (%u) a demandé votre liste de fichier partagés pour le " "répertoire '%s' -> refusé" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "L'utilisateur %s (%u) partage le répertoire '%s'" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" "L'utilisateur %s (%u) a envoyé une liste de fichier partagés non demandée." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "L'utilisateur %s (%u) a envoyé la liste des fichiers partagés pour le " "répertoire '%s'" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" "L'utilisateur %s (%u) a terminé d'envoyer la liste liste des fichiers " "partagés" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" "L'utilisateur %s (%u) a envoyé une liste de fichier partagés non voulue" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "L'utilisateur %s (%u) a refusé l'accès à la liste des répertoires/fichiers " "partagés" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Commentaires sur le fichier" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Nom d'utilisateur" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Nom du fichier" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Évaluation" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Commentaire" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Pas de commentaire" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u commentaire" msgstr[1] "%u commentaires" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Clients bannis %s pour l'envoi %s de données corrompues de %s total pour le " "fichier '%s'" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Basse]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [Normale]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Haute]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Très basse" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Basse" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normale" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Haute" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Très haute" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Release" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Demande en cours" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Connexion via le serveur" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "File d'attente pleine" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "En attente" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "En téléchargement" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Réception hashset" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Parties inutiles" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Connexion impossible entre deux LowID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Trop de connexions" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Connexion par Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Trop de connexions Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Banni" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Erreur de Connexion" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "File d'attente distante pleine" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Ancien MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Nouvel MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "Compatible eMule" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Serveur Local" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Serveur Distant" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Échange de Sources" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passif" #: src/DataToText.cpp:133 msgid "Link" msgstr "Lien" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Source Seeds" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Résultat de la recherche" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Terminé" #: src/DataToText.cpp:146 msgid "In progress" msgstr "En cours" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "ERREUR : Plus d'espace disque" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "ERREUR : Partmet non trouvé" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ERREUR : Erreur E/S !" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ERREUR : Échec !" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "Mis en file d'attente" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Déjà en téléchargement" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Format de fichier temp inconnu ou mauvais." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Partie" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Taille" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Reçu" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Vitesse" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Progression" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Sources" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Priorité" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Statut" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Temps restant" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Vu complet pour la dernière fois" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Dernière réception" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Êtes-vous sûr de vouloir supprimer le fichier sélectionné ?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Êtes-vous sûr de vouloir supprimer les fichiers sélectionnés ?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Retour de : %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Stop" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pause" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Reprise" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "E&ffacer terminés" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Mettre tous les A4AF sur ce fichier immédiatement" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Mettre tous les A4AF sur ce fichier (Auto)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Mettre tous les A4AF sur n'importe quel autre fichier immédiatement" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Options avancées" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Prévisualisation" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Afficher les &Détails" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Afficher tous les commentaires" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Copier le lien magnétique dans le presse-papiers" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Copier le &lien eD2k dans le presse-papiers" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Copier le rapport dans le presse-papiers" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "Dissocier" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Associer à une catégorie" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Ouvrir le fichier" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Entrez un nouveau nom pour ce fichier :" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Renommer" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H : %M : %S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Téléchargements (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Pour éviter que cet avertissement apparaisse avec chaque prévisualisation,\n" "indiquez votre lecteur vidéo préféré dans les préférences (mplayer par " "défaut)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Aperçu" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" "ERREUR : Échec de l'exécution du lecteur multimédia externe ! Commande : '%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Enregistrement du fichier .part %u sur %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Tous les fichiers .part ont été enregistrés." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Chargement des fichiers temporaires depuis %s." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Chargement du fichier .part %u sur %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "ERREUR : Échec du chargement du fichier de récupération. Recherchez une " "solution de récupération du .part.met sur http://forum.amule.org." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Tous les fichiers .part ont été chargés." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Pas de fichiers .part trouvés" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "%u fichier .part trouvé" msgstr[1] "%u fichiers .part trouvés" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "Le système de fichiers pour le répertoire Temp ne peut pas traiter des " "grands fichiers." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "Le système de fichiers pour le répertoire Incoming ne peut pas traiter des " "grands fichiers." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Téléchargement de %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Vous êtes déjà en train de télécharger le fichier '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Vous avez déjà le fichier '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Vous êtes déjà en train de télécharger le fichier %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Impossible de convertir le lien magnétique en eD2k : %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Protocole de lien inconnu : %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Lien eD2k invalide ! ERREUR : %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Le client a envoyé un paquet après l'échec d'authentification." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Connexion externe fermée." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "" "Les connexions externes sont désactivées car le mot de passe est vide !" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "" "Les connexions externes sont désactivées dans le fichier de configuration" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Nouvelle connexion externe acceptée" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "ERREUR : impossible d'accepter une nouvelle connexion externe" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Connexion externe refusée car le mot de passe est vide dans les préférences !" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Connexion au client : %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Version inconnue" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "ID de version de EC incorrecte, Il peut y avoir des incompatibilités entre " "les binaires. Utilisez un noyau et un client distant de la même version." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Vous ne pouvez pas connecter une version stable depuis une version de " "développement! *pfff* un crash potentiel a été évité" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Version du protocole invalide." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "L'étiquette de la version du protocole est manquante." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" "Authentification échoué : hachage spécifié comme mot de passe invalide." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Authentification échoué : mot de passe erroné." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Authentification échoué : mot de passe manquant." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Requête invalide, veuillez vous authentifier d'abord." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Accès autorisé." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Envoi du message d'erreur \"%s\" au client." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Tentative d'accès non autorisé de %s. Connexion fermée." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "Échec de la commande du fichier .part à distance : Hachage du fichier non " "trouvé : %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Hachage du fichier non trouvé : %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "ARGH ! Erreur de traitement de l'OpCode !" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Serveur non ajouté" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "serveur non trouvé : %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "il faut définir le serveur à supprimer" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k est désactivé dans les préférences" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Recherche en cours. Résultats dans un moment !" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Une recherche Web par une interface distante n'a aucun sens." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Pas de points pour le graphique." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Votre client n'est pas configuré pour ce niveau de détails." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Connexion externe : fermeture demandée" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Arrêt déjà en cours." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "ConnExt : ajout du lien '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Lien invalide ou déjà dans la liste." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Fichier non trouvé." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Nom de fichier invalide." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Impossible de renommer le fichier." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad est désactivé dans les préférences." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Déjà connecté à eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Connexion à eD2k…" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Déjà connecté à Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Connexion à Kad…" #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Tout les réseaux sont désactivés." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Déconnecté de eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Déconnecté de Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Connexion externe : opcode reçu invalide : %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "opcode invalide (mauvaise version de protocole ? )" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Extension '%s' inconnue pour la commande '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Commande '%s' inconnue\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Cette commande ne prend pas d'argument.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Cette commande nécessite un argument.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Cette commande est incomplète, vous devez utilisez une des extensions ci-" "dessous.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Extensions disponibles :\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Commandes disponibles :\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Toutes les commandes sont insensibles à la casse.\n" "Tapez '%s ' pour avoir des informations détaillées sur .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Quitte l'application." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Montrer l'aide." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Pour avoir de l'aide sur une commande, tapez 'help '.\n" "Pour avoir la liste complète des commandes, tapez 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Utilisez '%s' pour la liste des commandes\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Erreur de syntaxe !" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Erreur durant le traitement de la commande - Cela ne devrait jamais " "arriver ! Rapportez le bogue, s'il vous plaît\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Cette commande ne devrait pas avoir de paramètres." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Cette commande nécessite un paramètre." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Argument invalide." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Cette commande est incomplète." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Tapez '%s' pour avoir plus d'aide.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "C'est %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "C'est %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Création du client en cours…\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, fin de %s…\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Connexion impossible sans mot de passe.\n" "Vous devez spécifier un mot de passe, soit dans le fichier de configuration, " "soit sur la ligne de commande ; ou l'entrer lorsque l'on vous le demande.\n" "\n" "Fin d'exécution…\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Montre ce texte d'aide." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Hôte où aMule tourne. (défaut : localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Port d'aMule pour les connexions externes. (défaut : 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Mot de passe pour les connexions externes." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Configuration lue depuis le fichier." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Ne pas afficher de sortie sur stdout." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Mode bavard - montre aussi les messages de débogage." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Change la localisation du programme (langue)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "" "Écrit les options de la ligne de commande dans le fichier de configuration." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" "Créé le fichier de configuration à partir du fichier de configuration " "d'aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Affiche la version du programme." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Détails du fichier" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "%.1f%% fait" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f Ko/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "Échec de l'ouverture du fichier de la liste d'amis 'emfriends.met' pour la " "lecture !" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "Échec de l'ouverture du fichier de la liste d'amis 'emfriends.met' pour " "l'écriture !" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "CRITIQUE - Pas de client dans StartChatSession" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Amis" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Afficher les &Détails" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Ajouter un ami" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Supprimer l'Ami" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Envoyer un &Message" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Voir les fichiers" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Établissement d'un Slot Ami" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Êtes-vous sûr de vouloir supprimer l'ami sélectionné ?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Êtes-vous sûr de vouloir supprimer les amis sélectionnés ?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Vous n'êtes pas autorisé à établir plus d'un slot ami.\n" " Seul un slot a été attribué." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Sélection multiple" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Envoyer un message à l'utilisateur" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Message à envoyer :" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Supprimer des amis" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Envoyer un message" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Échanger vers ce fichier" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "En attente : %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Demander un autre fichier" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Attente d'un slot d'émission" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "En attente : %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Émission en cours" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Aucun" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Non" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Oui" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Téléchargement…" #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "Téléchargement HTTP annulé" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "" "Impossible de créer le fichier de destination %s pour le téléchargement!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "L'URL de téléchargement ne peut pas être vide" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "L'URL %s retourne : %i - Erreur (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Erreur critique lors de l'écriture du fichier téléchargé" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "%d octets téléchargés" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "%d octets attendus, mais %d octets téléchargés" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "URL invalide pour le téléchargement HTTP ou la redirection HTTP (avez-vous " "oublié 'http://' ?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "impossible de se connecter au serveur de téléchargement HTTP" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Réponse invalide du serveur de téléchargement HTTP" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Télécharger un nouveau fichier GeoIP.dat à partir de %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Échec du téléchargement du fichier GeoIP.dat, mise à jour annulée." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Impossible de supprimer le fichier %s, abandon de la mise à jour." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Impossible de renommer le fichier %s, abandon de la mise à jour." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "Mise à jour réussite de %s" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Erreur lors de la mise à jour de GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Échec du téléchargement %s de %s" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "Échec du chargement des données des pays pour '%s'." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Chargements des filtres IP 'ipfilter.dat' et 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "Échec du chargement de fichier ipfilter.dat '%s', format inconnu." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Échec du chargement de fichier ipfilter.dat '%s', ne peut pas ouvrir le " "fichier." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "%u rang d'IP chargé depuis '%s'. " msgstr[1] "%u rangs d'IP chargés depuis '%s'. " #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u ligne mal-formée a été mise de coté." msgstr[1] "%u lignes mal-formées ont été mises de coté." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" "Impossible de renommer le nouveau fichier %s, abandon de la mise à jour." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "IP filter est prêt" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Amorçage depuis\n" "les clients connus" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nœuds (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "IP invalide pour l'amorçage" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Port invalide pour l'amorçage" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Veuillez remplir tous les champs requis" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Êtes-vous sûr de vouloir télécharger un nouveau fichier nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Le faire supprimera les nœuds actuels et redémarrera la connexion à Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Continuer ?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia : le mot recherché est trop court" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Mot clé de recherche : %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" "Kademlia : le mot-clé de la recherche est toujours dans la liste de " "recherche :" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "Impossible de lire le fichier nodes.dat - trop vieux. Cette version (0) " "n'est plus supporté." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "%u contact Kad lu" msgstr[1] "%u contacts Kad lus" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "Aucun contacts trouvé, veuillez lancer l'amorçage, ou télécharger un fichier " "nodes.dat." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Seulement %d contact Kad disponible, nodes.dat non écrit" msgstr[1] "Seulement %d contacts Kad disponible, nodes.dat non écrit" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "%d contact Kad écrit" msgstr[1] "%d contacts Kad écrits" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Nom de fichier" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Taille du fichier" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Ratio de partage" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Émis" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Demandé" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Accepté" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Sources complètes" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "AVERTISSEMENT : La liste de fichiers connus est corrompue, elle contient des " "entêtes invalides." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Échec du chargement de l'entrée dans la liste des fichiers connus, le " "fichier est peut être corrompu" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Entrée invalide dans la liste des fichiers connus, le fichier est peut être " "corrompu :" #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Erreur inconnue %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "Impossible d'obtenir la description d'erreur pour l'erreur %d" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Hachage" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Finalisation" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Terminé" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "En pause" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Erroné" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "En attente" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Vous devez entrer un mot de passe non vide." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Mot de passe invalide, ce n'est pas un hachage MD5 !" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Erreur de connexion" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "La connexion EC a échoué. Réponse vide." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "Connexion externe : Mauvaise réponse, échange raté. Connexion fermée." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Succès ! Connexion établie à aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Succès ! Connexion établie." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Connexion externe : Accès refusé car :" #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Connexion externe : Échange raté." #: src/LibSocketAsio.cpp:1260 #, c-format msgid "Asio thread %d started" msgstr "Processus ASIO %d démarré" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket : OK." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "ERREUR : Le port TCP n'a pas pu être mis en écoute." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "ERREUR : " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "AVERTISSEMENT : " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Fermer" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Couper" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Copier" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Coller" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Effacer" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Tout sélectionner" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "Ko/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Pas de limite" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Menu aMule" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Limites de vitesse :" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "Émission : Aucune" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "Émission : %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "Réception : Aucune" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "Réception : %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Vitesse de téléchargement : %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Vitesse d'émission : %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Informations Client" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Pseudo : %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Aucun pseudo sélectionné !" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID Client : " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Non connecté" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Nom du serveur : " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP du serveur : " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Non connecté" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP : %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "Port TCP : %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Port TCP : Non prêt" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "Port UDP : %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "Port UDP : Non prêt" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Signature En Ligne : Activée" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Signature En Ligne : Désactivée" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Temps de fonctionnement : %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Fichiers partagés : %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Clients en attente : %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Reçu au total : %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Émis au total : %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Limite d'émission" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Limite de téléchargement" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Cacher aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Afficher aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Quitter" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "Lien eD2k :" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Envoyer" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Cliquez ici pour ajouter le lien eD2k dans le contrôle de texte à votre file " "de téléchargement." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Les événements sont affichés ici. Pour une liste complète des évènements, " "reportez-vous à la fenêtre journal de l'onglet Serveur." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Chargement…" #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Nombre d'utilisateur du serveur auquel vous êtes connecté…" #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Utilisateurs : 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Utilisateurs connectés au serveur actuel et une estimation du nombre total " "d'utilisateurs." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "E : 0.0 | R : 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Taux moyen d'émission et de réception actuelles. S'il est présent, le " "chiffre entre parenthèses indique la surcharge dût à la communication du " "client." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Affiche l'état de connexion et les transferts actifs. Des flèches rouges " "indiquent que vous n'êtes actuellement pas connecté, des flèches jaunes que " "vous êtes en LowID (pare-feu), et des flèches vertes que vous êtes en HighID " "(le type de connexion optimal)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Non connecté…" #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Serveur connecté." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Rechercher" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Nom :" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Type" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Local" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Global" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Hachage du fichier" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Paramètres étendus" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtrage" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Type de fichier" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Tous" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Archives" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Images CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Images" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programmes" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Textes" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Vidéos" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Extension" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Taille Minimum" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Octets" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "Ko" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "Mo" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "Go" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Taille Maximum" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Disponibilité" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filtre :" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filtrer les résultats" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Inverser les résultats" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Masquer les fichiers connus" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Démarrer" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Plus" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Recherche plus de résultats sur eD2k. Toujours non supporté par Kad." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Arrêter" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Réception" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Réinitialiser les Champs" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Résultats" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Effacer les téléchargements terminés" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Sources du fichier :" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Général" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Nom complet :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "Fichier .met :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hachage :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Taille du fichier :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Statut du fichier .part :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Vu complet pour la dernière fois :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Transfert" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Sources trouvées :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Sources en transfert :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Nombre de fichier .part :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Disponibles :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Taux de transfert :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Temps de téléchargement actif : " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Transféré :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Taille reçue :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Gestion Intelligente de la Corruption (I.C.H.)" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Perdus par corruption :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Gagné avec la compression :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Paquets sauvés par l'I.C.H :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Noms des fichiers" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Récupérer le nom" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Nettoyage" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Appliquer" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "OK" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" "Commenter/Noter le fichier (Ce texte sera visible par tout les utilisateurs)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Pour un film vous pouvez indiquer sa durée, l'histoire, la langue…\\n\\net " "s'il s'agit d'un faux, vous pouvez prévenir les autres utilisateurs d'aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Qualité du fichier" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Non évalué" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Invalide / Corrompu / Contrefaçon" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Mauvais" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Assez bon" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Bon" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Excellent" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Choisissez une évaluation pour le fichier ou avertissez les autres " "utilisateurs qu'il est invalide…" #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Rafraîchir" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "En téléchargement, veuillez patienter…" #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Taille inconnue" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Informations Requises" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Adresse IP :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Renseignements complémentaires" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Nom d'utilisateur :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Hachage de l'utilisateur :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Ajouter" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Vitesse de réception" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Actuelle" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Moyenne totale" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Moyenne de la session" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Vitesse d'émission" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Connexions" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Téléchargements actifs" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Connexions actives (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Envois actifs" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Statistiques" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Nom d'utilisateur :" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Hachage de l'utilisateur :" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Logiciel client :" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Version du client :" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Adresse IP :" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID Utilisateur :" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP du serveur :" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Nom du serveur :" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Obfuscation :" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad :" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Transferts avec le client" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Requête actuelle :" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Vitesse moyenne d'émission :" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Vitesse moyenne de réception :" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Envoyé (session) :" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Reçu (session) :" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Envoyé (total) :" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Reçu (total) :" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Scores" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Modificateur R/E :" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Identification sécurisée :" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Rang dans la file d'attente :" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Score de la file d'attente :" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Pseudo" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - La Mule multiplateforme" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" "Ceci est le nom que verront les autres utilisateurs lorsqu'ils se " "connecteront à vous." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Langue : " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Délai avant l'apparition des infobulles." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Ceci spécifie la langue utilisée dans les commandes." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Vérifier les nouvelles versions au démarrage" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Si vous activer ceci, aMule vérifiera si de nouvelles versions sont " "disponibles au démarrage" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Démarrer minimisé" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Activer ceci minimise immédiatement aMule lors de son lancement." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Confirmation en quittant" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Confirmation de fermeture d'aMule." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "Cacher la fenêtre de l'application lorsque le bouton Fermer est pressé" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Activer l'icône de barre des tâches" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Ceci Active/Désactive l'icône de barre des tâches." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Icône de réduction en zone de notification" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Activer ceci, va minimiser aMule dans la barre d'état système plutôt que " "dans la barre des tâches." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Délai d'affichage des info-bulles :" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "secondes" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Sélection du navigateur" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Indiquez le nom de votre navigateur ici. Laissez ce champ vide pour utiliser " "le navigateur par défaut du système." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Parcourir" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Ouvrir si possible dans un nouvel onglet" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Ouvrir, lorsque c'est possible, la page Web dans un nouvel onglet plutôt que " "dans une nouvelle page" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Lecteur vidéo" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Limites de la bande passante" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Émission" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Attribution de slot" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Ports" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Port TCP standard" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Ceci est le port eD2k standard et ne peut pas être activé." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Port UDP pour les requêtes des serveurs (TCP+3) :" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Port UDP étendu (recherche Kad / globale)" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" "Ce port UDP est utilisé pour les requêtes eD2k étendues et pour le réseau Kad" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Activer UPnP pour la redirection de port du routeur" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "Port TCP UPnP (Facultatif) :" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Lier l'adresse locale à une IP (vide pour toutes) :" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Utilisateurs avancés uniquement : Si vous avez plusieurs interfaces réseau, " "entrez l'adresse de l'interface à laquelle aMule doit être lié." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Sources maximales par fichier téléchargé :" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Connexions simultanées maximales :" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Se connecter automatiquement au démarrage" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Reconnecter en cas de déconnexion" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Supprimer les serveurs inactifs après" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "essais" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Mise à jour automatique de la liste des serveurs au démarrage" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Liste" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Mise à jour de la liste des serveurs dès la connexion à un serveur" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Mise à jour de la liste des serveurs dès la connexion d'un client" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Utiliser le système de priorité" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Utiliser la vérification du LowID à la connexion" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Connexion sûre" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Se connecter automatiquement seulement sur les serveurs statiques" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Mettre les serveurs ajoutés manuellement en priorité haute" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Gestion Intelligente de la Corruption (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Activer" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "I.C.H. avancée se fie aux hachages (non recommandé)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Ajouter les fichiers à télécharger en mode Pause" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Ajouter les fichiers à télécharger en priorité automatique" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Essayer de télécharger la première et la dernière partie en premier" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Démarrer le prochain fichier en pause lorsqu'un fichier se termine" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "De la même catégorie" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "Dans l'ordre alphabétique" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Réserver de l'espace disque pour les nouveaux fichiers" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Réserve de l'espace du disque pour les nouveaux fichiers, réduisant ainsi la " "fragmentation" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Stoppe les téléchargements lorsque l'espace disponible est atteint" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" "Sélectionnez ceci si vous souhaitez qu'aMule vérifie votre espace disque" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Entrez ici l'espace disque minimum désiré." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Sauver 10 sources pour les fichiers rares (< 20 sources)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Émission" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Ajouter les nouveaux fichiers partagés en priorité automatique" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Dossier de destination des téléchargements" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Dossier des fichiers de téléchargements temporaires" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Dossiers partagés" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(Clic droit sur l'icône du répertoire pour un partage récursif)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Partager les fichiers cachés" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Graphiques" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Délais de rafraîchissement : 5 s" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Temps pour la courbe de la moyenne : 100 min" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Échelle du graphique des connexions : 100 " #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Échelle des graphiques de réception :" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Échelle des graphiques d'envoi :" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Couleurs : " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Fond" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Quadrillage" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Téléchargement actuel" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Téléchargement moyen total" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Téléchargement moyen sur la session" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Envoi actuel" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Envoi moyen total" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Envoi moyen sur la session" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Connexions actives" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Barre de vitesse dans l'icône de barre des tâches" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Nœuds Kad actuels" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Nœuds Kad total" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Nœuds Kad pour la session" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Sélectionner" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Arbre" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Nombre de versions client affichées (0=illimité)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! AVERTISSEMENT !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Nombre maximum de nouvelles connexions / 5 secs" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Taille du fichier de tampon : 240000 octets" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Taille de la file d'attente d'envoi : 5000 clients" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Intervalle de rafraîchissement de la connexion serveur : Désactivé" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Désactiver la mise en veille programmé de l'ordinateur" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Thème à utiliser :" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Afficher le \"Gestionnaire rapide de lien eD2k \" dans chaque fenêtre." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Afficher des infos supplémentaires sur les onglets des catégories" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "Afficher la version de l'application dans le titre" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Afficher les taux de transfert dans la barre de titre" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Avant le nom de l'application" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Après le nom de l'application" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Afficher la surcharge de la bande passante" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Orientation de la barre d'outils verticale" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Voir les drapeaux des pays pour les clients" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Fichiers à télécharger en file d'attente" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Afficher le pourcentage de progression" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Afficher la bar de progression" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Plat" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Relief" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Triage automatique des fichiers (augmente la charge du CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" "aMule triera automatiquement les colonnes dans votre liste de téléchargements" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Paramètres de Connexion Externe" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Accepter les connexions externes" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP de l'interface d'écoute :" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Entrer ici une adresse IP valide dans le format a.b.c.d pour l'interface " "d'écoute EC. Un champs vide ou 0.0.0.0 signifiera toutes les interfaces." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "Port TCP :" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Activer la redirection de ports en UPnP sur le port EC" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Mot de passe" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Paramètres du serveur Web" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Démarrer le serveur web au démarrage" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Template web" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Mot de passe administrateur" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Activer l'accès utilisateur sans privilèges" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Mot de passe sans privilèges" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Activer la redirection de port UPnP sur le port du serveur web" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Port TCP UPnP du serveur web (Facultatif)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Intervalle de rafraîchissement (en secondes)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Activer la compression Gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "" "Cliquer ici pour appliquer tous les changements effectués dans les " "Préférences." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Annule tous les changements effectués dans les Préférences." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Titre :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Commentaire :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Répertoire entrant :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Changer la priorité des nouveaux fichiers assignés :" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Ne rien changer" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Choisir la couleur pour cette Catégorie (actuellement sélectionnée) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Réinitialiser" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Cliquer ici pour effacer le journal." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" "Cliquer ici pour mettre à jour la liste des serveurs à partir de l'URL…" #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Liste des serveurs" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Entrer l'URL d'un fichier server.met et presser le bouton à gauche pour " "rafraîchir la liste des serveurs connus." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Ajouter un serveur manuellement : Nom" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Entrer ici le nom du nouveau serveur" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP : Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Entrer ici l'adresse IP du serveur, avec le format x.x.x.x." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Entrer ici le port du serveur." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Ajouter manuellement un serveur (remplir les champs à gauche avant)…" #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Journal d'aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Infos Serveur" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Infos ED2K" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Infos Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" "Cliquer sur le bouton pour mettre à jour la liste des nœuds depuis l'URL…" #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nœuds (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Entrer l'URL d'un fichier nodes.dat ici et presser le bouton à gauche pour " "mettre à jour la liste des nœuds connus." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Statistiques des nœuds" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Amorçage" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Nouveau nœud" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP :" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Port :" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Amorçage depuis les clients connus" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Déconnecter Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Utiliser l'Identification Utilisateur Sécurisée (SUI)" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Il est recommandé d'activer cette option. Vous ne recevrez pas de crédits si " "SUI n'est pas activé." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Brouillage de protocole" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Supporter le brouillage de protocole" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Cette option active le brouillage de protocole, cela permet à aMule " "d'accepter les connexions brouillées des autres clients." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Utiliser le brouillage pour les connections sortantes" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Avec cette option, aMule utilise le brouillage de protocole lors des " "connections aux autres clients/serveurs." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Accepter seulement les connections brouillées." #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Avec cette option, aMule n'accepte que les connections brouillées. Vous " "aurez moins de sources, mais tout votre trafic sera brouillé" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Tout le monde" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Personne" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Qui peut voir mes fichiers partagés :" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Indique qui peut voir votre liste de fichiers partagés." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Filtrage des IP" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtrage des clients" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Activer le filtrage des clients selon les IP contenues dans le fichier ~/." "aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtrage des serveurs" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Active le filtrage des serveurs selon les IP contenues dans le fichier ~/." "aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Recharger la liste" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "Recharge la liste des IP à filtrer à partir du fichier ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL :" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Mettre à jour maintenant" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Mise à jour d' IPFilter au démarrage" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Niveau de filtrage :" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Toujours filtrer les IPs LAN" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Prise en charge paranoïaque des IPs qui ne se correspondent pas" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Rejette le paquet si l'IP du client est différente de l'ip d'où le paquet " "est envoyé. A utiliser avec prudence." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Utiliser un ipfilter.dat système si disponible" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "S'il n'y a pas de fichier ipfilter.dat local, autoriser l'utilisation d'un " "fichier ipfilter système." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Activer la Signature En Ligne" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Active l'écriture du fichier de signature en ligne, qui peut-être utilisé " "par des applications extérieurs pour créer des signatures, etc." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Fréquence de mise à jour (Secondes) :" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" "Change la fréquence des mises à jour de la signature en ligne (en secondes)." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Sauver le fichier de signature en ligne dans :" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Cliquer ici pour sélectionner le répertoire contenant le fichier de " "signature en ligne." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtrer les messages entrant (sauf la discussion en cours) :" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtrer tous les messages" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtrer les messages des gens qui ne sont pas sur votre liste d'amis" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtrer les messages des clients inconnus" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtrer les messages contenant (utiliser ',' comme séparateur) :" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "ajouter ici les mots qu'aMule doit filtrer : blocage des messages les " "contenant" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Afficher les messages reçus dans le journal" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Commentaires" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtrer les commentaires contenant (utiliser ',' comme séparateur) :" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Connexion automatique au serveur sans proxy" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Activer l'authentification" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Active/Désactive l'authentification par nom d'utilisateur/mot de passe" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Nom d'utilisateur :" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Nom d'utilisateur pour se connecter au proxy" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Mot de passe :" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Mot de passe pour se connecter au proxy" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Activer le Proxy" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Active/Désactive le support proxy" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Type de proxy :" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Hôte du proxy :" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Nom de l'hôte du proxy" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Port du proxy :" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Numéro du port du proxy" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Se connecter à :" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Connexion distante à aMule" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Nom d'utilisateur" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Se rappeler de ces réglages" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Activer l'historique du mode de débogage bavard." #: src/muuli_wdr.cpp:3169 msgid "Only to Logfile" msgstr "Seulement vers le fichier journal" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Catégories des messages :" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "En attente…" #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Ajouter des fichier à importer" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Réessayer avec la sélection" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Supprimer la sélection" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Types d'événements" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Statistiques et clients en attente pour le(s) fichier(s) sélectionné(s) : " "Session / Tous les temps" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Envois Actifs" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Pourcentage du total de fichiers" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Tous les fichiers" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Fichiers sélectionnés" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Envois actifs seulement" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Afficher les clients pour" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Recharger :" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Recharge vos fichiers partagés" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Envoyer" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Envoie le message spécifié." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Ferme cette session de discussion." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Se connecter à n'importe quel serveur et/ou Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Fichiers partagés" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Désactivé [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "octet" msgstr[1] "octets" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "ko" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "To" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "octet/sec" msgstr[1] "octets/sec" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "Mo/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "s" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "min" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "heures" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Jours" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "Tous" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "tous les autres" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Incomplet" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Arrêté" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Vidéo" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Archive" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Texte" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Actif" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Utilisation du répertoire de config : %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Attente de la mort du processus de conversion du fichier .part…" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Importation %s : %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Lecture du répertoire temporaire" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "" "Récupération des informations de base depuis le téléchargement dans un " "fichier" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Création du fichier de destination" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "" "Chargement des données depuis un ancien fichier de téléchargement (%u de %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" "Sauvegarde du bloc de données dans un nouveau fichier de téléchargement " "unique (%u de %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Récupérations des informations du fichier de téléchargement source" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Ajout du téléchargement et sauvegarde du nouveau fichier .part" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importer les fichiers .part" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "État" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Hachage du fichier" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Disque : %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Choisissez un dossier où chercher les téléchargements temporaires ! (les " "sous-dossiers seront inclus)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Voulez-vous que les fichiers sources d'une importation de téléchargement " "réussie soient supprimées ?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Supprimer les sources ?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "Erreur : Impossible de créer le fichier .part" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Tentative de chargement de la sauvegarde du fichier met depuis %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "ERREUR : Échec de l'ouverture du fichier part.met : %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "ERREUR : Le fichier part.met est de taille nulle : %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "ERREUR : Version du fichier part.met invalide: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Erreur : %s (%s) est corrompu (mauvaises étiquettes : %s), impossible de " "charger le fichier." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "ERREUR : %s (%s) est corrompue (tagcount erroné), impossible de charger le " "fichier." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Tentative de récupération des infos du fichier…" #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Récupération du fichier anonyme - Essai de récupération sous le nom " "RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Récupération de toutes les infos du fichier :D - Essayons de les utiliser…" #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Impossible de récupérer les infos du fichier :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Échec de l'ouverture de %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "AVERTISSEMENT : %s a pu être corrompu (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "ERREUR lors de la sauvegarde du fichier .part : %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "Erreur d'E/S lors de la sauvegarde du fichier .part :" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Impossible de récupérer la taille de '%s' - utilisation du fichier %s." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' est apparemment de taille nulle - Utilisation du fichier %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Échec de la sauvegarde du fichier part.met.seeds pour %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "%i source seed sauvegardé pour le fichier .part : %s (%s)" msgstr[1] "%i source seeds sauvegardés pour le fichier .part : %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "%i source seed sauvegardé pour le fichier .part : %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" "Erreur lors de la lecture du fichier seeds du fichier .part (%s - %s) : %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Une partie corrompue trouvée (%d) dans %d parties du fichier %s - " "FileResultHash |%s| FileHash |%s|" msgstr[1] "" "Une partie corrompue trouvée (%d) dans %d partie du .part %s - " "FileResultHash |%s| FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Partie complète (%i) trouvée dans %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Ré-hachage de %s terminé" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Erreur inattendue lors de la finalisation de %s. Fichier mis en pause" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Téléchargement terminé : %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Fichier supprimé : %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "AVERTISSEMENT : Impossible de calculer le hachage de la partie téléchargée. " "Ensemble de hachage incomplet pour '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "ERREUR : Impossible de calculer le hachage de la partie téléchargée - " "Ensemble de hachage incomplet pour (%s). Ceci ne devrait jamais arriver" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "EOF lors du hachage du fichier .part téléchargé %u avec une longueur %u (max " "%u) du fichier .part '%s' avec une longueur %u : %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" "AVERTISSEMENT : Pas assez d'espace disque disponible ! Mise en pause du " "fichier : %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "La partie téléchargée %i est corrompue dans le fichier : %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH : Partie corrompue %i récupérée pour %s -> Octets sauvés : %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "En cours d'allocation" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Espace disque insuffisant" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Téléchargé" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "ERREUR : Impossible d'ouvrir fichier .part : '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Système par défaut" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albanais" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabe" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturien" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Basque" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgare" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Catalan" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Chinois (Simplifié)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Chinois (Traditionnel)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Croate" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Tchèque" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Danois" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Hollandais" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Anglais (U.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estonien" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finlandais" #: src/Preferences.cpp:648 msgid "French" msgstr "Français" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galicien" #: src/Preferences.cpp:650 msgid "German" msgstr "Allemand" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Grec" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hébreux" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Hongrois" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italien" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italien (Suisse)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japonais" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Coréen" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lituanien" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norvégien (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polonais" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugais" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugais (Brésilien)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Roumain" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Russe" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Slovène" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Espagnol" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Suédois" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turque" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ukrainien" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Changer de Langue" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "Il n'y a pas de traductions installés pour aMule" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "Pas de langues disponibles" #: src/Preferences.cpp:906 msgid "no options available" msgstr "pas d'option disponible" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Catégorie invalide trouvée, on passe" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "Le port TCP ne peut pas dépasser 65532 car le socket UDP du serveur sera à " "TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Le port par défaut sera utilisé (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Abandon d'un répertoire partagé inexistant : %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Connexion" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Répertoires" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Serveurs" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Fichiers" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Sécurité" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Interface" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filtres" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Contrôles à distance" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Signature en ligne" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Avancé" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Événements" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Débogage" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "Les variables suivantes seront remplacées : \n" " %PARTFILE - chemin complet vers le fichier\n" " %PARTNAME - nom du fichier seulement" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Ne changez pas ces réglages à moins de savoir\n" "ce que vous faites, vous pourriez facilement\n" "faire empirer les choses.\n" "\n" "aMule fonctionnera bien en ne modifiant pas\n" "ces réglages." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Échec à la connexion de Cfg au widget avec l'ID %d et la clé %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" "Échec du transfert de données depuis Cfg vers le widget avec l'ID %d et la " "clé %s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Type de proxy auquel vous êtes connecté" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" "Échec du transfert de données depuis le widget vers Cfg avec l'ID %d et la " "clé %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule doit être redémarré pour activer ces changements : \n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- Port TCP changé.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- Port UDP changé.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Port de connexion externe changé.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Consentement de connexion externe changé.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Interface de connexion externe changé.\n" #: src/PrefsUnifiedDlg.cpp:619 msgid "- Protocol obfuscation support changed.\n" msgstr "- Support du brouillage de protocole changé.\n" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Votre liste de serveur pour la mise à jour automatique est vide.\n" "'Mise à jour automatique au démarrage de la liste des serveurs' va être " "désactivée." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Vous avez activé les connexions externes mais vous n'avez pas spécifié de " "mot de passe valide.\n" "Les connexions externes ne pourront pas être activées tant qu'un mot de " "passe valide n'est pas spécifié." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Langue changé.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Dossier temporaire changé.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- Réseau ED2K activé.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Les réseaux eD2k et Kad sont désactivés.\n" "Vous ne pourrez pas vous connecter tant que vous n'activerez pas au moins " "l'un des deux." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad ne démarrera pas si votre port UDP est désactivé.\n" "Activez le port UDP ou désactivez Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Vous DEVEZ redémarrer aMule maintenant.\n" "Si vous ne le faites pas, ne vous plaignez pas si des bogues surviennent.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Votre liste de mise à jour auto des serveurs est vide.\n" "Entrez s'il vous plaît au moins une URL qui pointe sur un fichier server.met " "valide.\n" "Cliquez sur le bouton \"Liste\" à coté de cette case pour entrer une URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Fichiers temporaires" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Fichiers réceptionnés" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Signatures En Ligne" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Choisir un dossier pour %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Chercher un lecteur vidéo" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Choisir un navigateur" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Exécutable%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Éditer la liste des serveurs" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Ajoutez ci-dessous des URL pour télécharger des fichiers server.met.\n" "Seulement une URL par ligne." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Délais de rafraîchissement : %d seconde" msgstr[1] "Délais de rafraîchissement : %d secondes" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Temps pour le graphe des moyennes : %d minute" msgstr[1] "Temps pour le graphe des moyennes : %d minutes" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Échelle du graphique des connexions : %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Taille du tampon de fichiers : %d octet" msgstr[1] "Taille du tampon de fichiers : %d octets" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Taille de la fille d'attente d'émission : %d client" msgstr[1] "Taille de la fille d'attente d'émission : %d clients" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Intervalle de rafraîchissement de la connexion serveur : %d minute" msgstr[1] "Intervalle de rafraîchissement de la connexion serveur : %d minutes" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Intervalle de rafraîchissement de la connexion serveur : Désactivé" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "désactivé" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Exécuter la commande lors de l'événement '%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Activer l'exécution de la commande sur le noyau" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Commande du noyau :" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Activer l'exécution de la commande sur l'interface graphique" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Commande de l'interface graphique :" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Les variables suivantes seront remplacées :" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "La taille minimum doit être inférieur à la taille maximum. Taille maximum " "ignorée." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Avertissement dans la recherche" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Principal" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Une recherche Kad ne peut pas être faite si Kad n'est pas lancé" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "La recherche eD2k ne peut être établie si eD2k n'est pas connecté" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Erreur imprévue lors de la tentative de recherche Kad : " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ID du fichier" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Fichier" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Télécharger dans la catégorie" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "Obtenir %s pour ce fichier" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Chercher les fichiers liés (eD2k, serveur local)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Marquer comme fichier connu" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Copier le lien eD2k dans le presse-papiers" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Annulé" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Nouveau" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Échec de la connexion aux serveurs brouillés listés. Nouvel essai sans " "brouillage." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Échec de la connexion aux serveurs listés. Nouvel essai." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Le réseau e2Dk est désactivé dans les préférences, pas de connexion." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" "Aucun serveur valide auquel se connecter n'a été trouvé dans la liste des " "serveurs" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Connecté à %s (%s : %i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Connexion établie sur : %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Erreur fatale lors de la tentative de connexion. La connexion Internet est " "probablement coupée" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Connexion à %s (%s : %i) perdue" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s : %i) semble être indisponible." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s : %i) semble être plein." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "" "Nouvelle tentative de connexion automatique au serveur dans %d seconde" msgstr[1] "" "Nouvelle tentative de connexion automatique au serveur dans %d secondes" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Connexion perdue" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Échec de la connexion à %s (%s : %i)." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "ERREUR : Socket invalide lors de la vérification du délai" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Délai d'attente de la connexion à %s (%s : %i) dépassé." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Réception d'un résultat DNS en retard, on jette." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Chargement du fichier server.met : %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Le fichier server.net est introuvable !" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "Échec du chargement de fichier server.met '%s', format inconnu." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Échec de l'ouverture du fichier server.met !" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Le fichier server.met est corrompu, une étiquette invalide de version " "invalide à été trouvé : 0x%x, taille %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i serveur trouvé dans server.met" msgstr[1] "%i serveurs trouvés dans server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d serveur ajouté" msgstr[1] "%d serveurs ajoutés" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Erreur : le fichier 'server.met' est corrompu :" #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "Erreur d'E/S lors de la lecture de 'server.met' :" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Serveur non ajouté : [%s : %d] n'a pas un port valide." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Serveur non ajouté : l'IP de [%s : %d] a été filtrée ou est invalide." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Serveur non ajouté : un serveur avec une IP : Port [%s : %d] correspondant a " "été trouvée dans la liste." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Serveur ajouté : serveur à [%s : %d] utilisant le nom '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Vous êtes connecté au serveur que vous tentez de supprimer. Déconnectez-vous " "d'abord s'il vous plaît." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Échec de l'ouverture de '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Échec de l'enregistrement de server.met !" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "URL invalide" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Téléchargement terminé de la liste de serveur depuis %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Aucune entrée trouvée d'adresses de liste de serveurs dans 'addresses.dat'. " "Veuillez coller une liste de serveurs valide dans ce fichier afin de mettre " "à jour automatiquement votre liste de serveurs." #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Démarre le téléchargement de la liste de serveur depuis %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "AVERTISSEMENT : URL invalide indiquée pour la mise à jour automatique des " "serveurs : %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "Pas d'URL valide pour la mise à jour automatique des serveurs dans adresses." "dat " #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Échec du téléchargement de la liste des serveurs depuis %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Le serveur local est filtré par les filtres IP, reconnexion à un autre " "serveur !" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Nom du serveur" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Adresse" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Description" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Temps de réponse" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Utilisateurs" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Statique" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Version" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Vous êtes connecté au serveur que vous tentez de supprimer. Déconnectez-vous " "d'abord s'il vous plaît . Le serveur n'a PAS été supprimé." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Nom inconnu)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Êtes-vous sûr de vouloir supprimer le serveur statique %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Serveurs (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Serveur" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Connexion au serveur" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Marquer le serveur comme statique" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Marquer le serveur comme non statique" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Marquer les serveurs comme statiques" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Marquer les serveurs comme non statiques" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Supprimer le serveur" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Supprimer les serveurs" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Supprimer tous les serveurs" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Copier les liens eD2k dans le presse-papiers" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Reconnexion au serveur" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Êtes-vous sûr de vouloir supprimer tout les serveurs ?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Êtes-vous sûr de vouloir supprimer le serveur sélectionné ?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Êtes-vous sûr de vouloir supprimer les serveurs sélectionnés ?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "ERREUR : %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "AVERTISSEMENT : %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Nouvel ID client : %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "AVERTISSEMENT : Vous avez reçu un Low-ID !" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" "\tLa raison la plus probable est que vous êtes derrière un pare-feu ou un " "router." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPour plus d'informations, consultez http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Info serveur inconnue reçue ! - trop court" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "%d nouveau serveur reçu" msgstr[1] "%d nouveaux serveurs reçus" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Sauvegarde de la liste des serveurs terminée." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Le serveur a rejeté la dernière commande" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Faux paquet reçu depuis le serveur : %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "" "Erreur non-prise en compte lors du traitement du paquet reçu du serveur : %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" "Ne peut créer de processus pour la résolution DNS pour se connecter à %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "L'IP du serveur %s (%s) est filtrée. Pas de connexion." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "utilisation du brouillage de protocole" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Connexion à %s (%s - %s : %i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" "Ne peut résoudre le nom DNS pour le serveur %s : Impossible de se connecter !" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Serveur non ajouté : Pas d'IP ni de nom d'hôte donné." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Serveur non ajouté : Port du serveur invalide." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Statut eD2k :" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Statut de Kademlia :" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "Exécution en mode LAN" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "En marche" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Statut :" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "État de la connexion :" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" "Derrière un pare-feu - Ouvrez le port TCP %d sur votre routeur ou pare-feu" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "État de la connexion UDP :" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" "Derrière un pare-feu - Ouvrez le port UDP %d sur votre routeur ou pare-feu" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "État du pare-feu : " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Pas de pote requis - port TCP ouvert" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Pas de pote requis - port UDP ouvert" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Pas de pote" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Connexion au pote" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Connecté au pote à %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Sources indexées :" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Mots clés indexés :" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Notes indexées :" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Charge indexée :" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Nombre moyen d'utilisateurs :" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Nombre moyen de fichiers :" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "À l'arrêt" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Ajout du fichier %s aux partages" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "%i fichier partagé connu trouvé" msgstr[1] "%i fichiers partagés connus trouvés" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "%i fichier partagé connu trouvé, %i inconnu" msgstr[1] "%i fichiers partagés connus trouvés, %i inconnus" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "ERREUR : Tentative de partage %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Répertoire partagé non trouvé, on passe : %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Aucun fichier partageable trouvé dans le répertoire : %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Nom d'Utilisateur" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Vitesse de Réception" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Vitesse d'Émission" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Parties Disponibles" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "État de l'émission" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "État de la réception" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Origine" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Nom du fichier local" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "Partage de la liste des fichiers" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Demandes" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Demandes acceptées" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Données transférées" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Taux de partage" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Parties obtenues" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Sources complètes" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Chemin du répertoire" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Ajouter un Commentaire/Note" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Éditer un Commentaire/Note" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Renommer" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Ajouter des fichiers de la collection à la liste de transferts" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Copier le &lien magnétique dans le presse-papiers" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Copier le lien eD2k dans le presse-papiers (&Source)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" "Copier le lien eD2k dans le presse-papiers (Source) (Avec &options de " "chiffrage)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Copier le lien eD2k dans le presse-papiers (Nom d'&hôte)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Copier le lien eD2k dans le presse-papiers (Nom d'hôte) (Avec options de " "&chiffrage)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Copier le lien eD2k dans le presse-papiers (Info &AICH)" #: src/SharedFilesCtrl.cpp:170 msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Copier le lien eD2k dans le presse-papiers (Info &AICH + Source)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Vous devez être en HighID pour créer un lien valide" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Fichiers partagés (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Fichier .part]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Nom du fichier à distance" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Données Émises (Session (Total)) : %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Surcharge Totale (Paquets) : %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Surcharge Requête Fichier (Paquets) : %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Surcharge Échange de Source (Paquets) : %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Surcharge Serveur (Paquets) : %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Surcharge Kad (Paquets) : %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Surcharge Crypt (UDP) : %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Envois Actifs : %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Envois en Attente : %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Sessions d'envois réussies au total : %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Sessions d'envois qui ont échouées au total : %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Temps d'envois moyen : %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Données Reçues (Session (Total)) : %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Sources Trouvées : %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Téléchargements Actifs (parties) : %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Rapport UL : DL pour la Session (Total) : %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Vitesse moyenne de réception (Session) : %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Vitesse moyenne d'envoi (Session) : %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Vitesse maximale de réception (Session) : %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Vitesse maximale d'émission (Session) : %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Reconnexions : %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Temps depuis le premier transfert : %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Connecté au serveur depuis : %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Connexions actives (estimation) : %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Limite max de connexion atteinte : %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Moyenne de connexions (estimation) : %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Pics de connexions (estimation) : %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Clients" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Inconnu : %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Filtré : %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Banni : %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Total : %i Connus : %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Serveurs en fonctionnement : %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Serveurs non-connectés : %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Total : %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Serveurs supprimés : %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Serveurs filtrés : %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Utilisateurs sur les serveurs en fonctionnement : %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Fichiers sur les serveurs en fonctionnement : %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Total des utilisateurs : %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Total des fichiers : %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Occupation du Serveur : %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Nombre de Fichiers Partagés : %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Taille totale des Fichiers Partagés : %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Taille moyenne des fichiers : %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Système d'Exploitation" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Non reçu" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Connexions actives (1 : %u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Non disponible" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Jamais" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "La commande '%s' avec le PID '%d' s'est terminée avec le code '%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Exécute et quitte." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Format d'IP invalide. utiliser xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Cette commande nécessite un argument. Arguments valides : 'all', nom de " "fichier ou un nombre.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Traitement par hachage :" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Traitement par nom de fichier :" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Cette commande nécessite un argument. Arguments valides : un hachage de " "fichier.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Nombre invalide\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" "Ce n'est pas un hachage valide (la longueur devrait être exactement 32 " "caractères)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Tapez '%s' pour avoir plus d'aide.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Taille du téléchargement : %i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "La requête a échouée avec une erreur inconnue." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "L'opération s'est déroulée avec succès." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "La requête à échouée avec l'erreur suivante : %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Statut du filtrage IP pour les clients : %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "Arrêt" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "Marche" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Le filtrage IP pour les serveurs est %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Le niveau actuel d'IPFilter est %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Limites de la bande passante : E : %u ko/s, R : %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Connecté à %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Connexion en cours" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "derrière un pare-feu" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "OK" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Réception : \t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Émission : \t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Clients dans la file d'attente : \t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Nombre total de sources : \t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Nombres de résultats de la recherche : %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Progrès de la recherche : %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Progrès de la recherche indisponibles" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Réponse inconnue reçue du serveur, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Montrer de courtes informations sur le statut." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" "Montrer le statut de la connexion, vitesses d'émission/réception, etc.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Montrer l'arbre des statistiques complet." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Accessoirement, un nombre entre 0 et 255 peut être passé comme argument à " "cette\n" "commande, ce qui limitera le nombre de réponse par sous-arbre de versions " "des clients\n" "affichés. Passer 0 ou ne rien mettre signifie 'illimité'.\n" "\n" "Exemple: 'statistics 5' montrera seulement les 5 premières versions pour " "chaque type de client.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Fermer aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Arrêter le noyau distant actif (amule/amuled).\n" "Ceci coupera aussi le clien texte, puisqu'il est\n" "inutilisable sans noyau actif.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Recharge l'objet donné." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Recharge la liste des fichiers partagés." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Recharge la table de filtrage d'IP." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Recharge la table actuelle de filtrage d'IP." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Mise à jour de la table de filtrage d'IP depuis l'URL." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Si l'URL est omis l'URL des préférences est utilisé." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Se connecter au réseau." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Ceci va vous connecter à tout les réseaux activés dans les Préférences.\n" "Vous pouvez aussi spécifier une adresse de serveur de la forme IP : Port, " "pour se connecter\n" "seulement à ce serveur. L'IP doit être une IPv4 décimal,\n" "ou un nom DNS pouvant être résolu." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Se connecter à eD2k uniquement." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Se connecter à Kad uniquement." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Se déconnecter du réseau." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" "Ceci vous déconnectera de tous les réseaux auxquels vous êtes actuellement " "connecté.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Se déconnecter de eD2k uniquement." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Se déconnecter de Kad uniquement." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Ajoute un lien eD2k ou magnétique au noyau." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Le lien eD2k à ajouter peut être :\n" "*) un lien fichier (ed2k://|fichier|…), il sera ajouté à la file de " "téléchargement,\n" "*) un lien serveur (ed2k://|serveur|…), il sera ajouté à la liste des " "serveurs,\n" "*) ou un lien de liste de serveurs, dans ce cas tous les serveurs dans la " "liste\n" " seront ajoutés à la liste des serveurs.\n" "\n" "Le lien magnétique devra contenir le hachage eD2k et la taille du fichier.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Définir une valeur de préférence." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Définir les préférences de filtrage d'IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Activer le filtrage IP pour les clients et les serveurs." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Désactiver le filtrage IP pour les clients et les serveurs." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Activer/Désactiver le filtrage IP pour les clients." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Activer le filtrage IP pour les clients." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Désactiver le filtrage IP pour les clients." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Activer/Désactiver le filtrage IP pour les serveurs." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Activer le filtrage IP pour les serveurs." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Désactiver le filtrage IP pour les serveurs." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Choisir le niveau de filtrage IP." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Les niveaux de filtrage valides sont compris entre 0 et 255, la valeur par " "défaut (initiale)\n" "est 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Définir les limites de bande passante." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "La valeur passée à ces commandes doit être en kilo-octets/s.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Définir la limite de bande passante en émission." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "La valeur passée à ces commandes doit être en kilo-octets/s.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Définir la limite de bande passante en réception." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Obtenir et afficher une valeur de préférence." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Obtenir les préférences de filtrage IP." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Obtenir le statut du filtrage d'IP pour les clients et les serveurs." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Obtenir le statut du filtrage d'IP pour les clients seulement." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Obtenir le statut du filtrage d'IP pour les serveurs seulement." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Obtenir le niveau de filtrage IP." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Obtenir les limites de bande passante." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Effectuer une recherche" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Un type de recherche doit être spécifié en donnant le type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Exemple: 'recherche fichier kad' exécutera une recherche kad pour \"fichier" "\".\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Effectuer une recherche globale" #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Effectuer une recherche locale" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Effectuer une recherche Kad" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Montre les résultats de la dernière recherche." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Retourne les résultats de la précédente recherche.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Affiche la progression de la recherche." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Affiche la progression de la recherche.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Démarrer le téléchargement du fichier." #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Le rang du fichier de la dernière recherche doit être donné.\n" "Exemple: 'download 12' va télécharger le douzième fichier de la précédente " "recherche.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Mettre le téléchargement en pause." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Reprendre le téléchargement." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Annuler le téléchargement." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Régler la priorité de téléchargement." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" "Passer la priorité d'un téléchargement en Basse, Normale, Haute, ou Auto.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Passer en priorité basse." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Passer en priorité normale." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Passer en priorité haute." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Passer en priorité auto." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Montrer les files d'attente/listes." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Montrer la file d'attente des envois/réceptions, la liste des serveurs ou la " "liste des fichiers partagés.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Montrer la file d'attente des envois." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Montrer la file d'attente des réceptions." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Montrer le journal." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Montrer la liste des serveurs." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Effacer le journal." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Commande obsolète, utilisez '%s' à la place." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "C'est une commande est obsolète, et pourrait être supprimée dans le futur.\n" "Utilisez '%s' à la place.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "client texte aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Conversion des anciens hashsets AICH en '%s' vers 64b en '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "AVERTISSEMENT : Le nom de fichier '%s' est invalide et a été renommé en '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "AVERTISSEMENT : Le fichier '%s' existe déjà, le nouveau fichier a été " "renommé en '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Êtes-vous sûre de vouloir annuler et supprimer tous les fichiers de cette " "catégorie ?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Confirmation requise" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Seulement 99 catégories sont prises en charge." #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Trop de catégories !" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Tous les autres" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Sélectionner un filtre" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Ajouter une catégorie" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Éditer une catégorie" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Supprimer une catégorie" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Échec dans l'ouverture du fichier (%s), suppression de la liste des fichiers " "partagés." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Requête d'un hashset pour le fichier inconnu : %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Reprise des envois du fichier : %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Pause des envois du fichier : %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Échec de l'exécution de la commande `%s' lors de l'événement `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Téléchargement terminé" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Le chemin complet vers le fichier." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Le nom du fichier sans la partie répertoire." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "Le hachage eD2k du fichier." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "La taille du fichier en octets." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Durée d'activité de téléchargement cumulée." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Nouvelle session de chat démarrée" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Expéditeur du message." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Espace insuffisant" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Partition du disque." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Erreur à la complétion" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Traitement du fichier numéro %u : %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" "Vous avez demandé les hachages partiels (Seulement utilisés pour des " "fichiers dont les tailles sont > 9.5 Mo)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Fichier inexistant !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, le créateur de liens d'aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Bienvenue !" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Paramètres d'entrée" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Fichier à hacher" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Ajouter des URLs optionnelles pour ce fichier" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Indiquez ici le fichier pour qui vous voulez calculer le lien eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Indiquez ici l'URL que vous voulez ajouter au lien eD2k : Ajoutez / à la fin " "pour indiquer à aLinkCreator d'ajouter le nom du fichier actuel" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Enlever" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Créer le lien avec les hachages partiels" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Aide à retrouver les fichiers rares et nouveaux au prix d'un lien de plus " "grande longueur" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Hachage MD4 du fichier" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Hachage eD2k du fichier" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "Lien eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Sauvegarder" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Copier dans le presse-papiers" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Ouvrir" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Ouvrir un fichier pour calculer son lien eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Copie du lien eD2k calculé dans le presse-papiers" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Enregistrer sous" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Conversion du lien eD2k calculé en fichier" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "A propos d'aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Sélectionnez le fichier auquel vous souhaitez calculer le lien eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Impossible d'ouvrir le presse-papiers" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Rien à copier pour l'instant !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Sélectionnez le fichier vers votre lien eD2k calculé" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Impossible d'ouvrir " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Veuillez entrer un nom de fichier non vide" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Rien à sauvegarder pour l'instant !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, le créateur de liens d'aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps de http://www.everaldo.com et http://www.icomania.com\n" "et http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distribué sous licence GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Hachage en cours…" #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator fonctionne pour vous" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Calcul du hachage MD4…" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Calcul des hachages eD2k…" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Annulé !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Effectué en %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Vous avez déjà ajouté cette URL !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Entrez une URL non vide s'il vous plaît" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Impossible d'ouvrir %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "Dépassement de mémoire lors du calcul du hachage eD2k!" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i jour(s) %i heure(s) %i min %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uJ %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f o" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f Ko" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f Mo" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f Go" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f To" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, statistiques en ligne d'aMule" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Vitesse de réception Max atteinte depuis de démarrage de wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "" "Vitesse de réception Max atteinte lors des précédentes exécutions de wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Système" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Arrêter le rafraîchissement automatique" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Sauvegarder l'image des statistiques en ligne" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Imprimer une image des statistiques en ligne" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Préférences" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "À propos de wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Démarrer le rafraîchissement automatique" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Rafraîchissement automatique stoppé" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Rafraîchissement automatique démarré" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Sauvegarder l'image des statistiques en ligne" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Statistiques en ligne d'aMule" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "L'impression a rencontré un problème.\n" "Peut-être votre imprimante n'est-elle pas configurée correctement ?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Impression en cours" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, Statistiques en Ligne d'aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Basé sur CAS de Pedro de Oliveira \n" "\n" "Distribué sous licence GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh Oh, aMule n'est pas lancé…" #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule fonctionne" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule est lancé, mais est déconnecté" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule se connecte…" #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh Oh, l'état d'aMule est inconnu…" #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " tourne depuis " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " est arrêté !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " n'est pas connecté !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " se connecte…" #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " est en train de faire des trucs bizarres, à vérifier !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " est connecté à " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad : " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "éteint" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " est sur " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " avec " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Réception totale : " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Émission : " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Réception durant la session : " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Réception : " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " Ko/s, Émission : " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " Ko/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Partage : " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " fichier(s), clients en attente : " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Temps :" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " sur " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Charge moyenne du système (1-5-15 min) : " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Le système fonctionne depuis : " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Répertoire contenant le fichier amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Entrer ici le répertoire contenant le fichier amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Intervalle de rafraîchissement en secondes" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Générer une image des statistiques en ligne à chaque rafraîchissement" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Entrer ici le répertoire où générer l'image des statistiques en ligne" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "" "Envoi périodique de l'image des statistiques en ligne sur un serveur FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "URL du FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Chemin du FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Entrer ici l'URL du serveur FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Entrer ici le répertoire du serveur FTP où envoyer l'image des statistiques " "en ligne" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Utilisateur" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Entrer ici l'identifiant pour se connecter au serveur FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Entrer ici le mot de passe pour se connecter au serveur FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Intervalle d'envoi de l'image des statistiques en ligne en minutes" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Valider" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Répertoire contenant le fichier de signature" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Répertoire où générer l'image des statistiques en ligne" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Charge le template " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Port HTTP du serveur Web" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Utiliser la redirection de port UPnP sur le port du serveur web" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Port UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Utiliser la compression gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Mot de passe d'accès total pour le serveur web" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Mot de passe invité pour le serveur web" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Autoriser l'accès invité" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Interdire l'accès invité" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" "Charger/sauvegarder les paramètres du serveur web depuis/vers un aMule " "distant" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "" "Chemin du fichier de configuration d'aMule. NE PAS UTILISER DIRECTEMENT !" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Désactiver l'interpréteur PHP (obsolète)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Recompiler les pages PHP à chaque requête" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Serveur Web d'aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "connexion du client web acceptée\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "ERREUR : impossible d'accepter la connexion au client web\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "La requête a échouée avec le message d'erreur suivant: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Fichier d'index non trouvé:" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "La session a expirée - demande de l'identifiant\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Session correcte, identifié\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Session correcte, non identifié\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Pas de session ouverte - l'identifiant va être demandé\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Session crée - demande de l'identifiant\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Requête en cours [originale] : " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Pas de mot de passe indiqué, il ne sera pas possible de se connecter" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Vérification du mot de passe\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Hachage du mot de passe invalide\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Mot de passe correct\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Mauvais mot de passe\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" "Vous n'avez pas entré de mot de passe. Les mots de passe vides ne sont pas " "autorisés.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Déconnexion demandée\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Requête en cours [redirigée] :" #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Le fichier .part %s (%s) n'a pas de fichier seeds" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Le fichier .part %s (%s) a un fichier seeds vide" #~ msgid "Download status" #~ msgstr "État de la réception" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "…" #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Délai de rafraîchissement : %d seconde" #~ msgstr[1] "Délai de rafraîchissement : %d secondes" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "" #~ "Les commentaires et les classements ne sont pas encore supportés sur " #~ "l'IHM distante" #~ msgid "Transferring" #~ msgstr "En téléchargement" #~ msgid "QR: ???" #~ msgstr "QR: ???" #~ msgid "QR: %u" #~ msgstr "QR : %u" #~ msgid "Only files currently uploading" #~ msgstr "Seulement les fichiers en cours d'émission" #~ msgid "Queue Rank" #~ msgstr "Rang dans la file d'attente" #~ msgid "TODO - show progress of a search" #~ msgstr "A FAIRE - montrer la progression d'une recherche" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "" #~ "Démarrage de la création des hachages MD4 et AICH pour le fichier : %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Démarrage de la création du hachage MD4 pour le fichier : %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Démarrage de la création du hachage AICH pour le fichier : %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "AVERTISSEMENT : Suppression du fichier '%s' original après la création de " #~ "la sauvegarde" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "AVERTISSEMENT : Échec de la suppression de %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR : %u)" #~ msgid "Rating (total):" #~ msgstr "Score (total) :" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Essayer de transférer des parties complètes pour tous les envois" #~ msgid "Networks window" #~ msgstr "Fenêtre des Réseaux" #~ msgid "Searches window" #~ msgstr "Fenêtres de recherches" #, fuzzy #~ msgid "Downloads window" #~ msgstr "En téléchargement" #~ msgid "Shared files window" #~ msgstr "Fenêtre des fichiers partagés" #~ msgid "Messages window" #~ msgstr "Fenêtre des messages" #~ msgid "Statistics graph window" #~ msgstr "Fenêtre du graphique des statistiques" #~ msgid "Preferences settings window" #~ msgstr "Fenêtre des paramètres des préférences" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Icône de notification perdue, on essaye de la recréer..." #~ msgid "Transfers" #~ msgstr "Transferts" #~ msgid "Files transfers window" #~ msgstr "Fenêtre de transferts de fichiers" #~ msgid "Unban" #~ msgstr "Débannir" #~ msgid "Show Uploads" #~ msgstr "Afficher les envois" #~ msgid "Show Queue" #~ msgstr "Montrer la file d'attente" #~ msgid "Select View" #~ msgstr "Sélectionner la vue" #~ msgid "Client Software" #~ msgstr "Programme du client" #~ msgid "Waited" #~ msgstr "Attendu" #~ msgid "Upload Time" #~ msgstr "Temps d'émission" #~ msgid "Upload/Download" #~ msgstr "Émission/Réception" #~ msgid "Remote Status" #~ msgstr "État distant" #~ msgid "File Priority" #~ msgstr "Priorité du fichier" #~ msgid "Score" #~ msgstr "Score" #~ msgid "Asked" #~ msgstr "Demandé" #~ msgid "Last Seen" #~ msgstr "Vu pour la dernière fois" #~ msgid "Entered Queue" #~ msgstr "Placé en file d'attente" #~ msgid "Transferred Up" #~ msgstr "Transféré" #~ msgid "Transferred Down" #~ msgstr "Reçus" #~ msgid "Userhash" #~ msgstr "Hachage de l'utilisateur" #~ msgid "Encrypted" #~ msgstr "Chiffré" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "%d images de drapeaux chargées." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Affiche l'émission / la file d'attente d'émission" #~ msgid "Clients on queue :" #~ msgstr "Clients dans la file d'attente :" #~ msgid "Current Session" #~ msgstr "Session courante" #~ msgid "Total" #~ msgstr "Total" #~ msgid "Requested :" #~ msgstr "Demandé :" #~ msgid "Create backup for preview" #~ msgstr "Créer une sauvegarde pour la prévisualisation" #~ msgid "Files Transfers Window" #~ msgstr "Fenêtre des Transferts" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Utilisateurs au total : %s | Fichiers au total : %s" #~ msgid "Download size not received, downloading until connection is closed" #~ msgstr "" #~ "Taille à télécharger non reçue, téléchargement jusqu'à ce que la " #~ "connexion soit fermée" #~ msgid "HTTP download thread ended" #~ msgstr "Processus de téléchargement HTTP terminé" #~ msgid "Host: %s:%i\n" #~ msgstr "Hôte : %s : %i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Réponse : %i (Erreur : %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "AVERTISSEMENT : Réponse vide à la création du flux" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "ERREUR : Code de redirection reçu sans URL" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "" #~ "CIP2Country::CIP2Country(): Impossible de charger les informations de " #~ "pays depuis " #~ msgid "Get IPFilter level." #~ msgstr "Voir le niveau d'IPFilter." #~ msgid "Makes a search." #~ msgstr "Lance une recherche." #~ msgid "Killed!" #~ msgstr "Mis à mort !" #~ msgid "Using amuleweb in '%s'." #~ msgstr "Utilisation de amuleweb dans '%s'" #~ msgid "Shutting down aMule..." #~ msgstr "Fermeture d'aMule..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Les options suivantes ont été changées dans cette version pour des " #~ "raisons de sécurité :\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Activation du brouillage de protocole pour les connections entrantes et " #~ "sortantes.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Désactivation de la mise à jour de la liste de serveurs depuis les " #~ "autres serveurs ou les clients.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Pour plus d'informations sur les raisons de ces changements, cherchez \n" #~ "dans le wiki d'aMule à \"fake servers\" sur http://wiki.amule.org\n" #~ "Il est important que vous enleviez les serveurs 'bidons' de votre liste " #~ "de serveurs pour qu'aMule fonctionne correctement." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "En complément, les paramètres du navigateur ont été réinitialisés aux " #~ "valeurs systèmes par défaut. Veuillez à nouveau indiquer vous options de " #~ "navigateur si besoin.\n" #~ msgid "Fetching status..." #~ msgstr "Récupération du statut…" #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Utilisateurs : E : %s K : %s | Fichiers E : %s K : %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Le client %s sur IP : Port %s : %d utilisant %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgid "Firewalled" #~ msgstr "Derrière un pare-feu" #~ msgid "Download new GeoIP.dat from " #~ msgstr "Télécharger un nouveau GeoIP.dat à partir de " #~ msgid "Failed to download GeoIP.dat from " #~ msgstr "Impossible de télécharger GeoIP.dat à partir de " #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "%d image de drapeau chargée." #~ msgstr[1] "%d images de drapeau chargées." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "" #~ "Le fichier %s est trop gros pour le Donkey : le maximum permis est de 4 " #~ "Go." #~ msgid "User:" #~ msgstr "Utilisateur :" #~ msgid "System:" #~ msgstr "Système :" #~ msgid "No handler for this file type." #~ msgstr "Pas de prise en charge pour ce type d'image." #~ msgid "File was not saved" #~ msgstr "Le fichier n'a pas été sauvegardé" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "" #~ "Échec de la connexion. Impossible de se connecter à l'hôte spécifié\n" #~ msgid " Copyright (C) 2002 Petar Maymounkov \n" #~ msgstr " Copyright (C) 2002 Petar Maymounkov \n" #~ msgid "Message Filter" #~ msgstr "Filtre des messages" #~ msgid "Gui Tweaks" #~ msgstr "Réglages graphiques" #~ msgid "Core Tweaks" #~ msgstr "Tweaks centraux" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Délais d'apparition des info-bulles en secondes" #~ msgid "Show part file number before file name" #~ msgstr "Montrer le numéro du fichier .part avant le nom du fichier." #~ msgid "Skin Support" #~ msgstr "Support des thèmes" #~ msgid "- no skins available -" #~ msgstr "- aucun skin disponible -" #~ msgid "Online Signature Directory:" #~ msgstr "Répertoire du fichier Online Signature :" #~ msgid "Filtering Options:" #~ msgstr "Options de filtrage :" #~ msgid "UDP port for extended server requests (TCP+3):" #~ msgstr "Port UDP pour les requêtes étendues (TCP+3)" #~ msgid "Line Capacities" #~ msgstr "Capacités de la ligne" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Note: ces valeurs sont seulement\n" #~ "utilisées pour les statistiques." #~ msgid "Standard client TCP Port:" #~ msgstr "Port TCP standard du client:" #~ msgid "Extended client UDP Port:" #~ msgstr "Port UDP étendu du client:" #~ msgid "Bind Address" #~ msgstr "Lier l'Adresse" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "Port UDP pour les requêtes serveurs étendues (TCP+3) : 4665" #~ msgid "Max Sources per File" #~ msgstr "Nombre maximum de sources par fichier" #~ msgid "Connection limits" #~ msgstr "Limites de connexion" #~ msgid "Universal Plug and Play" #~ msgstr "Universal Plug and Play" #~ msgid "Enable UPnP" #~ msgstr "Activer l'UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "Port TCP pour l'UPnP:" #~ msgid "Start next paused file when a file completed" #~ msgstr "Démarrer le fichier en Pause suivant quand un se termine" #~ msgid "Check disk space" #~ msgstr "Vérifier l'espace disque" #~ msgid "Min disk space:" #~ msgstr "Espace disque minimum :" #~ msgid "Incoming" #~ msgstr "Entrant" #~ msgid "Temporary" #~ msgstr "Temporaire" #~ msgid "Shared" #~ msgstr "Partagé" #~ msgid "Select Statistics Colors" #~ msgstr "Sélectionner les couleurs des statistiques" #~ msgid "Download Queue Files Progress" #~ msgstr "Progression de la file d'attente des téléchargements" #~ msgid "Show percentage" #~ msgstr "Afficher le pourcentage" #~ msgid "Show progressbar " #~ msgstr "Afficher la barre de progression " #~ msgid "Enable skin support " #~ msgstr "Activer le support des skins." #~ msgid "Skin:" #~ msgstr "Skin:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "" #~ "Trier automatiquement les fichiers dans la file d'attente de " #~ "téléchargements (gourmand en CPU)" #~ msgid "Show Fast eD2k Links Handler" #~ msgstr "Afficher le gestionnaire de liens eD2k rapides" #~ msgid "Web server port" #~ msgstr "Port du serveur Web" #~ msgid "Enable UPnP port forwarding on the web server port" #~ msgstr "Activer le forwarding de port UPnP sur le port du serveur web" #~ msgid "Web server UPnP TCP port" #~ msgstr "Port TCP UPnP du serveur web" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "Adrese IP des interfaces clientes\n" #~ "(vide si aucune)" #~ msgid "TCP port" #~ msgstr "Port TCP" #~ msgid "Who can see shared files:" #~ msgstr "Qui peut voir votre liste de fichiers partagés :" #~ msgid "Event types" #~ msgstr "Types d'évenements" #~ msgid "ERROR: can not accept web client connection\n" #~ msgstr "ERREUR : la connexion du client web ne peut pas être accepté\n" #~ msgid "" #~ "Your Auto-update server list is empty.\n" #~ "'Auto-update server list at startup will be disabled." #~ msgstr "" #~ "Votre liste de serveurs de mise à jour automatique est vide.\n" #~ "'La mise à jour automatique au démarrage de la liste des serveurs sera " #~ "désactivée." #~ msgid "ERROR: Invalid part.met fileversion: %s ==> %s" #~ msgstr "ERREUR : Version du fichier part.met invalide : %s ==> %s" #~ msgid "WARNING: Knownfile list corrupted, contains invalid header." #~ msgstr "" #~ "AVERTISSEMENT : Liste des fichiers connus corrompue, en-tête invalide." #~ msgid "Makes aMule promt before exiting." #~ msgstr "Active la confirmation de sortie d'aMule." #~ msgid "Bandwith limits" #~ msgstr "Limites de bande passante" #~ msgid "This UDP port is used for extended ed2k requests and Kad network" #~ msgstr "" #~ "Ce port UDP sera utilisé pour les demandes étendues des réseaux ed2k et " #~ "Kad" #~ msgid "Show overhead bandwith" #~ msgstr "Montrer la bande passante supplémentaire utilisée" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. actif" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICH fait confiance à tous les Hash (non recommandé)" #~ msgid "Disk space" #~ msgstr "Espace disque" #~ msgid "Create Backup for preview" #~ msgstr "Créer une sauvegarde pour la prévisualisation" #~ msgid "Advanced Settings" #~ msgstr "Paramètres avancés" #~ msgid "Progressbar Style" #~ msgstr "Style de la barre de progression" #~ msgid "Column Sorting" #~ msgstr "Tri des colonnes" #~ msgid "Misc Gui Tweaks" #~ msgstr "Paramètres avancés de l'interface graphique" #~ msgid "File Options" #~ msgstr "Options des fichiers" #~ msgid "Status text" #~ msgstr "Texte de statut" #~ msgid "Pop-up status text" #~ msgstr "Popup d'état" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ "Client p2p 'All-Platform' basé sur eMule \n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr "Site web : http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr "Forum : http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ "FAQ : http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " Contact : admin@amule.org (problèmes administratiFs) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr " Des parties de aMule sont basées sur \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " Copyright (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "Pour un film vous pouvez donner sa durée, son histoire, sa langue...\n" #~ "et si c'est un Fake, vous pouvez le aux autre utilisateurs d'aMule." #~ msgid "Misc Options" #~ msgstr "Options diverses" #~ msgid "Server Options" #~ msgstr "Options du serveur" #~ msgid "Display server motd when connected ..." #~ msgstr "Afficher le message de bienvenue du serveur à la connexion..." #~ msgid "eD2k Info" #~ msgstr "Info eD2k" #~ msgid "Disable/Enable" #~ msgstr "Activer/Désactiver" #~ msgid "Authentication" #~ msgstr "Authentification" #~ msgid "Unable to determine selected browser!" #~ msgstr "Impossible de déterminer le navigateur sélectionné!" #~ msgid "User Defined" #~ msgstr "Manuel" #~ msgid "General Settings" #~ msgstr "Paramètres généraux" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - La Mule Linux" #~ msgid "System Default" #~ msgstr "Par défaut" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Sélectionnez votre navigateur ici" #~ msgid "Custom Browser:" #~ msgstr "Navigateur personnalisé :" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Entrer ici le nom de votre navigateur. Pour utiliser un navigateur " #~ "personnalisé, choisissez Personnalisé dans le menu déroulant ci-contre." #~ msgid "Max Connections" #~ msgstr "Nombre maximum de connexions" #~ msgid "GUI Tweaks" #~ msgstr "Réglages IHM avancés" #~ msgid "Remote Control" #~ msgstr "Contrôles à distance" #~ msgid "Please wait... " #~ msgstr "Patientez s'il vous plaît... " #~ msgid "Could not determine the command for running the browser." #~ msgstr "Impossible de déterminer la commande pour lancer votre navigateur." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "Échec de la connexion EC. Réponse vide." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "ExternalConn : Accès interdit pour cause de: " #~ msgid "ExternalConn: Access denied" #~ msgstr "ExternalConn : Accès interdit" #~ msgid "ExternalConn: Bad reply from server. Connection closed." #~ msgstr "ExternalConn: Mauvaise réponse du serveur. Connexion fermée." #~ msgid "The ed2k hash of the file." #~ msgstr "Le hash e2dk du fichier." #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Copier le &lien ed2k dans le presse-papiers" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "Copier le lien ED2k dans le presse papier (&Source)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "" #~ "Copier le lien ED2K dans le presse-papiers (Source) (&Avec options de " #~ "cryptage)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "Copier le lien ED2K dans le presse-papiers (&Nom d'hôte)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "" #~ "Copier le lien ED2K dans le presse-papiers (Nom d'hôte) (Avec &Options de " #~ "cryptage)" #~ msgid "Copy ED2k link to clipboard (&AICH info)" #~ msgstr "Copier le lien ED2k dans le presse papier (&Infos AICH)" #~ msgid "Warning" #~ msgstr "Attention" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "ERREUR : Écoute sur le port TCP impossible." #~ msgid "Error: can not accept web client connection\n" #~ msgstr "Erreur : impossible d'accepter la connexion du client web\n" #~ msgid "Webserver HTTP port" #~ msgstr "Port HTTP du serveur web" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "Utiliser l'UPnP pour la redirection de port du serveur web" #~ msgid "Full access password for webserver" #~ msgstr "Mot de passe pour l'accès total au serveur web" #~ msgid "Guest password for webserver" #~ msgstr "Mot de passe invité pour le serveur web" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "" #~ "Charger/sauver la configuration du serveur web depuis/vers l'aMule distant" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "Entrer ici le fichier pour lequel calculer le lien Ed2k" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "Entrer ici les URLs à ajouter au lien Ed2k: Ajouter / à la fin pour " #~ "laisser aLinkCreator ajouter le nom de fichier courant" #~ msgid "Ed2k File Hash" #~ msgstr "Hash Ed2k du fichier" #~ msgid "Ed2k link" #~ msgstr "Lien Ed2k" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "Ouvrir un fichier pour calculer son lien Ed2k" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "Copier le lien Ed2k calculé dans le Presse-papiers" #~ msgid "Save computed ed2k link to file" #~ msgstr "Sauvegarder le lien Ed2k calculé dans un fichier" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "Sélectionner le fichier pour lequel calculer le lien Ed2k" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "Sélectionner le fichier où sauvegarder le lien Ed2k calculé" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, le créateur de liens Ed2k d'aMule\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps par http://www.everaldo.com et http://www.icomania.com\n" #~ "et http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distribué sous licence GPL" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, le créateur de liens Ed2k d'aMule" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Copier le lien ed2k dans le presse-papiers" #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Copier les liens ed2k dans le presse-papiers" #~ msgid "ED2K: Connecting" #~ msgstr "ED2K : Connexion en cours" #~ msgid "ED2K: Disconnected" #~ msgstr "ED2K : Déconnecté" #~ msgid "Warning: Unable to open skin file '%s' for read" #~ msgstr "Attention: Impossible d'ouvrir le fichier de skin '%s' pour le lire" #~ msgid "ed2k network" #~ msgstr "Réseau e2dk" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "Votre liste de mise à jour auto des serveurs est vide.\n" #~ "'Mise à jour de la liste des serveurs au démarrage' sera désactivé." #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "Les réseaux Kad et ED2K sont désactivés.\n" #~ "Vous ne pouvez pas vous connectez si vous n'activez pas l'un d'entre eux." #~ msgid "Edit Serverlist" #~ msgstr "Éditer la liste des serveurs" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "ERREUR : impossible d'accepter une nouvelle connexion externe" #~ msgid "ED2K is disabled in preferences." #~ msgstr "ED2K est desactivé dans les préférences." #~ msgid "ExternalConn: shutdown requested" #~ msgstr "ExternalConn: arrêt demandé" #~ msgid "Already connected to ED2K." #~ msgstr "Déjà connecté à ED2K." #~ msgid "Connecting to ED2K..." #~ msgstr "Connexion à ED2K..." #~ msgid "Disconnected from ED2K." #~ msgstr "Déconnecté d'ED2K." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "ExternalConn : opcode invalide reçu : %#x" #~ msgid "ED2K Status:" #~ msgstr "Statut de ED2K:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "Vitesse de Réception Moyenne (Session) : %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "Vitesse d'Émission Moyenne (Session) : %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "Vitesse de Réception Maximum (Session) : %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "Vitesse d'Émission Maximum (Session) : %s" #~ msgid "Average filesize: %s" #~ msgstr "Taille moyenne des fichiers : %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "" #~ "Une recherche ED2K ne peut pas être faite si ED2K n'est pas connecté" #~ msgid "Error: " #~ msgstr "Erreur : " #~ msgid "Warning: " #~ msgstr "Attention : " #~ msgid "Search related files (ED2k, local server)" #~ msgstr "Chercher un fichier en relation (ED2K, serveur local)" #~ msgid "Error" #~ msgstr "Erreur" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "ATTENTION: Vous ne pouvez vous ajouter vous-même comme une source pour un " #~ "lien ed2k, en étant en lowid." #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "Veuillez s'il vous plaît choisir votre lecteur vidéo préféré dans les " #~ "préférences.\n" #~ "Pour le moment, aMule va essayer d'utiliser mplayer et vous aurez cet " #~ "avertissement à chaque aperçu" #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "Erreur : Échec de l'ouverture du fichier part.met: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "Erreur : La taille du fichier part.met est nulle : %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "Erreur : Version du fichier part.met invalide: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "Attention : %s est peut-être corrompu (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "" #~ "Erreur de fichier imprévue lors de la complétion de %s. Fichier mis en " #~ "pause" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "Attention : Impossible de hacher la partie téléchargée - hashset " #~ "incomplet pour '%s'" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "ERREUR : Impossible de hacher la partie téléchargée - hashset incomplet (%" #~ "s). Ceci ne devrait jamais arriver" #~ msgid "Insufficient Diskspace" #~ msgstr "Espace disque insuffisant" #~ msgid "Warning: known.met cannot be opened." #~ msgstr "Attention: known.met ne peut être ouvert." #~ msgid "Warning: Knownfile list corrupted, contains invalid header." #~ msgstr "" #~ "Attention : La liste des fichiers connus est corrompue, elle contient une " #~ "entête invalide." #~ msgid "ERROR! Attempted to share %s" #~ msgstr "ERREUR ! Tentative de partage de %s" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "" #~ "Le réseau ED2K est désactivé dans les préférences, pas de connexion." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "Aucun serveur valide pour se connecter dans la liste des serveurs" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "Erreur : socket invalide au moment du test" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions." #~ msgstr "" #~ "Erreur : Echec du chargement du fichier de sauvegarde. Cherchez sur " #~ "http://forum.amule.org pour des solutions de récupérations des fichiers ." #~ "part.met" #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "Ne peut pas convertir le lien magnet en lien ed2k: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "Lien ed2k invalide ! Erreur. %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "" #~ "Limites de bande passante : Émission: %u Ko/s, Réception: %u Ko/s.\n" #~ msgid "Shutdown aMule." #~ msgstr "Éteindre aMule." #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "Arrêter le core distant (amule/amuled).\n" #~ "Le client texte sera aussi arrêté, puisqu'il sera inutilisable sans\n" #~ " un core en marche.\n" #~ msgid "Connect to ED2K only." #~ msgstr "Se connecter seulement à ED2K." #~ msgid "Disconnect from ED2K only." #~ msgstr "Se déconnecter seulement de ED2K." #~ msgid "Adds an ed2k or magnet link to core." #~ msgstr "Ajoute un lien ed2k ou magnet au noyau." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "Le lien ed2k à ajouter peut être:\n" #~ "*) un lien vers un fichier (ed2k://|file|...), il sera ajouté à la queue " #~ "des téléchargements,\n" #~ "*) un lien vers un serveur (ed2k://|server|...), il sera ajouté à la " #~ "liste des serveurs,\n" #~ "*) ou un lien vers une liste de serveurs, auquel cas, tous les serveurs " #~ "dans la liste seront\n" #~ " ajoutés à la liste des serveurs.\n" #~ "\n" #~ "Le lien magnet doit contenir le hash ed2k et la longueur du fichier.\n" #~ msgid "Deprecated command, now '%s'." #~ msgstr "Commande obsolète, maintenant '%s'." #~ msgid "Error: %s (%s) - %s" #~ msgstr "Erreur : %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "Attention : %s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "Erreur : Plus d'espace disque disponible" #~ msgid "Error: Partmet not found" #~ msgstr "Erreur : Partmet non trouvé" #~ msgid "Error: IO error!" #~ msgstr "Erreur : erreur d'entrée-sortie!" #~ msgid "Error: Failed!" #~ msgstr "Erreur : Échec !" #~ msgid "ED2K Link: " #~ msgstr "Lien ED2k: " #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "" #~ "Cliquer ici pour ajouter le lien Ed2k présent dans la boîte de saisie à " #~ "votre liste de téléchargement." #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "" #~ "Recherche plus de résultats sur ED2K. Non supporté pour Kad pour le " #~ "moment." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Limites de la bande passante" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "C'est le port ED2K standard, il ne peut pas être désactivé." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "" #~ "Ce port est utilisé pour les requêtes étendues et pour le réseau Kad" #~ msgid "Hard Limit" #~ msgstr "Limite en dur" #~ msgid "Connection Limits" #~ msgstr "Limites de connexion" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Mise à jour de la liste des serveurs au démarrage" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Mise à jour de la liste des serveurs à la connexion à un serveur" #~ msgid "Update serverlist when a client connect" #~ msgstr "Mise à jour de la liste des serveurs à la connexion d'un client" #~ msgid "Disk Space" #~ msgstr "Espace disque" #~ msgid "Check Disk Space" #~ msgstr "Vérifier l'espace disque" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "" #~ "Sélectionnez ceci si vous voulez qu'aMule contrôle votre espace disque" #~ msgid "Min Disk Space:" #~ msgstr "Espace disque minimum :" #~ msgid "Incoming Directory :" #~ msgstr "Répertoire de réception :" #~ msgid "Temporary Directory :" #~ msgstr "Répertoire temporaire :" #~ msgid "Shared Directories" #~ msgstr "Répertoires partagés" #~ msgid "Create Backup to preview" #~ msgstr "Faire une sauvegarde pour prévisualiser" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Afficher la prise en charge rapide des liens ED2K" #~ msgid "Webserver Parameters" #~ msgstr "Paramètres du serveur Web" #~ msgid "Webserver port" #~ msgstr "Port du serveur Web" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "Activer la rediection de ports par UPnP sur le port du serveur web." #~ msgid "Webserver UPnP TCP port" #~ msgstr "Port TCP UPnP du serveur web" #~ msgid "Serverlist" #~ msgstr "Liste des serveurs" #~ msgid "Manual Server Add : Name" #~ msgstr "Ajout manuel d'un serveur : Nom" #~ msgid "No One" #~ msgstr "Personne" #~ msgid "Speed Limits:" #~ msgstr "Limites de Vitesse :" #~ msgid "Download Speed: %.1f" #~ msgstr "Vitesse de réception : %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "Vitesse d'émission : %.1f" #~ msgid "TCP Port: %d" #~ msgstr "Port TCP : %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "Port TCP : pas prêt" #~ msgid "UDP Port: %d" #~ msgstr "Port UDP : %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "Port UDP : pas prêt" #~ msgid "Shared Files: %d" #~ msgstr "Fichiers partagés : %d" #~ msgid "Queued Clients: %d" #~ msgstr "Clients dans la file d'attente : %d" #~ msgid "Upload Limit" #~ msgstr "Limite en émission" #~ msgid "Download Limit" #~ msgstr "Limite en réception" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "Aucun serveur n'est répertorié dans 'adresses.dat'. Placez-y une liste de " #~ "serveurs avec leur adresse pour assurer une mise à jour automatique" #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "" #~ "Attention, l'URL indiqué pour la mise à jour automatique des serveurs est " #~ "invalide : %s " #~ msgid "webserver running on pid %d" #~ msgstr "Le Serveur web tourne avec le pid %d" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "Vous avez demandé de lancer le serveur Web au démarrage d'aMule, mais " #~ "amuleweb n'a pu être trouvé. Installez le paquet contenant le serveur Web " #~ "d'aMule, ou compilez aMule en utilisant l'option --enable-webserver et " #~ "lancez make install" #~ msgid "Disconnected from ED2K" #~ msgstr "Déconnecté d'ED2K" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "" #~ "Échec de l'ouverture du fichier de liste d'amis 'emfriends.met' pour la " #~ "lecture!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "" #~ "Échec de l'ouverture du fichier de liste d'amis 'emfriends.met' pour " #~ "l'écriture!" amule_2.3.1+git20151120.0023527bc2.orig/po/gl.po0000644000175000017500000071173112611472361017075 0ustar morphmorph# translation of gl.po to Galego # This file is distributed under the same license as the aMule package. # # Nota para traductores: # Se algunha vez queredes traducir algún programa tradúceo # coa codificación UTF-8 para que non lle de problemas a ninguén, # ou ben usade este comando para converter de calquera codificación # a UTF-8: # msgconv -t UTF-8 gl.po > gl.po.new && mv gl.po.new gl.po # Onde gl.po é o ficheiro que estades a traducir. # Copyright (c) 2003-2011 aMule Team. # # Josemari Rodríguez Gutiérrez , 2004. # Ignacio Casal Quinteiro , 2005, 2006. # Ignacio Casal Quinteiro , 2007. # Festor Wailon Dacoba , 2007, 2008. # # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2008-07-03 12:01+0100\n" "Last-Translator: Festor Wailon Dacoba \n" "Language-Team: Galego \n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Poedit-Language: Galician\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Engadir un amigo" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Tes que introducir un porto e unha ip válidos" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Información" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "O hash de usuario especificado non é válido!" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "Non se pode abrir %s (%s)" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "AVISO: Non podes engadirte a ti mesmo como unha fonte para un enlace eD2k " "tendo ID baixa." #: src/amule.cpp:229 #, fuzzy msgid "Now, exiting main app..." msgstr "" "\n" "OK, saíndo de %s...\n" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Erro" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 #, fuzzy msgid "aMule shutdown completed." msgstr "Descarga rematada" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "Confirmación de saída" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "Nova conexión externa aceptada" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "AVISO" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "O seu locale cambiou ao predeterminado do sistema debido a un troco na " "configuración. Síntoo." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Información" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Non ten ningún servidor na lista de servidores.\n" "Quere que aMule descargue unha nova lista agora?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Descargar lista de servidores" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "servidor web executándose con pid: %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Solicitaches executar o servidor web ó inicio pero non se puido executar o " "binario amuleweb. Por favor instale o paquete que conteña o servidor web do " "aMule ou compile o aMule empregando o parámetro --enable-webserver e logo " "execute o make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "ERRO" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "No se puido vincular os portos a dirección especificada: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Porto %u non está dispoñible . Tes IDBAIXA\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Porto %u non está dispoñible!!\n" "\n" "Isto significa que terás IDBAIXA \n" "\n" "Comproba túa rede para cerciorarse de que o porto está aberto para a entrada " "e saída." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Fallou ao crear o ficheiro OnlineSig" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Fallou ao crear o ficheiro de aMule OnlineSig" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "O idioma seleccionado non parece estar instalado. (Nota: Tentarei poñelo de " "todos modos)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Esta é a primeira vez inicia aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Esta versión é unha versión en proba, actualizada, e\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "non damos garantía se rompese algo, quime a túa casa,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "ou mate o seu can. Pero debería salvalo de todas formas.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Máis información, soporte e novas actualizacións pódelas atopar na nosa " "páxina,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "en www.aMule.org, ou na nosa canle de IRC #aMule en irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Podes reportar algúns bugs a http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "O cartafol que especificou de Sinatura Online non é válido!\n" "A Sinatura Online foi deshabilitada ata que o arregle en preferencias." #: src/amule.cpp:1116 #, fuzzy msgid "Server hostname notified" msgstr "Nome do servidor :" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "A reserva do espazo no disco duro para o arquivo '%s' fallou: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "ERRO: non se pode abrir o ficheiro de rexistro" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "AVISO: o ficheiro de rexistro está baleiro. Algo está mal." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "O rexistro foi borrado" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Mensaxe de servidor: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Fallou ao descargar a lista de nodos." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Fallou ao abrir o ficheiro de comprobación de versión descargado" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Ficheiro de comprobación de versión corrupto" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Está usando unha versión de aMule non actualizada!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "A súa versión de aMule é %i.%i.%i e a última versión é %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Pode obter a última versión de aMule en http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" "AVISO: A súa versión de aMule está desactualizada: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Súa copia de aMule está actualizada." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Fallou ao descargar o ficheiro de comprobación de versión" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Usuarios: %s | Arquivos: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Usuarios: E: %s K: %s | Arquivos: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Sen redes seleccionadas" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "con IDbaixa" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "con ID alta" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Conectado a %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Conectando a %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Desconectado do eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad iniciado." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad detido." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Conectado a Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Conectado a Kad (cortafogos)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Desconectado de Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "A rede Kad non pode ser usada se o porto UDP está desactivado nas " "preferencias, non iniciado." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "A rede Kad está desactivada nas preferencias, non conectado." #: src/amuled.cpp:589 #, fuzzy msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ERRO: o daemon de aMule non se pode usar cando están desactivadas as " "conexións externas. Para activar as Conexións Externas, use un aMule normal, " "inicie amuled coa opción --ec-config ou estableza a clave " "\"AcceptExternalConnections\" a 1 no ficheiro ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "ERRO: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Este é aMule %s basado en eMule" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Executando en %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "Visita http://www.amule.org por se existe algunha nova versión." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ERRO GRAVE: Non se puido crear o temporizador" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "control remoto de aMule" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Foto instantánea:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "cliente 'Multi-Plataforma' p2p baseado no eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Páxina web: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Foro: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Contactar: admin@amule.org (asuntos administrativos) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Parte do aMule está baseado en \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Peer-to-peer enrutamiento baseado na métrica XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Mensaxe" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Conectando" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Conectando" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Desconectado" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Cortafogos" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Conectado" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Conectando" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Off" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Cancelar" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Deter a tentativa actual de conexión" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Desconectado" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Desconectar da rede." #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Conectar" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Conectar á rede." #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Su: %.1f(%.1f) | Ba: %.1f(%.1f))" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Su: %.1f | Ba: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Conectado)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Desconectado)" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "¿Desexar saír de aMule?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Confirmación de saída" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "O directorio de temas '%s' non existe" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "AVISO: Non se pode abrir o arquivo das peles '%s' para leer" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Redes" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Fiestra de Redes" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Buscas" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Fiestra de buscas" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Descargas" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "Descargando" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Compartidos" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Fiestra de ficheiros compartidos" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Mensaxes" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Fiestra de mensaxes" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Estatísticas" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Fiestra de gráficos de estatísticas" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Preferencias" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Fiestra de preferencias" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importar" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "A ferramenta para importar ficheiros part" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Acerca de" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Acerca de/Axuda" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "rede eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Red Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Sin red" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "Erro fatal: Erro ao crear temporizador" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Connectar a amule remoto" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "Erro fatal: Erro ao crear temporizador" #: src/amule-remote-gui.cpp:274 #, fuzzy msgid "Going to event loop..." msgstr "Tentando recuperar info de ficheiro..." #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "Conectando" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Fallou a conexión" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Todo" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Descoñecido" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Erro ao recupera-los ficheiros compartidos do usuario '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Fake eMule versión %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Fake eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Fake eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basado en eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Alcume: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Petición: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Estatísticas do ficheiro para esta sesión: Aceptada %d de %d peticións; %s " "transferida\n" msgstr[1] "" "Estatísticas do ficheiro para esta sesión: Aceptadas %d de %d peticións; %s " "transferidas\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Estatísticas do ficheiro para todas as sesións: Aceptada %d de %d peticións; " "%s transferida\n" msgstr[1] "" "Estatísticas do ficheiro para todas as sesións: Aceptadas %d de %d " "peticións; %s transferidas\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Petición dun ficheiro descoñecido" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Mensaxe filtrada de '%s' (IP: %s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nova mensaxe de '%s' (IP: %s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "O usuario %s (%u) pediu a súa lista de ficheiros compartidos do directorio %" "s -> denegado" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, fuzzy, c-format msgid "WARNING: %s cannot be opened." msgstr "AVISO: non se puido abrir o known.met." #: src/CanceledFileList.cpp:61 #, fuzzy msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "AVISO: lista de coñecidos (knownfile) corrupta, a cabeceira non é correcta." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "Erro de ES lendo o ficheiro known.met: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "Erro gardando o ficheiro known.met: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Categoría" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nova categoría" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Escolla un cartafol para os ficheiros entrantes" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Debe especificar un nome para a categoría!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Debe especificar unha ruta para a categoría!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Erro ao crear o directorio incoming da categoría. Por favor especifique unha " "ruta correcta!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Sesión de chat iniciada: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Conectado ao cliente ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Conectando ao cliente ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Erro ao conectar ao cliente / Conexión perdida ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Pechar solapa" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Pechar todas as solapas" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Pechar outras solapas" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Engadir a amigos" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Ficheiro de créditos cargado, %u cliente coñecido" msgstr[1] "Ficheiro de créditos cargado, %u cliente coñecidos" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Expiraron os créditos de %u cliente!" msgstr[1] " - Expiraron os créditos de %u clientes!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Non se atopou o ficheiro 'cryptkey.dat', creando." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Detalles do cliente" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "IDbaixa" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "IDalta" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Habilitado" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Soportado" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Non soportado" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Deshabilitado" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Conectado" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Desconectado" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Incompleto" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Rapaz malo" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Verificado - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Non dispoñible" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "O usuario %s (%u) solicitou a túa lista de ficheiros compartidos -> Aceptado" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "O usuario %s (%u) solicitou a túa lista de ficheiros compartidos -> Denegado" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "O usuario %s (%u) solicitou a túa lista de cartafoles compartidos -> Aceptado" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "O usuario %s (%u) solicitou a túa lista de cartafoles compartidos -> Denegado" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "O usuario %s (%u) solicitou a túa lista de ficheiros compartidos do " "directorio %s -> aceptado" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "O usuario %s (%u) pediu a súa lista de ficheiros compartidos do directorio %" "s -> denegado" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "O usuario %s (%u) directorios compartidos %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" "O usuario %s (%u) enviou unha lista de directorios compartidos non desexada." #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "O usuario %s (%u) enviou a súa lista de ficheiros compartidos ao cartafol %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" "O usuario %s (%u) rematou de enviar a súa lista de ficheiros compartidos" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" "O usuario %s (%u) enviou unha lista de ficheiros compartidos non deseada" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Usuario %s (%u) denegou o acceso á lista de ficheiros/cartafoles compartidos " #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Comentarios do arquivo" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Nome de usuario" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Nome do arquivo" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Valoración" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Comentario" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Sen comentarios" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u comentario" msgstr[1] "%u comentarios" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Ba]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Al]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Moi baixo" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Baixo" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normal" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Alto" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Moi alto" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Lanzamento" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Preguntando" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Conectando ví­a servidor" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Cola chea" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "En cola" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Descargando" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Recibindo hashset" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Sen partes necesarias" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Non se pode realiza-la conexión IDbaixa con IDbaixa" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Demasiadas conexións" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Conectando ví­a Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Demasiadas conexións Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Vetado" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Erro de conexión" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Cola remota chea" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Vello MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Novo MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule compatible" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Servidor local" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Servidor remoto" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Intercambio de fontes" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Pasivo" #: src/DataToText.cpp:133 msgid "Link" msgstr "Ligazón" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Fontes seeds" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Resultado da b" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Completado" #: src/DataToText.cpp:146 msgid "In progress" msgstr "En progreso" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "ERRO: Non queda espazo no disco" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "ERRO: Non se atopou o partmet" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ERRO: Erro de entrada/saida!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ERRO: Non se puido realizar a acción!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "En cola" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Xa está descargando" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Formato de ficheiro temp incorrecto ou descoñecido." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Tamaño" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Transferido" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Velocidade" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Progreso" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Fontes" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioridade" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Estado" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Tempo para rematar" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Última vez visto completo" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Última recepción" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "¿Estás seguro de que queres borrar o ficheiro seleccionado?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "¿Estás seguro de que queres borrar os ficheiros seleccionados?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Reacción de : %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Automático" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Deter" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pausa" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "Continua&R" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "&limpeza completada" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Pasar todas as A4AF a este ficheiro agora" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Pasar todas as A4AF a este ficheiro (Automático)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Pasar todas as A4AF a outro ficheiro agora" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Opcións extendidas" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Previsualizar" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Mirar &detalles do ficheiro" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Ver todo-los comentarios" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Copiar a URI magnética ao portapapeis" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Copiar eD2k &enlace ó portapapeis" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Copiar resposta ao portapapeis" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "sen asignar" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Asignar a categoría" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "Abri-lo arquiv&O" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Introducir un novo nome para este ficheiro:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Renomear o ficheiro" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Descargas (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Para evitar a aparición deste aviso en cada vista previa,\n" "establece o teu reproductor de vídeo nas preferencias (mplayer por defecto)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Previsualizar ficheiro" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" "ERRO: Non se pode executar o reproductor multimedia externo! Comando: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "Cargando ficheiro server.met: %s" #: src/DownloadQueue.cpp:132 #, fuzzy, c-format msgid "Loading PartFile %u of %u" msgstr "Cargando datos desde a antiga descarga do ficheiro (%u de %u)" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "ERRO: Non se puido cargar o arquivo de copia de seguridade. Busca en http://" "forum.amule.org para encontrar solución de recuperación de arquivos part.met." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Non se atoparon ficheiros .part" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Atopados %u ficheiro part" msgstr[1] "Atopados %u ficheiros part" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "O sistema de arquivos do directorio temporal non soporta arquivos grandes." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "O sistema de arquivos do directorio de descarga non soporta arquivos grandes." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Descargando %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Xa estas intentando descargar o ficheiro '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Xa tes o ficheiro '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Xa estas intentando descargar este ficheiro %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Non se puido convertir o enlace magnet a eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Protocolo descoñecido da ligazón: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Enlace eD2k inválido! ERRO: %s" #: src/ExternalConn.cpp:261 #, fuzzy msgid "Client sent packet after authentication failed." msgstr "Fallou a autenticación." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Conexión externa pechada." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Conexión externas desactivadas debido a un contrasinal baleiro!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Conexións externas desactivadas no ficheiro de configuración" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Nova conexión externa aceptada" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "ERRO: non se puido aceptar unha nova conexión externa" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Conexión externa refusada debido a un contrasinal baleiro nas preferencias!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Conectando ao cliente: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Versión descoñecida" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "EC incorrecto na ID de versión, debe haber unha incompatibilidade. Usa " "núcleo e remoto da mesma versión." #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Non pode conectarse a una versión estable dende una versión SVN arbitraría! " "Prevido posible crash" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Versión de protocolo inválido." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Marcador de versión de protocolo inexistente." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 #, fuzzy msgid "Authentication failed: wrong password." msgstr "Fallou a autenticación." #: src/ExternalConn.cpp:512 #, fuzzy msgid "Authentication failed: missing password." msgstr "Fallou a autenticación." #: src/ExternalConn.cpp:522 #, fuzzy msgid "Invalid request, please authenticate first." msgstr "Resposta inválida, debería autenticarse primeiro." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Acceso concedido." #: src/ExternalConn.cpp:535 #, fuzzy, c-format msgid "Sent error message \"%s\" to client." msgstr "Filtrar mensaxes de clientes descoñecidos" #: src/ExternalConn.cpp:538 #, fuzzy, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Intento de acceso non autorizado. Conexión pechada." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "Fallou o comando remoto PartFile: Ficheiro hash non atopado: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Ficheiro hash non atopado: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OOPS! Erro de proceso de OpCode!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Servidor non engadido" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "servidor non atopado: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "necesita definir o servidor que se vai a eliminar" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k está deshabilitado nas preferencias." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Busca en progreso. Resultado obtidos en breve!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Buscador web da interface remota non fai sensible." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Sen puntos para gráfica." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Seu cliente non está configurado para este nivel de detalle." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Conexión externa: apagado solicitado" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Xa está apagando." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Conexión externa: engadindo ligazón '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Ligazón inválido ou xa está na lista." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Ficheiro non atopado." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Nome de ficheiro inválido." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Imposible renomear o ficheiro." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad está desactivado nas preferencias." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Xa estás conectado o eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Conectado o eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Xa está conectado a Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Conectando a Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Tódalas redes están desactivadas." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Desconectado do eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Desconectado de Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Conexión externa: recibido código de operación inválido: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "opcode inválido (versión de protocolo inválido?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Extensión descoñecida '%s' para o comando '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Comando descoñecido '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Este comando non pode ter un argumento.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Este comando deber ter un argumento.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Este comando está incompleto, debe usar unha das extensión de abaixo.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Extensións dispoñibles:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Comandos dispoñibles:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Todos os comandos son sensibles ás maiúsculas\n" "Escriba '%s ' para obter información detallada do .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Saír da aplicación." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Mostrar axuda." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Para obter axuda dun comando, teclee 'help '.\n" "Para obter a lista completa de comandos, teclee 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Usa '%s' para lista de comandos\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Erro de sintase!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Erro procesando o comando - isto non debería pasar! Por favor, reporte o " "bug\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Este comando non debería ter ningún parámetro." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Este comando debe ter un parámetro." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Argumento inválido." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Isto é un comando incompleto." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Teclee '%s' para obter máis axuda.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Isto é %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Isto é %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Creando cliente...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "OK, saíndo de %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Non se pode conectar cun contrasinal baleiro.\n" "Debe especificar un contrasinal nun ficheiro de configuración\n" "ou nunha liña de comando, ou introducir un cando se pregunte.\n" "\n" "Saíndo...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Mostrar este texto de axuda." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Anfitrión onde estase executando aMule. (por defecto: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Porto de aMule para conexión externa. (por defecto: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Contrasinal para conexión externa." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Ler configuración do ficheiro." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Non imprimir ningunha saída a stdout." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Estar difuso - mostrar as mensaxes de depuración." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Establecer locale de programa (lingua)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Escribir opcións da liña de comando ao ficheiro de configuración." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" "Crear ficheiro de configuración basado no ficheiro de configuración de aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Imprimir versión de programa." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Detalles do ficheiro" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% feito" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "¡ No se puido abrir o arquivo de amigos 'emfriends.met' para a súa lectura !" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "¡ No se puido abrir o arquivo de amigos 'emfriends.met' para a súa " "escritura !" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Amigos" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Ver &Detalles" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Engadir un amigo" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Borrar amigo" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Enviar &Mensaxe" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Ver ficheiros" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Establecer ranura de amigo" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Estás seguro de que queres borrar o amigo/a seleccionado?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Estás seguro de que queres borrar os amigos/as seleccionados?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Non está permitindo establecer máis dun espazo de amigo.\n" " Só un espazo foi asignado." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Selección múltiple" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Enviar mensaxe a usuario" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Mensaxes a enviar:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Eliminar de amigos" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Enviar mensaxe" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Intercambiar este ficheiro" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "QR: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Preguntando por outro ficheiro" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Subidas agardando: %s" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "En cola" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Subir" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "Ningún" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Non" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Si" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Descargando..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "AVISO: Non se pode abrir o arquivo das peles '%s' para leer" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "Descargado" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "Reconectar ao servidor" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "Erro ao decarga-la lista de servidores dende %s" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Erro ao decarga-la lista de servidores dende %s" #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Cargando filtrados de IP 'ipfilter.dat' e 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "Fallou ao cargar o ficheiro ipfilter.dat '%s', atopado formato descoñecido." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Fallou ao cargar o ficheiro ipfilter.dat '%s', non se puido abrir o ficheiro." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Cargados %u rango de IP de '%s'." msgstr[1] "Cargados %u rangos de IP de '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u liña malformada foi descartada." msgstr[1] "%u liñas malformadas foron descartadas." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "Clientes coñecidosde Bootstrap" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nodos (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Ip inválida ao bootstrap" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Porto inválido ao bootstrap" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Por favor encha todos os campos requeridos" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Estas seguro de que queres descargar un ficheiro nodes.dat novo?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Facendo isto borrarás os teus nodos actuais e reiniciarás a conexión " "Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Continuar?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: palabra de busca demasiado corta" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: A palabra buscada xa está na lista de búsqueda:" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Lido %u contacto Kad" msgstr[1] "Lidos %u contactos Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Escribio %d contacto Kad" msgstr[1] "Escribio %d contactos Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Nome de ficheiro" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Tamaño do arquivo" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Relación subida/baixada" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Subido" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Solicitado" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Aceptado" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Fontes completas" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Versión descoñecida" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "AVISO: Non se pode abrir o arquivo das peles '%s' para leer" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Hasheando" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Completando" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Completado" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Pausado" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Erróneo" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Agardando" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Debe especificar un contrasinal non baleiro." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Contrasinal inválido, sen un hash MD5!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Erro de conexión" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "Errada conexión EC. Resposta baleira." #: src/libs/ec/cpp/RemoteConnect.cpp:258 #, fuzzy msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "Conexión externa: Mala resposta do servidor. Conexión pechada." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Éxisto! Conexión establecida en aMule" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Éxito! Conexión establecida." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Conexión externa: Acceso denegado debido a:" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "Conexión externa: Acceso denegado" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Auto recarga iniciada" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "ERRO: Non se puido escoitar o porto TCP." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "ERRO: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "AVISO: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Pechar" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Cortar" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Copiar" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Pegar" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Limpar" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Seleccionar todo" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "Kb/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Ilimitado" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Menú aMule" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Límites de velocidade:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "SU: Ningunha" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "UL: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DE: Ningunha" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DE: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Velocidade de baixada: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Velocidade de subida: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Información de cliente" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Alcume: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Non seleccionou un alcume!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID de cliente: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Non conectado" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Nome do servidor: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP de servidor :" #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Non conectado" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "Porto TCP: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Porto TCP: Non está listo aínda" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "Porto UDP: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "Porto UDP: Non está listo aínda" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Sinatura Online: Activada" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Sinatura Online: Desactivada" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Tempo de execución: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Arquivos compartidos: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Clientes na cola: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Total DE: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Total SU: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Límite de subida" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Límite de descarga" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Ocultar aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Mostrar aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Saír" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "Enlace eD2k:" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Enviar" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Fai Click aquí para engadir o enlace eD2k da entrada de texto de control á " "cola das descargas." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Os eventos amósanse aquí. Para unha lista completa de eventos, ves ao " "rexistro, da solapa de servidores." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Cargando..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Número de usuarios conectado ao mesmo servidor ca ti ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Usuarios: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Usuarios conectados ao servidor actual e unha estimación do número total de " "usuarios." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Subida: 0.0 | Baixada: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Índice actual de subidas e descargas. Se está activado os números signfican " "os gastos indirectos na comunicación do cliente." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Amosa o estado de conexión e as transferencias activas. As frechas vermellas " "significan que estás conectado, as frechas amarelas significan que tes ID-" "Baixa (detrás de cortafogos) e frechas verdes significan que tes ID-Alta (O " "tipo de conexión óptima)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Non conectado ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Non estás conectado a un servidor" #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Busca" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Nome:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tipo" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Local" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Global" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Ficheiro Hash" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Parámetros extendidos" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtrado" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Tipo de ficheiro" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Calquera" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Arquivos" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Imaxe de CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Imaxes" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programas" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Textos" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Vídeos" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Extensión" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Tamaño mín" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Tamaño máx" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Dispoñibilidade" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filtrado:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Resultados do filtro" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Invertir resultado" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Agochar ficheiros coñecidos" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Comezar" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Máis" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Procura máis resultados no eD2k. Non soportado polo Kad aínda." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Deter" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Descarga" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Reiniciar campos" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Resultados" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Limpar descargas completadas" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Fontes completas" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Xeral" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Nome completo" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "Ficheiro-met:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Tamaño do ficheiro:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Estado do ficheiro part:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Última vez visto completo:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Transferencias" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Fontes atopadas:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Fontes transferindo:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Número de partes:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Dispoñible:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Fluxo de datos:" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Tempo Descarga Activa:" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Transferido:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Tamaño completado:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Xestión intelixente de corrupción" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Perdido por corrupción:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Gañado por compresión:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Paquetes salvados por I.C.H. :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Nomes de ficheiro " #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Tomar" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Limpar" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Aplicar" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Aceptar" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" "Comentario/Calificación do ficheiro (O texto mostrarase a todos os usuarios)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Para un film vostede pode dicir que é largo, a súa historia, o idioma ...\\n" "\\ne se é un arquivo falso (fake), pode advertir ós outros usuarios do aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Calificación de ficheiro" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Non evaluada" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Inválido / Corrupto / Falsificación" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Pobre" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Aceptable" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Boa" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Excelente" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Escoller a calificación do ficheiro ou advertir a outros usuarios se non é " "válido ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Actualizar" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Descargando, agarde por favor ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Tamaño descoñecido" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Información requerida" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Enderezo IP :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Porto :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Información adicional" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Nome de usuario :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Hash do usuario :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Engadir" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Velocidade de descarga" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Actual" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Media de execución" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Media de sesión" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Velocidade de subida" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Conexións" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Descargas activas" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Conexión activas (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Subidas activas" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Árbore de estatísticas" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Nome de usuario:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Hash do usuario :" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Software de cliente :" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Versión de cliente :" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Enderezo IP :" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID do usuario :" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP de servidor :" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Nome do servidor :" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Obfuscación:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Transferencias ao cliente" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Peticións actuais:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Índice medio de subida :" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Índice medio de descarga :" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Subido (sesión) :" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Descargado (sesión) :" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Subido (total) :" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Descargado (total):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Resultados" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Modificador DE/SU :" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Identidade segura:" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "En cola" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Puntuación cola:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Alcume" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - O Mule multi-plataforma" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" "Este é o nome que os outros usuarios verán cando se esté conectando a " "vostede." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "O retardo antes de mostrar as mensaxes emerxentes." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Isto especifica a linguaxe empregada nos controles." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Comprobar se hai unha nova versión ao iniciar" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Activando isto, fará que aMule comprobe se hai unha nova versión ao inicio" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Iniciar minimizado" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Activando isto, fai que aMule minimícese ao inicio." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Preguntar ao saír" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Activar icona de bandexa" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" "Isto Activa/Desactiva a icona da bandexa de sistema (ou barra de tarefas)." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimizar á icona da bandexa" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Activando isto aMule minimizarase na bandexa do sistema, na barra de tarefas." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Selección de navegador" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Introduza o nome do seu navegador aquí. Deixe o campo valeiro para empregar " "o navegador por defecto do sistema." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Navegador" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Abrir nunha nova solapa se é posible" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Abrir cando sexa posible, a páxina web nunha nova solapa en lugar dunha nova " "fiestra" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Reproductor de vídeo" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Subir" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Asinación de slots" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Este é o puerto eD2k estándar e non pode ser deshabilitado" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Autoconectar ao inicio" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Reconectar ao perder a conexión" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Eliminar servidores caídos tras" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "reintentos" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Auto-actualizar lista de serividores ó comezar" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Lista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Actualizar a lista de servidores o conectar a un servidor" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Actualizar a lista de servidores cando un cliente se conecta" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Usar sistema de prioridades" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Control intelixente de IDBaixa ao conectar" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Conexión segura" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Autoconectar só a Servidores fixos" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Asinar alta prioridade aos servidores engadidos manualmente" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Engadir ficheiros para descargar en modo pausado" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Engadir novos ficheiros compartidos con auto prioridade" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Tentar descargar antes a primeira e última parte" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Da mesma categoría" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Reserva de espazo para os novos arquivos" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Para os novos arquivos a reserva de espazo no disco duro para o arquivo " "enteiro reduce a fragmentación" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" "Selecciona esta opción se queres que o aMule comprobe o espazo no disco" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Introduza o espazo mínimo de disco desexado." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Gardar 10 fontes en ficheiros raros (< 20 fontes)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Subidas" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Engadir novas descargas con auto prioridade" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" "(Click co botón dereito na icona do cartafol para compartir recursivamente)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Compartir ficheiros ocultos" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Gráficos" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Intervalo de actualización: 5 segs" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Tempo de promedio do gráfico: 100 min" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Escala do gráfico das conexións: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Fondo" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Enreixado" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Actual descarga" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Promedio descarga en execución" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Promedio descarga en sesión" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Actual subida" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Promedio subida en execución" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Promedio subida en sesión" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Conexións activas" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Barra de velocidade da icona da bandexa do sistema" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Nodos-kad actuais" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Nodo-kad executándose" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Sesión de nodos-kad" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Seleccionar" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Número de versións de cliente amosadas (0=ilimitado)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "ADVERTENCIA !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Novas conexións máx. / 5 segs" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Tamaño do búfer de ficheiro: 240000 bytes" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Tamaño cola de espera: 5000 clientes" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Intervalo de actualización de conexión ao servidor: Desactivado" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Mostrar info extendida nos solapas das categorías" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Mostrar índices de transferencia no título" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Mostrar índices de transferencia no título" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Orientación vertical da barra de ferramentas" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Plano" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "3D" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule ordenará as columnas no súa lista de descargas automaticamente" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parámetros de conexión externa" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Aceptar conexións externas" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Introduza aquí unha ip válida no formato a.b.c.d para a interface de escoita " "EC. Un campo baleiro ou 0.0.0.0 significará calquera interface." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Activar o seguimento do porto UPnP no porto EC" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Contrasinal" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Parámentros do servidor Web" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Modelo Web" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Contrasinal administrador" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Activar invitado" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Contrasinal invitado" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Tempo de actualización de páxina (en segs)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Activar compresión Gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "Ok" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Aplicar calquer troco feito nas preferencias." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Reinicar calquer troco feito nas preferencias." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Título :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Comentario:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Dir entrante :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Cambiar prioridade a novos ficheiros asinados :" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "Non cambiar" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Seleccionar cor para esta categoría (seleccionada) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Reaxustar" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Premer este botón para reiniciar o rexistro." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Premer neste botón para actualizar a lista de servidores desde URL ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Lista de servidores" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Introduza a url nun ficheiro server.met e prema o botón da esquerda para " "actualizar a lista de servidores coñecidos." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Engadir servidor manualmente: Nome" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Introduce o nome do novo servidor aquí" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Porto" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Introduce a IP do servidor aquí, usando o formato x.x.x.x." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Introduce o porto do servidor aquí." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Engadir servidor manualmente (encha os campos) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Rexistro de aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Info de servidor" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Info ED2K" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Info Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Premer neste botón para actualizar a lista de nodos desde URL ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nodos (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Introduza aquí a url ao ficheiro nodes.dat e prema o botón da esquerda, para " "actualizar a lista de nodos coñecidos." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Estatísticas de nodos" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Bootstrap" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Novo nodo" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Porto:" #: src/muuli_wdr.cpp:2763 #, fuzzy msgid "Bootstrap from known clients" msgstr "Clientes coñecidosde Bootstrap" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Desconectado de Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Empregar a Indentificación Segura do Usuario" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Aconséllase habilitar esta opción. Non recibirá créditos se o SUI " "(Indentificación Segura do Usuario) non se habilitou." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Ofuscación de protocolo" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Soporte para ofuscación de protocolo" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Esta opción activa a ofuscación de protocolo, e permite a aMule aceptar " "conexións ofuscadas doutros clientes." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Usar ofuscación para conexións saíntes" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Esta opción fai que aMule use ofuscación de protocolo cando se conectan " "outros clientes/servidores." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Aceptar só conexións ofuscadas" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Esta opción fai que aMule só acepte conexións ofuscadas. Terá menos fontes, " "pero todo o teu tráfico será ofuscado" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Todos" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Ningún" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Seleccione quen pode solicitar ver a lista de ficheiros compartidos." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Filtrado de IPs" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtrar clientes" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Activar filtrado das IPs de cliente definidas no ficheiro ~/.aMule/ipfilter." "dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtrar servidores" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Activar filtrado das IPs de servidores definidas no ficheiro ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Recargar lista" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "Recargar a lista de filtrado de IPs desde o ficheiro ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Actualizar agora" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Auto-actualizar o filtrado de IPs ao inicio" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Nivel de filtrado:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Filtrar sempre IPs LAN" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Xestión paranoica de IPs non coincidintes" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Rexeitar o paquete se a ip do cliente é distinta da ip de onde se recibe o " "paquete. Usar con coidado." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Empregar un ipfilter.dat global se está dispoñible" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "De non atopar un arquivo ipfilter.dat para o usuario, permitir o emprego dun " "ipfilter global." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Activar Sinatura Online" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Habilitar a escritura de ficheiros do SO, sóese usar para crear sinaturas " "para aplicacións externas." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Frecuencia de actualización (Segs):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" "Cambiar a frecuencia (en segundos) da actualización da sinatura online." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Premer aquí para seleccionar o directorio que contén os ficheiros de " "sinaturas online" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtrar mensaxes entrantes (excepto conversación actual):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtrar todas as mensaxes" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtrar mensaxes de xente que non está na túa lista de amigos" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtrar mensaxes de clientes descoñecidos" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtrar mensaxes que conteñen (usa ',' como separador):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "engade aquí as palabras que amule debe filtrar e bloquear mensaxes incluídas" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Comentarios" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtrar comentarios que conteñan (empregre ',' coma separador):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Conexión de servidor automática sen proxy" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Activar autenticación" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Activar/desactivar autenticación de nome de usuario/contrasinal" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "O nome de usuario a usar para conectar ao proxy" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Contrasinal:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "O contrasinal a empregar para conectar ao proxy" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Activar proxy" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Activar/desactivar soporte de proxy" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Tipo de proxy:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Anfitrión de proxy:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "O nome do anfitrión do proxy" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Porto do proxy:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "O porto do proxy" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Conectar a:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Conectar a amule remoto" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Nome de usuario" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Recordar esas opcións" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Activar Depuración-rexistro difuso." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "Abri-lo arquiv&O" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Categorías de mensaxe:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Agardando..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Engadir importes" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Reintentar seleccionado" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Borrar seleccionado" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Subidas activas :" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Oculta os archivos compartidos" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Selecione o filtro de visionado" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Subidas activas" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Mostrar clientes" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Recargar lista" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Recargar os seus ficheiros compartidos" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Enviar" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Enviar a mensaxe especificada." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Pechar esta sesión de chat." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Conectar a calquera servidor e/ou Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Ficheiros compartidos" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Desactivado [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/seg" msgstr[1] "bytes/seg" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "segundos" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "minutos" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "horas" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Días" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "todo" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "todo o demais" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Incompleto" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Parado" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Vídeo" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Arquivo" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Texto" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Activo" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Importando %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Lendo cartafol temporal" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Obtendo información básica de ficheiro info de descarga" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Creando ficheiro de destino" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Cargando datos desde a antiga descarga do ficheiro (%u de %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Gardando bloque de datos dun novo ficheiro de descarga (%u de %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Obtendo información do ficheiro fonte de descarga" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Engadindo descarga e gardando novo ficheiro part" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importar ficheiros part" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Estado" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Hash de ficheiro" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Disco: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Por favor escolla un cartafol para buscar descargas temporais! " "(subcartafoles serán incluidos)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Quere que os ficheiros fonte dunha descarga importada satisfactoriamente " "sexan borrados?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Borrar fontes?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "ERRO: -Non se pode crear o ficheiro part)" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Tentando cargar a copia de seguranza do ficheiro met desde %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "ERRO: Non se puido abrir o arquivo part.met: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "ERRO: o arquivo part.met ten tamaño 0: %s ===> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Erro: %s (%s) está corrupto (marca de contador errónea), imposible cargar o " "ficheiro." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "ERRO: %s (%s) está corrupto (conta de etiquetas errónea), imposible cargar o " "arquivo." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Tentando recuperar info de ficheiro..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "Recuperando ficheiro sen nome - recuperareino como RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Recuperada toda a info dispoñible do ficheiro :D - Tentando empregala..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Imposible recuperar info de ficheiro :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Non se pode abrir %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "AVISO: %s pode estar corrupto (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "ERRO ao gardar o ficheiro part: %s (%s ==> %s)" #: src/PartFile.cpp:904 #, fuzzy msgid "IO failure while saving partfile: " msgstr "ERRO ao gardar o ficheiro part: %s (%s ==> %s)" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Imposible recuperar a duración de '%s' - empregando o arquivo %s ." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' ten tamaño 0 - empregando ficheiro %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Erro ao gardar o ficheiro part.met.seeds por %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Gardadas %i fonte seeds para o ficheiro part: %s (%s)" msgstr[1] "Gardadas %i fontes seeds para o ficheiro part: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Gardadas %i fonte seeds para o ficheiro part: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Erro lendo o ficheiro seed do ficheiro part (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Parte corrupta atopada (%d) en %d ficheiro part %s - FileResultHash |%s| " "FileHash |%s|" msgstr[1] "" "Parte corrupta atopada (%d) en %d ficheiros part %s - FileResultHash |%s| " "FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Parte (%i) completada atopada en %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Rematado de rehashear %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Erro non esperado mentres completábase %s. Arquivo pausado" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Descarga rematada: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Eliminando ficheiro: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "ERRO: Non se puido crear o hash da parte baixada, conxunto de hashes non " "completo para '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "ERRO: Non se puido crear o hash da parte baixada, conxunto de hashes non " "completo (%s). Isto non debería ocorrer nunca" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "AVISO: Non hai suficiente espazo libre en disco! Pausando ficheiro: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Part descargado %i é corrupto no ficheiro: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Part corrupto recuperado %i para %s -> Bytes gardados: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Reservando" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Espazo no disco insuficiente" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Descargado" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "ERRO: Fallou ó abrir o partfile '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Por defecto" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albanés" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Árabe" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "Estonio" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Euskera" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Búlgaro" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Catalán" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Chinés (Simplificado)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Chinés (Tradicional)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Croata" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Checo" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Danés" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Holandés" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Inglés (R. U.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estonio" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finlandés" #: src/Preferences.cpp:648 msgid "French" msgstr "Francés" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galego" #: src/Preferences.cpp:650 msgid "German" msgstr "Alemán" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Grego" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebreo" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Húngaro" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italiano" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italiano (Suizo)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Xaponés" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Coreano" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lituano" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Noruego (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polaco" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugués" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugués (Brasileiro)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Albanés" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Ruso" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Esloveno" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Castelán" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Sueco" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turco" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Idioma" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Non dispoñible" #: src/Preferences.cpp:906 msgid "no options available" msgstr "Non hay opcións disponibles" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "O porto TCP non pode ser máis alto que 65532 debido a que o socket do " "servidor UDP está sendo TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Empregarase o porto predeterminado (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Conexión" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Directorios" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Servidores" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Ficheiros" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Seguranza" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Controles remotos" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Sinatura Online" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Eventos" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Depurando" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Non cambie estos parámetros a menos que saiba\n" "o que está facendo, do contrario pode\n" "facer que aMule funcione peor.\n" "\n" "aMule funcionará ben sen que cambie ningún\n" "destes parámetros." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "O tipo de proxy ao que estase conectando" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule debe ser reiniciado para activar estes trocos:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- Porto TCP cambiado.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- Porto UDP cambiado.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Conexión externa pechada." #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Nova conexión externa aceptada" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Conexión externa pechada." #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Ofuscación de protocolo" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Tes activado conexións externas pero non ten especificado un contrasinal.\n" "Conexións externas non poden ser activadas a non ser que especifique un " "contrasinal válido." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Idioma cambiado.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Cartafol temporal cambiado.\n" #: src/PrefsUnifiedDlg.cpp:657 #, fuzzy msgid "- ED2K network enabled.\n" msgstr "Tódalas redes están desactivadas." #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "eD2k e Kad están desactivados.\n" "Non poderás conectarte ata activar ó menos un deles." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad non se iniciará se non está activado o porto UDP.\n" "Activar o porto UDP ou desactivar Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Debe reiniciar o aMule agora.\n" "Se non o reinicia ahora, algo malo pode suceder.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Túa auto-actualización da lista de servidores está en branco.\n" "Por favor completa ao menos unha URL para sinalar un ficheiro server.met.\n" "Prema no botón \"Lista\" para introducir unha URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Ficheiros temporais" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Ficheiros entrantes" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Sinaturas Online" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Escolla un cartafol para %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Atopar o reproductor de vídeo" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Selecione o navegador" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Executable%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Editar a lista dos servidores" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Engadir aquí unha URL para descargar unha lista server.met.\n" "Só unha url nesta liña" #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Periodo de actualización: %d seg" msgstr[1] "Periodo de actualización: %d segs" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Tempo medio de gráfico: %d min" msgstr[1] "Tempo medio de gráfico: %d mins" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Escala gráfica de conexións: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Tamaño do ficheiro búfer %d byte" msgstr[1] "Tamaño do ficheiro búfer %d bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Tamaño da cola de subida %d cliente" msgstr[1] "Tamaño da cola de subida %d clientes" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Intervalo de refresco da conexion ao servidor: %d minuto" msgstr[1] "Intervalo de refresco da conexion ao servidor: %d minutos" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Intervalo de refresco da conexion ao servidor. Desactivada" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "desactivado" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "Executar comando no evento `%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Activar execución de comando no núcleo" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Comando do núcleo:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Activar execución de comando no GUI" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Comando de GUI:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "As seguintes variables serán reemprazadas:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "O tamaño mínimo debe ser máis pequeno que o máximo. Tamaño máximo ignorado." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Aviso de busca" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Principal" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "A busca de Kad non pode ser feita se non está executando Kad" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" "Non se poido realizar unha procura no eD2k se non se está conectado o eD2k" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Erro inesperado tentando buscar en Kad:" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "IDFicheiro" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Ficheiro" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Descargar en categoría" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Engadir URLs opcionais para este ficheiro" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Procurar arquivos relacionados (eD2k, búsqueda local)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Marcar o arquivo como coñecido" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Copiar o enlace eD2k ó portapapeis" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "Cancelar" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Fallou ao conectar a todos os servidores ofuscados listados. Tentándoo de " "novo sen ofuscación." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Erro ao conectar a todos os servidores." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Protocolo eD2k deshabilitado nas preferencias, non se conecta." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" "Non se atoparon servidores válidos para conectar na lista dos servidores" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Conectar a %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Conexión establecida en: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "Erro fatal conectando. A conexión a internet podría estar desactivada" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Conexión perdida con %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) parece estar caido." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) parece estar cheo." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Reintentarase a conexión automática ao servidor en %d segundos" msgstr[1] "Reintentarase a conexión automática ao servidor en %d segundo" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Conexión perdida" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Conectando a %s (%s:%i) fallou." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "ERRO: Socket inválido ó comprobar o timeout" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Tentando conectar a %s (%s:%i) fora de tempo." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Cargando ficheiro server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Ficheiro server.met non atopado!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Fallou ao cargar o ficheiro server.met '%s', atopouse formato descoñecido." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Erro ao abrir server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Ficheiro server.met corrupto, atopada marca de versión inválida: 0x%x, " "tamaño %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i servidor atopado no server.met" msgstr[1] "%i servidores atopados no server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d servidor engadido" msgstr[1] "%d servidores engadidos" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "Erro de ES lendo o ficheiro known.met: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Servidor non engadido: [%s:%d] non especifica un porto válido." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Servidor non engadido: A IP de [%s:%d] está filtrada ou é inválida." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Servidor non engadido: Servidor con IP:Porto [%s:%d] coincidinte atopado na " "lista." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Servidor engadido: Servidor [%s:%d] empregando o nome '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Estás conectado ao servidor que tenta borrar. Por favor desconéctese " "primeiro." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Erro ao abrir '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Erro ao gardar o ficheiro server.met" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Url inválida" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "Finalizando a descarga da lista dos servidores de %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Non se encontrou unha entrada de dirección no 'addresses.dat'. Por favor, " "pega unha lista de servidores válida neste arquivo para poder actualizar de " "forma automática a lista de servidores." #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Descargando lista dos servidores de %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "AVISO: especificada unha URL inválida para la actualización automática de " "servidores : %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "Erro en addresses.dat, server.met da url de auto descarga inválido" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Erro ao decarga-la lista de servidores dende %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "O servidor local está filtrado por IPFilters, reconectando a un servidor " "diferente!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Nome do servidor" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Enderezo" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Porto" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Descrición" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Usuarios" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Estático" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versión" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Está conectado ao servidor que tenta borrar. Por favor desconéctese " "primeiro. O servidor NON foi borrado." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Nome descoñecido)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "¿Estas seguro de que queres borrar o servidor estático %s?" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Servidores (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Servidor" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Conectar ao servidor" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Marcar servidor como estático" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Marcar servidor como non estático" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Marcar servidores como estáticos" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Marcar servidores como non estáticos" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Borrar servidor" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Borrar servidores" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Borrar todos os servidores" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Copia os enlaces eD2k ó portapapeis" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Reconectar ao servidor" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "¿Estas seguro de que queres borrar todos os servidores?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "¿Estás seguro de que queres borrar o servidor seleccionado(s)?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "¿Estás seguro de que queres borrar os servidores seleccionados?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "ERRO: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "AVISO: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "A nova IDcliente é %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "ATENCIÓN: ¡Reciviches ID-Baixa!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tIsto sucede porque está detrás dun cortafogos ou dun router." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPara máis información, por favor ves a http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Información recibida do servidor descoñecida! - demasiado corta" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Recibido %d novo servidor" msgstr[1] "Recibidos %d novos servidores" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Gardado completo da lista de servidores." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Servidor rexeitou o último comando" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Paquete bogus recibido do servidor: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Erro ao procesar o paquete desde o servidor: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Non se pode crear o fío da DNS para conectar a %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "IP de servidor %s (%s) está filtrada. Non conectará." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "usando ofuscación de protocolo." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Conectando a %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Non se puido aclarar a dns para o servidor %s: Imposible conectar!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Servidor non engadido: Non se especificou IP ou nome de servidor." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Servidor non engadido: Porto de servidor especificado inválido." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Estado do eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Estado Kademlia:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "Executando en %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Executando" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Estado:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Estado de conexión:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "Estado de conexión:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Estado do cortafogos:" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Non amigo" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "Conectado a amigo" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "Conectado a amigo" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "Fontes atopadas:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 #, fuzzy msgid "Indexed notes:" msgstr "Ficheiro índice non atopado: " #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Media de usuarios:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Media de ficheiros:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Non executando" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Atopados %i ficheiro compartidos" msgstr[1] "Atopados %i ficheiros compartidos" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Atopados %i ficheiro compartidos, %i descoñecido" msgstr[1] "Atopados %i ficheiros compartidos, %i descoñecidos" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "ERRO: Intento de compartir %s" #: src/SharedFileList.cpp:410 #, fuzzy, c-format msgid "Shared directory not found, skipping: %s" msgstr "servidor non atopado: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Nome de usuario" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Velocidade de descarga" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Velocidade de subida" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Dispoñible:" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Estado de subida" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Estado de descarga" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Nome do arquivo" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Ficheiros compartidos" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Peticións" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Peticións aceptadas" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Datos transferidos" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Media de compartido" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Partes obtidas" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Fontes completas" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Ruta de directorio" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Engadir Comentario/Calificación" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Editar Comentario/Calificación" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Renomear" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Engadir os ficheiros en colección á lista de tranferencia" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Copiar a &URI magnética ao portapapeis" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Copiar enlace eD2k ó portapapeis (&Fonte)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" "Copiar enlace eD2k ó portapapeis (&Fonte) (&Con opcións de encriptación)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Copiar enlace eD2k ó portapapeis (&Nome do host)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Copiar enlace eD2k ó portapapeis (&Nome do host) (Con opcións de " "&encriptación)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Copiar enlace eD2k ó portapapeis (&AICH info)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Copiar enlace eD2k ó portapapeis (&AICH info)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Necesitas ter IDALTA para crear un enlace de fonte válido" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Ficheiros compartidos (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[PartFile]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Nome do arquivo" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Datos subidos (Sesión (Total)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Overhead total (Paquetes ): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Petición de ficheiro Overhead (Paquetes): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Intercambio de fontes Overhead (Paquetes): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Servidores Overhead (Paquetes): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Overhead Kad (Paquetes ): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Cripta xerais (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Subidas activas: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Subidas agardando: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Sesión de subidas totais rematadas: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Total de subidas erradas na sesión: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Tempo medio de subida: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Datos descargados (Sesión (Total)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Fontes atopadas: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Descargas activas (pedazos): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Índice SU:BA Sesión (Total): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Velocidade media de baixada (Sesión): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Velocidade media de subida (Sesión): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Velocidade máxima de baixada (Sesión): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Velocidade máxima de subida (Sesión): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Reconexións: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Tempo dende a primeira tranferencia: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Conectado ao servidor dende: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Conexións activas (estimadas): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Lí­mite máximo de conexións rechazado: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Media de conexións (estimado): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Pico de conexións (estimado): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Clientes" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "Tamaño descoñecido" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "Filtrado" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "Vetado" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Total:%i Coñecido: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Servidores activos: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Servidores caídos: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Total: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Servidores borrados: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Servidores filtrados: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Usuarios en servidores activos: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Ficheiros nos servidores activos: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Usuarios totais: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Ficheiros totais: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Ocupación do servidor: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Número de ficheiros compartidos: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Tamaño total dos ficheiros compartidos: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Tamaño medio de arquivo: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Sistema operativo" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Non recibido" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Conexións activas (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Non dispoñible" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Nunca" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Comando `%s' con pid `%d' rematou con código de estado `%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Executar e saír." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Formato de IP inválido. Usar xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Este comando precisa dun argumento. Argumentos válidos: 'all', nome dun " "ficheiro ou un número.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Procesando hash:" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Procesando nome de ficheiro:" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Este comando precisa dun argumento. Argumentos válidos: un arquivo hash.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Non é un número válido\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Hash inválido (a lonxitude debería ser exactamente 32 caracteres)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Teclee '%s' para obter máis axuda.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Descargas (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Petición fallida cun erro descoñecido." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "A operación tivo éxito." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Petición fallida co seguinte erro: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "O filtrado de IP para clientes é %s\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "Apagado" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "Acendido" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "O filtrado de IP para servidores é %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "O nivel de filtrado de IP actual é %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Límites de ancho de banda: Subida: %u kB/s, Baixada: %u kB/s\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Conectado a %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Conectando" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "cortafogos" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "aceptar" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Descarga: \t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Subido:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Clientes en cola:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Fontes totais:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Número de resultados de busca: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Recibida unha resposta descoñecida desde o servidor, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Mostrar información de estado corta." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Mostrar estado de conexión, velocidade subida/descarga actual, etc.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Mostrar árbore de estatísticas completa." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Opcionalmente, un número entre 0-255 pode ser un argumento deste comando,\n" "o cal di cántas entradas da árbore de versión de cliente deberían " "mostrarse.\n" "Con 0 ou sen valor significa 'sen límite'.\n" "\n" "Exemplo: 'statistics 5' mostrará só as 5 versións que máis se repitan de " "calquer cliente.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Apagar o aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Rematar o núcleo remoto (amule/amuled) en funcionamiento.\n" "Isto rematará tamén o cliente en modo texto, xa que non se pode\n" "empregar sen un núcleo en funcionamiento.\n" #: src/TextClient.cpp:861 #, fuzzy msgid "Reload the given object." msgstr "Recargar o obxecto dado." #: src/TextClient.cpp:862 #, fuzzy msgid "Reload shared files list." msgstr "Recarga a lista de ficheiros compartidos." #: src/TextClient.cpp:864 #, fuzzy msgid "Reload IP filtering table." msgstr "Recargar a táboa de filtrado de IP desde ficheiro." #: src/TextClient.cpp:865 #, fuzzy msgid "Reload current IP filtering table." msgstr "Seleccionar nivel de filtrado de IP" #: src/TextClient.cpp:866 #, fuzzy msgid "Update IP filtering table from URL." msgstr "Recargar a táboa de filtrado de IP desde ficheiro." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Conectar á rede." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Isto conectará a todas as redes que estén habilitadas en opcións.\n" "Opcionalmente tamén podes especificar un servidor de forma IP:Porto, para\n" "conectar a ese servidor soamente. A IP debe ser un enderezo IPv4,\n" "ou un nome DNS." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Conectar só ó eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Conectar só a Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Desconectado da rede." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" "Isto desconectaralle de todas as redes nas que está actualmente conectado.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Desconectar só do eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Desconectar só de Kad." #: src/TextClient.cpp:879 #, fuzzy msgid "Add an eD2k or magnet link to core." msgstr "Engade un enlace eD2k o magnet ó núcleo." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "O enlace eD2k a engadir pode ser:\n" "*) un enlace a un arquivo (ed2k://|file|...), se engadirá á cola das " "descargas,\n" "*) un enlace a un servidor (ed2k://|server|...), se engadirá á lista dos " "servidores,\n" "*) ou un enlace a unha lista de servidores, neste caso, todos os servidores " "da lista\n" "se engadirán á lista dos servidores.\n" "\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Establecer un valor de preferencia." #: src/TextClient.cpp:885 #, fuzzy msgid "Set IP filtering preferences." msgstr "Establecer opcións de filtrado de IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Activar o filtrado de IP para clientes e servidores." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Desactivar o filtrado de IP para clientes e servidores." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Activar/Desactivar filtrado de IP para clientes." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Activar filtrado de IP para clientes." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Desactivar filtrado de IP para clientes." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Activar/Desactivar filtrado de IP para servidores." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Activar filtrado de IP para servidores." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Desactivar filtrado de IP para servidores." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Seleccionar nivel de filtrado de IP" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Niveis válidos no filtro 0-255, e o valor por defecto (inicial)\n" "é 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Establecer límite de ancho de banda." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "O valor dado a estos comandos ha ser en kilobytes/sec.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Establecer límite de ancho de banda de subida." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "O valor dado a estos comandos ha ser en kilobytes/sec.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Establece o límite de ancho de banda de descarga." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Obter e mostrar un valor de opcións." #: src/TextClient.cpp:907 #, fuzzy msgid "Get IP filtering preferences." msgstr "Obter opcións de filtrado de IP." #: src/TextClient.cpp:908 #, fuzzy msgid "Get IP filtering state for both clients and servers." msgstr "Obter o estado do filtro de IP para clientes e servidores." #: src/TextClient.cpp:909 #, fuzzy msgid "Get IP filtering state for clients only." msgstr "Obter o estado do filtro de IP só para clientes." #: src/TextClient.cpp:910 #, fuzzy msgid "Get IP filtering state for servers only." msgstr "Obter o estado do filtro de IP só para servidores." #: src/TextClient.cpp:911 #, fuzzy msgid "Get IP filtering level." msgstr "Seleccionar nivel de filtrado de IP" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Obter límite de ancho de banda." #: src/TextClient.cpp:915 #, fuzzy msgid "Execute a search." msgstr "Executar unha busca de kad" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Un tipo de busca ten que ser especificado dando o tipo:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Exemplo: 'search kad ficheiro' executará unha busca kad para \"ficheiro\".\n" #: src/TextClient.cpp:917 #, fuzzy msgid "Execute a global search." msgstr "Executar unha busca global." #: src/TextClient.cpp:918 #, fuzzy msgid "Execute a local search" msgstr "Executar unha busca global" #: src/TextClient.cpp:919 #, fuzzy msgid "Execute a kad search" msgstr "Executar unha busca de kad" #: src/TextClient.cpp:921 #, fuzzy msgid "Show the results of the last search." msgstr "Mostrar os resultados da última busca." #: src/TextClient.cpp:922 #, fuzzy msgid "Return the results of the previous search.\n" msgstr "Devolve o resultado da busca anterior.\n" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "Mostralo progreso dunha procura." #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "Mostralo progreso dunha procura.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Comezar descargando un ficheiro" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "O número dun ficheiro da última busca tense que dar.\n" "Exemplo: 'download 12' iniciará a descarga do ficheiro co número 12 da busca " "a busca anterior.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Pausar descarga." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Continuar descarga." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Cancelar descarga." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Establecer a prioridade da descarga." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" "Establecer a prioridade dunha descarga a Baixa, Normal, Alta ou Auto.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Establecer a prioridade a baixa." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Establecer a prioridade a normal." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Establecer a prioridade a alta." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Establecer a prioridade a auto." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Mostrar colas/listas." #: src/TextClient.cpp:952 #, fuzzy msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Mostrar cola subida/descarga, lista de servidores ou lista de ficheiro " "compartidos.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Mostrar cola de subida." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Mostrar cola de descarga." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Mostrar rexistro." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Mostrar lista de servidores." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Reiniciar rexistro." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Comando obsoleto, emprege '%s' no seu lugar." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Este comando quedou obsoleto e probablemente sexa eliminado nun futuro.\n" "Emprege '%s' en lugar dese.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Cliente texto do aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Convertendo conxuntos hash AICH antigos en '%s' a 64b en '%s'" #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "AVISO: O nome do ficheiro '%s' é inválido e foi renomeado a '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "AVISO: O ficheiro '%s' xa existe, un ficheiro novo foi renomeado a '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "Estás seguro de cancelar e borrar todos os ficheiros desta categoría?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Confirmación requerida" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Demasiadas conexións" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Todo o demais" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Selecione o filtro de visionado" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Engadir categoría" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Editar categoría" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Borrar categoría" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Fallou ao abrir o ficheiro (%s), eliminando da lista de ficheiros " "compartidos." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Petición hashset para un ficheiro descoñecido: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Resumindo subidas de ficheiro: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Suspendendo subida de ficheiro: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Fallou ao executar o comando `%s' no evento `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Descarga rematada" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "A ruta completa ao ficheiro." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "O nome do ficheiro sen a ruta." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "O hash eD2k do arquivo." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "O tamaño do ficheiro en bytes." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Tempo de actividade de descarga acomulativo." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Nova sesión de chat comezada" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Mensaxe remitente." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Fora de espazo" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Partición do disco." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Erro ao completar" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Procesando número de ficheiro %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Preguntou por hashes de partes (Só usado por ficheiros > 9.5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Non existe o ficheiro!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, o creador de enlaces eD2k do aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Benvido!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Parámetros de entrada" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Ficheiro a hashear" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Engadir URLs opcionais para este ficheiro" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Introduce aquí o arquivo do cal desexes calcular o enlace eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Introduce aquí a URL da cal desexes calcular o enlace eD2k: Engade o " "caracter / ó final para permitir o aLinkCreator engadir o nome de arquivo " "actual" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Eliminar" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Crear ligazón con codificacións de partes" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Axuda para separar ficheiros novos e raros máis rapidamente, o coste será un " "tamaño de ligazón maior" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Ficheiro Hash MD4" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Hash do arquivo eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k link" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Gardar" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Copiar ao portapapeis" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Abrir un arquivo para calcular o seu enlace eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Copiar o enlace eD2k calculado ó portapapeis" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Gardar o enlace eD2k calculado nun arquivo" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Acerca do aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Selecciona o arquivo do cal desexes calcular o enlace eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Nada para copiar agora !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Selecciona o arquivo para o enlace eD2k calculado" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Non se pode abrir" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Por favor introduza un nome de ficheiro non baleiro" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Nada para gardar agora !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, o creador de enlaces eD2k do aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Imaxes dende http://www.everaldo.com e http://www.icomania.com\n" "e http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distribuido baixo a licenza GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Hasheando..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Cancelado !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Feito en %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Xa ten engadida esta URL !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Por favor, introduza unha URL non baleira" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Non se pode abrir %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i día(s) %i hora(s) %i min %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, Estatísticas aMule en liña" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Máximo índice de DE desde que wxCas está executándose" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Máximo índice DE absoluto durante execucións anteriores de wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistema" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Deter auto recargar" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Gardar imaxe de estatísticas en liña" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Imprimir imaxe de estatísticas en liña" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Preferencias" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Acerca de wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Iniciar auto recargar" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Auto recarga detida" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Auto recarga iniciada" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Gardar imaxe de estatísticas" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Estatísticas aMule en liña" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Houbo un problema imprimindo.\n" "Tal vez túa impresora actual non esté configurada?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Imprimindo" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, Estatística de sinatura en liña de aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Basado en CAS por Pedro de Oliveira \n" "\n" "Distribuido baixo GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh Oh, non se está executando aMule..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule está iniciado" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule estase executando, pero está desconectado" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule está conectando..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh Oh, estado de aMule descoñecido..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " foi executado durante " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " está detido !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " non está conectado!" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " está conectando..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " pasou algo estraño, compróbao !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " está conectado a " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "apagar" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " conectado" #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr "con " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Total descargado: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Subido: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Descarga de sesión: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Descargado: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Subido: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Compartindo: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " ficheiro(s), Clientes en cola: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Tempo: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " en " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Media de carga de sistema (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Tempo de execución do sistema: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Directorio que contén o ficheiro amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Introduza aquí o directorio onde está teu ficheiro amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Intervalo de refresco en segundos" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Xerar un ficheiro de estatísticas sempre que se actualice" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Introduza aquí o directorio onde quere xerar a imaxe de estatísticas" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Sube periodicamente túa imaxe de estatísticas ao servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "Url FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Ruta FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Introduza aquí a URL do seu servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Introduza aquí o directorio onde poñer a súa imaxe de estatísticas no " "servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Usuario" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Introduza aquí o nome de Usuario para conectarse a teu servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "" "Introduza aquí o contrasinal de Usuario para conectarse a teu servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Intervalo de actualización de FTP en minutos" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Validado" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "O cartafol que contén teu ficheiro de sinatura" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Cartafol onde se xenera a imaxe de estatísticas" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Cargar modelo " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Porto HTTP servidor Web" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Uso da redirección de portos UPnP no porto do servidor web" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Porto UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Usar compresión gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Contrasinal de acceso total para o servidor web" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Contrasinal de invitado para o servidor web" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Permitir acceso de invitado" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Denegar acceso de invitado" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Cargar/gardar a configuración do servidor web dende/a aMule remoto" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Ruta do ficheiro de configuración de aMule. NON USAR DIRECTAMENTE!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Desactivar intérprete PHP (obsoleto)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Recompila páxinas PHP para outra petición" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Servidor Web aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "conexión do cliente web aceptada\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Petición fallida co seguinte erro: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Ficheiro índice non atopado: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sesión expirada - petición de conexión\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sesión aceptada, conectado\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sesión aceptada, non conectado\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Ningunha sesión aberta - petición de conexión\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sesión creada - petición de conexión\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Procesando petición [orixinal]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Comprobando contrasinal\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Contrasinal hash inválido\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Contrasinal aceptado\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Contrasinal erróneo\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" "Non introduciches ningún contrasinal. Un contrasinal en branco non está " "permitido.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Desconexión solicitada\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Procesando solicitude [redirixida]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "O ficheiro part %s (%s) non ten ficheiro seeds" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "O ficheiro part %s (%s) ten un ficheiro seed baleiro" #, fuzzy #~ msgid "Download status" #~ msgstr "Estado de descarga" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Frecuencia de actualización: %d seg" #~ msgstr[1] "Frecuencia de actualización: %d segs" #~ msgid "Transferring" #~ msgstr "Transferindo" #, fuzzy #~ msgid "QR: ???" #~ msgstr "QR: %u" #~ msgid "QR: %u" #~ msgstr "QR: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "En cola" #~ msgid "TODO - show progress of a search" #~ msgstr "POR FACER - mostrar o progreso dunha busca" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Creando hash AICH e MD4 para o ficheiro: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Creando hash MD4 para o ficheiro: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Creando hash AICH para o ficheiro: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "AVISO: Non se puido eliminar o '%s' orixinal despois de crear a copia de " #~ "seguranza" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "AVISO: Fallou ao eliminar %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Calificación (total) :" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Tentar transferir partes completas en todas as subidas" #~ msgid "Networks window" #~ msgstr "Fiestra de redes" #~ msgid "Searches window" #~ msgstr "Fiestra de búsquedas" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Descargando" #~ msgid "Shared files window" #~ msgstr "Fiestra de arquivos compartidos" #~ msgid "Messages window" #~ msgstr "Fiestra de mensaxes" #~ msgid "Statistics graph window" #~ msgstr "Fiestra del gráfico de las estadísticas" #~ msgid "Preferences settings window" #~ msgstr "Fiestra da configuración das preferencias" #~ msgid "Transfers" #~ msgstr "Transferencias" #~ msgid "Files transfers window" #~ msgstr "Fiestra de transferencia de arquivos" #~ msgid "Unban" #~ msgstr "Desvetado" #~ msgid "Show Uploads" #~ msgstr "Ver Subidas" #~ msgid "Show Queue" #~ msgstr "Ver cola" #~ msgid "Select View" #~ msgstr "Selecione ver" #~ msgid "Client Software" #~ msgstr "Software do cliente" #~ msgid "Waited" #~ msgstr "Agardando" #~ msgid "Upload Time" #~ msgstr "Tempo de subida" #~ msgid "Upload/Download" #~ msgstr "Subida/Descarga" #~ msgid "Remote Status" #~ msgstr "Estado remoto" #~ msgid "File Priority" #~ msgstr "Prioridade do ficheiro" #~ msgid "Score" #~ msgstr "Puntuación" #~ msgid "Asked" #~ msgstr "Pedido" #~ msgid "Last Seen" #~ msgstr "Última vez visto" #~ msgid "Entered Queue" #~ msgstr "Entrada en cola" #~ msgid "Transferred Up" #~ msgstr "Subido" #~ msgid "Transferred Down" #~ msgstr "Descargado" #~ msgid "Userhash" #~ msgstr "Hash do usuario" #~ msgid "Encrypted" #~ msgstr "Cifrado" #~ msgid "Shows Upload / Up-queue" #~ msgstr "Mostrar Subida / Cola de subida" #~ msgid "Clients on queue :" #~ msgstr "Clientes en cola :" #~ msgid "Current Session" #~ msgstr "Sesión actual" #~ msgid "Total" #~ msgstr "Total" #~ msgid "Requested :" #~ msgstr "Petición :" #~ msgid "Files Transfers Window" #~ msgstr "Fiestra de transferencias de ficheiros" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Usuarios totais: %s | Ficheiros totais: %s" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "" #~ "AVISO: Non se puido eliminar o '%s' orixinal despois de crear a copia de " #~ "seguranza" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country(): Fallou ao cargar o dato do país desde" #~ msgid "Get IPFilter level." #~ msgstr "Obter nivel de filtrado de IP." #~ msgid "Makes a search." #~ msgstr "Facer unha busca." #, fuzzy #~ msgid "Killed!" #~ msgstr "Erro" #, fuzzy #~ msgid "Using amuleweb in '%s'." #~ msgstr "Executar amuleweb ao inicio" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "Apagar o aMule." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "As seguintes opcións foros cambiadas nesta versión por razóns de " #~ "seguridade:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Activada o soporte de ofusación de protocolo para conexións entrantes e " #~ "saíntes.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Desactivada a actualización da lista de servidores desde outro cliente " #~ "ou servidores.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Para máis información da razón destes cambios, busque información\n" #~ " de \"fake servers\" na wiki de aMule http://wiki.amule.org.\n" #~ "É importante que limpe calquer servidor falso da súa lista de servidores " #~ "para que aMule funcione correctamente." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "Adicionalmente, has opción do navegador foron reiniciadas as por defecto " #~ "no sistema. Por favor configure as opción do seu navegador de novo se " #~ "fora preciso.\n" #~ msgid "Fetching status..." #~ msgstr "Obtendo estado..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Usuarios: E: %s K: %s | Ficheiros E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Cliente %s en IP: Porto %s:%d usando %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() devolveu NULL" #~ msgid "Firewalled" #~ msgstr "Cortafogos" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "Cargada %d imaxe de bandeiras." #~ msgstr[1] "Cargadas %d imaxes de bandeiras." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "" #~ "O ficheiro %s é demasiado grande para o Donkey: o máximo permitido é 4 GB." #~ msgid "User:" #~ msgstr "Usuario:" #~ msgid "System:" #~ msgstr "Sistema:" #~ msgid "No handler for this file type." #~ msgstr "Sen asociar este tipo de ficheiro." #~ msgid "File was not saved" #~ msgstr "O ficheiro non foi gardado" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "Conexión fallida. Non se puido conectar ao anfitrión especificado\n" #~ msgid "" #~ "Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ "Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgid "Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr "Copyright (C) 2002 Petar Maymounkov\n" #~ msgid "Message Filter" #~ msgstr "Filtro de mensaxe" #~ msgid "Gui Tweaks" #~ msgstr "Tweaks Gui" #~ msgid "Core Tweaks" #~ msgstr "Tweaks núcleo" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Retardo das mensaxes emerxentes en segs" #~ msgid "Show part file number before file name" #~ msgstr "Mostrar o número da parte do ficheiro antes do nome do ficheiro" #~ msgid "Skin Support" #~ msgstr "Soporte para peles" #~ msgid "- no skins available -" #~ msgstr "- sen temas dispoñilbes -" #~ msgid "Online Signature Directory:" #~ msgstr "Directorio de Sinatura Online:" #~ msgid "Show messages in log" #~ msgstr "Amosar mensaxes no rexistro (log)" #~ msgid "Filtering Options:" #~ msgstr "Opcións de filtrado:" #~ msgid "UDP port for extended server requests (TCP+3):" #~ msgstr "Porto UDP para peticións extendidas ó servidor (TCP+3):" #~ msgid "Line Capacities" #~ msgstr "Capacidade de liña" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Nota: Estos valores sólo\n" #~ " se usan para las estadísticas." #~ msgid "Standard client TCP Port:" #~ msgstr "Porto do cliente TCP estándar:" #~ msgid "Extended client UDP Port:" #~ msgstr "Porto UDP extendido do cliente:" #~ msgid "Bind Address" #~ msgstr "Enderezo de ligazón" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "Porto UDP para peticións extendidas ao servidor (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "Máximo de fontes por ficheiro" #~ msgid "Connection limits" #~ msgstr "Límites de conexión" #~ msgid "Universal Plug and Play" #~ msgstr "Plug and Play universal" #~ msgid "Enable UPnP" #~ msgstr "Activar UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "Porto TCP UPnP:" #~ msgid "Start next paused file when a file completed" #~ msgstr "Descargar seguinte ficheiro pausado cando se complete outro" #~ msgid "Check disk space" #~ msgstr "Comprobar espazo no disco" #~ msgid "Min disk space:" #~ msgstr "Espazo mínimo no disco:" #~ msgid "Incoming" #~ msgstr "Directorio entrante" #~ msgid "Temporary" #~ msgstr "Directorio temporal" #~ msgid "Shared" #~ msgstr "Compartido" #~ msgid "Select Statistics Colors" #~ msgstr "Seleccionar cores das estatísticas" #~ msgid "Download Queue Files Progress" #~ msgstr "Progreso dos ficheiros da lista de descarga" #~ msgid "Show percentage" #~ msgstr "Mostrar porcentaxe" #~ msgid "Show progressbar " #~ msgstr "Mostrar barra de progreso" #~ msgid "Enable skin support " #~ msgstr "Activar soporte de temas" #~ msgid "Skin:" #~ msgstr "Tema:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "" #~ "Ordenar automaticamente ficheiros na cola de descarga (Alto gasto de CPU)" #~ msgid "Show Fast eD2k Links Handler" #~ msgstr "Mostrar xestión rápida de enlaces eD2k" #~ msgid "Web server port" #~ msgstr "Porto servidor Web" #~ msgid "Enable UPnP port forwarding on the web server port" #~ msgstr "Habilitar redirección do porto UPnP no porto do servidor web" #~ msgid "Web server UPnP TCP port" #~ msgstr "Porto TCP UPnP do servidor Web" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "IP da interface que está escoitando\n" #~ "(baleiro para calquera)" #~ msgid "TCP port" #~ msgstr "Porto TCP" #~ msgid "Who can see shared files:" #~ msgstr "Quen pode ver os ficheiros compartidos:" #~ msgid "Event types" #~ msgstr "Tipos de evento" #~ msgid "ERROR: can not accept web client connection\n" #~ msgstr "ERRO: non se pode aceptar a conexión do cliente web\n" #~ msgid "" #~ "Your Auto-update server list is empty.\n" #~ "'Auto-update server list at startup will be disabled." #~ msgstr "" #~ "A tua lista auto-actualizable dos servidores esta baleira.\n" #~ "A lista dos servidores auto-actualizable ó inicio será desactivada." #~ msgid "ERROR: Invalid part.met fileversion: %s ==> %s" #~ msgstr "ERRO: Arquivo part.met inválido versión do arquivo: %s ==> %s" #~ msgid "Makes aMule promt before exiting." #~ msgstr "Fai que aMule pregunte antes de saír." #~ msgid "Bandwith limits" #~ msgstr "Ancho de banda" #~ msgid "This UDP port is used for extended ed2k requests and Kad network" #~ msgstr "" #~ "Este porto UDP emprégase para peticiones extendidas das redes eD2k e Kad" #~ msgid "Show overhead bandwith" #~ msgstr "Mostrar ancho de banda excedente" #~ msgid "I.C.H. active" #~ msgstr "Activar I.C.H." #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICH confía en todos os hash (non recomendado)" #~ msgid "Disk space" #~ msgstr "Espazo no disco" #~ msgid "Create Backup for preview" #~ msgstr "Crear copia de seguridade para previsualizar" #~ msgid "Advanced Settings" #~ msgstr "Opcións avanzadas" #~ msgid "Progressbar Style" #~ msgstr "Estilo da barra de progreso" #~ msgid "Column Sorting" #~ msgstr "Ordenación de columna" #~ msgid "Misc Gui Tweaks" #~ msgstr "Varios Tweaks Gui" #~ msgid "File Options" #~ msgstr "Opcións de ficheiro" #~ msgid "Status text" #~ msgstr "Estado do texto" #~ msgid "Pop-up status text" #~ msgstr "Estado da mensaxe emerxente" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ "Cliente p2p multiplataforma baseado no eMule\n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr " Páxina web: http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr " Foro: http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " Contacto: admin@amule.org (asuntos de administración) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr "Parte do aMule baséase en \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " Copyright (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "Para unha película, podes poñer a súa duración, descrición, o idioma ...\n" #~ "e se é unha falsificación, podes informar aos demais usuarios de aMule." #~ msgid "Misc Options" #~ msgstr "Opcións varias" #~ msgid "Server Options" #~ msgstr "Opcións do servidor" #~ msgid "Display server motd when connected ..." #~ msgstr "Mostrar motd do servidor cando estés conectado ..." #~ msgid "eD2k Info" #~ msgstr "Información eD2k" #~ msgid "Disable/Enable" #~ msgstr "Desactivar/Activar" #~ msgid "Authentication" #~ msgstr "Autenticación" #~ msgid "General Settings" #~ msgstr "Opcións xerais" #~ msgid "Hard limit" #~ msgstr "Límite superior" #~ msgid "Max Connections" #~ msgstr "Conexións máximas" #~ msgid "GUI Tweaks" #~ msgstr "Tweaks GUI" #~ msgid "Remote Control" #~ msgstr "Control remota" #~ msgid "Unable to determine selected browser!" #~ msgstr "Imposible determinar o navegador seleccionado!" #~ msgid "User Defined" #~ msgstr "Definido polo usuario" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - a Mula de Linux" #~ msgid "System Default" #~ msgstr "Configuración por defecto do sistema" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Seleccione seu navegador aquí" #~ msgid "Custom Browser:" #~ msgstr "Navegador personalizado:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Introduza o nome do seu navegador. Para usar un navegador persoal, " #~ "seleccione personalizado no menú de arriba." #~ msgid "Please wait... " #~ msgstr "Por favor agarde... " #~ msgid "" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed." #~ msgstr "" #~ "Ademais, a configuración do navegador foi restablecida á configuración " #~ "por defecto do sistema. Por favor configure as opción do seu navegador de " #~ "novo se é preciso." #~ msgid "Could not determine the command for running the browser." #~ msgstr "Non se puido determinar o comando para executar o navegador." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "Conexión EC fallida. Resposta baleira." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "ExternalConn: Acceso denegado porque: " #~ msgid "ExternalConn: Access denied" #~ msgstr "ExternalConn: Acceso denegado" #~ msgid "ExternalConn: Bad reply from server. Connection closed." #~ msgstr "ExternalConn: Resposta do servidor mala. Conexión pechada." #~ msgid "The ed2k hash of the file." #~ msgstr "O hash ed2k do ficheiro." #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Copiar ED2K en&lace o suxeitapapeis" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "Copiar enlace ED2K ao portapapeis (fonte&S)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "" #~ "Copiar ligazón ED2k ao portapapeis (Fonte) (&Con opcións de cifrado)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "Copiar ligazón ED2k ao portapapeis (Nome do &host)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "" #~ "Copiar ligazón ED2k ao portapapeis (Nome do host) (Con opcións de " #~ "&cifrado)" #~ msgid "Copy ED2k link to clipboard (&AICH info)" #~ msgstr "Copiar ED2K enlace o suxeitapapeis (&AICH info)" #~ msgid "Warning" #~ msgstr "Aviso" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "Erro: Non se puido escoitar o porto TCP." #~ msgid "Error: can not accept web client connection\n" #~ msgstr "Error: no se pode acceptar conexións do cliente web\n" #~ msgid "Webserver HTTP port" #~ msgstr "Porto HTTP do servidor Web" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "Usar seguimento do porto UPnP no porto do servidor web" #~ msgid "Full access password for webserver" #~ msgstr "Contrasinal de acceso completo para servidor web" #~ msgid "Guest password for webserver" #~ msgstr "Contrasinal de invitado para servidor web" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "Cargar/gardar opcións do servidor web desde/a aMule remoto" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "Introduza aquí o ficheiro que queira codificar como enlace Ed2k" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "Introduza aquí a URL que queira engadir ao ligazón Ed2k: Engade / ao " #~ "final, para deixar a aLinkCreator continuar co actual nome de ficheiro" #~ msgid "Ed2k File Hash" #~ msgstr "Ficheiro Hash ed2k" #~ msgid "Ed2k link" #~ msgstr "Ligazón ed2k" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "Abre un ficheiro para crear un ligazón ed2k" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "Copiar enlace ED2K creado ao portapapeis" #~ msgid "Save computed ed2k link to file" #~ msgstr "Gardar un ligazón ed2k creado a un ficheiro" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "Selecciona o ficheiro do cal quere crear un ligazón ed2k" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "Selecciona o ficheiro ao ligazón ed2k creado" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, o creador de enlaces ed2k de aMule\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps de http://www.everaldo.com e http://www.icomania.com\n" #~ "e http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distribuido baixo GPL" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, o creador de ligazóns ed2k de aMule" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Copiar enlace ED2K ao portapapeis" #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Copiar enlace ED2K ao portapapeis" #~ msgid "ED2K: Connecting" #~ msgstr "ED2K: Conectando" #~ msgid "ED2K: Disconnected" #~ msgstr "ED2K: Desconectado" #~ msgid "Warning: Unable to open skin file '%s' for read" #~ msgstr "Aviso: Imposible abrir o ficheiro de tema '%s' para lectura" #~ msgid "ed2k network" #~ msgstr "Red ed2k" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "Túa auto-actualización da lista de servidores está en branco.\n" #~ "'Auto-actualizar lista de servidores ao iniciar' deshabilitarase." #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "As redes ED2K e Kas están desactivadas.\n" #~ "Non poderá conectar a non ser que active algunha delas." #~ msgid "Edit Serverlist" #~ msgstr "Editar lista de servidores" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "Erro: non se puido aceptar unha nova conexión externa" #~ msgid "ED2K is disabled in preferences." #~ msgstr "ED2K está desactivado nas preferencias." #~ msgid "ExternalConn: shutdown requested" #~ msgstr "Conexión externa: apagado solicitado" #~ msgid "Already connected to ED2K." #~ msgstr "Xa está conectado a ED2K." #~ msgid "Connecting to ED2K..." #~ msgstr "Conectando a ED2K..." #~ msgid "Disconnected from ED2K." #~ msgstr "Desconectado de ED2K." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "Conexión externa: recibido opcode inválido: %#x" #~ msgid "ED2K Status:" #~ msgstr "Estado ED2K:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "Velocidade media de descarga (Sesión): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "Velocidade media de subida (Sesión): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "Velocidade de descarga máxima (Sesión): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "Velocidade de subida máxima (Sesión): %s" #~ msgid "Average filesize: %s" #~ msgstr "Tamaño medio dos ficheiros: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "A busca ED2K non pode ser feita se non está conectado a ED2K" #~ msgid "Error: " #~ msgstr "Erro: " #~ msgid "Warning: " #~ msgstr "Aviso: " #~ msgid "Search related files (ED2k, local server)" #~ msgstr "Buscar ficheiros similares (ED2k, servidor local)" #~ msgid "Error" #~ msgstr "Erro" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "AVISO: Non pode engadir a si mesmo como unha fonte para unha ligazón ed2k " #~ "mentras teña id baixa." #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "Por favor estableza o seu reproductor de vídeo preferido nas " #~ "preferencias.\n" #~ "Entretanto, aMule tentará empregar o mplayer e recibirá este aviso en " #~ "todas as previsualizacións" #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "Erro: Non se pode abri-lo ficheiro part.met: %s => %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "Erro: o tamaño do ficheiro part.met é 0: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "Erro: Versión de ficheiro part.met inválida: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "Perigo: %s pode estar corrupto (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "Erro inesperado ao completar o ficheiro %s. Ficheiro pausado" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "Perigo: Non se pode hashear o part descargado - hahset incompleto para '%" #~ "s'" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "Erro: Non se puido hashear o part descargado - hahset incompleto (%s) - " #~ "Isto non debe pasar nunca" #~ msgid "Insufficient Diskspace" #~ msgstr "Espazo en disco insuficiente" #~ msgid "Warning: known.met cannot be opened." #~ msgstr "Aviso: non se pode abrir known.met." #~ msgid "Warning: Knownfile list corrupted, contains invalid header." #~ msgstr "" #~ "Aviso: Lista de ficheiros coñecidos corrupta, contén cabeceira inválida." #~ msgid "ERROR! Attempted to share %s" #~ msgstr "ERRO! Tentando compartir %s" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "Rede ED2K desactivada nas preferencias, non conectando." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "Non hai servidores válidos na lista de servidores" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "Erro: Socket inválido ao comprobar timeout" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions." #~ msgstr "" #~ "Error: Imposible cargar o arquivo de respaldo. Procure no http://forum." #~ "amule.org solucións de recuperación de arquivos .part.met" #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "Non se pode converter a ligazón magnética a ed2k: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "Ligazón ed2k inválido! Erro: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "Límite de ancho de banda: SU: %u kB/s, DE: %u kB/s.\n" #~ msgid "Shutdown aMule." #~ msgstr "Apaga aMule." #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "Pechar o núcleo remoto de execución (amule/amuled).\n" #~ "Isto tamén pechará o cliente de texto, isto non fará nada se non hai\n" #~ "un núcleo en execución.\n" #~ msgid "Connect to ED2K only." #~ msgstr "Conectar só a ED2K." #~ msgid "Disconnect from ED2K only." #~ msgstr "Desconectar só de ED2K." #~ msgid "Adds an ed2k or magnet link to core." #~ msgstr "Engade un ed2k ou unha ligazón magnética ao núcleo." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "A ligazón edk2 a engadir pode ser:\n" #~ "*) unha ligazón de ficheiro (ed2k://|file|...), será engadido na cola de " #~ "descarga,\n" #~ "*) unha ligazón de servidor (ed2k://|server|...), será engadido á lista " #~ "de servidores,\n" #~ "*) ou unha ligazón de lista de servidores, no que todos os servidores na " #~ "lista serán\n" #~ " á lista de servidores.\n" #~ "\n" #~ "A ligazón magnética debe conter o hash ed2k e a lonxitude do ficheiro.\n" #~ msgid "Deprecated command, now '%s'." #~ msgstr "Comando obsoleto, empregue agora '%s'." #~ msgid "Error: %s (%s) - %s" #~ msgstr "Erro: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "Aviso: %s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "Erro: Disco cheo" #~ msgid "Error: Partmet not found" #~ msgstr "Erro: Partmet non atopado" #~ msgid "Error: IO error!" #~ msgstr "Erro: Erro ES!" #~ msgid "Error: Failed!" #~ msgstr "Erro: Fallou!" #~ msgid "ED2K Link: " #~ msgstr "Ligazón ED2K: " #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "Prema aquí para engadir un ligazón ed2k na túa cola de descargas." #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "Procurar máis resultados en ED2K. Non soportado todavía por Kad." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Límite de ancho de banda" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "Este é o porto estándar ED2K e non pode ser deshabilitado." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "" #~ "Este porto UDP é usado para extender as peticións ED2K e a rede Kad." #~ msgid "Hard Limit" #~ msgstr "Límite máximo" #~ msgid "Connection Limits" #~ msgstr "Límite de conexións" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Actualizar automaticamente a lista de servidores ao inicio" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Actualizar a lista de servidores ao conectar a un servidor" #~ msgid "Update serverlist when a client connect" #~ msgstr "Actualizar lista de servidores ao conectar a un cliente" #~ msgid "Disk Space" #~ msgstr "Espazo en disco" #~ msgid "Check Disk Space" #~ msgstr "Comprobar espazo en disco" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "Seleccione isto se queres que aMule comprobe teu espazo en disco" #~ msgid "Min Disk Space:" #~ msgstr "Espazo en disco mínimo:" #~ msgid "Incoming Directory :" #~ msgstr "Directorio entrante :" #~ msgid "Temporary Directory :" #~ msgstr "Directorio temporal :" #~ msgid "Shared Directories" #~ msgstr "Directorios compartidos" #~ msgid "Create Backup to preview" #~ msgstr "Crear copia de seguranza para previsualizar" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Mostrar xestión rápida de ligazóns ED2K" #~ msgid "Webserver Parameters" #~ msgstr "Parámetros do servidor web" #~ msgid "Webserver port" #~ msgstr "Porto do servidor web" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "Activar o seguimento do porto UPnP no porto do servidor web" #~ msgid "Webserver UPnP TCP port" #~ msgstr "Porto Tcp UPnP do servidor web" #~ msgid "Serverlist" #~ msgstr "Lista de servidores" #~ msgid "Manual Server Add : Name" #~ msgstr "Engadir servidor manualmente: Nome" #~ msgid "No One" #~ msgstr "Ninguén" #~ msgid "Speed Limits:" #~ msgstr "Límite de velocidade: " #~ msgid "Download Speed: %.1f" #~ msgstr "Velocidade de descarga: %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "Velocidade de subida: %.1f" #~ msgid "TCP Port: %d" #~ msgstr "Porto TCP: %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "Porto TCP: Non está listo" #~ msgid "UDP Port: %d" #~ msgstr "Porto UDP: %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "Porto UDP: Non está listo" #~ msgid "Shared Files: %d" #~ msgstr "Ficheiros compartidos: %d" #~ msgid "Queued Clients: %d" #~ msgstr "Clientes en cola: %d" #~ msgid "Upload Limit" #~ msgstr "Límite de subida" #~ msgid "Download Limit" #~ msgstr "Lí­mite de descarga" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "Non hai lista de servidores no ficheiro 'addresses.dat': Por favor copie " #~ "un enderezo válido neste ficheiro para auto-actualizar a súa lista de " #~ "servidores" #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "" #~ "Aviso, URL especificada para auto-actualización de servidores, inválida: %" #~ "s" #~ msgid "webserver running on pid %d" #~ msgstr "servidor web executándose no pid %d" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "Solicitou executar webserver ao inicio, pero non se pode executar o " #~ "binario amuleweb. Por favor instale o paquete que conteña o aMule " #~ "webserver, ou compile aMule usando --enable-webserver e execute make " #~ "install" #~ msgid "Disconnected from ED2K" #~ msgstr "Desconectado de ED2K" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "" #~ "Fallou ao abrir o ficheiro de lista de amigos 'emfriends.met' para ler!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "" #~ "Fallou ao abrir o ficheiro da lista de amigos 'emfriends.met' para " #~ "escribir!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "ERRO: -Non se pode abrir o ficheiro part)" #~ msgid "Mb" #~ msgstr "Mb" #~ msgid "Can't create web socket thread\n" #~ msgstr "Imposible crear un socket web\n" #~ msgid "Web Server: Started\n" #~ msgstr "Servidor Web: Iniciado\n" #~ msgid "Not Supported" #~ msgstr "Non soportado" #~ msgid "LowID: %u (%.2f%% Total %.2f%% Known)" #~ msgstr "IDBaixa: %u (%.2f%% Total %.2f%% Coñecido)" #~ msgid "SecIdent On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgstr "IdentSeg On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgid "Browse wav" #~ msgstr "Examinar wav" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "Ficheiro wav (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "Sen comentario(s)" #~ msgid "" #~ "Note: These values are\n" #~ "only used for statistics." #~ msgstr "" #~ "Nota: Estes valores só\n" #~ "se empregaran para as estadísticas" #~ msgid "Notifications" #~ msgstr "Notificacións" #~ msgid "Messages popup" #~ msgstr "Mensaxes emerxentes" #~ msgid "Use sound" #~ msgstr "Usar son" #~ msgid "Pop out when :" #~ msgstr "Notificar cando :" #~ msgid "New entry on log" #~ msgstr "Nova entrada no rexistro" #~ msgid "Starts a new chat session" #~ msgstr "Iniciar unha nova sesión de chat" #~ msgid "A new chat message is received" #~ msgstr "Recíbese unha nova mensaxe de chat" #~ msgid "A download is added or finished" #~ msgstr "Engádese ou remátase unha descarga" #~ msgid "New aMule version detected" #~ msgstr "Nova versión de aMule detectada" #~ msgid "Urgent OOD, serverconnection lost" #~ msgstr "OOD urxente, perdida conexión co servidor" #~ msgid "Notify by Mail" #~ msgstr "Notificar por correo" #~ msgid "Send an Email when transfer complete." #~ msgstr "Enviar un correo electrónico cando se completa unha transferencia." #~ msgid "SMTP server :" #~ msgstr "Servidor SMTP :" #~ msgid "Email Address :" #~ msgstr "Correo electrónico :" #~ msgid ":" #~ msgstr ":" #~ msgid "" #~ "The selected locale seems not to be installed on your box\n" #~ "You must generate it to use this language.\n" #~ "A good start on linux systems is the file /etc/locale.gen and the package " #~ "'locales'\n" #~ "Good luck!\n" #~ "(Note: I'll try to set it anyway)" #~ msgstr "" #~ "O idioma seleccionado non parece estar instalado\n" #~ "Debe xeralo para usar esta linguaxe.\n" #~ "Un bo comezo en sistemas linux é o ficheiro /etc/locale.gen e o paquete " #~ "'locales'\n" #~ "Boa sorte!\n" #~ "(Nota: Tentarei arreglalo de todas formas)" #~ msgid "Never show this again" #~ msgstr "Non mostrar outra vez" #~ msgid "Enable/Disable" #~ msgstr "Activar/Desactivar" amule_2.3.1+git20151120.0023527bc2.orig/po/he.po0000644000175000017500000062315412611472361017070 0ustar morphmorph# Hebrew translations for amule package. # This file is distributed under the same license as the amule package. # , 2008. # , 2008. # # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2008-04-11 00:21+0300\n" "Last-Translator: Peace Kramer \n" "Language-Team: Hebrew\n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "הוסף חבר" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "הזנת כתובת IP ומבואה תקינים!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "מידע" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "גיבוב-המשתמש הספציפי אינו תקף!" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "פתיחת הקובץ %s·(%s נכשלה" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "נכשל" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 #, fuzzy msgid "aMule shutdown completed." msgstr "הורדה הסתיימה" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "אישרור יצאיה" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "גישה חיצונית חדשה התקבלה" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "אזהרה" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "מידע" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" #: src/amule.cpp:581 msgid "Server list download" msgstr "" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "תרגיש חופשי לדוואח על כל שגיאה ל http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" #: src/amule.cpp:1116 #, fuzzy msgid "Server hostname notified" msgstr "שם שרת:" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "שגיאה: לא יכול לפתוח קובץ יומן." #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "היומן אופס." #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "" #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "" #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "עם מ\"ז נמוך (LowID)" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "עם מ\"ז גבוהה (HighID)" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "" #: src/amule.cpp:1888 msgid "Kad started." msgstr "קאד התחיל." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "קאד נעצר." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "קאד מחובר (בסדר)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "קאד מחובר (מאחורי חומת אש)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "מנותק מקאד." #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "אי אפשר להשתמש ברשת הקאד אם מוואת UDP מבוטלת בהעדפות, לא התחיל." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "קאד מבוטל בהעדפות, לא מתחבר." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "זהו אֵימיול %s המבוסס על אִמיול" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "פועל על %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "בקר ב http://www.amule.org כדי לבדוק האם ישנה גירסה חדישה זמינה." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "אימיול שלט רחוק" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "צילום:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "קאדימליה: תקשורת עמית לעמית מנותבת המבוסס על ה XOR המטרי.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "הודעה" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "מתחבר" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "קאד: חסום חומתאש" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "קאד: מחובר" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "קאד: מתחבר" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "קאד: מכובה" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "ביטול" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "הפסק את ניסיונות ההתחברות הנוכחיים" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "מנותק" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "התנתק מהרשתות שאליהם אתה מחובר כעת" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "התחבר" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "התחבר לרשתות שמאופשרות כרגע" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "מעלה: %.1f(%.1f) | מוריד: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "מעלה: %.1f | מוריד: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "אימיול (%s | מחובר)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "אימיול (%s | מנותק)" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "האם אתה באמת רוצה לצאת מאימיול?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "אישרור יצאיה" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "ספריית הסקינים '%s' לא קיימת" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "רשתות" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "חלון הרשתות" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "חיפושים" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "חלון החיפושים" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "הורדות" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "מוריד מהרשת" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "חלון הקבצים המשותפים" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "הודעות" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "חלון ההודעות" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "סטטיסטיקות" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "חלון גרפי הסטטיסטיקה" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "העדפות" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "חלון הגדרת ההעדפות" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "ייבא" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "כלי הייבא עבור קובץ-החלקים" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "אודות" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "אודות/עזרה" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "אֵימיול" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "שגיאה סופנית: יצירת קוצב-זמן נכשלה" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "התחבר לאימיול מרוחק" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "שגיאה סופנית: יצירת קוצב-זמן נכשלה" #: src/amule-remote-gui.cpp:274 #, fuzzy msgid "Going to event loop..." msgstr "מנסה לשחזר את המידע של הקובץ" #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "מתחבר" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "התחברות נכשלה " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "הכול" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "לא ידוע" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "הניסיון לקבל את רשימת הקבצים המשותפים מהמשתמש '%s' כשלה." #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr "(חיקוי אימיול בגרסת %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr "(חיקוי אימיול)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "אקס-מיול (חיקוי אימיול)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.איקס (מבוסס על אימיול בגרסת 0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "כינוי:%s מ\"ז: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "בוּקַש: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" msgstr[1] "" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" msgstr[1] "" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "בקשה עבור קובץ לא ידוע" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "סוננה הודעה מ '%s'·(IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "הודעה חדשה מ '%s'·(IP:%s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "המשתמש %s (%u) ביקש את רשימת הקבצים המשותפים שלך בתקייה %s -> נדחה" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, fuzzy, c-format msgid "WARNING: %s cannot be opened." msgstr "אזהרה: לא ניתן לפתוח את הקובץ known.met." #: src/CanceledFileList.cpp:61 #, fuzzy msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "אזהרה: רשימת הקבצים-המכורים פגומה, מכילה כותר פגום." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "שגיאת קריאה/כתיבה תוך כדי הקובץ known.met: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "שגיאה במהלך שמירת הקובץ known.met: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "קטיגוריה" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "הוסף לחברים" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "" #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "מ\"ז נמוך (LowID)" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "מ\"ז גבוה (HighID)" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "מחובר" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "מנותק" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "המשתמש %s (%u) ביקש את רשימת הקבצים המשותפים שלך -> אושר" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "המשתמש %s (%u) ביקש את רשימת הקבצים המשותפים שלך -> נדחה" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "המשתמש %s (%u) ביקש את רשימת התקיות המשותפים שלך -> אושר" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "המשתמש %s (%u) ביקש את רשימת התקיות המשותפים שלך -> נדחה" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "המשתמש %s (%u) ביקש את רשימת הקבצים המשותפים שלך בתקיה %s -> אושר" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "המשתמש %s (%u) ביקש את רשימת הקבצים המשותפים שלך בתקייה %s -> נדחה" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "משתמש %s·(%u) משתף את התקייה %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "משתמש %s·(%u) שלח רשימת תקיות משותף בלי שהתבקש." #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "משתמש %s (%u) שלח רשימה של קבצים משותפים עבור הספריה %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "משתמש %s (%u) סיים לשלוח את רשימת הקבצים המשותפים" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "משתמש %s·(%u) שלח רשימה של קבצים משותפים מבלי שהתבקש" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "משתמש %s (%u) שלל גישה לרשימת הקבצים/תקיות שלו" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "הערות על הקובץ" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "שם משתמש" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "שם קובץ" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "דרוג" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "הערה" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "אין הערות" #: src/CommentDialogLst.cpp:105 #, fuzzy, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u הערה" msgstr[1] "%u הערה" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "אוטומטי [נמוך]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "אוטומטי [לא]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "אוטומטי [גבוה]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "מאוד נמוך" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "נמוך" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "רגיל" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "גבוה" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "מאוד גבוה" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "שחרור" #: src/DataToText.cpp:62 msgid "Asking" msgstr "מבקש" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "מתחבר דרך השרת" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "התור מלא" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "על התור" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "מוריד מהרשת" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "מקבל קבוצת גיבובים" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "אין חלקים נדרשים" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "לא יכול לחבר מ\"ז נמוך (LowID) למ\"ז נמוך (LowID)" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "יותר מדי חיבורים" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "מחתבר באמצעות קאד" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "יותר מדי חיבורי קאד" #: src/DataToText.cpp:73 msgid "Banned" msgstr "חסום" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "שגיאת התחברות" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "התור המרוחק מלא" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "חמורML ישן" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "חמורML חדש" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "תואם אִימיול" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "שרת מקומי" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "שרת מרוחק" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "קאד" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "החלפת מקורות" #: src/DataToText.cpp:132 msgid "Passive" msgstr "פאסיבי" #: src/DataToText.cpp:133 msgid "Link" msgstr "קישור" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "מזריעי מקורות" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "הסתיים" #: src/DataToText.cpp:146 msgid "In progress" msgstr "בתהליך" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "נכנס לתור" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "כבר מוריד" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "פורמט הקובץ הזמני לא מוכר או פגום" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "גודל" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "הועברו" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "מהירות" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "התקדמות" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "מקורות" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "עדיפות" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "מצב" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "זמן שנשאר" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "פעם אחרונה שנראה שלם" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "פעם אחרונה שנתקבל" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "האם אתה בטוח שברצונך למחוק את הקובץ שנבחר?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "האם אתה בטוח שברצונל ךמחוק את הקבצים שנבחרו?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "אוטמטי" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&עצור" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&השהה" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&המשך" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "נ&קה מה שהסתיים" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "החלף כל A4AF לקובץ הזה עכשיו" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "החלף כל A4AF לקובץ הזה (אוטומטי)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "החלף את כל ה A4AF לכל קובץ אחר, עכשיו" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "אפשרויות מורחבות" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "תקדימון" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "הראה &פרטי קבצים" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "הראה את כל ההערות" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "העתק מגנט URI ללוח" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "העתק משוב ללוח" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "לא מיוחס" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "ייחס לקטיגוריה" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&תפתח את הקובץ" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "הכנס שם חדש עבור קובץ זה" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "שינוי שם לקובץ" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d·%H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "הורדות (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "תקדימון לקובץ" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "שגיאה: הרצת נגן הסרטים נכשלה! הפקודה: '%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "קורא את הספרייה הזמנית" #: src/DownloadQueue.cpp:132 #, fuzzy, c-format msgid "Loading PartFile %u of %u" msgstr "טוען מידע מקובץ הורדות ישן (%u·מ·%u)" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "לא נמצא קובץ-חלקים." #: src/DownloadQueue.cpp:168 #, fuzzy, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "נמצא %u קובץ-חלקים" msgstr[1] "נמצא %u קובץ-חלקים" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "מוריד %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "אתה כבר מנסה להוריד את הקובץ '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "כבר יש לך את הקובץ '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "אתה כבר מנסה להוריד את הקובץ %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "פרוטקול לא ידוע עבור קישור: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "" #: src/ExternalConn.cpp:261 #, fuzzy msgid "Client sent packet after authentication failed." msgstr "זיהוי נכשל" #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "חיבור חיצוני נסגר." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "גישה חיצונית מנוטרלת מאחר שהסיסמא ריקה!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "גישה מרוחקת מנוטרלת בקובץ ההגדרות" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "גישה חיצונית חדשה התקבלה" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "גישה מרחוק נכשלה עקב סיסמא ריקה בהעדפות!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "מחבר לקוח:%s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "גירסה לא ידועה" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "גירסת EC לא נכונה, יתכן ויש אי התאמה בינארית. השתמש בליבה ובלקוח חיצוני " "מאותו תצלום (גירסה)." #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "אתה לא להתחבר לגרסה ששוחררה מSVN (כלי לניהול גרסאות תוכנה) ! *נאנח* ייתכן " "והתרסקות של התוכנה נמנעה" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "גרסת פרוטוקל לא תקפה." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "חסר התווית של גרסת הפרוטוקול." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 #, fuzzy msgid "Authentication failed: wrong password." msgstr "זיהוי נכשל" #: src/ExternalConn.cpp:512 #, fuzzy msgid "Authentication failed: missing password." msgstr "זיהוי נכשל" #: src/ExternalConn.cpp:522 #, fuzzy msgid "Invalid request, please authenticate first." msgstr "בקשה לא תקפה, כדאי שקודם תאמת." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "גישה אושרה." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "" #: src/ExternalConn.cpp:538 #, fuzzy, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "ניסיון גישה שאינו מורשה. החיבור נסגר." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "פקודת קובץ-חלקים מרוחקת מכשלה: גיבוב הקובץ לא נמצא: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "גיבוב הקובץ לא מצא: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "אופס! שגיאה בעיבוד קוד-פעולה!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "השרת לא התווסף" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "לא נמצא השרת: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "צריך להגדיר שרת כדי להסירו" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "חיפוש פועל כרגע. ייבא מחדש תוצאות בעוד רגע!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "לא הגיוני לבצע חיפוש-רשתי מתוך ממשק מרוחק." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "אין נקודות עבור הגרף." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "הלקוח שלך אינו מוגדר עבור הרמה הזאת של פרטים." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "כבר בתהליך כיבוי." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "חיבור-חיצוני: מוסיף קישור '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "קישור לא תקף או שכבר נמצא ברשימה." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "קובץ לא נמצא." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "שם קובץ לא תכף." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "לא מצליח לשנות את השם של הקובץ." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "קאד מנוטרל בתוך ההעדפות." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "כבר מחובר לקאד." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "מתחבר לקאד..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "כל הרשתות מנוטרלות." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "מתנתק מקאד." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "קוד-פעולה לא תקף (גרסת פרוטקול שגויה?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "" #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "" #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "" #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "" #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "" #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "" #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "" #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "" #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "פרטי הקובץ" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% הושלם" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f ק\"ב/ש" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "חברים" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "הצג &פרטים" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "הוסף חבר" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "הסר חבר" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "שלך &הודעה" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "הצג קבצים" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "הוקמה משבצת \"חבר\"" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "האם אתה בטוח שאתה רוצה להסיר את החבר שבחרת?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "האם אתה בטוח שאתה רוצה להסיר את החברים שבחרת?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "אתה לא רשאי להגידר יותר ממשצת \"חבר\" אחת.\n" "רק משבצת אחת הוגדרה." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "בחירה מרובה." #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "שלח הודעה למשתמש" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "הודה שתשלח:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "הסר מחברים" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "שלך הודעה" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "החלף לקובץ זה" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "QR:·%u·(%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "התקבלה בקשה עבור קובץ אחר" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "העלאות בהמתנה: %s" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "על התור" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "ההעלאות" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "לא" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "לא" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "כן" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "מוריד מהרשת..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "אזהרה: לא ניתן לפתוח את קובץ הסקין '%s' לקריאה" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "מוריד %s" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "התחבר מחדש לשרת" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "פתיחת הקובץ %s·(%s נכשלה" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "CIP2Country::CIP2Country(): לא הצליח לטעון מידע עבור המדינה מ " #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "טוען את מסנני ה IP 'ipfilter.dat' ואת 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "טעינת קובץ מסננים עם סיומת '.dat' '%s', נכשלה. פורמט הקובץ לא ידוע." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "טעינת קובץ מסננים עם סיומת '.dat' '%s', נכשלה. לא ניתן לפתוח את הקובץ." #: src/IPFilter.cpp:329 #, fuzzy, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "טוען %u טווח - IP מ '%s'." msgstr[1] "טוען %u טווח - IP מ '%s'." #: src/IPFilter.cpp:331 #, fuzzy, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "נזרקה השורה המעוותת %u" msgstr[1] "נזרקה השורה המעוותת %u" #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "צמתים (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "כתובת IP לא חוקית על מנת לבצע אתחול" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "מבואה לא תקפה על מנת לבצע אתחול" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "אנא מלא את כל השדות כפי שנדרש" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "האם את בטוח שברצונח להוריד קובץ nodes.dat חדש?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "ביצוע פעולה זו תסיר את כל הצמתים הקחחצחם ןתאתחל את חיבור הקאדימליה." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "להמשיך?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "קאדימליה: מילת חיפוש קצרה מדי" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, fuzzy, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "קרא %u יוצרי קשר ל קאד" msgstr[1] "קרא %u יוצרי קשר ל קאד" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "" msgstr[1] "" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "שם הקובץ" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "גירסה לא ידועה" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "אזהרה: לא ניתן לפתוח את קובץ הסקין '%s' לקריאה" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "מגבב" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "מסיים" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "סיים" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "הושהה" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "שגוי" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "ממתין" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "אתה חייב לציין סיסמא שאינה רקה." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "סיסמא לא תקינה היא איננה מגובבת בפורמט MD5" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "החיבור נכשל" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:258 #, fuzzy msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "ExternalConn: (התחברות חיצונית) תשובה לא טובה מהשרת. החיבור נסגר. ." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "הצלחה!נפתח חיבור ל aMule." #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "הצלחה!נפתח חיבור ." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "חיבור חיצוני נסגר." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "רענון אוטמטי התחיל" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "סגור" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "גזור" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "העתק" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "הדבק" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "נקה" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "בחר הכל" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "ק\"ב/ש" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "לא מחובר" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "" #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "" #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "מנותק" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "זמן פעולה: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "יציאה" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "שלח" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "ארועים מופיעים כאן. בשביל רשימת האירועים המלאה, הסתכלו ביומן שבלשונית השרתים." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "טוען ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "מספר המשתמשים בשרת שאיליו התחברת ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "משתמשים: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "משתמשים שמחוברים לשרת הנוכחי ומספר מעורך של כלל המשתמשים." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "מעלה:0.0 | מוריד 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "הממוצע הנוכחי של קצב העלאה וההורדה. אם זה מאופשר, המספר שבסוגריים מסמנים את " "התקורה של התקשורת של הלקוח." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "מציג את מצב החיבורים וההעברות הפעילות. חץ אדום מסמן שאתה כרגע לחא מחובר, חץ " "צהוב מסמל שיש לך מ\"ז נמוך (LowID) (חסום חומתאש) וחץ ירוק מסמן שיש לך מ\"ז " "גבוהה (HighID) (תצורת החיבור האופטימלית)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "לא מחובר ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "שרת מחובר נוכחי." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "חיפוש" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "שם:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "סוג/טיפוס" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "מקומי" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "גלובלי" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "גיבוב-קובץ" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "פרמטרים מורחבים" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "מסנן" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "סוג קובץ" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "כל דבר" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "ארכיבים" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "אודיו" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "אימג' של סי.די." #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "תמונות" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "תוכניות" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "טקסט" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "סרטים" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "סיומת" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "גודל מנימלי" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "בתים" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "ק\"ב" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "מ\"ב" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "ג\"ב" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "גודל מקסימלי" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "זמינות" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "מסנן:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "תוצאות מסנן" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "הפוך תוצאות" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "החבא קבצים מוכרים" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "התחל" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "עוד" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "עצור" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "הורדה" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "אפס שדות" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "תוצאות" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "מנקה הורדות שהושלמו" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "מקורות שנמצאו :" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "כללי" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "שם מלא :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "ל\"ת" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "קובץ-met :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "גיבוב :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "גודל קובץ :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "מצב קובץ-חלקים :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "נראה שלם בפעם האחרונה :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "מעביר" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "מקורות שנמצאו :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "מעביר מקורות :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "ספירת קובץ-חלקים :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "זמין :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "קצב מידע :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "זמן הורדה פעיל: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "הועבר :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "כמות שהושלמה :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "תפעול מתוחכם של פגמים" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "אבד עקב פגם :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "רווח באמצעות כיווץ :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "חבילות שנשמרו ע\"י I.C.H.·:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "שמות קבצים" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "השתלטות" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "ניקוי" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "ישם" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "בסדר" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "תגיב/תדרג קובץ (הטקבט יהיה זמין לכל המשתמשים)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "איכות הקובץ" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "לא מדורג" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "לא תקף / פגום / מזויף" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "דל" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "ממוצע" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "טוב" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "מצויין" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "תבחר את דרוג הקובץ או תתריע למשתמשים אם הקובץ אינו תקף ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "רענן" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "מוריד, אנא המתן ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "גודל לא ידוע" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "נדרש מידע" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "כתובת IP :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "מבואה :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "מידע נוסף" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "שם משתמש :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "גיבוב משתשמ :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "הוסף" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "מהירות הורדה" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "נוכחיים" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "ממוצע רץ" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "ממוצע ההרצה הנוכחית" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "מהירות-העלאה" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "חיבורים" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "הורדות פעילות" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "חיבורים פעילים (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "העלאות פעילים" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "עץ סטטיסטיקה" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "שם משתמש:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "גיבוב קובץ:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "תוכנת לקוח:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "גרסת לקוח:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "כתובת IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "מ\"ז משתמש:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "כתובת IP של השרת:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "שם שרת:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "העברות ללקוח" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "בקשה נוכחית:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "קצב העלאה ממוצע:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "קצב הורדה ממוצע:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "הועלה (הרצה נוכחית):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "ירד (הרצה נוכחית):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "הועלה (סה\"כ):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "ירד (סה\"כ):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "ציונים" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "נכנס לתור" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "" #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "דפדף" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "ההעלאות" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "סיסמא" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "בסדר" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "- מבואת UDP שונתה \n" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "אתחל מחדש" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "" #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "אי.פי.:מבואה" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "" #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&תפתח את הקובץ" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "ממתין..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "העלאות פעילים :" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "קבצים משותפים" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "בחר מסנן תצוגה" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "העלאות פעילים" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "לקוחות" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "טען מחדש את הקבצים המשותפים שלך" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "שלח" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "שולח את ההודעה המצויינת." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "סגור את הצ'אט הנוכחי." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "קבצים משותפים" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "נוטרל [%s]" #: src/OtherFunctions.cpp:111 #, fuzzy msgid "byte" msgid_plural "bytes" msgstr[0] "בית" msgstr[1] "בית" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "ק\"ב" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "ט\"ב" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "קילו" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "מגה" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "גיגה" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "טרה" #: src/OtherFunctions.cpp:142 #, fuzzy msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "בייט/שניה" msgstr[1] "בייט/שניה" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "מ\"ב/ש" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "שניות" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "דקות" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "שעות" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "ימים" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "הכול" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "כל האחרים" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "חלקי" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "נעצר" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "ווידאו" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "ארכיב" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "טקסט" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "פןעל" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "מייבא %s:·%s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "קורא את הספרייה הזמנית" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "מחלץ מידע בסיסי מקובץ מידע ההורדות" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "יוצר קובץ יעד" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "טוען מידע מקובץ הורדות ישן (%u·מ·%u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "שומר את בלוק המידע לתוך קובץ הורדות יחיד (%u·מ·%u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "מחלץ את מידע הקובץ-המורד מהמקור" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "מוסיף הורדה ושומר קובץ-חלקים" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "ייבא קבצי-חלקים" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "מצב" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "גיבוב-קובץ" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (דיסק: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "נא לבחור תקייה לחפש קבצים זמניים שהורדו! (תתי תיקיות יכללו בחיפוש)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "האם אתה רוצה שקבצי המקורות של הורדות מוצלחות שיובאו, ימחקו?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "הסר מקור?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "שגיאה: יצירת קובץ-החלקים נכשלה)" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "מנסה לטעון גיבוי של קובץ ה met מ %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "שגיאה: %s (%s) פגום (מספר-תווית שגוי) לא יכול לטעון קובץ." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "מנסה לשחזר את המידע של הקובץ" #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "משחזר קובץ ללא שם - אנסה לשחזר את זה בתור RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "כל המידע הנגיש על הקבצים שוחזר :-) - מנסה להשתמש בזה..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "לא ניתן לשחזר את המידע אודות הקובץ :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "פתיחת הקובץ %s·(%s נכשלה" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "שגיאה במהלך השמירה של קובץ-החלקים %s (%s·==>·%s)" #: src/PartFile.cpp:904 #, fuzzy msgid "IO failure while saving partfile: " msgstr "שגיאה במהלך השמירה של קובץ-החלקים %s (%s·==>·%s)" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "לא ניתן לחלץ את האורך של '%s' - משתמש בקובץ %s." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "משום מה האורך של '%s' הוא 0 - משתמש בקןבץ %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "שמירת part.met.seeds נכשלה עבור הקובץ %s" #: src/PartFile.cpp:1020 #, fuzzy, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "נשמרו %i מקורות הזרעה עהור קובץ-החלקים: %s (%s)" msgstr[1] "נשמרו %i מקורות הזרעה עהור קובץ-החלקים: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "נשמרו %i מקורות הזרעה עהור קובץ-החלקים: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "שגיאה בקריאת קובץ ההזרעה של קובץ החלקים (%s·-·%s):·%s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "נמצא חלק שהושלם (%i) בתוך %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "הסתיים הגיבוב מחדש של %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "הסתיימה ההורדה של: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "מוחק את הקובץ: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "אזהרה. אין מספיק שטח דיסק פנוי! משהה את הקובץ %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "החלק %i שירד מתוך הקובץ %s פגום" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: תוקן החלק הפגום %i עבור %s -< בתים שנמשרו: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "" #: src/Preferences.cpp:632 msgid "System default" msgstr "ברירת מחדל של המערכת" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "אלבני" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "ערבית" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "אסטונית" #: src/Preferences.cpp:636 msgid "Basque" msgstr "בסקית" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "בולגרית" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "קטלונית" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "סינית (מופשטת)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "סינית (מסורתית)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "קרואטית" #: src/Preferences.cpp:642 msgid "Czech" msgstr "צ'כית" #: src/Preferences.cpp:643 msgid "Danish" msgstr "דנית" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "הולנדית" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "אנגלית (בריטית)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "אסטונית" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "פינית" #: src/Preferences.cpp:648 msgid "French" msgstr "צרפתית" #: src/Preferences.cpp:649 msgid "Galician" msgstr "גאלית" #: src/Preferences.cpp:650 msgid "German" msgstr "גרמנית" #: src/Preferences.cpp:651 msgid "Greek" msgstr "יוונית" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "הונגרית" #: src/Preferences.cpp:654 msgid "Italian" msgstr "איטלקית" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "איטלקית (שוויצרית)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "יפנית" #: src/Preferences.cpp:657 msgid "Korean" msgstr "קוראינית" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "ליטאית" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "נורבגית (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "פונלית" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "פורטגזית" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "פורטגזית (ברזילאית)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "אלבני" #: src/Preferences.cpp:664 msgid "Russian" msgstr "רוסית" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "סלובקית" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "ספרדית" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "שוודית" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "טורקית" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "לא זמין" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "מבואת ה TCP אינה יכולה להיות גבוהה יותר מ 65532 מאחר שמבואת ה UDP של השרת " "היא מבואת ה TCP +3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "נשתמש במבואה שבברירת מחדך (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "חיבור" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "מלונים" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "שרתים" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "קבצים" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "אבטחה" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "פרוקסי" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "שליטה מרחוק" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "חתימה מקוונת" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "ארועים" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "ניפוי שגיאות" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "אימיול חייב להיות מאותחל מחדש על מנת לאפשר את השינויים הללו:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- מבואת TCP שונתה \n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- מבואת UDP שונתה \n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "חיבור חיצוני נסגר." #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "גישה חיצונית חדשה התקבלה" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "חיבור חיצוני נסגר." #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "חיבור חיצוני נסגר." #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "אתה אפשרת חיבוריים חיצוניים אבל לא הזנת סיסמא תקיפה.\n" "חיבורים חיצוניים לא יאופשרו אלא אם כן תוזן סיסמא תקיפה." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- השפה שונתה.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- הפסרייה הזמנית שונתה.\n" #: src/PrefsUnifiedDlg.cpp:657 #, fuzzy msgid "- ED2K network enabled.\n" msgstr "כל הרשתות מנוטרלות." #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "קאד לא יתחיל אם מבואת ה UDB מנוטרלת.\n" "תאפשר את מבואת ה UDP או שתנטרל את קאד." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "אתה חייב לאתחל את אימיול עכשיו!\n" "אם לא תאתחל את אימיול עכשיו אל תתלונן אם משהו רע יקרה.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "רשימת השרתים המתעדכנת אוטומטית, ריקה.\n" "בבקשה תכניס לפחות כתובת URL אחת שתצביע לקובץ server.met תקף.\n" "לחץ על הכפתור \"רשימה\" שליד הצ'קבוקס הזה כדי להכניס בתובת URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "קבצים זמניים" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "קבצים נכנסים" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "חתימה מקוונת" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "בחר תיקייה עבור %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "חפש נגן סרטים" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "בחר דפדפן" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "קובץ הרצה %s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "הוסף כאן כתובות URL שמהם ניתן להוריד קבצי server.met.\n" "רק כתובת אחת בכל שורה." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, fuzzy, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "השהיית עדון: %d שניות" msgstr[1] "השהיית עדון: %d שניות" #: src/PrefsUnifiedDlg.cpp:1126 #, fuzzy, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "זמן עבור גרף הממוצע: %d דקות" msgstr[1] "זמן עבור גרף הממוצע: %d דקות" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "סקאלאת גרף החיבורים: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, fuzzy, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "גודל זיכרון זמני לקובץ: %d בתים" msgstr[1] "גודל זיכרון זמני לקובץ: %d בתים" #: src/PrefsUnifiedDlg.cpp:1150 #, fuzzy, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "גודל תור ההאלעות: %d לקוחות" msgstr[1] "גודל תור ההאלעות: %d לקוחות" #: src/PrefsUnifiedDlg.cpp:1157 #, fuzzy, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "רענון חיבור לשרת כל: %d דקות" msgstr[1] "רענון חיבור לשרת כל: %d דקות" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "רענון חיבור לשרת: מנוטרל" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "נוטרל [%s]" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "בצע פקודה בעת ארוע '%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "אפשר הרצת פקודות על הליבה" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "פקודת ליבה:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "אפשר ביצוע פקודות על ממשק גרפי" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "פקודת ממשק גרפי:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "המשתנים הבאים יוחלפו:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "ראשי" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "לא יכול להתבצע חיפוש באמצעות קאד אם קאד לא פועל" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "שגיאה לא צפויה בעת ניסיון ביצוע חיפוש ב קאד: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "מ\"ז של קובץ" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "קובץ" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "הורדה בקטיגוריה" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "הוסף כתובות URL אופתינליות לקובץ זה" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "סמן בתור קובץ מוכר" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "ביטול" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "החיבור לשרתים המבלבלים שברשימה כשל, מבצע מעבר נוסף ללא השרתים המבלבלים" #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "ההתחברות לכל השרתים הרשומים כשלה, מבצע מעבר נוסף." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "מחובר ל %s·(%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "חיבור הוקם ל: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "כשל חמור בעת הניסיון להתחבר. יתכן והתקשורת למרשתת לא מקוונת." #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "אבד התקשורת ל %s·(%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "נראה כאלו ש %s·(%s:%i) מת." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "נראה כאלו ש %s·(%s:%i) מלא." #: src/ServerConnect.cpp:392 #, fuzzy, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "התחברות אוטומטית לשרת ינוסה שוב תוך %d שניות" msgstr[1] "התחברות אוטומטית לשרת ינוסה שוב תוך %d שניות" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "החיבור אבד." #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "ההתחברות ל %s·(%s:%i) כשלה" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "פג הזמן עבור ניסיון ההתחברות ל %s·(%s:%i)" #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "" msgstr[1] "" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "" msgstr[1] "" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "שגיאת קריאה/כתיבה תוך כדי הקובץ known.met: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "" #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "נכשל בפתיחת '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "הסתיימה ההורדה של: %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "שם שרת" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "כתובת" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "מבואה" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "תיאור" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "פינג" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "משתמשים" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "קבוע" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "גירסא" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "אתה מחובר לשרת אותו אתה מנסה למחוק. בבקשה קודםתתנתק. השרת לא נמחק!" #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(שם לא ידוע)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "האם אתה בטוח שאתה רוצה למחוק את השרת הקבוע %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "שרתים (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "שרת" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "מחובר לשרת" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "סמן שרת בתור קבוע" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "סמן שרת בתור לא קבוע" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "סמן שרתים בתור קבועים" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "סמן שרתים בתור כאלה שאינם קבועים" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "הסר שרת" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "הסר שרתים" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "הסר את כל השרתים" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "התחבר מחדש לשרת" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "האם אתה בטוח שאתה מעוניין למחוק את כל השרתים?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "האם אתה בטוח שאתה מעוניין למחוק את כל השרת המסומן?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "האם אתה בטוח שאתה מעוניין למחוק את כל השרתים המסומנים?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "מ\"ז החדש ללקוח הוא %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "אזהרה: קיבלת מ\"ז נמוך (Low-ID)!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\t רוב הסיכויים שזה מאחר ואתה נמצא מאחור חומתאש או נתב." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tעבור מידע נוסף פנה ל http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "התקבל מידע על שרת, שהמידע לא ידוע! - קצר מדי" #: src/ServerSocket.cpp:532 #, fuzzy, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "התקבל %d שרת חדש" msgstr[1] "התקבל %d שרת חדש" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "שמירת רשימת השרתים הסתיימה." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "השרת דחה את הפקודה האחרונה." #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "חבילה מדומה התקבלב משרת: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "שגיה לא מטופלת בעת עיבוד החבילה שתקלה מהשרת: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "לא יכול ליצור תהליכון לפענוח ה DNS כדי להתחבר ל %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "כתובת ה IP ak var, %s·(%s) מסוננת, לא מתחבר." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "משתמש בערפול פרוטקול." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "מחבר ל %s·(%s·-·%s:%i)·%s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "לא יכול לפענח כתובת השרת של %s באמצעות DNS: לא יכול להתחבר!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "שרת לא התווסף: לא צויין שם שרת או כתובת אי.פי." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "שרת לא התווסף: צוינה מבואה לא תקפה." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "מ\"ז" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "סטטוס קאדימליה:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "פועל על %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "פועל" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "סטאטוס:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "מצב חיבור:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "מצב חיבור:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "מצב חומת אש: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "אין חבר" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "מחובר לחבר" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "מחובר לחבר" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "מקורות שנמצאו :" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 #, fuzzy msgid "Indexed notes:" msgstr "קובץ האינדקס לא נמצא" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "ממוצע משתמשים:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "ממוצע קבצים:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "לא פועל" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, fuzzy, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "נמצא %i קובץ משותף מוכר" msgstr[1] "נמצא %i קובץ משותף מוכר" #: src/SharedFileList.cpp:377 #, fuzzy, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "נמצא %i שידוע שהם משותפים, %i לא ידועים" msgstr[1] "נמצא %i שידוע שהם משותפים, %i לא ידועים" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, fuzzy, c-format msgid "Shared directory not found, skipping: %s" msgstr "לא נמצא השרת: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "שם משתמש" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "מהירות הורדה" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "מהירות-העלאה" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "זמין :" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "ההעלאות" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 #, fuzzy msgid "Download Status" msgstr "הורדות" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "שם קובץ" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "קבצים משותפים" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "בקשות" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "בקשות שהתקבלו" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "מידע שנשנלח" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "יחס שיתוף" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "חלקים שהושגו" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "מקורות שלמים" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "נתיב תיקייה" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "הוסף תגובה/דירוג" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "ערוך תגובה/דירוג" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "שנה שם" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "הוסף קבצים שבאסופה לרשימת המשלוח" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "העתק מגנט &URI ללוח" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "העתק קישור ED2k ללוח (מידע &AICH)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "אתה צריך מ\"ז גבוה (HighID) כדי לחןר קישור-מקור תקף" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "קבצים משותפים (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[קובץ-חלקים]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "שם קובץ" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "מידע שהועלה (התחברות נוכחית(סכום כולל)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "סכום כולל של התקורה (חבילות): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "תקורת בקשות קבצים (חבילות): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "תקורת החלפת מקורות (חבילות): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "תקורת השרת (חבילות): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "תקורת קאד (חבילות): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "האלעות פעילות: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "העלאות בהמתנה: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "סכום כולל של האלעות מוצלחות: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "סכות כולל של העלאות שנשכשלו: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "זמן האלעה ממוצע: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "הורדת מידע (התחברות נוכחית (סכום כולל)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "מקורות שנמצאו: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "הורדות פעילות (נתחים): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "יחס העלאה:הורדה בהתחברות נוכחית (סכום כולל): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "התחברויות מחדש: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "זמן מאז העברה הראשונה: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "מחובר לשרת מאז: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "חיבורים פעילים (משוער): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "גבול מקסימלי של התחברויות הושג: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "חיבורים בממוצע (משוער): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "שיא החיבורים (משוער): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "לקוחות" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "גודל לא ידוע" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "מסוננים" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "חסום" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "סכום כולל: %i מוכר: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "שרתים פעילים: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "שרתים שנכשלו: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "סכום כולל: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "שרתים שנמחקו: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "שרתים שסוננו: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "משתמשים על שרתים פעילים: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "קבצים על שרתים פעילים: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "סכום כולל של משתמשים: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "סכום כולל של קבצים: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "תעסוקת שרתים: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "מספר קבצים משותפים: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "גודל כולל של קבצים משותפים: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "מערכת הפעלה" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "לא התקבל" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "כישורים פעילים (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "לא זמין" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "אף פעם" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "פקודת '%s עם pid '%d' סיים עם קוד סטטוס '%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "הרץ וצא." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "פורמט IP לא חוקי. התמש ב xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "הפקודה הזאת דורשת ארגומנט. ארגומנט חוקי יכול להיות: 'all' שם קובץ או מספר.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "מעבד על פי גיבוב: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "מעבד על פי שם קובץ: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "פקודה זאת דורשת ארגומנט. ארגומנט חוקי: גיבוב של קובץ.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "לא מספר חוקי\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "לא גיבוב חוקי (האורך חייב להיות בדיוק 32 תווים)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "הורדות (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "הבקשה נכשלה עם שגיאה לא ידועה" #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "הפעולה הסתיימה בהצלחה." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "הבקשה נכשלה עם השגיאה הבאה: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "סינון IP עבור לקוחות הוא %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "מכובה" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "דלוק" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "סינון IP עבור שרתים הוא %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "רמת סינום IP נוכחית היא %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "מחובר ל %s·%s·%s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "מתחבר עכשיו" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "חסום-חומתאש" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "בסדר" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "הורדה:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "העלאה:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "לקוחות בתור:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "סה\"כ מקורות:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "מספר תוצאות חיפוש: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "התקבלה תשובה לא מוכרת מהשרת, קוד-פעולה = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "הראה מידעה על מצב בקיצור." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "הראה מצב חיבורים, מהירות הורדה/האלכה נוכחיים וכו'.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "הראה את עץ הסטטיסטיקה המלא." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "אופציונלי, מספר בתווך 0-255 יכול להשלח בתור ארגומנט\n" "לפקודה זו האומרת כמה רשומות של תתי העצים של גירסת הלקוח יראו.\n" "העברה של 0 או דילוג תתפרש בתור \"ללא הגבלה\".\n" "\n" "דוגמא: 'statistics·5' יראה רק את חמשת הגרסאות הראשונים עבור כל סוג לקוח.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 #, fuzzy msgid "Reload the given object." msgstr "טוען מחדש את האובייקט הנתון." #: src/TextClient.cpp:862 #, fuzzy msgid "Reload shared files list." msgstr "טוען מחדש את רשימת הקבצים המשותפים." #: src/TextClient.cpp:864 #, fuzzy msgid "Reload IP filtering table." msgstr "טוען מחדש את טבלת סינון ה IP מהקובץ." #: src/TextClient.cpp:865 #, fuzzy msgid "Reload current IP filtering table." msgstr "בחר את אמת סינון הIP." #: src/TextClient.cpp:866 #, fuzzy msgid "Update IP filtering table from URL." msgstr "טוען מחדש את טבלת סינון ה IP מהקובץ." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "התחבר לרשת." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "פעולה זו תחבר אותך לכל הרשתות שמאופשרות בהעדפות.\n" "את יכול גם, בצורה אופציונלית, לציין שרת בתצורה של IP:מבואה כדי להתחבר אל\n" "שרת זה בלבד. ה IP חייב להיות ארבעה מספרים מופרדים בנקודות בפורמט IPv4, \n" "או שם שרת שניתן להמירו ל IP." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "התחבר רק לקאד." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "התנתק מהרשת." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "פעולה זו תנתק את כל הרשתות המחוברות.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "התנתק רק מ קאד." #: src/TextClient.cpp:879 #, fuzzy msgid "Add an eD2k or magnet link to core." msgstr "מוסיף קישור ed2k או מגנט לליבה." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "הגדר ערך מועדף." #: src/TextClient.cpp:885 #, fuzzy msgid "Set IP filtering preferences." msgstr "הגדר העדפת מסנן IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "הדלק סינון IP הן עבור הלקוחות והן עבור השרתים." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "כבה סינון IP הן עבור הלקוחות והן עבור השרתים." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "אפשר/נטרל סינון IP עבור לקוחות." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "הדלק סינון IP עבור לקוחות." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "כבה סינון IP עבור לקוחות." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "אפשר/נטרל סינון IP עבור שרתים." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "הדלק סינון IP עבור שרתים." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "כבה סינון IP עבור שרתים." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "בחר את אמת סינון הIP." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "רמות סינון תקפים המ בתווך של 0-255, ברירת המחדשל (ערך התחלתי)\n" "הוא 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "קבע תיחום רוחב פס." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "הערך שמועבר לפקודות אלו חייב להיות ביחידות של ק\"ב/ש.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "קבע מגבלת רוחב פס בהעלאה." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "הערך שמועבר לפקודות אלו חייב להיות ביחידות של ק\"ב/ש.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "קבע מגבלת רוחב פס בהורדה." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "שלוף ותציג ערך של העדפה." #: src/TextClient.cpp:907 #, fuzzy msgid "Get IP filtering preferences." msgstr "שלוף העדפה עבור סינון IP." #: src/TextClient.cpp:908 #, fuzzy msgid "Get IP filtering state for both clients and servers." msgstr "שלוף העדפה עבור סינון IP עבור השרתים והלקוחות." #: src/TextClient.cpp:909 #, fuzzy msgid "Get IP filtering state for clients only." msgstr "שלוף העדפה עבור סינון IP רק עבור הלקוחות." #: src/TextClient.cpp:910 #, fuzzy msgid "Get IP filtering state for servers only." msgstr "שלוף העדפה עבור סינון IP רק עבור השרתים." #: src/TextClient.cpp:911 #, fuzzy msgid "Get IP filtering level." msgstr "בחר את אמת סינון הIP." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "שלוף הגבלת רוחב הפס." #: src/TextClient.cpp:915 #, fuzzy msgid "Execute a search." msgstr "הרץ חיפוש בקאדימליה" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "סוג חיפוש חייב להיות מצוין:\n" " GLOBAL (גלובלי)\n" " LOCAL (מקומי)\n" " KAD (קאד)\n" "דוגמה: 'search·kad·file' יבצע חיפוש באמצעות קאד עבור הקובץ \"file\".\n" #: src/TextClient.cpp:917 #, fuzzy msgid "Execute a global search." msgstr "הרץ חיפוש גלובלי." #: src/TextClient.cpp:918 #, fuzzy msgid "Execute a local search" msgstr "הרץ חיפוש מקומי" #: src/TextClient.cpp:919 #, fuzzy msgid "Execute a kad search" msgstr "הרץ חיפוש בקאדימליה" #: src/TextClient.cpp:921 #, fuzzy msgid "Show the results of the last search." msgstr "הראה את התוצאות של החיפוש האחרון." #: src/TextClient.cpp:922 #, fuzzy msgid "Return the results of the previous search.\n" msgstr "מחזירת את התוצאות של החיפוש האחרון.\n" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "מראה את התקדמות החיפוש." #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "מראה התקדמות של חיפוש.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "התחל בהורדת קובץ" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "מספר הקובץ מהחיפוש האחרון חייב להמסר.\n" "דוגמה: 'download·12'· יתחיל להוריד את קובץ מספר 12 מהחיפוש האחרון.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "השהה הורדה." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "המשך הורדה." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "בטל הורדה." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "קבע את העדיפות של ההורדה." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "קבע את עדיפות ההורדה ל נמוך, נורמלי, גבוה או אוטומטי.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "קבע את העדיפות ל 'נמוך'." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "קבע את העדיפות ל 'נורמלי'." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "קבע את העדיפות ל 'גבוה'." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "קבע את העדיפות ל 'אוטומטי'." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "הראה תורים/רשימות." #: src/TextClient.cpp:952 #, fuzzy msgid "Show upload/download queue, server list or shared files list.\n" msgstr "הראה תורים של הרודות/העלאות, רשימת שרתים או רשימת קבצים משותפים.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "הראה צור העלאות" #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "הראה את תור ההורדות." #: src/TextClient.cpp:955 msgid "Show log." msgstr "הראה יומן." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "הראה את רשימת השרתים." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "אפס את הימון." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "זאת פקודה מיושנת ועלולה להתבטל בעתיד.\n" "השתמש ב '%s' במקומה.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "לקוח טסטואלי של אֵימיול" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "ממיר את קבוצת הגיבובים בפורמט AICH עבור '%s' ל 64b עבור '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "אזהרה: שם הקובץ '%s' אינו חוקי והוא נקרא מחדש בשם '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "אזהרה: הקובץ '%s' כבר קיים. שם הקובץ החדש שונה ל '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "האם אתה בטוח שברצונך לבטל ולמחוק את כל הקבצים שבקטגוריה זו?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "זקוק לאישור." #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "יותר מדי חיבורים" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "כל האחרים" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "בחר מסנן תצוגה" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "הוסף קטיגוריה" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "ערוך קטיגוריה" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "הסר קטיגוריה" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "נכשל בפתיחת הקובץ (%s), מסיר מרשימת הקבצים המשותפים." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "התבקשה קבוצת הגיבובים של קובץ לא ידוע: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "ממשיך את העלאה של קובץ: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "משהה את העלאה של קובץ: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "" #: src/UserEvents.h:60 msgid "Download completed" msgstr "הורדה הסתיימה" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "הנתיב המלא לקובץ" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "שם הקובץ ללא הנתיב." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "גודל הקובץ בבתים." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "זמן מצטבר של פעולת הורדה." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "צ'אט חדש החל." #: src/UserEvents.h:85 msgid "Message sender." msgstr "שולח ההודעה" #: src/UserEvents.h:88 msgid "Out of space" msgstr "נגמר המקום" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "מחיצת דיסק." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "שגיאה בעת הסיום." #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "מעבד קובץ מס. %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "ביקשת גיבובים עבור חלקים (בשימוש רק עבור קבצים > 9.5 מ\"ב" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "קובץ %s אינו קיים!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "ברוכים הבאים!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "פרמטרים להזנה" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "גיבוב קובץ" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "הוסף כתובות URL אופתינליות לקובץ זה" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "הסר" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "צור קישור עם חלקי הגיבובים" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "עזור להפיץ קבצים חדשים ונדירים יותר מהר, במחיר קידור יותר גדול" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "קובץ גיבובי MD4" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "שמור" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "העתק ללוח" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "אודות aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "אין שום דבר להעתיק נכון לעכשיו !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "לא הצליך לפתוח את " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "בבקשה תכניס שם קובץ שאינו ריק" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "שום דבר לשמור עכשיו !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "מגבב..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "בוטל !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "הסתיים ב %.2f שניות" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "כבר הוספת את כתובת URL הזאת !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "בבקשה תכניס כתובת URL שאינה ריקה" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "לא מצליח לפתוח את %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "ימים - %i, שעות -%i, דקות - %i, שניות - %i" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uימים %02uשעות %02uדקות %02uשניות" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uשעות %02uדקות %02uשניות" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02uדקות %02uשניות" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02uשניות" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f בתים" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f ק\"ב" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f מ\"ב" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f ג\"ב" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f ט\"ב" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "סטטיסטיקות מקוונות של אימיול - wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "קצב הורדה מקסימלי מאז ש wxCas החל לפעול" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "קצב הורדה מקסימלי אבסלוטי בעת הפעלות קודמות של wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "מערכת" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "עצור רענון אוטומטי" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "שמור תמונה סטטיסטית מקוונת" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "הדפס תמונה סטטיסטית מקוונת" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "הגדרת העדפות" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "אודות wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "החל רענון אוטומטי" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "רענון אוטמטי נעצר" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "רענון אוטמטי התחיל" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "שמור תמונה סטטיסטית" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "סטטיסטיקות מקוונות של אימיול" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "ישנה בעייה בהדפסה.\n" "האם המדפסת הנוכחית שלך מוגדרת בצורה נכונה?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "מדפיס" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "סטטיסטיקות חתימות מקוונת של אימיול - wxCasn\n" "(c) 2004 ThePolish \n" "\n" "מבוסס על CAS שנותר על ידי Pedro·de·Oliveira·\n" "\n" "מופץ תחת רשיון GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "או או.. אימיול לא פועל..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "אימיול פועל" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "אמיול פועל אך אינו מחובר" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "אימיול מתחבר..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "או או... המצב של אימיול אינו ידוע..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "אֵימיול " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " פועל במשך " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " הופסק !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " אינו מחובר !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " מתחבר..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " עושה משהו מוזר, תבדוק את זה!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " מחובר ל " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " קאד: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "מכובה" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " דלוק " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " עם " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "סכום כולל של הורדות: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", הועלה: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "הורד בהחתברות הנוכחית: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "מוריד: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " ק\"ב/ש, העלאה: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " ק\"ב/ש" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "משתף: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " קבצ(ים), לקוחות בתור: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "זמן: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " דלוק " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "עומס ממוצע של המערכת ( 1-5-15 דקות): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "משך הפעולה של המערכת:" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "תקיה המכילה את הקובץ amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "הכנס כאן את התקייה היכן שהקובץ amulesig.dat נמצא" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "קצב מרווח הרענון בשניות" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "צור תמונת סטאטוס בכל ארוע רענון" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "הכנס כאן את התקיה שבה אתה רוצה ליצור את תמונת הסטטוס" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "העלה בתקופתיות את תמונת הסטטוס לשרת FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "כתובת URL של FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "נתיב FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "הכנס כאן את כתובת ה URL של שרת ה FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "הכנס כאן את נתיב הספריה שבה אתה שם את תמונת הסטטוס על שרת ה FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "משתמש" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "הכנס כאן את שם המשתמש שאיתו תתחבר לשרת ה FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "הכנס את סיסמת הזיהוי להתחברות לשרת ה FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "קצב עדכון התקופתי של ה FTP בדקות" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "אַמת" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "תיקיה המכילה את קובץ החתימה שלך" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "תיקיה שבה יווצרו תמונות הסטאטוס" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "טוען תבנית<מחרוזת>" #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "מבואת UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "השמתש בדחיסת gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "אפשר גישה לאורחים" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "מנע גישה מאורחים" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "נתיב קובץ ההגדרות של אימיול. לא לשימוש בצורה ישירה!!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "נטרל מפענח PHP (מיושן-מבוטל)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "הדר מחדש דפי PHP לאחר כל בקשה" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "שרת אימיול רשתי" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "הבקשה נכשלה עם השגיאות הבאות: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "קובץ האינדקס לא נמצא" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "פג התוקף של החיבור - מבקש התחברות מחדש\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "התחברות הצליחה - מחובר\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "התחברות הצליחה, לא מזוהה\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "לא נפתחה התחברות - הולך לבקש להזדהות\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "נוצרה התחברות מבקש להזדהות\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "מעבד בקשה [מקורי]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "בודק סיסמא\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "גיבוב הסיסמא אינו תקף\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "הסיסמא בסדר\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "סיסמא שגויה\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "לא הזנת סיסמא. סיסמאות ריקות אינם קבילות.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "ב‏‎ֻקְשַה התנתקות\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "מעבד בקשה [הופנתה מחדש]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "לקובץ החלקים %s (%s) אין קובץ הזרעה." #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "לקובץ-החלקים %s(%s) יש קובץ הזרעה לא חוקי." #, fuzzy #~ msgid "Download status" #~ msgstr "הורדות" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #, fuzzy #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "השהיית עדכון: %d שניות" #~ msgstr[1] "השהיית עדכון: %d שניות" #~ msgid "Transferring" #~ msgstr "מעביר" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "נכנס לתור" #~ msgid "TODO - show progress of a search" #~ msgstr "לביצוע - הראה התקדמות של חיפוש" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "מתחיל לייצר מחרוזת גיבוב באמצעות MD4 ובאמצעות AICH עבור הקובץ: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "מתחיל לייצר מחרוזת גיבוב באמצעות MD4עבור הקובץ:%s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "מתחיל לייצר מחרוזת גיבוב באמצעות AICH עבור הקובץ:%s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "אזהרה: לא ניתן להסיר את '%s' המקורי לאחר שנוצר גיבוי." #~ msgid "WARNING: Failed to delete %s" #~ msgstr "אזהרה: הניסיון למחוק/להסיר את '%s' נכשל." #, fuzzy #~ msgid "Downloads window" #~ msgstr "מוריד מהרשת" #~ msgid "Transfers" #~ msgstr "העברות" #~ msgid "Shows Upload / Up-queue" #~ msgstr "מראה תור האלעה / למעלה " #~ msgid "Clients on queue :" #~ msgstr "לקוחות בתור :" #~ msgid "Current Session" #~ msgstr "הרצה נוכחית" #~ msgid "Total" #~ msgstr "סה\"כ" #~ msgid "Requested :" #~ msgstr "בֻקַש :" #~ msgid "Files Transfers Window" #~ msgstr "חלון העברות הקבצים" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "סה\"כ משתמשים: %s | סה\"כ קבצים: %s" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "אזהרה: לא ניתן להסיר את '%s' המקורי לאחר שנוצר גיבוי." #~ msgid "Get IPFilter level." #~ msgstr "שלוף רמת סינון ה IP." #~ msgid "Makes a search." #~ msgstr "מבצע חיפוש." #, fuzzy #~ msgid "Killed!" #~ msgstr "נכשל" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "כבה את אימיול." #~ msgid "Fetching status..." #~ msgstr "מביא את נתוני המצב..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "משתמשים: ed2k -> %s קאד -> %s | קבצים: ed2k -> %s קאד -> %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "לקוח %s ב כתובת:מבואה %s:%d משתמש ב %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "האפליקציה->רשית השרתים->קבל־שרת־באמצעות־כתובת() מחזיר כלום" #~ msgid "Firewalled" #~ msgstr "חסום חומת אש" #, fuzzy #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "טוען %d תמונת דגל." #~ msgstr[1] "טוען %d תמונת דגל." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "" #~ "הקובץ %s גדול מדי עבור ה\"חמור\": גודל קובץ מקסימלי שמותר זה 4 ג\"ב." #~ msgid "No handler for this file type." #~ msgstr "אין 'מאחז' עבור סוג קובץ זה" #~ msgid "File was not saved" #~ msgstr "קובץ לא נשמר" #~ msgid "Message Filter" #~ msgstr "מסנן הודעות" #~ msgid "Gui Tweaks" #~ msgstr "כיולי המנשק הגרפי" #~ msgid "Core Tweaks" #~ msgstr "כיולי ליבה" #~ msgid "Status text" #~ msgstr "טקסט סטאטוס" #~ msgid "Pop-up status text" #~ msgstr "טקסט מצב שמופיע" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ "לקוח p2p2 הפועל ב 'כל פלטפורמה' ומבוסס כל אִימיול \n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr " אתר הבית: http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr " פורום: http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ " שאלות נפוצות: http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " יצירת קשר: admin@amule.org (נושאים מנהליים) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ "זכוייות יוצרים (C) 2003-2008 צוות אימיול \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr " חלק מאֵימיול מבוסס על \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " זכויות יוצרים (C)·2002·Petar·Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "עבור סרט אתה יכול לציין את האורך, העלילה, השפה ...\n" #~ "ואם זה זיוף, אתה יכול לספר את זה לשאר משתמשי אימיול." #~ msgid "Unable to determine selected browser!" #~ msgstr "לא ניתן לזהות את הדפדפן הנבחר!" #~ msgid "User Defined" #~ msgstr "הגדרות משתמש" #~ msgid "Please wait... " #~ msgstr "אנא המתן... " #~ msgid "Could not determine the command for running the browser." #~ msgstr "לא יכול לקבוע מהי הפקודה המריצה את הדפדפן." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "התחברות EC נכשלה. התקבלה תשובה ריקה." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "ExternalConn: (התחברות חיצונית) הגישה נאסרה בגלל:" #~ msgid "ExternalConn: Access denied" #~ msgstr "ExternalConn: (התחברות חיצונית) הגישה נאסרה ." #~ msgid "The ed2k hash of the file." #~ msgstr "מחרוזת גיבוב ה ed2k של הקובץ" #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "העתק &קישור ED2k ללוח" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "העתק קישור ED2k ללוח (&מקור)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "העתק קישור ED2k ללוח (מקור) (&עם אופציות הצפנה)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "העתק קישור ED2k ללוח (&שם שרת)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "העתק קישור ED2k ללוח (שם שרת) (עם אופציות &הצפנה)" #~ msgid "Warning" #~ msgstr "אזהרה" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "שגיאה: לא ניתן להאזין למבואת TCP." #~ msgid "Webserver HTTP port" #~ msgstr "שרת-רשתי HTTP מבואה" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "השתמש בהפניית המבואות של UPnP על המבואב של השרת-רשתי." #~ msgid "Full access password for webserver" #~ msgstr "ססימת גישה מלאה יבור השרת-הרשתי." #~ msgid "Guest password for webserver" #~ msgstr "סיסמת אורח עבור השרת-הרשתי" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "טען/שמור הגדרות השרת-הרשתי מ/אל אימיול מרוחק" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "הנס פה את את הקובץ שלגביו אתה רוצה לחשב את קישור ה Ed2k" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "הנס פה את את הקובץ שלגביו אתה רוצה לחשב את קישור ה Ed2k: הוסף / בסוף כדי " #~ "לאפשר ל aLinkCreator לשרשר את שם הקובץ הנוכחי" #~ msgid "Ed2k File Hash" #~ msgstr "קובץ גיבובי Ed2k" #~ msgid "Ed2k link" #~ msgstr "קישור Ed2k" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "פתח קובץ כדי לחשב את קישור ה ed2k שלו" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "העתק קישור ed2k שחושב לתוך הלוח" #~ msgid "Save computed ed2k link to file" #~ msgstr "שמור קישור ed2k שחושב לקובץ" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "בחר את הרובץ שלו אתם רוצים לחשב את קישור ה ed2k" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "בחר את הקובץ עבור קישור ה ed2k שלך שחושב" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "יוצר קישורי ed2k עבור אימיול - aLinkCreator\n" #~ "\n" #~ "(c)·2004·ThePolish·\n" #~ "\n" #~ "תמנות מ http://www.everaldo.com ומ http://www.icomania.com\n" #~ "וכן מ http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "מופץ תחת רשיון GPL" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "יוצר קישורי ed2k עבור אימיול - aLinkCreator" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "העתק קישור ED2k ללוח" #~ msgid "Copy ED2k links to clipboard" #~ msgstr "העתק קישורי ED2k ללוח" #~ msgid "ED2K: Connecting" #~ msgstr "ED2K: מתחבר" #~ msgid "ED2K: Disconnected" #~ msgstr "ED2K: מנותק" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "רשימת השרתים המעודכנים אוטומטית, ריקה.\n" #~ "אופציית 'עדכן אוטומטית רשימת שרתים בעת אתחול' תנוטרל." #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "הן ED2K והן קאד מנוטרלים.\n" #~ "לא תוכל להתחבר אלא אם כן תאפשר לפחות אחד מהם." #~ msgid "Edit Serverlist" #~ msgstr "ערוך רשימת שרתים" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "שגיאה: לא יכל לקבל גישה חיצונית." #~ msgid "ED2K is disabled in preferences." #~ msgstr "מתוך קובץ ההגדרות ED2K מנוטרל." #~ msgid "ExternalConn: shutdown requested" #~ msgstr "חיבור-חיצוני: בקשת כיבוי התבקשה." #~ msgid "Already connected to ED2K." #~ msgstr "כבר מחובר ל ED2K." #~ msgid "Connecting to ED2K..." #~ msgstr "מתחבר ל ED2K..." #~ msgid "Disconnected from ED2K." #~ msgstr "מתנתק מ ED2K." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "חיבור-חיצוני: התקבל קוד-פעולה שגוי: %#x" #~ msgid "ED2K Status:" #~ msgstr "סטטוס ED2K:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "קצה הורדה ממוצע (בהתחברות נוכחית): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "קצה העלאה ממוצע (בהתחברות הנוכחית): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "קצב הורדה מקבימלית (בהתחברות הנוכחית): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "קצב הורדה מקסימלי (בהתחברות הנוכחית): %s" #~ msgid "Average filesize: %s" #~ msgstr "גודל קובץ ממוצע: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "לא יכול להתבצע חיפוש באמצעות ED2K אם ED2K לא פועל" #~ msgid "Error: " #~ msgstr "שגיאה: " #~ msgid "Warning: " #~ msgstr "אזהרה: " #~ msgid "Search related files (ED2k, local server)" #~ msgstr "חפש קבצים קשורים (ED2k, שרת מקומי)" #~ msgid "Error" #~ msgstr "שגיאה" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "אזהרה: אתה לא יכול להוסיף את עצמך בתור מקור לקישור ed2k כשיש לך מ\"ז נמוך " #~ "(LowId)." #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "בבקשה תגדיר את נגן הסרטים המועדף עליך בהעדפות.\n" #~ "בינתיים אימיול ינסה להשתמש עם mplayer ואתה תקבל את ההודעה הזאת בכל פעם " #~ "שתצפה בתקדימון" #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "שגיאה: פתיחת הקובץ part.met נכשלה: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "שגיאה: הגודל של הקובץ part.met הוא 0: %s·==>·%s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "שגיאה: גרסת הקובץ part.met אינה תקפה: %s·==>·%s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "אזהרה: %s עלול להיות פגום (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "שגיאה לא צפויה בעת השלמת הקובץ %s הקובץ משוהה" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "אזהרה לא יכול לגהה את החלק שהורד - קבוצת-הגיבובים אינה שלמה עבור '%s'" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "אזהרה לא יכול לגהה את החלק שהורד - קבוצת-הגיבובים אינה שלמה עבור '%s'. " #~ "זהלעולם לא אמור לקרות" #~ msgid "Insufficient Diskspace" #~ msgstr "חסר שטח דיסק" #~ msgid "ERROR! Attempted to share %s" #~ msgstr "שגיאה! ניסיון לשתפ את %s" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "רשת ה ED2K מנוטרלת בהעדפות, לא מתחבר." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "לא נמצא ברשימת השרתים אף שרת תקף כדי להתחבר איליו." #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "שגיאה: מבואה לא תקפה לא התקבל תגובה בזמן." #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions." #~ msgstr "" #~ "שגיאה: הניסיון לטעון קובץ גיבוי כשל חפש ב http://forum.amule.org עבור " #~ "פתרונות לשחזור קבצי part.met." #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "לא מצליח להמיר קישור מגנט ל ed2k: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "קישור ed2k לא תקף! שגיאה: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "גבולות רוחב הפס: העלאה: %u ק\"ב/ש, הורדה: %u ק\"ב/ש.\n" #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "כבה את הליבה (אימיול/אימיול-דיאמון) המרוחקת.\n" #~ "זה יכבה גם את הלקוח הטסטואלי מאחר שהוא לא שמיש ללא\n" #~ "ליבה שרצה.\n" #~ msgid "Connect to ED2K only." #~ msgstr "התחבר רק ל ED2K" #~ msgid "Disconnect from ED2K only." #~ msgstr "התנתק רק מ ED2K." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "קישור ה ed2k שיתווסף יכול להיות: \n" #~ "* קישור לקובץ (ed2k://|file|...), הוא יתווסף לתור ההורדות,\n" #~ "* קישור לשרת (ed2k://|server|...), הוא יתווסף לרשימת השרתים,\n" #~ "* או קישור לרשימת שרתים שבמקרה זה כל השרתים ברשימהיתווספו \n" #~ " לרשימת השרתים.\n" #~ "\n" #~ "על המגנט להכיל הן את גיבוב ה ed2k והן את אורך הקובץ.\n" #~ msgid "Deprecated command, now '%s'." #~ msgstr "פקודה מיושנת, עכשיו '%s'." #~ msgid "Error: %s (%s) - %s" #~ msgstr "שגיאה: %s·(%s)·-·%s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "אזהרה: %s·(%s)·-·%s" #~ msgid "Error: Out of diskspace" #~ msgstr "שגיאה: נגמר שטח דיסק" #~ msgid "Error: Partmet not found" #~ msgstr "שגיאה part.met לא נמצא" #~ msgid "Error: IO error!" #~ msgstr "שגיאה: שגיאת קריא/כתיבה!" #~ msgid "Error: Failed!" #~ msgstr "שגיאה: נכשל!" #~ msgid "ED2K Link: " #~ msgstr "קישור ED2K: " #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "לחץ כאן על מנת להוסיף את קישור ה ed2k שבפקד הטקסט לתור ההורדות." #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "מחפש תוצאות נוספות עבור ED2K. לא נתמך עדיין עבור קאד." #~ msgid "0" #~ msgstr "0" #~ msgid "Disconnected from ED2K" #~ msgstr "מנותק מED2K" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "הפתיחה של הקובץ 'emfriends.met' לכתיבה נכשלה!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "שגיאה: פתיחת קובץ-החלקים נכשלה)" #~ msgid "Can't create web socket thread\n" #~ msgstr "לא ניתן ליצור תהליכון מבואה רשתי\n" #~ msgid "Web Server: Started\n" #~ msgstr "שרת רשת: הותחל\n" #~ msgid "LowID: %u (%.2f%% Total %.2f%% Known)" #~ msgstr "מ\"ז (LowID): %u·(%.2f%% סכום כולל %.2f%% ידוע)" #~ msgid "SecIdent On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgstr "SecIdent דלוק/מכובה: %u·(%.2f%%)·:·%u·(%.2f%%)" #~ msgid "" #~ "Filestats for this session: Accepted %d of %d request, %s transferred\n" #~ "Filestats for this session: Accepted %d of %d requests, %s transferred\n" #~ msgstr "" #~ "סטטיסטיקות קבצים עבור ההפעלה הנוכחית: התקבלו %d מתוך בקשה %d , %s הועברו\n" #~ "סטטיסטיקות קבצים עבור ההפעלה הנוכחית: התקבלו %d מתוך %d בקשות, %s " #~ "הועברו\n" #~ msgid "" #~ "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" #~ "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" #~ msgstr "" #~ "סטטיסטיקות קבצים עבור כל ההפעלה הנוכחית: התקבלו %d מתוך בקשה %d , %s " #~ "הועברו\n" #~ "סטטיסטיקות קבצים עבור כל ההפעלה הנוכחית: התקבלו %d מתוך %d בקשות, %s " #~ "הועברו\n" #~ msgid "Browse wav" #~ msgstr "דפדף ב wav" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "קובץ wav (*.wav)|*.wav||" #~ msgid "" #~ "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| " #~ "FileHash |%s|Found corrupted part (%d) in %d parts file %s - " #~ "FileResultHash |%s| FileHash |%s|" #~ msgstr "" #~ "נמצא חלק פגום (%d) בתוך %d קובץ-החלקים %s גיבוב-קובץ-התוצאות |%s| גיבוב-" #~ "הקובץ |%s|נמצא חלק פגום (%d) בתוך %d קבציי-החלקים %s גיבוב-קובץ-התוצאות |%" #~ "s| גיבוב-הקובץ |%s|" #~ msgid "No comment(s)" #~ msgstr "רין הערות" amule_2.3.1+git20151120.0023527bc2.orig/po/hr.po0000644000175000017500000060125512611472361017103 0ustar morphmorph# aMule i18n resource file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. # Kry , 2004. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2004-04-08 00:30+0100\n" "Last-Translator: Tea Lorenzmeier \n" "Language-Team: www.aMule.org \n" "Language: hr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Dodaj prijatelja" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Ukucaj vazecu IP adresu i port!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "Neuspjelo otvaranje %s (%s)" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Neuspjesno" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "Potvrda izlaza" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "Nova vanjska veza prihvacena\n" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" #: src/amule.cpp:581 msgid "Server list download" msgstr "" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "ne dajemo nikakvu garanciju da nece nista unistiti, tvoju kucu zapaliti, \n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" #: src/amule.cpp:1116 #, fuzzy msgid "Server hostname notified" msgstr "Ime servera :" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "" #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "" #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "" #: src/amule.cpp:1888 msgid "Kad started." msgstr "" #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "" #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "" #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Spajanje" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "" #: src/amuleDlg.cpp:719 #, fuzzy msgid "Kad: Connected" msgstr "Veza uspostavljena" #: src/amuleDlg.cpp:724 #, fuzzy msgid "Kad: Connecting" msgstr "Spajanje" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Otkaz" #: src/amuleDlg.cpp:775 #, fuzzy msgid "Stop the current connection attempts" msgstr "Zaustavlja trenutne pokusaje uspostavljanja veze" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Prekinuti vezu" #: src/amuleDlg.cpp:781 #, fuzzy msgid "Disconnect from the currently connected networks" msgstr "Prekinuti vezu sa sadasnjim serverom" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Uspostavi vezu" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Gore: %.1f(%.1f) | Dole: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Gore: %.1f | Dole: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "Da li zaista zelite iskljuciti aMule?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Potvrda izlaza" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Pretrage" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Prozor pretraga" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Downloads" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "Downloading" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Prozor dijeljenih fajlova" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Poruke" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Prozor poruka" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistike" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Prozor grafova statistike" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Opcije" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Prozor postavke opcija" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "Fatalna greska: Neuspjesno stvaranje tajmera" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "Fatalna greska: Neuspjesno stvaranje tajmera" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "" #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "Spajanje" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 #, fuzzy msgid "Ready" msgstr "Ponovno ucitati" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Nepoznat" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" #: src/BaseClient.cpp:1586 #, fuzzy msgid "Searching buddy for lowid connection" msgstr "ceka na spajanje..." #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr "" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr "" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "" #: src/BaseClient.cpp:2027 #, fuzzy, c-format msgid "Requested: %s\n" msgstr "Zahtijevan:" #: src/BaseClient.cpp:2029 #, fuzzy, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Fajl statistike za ovu misiju: Prihvaceno %d od %d zahtjeva, %s preneseno\n" msgstr[1] "" "Fajl statistike za ovu misiju: Prihvaceno %d od %d zahtjeva, %s preneseno\n" #: src/BaseClient.cpp:2032 #, fuzzy, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Fajl statistike za ovu misiju: Prihvaceno %d od %d zahtjeva, %s preneseno\n" msgstr[1] "" "Fajl statistike za ovu misiju: Prihvaceno %d od %d zahtjeva, %s preneseno\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Zatrazen nepoznat fajl" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Korisnik %s (%u) ja zahtio tvoju listu dijeljenih fajlova za direktorij %s -" "> %s" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "" #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "Neocekivana fajl greska prilikom pisanja %s : %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "Greska prilikom spajanja sa %s (%s:%i): %d" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategorija" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Izaberi mapu (folder) za dolazece fajlove" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Zatvori oznaku" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Zatvori sve oznake" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Zatvori druge oznake" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Primi u prijatelje" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:161 #, fuzzy, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] "Krediti istekli!" msgstr[1] "Krediti istekli!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "" #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Detalji klienta" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Veza uspostavljena" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Prekinuta veza" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Nedovrseno" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Los decko" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Priznat - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Korisnik %s (%u) ja zahtio tvoju listu dijeljenih fajlova za direktorij %s -" "> %s" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Korisnik %s (%u) ja zahtio tvoju listu dijeljenih fajlova za direktorij %s -" "> %s" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Korisnik %s (%u) dijeli direktorije %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "Korisnik %s (%u) je poslao listu dijeljenih fajlova za direktorij %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Korisnik %s (%u) ja zavrsio slanje liste dijeljenih fajlova" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Korisnik %s (%u) ja zavrsio slanje nezeljene liste dijeljenih fajlova" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Komentari fajla" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Ime korisnika" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Ime fajla" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Ocjena" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Bez komentara" #: src/CommentDialogLst.cpp:105 #, fuzzy, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "Bez komentara" msgstr[1] "Bez komentara" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Ni]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Vi]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Vrlo nizak" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Nisko" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normalan" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Visoko" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Vrlo visok" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Pita" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Spaja preko servera" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Pun red cekanja" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "U redu cekanja" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Downloading" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Prima hashset" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Nepotrebni dijelovi" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Ne moze spojiti LowID sa LowID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Previse konekcija" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Zabranjen" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "" #: src/DataToText.cpp:132 msgid "Passive" msgstr "" #: src/DataToText.cpp:133 msgid "Link" msgstr "" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Zavrseno" #: src/DataToText.cpp:146 msgid "In progress" msgstr "" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Velicina" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Transferirano" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Brzina" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Napredak" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Izvori" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioritet" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Status" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Preostalo vrijeme" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Posljednji put vidjen kompletno" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Posljedni prijem" #: src/DownloadListCtrl.cpp:411 #, fuzzy msgid "Are you sure that you wish to delete the selected file?" msgstr "Da li zaist zelis otkazati i obrisati ove fajlove ?\n" #: src/DownloadListCtrl.cpp:413 #, fuzzy msgid "Are you sure that you wish to delete the selected files?" msgstr "Da li zaist zelis otkazati i obrisati ove fajlove ?\n" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Automatski" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Stop" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pauza" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Nastavak" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "O&dstrani zavrsene fajlove" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Primijeni sve A4AF ovom fajlu" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Primijeni sve A4AF ovom fajlu (Automatski)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Primijeni sve A4AF nekom drugom fajlu" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Prosirene opcije" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Preuvid" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Pokazi &detalje fajla" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Pokazi sve kommentare" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "neodredjeno" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Odredi u kategoriju" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Otvori fajl" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Downloads (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "Zahtjev dijeljenih fajlova od '%s'" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Nisu nadjeni nikakvi poceti fajlovi" #: src/DownloadQueue.cpp:168 #, fuzzy, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Nadjeno %i pocetih fajlova" msgstr[1] "Nadjeno %i pocetih fajlova" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Downloading %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Vec pokusavate downloadovati fajl %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "" #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "" #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "" #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "" #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "" #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "" #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "" #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "" #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "" #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "" #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "" #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "" #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "" #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "" #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "" #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "" #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "" #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "" #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "" #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "" #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "" #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "" #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "" #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "" #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "" #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "" #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "" #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "" #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Prijatelji" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Pokazi &Detalje" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Dodaj prijatelja" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Odstrani prijatelja" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Posalji &Poruku" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Ugledaj fajlove" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Uspostavi slot zu prijatelja" #: src/FriendListCtrl.cpp:169 #, fuzzy msgid "Are you sure that you wish to delete the selected friend?" msgstr "Da li zaist zelis otkazati i obrisati ove fajlove ?\n" #: src/FriendListCtrl.cpp:171 #, fuzzy msgid "Are you sure that you wish to delete the selected friends?" msgstr "Da li zaist zelis otkazati i obrisati ove fajlove ?\n" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "U redu cekanja" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Upitao za drugi fajl" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Uploadovi na cekanju: %i" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "U redu cekanja" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Upload" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "Niko" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Ne" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Da" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Downloading..." #: src/HTTPDownload.cpp:109 #, fuzzy msgid "HTTP download cancelled" msgstr "Istinska sirina pojasa downloada" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "Downloaded:" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "Nisi povezan sa serverom!" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "Neuspio download serverliste od %s" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Neuspjesno citanje kreditnog fajla" #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "" #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "" msgstr[1] "" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Nepoznat: %i" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Hashing" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Zavrsavanje" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Zavrseno" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Pausirano" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Sa greskom" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Cekanje" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "Parametri za spoljasnju vezu" #: src/LibSocketAsio.cpp:1260 #, c-format msgid "Asio thread %d started" msgstr "" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Zatvori" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Ocisti" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Bezkrajno" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule izbor u koritu" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "KlientID: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Ime servera:" #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "ServerIP: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Veza nije uspostavljena" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Online potpis: Omogucen" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Online potpis: Onemogucen" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Vrijeme korisnika: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Izlaz" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Izvrsi" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Ucitava..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Broj korisnika na serveru sa kojim si spojen..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Korisnika: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Up: 0.0 | Down: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Ne povezan..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "" #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Pretraga" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tip" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Bilo koja" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Arhiva" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD_Imidz" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Slike" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programi" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Videa" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Ekstenzija" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Minimalna velicina" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Maksimalna velicina" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Start" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Download" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Nadjeni izvori :" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Glavni" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Puno ime :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met-fajl :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Velicina fajla :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Status pocetog fajla :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Posljednji put vidjen kompletno :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Transfer" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Nadjeni izvori :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Izvori koji transferuju :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Broj pocetog fajla :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Dostupnost :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Podatak rate :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Prenijeto :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Zavrsna velicina :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Rukovanje inteligentne korupcije (I.C.H.)" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Izgubljeno zbog korupcije :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Steceno kompresijom :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Paketi spaseni kroz I.C.H. :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Preuzimanje" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Ciscenje" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Primijeni" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Kvalitet fajla" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Bez ocjene" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Neispravan / Koruptan / Falsifikat" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Los" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Vrlo dobar" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Dobar" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Odlican" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "Izaberi ocjenu fajla ili savjet korisnika ako je fajl neispravan ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Obnovi" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Downoading, molim strpljenje ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Trazene informacije" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP adresa:" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Dodatne informacije" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Ime korisnika :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Hash korisnika :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Dodaj" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Brzina downloada" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Trenutno" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Prosjek rada" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Prosjek misije" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Brzina uploada" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktivni downloadovi" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktivne veze (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Aktivni uploadovi" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Drvo statistike" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Ime korisnika:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Rezultati" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "Pun red cekanja" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Nadimak" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "" #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Pocni minimiran" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Pitanje pri napustanju" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Pretrazi :" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Video Plejer" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Upload" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Alokacija slota" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Autospajanje pri startu" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Ponovni spoj kod gubitka veze" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Otstrani mrtve servere nakon" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "pokusaja" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Lista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Koristi sistem prioriteta" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Koristi pametnu LowID provjeru pri vezanju" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Sigurno povezivanje" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Autopovezivanje samo sa serverima iz staticne liste" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Postavi rucno dodate servere na visoki prioritet" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Dodaj nove fajlove u stanju pauze" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Dodaj nove fajlove sa auto prioritetom" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Pokusaj prvo downloadovati pocetni i zavrsni chunk " #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Uploadovi" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Dodaj nove dijeljene fajlove sa auto prioritetom" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafovi" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Obnovi kasnjenje : 5 sekundi" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Vrijeme za prosjecni graf: 100 minuta" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Pozadina" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Mreza" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Trenutni download" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Prosjek tekuceg downloada" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Prosjek downloada misije" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Trenutni upload" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Prosjek tekuceg uploada" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Prosjek uploada misije" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Aktivne veze" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "poluga brzine prikazana u sistemskom koritu" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Izaberi" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! UPOZORENJE !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Maksimalne veze u / 5 sekundi" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Fajl Buffer velicina: 240000 bytes" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Duzina reda cekanja: 5000 klienta" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Interval obnavljanja veze servera: onemoguceno" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Pokazi transfer rate u naslovu" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Pokazi transfer rate u naslovu" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Pljosnata" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Obla" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parametri za spoljasnju vezu" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Prihvati spoljasnje veze" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Sifra za puna prava" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Odobri korisnicima sa manje prava" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Sifra za manje prava" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Vrijeme obnove stranice (u sekundama)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Odobri Gzip kompresiju" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Naziv :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Komentar:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Prijemni direktorij :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Promijeni prioritet za nove fajlove :" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "Ne mijenjaj" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Izaberi boju za ovu kategoriju (trenutno izabrana) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Ponistenje" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "" #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Klikni ovdje da obnovis listu servera sa URL ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Dodaj servera rucno (prije ispuni polja lijevo) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule Log" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Lista servera" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Svi" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Omoguci online potpis" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Otvori fajl" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Ceka ..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Aktivni uploadovi :" #: src/muuli_wdr.cpp:3371 #, fuzzy msgid "Percent of total files" msgstr "Ukupni fajlovi" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Dijeljeni fajlovi" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Izaberi filter za gledanje" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Aktivni uploadovi" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Pokazi liste" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Ponovno ucitati" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Posalji" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Dijeljeni fajlovi" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Onemoguceno [%s]" #: src/OtherFunctions.cpp:111 #, fuzzy msgid "byte" msgid_plural "bytes" msgstr[0] "Bytes" msgstr[1] "Bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 #, fuzzy msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "kBytes/sec" msgstr[1] "kBytes/sec" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "sekundi" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "minuta" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "svi" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "svi drugi" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Nedovrseno" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Stopirano" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Arhiva" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Tekst" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "GRESKA: neuspjesno stvaranje zapocetog fajla)" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "Greska: fajl known.met je koruptan, nemoguce citati poznate fajlove" #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "" #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Neuspjelo otvaranje %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "" #: src/PartFile.cpp:904 #, fuzzy msgid "IO failure while saving partfile: " msgstr "GRESKA kod spasavanja pocetog fajla: %s (%s => %s)" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "" #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Neuspjesno spasavanje part.met.seeds fajla za %s" #: src/PartFile.cpp:1020 #, fuzzy, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Spaseni %i seeds izvora za poceti fajl: %s (%s)" msgstr[1] "Spaseni %i seeds izvora za poceti fajl: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Spaseni %i seeds izvora za poceti fajl: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, fuzzy, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Nadjen koruptan dio (%i) u %i pocetom fajlu %s - FileResultHash |%s| " "FileHash |%s|" msgstr[1] "" "Nadjen koruptan dio (%i) u %i pocetom fajlu %s - FileResultHash |%s| " "FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Zavrseno rehashing %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "" #: src/Preferences.cpp:632 msgid "System default" msgstr "Standard sistema" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabic" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "Estonian" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Basque" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgarian" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Catalan" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "" #: src/Preferences.cpp:642 msgid "Czech" msgstr "" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Danish" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Dutch" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estonian" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finnish" #: src/Preferences.cpp:648 msgid "French" msgstr "French" #: src/Preferences.cpp:649 msgid "Galician" msgstr "" #: src/Preferences.cpp:650 msgid "German" msgstr "German" #: src/Preferences.cpp:651 msgid "Greek" msgstr "" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Hungarian" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italian" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Korean" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lithuanian" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polish" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portuguese" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Estonian" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Russian" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Spanish" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Jezik" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Veza" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Direktoriji" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Serveri" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Fajlovi" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Daljinsko upravljanje" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Ne mijenjaj ove opcije ako ne znas\n" "sta radis, jer time mozes lako pogorsati\n" "svoje stanje.\n" "\n" "aMule ce raditi dobro iako ne promijenis\n" "nista od ovih opcija." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Parametri za spoljasnju vezu" #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Parametri za spoljasnju vezu" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Parametri za spoljasnju vezu" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Parametri za spoljasnju vezu" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Potrazi videoplejer" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Dodaj ovdje URLs da dobijes server.met fajlove. \n" "Samo jedna URL po liniji." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, fuzzy, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Obnovi kasnjenje : 5 sekundi" msgstr[1] "Obnovi kasnjenje : 5 sekundi" #: src/PrefsUnifiedDlg.cpp:1126 #, fuzzy, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Vrijeme za prosjecni graf: 100 minuta" msgstr[1] "Vrijeme za prosjecni graf: 100 minuta" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "" #: src/PrefsUnifiedDlg.cpp:1144 #, fuzzy, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Velicina fajl buffera %i bytes" msgstr[1] "Velicina fajl buffera %i bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, fuzzy, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Duzina liste cekanja %i klienata" msgstr[1] "Duzina liste cekanja %i klienata" #: src/PrefsUnifiedDlg.cpp:1157 #, fuzzy, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Interval obnavljanja veze servera %i minuta" msgstr[1] "Interval obnavljanja veze servera %i minuta" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Interval obnavljanja veze servera: onemoguceno" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "onemoguci" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "FileID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Fajl" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Upitao za drugi fajl" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "Otkaz" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Neuspjesno spajanje sa svim serverima u list. Pocinje iznova." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Spojen sa %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Uspostavljena veza sa: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Fatalna greska prilikom pokusaja spajanja. Veza interneta je moguce prekinuta" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Izgubljena veza sa %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) je mrtav" #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "" #: src/ServerConnect.cpp:392 #, fuzzy, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Automatsko spajanje sa serverom ce ponovo poceti za %d sekundi" msgstr[1] "Automatsko spajanje sa serverom ce ponovo poceti za %d sekundi" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Izgubljena veza" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "" #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" #: src/ServerList.cpp:174 #, fuzzy, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i servera pronadjeno u server.met" msgstr[1] "%i servera pronadjeno u server.met" #: src/ServerList.cpp:176 #, fuzzy, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d servera dodato" msgstr[1] "%d servera dodato" #: src/ServerList.cpp:179 #, fuzzy msgid "Error: the file 'server.met' is corrupted: " msgstr "Greska: fajl server.met je koruptan" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "Neocekivana fajl greska prilikom pisanja %s : %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "" #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Neuspjelo spasavanje server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Neispravna URL" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "Neuspio download serverliste od %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Ime servera" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Opis" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Korisnici" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Staticni" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Serveri (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Server" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Odstrani servera" #: src/ServerListCtrl.cpp:420 #, fuzzy msgid "Remove servers" msgstr "Odstrani servera" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Odstrani sve servere" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "" #: src/ServerListCtrl.cpp:542 #, fuzzy msgid "Are you sure that you wish to delete the selected server?" msgstr "Da li zaist zelis otkazati i obrisati ove fajlove ?\n" #: src/ServerListCtrl.cpp:544 #, fuzzy msgid "Are you sure that you wish to delete the selected servers?" msgstr "Da li zaist zelis otkazati i obrisati ove fajlove ?\n" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Novi klientID je %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "" #: src/ServerSocket.cpp:532 #, fuzzy, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Primljeno %d novih servera" msgstr[1] "Primljeno %d novih servera" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "" #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Server je odbio posljednju komandu" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "" #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "" #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "" #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "Vrh broja veza (procjena)" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "Spajanje" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "Spojen sa %s (%s:%i)" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "Nadjeni izvori :" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, fuzzy, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Pronadjeno %i poznatih dijeljenih fajlova" msgstr[1] "Pronadjeno %i poznatih dijeljenih fajlova" #: src/SharedFileList.cpp:377 #, fuzzy, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Pronadjeno %i poznatih dijeljenih fajlova, %i nepoznatih" msgstr[1] "Pronadjeno %i poznatih dijeljenih fajlova, %i nepoznatih" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Ime korisnika" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Brzina downloada" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Brzina uploada" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Dostupnost :" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Uploadovi" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 #, fuzzy msgid "Download Status" msgstr "Downloads" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Ime fajla" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Dijeljeni fajlovi" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Zahtjevi" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Prihvaceni zahtjevi" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Podatak transfera" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Dobiveni dijelovi" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Preimenovanje" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Kopiraj ed2k &linkove u klipbord (&Source)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Za ispravan izvorni link, potrebna je HIGH ID" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Dijeljeni fajlovi (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Ime fajla" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Prosjecno vrijeme uploada: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Ponovno vezan: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Vriejme od prvog transfera: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Spojen sa serverom vec: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Klienti" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "Nepoznat: %i" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "Filtrirani: %i" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "Zabranjen" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Zauzetost servera: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Ukupna velicina dijeljenih fajlova: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktivne veze (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "" #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "" #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Downloads (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "" #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "" #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 #, fuzzy msgid "Search progress not available" msgstr "%s Nije dostupan" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "" #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "" #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "" #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "" #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "" #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "" #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "" #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "" #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "" #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "" #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "" #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "" #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "" #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "" #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "" #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "" #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "" #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "" #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "" #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "" #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "" #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "" #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "" #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "" #: src/TextClient.cpp:900 src/TextClient.cpp:902 msgid "The given value must be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "" #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "" #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "" #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "" #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "" #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "" #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "" #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "" #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "" #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "Pokazi polugu napretka" #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "Pokazi polugu napretka" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "" #: src/TextClient.cpp:938 msgid "Resume download." msgstr "" #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "" #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "" #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "" #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "" #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "" #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "" #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "" #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "" #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "" #: src/TextClient.cpp:955 msgid "Show log." msgstr "" #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "" #: src/TextClient.cpp:959 msgid "Reset log." msgstr "" #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" #: src/TextClient.h:59 msgid "aMule text client" msgstr "" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "" #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Da li zaista zelite da ponistite i obrisete sve fajlove u ovoj kategoriji?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Potrebna potvrda" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Previse konekcija" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Izaberi filter za gledanje" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Dodaj kategoriju" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Editiraj kategoriju" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Odstrani kategoriju" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "" #: src/UserEvents.h:60 msgid "Download completed" msgstr "" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "" #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "" #: src/UserEvents.h:85 msgid "Message sender." msgstr "" #: src/UserEvents.h:88 msgid "Out of space" msgstr "" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 #, fuzzy msgid "Cancelled !" msgstr "Otkaz" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1110 #, fuzzy msgid " kB/s" msgstr "kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "" #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "" #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "" #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Poceti fajl %s (%s) nema seesd fajlova" #, fuzzy #~ msgid "Download status" #~ msgstr "Downloads" #~ msgid "..." #~ msgstr "..." #, fuzzy #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Obnovi kasnjenje : 5 sekundi" #~ msgstr[1] "Obnovi kasnjenje : 5 sekundi" #~ msgid "Transferring" #~ msgstr "Prenosi" #, fuzzy #~ msgid "Only files currently uploading" #~ msgstr "Trenutno downloading :" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "Pun red cekanja" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Pokusaj uploadovati kompletne chunks" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Downloading" #~ msgid "Transfers" #~ msgstr "Transferi" #~ msgid "Unban" #~ msgstr "Dozvoli" #~ msgid "Show Uploads" #~ msgstr "Pokazi uploadove" #~ msgid "Show Queue" #~ msgstr "Pokazi red cekanja" #~ msgid "Waited" #~ msgstr "Cekao" #~ msgid "Upload Time" #~ msgstr "Vriejeme uploada" #~ msgid "File Priority" #~ msgstr "Prioritet fajla" #~ msgid "Score" #~ msgstr "Rezultat" #~ msgid "Asked" #~ msgstr "Upitan" #~ msgid "Last Seen" #~ msgstr "Posljednji put vidjen" #~ msgid "Entered Queue" #~ msgstr "Usao u red cekanja" #~ msgid "Clients on queue :" #~ msgstr "Klienti na cekanju :" #~ msgid "Current Session" #~ msgstr "Trenutna misija" #~ msgid "Total" #~ msgstr "Ukupno" #~ msgid "Requested :" #~ msgstr "Zahtjevano :" #~ msgid "Files Transfers Window" #~ msgstr "Prozor transfera fajlova" #, fuzzy #~ msgid "HTTP download thread ended" #~ msgstr "Istinska sirina pojasa downloada" #, fuzzy #~ msgid "Killed!" #~ msgstr "Neuspjesno" #~ msgid "Gui Tweaks" #~ msgstr "Gui Tweaks" #~ msgid "Line Capacities" #~ msgstr "Kapacitet linije" #~ msgid "Max Sources per File" #~ msgstr "Maksimalni izvor po fajlu" #~ msgid "Start next paused file when a file completed" #~ msgstr "Nastavi iduci pauziran fajl cim je jedan fajl gotov" #~ msgid "Select Statistics Colors" #~ msgstr "Izaberi boje statistike" #~ msgid "Download Queue Files Progress" #~ msgstr "Napredak fajlova u redu cekanja" #~ msgid "Show percentage" #~ msgstr "Pokazi procente" #~ msgid "Show overhead bandwith" #~ msgstr "Pokazi sirinu pojasa overheada" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. aktiviran" #~ msgid "Progressbar Style" #~ msgstr "Vrsta poluge napredka" #~ msgid "Misc Gui Tweaks" #~ msgstr "Vershiedene GUI Tweaks" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "Za film mozes opisati njegovu duzinu, pricu, jezik ... \n" #~ "i da li je falsifikat i to ovim putem reci drugim korisnicima aMule." #~ msgid "Misc Options" #~ msgstr "Razne mogucnosti" #~ msgid "Display server motd when connected ..." #~ msgstr "Pokazi server motd kad je povezan ..." #~ msgid "Max Connections" #~ msgstr "Maksimalne veze" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - the Linux Mule" #~ msgid "Could not determine the command for running the browser." #~ msgstr "Nije utvrdjena komanda za rad brausera." #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Kopiraj ed2k &linkove u klipbord" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Kopiraj ED2k link u klipbord" #, fuzzy #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Kopiraj ED2k link u klipbord" #, fuzzy #~ msgid "ED2K: Connecting" #~ msgstr "Spajanje" #, fuzzy #~ msgid "ED2K: Disconnected" #~ msgstr "Prekinuta veza" #~ msgid "Edit Serverlist" #~ msgstr "Editiraj listu servera" #~ msgid "Average filesize: %s" #~ msgstr "Prosjecna velicina fajla: %s" #~ msgid "Error" #~ msgstr "Greska" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "Neocekivana fajl greska prilikom zavrsavanja %s. Fajl pauziran" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "Upozorenje: Nemoguce hashovanje gotovog dijela - hashset nedovrsen (%s). " #~ "Ovo ne smije da se desi" #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "Ni jedan vezeci server u listi nije pronadjen" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "Greska: neispravan socket u vrijeme timeouta" #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Limit sirine pojasa" #~ msgid "Hard Limit" #~ msgstr "Hard Limit" #~ msgid "Connection Limits" #~ msgstr "Limit veza" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Automatski obnovi listu servera pri pocetku" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Obnovi listu servera kad si povezan sa serverom" #~ msgid "Update serverlist when a client connect" #~ msgstr "Obnovi listu servera kad si povezan sa klientom" #~ msgid "Incoming Directory :" #~ msgstr "Prijemni direktorij :" #~ msgid "Temporary Directory :" #~ msgstr "Privremeni direktorij :" #~ msgid "Shared Directories" #~ msgstr "Dijeljeni direktoriji :" #~ msgid "Create Backup to preview" #~ msgstr "Stvori backup za preuvid" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Pokazi brzog ED2K rukovatelja" #~ msgid "Webserver Parameters" #~ msgstr "Webserver Parametri" #~ msgid "Webserver port" #~ msgstr "Port Webservera" #~ msgid "Serverlist" #~ msgstr "Lista servera" #~ msgid "Manual Server Add : Name" #~ msgstr "Rucni dodatak servera : Ime" #~ msgid "TCP Port: Not Ready" #~ msgstr "TCP Port: Nije spreman" #~ msgid "UDP Port: Not Ready" #~ msgstr "UDP Port: Nije spreman" #~ msgid "Upload Limit" #~ msgstr "Limit uploada" #~ msgid "Download Limit" #~ msgstr "Limit downloada" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "U 'addresses.dat' nije nadjen upis server liste. Molim upisitevazecu " #~ "adresu u ovaj fajl zbog auto obnavljanja server liste" #~ msgid "Not Supported" #~ msgstr "Bez podrske" #~ msgid "Browse wav" #~ msgstr "Potrazi wav" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "Fajl wav (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "Bez komentara" #~ msgid "Messages popup" #~ msgstr "Popup poruka" #~ msgid "Use sound" #~ msgstr "Koristi ton" #~ msgid "Pop out when :" #~ msgstr "Iskoci kad :" #~ msgid "New entry on log" #~ msgstr "Novi upis u logu" #~ msgid "Starts a new chat session" #~ msgstr "Pocetak novog razgovora" #~ msgid "A new chat message is received" #~ msgstr "Nova poruka primljena" #~ msgid "A download is added or finished" #~ msgstr "Download je dodat ili gotov" #~ msgid "New aMule version detected" #~ msgstr "Otkrivena nova aMule verzija" #~ msgid "Urgent OOD, serverconnection lost" #~ msgstr "Hitno OOD, izgubljena veza sa serverom" #~ msgid "Notify by Mail" #~ msgstr "Obavijesti mailom" #~ msgid "Send an Email when transfer complete." #~ msgstr "Posalji email kad je transfer gotov." #~ msgid "SMTP server :" #~ msgstr "SMTP server :" #~ msgid "Email Address :" #~ msgstr "Email Adresa :" #~ msgid ":" #~ msgstr ":" #~ msgid "Sources Dropping" #~ msgstr "Odbacivanje izvora" #~ msgid "Send sources to any other file before dropping (High CPU)" #~ msgstr "Posalji izvore nekom drugom fajlu prije odbacivanja (visoka CPU)" #~ msgid "Full Queue Sources Handling" #~ msgstr "Rukovanje punih izvora" #~ msgid "Enable auto drop Full Queue Sources" #~ msgstr "Omoguci auto odbacivanje punih izvora" #~ msgid "High Queue Rating Sources Handling" #~ msgstr "Rukovanje izvora sa visokim redom cekanja" #~ msgid "Enable auto drop High Queue Rating Sources" #~ msgstr "Omguci auto odbacivanje izvora sa visokim redom cekanja" #~ msgid "High Queue Rating value" #~ msgstr "Vrijednost ocjene visokog reda cekanja" #~ msgid "(Min 300 / Max 3000)" #~ msgstr "(Min 300 / Max 3000)" #~ msgid "Auto Drop Sources Timer" #~ msgstr "Tajmer za auto odbacivanje" #~ msgid "Timer (in secs)" #~ msgstr "Tajmer (u sekundama)" #~ msgid "(Min 60 / 3600 Max)" #~ msgstr "(Min 60 / 3600 Max)" #~ msgid "Drop No Needed Sources now" #~ msgstr "Odbaci nepotrebne izvore sada" #~ msgid "Drop Full Queue Sources now" #~ msgstr "Odbaci pune izvore sada" #~ msgid "Drop High Queue Rating Sources now" #~ msgstr "Odbaci izvore sa previsokim mjestom u redu cekanja" #~ msgid "Clean Up Sources now (NNS, FQS && HQRS)" #~ msgstr "Pocisti izvore sada (NNS, FQS && HQRS)" #~ msgid "Copy ED2k link to clipboard (Hostname)" #~ msgstr "Kopiraj ed2k &linkove u klipbord (Hostname)" #~ msgid "Minimize to trayicon" #~ msgstr "Minimiraj u ikonu korita" #~ msgid "Port %d is not available. You will be LOWID" #~ msgstr "Port %d nije dostupan. Imas LOWID" #~ msgid "" #~ "Port %d is not available !!\n" #~ "\n" #~ "This will mean that you will be LOWID.\n" #~ "\n" #~ "Use netstat to determine when port becomes available\n" #~ "and try starting amule again." #~ msgstr "" #~ "Port %d nije dostupan!!\n" #~ "\n" #~ "To znaci da ces imati LOWID.\n" #~ "\n" #~ "Koristi netstat da saznas kad ce port postati slobodan\n" #~ "i startaj amule iznova." #~ msgid "Failed to save" #~ msgstr "Neuspjesno pohranjivanje" #~ msgid " OnlineSig File" #~ msgstr "Fajl online potpisa" #~ msgid "" #~ "The selected locale seems not to be installed on your box\n" #~ " You must generate it to use this language.\n" #~ "A good start on linux systems is the file /etc/locale.gen and the package " #~ "'locales'\n" #~ "Good luck!\n" #~ "(Note: I'll try to set it anyway)" #~ msgstr "" #~ "Izabrani lokal nije pronadjen na tvom sistemu\n" #~ "Moras ga stvoriti da bi koristio ovaj jezik. \n" #~ "Dobar pocetak na linux sistemima je fajl /etc/locale.gen i " #~ "paket'locales'\n" #~ "Mnogo srece!\n" #~ "(Nota: Pokusat cu u svakom slucaju)" #~ msgid "" #~ "Unable to launch browser. Please set correct browserexecutable path in " #~ "Preferences." #~ msgstr "" #~ "Neuspjeh pri ukljucenju brausera. U postavkama se moze namjestititrag " #~ "egsekutivnog fajla brausera." #~ msgid "" #~ " --- This is the first time you run aMule %s ---\n" #~ "\n" #~ msgstr "" #~ "--- Ovo je prvi put da koristis aMule %s ---\n" #~ "\n" #~ msgid "This version is a testing version, updated daily, and \n" #~ msgstr "Ovo je test verzija, koja se dnevno obnavlja, mi \n" #~ msgid "or kill your dog. But it *should* be safe to use anyway. \n" #~ msgstr "" #~ "ili ubiti tvog psa. *Trebalo* bi biti sigurno za koriscenje u svakom " #~ "slucaju. \n" #~ msgid "This version has new SecureHash support, so your \n" #~ msgstr "Ova verzija ima novu sigurnosnu hash podrsku, tako da \n" #~ msgid "client credits will be lost on this first run. \n" #~ msgstr "ce klient krediti biti izgubljeni prilikom prvog rada. \n" #~ msgid "There is no way to fix that, and eMule did the same.\n" #~ msgstr "" #~ "Ne postoji mogucnost da se to ispravi i sa eMule je bio isti slucaj. \n" #~ msgid "But your hash will be safe against stealers now, and your\n" #~ msgstr "Tvoj hash ce ovim putem biti siguran protiv hash lopova, a tvoj\n" #~ msgid "cryptokey.dat and clients.met are eMule compatible now.\n" #~ msgstr "cryptokey.dat i clients.met su sada sa eMule kompatibilni. \n" #~ msgid "" #~ "Just take them from your eMule config dir and put then on ~/.aMule.\n" #~ msgstr "" #~ "Samo ih preuzmi iz svog eMule config direktorija i stavi na ~/.aMule. \n" #~ msgid "If your language is changed now, please set it again on preferences." #~ msgstr "" #~ "Ako je vas jezik ovim promijenjen, molim namjesti ga ponovo pod opcijama." #~ msgid "Feel free to report any bugs to forum.amule.org" #~ msgstr "Slobodno prijavi bilo kakve greske ili bugove u forum.amule.org" #~ msgid "Desktop integration" #~ msgstr "Integracija desktopa" #~ msgid "Connection established on:" #~ msgstr "Veza uspostavljena sa:" #~ msgid "Connect to any server" #~ msgstr "Spoji sa bilo kojim serverom" #~ msgid "This ed2k link is invalid (%s)" #~ msgstr "Ovaj ed2k link nije vazeci (%s)" #~ msgid "Invalid link: %s" #~ msgstr "Nevazeci link: %s" #~ msgid "Filtered IP: %s (%s)" #~ msgstr "Filterovane IP: %s (%s)" #~ msgid "Rating for file '%s' received: %i" #~ msgstr "Ocjena za fajl'%s' primljeno: %i" #~ msgid "Description for file '%s' received: %s" #~ msgstr "Opis fajla '%s' primljeno: %s" #~ msgid "Unable to retrieve shared files from '%s'" #~ msgstr "Neuspjesan prikaz dijeljenjih fajlova od '%s'" #~ msgid "Requesting shared files from user %s (%u) is already in progress" #~ msgstr "Zahtjev dijeljenih fajlova od korisnika %s (%u) je vec u toku" #~ msgid "NickName: %s\n" #~ msgstr "Nadimak: %s\n" #~ msgid "Filestats for all sessions: Accepted %d of %d requests" #~ msgstr "Fajl statistike za sve misije: Prihvaceno %d od %d zahtjeva" #~ msgid "can't create file '%s'" #~ msgstr "ne moze naciniti fajl '%s'" #~ msgid "Can't open file '%s'" #~ msgstr "Ne moze otvoriti fajl '%s'" #~ msgid "can't close file descriptor %d" #~ msgstr "Ne moze zatvoriti opisivaca %d" #~ msgid "can't read from file descriptor %d" #~ msgstr "Ne moze citati iz opisivaca fajla %d" #~ msgid "can't write to file descriptor %d" #~ msgstr "Ne moze pisati u poisivaca fajla %d" #~ msgid "can't flush file descriptor %d" #~ msgstr "Ne moze poplaviti opisivaca fajla %d" #~ msgid "unknown seek origin" #~ msgstr "Nepoznato porijeklo trazenja" #~ msgid "can't get seek position on file descriptor %d" #~ msgstr "Ne moze naci poziciju trazenja na opisivacu fajla %d" #~ msgid "can't find length of file on file descriptor %d" #~ msgstr "Ne moze naci duzinu fajla na opisivacu fajla %d" #~ msgid "can't determine if the end of file is reached on descriptor %d" #~ msgstr "Ne moze potvrditi da li je kraj fajla pronadjen na opisivacu %d" #~ msgid "invalid eof() return value." #~ msgstr "Nevazeca eof() vrijednost" #~ msgid "*** Chatsession Start : " #~ msgstr "*** Pocetak razgovora :" #~ msgid "Message from" #~ msgstr "Poruka od" #~ msgid "failed" #~ msgstr "neuspjesno" #~ msgid "*** Disconnected" #~ msgstr "*** Veza prekinuta" #~ msgid "Failed to save creditfile" #~ msgstr "Neuspjesno spasavanje kreditnog fajla" #~ msgid "IDS_CRYPT_INITFAILED\n" #~ msgstr "IDS_CRYPT_INITFAILED\n" #~ msgid "ClientSoftware ->" #~ msgstr "Klientov Software ->" #~ msgid "<- ClientVersion ->v" #~ msgstr "<- ClientVersion ->v" #~ msgid "<- ClientModString ->" #~ msgstr "<- ClientModString ->" #~ msgid "Not Avaiable" #~ msgstr "Nedostupan" #~ msgid "" #~ "WARNING! Found matching client, to a currently connected client: %s (%s) " #~ "and with %s" #~ msgstr "" #~ "UPOZORENJE! Nadjen isti klient sa trenutno povezanim klientom: %s (%s) i " #~ "sa %s" #~ msgid "" #~ "Error while processing incoming UDP Packet (Most likely a misconfigured " #~ "server)" #~ msgstr "" #~ "Greska prilikom prijema UDP paketa (vjerovatno lose konfiguriran server)" #~ msgid "" #~ "Ignoring %u bytes of block %u-%u because of errornous zstream state for " #~ "file \"%s\"" #~ msgstr "" #~ "Ignorisanje %u bytes bloka %u-%u zbog pogresnog zstreama stanja za fajl\"%" #~ "s\"" #~ msgid "Corrupted compressed packet for %s received (error %i)" #~ msgstr "Koruptan komprimirani paket za %s dobiven (error %i)" #~ msgid "Unknown exception in %s: file \"%s\"" #~ msgstr "Nepoznata iznimka u %s: fajlu \"%s\"" #~ msgid "Check Fake" #~ msgstr "Provjera o podvali" #~ msgid "Copy ED2k link to clipboard (&HTML)" #~ msgstr "Kopiraj ed2k &linkove u klipbord (&HTML)" #~ msgid "Hide Lists" #~ msgstr "Sakrij liste" #~ msgid "Preview [" #~ msgstr "Preuvid [" #~ msgid "eDonkey v%i" #~ msgstr "eDonkey v%i" #~ msgid "eDonkeyHybrid v%i" #~ msgstr "eDonkeyHybrid v%i" #~ msgid "eMule v%02X" #~ msgstr "eMule v%02X" #~ msgid "aMule [ %s ]" #~ msgstr "aMule [ %s ]" #~ msgid "aMule v0.%02X" #~ msgstr "aMule v0.%02X" #~ msgid "lMule/xMule v0.%02X" #~ msgstr "lMule/xMule v0.%02X" #~ msgid "Old MLdonkey" #~ msgstr "Old MLdonkey" #~ msgid "New MLdonkey" #~ msgstr "New MLdonkey" #~ msgid "Are you sure that you want to cancel and delete this file ?\n" #~ msgstr "Da li zaist zelis otkazati i obrisati ovaj fajl ?\n" #~ msgid "You already have the file %s" #~ msgstr "Vec imate fajl %s" #~ msgid "Bad link." #~ msgstr "Los link." #~ msgid "not a well-formed ed2k link" #~ msgstr "nije dobro formiran ed2k link" #~ msgid "Not an ED2K server or file link" #~ msgstr "Nije ed2k server ili fajl link" #~ msgid "can't write file '%s'" #~ msgstr "Ne moze pisati fajl '%s'" #~ msgid "" #~ "Error: couldn't accept a new external connection\n" #~ "\n" #~ msgstr "" #~ "Greska: nemoze prihvatiti novu vanjsku vezu\n" #~ "\n" #~ msgid "done" #~ msgstr "gotovo" #~ msgid "Failed to copy the file '%s' to '%s'" #~ msgstr "Greska u kopiranju fajla '%s' u '%s'" #~ msgid "Impossible to get permissions for file '%s'" #~ msgstr "Nemoguce je dobiti dozvolu za fajl '%s'" #~ msgid "Impossible to overwrite the file '%s'" #~ msgstr "Nemguce je prepisati fajl '%s'" #~ msgid "Impossible to set permissions for the file '%s'" #~ msgstr "Nemoguce je postaviti dozvole za fajl '%s'" #~ msgid "Loaded ipfilter with %d IP addresses." #~ msgstr "Ucitan ipfilter sa %d IP adresa." #~ msgid "" #~ "Unexpected file error while reading known.met: %s, unable to load known " #~ "files" #~ msgstr "" #~ "Neocekivana fajl greska prilikom citanja known.met: %s, nemoguce citati " #~ "poznate fajlove" #~ msgid "User %s (%u) requested your sharedfiles-list -> %s" #~ msgstr "Korisnik %s (%u) ja zahtio tvoju listu dijeljenih fajlova -> %s" #~ msgid "accepted" #~ msgstr "prihvaceno" #~ msgid "denied" #~ msgstr "odbijeno" #~ msgid "User %s (%u) requested your shareddirectories-list -> %s" #~ msgstr "" #~ "Korisnik %s (%u) je zahtio tvoju listu zajednickih direktorija -> %s" #~ msgid "User %s (%u) denied access to shareddirectories/files-list" #~ msgstr "Korisnik %s (%u) ja zabranio dostup liste dijeljenih fajlova" #~ msgid "Client '%s' (IP:%s) caused an error: %s. Disconnecting client!" #~ msgstr "" #~ "Klient '%s' (IP:%s) je prouzrocio gresku: %s. Prekidanje veze klienta!" #~ msgid "" #~ "A client caused an error or did something bad: %s. Disconnecting client!" #~ msgstr "" #~ "Klient je prouzrokovao gresku ili nacinio nesto lose: %s. Prekidanje veze " #~ "klienta!" #~ msgid "Client '%s' (IP:%s) caused an error: %u. Disconnecting client!" #~ msgstr "" #~ "Klient '%s' (IP:%s) je prouzrocio gresku: %u. Prekidanje veze klienta!" #~ msgid "Unknown client (IP:%s) caused an error: %u. Disconnecting client!" #~ msgstr "" #~ "Nepoznat klient (IP:%s) je prouzrocio gresku: %u. Prekidanje veze klienta!" #~ msgid "" #~ "A client caused an error or did something bad. Disconnecting client !" #~ msgstr "" #~ "Klient je prouzrokovao gresku ili nacinio nesto lose. Prekidanje veze " #~ "klienta!" #~ msgid "Concurrent Downloads" #~ msgstr "Konkurentni downloadi" #~ msgid "1-5" #~ msgstr "1-5" #~ msgid "6-15" #~ msgstr "6-15" #~ msgid "16+" #~ msgstr "16+" #~ msgid "Connection Type" #~ msgstr "Vrsta veze" #~ msgid "Select your connection type here :" #~ msgstr "Izaberite vrstu vase veze ovdje:" #~ msgid "True upload bandwidth" #~ msgstr "Istinska sirina pojasa uploada" #~ msgid "Unit:" #~ msgstr "Jedinica:" #~ msgid "kbits/sec" #~ msgstr "kbits/sec" #~ msgid "" #~ "For system tray integration to work,\n" #~ "you must specify which desktop you are using.\n" #~ "You can change this later from preferences." #~ msgstr "" #~ "Da bi sistemsko korito moglo da radi,\n" #~ "moras navesti koji desktop koristis. \n" #~ "Ovo mozes kasnije promijeniti u postavkama." #~ msgid "Desktop" #~ msgstr "Desktop" #~ msgid "Gnome 2.x (or other XEMBED compatible)" #~ msgstr "Gnome 2.x (or other XEMBED compatible)" #~ msgid "KDE 3.x" #~ msgstr "KDE 3.x" #~ msgid "KDE 2.x / Gnome 1.2 " #~ msgstr "KDE 2.x / Gnome 1.2 " #~ msgid "No systray integration, please" #~ msgstr "Molim, ne integraciju u sistemskom koritu." #~ msgid "Fast ED2K Links Handler (Direct Download)" #~ msgstr "Brzi ED2K rukovatelj (Direktan download)" #~ msgid "Name" #~ msgstr "Ime" #~ msgid "Automatically assign new downloads to selected category" #~ msgstr "Automatski primijeni nove downloade izabranim kategorijama" #~ msgid "Min Availability" #~ msgstr "Najmanja raspolozivost" #~ msgid "Search global" #~ msgstr "Globalna pretraga" #~ msgid "Clear All" #~ msgstr "Obrisi sve" #~ msgid "Download selected" #~ msgstr "Downloaduj izabrano" #~ msgid "Media Info" #~ msgstr "Media Info" #~ msgid "Codec:" #~ msgstr "Codec:" #~ msgid "Bitrate:" #~ msgstr "Bitrate:" #~ msgid "Length:" #~ msgstr "Duzina :" #~ msgid " / (" #~ msgstr " / (" #~ msgid ")" #~ msgstr ")" #~ msgid "Source Names" #~ msgstr "Ime izvora" #~ msgid "Comment this file (this text will be show by all users)" #~ msgstr "Komentiraj ovaj fajl (ovaj tekst vide svi korisnici)" #~ msgid "(" #~ msgstr "(" #~ msgid "Clientsoftware :" #~ msgstr "Klientov software :" #~ msgid "Server IP :" #~ msgstr "Server IP :" #~ msgid "Clientversion :" #~ msgstr "Verzija klienta :" #~ msgid "ID :" #~ msgstr "ID :" #~ msgid "Downloaded (this session) :" #~ msgstr "Downloaded (ova misija)" #~ msgid "Average downloadrate :" #~ msgstr "Prosjecna brzina downloada :" #~ msgid "Downloaded total :" #~ msgstr "Downloaded ukupno :" #~ msgid "Uploaded (this session) :" #~ msgstr "Uploaded (ova misija) :" #~ msgid "Average Uploadrate :" #~ msgstr "Prosjecna brzina uploada :" #~ msgid "Uploaded total :" #~ msgstr "Uploaded ukupno :" #~ msgid "DL/UP Modifier :" #~ msgstr "DL/UP Modifikator :" #~ msgid "Rating (total) :" #~ msgstr "Ocjena (ukupno) :" #~ msgid "Secure Ident :" #~ msgstr "Sigurna identifikacija :" #~ msgid "Uploadqueue score :" #~ msgstr "Ocjena upload reda cekanja :" #~ msgid "Chinese" #~ msgstr "Chinese" #~ msgid "English" #~ msgstr "English" #~ msgid "Galego" #~ msgstr "Galego" #~ msgid "German (Swiss)" #~ msgstr "German (Swiss)" #~ msgid "Portuguese (Brazil)" #~ msgstr "Portuguese (Brazil)" #~ msgid "Spanish (Chile)" #~ msgstr "Spanish (Chile)" #~ msgid "Spanish (Mexico)" #~ msgstr "Spanish (Mexico)" #~ msgid "Turkey" #~ msgstr "Turkey" #~ msgid "Beep on errors" #~ msgstr "Pip na greskama" #~ msgid "Bring to front on link click" #~ msgstr "Naprijed dovesti na pritisak linka" #~ msgid "Downloadlist doubleclick to expand" #~ msgstr "Duplim pritiskom sirenje liste" #~ msgid "Tooltip Delay Time in secs (1s to 5s)" #~ msgstr "Tooltip kasnjenje u sekundama (1s to 5s)" #~ msgid "Systray Integration" #~ msgstr "Integracija u sistem koritu" #~ msgid "Startup" #~ msgstr "Pocetak" #~ msgid "5 Days" #~ msgstr "5 Dana" #~ msgid "Check for new version" #~ msgstr "Provjeri o novoj verziji" #~ msgid "Show Splashscreen" #~ msgstr "Pokazi logo" #~ msgid "Clientport" #~ msgstr "Port klienta" #~ msgid "TCP" #~ msgstr "TCP" #~ msgid "UDP" #~ msgstr "UDP" #~ msgid "Use Secure Ident" #~ msgstr "Koristi sigurnu identifikaciju" #~ msgid "Connection Wizard" #~ msgstr "Wizard za veze" #~ msgid "IP-Filter" #~ msgstr "IP-Filter" #~ msgid "IP-Filter ON / OFF" #~ msgstr "IP-Filter ON / OFF" #~ msgid "Always filter bad IPs" #~ msgstr "Uvijek filtriraj lose IPs" #~ msgid "See my shares" #~ msgstr "Smiju vidjeti moje fajlove" #~ msgid "Save 5 sources on rare files (< 20 sources)" #~ msgstr "Pohrani izvore za rijetke fajlove (< 20 izvora)" #~ msgid "Extract Meta Data Tags" #~ msgstr "Prosiri Meta Data Tags" #~ msgid "mplayer -idx" #~ msgstr "mplayer -idx" #~ msgid "aMule Tweaks Advertisements && Parameters" #~ msgstr "aMule Tweaks Advertisements && Parameters" #~ msgid "Verbose (additional program feedback)" #~ msgstr "Verbose (dodatna obavjestenja programa)" #~ msgid "Autotake ED2K Links only during runtime" #~ msgstr "Prihvati linkove samo dok program radi" #~ msgid "Upload/Download list refresh when updated" #~ msgstr "Obnovi listu Uploada/Downloada kod obnavljanja" #~ msgid "Upload/Download list refresh time: Realtime" #~ msgstr "Interval obnavljanja Upload/Download liste: tekuce vrijeme" #~ msgid "Arrange Downloads" #~ msgstr "Grupiraj downloadove" #~ msgid "Enable auto-arranging download list " #~ msgstr "odobri auto grupiranje liste downloada" #~ msgid "Download speed" #~ msgstr "Brzina downloada" #~ msgid "Number of sources" #~ msgstr "Broj izvora" #~ msgid "GTK Theme Selector" #~ msgstr "GTK izabirac teme" #~ msgid "Theme :" #~ msgstr "Tema :" #~ msgid "Use Font " #~ msgstr "Koristi font " #~ msgid "Font" #~ msgstr "Font" #~ msgid "Use old style tabs on preferences" #~ msgstr "Koristi stare tabove kod opcija" #~ msgid "No Needed Sources Handling" #~ msgstr "Rukovanje nepotrebnig izvora" #~ msgid "Enable auto drop No Needed Sources" #~ msgstr "Omoguci auto odbacivanje nepotrebnih izvora" #~ msgid "Extended Dropping" #~ msgstr "Prosireno odbacivanje" #~ msgid "Drop sources anyway" #~ msgstr "Odbaci izvore u svakom slucaju" #~ msgid "Enable Webserver" #~ msgstr "Omoguci Webservera" #~ msgid "Use TCP ports instead of unix local sockets" #~ msgstr "Koristi TCP portove umjesto unix local sockets" #~ msgid "External TCP port" #~ msgstr "Spoljascnji TCP port" #~ msgid "Enable password" #~ msgstr "Omoguci sifru" #~ msgid "Notify" #~ msgstr "Obavijesti" #~ msgid "aMule Tweaks" #~ msgstr "aMule Tweaks" #~ msgid "" #~ "http://ocbmaurice.dyndns.org/pl/slist.pl/server.met?download/server-good." #~ "met" #~ msgstr "" #~ "http://ocbmaurice.dyndns.org/pl/slist.pl/server.met?download/server-good." #~ "met" #~ msgid "Servers List Window" #~ msgstr "Prozor liste servera" #~ msgid "SharedFiles" #~ msgstr "Dijeljeni fajlovi" #~ msgid "New Prefs" #~ msgstr "Nove opcije" #~ msgid "News Preferences Work in Progress" #~ msgstr "nove opcije rade u napretku" #~ msgid "K" #~ msgstr "K" #~ msgid "h" #~ msgstr "h" #~ msgid "D" #~ msgstr "D" #~ msgid "?" #~ msgstr "?" #~ msgid "Error: Failed to open part.met file! (%s => %s)" #~ msgstr "greska: neuspjelo otvaranje part.met fajla! (%s => %s)" #~ msgid "Error: Invalid part.met fileversion! (%s => %s)" #~ msgstr "Greska: Neispravna part.met fajl verzija! (%s => %s)" #~ msgid "Error: %s (%s) is corrupt" #~ msgstr "Greska: %s (%s) ja koruptan" #~ msgid "Warning: %s might be corrupted" #~ msgstr "Upozorenje: %s je moguce koruptan" #~ msgid ".part file not found" #~ msgstr ".part fajl nije nadjen" #~ msgid "Unable to open %s file - using .bak file.\n" #~ msgstr "Neuspjelo otvaranje %s fajla koristeci .bak fajl. \n" #~ msgid "" #~ "%s file is 0 size somehow - using .bak file.\n" #~ " Please report on http://forum.amule.org\n" #~ msgstr "" #~ "%s fajl je 0 velicine nekako - koristeci .bak fajl.\n" #~ " Molim javite na http://forum.amule.org\n" #~ msgid "Partfile %s (%s) has void seeds file" #~ msgstr "Poceti fajl %s (%s) je izbjegao seeds fajlove" #~ msgid "" #~ "Found corrupted part (%i) in 0 parts file %s - FileResultHash |%s| " #~ "FileHash |%s|" #~ msgstr "" #~ "Nadjen koruptan dio (%i) u 0 pocetom fajlu %s - FileResultHash |%s| " #~ "FileHash |%s|" #~ msgid "Failed to delete %s" #~ msgstr "Neuspjelo brisanje %s" #~ msgid "Finished downloading %s :-)" #~ msgstr "Zavrsen download %s :-)" #~ msgid "A file with that name already exists, the file has been saved as %s" #~ msgstr "Fajl sa istim imenom vec postoji, fajl je spasen pod imenom %s" #~ msgid "Warning: Unable to hash downloaded part - hashset incomplete (%s)" #~ msgstr "" #~ "Upozorenje: Nemoguce hashovanje gotovog dijela - hashset nedovrsen (%s)" #~ msgid "ERROR: Cannot write to disk" #~ msgstr "GRESKA: ne moze pisati na disk" #~ msgid "Downloaded part %i is corrupt :( (%s)" #~ msgstr "Downloaded dio %i je koruptan :( (%s)" #~ msgid "ICH: Recovered corrupted part %i (%s)" #~ msgstr "ICH: Koruptan dio je popravljen %i (%s)" #~ msgid "" #~ "Partfilename: %s\n" #~ "Parts: %d , %s: %d (%.1f%%)\n" #~ msgstr "" #~ "Ime pocetog fajla: %s\n" #~ "Poceti fajlovi: %d , %s: %d (%.1f%%)\n" #~ msgid "%d%% done (%s) - Transferring from %d sources" #~ msgstr "%d%% gotov (%s) - Transfer od %d izvora" #~ msgid "Available" #~ msgstr "Dostupnost" #~ msgid "Last Seen Complete :" #~ msgstr "Posljednji put vidjen kompletno :" #~ msgid "Last Reception:" #~ msgstr "Posljednji prijem:" #~ msgid "Executable (*)|*||" #~ msgstr "Egzekutivno (*)|*||" #~ msgid "Language change will not be applied until aMule is restarted." #~ msgstr "Promjena jezika nece biti izvrsena prije ponovnog startanja aMule" #~ msgid "Update: Disabled" #~ msgstr "Obnavljanje: Onemoguceno" #~ msgid "Update period: %i sec" #~ msgstr "Period obnavljanja: %i sekundi" #~ msgid "Update period: %i secs" #~ msgstr "Period obnavljanja: %i sekundi" #~ msgid "Time for running averages: %i mins" #~ msgstr "Vrijeme rada prosjeka: %i minuta" #~ msgid "Tweaks" #~ msgstr "Tweaks" #~ msgid "Server connection refresh interval %i mins" #~ msgstr "Interval obnavljanja veze servera %i minuta" #~ msgid "Upload/Download list refresh time: Disable" #~ msgstr "Interval obnavljanja Upload/Download liste: onemogucen" #~ msgid "Upload/Download list refresh time: %i sec" #~ msgstr "Interval obnavljanja Upload/Download liste: %i sekundi" #~ msgid "Upload/Download list refresh time: %i secs" #~ msgstr "Interval obnavljanja Upload/Download liste: %i sekundi" #~ msgid "OLD Preferences" #~ msgstr "Stare postavke" #~ msgid "Choose a folder for " #~ msgstr "Izaberi mapu (folder) za" #~ msgid "%i days" #~ msgstr "%i dana" #~ msgid "%i day" #~ msgstr "%i dan" #~ msgid "PowerShare[Release]" #~ msgstr "Power dijeljenje[Release]" #~ msgid "Copy ED2k link to clipboard (HTML)" #~ msgstr "Kopiraj ED2k link u klipbord (HTML)" #~ msgid "Close this search result" #~ msgstr "Zatvori ovaj rezultat pretrage" #~ msgid "Description: %s" #~ msgstr "Opis: %s" #~ msgid "IP" #~ msgstr "IP" #~ msgid "User: %i" #~ msgstr "Korisnik: %i" #~ msgid "Unable to retrieve serverlist" #~ msgstr "Nije u stanju pronaci server listu" #~ msgid "Failed to load server.met!" #~ msgstr "Neuspjelo ucitavanje server.met!" #~ msgid "Invalid versiontag in server.met (0x%i , size %i)!" #~ msgstr "Neispravan versiontag u server.met (0x%i , size %i)!" #~ msgid "Server added: " #~ msgstr "Dodati serveri:" #~ msgid "Connect to this server" #~ msgstr "Spoji sa ovim serverom" #~ msgid "Add to static" #~ msgstr "Ucini staticnim" #~ msgid "Remove from static server list" #~ msgstr "Odstrani sa liste staticnih" #~ msgid "Preference" #~ msgstr "Opcija" #~ msgid "No Pref" #~ msgstr "Bez opcija" #~ msgid "Failed to open staticservers.dat" #~ msgstr "Neuspjelo otvaranje staticservers.dat" #~ msgid "Added to static server list" #~ msgstr "Dodat listi staticnih servera" #~ msgid "Unknown server info received !" #~ msgstr "Primljena nepoznata server informacija !" #~ msgid "Connecting to %s (%s:%i)..." #~ msgstr "Spajanje sa %s (%s:%i)..." #~ msgid "Error in serversocket: %s (%s:%i): %u" #~ msgstr "Greska u server soketu: %s (%s:%i): %u" #~ msgid "This is " #~ msgstr "Ovo je" #~ msgid " (based on " #~ msgstr "(na osnovi" #~ msgid "Visit http://www.amule.org to check if a new version is available.\n" #~ msgstr "" #~ "Posjetite http://www.amule.org da provjerite da li je nova verzija " #~ "dostupna. \n" #~ msgid "Please enter a serveraddress" #~ msgstr "Molim upisite adresu servera" #~ msgid "Incomplete serverport: Please enter a serverport" #~ msgstr "Nepotpun port server: Molim upisite port servera" #~ msgid "Server not added!" #~ msgstr "Server nije dodat!" #~ msgid "Low ID" #~ msgstr "Low ID" #~ msgid "High ID" #~ msgstr "High ID" #~ msgid "Loading..." #~ msgstr "Ucitava..." #~ msgid "Permission" #~ msgstr "Dozvola" #~ msgid "Public" #~ msgstr "Javno" #~ msgid "Friends only" #~ msgstr "Samo prijatelji" #~ msgid "Locked" #~ msgstr "Zakljucano" #~ msgid "Permissions" #~ msgstr "Dozvole" #~ msgid "Change this file's comment..." #~ msgstr "Promijeni komentar ovog fajla" #~ msgid "Auto [Re]" #~ msgstr "Auto [Re]" #~ msgid "Hidden" #~ msgstr "Sakriven" #~ msgid "You cannot change permissions while a file is still downloading!" #~ msgstr "Ne mozete promijeniti dozvole za vriejme downloada!" #~ msgid "%s (%s:%i) appears to be full" #~ msgstr "%s (%s:%i) je pun" #~ msgid "Connecting to %s (%s:%i ) failed." #~ msgstr "Spajanje sa %s (%s:%i ) nije uspjelo." #~ msgid "Connection attempt to %s (%s:%i ) timed out" #~ msgstr "Pokusaj spajanja sa %s (%s:%i ) istekao" #~ msgid "Refreshing server connection" #~ msgstr "Obnavljanje veze servera" #~ msgid "Uptime: " #~ msgstr "Vrijeme korisnika:" #~ msgid "Downloaded Data (Session (Total)): %s (%s)" #~ msgstr "Podatak downloada (misija (ukupno)): %s (%s)" #~ msgid "Total Overhead (Packets): %s (%s)" #~ msgstr "Ukupan overheas (Paketi): %s (%s)" #~ msgid "File Request Overhead (Packets): %s (%s)" #~ msgstr "Zahtjev fajl overheada (Paketi): %s (%s)" #~ msgid "Source Exchange Overhead (Packets): %s (%s)" #~ msgstr "Overhead razmjene izvora (Paketa): %s (%s)" #~ msgid "Server Overhead (Packets): %s (%s)" #~ msgstr "Overhead servera (Paketa): %s (%s)" #~ msgid "Found Sources: %i" #~ msgstr "Pronadjeni izvori: %i" #~ msgid "Active Downloads (chunks): %i" #~ msgstr "Aktivni downloadovi (chunks): %i" #~ msgid "Uploaded Data (Session (Total)): %s (%s)" #~ msgstr "Podatak uploada (misija (ukupno)): %s (%s)" #~ msgid "Active Uploads: %i" #~ msgstr "Aktivni uploadovi: %i" #~ msgid "Total successful upload sessions: %i" #~ msgstr "Ukupne uspjesne upload misije: %i" #~ msgid "Total failed upload sessions: %i" #~ msgstr "Ukupne neuspjesne upload misije: %i" #~ msgid "Average Downloadrate (Session): %.2f kB/s" #~ msgstr "Prosjecna brzina downloada (misija): %.2f kB/s" #~ msgid "Average Uploadrate (Session): %.2f kB/s" #~ msgstr "Prosjecna brzina uploada (misija): %.2f kB/s" #~ msgid "Max Downloadrate Average (Session): %.2f kB/s" #~ msgstr "Maksimalna prosjecna brzina downloada (misija): %.2f kB/s" #~ msgid "Max Downloadrate (Session): %.2f kB/s" #~ msgstr "Maksimalna brzina downloada (misija): %.2f kB/s" #~ msgid "waiting for transfer..." #~ msgstr "ceka na transfer..." #~ msgid "Session UL:DL Ratio (Total):" #~ msgstr "Odnos UL:DL misije (ukupno):" #~ msgid "Number of Shared Files: %i" #~ msgstr "Broj dijeljenih fajlova: %i" #~ msgid "eMule: %i (%1.1f%%)" #~ msgstr "eMule: %i (%1.1f%%)" #~ msgid "aMule: %i (%1.1f%%)" #~ msgstr "aMule: %i (%1.1f%%)" #~ msgid "lMule/xMule: %i (%1.1f%%)" #~ msgstr "lMule/xMule: %i (%1.1f%%)" #~ msgid "eDonkeyHybrid: %i (%1.1f%%)" #~ msgstr "eDonkeyHybrid: %i (%1.1f%%)" #~ msgid "eDonkey: %i (%1.1f%%)" #~ msgstr "eDonkey: %i (%1.1f%%)" #~ msgid "cDonkey: %i (%1.1f%%)" #~ msgstr "cDonkey: %i (%1.1f%%)" #~ msgid "Old MLDonkey: %i (%1.1f%%)" #~ msgstr "Old MLDonkey: %i (%1.1f%%)" #~ msgid "New MLDonkey: %i (%1.1f%%)" #~ msgstr "New MLDonkey: %i (%1.1f%%)" #~ msgid "Working Servers" #~ msgstr "Ispravni serveri" #~ msgid "Failed Servers" #~ msgstr "Neuspjeli serveri" #~ msgid "Deleted Servers" #~ msgstr "Obrisani serveri" #~ msgid "Users on Working Servers" #~ msgstr "Korisnici na ispravnim serverima" #~ msgid "Files on Working Servers" #~ msgstr "Fajlovi na ispravnim serverima" #~ msgid "Total Users" #~ msgstr "Ukupno korisnika" #~ msgid "Active Connections (estimate)" #~ msgstr "Aktivne veze (procjena)" #~ msgid "Max Connection Limit Reached" #~ msgstr "Limit maksimalnih veza dostignut" #~ msgid "Average Connections (estimate)" #~ msgstr "Prosjecne veze (procjena)" #~ msgid "Detection Disabled" #~ msgstr "Otkrivanje onemoguceno" #~ msgid "Not Found" #~ msgstr "Nije pronasao" #~ msgid "Actual Speed Limits:" #~ msgstr "Trenutni limit brzine:" #~ msgid "DL: " #~ msgstr "DL: " #~ msgid " kb/s " #~ msgstr " kb/s " #~ msgid "UP: " #~ msgstr "UP: " #~ msgid " kb/s" #~ msgstr " kb/s" #~ msgid "aMule Tray Menu Info" #~ msgstr "aMule izbor informacija u koritu" #~ msgid "Nick: " #~ msgstr "Nadimak:" #~ msgid "Nick: Not Ready" #~ msgstr "Nadimak: Nije spreman" #~ msgid "Hash: " #~ msgstr "Hash: " #~ msgid "Hash: Not Ready" #~ msgstr "Hash: Nije spreman" #~ msgid "ID: Not Connected" #~ msgstr "ID: Nije spojen" #~ msgid "IP: " #~ msgstr "IP: " #~ msgid "TCP Port: " #~ msgstr "TCP Port: " #~ msgid "UDP Port: " #~ msgstr "UDP Port: " #~ msgid "Uptime: None" #~ msgstr "Vrijeme korisnika: Nepostoji" #~ msgid "ServerName: Not Connected" #~ msgstr "Ime servera: Nije spojen" #~ msgid "ServerIP: Not Connected" #~ msgstr "ServerIP: Nije spojen" #~ msgid "Shared Files: " #~ msgstr "Dijeljeni fajlovi:" #~ msgid "Queued Clients: " #~ msgstr "Klienti u redu cekanja:" #~ msgid "Total DL: " #~ msgstr "Ukupno DL:" #~ msgid " GB" #~ msgstr " GB" #~ msgid "Total UP: " #~ msgstr "Ukupno UL:" #~ msgid "Personal Infos" #~ msgstr "Licne informacije" #~ msgid "Show" #~ msgstr "Pokazi" #~ msgid "Hide" #~ msgstr "Sakrij" #~ msgid "All To Max Speed" #~ msgstr "Sve na maksimalnu brzinu" #~ msgid "All To Min Speed" #~ msgstr "Sve na minimalnu brzinu" #~ msgid "Disconnect from server" #~ msgstr "Prekini vezu sa serverom" #~ msgid "aMule for Linux" #~ msgstr "aMule za Linux" #~ msgid "Error while processing incoming extended protocol UDP Packet" #~ msgstr "Greska prilikom procesa ulazeceg spoljasnjeg UDP paketa" #~ msgid "" #~ "Client '%s' caused error while creating package (%s) - disconnecting " #~ "client" #~ msgstr "" #~ "Klient '%s' je prouzrokovao gresku prilikom kreiranja paketa (%s) - " #~ "prekidanje veze" #~ msgid "requested file not found" #~ msgstr "trazeni fajl nije nadjen" #~ msgid "" #~ "Client '%s' seems to be an aggressive client and is banned from the " #~ "uploadqueue" #~ msgstr "" #~ "Klient '%s' je ocigledno agresivan klient i bit ce izbacen iz reda cekanja" #~ msgid "%s [%s:%i] using %s removed : invalide eMule client" #~ msgstr "%s [%s:%i] koristeci %s odstranjen : neispravan eMule klient" #~ msgid "%s [%s:%i] using %s removed : suspicious mod string change" #~ msgstr "" #~ "%s [%s:%i] koristeci %s odstranjen : sumnjivo mijenjanje dodatke na imenu" #~ msgid "%s [%s:%i] using %s removed : known leecher" #~ msgstr "%s [%s:%i] koristeci %s odstranjen : poznati leecher" #~ msgid "%s [%s:%i] using %s removed : suspicious hash change" #~ msgstr "%s [%s:%i] koristeci %s odstranjen : sumnjiva promjena hasha" #~ msgid "%s [%s:%i] using %s removed : use your own hash" #~ msgstr "%s [%s:%i] koristeci %s odstranjen : koristi vas licni hash" #~ msgid "%s [%s:%i] using %s removed : suspicious name change" #~ msgstr "%s [%s:%i] koristeci %s odstranjen : sumnjivo mijenjanje imena" #~ msgid "" #~ "%s [%s:%i] using %s removed : leecher, invalid eMule or irregular Donkey" #~ msgstr "" #~ "%s [%s:%i] koristeci %s odstranjen : leecher, neispravan eMule ili " #~ "iregularan Donkey" #~ msgid "Client '%s' and '%s' have the same userhash or IP - removed '%s'" #~ msgstr "" #~ "Klienti '%s' i '%s' imaju ist hash korisnika ili IP - odstranjen '%s'" #~ msgid "Wizard" #~ msgstr "Carobnjak" #~ msgid "Down (kbit/s)" #~ msgstr "Dole (kbit/s)" #~ msgid "Up (kbit/s)" #~ msgstr "Gore (kbit/s)" #~ msgid "Custom" #~ msgstr "Vlastiti" #~ msgid "(enter below!)" #~ msgstr "(upisite ispod!)" #~ msgid "56-k Modem" #~ msgstr "56-k Modem" #~ msgid "ISDN" #~ msgstr "ISDN" #~ msgid "ISDN 2x" #~ msgstr "ISDN 2x" #~ msgid "xDSL" #~ msgstr "xDSL" #~ msgid "Cable" #~ msgstr "Cable" #~ msgid "T1" #~ msgstr "T1" #~ msgid "T3+" #~ msgstr "T3+" #~ msgid "100 Mbits" #~ msgstr "100 Mbits" #~ msgid "155 Mbits (ATM)" #~ msgstr "155 Mbits (ATM)" amule_2.3.1+git20151120.0023527bc2.orig/po/hu.po0000644000175000017500000103662412611472361017111 0ustar morphmorph# aMule i18n resource file # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-11-09 01:17+0100\n" "Last-Translator: Dévai Tamás \n" "Language-Team: Hungarian \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=1; plural=0;\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Barát hozzáadása" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Érvényes IP címet és portot kell megadnod!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Információ" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "A megadott felhasználói azonosító (userhash) érvénytelen!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "ED2KLinks fájl megnyitása sikertelen." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "FIGYELEM: Nem adhatod magad forrásként egy eD2k hivatkozáshoz amíg alacsony " "azonosítód (lowid) van." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Kilépés a fő alkalmazásból..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Az amuleweb instancia - melynek a pid-je '%ld' - bezárása ... " #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Az amuleweb instancia - melynek a pid-je '%ld' - kivégzése ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Sikertelen" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Mag leállítása." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "Az aMule leállítása befejezve" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Memória debug eredmények az aMule bezárásáról:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "EC beállítások" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Jelszó beállítva, külső kapcsolatok engedélyezve." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "FIGYELEM" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Nyelvi beállításaid egy konfigurációs változás miatt az alapértelmezettre " "lettek átállítva. Bocs." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Infó" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Nincs egyetlen kiszolgáló sem a kiszolgáló-listádban.\n" "Szeretnéd, hogy az aMule letöltsön egy új listát most?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Kiszolgáló-lista letöltése" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "web kiszolgáló fut, pid=%d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "A web kiszolgáló indítását kérted induláskor, de az amuleweb program nem " "futtatható. Kérlek telepítsd az aMule web kiszolgálót tartalmazó csomagot, " "vagy fordítsd az aMule-t a --enable-webserver kapcsolóval és futtasd a make " "install parancsot." #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "HIBA" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Nem tudom a portokat a megadott címhez (%s) rendelni." #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "A %u port nem elérhető. Alacsony kliens azonosítót kapsz (LOWID)\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "%u port nem elérhető!\n" "\n" "Ez azt jelenti, hogy alacsony kliens azonosítót kapsz (LOWID).\n" "\n" "Ellenőrízd a hálózatodat, hogy megbizonyosodj, hogy a port nyitva van kifelé " "és befelé egyaránt." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Online-Aláírás fájl létrehozása sikertelen" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Az aMule OnlineAláírás fájl létrehozása sikertelen" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "A kiválasztott nyelvi beállítások úgy látszik nincsenek telepítve a gépeden. " "(Megjegyzés: Mindenesetre mepróbálom ezt beállítani)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Ez az első alkalom, hogy az aMule %s-t futtatod" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Ez egy teszt verzió, naponta frissítve, és\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "nem vállalunk garanciát, hogy nem omlik össze, gyújtja fel a házad,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "vagy öli meg a kutyád. *Elvileg* nyugodtan használható.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Még több információ, támogatás és új kiadások találhatóak honlapunkon,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "a www.aMule.org-on, vagy az #aMule IRC csatornánkon az irc.freenode.net-en.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Nyugodtan jelezz bármilyen hibát a http://forum.amule.org-on" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Az Online aláírás fájl könyvtárának megadott hely ÉRVÉNYTELEN!\n" " Az OnlineAláírás letiltásra kerül, amíg ki nem javítod azt a beállítások " "menüpontban." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Szerver hostname értesítve" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Lemezterület helyfoglalás a '%s' fájl számára sikertelen: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "HIBA: Nem tudom megnyitni a napló fájlt" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "FIGYELEM: a napló üres. Valami nem stimmel." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Napló törölve" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "KiszolgálóÜzenet: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "A %s letöltése kihagyva, mert a kívánt fájl nem újabb." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Csomópont-lista letöltése sikertelen." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Nem sikerült megnyitni a letöltött verzió-ellenőrző fájlt" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Sérült verzió-ellenőrző fájl" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Az aMule egy elavult verzióját használod!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "A te aMule verziód %i.%i.%i, a legújabb verzió pedig %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "A legújabb verzió mindig megtalálható a http://www.amule.org honlapon." #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "FIGYELEM: A te aMule verziód elavult: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Az aMule verziód naprakész." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Verzió-ellenőrzés fájl letöltése sikertelen." #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Felhasználók: %s | Fájlok: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Felhasználók: E: %s K: %s | Fájlok: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Nincs hálózat kiválasztva" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "LowID-val" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "HighID-val" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Kapcsolódva ehhez %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Kapcsolódás %s-hez" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Leválasztva az eD2k-ról" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad elindítva." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad leállítva." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Kapcsolódva a Kad-hoz (rendben)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Kapcsolódva a Kad-hoz (tűzfal mögül)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Leválasztva a Kad-ról" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "A Kad hálózat nem használható, ha az UDP port le van tiltva a " "beállításokban, nem indítom." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "A Kad hálózat le van tiltva a beállításokban, nem kapcsolódom." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "HIBA: az aMule démon nem használható, ha a külső kapcsolatok le vannak " "tiltva. A Külső Kapcsolatok engedélyezéséhez használd a normál aMule-t, vagy " "indítsd az amuled-t a --ec-config paraméterrel, vagy állítsd az " "\"AcceptExternalConnections\" kulcs értékét 1-re a ~/.aMule/amule.conf " "fájlban." #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "HIBA: Egy érvényes jelszó szükséges a külső kapcsolatok használatához, és az " "aMule démon nem használható külső kapcsolatok nélkül. Az aMule démon " "futtatásához, az \"ECPassword\" nevű mezőt a ~/.aMule/amule.conf nevű " "fájlban egy megfelelő értékre kell állítanod. Indítsd az amuled-t a --ec-" "config paraméterrel, a jelszó beállításához. További információk http://wiki." "amule.org alatt találhatóak." #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - időzítő indítása" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: háttérbe való hasadás - viszlát" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Pid fájl létrehozása nem lehetséges" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "HIBA: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Ez az aMule %s, az eMule alapján." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "%s-en fut" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "Új verzióért látogasd meg a http://www.amule.org oldalt." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "VÉGZETES HIBA: Időzítő létrehozása sikertelen" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "aMule távoli vezérlő" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Pillanatkép:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "'Minden-platform' p2p ügyfél az eMule alapján \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Honlap: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Fórum: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "GYIK: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Kapcsolat: admin@amule.org (adminisztratív ügyekben) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 aMule Team \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Az aMule részben a következőn alapul: \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Egyenrangú útvonal-megállapítás a XOR metrika alapján.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Üzenet" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "aMule dialógus elpusztítva" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Kapcsolódás" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2K: Kapcsolódás" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Szétkapcsolva" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Tűzfal mögött" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Csatlakozva" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Kapcsolódás" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Nincs kapcsolat" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Mégsem" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Aktuális kapcsolódási kísérletek leállítása" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Szétkapcsolás" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Leválaszt az éppen kapcsolódott hálózatokról." #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Kapcsolatfelvétel" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Kapcsolódás a pillanatnyilag engedélyezett hálózatokhoz." #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Fel: %.1f(%.1f) | Le: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Fel: %.1f | Le: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Kapcsolódva)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Nincs kapcsolat)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Biztos, hogy ki szeretnél lépni a(z) %s alkalmazásból?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Kilépés megerősítése" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Parancs futtatása: " #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- alapértelmezett -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "A(z) '%s' felület könyvtár nem létezik" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "FIGYELEM: Nem tudom a(z) '%s' felület fáljt megnyitni olvasásra" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Hálózatok" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Hálózatok ablaka" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Keresések" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Keresés ablaka" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Letöltések" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Letöltések ablaka" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Megosztott fájlok" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Megosztott fájlok ablaka" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Üzenetek" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Üzenetek ablaka" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statisztikák" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Statisztikai grafikonok ablaka" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Beállítások" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Tulajdonságok beállításának ablaka" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importálás" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "A részfájl importáló eszköz" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Névjegy" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Névjegy/Súgó" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "eD2k hálózat" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Kad hálózat" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Nincs hálózat" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "aMule távoli vezérlő" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule " #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Végzetes hiba: a Mag Időzítőjének létrehozása sikertelen" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Kapcsolódás a távoli aMule-hez" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Végzetes hiba: a Lekérdezés Időzítőjének létrehozása sikertelen" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Esemény ciklus megkezdése..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Kapcsolódás..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Kapcsolódás sikertelen " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Távoli GUI EC esemény kezelő" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Kikapcsolás folyamatban" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Kapcsolat sikertelen. Kapcsolat felvétel %s:%d-el nem lehetséges\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Kapcsolat megszünt - aMule valószínüleg befejeződött." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Készen" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Mind" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "A '%s' könyvtár létrehozása a '%s' kategóriához nem lehetséges, a '%s' " "könyvtár megtartva." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Ismeretlen" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Megosztott fájlok lehozatala sikertelen a(z) '%s' felhasználótól" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Pajtás keresése lowid kapcsolatra" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Hamis eMule %#x verzió)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Hamis eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Hamis eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (az eMule v0.%u alapján)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Becenév: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Kért: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Fájlstatisztika ehhez a folyamathoz: %d kérés elfogadva %d-ből, %s " "átmásolva\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Fájlstatisztika az összes folyamathoz: %d kérés elfogadva %d-ből, %s " "átmásolva\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Ismeretlen lekérdezett fájl" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Üzenet kiszűrve '%s'-től (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Új üzenet '%s'-től (IP:%s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "A(z) %s (%u) felhasználó lekérdezte a nem létező '%s' könyvtárban megosztott " "fájljaid listájá -> Mellőzve" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "FIGYELEM: %s nem nyitható meg." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "FIGYELEM: A megszakított fájlok listája sérült, érvénytelen fejlécet " "tartalmaz." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "IO hiba a %s fájl olvasása közben: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Hiba a %s fájl mentése közben: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Captcha megadása" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategória" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Új kategória" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Könyvtár kiválasztása az érkező fájloknak" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Meg kell adnod a kategória nevét!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Meg kell adnod a kategória elérési útvonalát!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Bejövő könyvtár létrehozása sikertelen a kategóriához. Kérlek érvényes " "elérési utat adj meg!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Csevegési folyamat elindítva: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Connected to Client ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Kapcsolódás a klienshez ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Kapcsolódás sikertelen / Kapcsolat elveszítve ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" "*** A captcha vizsgálaton túlestél és a felhasználó megkapta az üzenetet. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** A megadott captcha hibás volt, így az üzenet nem lett tudomásul véve. " "Egy új üzenet küldésével újabb captcha-t kérhetsz. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Csevegés" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Fül bezárása" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Az összes fül bezárása" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "A többi fül bezárása" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Hozzáadás a barátokhoz" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Kredit fájl betöltve, %u kliens ismert" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - %u kliens kreditérvényessége lejárt!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "A 'cryptkey.dat' fájlt nem találom, létrehozok egyet." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Kliens részletei" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Engedélyezve" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Támogatott" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Nem támogatott" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Letiltva" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Csatlakozva" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Szétkapcsolva" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Befejezetlen" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Rossz fiú" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Hitelesítés - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Nem elérhető" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "A(z) %s (%u) felhasználó lekérdezte a megosztott fájlok listáját -> Elfogadva" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "A(z) %s (%u) felhasználó lekérdezte a megosztott fájlok listáját -> " "Megtagadva" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "A(z) %s (%u) felhasználó lekérdezte megosztott könyvtáraid listáját -> " "Elfogadva" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "A(z) %s (%u) felhasználó lekérdezte megosztott könyvtáraid listáját -> " "Megtagadva" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "A(z) %s (%u) felhasználó lekérdezte a '%s' könyvtárban megosztott fájljaid " "listáját -> elfogadva" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "A(z) %s (%u) felhasználó lekérdezte a '%s' könyvtárban megosztott fájljaid " "listáját -> megtagadva" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "A(z) %s (%u) felhasználó megosztja a '%s' könyvtárat" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "A(z) %s (%u) felhasználó kéretlen megosztott könyvtárakat küldött." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "A(z) %s (%u) felhasználó elküldte megosztott fájljai listáját a '%s' " "könyvtárhoz" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" "A(z) %s (%u) felhasználó befejezte megosztottfájl-listájának elküldését" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "A(z) %s (%u) felhasználó kéretlen megosztottfájl-listát küldött" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "A(z) %s (%u) felhasználó megtagadta a megosztott könytár/fájl listájához " "történő hozzáférést" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Fájl megjegyzés" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Felhasználói név" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Fájlnév" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Értékelés" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Megjegyzés" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Nincs megjegyzés" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u megjegyzés" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Kliens %s kitiltva az összesen %s adatból %s hibás adat küldése miatt a '%s' " "fájlt illetően." #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Al]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Ma]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Nagyon alacsony" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Alacsony" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normál" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Magas" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Nagyon magas" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Forgalomba helyez" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Engedély kérése" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Kapcsolódás a kiszolgálón keresztül" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Várólista betelt" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Várólistások" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Letöltés alatt" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "HashSet fogadása" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Nincs hiányzó fájlrész" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Nem lehet alacsony ID-vel alacsony ID-hez kapcsolódni" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Túl sok a kapcsolat" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Kapcsolódás a Kad-on keresztül" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Túl sok Kad kapcsolat" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Kitiltott" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Kapcsolódási hiba" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Távoli várólista betelt" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Régi MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Új MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule kompatibilis" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Helyi kiszolgáló" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Távoli kiszolgáló" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Forrás-csere" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passzív" #: src/DataToText.cpp:133 msgid "Link" msgstr "Hivatkozás" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Mentett források" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Keresés eredménye" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Befejezett" #: src/DataToText.cpp:146 msgid "In progress" msgstr "Folyamatban" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "HIBA: Elfogyott a szabad lemezterület" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "HIBA: Partmet nem található" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "HIBA: IO hiba!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "HIBA: Sikertelen!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "Várólistán" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Letöltés alatt" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Ismeretlen vagy rossz ideiglenes-fájl formátum." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Rész" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Méret" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Átmásolva" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Sebesség" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Folyamatjelző" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Források" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioritás" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Állapot" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Hátralévő idő" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Utoljára teljesnek látott" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Utoljára fogadott" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Biztos, hogy törlöd a kiválasztott fájlt?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Biztos, hogy törlöd a kiválasztott fájlokat?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Visszajelzés %s-től (%s):\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Automatikus" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Állj" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Szüneteltet" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Folytatás" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "Befejezettek &eltávolítása" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Összes A4AF cseréje ehhez a fájhoz most" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Összes A4AF cseréje ehhez a fájhoz most (Automatikusan)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Összes A4AF cseréje a többi fájhoz most" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Kibővített beállítások" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Előnézet" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Fájl &részleteinek megjelenítése" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Összes megjegyzés megjelenítése" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Magnet URI másolása a vágólapra" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "eD2k hivatkozás másolása a vágólapra" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Visszajelzés másolása a vágólapra" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "hozzárendelés megszüntetése" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Hozzárendelés kategórához" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "Fájl &megnyitása" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Írd be az új nevet ennek a fájlnak:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Fájl átnevezés" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y.%m.%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Letöltések (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Állítsd be a kedvenc videó-lejátszódat a beállításoknál,\n" " hogy ezt a figyemeztetést ne kapd minden előnézetnél (alapértelmezett az " "mplayer)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Fájl előnézet" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "HIBA: Külső média-lejátszó indítása sikertelen! Parancs: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "PartFile mentése %u a(z) %u-ból" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Az összes PartFile kimentve." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Temp fájlok betöltése %s-ról." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "PartFile betöltése %u a(z) %u-ből" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "HIBA: A biztonsági mentés betöltése sikertelen. Keressen a http://forum." "amule.org oldalon .part.met visszaállítási lehetőségeket." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Az összes PartFile betöltve." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Nem található .part fájl" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "%u .part fájlt találtam" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "Az ideiglenes fájlok könyvtárának fájlrendszere nem tudja kezelni a nagy " "fájlokat." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "A bejövő fájlok könyvtárának fájlrendszere nem tudja kezelni a nagy fájlokat." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Letöltés %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Már megkísérelted a(z) '%s' fájlt letölteni" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Már megvan ez a fájl: '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Már próbálod letölteni a(z) '%s' fájlt." #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "A magnet hivatkozás nem konvertálható eD2k-ra: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "A következő hivatkozás protokollja ismeretlen: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Érvénytelen eD2k hivatkozás! HIBA: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Kliens csomagot küldött sikertelen hitelesítést követően." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Külső kapcsolat lezárva." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "A külső kapcsolatok letiltásra kerültek üres jelszó miatt!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "A külső kapcsolatok le vannak tiltva konfig fájlban" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Új külső kapcsolat elfogadva" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "HIBA: nem tudtam fogadni egy új külső kapcsolatot" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "Külső kapcsolat elutasítva, üres jelszó a beállításokban!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Kapcsolódó kliens: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Ismeretlen verzió" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Helytelen EC verzió azonosító, összeférhetetlenség lehetséges. A fő- és a " "távoli programot ugyanabból a pillanatképből használd." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Nem kapcsolódhatsz egy kiadott verzióhoz egy tetszőleges fejlesztés alatti " "verzióval! *sóhaj* lehetséges összeomlás megelőzve" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Érvénytelen protokoll verzió." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Hiányzó protokoll verzió azonosító." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "Hitelesítés sikertelen: az EC jelszóként megadott hash érvénytelen." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Hitelesítés sikertelen: rossz jelszó." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Hitelesítés sikertelen: hiányzó jelszó." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Érvénytelen kérés, először hitelesíteni kell." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Hozzáférés elfogadva." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Hibaüzenet elküldve a \"%s\" klienshez." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Jogosulatlan hozzáférési kísérlet %s részéről. Kapcsolat lezárva." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "Távoli PartFile parancs sikertelen: nem található FileHash: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "FileHash nem található: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "Hoppá! Opkód feldolgozási hiba!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Kiszolgáló nem lett hozzáadva" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "kiszolgáló nem található: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "ki kell jelölnöd a kiszolgálót az eltávolításhoz" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "Az eD2k le van tiltva a beállításokban." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Keresés folyamatban. Kérdezze le az eredményeket egy rövid idő múlva!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Webes keresésnek a távoli felületről nincs értelme." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Nincsenek pontok a grafikonhoz." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "A kliensed nincs beállítva ehhez a részletességi szinthez." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Külső kapcsolat: leállítás kérve" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Kikapcsolás folyamatban." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "ExternalConn: hivatkozás hozzáadása: '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Érvénytelen hivatkozás, vagy már rajta van a listán." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Fájl nem található." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Érvénytelen fájl név." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Nem tudom átnevezni a fájlt." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "A Kad le van tiltva a beállításokban." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Már csatlakozva az eD2k-hoz." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Kapcsolódás az eD2k-hoz..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Már kapcsolódva a Kad-hoz." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Kapcsolódás a Kad-hoz..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Minden hálózat le van tiltva." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Leválasztva az eD2k-ról." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Leválasztva a Kad-ról." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Külső kapcsolat: érvénytelen opcode: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Érvénytelen opcode (rossz protokoll verzió?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Ismeretlen bővítmény '%s' a '%s' parancshoz.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Ismeretlen parancs: '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Ennek a parancsnak nem lehet argumentuma.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Ennek a parancsnak kötelező az argumentum.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Ez a parancs nem teljes, az alábbi bővítmények valamelyikét kell " "használnod.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Elérhető bővítések:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Elérhető parancsok:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Minden parancs érzéketlen a kis-/nagybetűkre.\n" "Ha részletes infót akarsz egy -ról, add ki a '%s ' " "parancsot.\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Kilép az alkalmazásból." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Súgó megjelenítése." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Ha egy parancsról kérsz súgót, használd a 'help '-ot.\n" "A teljes parancslistához használd a 'help'-et.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "A parancslistához használd a '%s'-et\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Szintaktikai hiba!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Hiba a parancs feldolgozásában - soha sem kellene előfordulnia! Kérlek, " "küldd el a hibajelentést\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Ennek a parancsnak nem kellene paraméterének lennie." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Ennek a parancsnak kötelező paramétert adni." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Érvénytelen paraméter." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Ez a parancs így nem teljes." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "A '%s' paranccsal kaphatsz bővebb segítséget.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Ez a(z) %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Ez a(z) %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Kliens létrehozása...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, kilépés a %s-ből...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Jelszó nélkül nem lehet csatlakozni.\n" "Meg kell adnia egy jelszót vagy a konfig fájlban,\n" "vagy a parancssorban, vagy beírni amikor kérem.\n" "\n" "Kilépés...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "E súgó megjelenítése." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Host, ahol az aMule fut (alap: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Az aMule Távoli Elérés portja (alap: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Külső kapcsolat jelszava." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Konfiguráció betöltése fájlból." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Nem ír ki semmit a szabvány kimenetre." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Legyen bőbeszédű - mutassa a hibakeresési üzeneteket is." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Beállítja a program nyelvét." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "A parancssori opciók konfig fájlba írása." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Konfig fájl létrehozása az aMule konfig fájlja alapján." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "A program verziójának kiírása." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Fájl részletei" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "%.1f%% kész" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "A barátokat tartalmazó emfriends.dat fájl olvasásra megnyitása sikertelen!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "A barátokat tartalmazó emfriends.dat fájl írásra megnyitása sikertelen!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "KRITIKUS - nincsen kliens a StartChatSession-en" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Barátok" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "&Részletek megjelenítése" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Barát hozzáadása" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Barát törlése" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "&Üzenet küldése" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Fájlok megtekintése" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Társ Slot létesítése" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Tényleg törölni szeretnéd a kiválasztott barátot?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Tényleg törölni szeretnéd a kiválasztott barátokat?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Nem lehet egynél több barát slot-ot létrehozni.\n" "Csak egy slot lett hozzárendelve." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Többszörös kiválasztás" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Üzenet küldése ennek a személynek" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Küldendő üzenet:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Eltávolítás a barátok közül" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Üzenet küldése" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Csere ehhez a fájlhoz" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "Várólistán: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Másik fájl kérve" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Várakozás feltöltési slot-ra" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "Várólistán: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Feltöltés alatt" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Egyik sem" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Nem" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Igen" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Letöltés..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "HTTP letöltés megszakítva" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "A letöltéshez szükséges %s célfájl létrehozása sikertelen!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "A letöltendő URL nem lehet üres" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "Az %s URL válasza: %i - Hiba (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Súlyos hiba a letöltött fájl írásakor" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "%d bájt letöltve" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Az elvárt %d bájt helyett %d bájt lett letöltve" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "Érvénytelen URL a HTTP letöltéshez, vagy a HTTP továbbításhoz (elfelejtetted " "a 'http://'-t ?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "A HTTP letöltési szerverhez való kapcsolódás sikertelen" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Érvénytelen válasz a HTTP letöltési szervertől" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Új GeoIP.dat letöltés %s-ról" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "GeoIP.dat fájl letöltése sikertelen, frissítés félbeszakítása." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "%s fájl törlése sikertelen, frissítés megszakítása." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "%s fájl átnevezése sikertelen, frissítés megszakítása." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "%s frissítése sikerrel járt." #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Hiba a GeoIP.dat frissítése közben." #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "%s letöltése %s-től sikertelen" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "'%s' ország adatainak betöltése sikertelen." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "IP-szűrők 'ipfilter.dat' és 'ipfilter_static.dat' betöltése." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "ipfilter.dat fájl '%s' betöltése sikertelen, ismeretlen formátum." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "ipfilter.dat fájl '%s' betöltése sikertelen, nem nyitható meg a fájl." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "%u IP-tartomány '%s'-ból betöltve." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u hibás sor lett eldobva." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Új %s fájl átnevezése sikertelen, frissítés megszakítása." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "IP szűrő készen áll" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Indítás ismert \n" "kliensektől" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Csomópontok (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Érvénytelen IP a rendszerindításhoz" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Érvénytelen port a rendszerindításhoz" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Kérlek töltsd ki az összes kötelező mezőt" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Biztos, hogy le akarsz tölteni egy új nodes.dat fájlt?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Ezzel eltávolítod az aktuális csomópontokat és újraindul a Kademlia " "kapcsolat." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Folytassuk?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: a keresési kulcsszó túl rövid" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Kulcsszó a kereséshez: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: A keresési kulcsszó már a keresési listán: " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "A nodes.dat fájl olvasása sikertelen volt - túl régi. Ez a verzió (0) már " "nincs támogatva." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "%u Kad kapcsolat beolvasva" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "Nincsenek kontaktusok, indítsd el a betöltési folyamatot, vagy tölts le " "magad egy nodes.dat fájlt." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Csak %d Kad kapcsolat elérhető, a nodes.dat fájl nem lett felülírva" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "%d Kad kapcsolat kiírva" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Fájl név" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Fájl méret" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Megosztási arány" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Feltöltve" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Kért" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Elfogadott" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Teljes források" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "FIGYELEM: Az ismert fájlok listája sérült, érvénytelen fejlécet tartalmaz." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Bejegyzés betöltése az ismert fájlok listájából sikertelen, hiba lehet a " "fájlban" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Érvénytelen bejegyzés az ismert fájlok listájában, hiba lehet a fájlban: " #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Ismeretlen hiba %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "A %d hiba leírásának lekérése sikertelen" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Tördelőalgoritmizálás" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Befejezés" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Kész" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Szüneteltetve" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Hibás" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Várakozik" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Egy nem üres jelszót kell megadni." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Érvénytelen jelszó, nem egy MD5 hash!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Kapcsolódási hiba" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "EC kapcsolat sikertelen. Üres válasz." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Külső kapcsolat: Rossz válasz, kézfogás sikertelen. Kapcsolat megszüntetve." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Sikerült! Kapcsolat létrejött ezzel: aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Sikerült! Kapcsolat létrejött." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Külső kapcsolat: Hozzáférés megtagadva, mert: " #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Külső kapcsolat: Kézfogás sikertelen." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "HTTP letöltési szál elindítva" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket: rendben." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "HIBA: A TCP porton nem lehet hallgatni." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "HIBA: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "FIGYELEM: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Bezár" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Kivágás" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Másolás" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Beillesztés" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Törlés" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Mindent kijelöl" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Korlátlan" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule Tálca menü" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Sebesség korlátok:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "Fel: nincs" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "Fel: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "Le: nincs" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "Le: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Letöltési sebesség: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Feltöltési sebesség: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Kliens információk" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Becenév: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Nem lett Becenév kiválasztva!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "KliensID: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Nincs kapcsolódva" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Kiszolgáló Név: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "Kiszolgáló IP: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Nincs kapcsolódva" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP port: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP port: Nem áll készen" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "UDP port: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UDP port: Nem áll készen" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Online Aláírás: Engedélyezve" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Online Aláírás: Letiltva" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Aktivitási idő: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Megosztott fájlok: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Várólistás ügyfelek: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Összes letöltés: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Összes feltöltés: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Feltöltési korlát" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Letöltési korlát" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "aMule elrejtése" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "aMule megjelenítése" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Kilépés" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k hivatkozás: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Végrehajt" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Kattints ide, hogy a szövegbeviteli mezőben található eD2k hivatkozást " "hozzáadd a letöltési sorhoz." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Itt kerülnek megjelenítésre az események. A teljes eseménylistáért nézd meg " "a naplót a kiszolgáló-fülön." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Betöltés..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Felhasználók száma azon a kiszolgálón, amelyre kapcsolódott ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Felhasználók: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Felhasználó van kapcsolódva az aktuális kiszolgálóhoz és egy becslés az " "összes felhasználó számát illetően." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Fel: 0.0 | Le: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Aktuális feltöltési és letöltési arány átlaga. Ha engedélyezed, kapcsos " "zárójelben jeleníti meg a kliens-kommunikáció többletterhelését." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "A kapcsolat állapotát és az aktív adatátviteleket jelzi ki. A piros nyilak " "azt jelentik, hogy jelenleg nem vagy kapcsolatban, a sárga nyilak, hogy " "alacsony ID-d van (tűzfali) és a zöld nyilak pedig, hogy magas ID-d van " "(optimális kapcsolódási típus)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Nincs csatlakozva ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Jelenleg csatlakozott kiszolgáló." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Keresés" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Név:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Típus" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Helyi" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Globális" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "FileHash" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Kibővített paraméterek" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Szűrés" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Fájltípus" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Akármelyik" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Archívált fájlok" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Zene" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD-Image" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Képek" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programok" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Dokumentumok" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Filmek" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Kiterjesztés" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Min. méret" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "bájt" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Max. méret" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Elérhetőség" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Szűrő:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Eredmények szűrése" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Eredmény megfordítása" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Ismert fájlok elrejtése" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Indít" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Több" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Több találatot keres az eD2k-n. Kad-on még nem támogatott." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Leállít" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Letöltés" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Mezők törlése" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Eredmények" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Befejeződött letöltések törlése" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Fájl források:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Általános" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Teljes név :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met-fájl :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Tördelőalgoritmus (hash) :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Fájlméret :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Fájlrész állapot :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Utoljára teljesnek látott :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Átvitel" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Forrás találatok :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Átviteli források :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Fájlrész-számláló :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Elérhető :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Adatráta :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Aktív letöltési idő: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Átmásolva :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Teljes méret :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Intelligens Sérülés Kezelés" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Sérülés miatt elveszett :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Tömörítéssel nyert :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "I.S.K.-val megmentett csomagok :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Fájl nevek" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Átvétel" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Kitisztítás" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Alkalmaz" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" "Megjegyzés/Értékelés ehhez a fájlhoz (ezt az összes felhasználó látni fogja)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Megadhatod egy film hosszát, történetét, nyelvét...\\n\\nés ha a fájl hamis, " "elmondhatod ezt a többi aMule felhasználónak." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Fájl minősítése" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Nincs értékelve" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Érvénytelen / Sérült / Hamis" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Gyenge" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Korrekt" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Jó" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Kitűnő" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Értékeld a fájlt minőségét vagy adj tanácsot a többi felhasználónak, ha a " "fájl érvénytelen ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Frissít" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Letöltés folyamatban, kis türelmet ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Ismeretlen méret" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Kötelező adatok" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP-cím :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Kiegészítő adatok" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "User név :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Userhash :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Hozzáad" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Letöltési sebesség" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Aktuális" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Futásátlag" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Munkafolyamatok átlaga" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Feltöltési sebesség" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Kapcsolatok" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktív letöltések" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktív kapcsolatok (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Aktív feltöltések" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Statisztika fa" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Felhasználó neve:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Felhasználói hash:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Kliensszoftver:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Kliensverzió:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP-cím:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "Felhasználó ID:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "Kiszolgáló IP:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Kiszolgáló neve:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Zavarás:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Átvitel a kliensnek" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Aktuális kérés:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Átlagos feltöltési arány:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Átlagos letöltési arány:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Feltöltve (ebben a szakaszban):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Letöltve (ebben a szakaszban):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Feltöltve (összesen):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Letöltve (összesen):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Eredmények" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Le/Fel módosító:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Biztonsági azonosító:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Várólista helyezés:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Feltöltési várólista pontszám:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Becenév" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - a multi-platform Mule" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" "Ezt a nevet fogja a többi felhasználó látni, amikor kapcsolódnak hozzád." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Nyelv: " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Késleltetés a tool-tippek előtt." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Ez határozza meg a nyelvet, amelyet az irányításhoz használ." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Indításkor új verzió keresése" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "Engedélyezve indításnál az aMule új verziót fog keresni." #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Indítás minimalizálva" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Engedélyezve indításnál minimalizálni fogja magát az aMule." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Figyelmeztetés kilépéskor" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Figyelmeztessen az aMule bezárása előtt." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "Az alkalmazás ablakának elrejtése a bezárás gomb megnyomásakor" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Tálca ikon engedélyezése" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Ez engedélyezi/tiltja a tálca ikont." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimalizálás a rendszer tálcára" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Engedélyezve az aMule a rendszer tálcára fogja magát minimalizálni a tálca " "helyett." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Szóbuborék késési idő: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "másodperc" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Böngésző kiválasztása" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Írd ide a böngésződ nevét. Hagyd üresen, hogy a rendszer alapértelmezett " "böngészőjéhez." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Tallóz" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Megnyitás új fülön, ha lehetséges" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "Weboldal megnyitása új fülön új ablak helyett, ha lehetséges" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Videólejátszó" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Sávszélesség korlátok" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Feltöltés" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Slot kiosztás" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Portok" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Szabvány TCP port " #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Ez a szabvány eD2k port és nem lehet letiltani." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "UDP port a kiszolgáló kérésekhez (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Bővített UDP port (Kad / globális keresés) " #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "Ezt az UDP portot a bővített eD2k kérések és a Kad hálózat használja" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "UPnP engedélyezése a router port továbbításhoz" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnP TCP port (nem kötelező):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Lokális cím IP-hez csatolása (mindet ha üres):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Csak haladó felhasználóknak: Ha több hálózati kártyád van, írd ide a címet, " "amelyhez az aMule kötve legyen." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Max források letöltési fájlonként:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Max egyidejű kapcsolatok:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Automatikus kapcsolódás induláskor" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Kapcsolódás megismétlése megszakadt kapcsolat esetén" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Halott kiszolgálók eltávolítása" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "próbálkozás után" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Kiszolgáló lista automatikus frissítése indításkor" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Lista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Kiszolgáló lista frissítése kiszolgálóhoz való kapcsolódáskor" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Kiszolgáló lista frissítése amikor egy ügyfél kapcsolódik" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Prioritási rendszer használata" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Intelligens LowID ellenőrzés használata kapcsolódáskor" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Biztonságos kapcsolódás" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Automatikus kapcsolódás kizárólag az állandó kiszolgálókhoz" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "A kézileg hozzáadott kiszolgálók Magas Prioritással történő felvétele" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Intelligens Sérülés Kezelő (I.S.K.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Engedélyezés" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "Feljett I.S.K. megbízzon minden hash-ben (nem ajánlott)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Fájlok felvétele szüneteltetett módban" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Új letöltések felvétele automatikus prioritással" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Előszőr az első és utolsó adatelemet próbálja meg letölteni" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Következő szüneteltetett fájl indítása amikor egy letöltés befejeződik" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Ugyanabból a kategóriából" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "Betűrendi sorrendben" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Lemezterület helyfogalalás az új fájloknak" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Az új fájlok számára előre lefoglalja a lemezterületet, így csökkentve a " "töredezettséget" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Letöltések megállítása amikor a szabad hely kevesebb mint " #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" "Jelöld be, ha azt szeretnéd, hogy az aMule ellenőrizze a szabad " "lemezterületet" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Add meg a kívánt min. szabad lemezterületet." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Mentsen el 10 forrást ritka fájloknál (< 20 forrás)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Feltöltések" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Új megosztott fájl felvétele automatikus prioritással" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Célkönyvtár a letöltéseknek" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Könyvtár az ideiglenes letöltési fájloknak" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Megosztott mappák" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(Jobb klikk az mappa ikonra az összes alatta levő mappát is megosztja)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Rejtett fájlok megosztása" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafikonok" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Frissítés késleltetés: 5 mp" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Grafikon átlagos ideje: 100 perc" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Kapcsolatok grafikon skálája: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Letöltési grafikon méretaránya:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Feltöltési grafikon méretaránya:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Színek: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Háttér" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Rács" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Aktuális letöltés" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Letöltési futás átlaga" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Letöltési folyamatok átlaga" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Aktuális feltöltés" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Feltöltési futás átlaga" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Feltöltési folyamatok átlaga" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Aktív kapcsolatok" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Sebességmérő a rendszertálcán" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Kad-csomópontok aktuális" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Kad-csomópontok futó" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Kad-csomópontok folyamat" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Kiválaszt" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Fa" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Megjelenített ügyfél verziók száma (0=mind)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! FIGYELEM !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Max új kapcsolat / 5 mp" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Fájl buffer méret: 240000 bájt" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Feltöltők várólistájának nagysága: 5000 kliens" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Kiszolgáló kapcsolat frissítési gyakorisága: Tiltva" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Számítógép időzített készenléti állapotának hatástalanítása" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Használt felület: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "A \"Gyors eD2k hivatkozás kezelő\" mutatása minden ablakban." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Kibővített infók megjelenítése a kategória füleken" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "Az alkalmazás verziójának megjelenítése a címsorban" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Átviteli ráták megjelenítése a címsorban" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Az alkalmazás neve előtt" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Az alkalmazás neve után" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Többletterhelés sávszélességének mutatása" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Függőleges eszköztár elrendezés" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Kliensek országzászlajainak megjelenítése" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Letöltendő fájlok várakozási sora" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Százalékos arány mutatása" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Folyamatjelző csík mutatása" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Lapos" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Gömbölyű" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Fájlok automatikus rendezése (erős CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" "Az aMule automatikusan rendezni fogja az oszlopokat a letöltési listádban" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Külső kapcsolatok jellemzői" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Külső kapcsolat elfogadása" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "Hallgató interfész IP-je:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Adjon meg itt egy érvényes IP címet a.b.c.d formában az EC hallgató " "interfésznek. Üres mező vagy 0.0.0.0 jelentése: bármelyik interfész." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "TCP port:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "UPnP port továbbítás engedélyezése az EC porton" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Jelszó" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Web kiszolgáló paraméterek" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Webkiszolgáló indítása induláskor" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Web minta" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Admin jelszó" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Vendég felhasználó engedélyezése" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Vendég jelszó" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "A web kiszolgáló port UPnP továbbításának engedélyezése" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Web szerver UPnP TCP port (nem kötelező)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Oldal frissítésének időzítése (mp múlva)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Gzip tömörítés engedélyezése" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Kattints ide a beállítási módosítások alkalmazásához." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Beállítási módosítások figyelmen kívül hagyása." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Cím :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Megjegyzés:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Bejövő Mappa :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Újonnan hozzárendelt fájlok prioritásának változtatása :" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Ne változzon" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Válassz színt ehhez a kategóriához (jelenleg kiválasztva) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Töröl" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Kattints erre a gombra a logfájl visszaállításához." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Kattints erre a gombra a kiszolgálólista frissítéséhez ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Kiszolgálók listája" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Adj meg egy címet a server.met fájlhoz és nyomd meg a baloldali gombot az " "ismert kiszolgálók listájának frissítéséhez." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Kiszolgáló hozzáadása kézzel: Név" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Add meg az új kiszolgáló nevét" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Itt add meg a kiszolgálók IP-jét, használd az x.x.x.x formát." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Add meg a kiszolgáló portját." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Kiszolgáló felvétel kézzel (töltsd ki a baloldali mezőket először) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule Napló" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Kiszolgáló Infó" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2K infó" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad infó" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Kattints erre a gombra a csomópont-lista frissítéséhez URL-ből ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Csomópontok (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Adj meg egy címet a nodes.dat fájlhoz és nyomd meg a baloldali gombot az " "ismert csomópontok listájának frissítéséhez." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Csomópont statisztikák" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Rendszerbetöltés" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Új csomópont (node)" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Port:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Indítás ismert kliensektől" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Leválasztás a Kad-ról" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Biztonságos azonosítás használata" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Ajánlott ezt az opciót engedélyezni. Nem fogsz kreditet kapni, ha nincs " "engedélyezve." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Protokoll zavarás" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Protokoll zavarás támogatása" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Ez az opció engedélyezi a protokoll zavarást, és az aMule elfogad zavart " "kapcsolatokat más ügyfelektől." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Kimenő kapcsolatok zavarása" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Ez az opció engedélyezi a protokoll zavarást, amikor más ügyfelekhez/" "kiszolgálókhoz kapcsolódik az aMule." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Csak zavart kapcsolatok elfogadása" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Ezen opció hatására az aMule csak zavart kapcsolatokat fog elfogadni. " "Kevesebb forrásod lesz, de a teljes forgalom zavart lesz" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Mindenki" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Senki" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Ki láthatja a megosztott fájljaimat:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Válaszd ki, hogy kik kérdezhetik le megosztott fájlaid listáját." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP-szűrés" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Kliensek szűrése" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "A ~/.aMule/ipfilter.dat állományban IP-jű kliensek szűrésének engedélyezése." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Kiszolgálók szűrése" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "A ~/.aMule/ipfilter.dat állományban IP-jű kiszolgálók szűrésének " "engedélyezése." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Lista újratöltése" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "IP-k listájának újratöltése a ~/.aMule/ipfilter.dat fájlból" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Frissítés most" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "IP szűrő automatikus letöltése indításkor" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Szűrési szint:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Mindig szűrje ki a LAN IP-ket" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "A nem-megegyező IP-k paranoid kezelése" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Eldobja a csomagot, ha a kliens IP különbözik az IP-től, ahonnan a csomag " "jött. Óvatosan használd." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Rendszer-szintű ipfilter.dat használatának engedélyezése" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Ha nem talál helyi ipfilter.dat-ot, akkor a rendszerszintű IP szűrő állomány " "használatát engedi." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Online-aláírás engedélyezése" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Az online-aláírás fájl írásának engedélyezése, amit külső alkalmazások " "használhatnak fel aláírások létrehozásához és így tovább." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Frissítési gyakoriság (mp):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Online aláírás frissítési gyakoriságának módosítása (mp-ben)." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Online aláírási fájl kimentési helye:" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "Kattints ide az online aláírást tartalmazó könyvtár kiválasztásához." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Bejövő üzenetek kiszűrése (kivéve az aktuális csevegés):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Összes üzenet szűrése" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Barát listában nem szereplőktől érkező üzenetek kiszűrése" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Ismeretlen kliensektől érkező üzenetek kiszűrése" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "" "A következő(ke)t tartalmazó üzenetek kiszűrése (elválasztónak ','-t " "használj):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "Azon szavak felvétele, amelyeket az amule-nak ki kellene szűrni és blokkolni " "az ezeket tartalmazó üzneteket" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "A kapott üzenetek megjelenítése a naplóban" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Megjegyzések" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Megjegyzések kiszűrése, melyek tartalmazzák (',' az elválasztó):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Automatikus kiszolgáló kapcsolat proxy nélkül" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Hitelesítés engedélyezése" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Felhasználói név/jelszó hitelesítés engedélyezése/tiltása" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Felhasználói név: " #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Felhasználói név a proxy kapcsolathoz" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Jelszó:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Jelszó a proxy kapcsolathoz" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Proxy engedélyezése" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Proxy támogatás engedélyezése/tiltása" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Proxy típusa:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Proxy host:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "A proxy host neve" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Proxy port:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "A proxy port" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Kapcsolódás ehhez:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Bejeletkezés a távoli amule-ra" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Felhasználói név" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Emlékezzen ezekre a beállításokra" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Bőbeszédű hiba-naplózás engedélyezése" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "Fájl &megnyitása" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Üzenet kategóriák:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Várakozás..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Importálandók hozzáadása" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Kijelöltek újrapróbálása" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Kijelöltek eltávolítása" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Esemény típusok" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Statisztikák és várakozó kliensek a kiválasztott fájl(ok)hoz: Folyamat / " "Valaha" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Aktív feltöltések" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Összes fájl százalékaként" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Összes fájl" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Kiválasztott fájlok" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Csak aktív feltöltések" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Kliensek megjelenítése ehhez:" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Újratöltés:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Megosztott fájlok frissítése" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Küldés" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Megadott üzenet küldése." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Csevegési folyamat bezárása." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Kapcsolódás bármelyik kiszolgálóhoz és/vagy a Kad-hoz" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Megosztott fájlok" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Tiltva [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "bájt" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "bájt/mp" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/mp" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "mp" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "perc" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "óra" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "nap" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "mind" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "összes egyéb" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Befejezetlen" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Megállítva" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Film" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Archívált" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Szöveg" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Aktív" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Konfigurációk könyvtára: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Várakozás a partfile kovertáló thread befejeztére..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "%s importálása: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Ideiglenes mappa olvasása" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Alapvető információk megszerzése a letöltési infó fájlból" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Célfájl létrehozása" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Adat töltése a régi letöltési fájlból (%u a(z) %u-ből)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Adat blokk mentése az új letöltési fájlba (%u a(z) %u-ből)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Forrás letöltési fájl információ megszerzése" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Új letöltés hozzáadása és az új részfájl mentése" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Részfájlok importálása" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Állapot" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Fájl Hash" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Lemezen: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Válassz egy mappát ahol ideiglenes letöltéseket fogok keresni! (az " "almappákban is)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "Töröljem a sikeresen importált letöltések forrásait?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Források eltávolítása?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "HIBA: Részfájl létrehozása sikertelen" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Megpróbálom betölteni a met-fájl biztonsági másolatát a %s-ből" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "HIBA: part.met fálj megnyitása sikertelen: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "HIBA: A part.met fájl 0 méretű: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "HIBA: Érvénytelen .part.met fájl változat: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Hiba: %s (%s) sérült (rossz tagek: %s), a fájl betöltése nem lehetséges." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "HIBA: %s (%s) sérült (hibás tag szám), nem lehet betölteni a fájlt." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Fájl infó helyreállításának megkísérlése..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Névtelen fájl helyreállítása - helyreállítás megkísérlése RecoveredFile.dat " "néven" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Összes elérhető fájl infó helyreállítva :D - használatának megkísérlése..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Fájl infó helyreállítása nem lehetséges :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "A(z) %s (%s) megnyitása sikertelen" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "FIGYELEM: %s lehet, hogy sérült (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "HIBA a fájlrész mentésénél: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "Adatforgalmi hiba a partfile mentésekor: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Nem tudom megállapítani a '%s' hosszát - a %s fájlt használom." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' valahogy 0 méretű - a %s fájlt használom." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "A %s. part.met.seeds fájl mentése sikertelen" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "%i forrás elmentve a részfájlnak: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "%i forrás elmentve a részfájlnak: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Hiba a részfájl forrás-fájljának olvasása közben (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Sérült részt (%d) találtam a %d részű %s fájlban - FileResultHash |%s| " "FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "(%i) befejezett fájlrészt találtam a(z) %s fájlban" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "%s újra algoritmizálása befejeződött" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Váratlan hiba a %s fájl befejezése közben. A fájl szüneteltetve." #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Letöltés befejeződött: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Fájl törlése: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "FIGYELEM: Nem tudom a letöltött részt hash-elni - hash-készlet a(z) '%s'-hez " "hiányos" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "HIBA: Nem tudom a letöltött részt hash-elni - hash-készlet hiányos (%s). Nem " "volna szabad előfordulnia" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "EOF hiba tördelőalgoritmizáláskor a %u. letöltött résznél, amely %u (max %u) " "hosszú és a(z) '%s' részfájlhoz tartozik, amely %u hosszú: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "FIGYELEM: Nincs elég szabad hely a lemezen! Fájl szüneteltetése: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "A %i. letöltött fájlrész sérült a %s fájlban" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: %i. sérült rész helyreállítva a '%s'-hez -> megmentett bájtok: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Helyfoglalás" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Elégtelen lemezterület" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Letöltve" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "HIBA: A(z) '%s' részfájl megnyitása sikertelen." #: src/Preferences.cpp:632 msgid "System default" msgstr "Alapértelmezett" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albán" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arab" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asztúriai" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Baszk" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bolgár" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Katalán" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Kínai (egyszerűsített)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Kínai (hagyományos)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Horvát" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Cseh" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Dán" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Holland" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Angol (Egyesült Királyság)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Észt" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finn" #: src/Preferences.cpp:648 msgid "French" msgstr "Francia" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Gall" #: src/Preferences.cpp:650 msgid "German" msgstr "Német" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Görög" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Héber" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Magyar" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Olasz" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Olasz (Svájci)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japán" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Koreai" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Litván" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norvég (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Lengyel" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugál" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugál (Brazíliai)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Román" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Orosz" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Szlovén" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Spanyol" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Svéd" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Török" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ukrán" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Nyelv megváltoztatása" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "Nincsenek fordítások telepítve az aMule-hez" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "Nincs elérhető nyelv" #: src/Preferences.cpp:906 msgid "no options available" msgstr "nincs elérhető opció" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Érvénytelen kategória találva, mellőzés" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "A TCP port nem lehet magasabb 65532-nél, mert a kiszolgáló UDP port = TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Alapértelmezett port lesz használva (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Nem létező megosztott könyvtár kihagyása: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Csatlakozás" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Mappák" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Kiszolgálók" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Fájlok" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Biztonság" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Felület" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Szűrők" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Távoli elérés" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Online aláírás" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Haladó" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Események" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Hibakeresés" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "A következő változók helyettesítve lesznek:\n" " %PARTFILE - teljes út a fájlhoz\n" " %PARTNAME - csak a fájl neve" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Ne változtasd meg ezeket a beállításokat, csak akkor,\n" "ha tudod, mit csinálsz, ellenkező esetben könnyen\n" "elronthatod a dolgokat.\n" "\n" "Ezen beállítások módosítása nélkül is remekül fog\n" "működni az aMule." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Cfg csatolása a widget-hez (ID-je: %d, kulcsa: %s) sikertelen" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "Adatátvitel a Cfg-ből a Widget-be (ID-je: %d, kulcsa: %s) sikertelen." #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "A proxy típusa amihez kapcsolódsz" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "Adatátvitel a Widget-ből a Cfg-be (ID-je: %d, kulcsa: %s) sikertelen." #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "Újra kell indítani az aMule-t, hogy az alábbi változás(ok) érvénybe lépjen" "(ek):\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP port megváltozott.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP port megváltozott.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Külső kapcsolat port megváltoztatva.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Külső kapcsolat elfogadása megváltoztatva.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Külső kapcsolat interfész megváltoztatva.\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Protokoll zavarás" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Az automatikusan frissített kiszolgálóü lista üres.\n" "A 'kiszolgáló lista automatikus frissítése induláskor' letiltva." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Engedélyezted a távoli elérést, de nem adtál meg jelszót.\n" "A távoli elérés nem használható érvényes jelszó nélkül." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Nyelv megváltozott.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Ideiglenes mappa megváltozott.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- ED2K hálózat engedélyezve.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Az eD2k és a Kad hálózat is le van tiltva.\n" "Nem fogsz tudni kapcsolódni, amíg legalább az egyiket nem engedélyezed." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "A Kad nem fog elindulni, ha az UDP portod le van tiltva.\n" "Engedélyezd az UDP portot vagy tiltsd le a Kad-ot." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Most újra KELL indítanod az aMule-t.\n" "Ha nem indítod újra most, ne panaszkodj, ha bármi rossz történik.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Az automatikusan frissített kiszolgáló lista üres.\n" "Kérlek adj meg legalább egy URL-t, ami érvényes server.met fájlra mutat .\n" "Az URL megadásához klikkelj a \"Lista\" gombra ezen checkbox mellett." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "az Ideiglenes fájloknak" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Bejövő fájlok" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "az Online aláírásnak" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Válassz egy mappát a %s-nek" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Böngészés a videolejátszóhoz" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Válaszd ki a böngésződet" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Futtatható%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Kiszolgáló lista szerkesztése" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "URL-ek felvétele a server.met fájl letöltéséhez.\n" "Egy sorba csak egy URL." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Frissítés késleltetése: %d másodperc" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Grafikon átlagos ideje: %d perc" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Kapcsolatok grafikon-skálája: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Fájl buffer méret: %d bájt" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Feltöltési várólista nagysága: %d kliens" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Kiszolgáló kapcsolat frissítési gyakorisága: %d perc" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Kiszolgáló kapcsolat frissítési gyakorisága: Tiltva" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "letiltva" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Parancs végrehajtása a(z) '%s' eseménynél" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Parancs futtatása a magon" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Mag parancs:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Parancs futtatása a grafikus felületen" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "GUI parancs:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "A következő változók lesznek behelyettesítve:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "A minimum méretnek kisebbnek kell lennie a maximum méretnél. Maximum méret " "figyelmen kívül hagyva." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Keresési figyelmeztetés" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Alap" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Kad keresést nem lehet végrehajtani ha a Kad nem fut" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "eD2k keresést nem lehet végrehajtani, ha nincs kapcsolódva az eD2k-hoz" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Nem várt hiba amíg a Kad kereséssel próbálkoztam: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "Fájl ID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Fájl" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Letöltés kategóriába" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "%s lekérése ehez a fájlhoz" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Kapcsolódó fájlok keresése (eD2k, helyi kiszolgáló)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Ismertként megjelölés" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "eD2k hivatkozás másolása a vágólapra" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Megszakítva" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Új" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Az összes felsorolt zavart kiszolgálóval sikertelen a kapcsolatfelvétel. " "Újra próbálkozom zavarás nélkül." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Az összes felsorolt kiszolgálóval történő kapcsolatfelvétel sikertelen. Újra " "próbálkozom." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Az eD2k hálózat le van tiltva a beállításokban, nem kapcsolódom." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" "A kiszolgáló listában nem található érvényes kiszolgáló, amelyhez " "csatlakozni lehetne." #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Kapcsolódva %s-hez (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Kapcsolat létrejött a %s-vel" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Végzetes hiba kapcsolatfelvétel közben. Lehet, hogy megszakadt az Internet " "kapcsolat" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Megszakadt a kapcsolat %s-vel (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "A %s (%s:%i) halottnak tűnik." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "A %s (%s:%i) úgy látszik megtelt." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Automatikus kapcsolódás a kiszolgálóhoz %d másodperc múlva" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Kapcsolat megszakadt" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Kapcsolódás %s-hez (%s:%i) sikertelen." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "HIBA: A socket érvénytelen az időtúllépés-ellenőrzés során" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Kapcsolódási kísérlet %s-hez (%s:%i): időtúllépés." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Elkésett válasz érkezett egy DNS tudakozáshoz, figyelmen kívül hagyva." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "server.met fájl betöltése: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Server.met fájl nem található!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "server.met fájl '%s' betöltése sikertelen: ismeretlen formátum." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "A server.met megnyitása sikertelen!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "server.met fájl sérült, érvénytelen verzió-tag: 0x%x, mérete %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i kiszolgálót találtam a server.met fájlban" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d kiszolgáló hozzáadva" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Hiba: a 'server.met' fájl sérült: " #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "IO hiba a 'server.met' fájl olvasása közben: " #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Kiszolgáló nem lett hozzádva: [%s:%d] nem egy érvényes port." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" "Kiszolgáló nem lett hozzáadva: Az IP címe [%s:%d]-nek ki van szűrve vagy " "érvénytelen." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Kiszolgáló nem lett hozzáadva: Ezzel az IP:Port-tal [%s:%d] már van " "kiszolgáló a listában." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Kiszolgáló hozzáadva: Kiszolgáló [%s:%d] '%s' néven." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Olyan kiszolgálót próbál törölni, amelyikhez csatlakozva van. Kérém először " "válassza le." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Nem sikerült megnyitni a '%s'-t" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "A server.met mentése sikertelen!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Érvénytelen URL" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Kiszolgáló lista letöltése %s-ről befejeződött" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Az addresses.dat fájlban nem található kiszolgáló-lista cím bejegyzés. " "Kérlek írj be egy érvényes kiszolgáló-lista címet ebbe a fájlba, hogy " "automatikusan tudjam frissíteni a kiszolgáló listát." #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Kiszolgáló lista letöltése %s-ről megkezdve." #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "FIGYELEM: érvénytelen URL megadva a kiszolgálók automatikus frissítéséhez: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "Nincs érvényes url a server.met fájl automatikus letöltéséhez az addresses." "dat fájlban" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Kiszolgáló lista letöltése sikertelen %s-ről" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "A helyi kiszolgálót kiszűrte az IP-szűrő, újracsatlakozom egy másik " "kiszolgálóhoz!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Kiszolgáló neve" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "IP-cím" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Leírás" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Felhasználók" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Állandó" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Verzió" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Olyan kiszolgálót próbál törölni, amelyikhez csatlakozva van. Kérém először " "válassza le. A kiszolgáló NEM került törlésre." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Ismeretlen név)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Biztos, hogy törlöd az állandó %s kiszolgálót" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Kiszolgálók száma (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Kiszolgáló" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Kapcsolódás a kiszolgálóhoz" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Kiszolgáló megjelölése állandóként" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Kiszolgáló megjelölése nem állandóként" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Kiszolgálók megjelölése állandóként" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Kiszolgálók megjelölése nem állandóként" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Kiszolgáló eltávolítása" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Kiszolgálók eltávolítása" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Összes kiszolgáló eltávolítása" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "eD2k hivatkozások másolása a vágólapra" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Újracsatlakozás a kiszolgálóhoz" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Biztos, hogy törlöd az összes kiszolgálót?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Biztos, hogy törlöd a kiválasztott kiszolgálót?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Biztos, hogy törlöd a kiválasztott kiszolgálókat?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "HIBA: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "FIGYELEM: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Az új ügyfélazonosító %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "FIGYELEM: Alacsony azonosítót (LowID) kaptál!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tLegvalószínűbb oka az lehet, hogy tűzfal vagy router mögött vagy." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "" "\tTovábbi információért, kérlek látogasd meg a http://wiki.amule.org-ot" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Ismeretlen kiszolgáló infó fogadva! - túl rövid" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "%d új kiszolgáló fogadva" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Kiszolgáló-lista mentése kész." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "A kiszolgáló visszautasította az utolsó parancsot" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Hibás csomag érkezett a kiszolgálótól: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Kezeletlen hiba a kiszolgálóról történő adatok feldolgozásánál: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "A DNS feloldó szálat nem lehet létrehozni a %s-hez való kapcsolódáshoz" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "A %s IP-jű kiszolgáló (%s) ki van szűrve. Nem kapcsolódom." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "protokoll zavarással." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Kapcsolódás %s-hez (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Nem tudom a DNS-t feloldani a %s kiszolgálóhoz: Nem tudok kapcsolódni!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Kiszolgáló nem lett hozzáadva: IP vagy host név nincs megadva." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Kiszolgáló nem lett hozzáadva: Érvénytelen kiszolgáló-port." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "eD2k állapot:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kademlia állapot:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "LAN módban működik" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Fut" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Állapot:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Kapcsolat állapota:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" "Tűzfal által levédve - nyisd meg a %d. TCP port-ot a routereden vagy a " "tűzfaladon" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "UDP Kapcsolat Állapota:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" "Tűzfal által levédve - nyisd meg a %d. UDP port-ot a routereden vagy a " "tűzfaladon" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Tűzfal állapot: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Nincs szükség pajtásra - TCP port nyitva" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Nincs szükség pajtásra - UDP port nyitva" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Nincs pajtás" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Kapcsolódás a pajtáshoz" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Pajtáshoz kapcsolódva %s-on" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Indexelt források:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Indexelt kulcsszavak:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Indexelt jegyzetek:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Indexelt terhelés:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Átlagos felhasználószám:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Átlagos fájlszám:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "nem fut" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Fájl %s hozzáadása a megosztásokhoz" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "%i ismert megosztott fájlt találtam" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "%i ismert és %i ismeretlen megosztott fájlt találtam" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "HIBA: Megpróbáltuk megosztani a(z) %s-t" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Megosztott könyvtár nem található, mellőzve: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Nincsen megosztott fájl ebben a könyvtárban: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Felhasználói név" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Letöltési sebesség" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Feltöltési sebesség" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Elérhető részek" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "Feltöltési állapot" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Letöltési állapot" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Eredet" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Helyi fájlnév" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "Fájl lista megosztása" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Kérések" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Elfogadott kérések" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Átmásolt adat" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Megosztási arány" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Megszerzett részek" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Teljes források" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Könyvtár útvonal" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Megjegyzés/Értékelés hozzáadása" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Megjegyzés/Értékelés szerkesztése" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Átnevezés" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Add a gyűjteményben szereplő fájlokat az átviteli listához" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Magnet &URI másolása a vágólapra" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "eD2k hivatkozás másolása a vágólapra (Forrás)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "eD2k hivatkozás másolása a vágólapra (Forrás) (Titkosítási opciókkal)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "eD2k hivatkozás másolása a vágólapra (Gazda név)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "eD2k hivatkozás másolása a vágólapra (Gazda név) (Titkosítási opciókkal)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "eD2k hivatkozás másolása a vágólapra (AICH infó)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "eD2k hivatkozás másolása a vágólapra (AICH infó)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Érvényes forráshivatkozáshoz magas azonosító (HighID) szükséges" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Megosztott fájlok (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Részfájl]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Távoli fájlnév" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Feltöltött adatok (folyamat (összesen)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Összes többletterhelés (csomagok): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Fájlkérés többletterhelése (csomagok): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Forrásváltás többletterhelése (csomagok): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Kiszolgáló többletterhelése (csomagok): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Kad többletterhelés (csomagok): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Titkosítás többletterhelés (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Aktív feltöltések: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Várakozó feltöltések: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Összes sikeres feltöltési folyamat: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Összes sikertelen feltöltési folyamat: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Átlagos feltöltési idő: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Letöltött adatok (folyamat (összesen)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Forrás találatok: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Aktív letöltések száma (adatelemek): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Fel:Le töltési folyamat aránya (összesen): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Átlagos letöltési arány (folyamat): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Átlagos feltöltési arány (folyamat): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Maximum letöltési arány (folyamat): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Maximum feltöltési arány (folyamat): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Újrakapcsolódások: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Első átvitel óta eltelt idő: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Kiszolgálóhoz kapcsolódva: %s óta" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Aktív kapcsolatok száma (becsült): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Max kapcsolódási korlát elérve: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Kapcsolatok átlagos száma (becsült): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Legtöbb kapcsolat (becsült): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Kliensek" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Ismeretlen: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Kiszűrve: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Kitiltott: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Összesen: %i Ismert: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Működő kiszolgálók: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Sikertelen kiszolgálók: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Összes: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Törölt kiszolgálók: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Kiszűrt kiszolgálók: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Felhasználók száma a működő kiszolgálókon: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Fájlok a működő kiszolgálókon: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Összes felhasználó: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Összes fájl: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Kiszolgáló leterheltség: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Megosztott fájlok száma: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Megosztott fájlok teljes mérete: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Átlagos fájlméret: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Operációs rendszer" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Nem fogadott" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktív kapcsolatok (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Nem elérhető" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Soha" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "" "A '%s' parancs - melynek pid-je '%d' - befejeződési állapotkódja '%d' volt." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Végrehajtja az -t és kilép." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Érvénytelen IP cím formátum. Így használd: xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Ez a parancs argumentumot igényel. Érvényes argumentumok: 'all', fájlnév " "vagy egy szám.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Feldolgozás hash alapján: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Feldolgozás fájlnév alapján: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Ennek a parancsnak szüksége van egy argumentumra. Érvényes argumentumok: egy " "fájl hash.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Érvénytelen szám\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Nem érvényes hash (a hossza pontosan 32 karakter kell legyen)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "A '%s' paranccsal kaphatsz bővebb segítséget.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Letöltési méret: %i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Kérés ismeretlen hibával sikertelen." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "A művelet sikeres volt." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "A kérés sikertelen volt a következő hibával: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Kliens IP szűrés %s van kapcsolva.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "KI" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "BE" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Kiszolgáló IP szűrés %s van kapcsolva.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "IP szűrő szintje jelenleg %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Sávszélesség korlátok: Fel: %u kB/s, Le: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Kapcsolódva %s-hez %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Kapcsolódás folyamatban" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "tűzfal mögül" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "rendben" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Letöltés:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Feltöltés:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Várólistás kliensek száma:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Összes forrás:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Keresés eredményeinek száma: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Keresés haladása: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Keresés haladása nem elérhető" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Ismeretlen válasz érkezett a kiszolgálótól, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Rövid állapot információ megjelenítése." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" "Megjeleníti a kapcsolat állapotát, aktuális fel/letöltési sebességet, stb.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Megjeleníti a teljes statisztika fát." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Opcionálisan egy szám a 0-255 intervallumban megadható paraméterként ennek " "a\n" "parancsnak, ami megmondja, hány elemet jelenítsen meg az ügyfél verzók " "közül.\n" "Nullát megadva vagy elhagyva a paramétert, a jelentése \"bármennyit\".\n" "\n" "Példa: 'statistics 5' csak a leggyakoribb 5 verziót mutatja minden ügyfél\n" "típusból.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Az aMule leállítása." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "A távoli mag (amule/amuled) leállítása.\n" "Ez a szöveges klienst is le fogja állítani,\n" "hiszen az használhatatlan futó mag nélkül.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "A megadott objektum újratöltése." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "A megosztott fájlok listájának újratöltése." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Az IP szűrő tábla újratöltése." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Az aktuális IP szűrő tábla újratöltése." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "IP szűrő tábla frissítése URL-ról." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Ha nincs megadva URL, a beállításokban megadott URL lesz használva." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Kapcsolódás a hálózathoz." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Kapcsolódás minden hálózathoz, ami engedélyezve van a beállításokban.\n" "Opcionálisan megadható egy kiszolgáló cím IP:Port formában, ekkor csak ahhoz " "a\n" "kiszolgálóhoz kapcsolódik. Az IP-nek egy egy hagyományos IPv4 címnek, vagy " "egy\n" "érvényes DNS névnek kell lennie." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Kacsolódás csak az eD2k-hoz." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Kapcsolódás csak a Kad-hoz." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Leválaszt a hálózatról." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Ez leválaszt minden jelenleg kapcsolódott hálózatról.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Leválasztás csak az eD2k-ról." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Csak a Kad-ról választ le." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Egy eD2k vagy magnet hivatkozás hozzáadása a maghoz." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "A hozzáadandó eD2k hivatkozás lehet:\n" "*) egy fájl hivatkozás (ed2k://|file|...), ami a letöltési listához adódik,\n" "*) egy kiszolgáló hivatkozás (ed2k://|server|...), ami a kiszolgáló " "listához\n" " adódik,\n" "*) vagy egy kiszolgáló-lista hivatkozás, ekkor minden kiszolgáló a listáról " "a\n" " kiszolgáló listához adódik.\n" "\n" "A magnet hivatkozásnak tartalmaznia kell az eD2k hash-t és a fájl hosszát.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Egy beállítási érték megadása." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "IP szűrő beállítások megadása." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "IP szűrés bekapcsolása mind a kliensek, mind a kiszolgálók részére." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "IP szűrés kikapcsolása mind a kliensek, mind a kiszolgálók részére." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Engedélyezi/Letiltja a kliensek IP szűrését." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Kliens IP szűrés bekapcsolása." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Kliens IP szűrés kikapcsolása." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Engedélyezi/Letiltja a kiszolgálók IP szűrését." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Kiszolgáló IP szűrés bekapcsolása." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Kiszolgáló IP szűrés kikapcsolása." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "IP szűrési szint kiválasztása." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Az érvényes szűrési szintek a 0-255 tartományban vannak, és az " "alapértelmezett\n" "értéke 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Sávszélességi korlátok beállítása." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "Az ezeknek a parancsoknak adott érték kilobájt/mp-ben kell legyen.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Feltöltési sávszélesség beállítása." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "Az ezeknek a parancsoknak adott érték kilobájt/mp-ben kell legyen.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Letöltési sávszélesség beállítása." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Beállítási értékek megjelenítése." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "IP szűrő beállítások lekérdezése." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Az IP szűrő állapotának lekérdezése ügyfelek és kiszolgálók számára." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "IP szűrő állapotának lekérdezése csak ügyfeleknek." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "IP szűrő állapotának lekérdezése csak kiszolgálóknak." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "IP szűrési szint lekérdezése." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Sávszélességi korlátok megtekintése." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Keresés végrehajtása." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "A keresés típusát meg kell adni:\n" " GLOBAL (globális)\n" " LOCAL (helyi)\n" " KAD (kad)\n" "Például: 'search kad fájl' egy kad keresést fog indítani a \"fájl\"-ra.\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Globális keresés végrehajtása." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Helyi keresés végrehajtása." #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Kad hálózaton való keresés végrehajtása." #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Az utolsó keresés eredményeinek megjelenítése." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Az előző keresés eredményeinek visszaadása.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Egy keresés állapotának megjelenítése." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Egy keresés állapotának megjelenítése.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Fájl letöltése." #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Az utolsó keresésből a fájl sorszámát kell megadni.\n" "Pl: 'download 12' az előző keresésből a 12-es sorszámú fájlt fogja " "letölteni.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Letöltés szüneteltetése." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Letöltés folytatása." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Letöltés megszakítása." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Letöltési prioritás beállítása." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Alacsony, normál, magas vagy automatikus prioritást állít be.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Alacsony prioritás beállítása." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Normál prioritás beállítása." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Magas prioritás beállítása." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Automatikus prioritás beállítása." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Várósorok/listák megmutatása." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Feltöltési/letöltési várósor, kiszolgáló lista vagy a megosztott fájlok " "listájának megjelenítése.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Feltöltési várósor megmutatása." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Letöltési várósor megmutatása." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Napló megjelenítése." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Kiszolgáló-lista megmutatása." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Napló törlése." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Elavult parancs, használd a(z) '%s'-t helyette." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Ez egy elavult parancs és a jövőben eltávolításra kerülhet.\n" "Használd a '%s'-t helyette.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMule szöveges kliens" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "A régi AICH hashkészlet konvertálása 64b-re '%s'-ből '%s'-be." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "FIGYELEM: A fájlnév '%s' érvénytelen és '%s'-re lett átnevezve." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "FIGYELEM: A fájl '%s' már létezik, az új fájl '%s'-re lett nevezve." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Biztos benne, hogy megszakítja a letöltéseket és töröl minden fájlt ebből a " "kategóriából?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Megerősítés szükséges" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Csak 99 kategória támogatott." #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Túl sok kategória!" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Összes egyéb" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Válassz nézetet" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Új kategória" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Kategória szerkesztése" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Kategória törlése" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Nem sikerült megnyitni a fájlt (%s), eltávolítom a megosztott fájlok " "listájáról." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Hash-készlet kérés az ismeretlen %s fájlhoz" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Fájl feltöltés folytatása: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Fájl feltöltés felfüggesztése: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "" "A(z) '%s' parancsot a(z) '%s' esemény kapcsán nem sikerült végrehajtani." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Letöltés befejezve" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "A fájl teljes elérési útja." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "A fájlnév könyvtár komponens nélkül." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "A fájl eD2k hash-e." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Fájlméret bájtokban." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Összegzett letöltési aktivitás idő." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Új beszélgetés kezdődött" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Üzenetküldő." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Helyhiány" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Lemez partíció." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Hiba a befejezésnél" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "%u fájl számának feldolgozása: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Rész-hash-eket kért (Csak 9.5 MB fájlméret fölött lehet használni)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Nem létező fájl !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, az aMule eD2k hivatkozás készítője" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Üdvözöljük!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Bemeneti paraméterek" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Fájl tördelőalgoritmizálása" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "URL(ek) hozzáadása ehhez a fájlhoz (nem kötelező)" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Itt azt a fájlt add meg, amelyhez eD2k hivatkozást akarsz generálni" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Itt add meg az URL-t amit az eD2k hivatkozáshoz szeretnél adni; ha a " "végére / jelet teszel, az aLinkCreator automatikusan hozzáfűzi az aktuális " "fájlnevet." #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Eltávolít" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Hivatkozás készítése rész-hash-ekkel" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Új és ritka fájlokat segít gyorsabban elterjeszteni megnövelt " "hivatkozásméret segítségével" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4 fájl hash" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k fájl hash" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k hivatkozás" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Ment" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Másolás a vágólapra" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Megnyitás" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Fájl megnyitása, amire eD2k hivatkozást kell készíteni" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "A számított eD2k hivatkozás másolása a vágólapra" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Mentés másként" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "A számított eD2k hivatkozás mentése fájlba" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "aLinkCreator Névjegy" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Válaszd ki a fájlt, hogy kiszámíttasd az eD2k hivatkozását" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Nem tudom megnyitni a vágólapot" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Nem került másolásra semmi !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Válaszd ki a fájlt a számított eD2k hivatkozásodnak" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Nem lehet megnyitni" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Kérlek, ne üres fájlnevet adj meg" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Nem került mentésre semmi !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, az aMule eD2k hivatkozás készítője\n" "\n" "(c) 2004 ThePolish \n" "\n" "Képek: http://www.everaldo.com, http://www.icomania.com\n" "és http://jimmac.musichall.cz/ikony.php3\n" "\n" "GPL alatt terjesztve" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Tördelőalgoritmizálás..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "Az aLinkCreator dolgozik" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "MD4 hash számítása..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "eD2k hash-ek számítása..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Megszakítva !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Elkészült %.2f mp alatt" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Ezt az URL-t már felvette a letöltési listába !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Kérlek, ne üres URL-t adj meg " #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "%s-t nem lehet megnyitni" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i nap %i óra %i perc %i mp" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02un %02uó %02uperc %02ump" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uó %02uperc %02ump" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02uperc %02ump" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02ump" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, aMule Online Statisztikák" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Legmagasabb letöltési arány a wxCas futása óta" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Abszolút legmagasabb letöltési arány a wxCas előző futása alatt" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Rendszer" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Automatikus frissítés leállítása" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Online statisztikák mentése" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Online statisztikák nyomtatása" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Tulajdonságok beállítása" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "wxCas Névjegy" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Automatikus frissítés elindítása" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Automatikus frissítés leállítva" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Automatikus frissítés elindítva" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Statisztikák mentése" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMule online statisztikák" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Nyomtatási probléma történt.\n" "Lehet, hogy a nyomtatód nincs helyesen beállítva?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Nyomtatás" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule OnLine Aláírás Statisztikák\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pedro de Oliveira által készített CAS alapokon\n" "\n" "Distributed under GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Ó ó, az aMule nem fut..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule fut" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "Az aMule fut, de nincs kapcsolódva" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule kapcsolódása folyamatban..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Ó-Ó, az aMule állapota ismeretlen..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " fut " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " megállt !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " nincs kapcsolódva !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " kapcsolódás folyamatban ..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " valami különös történik, ellenőrízd !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " kapcsolódva ehhez: " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "nincs" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " csatlakozva ehhez " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " ezzel " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Összes letöltés: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Feltöltés: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Szakasz letöltés: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Letöltés: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Feltöltés: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Megosztva: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " fájl(ok), Várólistás kliensek száma: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Idő: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " IP címen " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Rendszer betöltési átlag (1-5-15 perc): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "A rendszer aktivitási ideje (uptime): " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "amulesig.dat fájlt tartalmazó könyvtár" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Itt azt a könyvtárat add meg, ahol az amulesig.dat fájl található" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Frissítés gyakorisága mp-ben" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Statisztikai kép készítése minden frissítés alkalmával" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Itt azt a könyvtárat add meg, ahová a statisztikát akarod elkészíteni" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Statisztikai kép periódikus feltöltése FTP kiszolgálóra" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP Url" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP útvonal" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Itt az FTP kiszolgálójának az URL-jét add meg" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "Könyvtár megadása" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Felhasználó" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "" "Itt a felhasználói nevet add meg az FTP kiszolgálóra törénő bejelentkezéshez" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Itt a jelszavad add meg az FTP kiszolgálóra törénő bejelentkezéshez" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "FTP frissítési gyakorisága percekben" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Mentés" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Aláírás fájlt tartalmazó könyvtár" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "A statisztika készítésének könyvtára" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Betölti a(z) sablont" #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Web kiszolgáló HTTP port" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "UPnP port továbbítás használata a web kiszolgáló porton" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP port" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Gzip tömörítés használata" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Teljes jogú jelszó a web kiszolgálóhoz" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Vendég jelszó a web kiszolgálóhoz" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Vendég felhasználó engedélyezése" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "vendég felhasználó tiltása" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" "A web kiszolgáló beálításait a távoli aMule-től kéri, illetve oda menti" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMule konfig fájl útvonala. NE HASZNÁLD!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "PHP feldolgozó letiltása (nem ajánlott)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "PHP oldalak újrafordítása minden kérésnél" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule Web kiszolgáló" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "web ügyfél kapcsolat elfogadva\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "HIBA: nem tudom fogadni a web ügyfél kapcsolatot\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "A kérés sikertelen volt a következő hibával: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Index fájl nem található: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Munkafolyamat időtúllépés - bejelentkezés kérése\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Munkamenet rendben, bejelentkezve\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Munkamenet rendben, nincs bejelentkezve\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Nincs munkafolyamat megnyitva - bejelentkezés kérése\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Munkafolyamat létrehozva - bejelentkezés kérése\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Kérés feldolgozása [eredeti]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Nincsen megadva jelszó, bejelentkezés nem lesz engedélyezve." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Jelszó ellenőrzése\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Jelszó hash érvénytelen\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Jelszó rendben\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Hibás jelszó\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Nem adtál meg jelszót. Üres jelszó nem megengedett.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Kijelentkezés\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Kérés feldolgozása [átirányított]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "A(z) %s (%s) részfájlnak nincs seeds fájlja" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "A(z) %s (%s) részfájlnak üres a seeds fájlja" #~ msgid "Download status" #~ msgstr "Letöltési állapot" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "Tallóz" #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Frissítés késleltetése: %d másodperc" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "" #~ "Kommentárok és értékelések jelenleg nincsenek támogatva a távoli GUI-ban" #~ msgid "Transferring" #~ msgstr "Átvitel" #~ msgid "QR: ???" #~ msgstr "QR: ???" #~ msgid "QR: %u" #~ msgstr "QR: %u" #~ msgid "Only files currently uploading" #~ msgstr "Csak feltöltés alatt álló fájlokat" #~ msgid "Queue Rank" #~ msgstr "Várólista helyezés" #~ msgid "TODO - show progress of a search" #~ msgstr "Tennivaló - keresés állapotának megjelenítése" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "MD4 és AICH hash létrehozása a(z) '%s' fájlhoz." #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "MD4 hash létrehozása a(z) '%s' fájlhoz." #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "AICH hash létrehozása a(z) '%s' fájlhoz." #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "FIGYELMEZTETÉS: nem lehetett a(z) '%s' eredeti fájlt törölni a biztonsági " #~ "másolat létrehozása után" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "FIGYELMEZTETÉS: %s fájl törlése sikertelen" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "" #~ "You cannot connect to a release version from an arbitrary SVN version! " #~ "*sigh* possible crash prevented" #~ msgstr "" #~ "Nem kapcsolódhatsz egy kiadott változathoz akármilyen SVN változattal! " #~ "*sóhaj* lehetséges összeomlás megelőzve" #~ msgid "Rating (total):" #~ msgstr "Értékelés (összes):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Próbálj meg teljes adatelemet feltölteni" #~ msgid "Networks window" #~ msgstr "Hálózatok ablak" #~ msgid "Searches window" #~ msgstr "Keresések ablak" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Letöltés alatt" #~ msgid "Shared files window" #~ msgstr "Megosztott fájlok ablak" #~ msgid "Messages window" #~ msgstr "Üzenetek ablak" #~ msgid "Statistics graph window" #~ msgstr "Statisztika grafikon ablak" #~ msgid "Preferences settings window" #~ msgstr "Beállítások ablak" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Tálca-jelkép elveszett, újrakészítés megkisérlése ..." #~ msgid "Transfers" #~ msgstr "Átvitelek" #~ msgid "Files transfers window" #~ msgstr "Fájl átvitelek ablak" #~ msgid "Unban" #~ msgstr "Kitiltás megszüntetése" #~ msgid "Show Uploads" #~ msgstr "Feltöltések megjelenítése" #~ msgid "Show Queue" #~ msgstr "Várakozók megjelenítése" #~ msgid "Select View" #~ msgstr "Nézet kiválasztása" #~ msgid "Client Software" #~ msgstr "Kliens szoftver" #~ msgid "Waited" #~ msgstr "Várakozott" #~ msgid "Upload Time" #~ msgstr "Feltöltési idő" #~ msgid "Upload/Download" #~ msgstr "Feltöltés/Letöltés" #~ msgid "Remote Status" #~ msgstr "Távoli állapot" #~ msgid "File Priority" #~ msgstr "Fájl prioritás" #~ msgid "Score" #~ msgstr "Pontszám" #~ msgid "Asked" #~ msgstr "Kérve" #~ msgid "Last Seen" #~ msgstr "Utoljára látott" #~ msgid "Entered Queue" #~ msgstr "Várólistára bejegyezve" #~ msgid "Transferred Up" #~ msgstr "Feltöltött" #~ msgid "Transferred Down" #~ msgstr "Letöltött" #~ msgid "Userhash" #~ msgstr "Userhash" #~ msgid "Encrypted" #~ msgstr "Titkosított" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "%d darab zászló képe betöltve." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Feltöltési lista / Várólista megjelenítése" #~ msgid "Clients on queue :" #~ msgstr "Várólistás kliensek száma :" #~ msgid "Current Session" #~ msgstr "Aktuális folyamat" #~ msgid "Total" #~ msgstr "Összesen" #~ msgid "Requested :" #~ msgstr "Lekérdezve :" #~ msgid "Create backup for preview" #~ msgstr "Másolat készítése előnézethez" #~ msgid "Files Transfers Window" #~ msgstr "Fájlátvitel ablaka" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Összes felhasználó: %s | Összes fájl: %s" #~ msgid "Download size not received, downloading until connection is closed" #~ msgstr "Letöltés mérete nem érkezett meg, letöltés amíg a kapcsolat lezárul" #~ msgid "HTTP download thread ended" #~ msgstr "HTTP letöltési szál befejeződött" #~ msgid "Host: %s:%i\n" #~ msgstr "Gazda: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Válasz: %i (Hiba: %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "FIGYELMEZTETÉS: Üres válasz az adatár létrehozásakor" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "HIBA: Átterelési kód érkezett URL nélkül" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "" #~ "CIP2Country::CIP2Country(): Sikertelen az ország adatok beolvasása innen: " #~ msgid "Get IPFilter level." #~ msgstr "IP szűrő szintjének megjelenítése." #~ msgid "Makes a search." #~ msgstr "Keresést végez." #~ msgid "Killed!" #~ msgstr "Kivégezve!" #~ msgid "Using amuleweb in '%s'." #~ msgstr "amuleweb használata '%s'-ben." #~ msgid "Shutting down aMule..." #~ msgstr "Az aMule leállítása..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Az alábbiak változtak meg ebben a kiadásban biztonsági okok miatt:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Protokoll titkosítás engedélyezve a bejövő és kimenő kapcsolatokra.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Kiszolgáló-lista frissítése letiltva más ügyfelektől és " #~ "kiszolgálóktól.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Több információért ezekről a változásokról keress az aMule wiki-ben\n" #~ " a http://wiki.amule.org oldalon információt a hamis kiszolgálókról " #~ "(\"fake servers\").\n" #~ "Fontos, hogy minden hamis kiszolgálót törölj a kiszolgáló-listádról, hagy " #~ "az aMule rendesen működjön." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "Ezenkívül a böngésző beállítások is vissza lettek állítva a rendszer " #~ "alapértelmezett böngészőre. Kérlek állítsd be újra a böngésző " #~ "beállításaidat, ha szükséges.\n" #~ msgid "Fetching status..." #~ msgstr "Állapot gyűjtése..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Felhasználók: E: %s K: %s | Fájlok: E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "A %s kliens a(z) %s:%d IP:Port-on %s %s %s -t használ" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() NULL-t adott vissza" #~ msgid "Firewalled" #~ msgstr "Tűzfal mögött" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "%d zászló kép betöltve." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "" #~ "A(z) %s fájl túlságosan nagy a Donkey számára: max 4 GB engedélyezett." #~ msgid "User:" #~ msgstr "Felhasználó:" #~ msgid "System:" #~ msgstr "Rendszer:" #~ msgid "No handler for this file type." #~ msgstr "Ehhez a fájl típushoz nincs hozzátársítva alkalmazás." #~ msgid "File was not saved" #~ msgstr "A fájl nem lett mentve" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "Kapcsolódás sikertelen. A megadott host-ra nem lehet kapcsolódni\n" #~ msgid " Copyright (C) 2002 Petar Maymounkov \n" #~ msgstr " Copyright (C) 2002 Petar Maymounkov \n" #~ msgid "Message Filter" #~ msgstr "Üzenetszűrő" #~ msgid "Gui Tweaks" #~ msgstr "Gui finomhangolások" #~ msgid "Core Tweaks" #~ msgstr "Alapvető finomhangolások" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Tooltip késleltetése mp-ben" #~ msgid "Show part file number before file name" #~ msgstr "Mutassa a részfájl számát a neve előtt" #~ msgid "Skin Support" #~ msgstr "Téma támogatás" #~ msgid "- no skins available -" #~ msgstr "- nincs elérhető felület -" #~ msgid "Online Signature Directory:" #~ msgstr "Online aláírás könyvtára:" #~ msgid "Filtering Options:" #~ msgstr "Szűrő beállítások:" #~ msgid "Line Capacities" #~ msgstr "Sávok kapacitása" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Megjegyzés: Ezek az értékek\n" #~ " csak a statisztikákhoz kellenek." #~ msgid "Standard client TCP Port:" #~ msgstr "Szabvány kliens TCP port:" #~ msgid "Extended client UDP Port:" #~ msgstr "Bővített kliens UDP port:" #~ msgid "Bind Address" #~ msgstr "Kötési cím" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "UDP port a bővített kiszolgáló kéréseknek (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "Max forrás / fájl" #~ msgid "Connection limits" #~ msgstr "Kapcsolat korlátok" #~ msgid "Universal Plug and Play" #~ msgstr "Universal Plug and Play" #~ msgid "Enable UPnP" #~ msgstr "UPnP engedélyezése" #~ msgid "UPnP TCP Port:" #~ msgstr "UPnP TCP Port:" #~ msgid "Start next paused file when a file completed" #~ msgstr "" #~ "Következő szüneteltetett fájl indítása, ha egy fájl letöltése befejeződött" #~ msgid "Check disk space" #~ msgstr "Szabad lemezterület ellenőrzése" #~ msgid "Min disk space:" #~ msgstr "Minimum szabad hely:" #~ msgid "Incoming" #~ msgstr "Bejövő" #~ msgid "Temporary" #~ msgstr "Ideiglenes" #~ msgid "Shared" #~ msgstr "Megosztott" #~ msgid "Select Statistics Colors" #~ msgstr "Válaszd ki a statisztikák színeit" #~ msgid "Download Queue Files Progress" #~ msgstr "Letöltési folyamatjelző" #~ msgid "Show percentage" #~ msgstr "Százalék megjelenítése" #~ msgid "Show progressbar " #~ msgstr "Folyamatjelző megjelenítése" #~ msgid "Enable skin support " #~ msgstr "Felület támogatás engedélyezése" #~ msgid "Skin:" #~ msgstr "Felület:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "Automatikus rendezése a fájloknak a letöltési listában (erős CPU)" #~ msgid "Show Fast eD2k Links Handler" #~ msgstr "Mutassa a gyors eD2k hivatkozás kezelőt" #~ msgid "Web server port" #~ msgstr "Web kiszolgáló port" #~ msgid "Enable UPnP port forwarding on the web server port" #~ msgstr "UPnP port továbbítás engedélyezése a web kiszolgáló portján" #~ msgid "Web server UPnP TCP port" #~ msgstr "Web kiszolgáló UPnP TCP port" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "A hallgató interfész IP-je\n" #~ "(üres = bármi)" #~ msgid "TCP port" #~ msgstr "TCP port" #~ msgid "Who can see shared files:" #~ msgstr "Kik láthatják a megosztott fájlokat:" #~ msgid "Event types" #~ msgstr "Esemény típusok" #~ msgid "ERROR: can not accept web client connection\n" #~ msgstr "HIBA: nem tudom fogadni a web ügyfél kapcsolatot\n" #~ msgid "" #~ "Your Auto-update server list is empty.\n" #~ "'Auto-update server list at startup will be disabled." #~ msgstr "" #~ "Az automatikusan frissített kiszolgáló lista üres.\n" #~ "A 'kiszolgáló lista automatikus frissítése induláskor' letiltva." #~ msgid "ERROR: Invalid part.met fileversion: %s ==> %s" #~ msgstr "HIBA: Érvénytelen part.met fájl változat: %s ==> %s" #~ msgid "WARNING: Knownfile list corrupted, contains invalid header." #~ msgstr "" #~ "FIGYELEM: Az ismert fájlok listája sérült, érvénytelen fejlécet tartalmaz." #~ msgid "Makes aMule promt before exiting." #~ msgstr "Figyelmeztessen az aMule bezárása előtt." #~ msgid "Bandwith limits" #~ msgstr "Sávszélesség korlátok" #~ msgid "This UDP port is used for extended ed2k requests and Kad network" #~ msgstr "Ezt az UDP portot bővített eD2k kérések és a Kad hálózat használja" #~ msgid "Show overhead bandwith" #~ msgstr "Sávszélesség többletterhelésének mutatása" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. aktív" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICH bízzon meg minden hash-ben (nem ajánlott)" #~ msgid "Disk space" #~ msgstr "Lemezterület" #~ msgid "Create Backup for preview" #~ msgstr "Másolat készítése előnézethez" #~ msgid "Advanced Settings" #~ msgstr "Haladó beállítások" #~ msgid "Progressbar Style" #~ msgstr "Folyamatjelző stílus" #~ msgid "Column Sorting" #~ msgstr "Oszlop rendezés" #~ msgid "Misc Gui Tweaks" #~ msgstr "Egyéb Gui finomhagolások" #~ msgid "File Options" #~ msgstr "Fájl beállítások" #~ msgid "Status text" #~ msgstr "Állapot" #~ msgid "Pop-up status text" #~ msgstr "Állapot felugró ablakban" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ " 'Minden-platform' p2p ügyfél az eMule alapján \n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr " Honlap: http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr " Fórum: http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ " GYIK: http://wiki.amule.org\n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " Kapcsolat: admin@amule.org (adminisztratív ügyek) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr " Az aMule részben a következőn alapul: \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " Copyright (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "Megadhatod egy film hosszát, történetét, nyelvét ...\n" #~ "és ha a fájl hamisítvány, akkor elmondhatod ezt a többi aMule " #~ "felhasználónak." #~ msgid "Misc Options" #~ msgstr "Egyéb beállítások" #~ msgid "Server Options" #~ msgstr "Kiszolgáló beállításai" #~ msgid "Display server motd when connected ..." #~ msgstr "A nap kiszolgáló üzenetének megjelenítése kapcsolódáskor ..." #~ msgid "eD2k Info" #~ msgstr "eD2k infó" #~ msgid "Disable/Enable" #~ msgstr "Tiltás/Engedélyezés" #~ msgid "Authentication" #~ msgstr "Hitelesítés" #~ msgid "General Settings" #~ msgstr "Általános beállítások" #~ msgid "Hard limit" #~ msgstr "Felső korlát" #~ msgid "Max Connections" #~ msgstr "Max kapcsolatok" #~ msgid "GUI Tweaks" #~ msgstr "Gui finomhangolások" #~ msgid "Remote Control" #~ msgstr "Távoli elérés" #~ msgid "Unable to determine selected browser!" #~ msgstr "Nem tudom meghatározni a kiválasztott böngészőt!" #~ msgid "User Defined" #~ msgstr "Felhasználó által megadott" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - a linuxos Mule" #~ msgid "System Default" #~ msgstr "Rendszer alapértelmezett" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Válaszd ki a böngésződet" #~ msgid "Custom Browser:" #~ msgstr "Egyéni böngésző:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Itt add meg a böngésződ nevét. Egyéni böngésző esetén, válaszd az Egyéni " #~ "menüelemet a lenyíló menü felett." #~ msgid "Please wait... " #~ msgstr "Kis türelmet..." #~ msgid "Could not determine the command for running the browser." #~ msgstr "Nem tudom megállapítani a parancsot a böngésző futtatásához." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "EC kapcsolat sikertelen. Üres válasz." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "ExternalConn: Hozzáférés megtagadva, mert: " #~ msgid "ExternalConn: Access denied" #~ msgstr "ExternalConn: Hozzáférés megtagadva" #~ msgid "ExternalConn: Bad reply from server. Connection closed." #~ msgstr "ExternalConn: Rossz válasz a kiszolgálótól. Kapcsolat lezárva." #~ msgid "The ed2k hash of the file." #~ msgstr "A fájl ed2k hash-e." #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "ED2k &link másolása a vágólapra" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "ED2K link másolása a vágólapra (&Forrás)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "" #~ "ED2K hivatkozás másolása a vágólapra (Forrás) (Titkosítási opciókkal)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "ED2K hivatkozás másolása a vágólapra (&Hoszt név)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "" #~ "ED2K hivatkozás másolása a vágólapra (Hoszt név) (Titkosítási opciókkal)" #~ msgid "Copy ED2k link to clipboard (&AICH info)" #~ msgstr "ED2k link másolása a vágólapra (&AICH infó)" #~ msgid "Warning" #~ msgstr "Figyelmeztetés" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "Hiba: A TCP portot nem lehet figyelni." #~ msgid "Error: can not accept web client connection\n" #~ msgstr "Hiba: nem tudom fogadni a web ügyfél kapcsolatot\n" #~ msgid "Webserver HTTP port" #~ msgstr "Webkiszolgáló HTTP port" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "Használjon UPnP port továbbítást a webkiszolgáló portján" #~ msgid "Full access password for webserver" #~ msgstr "Teljes jogú jelszó a webkiszolgálóhoz" #~ msgid "Guest password for webserver" #~ msgstr "Vendég jelszó a webkiszolgálóhoz" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "A webkiszolgáló beállításait az aMule-től tölti/oda tárolja." #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "" #~ "Itt azt a fájlt add meg, amelyikhez Ed2k hivatkozást akarsz generálni" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "Itt azt az URL adja meg, amelyet az Ed2k hivatkozáshoz kíván hozzáadni: " #~ "az aLinkCreator a végén hozzáfűzi az adott fájlnevet" #~ msgid "Ed2k File Hash" #~ msgstr "Ed2k fájl hash" #~ msgid "Ed2k link" #~ msgstr "Ed2k hivatkozás" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "Fájl megnyitása ed2k hivatkozás generálásához" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "Generált ed2k hivatkozás másolása a vágólapra" #~ msgid "Save computed ed2k link to file" #~ msgstr "Generált ed2k hivatkozás mentése fájlba" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "" #~ "Válaszd ki azt a fájlt, amelyikhez ed2k hivatkozást akarsz generálni" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "Fájl kijelölése a generált ed2k hivatkozáshoz" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, az aMule ed2k hivatkozás generálója\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Grafika http://www.everaldo.com, http://www.icomania.com\n" #~ "és http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, az aMule ed2k hivatkozás-generálója" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "ED2k link másolása a vágólapra" #~ msgid "Copy ED2k links to clipboard" #~ msgstr "ED2k linkek másolása a vágólapra" #~ msgid "ED2K: Connecting" #~ msgstr "ED2K: Kapcsolódás" #~ msgid "ED2K: Disconnected" #~ msgstr "ED2K: Leválasztva" #~ msgid "Warning: Unable to open skin file '%s' for read" #~ msgstr "Figyelem: Nem tudom a '%s' felület fájlt olvasásra megnyitni" #~ msgid "ed2k network" #~ msgstr "ed2k hálózat" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "Az automatikusan frissített kiszolgáló lista üres.\n" #~ "'A kiszolgáló lista automatikus frissítése induláskor' letiltásra kerül." #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "Az ED2K és a Kad hálózat is le van tiltva.\n" #~ "Nem fogsz tudni kapcsolódni, amíg legalább az egyiket nem engedélyezed." #~ msgid "Edit Serverlist" #~ msgstr "Kiszolgáló lista szerkesztése" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "Hiba: új külső kapcsolat elutasítva " #~ msgid "ED2K is disabled in preferences." #~ msgstr "Az ED2K le van tiltva a beállításokban." #~ msgid "ExternalConn: shutdown requested" #~ msgstr "ExternalConn: leállítás kérve" #~ msgid "Already connected to ED2K." #~ msgstr "Már kapcsolódva az ED2K-hoz." #~ msgid "Connecting to ED2K..." #~ msgstr "Kapcsolódás az ED2K-hoz..." #~ msgid "Disconnected from ED2K." #~ msgstr "Leválasztva az ED2K-ról." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "ExternalConn: érvénytelen opcode fogadva: %#x" #~ msgid "ED2K Status:" #~ msgstr "ED2K állapot:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "Átlagos letöltési arány (folyamat): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "Átlagos feltöltési arány (folyamat): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "Max letöltési arány (folyamat): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "Max feltöltési arány (folyamat): %s" #~ msgid "Average filesize: %s" #~ msgstr "Átlagos fájlméret: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "ED2K keresést nem lehet végrehajtani ha az ED2K nincs kapcsolódva" #~ msgid "Error: " #~ msgstr "Hiba: " #~ msgid "Warning: " #~ msgstr "Figyelem: " #~ msgid "Search related files (ED2k, local server)" #~ msgstr "Kapcsolódó fájlok keresése (ED2K, helyi kiszolgáló)" #~ msgid "Error" #~ msgstr "Hiba" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "FIGYELEM: Nem adhatod magad forrásként egy ed2k hivatkozáshoz amíg " #~ "alacsony azonosítójú (lowid) vagy." #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "Állítsd be a kedvenc videolejátszódat a beállításoknál.\n" #~ "Addig is, az aMule az mplayer-t fogja megpróbálni használni, és minden " #~ "előnézetnél megkapod ezt a figyelmeztetést." #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "Hiba: A part.met fájl megnyitása sikertelen: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "Hiba: part.met fájl 0 méretű: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "Hiba: Érvénytelen part.met fájlverzió: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "Figyelmeztetés: %s lehet, hogy sérült (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "Váratlan fájlhiba %s fájl befejezésénél. Fájl szüneteltetve" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "Figyelmeztetés: A letöltött rész hash-elése nem lehetséges - a hash " #~ "készlet hiányos '%s'-hez" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "Hiba: A letetöltött rész hash algoritmizálása nem lehetséges - HashSet " #~ "hiányos (%s). Ennek sosem kéne előfordulnia" #~ msgid "Insufficient Diskspace" #~ msgstr "Elégtelen lemezterület" #~ msgid "Warning: known.met cannot be opened." #~ msgstr "Figyelem: a known.met fájlt nem lehet megnyitni." #~ msgid "Warning: Knownfile list corrupted, contains invalid header." #~ msgstr "" #~ "Figyelem: Az ismert fájlok listája sérült, érvénytelen fejlécet tartalmaz." #~ msgid "ERROR! Attempted to share %s" #~ msgstr "HIBA: %s megosztása megkísérelve" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "Az ED2K hálózat le van tiltva a beállításokban, nem kapcsolódom." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "" #~ "Nem találtam érvényes kiszolgálót a kiszolgáló-listában, amihez " #~ "kapcsolódni lehetne" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "Hiba: Érvénytelen socket időtúllépési ellenőrzésnél" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions." #~ msgstr "" #~ "Hiba: A biztonsági másolatot nem lehet betölteni. Keressen a http://forum." #~ "amule.org oldalon .part.met helyreállítási megoldásokat." #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "A következő magnet hivatkozást nem tudom ed2k-ra konvertálni: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "Érvénytelen ed2k hivatkozás! Hiba: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "Sávszélesség korlátok: Fel: %u kB/s, Le: %u kB/s.\n" #~ msgid "Shutdown aMule." #~ msgstr "Az aMule leállítása." #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "Leállítja a távoli futó főprogramot (amule/amuled).\n" #~ "Ez a szöveges klienst is leállítja, mivel az használhatatlan futó " #~ "főprogram\n" #~ "nélkül.\n" #~ msgid "Connect to ED2K only." #~ msgstr "Kapcsolódás csak az ED2K-hoz." #~ msgid "Disconnect from ED2K only." #~ msgstr "Csak az ED2K-ról választ le." #~ msgid "Adds an ed2k or magnet link to core." #~ msgstr "Egy ed2k vagy magnet hivatkozást ad át a főprogramnak." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "A hozzáadandó ed2k hivatkozás lehet:\n" #~ "*) egy fájl hivatkozás (ed2k://|file|...), ami a letöltési listához " #~ "adódik,\n" #~ "*) egy kiszolgáló hivatkozás (ed2k://|server|...), ami a kiszolgáló " #~ "listához\n" #~ " adódik,\n" #~ "*) vagy egy kiszolgáló-lista hivatkozás, ekkor minden kiszolgáló a " #~ "listáról a\n" #~ " kiszolgáló-listához adódik.\n" #~ "\n" #~ "A magnet hivatkozásnak tartalmaznia kell az ed2k hash-t és a fájl " #~ "hosszát.\n" #~ msgid "Deprecated command, now '%s'." #~ msgstr "Elavult parancs, most '%s'." #~ msgid "Error: %s (%s) - %s" #~ msgstr "Hiba: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "Figyelmeztetés: %s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "Hiba: Elfogyott a lemezterület" #~ msgid "Error: Partmet not found" #~ msgstr "Hiba: partmet nem található" #~ msgid "Error: IO error!" #~ msgstr "Hiba: IO hiba!" #~ msgid "Error: Failed!" #~ msgstr "Hiba: Sikertelen!" #~ msgid "ED2K Link: " #~ msgstr "ED2K hivatkozás: " #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "" #~ "Kattints ide ed2k hivatkozás felvételéhez a letöltési várólistádhoz " #~ "történő szövegellenőrzésben." #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "Több találatot keres az ED2K-n. Kad-on még nem támogatott." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Sávszélességi korlátok" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "Ez a szabvány ED2K port és nem tiltható le." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "" #~ "Ez az UDP port bővített ED2K kérésekhez és a Kad hálózathoz használatos" #~ msgid "Hard Limit" #~ msgstr "Felső korlát" #~ msgid "Connection Limits" #~ msgstr "Kapcsolódási korlát" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Kiszolgáló lista automatikus frissítése induláskor" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Kiszolgáló lista frissítése a kiszolgálóhoz történő kapcsolódáskor" #~ msgid "Update serverlist when a client connect" #~ msgstr "Kiszolgáló lista frissítése klienshez történő kapcsolódáskor" #~ msgid "Disk Space" #~ msgstr "Szabad lemezterület" #~ msgid "Check Disk Space" #~ msgstr "Szabad lemezterület ellenőrzése" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "" #~ "Jelöld be, ha szeretnéd, hogy az aMule ellenőrizze a szabad " #~ "lemezterületedet" #~ msgid "Min Disk Space:" #~ msgstr "Minimális lemezterület:" #~ msgid "Incoming Directory :" #~ msgstr "Bejövő Mappa :" #~ msgid "Temporary Directory :" #~ msgstr "Ideiglenes Mappa :" #~ msgid "Shared Directories" #~ msgstr "Megosztott könyvtárak" #~ msgid "Create Backup to preview" #~ msgstr "Készítsen biztonsági másolatot előnézethez" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Gyors ED2K linkkezelő mutatása" #~ msgid "Webserver Parameters" #~ msgstr "Webkiszolgáló tulajdonságai" #~ msgid "Webserver port" #~ msgstr "Webkiszolgáló port" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "UPnP port továbbítás engedélyezése a webkiszolgáló portján" #~ msgid "Webserver UPnP TCP port" #~ msgstr "Webkiszolgáló UPnP TCP port" #~ msgid "Serverlist" #~ msgstr "Kiszolgáló lista" #~ msgid "Manual Server Add : Name" #~ msgstr "Kézi kiszolgálófelvétel : Név" #~ msgid "No One" #~ msgstr "Senki" #~ msgid "Speed Limits:" #~ msgstr "Sebesség korlátok:" #~ msgid "Download Speed: %.1f" #~ msgstr "Letöltési sebesség: %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "Feltöltési sebesség: %.1f" #~ msgid "TCP Port: %d" #~ msgstr "TCP Port: %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "TCP Port: Nem áll készen" #~ msgid "UDP Port: %d" #~ msgstr "UDP Port: %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "UDP Port: Nem áll készen" #~ msgid "Shared Files: %d" #~ msgstr "Megosztott fájlok: %d" #~ msgid "Queued Clients: %d" #~ msgstr "Várólistás kliensek: %d" #~ msgid "Upload Limit" #~ msgstr "Feltöltési korlát" #~ msgid "Download Limit" #~ msgstr "Letöltési korlát" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "Nem található kiszolgálólista-hivatkozás bejegyzés az 'addresses.dat' " #~ "fájlban. Kérlek érvényes kiszolgálólista-hivatkozást illessz be ebbe a " #~ "fájlba, hogy automatikusan frissüljön a kiszolgálólista" #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "" #~ "Figyelem, érvénytelen URL lett megadva a kiszolgálók automatikus " #~ "frissítéséhez: %s" #~ msgid "webserver running on pid %d" #~ msgstr "web kiszolgáló fut, pid=%d" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "A webkiszolgáló automatikus indítását kérte, de az amuleweb futtatható " #~ "állomány nem található. Kérem installálja fel aMule webkiszolgálót " #~ "tartalmazó csomagot, vagy fordítsa az aMule-t a --enable-webserver " #~ "opcióval, és futtassa a 'make install' parancsot." #~ msgid "Disconnected from ED2K" #~ msgstr "Leválasztva az ED2K-ról" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "" #~ "Barátok listáját tartalmazó 'emfriends.met' fájl olvasáshoz történő " #~ "megnyitása sikertelen!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "" #~ "Barátok listáját tartalmazó 'emfriends.met' fájl íráshoz történő " #~ "megnyitása sikertelen!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "HIBA: Hiba a részfájl megnyitásánál)" #~ msgid "Mb" #~ msgstr "Mb" #~ msgid "Can't create web socket thread\n" #~ msgstr "Nem lehet web kapcsolódási szálat létesíteni\n" #~ msgid "Web Server: Started\n" #~ msgstr "Web kiszolgáló: elindítva\n" #~ msgid "Not Supported" #~ msgstr "Nem támogatott" #~ msgid "LowID: %u (%.2f%% Total %.2f%% Known)" #~ msgstr "LowID: %u (%.2f%% Összesen %2f%% Ismert)" #~ msgid "SecIdent On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgstr "SecIdent Be/Ki: %u (%.2f%%) : %u (%.2f%%)" #~ msgid "Browse wav" #~ msgstr "Wav fájlok böngészése" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "wav fájl (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "Nincs megjegyzés(ek)" #~ msgid "" #~ "Note: These values are\n" #~ "only used for statistics." #~ msgstr "" #~ "Ezeket az értékeket csak\n" #~ "a statisztikához használom." #~ msgid "Notifications" #~ msgstr "Üzenetek" #~ msgid "Messages popup" #~ msgstr "Felugró üzenetek" #~ msgid "Use sound" #~ msgstr "Hang használata" #~ msgid "Pop out when :" #~ msgstr "Felugró üzenet :" #~ msgid "New entry on log" #~ msgstr "Új Napló bejegyzéskor" #~ msgid "Starts a new chat session" #~ msgstr "Új csevegés indításakor" #~ msgid "A new chat message is received" #~ msgstr "Új chat üzenet érkezésekor" #~ msgid "A download is added or finished" #~ msgstr "Letöltés hozzáadásakor vagy befejezezésekor" #~ msgid "New aMule version detected" #~ msgstr "Új aMule verzió észlelésekor" #~ msgid "Urgent OOD, serverconnection lost" #~ msgstr "Sürgős OOD, a kiszolgálókapcsolat megszakadt" #~ msgid "Notify by Mail" #~ msgstr "Értesítés e-mail-ben" #~ msgid "Send an Email when transfer complete." #~ msgstr "Email küldése, ha a letöltés befejeződött." #~ msgid "SMTP server :" #~ msgstr "SMTP kiszolgáló :" #~ msgid "Email Address :" #~ msgstr "E-mail cím :" #~ msgid ":" #~ msgstr ":" #~ msgid "" #~ "The selected locale seems not to be installed on your box\n" #~ "You must generate it to use this language.\n" #~ "A good start on linux systems is the file /etc/locale.gen and the package " #~ "'locales'\n" #~ "Good luck!\n" #~ "(Note: I'll try to set it anyway)" #~ msgstr "" #~ "A kiválasztott nyelvi beállítás úgy látszik nem lett feltelepítve a " #~ "gépedre\n" #~ "Létre kell hoznod először, hogy ezen a nyelven is használható legyen.\n" #~ "Jó kezdet linuxon az /etc/locale.gen fájl és a 'locales' csomag\n" #~ "Sok szerencsét!\n" #~ "(Megjegyzés: Mimdenesetre megpróbálom ezt beállítani)" #~ msgid "Never show this again" #~ msgstr "Ne jelenítse meg többé" #~ msgid "Enable/Disable" #~ msgstr "Engedélyezés/Tiltás" #~ msgid "You can't update server.met from remote GUI yet." #~ msgstr "" #~ "A távoli felületről még nem lehet a server.met állományt frissíteni." #~ msgid "Disconnect from " #~ msgstr "Szétkapcsolás ettől: " #~ msgid "current server" #~ msgstr "aktuális kiszolgáló" #~ msgid " and " #~ msgstr " és " #~ msgid "Disconnect from any server and/or Kad" #~ msgstr "Leválaszt minden kiszolgálóról és/vagy a Kad-ról" #~ msgid " [" #~ msgstr " [" #~ msgid " | Kad: " #~ msgstr " | Kad: " #~ msgid "TCP Flags" #~ msgstr "TCP jelek" #~ msgid "UDP Flags" #~ msgstr "UDP jelek" #~ msgid "Copy ED2k link(s) to clipboard" #~ msgstr "ED2k link(ek) másolása a vágólapra" #~ msgid "Client requests %u" #~ msgstr "A kliens %u" #~ msgid "File block %u-%u (%d bytes):" #~ msgstr "fájl blokk-ot kér %u-%u (%d bájt):" #~ msgid "Client request is invalid!" #~ msgstr "A kliens kérése érvénytelen!" #~ msgid "Client request is invalid! %i / %i" #~ msgstr "A kliens kérése érvénytelen! %i / %i" #~ msgid "Command: %s" #~ msgstr "Parancs: %s" #~ msgid "Unable to open %s file - using %s file." #~ msgstr "Nem lehet megnyitni a %s fájlt - a %s fájlt használom. " #~ msgid "Warning: known.met does not exist." #~ msgstr "Figyelem: a known.met fájl nem létezik." #~ msgid "" #~ "CSharedFileList::FindSharedFiles: Removing %s from shared directory list: " #~ "directory not found." #~ msgstr "" #~ "CSharedFileList::FindSharedFiles: '%s' eltávolítása a megosztott " #~ "könyvtárak listájáról: könyvtár nem található." #~ msgid "Waiting for subprocess termination failed" #~ msgstr "Al-folyamat befejezésére várakozás sikertelen" #~ msgid "doesn't work" #~ msgstr "nem működik" #~ msgid "remote gui" #~ msgstr "távoli felület" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "Hiba: Biztonsági másolat betöltése sikertelen. Keress megoldást a http://" #~ "forum.amule.org-on a .part.met fájl helyreállítására" #~ msgid "" #~ "Error: Backup part.met file is 0 size! Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "Hiba: A part.met fájl biztonsági másolata 0 méretű. A http://forum.amule." #~ "org-on kereshetsz a .part.met fájl helyreállításához megoldást" #~ msgid "Error: part.met backup file is 0 size: %s ==> %s" #~ msgstr "Hiba: part.met biztonsági másolata 0 méretű: %s ==> %s" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " Website: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contact: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ " Part of aMule is based on \n" #~ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr "" #~ "'Minden-platform' p2p kliens az eMule alapján \n" #~ "\n" #~ "Weboldal: http://www.amule.org \n" #~ "Fórum: http://forum.amule.org \n" #~ "GYIK: http://wiki.amule.org \n" #~ "\n" #~ "Kapcsolat: admin@amule.org (adminisztratív ügyek) \n" #~ "Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ "Az aMule részben ez alapján \n" #~ "Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ "Copyright (C) 2002 Petar Maymunkov\n" #~ "http://kademlia.scs.cs.nyu.edu\n" #~ msgid "WARNING: You have recieved Low-ID!" #~ msgstr "FIGYELMEZTETÉS: Low-ID-t kaptál!" #, fuzzy #~ msgid "Masterhashes of known files have been loaded." #~ msgstr "AICH szál: Mester hash-ek az ismert fájlokhoz betöltve." #, fuzzy #~ msgid "Error while reading Kad contacts - 0 entries" #~ msgstr "IO hiba a known.met fájl olvasása közben: %s" #, fuzzy #~ msgid "Buddy address: " #~ msgstr "IP-cím:" #~ msgid "Client Identification:" #~ msgstr "Kliens azonosítás:" #~ msgid "" #~ "Secure Identification uses a handshake approch to safely identify clients " #~ "for use with the credit system." #~ msgstr "" #~ "A biztonságos azonosítás egy handshake (kézfogás) eljárást használ a " #~ "kilensek biztonságos azonosításához a kredit rendszer használatához." #~ msgid "Sources Dropping" #~ msgstr "Forrás-kihagyás" #~ msgid "Source Dropping" #~ msgstr "Forrás-kihagyás" #~ msgid "Drop sources" #~ msgstr "Források kihagyása" #~ msgid "Send sources to any other file before dropping (High CPU)" #~ msgstr "" #~ "Források átadása bármely másik fájlnak kihagyás előtt (Erős CPU-t igényel)" #~ msgid "Sources with no needed file-parts." #~ msgstr "Hiányzó fájlrészlettel nem rendelkező források" #~ msgid "Full Queue Sources Handling" #~ msgstr "Teli várólistás források kezelése" #~ msgid "Enable auto drop Full Queue Sources" #~ msgstr "Teli várólistás források automatikus kihagyásának engedélyezése" #~ msgid "High Queue Rating Sources Handling" #~ msgstr "Magas várólistás források kezelése" #~ msgid "Enable auto drop High Queue Rating Sources" #~ msgstr "Magas várólistás források automatikus kihagyásának engedélyezése" #~ msgid "High Queue Rating value" #~ msgstr "Magas várólistás értéke" #~ msgid "(Min 300 / Max 3000)" #~ msgstr "(Min 300 / Max 3000)" #~ msgid "Auto Drop Sources Timer" #~ msgstr "Automatikus forráskihagyás időzítő" #~ msgid "Timer (in secs)" #~ msgstr "Időzítés (mp-ben):" #~ msgid "(Min 60 / 3600 Max)" #~ msgstr "(Min 60 / 3600 Max)" #~ msgid "Drop No Needed Sources now" #~ msgstr "Hiányzó fájlrésszel nem rendelkező források (HFNRF) kihagyása most" #~ msgid "Drop Full Queue Sources now" #~ msgstr "Teli várólistás források (VTF) kihagyása most" #~ msgid "Drop High Queue Rating Sources now" #~ msgstr "Magas Várólistás Források (MVF) kihagyása most" #~ msgid "Clean Up Sources now (NNS, FQS && HQRS)" #~ msgstr "Források rendbetétele most (HFNRF, VTF &és MVF)" #~ msgid "English (U.S.)" #~ msgstr "Angol (Amerikai)" #~ msgid "Spanish (Mexican)" #~ msgstr "Spanyol (Mexikói)" #, fuzzy #~ msgid "Sources: %u" #~ msgstr "Források:" #, fuzzy #~ msgid "Client: aMule %s" #~ msgstr "Kliens: aMule" #, fuzzy #~ msgid "File Name: %s" #~ msgstr "Fájlnév:" #, fuzzy #~ msgid "File size: %s" #~ msgstr "Fájlméret:" #, fuzzy #~ msgid "Download: %s" #~ msgstr "Letöltés: " #, fuzzy #~ msgid "Complete Sources: %u" #~ msgstr "Komplett források száma:" #, fuzzy #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " Website: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contact: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2006 aMule Team \n" #~ "\n" #~ " Part of aMule is based on \n" #~ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr "" #~ "aMule - 'több platformos' p2p kliens eMule alapokon.\n" #~ "\n" #~ " Weboldal: http://www.amule.org \n" #~ " Fórum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Kapcsolat: admin@amule.org (adminisztratív dolgok) \n" #~ " Copyright (C) 2003-2004 aMule Project \n" #~ msgid "Copy ED2k link to clipboard (Hostname)" #~ msgstr "ED2K link másolása a vágólapra (Host név)" #~ msgid "Connecting to %s (%s - %s:%i)" #~ msgstr "Kapcsolódás %s-hez (%s - %s:%i)" #~ msgid "Minimize to trayicon" #~ msgstr "Minimalizálás a tálcára" #~ msgid "" #~ "Enabling this will make aMule minimize to the system-tray, rather than " #~ "the taskbar." #~ msgstr "" #~ "Engedélyezve a tálca helyett a rendszertálcára fogja minimalizálni az " #~ "aMule-t." #~ msgid "Browse skin file" #~ msgstr "Skin fájlok böngészése" #~ msgid "Use skin file to set aMule bitmaps." #~ msgstr "Téma fájl használata az aMule grafikájának beállításához." #~ msgid "Skin file:" #~ msgstr "Téma fájl:" #, fuzzy #~ msgid "ExternalConn: adding ed2k link '%s'." #~ msgstr "ExternalConn: ED2k hivatkozás nem értelmezhető: '%s'." #~ msgid "theApp.serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp.serverlist->GetServerByAddress() returned NULL" #~ msgid "Skin file name is empty - loading defaults" #~ msgstr "Téma fájl neve hiányzik - alapértelmezés betöltése" #~ msgid "Skin file %s does not exist - loading defaults" #~ msgstr "Téma fájl %s nem létezik - alapértelmezés betöltése" #, fuzzy #~ msgid "Turn IP filtering on." #~ msgstr "IP-szűrés" #, fuzzy #~ msgid "Get IPFilter state." #~ msgstr "IP szűrő %s.\n" #~ msgid "Enable IP-Filtering" #~ msgstr "IP-szűrés engedélyezése" #~ msgid "" #~ "Enable filtering of the IPs defined in the file ~/.aMule/ipfilter.dat." #~ msgstr "" #~ "~/.aMule/ipfilter.dat fájlban meghatározott IP-k szűrésének engedélyezése" #~ msgid "ED2K Link Handler" #~ msgstr "ED2k hivatkozás-kezelő" #~ msgid "Local Search" #~ msgstr "Helyi keresés" #~ msgid "Global Search" #~ msgstr "Globális keresés" #~ msgid "FileHash (WWW)" #~ msgstr "FileHash (WWW)" #, fuzzy #~ msgid "Enable command execution" #~ msgstr "Hitelesítés engedélyezése" #~ msgid "Socks5" #~ msgstr "Socks5" #~ msgid "Socks4" #~ msgstr "Socks4" #, fuzzy #~ msgid "Failed to execute on-completion command. Template is: %s" #~ msgstr "A '%s' sablon betöltése sikertelen\n" #~ msgid "WARNING: aMule is stopped !" #~ msgstr "FIGYELMEZTETÉS: aMule leállítva !" #~ msgid " is STOPPED !" #~ msgstr " LEÁLLÍTVA !" #, fuzzy #~ msgid "Index file not found: bad template\n" #~ msgstr "A '%s' sablon betöltése sikertelen\n" #~ msgid "" #~ "WARNING: A file with that name already exists, the file has been renamed" #~ msgstr "" #~ "FIGYELMEZTETÉS: Egy fájl már létezik ezzel a névvel, a fájl átnevezésre " #~ "került" #~ msgid "WARNING: Failed to delete %s.seeds" #~ msgstr "FIGYELMEZTETÉS: %s.seeds törlése sikertelen" #~ msgid "\tStopped" #~ msgstr "\tMegállítva" #~ msgid "\tRemoved from shared" #~ msgstr "\tEltávolítva a megosztásból" #~ msgid "\tRemoved from download queue" #~ msgstr "\tEltávolítva a letöltési listából" #~ msgid "\tRemoved transferwnd" #~ msgstr "\tEltávolítva az átvitel ablakból" #~ msgid "\tClosed" #~ msgstr "\tBezárva" #~ msgid "\tFailed to delete '%s'" #~ msgstr "\t'%s' törlése sikertelen" #~ msgid "\tRemoved .part.met" #~ msgstr "\t.part.met eltávolítva" #~ msgid "Failed to delete '%s'" #~ msgstr "'%s' törlése sikertelen" #~ msgid "\tRemoved .part" #~ msgstr "\t.part eltávolítva" #~ msgid "\tRemoved .BAK" #~ msgstr "\t.BAK eltávolítva" #~ msgid "\tRemoved .seeds" #~ msgstr "\t.seeds eltávolítva" #~ msgid "Done" #~ msgstr "Kész" #, fuzzy #~ msgid "%s: Expected part-hash: %s" #~ msgstr "Várt rész-hash: %s" #, fuzzy #~ msgid "%s: Actual part-hash: %s" #~ msgstr "Tényleges rész-hash: %s" #, fuzzy #~ msgid "Info not Available" #~ msgstr "Nem elérhető" #~ msgid "Hasher: Creating new thread." #~ msgstr "Hasher: Új szál létrehozása." #~ msgid "Hasher: Signaling for remaining threads to terminate." #~ msgstr "Hasher: A megmaradt szálak felszólítása a befejezésre." #~ msgid "Hasher: No files on queue, stopping thread." #~ msgstr "Hasher: Nincs fájl a listán, szál leállítása." #~ msgid "Hasher: Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Hasher: MD4 és AICH hash létrehozása a '%s' fájlhoz." #, fuzzy #~ msgid "Hasher: Starting to create MD4 hash for file: %s" #~ msgstr "Hasher: MD4 tördelőalgoritmus létrehozása ehhez a fájlhoz:" #~ msgid "Hasher: Finished hashing file: %s" #~ msgstr "Hasher: %s újrahash-elése befejeződött" #~ msgid "Hasher: A thread has died." #~ msgstr "Hasher: Egy szál meghalt." #~ msgid "Client %s on IP:Port %s:%d using %s" #~ msgstr "Kliens: %s a(z) %s:%d IP címen és porton, %s-t használ" #, fuzzy #~ msgid "Connection to remote aMule is lost. Exiting now." #~ msgstr "Kapcsolódás a távol aMule-hez" #, fuzzy #~ msgid "Error: connection lost" #~ msgstr "Kapcsolat megszakadt" #~ msgid "aMule Tray Menu Info" #~ msgstr "aMule Tálca menü Infó" #~ msgid "Disconnect from server" #~ msgstr "Leválaszt a kiszolgálóról" #~ msgid "Connect to any server" #~ msgstr "Kapcsolódás bármelyik kiszolgálóhoz" #~ msgid "aMule for Linux" #~ msgstr "aMule for Linux" #, fuzzy #~ msgid "Loading ipfilter.dat files." #~ msgstr "server.met fájl betöltése: %s" #~ msgid "AICH Thread: Signaling for thread to terminate." #~ msgstr "AICH szál: A szál felszólítása a befejezésre." #~ msgid "AICH Thread: Terminated." #~ msgstr "AICH szál: Befejezve." #~ msgid "AICH Thread: Syncronization thread started." #~ msgstr "AICH szál: Szinkronizációs szál elindítva." #~ msgid "AICH Thread: Starting to hash files. %li files found." #~ msgstr "AICH szál: Elkezdem a fájlok hash-elését: %li fájlt találtam." #~ msgid "AICH Thread: Hashing file: %s, total files left: %li" #~ msgstr "AICH szál: File hash-elése: %s, összesen maradt: %li" #~ msgid "AICH Thread: Hashing completed." #~ msgstr "AICH szál: Hash-elés befejezve." #~ msgid "AICH Thread: No new files found." #~ msgstr "AICH szál: Nem találtam új fájlt." #~ msgid "Desktop integration" #~ msgstr "Munkaasztal integráció" #~ msgid "Get Razorback 2's stats for this file" #~ msgstr "Razorback 2 statisztikák ehhez a fájlhoz" #~ msgid "Copy ED2k link to clipboard (&HTML)" #~ msgstr "ED2k link másolása a vágólapra (&HTML)" #~ msgid "" #~ "For system tray integration to work,\n" #~ "you must specify which desktop you are using.\n" #~ "You can change this later from preferences." #~ msgstr "" #~ "A rendszertálcával történő integrációhoz\n" #~ "meg kell adod, hogy melyik GUI felületett használja.\n" #~ "Ezt később is megváltoztathatod a beállítások menüpontban." #~ msgid "Gnome 2.x (or other XEMBED compatible)" #~ msgstr "Gnome 2.x (vagy más XEMBED kompatibilis)" #~ msgid "KDE 3.x" #~ msgstr "KDE 3.x" #~ msgid "KDE 2.x / Gnome 1.2 " #~ msgstr "KDE 2.x / Gnome 1.2 " #~ msgid "No systray integration, please" #~ msgstr "Nem kérek integrációt a rendszertálcával" #~ msgid "Desktop" #~ msgstr "Munkaasztal" #~ msgid "Jugle (WWW)" #~ msgstr "Jugle (WWW)" #~ msgid "Downloadlist doubleclick to expand" #~ msgstr "Letöltési lista lenyitása dupla-kattintással" #~ msgid "" #~ "If enabled, it is possible to display the sources associated with " #~ "downloads by double-clicking on them." #~ msgstr "" #~ "Ha engedélyezed, a letöltésre történő dupla-klikk esetén láthatod a " #~ "letöltési forrásokat." #~ msgid "Select Window Manager" #~ msgstr "Válassz ablakkezelőt" #~ msgid "" #~ "Click here to select the type of systray integration you wish aMule to " #~ "use." #~ msgstr "" #~ "Kattints ide a rendszerrel történő integritás típusának kiválasztásához." #~ msgid "Save 5 sources on rare files (< 20 sources)" #~ msgstr "5 forrás mentése a ritka fájloknál (< 20 forrás)" #~ msgid "Default Permissions" #~ msgstr "Alapértelmezett fájl jogosultságok" #~ msgid "Owner permissions, must at least be read/write'able." #~ msgstr "" #~ "A tulajdonos hozzáférési jogainak legalább olvasás/írás kell lennie." #~ msgid "Group permissions." #~ msgstr "Csoport jogosultságok." #~ msgid "Other permissions." #~ msgstr "Egyéb jogosultságok." #~ msgid "Copy ED2k link to clipboard (HTML)" #~ msgstr "ED2K link másolása a vágólapra (HTML)" #~ msgid "aMule is not connected! Cannot do search." #~ msgstr "Nem vagy csatlakozva kiszolgálóhoz! Így nem tudsz keresni." #~ msgid "Language change will not be applied until aMule is restarted." #~ msgstr "A nyelvváltoztatás az aMule újraindításáig nem lép életbe." #~ msgid "Failed to open shared file (%s), rechecking list of shared files." #~ msgstr "" #~ "Nem tudtam megnyitni a megosztott fájlt (%s), megosztott fájlok " #~ "listájának újraellenőrzése." #, fuzzy #~ msgid "Client requests invalid %u " #~ msgstr "A kliens érvénytelen %u." #~ msgid "" #~ "Copied old ~/.xMule config and credit files to ~/.aMule\n" #~ "However, be sure NOT to remove .xMule if your Incoming / Temp folders are " #~ "still there ;)" #~ msgstr "" #~ "A régi ~/.xMule config és kredit fájlok átmásolásra kerültek ide ~/." #~ "aMule\n" #~ "Mindamellett, NE távolítsd el az .xMule könyvtárat, ha a Bejövő / " #~ "Ideiglenes könyvtárak még ott vannak ;)" #~ msgid "" #~ "Temp dir is placed on a FAT32 partition. Disabling chmod to avoid useless " #~ "warnings." #~ msgstr "" #~ "Az Ideiglenes könyvtár egy FAT32-es partíción van. Chmod letiltásra kerül " #~ "a használhatatlan figyelmeztetések elkerülése végett." #~ msgid "" #~ "Incoming dir is placed on a FAT32 partition. Disabling chmod to avoid " #~ "useless warnings." #~ msgstr "" #~ "A Bejövő könyvtár egy FAT32-es partíción van. Chmod letiltásra kerül a " #~ "használhatatlan figyelmeztetések elkerülése végett." #~ msgid "" #~ "ERROR: amule daemon is useless when external connections disabled. Change " #~ "configuration either from GUI or by editing the config file" #~ msgstr "" #~ "HIBA: Az aMule démon használhatatlan, ha a távoli elérés le van tiltva. " #~ "Változasd meg a beállításokat vagy a grafikus aMule porgramból, vagy a " #~ "konfig fájl szerkesztésével." #~ msgid "Disconnect from current server" #~ msgstr "Leválasztás a jelenlegi kiszolgálóról" #~ msgid "Connected to amule at %s" #~ msgstr "Kapcsolat létrejött aMule-lal %s-kor" #~ msgid "Connection Failed. Unable to connect to the specified host" #~ msgstr "Kapcsolódás sikertelen. A megadott host-ra nem lehet kapcsolódni" #~ msgid "aMule O.S. info is: %s" #~ msgstr "aMule operációs rendszer információ: %s" #~ msgid "Download:" #~ msgstr "Letöltés:" #~ msgid "jugle.net Fake Check" #~ msgstr "jugle.net-es hamisítvány ellenőrzés" #~ msgid "'Donkey Fakes' Fake Check" #~ msgstr "'Donkey Fakes'-es hamisítvány ellenőrzés" #~ msgid "FakeCheck" #~ msgstr "Hamisítvány ellenőrzése" #~ msgid "You are already trying to download the file " #~ msgstr "Már megkísérelted letölteni ezt a fájlt " #~ msgid "ExternalConn: failed to Create thread" #~ msgstr "ExternalConn: a szál létrehozás sikertelen" #~ msgid "Invalid EC packet received" #~ msgstr "Érvénytelen EC csomag érkezett" #~ msgid "" #~ "Incorrect CVSDATE. Please run core and remote from the same CVS tarball." #~ msgstr "" #~ "Nem egyező CVSDATE. Futtassa az aMule-t és a távoli alkalmazást " #~ "ugyanabból a CVS verzióból." #~ msgid "ExternalConnClientThread: Failed to Create thread." #~ msgstr "ExternalConnClientThread: szál létrehozása sikertelen." #~ msgid "ExternalConnClientThread: Connection closed." #~ msgstr "ExternalConnClientThread: kapcsolat lezárva." #~ msgid "Now, doing connection....\n" #~ msgstr "Kapcsolat létesítése folyamatban....\n" #~ msgid "Using host '%s' port: %d\n" #~ msgstr "Használt host '%s' port: %d\n" #~ msgid "Trying to connect (timeout = 10 sec)...\n" #~ msgstr "Kapcsolódási kísérlet (időtúllépés = 10 mp)...\n" #~ msgid "ExternalConn: Access denied because: %s\n" #~ msgstr "ExternalConn: Hozzáférés megtagadva: %s\n" #~ msgid "ExternalConn: Access denied.\n" #~ msgstr "ExternalConn: Hozzáférés megtagadva.\n" #~ msgid "ExternalConn: Bad reply from server. Connection closed.\n" #~ msgstr "ExternalConn: Rossz válasz a kiszolgálótól. Kapcsolat lezárva.\n" #~ msgid "Succeeded! Connection established to aMule %s\n" #~ msgstr "Sikerült! Kapcsolat létrejött az aMule %s-val\n" #~ msgid "Succeeded! Connection established.\n" #~ msgstr "Sikerült! Kapcsolat létrejött.\n" #~ msgid "A socket error occured during authentication. Exiting.\n" #~ msgstr "Egy socket hiba lépet fel a hitelesítésnél. Kilépés.\n" #~ msgid "Failed to read corrupted friendlist file 'emfriends.met'!" #~ msgstr "" #~ "Nem tudom olvasni a sérült 'emfriends.met' fájlt, mely a barátok listáját " #~ "tartlmazza!" #~ msgid "Loaded ipfilter with %d new IP addresses." #~ msgstr "IP szűrő betöltve %d új IP címmel." #~ msgid "" #~ "User %s (%u) requested your requested your sharedfiles-list -> Accepted" #~ msgstr "" #~ "A(z) %s (%u) felhasználó lekérdezte a megosztott fájljaid listáját -> " #~ "Elfogadva" #~ msgid "" #~ "User %s (%u) requested your requested your sharedfiles-list -> Denied" #~ msgstr "" #~ "A(z) %s (%u) felhasználó lekérdezte a megosztott fájljaid listáját -> " #~ "Megtagadva" #~ msgid "CListenSocket: Cannot create thread" #~ msgstr "CListenSocket: szál létrehozása sikertelen" #~ msgid "CSocketGlobalThread: Call to Create failed" #~ msgstr "CSocketGlobalThread: Create meghívása sikertelen" #~ msgid "CSocketGlobalThread: Exited" #~ msgstr "CSocketGlobalThread: kilépett" #~ msgid "" #~ "\n" #~ "Speed Limits:\n" #~ msgstr "" #~ "\n" #~ "Sebesség korlátok:\n" #~ msgid "UL: None, " #~ msgstr "Fel: nincs, " #~ msgid "UL: %u, " #~ msgstr "Fel: %u, " #~ msgid "Nickname: " #~ msgstr "Becenév: " #~ msgid "IP: " #~ msgstr "IP: " #~ msgid "UDP Port: " #~ msgstr "UDP Port: " #~ msgid "Uptime: " #~ msgstr "Aktivitási idő: " #~ msgid "Shared Files: " #~ msgstr "Megosztott fájlok: " #~ msgid "Queued Clients: " #~ msgstr "Várólistás kliensek: " #~ msgid "Total DL: " #~ msgstr "Összes letöltés: " #~ msgid "Total UL: " #~ msgstr "Összes feltöltés: " #~ msgid "" #~ "switch download list to clients you're downloading from, with files also " #~ "(some day)" #~ msgstr "" #~ "letöltési lista elküldése azoknak a klienseknek, amelyektől letöltesz " #~ "(néhány nap)" #~ msgid " / (" #~ msgstr " / (" #~ msgid ")" #~ msgstr ")" #~ msgid "(" #~ msgstr "(" #~ msgid "Fake Check" #~ msgstr "Hamisítvány ellenőrzése" #~ msgid "my browser" #~ msgstr "böngészőm" #~ msgid "Client UDP port: 4665" #~ msgstr "Kliens UDP port: 4665" #~ msgid "Extract Meta Data Tags" #~ msgstr "Meta adat azonosítók kicsomagolása" #~ msgid "Reduce Fragmentation" #~ msgstr "Töredezettség csökkentése" #~ msgid "Allocate full chunks for .part files" #~ msgstr "Teljes adatelemek kiosztása a .part fájloknak" #~ msgid "" #~ "Select this to allocate a full chunk each time data is received for it." #~ msgstr "" #~ "Válaszd ki ezt, az adatfogadással egyidejű teljes adatelem-kiosztáshoz." #~ msgid "Allocate full disk space for .part files" #~ msgstr "Teljes szabad lemezterület kiosztása a .part fájlokhoz" #~ msgid "" #~ "This option reduces fragmentation but slows down the part file creation " #~ "and will disable sparse files" #~ msgstr "" #~ "Ezzel a beállítással csökken a töredezettség, de lassul a rész fájlok " #~ "létrehozása és letiltódnak az elszórt fájlok" #~ msgid " Min Disk Space: " #~ msgstr " Min. szabad lemezterület: " #~ msgid "mplayer -idx" #~ msgstr "mplayer -idx" #~ msgid "Use TCP ports instead of unix local sockets" #~ msgstr "TCP portok használata helyi unix socket-ek helyett" #~ msgid "External TCP port" #~ msgstr "Külső TCP port" #~ msgid "http://www.srv1000.com/azz/server.met" #~ msgstr "http://www.srv1000.com/azz/server.met" #~ msgid "." #~ msgstr "." #~ msgid "localhost" #~ msgstr "localhost" #~ msgid "4712" #~ msgstr "4712" #~ msgid "amule" #~ msgstr "amule" #~ msgid "Servers List Window" #~ msgstr "Kiszolgáló-lista ablaka" #~ msgid "SharedFiles" #~ msgstr "Megosztott fájlok" #~ msgid "K" #~ msgstr "K" #~ msgid "Error: %s (%s) is corrupt." #~ msgstr "Hiba: %s (%s) sérült." #~ msgid "Error: %s is corrupt, unable to load file." #~ msgstr "Hiba: %s sérült, a fájl betöltése nem lehetséges." #~ msgid "Invalid versiontag in server.met (0x%x , size %i)!" #~ msgstr "" #~ "Érvénytelen verzió azonosító a server.met fájlban (0x%x , %i méret)!" #~ msgid "CServerSocketHandler: can not create my thread" #~ msgstr "CServerSocketHandler: nem lehet saját szálat létrehozni" #~ msgid "Unknown exception while processing packet from server!" #~ msgstr "" #~ "Ismeretlen megszakítás a kiszolgálóról történő adatok feldolgozásánál!" #~ msgid "WARNING! Sharing the following directory is not recommended: %s" #~ msgstr "FIGYELMEZTETÉS! A következő könyvtár megosztása nem ajánlott: %s" #~ msgid "Change this file's comment..." #~ msgstr "Ezen fájl megjegyzéseinek módosítása..." #~ msgid "Max Downloadrate Average (Session): %.2f kB/s" #~ msgstr "Max átlagos letöltési arány (folyamat): %.2f kB/s" #~ msgid "waiting for transfer..." #~ msgstr "várakozás az átvitelre..." #~ msgid "Max Connection Limit Reached: Never" #~ msgstr "Max kapcsolódási korlát elérve: Soha" #~ msgid "Session UL:DL Ratio (Total): Not available" #~ msgstr "Fel:Le töltési folyamat aránya (összesen): Nem elérhető" #~ msgid "Compatible: %i (%1.1f%%)" #~ msgstr "Kompatibilis: %i (%1.1f%%)" #~ msgid "HasSocket: %i (%1.1f%%)" #~ msgstr "HasSocket: %i (%1.1f%%)" #~ msgid "ClientID:" #~ msgstr "KliensID:" #~ msgid "ServerName:" #~ msgstr "Kiszolgáló Név:" #~ msgid "ServerIP:" #~ msgstr "Kiszolgáló IP:" #~ msgid "E&xit\tAlt-X" #~ msgstr "K&ilépés\tAlt-X" #~ msgid "Quit amulecmd" #~ msgstr "Kilépés amulecmd-ből" #~ msgid "&About...\tF1" #~ msgstr "&Névjegy...\tF1" #~ msgid "Show about dialog" #~ msgstr "Névjegy megjelenítése" #~ msgid "&File" #~ msgstr "&Fájl" #~ msgid "&Help" #~ msgstr "&Súgó" #~ msgid "" #~ "\n" #~ "Ok, exiting Text Client...\n" #~ msgstr "" #~ "\n" #~ "Ok, kilépés a szöveges kliensből...\n" #~ msgid "" #~ "amulecmd DLG version\n" #~ "Using %s\n" #~ "(c) aMule Dev Team" #~ msgstr "" #~ "amulecmd DLG verzió\n" #~ "Using %s\n" #~ "(c) aMule Dev Team" #~ msgid "About amulecmd" #~ msgstr "amulecmd Névjegy" #~ msgid "This command requieres an argument. Valid arguments: 'on', 'off'\n" #~ msgstr "" #~ "Ez a parancs argumentumot igényel. Érvényes argumentumok: 'on', 'off'\n" #~ msgid "" #~ "This command requieres an argument. Valid arguments: 'all', a number.\n" #~ msgstr "" #~ "Ez a parancs argumentumot igényel. Érvényes argumentumok: 'all', egy " #~ "szám.\n" #~ msgid "Hint: Use Show DL or Show UL\n" #~ msgstr "Javaslat: Használja a letöltés vagy feltöltés megjelenítését\n" #~ msgid "IPLevel parameter must be in the range of 0-255.\n" #~ msgstr "IP szint paraméterének 0-255 között kell lennie.\n" #~ msgid "Connected to %s %s " #~ msgstr "Kapcsolódva ehhez %s %s " #~ msgid "" #~ "\n" #~ "--------------------> Available commands (case insensitive): " #~ "<------------------\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "----------------> Elérhető parancsok (nagybetű érzéketlen): " #~ "<----------------\n" #~ "\n" #~ msgid "server IP" #~ msgstr "kiszolgáló IP" #~ msgid "Connect to given/random server. No warn if failed!\n" #~ msgstr "" #~ "Kapcsolódás adott/véletlenszerűen kiválasztott kiszolgálóhoz. Hiba esetén " #~ "nincs figyelmeztetés!\n" #~ msgid "Resume file number n (or 'all').\n" #~ msgstr "n. számú (vagy az összes) fájl letöltésének folytatása.\n" #~ msgid "Pauses file number n (or 'all').\n" #~ msgstr "n. számú (vagy az összes) fájl letöltésének szüneteltetése.\n" #~ msgid "Turn on/off amule IPFilter.\n" #~ msgstr "amule IP szűrő be/ki kapcsolása.\n" #~ msgid "level" #~ msgstr "szint" #~ msgid "ED2k_Link" #~ msgstr "Ed2k hivatkozás" #~ msgid "Adds (file or server) to aMule.\n" #~ msgstr " elküldése az aMule-nak.\n" #~ msgid "limit" #~ msgstr "korlát" #~ msgid "Sets maximum upload bandwidth.\n" #~ msgstr "Beállítja a maximális feltöltési sávszélességet.\n" #~ msgid "Exits aMulecmd.\n" #~ msgstr "Kilép az aMulecmd-ből.\n" #~ msgid "" #~ "\n" #~ "----------------------------> End of listing " #~ "<----------------------------------\n" #~ msgstr "" #~ "\n" #~ "----------------------------> Listázás vége " #~ "<----------------------------------\n" #~ msgid "Quit amuleweb" #~ msgstr "Kilépés amuleweb-ből" #~ msgid "" #~ "\n" #~ "Ok, exiting Web Client...\n" #~ msgstr "" #~ "\n" #~ "Ok, Web kliens bezárása...\n" #~ msgid "" #~ "amuleweb [DLG version]\n" #~ "Using %s\n" #~ "(c) aMule Dev Team" #~ msgstr "" #~ "amuleweb [DLG verzió]\n" #~ "Using %s\n" #~ "(c) aMule Dev Team" #~ msgid "About amuleweb" #~ msgstr "amuleweb Névjegy" #~ msgid "amuleweb DLG" #~ msgstr "amuleweb DLG" #~ msgid "FATAL ERROR: Cannot find template: %s" #~ msgstr "VÉGZETES HIBA: Nem találom a '%s' témát" #~ msgid "" #~ "\n" #~ "----------------> Help: Available commands (case insensitive): " #~ "<----------------\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "----------------> Súgó: Elérhető parancsok (nagybetű érzéketlen): " #~ "<----------------\n" #~ "\n" #~ msgid "Exits aMuleWeb.\n" #~ msgstr "aMuleWeb bezárása.\n" #~ msgid "" #~ "\n" #~ "Use 'Help' for command list\n" #~ "\n" #~ msgstr "" #~ "\n" #~ "A parancslistához használja a --help paramétert\n" #~ "\n" #~ msgid "Very Low" #~ msgstr "Nagyon alacsony" #~ msgid " Auto" #~ msgstr "Automatikus" #~ msgid "Web Server: Restarted\n" #~ msgstr "Web kiszolgáló: újraindítva\n" #~ msgid "Web Server: Stopped\n" #~ msgstr "Web kiszolgáló: leállítva\n" #~ msgid "Web Server: not running\n" #~ msgstr "Web kiszolgáló: nem fut\n" #~ msgid "Can't load templates: Can't open file %s" #~ msgstr "A sablont nem lehet betölteni: A '%s' fájlt nem lehet megnyitni" #~ msgid "" #~ "Can't find template version number!\n" #~ "Please replace aMule.tmpl with a newer version!" #~ msgstr "" #~ "A sablon verziószáma nem található!\n" #~ "Kérlek cseréld ki az aMule.tmpl fájlt egy újabbra!" #~ msgid "Access denied!" #~ msgstr "Hozzáférés megtagadva!" #~ msgid "Web Control Panel" #~ msgstr "Web Vezérlőpanel" #~ msgid "ED2K Link(s)" #~ msgstr "ED2K Link(ek)" #~ msgid "Log" #~ msgstr "Napló" #~ msgid "Serverinfo" #~ msgstr "Kiszolgáló Infó" #~ msgid "Debug Log" #~ msgstr "Hibakeresés napló" #~ msgid "Logout" #~ msgstr "Kijelentkezés" #~ msgid "IP" #~ msgstr "IP" #~ msgid "users" #~ msgstr "felhasználók" #~ msgid "files" #~ msgstr "fájlok" #~ msgid "Actions" #~ msgstr "Műveletek" #~ msgid "Are you sure to remove this server from list?" #~ msgstr "Biztos benne, hogy eltávolítja ezt a kiszolgálót a listáról?" #~ msgid "This ed2k link is invalid (%s)" #~ msgstr "Ez az ed2k hivatkozás érvénytelen (%s)" #~ msgid "Got no response from aMule." #~ msgstr "Nem jött válasz az aMule-től." #~ msgid "Downloaded total" #~ msgstr "Összesen letöltve" #~ msgid "Uploaded total" #~ msgstr "Összesen feltöltve" #~ msgid "Increase Priority" #~ msgstr "Prioritás növelése" #~ msgid "Decrease Priority" #~ msgstr "Prioritás csökkentése" #~ msgid "Internal error - no item in container" #~ msgstr "Belső hiba - nincs semmi a tárolóban" #~ msgid "Hide Queue" #~ msgstr "Várólista elrejtése" #~ msgid "Clear Completed" #~ msgstr "Befejezettek eltávolítása" #~ msgid "Time" #~ msgstr "Idő" #~ msgid "Refetch graph data" #~ msgstr "A grafikon adatainak újrakérése" #~ msgid "IP or Address" #~ msgstr "IP vagy Cím" #~ msgid "Name" #~ msgstr "Név" #~ msgid "Add to list" #~ msgstr "Hozzáad a listához" #~ msgid "URL" #~ msgstr "URL" #~ msgid "Web-based Search" #~ msgstr "Web-alapú keresés" #~ msgid "File Settings" #~ msgstr "Fájl tulajdonságok" #~ msgid "Max Sources Per File" #~ msgstr "Max forrás / fájl" #~ msgid "Max. Connections" #~ msgstr "Max. kapcsolatok" #~ msgid "Max. new connections / 5secs" #~ msgstr "Max új kapcsolat / 5 mp" #~ msgid "Gzip Compression" #~ msgstr "Gzip tömörítés" #~ msgid "Save traffic, especially in graphs." #~ msgstr "Forgalom mentése, főleg grafikonként." #~ msgid "Enable or disable the display of waiting queue in transfer page." #~ msgstr "" #~ "Várólistások megjelenítésének engedélyezése vagy letiltása az átvitel " #~ "oldalon." #~ msgid "Refresh-Time of Pages" #~ msgstr "Oldalak fissítési ideje" #~ msgid "Time in seconds (zero=disabled)" #~ msgstr "Idő mp-ben (0=letiltva)" #~ msgid "Statistics graphs' settings" #~ msgstr "Statisztikai grafikonok beállításai" #~ msgid "Graph height" #~ msgstr "A grafikon magassága" #~ msgid "Graph width" #~ msgstr "A grafikon szélessége" #~ msgid "pixels" #~ msgstr "képpont" #~ msgid "In the graph, each pixel represents" #~ msgstr "A grafikonban minden képpont" #~ msgid "Enter your password here" #~ msgstr "Add meg a jelszavad" #~ msgid "Connected " #~ msgstr "Csatlakozva" #~ msgid "Refetch Results" #~ msgstr "Eredmények újra lekérdezése" #~ msgid "Min Availability" #~ msgstr "Min. elérhetőség" #~ msgid "Method" #~ msgstr "Mód" #~ msgid "Global (Server)" #~ msgstr "Globális (Kiszolgáló)" amule_2.3.1+git20151120.0023527bc2.orig/po/insert-header.sin0000644000175000017500000000124012611472361021363 0ustar morphmorph# Sed script that inserts the file called HEADER before the header entry. # # At each occurrence of a line starting with "msgid ", we execute the following # commands. At the first occurrence, insert the file. At the following # occurrences, do nothing. The distinction between the first and the following # occurrences is achieved by looking at the hold space. /^msgid /{ x # Test if the hold space is empty. s/m/m/ ta # Yes it was empty. First occurrence. Read the file. r HEADER # Output the file's contents by reading the next line. But don't lose the # current line while doing this. g N bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } amule_2.3.1+git20151120.0023527bc2.orig/po/it.po0000644000175000017500000063713312611472361017112 0ustar morphmorph# translation of it_new.po to # Kry , 2004,2005. # ilbuio , 2004,2005. # AnonimoVeneziano , 2004. # GhePeU , 2004,2005. # BELiAL , 2007. # Vincenzo Reale , 2007. # Giuseppe Bilotta , 2007. # rik , 2008. # briga 2009. # Giuliano Manzitti 2010. # translation of it-cvs_beta.po to # translation of it-cvs.po to # translation of it2.po to # translation of it.po to # Italian language translation # translation of source_strings.po to # aMule i18n resource file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-11-02 15:22+0100\n" "Last-Translator: Giuliano Manzitti \n" "Language-Team: \n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "X-Poedit-Language: Italian\n" "X-Poedit-Country: ITALY\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Aggiungi amico" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Inserire un indirizzo IP e una porta validi!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informazione" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "L'hash utente specificato non è valido!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Impossibile aprire il file ED2Links." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "ATTENZIONE: non è possibile aggiungere te stesso come fonte di un link eD2k " "finché avrai un ID basso." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Uscita dall'applicazione..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Sto terminando l'istanza di amuleweb con pid `%ld' ... " #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Sto terminando l'istanza di amuleweb con pid `%ld' ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Fallito" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Chiusura core." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "Chiusura di aMule completa." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Risultati del debug della memoria per l'uscita da aMule:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "Configurazione EC" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Password stabilita, connessioni esterne abilitate." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "ATTENZIONE" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Le tue impostazioni di localizzazione sono state impostate a quelle " "predefinite dal sistema in conseguenza al cambio di configurazione. " "Spiacente." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Non hai alcun server nella lista dei server.\n" "Vuoi che aMule scarichi una lista ora?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Scaricamento della lista server" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "web server in esecuzione su pid %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Hai scelto di lanciare il web server all'avvio, ma il programma amuleweb non " "può essere eseguito. Installa il pacchetto aMule web server, o compila aMule " "con l'opzione --enable-webserver" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "ERRORE" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Impossibile aprire le porte sull'indirizzo specificato: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "La porta %u non è disponibile. Otterrai un ID basso\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "La porta %u non è disponibile!\n" "\n" "Otterrai un ID basso.\n" "\n" "Controlla le impostazioni di rete e verifica che la porta sia aperta in " "ingresso e in uscita." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Impossibile creare il file per la firma in linea" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Impossibile creare il file per la firma in linea di aMule" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "L'impostazione locale selezionata non sembra essere installata sul tuo " "computer (si tenterà ad impostarla in ogni caso)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "È la prima che volta che avvii aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Questa è una versione di prova, aggiornata quotidianamente, e\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "non garantiamo che essa non distrugga qualcosa, bruci la tua casa,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "o uccida il tuo cane. Ma *dovrebbe* essere comunque sicura.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Altre informazioni, supporto e nuove versioni possono essere trovate nella " "nostra homepage,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "www.aMule.org, o nel nostro canale IRC #aMule su irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Segnalare ogni bug su http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "La cartella scelta per contenere il file di firma in linea non è valida!\n" "La firma in linea sarà pertanto disabilitata fino a quando il problema non " "sarà stato risolto attraverso il pannello delle preferenze." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Notificato il server hostname" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Preallocazione spazio su disco per il file '%s' fallita: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "ERRORE: non posso aprire il file di log" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "ERRORE: il file di log è vuoto. Qualcosa non va." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Il file di log è stato cancellato" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Messaggio del server: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "Download saltato di %s, poichè il file richiesto non è il più recente." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Impossibile scaricare la lista dei nodi." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Impossibile aprire il file per il controllo della versione scaricato" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "File per il controllo della versione danneggiato" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Stai usando una versione non aggiornata di aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "La tua versione di aMule e' la %i.%i.%i e l'ultima è la %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "L'ultima versione è sempre disponibile su http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" "ATTENZIONE: La tua versione di aMuled e' obsoleta: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "La tua copia di aMule è aggiornata." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Impossibile scaricare il file per il controllo della versione" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Utenti: %s | File: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Utenti: E: %s K: %s | File: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Nessuna rete selezionata" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "con ID basso" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "con ID alto" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Connesso a %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Connessione in corso a %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Disconnesso dalla rete eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad avviato." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad arrestato." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Connesso alla rete Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Connesso alla rete Kad (firewalled)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Disconnesso dalla rete Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "La rete Kad non può essere utilizzata se la porta UDP è disattivata dalle " "opzioni." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Rete Kad disattivata dalle opzioni, non mi connetto." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ERRORE: il demone di aMule non può essere usato se le connessioni esterne " "sono disattivate. Per abilitare le connessioni esterne, puoi usare un aMule " "normale, far partire amuled con l'opzione --ec-config o impostare la voce " "\"AcceptExternalConnections\" a 1 nel file ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "ERRORE: Una password valida è richiesta per utilizzare connessioni esterne, " "ed il demone aMule non può essere usato senza connessioni esterne. Per " "lanciare il demone di aMule devi impostare il campo \"ECPassword\" nel file " "~/.aMule/amule.conf con un valore appropriato. Esegui amuled con il flag --" "ec-config per impostare la password. Per maggiori informazioni http://wiki." "amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - Timer d'avvio" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: forzato in background - arrivederci" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Impossibile creare il file Pid" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "ERRORE: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Questo è aMule %s basato su eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "In esecuzione su %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Visita http://www.amule.org per sapere se è disponibile una nuova versione." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ERRORE FATALE: Creazione Timer fallita" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Controllo remoto di aMule " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Snapshot:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "Client p2p multipiattaforma basato su eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Sito web: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Forum: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Contatti: admin@amule.org (questioni amministrative) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 aMule Team \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Parte di aMule è basata su \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Peer-to-peer routing basato sulla metrica XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Messaggio" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "Finestra di aMule distrutta" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Connessione in corso" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Connessione in corso" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Disconnesso" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Firewalled" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Connesso" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Connessione in corso" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Spento" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Annulla" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Ferma i tentativi di connessione in corso" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Disconnetti" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Disconnettiti dalla rete" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Connetti" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Connettiti alle rete" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Up: %.1f(%.1f) | Down: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Up: %.1f | Down: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Connesso)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Disconnesso)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Vuoi veramente uscire da %s?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Chiedi conferma prima di uscire" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Comando di avvio:" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- predefinita -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "La cartella delle skin '%s' non esiste" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "ATTENZIONE: impossibile aprire in lettura il file '%s' della skin" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Reti" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Finestra reti" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Ricerca" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Finestra ricerche" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Download" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Finestra Downloads" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "File condivisi" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Finestra file condivisi" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Messaggi" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Finestra messaggi" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistiche" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Finestra grafici e statistiche" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Preferenze" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Finestra Preferenze" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importazione" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Strumento per l'importazione dei partfile" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Informazioni" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Informazioni/Aiuto" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "rete eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Rete Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Nessuna rete" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "Controllo remoto di aMule" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "ERRORE FATALE: Creazione del Timer principale fallita" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Connessione ad aMule remoto" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "ERRORE FATALE: Creazione del Timer di interrogazione fallita" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Ciclo evento..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Connessione in corso..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Connessione fallita " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Gestore eventi GUI EC remota" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Qualcosa è andato storto" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Connessione Fallita. Impossibile connettersi a %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Connessione persa - aMule verrà chiuso." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Pronto" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Tutto" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Impossibile creare la directory '%s' per la categoria '%s', verrà mantenuta " "la directory '%s'." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Sconosciuto" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Impossibile ricevere i file condivisi dall'utente '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Ricerca amico per connessione con ID basso" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (falso eMule versione %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (falso eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (falso eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basato su eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Nickname: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Richiesto: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statistiche file per questa sessione: Accettata %d di %d richiesta %s " "trasferito\n" msgstr[1] "" "Statistiche file per questa sessione: Accettate %d di %d richieste, %s " "trasferiti\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statistiche file per tutte le sezioni: Accettata %d di %d richiesta, %s " "trasferita\n" msgstr[1] "" "Statistiche file per tutte le sezioni: accettate %d di %d richieste, %s " "trasferite\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Richiesto file sconosciuto" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Messaggio da '%s' (IP:%s) filtrato" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nuovo messaggio da '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "L'utente %s (%u) ha richiesto la lista dei file condivisi per una cartella " "inesistente '%s' -> richiesta ignorata" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "ATTENZIONE: %s non può essere aperto." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "ATTENZIONE: la lista dei file conosciuti è danneggiata, contiene " "un'intestazione non valida." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "Errore IO durante la lettura del file %s: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Errore nel salvataggio del file %s: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Inserisci Captcha" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Categoria" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nuova categoria" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Scegli una cartella per i file scaricati" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Devi specificare un nome per la categoria!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Devi specificare un percorso per la categoria!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Impossibile creare una cartella per i file in ingresso per questa categoria. " "Specifica un percorso valido!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Sessione di chat iniziata: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Connesso al client ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Connessione al client in corso ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Impossibile connettersi al client / Connessione persa ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" "*** Hai superato il controllo captcha e l'utente ha ricevuto il tuo " "messaggio. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** La tua risposta al captcha era errata ed il tuo messaggio è stato " "ignorato. Puoi richiedere un nuovo captcha inviando un nuovo messaggio. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Chat" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Chiudi scheda" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Chiudi tutte le schede" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Chiudi le altre schede" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Inserisci tra gli amici" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Il file dei crediti è stato caricato, %u client conosciuto" msgstr[1] "Il file dei crediti è stato caricato, %u client conosciuti" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Crediti scaduti per %u client!" msgstr[1] " - Crediti scaduti per %u client!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "" "Non è stato trovato il file 'cryptkey.dat', creazione del file in corso." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Dettagli client" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "ID basso" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "ID alto" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Attivato" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Supportato" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Non supportato" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Disattivato" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Connesso" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Disconnesso" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Non completo" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Cattivo" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Verificata - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Non disponibile" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "L'utente %s (%u) ha richiesto la lista dei file condivisi -> richiesta " "accettata" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "L'utente %s (%u) ha richiesto la lista dei file condivisi -> richiesta negata" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "L'utente %s (%u) ha richiesto la lista delle cartelle condivise -> richiesta " "accettata" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "L'utente %s (%u) ha richiesto la lista delle cartelle condivise -> richiesta " "negata" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "L'utente %s (%u) ha richiesto la lista dei file condivisi nella cartella '%" "s' -> richiesta accettata" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "L'utente %s (%u) ha richiesto la lista dei file condivisi nella cartella '%" "s' -> richiesta negata" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "L'utente %s (%u) condivide la cartella '%s'" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" "L'utente %s (%u) ha inviato una lista delle cartelle condivise non richiesta." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "L'utente %s (%u) ha inviato la lista dei file condivisi nella cartella '%s'" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "L'utente %s (%u) ha finito di inviare la lista dei file condivisi" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "L'utente %s (%u) ha inviato una lista di file condivisi non richiesta" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "L'utente %s (%u) ha negato l'accesso alla lista dei file e delle cartelle " "condivise" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Commenti file" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Nome utente" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Nome file" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Giudizio" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Commento" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Nessun commento" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u commento" msgstr[1] "%u commenti" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Client %s bannato per aver spedito %s dati corrotti di %s totali, per il " "file '%s'" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Bassa]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Alta]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Molto bassa" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Bassa" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normale" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Alta" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Molto alta" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Release" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Richiesta in corso" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Connessione in corso attraverso il server" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Coda piena" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "In coda" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Download in corso" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Ricezione hashset in corso" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Nessuna parte utile" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Impossibile connettere un ID basso a un altro ID basso" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Troppe connessioni" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Connessione via Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Troppe connessioni Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Bannati" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Errore di connessione" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Coda piena" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Vecchio MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Nuovo MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule compatibile" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Server locale" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Server remoto" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Scambio fonti" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passiva" #: src/DataToText.cpp:133 msgid "Link" msgstr "Collegamento" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Fonti salvate" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Risultato della Ricerca" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Completati" #: src/DataToText.cpp:146 msgid "In progress" msgstr "In corso" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "ERRORE: Spazio su disco esaurito" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "ERRORE: Partmet non trovato" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ERRORE: IO error!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ERROR: Fallito!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "In coda" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Download già in corso" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Formato del file temp sconosciuto o errato." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Parte" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Dimensione" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Trasferiti" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Velocità" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Avanzamento" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Fonti" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Priorità" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Stato" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Tempo rimanente" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Ultima fonte completa vista" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Ultima ricezione" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Sei sicuri di voler eliminare il file selezionato?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Sei sicuro di volere eliminare i file selezionati?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Feedback da: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "Fer&ma" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pausa" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Continua" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "&Rimuovi file completati" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Sposta ogni A4AF su questo file" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Sposta ogni A4AF su questo file (Auto)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Sposta ogni A4AF sugli altri file" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Opzioni avanzate" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Anteprima" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Mostra &dettagli file" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Mostra tutti i commenti" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Copia URI magnet negli appunti" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Copia eD2k &link negli appunti" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Copia feedback negli appunti" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "rimuovi" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Assegna a categoria" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Apri file" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Inserisci un nuovo nome per questo file:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Rinomina file" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Download (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Per prevenire questo avviso ad ogni anteprima, \n" "seleziona nelle preferenze il tuo riproduttore video preferito (di default è " "mplayer)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Anteprima" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" "ERRORE: Impossibile eseguire il lettore multimediale esterno! Comando: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Salvataggio PartFile %u di %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Tutti i Partfile salvati." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Caricamento file incompleto da: %s" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Caricamento file incompleto %u di %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "ERRORE: Impossibile caricare il file di backup. Cerca su http://forum.amule." "org come recuperare i file .part.met." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Tutti i PartFile caricati." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Non è stato trovato alcun file incompleto" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Trovato %u file parziale" msgstr[1] "Trovati %u file parziali" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "Il filesystem per la cartella Temp non può gestire file di grandi dimensioni." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "Il filesytem per la cartella Incoming non può gestire file di grandi " "dimensioni." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Download di %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Stai già cercando di scaricare il file '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Hai già il file '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Stai già cercando di scaricare il file '%s'" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Non posso convertire il magnet link a eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Protocollo del link %s sconosciuto" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Collegamento eD2k invalido! ERRORE: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "" "Il clienti ha inviato un pacchetto dopo che l'autenticazione non è riuscita." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Connessione esterna chiusa." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Connessioni esterne disabilitate perché la password è vuota!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Connessioni esterne disabilitate nel file di configurazione" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Accettata nuova connessione esterna" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "ERRORE: impossibile accettare una nuova connessione esterna" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Connessione esterna rifiutata perché la password nelle preferenze è vuota!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Connessione al client: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Versione sconosciuta" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "ID della versione EC non corretto, potrebbe esserci un'incompatibilità " "binaria. Usare core e client remoto dello stesso snapshot." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Non puoi connetterti a una versione definitiva da una versione SVN " "arbitraria! *sigh* possibile crash evitato" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Versione protocollo non valida." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Tag versione di protocollo mancante." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" "Autenticazione fallita: l'hash specificato come password EC non è valido." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Autenticazione fallita: password errata." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Autenticazione fallita: devi inserire la password." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Richiesta non valida, prima devi autenticarti." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Accesso consentito." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Invia il messaggio di errore \"%s\" al client." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Tentativo di accesso non autorizzato da %s. Connessione chiusa." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "Comando Partfile remoto fallito: hash del file non trovato: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Hash del file non trovato: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OOPS! errore nel processare l'opcode!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Server non aggiunto" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "server non trovato: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "è necessario definire il server da rimuovere" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k è disabilitato nelle preferenze." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Ricerca in corso. Risultati in arrivo!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Non ha senso usare la ricerca Web da interfaccia remota." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Niente punti per il grafico." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Il tuo client non è configurato per questo livello di dettaglio." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Connessione Esterna: richiesto l'arresto" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Sto già uscendo." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "ExternalConn: aggiungo il collegamento '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Collegamento non valido o già nella lista." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "File non trovato." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Nome file non valido." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Impossibile rinominare il file." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "La rete Kad è disabilitata nelle Preferenze." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "eD2k è già connesso." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Connessione alla rete eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Già connesso alla rete Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Connessione alla rete Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Tutte le reti sono disabilitate." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Disconnesso dalla rete eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Disconnesso dalla rete Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Connessione Esterna: ricevuto un opcode invalido: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Opcode non valido (versione errata del protocollo?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Estensione '%s' sconosciuta per il comando '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Comando sconosciuto '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Questo comando non può avere un argomento.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Questo comando richiede un argomento.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Questo comando è incompleto, devi usare una delle estensioni qui riportate.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Estensioni disponibili:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Comandi disponibili:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Tutti i comandi possono essere digitati in maiuscolo e minuscolo.\n" "Scrivi '%s ' per avere informazioni dettagliate su un .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Esce dall'applicazione." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Mostra aiuto." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Per avere aiuto su un comando, digitare 'help '.\n" "Per avere la lista completa dei comandi, digitare 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Usa '%s' per la lista dei comandi\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Errore di sintassi!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Errore nell'eseguire il comando - ciò non dovrebbe mai accadere! Segnala il " "bug\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Questo comando non deve avere parametri." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Questo comando richiede un parametro." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Argomento non valido." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Questo comando è incompleto." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Digita '%s' per avere altro aiuto.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Questo è %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Questo è %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Creazione del client in corso...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, uscita in corso da %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Non posso connettermi con una password vuota.\n" "Devi specificare una password nel file di configurazione oppure\n" "nella linea di comando, o inserirne una quando richiesto.\n" "\n" "Sto uscendo...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Mostra questo suggerimento." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Host su cui aMule è in esecuzione (default: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Porta di aMule per le connessioni esterne (default: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Password connessioni esterne." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Leggi la configurazione da file." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Non stampare output sullo stdout." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Verboso - mostra anche i messaggi di debug." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Imposta il locale del programma (lingua)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Salva le opzioni linea di comando nel file di configurazione." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Crea un file di configurazione basato su quello di aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Mostra la versione del programma." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Dettagli file" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "%.1f%% completato" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "Impossibile aprire in lettura il file della lista degli amici 'emfriend.met'!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "Impossibile aprire in scrittura il file della lista degli amici 'emfriend." "met'!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "CRITICO - nessun client in StartChatSession" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Amici" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Mostra &dettagli" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Aggiungi amico" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Rimuovi amico" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Invia &messaggio" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Visualizza file" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Crea slot amico" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Sei sicuro di voler eliminare l'amico selezionato?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Sei sicuro di voler eliminare gli amici selezionati?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Non puoi assegnare più di uno slot amico.\n" "Assegnato un solo slot." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Selezione multipla" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Invia messaggio all'utente" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Messaggio da inviare:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Elimina dagli amici" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Invia messaggio" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Sposta su questo file" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "In coda: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Altro file richiesto" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Upload in attesa:" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "In coda: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Caricamento" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Nessuno" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "No" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Sì" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Scaricamento in corso..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "Download HTTP cancellato" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Impossibile creare il file di destinazione %s per il download!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "L'URL per scaricare non può essere vuoto." #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "L'URL %s ha risposto: %i - Errore (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Errore critico durante la scrittura del file scaricato." #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "Scaricato %d bytes" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Scaricati %d bytes invece dei %d attesi" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "URL non valido per il download o il redirect HTTP (hai inserito 'http://' ?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Impossibile connettersi al server HTTP" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Risposta non valida dal server HTTP" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Scarico il nuovo GeoIP.dat da %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Errore nello scaricare GeoIP.dat, interrompo l'aggiornamento." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Impossibile rimuovere il file %s, aggiornamento interrotto." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Impossibile rinominare il nuovo file %s, aggiornamento interrotto." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "%s aggiornato con successo" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Errore durante l'aggiornamento di GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Impossibile scaricare %s da %s" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "Impossibile caricare dati locali da '%s'." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Caricamento filtri IP da 'ipfilter.dat' e 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "Impossibile caricare il file ipfilter.dat '%s', trovato formato sconosciuto." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Impossibile caricare il file ipfilter.dat '%s', impossibile aprire il file." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Caricato %u intervallo di IP da '%s'." msgstr[1] "Caricati %u intervalli di IP da '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u riga non valida è stata scartata." msgstr[1] "%u righe non valide sono state scartate." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Impossibile rinominare il nuovo file %s, aggiornamento interrotto." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "Filtro IP pronto" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Bootstrap da\n" "client noti" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nodi (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "IP non valido per il bootstrap" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Porta non valida per il bootstrap" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Completa tutti i campi obbligatori" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Sei sicuro di voler scaricare un nuovo file nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Così facendo, rimuoverai i nodi attuali e riavvierai la connessione Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Continuare?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: chiave di ricerca troppo corta" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Keyword per la ricerca: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: la chiave di ricerca è già nella lista: " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "Impossibile leggere il file nodes.dat - versione troppo vecchia. Questa " "versione (0) non è più supportata." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Letto %u contatto Kad" msgstr[1] "Letti %u contatti Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "Nessun contatto trovato, fai un bootstrap, oppure scarica un file nodes.dat." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "C'è solo %d contatto Kad disponibile, non scrivo il file nodes.dat" msgstr[1] "" "Ci sono solo %d contatti Kad disponibili, non scrivo il file nodes.dat" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Scritto %d contatto Kad" msgstr[1] "Scritti %d contatti Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Nome file" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Dimensione file" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Rapporto condivisione" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Inviato" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Richiesto" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Accettato" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Fonti complete" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "ATTENZIONE: la lista dei file conosciuti è danneggiata, contiene " "un'intestazione non valida." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Impossibile caricare la voce nella lista di file conosciuti, il file " "potrebbe essere corrotto:" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Voce non valida nella lista di file conosciuti, il file potrebbe essere " "corrotto:" #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Errore sconosciuto %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "Impossibile avere una descrizione per l'errore %d" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Hashing in corso" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "In completamento" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Completo" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "In pausa" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Errato" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "In attesa" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Devi specificare una password non vuota." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Password non valida, non è un hash MD5!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Connessione non riuscita" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "Connessione EC fallita. Risposta vuota." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Connessione Esterna: risposta non valida dal server. Connessione chiusa." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Fatto! Connessione stabilita con aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Fatto! Connessione stabilita." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Connessione Esterna: Accesso negato a causa di: " #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Connessione Esterna: errore di negoziazione." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Processo di download HTTP avviato" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket: Ok." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "ERRORE: Impossibile mettersi in ascolto sulla porta TCP." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "ERRORE: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "ATTENZIONE: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Chiudi" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Taglia" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Copia" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Incolla" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Pulisci" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Seleziona tutto" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Illimitato" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Menu di aMule nel systray" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Limiti velocità:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "UL: nessuno" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "UL: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DL: nessuno" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DL: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Velocità di scaricamento: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Velocità d'invio: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Informazioni client" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Nickname: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Nessun nickname selezionato!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID Client: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Non connesso" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Nome server: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP server: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Non connesso" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "Porta TCP: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Porta TCP: Non disponibile" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "Porta UDP: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "Porta UDP: Non disponibile" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Firma in linea: abilitata" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Firma in linea: disabilitata" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Uptime: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "File condivisi: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Client in attesa: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "DL totale: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "UL totale: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Limite di invio" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Limite di scaricamento" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Nascondi aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Mostra aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Esci" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k Link: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Invia" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Clicca qui per aggiungere il link eD2k dalla casella di testo ai download in " "attesa." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Gli eventi sono visualizzati qui. Per la lista completa, controllare il log " "nella scheda dei Server." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Caricamento in corso..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Numero di utenti presenti sul server al quale sei connesso..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Utenti: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "Utenti connessi al server attuale e stima del numero totale di utenti." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Up: 0.0 | Down: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Medie attuali di upload e download. Se l'opzione è stata abilitata i numeri " "tra parentesi indicano l'overhead dovuto alla comunicazione tra client." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Mostra lo stato attuale di connessione e i trasferimenti attivi. Le frecce " "rosse indicano che attualmente non sei connesso, le frecce gialle indicano " "che hai un ID basso (probabilmente il tuo pc è dietro un firewall) e le " "frecce verdi indicano che hai un ID alto (la miglior connessione possibile)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Non connesso..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Server attualmente connesso." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Cerca" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Nome:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tipo" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Locale" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Globale" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "FileHash" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Parametri avanzati" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtraggio" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Tipo file" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Qualsiasi" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Archivi" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Immagini CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Immagini" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programmi" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Testi" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Video" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Estensione" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Dimensione minima" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Byte" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Dimensione massima" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Disponibilità" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filtro:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filtra risultati" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Inverti risultati" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Nascondi file conosciuti" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Inizia" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Ancora" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Cerca più risultati su eD2k: Non ancora supportato da Kad." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Ferma" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Download" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Azzera campi" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Risultati" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Rimuovi download completati" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "File sorgente:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Generale" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Nome completo:" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/D" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "File met:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Dimensione file:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Stato file part:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Ultima volta visto completo:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Trasferimento" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Fonti trovate:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Fonti in trasferimento:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Numero parti:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Disponibili:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Velocità:" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Download Active Time: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Trasferiti:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Completati:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Intelligent Corruption Handling" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Perdita per corruzione:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Guadagno per compressione:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Pacchetti recuperati da ICH:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Nomi file" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Sovrascrivi" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Pulisci" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Applica" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Commenta/Giudica il file (il testo sarà visibile a tutti gli utenti)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Per un film puoi specificare la durata, la trama, la lingua ...\\n\\ne se è " "un falso, puoi avvisare gli altri utenti di aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Qualità file" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Senza voto" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Non valido / Danneggiato / Falso" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Mediocre" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Discreto" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Buono" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Eccellente" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Giudica il file o avvisa gli altri utenti se il file non è quello corretto..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Aggiorna" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Download in corso, attendere..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Dimensione sconosciuta" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Informazioni richieste" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Indirizzo IP:" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Porta:" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Informazioni aggiuntive" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Nome utente:" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Hash utente:" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Aggiungi" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Velocità download" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Corrente" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Media attuale" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Media sessione" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Velocità upload" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Connessioni" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Download attivi" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Connessioni attive (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Upload attivi" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Albero statistiche" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Nome utente:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Hash utente:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Software client:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Versione client:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Indirizzo IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID utente:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP server:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Nome server:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Offuscamento:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Trasferimenti al client" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Richiesta attuale:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Velocità media upload:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Velocità media download:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Inviati nella sessione:" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Scaricati nella sessione:" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Inviati in totale:" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Scaricati in totale:" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Punteggi" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Modificatore DL/UL:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Identificazione sicura:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Punteggio in coda:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Punteggio in coda:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Nick" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - il Mulo multipiattaforma" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" "Questo è il nome che gli altri utenti visualizzeranno quando saranno " "connessi a te." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Lingua: " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Intervallo di tempo prima che vengano mostrati i suggerimenti." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Scelta della lingua utilizzata." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Verifica la disponibilità di nuove versioni all'avvio" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Abilitare questa opzione farà sì che aMule all'avvio verifichi la " "disponibilità di nuove versioni" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Avvia ridotto ad icona" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "" "Abilitando questa opzione, aMule si minimizzerà automaticamente all'avvio." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Chiedi conferma prima di uscire" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Fa in modo che aMule chieda conferma prima di uscire." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "Nascondi la finestra quando il pulsante di chiusura è premuto." #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Abilita icona nel systray" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" "Abilita o disabilita l'icona nella system tray o nella barra delle " "applicazioni." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Icona per la system tray" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Abilitando questa opzione aMule verrà minimizzato nella system tray invece " "che nella barra delle applicazioni." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Ritardo dei suggerimenti: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "secondi" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Selezione browser" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Inserisci qui il nome del tuo browser. Lascia vuoto questo campo per " "utilizzare il browser di sistema predefinito." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Sfoglia" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Apri in una nuova scheda se possibile" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Se possibile, apri la pagina web in una nuova scheda invece che in una nuova " "finestra" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Riproduttore video" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Limiti di banda" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Upload" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Allocazione slot" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Porte" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Porta TCP standard" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Questa è la porta standard eD2k e non può essere disabilitata." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Porta UDP per le richieste al server (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Porta UDP estesa (Kad / ricerca globale) " #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" "Questa porta UDP è utilizzata per le richieste estese eD2k e per la rete Kad" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Abiita l'UPnP per il port forwarding del router" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "Porta UPnP TCP (Facoltativo):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Lega l'indirizzo locale all'IP (vuoto per qualsiasi):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Solo per utenti esperti: Se hai interfacce di rete multiple, inserisci " "l'indirizzo dell'interfaccia che aMule dovrà utilizzare." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Fonti massime per file in scaricamento:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Connessioni massime simultanee:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ed2k" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Connetti automaticamente all'avvio" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Riconnetti dopo perdita connessione" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Rimuovi server inattivi dopo" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "tentativi" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Aggiorna la lista server all'avvio" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Lista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Aggiorna la lista server quando ti connetti a un server" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Aggiorna la lista server quando ti connetti a un client" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Usa sistema di priorità" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Usa controllo intelligente dell'ID basso in fase di connessione" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Connessione sicura" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Connetti automaticamente solo ai server statici" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Assegna priorità alta ai server aggiunti manualmente" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Trattamento intelligente dei file corrotti (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Abilita" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "L'I.C.H. avanzato si fida di ogni hash (sconsigliato)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Aggiungi i nuovi file da scaricare mettendoli in pausa" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Aggiungi i nuovi file da scaricare con priorità automatica" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Cerca di scaricare prima la parte iniziale e finale del file" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Scarica il prossimo file in pausa quando un altro è completato" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Della stessa categoria" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "In ordine alfabetico" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Prealloca lo spazio su disco per i nuovi file" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Per i nuovi file prealloca lo spazio su disco per l'intero file, in questo " "modo si riduce la frammentazione" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Interrompi i download quando termina lo spazio su disco " #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Selezionalo se vuoi che aMule controlli il tuo spazio su disco" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Inserire lo spazio disco minimo desiderato." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Salva 10 fonti per i file rari (< 20 fonti)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Upload" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Assegna priorità automatica ai nuovi file condivisi" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Cartella di destinazione per i file scaricati" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Cartella per i file temporanei" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Cartelle condivise" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" "(fai clic con il tasto destro sulle icone per condividere ricorsivamente)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Condividi file nascosti" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafici" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Intervallo di aggiornamento: 5 secondi" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Intervallo grafico valori medi: 100 minuti" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Scala grafico connessioni: 100 " #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Scala grafico di scaricamento:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Scala grafico d'invio:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Colori: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Sfondo" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Griglia" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Download attuale" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Media download in corso" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Media sessione di download" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Upload attuale" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Media upload in corso" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Media sessione di upload" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Connessioni attive" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Barra della velocità nell'icona systray" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Nodi Kad attuali" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Nodi Kad attivi" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Nodi Kad nella sessione" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Seleziona" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Albero" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Numero di versioni di client visualizzate (0=illimitate)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! ATTENZIONE !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Numero massimo nuove connessioni / 5 secondi" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Dimensione buffer file: 240000 byte" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Dimensione coda upload: 5000 client" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Intervallo aggiornamento connessione al server: disabilitato" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Disabilita la modalità standby a tempo" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Skin da usare: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Mostra il \"Gestore rapido dei collegamenti eD2k\" in ogni finestra." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Mostra informazioni estese sulle schede delle categorie" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "Mostra versione dell'applicazione nella barra del titolo" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Mostra velocità di trasferimento nella barra del titolo" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Prima del nome dell'applicazione" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Dopo il nome dell'applicazione" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Mostra l'overhead di banda" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Orientamento verticale della barra degli strumenti" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Mostra la nazionalità per client" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Scaricamento dei File in Coda" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Mostra la percentuale di avanzamento" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Mostra la barra di avanzamento" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Piatta" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Arrotondata" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Ordina automaticamente i file (uso elevato della CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule ordinerà automaticamente le colonne nella lista dei download" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parametri connessioni esterne" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Accetta connessioni esterne" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP dell'interfaccia di ascolto:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Inserisci un IP valido nel formato a.b.c.d per l'interfaccia di ascolto EC. " "Lasciare il campo vuoto o inserire 0.0.0.0 significa qualsiasi interfaccia." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "Porta TCP:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Abilita il port forwarding UPnP sulla porta EC" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Password" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Parametri del server web" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Lancia il webserver all'avvio" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Modello web" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Password per diritti completi" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Abilita utente con diritti limitati" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Password per diritti limitati" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Abilita il port forwarding UPnP sulla porta del server web" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Porta TCP UPnP del server web (Facoltativo)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Intervallo di aggiornamento pagina (in sec)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Abilita compressione gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Fai clic qui per applicare le modifiche apportate alle impostazioni." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Annulla ogni modifica alle preferenze." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Titolo:" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Commento:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Cartella file scaricati:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Cambia priorità per i nuovi file assegnati:" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Non cambiare" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Seleziona colore per questa categoria (attualmente selezionata):" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Pulisci" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Fai clic su questo pulsante per cancellare il log." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Fai clic qui per aggiornare la lista dei server dall'indirizzo..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Lista server" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Inserisci l'url di un file server.met e premi il pulsante a sinistra per " "aggiornare la lista dei server conosciuti." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Aggiungi un server manualmente: Nome" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Inserisci qui il nome di un nuovo server" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Porta" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Inserisci qui l'IP del server, nel formato x.x.x.x." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Inserisci qui la porta del server." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Aggiungi server (riempi campi a sinistra)..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Log di aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Informazioni server" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Informazioni ed2k" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Informazioni Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" "Fai clic su questo pulsante per aggiornare la lista dei nodi da un URL..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nodi (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Inserisci l'URL di un file nodes.dat e premi il pulsante a sinistra per " "aggiornare la lista dei nodi conosciuti." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Statistiche nodi" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Bootstrap" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Nuovo nodo" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Porta:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Bootstrap da client noti" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Disconnetti rete Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Usa l'Identificazione Sicura Utente" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "E' consigliato attivare questa opzione. Non riceverai crediti se l'ISU non è " "abilitata." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Offuscamento del protocollo" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Supporta offuscamento del protocollo" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Questa opzione abilita l'offuscamento del protocollo, e fa sì che aMule " "accetti connessioni offuscate dagli altri client." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Utilizza offuscamento per le connessioni in uscita" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Questa opzione fa sì che aMule utilizzi l'offuscamento del protocollo quando " "si collega ad altri client/server." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Accetta SOLO connessioni offuscate" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Attivando questa opzione aMule accetterà solo connessioni offuscate. Avrai " "meno fonti, ma tutto il tuo traffico sarà offuscato" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Chiunque" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Nessuno" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Chi può vedere i miei file condivisi:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" "Seleziona chi può richiedere di vedere la lista dei tuoi file condivisi." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Filtraggio IP" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtra i client" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "Filtra i client in base agli ip contenuti in ~/.aMule/ipfilter.dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtra i server" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "Filtra i server in base agli ip contenuti in ~/.aMule/ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Ricarica lista" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "Ricarica lista degli IP da filtrare dal file ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Aggiorna ora" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Aggiorna ipfilter all'avvio" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Livello filtraggio:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Filtra sempre gli IP di una LAN" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Gestione paranoica degli IP non corrispondenti" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Rifiuta pacchetto se l'IP del Client è diverso dall'IP da cui arriva il " "pacchetto. Utilizzare con cautela." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Usa l'ipfilter.dat di sistema se disponibile" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Se un file ipfilter.dat locale non viene trovato, consenti l'utilizzo del " "file ipfilter.dat di sistema." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Abilita firma in linea" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Abilita la scrittura del file OS che può essere usato da applicazioni " "esterne per creare firme e simili." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Frequenza di aggiornamento (secondi):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" "Cambia la frequenza (in secondi) degli aggiornamenti della firma in linea." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Salva la firma in linea in: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Fai clic qui per selezionare la cartella che contiene i file di firma in " "linea." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtra messaggi in arrivo (tranne per la chat in corso):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtra tutti i messaggi" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtra i messaggi da utenti che non sono nella tua lista degli amici" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtra i messaggi da client sconosciuti" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtra i messaggi che contengono (usa ',' come separatore):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "aggiungi qui le parole che aMule filtrerà rimuovendo i messaggi che le " "contengono" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Mostra nel log i messaggi ricevuti" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Commenti" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtra i commenti che contengono (usa ',' come separatore):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Connessione automatica al server senza proxy" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Abilita autenticazione" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Abilita o disabilita l'autenticazione con nome utente e password" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Nome utente: " #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Il nome utente utilizzato per la connessione al proxy" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Password:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "La password usata per la connessione al proxy" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Abilita proxy" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Abilita o disabilita il supporto proxy" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Tipo proxy:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Indirizzo proxy:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Il nome host del proxy" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Porta proxy:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "La porta del proxy" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Connetti a:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Login su aMule remoto" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Nome utente" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Ricorda impostazioni" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Abilita il log dettagliato dei messaggi di debug." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Apri file" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Categorie messaggi:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "In attesa..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Aggiunge importazioni" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Riprova selezionati" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Rimuovi selezionati" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Tipi di evento" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Statistiche e client in coda per i(l) file selezionati(o) : Sessione / Totale" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Upload attivi" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Percentuale di file totali" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Tutti i file" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Seleziona files" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Solo upload attivi" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Mostra client per" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Ricarica lista:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Ricarica file condivisi" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Invia" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Invia messaggio specificato." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Chiude questa sessione di chat." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Connetti a qualsiasi server e/o a Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "File condivisi" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Disabilitato [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/s" msgstr[1] "bytes/sec" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "sec" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "min" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "ore" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "giorni" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "tutti" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "tutti gli altri" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Incompleti" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Fermo" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Archivi" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Testo" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Attivo" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Directory di configurazione in uso: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" "In attesa della fine del processo di conversione del file incompleto..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Importazione %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Lettura cartella dei file temporanei" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Recupero informazioni di base dal file info del download" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Creazione file di destinazione" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Caricamento dati da vecchio file in download (%u su %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Salvataggio blocchi di dati in un singolo file (%u su %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Recupero informazioni fonti e file in download in corso" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Aggiunta download e salvataggio nuovo partfile in corso" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importa partfile" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Stato" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Filehash" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Disco: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Scegli una cartella in cui cercare download temporanei! (le sottocartelle " "saranno incluse)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Vuoi che le fonti per i download importati con successo siano eliminate?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Rimuovere le fonti?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "ERRORE: impossibile creare il file .part" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Caricamento del backup del file met da %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "ERRORE: Apertura del file part.met fallita: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "ERRORE: la dimensione del file part.met è 0: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "ERRORE: Versione del file part.met invalida: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "ERRORE: %s (%s) è corrotto (computo delle etichette errate: %s), impossibile " "caricare il file." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "ERRORE: %s (%s) è corrotto (computo dell'etichetta errato), impossibile " "caricare il file." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Tentativo di recupero informazioni sul file..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Recupero file senza nome - tentativo di recupero come RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Recuperate tutte le informazioni disponibili :D - Tentativo di utilizzo in " "corso..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Impossibile recuperare le informazioni sul file :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Impossibile aprire %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "ATTENZIONE: %s potrebbe essere corrotto (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "Errore durante il salvataggio del file incompleto: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "Errore durante il salvataggio del file incompleto:" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "" "Non è possibile recuperare la lunghezza di '%s' - utilizzando il file %s." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' è per qualche motivo di dimensione 0 - uso il file %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Impossibile salvare il file part.met.seeds per %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Salvata %i fonte per il file incompleto: %s (%s)" msgstr[1] "Salvate %i fonti per il file incompleto: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Salvata %i fonte per il file incompleto: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Errore nella lettura del file delle fonti del partfile (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Trovata parte danneggiata (%d) in %d parte %s - FileResultHash |%s| FileHash " "|%s|" msgstr[1] "" "Trovata parte danneggiata (%d) in %d parti %s - FileResultHash |%s| FileHash " "|%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Trovata parte completata (%i) in %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Nuovo hashing completato %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Errore imprevisto durante il completamento di %s. File in pausa." #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Download completato: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Cancellazione file: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "ATTENZIONE: impossibile creare l'hash del file parziale - hashset incompleto " "per '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "ERRORE: Impossibile creare l'hash del file parziale - hashset incompleto (%" "s). Ciò non dovrebbe mai accadere" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "EOF durante l'hashing della parte %u scaricata con lunghezza %u (max %u) del " "partfile '%s' con lunghezza %u: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" "ATTENZIONE: non c'è abbastanza spazio libero su disco! Metto in pausa il " "file: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "La parte di file scaricata %i è danneggiata in: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: recuperata parte danneggiata %i in %s -> risparmiati byte: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Allocando" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Spazio su disco insufficiente" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Scaricato" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "ERRORE: Apertura file parziale fallita '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Predefinita di sistema" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albanese" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabo" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturiano" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Basco" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgaro" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Catalano" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Cinese (semplificato)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Cinese (tradizionale)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Croato" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Ceco" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Danese" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Olandese" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Inglese (U.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estone" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finlandese" #: src/Preferences.cpp:648 msgid "French" msgstr "Francese" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galiziano" #: src/Preferences.cpp:650 msgid "German" msgstr "Tedesco" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Greco" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Ebraico" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Ungherese" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italiano" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italiano (Svizzera)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Giapponese" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Coreano" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lituano" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norvegese (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polacco" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portoghese" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portoghese (brasiliano)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Rumeno" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Russo" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Sloveno" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Spagnolo" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Svedese" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turco" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ucraino" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Lingua" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "Non ci sono traduzioni installate per aMule" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "Nessuna lingua disponibile" #: src/Preferences.cpp:906 msgid "no options available" msgstr "nessuna opzione disponibile" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Trovata categoria non valida, ignorata" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "La porta TCP non può essere superiore a 65532 perché il socket UDP è fissato " "a TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Sarà usata la porta di predefinita (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Scartando le cartelle condivise non esistenti: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Connessione" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Cartelle" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Server" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "File" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Sicurezza" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Interfaccia" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filtri" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Controlli remoti" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Firma in linea" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Avanzato" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Eventi" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Debug" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "Le seguenti variabili saranno sostituite:\n" " %PARTFILE - percorso completo del file\n" " %PARTNAME - solamente il nome del file" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Non modificare queste impostazioni se non sai\n" "esattamente cosa stai facendo: potresti ottenere\n" "effetti indesiderati.\n" "\n" "aMule funzionerà anche senza modificare questi parametri." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Insuccesso nel collegare Cfg al widget con ID %d e chiave %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "Insuccesso nel trasferire dati da Cfg al widget con ID %d e chiave %s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Il tipo di proxy a cui ti stai connettendo" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "Insuccesso nel trasferire dati dal widget al Cfg con ID %d e chiave %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule deve essere riavviato per rendere effettive queste modifiche:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- Modifica della porta TCP.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- Modifica della porta UDP.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Porta della connessione esterna modificata. \n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Accetta connessione esterna modificata. \n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Interfaccia connessione esterna modificata. \n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Offuscamento del protocollo" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "La tua lista dei server per l'aggiornamento automatico è vuota.\n" "L'aggiornamento automatico all'avvio della lista dei server sarà disattivato." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Hai abilitato le connessioni esterne senza però specificare una password.\n" "Le connessioni esterne non possono essere abilitate a meno che tu non scelga " "una password valida." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Modifica della lingua.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Modifica della cartella Temp.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- Rete ED2K abilitata.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Entrambe le reti eD2k e Kad sono disattivate.\n" "Non potrai connetterti finché non ne abiliterai almeno una." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad non può partire se la porta UDP è disabilitata.\n" "Abilitala o disabilita Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "DEVI riavviare aMule ADESSO.\n" "Se non lo fai, non lamentarti se succede qualcosa di strano.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "La tua lista di aggiornamento automatico dei server è vuota.\n" "Inserisci l'URL di almeno un server valido nel file server.met.\n" "Fai clic sul pulsante \"Lista\" per inserire l'URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "File temporanei" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "File completi" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Firme in linea" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Scegli una cartella per i %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Sfoglia per trovare un riproduttore video" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Scegli browser" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Eseguibile%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Modifica la lista dei server" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Inserisci l'URL da cui scaricare il file server.met.\n" "Solo un URL per riga." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Intervallo aggiornamento: %d secondo" msgstr[1] "Intervallo aggiornamento: %d secondi" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Intervallo grafico della media: %d minuto" msgstr[1] "Intervallo grafico della media: %d minuti" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Scala grafico delle connessioni: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Dimensione buffer file: %d byte" msgstr[1] "Dimensione buffer file: %d bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Dimensione coda upload: %d client" msgstr[1] "Dimensione coda upload: %d client" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Intervallo aggiornamento connessione ai server: %d minuto" msgstr[1] "Intervallo aggiornamento connessione ai server: %d minuti" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Intervallo aggiornamento connessione ai server: disabilitato" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "disattivato" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Esegui comando se si verifica l'evento '%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Abilita l'esecuzione del comando sul core" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Comando Core:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Abilita l'esecuzione del comando sulla GUI" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Comando GUI:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Le seguenti variabili saranno sostituite:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "Min size deve essere più piccola di max size. Ignoro max size." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Avviso di ricerca" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Principale" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "" "Impossibile effettuare una ricerca sulla rete Kad senza esserci connessi" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" "La ricerca eD2k non può essere effettuata finché non sei connesso alla rete " "eD2k" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Errore imprevisto durante la ricerca su Kad: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ID File" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "File" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Download nella categoria" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "Ottieni %s per questo file" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Cerca file correlati (eD2k, server locale)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Segna come file conosciuto" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Copia il collegamento eD2k negli appunti" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Annulla" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Nuovo" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Impossibile stabilire una connessione offuscata con tutti i server elencati. " "Ci riprovo senza offuscamento." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Impossibile connettersi a tutti i server in lista. Procedo con un altro " "tentativo." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "La rete eD2k è disabilitata nelle preferenze, non mi connetto." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" "Nella lista dei server non è stato trovato un server valido a cui connettersi" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Connesso a %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Connessione stabilita con: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Errore grave durante il tentativo di connessione. La connessione a Internet " "potrebbe non essere attiva" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Persa connessione a %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) sembra non essere attivo." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) sembra essere pieno." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Riconnessione automatica al server tra %d secondo" msgstr[1] "Riconnessione automatica al server tra %d secondi" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Connessione persa" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Connessione a %s (%s:%i) non riuscita." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "ERRORE: Nessun Socket valido trovato entro il tempo massimo" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Connessione a %s (%s:%i) non riuscita per time-out." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Risultato ricerca DNS ricevuto in ritardo, ignoro." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Caricamento file server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "File server.met non trovato!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Impossibile caricare il file server.met '%s', trovato formato sconosciuto." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Impossibile aprire il file server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Server.met corrotto, trovato tag di versione non valido: 0x%x, dimensione %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "Trovato %i server nel file server.met" msgstr[1] "Trovati %i server nel file server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "Aggiunto %d server" msgstr[1] "Aggiunti %d server" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Errore: il file 'server.met' è corrotto:" #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "Errore IO durante la lettura del file 'server.met':" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Server non aggiunto: [%s:%d] non specifica una porta valida." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Server non aggiunto: l'IP di [%s:%d] è filtrato o non valido." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Server non aggiunto: server con corrispondente IP:Porta [%s:%d] trovato " "nella lista." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Server aggiunto: server [%s:%d] con il nome '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "Sei connesso al server che vuoi eliminare. Disconnettiti prima." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Impossibile aprire '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Impossibile salvare il file server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "URL non valido" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Terminato il download della lista dei server da %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Non è stato trovato nessun indirizzo nel file 'addresses.dat'. Copia un " "indirizzo che contenga la lista di server in questo file in modo da poter " "aggiornare automaticamente la lista" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Inizia il download della lista dei server da %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "ATTENZIONE: hai specificato un URL non valido per l'aggiornamento automatico " "dei server: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "Nessun URL di file server.met valido in addresses.dat" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Impossibile scaricare la lista dei server da %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Il server locale è filtrato dal filtro IP, mi connetto a un altro server!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Nome server" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Indirizzo" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Porta" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Descrizione" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Utenti" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Statico" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versione" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Sei connesso al server che stai cercando di eliminare. Disconnettiti prima. " "Il server NON è stato eliminato." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(nome sconosciuto)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Sei sicuro di voler eliminare il server statico %s?" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Server (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Server" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Connetti al server" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Segna il server come statico" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Segna il server come non statico" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Segna i server come statici" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Segna i server come non statici" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Rimuovi il server" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Rimuovi i server" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Rimuovi tutti i server" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Copia il collegamento eD2k negli appunti" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Riconnetti al server" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Sei sicuro di voler eliminare tutti i server?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Sei sicuro di voler eliminare il server selezionato?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Sei sicuro di voler eliminare i server selezionati?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "ERRORE: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "ATTENZIONE: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Il nuovo clientID è %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "ATTENZIONE: hai ricevuto un ID basso!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tProbabilmente perché il tuo pc è dietro un firewall o router." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPer altre informazioni visita http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Ricevute informazioni sconosciute dal server! - troppo corto" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Ricevuto %d nuovo server" msgstr[1] "Ricevuti %d nuovi server" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Salvataggio della lista dei server completato." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Il server ha rifiutato l'ultimo comando" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Pacchetto bogus ricevuto dal server: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Errore non gestito durante l'elaborazione del pacchetto dal server: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" "Non è possibile creare un thread per risolvere il DNS per connettersi a %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "L'ip del server %s (%s) è filtrato. Connessione bloccata." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "utilizzo offuscamento del protocollo." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Connessione a %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" "Non è possibile risolvere il DNS per il server %s: impossibile connettersi!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Server non aggiunto: non è stato specificato l'IP o il nome dell'host." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Server non aggiunto: porta del server specificata non valida." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Stato eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Stato Kademlia:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "Esecuzione in modalità LAN" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Attivo" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Stato:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Stato connessione:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Firewalled - apri la porta TCP %d nel tuo router o firewall" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "Stato connessione UDP:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Firewalled - apri la porta UDP %d nel tuo router o firewall" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Stato firewalled: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Nessun amico richiesto - porta TCP aperta" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Nessun amico richiesto - porta UDP aperta" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Nessun amico" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "In connessione all'amico" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Connesso all'amico a %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Sorgenti indicizzate:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Parole chiave indicizzate" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Note indicizzate:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Utilizzo indicizzato:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Utenti medi:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "File medi:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Non attivo" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Aggiungo il file %s alle condivisioni" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Trovati %i file condiviso conosciuto" msgstr[1] "Trovati %i file condivisi conosciuti" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Trovato %i file conosciuto, %i sconosciuto" msgstr[1] "Trovati %i file condivisi conosciuti, %i sconosciuti" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "ERRORE: Tentativo di condividere %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Cartella condivisa non trovata, ignoro: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Nessun file condivisibile trovato nella cartella: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Nome utente" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Velocità download" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Velocità upload" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Parti disponibili" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "Stato upload" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Stato download" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Origine" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Nome file locale" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "Lista file condivisi" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Richieste" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Richieste accettate" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Dati trasferiti" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Rapporto di condivisione" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Parti ricevute" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Fonti complete" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Percorso cartella" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Aggiungi commento/giudizio" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Modifica commento/giudizio" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Rinomina" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Aggiungi i file della collezione alla lista dei trasferimenti" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Copia &URI magnet negli appunti" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Copia eD2k &link negli appunti (&Source)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Copia eD2k &link negli appunti (Source) (&With Crypt options)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Copia il collegamento eD2k negli appunti (&Hostname)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Copia il collegamento eD2k negli appunti (Hostname) (With &Crypt options)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Copia il collegamento eD2k negli appunti (&AICH info)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Copia il collegamento eD2k negli appunti (&AICH info)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Hai bisogno di un ID alto per creare un sourcelink valido" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "File condivisi (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "File in scaricamento" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Nome file remoto" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Dati inviati (sessione (totale)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Overhead totale (pacchetti): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Overhead per richieste file (pacchetti): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Overhead per scambio fonti (pacchetti): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Overhead server (pacchetti): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Overhead Kad (pacchetti): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Crypt overhead (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Upload attivi: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Upload in attesa: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Totale sessioni di upload riuscite: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Totale sessioni di upload fallite: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Tempo upload medio: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Dati scaricati (sessione (totale)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Fonti trovate: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Download attivi (parti): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Rapporto UL:DL sessione (totale): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Velocità di scaricamento media (Sessione): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Velocità d'invio media (Sessione): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Velocità di scaricamento massima (Sessione): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Velocità d'invio massima (Sessione): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Riconnessioni: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Tempo dal primo trasferimento: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Connesso al server da: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Connessioni attive (stima): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Limite massimo connessioni raggiunto: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Connessioni medie (stima): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Picco connessioni (stima): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Client" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Sconosciuti: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Filtrati: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Bannati: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Totale: %i Conosciuti: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Server attivi: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Server falliti: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Totale: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Server rimossi: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Server filtrati: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Utenti su server attivi: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "File su server attivi: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Utenti totali: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "File totali: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Occupazione server: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Numero di file condivisi: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Dimensione totale file condivisi: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Dimensione media del file: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Sistema operativo" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Non ricevuto" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Connessioni attive (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Non disponibile" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Mai" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Il programma `%s' con pid `%d' e' terminato con stato `%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Esegui e esci." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Formato IP non valido. Usa xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Questo comando richiede un argomento. Argomenti validi sono: 'all', nome " "file, or un numero.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Elaborazione dell' hash: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Elaborazione del file: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Questo comando richiede un argomento. Argomenti validi: un file hash.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Non è un numero valido\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Non è un hash valido (la lunghezza deve essere di 32 caratteri)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Digita '%s' per avere altro aiuto.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Dimensioni download (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Richiesta non riuscita con errore sconosciuto." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operazione conclusa con successo." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Richiesta fallita con il seguente errore: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Filtraggio IP per i client: %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "OFF" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "ON" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Filtraggio IP per i server: %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Il livello IPFilter attuale è %d\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Limiti di banda: Up: %u kB/s, Down: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Connesso a %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Connessione in corso" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "firewalled" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Download:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Upload:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Client in coda:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Fonti totali:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Totale risultati della ricerca: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Avanzamento ricerca: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Avanzamento ricerca non disponibile" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Ricevuta risposta sconosciuta dal server, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Mostra informazione sullo stato." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" "Mostra stato connessione, velocità di upload e download attuali, etc.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Mostra le statistiche complete." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Opzionalmente, un numero compreso tra 0 e 255 può essere passato come " "argomento a questo\n" "comando, per indicare quante versioni mostrare nel sottoalbero dei client. 0 " "oppure\n" "nessun numero significa 'infinite'.\n" "Esempio: 'statistics 5' mostrerà solo le cinque versioni più diffuse per " "ogni tipo di client.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Arresta aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Arresta il core remoto attualmente in funzione (amule/amuled).\n" "Ciò interromperà anche il client testuale, dal momento che è inutilizzabile " "senza un\n" "core in esecuzione.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Ricarica l'oggetto." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Ricarica la lista dei file condivisi." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Ricarica il filtro IP da file." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Seleziona il livello del filtraggio degli IP." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Ricarica il filtro IP da file." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Se l'URL è omesso verrà utilizzato quello inserito nelle Preferenze." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Connessione al network." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Questo connetterà aMule a tutte le reti attualmente abilitate nelle " "Preferenze.\n" "E' anche possibile specificare l'indirizzo IP, nella forma IP:Porta, di un " "server e\n" "connettersi solamente a quello. Si può utilizzare un indirizzo IPv4 oppure\n" "un nome risolvibile da un server DNS." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Connettiti solo alla rete eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Connetti solo alla rete Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Disconnetti dalla rete." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Questo disconnetterà aMule da tutte le reti attive.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Disconnettiti solo dalla rete eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Disconnetti solo dalla rete Kad." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Aggiungi un link eD2k o un magnet link al core." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Il link eD2k da aggiungere può essere:\n" "*) un collegamento a un file (ed2k://|file|...), il quale sarà aggiunto ai " "download in attesa,\n" "*) un collegamento a un server (ed2k://|server|...), il quale sarà aggiunto " "alla lista dei server,\n" "*) o un collegamento ad una lista server, in questo caso tutti i server " "elencati saranno aggiunti alla\n" "lista dei server.\n" "\n" "Il magnet link deve contenere l'hash eD2k e la lunghezza del file.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Imposta un valore delle preferenze." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Imposta le preferenze del Filtro IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Attiva il filtro IP per client e server." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Disattiva il filtro IP per client e server." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Attiva/Disabilita il filtro IP per i client." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Attiva il filtro IP per i client." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Disattiva il filtro IP per i client." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Attiva/Disabilita il filtro IP per i server." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Attiva il filtro IP per i server." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Disabilita il filtro IP per i server." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Seleziona il livello del filtraggio degli IP." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "I livelli di filtraggio validi vanno da 0 a 255 e il default (iniziale)\n" "è 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Imposta limiti di banda." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" "Il valore fornito a questi comandi deve essere in kilobyte al secondo.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Imposta limiti di banda per l'upload." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "" "Il valore fornito a questi comandi deve essere in kilobyte al secondo.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Imposta limiti di banda per il download." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Visualizza un'impostazione delle preferenze." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Visualizza impostazioni del filtro IP." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Ottieni stato del filtro IP per client e server." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Ottieni stato del filtro IP per i client." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Ottieni stato del filtro IP per i server." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Seleziona il livello del filtraggio degli IP." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Visualizza limita di banda." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Effettua una ricerca." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "E' necessario specificare il TIPO della ricerca che può essere:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Esempio: 'search kad file' cercherà \"file\" nella rete Kad.\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Effettua una ricerca globale." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Effettua una ricerca locale" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Effettua una ricerca sulla rete Kad" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Mostra risultati dell'ultima ricerca." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Restituisce i risultati della ricerca precedente.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Mostra lo stato d'avanzamento della ricerca." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Mostra lo stato d'avanzamento della ricerca.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Scarica un file" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Bisogna fornire il numero del file relativo all'ultima ricerca.\n" "Esempio: 'download 12' aggiungerà alla coda dei download il file col numero " "12 trovato dall'ultima ricerca.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Metti il download in pausa." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Riavvia download." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Annulla download." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Imposta priorità del download." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Imposta la priorità del download a Bassa, Normale, Alta o Auto.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Imposta priorità a Bassa." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Imposta priorità a Normale." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Imposta priorità a Alta." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Imposta priorità a Auto." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Mostra code/liste." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Mostra la coda di upload/download, la lista dei server o la lista dei file " "condivisi.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Mostra la coda di upload." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Mostra la coda di download." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Mostra log." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Mostra la lista dei server." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Cancella log." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Comando obsoleto, al suo posto usa '%s'." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Questo è un comando obsoleto, e in futuro potrebbe essere rimosso.\n" "Al suo posto usa '%s'.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Client testuale aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Conversione dei vecchi hashset AICH in '%s' a 64b: '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "ATTENZIONE: '%s' non è un nome di file valido ed è stato rinominato in '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "ATTENZIONE: il file '%s' esiste già, il nuovo file sarà rinominato in '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Sei sicuro di voler interrompere e rimuovere tutti i file contenuti in " "questa categoria?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Conferma richiesta" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Solo 99 categorie sono accettate." #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Troppe categorie!" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Tutto il resto" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Seleziona filtro di visualizzazione" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Aggiungi categoria" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Modifica categoria" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Elimina categoria" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Impossibile aprire il file (%s), rimosso dalla lista dei file condivisi." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Hashset richiesto per il file sconosciuto: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Ripristino invio del file: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Sospensione invio del file: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Impossibile eseguire il comando `%s' per l'evento `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Download completato" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Il percorso completo del file." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Il nome del file senza la parte del percorso." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "L'hash eD2k del file." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "La dimensione del file in bytes." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Tempo cumulativo di download." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Nuova sessione chat iniziata" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Mittente del messaggio." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Spazio esaurito" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Partizione disco." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Errore nel completamento" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Elaborazione del file numero %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Hai richiesto l'hash delle parti (solo per file > 9.5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> File inesistente!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, il creatore di link eD2k per aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Benvenuto!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Parametri di ingresso" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "File da esaminare" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Aggiungi URL per questo file" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Inserisci qui il file di cui vuoi creare il collegamento eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Inserisci qui l'URL che vuoi aggiungere al collegamento eD2k: Aggiungi / " "alla fine per permettere a aLinkCreator di aggiungere l'attuale nome del file" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Rimuovi" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Crea collegamento con hash delle parti" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Aiuta a diffondere più in fretta i file nuovi e rari, al costo di una " "connessione più lunga" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Hash del File MD4" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Hash del File eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "Collegamento eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Salva" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Copia negli appunti" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Apri" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Apri un file per generare il suo link eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Copia il link eD2k generato negli appunti" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Salva come" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Salva su file il link eD2k generato" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Informazioni su aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Seleziona il file di cui vuoi creare il link eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Non posso aprire gli appunti" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Non c'è niente da copiare per ora!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Seleziona il file di cui vuoi generare il link eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Impossibile aprire " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Inserire un nome file non vuoto" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Non c'è niente da salvare per ora!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, il creatore di link eD2k per aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps da http://www.everaldo.com e http://www.icomania.com\n" "e http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distribuito sotto licenza GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Hashing..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator sta lavorando per voi" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Calcolo Hash MD4 in corso..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Calcolo Hash eD2k in corso..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Annullato !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Eseguito in %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Hai già aggiunto questo URL!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Inserire un URL non vuoto" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Impossibile aprire %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i giorno(i) %i ora(e) %i minuto(i) %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uG %02uore %02umin %02usec" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uore %02umin %02usec" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02usec" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, statistiche in linea di aMule" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Velocità di DL massima da quando wxCas è attivo" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Velocità di DL massima nelle precedenti sessioni di wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistema" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Ferma aggiornamento automatico" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Salva immagine statistiche in linea" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Stampa immagine statistiche in linea" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Preferenze" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Informazioni su wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Avvia aggiornamento automatico" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Aggiornamento automatico fermato" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Aggiornamento automatico avviato" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Salva immagine statistiche" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Statistiche in linea di aMule" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "C'è stato un problema durante la stampa.\n" "La stampante potrebbe non essere impostata correttamente?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Stampa in corso" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, Statistiche di firma in linea di aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Basato su CAS di Pedro de Oliveira \n" "\n" "Distribuito con licenza GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh Oh, aMule non è in esecuzione..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule è in funzione" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule è in esecuzione, ma è disconnesso" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule si sta connettendo..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh oh, stato di aMule sconosciuto..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr "è stato in funzione per " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " è fermo !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " non è connesso !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " si sta connettendo..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " sta facendo qualcosa di strano, controllare!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " è connesso a " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "inattivo" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " è attivo " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " con " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Download totale: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Download sessione: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Download: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Condivisione: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " file, client in coda: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Tempo: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " attivo " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Carico medio del sistema (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Uptime del sistema: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Cartella contenente il file amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Inserire la cartella contenente il file amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Intervallo di aggiornamento in secondi" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Genera un'immagine delle statistiche ad ogni aggiornamento" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Inserire la cartella nella quale generare l'immagine delle statistiche" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Carica periodicamente l'immagine delle statistiche sul server FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "URL FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Percorso FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Inserire URL del tuo server FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "Inserire la directory del server FTP nella quale copiare l'immagine" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Utente" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Inserisci il nome utente per accedere al server FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Inserisci la password per accedere al server FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Intervallo di aggiornamento FTP in minuti" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Verifica" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Cartella contenente il file di firma" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Cartella nella quale generare l'immagine" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Carica modello " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Web server porta HTTP" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Usa l'UPnP port forwarding sulla porta del server web" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Porta UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Usa compressione gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Password per l'accesso pieno al web server" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Password per l'accesso Guest al web server" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Permetti l'accesso guest" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Vieta l'accesso guest" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Carica/salva le impostazioni del web server da/su l'aMule remoto" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Percorso del file di configurazione di aMule. Non usare direttamente!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Disabilita interprete PHP (deprecato)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Ricompila pagine PHP ad ogni richiesta" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Server web di aMule " #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "connessione web client accettata\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "ERRORE: impossibile accettare la connessione del client web\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Richiesta non riuscita per l'errore: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "File indice non trovato: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sessione scaduta - accesso richiesto\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sessione valida, utente registrato\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sessione valida, utente registrato\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Nessuna sessione aperta - richiesta di accesso\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sessione creata - richiesta di accesso\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Elaborazione richiesta [originale]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Nessuna password specificata, login fallito." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Verifica password\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Hash della password non valido\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Password valida\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Password errata\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" "Non hai inserito alcuna password e le password vuote non sono ammesse.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Disconnessone richiesta\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Elaborazione richiesta [rediretta]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Il file incompleto %s (%s) non ha file delle fonti" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Il file incompleto %s (%s) ha un file delle fonti vuoto" #~ msgid "Download status" #~ msgstr "Stato download" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Intervallo aggiornamento : %d secondo" #~ msgstr[1] "Intervallo aggiornamento : %d secondi" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "" #~ "I Commenti e i Ratings non sono ancora supportati nell'interfaccia remota." #~ msgid "Transferring" #~ msgstr "Trasferimento" #~ msgid "QR: ???" #~ msgstr "QR: ???" #~ msgid "QR: %u" #~ msgstr "QR: %u" #~ msgid "Only files currently uploading" #~ msgstr "Solo file attualmente in caricamento" #~ msgid "Queue Rank" #~ msgstr "Punteggio in coda" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - visualizzare l'avanzamento della ricerca" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Creo gli hash MD4 e AICH del file %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Creazione dell'hash MD4 per il file %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Creazione dell'hash AICH per il file %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "ATTENZIONE: impossibile rimuovere l'originale '%s' dopo aver creato il " #~ "backup" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "ATTENZIONE: impossibile eliminare %s" #~ msgid "%u" #~ msgstr "%u" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Giudizio (totale):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Cerca di trasferire parti complete per ogni upload" #~ msgid "Networks window" #~ msgstr "Finestra delle reti" #~ msgid "Searches window" #~ msgstr "Finestra delle ricerche" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Download in corso" #~ msgid "Shared files window" #~ msgstr "Finestra dei file condivisi" #~ msgid "Messages window" #~ msgstr "Finestra dei messaggi" #~ msgid "Statistics graph window" #~ msgstr "Finestra delle statistiche" #~ msgid "Preferences settings window" #~ msgstr "Finestra delle preferenze" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Icona nella traybar persa, tentativo di ricrearla ..." #~ msgid "Transfers" #~ msgstr "Trasferimenti" #~ msgid "Files transfers window" #~ msgstr "Finestra dei trasferimenti" #~ msgid "Unban" #~ msgstr "Rimuovi ban" #~ msgid "Show Uploads" #~ msgstr "Mostra upload" #~ msgid "Show Queue" #~ msgstr "Mostra coda" #~ msgid "Select View" #~ msgstr "Seleziona visuale" #~ msgid "Client Software" #~ msgstr "Software client" #~ msgid "Waited" #~ msgstr "Atteso" #~ msgid "Upload Time" #~ msgstr "Tempo upload" #~ msgid "Upload/Download" #~ msgstr "Upload/Download" #~ msgid "Remote Status" #~ msgstr "Stato remoto" #~ msgid "File Priority" #~ msgstr "Priorità file" #~ msgid "Score" #~ msgstr "Punteggio" #~ msgid "Asked" #~ msgstr "Richiesto" #~ msgid "Last Seen" #~ msgstr "Ultima volta visto" #~ msgid "Entered Queue" #~ msgstr "Aggiunto in coda" #~ msgid "Transferred Up" #~ msgstr "Inviati" #~ msgid "Transferred Down" #~ msgstr "Ricevuti" #~ msgid "Userhash" #~ msgstr "Hash utente" #~ msgid "Encrypted" #~ msgstr "Cifrato" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "Caricati %d flag bitmap." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Mostra Upload / Coda Upload" #~ msgid "Clients on queue :" #~ msgstr "Client in coda:" #~ msgid "Current Session" #~ msgstr "Sessione corrente" #~ msgid "Total" #~ msgstr "Totale" #~ msgid "Requested :" #~ msgstr "Richiesto:" #~ msgid "Create backup for preview" #~ msgstr "Crea una copia per l'anteprima" #~ msgid "Files Transfers Window" #~ msgstr "Finestra trasferimenti" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Utenti totali: %s | File totali: %s" #~ msgid "HTTP download thread ended" #~ msgstr "Processo di download HTTP terminato" #~ msgid "Host: %s:%i\n" #~ msgstr "Host: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Risposta: %i (Errore: %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "ATTENZIONE: Errore nella creazione del flusso" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "ERRORE: Codice di reindirizzamento ricevuto senza URL" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "" #~ "CIP2Country::CIP2Country(): Impossibile ottenere i dati sul Paese da " #~ msgid "Get IPFilter level." #~ msgstr "Visualizza livello del filtro IP." #~ msgid "Makes a search." #~ msgstr "Effettua una ricerca." #~ msgid "Killed!" #~ msgstr "Terminato!" #~ msgid "Using amuleweb in '%s'." #~ msgstr "Utilizzando amuleweb in '%s'." #~ msgid "Shutting down aMule..." #~ msgstr "aMule in chiusura..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Le seguenti opzioni sono state modificate in questa release per motivi di " #~ "sicurezza:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Attiva Offuscamento del protocollo per connessioni in ingresso e in " #~ "uscita.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Disattivato l'aggiornamento automatico della serverlist dagli altri " #~ "client e server.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Per ulteriori informazioni sui motivi di queste modifiche, vedere il\n" #~ " wiki di aMule su http://wiki.amule.org alla voce \"fake servers\".\n" #~ "È importante eliminare tutti i fake server dalla tua lista perché aMule " #~ "funzioni correttamente." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "In aggiunta, le impostazioni del browser son state riportate a quelle " #~ "predefinite di sistema. Se lo desideri, riconfigura le opzioni del tuo " #~ "browser\n" #~ msgid "Fetching status..." #~ msgstr "Verifica stato..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Utenti: E: %s K: %s | File E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Client %s con IP:Porta %s:%d utilizza %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() ha restituito NULL" #~ msgid "Firewalled" #~ msgstr "Firewalled" amule_2.3.1+git20151120.0023527bc2.orig/po/it_CH.po0000644000175000017500000071356312611472361017466 0ustar morphmorph# Italian_CH language translation # Kry , 2004,2005. # ilbuio , 2004,2005. # AnonimoVeneziano , 2004. # GhePeU , 2004,2005. # BELiAL , 2007. # Luca Pagliero # translation of it_CH.po to Italian # translation of source_strings.po to # aMule i18n resource file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2008-06-12 22:36+0100\n" "Last-Translator: Luca Pagliero \n" "Language-Team: Italian_CH\n" "Language: it_CH\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "X-Poedit-Language: Italian_CH\n" "X-Poedit-Country: ITALY\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Aggiungi amico" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Inserire un indirizzo IP e una porta validi!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informazione" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "L'hash utente specificato non e' valido!" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "Impossibile aprire %s (%s)" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" #: src/amule.cpp:229 #, fuzzy msgid "Now, exiting main app..." msgstr "" "\n" "Ok, uscita in corso da %s...\n" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Fallito" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 #, fuzzy msgid "aMule shutdown completed." msgstr "Download completato" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "Chiedi conferma prima di uscire" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "Accettata nuova connessione esterna" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "ATTENZIONE" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Le tue impostazioni di localizzazione sono state impostate a quelle " "predefinite dal sistema in conseguenza al cambio di configurazione. " "Spiacente." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Non hai alcun server nella lista dei server.\n" "Vuoi che aMule scarichi una lista ora?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Server list download" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Impossibile associare porte all'indirizzo specificato: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "La porta %u non e' disponibile. Otterrai un LowID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "La porta %u non e' disponibile!\n" "\n" "Otterrai un LowID\n" "\n" "Controlla le impostazioni di rete e verifica che la porta sia aperta in " "ingresso e in uscita." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Impossibile creare il file per la firma online" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Impossibile creare il file per la firma online di aMule" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "L'impostazione locale selezionata non sembra essere installata sul tuo " "computer (si tentera' ad impostarla in ogni caso)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "e' la prima che volta che avvii aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Questa e' una versione di prova, aggiornata quotidianamente, e\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "non garantiamo che essa non distrugga qualcosa, bruci la tua casa,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "o uccida il tuo cane. Ma *dovrebbe* essere comunque sicura.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Altre informazioni, supporto e nuove versioni possono essere trovate nella " "nostra homepage,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "www.aMule.org, o nel nostro canale IRC #aMule su irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Riportate ogni bug su http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "La directory scelta per contenere il file di firma online e' invalida!\n" "La firma online verra' pertanto disabilitata fino a quando il problema non " "sara' stato risolto attraverso il pannello delle preferenze." #: src/amule.cpp:1116 #, fuzzy msgid "Server hostname notified" msgstr "Nome server:" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "ERRORE: non posso aprire il file di log" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "ERRORE: il file di log e' vuoto. Qualcosa non va" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Il file di log e' stato cancellato" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Messaggio del server: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Impossibile scaricare la lista dei nodi." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Impossibile aprire il file per il controllo della versione scaricato" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "File per il controllo della versione corrotto" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Stai usando una versione non aggiornata di aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "La tua versione di aMule e' la %i.%i.%i e l'ultima e' la %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "L'ultima versione e' sempre disponibile su http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" "ATTENZIONE: La tua versione di aMuled e' obsoleta: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "La tua copia di aMule e' aggiornata" #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Impossibile scaricare il file per il controllo della versione" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Utenti: %s | Files: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Utenti: E: %s K: %s | Files: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Nessuna rete selezionata" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "con LowID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "con HighID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Connesso a %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Connessione in corso a %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad avviato." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad arrestato." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Connesso alla rete Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Connesso alla rete Kad (firewalled)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Disconnesso dalla rete Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "La rete Kad non puo' essere utilizzata se la porta UDP e' disattivata dalle " "opzioni." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Rete Kad disattivata dalle opzioni, non mi connetto." #: src/amuled.cpp:589 #, fuzzy msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ERRORE: il demone di aMule non puo' essere usato se le connessioni esterne " "sono disattivate. Per abilitare le connessioni esterne, puoi usare un aMule " "normale, far partire amuled con l'opzione --ec-config o impostare la voce " "\"AcceptExternalConnections\" a 1 nel file ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "ERRORE: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Questo e' aMule %s basato su eMule" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "In esecuzione su %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Visita http://www.amule.org per sapere se e' disponibile una nuova versione" #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ERRORE FATALE: Creazione Timer fallita" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Controllo remoto di aMule " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Snapshot:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Routing peer-to-peer basato sulla metrica XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Messaggio" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Connessione in corso" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Connessione in corso" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Connesso" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Con Firewall" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Connesso" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Connessione in corso" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Spento" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Annulla" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Ferma i tentativi di connessione in corso" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Disconnetti" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Disconnetti dalla reti attualmente connesse" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Connetti" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Connetti alle reti attualmente abilitate" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Up: %.1f(%.1f) | Down: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Up: %.1f | Down: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Connesso)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Disconnesso)" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "Vuoi veramente uscire da aMule?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Chiedi conferma prima di uscire" #: src/amuleDlg.cpp:1174 #, fuzzy msgid "Launch Command: " msgstr "Comando: %s" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "La directory delle skin '%s' non esiste" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "ATTENZIONE: Impossibile aprire il file della skin '%s' in lettura" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Reti" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Finestra reti" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Ricerca" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Finestra ricerche" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Download" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "Download in corso" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Files condivisi" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Finestra file condivisi" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Messaggi" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Finestra messaggi" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistiche" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Finestra grafici e statistiche" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Preferenze" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Finestra Impostazione preferenze" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importazione" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Strumento per l'importazione dei partfile" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Informazioni" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Informazioni/Aiuto" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Rete eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "rete Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "nessuna rete" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "ERRORE FATALE: impossibile creare il timer" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Connessione ad aMule remoto" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "ERRORE FATALE: impossibile creare il timer" #: src/amule-remote-gui.cpp:274 #, fuzzy msgid "Going to event loop..." msgstr "Tentativo di recupero informazioni sul file..." #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "Connessione in corso" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Connessione fallita " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Tutto" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Sconosciuto" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Impossibile ricevere i file condivisi dall'utente '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (falso eMule versione %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (falso eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (falso eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (basato su eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Nickname: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Richiesto: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statistiche file per questa sessione: accettata %d di %d richiesta, %s " "trasferita\n" msgstr[1] "" "Statistiche file per questa sessione: accettate %d di %d richieste, %s " "trasferite\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statistiche file per tutte le sessioni: accettata %d di %d richiesta, %s " "trasferita\n" msgstr[1] "" "Statistiche file per tutte le sessioni: accettate %d di %d richieste, %s " "trasferite\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Richiesto file sconosciuto" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Messaggio da '%s' (IP:%s) filtrato" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nuovo messaggio da '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "L'utente %s (%u) ha richiesto la lista dei file condivisi nella directory %s " "-> richiesta negata" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, fuzzy, c-format msgid "WARNING: %s cannot be opened." msgstr "Attenzione: impossibile aprire known.met." #: src/CanceledFileList.cpp:61 #, fuzzy msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "Attenzione: lista dei files conosciuti corrotta, potrebbe contenere un " "header non valido." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "Errore IO durante la lettura del file known.met: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "Errore nel salvataggio del file known.met: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Categoria" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nuova categoria" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Scegli una directory per i file scaricati" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Devi specificare un nome per la categoria!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Devi specificare un percorso per la categoria!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Impossibile creare una directory per i file in ingresso per questa " "categoria. Specifica un percorso valido!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Sessione di chat iniziata: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Connesso al client ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Connessione al client in corso ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Impossibile connettersi al client / Connessione persa ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Chiudi tab" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Chiudi tutti i tab" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Chiudi altri tab" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Inserisci tra gli amici" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Il file dei crediti e' stato caricato, %u client conosciuto" msgstr[1] "Il file dei crediti e' stato caricato, %u client conosciuti" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Crediti scaduti per %u client!" msgstr[1] " - Crediti scaduti per %u clients!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "" "Non e' stato trovato il file 'cryptkey.dat', creazione del file in corso." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Dettagli client" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Abilitato" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Supportato" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Non supportato" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Disabilitato" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Connesso" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Disconnesso" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Non completo" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Cattivo" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Verificata - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Non disponibile" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "L'utente %s (%u) ha richiesto la lista dei file condivisi -> richiesta " "accettata" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "L'utente %s (%u) ha richiesto la lista dei file condivisi -> richiesta negata" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "L'utente %s (%u) ha richiesto la lista delle directory condivise -> " "richiesta accettata" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "L'utente %s (%u) ha richiesto la lista delle directory condivise -> " "richiesta negata" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "L'utente %s (%u) ha richiesto la lista dei file condivisi nella directory %s " "-> richiesta accettata" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "L'utente %s (%u) ha richiesto la lista dei file condivisi nella directory %s " "-> richiesta negata" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "L'utente %s (%u) condivide la directory %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" "L'utente %s (%u) ha inviato una lista delle directory condivise non " "richiesta." #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "L'utente %s (%u) ha inviato la lista dei file condivisi nella directory %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "L'utente %s (%u) ha finito di inviare la lista dei file condivisi" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "L'utente %s (%u) ha inviato una lista di file condivisi non richiesta" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "L'utente %s (%u) ha negato l'accesso alla lista dei file e directory " "condivisi" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Commenti file" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Nome utente" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Nome file" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Giudizio" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Commento" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Nessun commento" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u commento" msgstr[1] "%u commenti" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Bassa]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Alta]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Molto bassa" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Bassa" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normale" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Alta" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Molto alta" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Release" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Richiesta in corso" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Connessione in corso attraverso il server" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Coda piena" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "In coda" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Download in corso" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Ricezione hashset in corso" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Nessuna parte utile" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Impossibile connettere LowID ad altro LowID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Troppe connessioni" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Connessione via Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Troppe connessioni Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Bannati" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Errore di connessione" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Coda piena" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Vecchio MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Nuovo MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule compatibile" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Server locale" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Server remoto" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Scambio fonti" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passiva" #: src/DataToText.cpp:133 msgid "Link" msgstr "Link" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Fonti salvate" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Completati" #: src/DataToText.cpp:146 msgid "In progress" msgstr "In corso" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "In coda" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Download gia' in corso" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Formato del file temp sconosciuto o errato." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Dimensione" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Trasferiti" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Velocita'" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Avanzamento" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Fonti" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Priorita'" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Stato" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Tempo rimanente" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Ultima fonte completa vista" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Ultima ricezione" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Sei sicuro di voler cancellare il file selezionato?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Sei sicuro di voler cancellare i files selezionati?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Feedback da: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Stop" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pausa" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Continua" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "&Rimuovi file completati" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Sposta ogni A4AF su questo file" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Sposta ogni A4AF su questo file (Auto)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Sposta ogni A4AF sugli altri file" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Opzioni avanzate" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Anteprima" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Mostra &dettagli file" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Mostra tutti i commenti" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Copia URI magnet negli appunti" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Copia il &link eD2k negli appunti" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Copia feedback negli appunti" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "rimuovi" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Assegna a categoria" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Apri file" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Inserisci un nuovo nome per questo file:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Rinomina file" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Download (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Anteprima" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "ERRORE: impossibile eseguire il media player esterno! Comando: '%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "Caricamento file server.met: %s" #: src/DownloadQueue.cpp:132 #, fuzzy, c-format msgid "Loading PartFile %u of %u" msgstr "Caricamento dati da vecchio file in download (%u su %u)" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Non e' stato trovato alcun file incompleto" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Trovato %u file part." msgstr[1] "Trovati %u files part." #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Download di %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Stai gia' cercando di scaricare il file '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Hai gia' il file '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Stai gia' cercando di scaricare il file '%s'" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Protocollo del link %s sconosciuto" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "" #: src/ExternalConn.cpp:261 #, fuzzy msgid "Client sent packet after authentication failed." msgstr "Autenticazione fallita" #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Connessione esterna chiusa" #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Connessioni esterne disabilitate perche' la password e' vuota!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Connessioni esterne disabilitate nel file di configurazione" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Accettata nuova connessione esterna" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "ERRORE: non posso accettare una nuova connessione esterna" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Connessione esterna rifiutata perche' la password nelle preferenze e' vuota!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Connessione al client: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Versione sconosciuta" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "ID della versione EC non corretto, potrebbe esserci un'incompatibilita' " "binaria. Usare core e client remoto dello stesso snapshot." #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Non puoi connetterti a una versione finale da una versione CVS qualsiasi! " "*sigh* possibile crash evitato" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Versione protocollo non valida" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Tag versione di protocollo mancante" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 #, fuzzy msgid "Authentication failed: wrong password." msgstr "Autenticazione fallita" #: src/ExternalConn.cpp:512 #, fuzzy msgid "Authentication failed: missing password." msgstr "Autenticazione fallita" #: src/ExternalConn.cpp:522 #, fuzzy msgid "Invalid request, please authenticate first." msgstr "Richiesta non valida, prima devi autenticarti" #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Accesso consentito" #: src/ExternalConn.cpp:535 #, fuzzy, c-format msgid "Sent error message \"%s\" to client." msgstr "Filtra i messaggi da client sconosciuti" #: src/ExternalConn.cpp:538 #, fuzzy, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Tentativo di accesso non autorizzato. Connessione chiusa." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "Comando Partfile remoto fallito: hash del file non trovato: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Hash del file non trovato: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OOPS! errore nel processare l'opcode!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Server non aggiunto" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "server non trovato: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "e' necessario definire Il server da rimuovere" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k è disabilitata nelle preferenze." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Ricerca in corso. Risultati in arrivo!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Non ha senso usare la ricerca Web da interfaccia remota." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Niente punti per il grafico." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Il tuo client non e' configurato per questo livello di dettaglio." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Sto gia' uscendo." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "ExternalConn: aggiungo il link '%s'" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Link non valido o gia' nella lista." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "File non trovato." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Nome file non valido." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Impossibile rinominare il file." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "La rete Kad e' disabilitata nelle Preferenze." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Gia' connesso alla rete Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Connessione alla rete Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Tutte le reti sono disabilitate." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Disconnesso dalla rete Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Opcode non valido (versione errata del protocollo?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Estensione '%s' sconosciuta per il comando '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Comando sconosciuto '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Questo comando non puo' avere un argomento.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Questo comando richiede un argomento.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Questo comando e' incompleto, devi usare una delle estensioni qui " "riportate.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Estensioni disponibili:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Comandi disponibili:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Tutti i comandi possono essere digitati in maiuscolo o minuscolo.\n" "Digitare '%s ' per avere informazioni dettagliate su .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Esce dall'applicazione." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Mostra aiuto." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Per avere aiuto su un comando, digitare 'help '.\n" "Per avere la lista completa dei comandi, digitare 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Usa '%s' per la lista dei comandi\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Errore di sintassi!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Errore nell'eseguire il comando - cio' non dovrebbe mai accadere! Per " "favore, segnala il bug\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Questo comando non deve avere parametri." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Questo comando richiede un parametro." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Argomento non valido." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Questo comando e' incompleto." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Digita '%s' per avere altro aiuto.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Questo e' %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Questo e' %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Creazione del client in corso...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, uscita in corso da %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Non posso connettermi con una password vuota.\n" "Devi specificare una password nel file di configurazione oppure\n" "nella linea di comando, o inserirne una quando richiesto.\n" "\n" "Sto uscendo...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Mostra questo suggerimento" #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Host su cui aMule e' in esecuzione (default: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Porta di aMule per le connessioni esterne (default: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Password connessioni esterne" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Leggi la configurazione da file" #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Non stampare output sullo stdout" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Verboso - mostra anche i messaggi di debug" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Imposta la localizzazione (lingua) del programma" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Salva le opzioni linea di comando nel file di configurazione" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Crea un file di configurazione basato su quello di aMule" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Mostra la versione del programma" #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Dettagli file" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% completato" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Amici" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Mostra &Dettagli" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Aggiungi amico" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Rimuovi amico" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Invia &Messaggio" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Visualizza file" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Crea slot amico" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Sei sicuro di voler cancellare l'amico selezionato?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Sei sicuro di voler cancellare gli amici selezionati?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Non puoi assegnare piu' di uno slot amico.\n" "Assegnato un solo slot" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Selezione multipla" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Invia messaggio all'utente" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Messaggio da inviare:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Elimina dagli amici" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Invia messaggio" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Sposta su questo file" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "QR: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Altro file richiesto" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Upload in attesa: %s" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "In coda" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Upload" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "Nessuno" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "No" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Si'" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Scaricamento in corso..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "ATTENZIONE: Impossibile aprire il file della skin '%s' in lettura" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "Scaricato" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "Riconnetti al server" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "Impossibile scaricare la lista dei server da %s" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Impossibile scaricare la lista dei server da %s" #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Carico i filtri IP da 'ipfilter.dat' e 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "Impossibile caricare il file ipfilter.dat '%s', trovato formato sconosciuto." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Impossibile caricare il file ipfilter.dat '%s', impossibile aprire il file." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Caricato %u intervallo di IP da '%s'." msgstr[1] "Caricati %u intervalli di IP da '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u riga non valida e' stata scartata." msgstr[1] "%u righe non valide sono state scartate." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Bootstrap da\n" "client noti" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nodi (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "IP non valido per il bootstrap" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Porta non valida per il bootstrap" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Completa tutti i campi obbligatori" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Sei sicuro di voler scaricare un nuovo file nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Cosi' facendo, rimuoverai i nodi attuali e riavvierai la connessione " "Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Continuare?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: chiave di ricerca troppo corta" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Letto %u contatto Kad" msgstr[1] "Letti %u contatti Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Scritto %d contatto Kad" msgstr[1] "Scritti %d contatti Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Nome file" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Dimensione" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Rapporto di condivisione" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Inviato" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Richiesto" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Accettato" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Sorgenti complete" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Versione sconosciuta" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "ATTENZIONE: Impossibile aprire il file della skin '%s' in lettura" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Hashing in corso" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "In completamento" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Completo" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "In pausa" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Errato" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "In attesa" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Devi specificare una password non vuota." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Password non valida, non e' un hash MD5!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Connessione fallita" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "Connessione EC fallita. Risposta vuota." #: src/libs/ec/cpp/RemoteConnect.cpp:258 #, fuzzy msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "Connessione esterna: Risposta errata dal server. Connessione chiusa." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Fatto! Connessione stabilita con aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Fatto! Connessione stabilita" #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Connessione esterna: Accesso negato perché:" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "Connessione esterna: Accesso negato" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Thread di sincronizzazione avviato." #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "ERRORE: Non posso ricevere dalla porta TCP." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Chiudi" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Taglia" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Copia" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Incolla" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Pulisci" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Seleziona tutto" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Illimitato" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Menu nel systray" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "UL: nessuno" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "UL: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DL: nessuno" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DL: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Informazioni client" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Nickname: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Nessun nickname selezionato!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID Client: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Non connesso" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Nome server: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP server: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Non connesso" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Firma online: abilitata" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Firma online: disabilitata" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Uptime: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "DL totale: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "UL totale: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Nascondi" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Mostra" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Esci" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Invia" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Gli eventi sono visualizzati qui. Per la lista completa, controllare il log " "nella tab dei Server" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Caricamento in corso..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Numero di utenti presenti sul server al quale sei connesso..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Utenti: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "Utenti connessi al server attuale e stima del numero totale di utenti" #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Up: 0.0 | Down: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Medie attuali di upload e download. Se l'opzione e' stata abilitata i numeri " "tra parentesi indicano l'overhead dovuto alla comunicazione tra client" #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Mostra lo stato attuale di connessione e i trasferimenti attivi. Le frecce " "rosse indicano che attualmente non sei connesso, le frecce gialle indicano " "che hai un LowID (probabilmente il tuo pc e' diestro un firewall) e le " "frecce verdi indicano che hai un HighID (la miglior connessione possibile)" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Non connesso..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Server attualmente connesso" #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Cerca" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Nome:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tipo" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Locale" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Globale" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "FileHash" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Parametri avanzati" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtraggio" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Tipo file" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Qualsiasi" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Archivi" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Immagini CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Immagini" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programmi" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Testi" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Video" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Estensione" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Dimensione minima" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Dimensione massima" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Disponibilita'" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filtro:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filtra risultati" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Inverti risultati" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Nascondi file conosciuti" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Inizia" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Ancora" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Ferma" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Download" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Azzera campi" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Risultati" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Rimuovi download completati" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Sorgenti complete" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Generale" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Nome completo:" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/D" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "File met:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Dimensione file:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Stato file part:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Ultima volta visto completo:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Trasferimento" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Fonti trovate:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Fonti in trasferimento:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Numero parti:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Disponibili:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Velocita':" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Download Active Time: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Trasferiti:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Completati:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Intelligent Corruption Handling" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Perdita per corruzione:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Guadagno per compressione:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Pacchetti recuperati da ICH:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Nomi file" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Sovrascrivi" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Pulisci" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Applica" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Commenta/Giudica il file (il testo sara' visibile a tutti gli utenti)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Qualita' file" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Senza voto" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Non valido / Corrotto / Falso" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Mediocre" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Discreto" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Buono" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Eccellente" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Giudica il file o avvisa gli altri utenti se il file non e' quello " "corretto..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Aggiorna" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Download in corso, attendere prego..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Dimensione sconosciuta" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Informazioni richieste" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Indirizzo IP:" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Porta:" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Informazioni aggiuntive" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Nome utente:" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Hash utente:" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Aggiungi" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Velocita' download" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Corrente" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Media attuale" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Media sessione" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Velocita' upload" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Connessioni" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Download attivi" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Connessioni attive (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Upload attivi" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Albero statistiche" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Nome utente:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Hash utente:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Software client:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Versione client:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Indirizzo IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID utente:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP server:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Nome server:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Offuscamento:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Trasferimenti al client" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Richiesta attuale:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Velocita' media upload:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Velocita' media download:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Inviati nella sessione:" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Scaricati nella sessione:" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Inviati in totale:" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Scaricati in totale:" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Punteggi" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Modificatore DL/UL:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Identificazione sicura" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "In coda" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Punteggio in coda:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Nick" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" "Questo e' il nome che gli altri utenti visualizzeranno quando saranno " "connessi con te" #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Intervallo di tempo prima che vengano mostrati i popup" #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Scelta della lingua utilizzata" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Verifica la disponibilita' di nuove versioni all'avvio" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Abilitare questa opzione fara' si' che aMule all'avvio verifichi la " "disponibilita' di nuove versioni" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Avvia ridotto ad icona" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "" "Abilitando questa opzione, aMule si minimizzera' automaticamente all'avvio" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Chiedi conferma prima di uscire" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Abilita icona nel systray" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" "Abilita o disabilita l'icona nella system tray o nella barra delle " "applicazioni" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Icona per la System Tray" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Abilitando questa opzione aMule verra' minimizzato nella System Tray invece " "che nella barra delle applicazioni" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Selezione browser:" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Sfoglia" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Apri in un nuovo tab se possibile" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Se possibile, apri la pagina web in un nuovo tab invece che in una nuova " "finestra" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Riproduttore video" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Upload" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Allocazione slot" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ed2k" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Connetti automaticamente all'avvio" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Riconnetti dopo perdita connessione" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Rimuovi server inattivi dopo" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "tentativi" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Lista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Usa sistema di priorita'" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Usa controllo intelligente del LowID in fase di connessione" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Connessione sicura" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Connetti automaticamente solo ai server statici" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Assegna priorita' alta ai server aggiunti manualmente" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Aggiungi i nuovi file da scaricare mettendoli in pausa" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Aggiungi i nuovi file da scaricare con priorita' automatica" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Cerca di scaricare prima la parte iniziale e finale del file" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Della stessa categoria" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Inserire lo spazio disco minimo desiderato" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Salva 10 fonti per i file rari (< 20 fonti)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Upload" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Assegna priorita' automatica ai nuovi file condivisi" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(clicca col tasto destro sulle icone per condividere ricorsivamente)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Condividi file nascosti" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafici" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Intervallo di aggiornamento: 5 secondi" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Intervallo grafico valori medi: 100 minuti" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Scala grafico connessioni: 100 " #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Sfondo" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Griglia" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Download corrente" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Media download in corso" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Media sessione di download" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Upload corrente" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Media upload in corso" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Media sessione di upload" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Connessioni attive" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Barra della velocita' nell'icona systray" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Nodi Kad attuali" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Nodi Kad attivi" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Nodi Kad nella sessione" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Seleziona" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Numero di versioni di client visualizzate (0=illimitate)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! ATTENZIONE !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Numero massimo nuove connessioni / 5 secondi" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Dimensione buffer file: 240000 bytes" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Dimensione coda upload: 5000 client" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Intervallo aggiornamento connessione al server: disabilitato" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Mosta informazioni estese sulle schede delle categorie" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Mostra velocita' di trasferimento nella barra del titolo" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Mostra velocita' di trasferimento nella barra del titolo" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Orientamento verticale della barra degli strumenti" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Piatta" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Arrotondata" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule ordinera' automaticamente le colonne nella lista dei download" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parametri connessioni esterne" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Accetta connessioni esterne" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Inserisci un IP valido nel formato a.b.c.d per l'interfaccia di ascolto EC. " "Lasciare il campo vuoto oinserire 0.0.0.0 significa qualsiasi interfaccia." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Abilita il port forwarding UPnP sulla porta EC" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Password" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Web template" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Password per diritti completi" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Abilita utente con diritti limitati" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Password per diritti limitati" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Intervallo di aggiornamento pagina (in sec)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Abilita compressione gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Clicca qui per applicare le modifiche apportate alle impostazioni" #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Annulla ogni modifica alle preferenze" #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Titolo:" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Commento:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Directory file scaricati:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Cambia priorita' per i nuovi files assegnati:" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "Non cambiare" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Seleziona colore per questa categoria (attualmente selezionata):" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Pulisci" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Clicca su questo pulsante per cancellare il log" #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Clicca qui per aggiornare la lista dei server dall'indirizzo..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Inserisci l'url di un file server.met e premi il pulsante a sinistra per " "aggiornare la lista dei server conosciuti" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Inserisci qui il nome di un nuovo server" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Porta" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Inserisci qui l'IP del server, nel formato x.x.x.x" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Inserisci qui la porta del server" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Aggiungi server (riempi campi a sinistra)..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Log di aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Informazioni server" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Informazioni ed2k" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Informazioni Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" "Clicca su questo pulsante per aggiornare la lista dei nodi da un URL..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nodi (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Inserisci l'URL di un file nodes.dat e premi il pulsante a sinistra per " "aggiornare la lista dei nodi conosciuti." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Statistiche nodi" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Bootstrap" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Nuovo nodo" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Porta:" #: src/muuli_wdr.cpp:2763 #, fuzzy msgid "Bootstrap from known clients" msgstr "" "Bootstrap da\n" "client noti" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Disconnetti rete Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Utilizza la Secure User Identification" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "E' raccomandato abilitare questa opzione. Non riceverai crediti se la SUI " "non è abilitata." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Offuscamento del Protocollo" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Supporta Offuscamento del Protocollo" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Questa opzione abilita l'Offuscamento del Protocollo, e fa si che aMule " "accetti connessioni offuscate dagli altri client." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Utilizza offuscamento per le connessioni in uscita" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Questa opzione fa si che aMule utilizzi l'offuscamento del protocollo quando " "si collega ad altri client/server." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Accetta SOLO connessioni offuscate" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Attivando questa opzione aMule accettera' solo connessioni offuscate. Avrai " "meno fonti, ma tutto il tuo traffico sara' offuscato" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Chiunque" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" "Seleziona chi puo' richiedere di vedere la lista dei tuoi file condivisi" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Filtraggio IP" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtra i client" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "Filtra i client in base agli ip contenuti in ~/.aMule/ipfilter.dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtra i server" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "Filtra i server in base agli ip contenuti in ~/.aMule/ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Ricarica lista" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "Ricarica lista degli IP da filtrare dal file ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Aggiorna ora" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Aggiorna ipfilter all'avvio" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Livello filtraggio:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Filtra sempre gli IP di una LAN" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Gestione paranoica degli IP 'non-matching'" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Rifiuta pacchetto se l'IP del Client e' diverso dall'IP da cui arriva il " "pacchetto. Utilizzare con cautela." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Utilizza il file ipfilter.dat di sistema se disponibile" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Se non esiste un file ipfilter.dat locale, consenti utilizzo di un file " "ipfilter.dat di sistema" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Abilita firma online" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Abilita la scrittura del file OS che puo' essere usato da applicazioni " "esterne per creare firme e simili" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Frequenza di aggiornamento (secondi):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" "Cambia la frequenza (in secondi) degli aggiornamenti della firma online" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Clicca qui per selezionare la directory che contiene i file di firma online" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtra messaggi in arrivo (tranne per la chat in corso):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtra tutti i messaggi" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtra i messaggi da utenti che non sono nella tua lista degli amici" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtra i messaggi da client sconosciuti" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtra i messaggi che contengono (usa ',' come separatore):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "aggiungi qui le parole che aMule filtrera' rimuovendo i messaggi che le " "contengono" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Commenti" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtra i commenti contenenti (usa ',' come separatore):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Connessione automatica al server senza proxy" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Abilita autenticazione" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Abilita o disabilita l'autenticazione con username e password" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Username utilizzato per la connessione al proxy" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Password:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "La password usata per la connessione al proxy" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Abilita proxy" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Abilita o disabilita il supporto proxy" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Tipo proxy:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Indirizzo proxy:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Il nome host del proxy" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Porta proxy:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "La porta del proxy" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Connetti a:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Login su aMule remoto" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Nome utente" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Ricorda impostazioni" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Abilita il log dettagliato dei messaggi di debug" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Apri file" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Categorie messaggi:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "In attesa..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Aggiunge importazioni" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Riprova selezionati" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Rimuvi selezionati" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Upload attivi:" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Non mostrare file condivisi" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Seleziona filtro di visualizzazione" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Upload attivi" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Mostra client" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Ricarica lista" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Ricarica file condivisi" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Invia" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Invia messaggio specificato" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Chiude questa sessione di chat" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Connetti a qualsiasi server e/o a Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "File condivisi" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Disabilitato [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/s" msgstr[1] "bytes/s" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "sec" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "min" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "ore" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "giorni" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "tutti" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "tutti gli altri" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Incompleti" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Fermo" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Archivi" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Testo" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Attivo" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Importazione %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Lettura directory dei file temporanei" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Recupero informazioni di base dal file info del download" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Creazione file di destinazione" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Caricamento dati da vecchio file in download (%u su %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Salvataggio blocchi di dati in un singolo file (%u su %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Recupero informazioni fonti e file in download in corso" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Aggiunta download e salvataggio nuovo partfile in corso" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importa partfile" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Stato" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Filehash" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Disco: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Scegli una directory in cui cercare download temporanei! (le sottodirectory " "saranno incluse)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Vuoi che le fonti per i download importati con successo siano cancellate?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Rimuovi fonti?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "ERRORE: impossibile creare il file .part)" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Caricamento del backup del file met da %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "ERRORE: %s (%s) e' corrotto (tagcount non corretto), impossibile caricare il " "file." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Tentativo di recupero informazioni sul file..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Recupero file senza nome - tentativo di recupero come RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Recuperate tutte le informazioni disponibili :D - Tentativo di utilizzo in " "corso..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Impossibile recuperare le informazioni sul file :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Impossibile aprire %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "Errore durante il salvataggio del file incompleto: %s (%s ==> %s)" #: src/PartFile.cpp:904 #, fuzzy msgid "IO failure while saving partfile: " msgstr "Errore durante il salvataggio del file incompleto: %s (%s ==> %s)" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Non posso ottenere la lunghezza di '%s' - sto usando il file %s" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' e' per qualche motivo di dimensione 0 - uso il file %s" #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Impossibile salvare il file part.met.seeds per %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Salvata %i fonte per il file incompleto: %s (%s)" msgstr[1] "Salvate %i fonti per il file incompleto: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Salvata %i fonte per il file incompleto: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Errore nella lettura del file delle fonti del partfile (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Trovata parte corrotta (%d) in %d parte %s - FileResultHash |%s| FileHash |%" "s|" msgstr[1] "" "Trovata parte corrotta (%d) in %d parti %s - FileResultHash |%s| FileHash |%" "s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Trovata parte completata (%i) in %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Nuovo hashing completato %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Download completato: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Cancellazione file: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" "ATTENZIONE: non c'e' abbastanza spazio libero su disco! Metto in pausa il " "file: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "La parte di file scaricata %i e' corrotta in: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: recuperata parte corrotta %i in %s -> risparmiati byte: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Scaricato" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "" #: src/Preferences.cpp:632 msgid "System default" msgstr "Predefinita di sistema" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albanese" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabo" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "Estone" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Basco" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgaro" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Catalano" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Cinese (semplificato)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Cinese (tradizionale)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Croato" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Ceco" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Danese" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Olandese" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Inglese (U.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estone" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finlandese" #: src/Preferences.cpp:648 msgid "French" msgstr "Francese" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galiziano" #: src/Preferences.cpp:650 msgid "German" msgstr "Tedesco" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Greco" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Ebraico" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Ungherese" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italiano" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italiano (Svizzera)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Giapponese" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Coreano" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lituano" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norvegese" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polacco" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portoghese" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portoghese (brasiliano)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Albanese" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Russo" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Sloveno" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Spagnolo" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Svedese" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turco" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Lingua" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Non disponibile" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "La porta TCP non puo' essere superiore a 65532 perche' il socket UDP e' " "fissato a TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Verra' usata la porta di default (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Connessione" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Directory" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Server" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "File" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Sicurezza" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Controlli remoti" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Firma Online" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Eventi" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Debug" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Non modificate queste impostazioni se non sapete\n" "esattamente cosa state facendo: potreste ottenere\n" "effetti indesiderati.\n" "\n" "aMule funzionera' anche senza modificare questi parametri." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Il tipo di proxy a cui ti stai connettendo" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule deve essere riavviato per rendere effettive queste modifiche:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- Modifica della porta TCP.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- Modifica della porta UDP.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Connessione esterna chiusa" #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Accettata nuova connessione esterna" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Connessione esterna chiusa" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Offuscamento del Protocollo" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Hai abilitato le connessioni esterne senza pero' specificare una password.\n" "Le connessioni esterne non possono essere abilitate a meno che tu non scelga " "una password valida" #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Modifica della lingua.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Modifica della cartella Temp.\n" #: src/PrefsUnifiedDlg.cpp:657 #, fuzzy msgid "- ED2K network enabled.\n" msgstr "Tutte le reti sono disabilitate." #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Le reti eD2k e Kad sono entrambe disabilitate.\n" "Non potrai connetterti finché non ne abiliterai almeno una." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad non puo' partire se la porta UDP e' disabilitata.\n" "Abilitala o disabilita Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "DEVI riavviare aMule ADESSO.\n" "Se non lo fai, non lamentarti se succede qualcosa di brutto.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "La tua lista di aggiornamento automatico dei server e' vuota.\n" "Inserisci l'URL di almeno un server valido nel file server.met.\n" "Clicca sul pulsante \"Lista\" per inserire l'URL" #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "File temporanei" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "File completi" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Firme online" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Scegli una directory per i %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Sfoglia per trovare un riproduttore video" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Scegli browser" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Eseguibile%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Modifica la lista dei server" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Inserisci l'URL da cui scaricare il file server.met.\n" "Solo un URL per riga" #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Intervallo aggiornamento: %d secondo" msgstr[1] "Intervallo aggiornamento: %d secondi" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Intervallo grafico della media: %d minuto" msgstr[1] "Intervallo grafico della media: %d minuti" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Scala grafico delle connessioni: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Dimensione buffer file: %d byte" msgstr[1] "Dimensione buffer file: %d bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Dimensione coda upload: %d client" msgstr[1] "Dimensione coda upload: %d clients" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Intervallo aggiornamento connessione ai server: %d minuto" msgstr[1] "Intervallo aggiornamento connessione ai server: %d minuti" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Intervallo aggiornamento connessione ai server: disabilitato" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "disabilita" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "Esegui comando se si verifica l'evento '%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Abilita l'esecuzione del comando sul core" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Comando Core:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Abilita l'esecuzione del comando sulla GUI" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Comando GUI:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Le seguenti variabili saranno sostituite:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "Min size deve essere piu' piccola di max size. Ignoro max size." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Search warning" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Principale" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "" "Impossibile effettuare una ricerca sulla rete Kad senza esserci connessi" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Errore imprevisto durante la ricerca su Kad: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ID File" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "File" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Download nella categoria" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Aggiungi URL per questo file" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Segna come file conosciuto" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Copia il link eD2k negli appunti" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "Annulla" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Impossibile collegarsi ai server con offuscamento di protocollo. Ci riprovo " "senza offuscamento." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Impossibile connettersi a tutti i server in lista. Procedo con un altro " "tentativo" #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Connesso a %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Connessione stabilita con: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Errore fatale durante il tentativo di connessione. La connessione a internet " "potrebbe non essere attiva" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Persa connessione a %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) sembra essere morto" #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) sembra essere pieno" #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Riconnessione automatica al server tra %d secondo" msgstr[1] "Riconnessione automatica al server tra %d secondi" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Connessione persa" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Connessione a %s (%s:%i) fallita" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Connessione a %s (%s:%i) fallita per time-out" #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Caricamento file server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "File server.met non trovato!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Impossibile caricare il file server.met '%s', trovato formato sconosciuto." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Impossibile aprire il file server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Server.met corrotto, trovato tag di versione non valido: 0x%x, dimensione %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "Trovato %i server nel file server.met" msgstr[1] "Trovati %i servers nel file server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "Aggiunto %d server" msgstr[1] "Aggiunti %d servers" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "Errore IO durante la lettura del file known.met: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Server non aggiunto: [%s:%d] non specifica una porta valida" #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Server non aggiunto: l'IP di [%s:%d] e' filtrato o non valido" #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Server non aggiunto: server con corrispondente IP:Porta [%s:%d] trovato " "nella lista" #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Server aggiunto: server [%s:%d] con il nome '%s'" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "Sei connesso al server che vuoi cancellare. Disconnettiti prima" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Impossibile aprire '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Impossibile salvare il file server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "URL non valido" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "Completato scaricamento lista server da %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Iniziato scaricamento lista server da %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "Nessun URL di file server.met valido in addresses.dat" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Impossibile scaricare la lista dei server da %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Il server locale e' filtrato da IPFilter, mi connetto ad un altro server!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Nome server" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Indirizzo" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Porta" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Descrizione" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Utenti" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Statico" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versione" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Sei connesso al server che stai cercando di cancellare. Disconnettiti prima. " "Il server NON e' stato cancellato" #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(nome sconosciuto)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Sei sicuro di voler cancellare il server statico %s?" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Server (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Server" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Connesso al server" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Marca il server come statico" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Marca il server come non statico" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Marca i servers come statici" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Marca i servers come non statici" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Rimuovi server" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Rimuovi servers" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Elimina tutti i server" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Copia i link eD2k negli appunti" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Riconnetti al server" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Sei sicuro di voler cancellare tutti i server?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Sei sicuro di voler cancellare il server selezionato?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Sei sicuro di voler cancellare i server selezionati?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Il nuovo clientID e' %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "ATTENZIONE: Hai ricevuto un ID Basso!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tProbabilmente perche' il tuo pc e' dietro un firewall o router." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPer altre informazioni visita http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Ricevute informazioni sconosciute dal server! - troppo corto" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Ricevuto %d nuovo server" msgstr[1] "Ricevuti %d nuovi servers" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Salvataggio della lista dei server completato" #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Il server ha rifiutato l'ultimo comando" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Pacchetto bogus ricevuto dal server: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Errore non gestito durante l'elaborazione del pacchetto dal server: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" "Non e' possibile creare un thread per risolvere il DNS per connettersi a %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "L'ip del server %s (%s) e' filtrato. Connessione bloccata." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "utilizzo offuscamento del protocollo." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Connessione a %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" "Non e' possibile risolvere il DNS per il server %s: impossibile connettersi!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Server non aggiunto: non e' stato specificato l'IP o il nome dell'host" #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Server non aggiunto: porta del server specificata non valida" #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Stato Kademlia:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "In esecuzione su %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Attivo" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Stato:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Stato connessione:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "Stato connessione:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Stato firewalled: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Nessun amico" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "Connesso all'amico" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "Connesso all'amico" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "Mantieni fonti" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 #, fuzzy msgid "Indexed notes:" msgstr "File indice non trovato: " #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Utenti medi:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "File medi:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Non attivo" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Trovato %i file condiviso conosciuto" msgstr[1] "Trovati %i files condivisi conosciuti" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Trovato %i file condiviso conosciuto, %i sconosciuto" msgstr[1] "Trovati %i files condivisi conosciuti, %i sconosciuti" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, fuzzy, c-format msgid "Shared directory not found, skipping: %s" msgstr "server non trovato: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Nome utente" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Velocita' download" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Velocita' upload" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Disponibili:" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Stato upload" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Stato download" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Nome file" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "File condivisi" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Richieste" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Richieste accettate" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Dati trasferiti" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Percentuale Condivisione" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Parti ricevute" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Fonti complete" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Percorso directory" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Aggiungi commento/giudizio" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Modifica commento/giudizio" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Rinomina" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Aggiungi i files della collection alla lista dei trasferimenti" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Copia &URI magnet negli appunti" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Copia il link eD2k negli appunti (&Sorgente)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" "Copia il link eD2k negli appunti (Sorgente) (&Con opzioni di crittatura)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Copia il link eD2k negli appunti (&Nome host)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Copia il link eD2k negli appunti (Nome host) (Con &opzioni di crittatura)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Copia il link eD2k negli appunti (informazioni &AICH)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Copia il link eD2k negli appunti (informazioni &AICH)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Hai bisogno di un HighID per creare un sourcelink valido" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "File condivisi (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "File in download" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Nome file" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Dati inviati (sessione (totale)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Overhead totale (pacchetti): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Overhead per richieste file (pacchetti): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Overhead per scambio fonti (pacchetti): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Overhead server (pacchetti): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Overhead Kad (pacchetti): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Upload attivi: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Upload in attesa: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Totale sessioni di upload riuscite: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Totale sessioni di upload fallite: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Tempo upload medio: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Dati scaricati (sessione (totale)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Fonti trovate: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Download attivi (parti): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Rapporto UL:DL sessione (totale): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Riconnessioni: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Tempo dal primo trasferimento: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Connesso al server da: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Connessioni attive (stima): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Limite massimo connessioni raggiunto: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Connessioni medie (stima): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Picco connessioni (stima): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Client" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "Dimensione sconosciuta" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "Filtrati" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "Bannati" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Totale: %i Conosciuti: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Server attivi: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Server falliti: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Totale: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Server rimossi: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Server filtrati: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Utenti su server attivi: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "File su server attivi: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Utenti totali: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "File totali: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Occupazione server: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Numero di file condivisi: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Dimensione totale file condivisi: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Sistema operativo" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Non ricevuto" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Connessioni attive (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Non disponibile" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Mai" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Il programma `%s' con pid `%d' e' terminato uscendo con status `%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Esegui e esci" #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Formato IP non valido. Usa xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Questo comando necessita di un argomento. Argomenti validi: 'all', nome del " "file oppure un numero.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Elaborazione in base all'hash:" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Elaborazione in base al nome del file:" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Questo comando necessita di un argomento. Argomenti validi: l'hash di un " "file.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Non e' un numero valido\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Non e' un hash valido (la lunghezza deve essere di 32 caratteri)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Digita '%s' per avere altro aiuto.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Download (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Richiesta fallita con errore sconosciuto" #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operazione conclusa con successo" #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Richiesta fallita con il seguente errore: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Filtraggio IP per i client: %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "OFF" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "ON" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Filtraggio IP per i server: %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Il livello IPFilter attuale e' %d\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Connesso a %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Connessione in corso" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "firewalled" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Download:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Upload:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Client in coda:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Fonti totali:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Totale risultati della ricerca: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Ricevuta risposta sconosciuta dal server, OpCode = %#x" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Mostra informazione sullo stato." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" "Mostra stato connessione, velocita' di upload e download attuali, etc.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Mostra le statistiche complete." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Opzionalmente, un numero compreso tra 0 e 255 puo' essere passato come " "argomento a questo\n" "comando, per indicare quante versioni mostrare nel sottoalbero dei client. 0 " "oppure\n" "nessun numero significa 'infinite'.\n" "Esempio: 'statistics 5' mostrera' solo le cinque versioni piu' diffuse per " "ogni tipo di client.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 #, fuzzy msgid "Reload the given object." msgstr "Ricarica l'oggetto." #: src/TextClient.cpp:862 #, fuzzy msgid "Reload shared files list." msgstr "Ricarica la lista dei file condivisi." #: src/TextClient.cpp:864 #, fuzzy msgid "Reload IP filtering table." msgstr "Ricarica il filtro IP da file." #: src/TextClient.cpp:865 #, fuzzy msgid "Reload current IP filtering table." msgstr "Seleziona il livello del filtraggio degli IP." #: src/TextClient.cpp:866 #, fuzzy msgid "Update IP filtering table from URL." msgstr "Ricarica il filtro IP da file." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Connessione al network." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Questo connettera' aMule a tutte le reti attualmente abilitate nelle " "Preferenze.\n" "E' anche possibile specificare l'indirizzo IP, nella forma IP:Porta, di un " "server e\n" "connettersi solamente a quello. Si puo' utilizzare un indirizzo IPv4 oppure\n" "un nome risolvibile da un server DNS." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Connetti solo alla rete Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Disconnetti dalla rete." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Questo disconnettera' aMule da tutte le reti attive.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Disconnetti solo dalla rete Kad." #: src/TextClient.cpp:879 #, fuzzy msgid "Add an eD2k or magnet link to core." msgstr "Aggiungi un link ed2k o magnet al core." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Imposta un valore delle preferenze." #: src/TextClient.cpp:885 #, fuzzy msgid "Set IP filtering preferences." msgstr "Imposta le preferenze del Filtro IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Attiva il filtro IP per client e server." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Disattiva il filtro IP per client e server." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Attiva/Disabilita il filtro IP per i client." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Attiva il filtro IP per i client." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Disattiva il filtro IP per i client." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Attiva/Disabilita il filtro IP per i server." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Attiva il filtro IP per i server." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Disabilita il filtro IP per i server." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Seleziona il livello del filtraggio degli IP." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "I livelli di filtraggio validi vanno da 0 a 255 e il default (iniziale)\n" "e' 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Imposta limiti di banda." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" "Il valore fornito a questi comandi deve essere in kilobyte al secondo.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Imposta limiti di banda per l'upload." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "" "Il valore fornito a questi comandi deve essere in kilobyte al secondo.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Imposta limiti di banda per il download." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Visualizza un'impostazione delle preferenze." #: src/TextClient.cpp:907 #, fuzzy msgid "Get IP filtering preferences." msgstr "Visualizza impostazioni Filtro IP." #: src/TextClient.cpp:908 #, fuzzy msgid "Get IP filtering state for both clients and servers." msgstr "Ottieni stato dell'IPFilter per client e server." #: src/TextClient.cpp:909 #, fuzzy msgid "Get IP filtering state for clients only." msgstr "Ottieni stato dell'IPFilter per i client." #: src/TextClient.cpp:910 #, fuzzy msgid "Get IP filtering state for servers only." msgstr "Ottieni stato dell'IPFilter per i server." #: src/TextClient.cpp:911 #, fuzzy msgid "Get IP filtering level." msgstr "Seleziona il livello del filtraggio degli IP." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Visualizza limita di banda." #: src/TextClient.cpp:915 #, fuzzy msgid "Execute a search." msgstr "Effettua una ricerca su Kad" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "E' necessario specificare il TIPO della ricerca che puo' essere:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Esempio: 'search kad file' cerchera' \"file\" nella rete Kad.\n" #: src/TextClient.cpp:917 #, fuzzy msgid "Execute a global search." msgstr "Effettua una ricerca globale." #: src/TextClient.cpp:918 #, fuzzy msgid "Execute a local search" msgstr "Effettua una ricerca locale" #: src/TextClient.cpp:919 #, fuzzy msgid "Execute a kad search" msgstr "Effettua una ricerca su Kad" #: src/TextClient.cpp:921 #, fuzzy msgid "Show the results of the last search." msgstr "Mostra risultati dell'ultima ricerca." #: src/TextClient.cpp:922 #, fuzzy msgid "Return the results of the previous search.\n" msgstr "Rende i risultati della ricerca precedente.\n" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "Mostra il progresso della ricerca." #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "Mostra il progresso della ricerca.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Scarica un file" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Bisogna fornire il numero del file relativo all'ultima ricerca.\n" "Esempio: 'download 12' aggiungera' alla coda dei download il file col numero " "12 trovato dall'ultima ricerca.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Metti il download in pausa." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Riavvia download." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Cancella download." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Imposta priorita' del download." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Imposta la priorita' del download a Bassa, Normale, Alta o Auto.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Imposta priorita' del download.a Bassa." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Imposta priorita' del download.a Normale." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Imposta priorita' del download.a Alta." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Imposta priorita' del download.a Auto." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Mostra code/liste." #: src/TextClient.cpp:952 #, fuzzy msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Mostra la coda di upload/download, la lista dei server o la lista dei file " "condivisi.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Mostra la coda di upload." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Mostra la coda di download." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Mostra log." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Mostra la lista dei server." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Cancella log." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Questo è un comando deprecato, e potrebbe essere rimosso in futuro.\n" "Usa '%s' al suo posto.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Client testuale aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Conversione dei vecchi hashset AICH in '%s' a 64b: '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "ATTENZIONE: '%s' non e' un nome di file valido ed e' stato rinominato in '%" "s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "ATTENZIONE: Esiste gia' un file col nome '%s', rinomino in '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Sei sicuro di voler interrompere e rimuovere tutti i file contenuti in " "questa categoria?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Conferma richiesta" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Troppe connessioni" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Tutto il resto" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Seleziona filtro di visualizzazione" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Aggiungi categoria" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Modifica categoria" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Elimina categoria" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Impossibile aprire il file (%s), rimosso dalla lista dei file condivisi." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Hashset richiesto per il file sconosciuto: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Ripristino upload del file: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Sospensione upload del file: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Impossibile eseguire il comando `%s' per l'evento `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Download completato" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Il percorso completo del file." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Il nome del file senza la parte del percorso." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "L'hash eD2k del file." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "La dimensione del file in bytes." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Tempo cumulativo di download." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Nuova sessione di chat iniziata" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Mittente del messaggio." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Spazio esaurito" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Partizione disco." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Errore nel completamento" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Elaborazione del file numero %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Hai richiesto l'hash delle parti (solo per file > 9.5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> File inesistente!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, il creatore di link eD2k di aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Benvenuto!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Parametri di ingresso" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "File da esaminare" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Aggiungi URL per questo file" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Inserisci il file del quale calcolare il link eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Inserisci qui l'URL che vuoi aggiungere al link eD2k: Aggiungi / alla fine " "per fare in modo che aLinkCreator aggiunga il nome del file corrente" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Rimuovi" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Crea link con hash delle parti" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Aiuta a diffondere piu' in fretta i file nuovi e rari, al costo di una " "connessione piu' lunga" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Hash MD4" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Hash eD2k del file" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "link eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Salva" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Copia negli appunti" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Apri un file per calcolarne il link eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Copia il link eD2k calcolato negli appunti" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Salva il link eD2k calcolato in un file" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Informazioni su aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Seleziona il file del quale calcolare il link eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Non c'e' niente da copiare per ora!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Seleziona il file del tuo link eD2k calcolato" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Impossibile aprire " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Inserire un nome file non vuoto" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Non c'e' niente da salvare per ora!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, il creatore di link eD2k di aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps da http://www.everaldo.com e http://www.icomania.com\n" "e http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distribuito sotto licenza GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Hashing..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Annullato!" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Eseguito in %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Hai gia' aggiunto questo URL!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Inserire un URL non vuoto" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Impossibile aprire %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i giorno(i) %i ora(e) %i minuto(i) %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uG %02uore %02umin %02usec" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uore %02umin %02usec" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02usec" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, statistiche online di aMule" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Velocita' di DL massima da quando wxCas e' attivo" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Velocita' di DL massima nelle precedenti sessioni di wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistema" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Ferma aggiornamento automatico" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Salva immagine statistiche online" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Stampa immagine statistiche online" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Preferenze" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Informazioni su wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Avvia aggiornamento automatico" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Aggiornamento automatico fermato" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Aggiornamento automatico avviato" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Salva immagine statistiche" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Statistiche online aMule" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "C'e' stato un problema durante la stampa.\n" "La stampante potrebbe non essere impostata correttamente?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Stampa in corso" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, Firma Online Statistiche aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Basato su CAS di Pedro de Oliveira \n" "\n" "Distribuito con licenza GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh Oh, aMule non e' in esecuzione..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule e' in funzione" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule e' in esecuzione, ma e' disconnesso" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule si sta connettendo..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh oh, stato di aMule sconosciuto..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr "e' stato in funzione per " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " e' fermo !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " non e' connesso !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " si sta connettendo..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " sta facendo qualcosa di strano, controllare!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " e' connesso a " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "off" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " e' attivo " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr "con " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Download totale: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Download sessione: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Download: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr "kB/s, Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Condivisione: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr "file, client in coda: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Tempo: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr "attivo " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Carico medio del sistema (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Uptime del sistema: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Directory contenente il file amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Inserire la directory contentente il file amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Intervallo di aggiornamento in secondi" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Genera un'immagine delle statistiche ad ogni aggiornamento" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" "Inserire la directory nella quale generare l'immagine delle statistiche" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Carica periodicamente l'immagine delle statistiche sul server FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "URL FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Percorso FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Inserire URL del tuo server FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "Inserire la directory del server FTP nella quale copiare l'immagine" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Utente" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Inserire username per il login nel server FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Inserire password per il login nel server FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Intervallo di aggiornamento FTP in minuti" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Verifica" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Directory contenente il file di firma" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Directory nella quale generare l'immagine" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Carica modello " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Porta HTTP del server web" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Usa istradamento UPnP sulla porta del server web" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Porta UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Usa compressione gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Password per accesso totale al server web" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Password ospite del server web" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Permetti l'accesso guest" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Vieta l'accesso guest" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Carica/salva le impostazioni del server web da/su aMule remoto" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Percorso del file di configurazione di aMule. Non usare direttamente!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Disabilita interprete PHP (deprecato)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Ricompila pagine PHP ad ogni richiesta" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule Web Server" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "connessione web client accettata\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Richiesta fallita per l'errore: %s" #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "File indice non trovato: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sessione scaduta - login richiesto\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sessione valida, utente loggato\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sessione valida, utente loggato\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Nessuna sessione aperta - richiesta login\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sessione creata - richiesta login\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Elaborazione richiesta [originale]:" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Verifica password\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Hash della password non valido\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Password valida\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Password errata\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" "Non hai inserito alcuna password e le password vuote non sono ammesse.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Logout richiesto\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Elaborazione richiesta [rediretta]:" #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Il file incompleto %s (%s) non ha file seeds" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Il file incompleto %s (%s) ha un file delle fonti vuoto" #, fuzzy #~ msgid "Download status" #~ msgstr "Stato download" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Intervallo aggiornamento: %d secondo" #~ msgstr[1] "Intervallo aggiornamento: %d secondi" #~ msgid "Transferring" #~ msgstr "Trasferimento" #, fuzzy #~ msgid "QR: ???" #~ msgstr "QR: %u" #~ msgid "QR: %u" #~ msgstr "QR: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "In coda" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - visualizzare il progresso della ricerca" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Creo gli hash MD4 e AICH del file %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Creo l'hash MD4 del file %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Creo l'hash AICH del file %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "ATTENZIONE: non e' possibile rimuovere l'originale '%s' dopo aver creato " #~ "il backup" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "ATTENZIONE: impossibile cancellare %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "" #~ "You cannot connect to a release version from an arbitrary SVN version! " #~ "*sigh* possible crash prevented" #~ msgstr "" #~ "Non puoi collegarti ad una versione ufficiale usando una versione SVN " #~ "arbitraria! *sigh* prevenuto possibile crash" #~ msgid "Rating (total):" #~ msgstr "Giudizio (totale):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Cerca di trasferire parti complete per ogni upload" #~ msgid "Networks window" #~ msgstr "Finestra Reti" #~ msgid "Searches window" #~ msgstr "Finestra Ricerche" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Download in corso" #~ msgid "Shared files window" #~ msgstr "Finestra files condivisi" #~ msgid "Messages window" #~ msgstr "Finestra Messaggi" #~ msgid "Statistics graph window" #~ msgstr "Finestra Statistiche" #~ msgid "Preferences settings window" #~ msgstr "Finestra Impostazioni" #~ msgid "Transfers" #~ msgstr "Trasferimenti" #~ msgid "Files transfers window" #~ msgstr "Finestra Trasferimenti" #~ msgid "Unban" #~ msgstr "Rimuovi ban" #~ msgid "Show Uploads" #~ msgstr "Mostra upload" #~ msgid "Show Queue" #~ msgstr "Mostra coda" #~ msgid "Select View" #~ msgstr "Seleziona visuale" #~ msgid "Client Software" #~ msgstr "Software client" #~ msgid "Waited" #~ msgstr "Atteso" #~ msgid "Upload Time" #~ msgstr "Tempo upload" #~ msgid "Upload/Download" #~ msgstr "Upload/Download" #~ msgid "Remote Status" #~ msgstr "Stato remoto" #~ msgid "File Priority" #~ msgstr "Priorita' file" #~ msgid "Score" #~ msgstr "Punteggio" #~ msgid "Asked" #~ msgstr "Richiesto" #~ msgid "Last Seen" #~ msgstr "Ultima volta visto" #~ msgid "Entered Queue" #~ msgstr "Aggiunto in coda" #~ msgid "Transferred Up" #~ msgstr "Inviati" #~ msgid "Transferred Down" #~ msgstr "Ricevuti" #~ msgid "Userhash" #~ msgstr "Hash utente" #~ msgid "Encrypted" #~ msgstr "Crittato" #~ msgid "Shows Upload / Up-queue" #~ msgstr "Mostra Upload / Coda Upload / Client" #~ msgid "Clients on queue :" #~ msgstr "Client in coda:" #~ msgid "Current Session" #~ msgstr "Sessione corrente" #~ msgid "Total" #~ msgstr "Totale" #~ msgid "Requested :" #~ msgstr "Richiesto:" #~ msgid "Files Transfers Window" #~ msgstr "Finestra trasferimenti" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Utenti totali: %s | File totali: %s" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "" #~ "ATTENZIONE: non e' possibile rimuovere l'originale '%s' dopo aver creato " #~ "il backup" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "" #~ "CIP2Country::CIP2Country(): Impossibile ottenere i dati sul Paese da " #~ msgid "Get IPFilter level." #~ msgstr "Visualizza livello Filtro IP." #~ msgid "Makes a search." #~ msgstr "Effettua una ricerca." #, fuzzy #~ msgid "Killed!" #~ msgstr "Fallito" #, fuzzy #~ msgid "Using amuleweb in '%s'." #~ msgstr "Lancia amuleweb all'avvio" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "Chiudi aMule." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Le seguenti opzioni sono state modificate in questa release per motivi di " #~ "sicurezza:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Attiva Offuscamento del Protocollo per connessioni in ingresso e in " #~ "uscita.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Disattivato l'aggiornamento automatico della serverlist dagli altri " #~ "client e server.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Per ulteriori informazioni sui motivi di queste modifiche, vedere il\n" #~ " wiki di aMule su http://wiki.amule.org alla voce \"fake servers\".\n" #~ "E' importante eliminare tutti i fake server dalla tua lista perche' aMule " #~ "funzioni correttamente." #~ msgid "Fetching status..." #~ msgstr "Verifica status..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Utenti: E: %s K: %s | File E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Client %s con IP:Porta %s:%d utilizza %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() ha reso NULL" #~ msgid "Firewalled" #~ msgstr "Firewalled" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "Caricato %d flag bitmap." #~ msgstr[1] "Caricati %d flag bitmaps." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "" #~ "Il file %s e' troppo grande per il network eDonkey: dimensione massima 4 " #~ "GB" #~ msgid "No handler for this file type." #~ msgstr "Nessun gestore per questo tipo di file" #~ msgid "File was not saved" #~ msgstr "Il file non e' stato salvato" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "Connessione fallita. Impossibile connettersi all'host specificato\n" #~ msgid "Message Filter" #~ msgstr "Filtro messaggi" #~ msgid "Gui Tweaks" #~ msgstr "Tweaks GUI" #~ msgid "Core Tweaks" #~ msgstr "Tweaks programma" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Ritardo dei popup in secondi" #~ msgid "Show part file number before file name" #~ msgstr "Visualizza il numero del partfile prima del nome del file" #~ msgid "Skin Support" #~ msgstr "Supporto skin" #~ msgid "- no skins available -" #~ msgstr "- nessuna skin disponibile -" #~ msgid "Online Signature Directory:" #~ msgstr "Directory firma online:" #~ msgid "Filtering Options:" #~ msgstr "Opzioni filtro:" #~ msgid "Line Capacities" #~ msgstr "Capacita' linea" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Nota: questi valori sono\n" #~ "usati solo nelle statistiche" #~ msgid "Standard client TCP Port:" #~ msgstr "Porta TCP standard del client:" #~ msgid "Extended client UDP Port:" #~ msgstr "Porta UDP avanzata del client:" #~ msgid "Bind Address" #~ msgstr "Bind Address" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "Porta UDP per le richieste estese del server (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "Fonti massime per file" #~ msgid "Universal Plug and Play" #~ msgstr "Universal Plug and Play" #~ msgid "Enable UPnP" #~ msgstr "Attiva UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "Porta TCP per UPnP:" #~ msgid "Start next paused file when a file completed" #~ msgstr "Avvia un file in pausa quando un altro file e' stato completato" #~ msgid "Select Statistics Colors" #~ msgstr "Seleziona colori statistiche" #~ msgid "Download Queue Files Progress" #~ msgstr "Avanzamento coda download" #~ msgid "Show percentage" #~ msgstr "Mostra percentuale" #~ msgid "Show progressbar " #~ msgstr "Mostra barra di avanzamento" #~ msgid "Enable skin support " #~ msgstr "Abilita il supporto per le Skin" #~ msgid "Skin:" #~ msgstr "Skin:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "Ordina automaticamente i file in download (elevato uso CPU)" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "IP dell'interfaccia in ascolto\n" #~ "(o vuoto per qualunque ip)" #~ msgid "TCP port" #~ msgstr "Porta TCP" #~ msgid "Who can see shared files:" #~ msgstr "Chi puo' vedere i file condivisi:" #~ msgid "Event types" #~ msgstr "Tipi di Eventi" #~ msgid "ERROR: can not accept web client connection\n" #~ msgstr "ERRORE: non posso accettare la connessione da client web\n" #~ msgid "" #~ "Your Auto-update server list is empty.\n" #~ "'Auto-update server list at startup will be disabled." #~ msgstr "" #~ "La tua lista server auto-aggiornante è vuota.\n" #~ "'L'auto-aggiornamento della lista server all'avvio sarà disabilitato." #~ msgid "Makes aMule promt before exiting." #~ msgstr "Fa si' che aMule chieda conferma prima di uscire" #~ msgid "Show overhead bandwith" #~ msgstr "Mostra overhead banda" #~ msgid "I.C.H. active" #~ msgstr "ICH attivo" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICH si fida di ogni hash (sconsigliato)" #~ msgid "Advanced Settings" #~ msgstr "Impostazioni avanzate" #~ msgid "Progressbar Style" #~ msgstr "Stile barra di avanzamento" #~ msgid "Column Sorting" #~ msgstr "Ordinamento colonne" #~ msgid "Misc Gui Tweaks" #~ msgstr "Tweaks GUI vari" #~ msgid "File Options" #~ msgstr "Opzioni file" #~ msgid "Status text" #~ msgstr "Messaggio di status" #~ msgid "Pop-up status text" #~ msgstr "Apri pop-up" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ "Client p2p 'All-Platform' basato su eMule \n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr "Sito web: http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr "Forum: http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr "Contatto: admin@amule.org (problemi amministrativi) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ "Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr " Parte di aMule è basata su \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " Copyright (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "Per un film puoi indicare la lunghezza, la trama, la lingua...\n" #~ "e, se e' un falso, puoi farlo presente agli altri utenti di aMule" #~ msgid "Misc Options" #~ msgstr "Altre opzioni" #~ msgid "Server Options" #~ msgstr "Opzioni server" #~ msgid "Display server motd when connected ..." #~ msgstr "Mostra motd del server alla connessione..." #~ msgid "Disable/Enable" #~ msgstr "Disabilita/Abilita" #~ msgid "Authentication" #~ msgstr "Autenticazione" #~ msgid "General Settings" #~ msgstr "Impostazioni generali" #~ msgid "Max Connections" #~ msgstr "Connessioni massime" #~ msgid "GUI Tweaks" #~ msgstr "Tweaks GUI" #~ msgid "Remote Control" #~ msgstr "Controlli remoti" #~ msgid "Unable to determine selected browser!" #~ msgstr "Impossibile determinare il browser selezionato!" #~ msgid "User Defined" #~ msgstr "Definito dall'utente" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - il Mulo per Linux" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Seleziona il tuo browser" #~ msgid "Custom Browser:" #~ msgstr "Browser personalizzato:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Inserisci il nome del tuo browser. Per usare un browser diverso, " #~ "seleziona Browser Personalizzato nel menu" #~ msgid "Please wait... " #~ msgstr "Attendere... " #~ msgid "Could not determine the command for running the browser." #~ msgstr "Non e' possibile trovare il comando per lanciare il browser" #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "Connessione EC fallita. Risposta vuota." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "ExternalConn: accesso negato perche': " #~ msgid "ExternalConn: Access denied" #~ msgstr "ExternalConn: accesso negato" #~ msgid "ExternalConn: Bad reply from server. Connection closed." #~ msgstr "ExternalConn: risposta negativa dal server. Connessione chiusa" #~ msgid "The ed2k hash of the file." #~ msgstr "L'hash ed2k del file." #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Copia &link ed2k negli appunti" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "Copia link ed2k negli appunti (&Source)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "Copia link ed2k negli appunti (Source) (&With Crypt options)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "Copia &link ed2k negli appunti (&Hostname)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "Copia &link ed2k negli appunti (Hostname) (With &Crypt options)" #~ msgid "Copy ED2k link to clipboard (&AICH info)" #~ msgstr "Copia link ed2k negli appunti (info &AICH)" #~ msgid "Warning" #~ msgstr "Attenzione" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "ERRORE: non posso stare in ascolto sulla porta TCP" #~ msgid "Error: can not accept web client connection\n" #~ msgstr "Errore: non posso accettare la connessione web client\n" #~ msgid "Webserver HTTP port" #~ msgstr "Porta HTTP del webserver" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "Usa il port forwarding UPnP per la porta del webserver" #~ msgid "Full access password for webserver" #~ msgstr "Password per l'accesso completo al webserver" #~ msgid "Guest password for webserver" #~ msgstr "Password guest per il webserver" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "Carica/salva le impostazioni del webserver da/su aMule remoto" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "Inserisci il file di cui vuoi determinare il link ed2k" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "Inserisci qui l'URL che vuoi aggiungere al link ed2k: inserisci / alla " #~ "fine affinche' aLinkCreator lo aggiunga alla fine del nome del file" #~ msgid "Ed2k File Hash" #~ msgstr "Hash ed2k" #~ msgid "Ed2k link" #~ msgstr "Link ed2k" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "Apri un file per calcolare il suo link ed2k" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "Copia link ed2k calcolato negli appunti" #~ msgid "Save computed ed2k link to file" #~ msgstr "Salva link ed2k appena calcolato in un file" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "Seleziona il file di cui vuoi calcolare il link ed2k" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "Seleziona il file per il link ed2k appena calcolato" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, il creatore di link ed2k per aMule\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps da http://www.everaldo.com e http://www.icomania.com\n" #~ "e http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distribuito con licenza GPL" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, il generatore di link ed2k di aMule" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Copia link ed2k negli appunti" #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Copia link ED2k negli appunti" #~ msgid "ED2K: Connecting" #~ msgstr "ED2k: Connessione in corso" #~ msgid "ED2K: Disconnected" #~ msgstr "ED2k: Disconnesso" #~ msgid "Warning: Unable to open skin file '%s' for read" #~ msgstr "Attenzione: Impossibile leggere la skin dal file '%s'" #~ msgid "ed2k network" #~ msgstr "rete ed2k" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "La tua lista di aggiornamento automatico dei server e' vuota.\n" #~ "L'opzione 'Aggiorna la lista dei server all'avvio' verra' disabilitata" #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "Le reti ed2k e Kad sono disabilitate.\n" #~ "Non potrai connetterti finche' non ne abiliterai almeno una." #~ msgid "Edit Serverlist" #~ msgstr "Modifica lista server" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "ERRORE: impossibile accettare una nuova connessione esterna" #~ msgid "ED2K is disabled in preferences." #~ msgstr "La rete ed2k e' disabilitata nelle Preferenze." #~ msgid "ExternalConn: shutdown requested" #~ msgstr "ExternalConn: richiesto spegnimento" #~ msgid "Already connected to ED2K." #~ msgstr "Gia' connesso alla rete ed2k." #~ msgid "Connecting to ED2K..." #~ msgstr "Connessione alla rete ed2k..." #~ msgid "Disconnected from ED2K." #~ msgstr "Disconnesso dalla rete ed2k." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "ExternalConn: ricevuto opcode non valido: %#x" #~ msgid "ED2K Status:" #~ msgstr "Stato ed2k:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "Velocita' di download media (sessione): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "Velocita' di upload media (sessione): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "Velocita' di download massima (sessione): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "Velocita' di upload massima (sessione): %s" #~ msgid "Average filesize: %s" #~ msgstr "Dimensione media file: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "" #~ "Impossibile effettuare una ricerca sulla rete ed2k senza esserci connessi" #~ msgid "Error: " #~ msgstr "Errore: " #~ msgid "Warning: " #~ msgstr "Attenzione: " #~ msgid "Search related files (ED2k, local server)" #~ msgstr "Ricerca file simili (ED2k, local server)" #~ msgid "Error" #~ msgstr "Errore" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "ATTENZIONE: Non puoi aggiungerti come fonte per un link ed2k finche' " #~ "avrai un id basso." #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "Seleziona il tuo video player preferito nelle preferenze.\n" #~ "Nel frattempo aMule tentera' di usare mplayer e riceverai questo " #~ "messaggio in ogni anteprima" #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "ERRORE: impossibile aprire il file part.met: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "ERRORE: il file part.met e' di dimensione 0: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "ERRORE: versione del file part.met non valida: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "ATTENZIONE: %s potrebbe essere corrotto (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "" #~ "Si e' verificato un errore inaspettato nel completamento del file %s. " #~ "File in pausa" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "ATTENZIONE: impossibile fare l'hash della parte scaricata - hashet " #~ "incompleto per '%s'" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "ERRORE: impossibile calcolare l'hash del file part scaricato - hashset " #~ "incompleto (%s). Cio' non dovrebbe mai accadere" #~ msgid "Insufficient Diskspace" #~ msgstr "Spazio su disco insufficiente" #~ msgid "ERROR! Attempted to share %s" #~ msgstr "ERRORE! Tentativo di condividere %s" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "Rete ed2k disattivata dalle opzioni, non mi ci connetto." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "" #~ "Nella lista dei server non e' stato trovato nessun server valido a cui " #~ "connettersi" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "ERRORE: socket invalido in sede di controllo di timeout" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions." #~ msgstr "" #~ "Errore: Caricamento file di backup fallito. Cerca soluzioni per il " #~ "recupero di .part.met su http://forum.amule.org" #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "Non riesco a convertire il link magnet in ed2k: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "Link ed2k non valido! Errore: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "Limit di banda: Up: %u kB/s, Down: %u kB/s\n" #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "Spegnimento del core remoto (amule/amuled).\n" #~ "Questo chiudera' anche il client testuale, che non e' utilizzabile\n" #~ "senza un core.\n" #~ msgid "Connect to ED2K only." #~ msgstr "Connetti solo alla rete ed2k." #~ msgid "Disconnect from ED2K only." #~ msgstr "Disconnetti solo dalla rete ed2k." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "Il link ed2k da aggiungere puo' essere:\n" #~ "*) un file (ed2k://|file|...), e sara' aggiunto alla coda dei download,\n" #~ "*) un server (ed2k://|server|...), e sara' aggiunto alla lista dei " #~ "server,\n" #~ "*) una lista di server, e tutti i server saranno aggiunti alla lista " #~ "attuale \n" #~ "\n" #~ "Il link magnet deve contenere anche l'hash ed2k e la lunghezza del file.\n" #~ msgid "Deprecated command, now '%s'." #~ msgstr "Comando deprecato, ora '%s'." #~ msgid "Error: %s (%s) - %s" #~ msgstr "ERRORE: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "ATTENZIONE: %s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "Errore: spazio su disco terminato" #~ msgid "Error: Partmet not found" #~ msgstr "Errore: Partmet non trovato" #~ msgid "Error: IO error!" #~ msgstr "Errore: errore IO!" #~ msgid "Error: Failed!" #~ msgstr "Errore: fallito!" #~ msgid "ED2K Link: " #~ msgstr "Link ed2k: " #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "" #~ "Clicca qui per aggiungere il link ed2k nella casella di testo alla tua " #~ "coda di download" #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "Ricerca per piu' risultati su ed2k. Non ancora supportata da Kad." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Limiti banda" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "Questa e' la porta ed2k standard e non puo' essere disabilitata." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "" #~ "Questa porta UDP e' usata per richieste ed2k avanzate e per la rete Kad" #~ msgid "Hard Limit" #~ msgstr "Limite massimo" #~ msgid "Connection Limits" #~ msgstr "Limiti connessione" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Aggiorna lista server all'avvio" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Aggiorna lista server quando ci si connette ad un server" #~ msgid "Update serverlist when a client connect" #~ msgstr "Aggiorna lista server quando un client si connette" #~ msgid "Disk Space" #~ msgstr "Spazio disco" #~ msgid "Check Disk Space" #~ msgstr "Verifica spazio disco" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "" #~ "Seleziona questa opzione per far verificare ad aMule lo spazio su disco" #~ msgid "Min Disk Space:" #~ msgstr "Spazio su disco minimo:" #~ msgid "Incoming Directory :" #~ msgstr "Directory file scaricati:" #~ msgid "Temporary Directory :" #~ msgstr "Directory file temporanei:" #~ msgid "Shared Directories" #~ msgstr "Directory condivise" #~ msgid "Create Backup to preview" #~ msgstr "Crea copia di backup per l'anteprima" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Mostra gestore rapido di link ed2k" #~ msgid "Webserver Parameters" #~ msgstr "Parametri webserver" #~ msgid "Webserver port" #~ msgstr "Porta webserver" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "Utilizza il port forwarding UPnP sulla porta del webserver" #~ msgid "Webserver UPnP TCP port" #~ msgstr "Porta TCP del Webserver UPnP" #~ msgid "Serverlist" #~ msgstr "Lista server" #~ msgid "Manual Server Add : Name" #~ msgstr "Aggiungi server: nome" #~ msgid "Speed Limits:" #~ msgstr "Limiti di velocita':" #~ msgid "Download Speed: %.1f" #~ msgstr "Velocita' di download: %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "Velocita' di upload: %.1f" #~ msgid "TCP Port: %d" #~ msgstr "Porta TCP: %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "Porta TCP: non pronta" #~ msgid "UDP Port: %d" #~ msgstr "Porta UDP: %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "Porta UDP: non pronta" #~ msgid "Shared Files: %d" #~ msgstr "File condivisi: %d" #~ msgid "Queued Clients: %d" #~ msgstr "Client in coda: %d" #~ msgid "Upload Limit" #~ msgstr "Limite upload" #~ msgid "Download Limit" #~ msgstr "Limite download" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "Non e' stato trovato nessun indirizzo nel file 'addresses.dat'. Copia un " #~ "indirizzo che contenga la lista di server in questo file in modo da poter " #~ "aggiornare automaticamente la lista" #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "" #~ "Attenzione, indicato URL non valido per l'aggiornamento automatico dei " #~ "server: %s" #~ msgid "webserver running on pid %d" #~ msgstr "Webserver attivo sul pid %d" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "Hai scelto di lanciare il webserver all'avvio, ma non e' stato possibile " #~ "eseguire amuleweb. Installa il pacchetto comprendente il webserver di " #~ "aMule, oppure compila aMule con l'opzione --enable-webserver." #~ msgid "Disconnected from ED2K" #~ msgstr "Disconnesso dalla rete ed2k" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "" #~ "Impossibile aprire in lettura il file della lista degli amici 'emfriend." #~ "met'!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "" #~ "Impossibile aprire in scrittura il file della lista degli amici 'emfriend." #~ "met'!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "ERRORE: Impossibile aprire il partfile)" #~ msgid "Mb" #~ msgstr "Mb" #~ msgid "Can't create web socket thread\n" #~ msgstr "Impossibile creare thread socket web\n" #~ msgid "Web Server: Started\n" #~ msgstr "Server web: eseguito\n" #~ msgid "Not Supported" #~ msgstr "Non supportata" #~ msgid "LowID: %u (%.2f%% Total %.2f%% Known)" #~ msgstr "LowID: %u (%.2f%% totale %.2f%% noti)" #~ msgid "SecIdent On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgstr "Identificazione sicura On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgid "Browse wav" #~ msgstr "Sfoglia file wav" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "File wav (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "Nessun commento" #~ msgid "" #~ "Note: These values are\n" #~ "only used for statistics." #~ msgstr "" #~ "Nota: Questi valori sono\n" #~ "usati solo a fini statistici." #~ msgid "Notifications" #~ msgstr "Notifiche" #~ msgid "Messages popup" #~ msgstr "Messaggi popup" #~ msgid "Use sound" #~ msgstr "Usa suono" #~ msgid "Pop out when :" #~ msgstr "Mostra finestra di popup in caso di:" #~ msgid "New entry on log" #~ msgstr "Nuovo messaggio nel log" #~ msgid "Starts a new chat session" #~ msgstr "Nuova sessione di chat" #~ msgid "A new chat message is received" #~ msgstr "Ricezione nuovo messaggio" #~ msgid "A download is added or finished" #~ msgstr "Aggiunta o conclusione di un download" #~ msgid "New aMule version detected" #~ msgstr "Nuova versione di aMule disponibile" #~ msgid "Urgent OOD, serverconnection lost" #~ msgstr "OOD Urgente, persa connessione al server" #~ msgid "Notify by Mail" #~ msgstr "Notifica tramite mail" #~ msgid "Send an Email when transfer complete." #~ msgstr "Invia email quando il download e' completo." #~ msgid "SMTP server :" #~ msgstr "Server SMTP:" #~ msgid "Email Address :" #~ msgstr "Indirizzo email:" #~ msgid ":" #~ msgstr ":" #~ msgid "" #~ "The selected locale seems not to be installed on your box\n" #~ "You must generate it to use this language.\n" #~ "A good start on linux systems is the file /etc/locale.gen and the package " #~ "'locales'\n" #~ "Good luck!\n" #~ "(Note: I'll try to set it anyway)" #~ msgstr "" #~ "La localizzazione (lingua) selezionata sembra non essere installata\n" #~ "Non sara' dunque possibile selezionare questa lingua.\n" #~ "Nei sistemi linux verificare il file /etc/locale.gen e il programma " #~ "'locales'\n" #~ "Buona Fortuna!\n" #~ "(NB: aMule provera' comunque a impostare la lingua selezionata)" #~ msgid "Never show this again" #~ msgstr "Non mostrare piu'" #~ msgid "Enable/Disable" #~ msgstr "Abilita/Disabilita" #~ msgid "You can't bootstrap an specific ip from remote GUI yet." #~ msgstr "" #~ "Non e' ancora possibile effettuare il bootstrap da un IP specifico " #~ "utilizzando la GUI remota." #~ msgid "You can't update server.met from remote GUI yet." #~ msgstr "Non puoi ancora aggiornare il file server.met falla GUI remota." #~ msgid "Disconnect from " #~ msgstr "Disconnetti da " #~ msgid "current server" #~ msgstr "Server attuale" #~ msgid " and " #~ msgstr " e " #~ msgid "Disconnect from any server and/or Kad" #~ msgstr "Disconnetti da tutti i server e da Kad" #~ msgid " [" #~ msgstr " [" #~ msgid " | Kad: " #~ msgstr " | Kad: " #~ msgid "TCP Flags" #~ msgstr "Opzioni TCP" #~ msgid "UDP Flags" #~ msgstr "Opzioni UDP" #~ msgid "Copy ED2k link(s) to clipboard" #~ msgstr "Copia link ed2k negli appunti" #~ msgid "Client requests %u" #~ msgstr "Richiesta dal client %u" #~ msgid "File block %u-%u (%d bytes):" #~ msgstr "File block %u-%u (%d byte):" #~ msgid "Client request is invalid!" #~ msgstr "La richiesta del client non e' valida!" #~ msgid "Client request is invalid! %i / %i" #~ msgstr "La richiesta del client non e' valida! %i / %i" #~ msgid "Unable to open %s file - using %s file." #~ msgstr "Impossibile aprire il file %s - uso il file %s" #~ msgid "Warning: known.met does not exist." #~ msgstr "Attenzione: known.met non esiste." #~ msgid "" #~ "CSharedFileList::FindSharedFiles: Removing %s from shared directory list: " #~ "directory not found." #~ msgstr "" #~ "CSharedFileList::FindSharedFiles: Elimino %s dalla lista di directory " #~ "condivise: la directory non esiste." #~ msgid "Waiting for subprocess termination failed" #~ msgstr "Attesa del termine del sottoprocesso fallita" #~ msgid "doesn't work" #~ msgstr "non funziona" #~ msgid "remote gui" #~ msgstr "gui remota" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "ERRORE: impossibile caricare il file di backup. Cercare su http://forum." #~ "amule.org le soluzioni per il recupero dei .part.met" #~ msgid "" #~ "Error: Backup part.met file is 0 size! Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "ERRORE: il backup del file part.met e' di dimensione 0! Cerca una " #~ "soluzione su http://forum.amule.org/" #~ msgid "Error: part.met backup file is 0 size: %s ==> %s" #~ msgstr "" #~ "Errore: il file di backup del part.met e' di dimensione 0: %s ==> %s" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " Website: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contact: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ " Part of aMule is based on \n" #~ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr "" #~ " 'All-Platform' client p2p basato su eMule \n" #~ "\n" #~ " Sito web: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " Domande Frequenti: http://wiki.amule.org \n" #~ "\n" #~ " Contatti: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ " Una Parte di aMule si basa su \n" #~ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "WARNING: You have recieved Low-ID!" #~ msgstr "ATTENZIONE: hai ottenuto un LowID!" #~ msgid "" #~ "This command requieres an argument. Valid arguments: 'all' or a number.\n" #~ msgstr "" #~ "Questo comando richiede un argomento. Argomenti validi: 'all' o un " #~ "numero\n" #~ msgid "This command requieres an argument. Valid arguments: a file hash.\n" #~ msgstr "" #~ "Questo comando richiede un parametro. Parametri validi: l'hash di un " #~ "file.\n" #~ msgid "Deprecated command, now 'Status'." #~ msgstr "Comando deprecato, usare 'Status'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Status' instead.\n" #~ msgstr "" #~ "Questo comando e' deprecato e in futuro potrebbe essere rimosso.\n" #~ "Usare 'Status' al suo posto.\n" #~ msgid "Deprecated command, now 'Set IPFilter'." #~ msgstr "Comando deprecato, usare 'Set IPFilter'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter' instead.\n" #~ msgstr "" #~ "Questo comando e' deprecato e in futuro potrebbe essere rimosso.\n" #~ "Usare 'Set IPFilter' al suo posto.\n" #~ msgid "Deprecated command, now 'Get IPFilter Level'." #~ msgstr "Comando deprecato, usare 'Get IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get IPFilter Level' instead.\n" #~ msgstr "" #~ "Questo comando e' deprecato e in futuro potrebbe essere rimosso.\n" #~ "Usare 'Get IPFilter Level' al suo posto.\n" #~ msgid "Deprecated command, now 'Set IPFilter Level'." #~ msgstr "Comando deprecato, usare 'Set IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter Level' instead.\n" #~ msgstr "" #~ "Questo comando e' deprecato e in futuro potrebbe essere rimosso.\n" #~ "Usare 'Set IPFilter Level' al suo posto.\n" #~ msgid "Deprecated command, now 'Get/Set IPFilter Level'." #~ msgstr "Comando deprecato, usare 'Get/Set IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get/Set IPFilter Level' instead.\n" #~ msgstr "" #~ "Questo comando e' deprecato e in futuro potrebbe essere rimosso.\n" #~ "Usare 'Get/Set IPFilter Level' al suo posto.\n" #~ msgid "Deprecated command, now 'Show Servers'." #~ msgstr "Comando deprecato, usare 'Show Servers'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Show Servers' instead.\n" #~ msgstr "" #~ "Questo comando e' deprecato e in futuro potrebbe essere rimosso.\n" #~ "Usare 'Show Servers' al suo posto.\n" #~ msgid "Deprecated command, now 'Get BwLimits'." #~ msgstr "Comando deprecato, usare 'Get BwLimits'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get BwLimits' instead.\n" #~ msgstr "" #~ "Questo comando e' deprecato e in futuro potrebbe essere rimosso.\n" #~ "Usare 'Get BwLimits' al suo posto.\n" #~ msgid "Deprecated command, now 'Set BwLimit Up'." #~ msgstr "Comando deprecato, usare 'Set BwLimit Up'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Up' instead.\n" #~ msgstr "" #~ "Questo comando e' deprecato e in futuro potrebbe essere rimosso.\n" #~ "Usare 'Set BwLimit Up' al suo posto.\n" #~ msgid "Deprecated command, now 'Set BwLimit Down'." #~ msgstr "Comando deprecato, usare 'Set BwLimit Down'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Down' instead.\n" #~ msgstr "" #~ "Questo comando e' deprecato e in futuro potrebbe essere rimosso.\n" #~ "Usare 'Set BwLimit Down' al suo posto.\n" #~ msgid "Masterhashes of known files have been loaded." #~ msgstr "Caricati i masterhash dei file conosciuti." #~ msgid "Error while reading Kad contacts - 0 entries" #~ msgstr "Errore nella lettura dei contatti Kad - 0 contatti" #~ msgid "Merge attempt" #~ msgstr "Cerco di riunire" #~ msgid "Recursive merge" #~ msgstr "Riunione ricorsiva" #~ msgid "Sucessful merge!" #~ msgstr "Riunione completata!" #~ msgid "No merge possible" #~ msgstr "Impossibile riunire" #~ msgid "Buddy address: " #~ msgstr "Indirizzo dell'amico: " #~ msgid "Allow usage of system wide ipfilter.dat" #~ msgstr "Consenti utilizzo di un file ipfilter.dat di sistema" #~ msgid "%d" #~ msgstr "%d" #~ msgid " %d" #~ msgstr " %d" #~ msgid ".%d" #~ msgstr ".%d" #~ msgid "Shows the process of a search." #~ msgstr "Mostra il processo di una ricerca." #~ msgid "Shows the process of a search..\n" #~ msgstr "Mostra il processo di una ricerca..\n" #~ msgid "Search warning." #~ msgstr "Search warning." #~ msgid "Client Identification:" #~ msgstr "Identificazione client:" #~ msgid "Use Secure Identification" #~ msgstr "Usa identificazione sicura" #~ msgid "" #~ "Secure Identification uses a handshake approch to safely identify clients " #~ "for use with the credit system." #~ msgstr "" #~ "L'identificazione sicura usa un approccio handshake per identificare i " #~ "client che usano il sistema di crediti" #~ msgid "Sources Dropping" #~ msgstr "Gestione fonti" #~ msgid "Source Dropping" #~ msgstr "Gestione fonti" #~ msgid "Drop sources" #~ msgstr "Rilascia fonti" #~ msgid "Send sources to any other file before dropping (High CPU)" #~ msgstr "" #~ "Invia le fonti agli altri file prima di rilasciarle (elevato uso CPU)" #~ msgid "Sources with no needed file-parts." #~ msgstr "Fonti con parti non necessarie" #~ msgid "Full Queue Sources Handling" #~ msgstr "Gestione Fonti con Coda Piena" #~ msgid "Enable auto drop Full Queue Sources" #~ msgstr "Abilita rilascio automatico Fonti con Coda Piena" #~ msgid "High Queue Rating Sources Handling" #~ msgstr "Gestione Fonti con Coda Molto Lunga" #~ msgid "Enable auto drop High Queue Rating Sources" #~ msgstr "Abilita rilascio automatico Fonti con Coda Molto Lunga" #~ msgid "High Queue Rating value" #~ msgstr "Valore Coda Molto Lunga" #~ msgid "(Min 300 / Max 3000)" #~ msgstr "(Min 300 / Max 3000)" #~ msgid "Auto Drop Sources Timer" #~ msgstr "Intervallo rilascio automatico delle fonti" #~ msgid "Timer (in secs)" #~ msgstr "Intervallo (in sec)" #~ msgid "(Min 60 / 3600 Max)" #~ msgstr "(Min 60 / Max 3600)" #~ msgid "Drop No Needed Sources now" #~ msgstr "Rilascia Fonti Non Necessarie" #~ msgid "Drop Full Queue Sources now" #~ msgstr "Rilascia Fonti con Coda Piena" #~ msgid "Drop High Queue Rating Sources now" #~ msgstr "Rilascia Fonti con Coda Molto Lunga" #~ msgid "Clean Up Sources now (NNS, FQS && HQRS)" #~ msgstr "Pulisci fonti (FNN, FCP && FCML)" #~ msgid "English (U.S.)" #~ msgstr "Inglese (U.S.)" #~ msgid "Spanish (Mexican)" #~ msgstr "Spagnolo (messicano)" amule_2.3.1+git20151120.0023527bc2.orig/po/ja.po0000644000175000017500000075414512611472361017073 0ustar morphmorph# Japanese translations for aMule package. # This file is distributed under the same license as the aMule package. # , 2007. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2008-05-31 01:09+0900\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja\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" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "仲間を追加する" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "正当なIPとポートを入力しなければなりません!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "情報" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "指定されたユーザハッシュは不正です!" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "%s(%s)を開くことはできませんでした" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" #: src/amule.cpp:229 #, fuzzy msgid "Now, exiting main app..." msgstr "" "\n" "OK、%s を終了中です…\n" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "失敗しました" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 #, fuzzy msgid "aMule shutdown completed." msgstr "ダウンロード完了" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "終了の確認" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "新しい外部接続を認められました" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "警告" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "申し訳ありませんが、設定の変更を行ったため、あなたのロケールはシステム標準に" "変更されました。" #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "情報" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "サーバリストにはサーバが一つも入っていません。今aMuleに新しいサーバリストをダ" "ウンロードしますか?" #: src/amule.cpp:581 msgid "Server list download" msgstr "サーバリストのダウンロード" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "指定したアドレスにポートをバインドできませんでした: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "ポート%uは利用できません。あなたにはLOWIDが与えられます\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "ポート%uは利用できません\n" "\n" "したがって、あなたにはLOWIDが与えられます\n" "\n" "ネットワークを調べ、ポートが入出力に対して開いているか確認してください。" #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "オンライン証明ファイルの生成に失敗しました" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "aMuleのオンライン証明ファイルの生成に失敗しました" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "選択したロケールはあなたのシステムにインストールされていないようです。(注" "意:いずれにせよ設定を試みます)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "初めてaMule %sを起動しています" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "このバージョンはテスト・バージョンで、毎日更新されているものです。\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "あなたに損害を与えないということは保証できません。家を焼いてしまうかも知れな" "いし、\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "犬を殺してしまうかも知れません。しかし、安全に使用できる「はず」です。\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "私たちのホームページwww.aMule.org、またはIRCチャネルirc.freenode.netの#aMule" "には、\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "詳細な情報、サポートや新しいリリースがあります。\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "バグはhttp://forum.amule.orgに気楽に報告してください" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "あなたが指定したオンライン証明ファイルのフォルダは不正です!\n" "設定で訂正するまでオンライン証明を無効にします。" #: src/amule.cpp:1116 #, fuzzy msgid "Server hostname notified" msgstr "サーバ名:" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "ファイル '%s' のディスク領域の事前確保が失敗しました: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "エラー:ログファイルを開くことはできません" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "注意:ログファイルは空です。何かがおかしいです。" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "ログはリセットされました" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "サーバ・メッセージ:%s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "ノード・リストをダウンロードのに失敗しました。" #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "ダウンロードされたバージョン確認ファイルを開くのに失敗しました。" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "破損されたバージョン確認ファイル" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "あなたは古いバージョンのaMuleを使用しています!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "あなたのaMuleバージョンは%i.%i.%iで、最新バージョンは%li.%li.%liです" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "最新バージョンはいつもhttp://www.amule.orgにあります" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" "警告:あなたのaMuledバージョンは古くなっています:%i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "あなたのaMuleは最新のバージョンです。" #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "バージョン確認ファイルのダウンロードに失敗しました" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "ユーザ: %s | ファイル: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "ユーザ: E: %s K: %s | ファイル: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "ネットワークが選択されていません" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "LowIDを持っています" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "HighIDを持っています" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "接続しています:%s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "%sに接続中です" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kadを開始しました。" #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kadを中止しました。" #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Kadに接続しています(OK)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Kadに接続しています(ファイアウォール)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Kadから切断しています" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "UDPポートが設定で無効にされていると、Kadネットワークを使用できないため、開始" "しません。" #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Kadネットワークは設定で無効にされているため、接続はしません。" #: src/amuled.cpp:589 #, fuzzy msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "エラー:外部接続が無効にされている時にはaMuleのデーモンは使用できません。外部" "接続を有効にするには、普通のaMuleを使用するか、あるいはamuledをオプション--" "ec-configで起動させるか、あるいはファイル~/.aMule/amule.confの中でキー" "\"AcceptExternalConnections\"を1に設定してください。" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "エラー: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "これはeMuleに基づいたaMule %s です。" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "%s に起動しています" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "新しいバージョンの確認はhttp://www.amule.orgで。" #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "aMuleリモート制御" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "スナップショット:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademliaに基づいています:XORトリックに基づいたP2Pルーティング。\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "メッセージ" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "接続中" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: ファイアウォールされています" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: 接続" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: 接続中" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: オフ" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "キャンセル" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "現在の接続試行を中止する" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "切断する" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "ネットワークから切断します。" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "接続する" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "ネットワークへ接続します。" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "アップ: %.1f(%.1f) | ダウン: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "アップ: %.1f | ダウン: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | 接続しています)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | 切断しています)" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "本当にaMuleを終了しますか?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "終了の確認" #: src/amuleDlg.cpp:1174 #, fuzzy msgid "Launch Command: " msgstr "コマンド: %s" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "スキンディレクトリ '%s' は存在しません" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "ネットワーク" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "ネットワークウィンドウ" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "検索" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "検索ウィンドウ" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "ダウンロード数" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "ダウンロード" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "共有ファイルウィンドウ" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "メッセージ" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "メッセージウィンドウ" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "統計" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "統計グラフウィインドウ" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "設定" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "個人設定ウィンドウ" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "インポート" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "部分ファイルをインポートするためのツール" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "情報" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "ソフトウェア情報/ヘルプ" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Kadネットワーク" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "ネットワークなし" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "致命的なエラー:タイマを生成できませんでした" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "リモートamuleへ接続する" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "致命的なエラー:タイマを生成できませんでした" #: src/amule-remote-gui.cpp:274 #, fuzzy msgid "Going to event loop..." msgstr "ファイル情報を回復しようとしています…" #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "接続中" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "接続に失敗しました " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "全て" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "不明" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "ユーザ '%s' から共有ファイルを取得することができませんでした" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr "(偽のeMuleバージョン %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr "(偽のeMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule(偽のeMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x(eMule v0.%u に基づいています)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "NickName: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "要求:%s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "当セッションのファイル統計: %d / %d の要求を受け入れ、%s 転送された\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "全セッションのファイル統計: %d / %d の要求を受け入れ、%s 転送された\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "不明なファイルが要求されました" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "%s(IP:%s)からのメッセージがフィルタされました" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "%s(IP:%s)から新しいメッセージが届きました" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "ユーザ %s(%u)はあなたのディレクトリ %s の共有ファイル・リストを要求しまし" "た -> 拒否しました" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, fuzzy, c-format msgid "WARNING: %s cannot be opened." msgstr "警告:known.metを開くことはできません。" #: src/CanceledFileList.cpp:61 #, fuzzy msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "警告:Knownfileリストは破損され、不正なヘッダーが含まれています。" #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "known.metファイル%sを読む時にIOエラーが発生しました" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "known.metファイル%sを保存する時にIOエラーが発生しました" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "カテゴリ" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "新しいカテゴリ" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "受信ファイルのフォルダを選択する" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "カテゴリに名前を与えなければなりません!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "カテゴリにパスを与えなければなりません!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "カテゴリに受信ディレクトリを生成するのに失敗しました。正当なパスを指示してく" "ださい!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "チャット・セションを開始しました:%s(%s:%u)-%s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** クライアントに接続しています ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** クライアントに接続中です ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** クライアントに接続に失敗しました/接続を失いました ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "タブを閉める" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "全てのタブを閉める" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "他のタブを閉める" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "仲間リストに追加する" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "クレジット・ファイルをロードしました。%u個のクライアントが既知です" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - %u個のクライアントのクレジット期限が満了しました!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "'cryptkey.dat'が見つかりませんでした。生成します。" #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "クライアントの詳細" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "有効" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "サポート" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "非サポート" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "無効" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "接続" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "切断" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "不完全です" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "悪意の相手" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "検証されています" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "利用不可能です" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "ユーザ %s(%u)はあなたの共有ファイル・リストを要求しました -> 許可しました" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "ユーザ %s(%u)はあなたの共有ファイル・リストを要求しました -> 拒否しました" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "ユーザ %s(%u)はあなたの共有ディレクトリ・リストを要求しました -> 許可しまし" "た" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "ユーザ %s(%u)はあなたの共有ディレクトリ・リストを要求しました -> 拒否しまし" "た" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "ユーザ %s(%u)はあなたのディレクトリ %s の共有ファイル・リストを要求しまし" "た -> 許可しました" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "ユーザ %s(%u)はあなたのディレクトリ %s の共有ファイル・リストを要求しまし" "た -> 拒否しました" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "ユーザ %s(%u)は %s のディレクトリを共有しています" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "ユーザ %s(%u)は要求されていない共有ディレクトリを送りました。" #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "ユーザ %s(%u)はディレクトリ %s の共有ファイル・リストを送りました。" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "ユーザ %s(%u)は共有ファイル・リストの送信を終了しました" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "ユーザ %s(%u)は無用の共有ファイル・リストを送りました。" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "ユーザ %s(%u)は共有ファイルまたはディレクトリ・リストへのアクセスを拒否しま" "した。" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "ファイル・コメント" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "ユーザ名" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "ファイル名" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "評価" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "コメント" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "コメントがありません" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u個のコメントがあります" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "オート [Lo]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "オート [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "オート [Hi]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "非常に低い" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "低い" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "普通" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "高い" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "非常に高い" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "離す" #: src/DataToText.cpp:62 msgid "Asking" msgstr "要求中" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "サーバ経由に接続中" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "キューが一杯" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "キューに入っています" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "ダウンロード" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "ハッシュセットを取得中" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "必要な部分がありません" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "LowIDとLowIDの間の接続ができません" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "接続が多すぎます" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Kad経由に接続中" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Kad接続が多すぎます" #: src/DataToText.cpp:73 msgid "Banned" msgstr "接続禁止" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "接続エラー" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "リモートキューが一杯" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "古いMLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "新しいMLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule互換" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "ローカルサーバ" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "リモートサーバ" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "ソース交流" #: src/DataToText.cpp:132 msgid "Passive" msgstr "パッシブ" #: src/DataToText.cpp:133 msgid "Link" msgstr "リンク" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "ソースシード" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "完成された数" #: src/DataToText.cpp:146 msgid "In progress" msgstr "途中です" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "キューに追加しました" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "すでにダウンロード中です" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "不明な、または不利なtempfileフォーマット。" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "サイズ" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "転送済み" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "スピード" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "進捗状況" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "ソース数" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "優先度" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "ステータス" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "残り時間" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "最後に全部分を確認した時刻" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "最後に受信した時刻" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "本当に選択されたファイルを削除しますか?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "本当に選択されたファイルを削除しますか?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "フィードバック:%s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "自動" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "中止する(&S)" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "停止する(&P)" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "再開する(&R)" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "完了したものをクリアする(&L)" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "すぐにこのファイルの全てのA4AFを交換する" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "このファイルの全てのA4AFを交換する(オート)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "このファイル以外の全てのA4AFを交換する" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "拡張オプション" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "プレビュー" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "ファイルの詳細(&D)" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "全てのコメントを表示" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "マグネットURIをクリップボードへコピーする" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "フィードバックをクリップボードにコピーする" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "割り当てない" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "カテゴリに割り当てる" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "ファイルを開く(&O)" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "このファイルの新しい名前を入力してください:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "ファイルの改名" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "ダウンロード数(%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "ファイル・プレビュー" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "エラー:外部メディア・プレイヤーを実行できませんでした!コマンド: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "server.metファイルをロード中です:%s" #: src/DownloadQueue.cpp:132 #, fuzzy, c-format msgid "Loading PartFile %u of %u" msgstr "古いダウンロード・ファイル(%uから%u)からデータをロード中です" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "部分ファイルは見つかりませんでした" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "%u個の部分ファイルが見つかりました" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "一時ディレクトリがあるファイルシステムは大きなファイルを扱うことができませ" "ん。" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "受信ディレクトリがあるファイルシステムは大きなファイルを扱うことができませ" "ん。" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "%sをダウンロード中です" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "あなたはすでにファイル'%s'をダウンロードしようとしています" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "あなたはすでにファイル'%s'を持っています" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "あなたはすでにファイル%sをダウンロードしようとしています" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "リンクの不明なプロトコル:%s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "" #: src/ExternalConn.cpp:261 #, fuzzy msgid "Client sent packet after authentication failed." msgstr "認証に失敗しました。" #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "外部接続は終了しました。" #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "外部接続は空パスワードのため無効にしました!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "外部接続を設定ファイルに無効しました" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "新しい外部接続を認められました" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "個人設定に空欄のパスワードがあるため、外部接続を拒否しました!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "クライアントを接続中: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "不明なバージョン" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "間違ったECバージョンID。バイナリ不互換性の可能性があります。同じスナップ" "ショットの コアとリモートを使用してください。" #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "任意CVSバージョンからリリースバージョンに接続はできません! *ハァ…*起こり得る" "クラッシュを予防しました" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "無効なプロトコルバージョン。" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "プロトコルバージョンタグがありません。" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 #, fuzzy msgid "Authentication failed: wrong password." msgstr "認証に失敗しました。" #: src/ExternalConn.cpp:512 #, fuzzy msgid "Authentication failed: missing password." msgstr "認証に失敗しました。" #: src/ExternalConn.cpp:522 #, fuzzy msgid "Invalid request, please authenticate first." msgstr "無効なリクエストです。先に認証をしてください。" #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "アクセスを認められました。" #: src/ExternalConn.cpp:535 #, fuzzy, c-format msgid "Sent error message \"%s\" to client." msgstr "知らないクライアントからのメッセージをフィルタする" #: src/ExternalConn.cpp:538 #, fuzzy, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "不正アクセスの試みがなされました。接続は閉じました。" #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "リモート部分ファイルコマンドが失敗しました:ファイルハッシュは見付かりません" "でした: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "ファイルハッシュは見付かりませんでした: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "あら!OpCode処理エラーが発生しました!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "サーバは追加しませんでした" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "サーバは見付かりませんでした: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "削除したいサーバを定義しなければなりません" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "検索中です。あと少しで結果をもう一度取ってきます!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "リモートインタフェイスからWebSearchする意味がありません。" #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "グラフを表示するための点がありません。" #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "あなたのクライアントはこの詳細段階には設定されていません。" #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "既にシャットダウン中です。" #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "ExternalConn:次のリンクを追加中です: '%s'。" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "不正なリンク、またはリンクがすでにリストに入っています。" #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "ファイルは見付かりませんでした。" #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "不正なファイル名。" #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "ファイルを改名できません。" #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kadは個人設定に無効されています。" #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "すでにKadに接続しています。" #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Kadに接続中です…" #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "全てのネットワークが無効になっています。" #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Kadから切断しています。" #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "不正なOpCode(プロトコルバージョンが違いますか?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "'%s'コマンドに不明な拡張子'%s'。\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "不明なコマンド'%s'。\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "このコマンドには引数は認められていません。\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "このコマンドには引数が必要です。\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "このコマンドは不完全です。下記から拡張をひとつ選択してください。\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "利用可能な拡張:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "利用可能なコマンド:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "すべてのコマンドは大文字と小文字を区別しません。\n" "'%s <コマンド>'を入力すると<コマンド>の詳細情報が表示されます。\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "アプリケーションが終了します。" #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "ヘルプを表示します。" #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "コマンドに対してヘルプを得るためには'help <コマンド>'を入力してください。\n" "全てのコマンドのリストを得るためには'help'を入力してください。\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "コマンド・リストには'%s'を使用してください\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "シンタックス・エラー!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "コマンドを処理する時にエラーが発生しました。これはありえない!バッグをリポー" "トしてください\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "このコマンドには引数が認められていません。" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "このコマンドには引数が不可欠です。" #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "引数が不正です。" #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "このコマンドは不完全です。" #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "'%s'を入力して、ヘルプを得てください。\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "これは %s %s %s です\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "これは %s %s です\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "クライアントを生成中です…\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "OK、%s を終了中です…\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "空のパスワードでは接続できません。\n" "パスワードは設定ファイル、またはコマンド・ラインで指定するか、\n" "あるいは聞かれた時に入力しなければなりません。\n" "\n" "終了中です…\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "このヘルプ・テキストを表示する。" #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "aMuleが起動しているホストです。(デフォルト:localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "aMuleの外接続用のポート。(デフォルト:4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "外接続用のパスワード。" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "設定をファイルから読み込む。" #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "アウトプットをstdoutにプリンとしないように。" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "冗長にして:デバッグ・メッセージも表示する。" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "プログラム・ロカールを設定する(言語)。" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "コマンド・ライン・オプションを設定ファイルに書き込む。" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "aMuleの設定ファイルを元に設定ファイルを生成する。" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "プログラム・バージョンをプリンとする。" #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "ファイルの詳細" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%%終わりました" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "友達" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "詳細を表示(&D)" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "友達を追加する" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "友達を削除する" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "送信 &Message" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "ファイルを見る" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "友達スロットを設立する" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "選択された友達を削除しますか?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "選択された友達を削除しますか?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "スロットが一つのみ提供されました。" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "複数選択" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "ユーザへメッセージを送る" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "メッセージ:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "仲間リストから外す" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "メッセージを送る" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "このファイルへ交換する" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "QR: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "他のファイルを頼みました" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "待機中のアップロード数: %s" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "キューに入っています" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "アップロード" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "誰も許可しない" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "いいえ" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "はい" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "ダウンロード中…" #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "注意: スキンファイル '%s' を読むために開けませんでした" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "ダウンロード済み" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "サーバへ再接続する" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "サーバリストを%sからダウンロードするのに失敗しました" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "サーバリストを%sからダウンロードするのに失敗しました" #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "IPフィルタ'ipfilter.dat'と'ipfilterstatic.dat'をロード中です。" #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "'ipfilter.dat'ファイル'%s'のロードに失敗しました:不明なファイル・フォーマッ" "トに出会いました。" #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "'ipfilter.dat'ファイル'%s'のロードに失敗しました:不明なファイルを開くことは" "できませんでした。" #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "%u個のIPレンジを'%s'からロードしました。" #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "不正な形式の行を %u 個破棄しました。" #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "既知のクライアントから\n" "ブートストラップする" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "ノード数(%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "ブートストラップするためには正しくないIPです" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "ブートストラップするためには正しくないポートです" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "必要なフィールドをすべて入力してください" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "本当に新しいnodes.datファイルをダウンロードしますか?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "そうすると、現在のノードがなくなり、Kademliaへの接続も初期化されます。" #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "続けますか?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: 検索キーワードが短すぎます" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "%u 個のKadコンタクトを読み込みました" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "%d個のKadコンタクトを書き込みました" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "ファイル名" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "ファイルサイズ" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "共有比" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "アップロード済み" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "要求済み" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "受付済み" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "ソース完了" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "不明なバージョン" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "注意: スキンファイル '%s' を読むために開けませんでした" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "ハッシュ中" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "完了中" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "完了" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "停止" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "エラーあり" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "待機" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "空のパスワードは無効です。" #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "不正なパスワード、 MD5ハッシュではありません!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "接続に失敗しました" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:258 #, fuzzy msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "ExternalConn: サーバーからの応答が不正です。接続を閉じました。" #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "成功です!aMuleへの接続を確立しました " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "成功です!接続を確立しました。" #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "外接続用のパスワード。" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "同期化スレドを始めました。" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "閉じる" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "カット" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "コピー" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "ペースト" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "クリア" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "全ての選択" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "無制限" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMuleのトレイ・メニュー" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "UL:無制限" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "UL:%u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DL:無制限" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DL:%u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "クライアント情報" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "あだ名:%s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "あだ名が選択されていません!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "クライアントID:" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "切断しています" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "サーバ名:" #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "サーバIP:" #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "接続されていません" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP:%s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "オンライン証明:有効です" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "オンライン証明:無効です" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "動作時間: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "DLの合計:%s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "ULの合計:%s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "aMuleを隠す" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "aMuleを表示する" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "終了" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "コミット" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "イベントはここに表示されます。イベントの全てのリストにはサーバ・タブに存在す" "るログを参考してください。" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "ロード中…" #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "接続中のサーバのユーザ数…" #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "ユーザ:0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "現在接続中のサーバのユーザ数と合計ユーザ数の推測。" #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "アップ: 0.0 | ダウン: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "現在の平均アップロード・ダウンロード速度。有効であれば、ブレースに囲まれてい" "る数字はクライアント・コミュニケーションのオーバヘッドを意味します。" #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "接続状態とアクティブ転送数を表示します。赤い矢印は現在接続していないことを意" "味します。黄色の矢印はlow ID(ファイアウォールされている)を意味します。緑色" "の矢印はhigh ID(最善の接続)を意味します。" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "切断しています…" #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "現在接続しているサーバ。" #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "検索" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "名前:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "タイプ" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "ローカル" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "グローバル" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "ファイル・ハッシュ" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "拡張パラメタ" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "フィルタリング" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "フィルタの種類" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "すべて" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "アーカイブ" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "オーディオ" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CDイメージ" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "画像" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "プログラム" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "テキスト" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "ビデオ" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "拡張子" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "最小サイズ" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "B" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "最大サイズ" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "入手可能範囲" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "フィルタ:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "フィルタの結果" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "結果を反転する" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "既知のファイルを隠す" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "開始" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "もっと" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "中止" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "ダウンロード" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "フィールドをリセット" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "結果" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "完成したダウンロードをクリアします" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "ソース完了" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "一般" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "完全名:" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "非適用" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "metファイル:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "ハッシュ:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "ファイル・サイズ:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "部分ファイルの状態:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "最後に完全として見た時間:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "転送" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "見つかったソース:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "転送中のソース:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "ファイル部分の数:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "入手可能数:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "データ・レート:" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "ダウンロードのアクティブ時間:" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "転送済み:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "完全サイズ:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "I.C.H.(知的破損処理)" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "破損による損失:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "圧縮による獲得:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "I.C.H.に救済されたパケット:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "ファイル名" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "引き継ぐ" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "クリーンアップ" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "適用" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" "ファイルへのコメントまたは評価を書き込んでください(テキストは全ユーザが見る" "ことができます)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "ファイルの質" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "評価されていません" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "不正/損被/偽造" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "悪い" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "悪くない" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "良い" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "優秀" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "ファイルの評価を選択するか、または偽造の注意を他のユーザに伝えてください…" #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "リフレッシュする" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "ダウンロード中です。しばらくお待ちください…" #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "サイズが不明です" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "不可欠な情報" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IPアドレス:" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "ポート:" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "追加情報" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "ユーザ名:" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "ユーザ・ハッシュ:" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "追加" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "ダウンロード速度:" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "現在" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "移動平均" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "セッション平均" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "アップロード速度" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "接続数" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "アクティブなダウンロード数" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "アクティブな接続(1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "アクティブなアップロード数" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "統計木" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "ユーザ名:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "ユーザ・ハッシュ:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "クライアント・ソフトウェア:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "クライアント・バージョン:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IPアドレス:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ユーザID:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "サーバIP:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "サーバ名:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "難読化:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "クライアントへの転送数" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "現在の要求:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "平均アップロード速度:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "平均ダウンロード速度:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "アップロード(セッション):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "ダウンロード(セッション):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "アップロード(合計):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "ダウンロード(合計):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "スコア" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "DL/UP変更:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "セキュア認証:" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "キューに追加しました" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "キュースコア:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "ニックネーム" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "接続してくるユーザはこの名前を見ることになります。" #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "ツールチップを表示するまでの遅延時間。" #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "コントロールに使う言語をここで指定します。" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "起動時に新バージョンを確認する" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "これを有効にするとaMuleはスタートアップの時に新バージョンをチェックする" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "起動時に最小化にする" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "これを有効にするとaMuleは起動時に最小化する。" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "終了時に確認する" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "トレイ・アイコンを有効にする" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "システム・トレイ、またはタスク・バーのアイコンを有効/無効にします。" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "最小化時にトレイ・アイコンに入れる" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "これを有効にするとaMuleはタスク・バーの代わりにシステム・トレイに最小化しま" "す。" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "ブラウザ選択" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "閲覧" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "可能ならば新しいタブで開く" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "可能なら、ウェブ・ページを新しいウインドウではなくて新しいタブで開きます" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "ビデオ・プレイヤー" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "アップロード" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "スロット割り当て" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "スタートアップに自動接続する" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "接続を失う時に再接続する" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "再試行後、応答のないサーバを削除する。再試行回数:" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "回" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "リスト" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "優先度システムを使用する" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "接続の時にLowIDチェックを使用する" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "安全接続" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "スタティック・リストに含まれているサーバのみに自動接続する" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "手動で追加したサーバを高い優先度に設定する" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "ダウンロードファイルを停止モードで追加する" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "ダウンロードファイルを優先度を自動にして追加する" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "最初と最後のチャンクを先にダウンロードしようとする" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "同じカテゴリから" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "新しいファイルのためのディスク領域を事前に確保する" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "新しいファイルのためにファイル全体が格納できるディスク領域を事前に確保し、断" "片化を防ぎます。" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "望ましい最小のディスク領域をここに入力してください。" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "珍しいファイルには10ソースを保存する(<20ソース)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "アップロード数" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "新しい共有ファイルを自動優先度として追加する" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(再帰的に共有するにはフォルダ・アイコンを右クリックしてください)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "隠れたファイルを共有する" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "グラフ" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "アップデート延期:5秒" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "平均グラフの時間:100分" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "接続数のグラフスケール:100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "背景" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "グリッド" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "ダウンロード現在" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "ダウンロード移動平均" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "ダウンロードセッション平均" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "アップロード現在" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "アップロード移動平均" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "アップロードセッション平均" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "アクティブ接続数" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "システム・トレイ・アイコン・スピードバー" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "現在のKadノード数" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "動作中のKadノード数" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "セッションのKadノード数" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "選択" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "表示されているクライアントのバージョン数(0=無制限)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!!注意!!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "最大の新しい接続数(5秒ごと)" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "ファイル・バファー・サイズ:240000バイト" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "アップロードキューサイズ:5000クライアント" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "サーバ接続のリフレッシュ空間:無効にする" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "延長情報をカテゴリ・タブで表示する" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "タイトルに転送速度を表示する" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "タイトルに転送速度を表示する" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "垂直ツールバー" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "フラット" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "ラウンド" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMuleはダウンロードリストの列を自動的にソートする" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "外部接続のパラメタ" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "外部接続を許可にする" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "リスンしているECインターフェイス用の正当なIPアドレスをa.b.c.dのフォーマットで" "入力してください。空のフィールド、または0.0.0.0は任意のインターフェイスを意味" "します。" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "ECポートでUPnPポート転送を有効にする" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "パスワード" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "ウェブテンプレート" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "全権限パスワード" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "低権限ユーザを有効にする" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "低権限パスワード" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "ページのリフレッシュ間隔(秒単位)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "gzip圧縮を有効にする" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "設定の変更をすべて適用します。" #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "設定の変更を全てリセットする" #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "タイトル:" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "コメント:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "受信ディレクトリ:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "新しく割り当てられたファイルの優先度を変更する:" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "変更しない" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "このカテゴリの色を選択する(現在選択中):" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "リセット" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "このボタンをクリックするとログのリセットが行います。" #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "このボタンをクリックするとサーバ・リストはURLから最新化する..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "server.metファイルへのURLをここに入力してから左側のボタンをクリックすると、既" "知のサーバのリストがアップデートされます。" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "新しいサーバの名前をここに入力してください" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:ポート" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "x.x.x.xフォーマットでサーバのIPアドレスを入力してください。" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "サーバのポートをここに入力してください。" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "手動でサーバを追加する(先に左側のフィールドを入力してください)..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMuleのログ" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "サーバ情報" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2K情報" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad情報" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "このボタンをクリックするとノード・リストをURLからアップデートします..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "ノード数(0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "ここにnodes.datファイルへのURLを入力してから左側のボタンをクリックすると、既" "知のノード・リストをアップデートします。" #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "ノードの統計" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "ブートストラップ" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "新しいノード" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "ポート:" #: src/muuli_wdr.cpp:2763 #, fuzzy msgid "Bootstrap from known clients" msgstr "" "既知のクライアントから\n" "ブートストラップする" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Kadを切断する" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "セキュア・ユーザ保証(SUI)を使用する" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "このオプションを有効にするのは推奨されます。SUIが有効でないとあなたはクレジッ" "トを得られません。" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "プロトコルを難読化する" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "プロトコルの難読化を有効にする" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "このオプションによってプロトコルの難読化を有効にできます。そうすると、aMuleは" "他のクライアントからの難読化された接続を受け入れられます。" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "外方向の接続に難読化を使用する" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "このオプションによって、aMuleは他のサーバまたはクライアントに接続する時にプロ" "トコル難読化を使用します。" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "難読化された接続のみを受信する" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "このオプションによって、aMuleは難読化された接続のみを受信します。ソース数が減" "りますが、トラフィックが全て難読化されます。" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "全員" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "あなたの共有ファイル・リストを要求できるユーザを選択してください。" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IPフィルタリング" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "クライアントをフィルタする" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "~/.aMule/ipfilter.datに登録されちるクライアントIPにフィルタリングをかけること" "を有効にします。" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "サーバをフィルタする" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "~/.aMule/ipfilter.datに登録されちるサーバIPにフィルタリングをかけることを有効" "にします。" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "リストを再ロードする" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "フィルタリングをかける目標のIPリストを~/.aMule/ipfilter.datから再ロードをしま" "す。" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "只今アップデートする" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "スタートアップの時にipfilterを自動アップデートする" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "フィルタリング段階:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "いつもLANのIPにフィルタリングをかける" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "適合しないIPを被害妄想的に扱う" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "クライアントIPがパケットがもともと受信されたIPと違いますとパケットを拒否しま" "す。使用するに気をつけてください。" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "提供されていれば、全システム応用のipfilter.datファイルを使用する" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "ローカルなipfilter.datファイルが見つからなければ、全システム応用のipfilter." "datファイルを使用可能します。" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "オンライン証明を有効にする" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "OSファイルの書き込みを有効にします。このファイルは外のアプリケーションに証明" "等を作成するためにを使用されます。" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "アップデート頻度(秒単位)" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "オンライン証明アップデート頻度(秒単位)を変化します。" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "ここをクリックするとオンライン証明ファイルが入っているディレクトリを選択でき" "ます。" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "受信メッセージをフィルタする(現在のチャットを除く):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "全てのメッセージをフィルタする" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "友達リストの入っていない方々からのメッセージをフィルタする" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "知らないクライアントからのメッセージをフィルタする" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "次のストリングが入っているメッセージをフィルタする(','で区分する):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "amuleがメッセージ・フィルタ/ブロックの目標にする言葉をここに追加してください" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "コメント" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "次のストリングが入っていコメントをフィルタする(','で区分する):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "プロクシー無しの自動的なサーバ接続" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "認証を有効にする" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "ユーザ名/パスワード認証を有効/無効にする" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "プロクシーに接続に使うユーザ名" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "パスワード:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "プロクシーに接続に使うパスワード" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "プロクシを有効にする" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "プロクシ・サポートを有効/無効にする" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "プロクシの種類:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "プロクシー・ホスト:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "プロクシー・ホスト名:" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "プロクシー・ポート:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "プロクシーのポート" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "次に接続する:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "リモートamuleにログインする" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "ユーザ名" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "設定を記憶する" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "冗長なデバッグ・ロギングを有効にする" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "ファイルを開く(&O)" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "メッセージのカテゴリ:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "待機中…" #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "インポートを追加する" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "選択したものを再試行" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "選択したものを破棄" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "アクティブなアップロード数:" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "共有ファイルを隠す" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "ビュー・フィルタを選択してください" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "アクティブなアップロード数" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "クライアントを表示する" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "リストを再ロードする" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "共有ファイルを再ロードする" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "送信する" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "指示するメッセージを送信します。" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "チャット・セションを閉じます。" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "すべてのサーバ、もしくはKadに接続する" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "共有ファイル" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "使用不可能 [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "バイト" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "B/s" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "秒" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "分" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "時間" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "日" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "全て" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "他の全て" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "未完成" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "中断しています" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "ビデオ" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "アーカイブ" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "テキスト" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "アクティブ" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "%s:%sをインポートします" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "一時フォルダを読み中です" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "基本情報をダウンロード情報ファイルから取ってきます" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "当てファイルを作成中です" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "古いダウンロード・ファイル(%uから%u)からデータをロード中です" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" "データ・ブロックを一つの新しいダウンロード・ファイル(%uから%u)に纏め中です" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "ソース・ダウンロードファイル情報を取ってきます" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "ダウンロードを追加して、新しい部分ファイルを保存中です" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "部分ファイルをインポートをします" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "状況" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "ファイル・ハッシュ" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s(ディスク:%s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "一時ダウンロードを検索するフォルダを選択してください(サブフォルダは含まれま" "す)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "成功にインポートしたダウンロードのソース・ファイルを削除しますか?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "ソースを削除しますか?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "エラー:部分ファイルを作成できませんでした!" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "metファイルのバックアップを%sからロードしようとしています" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "エラー: %s(%s)は破損されて(tagcountが間違っています)、ファイルはロード出" "来ません。" #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "ファイル情報を回復しようとしています…" #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "無名なファイルを回復中です:RecoveredFile.datとして回復しようとします" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "得られる全てのファイル情報を回復しました:使用しようとしています…" #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "残念ながら、ファイル情報を回復できませんでした。" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "%s(%s)を開くことはできませんでした" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "部分ファイル%s(%s ==> %s)の保存中にエラーが発生しました" #: src/PartFile.cpp:904 #, fuzzy msgid "IO failure while saving partfile: " msgstr "部分ファイル%s(%s ==> %s)の保存中にエラーが発生しました" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "'%s'の長さを読み込むことができませんでした。%sファイルを使用します。" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "どうか、'%s'はゼロ・サイズです:%sファイルを使用しています。" #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "%sのためのpart.met.seedsファイルは保存できませんでした" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "%i個のソース・シードを次の部分ファイルに保存しました:%s(%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "%i個のソース・シードを次の部分ファイルに保存しました:%s(%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" "部分ファイルのシード・ファイルを読む時にエラーが発生しました:(%s - %s)%s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "破損されている部分(%d)が%d部分、ファイル%sに見つかりました:FileResultHash " "|%s| FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "完成した部分(%i)が%sに見つかりました" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "%sの再ハッシュを終了しました" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "ダウンロードが終了しました:%s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "ファイルを削除します:%s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "注意:ディスク容量が足りません!ファイルを停止します:%s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "ダウンロードした部分%i(ファイル:%s)は破損されています" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "" "ICH:破損された部分%i(%sのため)を回復しました→:%s バイトを保存しました" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "領域確保中" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "ダウンロード済み" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "エラー: 部分ファイル '%s' が開けませんでした" #: src/Preferences.cpp:632 msgid "System default" msgstr "システムの標準設定" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "アルバニア語" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "アラブ語" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "エストニア語" #: src/Preferences.cpp:636 msgid "Basque" msgstr "バスク語" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "ブルガリア語" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "カタロニア語" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "中国語(簡体字)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "中国語(繁体字)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "クロアチア語" #: src/Preferences.cpp:642 msgid "Czech" msgstr "チェコ語" #: src/Preferences.cpp:643 msgid "Danish" msgstr "デンマーク語" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "オランダ語" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "英語(U.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "エストニア語" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "フィンランド語" #: src/Preferences.cpp:648 msgid "French" msgstr "フランス語" #: src/Preferences.cpp:649 msgid "Galician" msgstr "ガリシア語" #: src/Preferences.cpp:650 msgid "German" msgstr "ドイツ語" #: src/Preferences.cpp:651 msgid "Greek" msgstr "ギリシア語" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "ヘブライ語" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "ハンガリー語" #: src/Preferences.cpp:654 msgid "Italian" msgstr "イタリア語" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "イタリア語(スイス)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "日本語" #: src/Preferences.cpp:657 msgid "Korean" msgstr "韓国語" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "リトアニア語" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "ルウェー語" #: src/Preferences.cpp:660 msgid "Polish" msgstr "ポーランド語" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "ポルトガル語" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "ポルトガル語(ブラジル)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "アルバニア語" #: src/Preferences.cpp:664 msgid "Russian" msgstr "ロシア語" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "スロベニア語" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "スペイン語" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "スウェーデン語" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "トルコ語" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "言語" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "利用不可" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "サーバのUDPソケトがTCP+3であるためTCPポートを65532以上には設定できません" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "デフォルトポートを使用します (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "接続" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "ディレクトリ" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "サーバ数" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "ファイル" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "セキュリティ" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "プロクシ" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "リモート制御" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "オンライン署名" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "イベント" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "デバッグ" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "この設定は、詳しい知識を持っていなければ変更しない\n" "方が良いです。変更すれば状況が悪くなる恐れが\n" "高いです。\n" "\n" "この設定を変更しなくてもaMuleはうまく動いて\n" "います。" #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "接続するプロクシーの種類" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "この変更点を有効するにはaMuleを再起動しなければなりません:\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCPポートを変更しました。\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDPポートを変更しました。\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "外部接続は終了しました。" #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "新しい外部接続を認められました" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "外部接続は終了しました。" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "プロトコルを難読化する" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "外部接続を有効にしましたがパスワードを設定していません。\n" "有効なパスワードを設定しないと外部接続を可能できません。" #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- 言語を変更しました。\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- 一時フォルダを変更しました。\n" #: src/PrefsUnifiedDlg.cpp:657 #, fuzzy msgid "- ED2K network enabled.\n" msgstr "全てのネットワークが無効になっています。" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "UDPポートが無効になっているとKadは開始できません。\n" "UDPポートを有効にするか、またはKadを無効にしてください。" #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "必ず早急にaMuleを再起動してください。\n" "今すぐに再起動しなければ、挙動がおかしくなる可能性があります。\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "オートアップデートサーバリストが空です。\n" "せめて一つのURLを入力して、有効なserver.metファイルを指定してください。\n" "このチェックボクスの近くの\"表\"ボタンをクリックして、URLを入力してください。" #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "一時ファイル" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "受信ファイル" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "オンライン署名" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr " %s のためのフォルダを選択する" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "ビデオプレイヤーを選択する" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "ブラウザを選択する" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "実行ファイル%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "server.metファイルをダウンロードするURLをここに追加してください。\n" "一行にひとつのURLのみです。" #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "アップデート遅延時間: %d 秒" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "平均グラフの時間: %d 分" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "接続グラフスケール: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "ファイルバッファサイズ: %d バイト" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "アップロードキューサイズ: %d クライアント" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "サーバ接続リフレッシュ遅延時間: %d 分" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "サーバ接続リフレッシュ遅延時間: 無効" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "無効にする" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr " `%s' イベントにコマンドを実行する" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "コアにコマンドを実行することを有効にする" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "コアコマンド:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "GUIにコマンドを実行することを有効にする" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "GUIコマンド:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "次の変数は置換されます:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "最小サイズは最大サイズより小さくなければなりません。最大サイズを無視します。" #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "検索の注意" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "メイン" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Kadが走っていない中にはKadの検索はできません" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Kadを検索する間に不明なエラーが発生しました: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ファイルID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "ファイル" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "カテゴリにダウンロードする" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "このファイルにオプショナルURLを追加する" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "既知ファイルとしてマークする" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "キャンセル" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "難読化されたすべてのサーバへの接続に失敗しました。難読化せずにもう一度試みま" "す。" #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "リストされたすべてのサーバへの接続に失敗しました。もう一度試行します。" #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "%s(%s:%i)に接続しています" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr " %s に接続を確立しました" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "接続中に致命的なエラーが発生しました。インターネット接続がダウンしている恐れ" "があります。" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "%s(%s:%i)の接続を失いました" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s(%s:%i)は応答しないようです。" #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s(%s:%i)は一杯のようです。" #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "自動的なサーバへの接続は、あと%d秒で再試行します" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "接続を失いました" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "%s(%s:%i)の接続に失敗しました。" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "%s(%s:%i)の接続の試しがタイムアウトました。" #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "server.metファイルをロード中です:%s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Server.metファイルは見つかりませんでした!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "server.metファイル'%s'をロードに失敗しました。不明なフォーマットが原因です。" #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "server.metを開くのに失敗しました!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "server.metファイルは破損しています。不正なバージョン・タグが見つかりました:" "0x%x、サイズ %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "server.metに%i個のサーバが見つかりました" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d個のサーバが追加されました" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "known.metファイル%sを読む時にIOエラーが発生しました" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "サーバは追加されていません:[%s:%d]は正当なポートを指示していません。" #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" "サーバは追加されていません:[%s:%d]はフィルタされているか、または不正です。" #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "サーバは追加されていません:同じ[%s:%d]のIP:ポートはリストに見つかりました。" #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "サーバは追加されました:[%s:%d]は'%s'という名前を使用しています。" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "削除しようとするサーバには現在接続しています。先に切断を行ってください。" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "'%s'を開くことができませんでした" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "server.metを保存するのに失敗しました!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "不正なURL" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "サーバリストを%sからダウンロードするのを完了しました" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "サーバリストを%sからダウンロードするのを開始する" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "addresses.datに、正しいserver.metの自動ダウンロードURLがありません。" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "サーバリストを%sからダウンロードするのに失敗しました" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "ローカル・サーバはIPFiltersにフィルタされているため、違うサーバに接続します!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "サーバ名" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "アドレス" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "ポート" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "説明" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "ユーザ" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "スタティック" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "バージョン" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "接続中のサーバを削除しようとしています。先に切断してください。 このサーバは削" "除されませんでした。" #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(不明な名前)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "スタティックサーバ %s を本当に削除しますか?" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "サーバ (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "サーバ" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "サーバへ接続する" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "サーバをスタティックとしてマークする" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "サーバを非スタティックとしてマークする" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "サーバをスタティックとしてマークする" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "サーバを非スタティックとしてマークする" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "サーバを削除する" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "サーバを削除する" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "全てのサーバを削除する" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "サーバへ再接続する" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "全てのサーバを本当に削除しますか?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "全ての選択されたサーバを本当に削除しますか?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "全ての選択されたサーバを本当に削除しますか?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "新しいclientidは%uです" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "注意:あなたはLow-IDを得られました!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\t恐らくパソコンがファイラウォールやルータの裏にあるのが原因です。" #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\t詳しい情報にはhttp://wiki.amule.orgを参考してください" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "不明なサーバ情報を受信しました!理由:短しぎます" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "%d個の新しいサーバを受信しました" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "サーバ・リストの保存を終了しました。" #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "サーバは最後のコマンドを断りました" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "サーバ%sから偽造のパケットが届きました" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "サーバ%sのパケットを処理する時に未処理例外エラーが発生しました" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "%sに接続するためのDNS解決スレッドを作成せきません。" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "IPアドレス%sのサーバ%sはフィルタリングされています。接続はしません。" #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "難読化プロトコルを使用しています。" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "%s(%s - %s:%i)%sへ接続中です。" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "%sに接続するためのDNSは解決できませんでした:接続はできません!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "" "サーバは追加しませんでした:IPまたはホスト名は指示されていませんでした。" #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "サーバは追加しませんでした:不正なサーバ・ポートが指示されました。" #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kademliaのステータス:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "%s に起動しています" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "走っています" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "ステータス:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "接続状況:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "接続状況:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "ファイアワォールされた状況:" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "仲間がありません" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "仲間と接続しています" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "仲間と接続しています" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "見つかったソース:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 #, fuzzy msgid "Indexed notes:" msgstr "インデックスファイルが見付かりませんでした: " #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "平均のユーザ数:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "平均のファイル数:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "動作していません" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "%i個の既知の共有ファイルが見つかりました" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "%i個の既知、%i個の未知の共有ファイルが見つかりました" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, fuzzy, c-format msgid "Shared directory not found, skipping: %s" msgstr "サーバは見付かりませんでした: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "ユーザ名" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "ダウンロード速度:" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "アップロード速度" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "入手可能数:" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "アップロードの状態" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "ダウンロードの状態" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "ファイル名" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "共有ファイル" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "要求" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "認められた要求" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "転送されたデータ" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "共有比" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "得られた部分" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "完成したソース" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "ディレクトリパス" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "コメントおよび評価を追加する" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "コメントおよび評価を編集する" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "改名する" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "コレクションに存在するファイルを転送リストに追加する" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "マグネット &URI をクリップボードにコピーする" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "ED2kリンクをクリップボードにコピーする(&AICH インフォ)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "有効なソースリンクを作るにはHighIDが必要です" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "共有ファイル(%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[部分ファイル]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "ファイル名" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "アップロードされたデータ(セッション合計): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "合計オーバヘッド(パケット数): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "ファイル要求のオーバヘッド(パケット数): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "ソース交換のオーバヘッド(パケット数): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "サーバのオーバヘッド(パケット数): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Kadのオーバヘッド(パケット数): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "暗号化オーバーヘッド (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "アクティブなアップロード数: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "待機中のアップロード数: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "成功したアップロードセッションの合計: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "失敗したアップロードセッションの合計: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "平均アップロード時間: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "ダウンロードされたデータ(セッション合計): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "見付かったソース: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "アクティブなダウンロード数(塊数): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "セッションの合計UL/DL比: %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "再接続数: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "最初の転送からの経過時間: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "サーバへの接続時刻: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "アクティブな接続数(推測): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "最大接続数への到達: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "平均接続数(推測): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "ピーク接続数(推測): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "クライアント数" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "サイズが不明です" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "フィルタされた数" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "接続禁止" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "合計: %i 既知: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "動作サーバ数: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "失敗したサーバ数: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "合計: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "削除されたサーバ数: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "フィルタされたサーバ数: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "動作サーバのユーザ数: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "動作サーバのファイル数: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "ユーザ合計: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "ファイル合計: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "サーバ占有: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "共有ファイル数: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "共有ファイルの合計サイズ: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "オペレーティング・システム" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "受信していません" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "アクティブな接続(1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "利用不可" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "記録なし" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "" "PID `%2$d' のコマンド `%1$s' がステータスコード `%3$d' で終了しました。" #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "を実行してから終了する。" #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "不正なIPフォーマット。xx.xxx.xxx.xxx:xxxxを使用ください\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "このコマンドには引数が必要です。有効な引数:'all'、ファイル名、または数字。\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "ハッシュで処理しています: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "ファイル名で処理しています: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "このコマンドには引数が必要です。有効な引数:ファイルのハッシュ。\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "正当な数字ではありません\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "正当なハッシュではありません(長さは丁度32半角文字あるべきです)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "'%s'を入力して、ヘルプを得てください。\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "ダウンロード数(%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "不明なエラーによって要求が失敗しました。" #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "オペレーションは成功しました。" #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "リクエストは次のエラーで失敗しました:%s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "クライアントのIPフィルタリングは%sです。\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "オフ" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "オン" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "サーバのIPフィルタリングは%sです。\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "現在のIPフィルタ段階は%dです。\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "%s %s %sに接続されています" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "只今接続中です" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "ファイアウォールされています" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "ダウンロード数:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "アップロード数:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "キューに入っているクライアント数:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "合計ソース数:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "検索結果数:%i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "サーバから不明な返事が届きまして、OpCodeは%#xです。" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "短い状態情報を表示する" #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "コ接続状態、現在のアップロード/ダウンロード速度等を表示する。\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "詳細な統計ツリーを表示する。" #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "オプションとして、, 数0〜255を引数としてこのコマンドに渡すことができます。\n" "こういう風に、クライアント・バージョン・サブツリーの表示したいエントリー数を" "指示できます。\n" "ゼロ、または空欄の引数は'無制限'の意味を示します。\n" "\n" "例: 'statistics 5'は各クライアントの一番上の5つのバージョンしか表示しませ" "ん。\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 #, fuzzy msgid "Reload the given object." msgstr "指示されたオブジェクトを再ロードします。" #: src/TextClient.cpp:862 #, fuzzy msgid "Reload shared files list." msgstr "共有ファイル・リストを再ロードします。" #: src/TextClient.cpp:864 #, fuzzy msgid "Reload IP filtering table." msgstr "指示されたIPフィルタ・テーブルをファイルから再ロードします。" #: src/TextClient.cpp:865 #, fuzzy msgid "Reload current IP filtering table." msgstr "IPフィルタリング段階を選択してください。" #: src/TextClient.cpp:866 #, fuzzy msgid "Update IP filtering table from URL." msgstr "指示されたIPフィルタ・テーブルをファイルから再ロードします。" #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "ネットワークへ接続します。" #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "これで個人設定に有効になっている全てのネットワークへ接続します。\n" "オプションとして、一つのサーバのみに接続したいなら、そのサーバのアドレスを" "「IP:ポート」\n" "形で指示できます。IPアドレスはIPv4形のドット10進数字、或いは解決できる\n" "DNS名として指示しなければなりません。" #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Kadのみに接続します。" #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "ネットワークから切断します。" #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "これで現在に接続している全てのネットワークから切断します。\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Kadのみから切断します。" #: src/TextClient.cpp:879 #, fuzzy msgid "Add an eD2k or magnet link to core." msgstr "コアにED2K、またはマグネット・リンクを追加します。" #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "個人設定の値を設定してください。" #: src/TextClient.cpp:885 #, fuzzy msgid "Set IP filtering preferences." msgstr "IPFilterを設定してください。" #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "クライアントとサーバの両方のIPフィルタリングをオンします。" #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "クライアントとサーバの両方のIPフィルタリングをオフします。" #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "クライアントのフィルタリングを有効/無効します。" #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "クライアントのフィルタリングをオンします。" #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "クライアントのフィルタリングをオフします。" #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "サーバのフィルタリングを有効/無効します。" #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "サーバのフィルタリングをオンします。" #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "サーバのフィルタリングをオフします。" #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "IPフィルタリング段階を選択してください。" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "有効なフィルタリング段階は0〜255の間で、\n" "デフォルト値は127です。\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "帯域制限を設定します。" #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "このコマンドの引数の値は毎秒のキロバイトです。\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "アップロード・帯域幅の制限を設定します。" #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "このコマンドの引数の値は毎秒のキロバイトです。\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "ダウンロード・帯域幅の制限を設定します。" #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "個人設定の値を取ってきて、表示します。" #: src/TextClient.cpp:907 #, fuzzy msgid "Get IP filtering preferences." msgstr "IPFilterの個人設定の値を取ってきます。" #: src/TextClient.cpp:908 #, fuzzy msgid "Get IP filtering state for both clients and servers." msgstr "クライアントとサーバの両方のIPFilter状況を取ってきます。" #: src/TextClient.cpp:909 #, fuzzy msgid "Get IP filtering state for clients only." msgstr "クライアントのみのIPFilter状況を取ってきます。" #: src/TextClient.cpp:910 #, fuzzy msgid "Get IP filtering state for servers only." msgstr "サーバのみのIPFilter状況を取ってきます。" #: src/TextClient.cpp:911 #, fuzzy msgid "Get IP filtering level." msgstr "IPフィルタリング段階を選択してください。" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "帯域制限の値を取ってきます。" #: src/TextClient.cpp:915 #, fuzzy msgid "Execute a search." msgstr "Kadを検索します" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "検索(search)の種類を下記から選択してください:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "例:'search kad file'はkadで\"file\"を検索します。\n" #: src/TextClient.cpp:917 #, fuzzy msgid "Execute a global search." msgstr "グローバル検索(GLOBAL)を実行します。" #: src/TextClient.cpp:918 #, fuzzy msgid "Execute a local search" msgstr "ローカル検索(LOCAL)を実行します" #: src/TextClient.cpp:919 #, fuzzy msgid "Execute a kad search" msgstr "Kadを検索します" #: src/TextClient.cpp:921 #, fuzzy msgid "Show the results of the last search." msgstr "最後の検索の結果を表示します。" #: src/TextClient.cpp:922 #, fuzzy msgid "Return the results of the previous search.\n" msgstr "以前の検索の結果を回答します。\n" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "検索の進捗を表示します。" #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "検索の進捗を表示します。\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "ファイルのダウンロードを開始します" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "以前の検索からファイル番号を選んで指定しなければなりません。\n" "例: 'download 12'は以前の検索結果で12として指定されたファイルのダウンロード" "を開始します。\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "ダウンロードを停止します。" #: src/TextClient.cpp:938 msgid "Resume download." msgstr "ダウンロードを再開します。" #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "ダウンロードをキャンセルします。" #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "ダウンロードのプライオリティーを設定します。" #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" "ダウンロードのプライオリティーを低い(Low)、普通(Normal)、高い(High)、ま" "たはオート(Auto)に設定します。\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "プライオリティーを低いに設定します。" #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "プライオリティーを普通に設定します。" #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "プライオリティーを高いに設定します。" #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "プライオリティーをオートに設定します。" #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "キュー/リストを表示します。" #: src/TextClient.cpp:952 #, fuzzy msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "アップロード/ダウンロードキュー、サーバ・リスト、または共有リストを表示しま" "す。\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "アップロードキューを表示します。" #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "ダウンロードキューを表示します。" #: src/TextClient.cpp:955 msgid "Show log." msgstr "ログを表示します。" #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "サーバ・リストを表示します。" #: src/TextClient.cpp:959 msgid "Reset log." msgstr "ログを再初期化します。" #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "これは廃止予定のコマンドで、将来に存在がなくなる可能性が高いです。\n" "代わりに'%s'を使用してください。\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMuleテキストクライアント" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "'%s' の古いAICHハッシュセットを '%s' の64bに変換中です。" #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "警告:ファイル名 '%s' は無効です。'%s' に改名されました。" #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "警告:ファイル '%s' は既に存在します。新しいファイルを '%s' に改名しました。" #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "本当にこのカテゴリの全てのファイルをキャンセルして削除しますか?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "確認が必要です" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "接続が多すぎます" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "他の全て" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "ビュー・フィルタを選択してください" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "カテゴリを追加します" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "カテゴリを編集します" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "カテゴリを削除します" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "ファイル(%s)を開くことができませんでした。共有ファイルのリストから外しま" "す。" #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "不明なファイルのハッシュセットが要求されました: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "ファイル %s のアップロードを再開します" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "ファイル %s のアップロードを一時停止します" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "イベント'%2$s'にコマンド'%1$s'を起動できませんでした。" #: src/UserEvents.h:60 msgid "Download completed" msgstr "ダウンロード完了" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "ファイルのフルパス。" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "パス部分を除いたファイルの名前。" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "ファイルのサイズ(バイト)。" #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "累計ダウンロード活動時間" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "新しいチャットセッションの開始" #: src/UserEvents.h:85 msgid "Message sender." msgstr "メッセージ送信者。" #: src/UserEvents.h:88 msgid "Out of space" msgstr "空き容量不足" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "ディスク・パーティション。" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "完了中にエラー" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "ファイル %u: %s 番を処理中です" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" "パートハッシュを要求しました(9.5MB以上のファイルサイズのみに使用されます)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> このファイルは存在していません!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "ようこそ!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "入力パラメタ" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "ハッシュをするファイル" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "このファイルにオプショナルURLを追加する" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "削除" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "パートハッシュでリンクを生成する" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "リンクサイズが大きくなるかわりに、新しくて珍しいファイルの配布を速くする" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4ファイルハッシュ" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "保存する" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "クリップボードへコピーする" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "aLinkCreatorについて" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "現在コピーできる物がありません!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "開くことができません: " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "空でないファイル名を入力してください" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "現在保存できるものがありません!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "ハッシュ中…" #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "キャンセルされました!" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr " %.2f 秒で完了しました" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "このURLはもう追加しました!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "空でないURLを入力してください" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "%s を開くことができません" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i 日 %i 時間 %i 分 %i 秒" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas、aMuleのオンライン統計" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "wxCasの起動以来の最大DL速度" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "前のwxCas起動を含めて記憶した最大DL速度" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "システム" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "オートリフレッシュを中止する" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "オンライン統計イメージを保存する" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "オンライン統計イメージを印刷する" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "設定" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "wxCasについて" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "オートリフレッシュを開始する" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "オートリフレッシュを中止しました" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "オートリフレッシュを開始しました" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "統計イメージを保存する" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMuleのオンライン統計" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "印刷中に問題が発生しました。\n" "選択されたプリンタの設定に異常がありませんか?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "印刷中です" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas、aMuleのオンライン署名統計\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pedro de Oliveira のCASに基づいています\n" "\n" "GPLの元で配布されます" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "aMuleは動作していません…" #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMuleは動作しています" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMuleは動作していますが接続はしていません" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMuleは接続中です…" #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "aMuleのステータスは不明です…" #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " の動作時間は " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " は停止しています!" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " は接続していません!" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " は接続中です…" #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " の挙動が変です。チェックしてください!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " は次のものに接続しています: " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kas: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "オフ" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " はオンです " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " とともに " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "合計ダウンロード: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr "、 アップロード: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "セッションダウンロード: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "ダウンロード: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s、アップロード: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "共有: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " ファイル、キュー中のクライアント: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "時間: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " オン " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "システムロード平均 (1-5-15分): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "システム動作時間: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "amulesig.datファイルの入っているディレクトリ" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "amulesig.datファイルが入っているディレクトリをここに入力してください" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "リフレッシュレート間隔(秒)" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "各リフレッシュイベントで統計イメージを生成する" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "統計イメージを生成したいディレクトリをここに入力してください" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "統計イメージを定期的にFTPサーバへアップロードする" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTPのUrl" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTPのパース" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "FTPサーバのURLをここに入力してください" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "統計イメージを置きたいFTPサーバのディレクトリをここに入力してください" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "ユーザ" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "FTPサーバのログインに使うユーザ名をここに入力してください" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "FTPサーバのログインに使うパスワードをここに入力してください" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "FTPアップデートレート間隔(分)" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "実証" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "署名ファイルが入っているフォルダ" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "統計イメージを生成するフォルダ" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "テンプレート をロードします" #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnPポート" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "gzip圧縮を使用する" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "ゲストアクセスを許可する" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "ゲストアクセスを拒否する" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMuleの設定ファイルパス。注意:直接使用しないでください!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "PHPインタープリタを無効にする(非推奨)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "各要求ごとにPHPページを再コンパイルする" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMuleウェブサーバ" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "ウェブクライアント接続が受け入れられました\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "次のエラーによって要求が失敗しました: %s。" #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "インデックスファイルが見付かりませんでした: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "セッション有効期限が切れました - ログインを要求しています\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "セッションOK、ログインしています\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "セッションOK、ログインしていません\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "セッションが開いていません - ログインを要求します\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "セッションを作成しました - ログインを要求しています\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "要求を処理中です [original]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "パスワードをチェック中です\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "パスワードのハッシュが無効です\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "パスワードOKです\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "パスワードが正しくありません\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "パスワードを入力しませんでした。空のパスワードは許可されていません。\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "ログアウトが要求されました\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "要求を処理中です [変更しました]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "部分ファイル%s(%s)にはシード・ファイルはありません" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "部分ファイル%s(%s)のシード・ファイルは空です" #, fuzzy #~ msgid "Download status" #~ msgstr "ダウンロードの状態" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s)" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "アップデート遅延時間: %d 秒" #~ msgid "Transferring" #~ msgstr "転送中" #, fuzzy #~ msgid "QR: ???" #~ msgstr "QR:%u" #~ msgid "QR: %u" #~ msgstr "QR:%u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "キューに追加しました" #~ msgid "TODO - show progress of a search" #~ msgstr "まだ実現されていない:検索結果の進捗を表示する" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "ファイル %s のMD4とAICHハッシュを作成しています" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "ファイル %s のMD4ハッシュを作成しています" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "ファイル %s のAICHハッシュを作成しています" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "警告:バックアップ後、元の '%s' を削除することができませんでした" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "警告: %s を削除することができませんでした" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR:%u)" #~ msgid "" #~ "You cannot connect to a release version from an arbitrary SVN version! " #~ "*sigh* possible crash prevented" #~ msgstr "" #~ "クラッシュを防ぐため、SVNバージョンからリリースバージョンへの接続はできま" #~ "せん!" #~ msgid "Rating (total):" #~ msgstr "評価(合計):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "すべてのアップロードにフル・チャンクを転送しようとする" #, fuzzy #~ msgid "Downloads window" #~ msgstr "ダウンロード" #~ msgid "Transfers" #~ msgstr "転送" #~ msgid "Unban" #~ msgstr "接続禁止を解除する" #~ msgid "Show Uploads" #~ msgstr "アップロードを表示する" #~ msgid "Show Queue" #~ msgstr "キューを表示する" #~ msgid "Select View" #~ msgstr "表示モードを選択する" #~ msgid "Client Software" #~ msgstr "クライアント・ソフトウエア" #~ msgid "Waited" #~ msgstr "待機時間" #~ msgid "Upload Time" #~ msgstr "アップロード時間" #~ msgid "Upload/Download" #~ msgstr "アップロード/ダウンロード" #~ msgid "Remote Status" #~ msgstr "リモートの状態" #~ msgid "File Priority" #~ msgstr "ファイルの優先度" #~ msgid "Score" #~ msgstr "スコア" #~ msgid "Asked" #~ msgstr "聞かれた" #~ msgid "Last Seen" #~ msgstr "最後に確認した時間" #~ msgid "Entered Queue" #~ msgstr "キューに入った時間" #~ msgid "Transferred Up" #~ msgstr "アップに転送された" #~ msgid "Transferred Down" #~ msgstr "ダウンに転送された" #~ msgid "Userhash" #~ msgstr "ユーザ・ハッシュ" #~ msgid "Encrypted" #~ msgstr "暗号化された" #~ msgid "Shows Upload / Up-queue" #~ msgstr "アップロード/アップキューを表示します" #~ msgid "Clients on queue :" #~ msgstr "キューに入っているクライアント:" #~ msgid "Current Session" #~ msgstr "現在のセッション" #~ msgid "Total" #~ msgstr "合計" #~ msgid "Requested :" #~ msgstr "要求数:" #~ msgid "Files Transfers Window" #~ msgstr "ファイル転送ウィンドウ" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "ユーザ合計: %s | ファイル合計: %s" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "警告:バックアップ後、元の '%s' を削除することができませんでした" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "" #~ "CIP2Country::CIP2Country():次から国データはロードできませんでした:" #~ msgid "Get IPFilter level." #~ msgstr "IPFilter段階を取ってきます。" #~ msgid "Makes a search." #~ msgstr "検索を実行します。" #, fuzzy #~ msgid "Killed!" #~ msgstr "失敗しました" #, fuzzy #~ msgid "Using amuleweb in '%s'." #~ msgstr "スタートアップの時にamulewebを起動する" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "aMuleを終了します。" #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "次のオプションは、セキュリティーのために今回のリリースで変更されました:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* プロトコル難読化を、受信・発信両方の接続に対して有効にしました。\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* サーバリストを他のサーバやクライアントから更新することを無効にしまし" #~ "た。\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "この変更についての詳しい情報はaMuleのwiki、すなわち\n" #~ "http://wiki.amule.orgを\"fake servers\"に対して検索してください。\n" #~ "aMuleが正しく動作するため、サーバリストから全ての偽サーバを消すことが重要" #~ "です。" #~ msgid "Fetching status..." #~ msgstr "状態を取ってきています…" #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "ユーザ: E: %s K: %s | ファイル E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "" #~ "クライアント %s がIP:ポート %s:%d にいて、 %s %s %s を使用しています" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress()はNULLを回答しました" #~ msgid "Firewalled" #~ msgstr "ファイアワォールされています" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "%d個の国旗ビットマップをロードしました。" #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "ファイル %s はDonkeyにとって大きすぎます:最大許可サイズは4GBです。" #~ msgid "No handler for this file type." #~ msgstr "このファイルタイプのハンドラがありません。" #~ msgid "File was not saved" #~ msgstr "ファイルは保存されませんでした" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "接続に失敗しました。指示されたホストには接続はできませんでし。\n" #~ msgid "Message Filter" #~ msgstr "メッセージフィルタ" #~ msgid "Gui Tweaks" #~ msgstr "GUI設定" #~ msgid "Core Tweaks" #~ msgstr "コア設定" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "ツールチップ遅延時間(秒)" #~ msgid "Show part file number before file name" #~ msgstr "ファイル名の前に部分ファイル番号を表示する" #~ msgid "Skin Support" #~ msgstr "スキンのサポート" #~ msgid "- no skins available -" #~ msgstr "- スキンがありません -" #~ msgid "Online Signature Directory:" #~ msgstr "オンライン証明ディレクトリ:" #~ msgid "Filtering Options:" #~ msgstr "フィルタ・オプション:" #~ msgid "Line Capacities" #~ msgstr "ライン収容" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "注意:この値は統計にしか\n" #~ "使われていません。" #~ msgid "Standard client TCP Port:" #~ msgstr "標準クライアントTCPポート:" #~ msgid "Extended client UDP Port:" #~ msgstr "延長クライアントUDPポート:" #~ msgid "Bind Address" #~ msgstr "アドレスをバインドする" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "延長サーバ・リクエストのUDPポート(TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "ファイルごとの最大ソース数" #~ msgid "Universal Plug and Play" #~ msgstr "ユニバーサル・プラグ・アンド・プレイ" #~ msgid "Enable UPnP" #~ msgstr "UPnPを有効にする" #~ msgid "UPnP TCP Port:" #~ msgstr "UPnPのTCPポート:" #~ msgid "Start next paused file when a file completed" #~ msgstr "ファイルが完了されたらすぐに次の停止されたファイルを始める" #~ msgid "Select Statistics Colors" #~ msgstr "統計の色を選択する" #~ msgid "Download Queue Files Progress" #~ msgstr "ダウンロードキューにあるファイルの進捗" #~ msgid "Show percentage" #~ msgstr "パーセンテージを表示する" #~ msgid "Show progressbar " #~ msgstr "進捗バーを表示する" #~ msgid "Enable skin support " #~ msgstr "スキンのサポートを有効にする" #~ msgid "Skin:" #~ msgstr "スキン:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "" #~ "ダウンロードキューにあるファイルを自動ソーティングする(CPUを強く使用す" #~ "る)" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "聞いているインターフェイスのIPアドレス\n" #~ "(空にすると任意)" #~ msgid "TCP port" #~ msgstr "TCPポート" #~ msgid "Who can see shared files:" #~ msgstr "共有ファイルの閲覧を許可する:" #~ msgid "Event types" #~ msgstr "イベントの種類" #~ msgid "Makes aMule promt before exiting." #~ msgstr "aMuleが終了する時に確認します。" #~ msgid "Show overhead bandwith" #~ msgstr "オーバヘッドの帯域幅を表示する" #~ msgid "I.C.H. active" #~ msgstr "I.C.H.を有効にする" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICHはすべてのハッシュを信頼する(非推奨)" #~ msgid "Advanced Settings" #~ msgstr "詳細な設定" #~ msgid "Progressbar Style" #~ msgstr "進捗バーのスタイル" #~ msgid "Column Sorting" #~ msgstr "コラムのソーティング" #~ msgid "Misc Gui Tweaks" #~ msgstr "雑なGUIの調整" #~ msgid "File Options" #~ msgstr "ファイル・オプション" #~ msgid "Status text" #~ msgstr "ステータステキスト" #~ msgid "Pop-up status text" #~ msgstr "ポップアップ状態テキスト" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ " eMuleに基づいた'全プラットフォーム'P2Pクライアントです\n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr " ウェブサイト:http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr " フォーラム:http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ " よくある質問:http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " 問い合わせ:admin@amule.org(事務的関係) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ " 著作権2003-2008、aMuleのチーム\n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr "aMuleのある部分は\n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " 著作権2002、Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "映画なら、長さ、課題、言語等を説明できます…\n" #~ "万が一偽造なら、それもaMuleの他のユーザに伝えることができます。" #~ msgid "Misc Options" #~ msgstr "その他のオプション" #~ msgid "Server Options" #~ msgstr "サーバのオプション" #~ msgid "Display server motd when connected ..." #~ msgstr "接続の時にサーバのmotd(今日のメッセージ)を表示する..." #~ msgid "Disable/Enable" #~ msgstr "無効/有効" #~ msgid "Authentication" #~ msgstr "認証" #~ msgid "General Settings" #~ msgstr "一般設定:" #~ msgid "Max Connections" #~ msgstr "最大の接続数" #~ msgid "GUI Tweaks" #~ msgstr "GUIの調整" #~ msgid "Remote Control" #~ msgstr "リモート制御" #~ msgid "Unable to determine selected browser!" #~ msgstr "選択されたブラウザが見付かりません!" #~ msgid "User Defined" #~ msgstr "ユーザ定義" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - Linux Mule" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "こちらで自分のブラウザを選択してください" #~ msgid "Custom Browser:" #~ msgstr "ユーザ定義のブラウザ:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "選択したいブラウザの名前をここに入力してください。ユーザ定義のブラウザを利" #~ "用するには、個人設定のメニュー・アイテムをドロップ・ダウン・メニューから選" #~ "択してください。" #~ msgid "Please wait... " #~ msgstr "お待ちください…" #~ msgid "Could not determine the command for running the browser." #~ msgstr "ブラウザを起動させるコマンドを見付けられませんでした。" #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "EC接続に失敗しました。応答がありませんでした。" #~ msgid "ExternalConn: Access denied because: " #~ msgstr " ExternalConn: アクセスが拒否された理由: " #~ msgid "ExternalConn: Access denied" #~ msgstr "ExternalConn: アクセスは拒否されました" #~ msgid "The ed2k hash of the file." #~ msgstr "ファイルのed2kハッシュ。" #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "ED2K &link をクリップボードにコピーする" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "ED2kリンクをクリップボードにコピーする(&Source)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "" #~ "ED2kリンクをクリップボードにコピーする(Source)(&Withクリプトオプショ" #~ "ン)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "ED2kリンクをクリップボードにコピーする(&Hostname)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "" #~ "ED2kリンクをクリップボードにコピーする(Hostname)(With &Cryptオプショ" #~ "ン)" #~ msgid "Warning" #~ msgstr "警告" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "エラー:TCPポートを聞くことができませんでした。" #~ msgid "Error: can not accept web client connection\n" #~ msgstr "エラー: ウェブクライアント接続を受け入れられませんでした\n" #~ msgid "Webserver HTTP port" #~ msgstr "ウェブサーバのHTTPポート" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "ウェブサーバポートでUPnPポート転送を使用する" #~ msgid "Full access password for webserver" #~ msgstr "ウェブサーバのフルアクセスパスワード" #~ msgid "Guest password for webserver" #~ msgstr "ウェブサーバのゲストパスワード" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "リモートaMuleに対してウェブサーバ設定を保存/読み込みする" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "Ed2kリンクを計算したいファイルをここに入力してください" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "Ed2kリンクを追加したいURLをここに入力してください:最後に「/」を書くと、" #~ "aLinkCreatorは現在のファイル名を付け加えることができます" #~ msgid "Ed2k File Hash" #~ msgstr "Ed2kファイルハッシュ" #~ msgid "Ed2k link" #~ msgstr "Ed2kリンク" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "Ed2kリンクを計算するためにファイルを開く" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "計算したEd2kリンクをクリップボードへコピーする" #~ msgid "Save computed ed2k link to file" #~ msgstr "計算したEd2kリンクをフィアルに保存する" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "Ed2kリンクを計算したいファイルを選択してください" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "Ed2kリンクに対応するファイルを選択してください" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator、aMuleのed2kリンク製作プログラム\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "ピクスマップはhttp://www.everaldo.com、http://www.icomania.com\n" #~ "とhttp://jimmac.musichall.cz/ikony.php3からです\n" #~ "\n" #~ "GPLの元で配布されます" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator、aMuleのed2kリンク作成プログラム" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "ED2kリンクをクリップボードへコピーする" #~ msgid "Copy ED2k links to clipboard" #~ msgstr "ED2kリンクをクリップボードへコピーする" #~ msgid "ED2K: Connecting" #~ msgstr "ED2K: 接続中" #~ msgid "ED2K: Disconnected" #~ msgstr "ED2K: 切断" #~ msgid "ed2k network" #~ msgstr "ed2kネットワーク" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "オートアップデートサーバリストが空欄です。\n" #~ "'スタートアップにサーバリストをオートアップデートする'を使用不可能にしま" #~ "す。" #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "ED2KとKadネットワークの両方が無効です。\n" #~ "少なくとも片方を有効しないと接続できません。" #~ msgid "Edit Serverlist" #~ msgstr "サーバリストを編集する" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "エラー:新しい外部接続を認めることができませんでした" #~ msgid "ED2K is disabled in preferences." #~ msgstr "Ed2kは個人設定に無効されています。" #~ msgid "ExternalConn: shutdown requested" #~ msgstr "ExternalConn:シャットダウンが要求されました" #~ msgid "Already connected to ED2K." #~ msgstr "すでにEd2kに接続しています。" #~ msgid "Connecting to ED2K..." #~ msgstr "Ed2kに接続中です…" #~ msgid "Disconnected from ED2K." #~ msgstr "Ed2kから切断しています。" #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "ExternalConn:不正なOpCodeを貰いました: %#x" #~ msgid "ED2K Status:" #~ msgstr "Ed2kのステータス:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "平均ダウンロード速度(セッション): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "平均アップロード速度(セッション): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "最大ダウンロード速度(セッション): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "最大アップロード速度(セッション): %s" #~ msgid "Average filesize: %s" #~ msgstr "平均ファイルサイズ: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "Ed2kに接続されていない中にはEd2kの検索はできません" #~ msgid "Error: " #~ msgstr "エラー: " #~ msgid "Warning: " #~ msgstr "警告: " #~ msgid "Search related files (ED2k, local server)" #~ msgstr "関連ファイルを検索する(ED2k、ローカル・サーバ)" #~ msgid "Error" #~ msgstr "エラー" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "注意:自分がlowidでいながらソースとしてed2kリンクに追加することはできませ" #~ "ん。" #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "お好みのビデオプレイヤーを設定してください。\n" #~ "それまでaMuleはmplayerの使用を試みますが、プレビュー毎にこの注意が表示され" #~ "ます。" #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "エラー:part.metファイルは開くことができませんでした:%s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "エラー:part.metファイルはゼロ・サイズです: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "エラー:不正なpart.metファイル・バージョン: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "注意:%sは破損されている恐れがあります(%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "" #~ "%sを完了中に予期しないエラーが発生しました。ファイルを停止しました。" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "警告:ダウンロードした部分はハッシュできません:'%s'のためのハッシュ・セッ" #~ "トが未完成です" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "エラー:ダウンロードした部分はハッシュできません:ハッシュ・セットは未完成" #~ "です(%s)。こういうことはありえません。" #~ msgid "Insufficient Diskspace" #~ msgstr "ディスク容量不足" #~ msgid "ERROR! Attempted to share %s" #~ msgstr "エラー:%sを共有しようとしました" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "ED2Kネットワークは設定で無効になっているため、接続はしません。" #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "サーバ・リストに接続できるために正当なサーバは見つかりません" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "エラー:timeoutcheckの時ソケットは不正でした" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions." #~ msgstr "" #~ "エラー:バックアップ・ファイルはロードできませんでした。http://forum." #~ "amule.orgで.part.metについて検索することで解決方法を見つけてください。" #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "マグネット・リンクをED2Kに変更できません:%s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "不正なED2Kリンク!エラー:%s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "帯域制限:アップ:毎秒%u kB/s、ダウン:%u kB/s。\n" #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "走っているリモート・コア(amule/amuled)を終了します\n" #~ "すると、同時にテキスト・クライアントも一緒に終了します:走っているコアがな" #~ "ければ\n" #~ "使えないからです。\n" #~ msgid "Connect to ED2K only." #~ msgstr "ED2Kのみに接続します。" #~ msgid "Disconnect from ED2K only." #~ msgstr "ED2Kのみから切断します。" #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "追加可能なED2Kリンクの種類は次の通りです:\n" #~ "*) ファイル・リンク(ed2k://|file|...)ならば、ダウンロードキューに追加さ" #~ "れます;\n" #~ "*) サーバ・リンク(ed2k://|server|...)ならば、サーバ・リスト追加されま" #~ "す;\n" #~ "*) サーバリスト・リンクならば、 そのリストに存在する全てのサーバはサーバ・" #~ "リストに\n" #~ "追加されます。\n" #~ "\n" #~ "マグネット・リンクはED2kハッシュとファイル長さを含めなければなりません。\n" #~ msgid "Deprecated command, now '%s'." #~ msgstr "廃止予定のコマンドで、現在は'%s'です。" #~ msgid "Error: %s (%s) - %s" #~ msgstr "エラー:%s(%s)- %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "注意:%s(%s)- %s" #~ msgid "Error: Out of diskspace" #~ msgstr "エラー:ディスク容量がなくなりました" #~ msgid "Error: Partmet not found" #~ msgstr "エラー:Partmetは見つかりませんでした" #~ msgid "Error: IO error!" #~ msgstr "エラー:I/Oエラー!" #~ msgid "Error: Failed!" #~ msgstr "エラー:失敗しました!" #~ msgid "ED2K Link: " #~ msgstr "ED2Kリンク:" #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "" #~ "ここをクリックすると、テキスト・コントロールにあるED2kリンクをダウンロード" #~ "キューに追加します。" #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "もっと結果をED2kで検索する。Kadのサポートはまだありません。" #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "帯域制限" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "これは標準のED2Kポートなので、無効にすることはできません。" #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "このUDPポートは延長ED2KリクエストとKadネットワークに使用されます" #~ msgid "Hard Limit" #~ msgstr "ハード制限" #~ msgid "Connection Limits" #~ msgstr "接続数の制限" #~ msgid "Auto-update serverlist at startup" #~ msgstr "スタートアップ時にサーバ・リストを自動アップデートする" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "あるサーバに接続する時にサーバ・リストを自動アップデートする" #~ msgid "Update serverlist when a client connect" #~ msgstr "クライアントが接続する時にサーバ・リストを自動アップデートする" #~ msgid "Disk Space" #~ msgstr "ディスク領域" #~ msgid "Check Disk Space" #~ msgstr "ディスク領域を確かめる" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "aMuleがディスク領域を確かめるにはこれを選択してください" #~ msgid "Min Disk Space:" #~ msgstr "最小のディスク領域:" #~ msgid "Incoming Directory :" #~ msgstr "受信ディレクトリ:" #~ msgid "Temporary Directory :" #~ msgstr "一時ディレクトリ:" #~ msgid "Shared Directories" #~ msgstr "共有ディレクトリ" #~ msgid "Create Backup to preview" #~ msgstr "プレビューのバックアップを生成する" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "速いED2Kリンク・ハンドラーを表示する" #~ msgid "Webserver Parameters" #~ msgstr "ウェブサーバのパラメタ" #~ msgid "Webserver port" #~ msgstr "ウェブサーバのポート" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "ウェブサーバでUPnPポート転送を有効にする" #~ msgid "Webserver UPnP TCP port" #~ msgstr "ウェブサーバUPnP用のTCPポート" #~ msgid "Serverlist" #~ msgstr "サーバ・リスト" #~ msgid "Manual Server Add : Name" #~ msgstr "手動でサーバを追加する:名前" #~ msgid "Speed Limits:" #~ msgstr "速度制限:" #~ msgid "Download Speed: %.1f" #~ msgstr "ダウンロード速度:%.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "アップロード速度:%.1f" #~ msgid "TCP Port: %d" #~ msgstr "TCPポート:%d" #~ msgid "TCP Port: Not Ready" #~ msgstr "TCPポート:用意できていません" #~ msgid "UDP Port: %d" #~ msgstr "UDPポート:%d" #~ msgid "UDP Port: Not Ready" #~ msgstr "UDPポート:用意できていません" #~ msgid "Shared Files: %d" #~ msgstr "共有ファイル:%d" #~ msgid "Queued Clients: %d" #~ msgstr "並べているクライアント:%d" #~ msgid "Upload Limit" #~ msgstr "アップロードの制限" #~ msgid "Download Limit" #~ msgstr "ダウンロードの制限" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "'addresses.dat'にサーバリストのアドレス・エントリーが見つかりませんでし" #~ "た。サーバリストの自動更新ができるように、正しいサーバリストのアドレスをそ" #~ "のファイルにペーストしてください。" #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "注意:サーバリストの自動更新に指定されたURLは不正です:%s" #~ msgid "webserver running on pid %d" #~ msgstr "ウェブサーバはpid %dで起動しています" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "あなたはウェブサーバをスタートアップで起動することを要求しましたが、" #~ "amulewebのバイナリは起動できません。aMuleのウェブサーバが含まれているパ" #~ "ケージをインストールするか、または--enable-webserverオプションを指定して" #~ "aMuleをコンパイルしてから、make installを実行してください" #~ msgid "Disconnected from ED2K" #~ msgstr "ED2Kから切断しています" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "" #~ "友達リスト・ファイル'emfriends.met'を読み込み用に開くのに失敗しました!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "" #~ "友達リスト・ファイル'emfriends.met'を書き込み用に開くのに失敗しました!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "エラー:部分ファイルを開くことはできませんでした!" #~ msgid "Mb" #~ msgstr "メガビット" #~ msgid "Can't create web socket thread\n" #~ msgstr "ウェブソケットスレッドを作ることができません\n" #~ msgid "Web Server: Started\n" #~ msgstr "ウェブサーバ: 始動しました\n" #~ msgid "Not Supported" #~ msgstr "サポートされていません" #~ msgid "LowID: %u (%.2f%% Total %.2f%% Known)" #~ msgstr "LowID:%u(%.2f%% 合計 %.2f%% 既知)" #~ msgid "SecIdent On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgstr "SecIdentオン/オフ:%u(%.2f%%): %u(%.2f%%)" #~ msgid "Browse wav" #~ msgstr "wavをブラウズする" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "ファイルwav (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "コメント無し" #~ msgid "" #~ "Note: These values are\n" #~ "only used for statistics." #~ msgstr "" #~ "注意:この値は\n" #~ "統計のみに使用されます。" #~ msgid "Notifications" #~ msgstr "お知らせ" #~ msgid "Messages popup" #~ msgstr "メッセージのポップ・アップ" #~ msgid "Use sound" #~ msgstr "サウンドを使用する" #~ msgid "Pop out when :" #~ msgstr "次の条件に従ってポップ・アウトする:" #~ msgid "New entry on log" #~ msgstr "ログに新しいエントリーがある" #~ msgid "Starts a new chat session" #~ msgstr "新しいチャット・セションを始める" #~ msgid "A new chat message is received" #~ msgstr "新しいチャット・メッセージが受信された" #~ msgid "A download is added or finished" #~ msgstr "一つのダウンロードが追加、または完了された" #~ msgid "New aMule version detected" #~ msgstr "新しいaMuleのバージョンが検知された" #~ msgid "Urgent OOD, serverconnection lost" #~ msgstr "急なOOD、サーバ接続を失った" #~ msgid "Notify by Mail" #~ msgstr "メールで知らせる" #~ msgid "Send an Email when transfer complete." #~ msgstr "転送が終わったらメールを送る" #~ msgid "SMTP server :" #~ msgstr "SMTPサーバ:" #~ msgid "Email Address :" #~ msgstr "メール・アドレス:" #~ msgid ":" #~ msgstr ":" #~ msgid "" #~ "The selected locale seems not to be installed on your box\n" #~ "You must generate it to use this language.\n" #~ "A good start on linux systems is the file /etc/locale.gen and the package " #~ "'locales'\n" #~ "Good luck!\n" #~ "(Note: I'll try to set it anyway)" #~ msgstr "" #~ "選択したロカールがミシンに存在しないようです\n" #~ "この言語を使用するには先にロカールを生成しなければなりません。\n" #~ "linuxシステムではファイル/etc/locale.genとパケージ'locales'をご参考くださ" #~ "い\n" #~ "頑張ってください!\n" #~ "(追伸:それでも、設定を試してみます)" #~ msgid "Never show this again" #~ msgstr "これを二度と表示しない" #~ msgid "Enable/Disable" #~ msgstr "有効/無効にする" #~ msgid "You can't bootstrap an specific ip from remote GUI yet." #~ msgstr "" #~ "リモートGUIから指定されたIPをブートストラップすることはまだ不可能です。" #~ msgid "You can't update server.met from remote GUI yet." #~ msgstr "リモートGUIからserver.metをアップデートすることはまだ不可能です。" #~ msgid "Disconnect from " #~ msgstr "切断する: " #~ msgid "current server" #~ msgstr "現在のサーバ" #~ msgid " and " #~ msgstr " と " #~ msgid "Disconnect from any server and/or Kad" #~ msgstr "サーバやKadから切断する" #~ msgid " [" #~ msgstr " [" #~ msgid " | Kad: " #~ msgstr " | Kad: " #~ msgid "TCP Flags" #~ msgstr "TCPフラッグ" #~ msgid "UDP Flags" #~ msgstr "UDPフラッグ" #~ msgid "Copy ED2k link(s) to clipboard" #~ msgstr "ED2Kリンクをクリップボードへコピーする" #~ msgid "Client requests %u" #~ msgstr "クライアントの要求数: %u" #~ msgid "File block %u-%u (%d bytes):" #~ msgstr "ファイルブロック %u-%u(%d バイト)" #~ msgid "Client request is invalid!" #~ msgstr "クライアントの要求が不正です!" #~ msgid "Client request is invalid! %i / %i" #~ msgstr "クライアントの要求が不正です! %i / %i" #~ msgid "Unable to open %s file - using %s file." #~ msgstr "%sファイルを開くことはできません:%sファイルを使用しています。" #~ msgid "Warning: known.met does not exist." #~ msgstr "注意:known.metは存在しません。" #~ msgid "" #~ "CSharedFileList::FindSharedFiles: Removing %s from shared directory list: " #~ "directory not found." #~ msgstr "" #~ "CSharedFileList::FindSharedFiles:%sを共有ディレクトリから外します:ディレ" #~ "クトリは見付かりません。" #~ msgid "Waiting for subprocess termination failed" #~ msgstr "サブ・プロセスの終了を待つのに失敗しました。" #~ msgid "doesn't work" #~ msgstr "働きません" #~ msgid "remote gui" #~ msgstr "リモートGUI" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "エラー:バックアップ・ファイルはロードできませんでした。http://forum." #~ "amule.orgをpart.metで回復ソリューションを検索してください。" #~ msgid "" #~ "Error: Backup part.met file is 0 size! Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "エラー:バックアップpart.metファイルはゼロ・サイズです!http://forum." #~ "amule.orgでpart.met回復ソリューションを検索してください。" #~ msgid "Error: part.met backup file is 0 size: %s ==> %s" #~ msgstr "" #~ "エラー:part.metのバックアップ・ファイルはゼロ・サイズです: %s ==> %s" #~ msgid "Your aMule version is %i.%i.%i and the latest version is " #~ msgstr "あなたのaMuleバージョンは%i.%i.%iで、最先端バージョンはです" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " Website: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contact: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ " Part of aMule is based on \n" #~ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " ウェブサイト:http://www.amule.org \n" #~ " フォーラム:http://forum.amule.org \n" #~ " FAQ:http://wiki.amule.org \n" #~ "\n" #~ " コンタクト:admin@amule.org(事務的関係) \n" #~ " 著作権 (C) 2003-2008 aMuleチーム \n" #~ "\n" #~ " aMuleの一部は \n" #~ " Kademliaにづずいてます: XORメトリクに基づいたPeer-to-peerルーティン" #~ "グ。\n" #~ " 著作権 (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "WARNING: You have recieved Low-ID!" #~ msgstr "注意:Low-IDを取得しました!" #~ msgid "Deprecated command, now 'Status'." #~ msgstr "廃止予定のコマンドで、現在は'Status'です。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Status' instead.\n" #~ msgstr "" #~ "廃止予定のコマンドで、将来に存在しない可能性が高いです。\n" #~ "代わりに、'Status'を使ってください。\n" #~ msgid "Deprecated command, now 'Set IPFilter'." #~ msgstr "廃棄予定のコマンドで、現在は'Set IPFilter'です。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter' instead.\n" #~ msgstr "" #~ "廃止予定のコマンドで、将来に存在しない可能性が高いです。\n" #~ "代わりに、'Set IPFilter'を使ってください。\n" #~ msgid "Deprecated command, now 'Get IPFilter Level'." #~ msgstr "廃棄予定のコマンドで、現在は'Get IPFilter Level'です。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get IPFilter Level' instead.\n" #~ msgstr "" #~ "廃止予定のコマンドで、将来に存在しない可能性が高いです。\n" #~ "代わりに、'Get IPFilter Level'を使ってください。\n" #~ msgid "Deprecated command, now 'Set IPFilter Level'." #~ msgstr "廃棄予定のコマンドで、現在は'Set IPFilter Level'です。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter Level' instead.\n" #~ msgstr "" #~ "廃止予定のコマンドで、将来に存在しない可能性が高いです。\n" #~ "代わりに、'Set IPFilter Level'を使ってください。\n" #~ msgid "Deprecated command, now 'Get/Set IPFilter Level'." #~ msgstr "廃棄予定のコマンドで、現在は'Get/Set IPFilter Level'です。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get/Set IPFilter Level' instead.\n" #~ msgstr "" #~ "廃止予定のコマンドで、将来に存在しない可能性が高いです。\n" #~ "代わりに、'Get/Set IPFilter Level'を使ってください。\n" #~ msgid "Deprecated command, now 'Show Servers'." #~ msgstr "廃棄予定のコマンドで、現在は'Show Servers'です。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Show Servers' instead.\n" #~ msgstr "" #~ "廃止予定のコマンドで、将来に存在しない可能性が高いです。\n" #~ "代わりに、'Show Servers'を使ってください。\n" #~ msgid "Deprecated command, now 'Get BwLimits'." #~ msgstr "廃棄予定のコマンドで、現在は'Get BwLimits'です。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get BwLimits' instead.\n" #~ msgstr "" #~ "廃止予定のコマンドで、将来に存在しない可能性が高いです。\n" #~ "代わりに、'Get BwLimits'を使ってください。\n" #~ msgid "Deprecated command, now 'Set BwLimit Up'." #~ msgstr "廃棄予定のコマンドで、現在は'Set BwLimits Up'です。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Up' instead.\n" #~ msgstr "" #~ "廃止予定のコマンドで、将来に存在しない可能性が高いです。\n" #~ "代わりに、'Set BwLimits Up'を使ってください。\n" #~ msgid "Deprecated command, now 'Set BwLimit Down'." #~ msgstr "廃棄予定のコマンドで、現在は'Set BwLimits Down'です。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Down' instead.\n" #~ msgstr "" #~ "廃止予定のコマンドで、将来に存在しない可能性が高いです。\n" #~ "代わりに、'Set BwLimits Down'を使ってください。\n" #~ msgid "Masterhashes of known files have been loaded." #~ msgstr "既知のファイルのマースタハッシュはロードされました。" #~ msgid "Error while reading Kad contacts - 0 entries" #~ msgstr "Kadコンタクトを読む途中にエラーが発生しました - 0 エントリー" #~ msgid "Merge attempt" #~ msgstr "マージ試み" #~ msgid "Recursive merge" #~ msgstr "再帰的マージ" #~ msgid "Sucessful merge!" #~ msgstr "マージ成功!" #~ msgid "No merge possible" #~ msgstr "マージ不嘉納です" #~ msgid "Buddy address: " #~ msgstr "仲間のアドレス:" #~ msgid "%d" #~ msgstr "%d" #~ msgid " %d" #~ msgstr " %d" #~ msgid ".%d" #~ msgstr ".%d" #~ msgid "Shows the process of a search." #~ msgstr "検索の進捗状態を表示します。" #~ msgid "Shows the process of a search..\n" #~ msgstr "検索の進捗状態を表示します…\n" amule_2.3.1+git20151120.0023527bc2.orig/po/ko_KR.po0000644000175000017500000071175212611472361017503 0ustar morphmorph# Translation of amule interface to Korean # This file is distributed under the same license as the aMule package. # Lee, Eun-ho , 2005. # Hyunju Kang . 2007. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2007-09-12 16:04+0900\n" "Last-Translator: Hyunju Kang \n" "Language-Team: Korean \n" "Language: ko\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" "X-Poedit-Language: Korean\n" "X-Poedit-Country: KOREA, REPUBLIC OF\n" "X-Poedit-SourceCharset: UTF-8\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "친구 추가" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "정확한 IP와 포트를 입력하세요!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "정보" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "설정된 사용자 해시가 옳바르지 않습니다!" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "%s(%s)을 열지 못했습니다." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" #: src/amule.cpp:229 #, fuzzy msgid "Now, exiting main app..." msgstr "" "\n" "좋아, 나가는중 %s...\n" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "실패" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "종료 확인" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "새로운 외부연결이 승인되었습니다." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "경고" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "지역정보(로케일)가 설정 변경으로 인해 시스템 기본값으로 변경되었습니다. 죄송" "합니다." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "정보" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "서버 목록에 서버가 없습니다.\n" "새로운 서버목록을 내려 받으시겠습니까?" #: src/amule.cpp:581 msgid "Server list download" msgstr "서버 목록 내려받기" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "포트 %u는 사용할 수 없습니다. 낮은아이디를 가질것입니다.\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "포트 %u는 사용할수 없습니다!\n" "\n" "이것은 낮은아이디를 가질것이라는걸 의미합니다.\n" "\n" "나가고 들어오는것에 대해 포트가 열려있는지 통신망을 체크하세요. " #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "온라인서명 파일을 생성하지 못함" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "어뮬 온라인서명 파일을 생성하지 못함" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "컴퓨터에 선택한 지역정보(로케일)가 설치 않된것 같습니다. (주의: 어쨌든 설정하" "겠습니다)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "이번에 어뮬 %s를 처음 실행했습니다." #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "이 버전은 테스트 버젼으로, 매일 업데이트되며, \n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "이 프로그램이 어느 것도 부수지 않는다고, 집을 태우지 않는다고, 혹은 \n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "개를 죽이지 않는다고 보장하지 않습니다. 그렇지만 안전하게 사용할 수 있을 것입" "니다.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "더 많은 정보, 지원, 새 릴리즈는 홈페이지 www.amule.org, 또는 IRC 채널\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "(irc.freenode.net의 #aMule)에서 찾을 수 있습니다.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "버그는 http://forum.amule.org로 보고해 주십시오." #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "지정한 온라인 서명 파일을 위한 폴더가 유효하지 않습니다.\n" " 온라인 서명은 환경설정에서 수정될 때까지 비활성화 됩니다." #: src/amule.cpp:1116 #, fuzzy msgid "Server hostname notified" msgstr "서버 이름:" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "오류: 로그파일을 열 수 없음" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "경고: 로그파일이 비어있습니다. 뭔가 잘못되어 있습니다." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "로그가 초기화되었습니다." #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "서버메시지: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "노드 목록을 내려받지 못했습니다." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "내려받은 버젼 검사 파일을 열지 못했습니다." #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "손상된 버젼 검사 파일" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "오래된 어뮬 버젼을 사용하고 있습니다!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "어뮬 버젼은 %i.%i.%i이며 최신 버젼은 %li.%li.%li입니다." #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "최신 버젼은 항상 http://www.amule.org 에서 찾을 수 있습니다." #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "경고: 어뮬 버젼은 오래되었습니다: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "어뮬은 최신 버전입니다." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "버젼 검사 파일을 내려받지 못했습니다." #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "낮은아이디로" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "높은아이디로" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "%s %s에 연결되었음" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "%s에 연결중" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad를 시작했습니다." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad를 멈췄습니다." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Kad에 연결됨 (양호)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Kad에 연결됨 (방화벽)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Kad로부터 연결이 끊김" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Kad 네트워크는 UDP 포트가 비활성될 시 사용할 수 없으며, 따라서 시작하지 않습" "니다." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Kad 네트워크가 환경설정에서 비활성되어, 연결하지 않습니다." #: src/amuled.cpp:589 #, fuzzy msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "오류: 외부연결이 비활성화일때 어뮬 데몬은 사용할 수 없습니다. 외부연결을 활성" "화하기 위해서는 --ec-config를 사용하여 시작하거나 ~/.aMule/amule.conf 파일내" "에 \"AcceptExternalConnections\" 키를 1로 설정하여야 합니다." #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "오류: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "이 어뮬 %s는 이뮬 기반으로 되어있습니다." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "%s에 동작중" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "http://www.amule.org에 방문하셔서 새로운버젼이 있는지 확인하십시오." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "어뮬 원격제어" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "스냅삿" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "메시지" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "연결중" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "" #: src/amuleDlg.cpp:715 #, fuzzy msgid "Kad: Firewalled" msgstr "방화벽" #: src/amuleDlg.cpp:719 #, fuzzy msgid "Kad: Connected" msgstr "연결됨" #: src/amuleDlg.cpp:724 #, fuzzy msgid "Kad: Connecting" msgstr "연결중" #: src/amuleDlg.cpp:728 #, fuzzy msgid "Kad: Off" msgstr " Kad: " #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "취소" #: src/amuleDlg.cpp:775 #, fuzzy msgid "Stop the current connection attempts" msgstr "현재 연결시도를 멈춤" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "연결 끊기" #: src/amuleDlg.cpp:781 #, fuzzy msgid "Disconnect from the currently connected networks" msgstr "통신망으로부터 연결을 끊습니다." #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "연결" #: src/amuleDlg.cpp:787 #, fuzzy msgid "Connect to the currently enabled networks" msgstr "통신망에 연결합니다." #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "올려주기: %.1f(%.1f) | 내려받기: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "올려주기: %.1f | 내려받기: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "어뮬 (%s | 연결됨)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "어뮬 (%s | 끊김)" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "어뮬을 종료하시겠습니까?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "종료 확인" #: src/amuleDlg.cpp:1174 #, fuzzy msgid "Launch Command: " msgstr "명령: %s" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "외형 폴더 '%s'가 없습니다." #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "통신망" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "통신망 창" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "검색" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "검색 창" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "내려받기" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "받는중" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "공유 파일 창" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "메시지" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "메시지 창" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "통계" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "통계 그래프 창" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "환경설정" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "환경 설정 창" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "가져오기" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "부분파일 가져오기 도구" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "정보" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "정보/도움" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "어뮬" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "치명적 오류: 타이머 생성 실패" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "원격 어뮬에 연결함" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "치명적 오류: 타이머 생성 실패" #: src/amule-remote-gui.cpp:274 #, fuzzy msgid "Going to event loop..." msgstr "파일 정보를 복구하려고 하고있습니다..." #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "연결중" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "연결 실패" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "전부" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "알수없는" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "사용자 %s로부터 공유파일을 찾지 못했습니다." #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (가짜 이뮬 버젼 %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (가짜 이뮬)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "엑스뮬(가짜 이뮬)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (이뮬 v0.%u 기반)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "별명: %s 아이디: %u" #: src/BaseClient.cpp:2027 #, fuzzy, c-format msgid "Requested: %s\n" msgstr "요청됨:" #: src/BaseClient.cpp:2029 #, fuzzy, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "이 세션의 파일상태: %d가 수락되었습니다.(%d 요청의) %s에게 전달되었습니다.\n" msgstr[1] "" "이 세션의 파일상태: %d가 수락되었습니다.(%d 요청의) %s에게 전달되었습니다.\n" #: src/BaseClient.cpp:2032 #, fuzzy, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "모든 세션의 파일상태: %d가 수락되었습니다.(%d 요청의) %s에게 전달되었습니" "다.\n" msgstr[1] "" "모든 세션의 파일상태: %d가 수락되었습니다.(%d 요청의) %s에게 전달되었습니" "다.\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "알 수 없는 파일이 요청되었습니다." #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "'%s'로부터 차단된 메시지 (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "'%s'로부터 새로운 메시지 (IP:%s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "사용자 %s(%u)가 폴더 %s의 공유파일 목록을 요청합니다. -> 거부됨" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, fuzzy, c-format msgid "WARNING: %s cannot be opened." msgstr "경고: known.met을 열 수 없습니다." #: src/CanceledFileList.cpp:61 #, fuzzy msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "경고: 알려진파일 목록이 손상됨, 유효하지 않는 머리말을 포함하고 있습니다." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "known.met 파일을 읽는동안 입출력 오류: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "known.met 파일을 저장하는 동안 오류: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "분류" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "새로운 분류" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "저장할 폴더를 선택" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "분류 이름을 정하세요." #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "분류 경로를 정하세요" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "분류를 저장할 폴더를 생성하지 못했습니다. 유효한 경로를 지정하세요." #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "채팅세션이 시작됨: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "***클라이언트에 연결되었습니다***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "***클라이언트에 연결중입니다***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "***클라이언트에 연결하지 못했습니다 / 연결이 끊어졌습니다***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "탭 닫기" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "모든 탭 닫기" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "다른 탭 닫기" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "친구에 추가" #: src/ClientCreditsList.cpp:158 #, fuzzy, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "신용 파일을 읽었습니다. %u 클라이언트가 인식되었습니다." msgstr[1] "신용 파일을 읽었습니다. %u 클라이언트가 인식되었습니다." #: src/ClientCreditsList.cpp:161 #, fuzzy, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] "%u 클라이언트에 대한 신용이 만료되었습니다." msgstr[1] "%u 클라이언트에 대한 신용이 만료되었습니다." #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "'cryptkey.dat' 파일을 찾을 수 없습니다. 생성합니다." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "클라이언트 세부내역" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "낮은아이디" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "높은아이디" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "연결됨" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "연결이 끊김" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "완료되지 않음" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "나쁜 사람" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "인증됨" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "불가능" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "사용자 %s(%u)가 공유파일 목록을 요청합니다. -> 허락됨" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "사용자 %s(%u)가 공유파일 목록을 요청합니다. -> 거부됨" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "사용자 %s(%u)가 공유폴더 목록을 요청합니다. -> 허락함" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "사용자 %s(%u)가 공유폴더 목록을 요청합니다. -> 거부됨" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "사용자 %s(%u)가 폴더 %s의 공유파일 목록을 요청합니다. -> 허락됨" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "사용자 %s(%u)가 폴더 %s의 공유파일 목록을 요청합니다. -> 거부됨" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "사용자 %s (%u)는 %s 폴더를 공유하고있습니다." #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "사용자 %s (%u)는 공유폴더를 요청하지 않았습니다." #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "사용자 %s (%u)는 %s 폴더의 공유파일 목록을 보냅니다." #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "사용자 %s (%u)는 공유파일 목록 전송을 마쳤습니다." #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "사용자 %s (%u)는 공유파일 목록을 원하지않습니다." #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "사용자 %s (%u)는 공유파일이나 공유폴더 목록에 접근하는것을 거부합니다." #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "파일 의견" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "사용자이름" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "파일 이름" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "등급" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "의견" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "의견이 없음" #: src/CommentDialogLst.cpp:105 #, fuzzy, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%s 의견" msgstr[1] "%s 의견" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "자동[낮음]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "자동[아님]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "자동[높음]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "매우 낮음" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "낮음" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "보통" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "높음" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "매우높음" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "개방" #: src/DataToText.cpp:62 msgid "Asking" msgstr "요청" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "서버를 경유하여 연결중" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "대기열이 가득참" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "대기열에" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "받는중" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "해시설정을 받는중입니다." #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "필요없는 부분" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "낮은아이디에서 낮은아이디로 연결할수 없습니다." #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "매우 많은연결" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Kad를 경유하여 연결중" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "매우 많은 Kad 연결" #: src/DataToText.cpp:73 msgid "Banned" msgstr "퇴장됨" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "연결 오류" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "원격 대기열이 가득참" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "오래된 MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "새로운 MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "이뮬에 호환" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "지역 서버" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "원격 서버" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "자료 교환" #: src/DataToText.cpp:132 msgid "Passive" msgstr "수동적인" #: src/DataToText.cpp:133 msgid "Link" msgstr "링크" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "자료 핵" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "완료됨" #: src/DataToText.cpp:146 msgid "In progress" msgstr "진행중" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "대기열에 있음" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "이미 내려받는중" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "알수없거나 나쁜 임시 파일 형식입니다." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "크기" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "전송됨" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "속도" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "진척" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "자료" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "우선권" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "상태" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "남은 시간" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "최종 완료" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "최종 받음" #: src/DownloadListCtrl.cpp:411 #, fuzzy msgid "Are you sure that you wish to delete the selected file?" msgstr "선택된파일을 지우시겠습니까?" #: src/DownloadListCtrl.cpp:413 #, fuzzy msgid "Are you sure that you wish to delete the selected files?" msgstr "선택된파일을 지우시겠습니까?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "자동" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "멈춤(&S)" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "중지(&P)" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "계속(&R)" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "완료된것 정리(&l)" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "모든 A4AF를 이 파일로 바꿈" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "모든 A4AF를 이 파일로 바꿈 (자동)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "모든 A4AF를 다른 파일로 바꿈" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "확장 옵션" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "미리보기" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "파일 상세 보기(&d)" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "모든 의견 보기" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "magnet URI를 클립보드로 복사" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "반응을 클립보드에 복사" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "할당되지않은" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "분류로 할당" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "파일 열기(&O)" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "새이름 넣으세요:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "파일 이름변경" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "내려받기 (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "미리보기" #: src/DownloadListCtrl.cpp:1477 #, fuzzy, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "오류: 외부 재생기를 실행하지 못했습니다." #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "server.met 파일을 읽음: %s" #: src/DownloadQueue.cpp:132 #, fuzzy, c-format msgid "Loading PartFile %u of %u" msgstr "오래된 내려받은 파일로부터 데이터를 읽어들임 (%u (%u의))" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "부분파일을 찾을 수 없음" #: src/DownloadQueue.cpp:168 #, fuzzy, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "%u 부분파일을 찾았음" msgstr[1] "%u 부분파일을 찾았음" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "내려받기 %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "이미 '%s' 파일을 내려받으려고 하고있음" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "이미 %s 파일을 가지고 있음" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "이미 %s 파일을 내려받으려고 하고있음" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "링크의 알려지지 않은 프로토콜: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "" #: src/ExternalConn.cpp:261 #, fuzzy msgid "Client sent packet after authentication failed." msgstr "인증에 실패했습니다." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "외부연결 끊겼습니다." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "빈암호 때문에 외부연결이 불가능합니다." #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "이 환경설정에서 외부연결은 불가능합니다." #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "새로운 외부연결이 승인되었습니다." #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "환경설정의 빈암호로 인해 외부연결이 거부되었습니다." #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "연결중인 클라이언트: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "알수없는 버젼" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "불확실한 외부연결 버젼 아이디, 이것은 바이너리와 호환되지 않습니다. 동일한 스" "냅삿으로부터 코어와 원격을 사용하세요." #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "비정식 CVS 버젼으로부터 릴리즈된 버젼에 연결할수없습니다! *휴우* 있을 수 있었" "던 충돌을 막았습니다." #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "유효하지 않은 프로토콜 버젼입니다" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "프로토콜 버젼 태그 없음" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 #, fuzzy msgid "Authentication failed: wrong password." msgstr "인증에 실패했습니다." #: src/ExternalConn.cpp:512 #, fuzzy msgid "Authentication failed: missing password." msgstr "인증에 실패했습니다." #: src/ExternalConn.cpp:522 #, fuzzy msgid "Invalid request, please authenticate first." msgstr "유효하지않은 요청, 먼저 인증을 하세요." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "접근 허가되었습니다." #: src/ExternalConn.cpp:535 #, fuzzy, c-format msgid "Sent error message \"%s\" to client." msgstr "알 수 없는 클라이언트로부터 메시지를 차단" #: src/ExternalConn.cpp:538 #, fuzzy, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "허락되지않은 접속입니다. 연결이 끊깁니다." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "원격 부분파일 명령 실패: 파일해시를 찾을 수 없음: %s " #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "파일해시를 찾을 수 없음: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "이런! 명령코드 처리 오류!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "서버가 추가되지 않음" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "서버가 발견되지 않음: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "제거할 서버의 정의가 필요합니다." #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "검색중입니다. 금방 결과를 다시 가져옵니다." #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "원격 인터페이스로부터 웹검색은 좋지않은 선택입니다." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "그래프가 비어있음." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "클라이언트는 세부 수준이 구성되지 않았습니다." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "이미 종료하는중입니다." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "외부연결: '%s' 링크를 추가합니다." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "유효하지 않은 링크거나 이미 목록에 존재합니다." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "파일을 찾을 수 없습니다." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "유효하지 않은 파일 이름입니다." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "파일이름을 변경할 수 없습니다." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad는 환경설정에서 비활성화되어 있습니다." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "이미 Kad에 연결되었습니다." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Kad에 연결중..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "모든 통신망을 사용할수 없습니다." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Kad로부터 연결이 끊겼습니다." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "유효하지 않은 실행코드(잘못된 프로토콜 버젼?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "알수없는 확장 '%s' ('%s'명령에 대해)\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "알수없는 명령 '%s' \n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "이 명령은 인수를 가질 수 없습니다.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "이 명령은 반드시 인수가 있어야 합니다.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "이 명령은 불완전합니다. 반드시 아래의 확장중 하나를 사용해야 합니다.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "가능한 확장:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "가능한 명령:\n" #: src/ExternalConnector.cpp:187 #, fuzzy, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "모든 명령은 대소문자를 구분하지 않습니다.\n" "<명령어>에 대한 자세한 정보를 얻으려면 'help <명령어>'를 입력하세요.\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "응용프로그램에서 나감." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "도움말을 보여줍니다." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "명령어에 대한 도움말은, 'help <명령어>'를 입력하세요.\n" "모든 명령어 목록을 보려면, 'help'를 입력하세요.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "명령 목록을 위해 %s를 사용합니다.\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "문법 오류!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "명령 처리에 오류 발생 - 일어나면 안 됩니다! 버그 리포트를 하세요\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "이 명령은 어떤 변수도 필요하지 않습니다." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "이 명령은 반드시 변수가 있어야 합니다." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "유효하지 않은 인수입니다." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "불완전한 명령입니다." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "더 많은 도움말을 위해서는 '%s'를 입력하세요.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "이것은 %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "이것은 %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "클라이언트 생성중...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "좋아, 나가는중 %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "빈 암호로 연결할수 없습니다.\n" "설정 파일에 암호를 정하거나 \n" "또는 명령줄이나 요청시에 입력해야 합니다.\n" "\n" "종료중...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "이 도움말을 보여줍니다." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "어뮬이 실행중인 호스트. (기본: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "외부연결을 위한 어뮬 포트. (기본: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "외부연결 암호" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "파일로부터 환경설정을 읽습니다." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "표준출력으로는 어떤 출력도 하지 않습니다." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "상세하게 - 디버그 메시지도 보여줍니다." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "프로그램 지역정보 (로케일, 언어)를 설정합니다." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "명령줄 설정을 환경설정 파일에 기록합니다." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "어뮬의 설정 파일에 기초하여 설정 파일을 생성합니다." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "프로그램 버전을 출력합니다." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "파일 세부내역" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% 완료" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "친구" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "상세히 보기(&D)" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "친구 추가" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "친구 제거" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "메시지 보내기(&M)" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "파일 보기" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "친구 칸으로 확정함" #: src/FriendListCtrl.cpp:169 #, fuzzy msgid "Are you sure that you wish to delete the selected friend?" msgstr "선택한 친구들을 삭제하시겠습니까?" #: src/FriendListCtrl.cpp:171 #, fuzzy msgid "Are you sure that you wish to delete the selected friends?" msgstr "선택한 친구들을 삭제하시겠습니까?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "하나 이상의 친구칸으로 설정이 허락되지않습니다\n" "단지 하나의 칸만 가능합니다." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "다중 선택" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "사용자에게 메시지를 보내기" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "보낼 메시지:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "친구에서 삭제" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "메시지 보내기" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "파일을 교환" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "QR: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "다른 파일을 요청" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "대기중인 올려주기: %s" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "대기열에" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "올려주기" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "아무도" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "아니오" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "예" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "내려받기중..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "경고: 외형 파일 '%s'(을)를 읽을 수 없습니다." #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "내려받기 %s" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "서버에 재접속" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "%s로부터 서버 목록를 내려받지 못함" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "%s로부터 서버 목록를 내려받지 못함" #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "'ipfilter.dat' 와 'ipfilter_static.dat'의 IP 차단을 읽어옵니다." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "ipfilter.dat 파일 '%s'을 읽지 못했습니다. 알 수 없는 형식입니다." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "ipfilter.dat 파일 '%s'을 읽지 못했습니다, 파일을 열 수 없습니다." #: src/IPFilter.cpp:329 #, fuzzy, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "" "%u 개의 IP 범위를 '%s'로부터 읽었습니다. %u 개의 잘못된 줄은 무시했습니다." msgstr[1] "" "%u 개의 IP 범위를 '%s'로부터 읽었습니다. %u 개의 잘못된 줄은 무시했습니다." #: src/IPFilter.cpp:331 #, fuzzy, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "" "%u 개의 IP 범위를 '%s'로부터 읽었습니다. %u 개의 잘못된 줄은 무시했습니다." msgstr[1] "" "%u 개의 IP 범위를 '%s'로부터 읽었습니다. %u 개의 잘못된 줄은 무시했습니다." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "알려진 클라이언트로부터 \n" "초기적재" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "노드 (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "초기적재에 유효하지 않은 IP" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "초기적재에 유효하지 않은 포트" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "모든 항목을 채워주세요." #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "새로운 nodes.dat파일을 내려받으시겠습니까?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "현재노드는 제거되고 카뎀리아 연결이 다시 시작됩니다." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "계속할까요?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "카뎀리아: 검색어가 너무 짧습니다." #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, fuzzy, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "%u개의 Kad 접속을 읽었음" msgstr[1] "%u개의 Kad 접속을 읽었음" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "" msgstr[1] "" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "파일 이름" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "알수없는 버젼" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "경고: 외형 파일 '%s'(을)를 읽을 수 없습니다." #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "해시중" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "완료중" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "완료" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "중지됨" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "오류투성이" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "대기중" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "반드시 암호를 설정해야 합니다." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "잘못된 패스워드, MD5 해시가 아닙니다." #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "연결 실패" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:258 #, fuzzy msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "외부연결: 서버 응답 불량. 연결이 끊겼습니다." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "성공! 어뮬에 연결 되었습니다 " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "성공! 연결이 되었습니다." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "외부연결 암호" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "동기화 스레드가 시작되었습니다." #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "닫기" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "자르기" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "복사" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "붙이기" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "깨끗이" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "모두 선택" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "무제한" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "어뮬 트레이 메뉴" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "올려주기: 없음" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "올려주기: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "내려받기: 없음" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "내려받기: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "클라이언트 정보" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "별명: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "별명이 선택되지 않음!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "클라이언트 아이디: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "연결 안됨" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "서버 이름: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "서버 IP: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "아직 연결되지 않았습니다." #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "온라인 서명: 활성화" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "온라인 서명: 비활성화" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "올려주기 시간: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "전체 내려받기: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "전체 올려주기: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "어뮬 숨기기" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "어뮬 보이기" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "종료" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "확정" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "사건은 이곳에 보여집니다. 사건 목록의 전체를 보기위해 서버텝에 있는 로그파일" "을 참조하세요" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "읽는중..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "접속되어있는 서버의 사용자 수는..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "사용자: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "현재 서버에 연결된 사용자들과 총 사용자수를 측정합니다." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "올려주기: 0.0 | 내려받기: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "현재 올려주기와 내려받기 비율을 평균합니다. 가능하다면 괄호안의 수는 클라이언" "트 통신으로부터의 추가자원을 의미합니다." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "연결상태와 활성화된 전송을 보여줍니다. 빨간 화살은 현재 연결되지 않았음을 의" "미하며, 노란 화살은 낮은아이디(방화벽)를 가지고 있다는 의미이고, 초록 화살은 " "높은아이디(최적의 연결 형태)를 가지고 있다는 의미입니다." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "연결안됨..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "현재 서버에 연결되었습니다." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "검색" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "이름:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "종류" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "지역" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "광역" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "파일해시" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "확장 변수" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "필터링" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "파일 종류" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "어떤" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "압축" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "음악" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD이미지" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "그림" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "프로그램" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "문장" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "동영상" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "확장자" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "최소 크기" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "바이트" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "최대 크기" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "유효성" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "필터:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "필터링 결과" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "반전 결과" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "알려진 파일을 숨김" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "시작" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "추가" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "멈춤" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "내려받기" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "항목 초기화" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "결과" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "완료된 내려받기 정리" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "자료 유지" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "일반" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "전체 이름 :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "없음" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "메타파일 :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "해시" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "파일 크기 :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "부분파일 상태 :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "마지막 부분이 완료 :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "전송" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "찾은 자료 :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "전송된 자료 :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "부분파일 카운트 :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "가능함 :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "데이터율 :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "내려받기 활성화 시간: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "전송됨 :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "완료된 크기 :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "현명한 오류처리" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "오류로 잃어버림 :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "압축으로 얻음 :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "I.C.H에의해 저장된 패키지 :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "파일 이름" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "인계" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "정돈" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "적용" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "확인" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "파일에 대한 의견/등급(내용은 모든 사용자가 볼 수 있습니다.)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "파일 품질" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "선택되지 않은" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "유효하지않은 / 손상된 / 가짜" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "나쁜" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "그저그런" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "좋은" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "아주좋은" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "만약 파일이 유용하지 않으면 파일 품질을 선택하거나 사용자에게 충고하세요." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "새롭게하다" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "내려받는중. 잠시만 기다려주세요..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "알수없는 크기" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "요구된 정보" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP 주소 :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "포트 :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "추가적 정보" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "사용자 이름 :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "사용자 해시 :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "추가" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "내려받기 속도" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "현재" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "동작중 평균" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "세션 평균" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "올려주기 속도" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "연결" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "활성화된 내려받기" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "활성화된 연결 (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "활성화된 올려주기" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "통계 트리" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "사용자 이름:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "사용자 해시:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "클라이언트 소프트웨어:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "클라이언트 버전:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP 주소:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "사용자 아이디:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "서버 IP:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "서버 이름:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "클라이언트에 전송" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "현재 요청:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "평균 올려주기율:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "평균 내려받기율:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "올려주기 (세션)" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "내려받기 (세션)" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "올려주기 (전체)" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "내려받기 (전체)" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "점수" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "내려받기/올려주기 변경자:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "안전한 인증:" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "대기열에 있음" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "대기열 점수:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "별명" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "이것은 접속했을때 다른 사용자가 볼 수 있는 이름입니다." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "도구도움이 보여주기 이전의 지연시간." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "컨트롤에서 사용하는 언어를 설정합니다." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "시작할때 새 버젼이 있는지 확인" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "이것을 활성화하면 어뮬은 시작할때마다 새로운 버젼이 있는지 확인할것 입니다." #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "최소화된 시작" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "이것은 어뮬을 시작할때 최소화를 가능하게 합니다." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "종료시 확인창" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "트레이아이콘 활성화" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "이것은 시스템 트레이(혹은 작업표시줄) 아이콘을 활성화/비활성화 합니다." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "트레이 아이콘으로 최소화" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "어뮬을 작업표시줄보다 시스템 트레이로 최소화 하도록 합니다." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "브라우저 선택" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "탐색" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "가능하면 새로운 탭을 생성함" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "가능하면 새로운 창을 여는것 대신 새로운 탭을 생성합니다." #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "비디오 재생기" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "올려주기" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "칸 배분" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "카뎀리아" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2k" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "시작시 자동연결" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "끊겼을시 재연결" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "죽은서버 제거" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "재시도" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "목록" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "우선순위 시스템을 사용" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "연결할때 현명한 낮은아이디 검사를 사용" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "안전한 연결" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "정적목록내의 서버에만 연결" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "수동으로 추가된 서버에 높은 우선권 부여" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "멈춤 상태로 내려받기에 파일 추가" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "자동 우선권으로 내려받기에 파일 추가" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "처음과 마지막 부분을 먼저 내려받음" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "동일한 분류로부터" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "원하는 최소한의 디스크공간을 입력하세요." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "희귀한 파일인 경우 10개의 자료 저장 (<20 자료)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "올려주기" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "자동 우선권으로 새로운 공유파일을 추가" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(하위폴더 전체를 공유하려면 폴더 아이콘상에서 오른쪽 버튼을 클릭)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "숨은파일 공유" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "그래프" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "갱신 지연 : 5 초" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "평균 그래프 시간 : 100 분" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "연결 그래프 크기 : 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "바탕" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "눈금" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "현재 내려받기" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "내려받기 운용 평균" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "내려받기 세션 평균" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "현재 올려주기" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "올려주기 운용 평균" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "올려주기 세션 평균" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "활성화된 연결" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "시스템트레이 아이콘 속도바" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "현재 Kad-노드" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Kad-노드 운용" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Kad-노드 세션" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "선택" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "표시될 클라이언트 버젼의 수 (0=무제한)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! 경고 !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "최대 새연결 / 5 초" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "파일 버퍼 크기: 240000 바이트" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "올려주기 대기열 크기: 5000 클라이언트" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "서버 연결 갱신 간격: 사용않함" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "분류탭의 확장된 정보를 보여줌" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "제목에 전송률을 보여줌" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "제목에 전송률을 보여줌" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "수직방향 툴바" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "평평한" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "둥근" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "어뮬은 내려받는 목록의 항목을 자동으로 정렬합니다." #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "외부연결 설정" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "외부연결 받아들임" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "수신대기 외부연결 인터페이스에 a.b.c.d 형식의 유효한 IP를 입력하세요. 항목이 " "비었거나 0.0.0.0이면 모든 인터페이스를 의미합니다." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "외부연결 포트에 UPnP 포트포워딩 활성화" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "암호" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "웹 템플릿" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "모든 권한 암호" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "낮은권한 사용자 활성화" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "낮은 권한 암호" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "페이지를 갱신 시간 (초)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Gzip압축을 활성화" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "확인" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "환경설정으로 바꾼것을 적용하려면 이곳을 클릭하세요." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "환경설정으로 바꾼것을 초기화합니다." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "제목 :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "의견 :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "내려받는 폴더 :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "새롭게 할당된 파일의 우선권를 바꿉니다. :" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "변경 않음" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "이 분류의 색을 선택 (일반적으로 선택된) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "초기화" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "로그를 초기화하려면 이 버튼을 클릭하세요." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "URL로부터 서버 목록을 갱신하려면 이 버튼을 클릭..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "알려진 서버의 목록을 갱신하기 위해서는 이곳에 server.met파일의 url을 입력하" "고 왼쪽편의 버튼을 누르세요." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "새로운 서버의 이름을 입력하세요." #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:포트" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "x.x.x.x형식으로 서버의 IP를 이곳에 입력하세요." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "서버의 포트를 이곳에 입력하세요." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "서버 수동 추가 (미리 왼쪽 부분을 채울 것) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "어뮬 로그" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "서버 정보" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2k 정보" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad 정보" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "URL로부터 노드를 갱신하려면 이 버튼을 클릭..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "노드 (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "알려진 노드의 목록을 갱신하기 위해서는 이곳에 nodes.dat파일의 url을 입력하고 " "왼쪽편의 버튼을 누르세요." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "노드 상태" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "초기적재" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "새로운 노드" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "포트:" #: src/muuli_wdr.cpp:2763 #, fuzzy msgid "Bootstrap from known clients" msgstr "" "알려진 클라이언트로부터 \n" "초기적재" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Kad 끊김" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "프로토콜 난독화" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "프로토콜 난독화 지원" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "이 선택은 프로토콜 난독화를 활성화하며, 어뮬이 다른 클라이언트로부터 난독화" "된 연결을 받아들이도록 합니다. " #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "나가는 연결에 난독화 사용" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "이 선택은 어뮬이 다른 서버나 클라이언트에 연결할때 프로토콜 난독화를 사용하" "게 합니다." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "난독화된 연결만 받음" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "이 선택은 어뮬이 난독화된 연결만 받아들이도록 합니다. 더 작은 자료를 가지지" "만 자료교환은 난독화됩니다." #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "모두" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "공유 파일 목록 보기를 요청할 수 있는 사람을 선택하세요." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP 차단" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "클라이언트 차단" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "~/.aMule/ipfilter.dat에 기록된 클라이언트 IP의 차단을 활성화합니다." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "서버 차단" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "~/.aMule/ipfilter.dat에 기록된 서버 IP의 차단을 활성화합니다." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "목록 다시읽기" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "~/.aMule/ipfilter.dat 파일에서 차단할 IP의 목록을 다시 읽음" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "지금 갱신" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "시작시 IP차단을 자동 갱신" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "차단 수준:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "랜 IP를 항상 차단" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "클라이언트 IP가 패킷이 수신된 IP와 다르면 패킷을 거부합니다. 조심해서 사용하" "세요." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "온라인서명을 활성화" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "서명을 생성할 수 있는 외부 응용프로그램에 의해 사용될 수 있는 운영체제 파일" "의 기록을 활성화합니다." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "갱신 주기(초)" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "온라인 서명 갱신 주기(초)를 바꿉니다." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "온라인서명 파일을 포함하는 폴더를 선택하려면 클릭하세요." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "받는 메시지 차단(현재 채팅은 제외)" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "모든 메시지를 차단" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "친구 목록에 없는 사람으로부터 메시지를 차단" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "알 수 없는 클라이언트로부터 메시지를 차단" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "다음 내용이 포함된 메시지를 차단 (쉼표로 분리):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "이곳에 어뮬이 차단하고 막을 메시지에 포함될 단어를 추가하세요." #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "의견들" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "프록시 없이 서버에 자동으로 연결" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "인증 활성화" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "사용자이름/암호 인증을 활성화/비활성화" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "프록시에 접속하기 위한 사용자이름" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "암호:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "프록시에 접속하기 위한 암호" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "프록시 활성화" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "프록시지원을 활성화/비활성화" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "프록시 종류:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "프록시 호스트:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "프록시 호스트 이름" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "프록시 포트:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "프록시 포트" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "연결함:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "원격 어뮬에 로그인" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "사용자이름" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "설정을 기억" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "상세한 디버그-로깅 활성화" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "파일 열기(&O)" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "메시지 분류:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "대기중..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "가져오기 추가" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "선택된 것을 재시도" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "선택된 것을 삭제" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "활성화된 올려주기 :" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "공유된 파일을 숨김" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "보기 필터 선택" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "활성화된 올려주기" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "클라이언트 보기" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "목록 다시읽기" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "공유된 파일을 다시 읽어들임" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "보내기" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "지정된 메시지를 보냅니다." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "이 채팅세션을 닫습니다." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "서버 혹은 Kad에 연결" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "공유 파일" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "비활성화 [%s]" #: src/OtherFunctions.cpp:111 #, fuzzy msgid "byte" msgid_plural "bytes" msgstr[0] "bytes" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 #, fuzzy msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "bytes/s" msgstr[1] "bytes/s" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "초" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "분" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "시" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "일" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "전부" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "다른 모두" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "내려받음" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "멈춤" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "비디오" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "압축" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "문자" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "활성화" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "가져오는중 %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "임시 폴더를 읽는중" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "내려받은 정보 파일로부터 기본적인 정보를 재생" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "대상 파일을 생성" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "오래된 내려받은 파일로부터 데이터를 읽어들임 (%u (%u의))" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "데이터 블럭을 새 내려받은 파일로 저장 (%u (%u의))" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "내려받은 파일 정보 자료를 재생" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "내려받기에 추가하고 새 부분파일을 저장" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "부분파일 가져오기" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "상태" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "파일 해시" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s(디스크: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "임시 내려받기를 위해 검색할 폴더를 선택하세요! (하위 폴더 포함)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "성공적으로 가져온 내려받기 파일을 삭제하겠습니까?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "자료를 삭제하겠습니까?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "오류: 부분파일을 생성하지 못했습니다.)" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "%s로부터 met파일의 백업을 읽을려고 합니다." #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "오류: %s(%s)은 손상되었습니다. (잘못된 꼬리계수), 파일을 읽을수 없습니다." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "파일 정보를 복구하려고 하고있습니다..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "이름없는 파일을 복구합니다. - RecoveredFile.dat로 복구합니다." #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "모든 가능한 파일정보를 복구되었습니다. :D - 사용해 보세요..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "파일정보 복구가 불가능합니다. :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "%s(%s)을 열지 못했습니다." #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "부분파일을 저장하는 동안에 오류: %s (%s ==> %s)" #: src/PartFile.cpp:904 #, fuzzy msgid "IO failure while saving partfile: " msgstr "부분파일을 저장하는 동안에 오류: %s (%s ==> %s)" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s'은 어찌된일인지 크기가 0입니다. - %s 파일을 사용합니다." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "%s에 대한 part.met.seeds 파일을 저장하지 못했습니다." #: src/PartFile.cpp:1020 #, fuzzy, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "부분파일을 위해 %i 자료핵심을 저장되었습니다: %s(%s)" msgstr[1] "부분파일을 위해 %i 자료핵심을 저장되었습니다: %s(%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "부분파일을 위해 %i 자료핵심을 저장되었습니다: %s(%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "부분파일의 핵심파일(%s - %s)을 읽는중 오류: %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, fuzzy, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "손상된 부분(%d)이 발견되었습니다. (%d부분 파일 %s에 있는) - 파일해시결과 |%" "s| 파일해시 |%s|" msgstr[1] "" "손상된 부분(%d)이 발견되었습니다. (%d부분 파일 %s에 있는) - 파일해시결과 |%" "s| 파일해시 |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "완료된 부분(%i)이 발견되었습니다. (%s에 있는)" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "%s의 재해시가 완료되었습니다." #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "내려받기 완료: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "파일 삭제: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "경고: 충분한 디스크공간이 없습니다! 파일 정지: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "%i 부분 내려받기는 파일이 손상되었습니다: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: 손상된 부분 %i를 복구했습니다. (%s의) -> 저장된 바이트: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "" #: src/Preferences.cpp:632 msgid "System default" msgstr "기본 설정" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "아랍어" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "에스토니아어" #: src/Preferences.cpp:636 msgid "Basque" msgstr "바스크어" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "불가리아어" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "카탈로니아어" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "중국어(간체)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "중국어(번체)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "크로티아어" #: src/Preferences.cpp:642 msgid "Czech" msgstr "" #: src/Preferences.cpp:643 msgid "Danish" msgstr "덴마크어" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "네델란드어" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "영어(영국)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "에스토니아어" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "필란드어" #: src/Preferences.cpp:648 msgid "French" msgstr "프랑스어" #: src/Preferences.cpp:649 msgid "Galician" msgstr "갈리시아어" #: src/Preferences.cpp:650 msgid "German" msgstr "독일어" #: src/Preferences.cpp:651 msgid "Greek" msgstr "" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "헝가리어" #: src/Preferences.cpp:654 msgid "Italian" msgstr "이탈리아어" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "이탈리아어(스위스)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "" #: src/Preferences.cpp:657 msgid "Korean" msgstr "한국어" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "" #: src/Preferences.cpp:660 msgid "Polish" msgstr "폴란드어" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "포르투갈어" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "포르투갈어(브라질)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "크로티아어" #: src/Preferences.cpp:664 msgid "Russian" msgstr "러시아어" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "슬로베니아어" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "스페인어" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "터키어" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "언어" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "유효하지 않음" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "서버 UDP 소켓이 TCP+3이 되기위해서 TCP 포트가 65532보다 커서는 안됩니다." #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "기본 포트가 사용될 것입니다.(%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "연결" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "폴더" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "서버" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "파일" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "보안" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "프록시" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "원격 조정" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "온라인 서명" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "사건들" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "디버깅" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "당신이 무엇을 하는지 알때까지 이 설정들을 바꾸지 마세요.\n" "당신 스스로 문제를 만들기 쉽습니다.\n" "\n" "\n" "이 설정들을 조정하지 않아도\n" "어뮬은 잘 동작할 것입니다." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "연결하고 있는 프록시 타입" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "변경사항을 활성화 하기위해 어뮬을 재시작해야 합니다:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP 포트가 변경되었습니다.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP 포트가 변경되었습니다.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "외부연결 끊겼습니다." #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "새로운 외부연결이 승인되었습니다." #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "외부연결 끊겼습니다." #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "프로토콜 난독화" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "외부연결이 횔성화되어 있지만, 암호를 설정하지 않았습니다.\n" "외부연결은 유효한 암호가 설정되기전까지 활성화되지 않습니다." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- 언어가 변경되었습니다.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- 임시 폴더가 변경되었습니다.\n" #: src/PrefsUnifiedDlg.cpp:657 #, fuzzy msgid "- ED2K network enabled.\n" msgstr "모든 통신망을 사용할수 없습니다." #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "UDP 포트가 비활성화되어 있으면 Kad는 시작하지 않을 것입니다.\n" "UDP 포트를 활성화시키거나 Kad를 비활성화시키십시오." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "지금 바로 어뮬을 재시작해야 합니다.\n" "만일 재시작하지 않는다면, 나쁜 일이 일어나도 불평하지 마십시오.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "자동갱신 서버 목록이 비어있습니다.\n" "적어도 한개의 유효한 server.met파일을 가르키는 URL을 적으세요.\n" "URL을 입력하려면 채크박스 옆의 \"목록\"버튼을 클릭하세요." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "임시 파일" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "내려받은 파일" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "온라인 서명" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "%s하기 위한 폴더를 선택하세요." #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "비디오재생을 위한 브라우즈" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "브라우저 선택" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "실행할수 있는 %s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "server.met파일을 내려받을 URL을 추가하세요.\n" "각 행에 오직 하나의 URL을 넣으세요." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, fuzzy, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "갱신 지연: %d 초" msgstr[1] "갱신 지연: %d 초" #: src/PrefsUnifiedDlg.cpp:1126 #, fuzzy, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "평균 그래프 시간: %d 분" msgstr[1] "평균 그래프 시간: %d 분" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "연결 그래프 크기: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, fuzzy, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "파일 버퍼 크기: %d 바이트" msgstr[1] "파일 버퍼 크기: %d 바이트" #: src/PrefsUnifiedDlg.cpp:1150 #, fuzzy, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "올려주기 대기열 크기: %d 클라이언트" msgstr[1] "올려주기 대기열 크기: %d 클라이언트" #: src/PrefsUnifiedDlg.cpp:1157 #, fuzzy, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "서버 연결 갱신 주기: %d 분" msgstr[1] "서버 연결 갱신 주기: %d 분" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "서버 연결 갱신 주기: 비활성화" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "비활성화" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "`%s' 사건에 명령을 실행" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "코어에 명령 실행 활성화" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "코어 명령어:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "GUI에 명령 실행 활성화" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "GUI 명령어:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "다음 변수들은 교체됩니다.:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "최소 크기가 최대 크기보다 작아야 합니다. 최대 크기는 무시됩니다.." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "검색 경고" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "주" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Kad를 실행 중이 아니면 Kad 검색을 할 수 없습니다." #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Kad 검색 시도 중에 예기치 못한 에러: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "파일아이디" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "파일" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "분류내 내려받기" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "이 파일의 추가주소를 더합니다." #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "취소" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "난독화된 서버들로의 연결이 모두 실패했습니다. 난독화없이 진행합니다." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "모든 서버 목록에 접속하지 못했습니다. 다른 서버를 만드세요." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "%s (%s:%i)에 연결되었습니다." #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "다음에 연결이 되었습니다: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "연결하는 동안 치명적 오류가 발생하였습니다. 인터넷 연결이 끊긴것 같습니다." #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "%s(%s:%i)에 연결이 끊김." #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s(%s:%i)가 죽은것 같습니다." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s(%s:%i)가 가득찬것 같습니다." #: src/ServerConnect.cpp:392 #, fuzzy, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "%d 초후에 서버로 자동 접속을 재시도" msgstr[1] "%d 초후에 서버로 자동 접속을 재시도" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "연결 끊김" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "%s(%s:%i)에 연결하지 못했습니다." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "%s(%s:%i)에 접속을 시도하는데 시간이 지났습니다." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "server.met 파일을 읽음: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "server.met 파일을 찾을 수 없습니다.!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "server.met 파일 '%s' 을 읽지 못했습니다. 알 수 없는 형식입니다." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "server.met 파일을 열지 못했습니다!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Server.met 파일이 손상됨, 유효하지 않는 버젼정보를 발견함: 0x%x, size %i" #: src/ServerList.cpp:174 #, fuzzy, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "server.met에서 %i개의 서버가 발견됨" msgstr[1] "server.met에서 %i개의 서버가 발견됨" #: src/ServerList.cpp:176 #, fuzzy, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d 서버가 추가됨" msgstr[1] "%d 서버가 추가됨" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "known.met 파일을 읽는동안 입출력 오류: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "서버 추가되지 않음: [%s:%d]은 유효한 포트가 정해지지 않았습니다." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "서버 추가되지 않음: [%s:%d]의 IP가 유효하지 않거나 차단되었습니다." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "서버 추가되지 않음: IP:포트[%s:%d]와 같은 서버가 목록에 있습니다." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "서버 추가됨: [%s:%d]서버 '%s'이름을 사용" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "삭제하려고하는 서버에 접속되어있습니다. 부디 먼저 연결을 끊으세요." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "'%s'을(를) 열지 못했습니다." #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "server.met을 저장하지 못함!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "유효하지 않는 주소입니다." #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "%s로부터 서버 목록를 내려받지 못함" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "adrresses.dat에 유효한 server.met 자동갱신 주소가 없습니다." #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "%s로부터 서버 목록를 내려받지 못함" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "지역 서버가 IPFilter에 의해 차단되어, 다른 서버로 재연결 합니다." #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "서버 이름" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "주소" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "포트" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "설명" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "핑" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "사용자" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "정적" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "버젼" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "삭제하려는 서버에 연결되어 있습니다. 먼저 연결을 끊으세요. 서버는 삭제되지 않" "습니다." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(알수없는 이름)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "정적 서버 %s를 삭제하시겠습니까?" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "서버 (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "서버" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "서버에 연결함" #: src/ServerListCtrl.cpp:408 #, fuzzy msgid "Mark server as static" msgstr "정적인 서버를 만듦" #: src/ServerListCtrl.cpp:409 #, fuzzy msgid "Mark server as non-static" msgstr "비정적인 서버를 만듦" #: src/ServerListCtrl.cpp:411 #, fuzzy msgid "Mark servers as static" msgstr "정적인 서버를 만듦" #: src/ServerListCtrl.cpp:412 #, fuzzy msgid "Mark servers as non-static" msgstr "비정적인 서버를 만듦" #: src/ServerListCtrl.cpp:418 #, fuzzy msgid "Remove server" msgstr "서버를 삭제" #: src/ServerListCtrl.cpp:420 #, fuzzy msgid "Remove servers" msgstr "서버를 삭제" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "모든 서버를 삭제" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "서버에 재접속" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "모든 서버를 삭제하시겠습니까?" #: src/ServerListCtrl.cpp:542 #, fuzzy msgid "Are you sure that you wish to delete the selected server?" msgstr "선택된 서버를 삭제하시겠습니까?" #: src/ServerListCtrl.cpp:544 #, fuzzy msgid "Are you sure that you wish to delete the selected servers?" msgstr "선택된 서버를 삭제하시겠습니까?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "새로운 클라이어트 아이디는 %u임" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\t이러한 대부분의 이유는 방화벽이나 라우터때문입니다." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\t더 많은 정보는 http://wiki.amule.org을 참조하세요." #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "알수없는 서버 정보를 받았습니다! - 매우 짧음" #: src/ServerSocket.cpp:532 #, fuzzy, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "새로운 서버 %d개를 받음" msgstr[1] "새로운 서버 %d개를 받음" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "서버목록 저장이 완료되었습니다." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "서버가 마지막 명령을 거부함" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "가짜 패킷을 서버로부터 받았습니다: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "서버로부터 패킷을 처리하는동안 조치할수 없는 오류가 생겼습니다: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "%s에 연결하기 위한 DNS 해석 쓰레드를 만들수 없음" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "서버 IP %s(%s)가 차단되었습니다. 연결할수 없습니다." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "프로토콜 난독화를 사용합니다." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "%s (%s - %s:%i) %s에 연결합니다." #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "%s 서버에 대한 DNS를 해석 할 수 없음: 연결할수 없습니다!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "서버 추가되지 않음: IP나 호스트이름이 지정되지 않았습니다." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "서버 추가되지 않음: 유효하지 않는 서버 포트가 지정되었습니다." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "아이디" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "카뎀리아 상태:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "%s에 동작중" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "동작중" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "상태:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "연결 상태:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "연결 상태:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "방화벽 상태:" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "친구가 없음" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "친구에게 접속함" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "친구에게 접속함" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "자료 유지" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 #, fuzzy msgid "Indexed notes:" msgstr "인덱스 파일을 찾을 수 없음:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "평균 사용자:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "평균 파일:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "동작되지 않음" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, fuzzy, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "알려진 공유 파일 %i개를 찾았음" msgstr[1] "알려진 공유 파일 %i개를 찾았음" #: src/SharedFileList.cpp:377 #, fuzzy, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "알려진 공유 파일 %i개, 알수없는 %i개를 찾았음 " msgstr[1] "알려진 공유 파일 %i개, 알수없는 %i개를 찾았음 " #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, fuzzy, c-format msgid "Shared directory not found, skipping: %s" msgstr "서버가 발견되지 않음: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "사용자이름" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "내려받기 속도" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "올려주기 속도" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "가능함 :" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "올려주기 상태" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "내려받기 상태" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "파일 이름" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "공유 파일" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "요청" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "허락된 요청" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "전송된 크기" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "공유 비율" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "획득한 부분" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "완료된 자료" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "폴더 경로" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "의견/등급 추가" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "의견/등급 편집" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "이름변경" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "컬렉션내의 파일을 전송목록에 추가" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "magnet URI를 클립보드로 복사(&U)" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "ED2k 링크를 클립보드에 복사(&AICH info)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "유효한 자료 링크를 만들기 위해서 높은아이디가 필요합니다." #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "공유된 파일(%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[부분 파일]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "파일 이름" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "올려준 데이터 (세션 (전체)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "전체 추가자원 (패킷): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "파일 요청 추가자원 (패킷): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "자료 교환 추가자원 (패킷): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "서버 추가자원 (패킷): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Kad 추가자원(패킷): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "활성화된 올려주기: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "대기중인 올려주기: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "성공적인 전체 올려주기 세션 : %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "실패한 전체 올려주기 세션: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "평균 올려주기 시간: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "내려받은 데이터 (세션 (전체)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "발견된 자료: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "활성화된 내려받기 (큰 부분): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "세션 올려주기:내려받기 비율 (전체): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "재접속: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "첫 전송으로부터 시간: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "다음으로부터 서버에 연결됨: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "활성화된 연결 (평가): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "최대 연결 제한 접근함: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "평균 연결 (평가): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "최대 연결 (평가): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "클라이언트" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "알수없는 크기" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "차단됨" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "퇴장됨" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "전체: %i 알려진: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "동작중인 서버: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "실패한 서버: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "전체: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "삭제된 서버: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "차단된 서버: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "동작중인 서버의 사용자: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "동작중인 서버의 파일: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "전체 사용자: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "전체 파일: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "서버 할당: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "공유된 파일의 수: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "공유파일의 전체 크기: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "운영체제" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "받은게 없음" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "활성화된 연결 (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "유효하지 않음" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "결코" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "`%s' 명령(pid `%d')은 상태코드 `%d'로 종료되었습니다." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "을 실행하고 종료합니다." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "유효하지 않은 IP 형식. xxx.xxx.xxx.xxx:xxxx를 사용하세요.\n" #: src/TextClient.cpp:323 #, fuzzy msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "이 명령은 인수를 필요로합니다. 유효한 인수: 'all' 또는 숫자\n" #: src/TextClient.cpp:359 #, fuzzy msgid "Processing by hash: " msgstr "파일숫자 %u 처리: %s" #: src/TextClient.cpp:373 #, fuzzy msgid "Processing by filename: " msgstr "파일숫자 %u 처리: %s" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "유효한 숫자가 아님\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "유효한 해시가 아님 (길이는 정확히 32자여야 함)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "더 많은 도움말을 위해서는 '%s'를 입력하세요.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "내려받기 (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "알 수 없는 오류로 요청이 실패함." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "동작이 성공했습니다." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "다음과 같은 오류로 요청이 실패: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "클라이언트에 대한 IP 차단 %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "끔" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "켬" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "서버에 대한 IP 차단 %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "현재 IP 차단 수준은 %d입니다.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "%s %s %s에 연결됨" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "지금 연결중" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "방화벽됨" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "확인" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "내려받기:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "올려주기:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "대기열의 클라이언트:/t %d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "전체 자료:\t% d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "검색된 결과 갯수: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "서버로부터 알수없는 반응을 수신했습니다. 실행코드 = %#x" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "간단한 상태 정보를 보여줍니다." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "연결 상태를 보여줌, 현재 올려주기/내려받기 속도, 기타.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "전체 통계 구조도를 보여줍니다." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "부가적으로, 0-255 범위에 있는 숫자를 이 명령의 인수로 넘길 수 있으며,\n" "얼마나 많은 항목을 클라이언트 버젼 하위구조에 보여줄 것인지 결정합니다.\n" "0이나 생략은 '무제한'을 뜻합니다..\n" "예: 'statistics 5'는 각 클라이언트 종류의 상위 5가지 버전만 보여줍니다.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 #, fuzzy msgid "Reload the given object." msgstr "주어진 대상을 다시 읽어들입니다." #: src/TextClient.cpp:862 #, fuzzy msgid "Reload shared files list." msgstr "공유된 파일 목록을 다시 읽어들입니다." #: src/TextClient.cpp:864 #, fuzzy msgid "Reload IP filtering table." msgstr "파일로부터 IP 차단 테이블을 다시 읽어들입니다." #: src/TextClient.cpp:865 #, fuzzy msgid "Reload current IP filtering table." msgstr "IP 차단 수준을 선택합니다." #: src/TextClient.cpp:866 #, fuzzy msgid "Update IP filtering table from URL." msgstr "파일로부터 IP 차단 테이블을 다시 읽어들입니다." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "통신망에 연결합니다." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "설정되어 있는 가능한 모든 통신망에 연결할 것입니다.\n" "또한, 부가적으로 연결할 서버를 IP:포트 형식으로 지정할수 있습니다.\n" "IP는 점과 십진수의 IPv4 주소이거나, 해석 할 수 있는 DNS이름 이어야 합니다.\n" " " #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Kad에만 연결합니다." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "통신망으로부터 연결을 끊습니다." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "현재 연결되어있는 모든 통신망으로부터 연결을 끊습니다.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Kad에서만 연결을 끊습니다." #: src/TextClient.cpp:879 #, fuzzy msgid "Add an eD2k or magnet link to core." msgstr "ed2k 또는 magnet 링크를 코어에 추가합니다." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "설정값을 정합니다." #: src/TextClient.cpp:885 #, fuzzy msgid "Set IP filtering preferences." msgstr "IP 차단 설정을 합니다." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "클라이언트와 서버에 IP 차단을 사용합니다." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "클라이언트와 서버에 IP 차단을 사용하지 않습니다." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "클라이언트에 IP 차단을 활성/비활성화 합니다." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "클라이언트에 IP 차단을 사용합니다." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "클라이언트에 IP 차단을 사용하지 않습니다." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "서버에 IP 차단을 활성화/비활성화 합니다." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "서버에 IP 차단을 사용합니다." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "서버에 IP 차단을 사용하지 않습니다." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "IP 차단 수준을 선택합니다." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "유효한 차단 수준은 0-255범위여야 하고, 기본(초기)값은\n" "127입니다.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "대역폭 제한 설정합니다." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "이 명령에 주어지는 값은 킬로바이트/초 이어야 합니다..\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "올려주기 대역폭 제한 설정합니다." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "이 명령에 주어지는 값은 킬로바이트/초 이어야 합니다..\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "내려받기 대역폭 제한 설정합니다." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "설정값 가져와 보여줍니다." #: src/TextClient.cpp:907 #, fuzzy msgid "Get IP filtering preferences." msgstr "IP 차단 설정을 가져옵니다." #: src/TextClient.cpp:908 #, fuzzy msgid "Get IP filtering state for both clients and servers." msgstr "서버와 클라이언트에서 IP 차단 상태를 가져옵니다." #: src/TextClient.cpp:909 #, fuzzy msgid "Get IP filtering state for clients only." msgstr "클라이언트에서만 IP 차단 상태를 가져옵니다." #: src/TextClient.cpp:910 #, fuzzy msgid "Get IP filtering state for servers only." msgstr "서버에서만 IP 차단 상태를 가져옵니다." #: src/TextClient.cpp:911 #, fuzzy msgid "Get IP filtering level." msgstr "IP 차단 수준을 선택합니다." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "대역폭 제한 가져옵니다." #: src/TextClient.cpp:915 #, fuzzy msgid "Execute a search." msgstr "Kad 검색을 수행합니다." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "검색의 종류는 다음중에서 정의되어야 합니다:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "예: 'search kad file'은 \"file\"에대해 kad 검색을 실행합니다.\n" #: src/TextClient.cpp:917 #, fuzzy msgid "Execute a global search." msgstr "광역 검색을 수행합니다." #: src/TextClient.cpp:918 #, fuzzy msgid "Execute a local search" msgstr "지역 검색을 수행합니다." #: src/TextClient.cpp:919 #, fuzzy msgid "Execute a kad search" msgstr "Kad 검색을 수행합니다." #: src/TextClient.cpp:921 #, fuzzy msgid "Show the results of the last search." msgstr "마지막 검색의 결과를 보여줍니다." #: src/TextClient.cpp:922 #, fuzzy msgid "Return the results of the previous search.\n" msgstr "이전 검색의 결과로 돌아갑니다.\n" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "검색의 진행을 보여줍니다." #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "검색의 결과를 보여줍니다..\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "파일의 내려받기를 시작" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "마지막 검색으로부터 파일의 번호가 부여됩니다.\n" "예: 'download 12' 는 이전 검색에서 12번 번호를 가진 파일의 내려받기를 시작합" "니다.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "내려받기를 정지합니다." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "내려받기를 재시작합니다." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "내려받기를 취소합니다." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "내려받기의 우선순위를 설정합니다." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "내려받기의 우선순위를 낮음, 보통, 높음 또는 자동으로 설정합니다.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "우선순위를 낮음으로 설정합니다." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "우선순위를 보통으로 설정합니다." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "우선순위를 높음으로 설정합니다." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "우선순위를 자동으로 설정합니다." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "대기열/목록 보여줍니다." #: src/TextClient.cpp:952 #, fuzzy msgid "Show upload/download queue, server list or shared files list.\n" msgstr "올려주기/내려받기 대기열, 서버 목록이나 공유된 파일 목록 보여줍니다.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "올려주기 대기열을 보여줍니다." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "내려받기 대기열을 보여줍니다." #: src/TextClient.cpp:955 msgid "Show log." msgstr "로그를 보여줍니다." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "서버 목록 보여줍니다." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "로그를 초기화합니다." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" #: src/TextClient.h:59 msgid "aMule text client" msgstr "" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "'%s'의 낡은 AICH 해시셋을 64b로 '%s'에 변환합니다." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "경고: 파일 이름 '%s'는 유효하지 않으며 '%s'로 변경되었습니다." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "경고: 파일 이름 '%s'는 이미 존재하며, 새 파일은 '%s'로 변경되었습니다." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "이 분류에 있는 모든 파일을 취소하고 삭제하시겠습니까?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "확인이 요청됨" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "매우 많은연결" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "다른 전부" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "보기 필터 선택" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "분류 추가" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "분류 수정" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "분류 삭제" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "파일 (%s)을 열수없어 공유 파일 목록으로부터 제거합니다." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "알수 없는 파일의 해시설정이 요청되었습니다: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "파일의 올려주기를 재시작합니다: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "파일의 올려주기를 정지합니다: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "`%s' 명령을 실행하는데 실패했습니다. (`%s' 사건에대해)" #: src/UserEvents.h:60 msgid "Download completed" msgstr "" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "" #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "" #: src/UserEvents.h:85 msgid "Message sender." msgstr "" #: src/UserEvents.h:88 msgid "Out of space" msgstr "" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "파일숫자 %u 처리: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "부분 해시를 요청했습니다. (오직 파일크기가 9.5 MB 보다 클때 사용)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> 존재하는 파일이 없음!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "환영합니다!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "설정값 입력" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "파일을 해시" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "이 파일의 추가주소를 더합니다." #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "삭제" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "부분해시의 링크를 생성합니다." #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "링크의 크기를 증가시키는 대신 새 파일 및 희귀한 파일을 빠르게 퍼지는 데에 도" "움을 줍니다." #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "md4 파일 해시" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "저장" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "클립보드로 복사" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "aLinkCreator에 대하여" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "지금 복사할것은 아무것도 없습니다!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "열수 없음" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "제발, 파일이름을 비우지 마세요." #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "지금 저장한것은 없습니다!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "해시중..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 #, fuzzy msgid "Cancelled !" msgstr "취소됨!" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "%.2f 초만에 완료" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "이미 이 주소가 추가되어 있습니다!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "주소를 비우지 마세요." #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "%s를 열수없음." #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i 일 %i 시간 %i 분 %i 초" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02u일 %02u시 %02u분 %02u초" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02u시 %02u분 %02u초" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02u분 %02u초" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02u초" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, 어뮬 온라인 통계" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "wxCas 현재 실행시 최대 내려받기 속도" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "wxCas 이전 실행시부터 절대적 최대 내려받기 속도" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "시스템" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "자동갱신 멈춤" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "온라인 정적그림을 저장" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "온라인 정적그림을 프린트" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "환경 설정" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "wxCas에 대하여" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "자동갱신을 시작" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "자동갱신을 멈춤" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "자동갱신이 시작됨" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "통계 이미지를 저장" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "어뮬 온라인 통계" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "프린트하는데 문제가 있습니다.\n" "혹시 현재 프린터가 올바로 설정되지 않았나요?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "프린트함" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, 어뮬 온라인 서명 통계\n" "\n" "(c) 2004 더폴리시 \n" "\n" "페드로 드 올리베이라 의 CAS에 기본을 두고있습니다.\n" "\n" "GPL로 배포합니다." #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "어어, 어뮬이 실행중이 아닙니다..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "어뮬은 실행중입니다." #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "어뮬은 실행중이나 연결이 끊겨 있습니다." #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "어뮬은 연결중..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "어어, 어뮬의 상태는 알수없음..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "어뮬 " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " 위해 실행되고있는 " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " 은 멈추어져 있습니다." #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " 은 연결되지 않았습니다." #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " 은 연결중..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " 무엇인가 이상하게 동작하고 있음, 확인 요망!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " 는 다음으로 연결중: " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "끔" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr "켜졌습니다." #: src/utils/wxCas/src/wxcasframe.cpp:1066 #, fuzzy msgid " with " msgstr "] with " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "전체 내려받기: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", 올려주기: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "내려받기 세션: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "내려받기: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr "올려주기, kB/s: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 #, fuzzy msgid " kB/s" msgstr "kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "공유함: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr "대기열에있는 파일, 클라이언트: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "시간:" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr "켬" #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "시스템 부하 평균 (1-5-15 분): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "시스템 연속 작동 시간: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "amulesig.dat 파일을 포함한 폴더" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "amulesig.dat 파일이 있는 폴더를 이곳에 입력하세요." #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "갱신율 초당 간격" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "매회 갱신할 때 통계 이미지를 생성합니다." #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "통계 이미지를 생성하는것을 원하는 장소 폴더를 이곳에 입력하세요." #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "FTP 서버의 통계 이미지를 정기적으로 올려줍니다." #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP Url" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP 경로" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "FTP 서버의 URL을 이곳에 입력하세요." #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "FTP 서버에 통계 이미지가 위치할 폴더를 이곳에 입력하세요." #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "사용자" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "FTP 서버로 로그인하기 위한 사용자이름을 이곳에 입력하세요." #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "FTP 서버로 로그인하기 위한 암호를 이곳에 입력하세요." #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "FTP 갱신율 분당 간격" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "유효합니다" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "서명 파일이 있는 폴더" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "통계 이미지를 생성하는곳의 폴더" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "템플릿을 읽음" #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP 포트" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "gzip 압축 사용" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "손님 접근 허가" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "손님 접근 금지" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "어뮬 설정 파일 경로. DO NOT USE DIRECTLY!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "PHP 해석자를 (권장되지 않는) 사용않함" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "각 요청의 PHP 페이지를 재컴파일함" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "어뮬 웹 서버" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "다음과 같은 오류로 요청 실패함: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "인덱스 파일을 찾을 수 없음:" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "세션이 만료됨 - 로그인 요청중\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "세션 확인, 로그인 됨\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "세션 확인, 로그인 안됨\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "열린 세션 없음 - 로그인을 요청할 것임\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "세션이 생성됨 - 로그인 요청중\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "요청 처리중 [원본]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "암호를 검사중\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "암호 해시가 유효하지 않음\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "암호 맞음\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "암호 틀림\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "암호를 입력하지 않았습니다. 빈암호는 사용할수 없습니다.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "로그아웃이 요청됨\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "요청 처리중[redirected]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "부분파일 %s(%s)은 핵심파일을 가지고 있지 않습니다." #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "부분파일 %s(%s)은 빈 핵심파일을 가지고 있습니다." #, fuzzy #~ msgid "Download status" #~ msgstr "내려받기 상태" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #, fuzzy #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "갱신 지연: %d 초" #~ msgstr[1] "갱신 지연: %d 초" #~ msgid "Transferring" #~ msgstr "전송중" #, fuzzy #~ msgid "QR: ???" #~ msgstr "QR: %u" #~ msgid "QR: %u" #~ msgstr "QR: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "대기열에 있음" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - 검색의 진행을 보여줌" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "다음 파일에 대해 MD4 및 AICH 해시를 만듭니다: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "다음 파일에 대해 MD4 해시를 만듭니다: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "다음 파일에 대해 AICH 해시를 만듭니다: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "경고: 백업을 생성한 후 원본 '%s'를 제거할수 없습니다." #~ msgid "WARNING: Failed to delete %s" #~ msgstr "경고: %s를 삭제하지 못했습니다." #, fuzzy #~ msgid "%u (QR: %u)" #~ msgstr "QR: %u" #~ msgid "Rating (total):" #~ msgstr "평가 (전체)" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "모든 올려주기에 전체부분 전송을 시도" #, fuzzy #~ msgid "Downloads window" #~ msgstr "받는중" #~ msgid "Transfers" #~ msgstr "전송" #~ msgid "Unban" #~ msgstr "폐기" #~ msgid "Show Uploads" #~ msgstr "올려주기 보기" #~ msgid "Show Queue" #~ msgstr "대기열 보기" #~ msgid "Select View" #~ msgstr "보기 선택" #~ msgid "Client Software" #~ msgstr "클라이언트 소프트웨어" #~ msgid "Waited" #~ msgstr "대기됨" #~ msgid "Upload Time" #~ msgstr "올려주기 시간" #~ msgid "Upload/Download" #~ msgstr "올려주기/내려받기" #~ msgid "Remote Status" #~ msgstr "원격 상태" #~ msgid "File Priority" #~ msgstr "파일 우선권" #~ msgid "Score" #~ msgstr "점수" #~ msgid "Asked" #~ msgstr "요청됨" #~ msgid "Last Seen" #~ msgstr "마지막으로 보임" #~ msgid "Entered Queue" #~ msgstr "입력된 대기열" #~ msgid "Transferred Up" #~ msgstr "위로 이양하기" #~ msgid "Transferred Down" #~ msgstr "아래로 이양하기" #~ msgid "Userhash" #~ msgstr "사용자 해시" #~ msgid "Encrypted" #~ msgstr "암호화됨" #~ msgid "Shows Upload / Up-queue" #~ msgstr "올려주기 / 올려주기 대기열 보이기" #~ msgid "Clients on queue :" #~ msgstr "대기열속의 클라이언트 :" #~ msgid "Current Session" #~ msgstr "현재 세션" #~ msgid "Total" #~ msgstr "전체" #~ msgid "Requested :" #~ msgstr "요청됨 :" #~ msgid "Files Transfers Window" #~ msgstr "파일 전송 창" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "전체 사용자: %s | 전체 파일: %s" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "경고: 백업을 생성한 후 원본 '%s'를 제거할수 없습니다." #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country(): 국가 정보를 읽을 수 없습니다." #~ msgid "Get IPFilter level." #~ msgstr "IP 차단 수준을 가져옵니다." #~ msgid "Makes a search." #~ msgstr "검색을 합니다." #, fuzzy #~ msgid "Killed!" #~ msgstr "실패" #, fuzzy #~ msgid "Using amuleweb in '%s'." #~ msgstr "시작시 어뮬웹 구동" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "어뮬 종료." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "다음 선택사항은 보안문제로 인해 이번 배포판에서 변경되었습니다:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* 들어오고 나가는 연결에 프로토콜 난독화가 지원됐습니다.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* 다른 서버와 클라이언트로부터 서버목록의 갱신이 불가능합니다.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "이 변경에 대한 더 많은 정보는 어뮬 위키(http://wiki.amule.org)의\n" #~ "\"가짜서버(fake servers)\"에서 찾으십시요.\n" #~ "어뮬이 잘 실행되기 위해서는 서버목록에서 가짜서버를 제거하는것이 중요합니" #~ "다." #~ msgid "Fetching status..." #~ msgstr "상태를 받는 중..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "사용자: E: %s K: %s | 파일 E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "클라이언트 %s, IP:포트 %s:%d, %s %s %s 사용" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress()이 NULL값을 반환했습니다." #~ msgid "Firewalled" #~ msgstr "방화벽" #, fuzzy #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "Loaded %d flag bitmaps." #~ msgstr[1] "Loaded %d flag bitmaps." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "%s 파일은 당나기로 쓰기엔 큽니다: 최대 허용은 4 GB입니다." #~ msgid "No handler for this file type." #~ msgstr "이 파일 종류의 처리기가 없습니다." #~ msgid "File was not saved" #~ msgstr "파일은 저장되지 않았습니다." #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "연결 실패. 특정 호스트에 연결할 수 없습니다\n" #~ msgid "Message Filter" #~ msgstr "메시지 차단" #~ msgid "Gui Tweaks" #~ msgstr "GUI 조정" #~ msgid "Core Tweaks" #~ msgstr "코어 조정" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "도구도움의 지연 시간 (초)" #~ msgid "Show part file number before file name" #~ msgstr "파일이름 앞에 부분파일 번호를 보여줌" #~ msgid "Skin Support" #~ msgstr "외형 지원" #~ msgid "- no skins available -" #~ msgstr "- 가능한 외형이 없음 -" #~ msgid "Online Signature Directory:" #~ msgstr "온라인 서명 폴더:" #~ msgid "Filtering Options:" #~ msgstr "차단 설정:" #~ msgid "Line Capacities" #~ msgstr "라인 용량" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "알림: 이 값은 오직\n" #~ " 통계 목적으로 사용함." #~ msgid "Standard client TCP Port:" #~ msgstr "표준 클라이언트 TCP 포트:" #~ msgid "Extended client UDP Port:" #~ msgstr "확장된 클라이언트 UDP 포트:" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "확장된 서버 요청을 위한 UDP 포트 (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "파일당 최대자료수" #~ msgid "Universal Plug and Play" #~ msgstr "Universal Plug and Play" #~ msgid "Enable UPnP" #~ msgstr "UPnP 활성화" #~ msgid "UPnP TCP Port:" #~ msgstr "UPnP TCP 포트:" #~ msgid "Start next paused file when a file completed" #~ msgstr "파일이 완료되었을때 멈춤상태인 다음파일을 시작" #~ msgid "Select Statistics Colors" #~ msgstr "통계색 선택" #~ msgid "Download Queue Files Progress" #~ msgstr "내려받기 대기열 파일 진행" #~ msgid "Show percentage" #~ msgstr "퍼센트로 보기" #~ msgid "Show progressbar " #~ msgstr "진행바로 보기" #~ msgid "Enable skin support " #~ msgstr "외형지원 활성화" #~ msgid "Skin:" #~ msgstr "외형:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "내려받기 대기열 자동 정렬 (높은 CPU)" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "수신대기 인터페이스의 IP\n" #~ "(모두를 위해서는 비움)" #~ msgid "TCP port" #~ msgstr "TCP 포트" #~ msgid "Who can see shared files:" #~ msgstr "공유 파일을 볼 수 있는 사람:" #~ msgid "Event types" #~ msgstr "사건 종류" #~ msgid "Makes aMule promt before exiting." #~ msgstr "종료하기 전에 확인창을 보여줍니다." #~ msgid "Show overhead bandwith" #~ msgstr "추가자원 대역폭을 보여줌" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. 활성화" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICH가 모든 해시를 신뢰 (추천안함)" #~ msgid "Advanced Settings" #~ msgstr "고급 설정" #~ msgid "Progressbar Style" #~ msgstr "진행바 모양" #~ msgid "Column Sorting" #~ msgstr "열 정렬" #~ msgid "Misc Gui Tweaks" #~ msgstr "기타 GUI 조정" #~ msgid "File Options" #~ msgstr "파일 설정" #~ msgid "Status text" #~ msgstr "상태 문장" #~ msgid "Pop-up status text" #~ msgstr "팝업 상태 문장" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "영화의 상영시간, 줄거리, 언어등을 말할수 있습니다.\n" #~ "만약 가짜 파일이라면 다른 어뮬 사용자에게 알려줄 수 있습니다." #~ msgid "Misc Options" #~ msgstr "기타 설정" #~ msgid "Server Options" #~ msgstr "서버 선택사항" #~ msgid "Display server motd when connected ..." #~ msgstr "연결되었을때 서버 motd를 보여줌..." #~ msgid "Disable/Enable" #~ msgstr "비활성화/활성화" #~ msgid "Authentication" #~ msgstr "인증" #~ msgid "General Settings" #~ msgstr "일반 설정" #~ msgid "Max Connections" #~ msgstr "최대 연결" #~ msgid "GUI Tweaks" #~ msgstr "GUI 조정" #~ msgid "Remote Control" #~ msgstr "원격 조정" #~ msgid "Unable to determine selected browser!" #~ msgstr "선택된 브라우저를 판단할수 없습니다!" #~ msgid "User Defined" #~ msgstr "사용자 설정" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.amule.org - 리눅스 뮬" #~ msgid "Konqueror" #~ msgstr "컨커러" #~ msgid "Mozilla" #~ msgstr "모질라" #~ msgid "Firefox" #~ msgstr "불여우" #~ msgid "Firebird" #~ msgstr "불사조" #~ msgid "Opera" #~ msgstr "오페라" #~ msgid "Netscape" #~ msgstr "넷스케이프" #~ msgid "Galeon" #~ msgstr "갈레온" #~ msgid "Epiphany" #~ msgstr "에피파니" #~ msgid "Select your browser here" #~ msgstr "브라우저 선택" #~ msgid "Custom Browser:" #~ msgstr "특정 브라우저:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "브라우저 이름을 입력하세요. 특정 브라우저를 사용하기 위해서는 위의 메뉴중" #~ "에서'특정 브라우저'를 선택하세요." #~ msgid "Please wait... " #~ msgstr "잠시 기다리세요..." #~ msgid "Could not determine the command for running the browser." #~ msgstr "기본 브라우저가 선택되지 않았습니다." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "외부연결 실패. 응답없음." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "외부연결: 다음 이유로 연결이 거부됨: " #~ msgid "ExternalConn: Access denied" #~ msgstr "외부연결: 접근이 거부됨" #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "ED2k 링크를 클립보드로 복사(&l)" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "ED2k 링크를 클립보드에 복사(&Source)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "ED2k 링크를 클립보드로 복사 (Source) (&With Crypt options)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "ED2k 링크를 클립보드로 복사 (&Hostname)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "ED2k 링크를 클립보드로 복사 (Hostname) (With &Crypt options)" #~ msgid "Warning" #~ msgstr "경고" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "오류: TCP포트를 열수없습니다." #~ msgid "Webserver HTTP port" #~ msgstr "웹서버 HTTP 포트" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "웹서버 포트에 UPnP 포트포워딩을 사용" #~ msgid "Full access password for webserver" #~ msgstr "웹서버 전체접근 암호" #~ msgid "Guest password for webserver" #~ msgstr "웹서버 손님 암호" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "원격 어뮬로부터 웹서버 설정을 불러오거나 저장합니다." #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "ED2k 링크를 계산하기 원하는 파일을 이곳에 입력하세요." #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "ED2k 링크를 추가하기 원하는 주소를 이곳에 입력하세요: aLinkCreator가 현재 " #~ "파일 이름을 덧붙이게 하려면 끝에 '/'를 추가하세요." #~ msgid "Ed2k File Hash" #~ msgstr "ED2k 파일 해시" #~ msgid "Ed2k link" #~ msgstr "ED2k 링크" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "ED2k 링크를 계산하기 위한 파일을 엽니다." #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "계산된 ED2k 링크를 클립보드에 복사합니다." #~ msgid "Save computed ed2k link to file" #~ msgstr "계산된 ED2k 링크를 파일로 저장합니다." #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "ED2k 링크를 계산하기 원하는 파일을 선택하세요." #~ msgid "Select the file to your computed ed2k link" #~ msgstr "계산된 ED2k 링크파일을 선택하세요." #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, 어뮬 ED2k 링크 생성자\n" #~ "\n" #~ "(c) 2004 더폴리시 \n" #~ "\n" #~ "http://jimmac.musichall.cz/ikony.php3 과\n" #~ "http://www.everaldo.com 과 http://www.icomania.com 으로부터 아이콘\n" #~ "\n" #~ "GPL로 배포합니다." #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, 어뮬 ED2k 링크 생성자" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "클립보드에 ED2k링크를 복사" #, fuzzy #~ msgid "Copy ED2k links to clipboard" #~ msgstr "클립보드에 ED2k링크를 복사" #, fuzzy #~ msgid "ED2K: Connecting" #~ msgstr "연결중" #, fuzzy #~ msgid "ED2K: Disconnected" #~ msgstr "연결이 끊김" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "자동갱신 서버 목록이 비어있습니다.\n" #~ "'시작시 서버목록 자동갱신'은 비활성화될 것입니다." #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "ED2k와 Kad 네트워크 모두가 비활성화되어 있습니다.\n" #~ "적어도 하나를 활성화 할때까지 연결할 수 없습니다." #~ msgid "Edit Serverlist" #~ msgstr "서버 목록 편집" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "오류: 외부연결이 승인되지않았습니다." #~ msgid "ED2K is disabled in preferences." #~ msgstr "ED2k가 환경설정에서 비활성화되어 있습니다." #~ msgid "ExternalConn: shutdown requested" #~ msgstr "외부연결: 종료가 요청됨" #~ msgid "Already connected to ED2K." #~ msgstr "이미 ED2k에 연결되었습니다." #~ msgid "Connecting to ED2K..." #~ msgstr "ED2k에 연결중..." #~ msgid "Disconnected from ED2K." #~ msgstr "ED2k로부터 연결이 끊겼습니다." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "외부연결: 유효하지 않은 실행코드를 받았음: %#x" #~ msgid "ED2K Status:" #~ msgstr "ED2k 상태:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "평균 내려받기율 (세션): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "평균 올려주기율 (세션): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "최대 내려받기율 (세션): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "최대 올려주기율 (세션): %s" #~ msgid "Average filesize: %s" #~ msgstr "평균 파일 크기: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "ED2k가 연결되어 있지 않으면 ED2k 검색을 할 수 없습니다." #~ msgid "Error: " #~ msgstr "오류: " #~ msgid "Warning: " #~ msgstr "경고: " #~ msgid "Search related files (ED2k, local server)" #~ msgstr "관련 파일 검색 (ED2k, 지역서버)" #~ msgid "Error" #~ msgstr "오류" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "경고: 낮은아이디를 가지고 있는 동안에는 스스로를 ed2k 링크에 자료로 추가" #~ "할 수 없습니다." #, fuzzy #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "환경설정에서 비디오 재생 프로그램을 선택하세요.\n" #~ "그 동안 어뮬에서 미리보기를 할때마다 mplayer를 사용하도록 시도하며 미리보" #~ "기할 때마다 이 경고를 받을 것입니다." #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "오류: part.met 파일을 열지 못했습니다: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "오류: part.met파일은 크기가 0입니다: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "오류: 유효하지 않은 part.met 파일버젼: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "경고: %s는 손상되었습니다. (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "%s가 완료되는중 예상되지 않은 파일오류가 발생하였습니다. 파일 중지" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "경고: 내려받은 부분의 해시가 불가능합니다. - %s의 해시설정 비완료" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "오류: 내려받은 부분의 해시가 불가능합니다. - 해시설정 비완료 (%s). 발생되" #~ "어서는 안됩니다." #~ msgid "Insufficient Diskspace" #~ msgstr "불충분한 디스크공간" #~ msgid "ERROR! Attempted to share %s" #~ msgstr "오류! %s 공유를 시도" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "ED2k 통신망이 환경설정에서 비활성화되어 있으므로 연결하지 않습니다." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "발견된 서버 목록에서 연결할수 있는 유효한 서버가 없습니다." #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "오류: 시간초과 검사에 유효하지 않은 소켓" #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "magnet 링크를 ed2k로 변환할 수 없음: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "유효하지 않은 ED2k링크! 오류: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "대역폭 제한: 올려주기: %u kB/초, 내려받기: %u kB/초\n" #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "원격으로 동작하는 코어(어뮬)를 종료합니다.\n" #~ "동작하는 코어없이는 불안정하기 때문에,\n" #~ "문자기반 클라이언트도 종료될것입니다.\n" #~ msgid "Connect to ED2K only." #~ msgstr "ED2k에만 연결합니다." #~ msgid "Disconnect from ED2K only." #~ msgstr "ED2k에서만 연결을 끊습니다." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "다음의 ed2k 링크가 추가될 수 있습니다.:\n" #~ "*) 파일 링크 (ed2k://|file|...), 내려받기 대기열에 추가되고,\n" #~ "*) 서버 링크 (ed2k://|server|...), 서버목록에 추가되고,\n" #~ "*) 서버목록 링크, 목록에 포함된 모든 서버들이 서버목록에 추가됩니다.\n" #~ "\n" #~ "magnet 링크는 ed2k 해시와 파일 길이를 포함해야 합니다.\n" #~ msgid "Error: %s (%s) - %s" #~ msgstr "오류: %s(%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "경고: %s(%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "에러: 디스크 공간 부족" #~ msgid "Error: Partmet not found" #~ msgstr "오류: Partmet을 찾을 수 없음" #~ msgid "Error: IO error!" #~ msgstr "오류: 입출력 오류!" #~ msgid "Error: Failed!" #~ msgstr "오류: 실패함!" #~ msgid "ED2K Link: " #~ msgstr "ED2K 링크: " #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "" #~ "문장 컨트롤내의 ed2k 링크를 내려받기 대기열에 추가하려면 여기를 클릭하세" #~ "요." #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "ED2K에서 더 많은 결과를 찾습니다. Kad는 아직 지원되지 않습니다." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "대역폭 제한" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "이것은 표준 ED2k 포트이며 비활성화 할수 없습니다." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "이 UDP 포트는 확장된 Ed2k 요청과 Kad 통신망에 사용됩니다." #~ msgid "Hard Limit" #~ msgstr "강한 제한" #~ msgid "Connection Limits" #~ msgstr "연결 제한" #~ msgid "Auto-update serverlist at startup" #~ msgstr "시작시 서버 목록을 자동갱신" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "서버에 연결할때 서버 목록을 갱신" #~ msgid "Update serverlist when a client connect" #~ msgstr "클라이언트가 연결할때 서버 목록을 갱신" #~ msgid "Disk Space" #~ msgstr "디스크 공간" #~ msgid "Check Disk Space" #~ msgstr "디스크 공간검사" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "어뮬이 디스크공간을 검사하도록 함" #~ msgid "Min Disk Space:" #~ msgstr "최소 디스크 공간:" #~ msgid "Incoming Directory :" #~ msgstr "내려받는 폴더 :" #~ msgid "Temporary Directory :" #~ msgstr "임시 폴더 :" #~ msgid "Shared Directories" #~ msgstr "공유 폴더" #~ msgid "Create Backup to preview" #~ msgstr "미리보기를 위해 백업파일을 만듦" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "빠른 ED2k링크 처리기를 보여줌" #~ msgid "Webserver Parameters" #~ msgstr "웹서버 설정" #~ msgid "Webserver port" #~ msgstr "웹서버 포트" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "웹서버 포트로 UPnP 포트포워딩 활성화" #~ msgid "Webserver UPnP TCP port" #~ msgstr "웹서버 UPnP TCP 포트" #~ msgid "Serverlist" #~ msgstr "서버 목록" #~ msgid "Manual Server Add : Name" #~ msgstr "수동 서버추가 : 이름" #~ msgid "Speed Limits:" #~ msgstr "속도 제한:" #~ msgid "Download Speed: %.1f" #~ msgstr "내려받기 속도: %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "올려주기 속도: %.1f" #~ msgid "TCP Port: %d" #~ msgstr "TCP 포트: %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "TCP 포트: 준비되지 않음" #~ msgid "UDP Port: %d" #~ msgstr "UDP 포트: %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "UDP 포트: 준비되지 않음" #~ msgid "Shared Files: %d" #~ msgstr "공유된 파일: %d" #~ msgid "Queued Clients: %d" #~ msgstr "대기열에 있는 클라이언트: %d" #~ msgid "Upload Limit" #~ msgstr "올려주기 제한" #~ msgid "Download Limit" #~ msgstr "내려받기 제한" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "'addresses.dat'에 서버 목록 주소 항목이 없습니다. 서버 목록을 자동갱신하려" #~ "면 유효한 서버 목록 주소를 이 파일에 붙여넣어 주세요." #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "경고, 서버의 자동 갱신을 위한 URL이 유효하지 않음: %s" #~ msgid "webserver running on pid %d" #~ msgstr "웝서버가 PID %d로 작동중" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "시작과 동시에 웹서버 구동을 요청했으나, amuleweb 파일을 실행할 수 없습니" #~ "다. 어뮬 웹서버를 포함한 꾸러미를 설치하거나 , --enable-webserver 옵션 이" #~ "용하여 어뮬을 컴파일 후 make install을 실행하세요." #~ msgid "Disconnected from ED2K" #~ msgstr "ED2k로부터 연결이 끊김" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "'emfriends.met'파일을 읽기 위해 열지 못했습니다." #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "'emfriends.met'파일을 기록하기 위해 열지 못했습니다." #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "오류: 부분파일을 열지 못했습니다.)" #~ msgid "Mb" #~ msgstr "Mb" #~ msgid "Can't create web socket thread\n" #~ msgstr "웹 소켓 스레드를 생성할수 없음\n" #~ msgid "Web Server: Started\n" #~ msgstr "웹 서버: 시작함\n" #~ msgid "Not Supported" #~ msgstr "지원하지 않음" #~ msgid "LowID: %u (%.2f%% Total %.2f%% Known)" #~ msgstr "낮은아이디: %u(%.2f%% 전체 %.2f%% 알려진)" #~ msgid "SecIdent On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgstr "구간식별 켬/끔: %u(%.2f%%) : %u(%.2f%%)" #~ msgid "Browse wav" #~ msgstr "탐색 효과음" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "웨이브 파일(*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "의견이 없음" #~ msgid "Notifications" #~ msgstr "통지" #~ msgid "Messages popup" #~ msgstr "메시지 팝업" #~ msgid "Use sound" #~ msgstr "소리 이용" #~ msgid "Pop out when :" #~ msgstr "팝아웃 할때 :" #~ msgid "New entry on log" #~ msgstr "로그의 새로운 항목" #~ msgid "Starts a new chat session" #~ msgstr "새로운 채팅 세션을 시작" #~ msgid "A new chat message is received" #~ msgstr "새로운 채팅 메시지가 수신됨" #~ msgid "A download is added or finished" #~ msgstr "내려받기가 추가되거나 완료됨" #~ msgid "New aMule version detected" #~ msgstr "새로운 어뮬 버젼이 발견됨" #~ msgid "Urgent OOD, serverconnection lost" #~ msgstr "긴급한 OOD, 서버연결이 끊김" #~ msgid "Notify by Mail" #~ msgstr "메일로 통보" #~ msgid "Send an Email when transfer complete." #~ msgstr "전송이 완료되었을때 메일을 보냅니다." #~ msgid "SMTP server :" #~ msgstr "SMTP 서버 :" #~ msgid "Email Address :" #~ msgstr "이메일 주소 :" #~ msgid ":" #~ msgstr ":" #~ msgid "" #~ "The selected locale seems not to be installed on your box\n" #~ "You must generate it to use this language.\n" #~ "A good start on linux systems is the file /etc/locale.gen and the package " #~ "'locales'\n" #~ "Good luck!\n" #~ "(Note: I'll try to set it anyway)" #~ msgstr "" #~ "컴퓨터에 선택한 지역정보(로케일)가 설치 않된것 같습니다.\n" #~ "이 언어를 사용하기 위해서는 지역정보(로케일)를 생성해야 합니다.\n" #~ "리눅스 시스템에서 좋은 시작지점은 /etc/local.gen 파일과 'locales' 꾸러미입" #~ "니다.\n" #~ "행운을 빕니다!\n" #~ "(주의: 어쨌든 설정하겠습니다)" #~ msgid "Never show this again" #~ msgstr "다시 보여주지 않음" #~ msgid "Enable/Disable" #~ msgstr "활성화/비활성화" #~ msgid "You can't bootstrap an specific ip from remote GUI yet." #~ msgstr "원격 GUI에서 특정 IP를 초기적재할 수 없습니다." #~ msgid "You can't update server.met from remote GUI yet." #~ msgstr "아직 원격 GUI로부터 server.met를 갱신할수 없습니다." #~ msgid "Disconnect from " #~ msgstr "다음으로부터 연결이 끊김 " #~ msgid "current server" #~ msgstr "현재 서버" #~ msgid " and " #~ msgstr "와 " #~ msgid "Disconnect from any server and/or Kad" #~ msgstr "서버 또는 Kad 접속이 끊겼습니다." #~ msgid " [" #~ msgstr " [" #~ msgid " | Kad: " #~ msgstr " | Kad: " #~ msgid "TCP Flags" #~ msgstr "TCP 플래그" #~ msgid "UDP Flags" #~ msgstr "UDP 플래그" #~ msgid "Copy ED2k link(s) to clipboard" #~ msgstr "ED2k 링크를 클립보드에 복사" #~ msgid "Client requests %u" #~ msgstr "클라이언트가 %u를 요청합니다." #~ msgid "File block %u-%u (%d bytes):" #~ msgstr "파일 블럭 %u-%u (%d 바이트):" #~ msgid "Client request is invalid!" #~ msgstr "클라이언트 요청이 유효하지 않습니다." #~ msgid "Client request is invalid! %i / %i" #~ msgstr "클라이언트 요청이 유효하지 않습니다. %i / %i" #~ msgid "Unable to open %s file - using %s file." #~ msgstr "%s파일을 열수 없습니다. - %s 파일을 사용합니다." #~ msgid "Warning: known.met does not exist." #~ msgstr "경고: known.met이 없습니다." #~ msgid "" #~ "CSharedFileList::FindSharedFiles: Removing %s from shared directory list: " #~ "directory not found." #~ msgstr "" #~ "CSharedFileList::FindSharedFiles: 공유폴더 목록에서 %s를 제거합니다: 폴더" #~ "를 찾을수 없습니다." #~ msgid "Waiting for subprocess termination failed" #~ msgstr "부 프로세스 종료 대기에 실패" #~ msgid "doesn't work" #~ msgstr "작동하지 않습니다." #~ msgid "remote gui" #~ msgstr "원격 gui" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "오류: 백업파일을 읽지 못했습니다. .part.met 복구 방법을 http://forum." #~ "amule.org에서 검색하세요." #~ msgid "" #~ "Error: Backup part.met file is 0 size! Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "오류: 백업 part.met파일은 크기가 0입니다. .part.met회복 방법을 위해 " #~ "http://forum.amule.org에서 검색하세요." #~ msgid "Error: part.met backup file is 0 size: %s ==> %s" #~ msgstr "오류: part.met 백업파일은 크기가 0입니다: %s ==> %s" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " Website: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contact: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ " Part of aMule is based on \n" #~ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr "" #~ " 'All-Platform' 이뮬기반 p2p 클라이언트 \n" #~ "\n" #~ " 웹사이트: http://www.amule.org \n" #~ " 게시판: http://forum.amule.org \n" #~ " 자주하는 질문: http://wiki.amule.org \n" #~ "\n" #~ " 연락: admin@amule.org (관리상의 문제) \n" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ " 어뮬의 일부분은 카뎀리아기반입니다. \n" #~ " 카뎀리아: XOR 측정 기반으로 개개인을 연결합니다..\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "WARNING: You have recieved Low-ID!" #~ msgstr "경고: 낮은아이디를 받았습니다." #~ msgid "This command requieres an argument. Valid arguments: a file hash.\n" #~ msgstr "이 명령은 인수를 필요로 합니다. 올바른 인수들: 파일 해시.\n" #~ msgid "Deprecated command, now 'Status'." #~ msgstr "권장되지 않는 명령어, 지금 'Status'를 쓰세요." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Status' instead.\n" #~ msgstr "" #~ "권장되지 않는 명령어이고, 조만간 제거될것입니다.\n" #~ "대신에 'Status'를 사용하세요.\n" #~ msgid "Deprecated command, now 'Set IPFilter'." #~ msgstr "권장되지 않는 명령어, 지금 'Set IPFilter'를 쓰세요." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter' instead.\n" #~ msgstr "" #~ "권장되지 않는 명령어이고, 조만간 제거될것입니다.\n" #~ "대신에 'Set IPFilter'를 사용하세요.\n" #~ msgid "Deprecated command, now 'Get IPFilter Level'." #~ msgstr "권장되지 않는 명령어, 지금 'Get IPFilter Level'을 쓰세요." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get IPFilter Level' instead.\n" #~ msgstr "" #~ "권장되지 않는 명령어이고, 조만만 제거될것입니다.\n" #~ "대신에 'Get IPFilter Level'을 사용하세요.\n" #~ msgid "Deprecated command, now 'Set IPFilter Level'." #~ msgstr "권장되지 않는 명령어, 지금 'Set IPFilter Level'을 쓰세요." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter Level' instead.\n" #~ msgstr "" #~ "권장되지 않는 명령어이고, 조만만 제거될것입니다.\n" #~ "대신에 'Set IPFilter Level'을 사용하세요.\n" #~ msgid "Deprecated command, now 'Get/Set IPFilter Level'." #~ msgstr "권장되지 않는 명령어, 지금 'Get/Set IPFilter Level'을 쓰세요." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get/Set IPFilter Level' instead.\n" #~ msgstr "" #~ "권장되지 않는 명령어이고, 조만만 제거될것입니다.\n" #~ "대신에 'Get/Set IPFilter Level'을 사용하세요.\n" #~ msgid "Deprecated command, now 'Show Servers'." #~ msgstr "권장되지 않는 명령어, 지금 'Show Severs'를 쓰세요." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Show Servers' instead.\n" #~ msgstr "" #~ "권장되지 않는 명령어이고, 조만만 제거될것입니다.\n" #~ "대신에 'Show Servers'를 사용하세요.\n" #~ msgid "Deprecated command, now 'Get BwLimits'." #~ msgstr "권장되지 않는 명령어, 지금 'Get BwLimits'를 쓰세요." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get BwLimits' instead.\n" #~ msgstr "" #~ "권장되지 않는 명령어이고, 조만만 제거될것입니다.\n" #~ "대신에 'Get BwLimits'를 사용하세요.\n" #~ msgid "Deprecated command, now 'Set BwLimit Up'." #~ msgstr "권장되지 않는 명령어, 지금 'Set BwLimit Up'을 쓰세요." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Up' instead.\n" #~ msgstr "" #~ "권장되지 않는 명령어이고, 조만만 제거될것입니다.\n" #~ "대신에 'Set BwLimit Up'을 사용하세요.\n" #~ msgid "Deprecated command, now 'Set BwLimit Down'." #~ msgstr "권장되지 않는 명령어, 지금 'Set BwLimit Down'을 쓰세요." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Down' instead.\n" #~ msgstr "" #~ "권장되지 않는 명령어이고, 조만만 제거될것입니다.\n" #~ "대신에 'Set BwLimit Down'을 사용하세요.\n" #~ msgid "Masterhashes of known files have been loaded." #~ msgstr "알려진 파일의 마스터 해시를 읽었습니다." #~ msgid "Error while reading Kad contacts - 0 entries" #~ msgstr "Kad 접속을 읽는동안 오류가생겼습니다. - 0 참가자" #~ msgid "Merge attempt" #~ msgstr "병합 시도" #~ msgid "Recursive merge" #~ msgstr "재귀적 병합" #~ msgid "Sucessful merge!" #~ msgstr "병합 성공!" #~ msgid "No merge possible" #~ msgstr "병합 가능한 것이 없음" #~ msgid "Buddy address: " #~ msgstr "친구 주소:" #~ msgid "%d" #~ msgstr "%d" #~ msgid " %d" #~ msgstr " %d" #~ msgid ".%d" #~ msgstr ".%d" #~ msgid "Search warning." #~ msgstr "검색 경고." #~ msgid "Client Identification:" #~ msgstr "클라인트 확인:" #~ msgid "Use Secure Identification" #~ msgstr "안전한 확인을 사용" #~ msgid "" #~ "Secure Identification uses a handshake approch to safely identify clients " #~ "for use with the credit system." #~ msgstr "" #~ "안전한 확인은 신용시스템을 사용함에 있어서 클라이언트를 안전하게 확인하기 " #~ "위해 핸드쉐이크 접근을 사용합니다." #~ msgid "Sources Dropping" #~ msgstr "자료 버림" #~ msgid "Source Dropping" #~ msgstr "자료 버리기" #~ msgid "Drop sources" #~ msgstr "자료 버림" #~ msgid "Send sources to any other file before dropping (High CPU)" #~ msgstr "버리기 전에 다른 파일로 자료를 보냄 (높은 CPU)" #~ msgid "Sources with no needed file-parts." #~ msgstr "필요없는 파일부분을 가진 자료" #~ msgid "Full Queue Sources Handling" #~ msgstr "가득찬 대기열 자료 처리" #~ msgid "Enable auto drop Full Queue Sources" #~ msgstr "가득찬 대기열 자료 자동 버림을 활성화" #~ msgid "High Queue Rating Sources Handling" #~ msgstr "높은 대기열율 자료 처리" #~ msgid "Enable auto drop High Queue Rating Sources" #~ msgstr "높은 대기열율 자료 자동 버림을 활성화" #~ msgid "High Queue Rating value" #~ msgstr "높은 대기열율 값" #~ msgid "(Min 300 / Max 3000)" #~ msgstr "(최소 300 / 최대 3000)" #~ msgid "Auto Drop Sources Timer" #~ msgstr "자동 자료버림 타이머" #~ msgid "Timer (in secs)" #~ msgstr "타이머 (초)" #~ msgid "(Min 60 / 3600 Max)" #~ msgstr "(최소 60 / 3600 최대)" #~ msgid "Drop No Needed Sources now" #~ msgstr "불필요한 자료를 버림" #~ msgid "Drop Full Queue Sources now" #~ msgstr "가득찬 대기열 자료를 버림" #~ msgid "Drop High Queue Rating Sources now" #~ msgstr "대기열 사용이 많은 자료를 버림" #~ msgid "Clean Up Sources now (NNS, FQS && HQRS)" #~ msgstr "자료를 정리 (NNS, FQS && HQRS)" #~ msgid "English (U.S.)" #~ msgstr "영어(미국)" #~ msgid "Spanish (Mexican)" #~ msgstr "스페인어(멕시코)" amule_2.3.1+git20151120.0023527bc2.orig/po/l10n.xsl0000644000175000017500000000705612611472361017433 0ustar morphmorph <xsl:value-of select='@name'/> translation statistics

translation statistics

Statistics generated

Language TranslatedFuzzyUntranslatedWarningsProgress
.po () | ~ % | | ~ % | | ~ % | | .po.warnings |
px; px; px; px;

generated on amule_2.3.1+git20151120.0023527bc2.orig/po/lt.po0000644000175000017500000064552512611472361017121 0ustar morphmorph# translation of lt.po to Lithuanian # Dovydas Sankauskas , 2006, 2007, 2008. # Dovydas Sankauskas , 2006. # This file is distributed under the same license as the aMule package. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2008-06-08 10:44+0100\n" "Last-Translator: Dovydas Sankauskas \n" "Language-Team: Lithuanian \n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%" "100<10 || n%100>=20) ? 1 : 2);\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Įdėti draugą" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Įrašyti IP ir prievadas teisingi!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informacija" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Nurodyta naudotojo maišos f-ja klaidinga!" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "Nepavyko atverti %s (%s)" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "DĖMESIO: jei jūsų ID yra žemas, negalite įdėti savęs prie eD2k nuorodos " "šaltinių." #: src/amule.cpp:229 #, fuzzy msgid "Now, exiting main app..." msgstr "" "\n" "Darbas baigiamas %s...\n" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Nepavyko" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 #, fuzzy msgid "aMule shutdown completed." msgstr "Atsiuntimas baigtas" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "Baigimo patvirtinimas" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "Naujas išorinis ryšys priimtas" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "DĖMESIO" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Pasikeitus parinktims aplinkos kalba buvo pakeista į sistemoje numatytą " "kalbą." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Informacija" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Serverių sąraše nėra nei vieno serverio.\n" "Ar pageidaujate, kad aMule dabar atsiųstų naują sąrašą?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Serverių sąrašo siuntimas" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "žiniatinklio serverio pid yra %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Nurodėte paleidus programą paleisti žiniatinklio serverį, bet amuleweb " "programos nepavyko paleisti. Įdiekite aMule žiniatinklio programos paketą " "arba sukompiliuokite aMule su --enable-webserver parinktimi ir paleiskite " "„make install“." #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "KLAIDA" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Nepavyko susieti prievadų su nurodytu adresu: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Prievadas %u neprieinamas. Gavote žemą ID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Prievadas %u neprieinamas!\n" "\n" "Gavote žemą ID.\n" "\n" "\n" "Patikrinkite sistemines tinklo parinktis ir įsitikinkite, kad nurodytas " "prievadas atviras tiek išsiuntimui, tiek priėmimui." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Nepavyko sukurti keičiamo parašo failo" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Nepavyko sukurti keičiamo aMule parašo failo" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Nurodyta lokalė jūsų kompiuteryje neįdiegta. (Dėmesio: šiaip ar taip vis " "tiek pabandysime naudoti nurodytą lokalę)." #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "aMule paleista pirmą kartą %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Ši versija yra darbinė versija, atnaujinama kasdien, ir\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "todėl negalime garantuoti, kad ji nenulūš, nepadegs namų ar\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "nenumarins šuns. Bet šiaip ar taip ją naudoti turėtų būti saugu.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Daugiau informacijos, pagalbos ir naujausias galutines versijas rasite mūsų\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "svetainėje www.aMule.org arba IRC kanale #aMule serveryje irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Nesikuklinkite pranešti rastas klaidas adresu http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Neteisingai nurodėte keičiamo parašo aplanką!\n" "Keičiamas parašas bus išjungtas tol, kol pakeisite parinktis." #: src/amule.cpp:1116 #, fuzzy msgid "Server hostname notified" msgstr "Serverio pavadinimas:" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Nepavyko paskirti disko vietos failui „%s“: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "KLAIDA: nepavyko atverti žurnalo failo" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "DĖMESIO: žurnalas tuščias. Kažkas čia ne taip." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Žurnalas išvalytas" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Serverio pranešimas: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Nepavyko atsiųsti mazgų sąrašo." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Nepavyko atverti atsiųstos versijos tikrinimo failo" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Sugadintas versijos tikrinimo failas" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Naudojate pasenusią aMule versiją!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Ši aMule versija yra %i.%i.%i, o naujausia versija yra %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Naujausią versiją bet kada galima atsisiųsti iš http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "DĖMESIO: ši aMule versija yra pasenusi: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Naudojate naują aMule versiją." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Nepavyko atsiųsti versijos tikrinimo failo" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Naudotojai: %s | Failai: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Naudotojai: eD2k: %s Kad: %s | Failai: eD2k: %s Kad: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Neparinktas joks tinklas" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "žemas ID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "aukštas ID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Prisijungta prie %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Jungiamasi prie %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Atsijungta nuo eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kademlia paleista." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kademlia sustabdyta." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Prisijungta prie Kademlia" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Prisijungta prie Kademlia (už ugniasienės)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Atsijungta nuo Kademlia" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Nepavyks prisijungti prie Kademlia tinklo, jei parinktyse yra išjungtas UDP " "prievadas." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Kademlia tinklas išjungtas parinktyse, ryšys nebus užmezgamas." #: src/amuled.cpp:589 #, fuzzy msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "KLAIDA: aMule tarnyba negali būti naudojama jei išoriniai ryšiai yra " "išjungti. Norėdami įjungti išorinius ryšius arba naudokite normalią aMule, " "arba paleiskite amuled su parametru --ec-config, arba faile ~/.aMule/amule." "conf nustatykite parametro „AcceptExternalConnections“ reikšmę lygią 1." #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "KLAIDA: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "aMule %s, sukurta eMule pagrindu." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Vykdoma %s sistemoje" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Aplankykite http://www.amule.org ir pasitikrinkite ar nėra naujesnės " "versijos." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "KRITINĖ KLAIDA: nepavyko sukurti laiko skaitliuko" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "aMule nuotolinio valdymo pultelis " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Ekrano kopija:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: p2p maršrutizavimas, paremtas XOR metrika.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Žinutė" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Jungiamasi" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: jungiamasi" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: atsijungta" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: už ugniasienės" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: prisijungta" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: jungiamasi" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: išjungta" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Atšaukti" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Nutraukti bandymus prisijungti" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Atsijungti" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Atsijungti nuo pasirinktų tinklų" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Prisijungti" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Prisijungti prie pasirinktų tinklų" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Išs.: %.1f(%.1f) | Ats.: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Išs.: %.1f | Ats.: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | prisijungta)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | neprisijungta)" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "Ar tikrai norite baigti darbą su aMule?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Baigimo patvirtinimas" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Išvaizdos failų aplankas %s neegzistuoja" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "DĖMESIO: nepavyko atverti temos failo „%s“ skaitymui" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Tinklas" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Tinklo langas" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Paieška" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Paieškos langas" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Siuntimai" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "Atsiunčiama" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Dalinami failai" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Dalinamų failų langas" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Žinutės" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Žinučių langas" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistika" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Statistikos grafikų langas" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Parinktys" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Parinkčių langas" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Įkelti" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Dalinai atsiųstų failų įkėlimo įrankis" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Apie" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Apie/pagalba" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "eD2k tinklas" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Kad tinklas" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Jokio tinklo" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "KRITINĖ KLAIDA: nepavyko sukurti laiko skaitliuko" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Prisijungti prie nutolusio aMule" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "KRITINĖ KLAIDA: nepavyko sukurti laiko skaitliuko" #: src/amule-remote-gui.cpp:274 #, fuzzy msgid "Going to event loop..." msgstr "Bandoma atstatyti failo informaciją..." #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "Jungiamasi" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Prisijungti nepavyko" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Viskas" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Nežinoma" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Nepavyko gauti dalinamų failų iš vartotojo „%s“" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (neteisinga eMule versija %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (neteisinga eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (neteisinga eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (paremta eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Slapyvardis: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Paprašė: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Šio seanso failų statistika: priimta %d iš %d prašymo, %s persiųsta\n" msgstr[1] "" "Šio seanso failų statistika: priimta %d iš %d prašymų, %s persiųsta\n" msgstr[2] "" "Šio seanso failų statistika: priimta %d iš %d prašymų, %s persiųsta\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Visų seansų failų statistika: priimta %d iš %d prašymo, %s persiųsta\n" msgstr[1] "" "Visų seansų failų statistika: priimta %d iš %d prašymų, %s persiųsta\n" msgstr[2] "" "Visų seansų failų statistika: priimta %d iš %d prašymų, %s persiųsta\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Paprašė nežinomo failo" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Filtras sulaikė %s žinutę (IP %s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Naują žinutę atsiuntė %s (IP %s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Naudotojas %s (%u) paprašė dalinamų failų iš aplanko %s sąrašo –> atmesta" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, fuzzy, c-format msgid "WARNING: %s cannot be opened." msgstr "DĖMESIO: nepavyko atverti known.met." #: src/CanceledFileList.cpp:61 #, fuzzy msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "DĖMESIO: sugadintas known.met, klaidinga antraštė." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "Nuskaitant known.met failą įvyko IO klaida: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "Įrašant known.met failą įvyko klaida: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategorija" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nauja kategorija" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Nurodykite atsiųstų failų aplanką" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Nurodykite kategorijos pavadinimą!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Nurodykite kategorijos kelią!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Nepavyko sukurti atsiųstų failų aplanko šiai kategorijai. Nurodykite " "teisingą kelią!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Pokalbis pradėtas: %s (%s:%u) – %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Prisijungta prie kliento ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Jungiamasi prie kliento ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Nepavyko prisijungti prie kliento arba ryšys nutrūko ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Užverti kortelę" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Užverti visas korteles" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Užverti kitas korteles" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Įdėti į draugus" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Kreditų failas įkeltas, rastas %u žinomas klientas" msgstr[1] "Kreditų failas įkeltas, rasti %u žinomi klientai" msgstr[2] "Kreditų failas įkeltas, rasta %u žinomų klientų" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] "– %u kliento kreditai nebegalioja!" msgstr[1] "– %u klientų kreditai nebegalioja!" msgstr[2] "– %u klientų kreditai nebegalioja!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Nerasta cryptkey.dat failo. Failas kuriamas." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Kliento savybės" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "Žemas ID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "Aukštas ID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Įjungta" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Palaikoma" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Nepalaikoma" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Išjungta" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Prisijungta" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Neprisijungta" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Neužbaigta" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Kenkėjas" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Praėjo patikrinimą" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Nepasiekiama" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Naudotojas %s (%u) paprašė dalinamų failų sąrašo –> suteikta" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Naudotojas %s (%u) paprašė dalinamų failų sąrašo –> atmesta" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "Naudotojas %s (%u) paprašė dalinamų aplankų sąrašo –> suteikta" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "Naudotojas %s (%u) paprašė dalinamų aplankų sąrašo –> atmesta" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Naudotojas %s (%u) paprašė dalinamų failų iš aplanko %s sąrašo –> suteikta" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Naudotojas %s (%u) paprašė dalinamų failų iš aplanko %s sąrašo –> atmesta" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Naudotojas %s (%u) dalinasi aplanku %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Naudotojas %s (%u) atsiuntė neprašytus dalinamų failų aplankus" #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "Naudotojas %s (%u) atsiuntė neprašytą dalinamų failų sąrašą aplankui %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Naudotojas %s (%u) baigė siųsti dalinamų failų sąrašą" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Naudotojas %s (%u) atsiuntė neprašytą dalinamų failų sąrašą" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Naudotojas %s (%u) nesuteikė prieigos prie dalinamų aplankų/failų sąrašo" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Failo komentarai" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Vardas" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Failo pavadinimas" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Reitingas" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Komentaras" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Komentarų nėra" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u komentaras" msgstr[1] "%u komentarai" msgstr[2] "%u komentarų" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Automatiškai (žemas)" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Automatiškai (normalus)" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Automatiškai (aukštas)" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Labai žemas" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Žemas" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normalus" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Aukštas" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Labai aukštas" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Leidinys" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Klausiama" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Jungiamasi per serverį" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Eilė pilna" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Eilėje" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Atsiunčiama" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Laukiama maišos f-jos reikšmės" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Nėra reikalingų dalių" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Žemam ID nepavyks prisijungti prie kito žemo ID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Per daug užmegztų ryšių" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Jungiamasi per Kademlia" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Perdaug Kademlia ryšių" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Užblokuota" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Ryšio klaida" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Nutolusi eilė pilna" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Senasis MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Naujasis MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "Suderinamas su eMule" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Vietinis serveris" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Nutolęs serveris" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kademlia" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Keičiamasi šaltiniais" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Neveiklus" #: src/DataToText.cpp:133 msgid "Link" msgstr "Nuoroda" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Pilni šaltiniai" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Baigtos" #: src/DataToText.cpp:146 msgid "In progress" msgstr "Dirbama" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "KLAIDA: trūksta laisvos disko vietos" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "KLAIDA: nerastas dalių failas" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ERROR: IO klaida!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ERROR: nepavyko!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "Eilėje" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Jau siunčiama" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Nežinomas arba klaidingas laikino failo formatas." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Dydis" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Persiųsta" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Sparta" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Eiga" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Šaltiniai" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioritetas" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Būsena" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Likęs laikas" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Paskutinį kartą matyta pilna" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Paskutinį kartą siųsta" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Ar tikrai norite pašalinti pažymėtą failą?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Ar tikrai norite pašalinti pažymėtus failus?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Atsakymas iš: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Automatiškas" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Sustabdyti" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pauzė" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Tęsti" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "I&švalyti baigtus failus" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Visų naudotojų, turinčių šį failą, prašyti šio failo dabar pat" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Visų naudotojų, turinčių šį failą, prašyti šio failo automatiškai" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Visų naudotojų, turinčių šį failą, prašyti kito failo" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Papildomi veiksmai" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Peržiūra" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "&Rodyti failo savybes" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Rodyti komentarus" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Kopijuoti magneto URI į talpyklę" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Kopijuoti eD2k &nuorodą į talpyklę" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Kopijuoti atsakymą į talpyklę" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "Nepriskirti niekur" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Priskirti į kategoriją" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Atverti failą" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Įrašykite naują failo pavadinimą:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Pervadinti failą" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Atsiuntimai (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Norėdami nebematyti šio įspėjimo kiekvienos peržiūros metu,\n" "parinktyse nurodykite pageidaujamą video grotuvą (numatytas yra mplayer)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Failo peržiūra" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "KLAIDA: nepavyko paleisti išorinio vaizdo grotuvo! Komanda: „%s“" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "Įkeliamas server.met failas: %s" #: src/DownloadQueue.cpp:132 #, fuzzy, c-format msgid "Loading PartFile %u of %u" msgstr "Įkeliami duomenys iš seno atsiuntimo failo (%u iš %u)" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "KLAIDA: nepavyko įkelti atsarginės kopijos failo. Paieškokite http://forum." "amule.org .part.met atstatymo būdų." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Nerastas nei vienas dalių failas" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Rastas %u dalių failas" msgstr[1] "Rasti %u dalių failai" msgstr[2] "Rasta %u dalių failų" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "Laikino aplanko failų sistema nemoka dirbti su dideliais failais." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "Atsiųstų failų aplanko failų sistema nemoka dirbti su dideliais failais." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Atsiunčiama %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Failas %s jau yra atsiunčiamų failų sąraše" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Failas %s jau buvo atsiųstas" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Failas %s jau yra atsiunčiamų failų sąraše" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Nepavyko konvertuoti magnet nuorodos į eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Nežinomas protokolas arba nuoroda: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Klaidinga eD2k nuoroda! KLAIDA: %s" #: src/ExternalConn.cpp:261 #, fuzzy msgid "Client sent packet after authentication failed." msgstr "Patvirtinimas nepavyko." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Išorinis ryšys nutrauktas." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Išoriniai ryšiai atjungti, nes slaptažodis tuščias!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Išoriniai ryšiai atjungti parinkčių faile" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Naujas išorinis ryšys priimtas" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "KLAIDA: nepavyko priimti išorinio ryšio" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Išorinis ryšys nepriimtas, nes parinktyse nurodytas tuščias slaptažodis!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Jungiasi klientas: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Nežinoma versija" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Klaidingos išorinių ryšių versijos, taip gali būti dėl skirtingų programų. " "Programos branduolį ir nutolusią aplinką naudokite kompiliuotą iš tos pačios " "pradinio kodo versijos." #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Nepavyks prie galutinės leidimo versijos prisijungti iš SVN versijos! Ech, " "buvo išvengta galimo programos lūžimo" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Neteisinga protokolo versija." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Trūksta protokolo versijos žymės." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 #, fuzzy msgid "Authentication failed: wrong password." msgstr "Patvirtinimas nepavyko." #: src/ExternalConn.cpp:512 #, fuzzy msgid "Authentication failed: missing password." msgstr "Patvirtinimas nepavyko." #: src/ExternalConn.cpp:522 #, fuzzy msgid "Invalid request, please authenticate first." msgstr "Klaidingas prašymas, iš pradžių turite būti atpažinti." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Prieiga suteikta." #: src/ExternalConn.cpp:535 #, fuzzy, c-format msgid "Sent error message \"%s\" to client." msgstr "Filtruoti žinutes nuo nežinomų klientų" #: src/ExternalConn.cpp:538 #, fuzzy, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Bandymas gauti prieigą. Prieiga nesuteikta, ryšys nutrauktas." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "Nutolusio dalinio failo komanda nepavyko. Failo maišos funkcija nerasta: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Failo maišos funkcija nerasta: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "Oi! OpCode vykdymo klaida!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Serveris neįdėtas" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "serveris nerastas: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "Nurodykite serverį, kurį pašalinti" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k išjungtas parinktyse." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Ieškoma. Tuoj bus gauti rezultatai!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "www paieška iš nutolusios programos neturi prasmės." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Grafikui nėra duomenų." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Šis klientas nesuderintas pateikti tiek detalių." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Išorinis ryšys: gautas prašymas išjungti" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Jau išsijungiama." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Išoriniai ryšiai: įdedama nuoroda %s." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Klaidinga nuoroda arba failas sąraše jau yra." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Failas nerastas." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Klaidingas failo pavadinimas." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Nepavyko pervadinti failo." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kademlia išjungta parinktyse." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Prie eD2k jau prisijungta." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Jungiamasi prie eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Prie Kademlia jau prisijungta." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Jungiamsi prie Kademlia..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Visi tinklai išjungti." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Atsijungta nuo eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Atsijungta nuo Kademlia." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Išorinis ryšys: gautas klaidingas opcode: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Klaidingas opcode (bloga protokolo versija?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Nežinomas plėtinys %s (komandai %s).\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Nežinoma komanda %s.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Ši komanda neturi kintamųjų.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Šiai komandai reikia kintamojo.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Ši komanda nebaigta, naudokite vieną iš plėtinių žemiau.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Galimi plėtiniai:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Galimos komandos:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Visoms komandoms svarbu raidžių dydis.\n" "Įrašę „%s “ gausite išsamią informaciją apie .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Baigti programos darbą." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Rodyti pagalbą." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Įrašę „help “ gausite išsamią informaciją apie .\n" "Įrašę „help“ gausite pilną komandų sąrašą.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Įrašę „%s“ gausite komandų sąrašą\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Sintaksės klaida!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Apdorojant komandą įvyko klaida! To neturėjo niekada atsitikti! Prašome " "pranešti apie klaidą\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Ši komanda negali turėti parametrų." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Ši komanda privalo turėti parametrą." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Klaidingas kintamasis." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Komanda neužbaigta." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Įrašę „%s“ gausite išsamesnę pagalbą.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Tai %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Tai %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Kuriamas klientas...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Darbas baigiamas %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Nurodžius tuščią slaptažodį prisijungti nepavyks.\n" "Nurodykite slaptažodį parinkčių faile,\n" "komandų eilutėje arba įrašykite paklausus.\n" "\n" "Darbas baigiamas...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Rodyti šį pagalbos tekstą." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Mazgas, kuriame paleista aMule. Numatyta: localhost" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "aMule išorinių ryšių prievadas. Numatyta: 4712" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Išorinių ryšių slaptažodis." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Nuskaityti parinktis iš failo." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Nepateikti išvesties į stdout įrenginį." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Rodyti išsamius pranešimus, negi klaidų taisymo pranešimus." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Nurodyti programos kalbą." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Komandų eilutės parinktis įrašyti į parinkčių failą." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Sukurti parinkčių failą pagal aMule parinkčių failą." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Atspausdinti programos versiją." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Failo savybės" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% baigta" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "Nepavyko atverti draugų sąrašo failo „emfriends.met“ skaitymui!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "Nepavyko atverti draugų sąrašo failo „emfriends.met“ rašymui!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Draugai" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Rodyti &išsamiau" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Įdėti draugą" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Pašalinti draugą" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Siųsti &žinutę" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Peržiūrėti failus" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Sukurti siuntimo kanalą draugui" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Ar tikrai pašalinti pažymėtą draugą?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Ar tikrai pašalinti pažymėtus draugus?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Neleidžiama sukurti daugiau nei vieną siuntimo kanalą draugui.\n" "Buvo sukurtas tik vienas kanalas." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Pažymėta keletas" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Siųsti žinutę naudotojui" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Siųsti žinutę:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Pašalinti iš draugų" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Siųsti žinutę" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Keisti į šį failą" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "Ats. kitą failą" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "Reitingas: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Atsiunčiamas kitas failas" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Laukiantys išsiuntimai: %s" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "Eilėje" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Išsiuntimas" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "Niekas" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Ne" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Taip" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Atsiunčiama..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "DĖMESIO: nepavyko atverti temos failo „%s“ skaitymui" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "Atsiųsta" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "Prisijungti prie serverio iš naujo" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "Nepavyko iš %s atsiųsti serverių sąrašo" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Nepavyko iš %s atsiųsti serverių sąrašo" #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Įkeliami IP filtrai ipfilter.dat ir ipfilter_static.dat." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "Nepavyko įkelti ipfilter.dat failo „%s“, nepavyko suprasti failo formato." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "Nepavyko įkelti ipfilter.dat failo „%s“, nepavyko atverti failo." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Įkeltas %u IP diapazonas iš „%s“." msgstr[1] "Įkelti %u IP diapazonai iš „%s“." msgstr[2] "Įkelta %u IP diapazonų iš „%s“." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u klaidingas įrašas neįkeltas." msgstr[1] "%u klaidingi įrašai neįkelti." msgstr[2] "%u klaidingų įrašų neįkelta." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Inicializuoti iš \n" "žinomų klientų" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Mazgai (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Klaidingas inicializavimo IP" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Klaidingas inicializavimo prievadas" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Prašome užpildyti visus privalomus laukus" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Ar tikrai norite atsisiųsti naują nodes.dat failą?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Atsiuntus naują node.dat failą bus pašalinti dabartiniai mazgai ir bus iš " "naujo prisijungta prie Kademlia tinklo." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Tęsti?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: ieškomas žodis pernelyg trumpas" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Nuskaitytas %u Kad kontaktas" msgstr[1] "Nuskaityti %u Kad kontaktai" msgstr[2] "Nuskaityta %u Kad kontaktų" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" msgstr[2] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Įrašytas %d Kad kantaktas" msgstr[1] "Įrašyti %d Kad kantaktai" msgstr[2] "Įrašyta %d Kad kantaktų" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Failo pavadinimas" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Failo dydis" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Platinimo santykis" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Išsiųsta" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Paprašyta" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Priimta" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Pilni šaltiniai" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Nežinoma versija" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "DĖMESIO: nepavyko atverti temos failo „%s“ skaitymui" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Vykdoma maiša" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Patvirtinama" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Baigta" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Pristabdyta" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Klaidinga" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Laukiama" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Turite įrašyti netuščią slaptažodį." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Klaidingas slaptažodis, ne MD5 maiša!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Ryšio klaida" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "Nepavyko užmegzti išorinio ryšio. Gautas tuščias atsakymas." #: src/libs/ec/cpp/RemoteConnect.cpp:258 #, fuzzy msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "Išorinis ryšys: neteisingas atsakymas iš serverio. Ryšys nutrauktas." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Pavyko! Užmegztas ryšys su aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Pavyko! Ryšys užmegztas." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Išorinis ryšys: prieiga nesuteikta" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "Išorinis ryšys: prieiga nesuteikta" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Automatinis atnaujinimas paleistas" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "KLAIDA: nepavyko klausytis TCP prievado." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "KLAIDA: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "DĖMESIO: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Užverti" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Iškirpti" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Kopijuoti" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Įterpti" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Išvalyti" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Pažymėti viską" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Neribojama" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule dėklo meniu" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Spartos apribojimai:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "Išs.: jokių" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "Išs.: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "Ats.: jokių" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "Ats.: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Atsiuntimo sparta: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Išsiuntimo sparta: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Kliento informacija" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Slapyvardis: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Slapyvardis nenurodytas!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "Kliento ID: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Neprisijungta" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Serverio pavadinimas: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "Serverio IP: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Neprisijungta" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP prievadas: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP prievadas: neparuošta" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "UDP prievadas: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UDP prievadas: neparuošta" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Keičiamas parašas: įjungta" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Keičiamas parašas: išjungta" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Seanso trukmė: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Dalinami failai: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Klientai eilėje: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Iš viso atsiųsta: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Iš viso išsiųsta: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Išsiuntimo apribojimas" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Atsiuntimo apribojimas" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Slėpti aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Rodyti aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Baigti" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k nuoroda: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Vykdyti" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Paspauskite norėdami įdėti eD2k nuorodą į teksto valdymą atsiuntimų eilėje." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "Įvykių žurnalas. Pilną įvykių žurnalą galite rasti Serverių kortelėje." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Įkeliama..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Naudotojų skaičius serveryje, prie kurio prisijungėte..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Naudotojų: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Naudotojų skaičius dabartiniame serveryje ir apytikslis bendras naudotojų " "skaičius." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Išs.: 0,0 | Ats.: 0,0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Dabartinė vidutinė išsiuntimo ir atsiuntimo sparta. Jei įjungta papildoma " "parinktis skaičiai skliausteliuose nurodo išnaudojamą tarnybinį srautą." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Ryšio būklė ir aktyvūs siuntimai. Raudonos rodyklės žymi, kad ryšys " "neužmegztas, geltonos rodyklės žymi, kad gavote žemą ID (esate už " "ugniasienės), žalios rodyklės žymi, kad gavote aukštą ID (geriausia ryšio " "būklė)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Neprisijungta..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Dabartinis serveris." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Paieška" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Pavadinimas:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tipas" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Vietinis" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Globalus" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Failo maišos f-ja" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Papildomos parinktys" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtrai" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Failo tipas" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Bet kas" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Supakuoti failai" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Garso failai" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD atvaizdai" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Paveiksliukai" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programos" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Teksto failai" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Vaizdo failai" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Plėtinys" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Min dydis" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Baitai" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Maks dydis" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Skaičius" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filtras:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filtruoti rezultatus" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Apversti filtrą" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Slėpti žinomus failus" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Pradėti" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Daugiau" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" "Ieškos daugiau rezultatų eD2k tinkle. Kademlia tinkle kol kas neveikia." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Sustabdyti" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Atsiųsti" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Atstatyti laukelius" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Paieškos rezultatai" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Pašalinti iš sąrašo jau atsiųstus failus" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Pilni šaltiniai" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Bendra" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Pilnas pavadinimas:" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "Nežinoma" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met failas:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Maišos f-jos reikšmė:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Failo dydis:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Dalinio failo būsena:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Paskutinį kartą matytas pilnas:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Siuntimas" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Rasti šaltiniai:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Siunčiantys šaltiniai:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Dalių skaičius:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Pasiekiamos dalys:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Siuntimo sparta:" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Atsiuntimo aktyvi trukmė: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Persiųsta duomenų:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Atsiųstas kiekis:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Klaidų taisymo įrankis" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Dėl klaidų prarasta:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Sutaupyta supakuojant:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Klaidų taisymo įrankis pataisė paketų:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Failo pavadinimai" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Pervadinti" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Išvalyti" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Įvykdyti" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Gerai" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Komentuokite ir įvertinkite failą (komentarą matys visi naudotojai)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Failo kokybė" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Nevertinta" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Klaidinga/sugadinta" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Prasta" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Labai gera" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Gera" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Puiki" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "Įvertinkite failą arba praneškite kitiems, kad failas sugadintas..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Atnaujinti" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Atsiunčiama, prašome palaukti..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Dydis nežinomas" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Būtina informacija" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP adresas:" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Prievadas:" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Papildoma informacija" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Naudotojo vardas:" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Naudotojo maišos f-ja:" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Įdėti" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Atsiuntimo sparta" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Dabartinė sparta" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Dabartinis vidurkis" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Seanso vidurkis" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Išsiuntimo sparta" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Ryšiai" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktyvūs atsiuntimai" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktyvūs ryšiai (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Aktyvūs išsiuntimai" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Statistikos duomenų medis" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Naudotojo vardas:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Naudotojo maišos f-ja:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Kliento programinė įranga:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Programinės įrangos versija:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP adresas:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "Naudotojo ID:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "Serverio IP:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Serverio pavadinimas:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Slėpimas:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Siuntimai naudotojui" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Dabartinis prašymas:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Vidutinė išsiuntimo sparta:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Vidutinė atsiuntimo sparta:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Išsiųsta (per šį seansą):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Atsiųsta (per šį seansą):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Išsiųsta (iš viso):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Atsiųsta (iš viso):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Reitingas" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Ats./išs. indeksas:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Saugus identifikatorius:" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "Eilėje" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Reitingas eilėje:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Slapyvardis" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "Įrašykite vardą, kurį matys kiti su jumis užmezgę ryšį naudotojai." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "" "Kiek sekundžių uždelsti prieš parodant patarimą užvedus pelę ant objekto." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Naudotojo aplinkos kalba." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Paleidus programą ieškoti naujesnės versijos" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Įjungus šią parinktį aMule kiekieną kartą paleidus programą patikrins ar " "nėra naujesnės programos versijos" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Paleidus nuleisti langą" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "" "Jei ši parinktis įjungta, paleidus programą aMule langas bus iškart " "nuleistas žemyn." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Klausti prieš baigiant darbą" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Įjungti sistemos dėklo ženkliuką" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Ši parinktis įjungia ar išjungia sistemos dėklo ženkliuką." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Sumažinti į sisteminio dėklo ženkliuką" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Jei ši parinktis įungta, nuleidus aMule langą, programa bus sumažinta į " "sistemos dėklo ženkliuką, o ne į programų juostą." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Naršyklės parintys" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Naršyti" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Jei įmanoma, atverti naują kortelę" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Įjungus šią parinktį, stengtis nurodytą puslapį atverti naujoje naršyklės " "kortelėje, o ne pagrindiniame naršyklės lange" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Vaizdo grotuvas" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Išsiuntimas" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Vieno ryšio sparta" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Tai standartinis eD2k prievadas. Jis negali būti išjungtas." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Pradėjus darbą prisijungti automatiškai" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Nutrūkus ryšiui prisijungti vėl" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Pašalinti neatsiliepiantį serverį po" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "bandymų" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Automatiškai atnaujinti serverių sąrašą paleidus programą" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Sąrašas" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Atnaujinti serverių sąrašą prisijungus prie serverio" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Atnaujinti serverių sąrašą prisijungus klientui" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Naudoti prioritetų sistemą" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Jungiantis naudoti išmoningą žemo ID tikrinimą" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Saugus jungimasis" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Automatiškai jungtis tik prie serverių iš pastovaus sąrašo" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Naudotojo įdėtiems serveriams nurodyti aukštą prioritetą" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Failus į atsiuntimo eilę įdėti pristabdytos būsenos" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Į atsiuntimo eilę įdedamiems failams nurodyti automatinį prioritetą" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Visų pirma bandyti atsiųsti pirmą ir paskutinę failo dalį" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Siųsti tos pačios kategorijos failą" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Naujiems failams paskirti vietą diske" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Naujiems failams iš anksto paskirti vietą diske visam failui. Taip bus " "sumažinta fragmentacija" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Įjunkite, jei norite, kad aMule tikrintų laisvą vietą diske" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Įrašykite kiek diske palikti laisvos vietos." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Įrašyti 10 šaltinių retiems failams (mažiau nei 20 šaltinių)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Išsiuntimai" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Naujiems dalinamiems failams nurodyti automatinį prioritetą" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(spragtelėję dešiniu klavišu dalinsitės ir gilesniais paaplankiais)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Dalintis slepiamais failais" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafikai" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Atnaujinimo dažnis: 5 s" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Vidurkių grafiko dydis: 100 min." #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Ryšių grafiko skalė: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Fonas" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Rėmeliai" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Dabartinė atsiuntimo sparta" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Dabartinis atsiuntimo vidurkis" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Seanso atsiuntimo vidurkis" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Dabartinė išsiuntimo sparta" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Dabartinis išsiuntimo vidurkis" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Seanso išsiuntimo vidurkis" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Aktyvūs ryšiai" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Sistemos dėklo spartos indikatorius" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Dabartiniai Kademlia mazgai" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Kademlia mazgų dabartinis vidurkis" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Kademlia mazgų seanso vidurkis" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Nurodykite spalvą" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Rodomų klientų versijų skaičius (0 – neribojama)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "DĖMESIO!!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Per 5 s užmegzti ne daugiau ryšių, nei nurodyta" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Failo buferio dydis: 240000 baitai" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Išsiuntimo eilė: 5000 klientų" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Serverio ryšio atnaujinimo intervalas: išjungta" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Rodyti papildomą informaciją kategorijų kortelėse" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Rodyti siuntimo spartą failo pavadinime" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Rodyti siuntimo spartą failo pavadinime" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Mygtukus išdėstyti vertikaliai" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Plokščia" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Erdvinė" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" "Įjungus šią parinktį atsiuntimo eilėje esantys failai bus rūšiuojami " "automatiškai" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Išorinio ryšio parinktys" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Priimti išorinius ryšius" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Įrašykite išorinių ryšių besiklausančio įrenginio IP adresą a.b.c.d forma. " "Tuščias laukelis arba adresas 0.0.0.0 reiškia bet kokį įrenginį." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "EC prievade įjungti UPnP prievadų perdavimą" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Slaptažodis" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Žiniatinklio serverio parinktys" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "www šablonas" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Pilnos prieigos slaptažodis" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Įjungti nepilnos prieigos naudotoją" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Nepilnos prieigos slaptažodis" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Puslapio atnaujinimo periodas (sekundėmis)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Įjungti Gzip suspaudimą" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "Gerai" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Patvirtinti naujai nurodytas parinktis." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Atšaukti bet kokius pakeitimus." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Pavadinimas:" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Komentaras:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Atsiųstų failų aplankas:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Keisti naujai priskirtų failų prioritetą:" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "Nekeisti" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Nurodykite dabartinės kategorijos spalvą:" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Perkrauti" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Išvalyti įvykių žurnalą." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Paspaudę šį mygtuką atnaujinsite serverių sąrašą iš URL..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Serverių sąrašas" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Įrašykite server.met failo URL ir paspaudę mygtuką kairėje atnaujinsite " "serverių sąrašą." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Įdėti serverį rankiniu būdu: pavadinimas" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Įrašykite serverio pavadinimą" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:prievadas" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Įrašykite serverio IP adresą naudodami a.b.c.d formą." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Įrašykite serverio prievadą." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Įdėti serverį (prieš tai užpildykite laukelius kairėje)..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule žurnalas" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Serverio informacija" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2K informacija" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kademlia informacija" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Spragtelėję šį mygtuką atnaujinsite mazgų sąrašą iš URL..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Mazgai (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Įrašykite nodes.dat failo URL ir paspaudę mygtuką kairėje atnaujinsite mazgų " "sąrašą." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Mazgų statistika" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Inicializavimas" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Naujas mazgas" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Prievadas:" #: src/muuli_wdr.cpp:2763 #, fuzzy msgid "Bootstrap from known clients" msgstr "" "Inicializuoti iš \n" "žinomų klientų" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Atjungti Kademlia" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Naudoti saugų kliento atpažinimą" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Rekomenduojama įjungti šią parinktį. Jei išjungsite, negausite kreditų." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Protokolo slėpimas" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Įjungti protokolo slėpimą" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Ši parinktis įjungia protokolo slėpimą. Tuomet aMule priiminės slepiamus " "ryšius iš kitų klientų." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Slėpti išeinančius ryšius" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Įjungus šią parinktį aMule, jungdamasi prie kitų klientų ar serverių, slėps " "išeinančius ryšius." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Priimti tik slepiamus ryšius" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Įjungus šią parinktį aMule priims tik slepiamus ryšius. Šaltinių bus rasta " "mažiau, bet visas srautas bus slepiamas" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Visi" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Niekas" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Nurodykite kas gali pamatyti dalinamų failų sąrašą." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP filtravimas" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtruoti klientus" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Įjungti klientų IP adresų filtravimą, aprašytą ~/.aMule/ipfilter.dat faile." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtruoti serverius" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Įjungti serverių IP adresų filtravimą, aprašytą ~/.aMule/ipfilter.dat faile." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Atnaujinti sąrašą" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "Atnaujinti IP adresų sąrašą iš ~/.aMule/ipfilter.dat failo" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Atnaujinti dabar" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Automatiškai įkelti IP filtrą paleidus programą" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Filtravimo lygmuo:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Visuomet filtruoti LAN IP adresus" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Paranojiškai elgtis su neatitikusiais IP adresais" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Atmesti paketą, jei kliento IP adresas skiriasi nuo paketo šaltinio IP " "adreso. Naudoti atsargiai." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Jei įjungtas, naudoti ipfilter.dat failą visoje sistemoje" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Jei nėra vietinio ipilter.dat failo, naudoti ipfilter.dat visoje sistemoje." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Įjungti keičiamą parašą" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Įjungus šią parinktį bus įrašomas keičiamo parašo failas, kurį galite " "naudoti kitoje programoje parašų kūrimui ir pan." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Atnaujinimo dažnis (sekundėmis):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Keičiamo parašo atnaujinimo dažnis sekundėmis." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "Nurodykite aplanką, kuriame yra keičiamo parašo failas." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtruoti gaunamas žinutes (išskyrus dabartinį pokalbį):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtruoti visas žinutes" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtruoti žinutes nuo naudotojų, nesančių draugų sąraše" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtruoti žinutes nuo nežinomų klientų" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtruoti žinutes turinčias tekstą („,“ naudokite kaip skirtuką):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "Įrašykite žodžius, kurių aMule ieškos žinutės tekste ir filtruos žinutę" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Komentarai" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtruoti komentarus, turinčius (atskirkite kableliu):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Automatiškai prijungti serverį be atstovaujančio serverio" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Įjungti autentifikavimą" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Įjungti ar išjungti naudotojo vardo ir slaptažodžio autentifikavimą" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Naudotojo vardas prisijungimui prie atstovaujančio serverio" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Slaptažodis:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Slaptažodis prisijungimui prie atstovaujančio serverio" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Įjungti atstovaujančius serverius" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Įjungti ar išjungti atstovaujančius serverius" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Serverio tipas:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Serverio mazgas:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Atstovaujančio serverio mazgo pavadinimas" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Serverio prievadas:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Atstovaujančio serverio prievadas" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Prijungti prie:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Prisijungti prie nutolusios aMule" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Naudotojo vardas" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Įsiminti parinktis" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Įjungti išsamų klaidų taisymo žurnalą." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Atverti failą" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Žinučių kategorijos:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Laukiama..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Įdėti failus" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Pažymėtas bandyti iš naujo" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Pašalinti pažymėtas" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Aktyvūs išsiuntimai:" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Slėpti dalinamus failus" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Parinkite filtrą" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Aktyvūs išsiuntimai" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Rodyti klientus" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Atnaujinti sąrašą" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Atnaujinti dalinamų failų sąrašą" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Siųsti" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Išsiųsti įrašytą žinutę." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Baigti pokalbį ir užverti pokalbio kortelę." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Prisijungti prie bet kurio serverio ir/ar Kademlia tinklo" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Dalinami failai" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Išjungta [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "baitas" msgstr[1] "baitai" msgstr[2] "baitų" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "baitas/s" msgstr[1] "baitai/s" msgstr[2] "baitų/s" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "s" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "min." #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "val." #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "dienų" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "Viskas" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "Visa kita" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Neužbaigtos" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Sustabdyta" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Vaizdo failai" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Supakuoti failai" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Teksto failai" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Aktyvios" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Įkeliama %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Skaitomas laikinų failų aplankas" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Laukiama pradinės informacijos iš atsiunčiamos informacijos failo" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Kuriamas paskirties failas" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Įkeliami duomenys iš seno atsiuntimo failo (%u iš %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Duomenų blokas įrašomas į naują atsiuntimo failą (%u iš %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Laukiama atsiuntimo failo šaltinių informacijos" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Įkeliamas atsiuntimo failas ir įrašomas naujas dalinis failas" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Įkelti dalių failus" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Būklė" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Maišos f-ja" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (diskas: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Įrašykite aplanką, kuriame ieškoti dalinai atsiųstų failų! Paaplankiai bus " "irgi apieškoti." #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "Ar norite, kad sėmingai įkeltų failų pradiniai failai būtų pašalinti?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Pašalinti pradinius failus?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "KLAIDA: nepavyko sukurti dalių failo" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Bandoma įkelti met failo atsarginę kopiją iš %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "KLAIDA: nepavyko atverti part.met failo: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "KLAIDA: part.met failo dydis yra 0: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "KLAIDA: %s (%s) yra sugadintas (blogas žymių skaičius), failo įkelti " "nepavyks." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "KLAIDA: %s (%s) yra sugadintas (blogas žymių skaičius), failo įkelti " "nepavyks." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Bandoma atstatyti failo informaciją..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Atstatomas failas be pavadinimo. Atstačius jis bus pavadintas RecoveredFile." "dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "Atstatyta visa įmanoma failo informacija – bandoma naudoti failą..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Nepavyko atstatyti failo informacijos :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Nepavyko atverti %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "DĖMESIO: %s gali būti sugadintas (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "KLAIDA: įrašant dalių failą įvyko klaida: %s (%s ==> %s)" #: src/PartFile.cpp:904 #, fuzzy msgid "IO failure while saving partfile: " msgstr "KLAIDA: įrašant dalių failą įvyko klaida: %s (%s ==> %s)" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Nepavyko apskaičiuoti „%s“ dydžio – naudojamas %s failas." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "%s failo dydis kažkodėl yra 0 – naudojamas %s failas." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Failui %s nepavyko įrašyti part.met.seeds failo" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Įrašytas %i platinantis šaltinis dalių failui %s (%s)" msgstr[1] "Įrašyti %i platinantys šaltiniai dalių failui %s (%s)" msgstr[2] "Įrašyta %i platinančių šaltinių dalių failui %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Įrašytas %i platinantis šaltinis dalių failui %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" "Nuskaitant dalių failo platinančių šaltinių failą įvyko klaida (%s – %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Aptikta klaidinga dalis (%d) %d dalies faile %s – failo rezultatų maišos f-" "ja |%s| failo maišos f-ja |%s|" msgstr[1] "" "Aptikta klaidinga dalis (%d) %d dalių faile %s – failo rezultatų maišos f-ja " "|%s| failo maišos f-ja |%s|" msgstr[2] "" "Aptikta klaidinga dalis (%d) %d dalių faile %s – failo rezultatų maišos f-ja " "|%s| failo maišos f-ja |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Aptikta baigta dalis (%i) %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Baigtas maišos f-jos reikšmės perskaičiavimas %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Baigiant siųsti %s įvyko netikėta klaida. Failas pristabdytas" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Atsiųsta: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Šalinamas failas: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "DĖMESIO: atsiųstai daliai nepavyko apskaičiuoti maišos funkcijos – %s maišos " "reikšmės nebaigtos" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "DĖMESIO: atsiųstai daliai nepavyko apskaičiuoti maišos funkcijos – %s maišos " "reikšmės nebaigtos. Tokių dalykų neturi būti" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "Dėmesio: diske nepakanka laisvos vietos! Failas pristabdomas: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Atsiųsta sugadinta %i dalis: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "" "Klaidų taisymo įrankis: atstatyta sugadinta dalis %i %s –> išgelbėta %s baitų" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Paskiriama vieta" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Nepakanka laisvos vietos" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Atsiųsta" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "KLAIDA: nepavyko atverti dalių failo „%s“" #: src/Preferences.cpp:632 msgid "System default" msgstr "Numatyta" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albanų" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabų" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "Estų" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Baskų" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgarų" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Katalonų" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Kinų (supaprastinta)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Kinų (tradicinė)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Kroatų" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Čekų" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Danų" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Olandų" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Anglų (DB)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estų" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Suomių" #: src/Preferences.cpp:648 msgid "French" msgstr "Prancūzų" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galisijos" #: src/Preferences.cpp:650 msgid "German" msgstr "Vokiečių" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Graikų" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Žydų" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Vengrų" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italų" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italų (Šveicarijos)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japonų" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Korėjiečių" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lietuvių" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norvegų (naujoji norvegų)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Lenkų" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugalų" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugalų (Brazilijos)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Albanų" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Rusų" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Slovėnų" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Ispanų" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Švedų" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turkų" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Kalba" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Nėra" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "TCP prievadas negali būti didesnis nei 65532, nes serverio UDP prievadas yra " "TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Bus naudojamas numatytas prievadas (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Kanalas" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Aplankai" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Serveriai" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Failai" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Saugumas" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Atstovaujantis serveris" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Nutolęs valdymas" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Keičiamas parašas" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Įvykiai" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Taisymas" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Nekeiskite šių parinkčių, nebent gerai žinote \n" "ką darote. Neteisingai pakeitę parinktis galite \n" "gerokai pasibloginti savo siuntimo spartą.\n" "\n" "aMule puikiai veikia nieko nepakeitus šiame lange." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Atstovaujančio serverio, prie kurio jungsitės, tipas" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "Kad įsigaliotų šie pakeitimai, aMule reikia paleisti iš naujo:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "– pakeistas TCP prievadas.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "– pakeistas UDP prievadas.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Išorinis ryšys nutrauktas." #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Naujas išorinis ryšys priimtas" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Išorinis ryšys nutrauktas." #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Protokolo slėpimas" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Įjungėte išorinius ryšius, bet parinktyse nenurodėte slaptažodžio.\n" "Kol nenurodysite slaptažodžio, išoriniai ryšiai nebus įjungti." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "– kalba pakeista.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "– laikinų failų aplankas pakeistas.\n" #: src/PrefsUnifiedDlg.cpp:657 #, fuzzy msgid "- ED2K network enabled.\n" msgstr "Visi tinklai išjungti." #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Tiek eD2k, tiek Kademlia tinklai yra išjungti.\n" "Norėdami prisijungti įjunkite bent vieną iš šių tinklų." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Nepavyks prisijungti prie Kademlia tinklo, nes išjungtas UDP prievadas.\n" "Arba įjunkite UDP prievadą, arba išjunkite Kademlia tinklą." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Būtina paleisti aMule iš naujo.\n" "Jei dabar pat neperleisite aMule, nesiskųskite jei kas nors bus ne taip.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Automatiškai atnaujinamų serverių sąrašas tuščias.\n" "Įrašykite bent vieną server.met failo URL.\n" "Norėdami įrašyti URL, paspauskite mygtuką „Sąrašas“." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Laikini failai" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Atsiųsti failai" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Keičiami parašai" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Parinkite aplanką %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Parinkite video grotuvą" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Parinkite naršyklę" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Vykdomas failas %s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Keisti serverių sąrašą" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Įrašykite server.met failų URL.\n" "Vieną URL vienoje eilutėje." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Atnaujinimo intervalas: %d s" msgstr[1] "Atnaujinimo intervalas: %d s" msgstr[2] "Atnaujinimo intervalas: %d s" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Vidurkių grafiko trukmė: %d min." msgstr[1] "Vidurkių grafiko trukmė: %d min." msgstr[2] "Vidurkių grafiko trukmė: %d min." #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Ryšių grafiko mastelis: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Failų buferio dydis: %d baitas" msgstr[1] "Failų buferio dydis: %d baitai" msgstr[2] "Failų buferio dydis: %d baitų" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Išsiuntimo eilės dydis: %d klientas" msgstr[1] "Išsiuntimo eilės dydis: %d klientai" msgstr[2] "Išsiuntimo eilės dydis: %d klientų" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Serverio ryšio atnaujinimo intervalas: %d min." msgstr[1] "Serverio ryšio atnaujinimo intervalas: %d min." msgstr[2] "Serverio ryšio atnaujinimo intervalas: %d min." #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Serverio ryšio atnaujinimo intervalas: išjungta" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "Išjungti" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "Įvykus „%s“ įvykiui įvykdyti komandą" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Įjungti komandos vykdymą branduolyje" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Branduolio komanda:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Įjungti komandos vykdymą grafinėje aplinkoje" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Grafinės aplinkos komanda:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Šie kintamieji bus pakeisti:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "Apatinė dydžio riba turi būti mažesnė už viršutinę dydžio ribą. Įvestos " "viršutinės ribos nebus paisoma." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Dėmesio" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Pagrindinė" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Kademlia paieška negalima, jei nepaleista Kademlia tarnyba" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "eD2k paieška negalima, jei eD2k tarnyba neužmezgė ryšio" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Vykdant Kademlia paiešką įvyko netikėta klaida: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "Failo ID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Failas" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Atsiunčiamą failą įdėti į kategoriją" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Šiam failui įdėti papildomus URL" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Ieškoti panašių failų (eD2k, vietiniame serveryje)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Pažymėti failą kaip jau žinomą" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Kopijuoti eD2k nuorodą į talpyklę" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "Atšaukti" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Nepavyko prisijungti nei prie vieno iš slepiamų serverių sąraše. Bandoma dar " "kartą neslepiant." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Nepavyko prisijungti nei prie vieno iš serverių sąraše. Bandoma dar kartą." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "eD2k tinklas išjungtas parinktyse, nebus jungiamasi." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "Serverių sąraše nerasta tinkamų serverių įrašų" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Prisijungta prie %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Prisijungta: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Bandant prisijungti įvyko kritinė klaida. Gali būti, kad nėra interneto ryšio" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Ryšys nutrūko %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) neatsako, galbūt išjungtas." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) pilnas." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Po %d sekundės bus bandoma prisijungti prie serverio automatiškai" msgstr[1] "Po %d sekundžių bus bandoma prisijungti prie serverio automatiškai" msgstr[2] "Po %d sekundžių bus bandoma prisijungti prie serverio automatiškai" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Ryšys nutrūko" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Prisijungti prie %s (%s:%i) nepavyko." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "KLAIDA: neteisingas lizdas (socket) baigiantis laiko limitui" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Baigėsi bandymo susijungti laikas %s (%s:%i)." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Įkeliamas server.met failas: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Nepavyko aptikti server.met failo!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Nepavyko įkelti server.met failo %s, aptikto failo formatas nesuprantamas." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Nepavyko atverti failo server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Failas server.met sugadintas, aptiktas klaidingas versijos įrašas: 0x%x, " "dydis %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "server.met faile rastas %i serveris" msgstr[1] "server.met faile rasti %i serveriai" msgstr[2] "server.met faile rasta %i serverių" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d serveris įdėtas" msgstr[1] "%d serveriai įdėti" msgstr[2] "%d serverių įdėta" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "Nuskaitant known.met failą įvyko IO klaida: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Serveris neįdėtas: [%s:%d] nurodytas klaidingas prievadas." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Serveris neįdėtas: [%s:%d] IP adresas klaidingas arba nepraėjo filtro." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "Serveris neįdėtas: [%s:%d] toks serveris jau yra." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Serveris įdėtas: [%s:%d] pavadinimas %s." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Prie serverio, kurį norite pašalinti, esate šiuo metu prisijungę. Norėdami " "pašalinti serverį, iš pradžių turite atsijungti." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Nepavyko atverti %s" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Nepavyko įrašyti server.met failo!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Klaidingas URL" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "Sėkmingai atsiųstas serverių sąrašas iš %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Faile „addresses.dat“ nerasta serverių sąrašo įrašų. Norėdami automatiškai " "atnaujinti sąrašą į šį failą įkelkite teisingą serverių sąrašo adresą." #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Atsiųsti serverių sąrašą iš %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "DĖMESIO: automatiškam serverių sąrašo atnaujinimui pateiktas neteisingas " "URL: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "Faile addresses.dat nerasta nei vieno teisingo server.met failo automatinio " "atsiuntimo URL" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Nepavyko iš %s atsiųsti serverių sąrašo" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Vietinis serveris filtruojamas IP filtro, jungiamasi prie kito serverio!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Serverio pavadinimas" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Adresas" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Prievadas" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Aprašymas" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping trukmė" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Naudotojų skaičius" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Statiškas" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versija" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Prie serverio, kurį norite pašalinti, esate šiuo metu prisijungę. Norėdami " "pašalinti serverį, iš pradžių turite atsijungti. Serveris kol kas " "nepašalintas." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(pavadinimas nežinomas)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Ar tikrai norite pašalinti šį statišką serverį %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Serveriai (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Serveris" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Prisijungti prie serverio" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Pažymėti, kad serveris statiškas" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Pažymėti, kad serveris nestatiškas" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Pažymėti, kad serveriai statiški" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Pažymėti, kad serveriai nestatiški" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Pašalinti serverį" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Pašalinti serverius" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Pašalinti visus serverius" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Kopijuoti eD2k nuorodas į talpyklę" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Prisijungti prie serverio iš naujo" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Ar tikrai norite pašalinti visus serverius?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Ar tikrai norite pašalinti pažymėtą serverį?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Ar tikrai norite pašalinti pažymėtus serverius?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "KLAIDA: %s (%s) – %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "DĖMESIO: %s (%s) – %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Naujas kliento ID yra %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "DĖMESIO: gavote žemą ID!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tLabiausiai tikėtina, kad esate už ugniasienės ar maršrutizatoriaus." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "" "\tNorėdami sužinoti daugiau informacijos apsilankykite http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Gauta nežinomo serverio informacija per trumpa!" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Aptiktas %d naujas serveris" msgstr[1] "Aptikti %d nauji serveriai" msgstr[2] "Aptikta %d naujų serverių" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Serverių sąrašo įrašymas baigtas." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Serveris atmetė paskutinę komandą" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Iš serverio %s gautas klaidingas paketas" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Apdorojant iš serverio %s gautą paketą įvyko nežinoma klaida" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Prisijungiant prie %s nepavyko sukurti DNS ryšio gijos" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "Serverio IP %s (%s) nepraėjo filtro. Ryšys nebus užmezgamas." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "naudojamas protokolo slėpimas." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Prisijungta prie %s (%s – %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Nepavyko išsiaiškinti serverio %s DNS. Ryšys nebus užmezgamas!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Serveris neįdėtas: nenurodytas IP adresas arba mazgo pavadinimas." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Serveris neįdėtas: nurodytas neteisingas serverio prievadas." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "eD2k būsena:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kademlia būsena:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "Vykdoma %s sistemoje" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Dirbama" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Būsena:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Ryšio būklė:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "Ryšio būklė:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Ugniasienės būsena:" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Nėra draugo" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "Prisijungta prie draugo" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "Prisijungta prie draugo" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "Rasti šaltiniai:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 #, fuzzy msgid "Indexed notes:" msgstr "Indekso failas nerastas: " #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Naudotojų vidurkis:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Failų vidurkis:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Nepaleista" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Aptiktas %i dalinamas failas" msgstr[1] "Aptikti %i dalinami failai" msgstr[2] "Aptikta %i dalinamų failų" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Aptiktas %i žinomas dalinamas failai, %i nežinomų" msgstr[1] "Aptikti %i žinomi dalinami failai, %i nežinomų" msgstr[2] "Aptikta %i žinomų dalinamų failų, %i nežinomų" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "KLAIDA: bandoma dalintis %s" #: src/SharedFileList.cpp:410 #, fuzzy, c-format msgid "Shared directory not found, skipping: %s" msgstr "serveris nerastas: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Naudotojo vardas" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Atsiuntimo sparta" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Išsiuntimo sparta" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Pasiekiamos dalys:" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Išsiuntimo būsena" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Atsiuntimo būsena" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Failo pavadinimas" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Dalinami failai" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Prašymai" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Patenkinti prašymai" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Persiųsta duomenų" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Dalinimo santykis" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Gautos dalys" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Pilni šaltiniai" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Kelias" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Įdėti komentarą/įvertinimą" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Keisti komentarą/įvertinimą" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Pervadinti" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Failus iš kolekcijos įkelti į siuntimo sąrašą" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Kopijuoti magneto &URI į talpyklę" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Kopijuoti eD2k nuorodą į talpyklę (&šaltinį)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Kopijuoti eD2k nuorodą į talpyklę (šaltinį su ši&fravimo parinktimis)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Kopijuoti eD2k nuorodą į talpyklę (&kompiuterio pavadinimą)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Kopijuoti eD2k nuorodą į talpyklę (kompiuterio pavadinimą su šif&ravimo " "parinktimis)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Kopijuoti eD2k nuorodą į talpyklę (&klaidų taisymo informaciją)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Kopijuoti eD2k nuorodą į talpyklę (&klaidų taisymo informaciją)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Norėdami sukurti šaltinio nuorodą, privalote turėti aukštą ID" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Dalinami failai (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Dalių failas]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Failo pavadinimas" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Išsiųsta duomenų (per seansą (iš viso)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Tarnybinis srautas iš viso (paketai): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Tarnybinis srautas failų prašymams (paketai): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Tarnybinis srautas šaltinių apsikeitimui (paketai):%s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Tarnybinis srautas serveriams (paketai): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Kademlia tarnybinis srautas (paketai): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Šifravimo tarnybinis srautas (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Aktyvūs išsiuntimai: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Laukiantys išsiuntimai: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Iš viso sėkmingų išsiuntimų: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Iš viso nepavykusių išsiuntimų: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Vidutiniškai išsiuntimas trunka: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Atsiųsta duomenų (per seansą (iš viso)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Rasta šaltinių: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Aktyvūs atsiuntimai (dalys): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Seanso Išs./Ats. santykis (iš viso): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Vidutinė atsiuntimo sparta (seanso): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Vidutinė išsiuntimo sparta (seanso): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Didžiausia atsiuntimo sparta (seanso): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Didžiausia išsiuntimo sparta (seanso): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Ryšis pakartotinai užmegztas: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Pirmą kartą siųsta prieš: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Prisijungta prie serverio prieš: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Aktyvių ryšių skaičius (apytikriai): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Didžiausias leistinas ryšių skaičius pasiektas: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Vidutinis ryšių skaičius (apytikriai): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Daugiausia ryšių (apytikriai): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Naudotojai" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "Dydis nežinomas" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "Filtruota" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "Užblokuota" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Iš viso: %i atpažinta: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Veikiantys serveriai: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Neveikiantys serveriai: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Iš viso: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Pašalinti serveriai: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Filtruoti serveriai: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Naudotojų kiekis veikiančiuose serveriuose: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Failų kiekis veikiančiuose serveriuose: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Iš viso naudotojų: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Iš viso failų: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Serverių užimtumas: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Dalinamų failų kiekis: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Bendras dalinamų failų dydis: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Vidutinis failo dydis: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Operacinė sistema" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Negauta" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktyvūs ryšiai (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Nėra" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Niekada" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "" "Komanda „%s“, kurios pid „%d“, baigė darbą pranešdama būsenos kodą „%d“." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Įvykdyti ir baigti darbą." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Neteisingas IP formatas. Naudokite xxx.xxx.xxx.xxx:xxxx formą\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Šiai komandai reikia kintamojo. Tinkami kintamieji: „all“ (viskas), failo " "pavadinimas arba skaičius.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Apdorojama pagal maišos f-jos reikšmę: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Apdorojama pagal failo pavadinimą: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Šiai komandai reikia kintamojo. Tinkami kintamieji: failo maišos f-jos " "reikšmė.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Neteisingas skaičius\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Neteisinga maišos funkcija (turi būti 32 simbolių dydžio)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Įrašę „%s“ gausite išsamesnę pagalbą.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Atsiuntimai (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Vykdant užduotį įvyko nežinoma klaida." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Užduotis įvykdyta sėkmingai." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Nepavyko įvykdyti prašymo. Gauta klaida: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "IP klientų filtras %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "Išjungta" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "Įjungta" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "IP serverių filtras %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Dabartinis IP filtro lygmuo %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Spartos apribojimai: išs: %u kB/s, ats: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Prisijungta prie %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Jungiamasi" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "ugniasienė" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "gerai" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Atsiuntimai:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Išsiuntimai:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Klientai eilėje:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Iš viso šaltinių:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Paieškos rezultatų kiekis: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Gautas nelauktas atsakymas iš serverio, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Rodyti trumpą būklės informaciją." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" "Rodyti ryšio būklę, dabartinę išsiuntimo ir atsiuntimo spartą ir pan.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Rodyti išsamų statistikos medį." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Šiai komandai gali būti duotas kintamasis – skaičius nuo 0 iki 255. Šis \n" "kintamasis nurodo kiek klientų programinės įrangos skirtingų versijų " "rodyti. \n" "Jei kintamojo nėra arba jo reikšmė 0, bus rodomos visos versijos " "(neribojama).\n" "Pavyzdžiui: „statistics 5“ rodys tik 5 populiariausias kiekvieno tipo " "kliento versijas.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Išjungti aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Išjungti nutolusį programos branduolį (amule/amuled).\n" "Tekstinis klientas taipogi bus išjungtas, nes be branduolio jis neturi " "jokios prasmės.\n" #: src/TextClient.cpp:861 #, fuzzy msgid "Reload the given object." msgstr "Atnaujinti objektą." #: src/TextClient.cpp:862 #, fuzzy msgid "Reload shared files list." msgstr "Atnaujinti dalinamų failų sąrašą." #: src/TextClient.cpp:864 #, fuzzy msgid "Reload IP filtering table." msgstr "Atnaujinti IP filtrų sąrašą iš failo." #: src/TextClient.cpp:865 #, fuzzy msgid "Reload current IP filtering table." msgstr "Nurodyti filtravimo lygmenį." #: src/TextClient.cpp:866 #, fuzzy msgid "Update IP filtering table from URL." msgstr "Atnaujinti IP filtrų sąrašą iš failo." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Prisijungti prie tinklo." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Bus prisijungta prie visų tinklų, kurie įjungti parinktyse.\n" "Galite pasirinktinai nurodyti serverio IP adresą ir prievadą naudodami " "formą\n" "IP:prievadas. Bus prisijungta tik prie nurodyto serverio. IP turi būti " "taškais\n" "atskirtais dešimtainiais skaičiais užrašytas IPv4 adresas arba DNS srities " "pavadinimas." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Prisijungti tik prie eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Prisijungti tik prie Kademlia." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Atsijungti nuo tinklo." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Atsijungti nuo visų tinklų, prie kurių šiuo metu prisijungta.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Atsijungti tik nuo eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Atsijungti tik nuo Kademlia." #: src/TextClient.cpp:879 #, fuzzy msgid "Add an eD2k or magnet link to core." msgstr "Įdėti eD2k arba magneto nuorodą į branduolį." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Pridedama eD2k nuoroda gali būti:\n" "*) failo nuoroda (ed2k://|file|...); ji bus įdėta į atsiuntimų eilę;\n" "*) serverio nuoroda (ed2k://|server|...); ji bus įdėta į serverių sąrašą;\n" "*) serverių sąrašo nuoroda; šiuo atveju visi nuorodos sąrašo serveriai bus " "įdėti į serverių sąrašą.\n" "\n" "Magneto nuorodoje turi būti eD2k maišos f-jos reikšmė ir failo dydis.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Nurodyti parinkties reikšmę." #: src/TextClient.cpp:885 #, fuzzy msgid "Set IP filtering preferences." msgstr "Nurodyti IP filtro parinktis." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Įjungti klientų ir serverių IP filtravimą." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Išjungti klientų ir serverių IP filtravimą." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Įj./išj. klientų IP filtravimą." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Įjungti klientų IP filtravimą." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Išjungti klientų IP filtravimą." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Įj./išj. serverių IP filtravimą." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Įjungti serverių IP filtravimą." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Išjungti serverių IP filtravimą." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Nurodyti filtravimo lygmenį." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Filtravimo lygmenys yra skaičiai nuo 0 iki 255.\n" "Numatytas lygmuo 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Nurodyti spartos apribojimus." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "Šioms komandoms reikšmės nurodomos kilobaitais per sekundę.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Nurodyti išsiuntimo spartos apribojimą." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "Šioms komandoms reikšmės nurodomos kilobaitais per sekundę.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Nurodyti atsiuntimo spartos apribojimą." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Pateikti parinkties reikšmę." #: src/TextClient.cpp:907 #, fuzzy msgid "Get IP filtering preferences." msgstr "Pateikti IP filtro parinktis." #: src/TextClient.cpp:908 #, fuzzy msgid "Get IP filtering state for both clients and servers." msgstr "Pateikti klientų ir serverių IP filtro būseną." #: src/TextClient.cpp:909 #, fuzzy msgid "Get IP filtering state for clients only." msgstr "Pateikti tik klientų IP filtro būseną." #: src/TextClient.cpp:910 #, fuzzy msgid "Get IP filtering state for servers only." msgstr "Pateikti tik serverių IP filtro būseną." #: src/TextClient.cpp:911 #, fuzzy msgid "Get IP filtering level." msgstr "Nurodyti filtravimo lygmenį." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Pateikti spartos apribojimus." #: src/TextClient.cpp:915 #, fuzzy msgid "Execute a search." msgstr "Ieškoti Kademlia tinkle" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Paieškos tipas turi būti vienas iš:\n" " Global\n" " Local\n" " Kad\n" "Pavyzdžiui: „search kad failas“ ieškos „failo“ Kademlia tinkle.\n" #: src/TextClient.cpp:917 #, fuzzy msgid "Execute a global search." msgstr "Ieškoti globaliai." #: src/TextClient.cpp:918 #, fuzzy msgid "Execute a local search" msgstr "Ieškoti vietiniame serveryje" #: src/TextClient.cpp:919 #, fuzzy msgid "Execute a kad search" msgstr "Ieškoti Kademlia tinkle" #: src/TextClient.cpp:921 #, fuzzy msgid "Show the results of the last search." msgstr "Pateikti paskutinės paieškos rezultatus." #: src/TextClient.cpp:922 #, fuzzy msgid "Return the results of the previous search.\n" msgstr "Pateikti ankstesnės paieškos rezultatus.\n" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "Rodyti paieškos eigą." #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "Rodyti paieškos eigą.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Pradėti atsiųsti failą" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Nurodykite failo numerį ankstesnės paieškos rezultate.\n" "Pavyzdžiui: „atsisiųsti 12“ reikš atsisiųsti failą nr. 12 iš ankstesnės " "paieškos rezultato.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Pristabdyti atsiunčiamą failą." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Tęsti failo atsiuntimą." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Atšaukti failo atsiuntimą." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Nurodyti atsiuntimo prioritetą." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Nurodyti žemą, normalų, aukštą arba automatinį prioritetą.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Nurodyti žemą prioritetą." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Nurodyti normalų prioritetą." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Nurodyti aukštą prioritetą." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Nurodyti automatinį prioritetą." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Rodyti eiles/sąrašus." #: src/TextClient.cpp:952 #, fuzzy msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Rodyti išsiuntimo/atsiuntimo eilę, serverių sąrašą arba dalinamus failus.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Rodyti išsiuntimo eilę." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Rodyti atsiuntimo eilę." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Rodyti žurnalą." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Rodyti serverių sąrašą." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Atstatyti žurnalą." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Pasenusi komanda, geriau naudokite „%s“." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Ši komanda pasenusi ir ateityje gali būti pašalinta.\n" "Geriau naudokite „%s“.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMule tekstinis klientas" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "" "Senos klaidų taisymo maišos reikšmės keičiamos „%s“ keičiamos 64b „%s“." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "Dėmesio: failo pavadinimas %s yra klaidingas, todėl buvo pakeistas į %s." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "Dėmesio: failas %s jau yra, naujas failas pervadintas į %s." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Ar tikrai norite atšaukti ir pašalinti visus failus šioje kategorijoje?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Reikalaujama patvirtinimo" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Per daug užmegztų ryšių" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Visa kita" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Parinkite filtrą" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Įdėti kategoriją" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Keisti kategoriją" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Pašalinti kategoriją" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Nepavyko atverti failo %s, jis bus pašalintas iš dalinamų failų sąrašo." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Gautas prašymas nežinomo failo maišos f-jai: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Tęsiame failos siuntimą: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Nutraukiamas failo siuntimas: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Nepavyko įvykdyti komandos „%s„ įvykiui „%s“." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Atsiuntimas baigtas" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Pilnas kelias iki failo." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Failo pavadinimas (be kelio iki jo)." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "Failo eD2k maišos reikšmė." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Failo dydis baitais." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Visas atsiuntimo laikas." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Pradėtas naujas pokalbis" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Žinutės antraštė." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Trūksta laisvos vietos" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Disko skirsnis." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Baigiant siųsti failą įvyko klaida" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Apdorojamo failo numeris %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" "Pageidavote dalinių maišos rezultatų (naudojamų tik didesniems nei 9,5 MB " "failams)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s —> tokio failo nėra!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, aMule eD2k nuorodų kūrimo įrankis" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Sveikiname!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Įvesties parametrai" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Pateikti failo maišos funkciją" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Šiam failui įdėti papildomus URL" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Įrašykite failą, kuriam kursite eD2k nuorodą" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Įrašykite URL, kurį pridėsite prie eD2k nuorodos. Gale pridėjus „/“ " "aLinkCreator pridės dabartinio failo pavadinimą" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Pašalinti" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Kurti nuorodas su dalių maišos f-jomis" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "Nauji ir reti failai bus platinamos sparčiau, bet nuoroda taps ilgesnė" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4 failo maišos f-ja" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k failo maišos f-ja" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k nuoroda" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Įrašyti" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Kopijuoti į talpyklę" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Atverti failą ir apskaičiuoti jo eD2k nuorodą" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Kopijuoti apskaičiuotą eD2k nuorodą į talpyklę" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Įrašyti apskaičiuotą eD2k nuorodą į failą" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Apie aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Nurodykite failą, kuriam skaičiuosite eD2k nuorodą" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Kol kas nėra ką kopijuoti!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Nurodykite failą apskaičiuotai eD2k nuorodai" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Nepavyko atverti" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Įrašykite failo pavadinimą" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Kol kas nėra ką įrašyti!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, aMule eD2k nuorodų kūrimo įrankis\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmap paveiksliukai iš http://www.everaldo.com, http://www.icomania.com\n" "ir http://jimmac.musichall.cz/ikony.php3\n" "\n" "Platinama pagal GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Skaičiuojamos maišos f-jos reikšmės..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Atšaukta!" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Atlikta per %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Šis URL jau įdėtas!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Įrašykite URL" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Nepavyko atverti %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i d. %i val. %i min. %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02ud %02uv %02um %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uv %02um %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02um %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, aMule dabartinė statistika" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Didžiausia ats. sparta nuo wxCas paleidimo" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Pati didžiausia ats. sparta per praeitus wxCas seasus" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistema" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Sustabdyti automatinį atnaujinimą" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Įrašyti dabartinės statistikos grafiką" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Spausdinti dabartinės statistikos grafiką" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Parinktys" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Apie wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Paleisti automatinį atnaujinimą" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Automatinis atnaujinimas sustabdytas" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Automatinis atnaujinimas paleistas" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Įrašyti statistikos grafiką" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMule dabartinė statistika" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Spausdinant įvyko klaida.\n" "Gali būti, kad spausdintuvas nėra tinkamai suderintas." #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Spausdinama" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, keičiamo aMule parašo statistika\n" "\n" "(c) 2004 ThePolish \n" "\n" "Paremta Pedro de Oliveira CAS \n" "\n" "Platinama pagal GPL licenciją" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oi! aMule nepaleista..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule paleista" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule paleista, bet ryšys neužmegztas" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule užmezga ryšį..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oi! aMule būsena nežinoma..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " vykdoma " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " sustabdyta!" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " ryšys neužmegztas!" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " užmezga ryšį..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " elgiasi keistai, prašome patikrinti!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " užmezgė ryši su " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "išj." #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " įj." #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " su " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Išviso atsiųsta: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Išsiųsta: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Atsiųsta per šį seansą: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Atsiųsta: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Išsiųsta: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Dalinamasi: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " failas(ai), naudotojai eilėje: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Trukmė: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " – " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Vidutinis sistemos apkrovimas (per 1–5–15 min.): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Sistemos veikimo trukmė: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "amulesig.dat failo aplankas" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Įrašykite aplanką, kuriame yra amulesig.dat failas" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Atnaujinimo intervalas sekudėmis" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Kurti statistikos grafiką po kiekvieno atnaujinimo" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Įrašykite aplanką, kuriame bus kuriamas statistikos grafikas" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Periodiškai siųsti staitikos grafiką į FTP serverį" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP URL" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP kelias" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Įrašykite FTP serverio adresą" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "Įrašykite FTP serverio aplanką, į kurį kelsite statistikos grafiką" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Vartotojas" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Įrašykite vartotoją, kuriuo jungsitės prie FTP serverio" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Įrašykite vartotojo, kuriuo jungsitės prie FTP serverio, slaptažodį" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "FTP atnaujinimo intervalas minutėmis" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Patvirtinti" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Aplankas, kuriame yra parašo failas" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Aplankas, kuriame kuriamas statistikos grafikas" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Įkelti šabloną " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Žiniatinklio serverio HTTP prievadas" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "UPnP prievadus persiunti žiniatinklio serverio prievade" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP prievadas" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Naudoti gzip pakavimą" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Pilnos prieigos prie žiniatinklio serverio slaptažodis" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Svečio prieigos prie žiniatinklio serverio slaptažodis" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Įjungti svečio prieigą" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Išjungti svečio prieigą" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Įkelti/įrašyti žiniatinklio serverio parinktis iš/į nutolusio aMule" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMule parinkčių failas. NENAUDOKITE TIESIOGIAI!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Išjungti PHP interpretatorių (pasenusi)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Kiekvieną kartą perkompiliuoti PHP puslapius" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule www serveris" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "Priimtas žiniatinklio kliento ryšys\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Vykdant užduotį įvyko klaida: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Indekso failas nerastas: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Seansas baigėsi – prašoma prisijungti iš naujo\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Seansas pradėtas, priega gauta\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Seansas pradėtas, priega negauta\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Seansas nepradėtas – bus prašoma prisijungti\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Seansas sukurtas – prašoma prisijungti\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Apdorojamas prašymas [pradinis]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Tikrinamas slaptažodis\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Slaptažodžio maišos funkcija neteisinga\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Slaptažodis priimtas\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Neteisingas slaptažodis\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Neįrašėte slaptažodžio. Tuščias slaptažodis neleidžiamas.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Prašoma atsijungti\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Apdorojamas prašymas [persiųstas]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Dalių failas %s (%s) neturi platinančių šaltinių failo" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Dalių failo %s (%s) platinančių šaltinių failas yra tuščias" #, fuzzy #~ msgid "Download status" #~ msgstr "Atsiuntimo būsena" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Atnaujinimo intervalas: %d s" #~ msgstr[1] "Atnaujinimo intervalas: %d s" #~ msgstr[2] "Atnaujinimo intervalas: %d s" #~ msgid "Transferring" #~ msgstr "Siunčiama" #, fuzzy #~ msgid "QR: ???" #~ msgstr "Eilės reitingas: %u" #~ msgid "QR: %u" #~ msgstr "Eilės reitingas: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "Eilėje" #~ msgid "TODO - show progress of a search" #~ msgstr "Planuojama atlikti – rodyti paieškos progreso indikatorių" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Pradedamos kurti MD4 ir klaidų taisymo maišos reikšmės failui: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Pradedama kurti MD4 maišos failui: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Pradedama kurti klaidų taisymo maišos reikšmė failui: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "Dėmesio: sukūrus atsarginę kopiją nepavyko pašalinti pradinio failo %s" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "Dėmesio: nepavyko pašalinti %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (Eilės reitingas: %u)" #~ msgid "Rating (total):" #~ msgstr "Reitingas (bendras):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Išsiunčiant failus stengtis išsiųsti pilną failo dalį" #~ msgid "Networks window" #~ msgstr "Tinklo langas" #~ msgid "Searches window" #~ msgstr "Paieškos langas" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Atsiunčiama" #~ msgid "Shared files window" #~ msgstr "Dalinamų failų langas" #~ msgid "Messages window" #~ msgstr "Žinučių langas" #~ msgid "Statistics graph window" #~ msgstr "Statistikos grafikų langas" #~ msgid "Preferences settings window" #~ msgstr "Parinkčių langas" #~ msgid "Transfers" #~ msgstr "Siuntimas" #~ msgid "Files transfers window" #~ msgstr "Failų siuntimo langas" #~ msgid "Unban" #~ msgstr "Atblokuoti" #~ msgid "Show Uploads" #~ msgstr "Rodyti išsiunčiamus failus" #~ msgid "Show Queue" #~ msgstr "Rodyti laukiančius eilėje" #~ msgid "Select View" #~ msgstr "Parinkti vaizdą" #~ msgid "Client Software" #~ msgstr "Programinė įranga" #~ msgid "Waited" #~ msgstr "Laukė" #~ msgid "Upload Time" #~ msgstr "Išsiuntimo trukmė" #~ msgid "Upload/Download" #~ msgstr "Išsiųsta/Atsiųsta" #~ msgid "Remote Status" #~ msgstr "Būsena" #~ msgid "File Priority" #~ msgstr "Failo prioritetas" #~ msgid "Score" #~ msgstr "Įvertinimas" #~ msgid "Asked" #~ msgstr "Prašė" #~ msgid "Last Seen" #~ msgstr "Paskutinį kartą matytas" #~ msgid "Entered Queue" #~ msgstr "Atsistojo į eilę" #~ msgid "Transferred Up" #~ msgstr "Išsiųsta" #~ msgid "Transferred Down" #~ msgstr "Atsiųsta" #~ msgid "Userhash" #~ msgstr "Naudotojo maišos f-ja" #~ msgid "Encrypted" #~ msgstr "Šifruotas" #~ msgid "Shows Upload / Up-queue" #~ msgstr "Rodyti išsiunčiamus failus arba išsiuntimo eilę" #~ msgid "Clients on queue :" #~ msgstr "Naudotojai eilėje:" #~ msgid "Current Session" #~ msgstr "Dabartinis seansas" #~ msgid "Total" #~ msgstr "Iš viso" #~ msgid "Requested :" #~ msgstr "Gauta prašymų:" #~ msgid "Files Transfers Window" #~ msgstr "Failų siuntimo langas" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Iš viso naudotojų: %s | Iš viso failų: %s" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "" #~ "Dėmesio: sukūrus atsarginę kopiją nepavyko pašalinti pradinio failo %s" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country(): nepavyko įkelti šalies duomenų iš " #~ msgid "Get IPFilter level." #~ msgstr "Pateikti IP filtro lygmenį." #~ msgid "Makes a search." #~ msgstr "Ieškoti." #, fuzzy #~ msgid "Killed!" #~ msgstr "Nepavyko" #, fuzzy #~ msgid "Using amuleweb in '%s'." #~ msgstr "Paleisti amuleweb pradėjus darbą" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "Išjungti aMule." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "Šiame leidime šios parinktys buvo pakeistos dėl saugumo sumetimų:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Įjungtas protokolo slėpimas įeinantiems ir išeinantiems ryšiams.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Išjungtas serverių sąrašo atnaujinimas iš kitų serverių ir klientų.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Norėdami sužinoti daugiau apie šių pasikeitimų priežastis, skaitykite \n" #~ "apie „netikrus serverius“ aMule wiki, esančiame adresu http://wiki.amule." #~ "org. \n" #~ "Kad aMule veiktų korektiškai, labai svarbu, kad pašalintumėte netikrus \n" #~ "serverius iš savo serverių sąrašo." #~ msgid "Fetching status..." #~ msgstr "Atsiunčiama būsenos informacija..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Naudotojai eD2K: %s Kad: %s | Failai eD2K: %s Kad: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Naudotojas %s IP:prievadas %s:%d naudoja %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() pateikė NULL" #~ msgid "Firewalled" #~ msgstr "Už ugniasienės" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "Įkeltas %d vėliavėlių paveiksliukas." #~ msgstr[1] "Įkelti %d vėliavėlių paveiksliukai." #~ msgstr[2] "Įkelta %d vėliavėlių paveiksliukų." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "failas %s yra per didelis, maksimalus failo dydis yra 4 GB." #~ msgid "No handler for this file type." #~ msgstr "Šiam failų tipui nėra paskirtos programos." #~ msgid "File was not saved" #~ msgstr "Failas nebuvo įrašytas" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "Nepavyko užmegzti ryšio. Prie nurodyto mazgo prisijungti nepavyko\n" #~ msgid "Message Filter" #~ msgstr "Žinučių filtras" #~ msgid "Gui Tweaks" #~ msgstr "Išvaizdos parinktys" #~ msgid "Core Tweaks" #~ msgstr "Programos branduolio parinktys" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Uždelsti prieš parodant patarimą (sekundėmis)" #~ msgid "Show part file number before file name" #~ msgstr "Prieš failo pavadinimą rodyti dalinio failo numerį" #~ msgid "Skin Support" #~ msgstr "Keičiama išvaizda" #~ msgid "- no skins available -" #~ msgstr "- išvaizdų nėra -" #~ msgid "Online Signature Directory:" #~ msgstr "Keičiamo parašo aplankas:" #~ msgid "Filtering Options:" #~ msgstr "Filtravimo parinktys:" #~ msgid "Line Capacities" #~ msgstr "Kanalo talpa" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Dėmesio! Šie duomenys naudojami\n" #~ "tik statistikos grafiko brėžimui." #~ msgid "Standard client TCP Port:" #~ msgstr "Standartinis TCP prievadas:" #~ msgid "Extended client UDP Port:" #~ msgstr "Papildomas UDP prievadas:" #~ msgid "Bind Address" #~ msgstr "Susieti adresą" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "UDP prievadas papildomoms serverio užklausoms (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "Didžiausias šaltinių skaičius failui" #~ msgid "Connection limits" #~ msgstr "Ryšių skaičiaus apribojimai" #~ msgid "Universal Plug and Play" #~ msgstr "Visuotinis Plug nad Play" #~ msgid "Enable UPnP" #~ msgstr "Įjungti UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "UPnP TCP prievadas:" #~ msgid "Start next paused file when a file completed" #~ msgstr "Atsiuntus failą pradėti siųsti pristabdytą failą" #~ msgid "Check disk space" #~ msgstr "Tikrinti disko vietą" #~ msgid "Min disk space:" #~ msgstr "Laisva vieta diske:" #~ msgid "Incoming" #~ msgstr "Atsiųsti failai" #~ msgid "Temporary" #~ msgstr "Laikini failai" #~ msgid "Shared" #~ msgstr "Dalinami failai" #~ msgid "Select Statistics Colors" #~ msgstr "Nurodykite grafikų spalvas" #~ msgid "Download Queue Files Progress" #~ msgstr "Atsiuntimo eilės progresas" #~ msgid "Show percentage" #~ msgstr "Rodyti procentus" #~ msgid "Show progressbar " #~ msgstr "Rodyti progreso juostą" #~ msgid "Enable skin support " #~ msgstr "Įjungti keičiamas išvaizdas" #~ msgid "Skin:" #~ msgstr "Išvaizda:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "Automatiškai rūšiuoti failus (apkraunamas procesorius)" #~ msgid "Show Fast eD2k Links Handler" #~ msgstr "Rodyti greitą eD2k nuorodų mygtuką" #~ msgid "Web server port" #~ msgstr "Žiniatinklio serverio prievadas" #~ msgid "Enable UPnP port forwarding on the web server port" #~ msgstr "Įjungti UPnP prievado persiuntimą žiniatinklio serverio prievade" #~ msgid "Web server UPnP TCP port" #~ msgstr "Žiniatinklio serverio UPnP TCP prievadas" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "Klausančio įrenginio IP \n" #~ "(jei tuščia – bet koks IP)" #~ msgid "TCP port" #~ msgstr "TCP prievadas" #~ msgid "Who can see shared files:" #~ msgstr "Kas gali matyti dalinamus failus:" #~ msgid "Event types" #~ msgstr "Įvykių tipai" #~ msgid "ERROR: can not accept web client connection\n" #~ msgstr "KLAIDA: nepavyko priimti žiniatinklio kliento ryšio\n" #~ msgid "" #~ "Your Auto-update server list is empty.\n" #~ "'Auto-update server list at startup will be disabled." #~ msgstr "" #~ "Automatiškai atnaujinamų servaerių sąrašas tuščias.\n" #~ "Parinktis „Automatiškai atnaujinti serverių sąrašą“ bus sišjungta." #~ msgid "ERROR: Invalid part.met fileversion: %s ==> %s" #~ msgstr "KLAIDA: neteisinga part.met failo versija: %s ==> %s" #~ msgid "Makes aMule promt before exiting." #~ msgstr "" #~ "Įjungus šią parinktį prieš uždarant langą aMule paklaus ar tikrai norite " #~ "baigti." #~ msgid "Bandwith limits" #~ msgstr "Spartos apribojimai" #~ msgid "This UDP port is used for extended ed2k requests and Kad network" #~ msgstr "Tai papildomas eD2k užklausų ir Kademlia tinklo prievadas" #~ msgid "Show overhead bandwith" #~ msgstr "Rodyti tarnybinį srautą" #~ msgid "I.C.H. active" #~ msgstr "Įjungti klaidų tikrinimo įrankį" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "" #~ "Klaidų tikrinimo įrankis pasitiki visomis maišos funkcijomis " #~ "(nerekomenduojama)" #~ msgid "Disk space" #~ msgstr "Disko vieta" #~ msgid "Create Backup for preview" #~ msgstr "Peržiūrai sukurti atsarginę kopiją" #~ msgid "Advanced Settings" #~ msgstr "Sudėtingesnės parinktys" #~ msgid "Progressbar Style" #~ msgstr "Progreso juostos išvaizda" #~ msgid "Column Sorting" #~ msgstr "Stulpelių rūšiavimas" #~ msgid "Misc Gui Tweaks" #~ msgstr "Įvairios išvaizdos parinktys" #~ msgid "File Options" #~ msgstr "Failų parinktys" #~ msgid "Status text" #~ msgstr "Būsenos tekstas" #~ msgid "Pop-up status text" #~ msgstr "Iššokantis būsenos tekstas" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ " p2p klientas „visoms sistemoms“, sukurtas eMule pagrindu\n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr " Svetainė: http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr " Forumas: http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " Kontaktai: admin@amule.org (administravimo klausimai) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ " Autorinės teisės (C) 2003-2008 aMule komanda \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr " Dalis aMule programos paremta \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " Autorinės teisės (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "Jei tai filmas, galite parašyti jo trukmę, siužetą, kokia kalba " #~ "kalbama...\n" #~ "Jei failas sugadintas, galite apie tai pranešti kitiems aMule naudotojams." #~ msgid "Misc Options" #~ msgstr "Įvairios parinktys" #~ msgid "Server Options" #~ msgstr "Serverių parinktys" #~ msgid "Display server motd when connected ..." #~ msgstr "Užmezgus ryšį su serveriu rodyti serverio pranešimą..." #~ msgid "eD2k Info" #~ msgstr "eD2k informacija" #~ msgid "Disable/Enable" #~ msgstr "Įjungti/išjungti" #~ msgid "Authentication" #~ msgstr "Autentifikavimas" #~ msgid "General Settings" #~ msgstr "Bendros parinktys" #~ msgid "Hard limit" #~ msgstr "Griežtas limitas" #~ msgid "Max Connections" #~ msgstr "Didžiausias ryšių kiekis" #~ msgid "GUI Tweaks" #~ msgstr "Programos išvaizda" #~ msgid "Remote Control" #~ msgstr "Nutolęs valdymas" #~ msgid "Unable to determine selected browser!" #~ msgstr "Nurodytos naršyklės rasti nepavyko!" #~ msgid "User Defined" #~ msgstr "Nurodyta naudotojo" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org – Linux Mule programa" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Parinkite naršyklę" #~ msgid "Custom Browser:" #~ msgstr "Nurodyta naudotojo:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Naršyklių sąraše nurodykite, kad norite naudoti Naudotojo nurodytą " #~ "naršyklę ir įrašykite čia naršyklės pavadinimą." #~ msgid "Please wait... " #~ msgstr "Prašome palaukti... " #~ msgid "Could not determine the command for running the browser." #~ msgstr "Nepavyko suprasti naršyklės paleidimo komandos." amule_2.3.1+git20151120.0023527bc2.orig/po/nl.po0000644000175000017500000063236212611472361017106 0ustar morphmorph# translation of nl.po to Dutch # aMule i18n resource file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. # # Kry , 2004. # Oliver Heesakkers , 2007. # Frank van der Loo , 2008. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-11-11 03:26+0100\n" "Last-Translator: Frank van der Loo \n" "Language-Team: Dutch \n" "Language: nl\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" "X-Poedit-Language: Dutch\n" "X-Poedit-Country: NETHERLANDS\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Voeg een Vriend toe" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "U moet een geldig IP adres en poortnummer invoeren!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informatie" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "De aangegeven userhash is niet geldig!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Kon bestand ED2KLinks niet openen." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "WAARSCHUWING: U kunt uzelf niet toevoegen als bron voor een eD2k link " "terwijl u een laag id hebt." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Hoofdapp wordt nu afgesloten..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Amuleweb-instantie met pid '%ld' wordt afgesloten ... " #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Amuleweb-instantie met pid '%ld' wordt gedood ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Mislukt" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Kern wordt afgesloten." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "aMule is afgesloten." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Geheugen debug resultaten voor het afsluiten van aMule:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "EV configuratie" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Wachtwoord ingesteld en externe verbindingen ingeschakeld." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "WAARSCHUWING" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "De taalinstelling is veranderd in Systeem Standaard vanwege een configuratie " "wijziging. Sorry." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "U heeft geen servers in de serverlijst.\n" "Wilt u dat aMule nu een nieuwe lijst download?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Download van serverlijst" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "webserver draait met pid %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "U heeft ingesteld om de webserver te starten bij het opstarten, maar " "amuleweb kan niet gestart worden. Installeer a.u.b. het pakket met de aMule " "webserver, of compileer aMule met --enable-webserver en draai make install." #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "FOUT" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Kon geen poorten koppelen aan het opgegeven adres: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Poort %u is niet beschikbaar. U krijgt een LAAG ID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Poort %u is niet beschikbaar!\n" "\n" "Dit betekent dat u een LAAG ID krijgt.\n" "\n" "Controleer uw netwerk en zorg ervoor dat de poort open is voor in- en " "uitgaand verkeer." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Kon OnlineHandtekening Bestand niet maken" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Kon aMule OnlineHandtekening Bestand niet maken" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "De gekozen locale lijkt niet ge?nstalleerd te zijn op uw pc. (Let op: Ik " "probeer het toch in te stellen)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Dit is de eerste keer dat u aMule %s draait" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Dit is een test versie, dagelijks geupdatet, en\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "we geven geen garantie dat het niks kapot maakt, uw huis in brand steekt,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "of uw hond doodt. Maar het *zou* veilig moeten zijn om het te gebruiken.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Meer informatie, ondersteuning en niuwe versies kunnen gevonden worden op " "onze homepage,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "op www.aMule.org, of op ons IRC kanaal #amule op irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Bugs kunt u altijd melden op http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "De map voor Online Handtekening bestanden die u heeft opgegeven is " "ONGELDIG!\n" " OnlineSignature is UITGESCHAKELD totdat u dit verbetert in voorkeuren." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Server hostnaam geïnformeerd" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Toewijzen schijfruimte voor bestand '%s' mislukt: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "FOUT: kan logbestand niet openen" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "WAARSCHUWING: logbestand is leeg. Er is iets mis." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Log is gereset" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "ServerBericht: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "Download van %s overgeslagen, omdat gevraagd bestand niet nieuwer is." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Kon nodes lijst niet downloaden." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Kon gedownload versie controle bestand niet openen" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Beschadigd versie controle bestand" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "U gebruikt een verouderde versie van aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Uw aMule versie is %i.%i.%i en de nieuwste versie is %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "De nieuwste versie kan altijd gevonden worden op http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "WAARSCHUWING: Uw aMuled versie is verouderd: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "U heeft de nieuwste aMule versie." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Kon versie controle bestand niet downloaden" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Gebruikers: %s | Bestanden: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Gebruikers: E: %s K: %s | Bestanden: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Geen netwerken geselecteerd" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "met Laag ID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "met Hoog ID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Verbonden met %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Verbinden met %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Verbinding verbroken met eD2K" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad gestart." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad gestopt." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Verbonden met Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Verbonden met Kad (firewalled)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Verbinding met Kad verbroken" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Kad netwerk kan niet gebruikt worden als de UDP poort is uitgeschakeld in " "voorkeuren, wordt niet gestart." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Kad netwerk is uitgeschakeld in voorkeuren, wordt niet mee verbonden." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "FOUT: aMule daemon kan niet gebruikt worden wanneer externe verbindingen " "uitgeschakeld zijn. Gebruik, om Externe Verbindingen in te schakelen, of een " "normale aMule, start amuled met de optie --ec-config of stel de waarde van " "\"AcceptExternalConnections\" in op 1 in het bestand ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "FOUT: Een geldig wachtwoord is nodig om gebruik te maken van externe " "verbindingen, en aMule daemon kan niet gebruikt worden zonder externe " "verbindingen. Om aMule daemon to draaien, moet u het veld \"ECPassword\" in " "het bestand ~/.aMule/amule.conf een juiste waarde geven. Voer amuled uit met " "de vlag --ec-config om het wachtwoord in te stellen. Meer informatie is te " "vinden op http://wiki.amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - timer wordt gestart" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: naar de achtergrond - tot ziens" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Kan Pid-Bestand Niet Aanmaken" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "FOUT: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Dit is aMule %s gebaseerd op eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Draaiend op %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Bezoek http://www.amule.org om te zien of een nieuwe versie beschikbaar is." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "FATALE FOUT: Kon Timer niet aanmaken" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "aMule controle op afstand " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Snapshot:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "'Alle-Platformen' p2p client gebaseerd op eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Website: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Forum: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Contact: admin@amule.org (administratieve zaken) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 aMule Team \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Een deel van aMule is gebaseerd op \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Peer-to-peer routing based on the XOR metric.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Bericht" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "aMule dialoogvenster afgesloten" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Aan het verbinden" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2K: Verbinden" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2K: Verbinding verbroken" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Firewalled" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Verbonden" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Verbinden" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Uitgeschakeld" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Annuleren" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Beëindig de huidige verbindingspogingen" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Verbreek" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Verbreek de huidige verbin" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Verbinden" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Verbind met de momenteel ingeschakelde netwerken" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Up: %.1f(%.1f) | Down: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Up: %.1f | Down: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Verbonden)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Niet Verbonden)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Wilt u %s echt afsluiten?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Afsluit bevestiging" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Voer Commando Uit: " #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- standaard -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Skindirectory '%s' bestaat niet" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "WAARSCHUWING: Kon skinbestand '%s' niet openen om te lezen" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Netwerken" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Netwerken Venster" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Zoeken" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Zoekvenster" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Downloads" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Downloadsvenster" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Gedeelde bestanden" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Gedeelde Bestanden Venster" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Berichten" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Berichten Venster" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistieken" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Statistieken Venster (Grafieken)" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Voorkeuren" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Voorkeuren Instellingen Venster" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importeer" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Het partbestand importeer programma" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Over" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Over/Help" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "eD2k netwerk" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Kad netwerk" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Geen netwerk" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "aMule besturing op afstand" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Fatale Fout: Kon Core Timer niet aanmaken" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Verbind met amule op afstand" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Fatale Fout: Kon Poll Timer niet aanmaken" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Naar de gebeurtenislus..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Aan het verbinden..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Verbinding mislukt " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "GUI EV gebeurtenisafhandelaar op afstand" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Wordt afgesloten" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Verbinding Mislukt. Kon niet verbinden met %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Verbinding verbroken - aMule is waarschijnlijk afgesloten." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Klaar" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Alle" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Kan directory '%s' niet aanmaken voor categorie '%s', directory '%s' wordt " "behouden." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Onbekend" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Kon gedeelde bestanden niet ontvangen van gebruiker '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Op zoek naar buddy voor laag id verbinding" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Nep eMule versie %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Nep eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Nep eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (gebaseerd op eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "BijNaam: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Aangevraagd: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Bestandsstatistieken voor deze sessie: Geaccepteerd %d van %d aanvraag, %s " "overgebracht\n" msgstr[1] "" "Bestandsstatistieken voor deze sessie: Geaccepteerd %d van %d aanvragen, %s " "overgebracht\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Bestandsstatistieken voor alle sessies: Geaccepteerd %d van %d aanvraag, %s " "overgebracht\n" msgstr[1] "" "Bestandsstatistieken voor alle sessies: Geaccepteerd %d van %d aanvragen, %s " "overgebracht\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Aangevraagd bestand is onbekend" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Bericht van '%s' gefilterd (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nieuw bericht van '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Gebruiker %s (%u) vroeg uw gedeelde-bestandenlijst van niet-bestaande " "directory '%s' op -> Genegeerd" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "WAARSCHUWING: %s kan niet geopend worden." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "WAARSCHUWING: Geannuleerde-bestandenlijst beschadigd, bevat ongeldige header." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "IO fout bij het lezen van bestand %s: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Fout bij het bewaren van bestand %s: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Voer Captcha in" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Categorie" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nieuwe Catgorie" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Kies een directory voor binnenkomende bestanden" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "U moet een naam opgeven voor de categorie!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "U moet een pad opgeven voor de categorie!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Kon binnenkomende dir niet aanmaken voor categorie. Geef a.u.b. een geldig " "pad op!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Chat-Sessie Begonnen: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Verbonden met Client ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Verbinden maken met Client ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Kon niet Verbinden met client / Verbinding verbroken ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" "*** U heeft de captcha controle gehaald en de gebruiker heeft uw bericht " "ontvangen. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Uw antwoord op de captcha was fout en uw bericht is genegeerd. U kunt " "een nieuw captcha aanvragen door een nieuw bericht te sturen. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Chat" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Sluit tabblad" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Sluit alle tabbladen" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Sluit andere tabbladen" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Voeg toe aan Vrienden" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Creditfile geladen, %u client is bekend" msgstr[1] "Creditfile geladen, %u clients zijn bekend" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Credits verlopen voor %u client!" msgstr[1] " - Credits verlopen voor %u clients!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Geen 'cryptkey.dat' bestand gevonden, wordt aangemaakt." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Client Details" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "Laag ID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "Hoog ID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Ingeschakeld" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Ondersteund" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Niet ondersteund" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Uitgeschakeld" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Verbonden" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Niet verbonden" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f KB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Niet compleet" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Slechterik" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Gecontroleerd - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Niet Beschikbaar" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Gebruiker %s (%u) vroeg uw gedeelde-bestandenlijst op -> Geaccepteerd" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Gebruiker %s (%u) vroeg uw gedeelde-bestandenlijst op -> Geweigerd" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "Gebruiker %s (%u) vroeg uw gedeelde-directorieslijst op -> Toegestaan" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "Gebruiker %s (%u) vroeg uw gedeelde-directorieslijst op -> Geweigerd" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Gebruiker %s (%u) vroeg uw gedeelde-bestandenlijst van directory '%s' op -> " "geaccepteerd" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Gebruiker %s (%u) vroeg uw gedeelde-bestandenlijst van directory '%s' op -> " "geweigerd" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Gebruiker %s (%u) deelt directory '%s'" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Gebruiker %s (%u) stuurde niet-opgevraagde gedeelde dirs." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "Gebruiker %s (%u) stuurde gedeelde-bestandenlijst van directory '%s'" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Gebruiker %s (%u) heeft gedeelde-bestandenlijst gestuurd" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Gebruiker %s (%u) stuurde ongewild gedeelde-bestandenlijst" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Gebruiker %s (%u) weigerde toegang tot gedeelde directories/bestanden lijst" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Bestand Commentaren" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Gebruikersnaam" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Bestandsnaam" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Waardering" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Commentaar" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Geen commentaren" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u commentaar" msgstr[1] "%u commentaren" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Client %s geband voor het sturen van %s beschadigde gegeven van in totaal %s " "voor het bestand '%s'" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [La]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Ho]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Heel laag" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Laag" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normaal" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Hoog" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Heel Hoog" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Vrijgeven" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Vragend" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Verbinden via server" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Wachtrij vol" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "In wachtrij" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Downloaden" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Ontvangen van hash set" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Geen benodigde delen" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Kan Laag ID niet verbinden met Laag ID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Te veel verbindingen" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Verbinding maken via Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Te veel Kad verbindingen" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Geband" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "VerbindingsFout" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Wachtrij op Afstand Vol" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Oude MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Nieuwe MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule Compatible" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Lokale Server" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Server op Afstand" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Bron uitwisseling" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passief" #: src/DataToText.cpp:133 msgid "Link" msgstr "Link" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Bron Seeds" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Zoekresultaat" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Compleet" #: src/DataToText.cpp:146 msgid "In progress" msgstr "Bezig" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "FOUT: Onvoldoende schijfruimte" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "FOUT: Partmet niet gevonden" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "FOUT: IO fout!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "FOUT: Mislukt!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "In Wachtrij" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Wordt al gedownload" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Onbekend of fout tempbestand formaat." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Part" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Grootte" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Overgebracht" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Snelheid" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Voortgang" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Bronnen" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioriteit" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Status" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Overgebleven Tijd" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Laatst Compleet Gezien" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Laatste Overdracht" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Weet u zeker dat u het geselecteerde bestand wilt verwijderen?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Weet u zeker dat u de geselecteerde bestanden wilt verwijderen?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Feedback van: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Stop" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pauzeer" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "Ve&rder gaan" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "Verwijder comp&lete" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Wissel elk A4AF nu uit met dit bestand" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Wissel elk A4AF uit met dit bestand (Auto)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Wissel elk A4AF nu uit met de andere bestanden" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Uitgebreide Opties" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Voorbeeld" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Bekijk &details" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Bekijk alle commentaren" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Kopieer magnet URI naar klembord" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Kopieer eD2k &link naar klembord" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Kopieer feedback naar klembord" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "Verwijder toewijzing" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Toewijzen aan catgorie" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Open het bestand" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Voer een nieuwe naam voor dit bestand in:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Naam wijzigen" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Downloads (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Om deze waarschuwing te voorkomen bij elk voorbeeld\n" "dient u uw video afspeelprogramma in te stellen bij voorkeuren (standaard is " "mplayer)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Voorbeeld" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "FOUT: Opstarten externe mediaspeler mislukt! Commando: '%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "PartBestand %u van %u wordt bewaard" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Alle PartBestanden Bewaard." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Tijdelijke bestanden worden geladen van %s" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "PartBestand %u van %u wordt geladen" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "FOUT: Laden van backupbestand misukt. Zoek op http://forum.amule.org naar ." "part.met hersteloplossingen." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Alle PartBestanden Geladen." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Geen part-bestanden gevonden" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "%u part bestand gevonden" msgstr[1] "%u part bestanden gevonden" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "Bestandssysteem voor Temp directory kan grote bestanden niet verwerken" # Translate 'Incoming directory'? #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "Bestandssysteem voor Incoming directory kan grote bestanden niet verwerken." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Downloaden van %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "U probeert het bestand '%s' al te downloaden" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "U heeft het bestand '%s' al" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "U probeert het bestand %s al te downloaden" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Kan magnet-link niet omzetten naar eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Onbekend protocol in link: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Ongeldige eD2k link! FOUT: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Client verstuurde pakket nadat authenticatie mislukte." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Externe verbinding gesloten." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Externe verbindingen uitgeschakeld vanwege leeg wachtwoord!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Externe verbindingen uitgeschakeld in config bestand" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Nieuwe externe verbinding geaccepteerd" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "FOUT: kon nieuwe externe verbinding niet accepteren" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "Externe verbinding geweigerd vanwege leeg wachtwoord bij voorkeuren!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Client verbinden: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Onbekende versie" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Incorrecte EV versie ID, mogelijk niet compatible. Gebruik kern en op " "afstand van dezelfde snapshot." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "U kunt niet verbinden met een release versie vanaf een willekeurig " "ontwikkelingssnapshot! *zucht* mogelijke crash voorkomen" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Ongeldige protocol versie." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Ontbrekend protocol versielabel." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "Authenticatie mislukt: ongeldige hash opgegeven als EV-wachtwoord." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Authenticatie mislukt: verkeerd wachtwoord." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Authenticatie mislukt: ontbrekend wachtwoord." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Ongeldig verzoek, authenticeer eerst a.u.b." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Toegang verleend." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Foutmelding \"%s\" verzonden naar client." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Poging tot ongeautoriseerde toegang van %s. Verbinding gesloten." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "PartBestand-commando op afstand mislukt: BestandsHash niet gevonden: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "BestandsHash niet gevonden: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OEPS! OpCode verwerkingsfout!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Server niet toegevoegd" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "server niet gevonden: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "moet de te verwijderen server defini?ren" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2K is uitgeschakeld in voorkeuren." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Bezig met zoeken. Haal de resultaten op over een momentje!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "WebSearch vanaf afstand is zinloos." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Geen punten voor grafiek." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Uw client is niet geconfigureerd voor dit niveau van details." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Externe Verbinding: afsluiten aangevraagd" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Al bezig met afsluiten." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "ExterneVerb: link '%s' wordt toegevoegd." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Ongeldige link of al op de lijst." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Bestand niet gevonden." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Ongeldige bestandsnaam." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Kon naam van bestand niet wijzigen." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad is uitgeschakeld in voorkeuren." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Al verbonden met eD2K." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Aan het verbinden met eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Al verbonden met Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Verbinding met Kad wordt gemaakt..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Alle netwerken zijn uitgeschakeld." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Verbinding met eD2K verbroken." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Verbinding met Kad verbroken." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Externe Verbinding: ongeldige opcode ontvangen: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Ongeldige opcode (verkeerde protocol versie?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Onbekende extensie '%s' van het '%s' commando.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Onbekend commando '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Dit commando heeft geen argumenten.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Dit commando moet een argument hebben.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Dit commando is niet compleet, u moet een van onderstaande uitbreidingen " "gebruiken.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Beschikbare uitbreidingen:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Beschikbare commando's:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Alle commandos zijn hoofdlettergevoelig.\n" "Type '%s ' om gedetailleerde info te krijgen over .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Sluit het programma af." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Toon help." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Om help te krijgen over een commando, type 'help '.\n" "Om de volledige commando lijst te krijgen type 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Gebruik '%s' voor commando lijst\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Syntax fout!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Fout bij het verwerken van commando - zou nooit mogen gebeuren! Rapporteer " "deze bug, a.u.b.\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Dit commando heeft geen parameters." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Dit commando moet een parameter hebben." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Ongeldig argument." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Dit is een incompleet commando." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Type '%s' voor meer help.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Dit is %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Dit is %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Aanmaken van client...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, %s wordt afgesloten...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Kan niet verbinden met een leeg wachtwoord.\n" "U moet een wachtwoord opgeven in het config bestand\n" "of op de commando-regel, of invoeren als daarom gevraagd\n" "wordt.\n" "\n" "Bezig met afsluiten...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Toon deze help tekst" #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Host waar aMule draait. (standaard: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "aMules poort voor Externe Verbindingen. (standaard: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Externe Verbinding wachtwoord." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Lees configuratie uit bestand." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Print geen uitvoer naar stdout." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Wees uitgebreid - toon ook debug berichten." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Stelt programma locale (taal) in." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Schrijf opties op de opdrachtregel naar config bestand." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Maakt config bestand gebaseerd op aMules config bestand." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Toon programma versie." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Bestandsdetails" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "%.1f%% voltooid" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "Kon vriendenlijst-bestand 'emfriends.met' niet lezen!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "Kon niet schrijven naar vriendenlijst-bestand 'emfriends.met'!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "KRITIEK - geen client bij StartChatSession" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Vrienden" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Laat &Details Zien" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Voeg een vriend toe" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Verwijder Vriend" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Verstuur &Message" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Bekijk Bestanden" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Maak Vriendenslot" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Weet u zeker dat u de geselecteerde vriend wilt verwijderen?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Weet u zeker dat u de geselecteerde vrienden wilt verwijderen?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "U kunt maximaal ??n vriendenslot instellen.\n" " Slechts één slot is toegekend." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Meerdere selectie" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Verstuur bericht naar gebruiker" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Bericht om te versturen:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Verwijder uit vriendenlijst" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Verstuur bericht" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Wissel uit naar dit bestand" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "In Wachtrij: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Al om een ander bestand gevraagd" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Wachtende op upload slot" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "In wachtrij: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Aan het uploaden" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Geen" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Nee" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Ja" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Downloaden..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "HTTP download geannuleerd" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Kon doelbestand %s voor download niet aanmaken!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "De URL om te downloaden mag niet leeg zijn" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "De URL %s leverde op: %i - Fout (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Kritieke fout bij het schrijven van gedownload bestand" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "%d bytes gedownload" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Verwachtte %d bytes, maar %d bytes gedownload" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "Ongeldige URL voor HTTP download of HTTP redirection (bent u 'http://' " "vergeten?" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Kon niet verbinden met HTTP downloadserver" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Ongeldig antwoord van HTTP downloadserver" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Download van nieuwe GeoIP.dat van %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Download van bestand GeoIP.dat mislukt, update wordt gestopt." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Kon bestand %s niet verwijderen, update wordt gestopt." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Kon bestand %s niet hernoemen, update wordt gestopt." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "%s succesvol geüpdatet" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Fout bij het updaten van GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Kon %s niet downloaden van %s" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "Kon landgegevens niet laden voor '%s'." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "IP-filters 'ipfilter.dat' en 'ipfilter_static.dat' worden geladen." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "Kon ipfilter.dat bestand '%s' niet laden, onbekend formaat." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "Kon ipfilter.dat bestand '%s' niet laden, kon bestand niet openen." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "%u IP-reeks geladen van '%s'." msgstr[1] "%u IP-reeksen geladen van '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u misvormde regel is genegeerd" msgstr[1] "%u misvormde regels zijn genegeerd" #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Kon nieuw bestand %s niet hernoemen, update wordt gestopt." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "IP-filter is klaar" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Bootstrap van \n" "bekende clients" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nodes (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Ongeldig ip om van te bootstrappen" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Ongeldige poort om van te bootstrappen" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Vul a.u.b. alle benodigde velden in" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Weet u zeker dat u een nieuw nodes.dat bestand wilt downloaden?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Dat zal uw huidige nodes verwijderen en de Kademlia verbinding opnieuw " "starten." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Verder gaan?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: zoekwoord te kort" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Zoekwoord: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Zoekwoord staat al op de zoeklijst: " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "Kon bestand nodes.dat niet lezen - te oud. Deze versie (0) wordt niet meer " "ondersteund." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "%u Kad contact gelezen" msgstr[1] "%u Kad contacten gelezen" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "Geen contacten gevonden, bootstrap a.u.b., of download een nodes.dat bestand." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Slechts %d Kad contact beschikbaar, nodes.dat niet beschreven" msgstr[1] "Slechts %d Kad contacten beschikbaar, nodes.dat niet beschreven" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "%d Kad contact geschreven" msgstr[1] "%d Kad contacten geschreven" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Bestandsnaam" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Bestandsgrootte" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Deel ratio" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Geüpload" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Aangevraagd" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Geaccepteerd" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Complete bronnen" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "WAARSCHUWING: Bekende-bestandenlijst beschadigd, bevat ongeldige header." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Kon vermelding in bekende-bestandenlijst niet laden, bestand kan beschadigd " "zijn" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Ongeldige vermelding in bekende-bestandenlijst, bestand kan beschadigd zijn: " #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Onbekende fout %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "Kon foutbeschrijving niet verkrijgen voor fout %d" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Aan het hashen" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Voltooien" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Compleet" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Gepauzeerd" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Foutief" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Wachten" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "U moet een niet-leeg wachtwoord opgeven." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Ongeldig wachtwoord, geen MD5 hash!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Verbindingsfout" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "EV verbinding mislukte. Leeg antwoord." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Externe Verbinding: Slecht antwoord, handshake mislukt. Verbinding verbroken." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Succes! Verbinding gemaakt met aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Gelukt! Verbinding gemaakt." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Externe Verbinding: Toegang geweigerd omdat: " #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Externe Verbinding: Handshake mislukt." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "HTTP download thread gestart" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket: Ok." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "FOUT: Kon niet luisteren op TCP poort" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "FOUT: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "WAARSCHUWING: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Sluiten" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Knippen" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Kopiëren" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Plakken" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Wissen" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Alles Selecteren" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Onbegrensd" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule Systeemvak Menu" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Snelheid grenzen:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "UL: Geen" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "UL: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DL: Geen" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DL: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Downloadsnelheid: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Uploadsnelheid: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Client Informatie" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Bijnaam: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Geen Bijnaam Geselecteerd!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ClientID: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Niet verbonden" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "ServerNaam: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "ServerIP: " # msgstr "Verbinden" #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Niet verbonden" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP poort: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP poort: Niet gereed" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "UDP poort: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UDP poort: Niet gereed" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Online Handtekening: Ingeschakeld" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Online Handtekening: Uitgeschakeld" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Uptime: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Gedeelde bestanden: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Clients in wachtrij: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Totaal gedownload: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Totaal geupload: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Upload grens" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Download grens" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Verberg aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Toon aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Afsluiten" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k Link: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Uitvoeren" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Klik hier om de eD2k link in de text control toe te voegen aan uw download " "wachtrij." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Gebeurtenissen worden hier getoond. Voor een complete lijst van " "gebeurtenissen, bekijk de log in de Servers-tab." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Laden ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Aantal gebruikers op de server waar u mee verbonden bent ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Gebruikers: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Gebruikers verbonden met de huidge server en een schatting van het totale " "aantal gebruikers." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Up: 0.0 | Down: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Huidige gemiddelde upload en download snelheden. Indien ingeschakeld geven " "de getallen tussen haakjes de overhead door client communicatie aan." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Toont de verbonden status en actieve overdrachten. Rode pijlen geven aan dat " "u nu niet verbonden bent, gele pijlen geven aan dat u een laag ID (door " "firewall) hebt en groene pijlen geven aan dat u een hoog ID (Het optimale " "verbindingstype) hebt." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Niet Verbonden ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Server nu mee verbonden." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Zoeken" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Naam:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Type" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Lokaal" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Globaal" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "BestandsHash" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Uitgebreide Parameters" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filters" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "BestandsType" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Alles" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Archieven" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Geluid" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD-Images" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Plaatjes" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programma's" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Teksten" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Video's" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Extensie" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Min Grootte" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "kB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Max Grootte" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Beschikbaarheid" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filter:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filter Resultaat" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Resultaat Omkeren" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Verberg Bekende Bestanden" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Start" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Meer" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Zoekt naar meer resultaten op eD2K. Werkt nog niet voor Kad." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Stop" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Download" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Velden Leegmaken" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Resultaten" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Verwijderd complete downloads" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Bestandsbronnen:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Algemeen" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Volledige Naam :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/B" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met-Bestand :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Bestandsgrootte :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Partbestandsstatus :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Laatst compleet gezien :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Overdracht" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Gevonden Bronnen :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Bronnen Overdragen :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Bestandsdeel-Teller :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Beschikbaar :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Datasnelheid :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Actieve Downloadtijd: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Overgedragen :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Volledige Grootte :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Intelligente Beschadigings Afhandeling (I.C.H.)" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Verloren door beschadiging :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Verkregen door compressie :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Pakketten gered door I.C.H. :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "BestandsNamen" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Neem over" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Opruimen" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Toepassen" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" "Geef bestand commentaar/waardering (Tekst zichtbaar voor alle gebruikers)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Voor een film kunt iets zeggen over de lengte, het verhaal, de taal ...\\n" "\\nen als het nep is kunt u dat vertellen aan de andere gebruikers van aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Bestands Kwaliteit" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Niet beoordeeld" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Onbruikbaar / Beschadigd / Nep" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Matig" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Redelijk" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Goed" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Uitstekend" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Kies de bestands waardering of adviseer gebruikers als het bestand ongeldig " "is ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Verversen" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Downloaden, geduld aub ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Onbekende grootte" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Benodigde Informatie" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP Adres :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Poort :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Extra Informatie" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Gebruikersnaam :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Gebruikershash :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Toevoegen" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Downloadsnelheid" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Huidige" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Lopende gemiddelde" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Sessie gemiddelde" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Uploadsnelheid" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Verbindingen" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Actieve downloads" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Actieve verbinding (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Actieve uploads" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Statistieken Boom" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Gebruikersnaam:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Gebruikershash:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Client software:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Client versie:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP adres:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "Gebruikers ID:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "Server IP:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Servernaam:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Maskering" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Overdrachten naar client" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Huidige aanvraag:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Gemiddelde upload snelheid:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Gemiddelde download snelheid:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Geupload (sessie):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Gedownload (sessie):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Geupload (totaal):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Gedownload (totaal):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Scores" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "DL/UP verhouding:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Veilige identiteit:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Wachtrij positie:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Wachtrij score:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Bijnaam" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - de multi-platform Mule" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "Dit is de naam die andere gebruikers zien wanneer ze met u verbinden." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Taal: " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "De vertraging voordat tool-tips worden getoond." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Dit specificeert de taal waarin aMule wordt getoond." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Controleer op nieuwe versie bij het starten" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Ingeschakeld zorgt dit ervoor dat aMule bij het starten controleert op een " "nieuwe versie" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Start geminimaliseerd" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Als u dit inschakelt zal aMule zichzelf minimaliseren bij het starten." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Vraag bevestiging bij afsluiten" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Laat aMule om bevestiging vragen alvorens af te sluiten." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "Verberg applicatievenster wanneer op de sluitknop wordt geklikt" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Schakel Tray Pictogram in" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Dit schakelt het systeemvak (of taakbalk) pictogram in/uit." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimaliseer naar Systeemvak" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Deze optie zorgt er voor dat aMule geminimaliseerd wordt naar het " "Systeemvak, i.p.v. naar de taakbalk." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Tooltip vertragingstijd: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "seconden" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Browser Selectie" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Voer hier uw browsernaam in. Laat dit veld leeg om de standaardbrowser van " "uw systeem te gebruiken." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Bladeren" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Open in nieuw tabblad indien mogelijk" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Open de web pagina, indien mogelijk, in een nieuw tabblad in plaats van in " "een nieuw venster" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Video Speler" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Bandbreedte grenzen" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Upload" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Slot Toewijzing" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Poorten" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Standaard TCP Poort " #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Dit is de standaard eD2k poort en kan niet uitgeschakeld worden." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "UDP poort voor server aanvragen (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Uitgebreide UDP poort (Kad / globaal zoeken) " #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" "Deze UDP poort wordt gebruikt voor uitgebreide eD2k aanvragen en het Kad " "netwerk" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Schakel UPnP voor router port forwarding in" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnP TCP Poort (Optioneel):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Bind lokaal adres aan IP (laat leeg voor elk):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Enkel voor gevorderde gebruikers: Als u meerdere netwerk interfaces hebt, " "voer hier het adres in van de interface waar aMule mee verbonden moet worden." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Max bronnen per bestand aan het downloaden:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Max gelijktijdige verbindingen:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Autoverbind bij het opstarten" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Verbind opnieuw bij verbroken verbinding" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Verwijder dode server na" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "pogingen" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Auto-update serverlijst bij het opstarten" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Lijst" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Update serverlijst bij het verbinden met een server" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Update serverlijst wanneer een client verbindt" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Gebruik prioriteitssysteem" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Gebruik slimme Laag ID controle bij verbinden" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Veilig verbinden" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Autoverbind alleen met servers in statische lijst" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Zet handmatig toegevoegde servers op Hoge Prioriteit" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Intelligente Corruptie Afhandling (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Inschakelen" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "Geavanceerde I.C.H. vertrouwt elke hash (niet aanbevolen)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Voeg bestanden aan downloads toe in pauze modus" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Voeg bestanden aan downloads toe met auto prioriteit" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Probeer eerste en laatste delen eerst te downloaden" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Start volgend gepauzeerd bestand als een bestand compleet is" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Uit dezelfde categorie" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "In alfabetische volgorde" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Wijst schijfruimte toe voor nieuwe bestanden" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Wijst schijfruimte toe voor nieuwe bestanden, beperkt hierdoor fragmentatie" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Stop downloads als de vrije schijfruimte bedraagt " #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Selecteer dit als u wilt dat aMule uw schijfruimte controleert" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Voer hier de gewenste min schijfruimte in." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Bewaar 10 bronnen van zeldzame bestanden (<20 bronnen)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Uploads" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Voeg nieuwe gedeelde bestanden toe met auto prioriteit" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Doelmap voor downloads" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Map voor tijdelijke download bestanden" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Gedeelde mappen" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(Rechtermuisklik op mappictogram om recursief te delen)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Deel verborgen bestanden" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafieken" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Update vertraging : 5 seconden" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Tijd voor gemiddelde grafiek: 100 minuten" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Schaal Verbindings Grafiek: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Schaal downloadgrafiek:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Schaal uploadgrafiek:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Kleuren: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Achtergrond" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Raster" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Huidige download" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Lopend gemiddelde download" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Sessie gemiddelde download" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Huidige upload" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Lopend gemiddelde upload" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Sessie gemiddelde upload" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Actieve verbindingen" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Systeemvak Pictogram Snelheidsbalk" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Kad-nodes huidig" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Kad-nodes draaiende" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Kad-nodes sessie" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Selecteer" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Boom" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Aantal getoonde Client Versies (0=onbegrensd)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! WAARSCHUWING !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Max nieuwe verbindingen / 5 seconden" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Grootte van Bestandsbuffer : 240000 bytes" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Grootte van Uploadwachtrij: 5000 clients" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Server verbinding verversingsinterval: Uitschakelen" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Schakel standby-modus van computer uit" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Gebruik skin: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Toon \"Snelle eD2k Links Afhandelaar\" in elk venster." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Geef uitgebreide info weer op categorie-tabs" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "Toon applicatieversie op titel" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Toon overdrachtsnelheden op titel" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Voor applicatienaam" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Na applicatienaam" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Toon overhead bandbreedte" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Verticale knoppenbalk" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Toon landenvlaggen voor clients" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Downloadwachtrij Bestanden" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Toon voortgangspercentage" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Toon voortgangsindicator" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Plat" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Rond" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Auto-sorteer bestanden (hoog CPU gebruik)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule zal de kolommen in uw download lijst automatisch sorteren" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Externe Verbinding Parameters" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Accepteer externe verbindingen" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP van de luisterende interface:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Voer hier een geldig ip in het formaat a.b.c.d in van de luisterende EV " "interface. Een leeg veld of 0.0.0.0 betekent elke interface." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "TCP poort:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Schakel UPnP port forwarding van de EV-poort in" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Wachtwoord" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Webserver parameters" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Start webserver bij het opstarten" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Web template" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Alle rechten wachtwoord" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Schakel Gebruiker met Beperkte rechten in" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Beperkte rechten wachtwoord" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Schakel UPnP port forwarding van de web server poort in" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Web server UPnP TCP poort (Optioneel)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Pagina Verversingstijd (in seconden)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Schakel Gzip compressie in" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Klik hier om de veranderingen gemaakt aan de voorkeuren toe te passen." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Maak veranderingen aan de voorkeuren ongedaan." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Titel :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Commentaar :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Binnenkomende Dir :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Verander prioriteit voor nieuw toegevoegde bestanden :" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Niet veranderen" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Selecteer kleur voor deze Categorie (nu geselecteerd) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Leegmaken" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Klik op deze knop om de log te resetten." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Klik op deze knop om de lijst van servers te updaten van URL ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Serverlijst" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Voer de url naar een server.met bestand hier in en druk op de knop links om " "de lijst met bekende servers te vernieuwen." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Voeg server handmatig toe: Naam" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Voer hier de naam van de nieuwe server in" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Poort" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Voer hier het IP van de server in, gebuik het x.x.x.x formaat." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Voer hier de poort van de server in." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Voeg een server handmatig toe (vul velden links in voor) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule Log" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Server Info" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2K Info" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad Info" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Klik op deze knop om de nodes lijst te updaten van URL ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nodes (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Voer hier de url in naar een nodes.dat bestand en druk op de knop links om " "de lijst van bekende nodes te updaten." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Nodes stats" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Bootstrap" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Nieuwe node" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Poort:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Bootstrap van bekende clients" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Verbreek verbinding met Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Gebruik Secure User Identification" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Het is aan te raden om deze optie in te schakelen. U ontvangt geen credits " "indien SUI niet ingeschakeld is." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Protocol Obfuscatie" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Ondersteun Protocol Obfuscatie" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Deze optie schakelt Protocol Obfuscatie in, en zorgt er voor dat aMule " "geobfusceerde verbindingen van andere clients accepteert." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Gebruik obfuscatie voor uitgaande verbindingen" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Deze optie zorgt er voor dat aMule Protocol Obfuscatie gebruikt bij het " "verbinden met andere clients/servers." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Accepteer alleen geobfusceerde verbindingen" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Deze optie zorgt er voor dat aMule alleen gobfusceerde verbindingen " "accepteert. U heeft minder bronnen, maar al uw verkeer is geobfusceerd." #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Iedereen" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Niemand" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Wie kan mijn gedeelde bestanden zien:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Selecteer wie een lijst van uw gedeelde bestanden kan opvragen." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP-Filteren" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filter clients" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Schakel filteren van de client IPs in het bestand ~/.aMule/ipfilter.dat in." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filter servers" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Schakel filteren van de server IPs in het bestand ~/.aMule/ipfilter.dat in." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Lijst Opnieuw laden" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "Laadt de lijst met IPs om te filteren opnieuw uit het bestand ~/.aMule/" "ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Update nu" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Auto-update ipfilter bij het starten" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Level van Filteren:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Filter LAN IPs altijd" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Paranoïde behandeling van niet-kloppende IPs" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Weigert een pakket als de client ip anders is dan het ip waar het pakket van " "is ontvangen. Wees voorzichtig hiermee." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Gebruik systeemwijd ipfilter.dat indien beschikbaar" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Indien er geen lokaal ipfilter.dat gevonden wordt, sta gebruik van een " "systeemwijd ipfilter toe." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Schakel Online-Handtekening in" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Schakelt het schrijven van het OH bestand in, die kan gebruikt worden door " "externe applicaties om handtekeningen en dergelijke te maken." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Updatefrequentie (Seconden):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" "Verander de frequentie (in seconden) van de Online Handtekening updates." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Bewaar online-handtekeningbestand in: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Klik hier om de directory te selecteren die de Online Handtekening bestanden " "bevat." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filter binnenkomende berichten (behalve huidige chat):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filter alle berichten" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filter berichten van mensen niet op uw vriendenlijst" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filter berichten van onbekende clients" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filter berichten met (gebruik ',' als scheiding):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "voeg hier de woorden toe die amule moet filteren en berichten daarmee " "blokkeren" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Toon ontvangen berichten in de log" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Commentaren" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "" "Filter commentaren die de volgende tekens bevatten (gebruik ',' als " "scheiding):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Automatische verbinding met server zonder proxy" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Schakel aanmelding in" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Schakel gebruikersnaam/wachtwoord aanmelding in/uit" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Gebruikersnaam: " #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "De gebruikersnaam nodig om te verbinden met de proxy" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Wachtwoord:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Het wachtwoord nodig om te verbinden met de proxy" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Schakel Proxy in" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Schakel proxy ondersteuning in/uit" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Proxy type:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Proxy host:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "De proxy hostnaam" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Proxy poort:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "De proxy poort" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Verbind met:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Login op amule op afstand" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Gebruikersnaam" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Onthoud deze instellingen" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Schakel Uitgebreid Debug-Loggen in." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Open het bestand" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Bericht Categorie?n" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Wachtend..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Voeg geïmporteerden toe" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Probeer geselecteerde opnieuw" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Verwijder geselecteerde" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Gebeurtenistypes" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Statistieken en clients in wachtrij voor geselecteerd(e) bestand(en) : " "Sessie / Alle" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Actieve Uploads" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Procent van alle bestanden" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Alle bestanden" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Geselecteerde bestanden" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Alleen actieve uploads" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Toon Clients voor" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Opnieuw laden:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Laad uw gedeelde bestanden opnieuw" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Verstuur" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Verstuurt het opgegeven bericht." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Sluit deze chat-sessie." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Verbind met een server en/of Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Gedeelde Bestanden" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Uitgeschakeld [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/sec" msgstr[1] "bytes/sec" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "seconden" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "minuten" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "uren" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Dagen" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "alle" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "alle anderen" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Incompleet" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Gestopt" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Archief" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Tekst" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Actief" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Gebruikte configdir: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Wachten tot partbestand-conversiethread sterft..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Bezig met importeren van %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Tijdelijke map wordt gelezen" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Basisinformatie van download info bestand wordt opgehaald" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Doelbestand wordt aangemaakt" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Data van oud download bestand wordt geladen (%u van %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Data block wordt bewaard in nieuw enkel download bestand (%u van %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Bron downloadbestand informatie wordt opgehaald" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Download wordt toegevoegd en nieuw partbestand bewaard" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importeer deelbestanden" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Status" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Bestandshash" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Schijf: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Kies a.u.b. een map om te doorzoeken naar tijdelijke downloads! " "(onderliggende mappen worden meegenomen)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Wilt u dat de bron bestanden van succesvol ge?mporteerde bestanden " "verwijderd worden?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Verwijder bronnen?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "FOUT: Kon partbestand niet aanmaken" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Proberen backup van met-bestand te laden van %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "FOUT: Kon part.met bestand niet openen: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "FOUT: part.met bestand heeft grootte 0: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "FOUT: Ongeldige part.met bestandsversie: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "FOUT: %s (%s) is beschadigd (verkeerde tags: %s), kan bestand niet laden." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "FOUT: %s (%s) is beschadigd (verkeerde tagcount), kan bestand niet laden." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Poging om bestandsinfo te herstellen..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Naamloos bestand herstellen - zal proberen om het te herstellen als " "RecoverdFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Alle beschikbare bestands info hersteld :D - Poging om het te gebruiken..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Kon bestands info niet herstellen :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Kon %s (%s) niet openen" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "WAARSCHUWING: %s is mogelijk beschadigd (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "FOUT bij het bewaren van partbestand: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "IO fout bij het bewaren van partbestand: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Kon lengte van '%s' niet bepalen - gebruik %s bestand." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' heeft grootte 0 - %s bestand wordt gebruikt." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Kon bestand part.met.seeds niet bewaren voor %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "%i bron seed voor partbestand bewaard: %s (%s)" msgstr[1] "%i bron seeds voor partbestand bewaard: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "%i bron seed voor partbestand bewaard: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Fout bij het lezen van partbestands seeds bestand (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Beschadigd deel (%d) gevonden in %d deel bestand %s - FileResultHash |%s| " "FileHash |%s|" msgstr[1] "" "Beschadigd deel (%d) gevonden in %d delen bestand %s - FileResultHash |%s| " "FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Compleet deel (%i) gevonden in %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Klaar met opnieuw hashen %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Onverwachte fout tijdens het voltooien van %s. Bestand gepauzeerd" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Klaar met downloaden: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Verwijderen van bestand: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "WAARSCHUWING: Kan gedownload deel niet hashen - incomplete hashset voor '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "FOUT: Kan gedownload deel niet hashen - hashset incompleet (%s). Dit zou " "nooit mogen gebeuren" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "EOB bij het hashen van gedownload deel %u met lengte %u (max %u) van " "partbestand '%s' met lengte %u: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" "WAARSCHUWING: Niet voldoende vrije schijfruimte! Pauzeren van bestand: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Gedownload deel %i is beschadigd in bestand: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Beschadigd deel %i van %s hersteld -> Bespaarde bytes: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Toewijzen" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Onvoldoende schijfruimte" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Gedownload" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "FOUT: Kon partbestand '%s' niet openen" #: src/Preferences.cpp:632 msgid "System default" msgstr "Systeem standaard" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albanees" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabisch" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturisch" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Baskisch" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgaars" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Catalaans" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Chinees (Vereenvoudigd)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Chinees (Traditioneel)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Kroatisch" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Tsjechisch" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Deens" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Nederlands" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Engels (V.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estonisch" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Fins" #: src/Preferences.cpp:648 msgid "French" msgstr "Frans" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Gallisch" #: src/Preferences.cpp:650 msgid "German" msgstr "Duits" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Grieks" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebreeuws" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Hongaars" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italiaans" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italiaans (Zwitsers)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japans" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Koreaans" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Litouws" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Noors" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Pools" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugees" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugees (Braziliaans)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Roemeens" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Russisch" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Sloveens" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Spaans" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Zweeds" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turks" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Oekraïens" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Verander Taal" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "Er zijn geen vertalingen voor aMule geïnstalleerd" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "Geen talen beschikbaar" #: src/Preferences.cpp:906 msgid "no options available" msgstr "geen opties beschikbaar" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Ongeldige categorie gevonden, wordt overgeslagen" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "TCP poort kan niet hoger zijn dan 65532 omdat de server UDP poort de TCP " "poort + 3 is" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Standaard poort zal worden gebruikt (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Laten vallen van niet-bestaande gedeelde directory: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Verbinding" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Directories" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Servers" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Bestanden" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Beveiliging" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Interface" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filters" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Besturing op Afstand" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Online Handtekening" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Geavanceerd" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Gebeurtenissen" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Debugging" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "De volgende variabelen worden vervangen:\n" " %PARTFILE - volledig pad naar het bestand\n" " %PARTNAME - alleen bestandsnaam" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Verander deze instellingen niet tenzij u weet\n" "wat u doet, anders kunt u makkelijk\n" "dingen erger maken voor uzelf.\n" "\n" "aMule zal goed draaien zonder deze instellingen\n" "te wijzigen." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Kon Cfg niet verbinden met widget met ID %d en sleutel %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "Kon data niet overdragen van Cfg naar widget met ID %d en sleutel %s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Het type proxy waarmee u verbinding maakt" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "Kon data niet overdragen van Widget naar Cfg met ID %d en sleutel %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule moet opnieuw gestart worden om deze veranderingen toe te passen:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP poort veranderd.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP poort veranderd.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Poort voor externe verbinding veranderd.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Acceptatie voor externe verbinding veranderd.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Interface voor externe verbinding veranderd.\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Protocol Obfuscatie" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Uw Auto-update serverlijst is leeg.\n" "'Auto-update serverlijst bij het opstarten' wordt uitgeschakeld." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "U hebt externe verbindingen ingeschakeld maar geen wachtwoord ingesteld.\n" "Externe verbindingen kunnen niet ingeschakeld worden tenzij een geldig " "wachtwoord is ingesteld." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Taal veranderd.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Temp directory veranderd.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- ED2K netwerk ingeschakeld.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Zowel het eD2K als het Kad netwerk zijn uitgeschakeld.\n" "U kun niet verbinden tot u minimaal een netwerk inschakelt." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad zal niet starten als uw UDP poort is uitgeschakeld.\n" "Schakel de UDP poort in of schakel Kad uit." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "U MOET aMule nu opnieuw starten.\n" "Als u dat niet doet moet u niet klagen als er iets misgaat.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Uw Auto-update servers lijst is leeg.\n" "Vul a.u.b. minimaal een URL naar een geldig server.met bestand in.\n" "Klik op de knop \"Lijst\" hiernaast om een URL in te voeren." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Tijdelijke bestanden" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Binnenkomende bestanden" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Online Handtekeningen" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Kies een directory voor %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Blader naar videospeler" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Selecteer browser" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Uitvoerbare%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Bewerk serverlijst" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Voeg hier URL's toe om server.met bestanden te downloaden.\n" "Slechts een url per regel." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Update vertraging: %d seconde" msgstr[1] "Update vertraging: %d seconden" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Tijd voor gemiddeldengrafiek: %d minuut" msgstr[1] "Tijd voor gemiddeldengrafiek: %d minuten" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Schaal Verbindingengrafiek: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Grootte van Bestandsbuffer: %d byte" msgstr[1] "Grootte van Bestandsbuffer: %d bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Grootte van Uploadwachtrij: %d client" msgstr[1] "Grootte van Uploadwachtrij: %d clients" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Server verbinding verversingsinterval: %d minuut" msgstr[1] "Server verbinding verversingsinterval: %d minuten" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Server verbinding verversingstijd: Uitgeschakeld" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "uitgeschakeld" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Voer commando uit bij gebeurtenis '%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Schakel uitvoeren van commando's in kern in" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Kern commando:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Schakel uitvoeren van commando's in GUI in" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "GUI commando:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "De volgende variabelen worden vervangen:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "Min grootte moet kleiner zijn dan max grootte. Max grootte wordt genegeerd." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Zoekwaarschuwing" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Standaard" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Kad zoekopdracht kan niet worden uitgevoerd als Kad niet draait" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "eD2K zoekopdracht kan niet worden uitgevoerd als eD2K niet draait" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Onverwachte fout bij Kad zoekopdracht: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "BestandsID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Bestand" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Download in categorie" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "Verkrijg %s voor dit bestand" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Zoek gelijkwaardige bestanden (eD2k, lokale server)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Markeer als bekend bestand" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Kopieer eD2k link naar klembord" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Geannuleerd" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Nieuw" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Kon niet verbinden met een geobfusceerde server. Nogmaals proberen zonder " "obfuscatie." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Kon niet verbinden met een server in de lijst. Nogmaals proberen." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "eD2K netwerk is uitgeschakeld in voorkeuren, wordt niet mee verbonden." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "Geen geldige servers om mee te verbinden gevonden in serverlijst" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Verbonden met %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Verbinding gemaakt met: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Fatale Fout bij het proberen te verbinden. Internet verbinding kan uit zijn" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Verbinding verbroken met %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) lijkt dood te zijn." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) lijkt vol te zijn." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "" "Automatische verbinding naar server zal in %d seconde opnieuw proberen" msgstr[1] "" "Automatische verbinding naar server zal in %d seconden opnieuw proberen" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Verbinding kwijt" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Verbinden met %s (%s:%i) is mislukt." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "FOUT: Socket ongeldig op timeoutcheck" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Poging tot verbinden met %s (%s:%i) gaf time out." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Laat resultaat van DNS lookup ontvangen, wordt genegeerd." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Laden van server.met bestand: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Bestand server.met niet gevonden!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "Kon server.met bestand '%s' niet laden, onbekend formaat." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Kon server.met niet openen!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Server.met bestand beschadigd, ongeldig versielabel gevonden: 0x%x, grootte %" "i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i server in server.met gevonden" msgstr[1] "%i servers in server.met gevonden" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d server toegevoegd" msgstr[1] "%d servers toegevoegd" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Fout: het bestand 'server.met' is beschadigd: " #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "IO fout bij het lezen van know'server.met': " #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Server niet toegevoegd: [%s:%d] bevat geen geldige poort." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Server niet toegevoegd: Het IP van [%s:%d] is gefilterd of ongeldig." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Server niet toegevoegd: Server met IP:Poort [%s:%d] al gevonden in lijst." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Server toegevoegd: Server op [%s:%d] met naam '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "U bent verbonden met de server die u probeert te verwijderen. Vebreek a.u.b. " "eerst de verbinding." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Kon '%s' niet openen" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Kon server.met niet opslaan!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Ongeldige URL" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Downloaden van serverlijst vanaf %s voltooid" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Geen serverlijstadres gevonden in 'addresses.dat'. Plaats een geldig " "serverlijstadres in dit bestand om uw serverlijst automatisch te updaten" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Begin downloaden serverlijst van %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "WAARSCHUWING: ongeldige URL opgegeven voor het auto-updaten van servers: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "Geen geldige server.met auto-download url in addresses.dat" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Kon serverlijst niet downloaden van %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "De lokale server wordt door de IPFilters weggefilterd, er wordt verbonden " "met een andere server!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Servernaam" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Adres" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Poort" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Beschrijving" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Gebruikers" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Statisch" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versie" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "U bent verbonden met een server die u probeert te verwijderen. Verbreek de " "verbinding eerst aub. De server is NIET verwijderd." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Onbekende naam)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Weet u zeker dat u de statische server %s wilt verwijderen" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Servers (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Server" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Verbind met server" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Markeer server als statisch" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Markeer server als niet-statisch" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Markeer servers als statisch" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Markeer servers als niet-statisch" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Verwijder server" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Verwijder servers" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Verwijder alle servers" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Kopieer eD2k links naar klembord" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Verbind opnieuw met server" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Weet u zeker dat u alle servers wilt verwijderen?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Weet u zeker dat u de geselecteerde server wilt verwijderen?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Weet u zeker dat u de geselecteerde servers wilt verwijderen?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "FOUT: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "WAARSCHUWING: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Nieuwe clientid is %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "WAARSCHUWING: U heeft een laag ID gekregen!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tDit komt waarschijnlijk omdat u achter een firewall of router zit." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tVoor meer informatie, bekijk http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Onbekende server info ontvangen! - te kort" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "%d nieuwe server ontvangen" msgstr[1] "%d nieuwe servers ontvangen" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Bewaren van server-lijst compleet." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Server keurde laatste opdracht af" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Fout pakket ontvangen van server: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Onafgehandelde fout bij het verwerken van pakket van de server: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Kan DNS thread niet aanmaken voor het verbinden met %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "Server IP %s (%s) is gefilterd. Wordt niet mee verbonden." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "maakt gebruik van protocol obfuscatie." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Verbinding wordt gemaakt met %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Kan dns niet vinden voor server %s: Kan niet verbinden!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Server niet toegevoegd: Geen IP of hostnaam opgegeven." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Server niet toegevoegd: Ongeldige server-poort opgegeven." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "eD2k Status:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kademlia Status:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "Draaiend in LAN modus" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Draaiende" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Status:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Verbindingsstatus:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Firewalled - open TCP poort %d in uw router of firewall" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "UDP Verbindingsstatus:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Firewalled - open UDP poort %d in uw router of firewall" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Firewalled status: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "No buddy nodig - TCP poort open" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "No buddy nodig - UDP poort open" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Geen buddy" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Aan het verbinden met buddy" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Verbonden met buddy op %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Geïndexeerde Bronnen :" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Geïndexeerde zoekwoorden:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Geïndexeerde notities:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Geïndexeerde load:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Gemiddelde Gebruikers:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Gemiddelde Bestanden:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Niet draaiende" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Bestand %s wordt toegevoegd aan gedeelde bestanden" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] " %i bekend gedeeld bestand gevonden" msgstr[1] " %i bekende gedeelde bestanden gevonden" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "%i bekend gedeeld bestand gevonden, %i onbekend" msgstr[1] "%i bekende gedeelde bestanden gevonden, %i onbekend" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "FOUT: Poging om %s te delen" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Gedeelde directory niet gevonden, wordt overgeslagen: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Geen deelbare bestanden gevonden in directory: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Gebruikersnaam" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Downloadsnelheid" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Uploadsnelheid" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Beschikbare Delen" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "Uploadstatus" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Download Status" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Oorsprong" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Lokale Bestandsnaam" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "Deelt Bestandenlijst" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Aanvragen" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Geaccepteerde Aanvragen" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Overgebrachte Data" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Deelverhouding" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Ontvangen Delen" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Complete Bronnen" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Directory Pad" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Voeg Commentaar/Waardering toe" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Bewerk Commentaar/Waardering" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Hernoemen" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Voeg bestanden in verzameling toe aan overdrachtenlijst" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Kopieer magnet &URI naar klembord" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Kopieer eD2k link naar klembord (&Source)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Kopieer eD2k link naar klembord (Bron) (&With Crypt options)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Kopieer eD2k link naar klembord (&Hostnaam)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "Kopieer eD2k link naar klembord (Hostnaam) (Met &Crypt opties)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Kopieer eD2k link naar klembord (&AICH info)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Kopieer eD2k link naar klembord (&AICH info)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "U heeft een Hoog ID nodig om een geldige bronlink te maken" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Gedeelde Bestanden (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[PartBestand]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Bestandsnaam Op Afstand" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Geuploade Data (Sessie (Totaal)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Totale Overhead (Pakketten): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Bestand Aanvraag Overhead (Pakketten): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Bron Uitwisseling Overhead (Pakketten): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Server Overhead (Pakketten): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Kad Overhead (Pakketten): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Crypt overhead (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Actieve Uploads: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Wachtende Uploads: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Totaal van succesvolle upload sessies: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Totaal van mislukte upload sessies: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Gemiddelde upload tijd: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Gedownloade Data (Sessie (Totaal)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Gevonden Bronnen: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Actieve Download (blokken): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Sessie UL:DL Verhouding (Totaal): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Gemiddelde downloadsnelheid (Sessie): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Gemiddelde uploadsnelheid (Sessie): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Max downloadsnelheid (Sessie): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Max uploadsnelheid (Sessie): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Hernieuwde verbindingen: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Tijd Sinds Eerste Overdracht: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Verbonden Met Server Sinds: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Actieve Verbindingen (schatting): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Max Verbinding Grens Bereikt: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Gemiddelde Verbindingen (schatting): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Aantal Piek Verbindingen (schatting): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Clients" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Onbekend: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Gefilterd: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Geband: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Totaal: %i Bekend: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Werkende Servers: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Mislukte Servers: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Totaal: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Verwijderde Servers: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Gefilterde Servers: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Gebruikers op Werkende Servers: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Bestanden op Werkende Servers: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Totaal Gebruikers: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Totaal Bestanden: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Server Bezetting: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Aantal Gedeelde Bestanden: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Totale grootte van Gedeelde Bestanden: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Gemiddelde bestandsgrootte: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Besturingssysteem" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Niet Ontvangen" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Actieve verbindingen (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Niet beschikbaar" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Nooit" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Commando `%s' met pid `%d' is geëindigd met statuscode '%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Voer uit en sluit af." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Ongeldig IP formaat: Gebruik xxx.xxx.xxx.xxx:xxxx\n" # Translation 'argument'? #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Dit commando heeft een argument nodig. Geldige argumenten: 'all', " "bestandsnaam, of een getal.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Verwerken per hash:" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Verwerken per bestandsnaam" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Dit commando heeft een argument nodig. Geldige argumenten: een " "bestandshash.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Niet een geldig nummer\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Geen geldige hash (lengte moet precies 32 tekens zijn)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Type '%s' voor meer help.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Downloadgrootte: %i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Aanvraag mislukt met een onbekende fout." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Bewerking was succesvol." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Aanvraag mislukte met de volgende fout: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "IP filteren van clients is %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "UIT" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "AAN" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "IP filteren van servers is %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Huidige IPFilter Level is %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Bandbreedte grenzen: Up: %u kB/s, Down: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Verbonden met %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Aan het verbinden" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "firewalled" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Download:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Upload:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Clients in wachtrij:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Totale Bronnen:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Aantal zoekresultaten: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Voortgang zoeken: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Voortgang zoeken niet beschikbaar" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Ongeldig antwoord van de server ontvangen, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Toon korte status informatie." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Toon verbindingsstatus, huidige up-/downloadsnelheden, etc.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Toon volledige statistieken boom." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Optioneel kan een getal van 0-255 worden meegegeven als argument aan dit\n" "commando, wat aangeeft hoeveel ingangen van de client versie subbomen " "getoond\n" "moeten worden. 0 of weglaten betekent 'onbegrensd'.\n" "\n" "Voorbeeld: 'statistics 5' toont alleen de bovenste 5 versies van elk client " "type.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Sluit aMule af." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Sluit de kern op afstand (amule/amuled) af.\n" "Dit sluit ook de textclient af, omdat die onbruikbaar is zonder een\n" "draaiende kern.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Laad gegeven object opnieuw." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Laad gedeelde-bestandenlijst opnieuw." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Laad IP-Filtertabel opnieuw." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Laad huidige IP-filtertabel opnieuw." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Update IP-filtertabel van URL." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Als de URL wordt weggelaten wordt de URL uit de voorkeuren gebruikt." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Verbind met het netwerk." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Dit verbindt met alle netwerken die ingeschakeld zijn in Voorkeuren.\n" "U kunt ook een server adres in de vorm IP:Poort specificeren om alleen met " "die\n" "server te verbinden. Het IP moet een decimaal IPv4 adres met punten zijn,\n" "of een DNS naam." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Verbind alleen met eD2K." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Verbind alleen met Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Verbreek verbinding met het netwerk." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" "Dit verbreekt de verbinding met alle netwerken waarmee nu verbinding is.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Verbreek alleen verbinding met eD2K." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Verbreek alleen verbinding met Kad." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Voeg een eD2k- of magnet-link toe aan de kern." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "De toe te voegen eD2k link kan zijn:\n" "*) een bestandslink (ed2k://|file|...), het wordt toegevoegd aan de download " "wachtrij,\n" "*) een serverlink (ed2k://|server|...), het wordt toegevoegd aan de " "serverlijst,\n" "*) of een serverlijst-link, in dat geval worden alle servers in de lijst " "toegevoegd aan de\n" " serverlijst.\n" "\n" "De magnet-link moet de eD2k hash en bestandsgrootte bevatten.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Stel een voorkeurswaarde in." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Stel voorkeuren voor IP-filter in." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Schakel IP filteren van zowel clients als servers in." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Schakel IP filteren van zowel clients als servers uit." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Schakel IP filteren van clients in/uit." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Schakel IP filteren van clients in." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Schakel IP filteren van clients uit." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Schakel IP filteren van servers in/uit." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Schakel IP filteren van servers in." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Schakel IP filteren van servers uit." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Selecteer IP filter niveau." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Geldige filterniveaus zijn in de reeks 0-255, en zijn standaard (initiele)\n" "waarde is 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Stel bandbreedte grenzen in." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "De waarde gegeven aan deze commando's moet in kilobytes/sec zijn.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Stel upload bandbreedte grens in." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "De waarde gegeven aan deze commando's moet in kilobytes/sec zijn.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Stel download bandbreedte grens in." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Verkrijg en toon een voorkeurswaarde." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Verkrijg voorkeuren voor IP-filter." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Verkrijg status van IP-filter voor zowel clients als servers." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Verkrijg status van IP-filter alleen voor clients." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Verkrijg status van IP-filter alleen voor servers." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Verkrijg niveau van IP-filter." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Verkrijg bandbreedte grenzen." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Voer een zoekopdracht uit" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Een zoektype moet opgegeven worden door het type te geven:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Voorbeeld: 'search kad bestand' voert een kad zoekopdracht uit naar \"bestand" "\".\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Voer een globale zoekopdracht uit." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Voer een lokale zoekopdracht uit" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Voer een kad zoekopdracht uit" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Toon de resultaten van de laatste zoekopdracht." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Lever de resultaten van de vorige zoekopdracht op.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Toon de voortgang van een zoekopdracht." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Toon de voortgang van een zoekopdracht.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Begin met downloaden van een bestand" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Het nummer van een bestand uit de laatste zoekopdracht moet gegeven worden.\n" "Voorbeeld: 'download 12' begint het bestand met nummer 12 uit de vorige " "zoekopdracht te downloaden.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Pauzeer dowload." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Verder gaan met download." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Download annuleren." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Stel downloadprioriteit in." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Stel prioriteit van een download in op Laag, Normaal, Hoog of Auto.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Stel prioriteit in op laag." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Stel prioriteit in op normaal." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Stel prioriteit in op hoog." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Stel prioriteit in op auto." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Toon wachtrij/lijsten." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Toon upload/download wachtrij, server lijst of gedeelde-bestandenlijst.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Toon upload wachtrij." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Toon download wachtrij." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Toon log." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Toon servers lijst." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Log leegmaken." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Afgekeurd commando, gebruik '%s' in plaats hiervan." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Dit is een afgekeurd commando, en kan in de toekomst verwijderd worden.\n" "Gebruik '%s' in de plaats.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMule tekst client" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Oude AICH hashsets in '%s' worden omgezet in 64b in '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "WAARSCHUWING: De bestandsnaam '%s' is ongeldig en is gewijzigd in '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "WAARSCHUWING: Het bestand '%s' bestaat al, bestandsnaam van nieuw bestand " "gewijzigd in '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Weet u zeker dat u wilt annuleren en alle bestanden in deze categorie " "verwijderen?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Bevestiging Nodig" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Enkel 99 categorieën worden ondersteund." #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Te veel categorieën!" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Alle anderen" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Selecteer filter" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Voeg categorie toe" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Bewerk categorie" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Verwijder categorie" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Kon bestand niet openen (%s), wordt verwijderd uit de lijst van gedeelde " "bestanden." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Hashset opgevraagd voor onbekend bestand: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Verder gaan met uploads van bestand: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Stoppen van upload van bestand: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Kon commando `%s' niet uitvoeren bij gebeurtenis `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Download voltooid" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Het volledige pad naar het bestand." # re-check this #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "De naam van het bestand zonder de pad component." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "De eD2k hash van het bestand." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "De grootte van het bestand in bytes." # Recheck last word #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Cumulatieve download activiteitsduur." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Nieuwe chatsessie begonnen" # ambiguous in EN, check translation #: src/UserEvents.h:85 msgid "Message sender." msgstr "Afzender bericht." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Geen schijfruimte meer" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Schijfpartitie." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Fout bij completeren" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Bestand nummer %u wordt verwerkt: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" "U heeft om deel hashes gevraagd (Alleen gebruikt voor bestanden > 9,5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Niet bestaand bestand !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, de aMule eD2k link maker" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Welkom!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Invoer parameters" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Bestand om te Hashen" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Voeg Optionele URLs toe aan dit bestand" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Voer hier het bestand in waarvan u de eD2k link wilt laten berekenen" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Voer hier de URL in die u wilt toevoegen aan de eD2k link: Voeg / toe aan " "het eind om aLinkCreator de huidige bestandsnaam toe te laten voegen" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Verwijder" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Maak link met deel-hashes" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Help om nieuwe en zeldzame bestanden sneller te verspreiden, ten koste van " "een verhoogde linkgrootte" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4 BestandsHash" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k BestandsHash" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k link" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Opslaan" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Kopieer naar klembord" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Openen" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Open een bestand om zijn eD2k link te berekenen" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Kopieer berekende eD2k link naar klembord" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Opslaan als" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Bewaar berekende eD2k link naar bestand" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Over aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Selecteer het bestand waarvoor u de eD2k link wilt laten berekenen" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Kan het klembord niet openen" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Er is nu niets om te kopiëren !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Selecteer het bestand voor uw berekende eD2k link" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Kon niet openen " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Voer a.u.b. een niet lege bestandsnaam in" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Er is nu niets om te bewaren !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, de aMule eD2k link maker\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps van http://www.everaldo.com en http://www.icomania.com\n" "en http://jimmac.musichall.cz/ikony.php3\n" "\n" "Verspreid onder de GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Aan het hashen..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator is aan het werk voor u" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "MD4 Hash word berekend..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "eD2k Hashes worden berekend..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Afgebroken !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Gedaan in %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "U heeft deze URL al toegevoegd !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Voer a.u.b. een niet lege URL in" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Kon %s niet openen" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i dag(en) %i u(u)r(en) %i min %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uu %0umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uu %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxcas, aMule Online Statistieken" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Maximum DL snelheid sinds wxCas draait" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Absolute Maximum DL snelheid tijdens vorige keren dat wxCas draaide" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Systeem" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Stop Auto Verversen" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Bewaar Online Statistieken figuur" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Print Online Statistieken figuur" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Voorkeur instellingen" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Over wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Begin Auto Verversen" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Auto Verversen gestopt" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Auto Verversen gestart" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Bewaar Statistieken FIguur" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMule Online Statistieken" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Er was een probleem tijdens het printen.\n" "Misschien is uw printer niet goed ingesteld?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Aan het printen" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule OnLine Handtekening Statistieken\n" "\n" "(c) 2004 ThePolish \n" "\n" "Gebaseerd op CAS van Pedro de Oliveira \n" "\n" "Verspreid onder de GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh oh, aMule draait niet..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule draait" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule draait, maar niet verbonden" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule maakt verbinding..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh Oh, aMule status is onbekend..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " draait " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " is gestopt !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " is niet verbonden !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " is aan het verbinden..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " doet iets raars, controleer het !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " is verbonden met " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "uit" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " is aan " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " met" #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Totale Download: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Sessie Download: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Download: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Deelt: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " bestand(en), Clients in wachtrij: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Tijd: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr "aan" #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Gemiddelde Systeem Belasting (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Systeem uptime: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Directory die het bestand amulesig.dat bevat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Voer hier de directory in waar uw amulesig.dat bestand is" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Tijd tussen de verversingen in seconden" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Genereer een status figuur bij elke verversing" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" "Voer hier de directory in waar u het statistieken figuur wilt laten genereren" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Upload uw status figuur regelmatig naar een FTP server" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP Url" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP Pad" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Voer hier de URL in van uw FTP server" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Voer hier de directory in waar uw status figuur op de FTP server moet komen" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Gebruiker" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Voer hier de Gebruikersnaam in om in te loggen op uw FTP server" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Voer hier het Wachtwoord in om in te loggen op uw FTP server" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Tijd tussen de FTP updates in minuten" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Controleer" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Directory die uw handtekening bestand bevat" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Directory waar het statistieken figuur gegenereerd moet worden" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Laadt template " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Webserver HTTP poort" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Gebruik UPnP port forwarding voor webserverpoort" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP poort" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Gebruik gzip compressie" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Wachtwoord voor volledige toegang tot webserver" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Gast wachtwoord voor webserver" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Sta gast toegang toe" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Weiger gast toegang" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Laad/bewaar webserverinstellingen van/naar aMule op afstand" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMule config bestand pad. NIET DIRECT GEBRUIKEN!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Schakel PHP interpreter uit (verouderd)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Compileer PHP pagina's opnieuw bij elke aanvraag" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule Web Server" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "Webclient verbinding geaccepteerd\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "FOUT: kan verbinding van web client niet accepteren\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Aanvraag mislukt met de volgende fout: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Indexbestand niet gevonden: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sessie verlopen - login wordt aangevraagd\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sessie ok, ingelogd\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sessie ok, niet ingelogd\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Geen sessie geopend - login wordt aangevraad\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sessie aangemaakt - login wordt aangevraagd\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Aanvraag wordt verwerkt [origineel]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Geen wachtwoord opgegeven, login wordt niet toegestaan." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Controleren van wachtwoord\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Wachtwoordhash ongeldig\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Wachtwoord ok\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Wachtwoord fout\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" "U heeft geen wachtwoord ingevoerd. Een leeg wachtwoord is niet toegestaan.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Loguit aangevraagd\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Aanvraag wordt verwerkt [omgeleid]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Partbestand %s (%s) heeft geen seeds bestand" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Partbestand %s (%s) heeft een leeg seeds bestand" #, fuzzy #~ msgid "Download status" #~ msgstr "Download Status" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Update vertraging : %d seconde" #~ msgstr[1] "Update vertraging : %d seconden" #~ msgid "Transferring" #~ msgstr "Overdragen" #, fuzzy #~ msgid "QR: ???" #~ msgstr "QR: %u" #~ msgid "QR: %u" #~ msgstr "QR: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "In Wachtrij" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - toon voortgang van een zoekopdracht" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Begonnen met het maken van MD4 en AICH hash voor bestand: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Begonnen met het maken van MD4 hash voor bestand: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Begonnen met het maken van AICH hash voor bestand: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "WAARSCHUWING: Kon origineel '%s' niet verwijderen na het maken van backup" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "WAARSCHUWING: Kon %s niet verwijderen" # What is QR abbr for? #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Waardering (totaal):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Probeer om volledige delen naar alle uploads te overdragen" #~ msgid "Networks window" #~ msgstr "Netwerken venster" #~ msgid "Searches window" #~ msgstr "Zoekvenster" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Downloaden" #~ msgid "Shared files window" #~ msgstr "Gedeelde bestanden venster" #~ msgid "Messages window" #~ msgstr "Berichtenvenster" #~ msgid "Statistics graph window" #~ msgstr "Statistiekenvenster (grafieken)" #~ msgid "Preferences settings window" #~ msgstr "Voorkeuren instellingen venster" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Traybalk-pictogram kwijtgeraakt, poging tot opnieuw maken ..." #~ msgid "Transfers" #~ msgstr "Overdrachten" #~ msgid "Files transfers window" #~ msgstr "Bestands overdrachten venster" #~ msgid "Unban" #~ msgstr "Maak ban ongedaan" #~ msgid "Show Uploads" #~ msgstr "Laat Uploads zien" #~ msgid "Show Queue" #~ msgstr "Laat Wachtrij zien" #~ msgid "Select View" #~ msgstr "Selecteer Weergave" #~ msgid "Client Software" #~ msgstr "Client Software" #~ msgid "Waited" #~ msgstr "Gewacht" #~ msgid "Upload Time" #~ msgstr "Upload Tijd" #~ msgid "Upload/Download" #~ msgstr "Upload/Download" #~ msgid "Remote Status" #~ msgstr "Remote Status" #~ msgid "File Priority" #~ msgstr "Bestandsprioriteit" #~ msgid "Score" #~ msgstr "Score" #~ msgid "Asked" #~ msgstr "Gevraagd" #~ msgid "Last Seen" #~ msgstr "Laatst Gezien" #~ msgid "Entered Queue" #~ msgstr "In Wachtrij Gekomen" #~ msgid "Transferred Up" #~ msgstr "Ge-upload" #~ msgid "Transferred Down" #~ msgstr "Ge-download" #~ msgid "Userhash" #~ msgstr "Userhash" #~ msgid "Encrypted" #~ msgstr "Versleuteld" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "%d vlaggen bitmaps geladen." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Toont Upload / Up-wachtrij" #~ msgid "Clients on queue :" #~ msgstr "Clients in wachtrij :" #~ msgid "Current Session" #~ msgstr "Huidige Sessie" #~ msgid "Total" #~ msgstr "Totaal" #~ msgid "Requested :" #~ msgstr "Opgevraagd :" #~ msgid "Create backup for preview" #~ msgstr "Maak backup voor voorbeeld" #~ msgid "Files Transfers Window" #~ msgstr "Bestands Overdrachten Venster" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Totaal Gebruikers: %s | Totaal Bestanden: %s" #~ msgid "HTTP download thread ended" #~ msgstr "HTTP download thread beëindigd" #~ msgid "Host: %s:%i\n" #~ msgstr "Host: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Antwoord: %i (Fout: %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "WAARSCHUWING: Leeg antwoord bij het aanmaken van stream" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "FOUT: Redirection code ontvangen zonder URL" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country(): Kon landengegevens niet laden uit " #~ msgid "Get IPFilter level." #~ msgstr "Verkrijg IPFilter niveau." #~ msgid "Makes a search." #~ msgstr "Voert een zoekopdracht uit." #~ msgid "Killed!" #~ msgstr "Gedood!" #~ msgid "Using amuleweb in '%s'." #~ msgstr "Amuleweb wordt gebruikt in '%s'" #~ msgid "Shutting down aMule..." #~ msgstr "aMule wordt afgesloten..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "De volgende opties zijn vanwege beveiligingsredenen gewijzigd in deze " #~ "versie:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Protocol Obfuscatie ingeschakeld voor binnenkomende en uitgaande " #~ "verbindingen.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Serverlijst updaten van andere servers en clients uitgeschakeld.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Voor meer informatie over de reden voor deze veranderingen, zoek\n" #~ "op de aMule wiki op http://wiki.amule.org naar \"fake servers\".\n" #~ "Het is belangrijk dat u alle nepservers uit uw serverlijst verwijderd om " #~ "aMule goed te laten werken." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "Verder zijn de browser instellingen gereset naar de systeem standaard. " #~ "Configureer a.u.b. uw browser opties opnieuw indien nodig.\n" #~ msgid "Fetching status..." #~ msgstr "Status wordt opgehaald..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Gebruikers: E: %s K: %s | Bestanden E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Client %s op IP:Poort %s:%d gebruikt %s %s %s" amule_2.3.1+git20151120.0023527bc2.orig/po/nn.po0000644000175000017500000062427512611472361017114 0ustar morphmorph# translation of nn.po to # Norwegian Nynorsk translations for aMule package. # This file is distributed under the same license as the aMule package. # # # , 2007. # , 2007. # Hallvor Brunstad , 2008. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2008-06-10 23:09+0200\n" "Last-Translator: Hallvor Brunstad \n" "Language-Team: \n" "Language: nn\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" "X-Generator: KBabel 1.11.4\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Legg til ein kamerat" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Du må skrive inn ein gangbar IP og port!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informasjon" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Den innskrivne brukarhashen er ikkje gyldig!" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "Greidde ikkje å opne %s·(%s)" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "ÅTVARING: Du kan ikkje leggje deg sjølv til som kjelde for ei eD2k lenkje " "medan du har ein lågid." #: src/amule.cpp:229 #, fuzzy msgid "Now, exiting main app..." msgstr "" "\n" "Ok,·avsluttar·%s...\n" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Mislukka" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 #, fuzzy msgid "aMule shutdown completed." msgstr "Nedlasting fullført" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "Stadfesting av avslutting" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "Ny ekstern kopling akseptert" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "ÅTVARING" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Dine lokale innstilingar har vorte endra til opprinnelege " "systeminnstillingar på grunn av konfigurasjonsending. Beklager." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Du har ingen tenarar i tenarlista.\n" "Vil du at aMule skal laste ned ei ny liste no?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Nedlasting av tenarliste" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "vevtenar køyrer på pid %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Du freista å køyre vevtenar ved oppstart, men binærfila amuleweb kan ikkje " "køyrast. Installer pakken som inneheld vevtenaren til aMule, eller kompiler " "aMule med --enable-webserver og køyr make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "FEIL" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Greidde ikkje å knyte portar til adressa: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Port·%u er ikkje tilgjengeleg. Du vil få LågID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Port·%u·er ikkje tilgjengeleg!\n" "\n" "Dette betyr at du vil vere LågID.\n" "\n" "Sjekk nettverket ditt for å vere viss på at porten er open for inn- og " "utgåande trafikk." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Greidde ikkje å lage OnlineSigfil" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Greidde ikkje å lage aMule si OnlineSigfil." #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Dei valte lokale innstillingane ser ikkje ut til å vere installerte på " "maskina di. (Merk: Eg freistar å setje dei likevel)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Dette er første gongen du køyrer aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Denne utgåva er ei testutgåve, oppdatert dagleg, og\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "vi gir ingen garanti for skade eller nedbrenning av huset ditt,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "eller drep hunden din. Men det *burde* vere trygt å nytte uansett.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Meir informasjon, brukarstøtte og nye utgåver kan verte funne på heimesida " "vår.\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "på www.aMule.org, eller på IRC-kanalen vår #aMule·på·irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Vér god å rapportere feil til http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Mappa spesifisert for nettsignaturar er UGANGBAR!\n" " Nettsignaturar vert DEAKTIVERT fram til du ordnar det i innstillingar." #: src/amule.cpp:1116 #, fuzzy msgid "Server hostname notified" msgstr "Tenarnamn:" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Henting av diskplass for fila '%s' mislukka: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "FEIL: Greier ikkje å opne loggfila" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "ÅTVARING: loggfila er tom. Noko er gale." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Loggen har vorte nullstilt" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Tenarmelding: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Klarte ikkje å laste ned nodelista." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Klarte ikkje å opne den nedlaste utgåvesjekkfila" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Korrupt utgåvesjekkfil" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Du nyttar ei utdatert utgåve av aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Di utgåve av aMule er %i.%i.%i og den siste utgåva er %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Den siste utgåva finst alltid på http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "ÅTVARING: Utgåva di av aMule er utdatert: %i.%i.%i·<·%li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Utgåva di av aMule er oppdatert." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Klarte ikkje å laste ned utgåvesjekkfila" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Brukarar: %s | Filer: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Brukarar: E %s K: %s | Filer: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Ingen valde nettverk" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "med LågID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "med HøgID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Tilkopla %s·%s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Koplar til %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Fråkopla eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad starta" #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad stogga." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Tilkopla Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Tilkopla Kad (brannmura)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Fråkopla Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Kad kan ikkje nyttast dersom UDP-porten er deaktivert i innstillingar. " "Startar ikkje." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Kad-nettverket er deaktivert i innstillingar. Koplar ikkje til." #: src/amuled.cpp:589 #, fuzzy msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "FEIL: aMule daemon kan ikkje nyttast dersom eksterne koplingar er " "deaktiverte. For å aktivere eksterne koplingar må du anten nytte vanleg " "aMule, starte amuled med valet --ec-config eller set lykelen " "\"AcceptExternalConnections\" til 1 i fila ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "Feil: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Dette er aMule %s basert på eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Køyrer på %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Vitje http://www.amule.org for å sjekke om ei ny utgåve er tilgjengeleg." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "FATAL FEIL: Greidde ikkje å lage tidtakar" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "aMule fjernkontroll" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Bilete:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: P2P brukarruting bygd på XOR metric.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Melding" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Koplar til" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Koplar til" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Fråkopla" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Brannmura" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Tilkopla" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Koplar til" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Av" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Avbryt" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Stopp inneverande oppkoplingsfreistingar" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Kople frå" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Kople frå dei aktive nettverka" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Kople til" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Kople til dei valde nettverka" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Opp:·%.1f(%.1f)·|·Ned:·%.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Opp:·%.1f·|·Ned:·%.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule·(%s·|·Tilkopla)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule·(%s·|·Fråkopla)" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "Vil du verkeleg avslutte aMule?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Stadfesting av avslutting" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Skinnkatalogen '%s' finst ikkje" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "ÅTVARING: Greidde ikkje å opne hudfila '%s' for lesing" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Nettverk" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Nettverksavindauge" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Søk" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Søkjevindauge" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Nedlastingar" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "Lastar ned" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Delte filer" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Vindauge for delte filer" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Meldingar" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Meldingsvindauge" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistikk" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Statistikkgrafvindauge" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Innstillingar" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Innstillingsvalsvindauge" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importér" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Verkty for delfilimport" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Om" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Om/hjelp" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "ed2k nettverk" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Kad nettverk" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Ikkje noko nettverk" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "FATAL FEIL: Greidde ikkje å lage tidtakar" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Kople til aMule over nettet" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "FATAL FEIL: Greidde ikkje å lage tidtakar" #: src/amule-remote-gui.cpp:274 #, fuzzy msgid "Going to event loop..." msgstr "Freistar å hente fram att filinformasjon..." #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "Koplar til" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Oppkopling mislukka " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Alle" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Ukjend" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Greidde ikkje å hente delte filer frå brukar '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Falsk eMuleutgåve %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Falsk eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Falsk eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x·(basert på eMule·v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Brukarnamn: %s·ID:·%u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Etterspurt: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Filstatistikk for denne økta: Godkjende %d av %d etterspurnad, %s overført\n" msgstr[1] "" "Filstatistikk for denne økta: Godkjende %d av %d etterspurnader, %s " "overført\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Filstatistikk for alle økter: Godkjende %d av %d etterspurnad, %s overført\n" msgstr[1] "" "Filstatistikk for alle økter: Godkjende %d av %d etterspurnader, %s " "overført\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Etterspurt ukjend fil" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Melding filtrért frå '%s'·(IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Ny melding frå '%s'·(IP:%s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Brukar·%s (%u)·etterspurte·lista·over·delte·filer·for·katalogen·%s ->·nekta" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, fuzzy, c-format msgid "WARNING: %s cannot be opened." msgstr "ÅTVARING: known.met let seg ikkje opne." #: src/CanceledFileList.cpp:61 #, fuzzy msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "ÅTVARING: Kjendfillista er korrupt; inneheld ugangbar overskrift." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "IO feil underlesing av known.met fila: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "Feil under lagring av known.met fila: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategori" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Ny kategori" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Vél ei mappe for innkomande filer" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Du må skrive inn eit namn på kategorien!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Du mp skrive inn ein sti for kategorien!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Greidde ikkje å skape innkomande katalog for kategorien. Vér god å skrive " "inn ein gangbar sti!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Lynmeldingsøkt starta: %s·(%s:%u)·-·%s·%s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "***·Tilkopla klient·***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "***·Koplar til klient·***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Greidde ikkje å kople til klient / Kopling mista ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Stengje faneblad" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Stengje alle faneblad" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Stengje andre faneblad" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Legg til kameratar" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Kredittfil lasta, %u kjend klient" msgstr[1] "Kredittfil lasta, %u kjende klientar" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Kredittar forelda for %u klient!" msgstr[1] " - Kredittar forelda for %u klientar!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Inga 'cryptkey.dat' fil funne - opprettar." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Klientdetaljar" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LågID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HøgID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Aktivert" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Støtta" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Ikkje støtta" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Deaktivert" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Tilkopla" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Fråkopla" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f·kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Ikkje ferdig" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Kjeltring" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Granska - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Ikkje tilgjengeleg" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Brukar %s·(%u) etterspurde liste over dei delte filene dine -> Godteke" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Brukar·%s (%u)·etterspurde·liste·over·dei·delte·filene·dine·-> Nekta" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "Brukar %s·(%u) etterspurte lista di over delte katalogar -> Godteke" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "Brukar·%s (%u)·etterspurte·lista·di·over·delte·katalogar·->·Nekta" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Brukar %s·(%u) etterspurte lista over delte filer for katalogen %s·-> godteke" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Brukar·%s (%u)·etterspurte·lista·over·delte·filer·for·katalogen·%s ->·nekta" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Brukar %s·(%u) deler katalogen %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Brukar %s·(%u) sende ikkje etterspurte delte kataloger." #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "Brukar %s·(%u) sende liste over delte filer for katalogen %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Brukar %s·(%u) er ferdig med å sende liste over delte filer" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Brukar%s·(%u) sende ikkje etterspurt liste over delte filer" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "Brukar %s·(%u) nekta tilgang til delte kataloger/filer" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Filkommentarar" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Brukarnamn" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Filnamn" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Verdi" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Kommentar" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Ingen kommentarar" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u kommentar" msgstr[1] "%u kommentarar" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Lå]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto·[No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto·[Hø]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Svært låg" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Låg" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Vanleg" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Høg" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Svært høg" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Offentleggjering" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Spør" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Koplar til gjennom tenar" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Kø full" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "I kø" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Lastar ned" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Tek imot hashsett" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Ingen naudsynte delar" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Greier ikkje å kople LågID til LågID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "For mange koplingar" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Koplar til gjennom Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "For mange kadkoplingar" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Nekta" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Koplingsfeil" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Fjern kø full" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Gamal MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Ny MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMulekompatibel" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Lokal tenar" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Fjern tenar" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Kjeldeutveksling" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passiv" #: src/DataToText.cpp:133 msgid "Link" msgstr "Lenkje" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Kjeldefrø" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Ferdig" #: src/DataToText.cpp:146 msgid "In progress" msgstr "I framdrift" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "FEIL: Tom for diskplass" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "FEIL: Delfil ikkje funne" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "FEIL: Mislukka IO!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "FEIL: Mislukka!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "I kø" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Lastar allereie ned" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Ukjend eller dårleg format på tempfil." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Storleik" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Overført" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Fart" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Framdrift" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Kjelder" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioritet" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Status" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Attståande tid" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Sist sett komplett" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Sist motteke" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Er du viss på at du vil slette den valde fila?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Er du viss på at du vil slette dei valte filene?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Tilbakemelding frå: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Automatisk" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "%Stopp" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pause" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Hald fram" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "&Ta bort ferdige" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Byt alle A4AF til denne fila no" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Byt alle A4AF til denne fila (auto)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Byt alle A4AF til anna fil no" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Utvida innstillingar" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Førehandssyning" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Syn fil&detaljar" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Syn alle kommentarar" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Kopiér magnet URI til utklippstavla" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Kopier eD2k &lenka til utklippstavla" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Kopiér tilbakemelding til utklippstavla" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "ortildele" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Vel kategori" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Opne fila" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Skriv nytt namn på denne fila:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Døyp om fil" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d·%H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Nedlastingar (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Vel ein videospelar i innstillingar for å hindre at denne åtvaringa kjem opp " "ved kvar førehandssyning (mplayer er standard)" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Førehandssyning" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "FEIL: Greidde ikkje å starte ekstern mediespelar! Kommando: '%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "Lastar server.met fila: %s" #: src/DownloadQueue.cpp:132 #, fuzzy, c-format msgid "Loading PartFile %u of %u" msgstr "Lastar data frå gamal nedlastingsfil (%u·av·%u)" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "FEIL: Greidde ikkje å laste tryggleikskopifila. Søk http://forum.amule.org " "for løysingar på attskaping av part.met filer." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Ingen delfiler funne" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Fann %u delfil" msgstr[1] "Fann %u delfiler" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "Filsystemet for mellombelse filer greier ikkje å handsame store filer." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "Filsystemet i mappa for innkomande filer greier ikkje å handsame store filer." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Lastar ned %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Du freistar allereie nedlasting av fila '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Du har allereie fila: '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Du freistar allereie nedlasting av fila %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Kan ikkje konvertere magnetlenkje til eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Ukjend lenkjeprotokoll for: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Ugangbar eD2k lenkje! FEIL: %s" #: src/ExternalConn.cpp:261 #, fuzzy msgid "Client sent packet after authentication failed." msgstr "Godkjenning mislukka." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Ekstern kopling lukka." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Eksterne koplingar deaktiverte på grunn av tomt passord!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Eksterne koplingar deaktiverte i konfigurasjonsfila" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Ny ekstern kopling akseptert" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "FEIL: greidde ikkje å ta imot ei ny ekstern kopling" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "Ekstern kopling nekta på grunn av tomt passord i innstillingar!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Koplar til klient: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Ukjend utgåve" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Ikkje rett EC utgåve ID: det kan vere binær inkompatibilitet. Bruk core og " "remote frå same snapshot." #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Du kan ikkje kople til ei utgivingsutgåve frå ei vilkårleg SVN utgåve! " "*sukk* mogleg krasj unngått" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Ugyldig protokullutgåve." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Manglande merkelapp for protokollutgåve." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 #, fuzzy msgid "Authentication failed: wrong password." msgstr "Godkjenning mislukka." #: src/ExternalConn.cpp:512 #, fuzzy msgid "Authentication failed: missing password." msgstr "Godkjenning mislukka." #: src/ExternalConn.cpp:522 #, fuzzy msgid "Invalid request, please authenticate first." msgstr "Ugyldig etterspurnad, du treng godkjenning først." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Tilgang innvilga." #: src/ExternalConn.cpp:535 #, fuzzy, c-format msgid "Sent error message \"%s\" to client." msgstr "Filtrér meldingar frå ukjende klientar" #: src/ExternalConn.cpp:538 #, fuzzy, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Uaotorisert freisting på tilgang. Kopling lukka." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "Kommando for fjern delfil mislukka: Filhash ikkje funnen: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Filhash ikkje funnen: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OPS! Handsamingsfeil i OpCode!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Tenar ikkje lagd til" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "tenar ikkje funnen: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "treng å velje tenar for fjerning" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k er deaktivert i innstillingar" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Søk i framdrift. Hentar inn att resultata om ein augneblink!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Nettsøk frå fjern adresse gir ikkje meining." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Ingen punkt for graf." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Klienten din er ikkje konfigurert for dette detaljnivået." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Ekstern kopling: avslutting etterspurt" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Avsluttar allereie." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Eksternkopling: legg til lenkje '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Ikkje gangbar lenkje eller lenka allereie på lista." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Fil ikkje funne." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Ikkje gangbart filnamn." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Ikkje i stand til å døype om fila." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad er deaktivert i innstillingar." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Allereie tilkopla eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Koplar til eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Allereie tilkopla Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Koplar til Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Alle nettverk er deaktiverte." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Fråkopla eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Fråkopla Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Ekstern kopling: ugangbar opkode motteken: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Ikkje gangbar opkode (feil protokollutgåve?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Ukjend forlenging·'%s'·for·'%s'·kommandoen.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Ukjend kommando '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Denne kommandoen kan ikkje ha eit argument.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Denne kommandoen må ha eit argument.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Denne kommandoen er ikkje komplett; du må nytte ein av forlengjarane under.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Tilgjengelege forlengjarar:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Tilgjengelege kommandoar:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" " Alle kommandoar kan utførast med store og små bokstavar.\n" "Skriv '%s 'for meir opplysningar om .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Avsluttar programmet." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Syne hjelp." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "For å få hjelp til ein kommando, skriv 'help·'.\n" "For full kommandoliste, skriv 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Bruk·'%s'·for·kommandoliste\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Syntaksfeil!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Handsamingsfeil av kommando - burde aldri skje! Vér god å rapportere feilen\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Denne kommandoen skulle ikkje ha nokon parameter." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Denne komamndoen må ha eit parameter." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Ugangbart argument." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Denne kommandoen er ikkje komplett." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Skriv '%s'·for å få meir hjelp.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Dette er %s·%s·%s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Dette er %s·%s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Opprettar klient...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok,·avsluttar·%s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Kan ikkje kople til med eit tomt passord.\n" "Du må skrive inn eit passord anten i konfigurasjonsfila,\n" "i kommandolinja eller når du vert spurt.\n" "\n" "Avsluttar...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Syne denne hjelpeteksten." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Vert der aMule køyrer (standard: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "aMule sin port for eksternkopling (standard: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Passord for eksternkopling." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Les innstillingar frå fil." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Ikkje skriv ut data til stdout." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Vér utførleg - syne óg avfeilingsmeldingar," #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Set programspråk." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Skriv kommandolinjealternativa til konfigurasjonsfila." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Lagar konfigurasjonsfil basert på aMule si konfigurasjonsfil." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Skriv programutgåve." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Fildetaljar" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%%·ferdig" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f·kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "Greidde ikkje å opne venelista 'emfriends.net' for lesing!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "Greidde ikkje å opne venelista 'enfriends.met' for skriving!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Vener" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Syn &detaljar" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Legg til ein ven" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Ta bort ven" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Send &melding" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Sjå filer" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Opprett venekopling" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Er du viss på at du vil slette den valde venen?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Er du viss på at du vil slette dei valde venene?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Det er ikkje tillate å opprette meir enn ei venekopling.\n" " Berre ei venekopling vart oppretta." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Fleirval" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Send melding til brukar" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Melding å sende:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Fjerne frå kameratar" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Send melding" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Byt til denne fila" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "QR:·%u·(%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Spurt etter anna fil (A4AF)" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Ventande opplastingar: %s" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "I kø" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Opplasting" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "Ingen" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Nei" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Ja" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Lastar ned..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "ÅTVARING: Greidde ikkje å opne hudfila '%s' for lesing" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "Lasta ned" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "Kople til tenar att" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "Greidde ikkje å laste ned tenarlista frå %s" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Greidde ikkje å laste ned tenarlista frå %s" #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Lastar ipfiltra 'ipfilter.dat'·og·'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "Greidde ikkje å laste inn ipfilter.dat fila '%s' - ukjend filformat." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Greidde ikkje å laste inn ipfilter.dat fila '%s' - greidde ikkje å opne fila." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Lasta %u IP-rekkje frå '%s'." msgstr[1] "Lasta %u IP-rekkjer frå '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u vanskapt linje vart forkasta." msgstr[1] "%u vanskapte linjer vart forkasta." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Eigenoppstart frå \n" "kjende klientar" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Noder (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Ikkje gangbar IP for eigenoppstart" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Ikkje gangbar port for eigenoppstart" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Vér god å fylle ut alle naudsynte felt" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Er du viss på at du vil laste ned ei ny nodes.dat fil?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Å gjere dette vil fjerne dine novérande noder og starte Kademlia på nytt." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Halde fram?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: for kort søkjeord" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Las %u kadkontakt" msgstr[1] "Las %u kadkontaktar" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Skreiv %d kadkontakt" msgstr[1] "Skreiv %d kadkontaktar" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Filnamn" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Filstorleik" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Delingsrate" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Lasta opp" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Etterspurt" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Godkjend" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Komplette kjelder" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Ukjend utgåve" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "ÅTVARING: Greidde ikkje å opne hudfila '%s' for lesing" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Hashar" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Ferdigstiller" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Ferdig" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Pausa" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Feilaktig" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Ventar" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Du må skrive inn eit passord som ikkje er tomt." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Feil passord! Ikkje MD5 hash!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Oppkoplingsfeil" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "EC kopling feila. Tomt svar." #: src/libs/ec/cpp/RemoteConnect.cpp:258 #, fuzzy msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "Ekstern kopling: Dårleg svar frå tenar. Kopling stengd." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Vellukka! Kopling til aMule er oppretta " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Vellukka! Kopling oppretta." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Ekstern kopling: Tilgang nekta fordi:" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "Ekstern kopling: Tilgang nekta" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Autooppfrisking starta" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "FEIL: Greidde ikkje lytte til TCP port." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "FEIL: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "ÅTVARING: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Stengje" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Klipp ut" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Kopiér" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Lim inn" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Frigjer plass" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Vél alle" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Ubegrensa" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule traumeny" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Fartsgrenser:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "OL: Inga" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "OL: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "NL: Ingen" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "NL: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Nedlastingsfart: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Opplastingsfart: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Klientinformasjon" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Kallenamn: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Ikkje valt kallenamn!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "KlientID: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Ikkje tilkopla" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Tenarnamn: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "TenarIP: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Ikkje tilkopla" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP:·%s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP port: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP port: Ikkje klar" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "UDP port: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UDP port: Ikkje klar" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Nettsignatur: Aktivert" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Nettsignatur: Deaktivert" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Oppetid: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Delte filer: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Klientar i kø: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Totalt NL: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Totalt OL: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Opplastingsgrense" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Nedlastingsgrense" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Gøyme aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Syne aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Avslutt" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k lenkje: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Iverksetje" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "Klikk her for å leggje til eD2k lenkja " #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Hendingar visast her. Sjå i loggen under Tenarar for å sjå alle hendingane." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Lastar ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Tal på brukarar på tenaren du er tilkopla ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Brukarar: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Brukarar tilkopla den aktuelle tenaren or eit overslag over det totalt " "antalet brukarar." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Opp:·0.0·|·Ned:·0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Novérande gjennonmsnittleg opplastings- og nedlastingsrater. Dersom aktivért " "vil tala i parantés syne dataoverskotet frå klientkommunikasjon." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Syner novérande sratus og aktive overføringar. Raude piler syner at du ikkje " "er tilkopla akkurat no, gule piler syner at du har ein låg ID (brannmura) og " "grøne piler syner at du har ein høg ID (Denbeste tilkoplingstypen)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Ikkje tilkopla ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Novérande tilkopla tenar." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Søk" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Namn:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Sort" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Lokal" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Global" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Filhash" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Utvida parameter" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtrerer" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Filtype" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Alle" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Arkiv" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Lyd" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD-bilete" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Bilete" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Program" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Tekstar" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Videoar" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Filetternamn" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Min storleik" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Maks storleik" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Tilgjenge" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filter:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filtrér resultat" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Snu resultat" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Gøyme kjende filer" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Start" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Meir" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Søkjer etter fleire resultat på eD2k. Ikkje støtta for Kad enno." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Stopp" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Nedlasting" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Nullstill felta" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Resultat" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Ryddar bort ferdige nedlastingar" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Komplette kjelder" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Generelt" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Fullt namn :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "I/T" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "metfil :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Filstorleik :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Delfilstatus :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Sist sett komplett :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Overføring" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Funne kjelder :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Overfører kjelder :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Fildelstal :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Tilgjengeleg:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Datasnøggleik :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Aktiv nedlastingstid: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Overført :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Ferdig storleik :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Intelligent Korrupsjonshandsaming" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Tapt gjennom korrupsjon :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Vunne gjennom komprimering :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Pakkar lagra av I.C.H. :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Filnamn" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Overtaking" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Opprensking" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Utfør" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Kommentér/verdigjé fila (Teksten vert synleg for alle brukarar)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Filkvalitet" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Ikkje gitt verdi" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Ugyldig / Korrupt /Falsk" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Dårleg" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Middels" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "God" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Utmerka" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Vél filverdi eller gje melding til andre brukarar dersom fila er falsk ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Oppfrisk" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Lastar ned, vér god å vente ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Ukjend storleik" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Naudsynt informasjon" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP-adresse :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Tilleggsinformasjon" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Brukarnamn :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Brukarhash :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Legg til" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Nedlastingsfart" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Novérande" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Køyregjennomsnitt" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Gjennomsnitt økt" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Opplastingsfart" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Koplingar" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktive nedlastingar" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktive koplingar (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Aktive opplastingar" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Statistikktre" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Brukarnamn:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Brukarhash:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Klientmjukvare:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Klienten si utgåve:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP-adresse:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "BrukarID:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "Tenar IP:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Tenarnamn:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Tåkelegging:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Overføringar til klient" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Novérande etterspurnader:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Gjennomsnittleg opplastingsfart:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Gjennomsnittleg nedlastingsfart:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Opplasta (økt):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Lasta ned (økt)" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Opplasta (totalt):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Lasta ned (totalt)" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Scorar" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "NL/OL endringsfaktor:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Sikker identifikasjon:" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "I kø" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Køscore" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Kallenamn" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "Dette er namnet andre brukarar vil sjå når dei koplar til maskina di." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Forseinkinga før ein syner verktytips." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Dette vel språket som vert nytta på kontrollane." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Sjå etter ny utgåve ved oppstart" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Aktivering av denne vil få aMule til å sjå etter ei ny utgåve ved oppstart." #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Start minimert" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Aktivering av denne minimerer aMule ved oppstart." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Stadfest avslutting" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Aktivér trauikon" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" "Dette aktiverer/deaktiverer ikonet i systemtrauet (eller oppgåvelinja)." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimér til trauikon" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Akrivering av denne vil få aMule til å minimere seg til systemtrauet og " "ikkje til oppgåvelinja." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Nettlesarval" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Bla" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Opne nytt faneblad dersom mogleg" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "Opne ny nettside i nytt faneblad i staden for nytt vindauge når mogleg" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Videospelar" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Opplasting" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Opningsdistribusjon" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Dette er standardporten for eD2k og kan ikkje deaktiverast" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2k" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Automatisk tilkopling ved oppstart" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Kople til dersom fråkopla" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Ta bort daude tenarar etter" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "freistnader" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Automatisk oppdatering av tenarlista ved oppstart" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Liste" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Oppdater tenarlista ved oppkopling til ein tenar" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Oppdater tenarlista når ein klient koplar til" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Bruk prioritetssystem" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Bruk smart LågID sjekk ved tilkopling" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Trygg tilkopling" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Automatisk tilkopling berre til tenarar i statisk liste" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Gje høg prioritet til manuelt tillagde tenarar" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Legg filer til nedlasting i pausemodus" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Legg filer til nedlasting med autoprioritet" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Prøv å laste ned første og siste del først" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Frå same kategori" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Hent diskplass for nye filer" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "Hentar diskplass for heile nye filer, og reduserer fragmentering" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Vel denne dersom du vil at aMule skal sjekke om du har nok diskplass" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Skriv inn mimimum ønska diskplass." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Lagre 10 kjelder til sjeldne filer (< 20 kjelder)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Opplastingar" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Legg til nye delte filer med autoprioritet" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(Høgreklikk på mappeikonet for å dele underkatalogar)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Dele gøymde filer" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafar" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Oppdateringsforseinking: 5 sek" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Tid for gjennomsnittleg graf: 100 min" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Koplingsgrafskala: 100 " #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Bakgrunn" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Rutenett" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Last ned novérande" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Last ned køyregjennomsnitt" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Last ned øktgjennomsnitt" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Opplasting no" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Gjennomsnittleg køyrande opplasting" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Gjennomsnittleg økt opplasting" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Aktive koplingar" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Fartslinje i ikontrauet" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Kadnodar no" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Køyrande kadnodar" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Kadnodar (økt)" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Velje" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Tal på klienutgåver synt (0=uinnskrenka)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! ÅTVARING !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Maks nye koplingar / 5 sek" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Filbufferstorleik: 240000·bytes" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Storleik på opplastingskø: 5000 klientar" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Oppfriskingsintervall for tenarkopling: Deaktiver" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Syne utvida informasjon i kategorifaneblad" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Syne overføringsfart i tittellinja" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Syne overføringsfart i tittellinja" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Vertikal verktylinjeorientering" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Flat" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Rund" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule sorterer kolonnene i nedlastingslista di automatisk" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parameter for ekstern kopling" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Akseptér eksterne koplingar" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Skriv in ei gyldig IP i a.b.c.d format for det lyttande EC-grensesnittet. " "Eit tomt felt eller 0.0.0.0 betyr samtlege grensesnitt." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Aktivér UPnP-portvidaresending på EC-porten" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Passord" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Vevtenarparameter" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Vevmønster" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Passord for fulle rettar" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Aktivér brukar med få rettar" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Passord for låge rettar" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Sideoppfriskingstid (i sekund)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Aktivér Gzipkompresjon" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Klikk her for å utføre samtlege endringar gjorde i innstillingar." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Nullstill alle endringar i innstillingar." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Tittel :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Kommentar :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Innkomande kat:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Endre prioritet for nytileigna filer :" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "Ikkje endre" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Vel farge for denne kategprien (no valt)" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Still attende" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Klikk denne knappen for å nullstille loggen." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Klikk på denne knappen for å oppdatere tenarlista frå nettadresse ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Tenarliste" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Skriv inn nettadressa til ei server.met fil her og klikk på knappen til " "venstre for å oppdatere tenarlista." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Legg til tenar manuelt: Namn" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Skriv inn namnet på den nye tenaren her" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Skriv inn IP`en til tenaren her, i x.x.x.x format." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Skriv inn porten til tenaren her." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Legg til ein tenar manuelt (fyll først ut felta til venstre) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMulelogg" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Tenarinfo" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2k-info" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad-info" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" "Klikk på denne knappen for å oppdatere nodelista frå internettadresse ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nodar (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Skriv inn internettadressa til ei nodes-dat fil her og klikk på knappen til " "venstre for å oppdatere lista over kjende nodar." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Nodestatistikk" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Eigenoppstart" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Ny node" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Port:" #: src/muuli_wdr.cpp:2763 #, fuzzy msgid "Bootstrap from known clients" msgstr "" "Eigenoppstart frå \n" "kjende klientar" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Kople frå Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Sikker brukaridentifikasjon (SUI)" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Det er tilrådd å aktivere denne funksjonen. Du vil ikkje få kredittar dersom " "SUI ikkje er aktivert." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Protokolltåkeleggjing" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Støtte protokolltåkeleggjing" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Dette valet aktiverer protokolltåkeleggjing og gjer at aMule tek imot " "tåkelagde koplingar frå andre klientar." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Bruk tåkeleggjing for utgåande koplingar" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Dette valet får aMule til å nytte protokolltåkeleggjing ved tilkopling til " "andreklientar/tenarar." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Berre godta tåkelagde koplingar" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Dette valet får aMule til å berre godta tåkelagde koplingar. Du vil få færre " "kjelder, men all trafikken din vert tåkelagd" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Alle" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Ingen" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Vel kven som kan be om å sjå ei liste over dei delte filene dine." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP-filtrering" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtrér klientar" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "Aktivér IP-filterring av klientar i fila ~/.aMule/ipfilter.dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtrér tenarar" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "Aktivér filtrering av tenarar i fila ~/.aMule/ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Last om att lista" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "Last om att lista av IP`ar å filtre frå fila ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "Nettadresse:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Oppdatér no" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Automatisk oppdatér ipfilter ved oppstart" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Filternivå:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Alltid filtrér LAN IP`ar" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Paranoid handsaming av ujamne IP`ar" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Avviser pakkar dersom klientadressa er ulik adressa pakken vert motteken " "frå. Vér varsam med dette." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Bruk systemomspennande ipfilter.dat dersom tilgjengeleg" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Tillat bruk av ipfilter for heile systemet dersom inga lokal ipfilter-dat " "vert funnen" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Aktivér nettsignatur" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Aktiverer skriving av OS-fila, som kan verte nytta av eksterne program forå " "lage signaturar og liknande." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Oppdateringsfrekvens (sekund):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Endre frekvensen (i sekund) for oppdatering av nettsignaturar." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "Klikk her for å velje katalogen med nettsignaturfilene." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtrér innkomande meldingar (utanom novérande samtale):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtrér alle meldingar" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtrér meldingar frå alle som ikkje er på kameratlista" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtrér meldingar frå ukjende klientar" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtrér meldingar som inneheld (bruk ','som skiljeteikn):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "legg til ord aMule skal filtrére og blokkere" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Kommentarar" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtrér kommentarar som inneheld (bruk ',' som skiljeteikn):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Automatisk tenartilkopling utan vikar" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Aktivér godkjenning" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Aktivér/deaktivér godkjenning av brukarnamn/passord" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Brukarnamn å nytte for å kople til vikar" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Passord:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Passord å nytte for å kople til vikar" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Aktivér vikar" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Aktivere/deaktivere vikarstøtte" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Vikartype:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Vikarvert:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Vikaren sitt vertsnamn" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Vikarport:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Vikarport" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Kople til:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Logge inn på fjern aMule" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Brukarnamn" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Hugs desse innstillingane" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Aktivér utførleg avfeilingslogg." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Opne fila" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Meldingskategoriar:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Ventar..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Importér" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Prøv om att valde" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Fjern valde" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Aktive opplastingar :" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Gøyme delte filer" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Vel synsfilter" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Aktive opplastingar" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Syne klientar" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Last om att lista" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Lastar inn att delte filer" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Send" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Sender meldinga." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Stengje denne lynmeldingsøkta." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Kople til vilkårleg tenar og/eller Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Delte filer" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Deaktivert [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/sek" msgstr[1] "bytes/sek" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "sekund" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "minutt" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "timar" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Dagar" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "alle" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "alle andre" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Uferdig" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Stogga" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Arkiv" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Tekst" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Aktiv" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Importerer %s:·%s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Les mellombels mappe" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Hentar grunnleggjande informasjon frå nedlastingsinformasjonfil" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Lagar målfil" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Lastar data frå gamal nedlastingsfil (%u·av·%u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Lagrer datablokk til ei einaste nedlastingsfil (%u·of·%u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Hentar informasjon frå nedlastingsfilkjelde" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Legg til nedlasting og lagrar ny delfil" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importér delfiler" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Tilstand" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Filhash" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s·(Disk:·%s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Vér god å velje ei katalog til å søkje på mellombelse nedlastingar! " "(underkatalogar vil verte inkluderte)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "Vil du slette kjeldefilene til vellukka importerte nedlastingar?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Ta bort kjelder?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "FEIL: Greidde ikkje å lage delfil" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Freistar å laste tryggleikskopi av met-fila frå %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "Feil: Greidde ikkje å opne mart.met fila: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "FEIL: part.met fila har ein storleik på 0: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "FEIL: %s (%s) er korrupt (feil merkelappstal), greidde ikkje å laste fila." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "FEIL: %s (%s) er korrupt (feil merkelappstal), greidde ikkje å laste fila." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Freistar å hente fram att filinformasjon..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "Attskaper fil utan namn - freistar å attskape ho som RecoverdFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "Attskapte all tilgjengeleg filinformasjon :D - Freistar å nytte den..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Ikkje i stand til å attskape filinformasjon :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Greidde ikkje å opne %s·(%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "ÅTVARING: %s kan vere korrupt (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "FEIL under lagring av delfila: %s·(%s·==>·%s)" #: src/PartFile.cpp:904 #, fuzzy msgid "IO failure while saving partfile: " msgstr "FEIL under lagring av delfila: %s·(%s·==>·%s)" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Greidde ikkje å hente lengda på '%s' - nyttar %s fila." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s'·er 0 i storleik på ein eller annan måte·-·nyttar·%s·fila." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Greidde ikkje å lagre part.met.seeds fila for %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Lagra %i kjeldefrø for delfila: %s (%s)" msgstr[1] "Lagra %i kjeldefrø for delfila: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Lagra %i kjeldefrø for delfila: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Feil i lesing av delfila si kjeldefil (%s·-·%s):·%s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Fann korrupt del (%d) i %d delfil %s - Filresultathash |%s| Filhash | %s" msgstr[1] "" "Fann korrupt del (%d) i %d deler i fila %s - Filresultathash |%s| Filhash |%" "s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Fann ferdig del (%i)·i·%s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Ferdig med omhashing av %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Uventa feil ved fullføring av %s. Sette fila på pause" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Ferdig med å laste ned: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Slettar fila: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "ÅTVARING: Greier ikkje å hashe nedlasta del - hashsett ikkje komplett for '%" "s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "FEIL: Greier ikkje å hashe nedlasta del - hashsett ikkje komplett (%s). " "Dette burde aldri skje" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "ÅTVARING: Ikkje nok ledig diskplass! Set fila %s på pause" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Nedlasta del %i er korrupt i fila: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Attskapte korrupt del %i·for·%s·->·Lagra bytes:·%s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Hentar plass" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Ikkje nok diskplass" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Lasta ned" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "Feil: Greidde ikkje opne delfila '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Standardinnstillingar" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albansk" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabisk" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "Estisk" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Baskisk" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgarsk" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Katalansk" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Kinesisk (forenkla)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Kinesisk (tradisjonell)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Kroatisk" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Tsjekkisk" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Dansk" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Nederlansk" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Engelsk (U.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estisk" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finsk" #: src/Preferences.cpp:648 msgid "French" msgstr "Fransk" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galisisk" #: src/Preferences.cpp:650 msgid "German" msgstr "Tysk" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Gresk" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebraisk" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Ungarsk" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italiensk" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italiensk (sveitsisk)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japansk" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Koreansk" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Litauisk" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norsk (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polsk" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugisisk" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugisisk (Brasil)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Albansk" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Russisk" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Slovensk" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Spansk" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Svensk" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Tyrkisk" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Språk" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Ikkje tilgjengeleg" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "TCP port kan ikkje vere høgare enn 65532 fordi tenaren si UDPkopling er TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Standardport vert nytta (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Kopling" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Katalogar" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Tenarar" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Filer" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Tryggleik" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Fjernkontrollar" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Nettsignatur" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Hendingar" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Melde om feil" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Ikkje endre desse innstillingane med mindre du veit\n" "kva du gjer, ellers kan du fort\n" "gjere ting verre for deg sjølv.\n" "\n" "aMule køyrer fint utan justering av nokon av\n" "desse innstillingane." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Typen vikar du koplar til" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule·treng omstart for å gjere endringane moglege:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "-·TCP-porten endra.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "-·UDP-porten endra.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Ekstern kopling lukka." #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Ny ekstern kopling akseptert" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Ekstern kopling lukka." #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Protokolltåkeleggjing" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Du har aktivert eksterne koplingar, men har ikkje skrive inn eit passord.\n" "Eksterne koplingar kan ikkje aktiverast utan eit gyldig passord." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Språk endra.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Mellombels mappe endra.\n" #: src/PrefsUnifiedDlg.cpp:657 #, fuzzy msgid "- ED2K network enabled.\n" msgstr "Alle nettverk er deaktiverte." #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Både eD2k og kadnettverket er dekativert.\n" "Du vil ikkje klare å kople til før du aktiverer minst eitt av dei." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad kan ikkje starte dersom UDP-porten er deaktivert.\n" "Aktivér UDP-porten eller deaktivér Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Du MÅ starte om att aMule no.\n" "Ikkje klag dersom du ikkje gjer dette og du får problem.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Lista for automatisk oppdatering av tenarar er tom.\n" "Vér god og fylle ut ein URL som peikar til ei gyldig server.met fil.\n" "Klikk på knappen \"Liste\" ved denne boksen for å skrive inn ein URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Mellombelse filer" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Innkomande filer" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Nettsignaturar" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Vel ei mappe for %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Bla etter videospelar" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Vél nettlesar" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Køyrbar%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Handsame tenarlista" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Skriv inn URL`en for å laste ned server.met filer.\n" "Berre ein URL på kvar linje." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Oppdateringspause: %d sekund" msgstr[1] "Oppdateringspause: %d sekund" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Tid for gjennomsnittleg graf: %d minutt" msgstr[1] "Tid for gjennomsnittleg graf; %d minutt" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Koplingsgrafskala: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Filbufferstorleik: %d byte" msgstr[1] "Filbufferstorleik: %d bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Opplastingskøstorleik: %d klient" msgstr[1] "Opplastingskøstorleik: %d klientar" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Oppfriskingsinterval på tenarkoplingar: %d minutt" msgstr[1] "Oppfriskingsinterval på tenarkoplingar: %d minutt" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Oppfriskingsintervall for tenarkopling: Deaktivert" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "deaktivere" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "Køyr kommando på `%s' hending" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Aktivér kommandokøyring i kjernen" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Kjernekommando:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Aktivér kommandokøyring på drakt" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Draktkommando:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Følgjande variablar vert erstatta:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "Min storleik må vere mindre enn maks storleik. Maks storleik ignorert." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Søkeåtvaring" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Hovud" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Du kan ikkje søkje på Kad dersom Kad ikkje køyrer" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "eD2k søk kan ikkje gjennomførast dersom eD2k ikkje er tilkopla" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Uventa feil oppstod under søk på Kad: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "FilID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Fil" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Nedlasting i kategori" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Legg til valfrie URL`ar for denne fila" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Søk beslekta filer (eD2k, lokal tenar)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Merk som kjend fil" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Kopier eD2k lenkje til skrivebordet" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "Avbryt" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Greidde ikkje å kople til alle tåkelagde tenarar i lista. Freistar ein gong " "til utan tåkelegging." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Greidde ikkje å kople til alle tenarane i lista. Freistar ein gong til." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "eD2k nettverket deaktivert i innstillingar, koplar ikkje til" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "Ingen gangbare tenarar funne i tenarlista" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Tilkopla %s·(%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Kopling oppretta på: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "Alvorleg feil i oppkopling. Internett kan vere nede" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Mista kopling til %s·(%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s·(%s:%i) ser ut til å vere daud." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s·(%s:%i) ser ut til å vere full." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Automatisk tenaroppkopling freistar på nytt om %d sekund" msgstr[1] "Automatisk tenaroppkopling freistar på nytt om %d sekund" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Kopling mista" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Tilkopling til %s·(%s:%i)·mislukka." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "FEIL: Ugangbar sokkel ved uttellingssjekk" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Tilkoplingsfreisting til %s·(%s:%i)·gjekk over tida." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Lastar server.met fila: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Server.met fila ikkje funnen!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "Greidde ikkje å laste inn server.met fila '%s' - ukjend filformat." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Greidde ikkje å opne server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Server.met fila er korrupt, ugangbar merkelapp på utgåve: 0x%x,·storleik·%i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i tenar funne i server.met" msgstr[1] "%i tenarar funne i server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d tenar lagd til" msgstr[1] "%d tenarar lagde til" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "IO feil underlesing av known.met fila: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Tenar ikkje lagd til: [%s:%d] oppgir ikkje ein gangbar port." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Tenar ikkje lagd til: IP`en til [%s:%d] er filtrert eller ugangbar." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "Tenar ikkje lagd til: Tenar med lik IP:Port [%s:%d] funne i lista." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Tenar lagd til: Tenar på [%s:%d] som nyttar namnet '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Du er tilkopla tenaren du freistar å slette. Vér god å kople frå først." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Greidde ikkje å opne '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Greidde ikkje å lagre server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Ugangbar URL" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "Tenarlista ferdig nedlasta frå %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Inga tenarlistadresse funnen i 'addresses.dat'. Lim inn ei gangbar " "tenarlisteadresse i denne fila for å automatisk oppdatere tenarlista di" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Last ned tenarlista frå %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "ÅTVARING: ikkje gangbar URL for automatisk oppdatering av tenarar: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "Ugangbar autonedlastingsnettside for server.met i addresses.dat" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Greidde ikkje å laste ned tenarlista frå %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "Lokal tenar er filtrert av ipfiltra - koplar til ein anna tenar!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Tenarnamn" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Addresse" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Skildring" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Brukarar" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Statisk" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Utgåve" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Du er tilkopla ein tenar du freistar å slette. Vér god å kople frå først. " "Tenaren vart IKKJE sletta." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Ukjent namn)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Er du sikker på at du vil slette den statiske tenaren %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Tenarar (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Tenar" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Kople til tenar" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Merk tenar som statisk" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Merk tenar som ustatisk" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Merk tenarar som statiske" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Merk tenarar som ustatiske" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Ta bort tenar" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Ta bort tenarar" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Fjern alle tenarar" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Kopier eD2k lenkjer til skrivebordet" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Kople til tenar att" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Er du sikker på at du vil slette alle tenarane?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Er du viss på at du vil slette den valde tenaren." #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Er du viss på at du vil slette dei valde tenarane?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "FEIL: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "ÅTVARING: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Ny klientid er %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "ÅTVARING: Du har motteke ein Låg-ID!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tTruleg har dette skjedd fordi du er bak ein brannmur eller ruter." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tFor meir informasjon, sjå http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Ukjend tenarinfo motteke! - for kort" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Tok mot %d ny tenar" msgstr[1] "Tok mot %d nye tenarar" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Lagring av tenarlista ferdig." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Tenar avviste siste kommando" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Falske pakkar mottekne frå tenar: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Urøyvd feil under handsaming av pakke frå tenar: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Kan ikkje skape DNS-løysande tråd for å kople til %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "Tenar IP %s·(%s) er filtrert. Koplar ikkje til." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "brukar protokolltåkelegging." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Koplar til·%s·(%s·-·%s:%i)·%s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Greidde ikkje å løyse dns for tenar %s: Greier ikkje å kople til!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Tenar ikkje lagd til: Manglar IP eller vertsnamn." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Tenar ikkje lagd til: Ikkje gangbar tenarport." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "eD2k status:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kademlia status" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "Køyrer på %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Køyrer" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Status:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Tilkoplingsstatus:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "Tilkoplingsstatus:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Brannmura status: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Ingen kamerat" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "Tilkopla kamerat" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "Tilkopla kamerat" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "Funne kjelder :" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 #, fuzzy msgid "Indexed notes:" msgstr "Registerfil ikkje funne: " #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Gjennomsnitt brukarar:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Gjennomsnitt filer:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Køyrer ikkje" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Fann %i kjend delt fil" msgstr[1] "Fann %i kjende delte filer" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Fann %i kjend delt fil, %i ukjend" msgstr[1] "Fann %i kjende delte filer, %i ukjende" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "FEIL: Freista å dele %s" #: src/SharedFileList.cpp:410 #, fuzzy, c-format msgid "Shared directory not found, skipping: %s" msgstr "tenar ikkje funnen: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Brukarnamn" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Nedlastingsfart" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Opplastingsfart" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Tilgjengeleg:" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Opplastingsstatus" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Nedlastingsstatus" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Filnamn" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Delte filer" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Etterspurnader" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Godtekne etterspurnader" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Overførte data" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Delingssamsvar" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Nedlasta delar" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Komplette kjelder" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Katalogsti" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Legg til kommentar/Rangering" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Endre kommentar/Rangering" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Endre namn" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Legg filer frå samlinga til overføringslista" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Kopiér magnet &URI til utklippstavla" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Kopier eD2k lenka til utklippstavla (&Kjelde)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Kopier eD2k lenkje til utklippstavle (Kjelde) &Med krypteringsval)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Kopier eD2k lenkje til utklippstavla (&Vertsnamn)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "Kopier eD2k lenkje til utklippstavla (Vertsnamn) (Med &krypteringsval)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Kopier eD2k lenkje til utklippstavla (&AICH info)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Kopier eD2k lenkje til utklippstavla (&AICH info)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Du treng ein HøgID for å lage ei gangbar kjeldelenkje" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Delte filer (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Delfil]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Filnamn" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Opplasta data (økt (total)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Totalt dataoverskot (pakkar): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Dataoverskot på filetterspurnader (pakkar): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Dataoverskot på kjeldeutveksling (pakkar): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Dataoverskot på tenar (pakkar): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Dataoverskot Kad (pakkar): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Krypteringsdataoverskot (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Aktive opplastingar: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Ventande opplastingar: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Tal på samtlege vellukka opplastingar: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Tal på samtlege mislukka opplastingar: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Gjennomsnittleg opplastingstid: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Nedlasta data (økt (total)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Funne kjelder: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Aktive nedlastingar (delar): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Økt OL:NL proporsjon (total): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Gjennomsnittleg nedlastingsfart (økt): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Gjennomsnittleg opplastingsfart (økt): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Raskaste nedlastingsfart (økt): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Raskaste opplastingsfart (økt): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Attkoplingar: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Tid sidan første overføring: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Tilkopla tenar sidan: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Aktive koplingar (berekna): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Maksimal koplingsgrense nådd: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Gjennomsnittleg tal på koplingar (berekna): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Topp koplingar (berekna): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Klientar" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "Ukjend storleik" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "Filtrert" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "Nekta" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Total:·%i·Kjend:·%i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Fungerande tenarar: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Mislukka tenarar: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Total:·%s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Sletta tenarar: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Filtrerte tenarar: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Brukarar på fungerande tenarar: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Filer på fungerande tenarar: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Totalt brukertal: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Totalt filtal: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Tenerlast: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Tal på delte filer: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Total storleik på delte filer: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Gjennomsnittleg filstorleik: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Operativsystem" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Ikkje motteke" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktive koplingar (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Ikkje tilgjengeleg" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Aldri" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Kommandoen·`%s'·med·pid·`%d'·er ferdig med statuskode·`%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Køyr og avslutt." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Ugangbart IP-format. Bruk xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Denne kommandoen krever eit argument. Gangbare argument: 'alle', filnamn, " "eller eit tal.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Handsamar etter hash" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Handsamar etter filnamn" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Denne kommandoen krever eit argument: Gangbare argument: ein filhash.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Ikkje gangbart tal\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Ikkje gangbar hash (lengde må vere nøyaktig 32 teikn)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Skriv '%s'·for å få meir hjelp.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Nedlastingar (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Etterspurnaden mislukka med ukjend feil." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operasjonen var vellukka" #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Etterspurnaden mislukka med følgjande feil: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "IP-filtréring for klientar er %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "AV" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "PÅ" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "IP-filtréring for tenarar er %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Novérande IPFilternivå er %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Bandbreiddegrenser: Opp: %u kB/s, Ned: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Tilkopla %s·%s·%s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Koplar til no" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "brannmura" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Nedlasting:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Opplasting:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Klientar i kø:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Alle kjelder:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Tal på søkjeresultat: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Tok imot ukjend svar frå tenaren, OpCode·=·%#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Syne kort statusinformasjon." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Syne koplingsstatus, noverande opp- og nedlastingsfart, osb.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Syne fullt statistikktre." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Alternativt kan eit tal mellom 0-255 skrivast inn som argument for denne\n" "kommandoen, som fortel kor mange inskripsjonar frå undertréa til " "klientutgåva skal verte\n" "synte. Å skrive 0 eller å hoppe over betyr 'ubegrensa'.\n" "\n" "Til dømes: 'statistics 5' vil berre syne dei 5 utgåvene på top for kvar " "klienttype.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Avslutt aMule" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Avslutt den fjerne kjernen (amule/amuled).\n" "Dette vil óg avslutte tekstklienten, ettersom den er ubrukeleg utan ei " "kjerne som køyrer-\n" #: src/TextClient.cpp:861 #, fuzzy msgid "Reload the given object." msgstr "Lastar inn att valt objekt." #: src/TextClient.cpp:862 #, fuzzy msgid "Reload shared files list." msgstr "Lastar inn att lista over delte filer." #: src/TextClient.cpp:864 #, fuzzy msgid "Reload IP filtering table." msgstr "Lastar om att ipfiltertabell frå fil." #: src/TextClient.cpp:865 #, fuzzy msgid "Reload current IP filtering table." msgstr "Vel Ipfilternivå" #: src/TextClient.cpp:866 #, fuzzy msgid "Update IP filtering table from URL." msgstr "Lastar om att ipfiltertabell frå fil." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Kople til nettverket." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Dette vil kople til alle nettverka som er aktiverte i innstillingar.\n" "Dy kan óg valfritt gje ei tenaradresse i IP:Port form, for å berre kople " "til\n" "den tenaren. IP`en må vere ei punktmerka og desimal IPv4-adresse.\n" "eller eit løyseleg DNS-namn." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Kople til berre eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Berre kople til Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Kople frå nettverket." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Dette vil kople frå alle nettverka som no er kopla til.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Kople frå berre eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Berre kople frå Kad." #: src/TextClient.cpp:879 #, fuzzy msgid "Add an eD2k or magnet link to core." msgstr "Legg til ei eD2k eller magnetlenkje til kjernen" #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "eD2k lenkja som skal leggjast til kan vere:\n" "*) ei fillenkje (ed2k://|fil|...), som vil verte lagd til nedlastingskøa,\n" "*) ei tenarlenkje (ed2k://|tenar|...), som vil verte lagd til tenarlista,\n" "*) eller ei tenarlistelenkje, der alle tenarane i lista vert lagde til\n" " tenarlista-\n" "\n" "Magnetlenkja må innehalde eD2k hashen og fillengda.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Set ein brukarvalverdi." #: src/TextClient.cpp:885 #, fuzzy msgid "Set IP filtering preferences." msgstr "Set brukarval for ipfilter." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Slå IP-filtréring på for både klientar og tenarar." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Slå IP-filtréring av for både klientar og tenarar." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Aktivér/deaktivér IP-filtrering av klientar." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Slå IP-filtréring på for klientar." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Slå IP-filtréring av for klientar." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Aktivér/deaktivér IP-filtrering av tenarar." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Slå IP-filtréring på for tenarar." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Slå IP-filtréring av for tenarar." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Vel Ipfilternivå" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Gangbart filtréringsnivå er mellom 0-255, og den opprinnelege\n" "verdien er 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Set bandbreiddegrense." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "Verdien i desse kommandoane må vere i kilobytes/sek.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Set bandbreiddegrense for opplastingar." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "Verdien i desse kommandoane må vere i kilobytes/sek.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Set bandbreiddegrense for nedlastingar." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Hent og syne ein preferanseverdi." #: src/TextClient.cpp:907 #, fuzzy msgid "Get IP filtering preferences." msgstr "Hent ipfilterinnstillingar" #: src/TextClient.cpp:908 #, fuzzy msgid "Get IP filtering state for both clients and servers." msgstr "Hent ipfilterstatus for både klientar og tenarar." #: src/TextClient.cpp:909 #, fuzzy msgid "Get IP filtering state for clients only." msgstr "Hent ipfilterstatus for klientar." #: src/TextClient.cpp:910 #, fuzzy msgid "Get IP filtering state for servers only." msgstr "Hent ipfilterstatus for tenarar." #: src/TextClient.cpp:911 #, fuzzy msgid "Get IP filtering level." msgstr "Vel Ipfilternivå" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Hent bandbreiddegrense." #: src/TextClient.cpp:915 #, fuzzy msgid "Execute a search." msgstr "Startar eit kadsøk" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Ei søkjetype må verte spesifisert:\n" "····GLOBAL\n" "····LOKAL\n" "····KAD\n" "Døme:·'søk kad fil'·vil starte eit kadsøk for \"fil\".\n" #: src/TextClient.cpp:917 #, fuzzy msgid "Execute a global search." msgstr "Startar eit globalt søk" #: src/TextClient.cpp:918 #, fuzzy msgid "Execute a local search" msgstr "Startar eit lokalt søk" #: src/TextClient.cpp:919 #, fuzzy msgid "Execute a kad search" msgstr "Startar eit kadsøk" #: src/TextClient.cpp:921 #, fuzzy msgid "Show the results of the last search." msgstr "Syne resultata av siste søk." #: src/TextClient.cpp:922 #, fuzzy msgid "Return the results of the previous search.\n" msgstr "Returnerer resultata frå det tidlegare søket.\n" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "Syner framdrifta i eit søk." #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "Syner framdrifta i eit søk-\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Start nedlasting av ei fil" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Talet på ei fil frå siste søk må verte gjeve.\n" "Døme: 'download·12' vil starte nedlastinga av fil nummer 12 frå forrige " "søk.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Set nedlasting på pause" #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Hald fram nedlasting" #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Avbryt nedlasting" #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Set nedlastingsprioritet." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Gje prioritet Låg, Normal, Høg eller Auto til ei nedlasting.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Set prioritet til låg." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Set prioritet til normal." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Set prioritet til høg." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Set prioritet til auto." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Syne køer/lister." #: src/TextClient.cpp:952 #, fuzzy msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Syner opplastings-/nedlastingskøa, tenarlista eller lista over delte filer.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Syne opplastingskø" #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Syne nedlastingskø." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Syne logg." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Syne tenarlister." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Nullstill logg" #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Forelda kommando; bruk '%s' i staden." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Dette er ein forelda kommando som ikkje lenger er tilrådd, og kan verte " "fjerna i framtida.\n" "Bruk '%s' i staden\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMule tekstklient" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Konverterer gamle AICH hashsett i '%s'·til·64b·i·'%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "ÅTVARING: Filnamnet '%s' er feil og har vorte omdøypt til '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "ÅTVARING: Fila '%s' finst allereie; ny fil omdøypt til '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Er du viss på at du vil avbryte og slette alle filene i denne kategorien?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Stadfesting naudsynt" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "For mange koplingar" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Alle andre" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Vel synsfilter" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Legg til kategori" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Redigér kategori" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Ta bort kategori" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "Greidde ikkje å opne fila (%s), fjernar frå lista over delte filer." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Hashsett etterspurt for ukjend fil: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Held fram opplastingar av fila: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Mellombels stogge opplastingar av fila: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Greidde ikkje å utføre kommendoen `%s'·på·`%s hending." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Nedlasting fullført" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Fullstendig sti til fila" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Namnet til fila utan stikomponent." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "eD2k hash på fila" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Filstorleiken i bytes." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Samla tid på nedlastingsaktivitet." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Ny lynmeldingsøkt starta" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Meldingssendar." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Tom for plass" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Diskpartisjon," #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Feil ved ferdigstilling" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Handsamar filnummer %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Du har spurt etter delhashar (Berre brukt på filer > 9,5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s·--->·Fila finst ikkje·!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, lenkjeskaparen for aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Velkomen!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Innmatingsparameter" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Fil å hashe" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Legg til valfrie URL`ar for denne fila" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Skriv inn fila du vil lage eD2k lenkje til her" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Skriv inn internettadressa du vil leggje til eD2k lenka: Legg til / på " "slutten for å la aLinkCreator leggje til det noverande filnamnet " #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Ta bort" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Lag lenkje " #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Hjelp til med å spreie nye og sjeldne filer raskare, men med auka " "lenkjestorleik" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4 filhash" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k filhash" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k lenkje" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Lagre" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Kopiér til utklippstavle" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Opne ei fil for å rekne ut eD2k lenka hennar" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Kopier utrekna eD2k lenkje til skrivebordet" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Lagre utrekna eD2k lenkje til fil" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Om aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Vel fila du vil rekne ut eD2k lenkje til" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Ikkje noko å kopiére no !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Vel fila til den utrekna eD2k lenka" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Ikkje i stand til å opne" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Vér god å skrive inn eit filnamn som ikkje er tomt" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Ikkje noko å lagre akkurat no !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, eD2k lenkjeskaparen\n" "\n" "(c) 2004 ThePolish \n" "\n" "Grafikk frå http://www.everaldo.com og http://www.icomania.com\n" "og http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distribuert under GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Hashar..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Avbrote!" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Ferdig om %.2f·s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Du har allereie lagt til denne URL`en!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Vér god å skrive inn ein URL som ikkje er tom" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Ikkje i stand til å opne %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i dag(ar) %i timar %i min %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f·KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "WxCas, aMule nettstatistikk" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Høgaste nedlastingsfart medan wxCas har køyrt" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Absolutt maksimum nedlastingsfart nokon gong medan wxCas har køyrt" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "System" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Stopp. Autooppfrisking" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Lagre nettstatistikkbiletet" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Skriv ut nettstatistikkbiletet" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Innstillingsval" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Om wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Start autooppfrisking" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Autooppfrisking stogga" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Autooppfrisking starta" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Lagre statistikkbilete" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMule nettstatistikk" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Det oppstod eit problem med utskrifta.\n" "Kanskje er ikkje skrivaren din innstilt skikkeleg?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Skriv ut" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas,·aMule·nettsignaturstatistikk\n" "\n" "(c)·2004·ThePolish·\n" "\n" "Basert·på·CAS·av·Pedro·de·Oliveira·\n" "\n" "Distribuert·under·GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Å nei, aMule køyrer ikkje..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule køyrer" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule køyrer, men fråkopla" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule koplar til..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Å nei, ukjend status for aMule..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule" #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " har køyrt i " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " er stogga !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " er ikkje tilkopla !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " koplar til..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " gjer noko rart, sjekk det !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " er tilkopla " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "av" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " er på " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " med " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Total nedlasting: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr " Opplasting: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Nedlasting denne økta: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Nedlasting: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, opplasting: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Deler: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " filer, klientar i kø: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Tid: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " på " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Gjennomsnittleg systembelasting (1-5-15·min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Oppetid: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Katalog som inneheld amulesig.dat fila" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Skriv inn kvar katalogen som inneheld amulesig.dat fila er" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Oppfriskingsintervall i sekund" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Lag eit statistikkbilete ved kvar oppfriskingshending" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Skriv inn katalogen du vil lage statistikkbiletet i" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Last regelbunde opp statistikkbilete til ein FTP tenar" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP-Url" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTPsti" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Skriv inn URL til FTP tenar" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "Skriv inn katalogen du lastar statistikkbiletet til FTPtenaren til" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Brukar" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Skriv inn brukarnamnet for å logge inn på FTPtenaren din" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Skriv inn brukarpassordet for å logge inn på FTPtenaren din" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "FTP oppdateringsintervall i minutt" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Validere" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Katalog som inneheld signaturfila di" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Katalog der statistikkbiletet vert laga" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Lastar modell " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "HTTP port for vevtenar" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Bruk UPnP portvidarekopling på vevtenarport" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP port" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Nytt gzipkomprimering" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Fulltilgangspassord for vevtenar" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Gjestepassord for vevtenar" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Gje løyve til gjestetilgang" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Nekt gjestetilgang" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Last/lagre vevtenarinnstillingar frå/til fjern aMule" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMule konfugurasjonsfilsti. IKKJE NYTT DIREKTE!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Deaktivér PHP tolk (frårådd)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Omkompilér PHP-sider ved kvar etterspurnad" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule vevtenar" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "vevklientoppkopling godkjend\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Etterspurnaden mislukka med følgjande feil: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Registerfil ikkje funne: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Økt utgått - ber om logginn\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Økt ok, logga inn\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Økt ok, ikkje innlogga\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Inga økt opna - vil be om logginn\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Økt oppretta - ber om logginn\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Handsamar etterspurnad [original]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Sjekkar passord\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Passord hash feil\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Passord ok\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Feil passord\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Du skreiv ikkje inn eit passord. Tomt passord er ikkje tillate.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Utlogging etterspurt\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Handsamar etterspurnad [omdirigert]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Delfila %s·(%s) manglar kjeldefil" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Delfila ·%s·(%s) har ei ugangbar kjeldefil" #, fuzzy #~ msgid "Download status" #~ msgstr "Nedlastingsstatus" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Oppdateringsforseinking: %d sekund" #~ msgstr[1] "Oppdateringsforseinking: %d sekund" #~ msgid "Transferring" #~ msgstr "Overfører" #, fuzzy #~ msgid "QR: ???" #~ msgstr "KR: %u" #~ msgid "QR: %u" #~ msgstr "KR: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "I kø" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - syne framdrifta på eit søk" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Opprettar MD4 og AICH hash for fila: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Opprettar MD4 hash for fila: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Opprettar AICH hash for fila: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "ÅTVARING: Kunne ikkje fjerne den opphavelege '%s' etter tryggleikskopi" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "ÅTVARING: Greidde ikkje å slette %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Verdigjeving (total):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Forsøk å overføre heile delar til alle opplastingar" #~ msgid "Networks window" #~ msgstr "Nettverksvindauge" #~ msgid "Searches window" #~ msgstr "Søkevindauge" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Lastar ned" #~ msgid "Shared files window" #~ msgstr "Vindauge for delte filer" #~ msgid "Messages window" #~ msgstr "Meldingsvindauge" #~ msgid "Statistics graph window" #~ msgstr "Statistikkgrafvindauge" #~ msgid "Preferences settings window" #~ msgstr "Innstillingsvindauge" #~ msgid "Transfers" #~ msgstr "Overføringar" #~ msgid "Files transfers window" #~ msgstr "Filoverføringsvindauge" #~ msgid "Unban" #~ msgstr "Gje amnesti" #~ msgid "Show Uploads" #~ msgstr "Syne opplastingar" #~ msgid "Show Queue" #~ msgstr "Syne kø" #~ msgid "Select View" #~ msgstr "Vel utsyn" #~ msgid "Client Software" #~ msgstr "Klientmjukvare" #~ msgid "Waited" #~ msgstr "Venta" #~ msgid "Upload Time" #~ msgstr "Opplastingstid" #~ msgid "Upload/Download" #~ msgstr "Opplasting/nedlasting" #~ msgid "Remote Status" #~ msgstr "Fjernstatus" #~ msgid "File Priority" #~ msgstr "Filprioritet" #~ msgid "Score" #~ msgstr "Score" #~ msgid "Asked" #~ msgstr "Spurt" #~ msgid "Last Seen" #~ msgstr "Sist sett" #~ msgid "Entered Queue" #~ msgstr "Kom inn i kø" #~ msgid "Transferred Up" #~ msgstr "Overført Opp" #~ msgid "Transferred Down" #~ msgstr "Overført Ned" #~ msgid "Userhash" #~ msgstr "Brukarhash" #~ msgid "Encrypted" #~ msgstr "Kryptért" #~ msgid "Shows Upload / Up-queue" #~ msgstr "Syner opplasting / oppkøa" #~ msgid "Clients on queue :" #~ msgstr "Klientar i kø :" #~ msgid "Current Session" #~ msgstr "Novérande økt" #~ msgid "Total" #~ msgstr "Totalt" #~ msgid "Requested :" #~ msgstr "Etterspurt :" #~ msgid "Files Transfers Window" #~ msgstr "Filoverføringsvindauge" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Brukarar totalt:·%s·|·Filer totalt:·%s" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "" #~ "ÅTVARING: Kunne ikkje fjerne den opphavelege '%s' etter tryggleikskopi" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country():·Greidde ikkje å laste landsdata frå " #~ msgid "Get IPFilter level." #~ msgstr "Få " #~ msgid "Makes a search." #~ msgstr "Lagar eit søk." #, fuzzy #~ msgid "Killed!" #~ msgstr "Mislukka" #, fuzzy #~ msgid "Using amuleweb in '%s'." #~ msgstr "Køyre amuleweb ved oppstart" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "Avslutt aMule" #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Dei følgjande alternativa har vorte endra i denne utgåva av " #~ "tryggleiksomsyn:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "*·Støtte for protokolltåkeleggjing er aktivert for innkomande og utgåande " #~ "koplingar.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Oppdatering av tenarlista frå andre tenarar og klientar er deaktivert.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "For meir informasjon om årsaka for desse endringane, søk\n" #~ "på \"fake servers\" i wikien til aMule på http://wiki.amule.org.\n" #~ "Det er viktig at du tek bort alle falske tenarar frå tenarlistafor at " #~ "aMule skal fungere skikkeleg." #~ msgid "Fetching status..." #~ msgstr "Hentar status..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Brukarar:·E:·%s·K:·%s·|·Filer·E:·%s·K:·%s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Klient %s·på·IP:Port·%s:%d·nyttar·%s·%s·%s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->tenarliste->GetServerByAddress()·ga attende NULL" #~ msgid "Firewalled" #~ msgstr "Brannmura" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "Lasta %d flagg bitmap" #~ msgstr[1] "Lasta %d flagg bitmaps." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "" #~ "Fila %s er for stor for Muldyret: maksimal lovleg filstorleik er 4 GB." #~ msgid "No handler for this file type." #~ msgstr "Ingen handsamar for denne filtypen" #~ msgid "File was not saved" #~ msgstr "Fila vart ikkje lagra" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "" #~ "Greidde ikkje å opprette kopling. Ikkje i stand til å kople til verten\n" #~ msgid "Message Filter" #~ msgstr "Meldingsfilter" #~ msgid "Gui Tweaks" #~ msgstr "Draktinnstillingar" #~ msgid "Core Tweaks" #~ msgstr "Kjerneinnstillingar" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Tidsforseinking på verktytips i sekund" #~ msgid "Show part file number before file name" #~ msgstr "Syne delfilnummer før filnamn" #~ msgid "Skin Support" #~ msgstr "Hudstøtte" #~ msgid "- no skins available -" #~ msgstr "- ingen huder tilgjengeleg -" #~ msgid "Online Signature Directory:" #~ msgstr "Nettsignaturkatalog:" #~ msgid "Filtering Options:" #~ msgstr "Filterval:" #~ msgid "Line Capacities" #~ msgstr "Linjekapasitet" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Merk: Desse verdiane vert\n" #~ " berre nytta til statistikk." #~ msgid "Standard client TCP Port:" #~ msgstr "Standard klient TCP-port:" #~ msgid "Extended client UDP Port:" #~ msgstr "Utvida UDP port for klient:" #~ msgid "Bind Address" #~ msgstr "Bind adresse" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "UDP-port for utvida tenarførespurnader (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "Maks kjelder per fil" #~ msgid "Connection limits" #~ msgstr "Koplingsgrense" #~ msgid "Universal Plug and Play" #~ msgstr "Universell·Plug·and·Play" #~ msgid "Enable UPnP" #~ msgstr "Aktivér UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "UPnP·TCP-port:" #~ msgid "Start next paused file when a file completed" #~ msgstr "Start neste fil på pause når ei fil vert ferdig." #~ msgid "Check disk space" #~ msgstr "Sjekk diskplass" #~ msgid "Min disk space:" #~ msgstr "Minimum diskplass:" #~ msgid "Incoming" #~ msgstr "Innkomande" #~ msgid "Temporary" #~ msgstr "Mellombels" #~ msgid "Shared" #~ msgstr "Delt" #~ msgid "Select Statistics Colors" #~ msgstr "Vel statistikkfargar" #~ msgid "Download Queue Files Progress" #~ msgstr "Filframgang i nedlastingskø" #~ msgid "Show percentage" #~ msgstr "Syne prosent" #~ msgid "Show progressbar " #~ msgstr "Syne framdriftsbar" #~ msgid "Enable skin support " #~ msgstr "Aktiver hudstøtte" #~ msgid "Skin:" #~ msgstr "Hud:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "Automatisk sortering av filene i nedlastigskøa (høg CPU)" #~ msgid "Show Fast eD2k Links Handler" #~ msgstr "Syne eD2k snøgglenkjehandsamar" #~ msgid "Web server port" #~ msgstr "Vevtenarport" #~ msgid "Enable UPnP port forwarding on the web server port" #~ msgstr "Aktiver UPnP portvidaresending på vevtenarporten" #~ msgid "Web server UPnP TCP port" #~ msgstr "Vevtenar UPnP TCP port" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "IP for lyttande grensesnitt\n" #~ "(tom for einkvar)" #~ msgid "TCP port" #~ msgstr "TCP-port" #~ msgid "Who can see shared files:" #~ msgstr "Kven kan sjå delte filer:" #~ msgid "Event types" #~ msgstr "Hendingstypar" #~ msgid "ERROR: can not accept web client connection\n" #~ msgstr "FEIL: kan ikkje godkjenne vevklientkopling\n" #~ msgid "" #~ "Your Auto-update server list is empty.\n" #~ "'Auto-update server list at startup will be disabled." #~ msgstr "" #~ "Tenarlista for automatisk oppdatering er tom.\n" #~ "Tenarlista for automatisk oppdatering ved oppstart er ikkje aktivert." #~ msgid "ERROR: Invalid part.met fileversion: %s ==> %s" #~ msgstr "FEIL: Ugangbar part.met filutgåve: %s ==> %s" #~ msgid "Makes aMule promt before exiting." #~ msgstr "Får aMule til å be om stadfesting før avslutting." #~ msgid "Bandwith limits" #~ msgstr "Bandbreiddegrenser" #~ msgid "This UDP port is used for extended ed2k requests and Kad network" #~ msgstr "" #~ "Denne UDP porten vert brukt til utvida eD2k etterspurnader og til " #~ "kadnettverket" #~ msgid "Show overhead bandwith" #~ msgstr "Syne dataoverskotsbandbreidde" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. aktiv" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICH stolar på alle hashar (ikkje tilrådd)" #~ msgid "Disk space" #~ msgstr "Diskplass" #~ msgid "Create Backup for preview" #~ msgstr "Opprett tryggleikskopi for førehandssyning" #~ msgid "Advanced Settings" #~ msgstr "Avanserte innstillingar" #~ msgid "Progressbar Style" #~ msgstr "Stil på framdriftsbar" #~ msgid "Column Sorting" #~ msgstr "Kolonnesortering" #~ msgid "Misc Gui Tweaks" #~ msgstr "Ymse draktinnstillingar" #~ msgid "File Options" #~ msgstr "Filinnstillingar" #~ msgid "Status text" #~ msgstr "Statustekst" #~ msgid "Pop-up status text" #~ msgstr "Utsprett status tekst" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr " 'All-platform' p2p klient bygd på eMule \n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr " Vevside: http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr " Forum: http://forum,amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "OSS: http://wiki.amule.org \n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " Kontaktadmin@amule.org (administrative saker) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ " Opphavsrett (c) 2003-2008 aMule Team \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr "Ein del av aMule er bygd på \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " Opphavsrett (c) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "For ein film kan du skrive lengda, historia, språket ...\n" #~ "og dersom den er falsk kan du fortelje det til andre brukarar." #~ msgid "Misc Options" #~ msgstr "Ymse brukarval" #~ msgid "Server Options" #~ msgstr "Tenarval" #~ msgid "Display server motd when connected ..." #~ msgstr "Syne tenar motd når tilkopla ..." #~ msgid "eD2k Info" #~ msgstr "eD2k info" #~ msgid "Disable/Enable" #~ msgstr "Deaktivere/Aktivere" #~ msgid "Authentication" #~ msgstr "Godkjenning" #~ msgid "General Settings" #~ msgstr "Brukarval" #~ msgid "Hard limit" #~ msgstr "Hard grense" #~ msgid "Max Connections" #~ msgstr "Maks koplingar" #~ msgid "GUI Tweaks" #~ msgstr "Draktinnstillingar" #~ msgid "Remote Control" #~ msgstr "Fjernkontroll" #~ msgid "Unable to determine selected browser!" #~ msgstr "Ikkje i stand til å fastslå valt vevlesar!" #~ msgid "User Defined" #~ msgstr "Brukardefinert" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org·-·Linux-muldyret" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Vel nettlesar her" #~ msgid "Custom Browser:" #~ msgstr "Eigenvalt nettlesar" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Skriv nettlesarnamnet her. For å nytte ein eigen nettlesar, vel ein i " #~ "nedtrekksmenyen over." #~ msgid "Please wait... " #~ msgstr "Vér god å vente..." #~ msgid "Could not determine the command for running the browser." #~ msgstr "Fann ikkje kommando for å køyre nettlesar." amule_2.3.1+git20151120.0023527bc2.orig/po/pl.po0000644000175000017500000066260212611472361017110 0ustar morphmorph# translation of pl.po to # aMule i18n resource file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. # Kry , 2004. # Ogon , 2004, 2005. # Mateusz Butowski <>, 2007, 2008. # Michał Trzebiatowski , 2008, 2009, 2010. # # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2010-08-19 01:21+0100\n" "Last-Translator: Michał Trzebiatowski \n" "Language-Team: translationproject.org/team/pl.html \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" "X-Poedit-Language: Polish\n" "X-Poedit-Country: POLAND\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Dodaj znajomego" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Musisz wpisać poprawne IP oraz port!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informacje" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Wybrany skrót użytkownika jest niepoprawny!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Nie udało się otworzyć pliku ED2KLinks." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "UWAGA: Nie możesz dodać samego siebie jako źródło linku ed2k, gdy masz lowid." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Teraz, zakańczam główną aplikację..." #: src/amule.cpp:248 #, fuzzy, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Zakańczam instancję amuleweb z pid `%ld' ... " #: src/amule.cpp:251 #, fuzzy, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Zabiłam instancję amuleweb z pid `%ld' ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Nieudane" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Zakończenie jądra." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "Zamykanie aMule zakończone." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Wyniki debugu pamięci dla wyjścia aMule:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "Konfiguracja EC" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Ustawione hasło i włączone połączenia zewnętrzne." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "UWAGA" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Twoje ustawienia lokalne zostały zmienione na domyślne systemowe w związku " "ze zmianą konfiguracji. Przepraszamy." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Informacje" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Nie masz żadnego serwera na twojej liście serwerów.\n" "Czy chcesz, żeby aMule pobrał nową listę teraz?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Pobieranie listy serwerów" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "serwer sieciowy uruchomiony na pid %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Zażądałeś włączenia serwera sieciowego podczas uruchomienia, ale binarki " "amuleweb nie mogą być uruchomione. Zainstaluj paczkę zawierającą serwer " "sieciowy aMule lub skompiluj aMule używając --enable-webserver i uruchom " "make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "BŁĄD" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Nie można było powiązać portów z określonym adresem: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Port %u jest niedostępny. Będziesz mieć LowID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Port %u jest niedostępny!\n" "\n" "To oznacza, że będziesz mieć LowID.\n" "\n" "Sprawdź swoją sieć aby mieć pewność, że port jest otwarty dla wejścia i " "wyjścia." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Nie udało się utworzyć pliku podpisu online" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Nie udało się utworzyć pliku podpisu online aMule" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Wybrane lokale wydają się być niezainstalowane. (Uwaga: I tak spróbuję je " "ustawić)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Po raz pierwszy uruchomiłeś aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Ta wersja jest aktualizowaną codziennie wersją testową i\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "nie dajemy żadnej gwarancji, że nie zniszczy ona niczego, nie spali twojego " "domu\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "lub zabije twojego psa. *Powinna* ona jednak mimo wszystko działać " "poprawnie.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Więcej informacji, pomoc i nowe wydania znajdziesz na naszej stronie \n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "www.aMule.org lub na naszym kanale IRC: #aMule na irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Nie wahaj się zgłaszać jakichkolwiek błędów na http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Katalog wybrany na pliki sygnatury online jest nieprawidłowy!\n" " Sygnatura online zostanie wyłączona dopóki nie poprawisz tego w " "preferencjach." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Zawiadomiono nazwę hostu serwera" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Wstępna alokacja dysku dla pliku '%s' nie powiodła się: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "BŁĄD: nie mogę otworzyć pliku logów" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "UWAGA: plik logów jest pusty. Coś jest nie tak." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Logi zostały zresetowane" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Wiadomość z serwera: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "Pominięto pobranie %s, ponieważ żądany plik nie jest nowszy." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Pobieranie listy węzłów nie powiodło się." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Nie można otworzyć pobranego pliku kontroli wersji" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Uszkodzony plik kontorli wersji" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Używasz przestarzałej wersji aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Twoje wersja eMule to %i.%i.%i, najnowszą wersją jest %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Najnowsza wersja jest zawsze dostępna na http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "UWAGA: Twoja wersja aMule jest przestarzała: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Twoja kopia aMule jest przestarzała." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Nie udało się pobrać pliku kontroli wersji" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Użytkowników: %s | Plików: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Użytkowników: E: %s K: %s | Plików: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Nie wybrano sieci" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "z LowID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "z HighID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Połączony z %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Łączenie z %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Rozłączono z eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Włączono Kad." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Zatrzymano Kad." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Połączono z Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Połączono z Kad (za firewallem)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Rozłączono z Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Nie można użyć sieci Kad, jeśli port UDP jest wyłączony w preferencjach, nie " "włączam." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Zablokowano sieć Kad w preferencjach, nie łączę." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "BŁĄD: daemon aMule nie może być użyty, gdy zewnętrzne połączenia są " "zablokowane. Aby włączyć połączenia zewnętrzne użyj normalnego aMule, włącz " "amuled z opcją --ec-config lub ustaw klucz \"AcceptExternalConnections\" na " "1 w pliku ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "BŁĄD: Potrzebne jest ważne hasło do korzystania z zewnętrznych połączeń, a " "daemon aMule nie może używany być bez zewnętrznych połączeń. Aby uruchomić " "deamon aMule, musisz ustawić pole \"ECPassword\" w pliku ~/.aMule/amule." "conf~ z odpowiednią wartością. Wykonaj amuled z flagą --ec-config aby " "ustawić hasło. Więcej informacji można znaleźć na http://wiki.amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - począwszy timer" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: rozdzielanie tła - do zobaczenia" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Nie można utworzyć pliku Pid" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "BŁĄD: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "To jest aMule %s oparty na eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Uruchomiony na %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Odwiedź http://www.amule.org aby sprawdzić czy jest dostępna nowa wersja." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "KRYTYCZNY BŁĄD: Nie udało się utworzyć Timera" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "zdalna kontrola aMule " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Zrzut ekranu:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "\"Ogólnie-Platformy\" klient P2P oparty na eMule\n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Strona internetowa: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Forum: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Kontakt: admin@amule.org (kwestie administracyjne) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 Zespół aMule \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Część aMule oparta jest na \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: routing peer-to-peer oparty na metryce XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Wiadomość" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "dialog aMule zniszczony" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Łączenie" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Łączenie" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Rozłączony" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Za firewallem" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Połączony" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Łączenie" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Wyłączony" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Anuluj" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Zatrzymaj aktualne próby połączenia" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Rozłącz" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Rozłącz z aktualnie połączonymi sieciami" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Podłącz" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Połącz z aktualnie włączonymi sieciami" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Wysł: %.1f(%.1f) | Pobr: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Wysł: %.1f | Pobr: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Połączony)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Rozłączony)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Czy na pewno chcesz opuścić %s?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Potwierdzenie wyjścia" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Uruchomienie polecenia: " #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- domyślnie -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Katalog skórek '%s' nie istnieje" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "OSTRZEŻENIE: Nie udało się otworzyć pliku skórki '%s' do odczytu" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Sieci" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Okno sieci" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Szukaj" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Okno wyszukiwania" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Pobieranie" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Okno pobierań" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Udostępnione pliki" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Okno udostępnionych plików" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Wiadomości" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Okno wiadomości" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statystyki" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Okno wykresów statystyk" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Preferencje" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Okno preferencji" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Import" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Narzędzie importowania plików części" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Informacje o" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Informacje/Pomoc" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Sieć eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Sieć Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Brak sieci" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "Pilot aMule" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Krytyczny Błąd: Nie udało się utworzyć Timera Core" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Podłączony do zdalnego amule" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Krytyczny Błąd: Nie udało się utworzyć Timera Poll" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Przechodzę do pętli wydarzenia..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Łączenie..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Nieudane połączenie " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Zdalne GUI EC obsługi zdarzenia" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Zamykanie" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Połączenie nie powiodło się. Nie można połączyć się z %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Połączenie zostało zamknięte - aMule prawdopodobnie zakończone." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Gotowy" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Wszystkie" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Nie można utworzyć katalogu '%s' dla kategorii '%s', używany jest nadal " "katalog '%s'." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Nieznany" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Nieudane pobieranie udostępnionych plików od użytkownika '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Szukam kolegi dla połączenia lowid" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Fałszywa wersja eMule %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Fałszywy eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Fałszywy eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (oparty na eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Użytkownik: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Zażądano: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statystyki plików tej sesji: Zaakceptowano %d z %d żądania, %s przesłano\n" msgstr[1] "" "Statystyki plików tej sesji: Zaakceptowano %d z %d żądań, %s przesłano\n" msgstr[2] "" "Statystyki plików tej sesji: Zaakceptowano %d z %d żądań, %s przesłano\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statystyki plików dla wszystkich sesji: Zaakceptowano %d z %d żądania, %s " "przesłano\n" msgstr[1] "" "Statystyki plików dla wszystkich sesji: Zaakceptowano %d z %d żądań, %s " "przesłano\n" msgstr[2] "" "Statystyki plików dla wszystkich sesji: Zaakceptowano %d z %d żądań, %s " "przesłano\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Zażądano nieznany plik" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Wiadomość przefiltrowana od '%s' (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nowa wiadomość od '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Użytkownik %s (%u) zażądał twojej listy plików udostępnionych w katalogu %s -" "> Odmówiono" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "UWAGA: %s nie może być otwarty." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "OSTRZEŻENIE: Anulowana lista plików uszkodzona, zawiera nieprawidłowy " "nagłówek." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "Błąd IO podczas odczytu pliku %s: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Błąd podczas zapisywania pliku %s: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Wpisz Captcha" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategoria" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nowa kategoria" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Wybierz folder na pobierane pliki" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Musisz określić nazwę kategorii!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Musisz określić ścieżkę dla kategorii!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Nie udało się utworzyć katalogu przychodzących dla kategorii. Proszę podać " "właściwą ścieżkę!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Rozpoczęto sesję czata: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Połączony do klienta ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Łączenie z klientem ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Nie udało się połączyć do klienta / Połączenie utracone ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "*** Zdałeś captcha i użytkownik otrzymał twoją wiadomość. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Twoja odpowiedz na captcha była nieprawidłowa i wiadomość ta została " "zignorowana. Możesz otrzymać kolejną captcha wysyłając nową wiadomość. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Chat" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Zamknij kartę" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Zamknij wszystkie karty" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Zamknij inne karty" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Dodaj do znajomych" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Plik kredytów załadowany, %u klient jest znany" msgstr[1] "Plik kredytów załadowany, %u klientów jest znanych" msgstr[2] "Plik kredytów załadowany, %u klientów jest znanych" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Kredyty wygasły dla %u klienta!" msgstr[1] " - Kredyty wygasły dla %u klientów!" msgstr[2] " - Kredyty wygasły dla %u klientów!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Nie znaleziono pliku cryptkey.dat, tworzenie." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Szczegóły klienta" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Włączony" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Obsługiwany" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Nieobsługiwany" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Wyłączony" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Połączony" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Rozłączony" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Niekompletne" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Zły człowiek" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Weryfikacja - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Niedostępne" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "Użytkownik %s (%u) zażądał twojej listy udostępnionych plików-> Zaakceptowano" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "Użytkownik %s (%u) zażądał twojej listy udostępnionych plików -> Odmówiono" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "Użytkownik %s (%u) zażądał twojej listy udostępnionych katalogów -> " "Zaakceptowano" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "Użytkownik %s (%u) żążądał twojej listy udostępnionych katalogów -> Odmówiono" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Użytkownik %s (%u) zażądał twojej listy plików udostępnionych w katalogu %s -" "> Zaakceptowano" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Użytkownik %s (%u) zażądał twojej listy plików udostępnionych w katalogu %s -" "> Odmówiono" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Użytkownik %s (%u) udostępnia katalog %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Użytkownik %s (%u) wysłał niechciane katalogi udostępnione." #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "Użytkownik %s (%u) wysłał listę plików udostępnionych w katalogu %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Użytkownik %s (%u) zakończył wysyłanie listy udostępnionych plików" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Użytkownik %s (%u) wysłał niechcianą listę udostępnionych plików" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Użytkownik %s (%u) odmówił dostępu do listy udostępnionych plików/katalogów" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Komentarze pliku" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Nazwa użytkownika" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Nazwa pliku" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Ocena" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Komentarz" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Bez komentarza" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u komentarz" msgstr[1] "%u komentarze" msgstr[2] "%u komentarzy" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Zbanowany klient %s za wysyłanie %s uszkodzonych danych z %s dla pliku '%s'" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Ni]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Wy]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Bardzo niski" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Niski" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normalny" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Wysoki" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Bardzo wysoki" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Wydanie" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Pytam" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Połączenie przez serwer" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Pełna kolejka" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "W kolejce" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Pobieranie" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Odbieram zestaw skrótów" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Brak potrzebnych części" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Nie można połączyć LowID do LowID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Zbyt dużo połączeń" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Połączenie przez Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Zbyt dużo połączeń Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Zbanowany" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Błąd połączenia" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Zdalna kolejka pełna" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Stary MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Nowy MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "Kompatybilny z eMule" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Serwer lokalny" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Serwer zdalny" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Wymiana źródeł" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Pasywny" #: src/DataToText.cpp:133 msgid "Link" msgstr "Link" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Ziarna źródła" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Wynik wyszukiwania" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Zakończono" #: src/DataToText.cpp:146 msgid "In progress" msgstr "W trakcie" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "BŁĄD: Brak przestrzeni dyskowej" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "BŁĄD: Nie znaleziono partmet" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "BŁĄD: Błąd IO!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "BŁĄD: Niepowodzenie!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "W kolejce" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Aktualnie pobierane" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Nieznany lub błędny format pliku tymczasowego." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Część" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Rozmiar" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Przesłano" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Prędkość" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Postęp" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Źródła" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Priorytet" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Status" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Pozostało czasu" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Ostatnio widziano cały" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Ostatnio widziany" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Jesteś pewien, że chcesz usunąć wybrany plik?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Jesteś pewien, że chcesz usunąć wybrane pliki?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Informacja zwrotna od: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Automatyczny" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Zatrzymaj" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pauza" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Wznów" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "Wyczyść s&kończone" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Przerzuć wszystkie A4AF do tego pliku" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Przerzuć wszystkie A4AF do tego pliku (Auto)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Przerzuć wszystkie A4AF do każdego innego pliku" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Zaawansowane opcje" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Podgląd" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Pokaż &szczegóły pliku" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Pokaż wszystkie komentarze" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Skopiuj magnet URI do schowka" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Kopiuj &link eD2k do schowka" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Kopiuj informację zwrotną do schowka" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "nieprzydzielony" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Przydziel do kategorii" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Otwórz plik" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Wprowadź nową nazwę dla tego pliku:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Zmień nazwę" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Pobieranie (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Aby zapobiec pojawianiu się tego komunikatu przy każdym podglądzie,\n" "ustaw swój odtwarzacz wideo w preferencjach (domyślny jest mplayer)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Podgląd pliku" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "BŁĄD: Nie udało się uruchomić zewnętrznego odtwarzacza! Komenda: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Zapisywanie pliku części %u z %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Wszystkie pliki części zapisane." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Ładowanie plików tymczasowych z %s." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Ładowanie pliku części %u z %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "BŁĄD: Załadowanie pliku kopii zapasowej nieudane. Poszukaj na http://forum." "amule.org sposobów odzyskiwania .part.met." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Wszystkie pliki części załadowane." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Nie znaleziono plików z częściami" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Znaleziono %u plik części" msgstr[1] "Znaleziono %u pliki części" msgstr[2] "Znaleziono %u plików części" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "System plików katalogu Temp nie obsługuje dużych plików." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "System plików katalogu Incoming nie obsługuje dużych plików." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Pobieranie %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Starasz się już pobierać plik '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Masz już ten plik '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Starasz się już pobierać plik %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Nie można skonwertować magnet linka do eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Nieznany protokół linku: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Nieprawidłowy link eD2k! BŁĄD: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Klient wysyła pakiet po nie udanym uwierzytelnieniu." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Zewnętrzne połączenie zamknięte." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Zewnętrzne połączenia wyłączone w związku z brakiem hasła!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Zewnętrzne połączenia wyłączone w pliku konfiguracyjnym" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Nowe zewnętrzne połączenie zaakceptowane" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "BŁĄD: nie można zaakceptować nowego połączenia zewnętrznego" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Zewnętrzne połączenia odrzucone, ze względu na brak hasła w preferencjach!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Łączę z klientem: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Nieznana wersja" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Niepoprawny ID wersji EC, może występować niezgodność binarna. Użyj rdzenia " "i zdalnego z tej samej wersji." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Nie można połączyć się z wersją finałową z dowolnej wersji SVN! " "*westchnięcie* prawdopodobnie zapobiegnięto awarii" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Zła wersja protokołu." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Brak znacznika wersji protokołu." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" "Uwierzytelnianie nie powiodło się: nieprawidłowy skrót podany jako hasło EC." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Uwierzytelnianie nie powiodło się: nieprawidłowe hasło." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Uwierzytelnianie nie powiodło się: brak hasła." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Nieprawidłowe żądanie, najpierw musisz się uwierzytelnić." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Dostęp udzielony." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Wyślij wiadomość błędu \"%s\" do klienta." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Próba nieautoryzowanego dostępu z %s. Połączenie zakończone." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "Zdalna komenda pliku części nieudana: Skrót dla pliku nieznaleziony: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Skrót dla pliku nieznaleziony: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OOPS! Błąd przetwarzania OpCode!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Nie dodano serwera" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "serwer nieznaleziony: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "trzeba zdefiniować serwer do usunięcia" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k jest wyłączony w preferencjach." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Wyszukiwanie w trakcie. Odświeżenie rezultatów za chwilę!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Szukanie przez WWW ze zdalnych interfejsów nie ma sensu." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Brak punktów dla wykresu." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Twój klient nie jest skonfigurowany do tego poziomu szczegółów." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "External Connection: żądanie zamknięcia" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Już w trakcie zamykania." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "ExternalConn: dodaję link '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Nieprawidłowy lub znajdujący się już na liście link." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Nie znaleziono pliku." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Nieprawidłowa nazwa pliku." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Nie udało się zmienić nazwy pliku." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad jest wyłączony w preferencjach." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Już podłączony do eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Łączę do eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Już podłączony do Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Łączę z Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Wszystkie sieci są wyłączone." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Rozłącz z eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Rozłączono z Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "External Connection: otrzymano nieprawidłowy opcode: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Nieprawidłowy opcode (zła wersja protokołu?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Nieznane rozszerzenie '%s' dla komendy '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Nieznana komenda '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Ta komenda nie może posiadać argumentu.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Ta komenda musi posiadać argument.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Ta komenda jest niekompletna, użyj jednego z rozszerzeń podanych niżej.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Dostępne rozszerzenia:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Dostępne komendy:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Wszystkie komendy są niewrażliwe na wielkość znaków.\n" "Wpisz '%s ', aby uzyskać szczegółowe informacje na temat " ".\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Wychodzi z programu." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Pokaż pomoc." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Aby uzyskać pomoc dotyczącą komendy, wpisz 'help '.\n" "Aby uzyskać pełną listę komend, wpisz 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Użyj '%s' aby otrzymać listę komend\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Błąd składni!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Błąd przetwarzania komendy - to nie powinno się zdarzyć! Proszę zgłosić " "błąd\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Ta komenda nie powinna posiadać żadnego parametru." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Ta komenda musi posiadać parametr." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Nieprawidłowy argument." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "To jest niekompletna komenda." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Wpisz '%s' , aby uzyskać więcej pomocy.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "To jest %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "To jest %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Tworzenie klienta...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "OK, wychodzę %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Nie można połączyć z pustym hasłem.\n" "Musisz podać hasło poprzez edycję pliku konfiguracyjnego\n" "lub poprzez linię poleceń, lub podaj je kiedy zostaniesz o to poproszony.\n" "\n" "Wychodzę...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Pokazuj ten tekst pomocy." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Host gdzie jest uruchomiony aMule. (domyślny: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Port zewnętrznych połączeń aMule. (domyślny: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Hasło połączeń zewnętrznych." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Czyta konfiguracje z pliku." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Nie wysyłaj żadnego wyjścia na stdout." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Bądź gadatliwy - pokazuj także wiadomości diagnostyczne." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Ustawia locale programu (język)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Zapisuje opcje listy komend do pliku konfiguracyjnego." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Tworzy plik konfiguracyjny oparty na pliku konfiguracyjnym aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Drukuj wersję programu." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Szczegóły pliku" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% skończone" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "Nie udało się otworzyć pliku listy przyjaciół 'emfriends.met' do odczytu!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "Nie udało się otworzyć pliku listy przyjaciół 'emfriends.met' do zapisu!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "KRYTYCZNE - brak klienta przy StartChatSession" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Znajomi" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Pokaż &szczegóły" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Dodaj znajomego" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Usuń znajomego" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Wyślij &wiadomość" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Pokaż pliki" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Ustaw slot dla znajomego" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Jesteś pewien, że chcesz usunąć wybranego przyjaciela?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Jesteś pewien, że chcesz usunąć wybranych przyjaciół?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Nie możesz ustanowić więcej niż jeden slot dla znajomego.\n" "Przydzielono tylko jeden slot." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Wybór wielu" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Wyślij wiadomość do użytkownika" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Wiadomość do wysłania:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Usuń ze znajomych" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Wyślij wiadomość" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Zamień na ten plik" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "QR: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Proszę o inny plik" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Oczekiwanie na slot wysyłań" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "W kolejce" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Wysyłanie" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Brak" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Nie" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Tak" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Pobieranie..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "Pobranie HTTP anulowane" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Nie można utworzyć docelowego pliku %s do pobrania!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "Adres URL do pobrania nie może być pusty" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "Adres URL %s zwrócił: %i - Błąd (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Krytyczny błąd podczas zapisywania pobranego pliku" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "Pobrano %d bajtów" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Oczekiwane %d bajtów, ale pobrane zostało %d bajtów" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "Nieprawidłowy adres URL do pobrania HTTP lub przekierowania HTTP (nie " "zapomniałeś 'http://' ?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Nie można połączyć się z serwerem pobrania HTTP" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Nieprawidłowa odpowiedź serwera pobrania HTTP" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Pobierz nową GeoIP.dat z %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Nie można pobrąć pliku GeoIP.dat, przerwana aktualizacja." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Nie można usunąć pliku %s, przerwana aktualizacja." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Nie można zmienić nazwy pliku %s, przerwana aktualizacja." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "Pomyślnie zaktualizowany %s" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Błąd aktualizacji GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Nie powiodło się pobranie %s z %s" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "" "Nie można połączyć się z serwerem pobrania HTTPNie powiodło się pobranie " "GeoIP.dat z %s" #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Ładowanie filtrów IP 'ipfilter.dat' i 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "Ładowanie pliku ipfilter.dat nieudane '%s', napotkano nieznany format." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "Ładowanie pliku ipfilter.dat nieudane '%s', nie można otworzyć pliku." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Załadowano %u zakres IP z '%s'." msgstr[1] "Załadowano %u zakresy IP z '%s'." msgstr[2] "Załadowano %u zakresów IP z '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u niepoprawna linia została odrzucona." msgstr[1] "%u niepoprawne linie zostały odrzucone." msgstr[2] "%u niepoprawnych linii zostało odrzuconych." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Nie można załadować danych kraju dla '%s'." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "Filtr IP jest gotowy" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Rozruch od \n" "znanych klientów" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Węzły (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Nieprawidłowe ip do rozruchu" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Nieprawidłowy port do rozruchu" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Proszę wypełnij wszystkie wymagane pola" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Czy jesteś pewien, że chcesz pobrać nowy plik nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Kontynuowanie spowoduje usunięcie obecnych węzłów i restart połączenia " "Kademlii." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Kontynuować?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: wyszukiwana fraza jest za krótka" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Słowa kluczowe dla wyszukiwania: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Szukane słowo kluczowe jest już na liście wyszukiwania: " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Wczytaj %u kontakt Kad" msgstr[1] "Wczytaj %u kontakty Kad" msgstr[2] "Wczytaj %u kontaktów Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "Nie znaleziono kontaktów, proszę rozruszyć, lub pobrać plik nodes.dat." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Tylko %d dostępny kontakt KAD, nodes.dat nie zapisane" msgstr[1] "Tylko %d dostępne kontakty KAD, nodes.dat nie zapisane" msgstr[2] "Tylko %d dostępnych kontaktów KAD, nodes.dat nie zapisane" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Zapisano %d kontakt Kad" msgstr[1] "Zapisano %d kontakty Kad" msgstr[2] "Zapisano %d kontaktów Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Nazwa pliku" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Rozmiar pliku" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Ratio wymiany" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Wysłano" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Zażądano" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Zaakceptowano" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Pełne źródła" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "OSTRZEŻENIE: Znana lista plików uszkodzona, zawiera nieprawidłowy nagłówek." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Nie można załadować wpisu w znanej liście plików, plik może być uszkodzony" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "Nieprawidłowy wpis w znanej liście plików, plik może być uszkodzony: " #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Nieznana wersja" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "Nie można utworzyć docelowego pliku %s do pobrania!" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Tworzenie skrótu" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Zakańczanie" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Ukończono" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Wstrzymano" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Błędne" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Czeka" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Musisz określić hasło." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Nieprawidłowe hasło, nie skrót MD5!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Błąd połączenia" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "Połączenie EC nieudane. Pusta odpowiedź." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "External Connection: Zła odpowiedź serwera, brak nawiązania. Zakończono " "połączenie." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Sukces! Nawiązano połączenie z aMule" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Sukces! Nawiązano połączenie." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "External Connection: Brak dostępu z powodu: " #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "External Connection: Brak nawiązania" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Rozpoczęte pobranie wątku HTTP" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket: Ok." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "BŁĄD: nie można nasłuchiwać na porcie TCP." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "BŁĄD: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "OSTRZEŻENIE: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Zamknij" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Wytnij" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Kopiuj" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Wklej" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Wyczyść" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Zaznacz wszystko" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Nielimitowane" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Menu podajnika aMule" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Limity prędkości:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "UL: Brak" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "UL: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DL: Brak" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DL: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Prędkość pobierania: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Prędkość wysyłania: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Informacje o kliencie" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Ksywka: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Nie wybrano ksywki!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID klienta: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Nie połączony" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Nazwa serwera: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP serwera: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Nie połączony" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "Port TCP: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Port TCP: Nie gotowy" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "Port UDP: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "Port UDP: Nie gotowy" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Podpis online: Włączony" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Podpis online: Wyłączony" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Uptime: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Udostępnionych plików: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Klientów w kolejce: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Razem DL: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Razem UL: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Limit wysyłania" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Limit pobierania" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Ukryj aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Pokaż aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Wyjdź" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "Link eD2k: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Zatwierdź" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Kliknij tutaj, aby dodać link eD2k w linii poleceń do twojej kolejki " "pobierań." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Zdarzenie są wyświetlane tu. Dla pełnej listy zdarzeń, definiuj logowanie w " "zakładce serwerów." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Ładuje..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Ilość użytkowników na serwerze do którego jesteś połączony ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Użytkowników: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Użytkowników połączonych do aktualnego serwera i szacunkowa liczba " "wszystkich użytkowników." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Wysł: 0.0 | Pobr: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Aktualna średnia szybkość wysyłania i pobierania. Jeżeli włączone, liczby w " "nawiasach wskazują narzut komunikacji z klientem." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Wyświetla status połączonych i aktywnych transferów. Czerwone strzałki " "wskazują, że nie jesteś aktualnie połączony, żółte, że masz niskie ID (za " "firewallem) i zielone strzałki wskazują, że masz wysokie ID (optymalny typ " "połączenia)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Niepołączony ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Aktualnie połączony serwer." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Szukaj" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Nazwa:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Typ" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Lokalne" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Globalne" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Skrót pliku" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Parametry dodatkowe" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtrowanie" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Typ Pliku" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Dowolny" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Archiwa" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Obrazy CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Obrazki" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programy" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Teksty" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Filmy" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Rozszerzenie" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Min rozmiar" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bajtów" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Maks. rozmiar" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Dostępność" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filtr:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Wyniki filtrowania" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Odwróć wyniki" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Ukryj znane pliki" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Start" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Więcej" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Wyszukuje więcej wyników na eD2K. Nieobsługiwane jeszcze dla Kad." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Zatrzymaj" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Pobieranie" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Zresetuj pola" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Wyniki" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Wyczyść skończone pobierania" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Źródła pliku:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Ogólne" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Pełna nazwa :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "Brak" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "plik met :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Skrót :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Rozmiar pliku :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Status pliku części:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Ostatnio widziano całość :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Transfer" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Znaleziono źródeł :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Przesyłam ze źródeł :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Części pliku :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Dostępne :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Prędkość transmisji danych :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Aktywny czas pobierania: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Przesłano :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Zakończono :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Inteligentny System Obsługi Błędów" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Utracono z powodu błędów :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Zyskano przez kompresję :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Pakietów uratowanych przez I.C.H. :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Nazwy plików" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Przejmij" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Wyczyść" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Zastosuj" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "OK" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Komentuj/Oceń plik (tekst będą widzieli wszyscy użytkownicy)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Dla filmu można opisać jego długość, historię, język ...\\n\\ni jeśli jest " "on fałszywy, można powiedzieć to innym użytkownikom aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Jakość pliku" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Nieoceniony" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Nieprawidłowy / Uszkodzony / Fałszywy" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Marny" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "W miarę" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Dobry" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Znakomity" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Wybierz ocenę pliku lub skonsultuj z użytkownikiem jeżeli jest " "nieprawidłowy ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Odśwież" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Pobieranie, proszę czekać..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Nieznany rozmiar" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Wymagane informacje" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Adres IP :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Dodatkowe informacje" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Nazwa użytkownika :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Skrót użytkownika :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Dodaj" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Prędkość pobierania" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Aktualna" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Bieżąca średnia" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Średnia sesji" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Prędkość wysyłania" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Połączenie" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktywne pobierania" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktywnych połączeń (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Aktywne wysyłania" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Drzewo statystyk" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Nazwa użytkownika:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Skrót użytkownika:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Oprogramowanie klienta:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Wersja klienta:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Adres IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID użytkownika:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP Serwera:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Nazwa serwera:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Maskowanie:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Transfery do klientów" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Aktualnie żądań:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Średnia prędkość wysyłania:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Średnia prędkość pobierania:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Wysłane (sesja):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Pobrane (sesja):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Wysłanych (razem):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Pobranych (razem):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Punkty" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Modyfikator DL/UL:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Bezpieczny identyfikator:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Pozycja kolejki:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Punkty kolejki:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Ksywa" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - Mule na wielu platformach" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" "To jest nazwa jaką inni użytkownicy będą widzieli łącząc się do Ciebie." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Język:" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Opóźnienie przed pokazaniem podpowiedzi." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Określa język jaki będzie używany do sterowania." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Sprawdź podczas startu czy jest nowa wersja" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Włączenie tego spowoduje, że aMule będzie sprawdzał, czy jest nowa wersja " "podczas startu" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Uruchom zminimalizowany" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Włączenie tego spowoduje minimalizowanie aMule podczas startu." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Pytaj przy wyjściu" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Pytaj przed zakończeniem aMule." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Włącz ikonę w zasobniku" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "To włącza/wyłącza ikonę w zasobniku systemowym." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Zminimalizuj do ikony zasobnika" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Włączenie opcji spowoduje, że aMule będzie minimalizował się do paska " "systemowego zamiast paska stanu." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Opóźnienie tooltipów: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "sekund" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Wybór przeglądarki" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Podaj tutaj nazwę swojej przeglądarki. Pozostaw to pole puste, aby korzystać " "z domyślnej przeglądarki systemu." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Przeglądaj" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Otwórz w nowej karcie jeśli to możliwe" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Otwórz stronę WWW w nowej karcie zamiast w nowym oknie jeśli to możliwe" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Odtwarzacz filmów" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Limity przepustowości" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Wysyłanie" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Przydział slotów" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Pporty" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Standardowy port TCP" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "To jest standardowy port eD2k i nie może być wyłączony." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Port UDP dla żądań serwera (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Rozszerzony port UDP (KAD / globalne wyszukiwanie)" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "Ten port UDP jest używany do rozszerzonych żądań ed2k i sieci KAD" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Włącz UPnP dla przekierowania portów routera" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "Port UPnP TCP (opcjonalnie):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Wiąż lokalne adresy z IP (puste dla każdego):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Tylko zaawansowani użytkownicy: Jeśli masz kilka interfejsów sieciowych, " "wpisz adres interfejsu do którego powiązany powinien być aMule." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Maks. ilość źródeł dla pobieranego pliku:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Maksymalne połączenia jednoczesne:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Automatycznie połącz przy uruchomieniu" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Połącz ponownie po rozłączeniu" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Usuń martwe serwery po" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "próbach" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Autoaktualizacja listy serwerów przy starcie" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Lista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Uaktualnij listę serwerów przy połączeniu do serwera" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Uaktualnij listę serwerów przy połączeniu klienta" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Używaj systemu priorytetów" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Używaj inteligentnego sprawdzania LowID przy połączeniu" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Bezpieczne połączenie" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Automatyczne łączenie tylko do serwerów statycznych" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Ustaw priorytet ręcznie dodanych serwerów na Wysoki" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Inteligentna obsługa uszkodzeń (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Włączone" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "Zaawansowane I.C.H. ufa każdemu skrótu (nie zalecane)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Dodaj pliki do pobrania w trybie wstrzymania" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Dodaj pliki do pobrania z automatycznym priorytetem" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Próbuj najpierw pobrać pierwszy i ostatni kawałek" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Zacznij następny wstrzymany plik, gdy plik gotowy" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Z tej samej kategorii" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Alokuj wstępnie przestrzeń dyskową dla nowych plików" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Dla nowych plików alokuje wstępnie przestrzeń dyskową dla całego pliku " "redukując w ten sposób fragmentację" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Zatrzymaj pobieranie gdy zabraknie wolnego miejsca na dysku" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Zaznacz jeśli chcesz, aby aMule sprawdzał Twoją przestrzeń dyskową" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Wpisz tu minimalną ilość miejsca na dysku." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Zapisz 10 źródeł dla rzadkich plików (< 20 źródeł)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Wysyłanie" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Dodaj udostępnione pliki z automatycznym priorytetem" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Folder docelowy dla pobrań" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Folder dla pobranych plików tymczasowych" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Udostępnione foldery" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" "(Kliknij prawym przyciskiem na katalog, aby udostępnić go razem z " "podkatalogami)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Udostępnij pliki ukryte" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Wykresy" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Odśwież co : 5 sekund" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Czas dla wykresów średnich: 100 minut" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Skala wykresu połączeń: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Skala wykresu pobierania:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Skala wykresu przesyłania:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Kolory:" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Tło" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Siatka" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Aktualnie pobierane" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Bieżąca średnia pobierania" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Średnia pobierania sesji" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Aktualnie wysyłane" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Bieżąca średnia wysyłania" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Średnia wysyłania sesji" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Aktywnych połączeń" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Ikona prędkości w zasobniku systemowym" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Obecne Kad-węzły " #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Działające Kad-węzły" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Sesyjne Kad-węzły" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Wybierz" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Drzewo" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Liczba wyświetlanych wersji klienta (0=nieograniczona)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! UWAGA !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Maks. nowych połączeń" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Rozmiar bufora plików: 240000 bajtów" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Rozmiar kolejki wysyłania: 5000 klientów" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Odświeżanie połączeń do serwera co: Wyłączone" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Skóra do użycia:" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Pokazuj \"Szybkie wyłapywanie linków eD2K\" w każdym oknie." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Pokaż rozszerzone info w kartach kategorii" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Pokaż prędkość transferu w tytule" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Pokaż prędkość transferu w tytule" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Przed nazwą aplikacji" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Za nazwą aplikacji" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Pokaż narzut przepustowości" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Pionowa orientacja paska narzędzi" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Pobierane pliki w kolejce" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Pokaż procent postępu" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Pokaż pasek postępu" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Płaski" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Okrągły" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Auto-sortowanie plików (wysokie obciążenie procesora)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule będzie sortował kolumny w liście pobierania automatycznie" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parametry zewnętrznych połączeń" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Akceptuj zewnętrzne połączenia" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP z interfejsem słuchania:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Wprowadź tutaj w formacie a.b.c.d prawidłowy adres ip nasłuchującego " "interfejsu EC. Puste pole lub 0.0.0.0 oznacza dowolny interfejs." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "Port TCP:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Włącz forwarding portu UPnP na porcie EC" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Hasło" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Parametry serwera sieciowego" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Uruchom serwera internetowego przy starcie" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Szablon WWW" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Hasło pełnych uprawnień" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Włącz użytkowników z niskimi uprawnieniami" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Hasło niskich uprawnień" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Włącz przekierowanie portu UPnP na port serwera internetowego" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Port web serwera UPnP TCP (opcjonalnie)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Odświeżanie strony co: (w sekundach)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Włącz kompresję Gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Kliknij tu aby zastosować wszystkie zmiany dokonane w preferencjach." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Reset wszystkich zmian dokonanych w preferencjach." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Tytuł :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Komentarz :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Katalog przychodzących :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Zmień priorytet nowo przydzielonych plików :" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "Nie zmieniaj" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Wybierz kolor dla tej kategorii (aktualnie wybrany) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Resetuj" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Kliknij tu aby wyczyścić logi." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Kliknij na tym przycisku aby uaktualnić listę serwerów z URL-a ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Lista serwerów" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Wpisz tu url do pliku server.met i przyciśnij przycisk po lewej aby " "zaktualizować listę znanych serwerów." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Dodaj serwer ręcznie: Nazwa" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Wpisz tu nazwę nowego serwera" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port " #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Wpisz tu IP serwera, używając formatu x.x.x.x ." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Wpisz tu port serwera." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Dodaj ręcznie serwer (wypełnij pola od lewej) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Logi aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Serwer Info" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Info eD2K" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Info Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Kliknij ten przycisk, aby uaktualnić listę węzłów z adresu URL ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Węzły (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Wprowadź tutaj url pliku nodes.dat i naciśnij przycisk z lewej, aby " "zaktualizować listę znanych węzłów." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Statystyki węzłów" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Bootstrap" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Nowy węzeł" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Port:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Rozruch od znanych klientów" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Rozłącz z Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Użyj bezpiecznej identyfikacji użytkownika" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Zalecane jest włączenie tej opcji. Nic nie zyskasz wyłączając bezpieczną " "identyfikację użytkownika." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Maskowanie protokołu" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Obsługa maskowania protokołu" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Opcja ta włącza maskowanie protokołu i powoduje, że aMule będzie akceptował " "zamaskowane połączenia od innych klientów." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Użyj maskowania dla połączeń wychodzących" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Opcja ta powoduje, że aMule będzie używał maskowania protokołu podczas " "łączenia z innymi klientami/serwerami." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Akceptuj tylko zamaskowane połączenia" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Opcja ta powoduje, że aMule akceptuje tylko zamaskowane połączenia. Uzyskasz " "mniej źródeł, ale cały twój ruch będzie zamaskowany" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Wszyscy" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Nikt" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Kto może widzieć moje udostępnione pliki:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Wybierz kto może zażądać pokazania listy twoich udostępnionych plików." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Filtrowanie IP" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtruj klientów" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Włącza filtrowanie IP klientów zdefiniowanych w pliku ~/.aMule/ipfilter.dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtruj serwery" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Włącza filtrowanie IP serwerów zdefiniowanych w pliku ~/.aMule/ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Przeładuj listę" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "Przeładuj listę filtrowanych IP z pliku ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Uaktualnij teraz" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Uaktualniaj filtr IP przy starcie" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Poziom filtrowania:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Zawsze filtruj IP z LAN" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Paranoidalna obsługa niepasujących IP" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Odrzuca pakiety, gdy ip klienta jest różne od ip, z którego pakiet jest " "otrzymywany. Używaj z ostrożnością." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Użyj ogólno-systemowego ipfilter.dat jeśli dostępny" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Jeśli ipfilter.dat nie istnieje lokalnie, zezwól na użycie ogólno-" "systemowego pliku ipfilter." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Włącz podpis online" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Włącza zapisywanie pliku OS, który może być użyty przez zewnętrzne aplikacje " "do stworzenia sygnatury itp." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Częstotliwość odświeżania (sek):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Zmień częstotliwość (w sekundach) aktualizacji Sygnatury Online." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Zapisz podpis internetowy w pliku: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "Kliknij tu aby wskazać katalog zawierający pliki Sygnatur Online." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtruj wiadomości przychodzące (za wyjątkiem aktualnej rozmowy):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtruj wszystkie wiadomości" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtruj wiadomości od ludzi, którzy nie są na twojej liście znajomych" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtruj wiadomości od nieznanych klientów" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtruj wiadomości zawierające (jako separatora użyj ','):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "dodaj frazy które według których amule powinien filtrować i blokować " "wiadomości" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Pokaż otrzymane wiadomości w dzienniku" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Komentarze" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtruj komentarze zawierające (użyj ',' jako separatora):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Automatyczne łączenie z serwerem bez proxy" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Włącz uwierzytelnianie" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Włącza/Wyłącza uwierzytelnianie login/hasło" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Nazwa uzytkownika:" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Login używany do połączeń z proxy" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Hasło:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Hasło używane do połączeń z proxy" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Włącz proxy" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Włącza/Wyłącza obsługę proxy" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Typ proxy:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Adres proxy:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Nazwa hosta proxy" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Port proxy:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Port serwera proxy" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Połącz z:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Login do zdalnego amule" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Nazwa użytkownika" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Zapamiętaj te ustawienia" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Włącz gadatliwe logowanie debugowe." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Otwórz plik" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Kategorie wiadomości:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Czekam..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Dodaj importy" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Przywróć wybrane" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Usuń wybrane" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Typy zdarzeń" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Statystyki i klienty w kolejce dla wybranego plik(u-ów) : Sesja / Cały czas" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Aktywne wysyłania" #: src/muuli_wdr.cpp:3371 #, fuzzy msgid "Percent of total files" msgstr "procent wszystkich plików" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Wszystkie udostępnione pliki" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Wybierz filtr przeglądania" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Aktywne wysyłania" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Pokaż klientów" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Przeładuj:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Przeładuj twoje udostępnione pliki" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Wyślij" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Wysyła wybraną wiadomość." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Zamknij tę sesję czata." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Podłącz do dowolnego serwera i/lub Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Udostępnione pliki" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Wyłączone [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "bajt" msgstr[1] "bajty" msgstr[2] "bajtów" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "bajt/sek" msgstr[1] "bajty/sek" msgstr[2] "bajtów/sek" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "sek" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "min" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "godzin" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Dni" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "wszystkie" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "wszystkie inne" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Niekompletne" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Zatrzymany" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Film" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Archiwum" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Tekst" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Aktywny" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Używanie katalogu konfiguracyjnego: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Oczekiwanie na koniec wątku przemiany pliku części ..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Importowanie %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Wczytywanie katalogu temp" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Odbieranie podstawowych informacji z info pobieranego pliku" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Tworzenie pliku docelowego" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Ładowanie danych ze starego pobieranego pliku (%u z %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Zapisywanie bloku w nowym pojedynczym pobieranym pliku (%u z %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Odbieranie informacji o źródłach pobieranego pliku" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Dodawanie pobierania i zapisywanie nowego pliku części" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Import pliku części" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Stan" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Skrót pliku" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Dysk: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Proszę wybraćkatalog w celu poszukiwania tymczasowych pobierań! (Podkatalogi " "zostaną uwzględnione)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Czy chcesz, aby źródła pomyślnie zaimportowanych pobierań zostały usunięte?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Usunąć źródła?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "BŁĄD: Nie udało się utworzyć pliku części)" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Próbuję załadować kopię zapasową pliku met z %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "BŁĄD: Nie udało się otworzyć pliku part.met: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "BŁĄD: plik part.met ma zerowy rozmiar: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "BŁĄD: Nieprawidłowa wersja pliku part.met: %s ==> %s" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "BŁĄD: %s (%s) jest uszkodzony (zła ilość znaków), nie mogę otworzyć pliku." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "BŁĄD: %s (%s) jest uszkodzony (zła ilość znaków), nie mogę otworzyć pliku." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Próbuję odzyskać informacje o pliku..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Odzyskiwanie nienazwanego pliku - będę próbował odzyskać go jako " "RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Odzyskano wszystkie możliwe informacje o pliku :D - Próbuję ich użyć..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Nie mogę odzyskać informacji o pliku :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Nie udało się otworzyć: %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "OSTRZEŻENIE: %s może być uszkodzony (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "BŁĄD podczas zapisywania pliku części: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "Awaria IO podczas zapisywania pliku części:" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Nie można pobrać długości '%s' - użyto pliku %s." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' ma zerowy rozmiar - używam pliku '%s'." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Nie udało się zapisać pliku part.met.seeds dla %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Zapisano %i zarodek źródeł dla pliku części: %s (%s)" msgstr[1] "Zapisano %i zarodki źródeł dla pliku części: %s (%s)" msgstr[2] "Zapisano %i zarodków źródeł dla pliku części: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Zapisano %i zarodek źródeł dla pliku części: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Błąd podczas odczytu pliku źródeł plików części (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Znaleziono uszkodzoną część (%d) w %d pliku części %s - FileResultHash |%s| " "FileHash |%s|" msgstr[1] "" "Znaleziono uszkodzoną część (%d) w %d plikach części %s - FileResultHash |%" "s| FileHash |%s|" msgstr[2] "" "Znaleziono uszkodzoną część (%d) w %d plikach części %s - FileResultHash |%" "s| FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Znaleziono kompletnych części (%i) w %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Skończono ponowne tworzenie skrótu %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Nieoczekiwany błąd podczas zakańczania %s. Plik wstrzymany" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Skończono pobieranie: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Usuwanie pliku: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "OSTRZEŻENIE: Nie można utworzyć skrótu pobranej części - zestaw skrótów jest " "niekompletny dla '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "BŁĄD: Nie można utworzyć skrótu pobranej części - zestaw skrótów " "niekompletny (%s). Nie powinno do tego dojść" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "UWAGA: Niewystarczająca ilość wolnego miejsca! Wstrzymywanie pliku: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Pobrana część %i jest uszkodzona w pliku: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Odzyskano uszkodzoną część %i dla %s -> Zapisanych bajtów: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Alokuję" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Niewystarczająca ilość przestrzeni dyskowej" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Pobrano" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "BŁĄD: Nie udało się otworzyć pliku części '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Domyślny systemowy" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albański" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabski" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturyjski" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Baskijski" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bułgarski" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Kataloński" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Chiński (Uproszczony)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Chiński (Tradycyjny)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Chorwacki" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Czeski" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Duński" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Holenderski" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Angielski (U.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estoński" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Fiński" #: src/Preferences.cpp:648 msgid "French" msgstr "Francuski" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galicyjski" #: src/Preferences.cpp:650 msgid "German" msgstr "Niemiecki" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Grecki" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebrajski" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Węgierski" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Włoski" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Włoski (Szwajcarski)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japoński" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Koreański" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Litewski" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norweski (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polski" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugalski" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugalski (Brazylijski)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Rumuński" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Rosyjski" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Słoweński" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Hiszpański" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Szwedzki" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turecki" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ukraiński" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Zmień język" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Niedostępny" #: src/Preferences.cpp:906 msgid "no options available" msgstr "nie ma dostępnych opcji" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Znaleziono nieprawidłową kategorie, pomijam" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "Port TCP nie może być większy niż 65532, gdyż gniazdo UDP serwera będzie TCP" "+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Zostanie użyty domyślny port (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Usuwam nieistniejące udostępnione katalogi: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Połączenie" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Katalogi" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Serwery" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Pliki" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Bezpieczeństwo" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Interfejs" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filtry" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Zdalna kontrola" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Sygnatura Online" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Zawansowane" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Zdarzenia" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Debugowanie" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "Następujące zmienne zostaną zastąpione:\n" " %PARTFILE - pełna ścieżka do pliku\n" " %PARTNAME - tylko nazwa pliku" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Nie zmieniaj tych ustawień, chyba że dobrze wiesz co robisz - \n" "w przeciwnym wypadku możesz coś łatwo zepsuć.\n" "\n" "aMule będzie działał prawidłowo bez zmiany tych ustawień." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Błąd połączenia Cfg do widżetu z identyfikatorem %d i kluczem %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" "Błąd przesyłania danych połączenia z Cfg do widżetu z identyfikatorem %d i " "kluczem %s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Typ serwera proxy do którego się łączysz" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" "Błąd przesyłania danych połączenia z widżetu do Cfg z identyfikatorem %d i " "kluczem %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule musi zostać zrestartowany przed wprowadzeniem tych zmian:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- Zmieniono port TCP.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- Zmieniono port UDP.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Zewnętrzne połączenie zamknięte." #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Nowe zewnętrzne połączenie zaakceptowane" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Zewnętrzne połączenie zamknięte." #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Maskowanie protokołu" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Twoja lista auto-aktualizacji serwerów jest pusta.\n" "'Autoaktualizacja listy serwerów przy starcie' zostanie wyłączona." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Połączenia zewnętrzne zostały włączone, ale nie zostało podane hasło.\n" "Połączenia zewnętrzne nie mogą być włączone dopóki nie zostanie podane " "poprawne hasło." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Zmieniono język.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Zmieniono folder tymczasowy.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- sieć ED2K włączona.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Zarówno sieć eD2K jak i Kad zostały wyłączone.\n" "Nie będzie możliwe połączenie, dopóki nie włączysz przynajmniej jednej z " "nich." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad nie uruchomi się, jeśli twój port UDP jest wyłączony.\n" "Włącz port UDP lub wyłącz Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Musisz zrestartować teraz aMule.\n" "Jeśli nie zrestartujesz go teraz, nie narzekaj, jeśli stanie się coś złego.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Twoja lista automatycznych aktualizacji serwerów jest pusta.\n" "Proszę wpisać co najmniej jeden URL wskazujący poprawny plik server.met.\n" " Kliknij na przycisku \"Lista\", aby wpisać URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Pliki tymczasowe" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Pliki przychodzące" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Sygnatury Online" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Wybierz folder na %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Szukaj odtwarzacza filmów" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Wybierz przeglądarkę" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Program%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Edytuj listę serwerów" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Dodaj jeden URL w każdej linii.\n" "Tylko jeden URL w każdej linii." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Opóźnienie odświeżania: %d sekunda" msgstr[1] "Opóźnienie odświeżania: %d sekundy" msgstr[2] "Opóźnienie odświeżania: %d sekund" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Czas dla przeciętnego wykresu: %d minuta" msgstr[1] "Czas dla przeciętnego wykresu: %d minuty" msgstr[2] "Czas dla przeciętnego wykresu: %d minut" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Skala wykresu połączeń: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Rozmiar bufora pliku: %d bajt" msgstr[1] "Rozmiar bufora pliku: %d bajty" msgstr[2] "Rozmiar bufora pliku: %d bajtów" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Rozmiar kolejki wysyłania: %d klient" msgstr[1] "Rozmiar kolejki wysyłania: %d klientów" msgstr[2] "Rozmiar kolejki wysyłania: %d klientów" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Odświeżanie połączeń do serwera co: %d minutę" msgstr[1] "Odświeżanie połączeń do serwera co: %d minuty" msgstr[2] "Odświeżanie połączeń do serwera co: %d minut" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Odświeżanie połączeń do serwera co: Wyłączone" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "wyłączone" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "Wykonaj komendę przy wydarzeniu `%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Włącz wykonanie komendy w rdzeniu" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Komenda rdzenia:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Włącz wykonanie komendy w GUI" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Komenda GUI:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Następujące zmienne zostaną zastąpione:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "Min. rozmiar musi być mniejszy od maks. Zignorowano maks. rozmiar." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Ostrzeżenie wyszukiwania" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Główne" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Nie można wykonać wyszukiwania Kad, jeśli Kad nie jest włączony" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "Nie można wykonać wyszukiwania eD2K, jeśli eD2K nie jest połączony" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Nieoczekiwany błąd podczas próby wyszukiwania Kad: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ID pliku" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Plik" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Pobieranie w kategorii" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Dodaj opcjonalny URL dla tego pliku" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Szukaj powiązanych plików (eD2k, serwer lokalny)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Oznacz jako znany plik" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Skopiuj link eD2k do schowka" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Anulowane" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Nowy" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Nie udało się połączyć do wszystkich zamaskowanych serwerów na liście. " "Próbuję ponownie bez maskowania." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Nie udało się połączyć do serwerów z listy. Kolejne podejście." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Sieć eD2K wyłączona w preferencjach, nie łączę." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "Nie ma poprawnych serwerów do połączenia na liście" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Połączony z %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Nawiązano połączenie z: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Błąd krytyczny podczas próby łączenia. Może nie ma połączenia do internetu" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Utracono połączenie z %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) wygląda na wyłączony." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) wygląda na pełny." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Automatyczne łączenie do serwera nastąpi za %d sekundę" msgstr[1] "Automatyczne łączenie do serwera nastąpi za %d sekundy" msgstr[2] "Automatyczne łączenie do serwera nastąpi za %d sekund" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Utracono połączenie" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Łączenie z %s (%s:%i) nieudane." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "BŁĄD: nieprawidłowe gniazdo przy sprawdzaniu timeouta" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Próba połączenia z %s (%s:%i) przedawniła się." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Otrzymano późny wynik wyszukiwania DNS, odrzucanie." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Otwieram plik server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Nieznaleziono pliku server.met!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Nie udało się załadować pliku server.met '%s', napotkano nieznany format." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Nie udało się otworzyć server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Uszkodzony plik server.met, znaleziono nieprawidłowy versiontag: 0x%x, " "rozmiar %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i serwer znaleziono w server.met" msgstr[1] "%i serwery znaleziono w server.met" msgstr[2] "%i serwery znaleziono w server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d serwer dodany" msgstr[1] "%d serwery dodane" msgstr[2] "%d serwerów dodanych" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "Błąd IO podczas odczytu pliku %s: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Serwer nie dodany: [%s:%d] nie określa prawidłowego portu." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Serwer nie dodany: Ten IP [%s:%d] jest filtrowany lub niepoprawny." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Serwer nie dodany: Serwer z takim IP:Portem [%s:%d] znaleziony na liście." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Serwer dodany: Serwer na [%s:%d] używający nazwy '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Jesteś połączony do serwera który chcesz usunąć. Proszę rozłącz się najpierw." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Nie udało się otworzyć '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Nie udało się zapisać server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Nieprawidłowy URL" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Zakończono pobieranie listy serwerów z %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Brak wpisu listy adresów serwerów w 'addresses.dat'. Wklej prawidłową listę " "adresów do tego pliku, aby automatycznie zaktualizować listę twoich serwerów" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Rozpocznij pobieranie listy serwerów z %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "UWAGA: określono nieprawidłowo adres URL dla autoaktualizacji serwerów: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "Niepoprawny url do auto-pobierania serwer.met w adresses.dat" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Nie udało się pobrać listy serwerów z %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Serwer lokalny jest filtrowany przez IPFilters, podłączam ponownie do innego " "serwera!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Nazwa serwera" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Adres" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Opis" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Użytkowników" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Stałe" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Wersja" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Próbujesz usunąć serwer z którym jesteś połączony. Proszę się najpierw " "rozłączyć. Serwer NIE został usunięty." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Nieznana nazwa)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Na pewno chcesz usunąć serwer statyczny %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Serwery (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Serwer" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Połącz z serwerem" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Oznacz serwer jako statyczny" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Oznacz serwer jako nie statyczny" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Oznacz serwery jako statyczne" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Oznacz serwery jako nie statyczne" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Usuń serwer" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Usuń serwery" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Usuń wszystkie serwery" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Skopiuj linki eD2k do schowka" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Połącz ponownie z serwerem" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Na pewno chcesz usunąć wszystkie serwery?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Jesteś pewien, że chcesz usunąć wybrany serwer?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Jesteś pewien, że chcesz usunąć wybrane serwery?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "BŁĄD: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "OSTRZEŻENIE: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Twoje nowe id to %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "OSTRZEŻENIE: Otrzymałeś Low-ID!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" "\tNajprawdopodobniej jest to spowodowane tym, że jesteś za firewallem lub " "routerem." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPo więcej informacji udaj się na http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Otrzymane info nieznanego serwera! - za krótkie" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Otrzymano %d nowy serwer" msgstr[1] "Otrzymano %d nowe serwerów" msgstr[2] "Otrzymano %d nowych serwerów" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Zapisywanie listy serwerów zakończone." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Serwer odrzucił ostatnią komendę" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Otrzymano podrobiony pakiet z serwera: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Nieobsługiwany błąd w trakcie przetwarzania pakietu z serwera: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Nie mogę utworzyć wątku rozwiązywania dns dla połączenia do %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "IP serwera %s (%s) jest filtrowane. Nie łącze." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "używa maskowania protokołu." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Łączę z %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Nie mogę rozwiązać dns dla serwera %s: Nie mogę połączyć!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Serwer nie dodany: Nie podano IP lub nazwy hosta." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Serwer nie dodany: Podano nieprawidłowy port serwera." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Status eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Status Kademlii:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "Uruchomiony na %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Uruchomiony" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Status:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Stan połączenia:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Za firewallem - otwórz port %d TCP w routerze lub firewallu" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "Stan połączenia UDP:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Za firewallem - otwórz port %d UDP w routerze lub firewallu" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Stan firewalla: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Bez wymagania kolegi - otwarty port TCP" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Bez wymagania kolegi - otwarty port UDP" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Brak kolegów" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Łączenie do kolegi" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Łączenie do kolegi przy %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Indeksowane źródła:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Indeksowane słowa kluczowe:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Indeksowane uwagi:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Załadowane indeksowania:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Średnio użytkowników:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Średnio plików:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Nie uruchomiony" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Dodawanie pliku %s do udostępnień" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Znaleziono %i znany udostępniony plik" msgstr[1] "Znaleziono %i znane udostępnionych plików" msgstr[2] "Znaleziono %i znanych udostępnionych plików" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Znaleziono %i znany udostępniony plik, %i nieznanych" msgstr[1] "Znaleziono %i znane udostępnionych plików, %i nieznanych" msgstr[2] "Znaleziono %i znanych udostępnionych plików, %i nieznanych" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "BŁĄD: Próba udostępnienia %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Nie znaleziono katalogu udostępnionego, pomijam: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Nie znaleziono plików do udostępniania w katalogu: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Nazwa uzytkownika" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Prędkość pobierania" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Prędkość wysyłania" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Dostępne części" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Status wysyłania" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Status pobierania" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Źródło" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Nazwa pliku lokalnego" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Udostępnione pliki" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Żądania" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Zaakceptowane żądania" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Przesłane dane" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Ratio wymiany" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Otrzymane części" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Pełne źródła" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Ścieżka katalogu" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Dodaj komentarz/ocenę" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Edytuj komentarz/ocenę" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Zmień nazwę" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Dodaj pliki kolekcji do listy pobierania" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Kopiuj magnet &URI do schowka" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Kopiuj link eD2k do schowka (Ź&ródło)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Kopiuj link eD2k do schowka (Źródło) (&Z opcjami Crypt)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Kopiuj link eD2k do schowka (Nazwa &hosta)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "Kopiuj link eD2k do schowka (Nazwa hosta) (Z opcjami &Crypt)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Kopiuj link eD2k do schowka (Informacje &AICH)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Kopiuj link eD2k do schowka (Informacje &AICH)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Potrzebujesz HighID, aby stworzyć poprawny link źródłowy" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Udostępnione pliki (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Plik części]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Nazwa pliku" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Wysłane dane (Sesja (Razem)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Łączny narzut (Pakiety): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Narzut żądań pliku (Pakiety): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Narzut wymiany źródeł (Pakiety): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Narzut serwera (Pakiety): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Narzut Kad (Pakiety): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Narzut Crypt (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Aktywne wysyłanie: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Oczekujące wysyłanie: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Całkowita ilość udanych sesji wysyłania: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Całkowita ilość nieudanych sesji wysyłania: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Średni czas wysyłania: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Pobrane dane (Sesja (Razem)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Znaleziono źródła: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Aktywne pobieranie (części): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Stosunek UL:DL sesji (Razem): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Średnie tempo pobierania (sesja): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Średnie tempo wysyłania (sesja): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Maksymalne tempo pobierania (sesja): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Maksymalne tempo wysyłania (sesja): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Ponowne łączenia: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Czas od pierwszego transferu: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Podłączony do serwera od: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Aktywne połączenia (szacunkowo): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Osiągnięto maks. limit połączeń: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Średnio połączeń (szacunkowo): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Szczytowe połączenia (szacunkowo): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Klienci" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Nieznane: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Filtrowane: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Zbanowane: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Razem: %i Znanych: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Działające serwery: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Niedziałające serwery: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "W sumie: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Usunięte serwery: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Przefiltrowane serwery: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Użytkowników na działających serwerach: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Plików na działających serwerach: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "W sumie użytkowników: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "W sumie plików: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Zajętość serwera: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Liczba udostępnianych plików: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Łączny rozmiar udostępnianych plików: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Średni rozmiar pliku: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "System operacyjny" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Nie otrzymano" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktywnych połączeń (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Niedostępny" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Nigdy" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Komenda `%s' z pid `%d' zakończyła działanie ze statusem `%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Wykonaj i wyjdź." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Niepoprawny format IP. Użyj xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Komenda ta wymaga argumentu. Prawidłowe argumenty: 'all', nazwa pliku lub " "liczba.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Przetwarzanie przez skrót: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Przetwarzanie przez nazwę pliku: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "Komenda ta wymaga argumentu. Prawidłowe arguentu: skrót pliku.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Niepoprawny numer\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Nieprawidłowy skrót (długość powinna wynosić dokładnie 32 znaki)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Wpisz '%s' , aby uzyskać więcej pomocy.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Rozmiar pobierania: %i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Żądanie nie powiodło się z powodu nieznanego błędu." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operacja zakończona pomyślnie." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Żądanie nieudane z powodu błędu: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Filtrowanie IP klientów jest %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "WYŁĄCZONE" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "WŁĄCZONE" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Filtrowanie IP serwerów jest %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Aktualny poziom filtra IP to %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Limity przepustowości: Up: %u kB/s, Down: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Połączony z %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Łącze" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "za firewallem" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Pobieranie:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Wysyłanie:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Klientów w kolejce:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Razem źródeł:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Liczba wyników wyszukiwania: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 #, fuzzy msgid "Search progress not available" msgstr "Pokaż procent postępu" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Otrzymano nieznaną odpowiedź z serwera, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Pokaż krótką informację o statusie." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Pokaż stan połączenia, obecne prędkości wysyłania/pobierania itd.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Pokaż pełne drzewo statystyk." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Opcjonalnie, liczba z zakresu 0-255 może być przekazana do tej komendy jako " "argument\n" "który mówi ile wpisów poddrzew wersji klienta powinno zostać\n" "wyświetlone. 0 lub pusta wartość oznacza 'nieograniczony'.\n" "\n" "Przykład: 'statistics 5' wyświetli tylko 5 pierwszych wersji dla każdego " "typu klienta.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Wyłącz aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Wyłącz zdalnie działający rdzeń (amule/amuled).\n" "Spowoduje to również wyłączenie klienta tekstowego, ponieważ jest on " "bezużyteczny\n" "bez działającego rdzenia.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Przeładowuje podany obiekt." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Przeładowuje listę udostępnionych plików." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Przeładowuje tabelę filtrowania IP." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Przeładowuje bieżącą tabelę filtrowania IP." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Aktualizuje tabelę filtrowania IP z adresu URL." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" "Jeśli adres URL zostanie pominięty to używany będzie adres URL z listy " "preferencji." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Połącz z siecią." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Spowoduje to połączenie z wszystkimi sieciami włączonymi w Preferencjach.\n" "Możesz również opcjonalnie określić adres serwera w formie IP:Port form, aby " "połączyć się\n" "tylko z tym serwerem. IP musi być adresem IPv4\n" "lub odczytywalną nazwą DNS." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Połącz tylko z eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Połącz tylko z Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Rozłącz z siecią." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" "Spowoduje to rozłączenie z wszystkich sieci, które są obecnie włączone.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Rozłącz tylko z eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Rozłącz tylko z Kad." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Dodaje link eD2k lub magnet do rdzenia." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Dodawany link eD2k może być:\n" "*) linkiem pliku (ed2k://|file|...), zostanie on dodany do kolejki " "pobierania,\n" "*) linkiem serwera (ed2k://|server|...), zostanie on dodany do listy " "serwerów,\n" "*) linkiem do listy serwerów, który spowoduje dodanie wszystkich serwerów na " "liście\n" " do listy serwerów.\n" "\n" "Magnet link musi zawierać skrót eD2k i długość pliku.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Ustaw wartość opcji." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Ustaw preferencje filtrowania IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Włącz filtrowanie IP klientów i serwerów." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Wyłącz filtrowanie IP klientów i serwerów." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Włącz/wyłącz filtrowanie IP klientów." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Włącz filtrowanie IP klientów." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Wyłącz filtrowanie IP klientów." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Włącz/Wyłącz filtrowanie IP serwerów." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Włącz filtrowanie IP serwerów." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Wyłącz filtrowanie IP serwerów." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Wybierz poziom filtrowania IP." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Prawidłowe poziomy filtrowania mieszczą się w zakresie 0-255, a wartością\n" "domyślną (początkową) jest 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Ustaw limity przepustowości." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "Wartości podane w tych komendach muszą być w kilobajtach/sekundę.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Ustaw limit przepustowości wysyłania." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "Wartości podane w tych komendach muszą być w kilobajtach/sekundę.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Ustaw limit przepustowości pobierania." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Pobierz i wyświetl wartość preferencji." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Pobierz preferencje filtrowania IP." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Pobierz stan filtrowania IP zarówno dla klientów i serwerów." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Pobierz stan filtrowania IP tylko dla klientów." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Pobierz stan filtrowania IP tylko dla serwerów." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Pobierz poziom filtrowania IP." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Pobierz limity przepustowości." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Wykonuje wyszukiwanie." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Musi zostać określony typ wyszukiwania przez podanie typu:\n" " GLOBALNY\n" " LOKALNY\n" " KAD\n" "Przykład: 'search kad plik' uruchomi wyszukiwanie kad dla \"plik\".\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Wykonuje globalne wyszukiwanie." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Wykonuje lokalne wyszukiwanie" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Wykonuje wyszukiwanie kad" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Pokazuje wyniki ostatniego wyszukiwania." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Zwraca wyniki poprzedniego wyszukiwania.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Pokazuje postęp wyszukiwania." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Pokazuje postęp wyszukiwania.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Rozpocznij pobieranie pliku" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Musi zostać podany numer pliku z ostatniego wyszukiwania.\n" "Przykład: 'download 12' rozpocznie pobieranie pliku o numerze 12 z " "poprzedniego wyszukiwania.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Wstrzymaj pobieranie." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Wznów pobieranie." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Anuluj pobieranie." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Ustaw priorytet pobierania." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Ustaw priorytet pobierania na Niski, Normalny, Wysoki lub Auto.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Ustaw priorytet na niski." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Ustaw priorytet na normalny." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Ustaw priorytet na wysoki." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Ustaw priorytet na auto." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Pokaż kolejki/listy." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Pokazuje kolejkę wysyłania/pobierania, listę serwerów lub listę " "udostępnionych plików.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Pokaż kolejkę wysyłania." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Pokaż kolejkę pobierania." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Pokaż log." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Pokaż listę serwerów." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Zresetuj log." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Wycofywana komenda, użyj '%s' zamiast niej." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Komenda ta jest wycofywana i może zostać usunięta w przyszłości.\n" "Użyj zamiast niej '%s'.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Tekstowy klient aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Konwertuję stare zestawy skrótów AICH w '%s' do 64b w '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "UWAGA: Nazwa pliku '%s' jest nieprawidłowa i została zmieniona na '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "UWAGA: Plik '%s' już istnieje, zmieniono nazwę na '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Jesteś pewien, że chcesz anulować i usunąć wszystkie pliki z tej kategorii?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Wymagane potwierdzenie" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Zbyt dużo połączeń" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Wszystkie inne" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Wybierz filtr przeglądania" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Dodaj kategorię" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Edytuj kategorię" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Usuń kategorię" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "Otwarcie pliku (%s) nieudane, usuwam z listy udostępnionych plików." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Żądanie skrótu dla nieznanego pliku: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Wznawianie wysyłania pliku: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Wstrzymywanie wysyłania pliku: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Nie powiodło się wykonanie komendy `%s' przy zdarzeniu `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Pobieranie zakończone" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Pełna ścieżka do pliku." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Nazwa pliku bez jego ścieżki." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "Skrót eD2k pliku." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Rozmiar pliku w bajtach." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Łączny czas aktywności w pobieraniu." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Rozpoczęto nową sesję czatu" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Nadawca wiadomości." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Brak miejsca" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Partycja dysku." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Błąd podczas ukończenia" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Przetwarzanie pliku numer %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Pytałeś o skróty części (Używane tylko dla plików > 9.5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Nie istniejący plik !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, kreator linków eD2k aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Witamy!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Parametry wejściowe" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Plik do skracania" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Dodaj opcjonalny URL dla tego pliku" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Wprowadź tutaj plik, którego link eD2k chcesz obliczyć" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Wprowadź tutaj adres URL, który chcesz dodać do linku eD2k: Dodaj / na " "końcu, aby pozwolić aLinkCreator dodać nazwę obecnego pliku" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Usuń" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Utwórz link ze skrótami części" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Pomóż rozpowszechniać nowe i rzadkie pliki szybciej, kosztem zwiększenia " "rozmiaru linku" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Skrót typu MD4 pliku" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Skrót eD2k pliku" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "Link eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Zapisz" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Skopiuj do schowka" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Otwórz" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Otwórz plik, by obliczyć jego link eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Kopiuj obliczony link ED2k do schowka" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Zapisz jako" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Zapisz obliczony link ED2k do pliku" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Informacje o aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Zaznacz plik, którego link eD2k chcesz obliczyć" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Nie można otworzyć schowka" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "W tej chwili nie ma nic do skopiowania !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Wybierz plik do twojego obliczonego linku eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Nie mogę otworzyć " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Proszę wpisać nazwę pliku" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "W tej chwili nie ma nic do zapisania !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, kreator aMule linków eD2k\n" "\n" "(c) 2004 ThePolish \n" "\n" "Ikony z http://www.everaldo.com oraz http://www.icomania.com\n" "i http://jimmac.musichall.cz/ikony.php3\n" "\n" "Dystrybucja na zasadach GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Tworzę skrót..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator pracuje dla ciebie" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Obliczenie Hashu MD4..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Obliczenie Hashów eD2k..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Anulowano !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Gotowe w %.2f ach" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Masz już dodany ten URL !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Proszę wpisać adres URL" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Nie mogę otworzyć %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i dni %i godzin %i minut %i " #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, statystyki aMule online" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Maksymalna szybkość DL od czasu uruchomienia wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "" "Absolutne maksimum szybkości DL podczas poprzedniego uruchomienia wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "System" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Zatrzymaj automatyczne odświeżanie" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Zapisz obrazek statystyk online" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Wydrukuj obrazek statystyk online" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Ustawienia preferencji" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Informacje o wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Rozpocznij automatyczne odświeżanie" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Automatyczne odświeżanie zatrzymane" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "automatyczne odświeżanie rozpoczęte" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Zapisz obrazek statystyk" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Statystyki aMule online" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Wystąpił problem podczas drukowania.\n" "Może nie masz prawidłowo ustawionej drukarki ?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Drukuję" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, statystyki aMule online\n" "\n" "(c) 2004 ThePolish \n" "\n" "Oparte na CAS by Pedro de Oliveira \n" "\n" "Dystrybucja na zasadach GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Och och, aMule nie jest uruchomiony..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule jest uruchomiony" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule jest uruchomiony, ale nie połączony" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule łączy się..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Och och, status aMule jest nieznany..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " jest uruchomiony od " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " jest zatrzymany !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " jest nie połączony!" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " łączy się..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " robi coś dziwnego, sprawdź to !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " jest połączony z " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "wyłączony" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " jest włączony " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " z " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Razem pobranych: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Wysłanych: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Pobranych w sesji: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Pobranych: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Wysłanych: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Udostępnione: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " plik(ów), Klientów w kolejce: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Czas: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " na " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Średnie obciążenie systemu (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Uptime systemu: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Katalog zawierający plik amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Podaj katalog z twoim plikiem amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Czas pomiędzy odświeżeniami w sekundach" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Generuj obrazek statystyk przy każdym odświeżeniu" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Wpisz katalog, w którym chcesz generować obrazki statystyk" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Wysyłaj cyklicznie twój obrazek statystyk na serwer FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "Url FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Ścieżka FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Wpisz URL twojego serwera FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "Wpisz katalog do składowania twoich obrazków statystyk na serwerze FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Użytkownik" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Wpisz nazwę użytkownika. aby zalogować się do twojego serwera FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Wpisz hasło użytkownika. aby zalogować się do twojego serwera FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Czas pomiędzy odświeżeniami FTP w minutach" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Sprawdź" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Katalog zawierający twój plik sygnatury" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Katalog gdzie będzie wygenerowany statyczny obrazek" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Ładuje szablon " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Port HTTP serwera sieciowego" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Użyj forwardowania portu UPnP na porcie serwera sieciowego" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Port UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Używaj kompresji gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Hasło pełnego dostępu do serwera sieciowego" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Hasło gościa do serwera sieciowego" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Pozwól na dostęp gości" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Zabroń dostępu gościom" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Wczytaj/zapisz ustawienia serwera sieciowego z/do zdalnego aMule" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Ścieżka do pliku konfiguracyjnego aMule. NIE UŻYWAJ BEZPOŚREDNIO!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Zablokuj interpreter PHP (wycofywany)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Przekompiluj strony PHP przy każdym żądaniu" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Serwer WWW aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "zaakceptowano połączenie klienta sieciowego\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "BŁĄD: nie można zaakceptować połączenia klienta internetowego\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Żądanie nie powiodło się z powodu błędu: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Nie znaleziono pliku indeksu: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sesja wygasła - żądanie loginu\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sesja ok, zalogowano\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sesja ok, nie zalogowano\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Nie otwarto sesji - zażądam loginu\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Utworzono sesję - żądam loginu\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Przetwarzam żądanie (oryginalne): " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Nie podano hasła, logowania nie będą akceptowane." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Sprawdzam hasło\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Nieprawidłowy skrót hasła\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Hasło ok\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Złe hasło\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Nie wprowadziłeś hasła. Puste hasło nie jest dozwolone.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Zażądano wylogowania\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Przetwarzam żądanie (przekierowane): " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Plik części %s (%s) nie ma pliku zarodków" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Plik części %s (%s) ma nieważny plik zarodków" #, fuzzy #~ msgid "Download status" #~ msgstr "Status pobierania" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Opóźnienie odświeżania: %d sekunda" #~ msgstr[1] "Opóźnienie odświeżania: %d sekundy" #~ msgstr[2] "Opóźnienie odświeżania: %d sekund" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "Oceny i komentarze jeszcze nie są obsługiwane na zdalnym gui" #~ msgid "Transferring" #~ msgstr "Przesyłam" #~ msgid "QR: ???" #~ msgstr "QR: ???" #~ msgid "QR: %u" #~ msgstr "QR: %u" #~ msgid "Only files currently uploading" #~ msgstr "Tylko obecnie wysyłane pliki" #~ msgid "Queue Rank" #~ msgstr "Współczynnik kolejki" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - pokaż postęp wyszukiwania" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Rozpoczynam tworzenie skrótu MD4 i AICH dla pliku: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Rozpoczynam tworzenie skrótu MD4 dla pliku: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Rozpoczynam tworzenie skrótu AICH dla pliku: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "UWAGA: Nie można usunąć oryginału '%s' po wykonaniu kopii zapasowej" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "UWAGA: Nie udało się usunąć pliku %s" #~ msgid "%u" #~ msgstr "%u" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Ocena (razem):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Próbuj przesłać pełne części do wszystkich pobierających" #~ msgid "Networks window" #~ msgstr "Okno sieci" #~ msgid "Searches window" #~ msgstr "Okno wyszukiwania" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Pobieranie" #~ msgid "Shared files window" #~ msgstr "Okno udostępnionych plików" #~ msgid "Messages window" #~ msgstr "Okno wiadomości" #~ msgid "Statistics graph window" #~ msgstr "Okno wykresów statystyk" #~ msgid "Preferences settings window" #~ msgstr "Okno ustawień preferencji" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Stracono ikonę paska zadań, próbuje odtworzyć ..." #~ msgid "Transfers" #~ msgstr "Transfery" #~ msgid "Files transfers window" #~ msgstr "Okno transferu plików" #~ msgid "Unban" #~ msgstr "Odbanuj" #~ msgid "Show Uploads" #~ msgstr "Pokaż wysyłane" #~ msgid "Show Queue" #~ msgstr "Pokaż kolejkę" #~ msgid "Select View" #~ msgstr "Wybierz widok" #~ msgid "Client Software" #~ msgstr "Oprogramowanie klienta" #~ msgid "Waited" #~ msgstr "Czekał" #~ msgid "Upload Time" #~ msgstr "Czas wysyłania" #~ msgid "Upload/Download" #~ msgstr "Wysyłanie/Pobieranie" #~ msgid "Remote Status" #~ msgstr "Zdalny Status" #~ msgid "File Priority" #~ msgstr "Priorytet pliku" #~ msgid "Score" #~ msgstr "Punkty" #~ msgid "Asked" #~ msgstr "Poprosił" #~ msgid "Last Seen" #~ msgstr "Ostatnio widziany" #~ msgid "Entered Queue" #~ msgstr "Wszedł do kolejki" #~ msgid "Transferred Up" #~ msgstr "Wysłanych" #~ msgid "Transferred Down" #~ msgstr "Pobranych" #~ msgid "Userhash" #~ msgstr "Skrót użytkownika" #~ msgid "Encrypted" #~ msgstr "Zaszyfrowane" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "Załadowano %d flag bitmapy." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Pokaż wysłane / Kolejkę wysyłań" #~ msgid "Clients on queue :" #~ msgstr "Klientów w kolejce :" #~ msgid "Current Session" #~ msgstr "Aktualna sesja" #~ msgid "Total" #~ msgstr "Razem" #~ msgid "Requested :" #~ msgstr "Żądany :" #~ msgid "Create backup for preview" #~ msgstr "Stwórz kopię dla podglądu" #~ msgid "Files Transfers Window" #~ msgstr "Transfery plików" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Razem użytkowników: %s | Razem plików: %s" #~ msgid "Download size not received, downloading until connection is closed" #~ msgstr "Nie otrzymany rozmiar pomiaru, pobieranie do zamknięcia połączenia" #~ msgid "HTTP download thread ended" #~ msgstr "Zakończenie pobrania wątku HTTP" #~ msgid "Host: %s:%i\n" #~ msgstr "Host: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Odpowiedź: %i (Błąd: %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "UWAGA: Pusta odpowiedz przy tworzeniu strumienia" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "BŁĄD: Kod przekierowujący otrzymany bez adresu" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country(): Nie udało się załadować danych kraju z " #~ msgid "Get IPFilter level." #~ msgstr "Pobierz poziom IPFilter." #~ msgid "Makes a search." #~ msgstr "Tworzy wyszukiwanie." #~ msgid "Killed!" #~ msgstr "Zabite!" #~ msgid "Using amuleweb in '%s'." #~ msgstr "Używanie amuleweb w '%s'." #~ msgid "Shutting down aMule..." #~ msgstr "Zamykanie aMule..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Następujące opcje zostały zmienione w tym wydaniu z przyczyn " #~ "bezpieczeństwa:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Włączono obsługę maskowania protokołu dla połączeń przychodzących i " #~ "wychodzących.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Zablokowano aktualizację listy serwerów od innych serwerów i klientów.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Aby uzyskać więcej informacji na temat tej zmiany, poszukaj\n" #~ "hasła \"fake servers\" na wiki aMule na http://wiki.amule.org.\n" #~ "Ważne jest, abyś usunął wszystkie fałszywe serwery z twojej listy " #~ "serwerów, aby aMule działał poprawnie." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "Dodatkowo, ustawienia przeglądarki zostały zresetowane do ustawień " #~ "domyślnych. Należy ponownie skonfigurować opcje przeglądarki w razie " #~ "potrzeby.\n" #~ msgid "Fetching status..." #~ msgstr "Status ściągania..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Użytkowników: E: %s K: %s | Plików E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Klient %s na IP:Port %s:%d używający %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() zwrócił NULL" #~ msgid "Firewalled" #~ msgstr "Za firewallem" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "Załadowano %d bitmapę flag." #~ msgstr[1] "Załadowano %d bitmapy flag." #~ msgstr[2] "Załadowano %d bitmap flag." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "" #~ "Plik %s jest za duży na Donkeya: maksymalny dozwolony rozmiar to 4 GB." #~ msgid "No handler for this file type." #~ msgstr "Nieobsługiwany typ pliku." #~ msgid "File was not saved" #~ msgstr "Plik nie został zapisany" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "Połączenie nieudane. Nie można się połączyć z wybranym hostem\n" #~ msgid "Message Filter" #~ msgstr "Filtr wiadomości" #~ msgid "Gui Tweaks" #~ msgstr "Dostosowanie GUI" #~ msgid "Core Tweaks" #~ msgstr "Optymalizacja" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Opóźnienie podpowiedzi w sekundach" #~ msgid "Show part file number before file name" #~ msgstr "Pokaż numer pliku części przed nazwą pliku" #~ msgid "Skin Support" #~ msgstr "Wsparcie skórek" #~ msgid "- no skins available -" #~ msgstr "- brak dostępnych skórek -" #~ msgid "Online Signature Directory:" #~ msgstr "Katalog podpisu online:" #~ msgid "Filtering Options:" #~ msgstr "Opcje filtrowania:" #~ msgid "ERROR: can not accept web client connection\n" #~ msgstr "BŁĄD: nie można zaakceptować połączenia klienta sieciowego\n" #~ msgid "Please wait... " #~ msgstr "Proszę czekać... " #~ msgid "Unable to determine selected browser!" #~ msgstr "Nie można ustalić wybranej przeglądarki!" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ " 'Wieloplatformowy' klient p2p oparty na eMule \n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr " Strona domowa: http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr " Forum: http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " Kontakt: admin@amule.org (sprawy administratorskie) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ " Copyright (C) 2003-2008 Zespół aMule \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr " Część aMule jest oparta na \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " Copyright (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "Status text" #~ msgstr "Tekst statusu" #~ msgid "Could not determine the command for running the browser." #~ msgstr "Nie można ustalić komendy do uruchomienia przeglądarki." #~ msgid "User Defined" #~ msgstr "Użytkownika" #~ msgid "" #~ "Your Auto-update server list is empty.\n" #~ "'Auto-update server list at startup will be disabled." #~ msgstr "" #~ "Twoja lista automatycznych aktualizacji serwerów jest pusta.\n" #~ "Aktualizowanie listy serwerów podczas uruchamiania zostanie wyłączone." #~ msgid "ERROR: Invalid part.met fileversion: %s ==> %s" #~ msgstr "BŁĄD: Nieprawidłowa wersja pliku part.met: %s ==> %s" #~ msgid "WARNING: Knownfile list corrupted, contains invalid header." #~ msgstr "" #~ "UWAGA: lista znanych plików uszkodzona, zawiera nieprawidłowy nagłówek." #~ msgid "Pop-up status text" #~ msgstr "tekst statusu jako Pop-up" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "W przypadku filmu możesz podać jego długość, język ...\n" #~ "oraz jeżeli jest fałszywy możesz powiedzieć o tym innym użytkownikom " #~ "aMule." #~ msgid "General Settings" #~ msgstr "Ustawienia ogólne" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - linuksowy Muł" #~ msgid "Misc Options" #~ msgstr "Różne opcje" #~ msgid "Makes aMule promt before exiting." #~ msgstr "Włącza pytanie przed wyjściem z aMule." #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Wybierz tu swoją przeglądarkę" #~ msgid "Custom Browser:" #~ msgstr "Przeglądarka użytkownika:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Wpisz tu nazwę swojej przeglądarki. Aby użyć zdefiniowanej przeglądarki " #~ "wybierz opcje Użytkownika z rozwijanego menu." #~ msgid "Bandwith limits" #~ msgstr "Limity przepustowości" #~ msgid "Line Capacities" #~ msgstr "Możliwości łącza" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Uwaga: wartości te są\n" #~ " używane tylko w statystykach." #~ msgid "Standard client TCP Port:" #~ msgstr "Standardowy port TCP klienta:" #~ msgid "Extended client UDP Port:" #~ msgstr "Rozszerzony port UDP klienta:" #~ msgid "This UDP port is used for extended ed2k requests and Kad network" #~ msgstr "" #~ "Ten port UDP jest używany w rozszerzonych żądaniach sieci eD2K i Kad" #~ msgid "Bind Address" #~ msgstr "Adres bindowania" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "Port UDP dla rozszerzonych żądań serwera (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "Ilość źródeł na plik" #~ msgid "Hard limit" #~ msgstr "Twardy limit" #~ msgid "Connection limits" #~ msgstr "Limity połączeń" #~ msgid "Max Connections" #~ msgstr "Maks. połączeń" #~ msgid "Universal Plug and Play" #~ msgstr "Uniwersalne Plug and Play" #~ msgid "Enable UPnP" #~ msgstr "Włącz UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "Port TCP UPnP:" #~ msgid "Show overhead bandwith" #~ msgstr "Pokaż narzut przepustowości" #~ msgid "Server Options" #~ msgstr "Opcje serwera" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. aktywny" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICH ufa każdemu skrótowi (niezalecane)" #~ msgid "Start next paused file when a file completed" #~ msgstr "Zacznij pobierać następny plik po skończeniu poprzedniego" #~ msgid "Disk space" #~ msgstr "Przestrzeń dyskowa" #~ msgid "Check disk space" #~ msgstr "Sprawdź przestrzeń dyskową" #~ msgid "Min disk space:" #~ msgstr "Minimalna przestrzeń dyskowa:" #~ msgid "Incoming" #~ msgstr "Przychodzące" #~ msgid "Temporary" #~ msgstr "Tymczasowe" #~ msgid "Shared" #~ msgstr "Udostępnione" #~ msgid "Create Backup for preview" #~ msgstr "Utwórz kopię zapasową dla podglądu" #~ msgid "Select Statistics Colors" #~ msgstr "Wybierz kolory statystyk" #~ msgid "Advanced Settings" #~ msgstr "Ustawienia zaawansowane" #~ msgid "GUI Tweaks" #~ msgstr "Dostosowanie GUI" #~ msgid "Download Queue Files Progress" #~ msgstr "Postęp Kolejki Ściąganych Plików " #~ msgid "Show percentage" #~ msgstr "Pokaż procentowo" #~ msgid "Show progressbar " #~ msgstr "Pokaż pasek postępu " #~ msgid "Progressbar Style" #~ msgstr "Styl paska postępu" #~ msgid "Enable skin support " #~ msgstr "Włącz obsługę skórek " #~ msgid "Skin:" #~ msgstr "Skórka:" #~ msgid "Column Sorting" #~ msgstr "Sortowanie kolumn" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "Automatyczne sortowanie plików w kolejce pobierania (mocne CPU)" #~ msgid "Misc Gui Tweaks" #~ msgstr "Inne ustawienia GUI" #~ msgid "Show Fast eD2k Links Handler" #~ msgstr "Pokazuj szybkie wyłapywanie linków eD2K" #~ msgid "Remote Control" #~ msgstr "Zdalna kontrola" #~ msgid "Web server port" #~ msgstr "Port serwera sieciowego" #~ msgid "Enable UPnP port forwarding on the web server port" #~ msgstr "Włącz forwarding portu UPnP na porcie serwera sieciowego" #~ msgid "Web server UPnP TCP port" #~ msgstr "Port TCP UPnP serwera sieciowego" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "IP nasłuchującego interfejsu\n" #~ "(puste jeśli dowolny)" #~ msgid "TCP port" #~ msgstr "Port TCP" #~ msgid "Display server motd when connected ..." #~ msgstr "Wyświetl motd serwera po połączeniu ..." #~ msgid "eD2k Info" #~ msgstr "Info eD2k" #~ msgid "File Options" #~ msgstr "Opcje plików" #~ msgid "Who can see shared files:" #~ msgstr "Kto może zobaczyć udostępnione pliki:" #~ msgid "Disable/Enable" #~ msgstr "Wyłączony/Włączony" #~ msgid "Authentication" #~ msgstr "Uwierzytelnianie" #~ msgid "Event types" #~ msgstr "Typy zdarzeń" amule_2.3.1+git20151120.0023527bc2.orig/po/pt_BR.po0000644000175000017500000071363312611472361017504 0ustar morphmorph# translation of pt_BR.po to Português (Brasileiro) # Kry , 2004. # IgoR , 2004. # Fabio Jr. Beneditto , 2004, 2005. # felipe augusto , 2007. # Israel Rodrigo Faria , 2007. # Fabio Junior Beneditto , 2008. # aMule i18n resource file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-12-13 23:14-0300\n" "Last-Translator: felipe augusto \n" "Language-Team: Português (Brasileiro) \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" "X-Generator: KBabel 1.11.4\n" "X-Poedit-Language: Portuguese\n" "X-Poedit-Country: BRAZIL\n" "X-Poedit-SourceCharset: utf-8\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Adicionar um amigo" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Você deve digitar um IP e porta válidos!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informação" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "A Hash do usuário especificado é inválida" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Falha ao abrir arquivo de Ligações ED2K." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "CUIDADO: Você não pode adicionar você mesmo como uma fonte para uma ligação " "eD2k quando tem um lowid." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Agora, deixando a aplicação principal..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Terminando instância amuleweb com o pid '%ld'..." #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Matando a instância amuleweb com o pid '%ld'..." #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Falha" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Finalizando o núcleo." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "Encerramento do aMule completo." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Resultados da depuração da memória para a saída do aMule:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "Configuração EC" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Senha definida e conexões externas habilitadas." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "CUIDADO" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Seu locale foi alterado para o padrão do Sistema devido a mudança na " "configuração. Desculpe." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Você não tem nenhum servidor na lista de servidor.\n" "Você quer que o aMule baixe uma nova lista agora?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Lista de servidor baixada" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "web server rodando no pid %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Você requisitou rodar o web server na iniciação, mas o binário do amuleweb " "não pode ser rodado. Por favor instale o pacote contendo o aMule web server, " "ou compile o aMule usando --enable-webserver e rode make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "ERRO" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Não foi possível conectar às portas desse endereço: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Porta %u não disponível. Você ficará com LOWID (id baixa)\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "A Porta %u não está disponível!\n" "\n" "Isso quer dizer que você ficará com LOWID (ID baixa).\n" "\n" "Verifique sua rede para ver se essa porta está aberta para entrada e saída." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Falha ao criar o arquivo OnlineSig" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Falha ao criar o arquivo OnlineSig do aMule" # src/amuled.cpp:1246: #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Parece que o idioma selecionado não está instalado no seu computador. (Nota: " "eu irei defini-lo mesmo assim)." #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Essa é a primeira vez que você executa o aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Essa é uma versão de testes, atualizada diariamente, e\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "não daremos garantia se ela quebrar algo, queimar sua casa,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "ou matar seu cachorro. Mas ela *deve* ser segura para uso mesmo assim.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Maiores informações, suporte e novas versões podem ser encontradas em nossa\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "homepage www.aMule.org ou em nosso canal de irc #aMule na irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Esteja a vontade para notificar qualquer bug em http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "A pasta especificada para os arquivos da Online Signature é INVÁLIDA!\n" "OnlineSignature ficará DESATIVADA até você atualizar as preferências." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Nome do servidor notificado" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Préalocação de espaço em disco para arquivo '%s' falhou: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "ERRO: não foi possível abrir arquivo de log" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "AVISO: o arquivo de log está vazio. Algo está errado." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Arquivo de log resetado" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "MensagemDoServidor: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "Pulando o download de %s, pois o arquivo requerido não é o mais novo." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Falha ao obter a lista de nodes." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Falha ao abrir arquivo de versão baixado" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Arquivo de versão corrompido" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Você está utilizando uma versão anterior do aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Sua versão do aMule é %i.%i.%i e a última versão é %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "A mais recente versão pode ser obtida em http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" "CUIDADO: Sua versão do aMuled esta ultrapassada: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Sua versão do aMule está em dia :)" #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Falha ao baixar arquivo de controle de versão" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Usuários:%s | Arquivos: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Usuários: E: %s K: %s | Arquivos: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Nenhuma rede selecionada" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "com LowID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "com HighID (Id alta)" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Conectado a %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Conectando a %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Disconectado de eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad iniciado." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad parado." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Conectado a rede Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Conectado a rede Kad (sob firewall)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Desconectado da rede Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "A rede Kad não pode ser usada se a porta UDP está desabilitada em " "preferências, não iniciará." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "A rede Kad está desabilitada em preferências, não iniciará." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ERRO: O daemon aMule não pode ser usado quando conexões externas estão " "desabilitadas. Para habilitar Conexões Externas, use também um aMule normal, " "inicie o amuled com a opção --ec-config ou mude o comando" "\"AcceptExternalConnections\" para 1 no arquivo ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "ERRO: Uma senha válida é requirida para conexões externas, e o daemon aMule " "não pode ser usado sem conexões externas. Pra rodar o daemon aMule, você " "deve definir a campo \"ECPassword\" no arquio ~/.aMule/amule.conf com o " "valor apropriado. Execute o amuled com a opção --ec-config para definir a " "senha. Mais informações podem ser encontradas em http://wiki.amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - iniciando temporizador" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: forking to background - até mais" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Incapaz Criar Arquivo Pid" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "ERRO: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Esse é o aMule %s, baseado no eMule" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Executando em %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "Visite http://www.amule.org para ver se há nova versão disponível." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ERRO FATAL: Falha ao criar Timer" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Controle Remoto do aMule" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Snapshot:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "Cliente p2p 'multi-plataforma' baseado no eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Página: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Fórum: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Contato: admin@amule.org (assuntos administrativos) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Direitos Reservados (c) 2003-2011 Time aMule \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Parte do aMule é baseado no \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: roteamento peer-to-peer baseado em métrica XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" " Direitos autorais reservados (c) 2002-2011 Petar Maymounkov ( petar@post." "harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Mensagem" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "destruído caixa de diálogo do aMule" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Conectando" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Conectado" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Disconectado" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Atrás de Firewall" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Conectado" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Conectando" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Desligado" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Cancelar" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Cancelar as tentativas atuais de conexão" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Desconectar" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Desconectar das redes atualmente conectadas" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Conectar" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Conectar às redes ativas" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Up: %.1f(%.1f) | Down: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Up: %.1f | Down: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Conectado)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Desconectado)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Você realmente quer sair %s?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Confirmação de saída" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Lançar Comando: " #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- padrão -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "O diretório '%s' de skins não existe" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "CUIDADO: Incapaz de abrir o arquivo de pele '%s' para leitura" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Redes" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Janela de redes" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Pesquisas" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Janela de Pesquisas" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Downloads" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Janela de Dwonloads" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Arquivos compartilhados" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Janela de compartilhados" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Mensagens" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Janela de Mensagens" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Estatísticas" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Janela de Estatísticas" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Preferências" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Janela de Preferências" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importar" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Ferramenta de importação de arquivos .part" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Sobre" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Sobre/Ajuda" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Rede eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "rede Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Sem redes" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "aMule remote control" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Erro Fatal: Falha ao criar Core Timer" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Conectar a aMule remoto" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Erro Fatal: Falha ao criar Poll Timer" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Repetição de evento..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Conectando..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Conexão falhou " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Manipulador de evento GUI EC remoto" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Desligando" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Falha na conexão. Incapaz de conectar em %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Conexão fechada - aMule foi provavelmente terminado." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Pronto" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Tudo" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Incapaz criar o diretório '%s' para a categoria '%s', mantendo diretório '%" "s'." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Desconhecido" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Falha ao receber lista de compartilhamentos do usuário '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Procurando amigo para conexão lowid" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (versão de eMule FALSA %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (eMule Falso)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (eMule Falso)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (baseado no eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Nickname: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Solicitado: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "Estatísticas dessa sessão: Aceito %d de %d pedido, %s transferido\n" msgstr[1] "" "Estatísticas dessa sessão: Aceitos %d de %d pedidos, %s transferidos\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Estatísticas de todas as sessões: Aceito %d de %d pedido, %s transferido\n" msgstr[1] "" "Estatísticas de todas as sessões: Aceitos %d de %d pedidos, %s transferidos\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Solicitado um arquivo desconhecido" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Mensagem filtrada de '%s' (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nova mensagem de '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Usuário %s (%u) solicitou sua lista de compartilhados para pasta não " "existente '%s' -> Negado" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "CUIDADO: %s não pode ser aberto." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "CUIDADO: Cancela lista de arquivos corrompida, contém cabeçalho inválido." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "Erro de I/O ao ler arquivo %s: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Erro ao salvar arquivo %s: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Insira o Captcha" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Categoria" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nova Categoria" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Escolha um diretório para os arquivos" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Você precisa dar um nome para a categoria!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Você precisa definir um caminho para a categoria!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Falha ao definir pasta para a categoria. Favor informar um caminho válido!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Sessão de Chat iniciada: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Conectado ao Cliente ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Conectando ao Cliente ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Falha ao conectar ao Cliente / Conexão perdida ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" "*** Você tem que inserir a checagem captcha e o usuário terá recebido sua " "mensagem. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Sua resposta para o captcha esta errada e sua mensagem foi ignorada. " "Você pode requerir um novo captcha enviando uma nova mensagem. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Bate-papo" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Fechar aba" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Fechar todas as abas" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Fechar outras abas" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Adicionar aos Amigos" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Arquivo de créditos carregado, %u cliente reconhecido" msgstr[1] "Arquivo de créditos carregado, %u clientes reconhecidos" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Créditos expirados para %u cliente!" msgstr[1] " - Créditos expirados para %u clientes!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Arquivo 'cryptkey.dat' não foi encontrado, criando." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Detalhes do Cliente" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Habilitado" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Suportado" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Não suportado" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Disabilitado" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Conectado" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Desconectado" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Incompleto" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Cara Mau" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Verificado - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Não Disponível" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Usuário %s (%u) pediu sua lista de shares -> Aceito" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Usuário %s (%u) pediu sua lista de shares -> Negado" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "O usuário %s (%u) solicitou sua lista de pastas compartilhadas -> Aceito" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "O usuário %s (%u) solicitou sua lista de pastas compartilhadas -> Negado" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Usuário %s (%u) solicitou sua lista de compartilhados para pasta '%s' -> " "aceito" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Usuário %s (%u) solicitou sua lista de compartilhados para pasta '%s' -> " "negado" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Usuário %s (%u) compartilha diretório '%s'" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Usuário %s (%u) enviou pastas não solicitadas." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "Usuário %s (%u) enviou lista de compartilhamentos para pasta '%s'" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Usuário %s (%u) terminou de enviar seus compartilhamentos" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Usuário %s (%u) enviou compartilhamentos não solicitados" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "Usuário %s (%u) negou o acesso a lista de arquivos compartilhados" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Comentários do arquivo" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Nome do usuário" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Nome do arquivo" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Avaliação" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Comentário" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Sem comentários" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u comentário" msgstr[1] "%u comentários" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Banido o cliente %s por enviar %s de dado corrompido de um total de %s para " "o arquio '%s'." #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Baixo]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [Normal]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Alto]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Muito baixo" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Baixo" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normal" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Alto" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Muito Alto" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Lançamento" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Perguntando" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Conectando via servidor" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Fila de espera cheia" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Na fila de espera" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Baixando" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Recebendo hashset" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Nenhuma parte necessária" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Não se pode conectar LowID com LowID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Excesso de conexões" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Conectando via Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Muitas conexões Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Banido" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Erro ao conectar" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Fila de espera remota cheia" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "MlDonkey velho" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Novo MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "Compatível com eMule" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Servidor Local" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Servidor Remoto" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Troca de Fontes" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passivo" #: src/DataToText.cpp:133 msgid "Link" msgstr "Link" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Fontes de arquivo" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Resultado da Busca" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Completado" #: src/DataToText.cpp:146 msgid "In progress" msgstr "Em progresso" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "ERRO: falta de espaço em disco" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "Erro: Partmet não encontrado" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ERRO: erro de E/S!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ERRO: Falhou!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "Na fila de espera" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Já baixando" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Arquivo temp desconhecido ou danificado" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Parte" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Tamanho" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Transferido" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Velocidade" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Progresso" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Fontes" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioridade" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Status" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Tempo Restante" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Última vez concluído" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Último recebimento" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Deseja remover os arquivo selecionado?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Deseja remover os arquivos selecionados?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Resposta de: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Parar" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "Pau&se" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Continuar" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "Limpar Down&loads concluídos" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Trocar cada entrada A4AF para este arquivo agora" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Trocar cada entrada A4AF para este arquivo (auto)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Trocar cada entrada A4AF para outro arquivo" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Opções Extras" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Pré-visualizar" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Exibir &detalhes do arquivo" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Exibir todos os comentários" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Copiar URL Magnet para Área de Transferência" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Copiar &link eD2k para área de tranferência" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Copiar retorno para a Área de Transferência" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "não definido" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Adicionar na Categoria" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "Abrir &o arquivo" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Informe o novo nome para o arquivo:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Renomear" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Downloads (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Para previnir que este aviso apareça em toda pré-visualização,\n" "indique seu tocador de vídeo preferido em preferências (mplayer é o padrão)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Pré-visualização" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "ERRO: Falha ao executar o player de mídia externo! Comando: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Salvando PartFile %u de %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Todas PartFiles Salvas." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Carregando arquivos temp de %s." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Carregando PartFile %u de %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "ERRO: Falha ao carregar arquivo de cópia. Procure em http://forum.amule.org " "para o .part.met recuperar soluções." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Todas PartFiles Carregadas." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Nenhum arquivo parcial (.part) encontrado" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Encontrado %u arquivo parcial" msgstr[1] "Encontrados %u arquivos parciais" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "O sistema de arquivos para o diretório Temp não pode manusear grandes " "arquivos." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "O sistema de arquivos para o diretório Recebido não pode manusear grandes " "arquivos." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Baixando %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Ooops! Você já está tentando baixar o arquivo '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Você já tem o arquivo '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Ooops! Você já está tentando baixar o arquivo %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Não pode converter ligação magnética para eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Protocolo de link desconhecido: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Ligação eD2k inválida! ERRO: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Pacote enviado por cliente após falha na autenticação." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Conexão externa encerrada." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Conexões externas desativadas por não ter sido definida uma senha!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Conexões externas desativadas no arquivo de configuração" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Novas conexões externas aceitas" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "ERRO: Não pôde aceitar uma nova conexão externa" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Conexão externa recusada por não ter sido definida uma senha nas " "preferências!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Cliente conectando: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Versão desconhecida" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Id de versão do EC incorreta, deve ser incompatibilidade binária. Use o core " "e o remote da mesma versão" #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Você não pode conectar a uma versão oficial a partir de um cliente SVN! " "*droga* Possível travamento evitado" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Versão do protocolo inválida." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Falta tag de versão do protocolo." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "Autenticação falhou: hash inválido especificado como senha EC." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Falha na autenticação: senha errada." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Falha na autenticação: senha desconhecida." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Requisição inválida, por favor autentique primeiro." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Acesso liberado." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Enviar mensagem de erro \"%s\" para cliente." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Tentativa de acesso de %s não autorizado. Conexão encerrada." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "Comando de PartFile remoto falhou: Filehash não encontrada: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Hash do arquivo não encontrada: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OOPS! Processando erro OpCode!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Servidor não adicionado" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "servidor não encontrado: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "precisa definir o servidor a ser removido" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k foi desabilitado nas preferências." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Pesquisa em andamento, aguarde..." #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Pesquisa web pela interface remota não faz sentido." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Sem dados para gráfico." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Seu cliente não está configurado para esse nível de detalhes." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Conexão Externa: requerido desligar" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Já estou desligando." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "ExternalConn: adicionar link '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Link inválido ou já está na lista." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Arquivo não encontrado." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Nome de arquivo inválido." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Não foi possível renomear o arquivo." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad está desativado nas preferências" #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Já conectado em eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Conectando em eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Já conectado a rede Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Conectando a rede Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Todas as redes estão DESATIVADAS." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Disconectado de eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Desconectado da rede Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Conexão Externa:opcode recebido inválido: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "opcode inválido (versão errada do protocolo?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Extensão '%s' desconhecida para o comando '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Comando desconhecido '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Esse comando não precisa de argumentos.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Esse comando precisa de um argumento.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Esse comando está incompleto, você precisa de uma das extensões abaixo.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Extensões disponíveis:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Comandos disponíveis:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Todos os comandos são case-insensitive (MAIÚSCULAS ou minúsculas).\n" "Digite '%s ' para obter ajuda sobre o .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Sair do programa." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Exibe a ajuda." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Para obter ajuda sobre um comando, digite 'help '.\n" "Para obter a lista completa de comandos, digite 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Use '%s' para lista de comandos\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Erro na sintaxe!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Erro processando comando - isso jamais deveria acontecer! Reporte o bug, por " "favor\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Este comando não precisa de parâmetros." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Este comando precisa de um parâmetro." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Argumento inválido." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Este comando está incompleto." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Digite '%s' para maiores informações.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Este é %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Este é %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Criando cliente..\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, abandonando %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Não é possível conectar sem senha.\n" "Você deve informar uma no arquivo de configuração\n" "ou na linha de comando, ou informar um quando pedido.\n" "\n" "Finalizando...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Exibir esse texto de ajuda." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Host onde o aMule está rodando. (padrão: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Porta em que o aMule está esperando Conexões Externas (padrão: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Senha para Conexão Externa." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Ler configuração de arquivo." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Não exiba mensagens no stdout (silencioso)" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Verbose - exiba até as mensagens de debug." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Defina o locale (idioma)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Gravar opções de linha de comando" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Criar arquivo de configuração baseado no do aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Exibir versão do programa." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Detalhes do Arquivo" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "%.1f%% concluído" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "Falha em abrir lista de amigos do arquivo 'emfriends.met' para leitura!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "Falha em abrir lista de amigos do arquivo 'emfriends.met' para escrita!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "CRÍTICO - nenhum cliente em StartChatSession" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Amigos" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Exibir &Detalhes" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Adicionar amigo" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Remover amigo" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Enviar &Mensagem" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Exibir Arquivos" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Abrir slot para amigos" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Deseja eliminar o amigo selecionado de sua lista?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Deseja eliminar os amigos selecionados de sua lista?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Você não pode definir mais de um slot para amigos.\n" " Apenas um foi definido." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Seleção múltipla" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Enviar mensagem ao usuário" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Mensagem a Enviar:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Remover dos amigos" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Enviar mensagem" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Trocar para esse arquivo" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "Em Fila: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Pedindo por outro arquivo(A4AF)" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Esperando por slot de upload" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "Na fila: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Enviando" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Nenhum" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Não" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Sim" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Baixando..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "Download HTTP cancelado" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Incapaz criar arquivo de destino %s para download!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "A URL para baixar não pode estar vazia" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "A URL %s retornou: %i - Erro (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Erro crítico enquanto salvava arquivo de baixado" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "Baixados %d bytes" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Esperado %d bytes, mas baixados %d bytes" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "URL inválida para download HTTP ou redirecionamento HTTP (você esqueceu " "'http://' ?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Incapaz conectar no servidor de download HTTP" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Reposta de servidor de download HTTP inválida" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Baixando novo GeoIP.dat de %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Download de arquivo GeoIP.dat falhou, abortando atualização." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Falha ao remover arquivo %s, abortando atualização." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Falha ao renomear arquivos %s, abortando atualização" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "Atualização concluída %s" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Erro ao atualizar GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Falha ao baixar %s de %s" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "Falha ao obter a dados de país para '%s'." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Carregando Filtro IP 'ipfilter.dat' e 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "Falha ao carregar arquivo ipfilter.dat '%s', formato desconhecido." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "Falha ao carregar arquivo ipfilter.dat '%s', impossível abrir arquivo." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Carregada %u Faixa de IP de '%s'." msgstr[1] "Carregadas %u Faixas de IP de '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u linha malformada foi ignorada." msgstr[1] "%u linhas malformadas foram ignoradas." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Falha ao renomear novo arquivo %s, abortando atualização." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "Filtro IP está pronto" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Inicializando com \n" "clientes conhecidos" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nodes (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "IP Inválido para inicialização" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Porta inválida para inicialização" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Preencha todos os campos necessários" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Deseja baixar uma nova versão do arquivo nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Fazendo isso, seus nodes atuais serão removidos e a conexão Kademlia será " "reiniciada." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Continuar?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: chave de pesquisa muito curta" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Termo para busca: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Termo para busca já está na lista de busca:" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "Falha ao ler o arquivo nodes.dat - muito velho. Essa versão (0) não é mais " "suportada." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Lendo %u contato Kad" msgstr[1] "Lendo %u contatos Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "Nenhum contato encontrado, por favor reinicie, ou baixe um arquivo nodes.dat." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Somente %d de contato Kad disponível, nodes.dat não escrito" msgstr[1] "Somente %d de contatos Kad disponíveis, nodes.dat não escrito" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Gravado %d contato Kad" msgstr[1] "Gravados %d contatos Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Nome do Arquivo" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Tamanho do arquivo" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Taxa de compartilhamento" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Enviado" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Requisitado" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Aceito" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Fontes completas" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "ATENÇÃO: Arquivo de lista known corrompido, contém cabeçalho inválido." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Falha ao carregar entrada em lista de arquivo known, arquivo pode estar " "corrompido" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Entrada inválida na lista de arquivo known, arquivo pode estar corrompido:" #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Erro desconhecido %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "Incapaz obter descrição do erro para o erro %d" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Calculando hash" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Finalizando" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Completo" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Pausa" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Com Erro" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Esperando" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Você deve informar uma senha não-vazia." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Senha inválida, não é um hash MD5!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Falha ao conectar" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "Conexão EC falhou. Resposta vazia." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "Conexão Externa: Má resposta, handshake falhou. Conexão fechada." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Sucesso! Conexão estabelecida ao aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Sucesso! Conexão estabelecida." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Conexão Externa: Acesso negado porque:" #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Conexão Externa: Handshake falhou." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Atualização automática iniciada" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket: Ok." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "ERRO: Não pôde ouvir a porta TCP." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "ERRO:" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "CUIDADO:" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Fechar" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Recortar" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Copiar" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Colar" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Limpar" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Selecionar Tudo" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Ilimitado" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Menu do Tray aMule" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Limites de Velocidade:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "UL: Nenhum" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "UL: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DL: Nenhum" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DL: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Velocidade de Download: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Velocidade de Envio: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Informação do Cliente" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Nickname: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Nenhum Nickname definido!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ClienteID: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Não conectado" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Nome do Servidor: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP do Servidor: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Não conectado" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "Porta TCP: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Porta TCP: Não está pronta" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "Porta UDP: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "Porta UDP: Não está pronta" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Online Signature: Ativado" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Online Signature: Desativado" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Uptime: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Arquivos compartilhados: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Cliente na fila: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "DL Total: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "UL Total: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Limite de envio" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Limite de download" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Ocultar aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Mostrar aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Sair" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "Ligação 2D2k:" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Adicionar" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Clique aqui para adicionar a ligação eD2k no controle de texto para sua fila " "de download." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Os eventos são exibidos aqui. Para uma lista completa, veja o log na aba " "Servidores." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Carregando..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Número de usuários conectados neste servidor..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Usuários: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Usuários conectados a esse servidor e número estimado do total de usuários." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Up: 0.0 | Down: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Média atual de Download e Upload. Se há número entre os parêntesis, " "significa que atingiu o número máximo de conexões com o cliente." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Exibe o status atual da conexão e transferências ativas. Seta VERMELHA " "significa que você não está conectado, AMARELA significa que você está com " "low ID (sob firewall) e VERDE significa que você está com uma Id Alta (High " "ID, o melhor tipo de conexão)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Não Conectado..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Servidor atualmente conectado." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Pesquisar" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Nome:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tipo" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Local" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Global" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "ArquivoHash" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Parâmetros Estendidos" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtrando" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Tipo de Arquivo" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Todos" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Arquivos" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Áudio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Imagem-CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Figuras" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programas" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Textos" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Vídeos" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Extensão" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Tamanho Mínimo" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Tamanho Máximo" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Disponível" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filtro:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Resultados do Filtro" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Inverter resultado" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Ocultar arquivos conhecidos" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Iniciar" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Mais" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Procure por mais resultados no eD2k. Não suportado por Kad ainda." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Pare" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Download" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Reiniciar Campos" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Resultados" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Limpar downloads completados" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Fontes de arquivos: " #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Geral" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Nome Completo:" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "arquivo-met :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Tamanho :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Status parcial :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Última vez completo:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Transferência" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Fontes encontradas:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Transferindo de (fontes):" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Contador de partes: " #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Disponíveis: " #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Taxa de transf.: " #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Tempo ativo de download:" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Transferido :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Tamanho completo: " #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Manipulador Inteligente de Corrupção (I.C.H.)" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Perdido ao corromper: " #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Ganho com compressão: " #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Pacotes recuperados pelo I.C.H.: " #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Nomes do arquivo" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Assumir" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Limpar" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Aplicar" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Comente/Avalie o arquivo (o texto será exibido para todos)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Para um filme você pode dizer seu tamanho, sua história, idioma ...\\n\\ne " "se ele é falso, você pode dizer isso a outros usuários do aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Qualidade do arquivo" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Não avaliado" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Inválido / Corrompido / Falso" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Ruim" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Regular" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Bom" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Excelente" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Escolha uma classe ou avise os demais usuários se o arquivo é inválido..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Atualizar" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Baixando, aguarde..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Tamanho desconhecido" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Informação necessária" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Endereço IP:" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Porta:" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Informações adicionais" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Usuário :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Userhash :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Adicionar" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Download (Velocidade)" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Atual" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Média de execução" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Média da sessão" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Upload (velocidade)" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Conexões" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Downloads ativos" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Conexões ativas (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Uploads ativos" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Árvore de Estatísticas" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Nome do Usuário:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Hash do Usuário:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Software Cliente" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Versão do Cliente" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Endereço IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID do Usuário:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP do servidor" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Nome do Servidor:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Obfuscação:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Transferir para o cliente" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Solicitação atual:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Taxa upload (média):" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Taxa download (média):" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Upload (Sessão):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Download (sessão):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Upload (total):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Download (total):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Pontuação" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Modificador Down/Up:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Secure ident:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Ranking de espera: " #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Pontuação de fila:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Nick (identificação)" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - A Mula multi-plataforma" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "Esse é o nome que os usuários verão quando se conectarem à você." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Idioma: " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Tempo de espera antes de mostrar as dicas." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Especifica o idioma que será usado no aMule." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Procurar por nova versão ao iniciar" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "Ativar faz com que o aMule verifique por nova versão ao iniciar" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Iniciar minimizado" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Ativando isto deixará o aMule minimizado na inicialização." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Perguntar ao sair" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Fazer o aMule prompt antes de sair." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "Fechar aplicação quando o botão fechar for pressionado" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Ativar ícone no Systray" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Essa opção ativa/desativa o ícone no system tray (ou taskbar)." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimizar para a bandeja" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Ativando isso, o aMule vai minimizar para o ícone de bandeja, ao invés da " "barra de tarefas." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Tempo de atraso da janela de dica: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "segundos" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Browser Padrão" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Insira o nome do seu navegador aqui. Deixe vazio para usar o navegador " "padrão do sistema." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Procurar" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Abrir em nova aba se possível" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Abrir a webpage em nova aba quando possível, ao invés de uma nova janela" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Player de Video" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Limites de banda" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Upload" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Alocação de Slots" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Portas" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Porta TCP Padrão" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Essa é a porta eD2k padrão e não pode ser desabilitada." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Porta UDP para requisições do servidor (TCP+3)" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Porta UDP extendida (Kad / pesquisa global)" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "Essa porta UDP é usada para requisições eD2k estendidas e rede Kad" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Habilitar UPnP para redirecionamento de porta do roteador" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "Porta TCP UPnP (Opcional): " #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Casar endereço local ao IP (vazio para qualquer um): " #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Somente usuários avançados: Se você tem múltiplas interfaces de rede, insira " "o endereço da interface com a qual o aMule deverá conectar-se." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Máximo de fontes para arquivos baixando: " #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Máximo de conexões simultâneas: " #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Auto-conectar ao iniciar" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Reconectar ao ser desconectado" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Remover servidores inativos após" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "tentativas" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Lista de servidores auto-atualizáveis na iniciação" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Lista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Atualizar lista de servidores quando conectar em um servidor" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Atualizar lista de servidores quando um cliente conectar" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Usar sistema de prioridades" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Usar verificação inteligente de LowID ao conectar" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Conexão segura" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Auto-conectar somente em servidores da lista estática" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Definir servidores adicionados manualmente com prioridade Alta" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Manuseamento Inteligente de Corrupção (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Habilitado" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "I.C.H. avançado confia em todo hash (não recomendado)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Adicionar novos downloads em pausa" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Adicionar novos downloads com prioridade automática" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Tentar baixar o primeiro e o último pedaço do arquivo primeiro" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Começar o próximo arquivo pausado quando o arquivo completar" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Da mesma categoria" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "Em ordem alfabética" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Préalocar espaço em disco para novos arquivos" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Para novos arquivos préalocar espaço em disco para todo o arquivo, isso " "reduz fragmentação" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Parar download quando espaço livre em disco acabar" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Selecione isso se você quer uqe o aMule cheque seu espaço em disco" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Digite aqui o espaço min. de disco desejado" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Salvar 10 fontes em arquivos raros (< 20 fontes)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Uploads" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Adicionar novos compartilhamentos com prioridade automática" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Pasta de destino para baixados" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Pasta para arquivos temporários baixados" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Pastas compartilhadas" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(Botão direito na pasta para compartilhar recursivamente)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Compartilhar arquivos ocultos" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Gráficos" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Tempo de atualização: 5s" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Tempo para gráfico de média: 100min" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Escala dos gráficos das conexões: 100 " #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Escala gráfica de download:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Escala gráfica de upload: " #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Cores: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Fundo" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Grade" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Download atual" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Média dos Downloads ativos" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Média dos Downloads da sessão" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Upload Atual" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Média dos Uploads ativos" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Média dos Uploads da sessão" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Conexões ativas" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Indicador do SystemTray" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Kad-nodes atuais" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Kad-nodes rodando" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Sessões Kad-nodes" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Selecione" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Árvore" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Número de versões a exibir (0=sem limite)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! CUIDADO !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "No. Max. de conexões / 5s" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Tamanho do arquivo buffer: 240000 bytes" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Tamanho de Espera de Upload: 5000 clientes" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Atualizar conexão com servidor: desativado" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Desabilitar modo timed standby do computador" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Pele a usar: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Mostrar \"Manipulador Veloz de Ligações eD2k\" em cada janela." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Mostrar info. extras nas abas de categoria" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "Exibir versão do aplicativo no título" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Exibir taxa de transferência no título" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Antes do nome da aplicação" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Depois do nome da aplicação" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Mostrar banda sobressalente" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Orientação Vertical da Barra de Ferramentas" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Mostrar bandeiras nacionais para clientes" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Fila de arquivos baixando" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Mostrar porcentagem do progresso" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Mostrar barra de progresso" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Plana" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Arredondada" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Auto-escolha de arquivo (sobrecarrega CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" "O aMule vai organizar automaticamente as colunas da lista de downloads." #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parâmetros de conexão externa" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Aceitar conexões externas" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP da interface ouvindo" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Informe um IP válido no formato a.b.c.d para a interface EC que ficará " "aguardando. Um campo vazio ou 0.0.0.0 quer dizer 'qualquer interface'" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "Porta TCP: " #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Habilitar redirecionamento de porta UPnP para porta EC" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Senha" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Parâmetros do web server" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Rodar webserver na iniciação" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Modelo de rede" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Password para acesso completo" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Usuário com direitos limitados" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Password para acesso limitado" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Habilitar redirecionamento de porta UPnP da porta do servidor web" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Porta TCP UPnP do servidor web (Opcional)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Tempo atualização (secs)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Ativar compactação Gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Clique aqui para aplicar as alterações feitas." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Ignora todas as alterações feitas." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Título: " #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Comentário: " #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Dir incoming:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Alterar prioridade para novos arquivos:" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Não alterar" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Selecione a cor para esta Categoria (selecionada): " #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Limpar" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Clique nesse botão para limpar o log." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Clique nesse botão para atualizar a lista de servidores..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Lista de servidores" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Informe a URL com o arquivo server.met aqui e pressione o botão a esquerda " "para atualizar a lista de servidores." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Adicionar servidor manualmente: Nome" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Informe o nome do novo servidor aqui" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Porta:" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Informe o IP do servidor no formato x.x.x.x nesse espaço." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Informe a porta do servidor aqui." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Adicionar manualmente um servidor (preencha os campos ao lado antes)" #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Log do aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Informações do Servidor" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2K Info" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad Info" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Clique nesse botão para atualizar a lista de nodes da URL..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nodes (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "informe uma URL para um arquivo nodes.dat e pressione o botão da esquerda " "para atualizar a lista de nodes conhecidos." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Estatísticas dos Nodes" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Inicialização" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Novo node" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Porta:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Inicializando de clientes conhecidos" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Desconectar da rede Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Utilizar Identificação Segura de Usuário" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "É recomendável ativar essa opção. Você não receberá seus créditos se a " "identificação segura não estiver ativada." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Obscurecimento de Protocolo" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Suportar Obscurecimento de Protocolo" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Esta opção habilita Obscurecimento de Protocolo, e faz o aMule aceitar " "conexões obscuras (criptografadas) de outros clientes." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Usar obscurecimento para conexões externas" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Esta opção faz o aMule usar Obscurecimento de Protocolo quando conectando " "outros clientes/servidores." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Aceitar somente conexões obscuras" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Esta opção faz o aMule aceitar somente conexões obscurecidas. Você terá " "menos fontes, mas todo seu tráfego será obscurecido" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Todos" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Nenhum" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Quem pode ver meus arquivos compartilhados: " #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Selecione quem pode pedir a sua lista de compartilhamentos." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Filtro de IP" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtrar clientes" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Habilitar filtragem de IPs de clientes definidos no arquivo ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtrar servidores" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Habilitar filtragem de IPs de servidores definidos no arquivo ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Recarregar lista" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "Recarregar lista de IPs a filtrar do arquivo ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Atualizar agora" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Auto-atualizar ipfilter ao iniciar" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Níveis de Filtro:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Sempre filtrar IPs de redes LAN" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Manuseio paranóico de IPs não-casados" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Rejeitar pacotes se o IP do cliente é diferente do IP onde o pacote foi " "recebido. Use com cuidado." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Utilizar ipfilter.dat global se disponível" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Se nenhum ipfilter.dat local for encontrado, permita o uso de um arquivo " "global." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Ativar Assinatura Online" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Habilita a gravação do arquivo, que pode ser usado por programas externos." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Frequência de atualização (Seg):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Alterar frequência (em segundos) da atualização da Assinatura." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Salvar arquivos de assinatura online em: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Clique aqui para definir pasta contendo os arquivos da Assinatura Online" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtrar mensagens (Exceto chat atual): " #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtrar todas as mensagens" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtrar mensagens de pessoas que não estão em sua lista" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtrar mensagens de clientes desconhecidos" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtrar mensagens contendo (use ',' como separador):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "adicione aqui as palavras que o amule deve filtrar e bloquear nas mensagens" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Mostrar mensagens recebidas no log" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Comentários" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtrar comentários contendo (use '.' como separador):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Conexão direta, sem proxy" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Ativar autenticação" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Ativa/Desativa autenticação por usuário/senha" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Nome do usuário: " #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Nome do usuário para conectar ao proxy" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Senha:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Senha utilizada para conectar ao proxy" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Ativar proxy" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Ativa/desativa suporte a proxy" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Tipo de proxy:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Host do Proxy:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Nome do Host do proxy" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Porta do Proxy:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Porta do Proxy" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Conectar em:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Fazer login em amule remoto" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Usuário" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Lembrar essas definições" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Ativar log de debug detalhado" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "Abrir &o arquivo" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Categorias de Mensagens:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Aguardando..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Adicionar importadas" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Tentar novamente selecionada" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Remover selecionada" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Tipos de Eventos" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Estatísticas e filas de clientes para arquivo(s) selecionado(s) : Sessão / " "Sempre" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Uploads Ativos" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Porcentagem de total de arquivos" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Todos os arquivos" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Arquivos selecionados" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Somente uploads ativos" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Exibir Clientes para" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Recarregar:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Atualizar lista de compartilhados" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Enviar" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Enviar a mensagem especificada" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Encerrar sessão de Chat" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Conectar a qualquer servidor e/ou Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Arquivos Compartilhados" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Desativado [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/s" msgstr[1] "bytes/s" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "s" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "min" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "horas" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "dias" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "todos" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "todos os outros" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Incompleto" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Parado" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Vídeo" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Arquivo" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Texto" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Ativos" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Usando diretório de configuração: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Esperando pela linha de conversão do partfile para morrer..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Importando %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Lendo pasta temp" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Recebendo informações básicas do arquivo info de download" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Criando arquivo de destino" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Carregando dados do download antigo (%u de %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Salvando bloco de dados em novo arquivo de download (%u de %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Recebendo informações sobre fontes do arquivo a baixar" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Adicionando download e salvando novo arquivo .part" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importar arquivos .part" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Estado" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Hash do arquivo" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Disco: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Escolha uma pasta para procurar por downloads temporários! (subdiretórios " "serão incluídos)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "Deseja excluir os temporários dos que foram importados com sucesso?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Remover temporários?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "ERRO: falha na criação de partfile" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Tentando carregar backup do met-file de %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "ERRO:Falha ao abrir arquivo part.met: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "ERRO: arquivo part.met é de tamanho 0: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "ERRO: Versão do arquivo part.met inválida: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Erro: %s (%s) está corrompido (bad tags: %s), impossível carregar arquivo." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "ERRO: %s (%s) está corrompido (tagcount errado), incapaz de carregar arquivo." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Tentando recuperar info do arquivo..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Recuperando arquivo sem nome - tentarei recuperá-lo como RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "Recuperada todas as informações do arquivo :D - Tente usá-lo..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Não foi possível recuperar o arquivo :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Falha ao abrir %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "CUIDADO: %s pode estar corrompido (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "Erro ao salvar arquivo .part: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "Erro de IO enquanto salvava partfile: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Não foi possível identificar o tamanho de '%s' - usando arquivo '%s'." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "De alguma forma o arquivo '%s' está zerado - usando arquivo %s" #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Falha ao salvar part.met.seeds para %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Salvo %i fonte do .part: %s (%s)" msgstr[1] "Salvos %i fontes do .part: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Salvo %i fonte do .part: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Erro lendo arquivo .seeds do arquivo (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Encontrada parte corrompida (%d) em %d arquivo .part %s - Resultado |%s| " "Hash |%s|" msgstr[1] "" "Encontradas partes corrompidas (%d) em %d arquivo .part %s - Resultado |%s| " "Hash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Achado parte completa (%i) em %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Terminado o rehash %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Erro inesperado quando completado %s. Arquivo parado" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Download concluído: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Apagando arquivo: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "CUIDADO: Incapaz de fazer hash em part baixado - hashset incompleto para '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "ERRO: Incapaz de fazer hash de part baixado - hashset incompleto (%s). Isto " "nunca deveria acontecer" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "EOF enquanto fazia hash de parte %u baixada com tamanho %u (max %u) de " "parte '%s' com tamanho %u: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" "AVISO: Não há espaço em disco suficiente! Colocando arquivo %s em pausa" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Parte baixada %i do arquivo %s está corrompida" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Recuperada parte corrompida %i para %s -> Bytes salvos: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Alocando" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Espaço em disco insuficiente" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Baixado" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "ERRO: Falha ao abrir partfile '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Padrão do sistema" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albanês" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Árabe" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturiano" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Basco" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Búlgaro" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Catalão" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Chinês (Simplificado)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Chinês (Tradicional)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Croácia" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Tcheco" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Dinamarquês" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Holandês" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Inglês (UK)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estônia" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finlandês" #: src/Preferences.cpp:648 msgid "French" msgstr "Francês" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galego" #: src/Preferences.cpp:650 msgid "German" msgstr "Alemão" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Grego" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebreu" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Hungria" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italiano" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italiano (Suíço)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japonês" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Coreano" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lituânia" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Noruega (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polonês" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Português (Portugal)" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Português (Brasil)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Albanês" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Russo" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Esloveno" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Espanhol" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Suécia" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turquia" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ucraniano" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Mudar Idioma" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "Não há traduções instaladas no aMule" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "Nenhum idioma disponível" #: src/Preferences.cpp:906 msgid "no options available" msgstr "nenhuma opção disponível" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Categoria inválida encontrada, pulando" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "Porta TCP não pode ser maior do que 65532, pois a UDP escuta em TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Porta padrão será utilizada (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Descartando diretório compartilhado não existente: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Conexão" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Diretórios" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Servidores" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Arquivos" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Segurança" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Interface" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filtros" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Controles remotos" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Assinatura Online" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Avançado" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Eventos" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Debugando" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "As seguinte variáveis serão substituídas:\n" " %PARTFILE - caminhos completo para o arquivo\n" " %PARTNAME - somente nome do arquivo" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Não mude esses valores, a menos que você saiba o\n" "que esteja fazendo, se não você poderá facilmente\n" "tornar as coisas uma bagunça.\n" "\n" "O aMule funciona corretamente sem qualquer tipo de\n" "alteração nessas opções." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Falha ao conectar Cfg para Widget com o ID %d e senha %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "Falha ao transferir dado do Cfg para Widget com o ID %d e senha %s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Tipo de proxy ao qual você está conectado" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "Falha ao transferir dado do Widget para Cfg com o ID %d e senha %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "O aMule deve ser reiniciado para habilitar estas mudanças:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "-Porta TCP alterada.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "-Porta UDP alterada.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Porta de conexão externa modificada.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Aceitação da conexão externa modificada.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Interface de conexão externa modificada.\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Obscurecimento de Protocolo" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Sua lista de Auto-atualização de servidor está vazia.\n" "'Auto-atualização de servidor na iniciação' será desativada." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Você ativou as conexões externas (EC) mas não definiu uma senha.\n" "Conexões Externas só podem ser feitas se for especificada uma senha válida." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "-Idioma alterado.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "-Diretório temporário alterado.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- Rede ED2K conectada.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Ambas rede eD2k e Kad estão desativadas.\n" "Você não será capaz de conectar senão habilitar pelo menos um deles." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad não iniciará se sua porta UDP estiver desabilitada.\n" "Habilite a porta UDP ou desative a rede Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Você DEVE reiniciar o aMule agora.\n" "Se você não reiniciá-lo agora, não reclame se algo de ruim acontecer.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Sua lista de atualização de servidores está em branco.\n" "Coloque pelo menos uma linha que aponte para um server.met válido.\n" "Clique no botão \"Lista\" para abrir a caixa para digitar uma URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Arquivos Temporários" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Arquivos Recebidos" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Assinatura Online" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Escolha uma pasta para %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Defina seu Player de Vídeo preferido" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Selecione o Browser" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Executável%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Editar lista de servidores" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Adicione aqui URL's para baixar arquivo 'server.met'\n" "Somente uma URL por Linha." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Delay na atualização: %d segundo" msgstr[1] "Delay na atualização: %d segundos" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Tempo do gráfico de média: %d minuto" msgstr[1] "Tempo do gráfico de média: %d minutos" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Escala do gráfico de conexões: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Tamanho do Buffer de Arquivo: %d byte" msgstr[1] "Tamanho do Buffer de Arquivo: %d bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Tamanho de Espera de Upload: %d cliente" msgstr[1] "Tamanho de Espera de Upload: %d clientes" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Atualizar conexão com servidor: %d minuto" msgstr[1] "Atualizar conexão com servidor: %d minutos" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Intervalo para atualizar conexão no servidor: Desativado" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "desativado" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Executar comando em evento '%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Habilitar execução de comando no núcleo" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Comando do Núcleo:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Habilitar execução de comando na GUI" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Comando da GUI:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "As seguinte váriaveis serão substituidas:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "Tamanho min deve ser menor que tamanho max. Tamanho max ignorado" #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Alerta da busca" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Principal" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "A busca do Kad não pode ser feita se o Kad não estiver rodando" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "Procura eD2k não pode ser concluída se o eD2k não está conectado" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Erro inesperado quando tentava fazer a busca do Kad:" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ID do arquivo" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Arquivo" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Baixar na categoria" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "Obtendo %s para este arquivo" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Procurando arquivos relacionados (eD2k, servidor local)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Marcar como arquivo conhecido" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Copiar ligação eD2k para área de tranferência" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Cancelado" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Novo" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Falha ao conectar em todos servidores obscurecidos listados. Tentando de " "novo sem ofuscação." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Falha ao conectar em todos os servidores listados. Tentando novamente." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Rede eD2k desabilitada nas preferências, não conectado." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "Nenhum servidor válido para o qual conectar na lista de servidor" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Conectado a %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Conexão estabelecida em: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Erro Fatal durante tentativa de conexão. Talvez seu link Internet tenha caído" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Conexão perdida com %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) parece estar desativado." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) parece estar cheio." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Conexão automática com o servidor irá se repetir em %d segundo" msgstr[1] "Conexão automática com o servidor irá se repetir em %d segundos" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Conexão perdida" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Conexão a %s (%s:%i) falhou" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "ERRO: Socket inválido no tempo de checagem" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Expirado tempo de espera para conectar a %s (%s:%i)." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Recebido último resultado da consulta DNS, descartando." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Carregando arquivo server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Arquivo server.met não encontrado!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "Falha ao carregar arquivo server.met '%s', formato desconhecido." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Falha ao abrir arquivo server.met !" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Arquivo server.met corrompido, encontrada tag de versão inválida: 0x%x, " "tamanho %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "Encontrado %i servidor no server.met" msgstr[1] "Encontrados %i servidores no server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "Adicionado %d servidor" msgstr[1] "Adicionados %d servidores" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Erro: o arquo 'server.met' está corrompido: " #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "Erro de I/O ao ler arquivo 'server.met':" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Servidor não adicionado: [%s:%d] não possui uma porta válida." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Servidor não adicionado: o IP de [%s:%d] está filtrado ou é inválido." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Servidor não adicionado: Servidor com esse IP:Porta [%s:%d] já na lista." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Servidor adicionado: Servidor em [%s:%d] usando o nome '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Você está conectado a um servidor que está tentando apagar. Desconecte " "primeiro." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Falha ao abrir '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Falha ao salvar server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "URL inválida" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Download da lista de servidores de %s concluída" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Nenhuma entrada lista de endereço de servidores encontrada em addresses.dat. " "Por favor cole uma lista de endereços válida de servidores dentro deste " "arquivo em ordem para auto-atualizar sua lista de servidores." #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Iniciando download da lista de servidores de %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "CUIDADO: URL especificada inválida para auto-atualização dos servidores: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "Nenhuma URL com server.met da lista addresses.dat é válida" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Falha ao obter a lista de servidores de %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Servidor local é filtrado pelo IPFilters, reconectando em um servidor " "diferente!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Nome do Servidor" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Endereço" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Porta" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Descrição" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Usuários" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Fixo" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versão" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Você está conectado a um servidor que está tentando apagar. Desconecte " "antes. O servidor NÃO foi apagado." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Nome Desconhecido)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Deseja remover o servidor estático %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Servidores (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Servidor" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Conectar ao servidor" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Marcar servidor como fixo" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Marcar servidor como não-fixo" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Marcar servidores como fixos" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Marcar servidores como não-fixos" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Apagar servidor" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Apagar servidores" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Remover todos os servidores" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Copiar ligações eD2k para área de tranferência" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Reconectar ao servidor" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Deseja remover todos os servidores?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Deseja remover o servidor selecionado?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Deseja remover o servidores selecionados?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "ERRO %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "CUIDADO: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Novo ID do cliente é %u." #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "AVISO: você recebeu uma ID baixa (LowID)!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" "\tGeralmente isso acontece quando você está atrás de um firewall/router." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPara maiores informações, vá até http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Info desconhecida recebida do servidor - muito curta" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Recebido %d servidor novo" msgstr[1] "Recebidos %d servidores novos" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Salvamento da lista de servidores concluído." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "O servidor rejeitou o último comando" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Pacote falso recebido do servidor: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Ocorreu um erro imprevisto ao processar os pacotes do servidor: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Não foi possível ativar resolução DNS para conectar a %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "IP do servidor %s (%s) está filtrado. Não conectando." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "usando obscurecimento de protocolo." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Conectando para %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Não foi possível resolver o DNS para %s: Impossível conectar!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Servidor não adicionado: sem IP ou hostname." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Servidor não adicionado: porta informada inválida." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Status de eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Status Kademlia:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "Rodando em modo LAN" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Rodando" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Status:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Estado da Conexão:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Atrás de Firewall - abra a porta TCP %d em seu roteador ou firewal" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "Estado da Conexão UDP:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Atrás de Firewall - abra a porta UDP %d em seu roteador ou firewall" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Estado do Firewall:" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Nenhum amigo requirido - porta TCP aberta" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Nenhum amigo requirido - porta UDP aberta" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Sem amigos" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Conectando ao amigo" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Conectado ao amigo em %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Fontes indexadas::" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Palavras chaves indexadas: " #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Notas indexadas:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Index carregado:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Média de Usuários:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Média de Arquivos:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Parado" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Adicionando arquivo %s ao compartilhamento" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Encontrado %i arquivo conhecido compartilhado" msgstr[1] "Encontrados %i arquivos conhecidos compartilhados" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Encontrado %i arquivo conhecido, %i desconhecido" msgstr[1] "Encontrados %i arquivos conhecidos, %i desconhecidos" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "ERRO: Tentando compartilhar %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Diretório compartilhado não encontrado, pulando: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Arquivos compartilháveis não encontrado no diretório: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Nome de Usuário" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Velocidade de Download" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Velocidade de Upload" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Partes Disponíveis:" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "Status de Upload" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Status de Download" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Origem" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Nome do arquivo Local" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "Lista de Arquivos Compartilhados" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Pedidos" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Pedidos aceitos" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Dados transferidos" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Taxa Compartilhada" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Partes já baixadas" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Fontes Completas" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Caminho completo" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Adicionar Comentário/Avaliação" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Editar Comentário/Avaliação" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Renomear" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Adicionar arquivo na coleção para lista de transgênica" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Copiar &URL Magnet para Área de Transferência" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Copiar &link eD2k para área de tranferência (&Fonte)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" "Copiar &link eD2k para área de tranferência (Fonte) (&Com opções de " "criptografia)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Copiar &link eD2k para área de tranferência (&Nome da máquina)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Copiar &link eD2k para área de tranferência (Nome da máquina) (Com &Opções " "de criptografia)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Copiar &link eD2k para área de tranferência (&Info AICH)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Copiar &link eD2k para área de tranferência (&Info AICH)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Você precisa ter HighID para criar uma fonte ED2K válida" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Arquivos Compartilhados (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[PartFile]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Nome do arquivo remoto" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Dados enviados (Sessão (Total)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Overhead Total (pacotes): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Solicitações de Arquivo (pacotes): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Troca de fontes (Pacotes): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Overhead de servidor (Pacotes): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Overhead Kad (pacotes): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Criptografia elevada (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Uploads ativos: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Uploads em espera: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Total de sessões de UP com sucesso: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Total de sessões de UP que falharam: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Tempo médio de upload: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Dados baixados (Sessão (Total)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Fontes encontradas: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Downloads ativos (pedaços): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Média de UL:DL da Sessão (Total): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Taxa média de download (Sessão): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Taxa média de envio (Sessão): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Taxa máxima de download (Sessão): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Taxa máxima de envio (Sessão): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Reconectados: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Tempo desde a primeira transferência: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Conectado ao servidor desde: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Conexões ativas (estimada): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Máximo de conexões que atingiram tempo limite: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Média de conexões (estimativa): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Pico de conexões (estimada): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Clientes" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Desconhecido: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Filtrado: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Banido: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Total: %i Conhecidos: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Servidores ativos: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Servidores que falharam: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Total: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Servidores eliminados: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Servidores Filtrados: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Usuários em servidores ativos: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Arquivos nos servidores ativos: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Total de usuários: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Total de arquivos: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Ocupação do Servidor: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Número de arquivos compartilhados: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Tamanho total de compartilhados: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Média de tamanho de arquivo: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Sistema Operacional" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Não recebido" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Conexões ativas (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Não disponível" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Nunca" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Comando '%s' com pid '%d' foi finalizado com o código de status '%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Executar e sair." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Formato do IP inválido. Use xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Esse comando requer um parâmetro. Válidos: 'all', NomeDeArquivo, ou um " "número.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Processando pela hash: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Processando por nome de arquivo: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "Esse comando requer um parâmetro. Válido: hash de um arquivo.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Não é um número válido\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Não é uma hash válida (precisa ter exatamente 32 caracteres)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Digite '%s' para maiores informações.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Downloads (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Solicitação falhou com erro desconhecido." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operação executada com sucesso." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Solicitação falhou com os seguintes erros: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Filtragem IP para clientes é %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "Desligado" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "Ligado" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Filtragem IP para servidores é %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Nível atual do IPFilter é %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Limites de banda: Enviar: %u kB/s, Baixar: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Conectado a %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Conectando" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "sob firewall" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "Ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Download:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Upload:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Clientes na fila:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Fontes totais:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Número de resultados da busca: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Progresso da busca: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Progresso da busca não disponível" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Resposta recebida do servidor desconhecida, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Exibir informações de status resumidas." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Exibir informações de conexão, taxa de Down/Up, etc.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Exibir árvore de estatísticas completas." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Opcionalmente, um número entre 0-255 pode ser informado como parâmetro para\n" "esse comando, que vai dizer quantas entradas de versões de clientes foram \n" "encontradas. Informar 0 ou nada quer dizer 'sem limites'.\n" "\n" "Exemplo: 'statistics 5' vai mostrar apenas as 5 maiores versões de cada tipo " "de cliente.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Fechar aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Desligando o núcleo remoto (amule/amuled).\n" "Isso irá também desligar o cliente texto, por causa disso é inusável sem um\n" "núcleo rodando.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Recarregar objeto selecionado." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Recarregar a lista de arquivos compartilhamentos." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Recarregar a tabela IPFilter." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Carregar a atual tabela de IP filtering." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Atualizar a tabela de IP filtering de URL." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Se a URL é omitida a URL das preferências é usado." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Conectar a rede." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Isso vai fazer com que o aMule se conecte às redes definidas nas " "Preferências.\n" "Opcionalmente. você pode informar um servidor (servidor:porta) para se " "conectar\n" "a esse servidor apenas. O IP deve ter notação decimal IPv4,\n" "ou um nome DNS que possa ser resolvido." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Conectar somente em eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Conectar a rede Kad apenas." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Desconectar da rede." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Isso irá desconectar você de todas as redes conectadas atualmente.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Disconectar somente de eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Desconectar apenas da rede Kad." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Adicionar uma ligação eD2k ou magnet ao núcleo." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "A ligação eD2k para ser adicionada pode ser:\n" "*) um arquivo de ligação (ed2k://|file|...), ela será adicionado na fila de " "download,\n" "*) uma ligação de servidor (ed2k://|server|...), ela será adicionarda a " "lista de servidores,\n" "*) ou uma ligação de lista de servidores, em qualquer caso todos servidores " "na lista serão adicionados para a\n" " lista de servidores.\n" "\n" "A ligação magnética deve conter o hash eD2k e tamanho do arquivo.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Defina as preferências." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Definir preferências de IP filtering." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Ligar filtragem IP para ambos clientes e servidores." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Desligar filtragem IP para ambos clientes e servidores." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Habilitar/Desabilitar filtragem IP para clientes." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Ligar filtragem IP para clientes." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Desligar filtragem IP para clientes." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Habilitar/Desabilitar filtragem IP para servidores." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Ligar filtragem IP para servidores." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Desligar filtragem IP para servidores." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Definir no nível do IP Filter." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Qualquer valor entre 0 e 255 é válido, e o valor padrão (inicial)\n" "é 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Limitação de Uso de Banda" #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "O Valor informado nesses comandos deve ser em kilobytes/s.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Definir limite de Upload." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "O Valor informado nesses comandos deve ser em kilobytes/s.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Definir limite de Download." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Obter e mostrar o valor da opção selecionada." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Obter preferências de IP filtering." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Obter estado de IP filtering para ambos clientes e servidores." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Obter estado do IP filtering somente para clientes." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Obter estado do IP filtering somente para servidores." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Definir no nível de IP filtering." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Obter limites de Up/Down" #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Faça uma pesquisa." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Um tipo de busca poderá ser especificado escolhendo o tipo:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Exemplo: 'search kad file' será pesquisado na rede kad o \"arquivo\".\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Faça uma pesquisa global." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Faça uma pesquisa local" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Faça uma pesquisa no kad" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Mostra resultados da última pesquisa." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Retorna os resultados da pesquisa anterior.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Exibe progresso de uma pesquisa." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Exibe o progresso de uma pesquisa.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Iniciar download de um arquivo" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "O número de um arquivo de uma última busca poderá ser obtido.\n" "Exemplo: 'download 12' começará a baixar o arquivo com o número 12 da busca " "anterior.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Parar Download." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Continuar Download." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Cancelar Download" #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Definir prioridade de download." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Mudar prioridade de um download para Baixo, Normal, Alto ou Auto.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Definir prioridade baixa." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Definir prioridade normal." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Definir prioridade alta." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Definir prioridade auto." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Exibir as listas de Up/Down" #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Exibe listas de upload/download, lista de servidores ou lista de " "compartilhados.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Mostrar fila de Upload." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Mostrar fila de Download." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Mostrar log." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Mostrar lista de servidores." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Reiniciar log." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Comando ultrapassado, use '%s' no lugar." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Esse comando foi depreciado e será removido no futuro.\n" "Ao invés desse, use '%s'.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Cliente em modo texto do aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Convertendo hashsets AICH antigos de '%s' para 64b em '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "AVISO: O nome de arquivo '%s' é inválido e foi renomeado para '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "AVISO: O arquivo '%s' já existe, novo arquivo renomeado para '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "Deseja cancelar e APAGAR TODOS os arquivos desta categoria?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Confirmação requerida" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Somente 99 categorias são suportadas" #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Excesso de conexões!" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Todos os outros" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Selecione o filtro de exibição" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Adicionar categoria" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Editar categoria" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Remover categoria" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "Falha ao abrir o arquivo (%s), removendo da lista de compartilhados." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Hashset solicitado para arquivo desconhecido: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Continuando uploads para o arquivo: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Suspendendo uploads para o arquivo: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Falha ao executar comando `%s' no evento `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Download concluído" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Caminho completo do arquivo." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Nome do arquivo sem seu caminho completo." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "O hash eD2k do arquivo." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Tamanho do arquivo em bytes." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Tempo acumulado de download ativo." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Nova sessão de chat iniciada" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Remetente da mensagem." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Sem espaço" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Partição do disco" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Erro ao concluir" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Processando arquivo número %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Você pediu por hash de partes (só é usado para arquivos > 9,5MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Arquivo não existe !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, o criador de ligações do aMule eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Bem-vindo!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Parâmetros de Entrada" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Arquivo a gerar hash" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "URL para esse arquivo (opcional)" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Escreva aqui o arquivo que você quer computar a ligação eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Escreva aqui a URL que você quer adicionar na ligação eD2k: Adicione / no " "fim para deixar o aLinkCreator anexar o atual nome do arquivo" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Remover" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Criar link com hash de partes" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Ajuda a espalhar arquivos novos e raros mais rápido, mas aumenta o tamanho " "do link" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Hash MD4 do arquivo" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Hash de arquivo eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "Ligação eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Salvar" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Copiar para a Área de Transferência" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Abrir" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Abra o arquivo para computar esta ligação eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Copiar ligação eD2k computada para a área de transferência" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Salvar como" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Salvar ligação eD2k computada no arquivo" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Sobre o aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Selecione o arquivo que você quer computar a ligação eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Não pode abrir o clipboard" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Nada a ser copiado!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Selecione o arquivo para sua ligação eD2k computada" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Impossível abrir " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Por favor, informe um nome não-vazio" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Nada a ser salvo!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, o criador de ligação do aMule eD2k\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps de http://www.everaldo.com e http://www.icomania.com\n" "e http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distribuído sobre GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Criando Hash..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator está trabalhando por você" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Computando Hash MD4..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Computando Hashes eD2k..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Cancelado !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Pronto em %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Você já adicionou essa URL!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Informe uma URL não-vazia" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Impossível abrir %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i dias %i horas %i min %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, Estatísticas Online do aMule" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Taxa máxima de DL enquanto roda o wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Taxa máxima absoluta de DL enquanto rodava o wxCas (anterior)" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistema" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Parar atualização automática" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Salvar imagem de estatística Online" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Imprimir imagem de estatística Online" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Preferências" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Sobre wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Iniciar atualização automática" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Atualização automática parada" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Atualização automática iniciada" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Salvar imagem estatísticas" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Estatísticas Online do aMule" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Encontrei um problema na hora de imprimir.\n" "A sua impressora está configurada corretamente?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Imprimindo" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, Gerador de Assinaturas Online com estatísticas do aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Baseado no CAS, por Pedro de Oliveira \n" "\n" "Distribuído sob licença GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh Oh, aMule não está rodando..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule está rodando" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule está rodando, mas desconectado" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule está conectando..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh Oh, o status do aMule é desconhecido..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " está rodando há " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr "esta parado !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " não esta conectado !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " está conectando..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " está fazendo algo de estranho, verifique!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " conectado em " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "desligado" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " está ativo " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " com " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Download Total: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Download da Sessão: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Download: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Compartilhando: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " arquivos, Clientes na fila: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Tempo: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " em " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Média de carga do Sistema (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Uptime do Sistema: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Pasta contendo arquivo amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Informe aqui a pasta onde está o arquivo amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Taxa de atualização (em segundos)" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Gerar imagem de estatística a cada atualização" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Informe aqui a pasta onde gravar a imagem de estatística gerada" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Fazer upload periódico da imagem para servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "URL do FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Caminho no FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Informe a URL do seu servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "Informe a pasta onde colocar a sua imagem estatística no servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Usuário" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Informe o nome do usuário de login, para o servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Informe a senha para o usuário do servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Intervalo entre atualizações do servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Validar" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Pasta contendo seu arquivo de assinatura" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Pasta para colocar imagem estatística gerada" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Carregar modelo " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Porta HTTP do web server" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Usar redirecionamento de porta UPnP na porta do cliente web" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Porta UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Utilizar compressão gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Senha de total acesso para servidor web" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Senha de visitante para servidor web" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Permitir acesso restrito" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Negar acesso restrito" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Carregar/salvar configurações do servidor web de/para aMule remoto" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Caminho para arquivo amule.conf - NÃO USE DIRETAMENTE!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Desativar interpretador PHP (depreciado)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Recompilar páginas PHP a cada solicitação" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Servidor Web do aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "conexão de cliente web aceita\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "ERRO: não pode aceitar conexões de clientes web\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Solicitação falhou com o seguinte erro: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Arquivo index não encontrado:" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sessão expirada - solicitando login\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sessão Ok, logado\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sessão Ok, ainda não logado\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Nenhuma sessão aberta - solicitando login\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sessão criada - solicitando login\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Processando pedido [original]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Nenhuma senha especificada, login não será permitido." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Verificando senha\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Hash de senha inválido\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Senha Ok\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Senha inválida\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Você não digitou nenhuma senha. Senha em branco não é permitido.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Solicitado logout\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Processando solicitação [redirecionado]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Arquivo .part %s (%s) não possui fontes disponíveis" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Arquivo .part %s (%s) tem fontes expiradas." #, fuzzy #~ msgid "Download status" #~ msgstr "Status de Download" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Espera na atualização: %d segundo" #~ msgstr[1] "Espera na atualização: %d segundos" #~ msgid "Transferring" #~ msgstr "Transferindo" #, fuzzy #~ msgid "QR: ???" #~ msgstr "QR: %u" #~ msgid "QR: %u" #~ msgstr "QR: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "Na fila de espera" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - mostrar progresso de uma busca" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Criando hash MD4 e info. de recuperação AICH para o arquivo: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Criando hash MD4 para o arquivo: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Criando hash AICH para o arquivo: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "AVISO: Não foi possível remover arquivo '%s' depois de criar o backup" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "AVISO: Falha ao apagar %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Avaliação (total):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Tentar transferir pedaços completos em cada upload" #~ msgid "Networks window" #~ msgstr "Janela de Redes" #~ msgid "Searches window" #~ msgstr "Janela de Busca" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Baixando" #~ msgid "Shared files window" #~ msgstr "Janela de arquivos compartilhados" #~ msgid "Messages window" #~ msgstr "Janela de Mensagens" #~ msgid "Statistics graph window" #~ msgstr "Janela de gráficos de estatísticas" #~ msgid "Preferences settings window" #~ msgstr "Janela de configuração de preferências" #~ msgid "Transfers" #~ msgstr "Transferências" #~ msgid "Files transfers window" #~ msgstr "Janela de arquivos transferidos" #~ msgid "Unban" #~ msgstr "DesBanir" #~ msgid "Show Uploads" #~ msgstr "Exibir Uploads" #~ msgid "Show Queue" #~ msgstr "Exibir lista de espera" #~ msgid "Select View" #~ msgstr "Selecionar modo de visão" #~ msgid "Client Software" #~ msgstr "Software Cliente" #~ msgid "Waited" #~ msgstr "Aguardou" #~ msgid "Upload Time" #~ msgstr "Tempo de Upload" #~ msgid "Upload/Download" #~ msgstr "Upload/Download" #~ msgid "Remote Status" #~ msgstr "Status Remoto" #~ msgid "File Priority" #~ msgstr "Prioridade de Arquivo" #~ msgid "Score" #~ msgstr "Contagem" #~ msgid "Asked" #~ msgstr "Pedidos" #~ msgid "Last Seen" #~ msgstr "Última visita" #~ msgid "Entered Queue" #~ msgstr "Lista de Espera" #~ msgid "Transferred Up" #~ msgstr "Transferido (Up)" #~ msgid "Transferred Down" #~ msgstr "Transferido (Down)" #~ msgid "Userhash" #~ msgstr "Userhash" #~ msgid "Encrypted" #~ msgstr "Encriptado" #~ msgid "Shows Upload / Up-queue" #~ msgstr "Exibir Uploads / Fila de espera" #~ msgid "Clients on queue :" #~ msgstr "Clientes em espera: " #~ msgid "Current Session" #~ msgstr "Sessão atual" #~ msgid "Total" #~ msgstr "Total" #~ msgid "Requested :" #~ msgstr "Solicitados:" #~ msgid "Files Transfers Window" #~ msgstr "Janela de Transferências" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Total de Usr: %s | Total de Arquivos: %s" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "" #~ "AVISO: Não foi possível remover arquivo '%s' depois de criar o backup" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country(): Falha ao carrega dado do país de" #~ msgid "Get IPFilter level." #~ msgstr "Obter nível do IPFilter" #~ msgid "Makes a search." #~ msgstr "Faça uma busca" #, fuzzy #~ msgid "Killed!" #~ msgstr "Falha" #, fuzzy #~ msgid "Using amuleweb in '%s'." #~ msgstr "Executar o amuleweb na inicialização" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "Fechar aMule." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "As seguintes opções foram mudadas nesta versão por razões de segurança:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Habilitar suporte a Obscurecimento de Protocolo para conexões de " #~ "entrada e saída.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Desabilitar a atualização da lista de servidores através de outros " #~ "servidores e clientes.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Para mais informações sobre a razão dessas mudanças, procure\n" #~ "o wiki do aMule em http://wiki.amule.org e busque por \"fake servers\".\n" #~ "É importante que você limpe qualquer servidor falso de sua lista para o " #~ "que aMule funcione apropriadamente." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "Adicionalmente, as preferências tem de ser reinicidas para o padrão do " #~ "sistema. Por favor configure suas opções novamente se for necessário.\n" #~ msgid "Fetching status..." #~ msgstr "Recebendo status..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Usr: E: %s K: %s | Arquivos E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Cliente %s em IP:Porta %s:%d usando %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgid "Firewalled" #~ msgstr "Atrás de Firewall" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "Carregado %d bitmap de bandeira." #~ msgstr[1] "Carregados %d bitmaps de bandeiras." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "O arquivo %s é muito grande para a Mula: máximo suportado é 4 GB." #~ msgid "No handler for this file type." #~ msgstr "Não há um programa definido para esse tipo de arquivo." #~ msgid "File was not saved" #~ msgstr "Arquivo não foi salvo" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "Conexão Falhou. Impossível conectar ao Host especificado\n" #~ msgid "Message Filter" #~ msgstr "Filtro de Mensagens" #~ msgid "Gui Tweaks" #~ msgstr "Ajustes finos" #~ msgid "Core Tweaks" #~ msgstr "CORE Tweaks" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Tempo de Espera (dicas) em secs" #~ msgid "Show part file number before file name" #~ msgstr "Mostrar número da parte do arquivo antes do nome do arquivo" #~ msgid "Skin Support" #~ msgstr "Suporte a Skin" #~ msgid "- no skins available -" #~ msgstr "- Nenhuma pele disponível -" #~ msgid "Online Signature Directory:" #~ msgstr "Diretório da Assinatura Online:" #~ msgid "Filtering Options:" #~ msgstr "Opções de Filtragem:" #~ msgid "Line Capacities" #~ msgstr "Capacidades de Linha" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Nota: Esses valores apenas\n" #~ " são usados para estatísticas." #~ msgid "Standard client TCP Port:" #~ msgstr "Porta TCP do Cliente:" #~ msgid "Extended client UDP Port:" #~ msgstr "Porta UDP do cliente (Estendida):" #~ msgid "Bind Address" #~ msgstr "Fixar esse Endereço" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "Porta UDP para solicitações estendidas (TCP+3):4665" #~ msgid "Max Sources per File" #~ msgstr "No. Max. de fontes por arquivo" #~ msgid "Connection limits" #~ msgstr "Limites da conexão" #~ msgid "Universal Plug and Play" #~ msgstr "Plug and Play Universal" #~ msgid "Enable UPnP" #~ msgstr "Habilitar UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "Porta TCP UPnP" #~ msgid "Start next paused file when a file completed" #~ msgstr "Iniciar próximo arquivo em pausa ao concluir download" #~ msgid "Check disk space" #~ msgstr "Checar espaço em disco" #~ msgid "Min disk space:" #~ msgstr "Espaço min em disco:" #~ msgid "Incoming" #~ msgstr "Completo" #~ msgid "Temporary" #~ msgstr "Temporário" #~ msgid "Shared" #~ msgstr "Compartilhado" #~ msgid "Select Statistics Colors" #~ msgstr "Selecionar cores das estatísticas" #~ msgid "Download Queue Files Progress" #~ msgstr "Progresso dos arquivos em espera" #~ msgid "Show percentage" #~ msgstr "Exibir porcentagem" #~ msgid "Show progressbar " #~ msgstr "Exibir barra de progresso" #~ msgid "Enable skin support " #~ msgstr "Habilitar suporte a pele" #~ msgid "Skin:" #~ msgstr "Pele:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "Auto-organizar arquivos na fila de espera (ALTO uso de CPU)" #~ msgid "Show Fast eD2k Links Handler" #~ msgstr "Mostrar manipulador rápido de ligações eD2k" #~ msgid "Web server port" #~ msgstr "Porta do web server" #~ msgid "Enable UPnP port forwarding on the web server port" #~ msgstr "Habilitar redirecionamento de porta UPnP na porta do servidor web" #~ msgid "Web server UPnP TCP port" #~ msgstr "Porta TCP UPnP do web server" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "IP da interface de audição\n" #~ "(vazio para qualquer)" #~ msgid "TCP port" #~ msgstr "Porta TCP" #~ msgid "Who can see shared files:" #~ msgstr "Quem pode ver os compartilhados:" #~ msgid "Event types" #~ msgstr "Tipos de eventos" #~ msgid "ERROR: can not accept web client connection\n" #~ msgstr "ERRO: não pode aceitar conexão do cliente web\n" #~ msgid "" #~ "Your Auto-update server list is empty.\n" #~ "'Auto-update server list at startup will be disabled." #~ msgstr "" #~ "Sua lista de servidores Auto-atualizáveis está vazia.\n" #~ "'Lista de servidores Auto-atualizáveis no ínicio será desabilitada." #~ msgid "ERROR: Invalid part.met fileversion: %s ==> %s" #~ msgstr "ERRO: Versão do arquivo part.met inválida: %s ==> %s" #~ msgid "Makes aMule promt before exiting." #~ msgstr "Faz com que o aMule confirme antes de sair." #~ msgid "Bandwith limits" #~ msgstr "Limites da banda" #~ msgid "This UDP port is used for extended ed2k requests and Kad network" #~ msgstr "" #~ "Essa porta UDP é usada para extender as requisições ed2k e da rede Kad" #~ msgid "Show overhead bandwith" #~ msgstr "Exibir estatísticas da conexão" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. ativo" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICH a cada hash novo (não recomendado)" #~ msgid "Disk space" #~ msgstr "Espaço em disco" #~ msgid "Create Backup for preview" #~ msgstr "Criar cópia para pré-visualização" #~ msgid "Advanced Settings" #~ msgstr "Configurações Avançadas" #~ msgid "Progressbar Style" #~ msgstr "Estilo da Barra de progresso" #~ msgid "Column Sorting" #~ msgstr "Ordenação das Colunas" #~ msgid "Misc Gui Tweaks" #~ msgstr "Tweaks de Interface" #~ msgid "File Options" #~ msgstr "Opções de Arquivo" #~ msgid "Status text" #~ msgstr "Texto de Status" #~ msgid "Pop-up status text" #~ msgstr "Pop-Up do texto de status" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ "Cliente p2p 'Multiplataforma' baseado no eMule \n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr " Página: http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr " Fórum: http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ " FAQ (ajuda): http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " Contato: admin@amule.org (assuntos administrativos) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr " Trechos do aMule são baseados em \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " Copyright (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "Para um filme, Você pode falar do tamanho, idioma, história...\n" #~ "e se ele for falso (fake), Você poderá informar aos demais usuários." #~ msgid "Misc Options" #~ msgstr "Opções Diversas" #~ msgid "Server Options" #~ msgstr "Opções do Servidor" #~ msgid "Display server motd when connected ..." #~ msgstr "Exibir a mensagem do dia (motd) ao conectar" #~ msgid "eD2k Info" #~ msgstr "Info eD2k" #~ msgid "Disable/Enable" #~ msgstr "Desativar/Ativar" #~ msgid "Authentication" #~ msgstr "Autenticação" #~ msgid "General Settings" #~ msgstr "Opções Gerais" #~ msgid "Hard limit" #~ msgstr "Limite" #~ msgid "Max Connections" #~ msgstr "No. Máximo de Conexões" #~ msgid "GUI Tweaks" #~ msgstr "GUI Tweaks" #~ msgid "Remote Control" #~ msgstr "Controle Remoto" #~ msgid "Unable to determine selected browser!" #~ msgstr "Impossível determinar browser selecionado!" #~ msgid "User Defined" #~ msgstr "Definido pelo Usuário" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - a Mula do Linux" #~ msgid "System Default" #~ msgstr "Padrão do Sistema" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Selecione seu navegador aqui" #~ msgid "Custom Browser:" #~ msgstr "Definido pelo Usuário:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Defina seu browser aqui, selecionando a opção 'definido pelo usuário' " #~ "acima.Para browser personalizado, selecione essa opção na lista." #~ msgid "Please wait... " #~ msgstr "Aguarde..." #~ msgid "Could not determine the command for running the browser." #~ msgstr "Não foi possível reconhecer o comando para executar o navegador." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "Conexão EC falhou. Resposta vazia." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "ConexaoExterna: Acesso negado porque: " #~ msgid "ExternalConn: Access denied" #~ msgstr "ConexaoExterna: Acesso negado" #~ msgid "ExternalConn: Bad reply from server. Connection closed." #~ msgstr "ConexaoExterna: Resposta incorreta do servidor. Conexão Encerrada." #~ msgid "The ed2k hash of the file." #~ msgstr "Hash ed2k do arquivo." #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Copiar &link ED2k para Área de Transferência" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "Copiar link ED2k para Área de Transferência (&Fonte)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "" #~ "Copiar link ED2k para Área de Transferência (Fonte) (&Com opções de " #~ "Criptografia)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "Copiar link ED2k para Área de Transferência (&Hostname)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "" #~ "Copiar link ED2k para Área de Transferência (Hostname) (Com opções de " #~ "&Criptografia)" #~ msgid "Copy ED2k link to clipboard (&AICH info)" #~ msgstr "Copiar link ED2K para a Área de Transferência (info &AICH)" #~ msgid "Warning" #~ msgstr "Cuidado" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "Erro: Não foi possível escutar a porta TCP." #~ msgid "Error: can not accept web client connection\n" #~ msgstr "Erro: não é possível aceitar conexão de cliente web\n" #~ msgid "Webserver HTTP port" #~ msgstr "Porta do servidor HTTP" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "Usar redirecionamento de porta UPnP na porta do webserver" #~ msgid "Full access password for webserver" #~ msgstr "Senha para acesso completo ao servidor" #~ msgid "Guest password for webserver" #~ msgstr "Senha de acesso restrito ao servidor" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "Carregar/Salvar definições do/para aMule remoto" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "Informe o arquivo que deseja criar o link ED2K" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "Informe a URL que deseja adicionar ao link ED2k: adicione / no final para " #~ "deixar o aLinkCreator adicionar ao nome atual" #~ msgid "Ed2k File Hash" #~ msgstr "Hash ED2k do arquivo" #~ msgid "Ed2k link" #~ msgstr "Link ED2k" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "Abrir um arquivo e computá-lo como link ed2k" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "Copiar link computado para a Área de Transferência" #~ msgid "Save computed ed2k link to file" #~ msgstr "Salvar link computado para arquivo" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "Selecione um arquivo que deseja computar como link ed2k" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "Selecione um arquivo para seu link computado" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, o criador de links ed2k do aMule\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps de http://www.everaldo.com e http://www.icomania.com\n" #~ "e http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distribuído sob licença GPL" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, o criador de Links ed2k do aMule" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Copiar link ED2k para a Área de Transferência" #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Copiar links ED2k para a Área de Transferência" #~ msgid "ED2K: Connecting" #~ msgstr "ED2K: Conectando" #~ msgid "ED2K: Disconnected" #~ msgstr "ED2K: Desconectado" #~ msgid "Warning: Unable to open skin file '%s' for read" #~ msgstr "Cuidado: Não foi possível abrir o arquivo de skin '%s' para leitura" #~ msgid "ed2k network" #~ msgstr "rede ed2k" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "Sua lista de servidores para a atualização automática está vazia.\n" #~ "'Atualizar lista de servidores ao iniciar' será desativado." #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "Ambos ED2K e rede Kad estão desabilitados.\n" #~ "Você não será capaz de conectar até que você habilite uma delas." #~ msgid "Edit Serverlist" #~ msgstr "Edite a lista de Servidores" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "Erro: não é possível aceitar nova conexão externa" #~ msgid "ED2K is disabled in preferences." #~ msgstr "ED2K está desativado nas preferências" #~ msgid "ExternalConn: shutdown requested" #~ msgstr "ExternalConn: desligamento solicitado" #~ msgid "Already connected to ED2K." #~ msgstr "Já conectado a rede ED2K." #~ msgid "Connecting to ED2K..." #~ msgstr "Conectando a rede ED2K..." #~ msgid "Disconnected from ED2K." #~ msgstr "Desconectado da rede ED2k." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "ExternalConn: opcode inválido recebido: %#x" #~ msgid "ED2K Status:" #~ msgstr "Status ED2K:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "Média de taxa de Down (Sessão): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "Média de taxa de Up (sessão): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "Taxa máxima de Down (sessão): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "Taxa máxima de Upload (Sessão): %s" #~ msgid "Average filesize: %s" #~ msgstr "Média de tamanho: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "A busca do ED2K não pode ser feita se o ED2K não estiver conectado" #~ msgid "Error: " #~ msgstr "Erro: " #~ msgid "Warning: " #~ msgstr "Aviso: " #~ msgid "Search related files (ED2k, local server)" #~ msgstr "Buscar arquivos relacionados (ED2K, servidor local)" #~ msgid "Error" #~ msgstr "Erro" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "CUIDADO: Você não pode adicionar você mesmo como fonte para uma ligação " #~ "ed2k enquanto estiver com id baixo." #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "Defina o seu player de vídeo favorito nas preferências.\n" #~ "Por enquanto, o aMule vai tentar usar o mplayer e você verá esse aviso a " #~ "cada pré-visualização." #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "Erro: Falha ao abrir arquivo part.met: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "Erro: part.met está zerado: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "Erro: versão do arquivo part.met inválida: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "Aviso: %s parece estar corrompido (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "Erro inesperado ao completar %s. Arquivo pausado" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "Aviso: Impossível fazer hash de parte baixada - hash incompleto para '%s'" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "Impossível calcular hash da parte baixada - informação do hash incompleta " #~ "(%s). Isso nunca deveria ter acontecido..." #~ msgid "Insufficient Diskspace" #~ msgstr "Espaço em disco insuficiente" #~ msgid "Warning: known.met cannot be opened." #~ msgstr "Cuidado: Known.met não pode ser aberto." #~ msgid "Warning: Knownfile list corrupted, contains invalid header." #~ msgstr "Aviso: lista de arquivos conhecidos corrompida, cabeçalho inválido." #~ msgid "ERROR! Attempted to share %s" #~ msgstr "ERRO: Tentando compartilhar %s" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "Rede ED2K esta desativada nas preferências, não conectável." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "Não houve conexões validas na lista de servidores" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "Erro: Socket inválido durante tempo de verificação" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions." #~ msgstr "" #~ "Erro: Falha ao carregar arquivo de backup. Procure em http://forum.amule." #~ "org por .part.met recovery solutions." #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "Não foi possível converter links Magnet em ed2k: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "Link ed2k inválido! Erro: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "Limites de tráfego: Up: %u kB/s, Down: %u kB/s.\n" #~ msgid "Shutdown aMule." #~ msgstr "Desligar o aMule." #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "Desligar o servidor remoto (amule/amuled).\n" #~ "Isso também vai finalizar o amulecmd, já que ele não funciona sem estar\n" #~ "conectado a um servidor remoto.\n" #~ msgid "Connect to ED2K only." #~ msgstr "Conectar a rede ED2K apenas." #~ msgid "Disconnect from ED2K only." #~ msgstr "Desconectar apenas da rede ED2K." #~ msgid "Adds an ed2k or magnet link to core." #~ msgstr "Adicionar uma ligação magnética ou ed2k ao núcleo." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "Um link ed2k a ser adicionado pode ser:\n" #~ "*) um link de arquivo (ed2k://|file|...), que será adicionado à fila de " #~ "download,\n" #~ "*) uma link de servidor (ed2k://|server|...), que será adicionado à lista " #~ "de servidores,\n" #~ "*) ou um link de serverlist, neste caso todos servidores serão " #~ "adicionados na\n" #~ " lista de servidores.\n" #~ "\n" #~ "Links Magnet devem conter o hash ed2k e o tamanho do arquivo.\n" #~ msgid "Deprecated command, now '%s'." #~ msgstr "Comando depreciado, agora é '%s'." #~ msgid "Error: %s (%s) - %s" #~ msgstr "Erro: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "AVISO: %s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "Erro: Sem espaço em disco" #~ msgid "Error: Partmet not found" #~ msgstr "Erro: Arquivo .part.met não encontrado" #~ msgid "Error: IO error!" #~ msgstr "Erro: erro de I/O!" #~ msgid "Error: Failed!" #~ msgstr "Erro: Falhou!" #~ msgid "ED2K Link: " #~ msgstr "Ligação ED2K:" #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "Clique aqui para adicionar o link ed2k para a fila de espera." #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "Buscando por mais resultados em ED2K. Não suportado pelo Kad ainda." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Limitação de Banda" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "Essa é uma porta essencial do ED2K e não pode ser desativada." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "Essa porta UDP é usada para solicitações ED2K estendidas e rede Kad" #~ msgid "Hard Limit" #~ msgstr "Limite Rígido" #~ msgid "Connection Limits" #~ msgstr "Limites de conexão" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Atualizar lista de servidores ao iniciar" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Atualizar lista de servidores quando conectar a um servidor" #~ msgid "Update serverlist when a client connect" #~ msgstr "Atualizar lista quando um cliente conectar" #~ msgid "Disk Space" #~ msgstr "Espaço de Disco" #~ msgid "Check Disk Space" #~ msgstr "Verificar espaço em disco" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "Selecione se você quer que o aMule verifique o espaço em disco" #~ msgid "Min Disk Space:" #~ msgstr "Espaço em disco min:" #~ msgid "Incoming Directory :" #~ msgstr "Diretório de arquivos recebidos:" #~ msgid "Temporary Directory :" #~ msgstr "Diretório de arquivos temporários:" #~ msgid "Shared Directories" #~ msgstr "Diretórios Compartilhados" #~ msgid "Create Backup to preview" #~ msgstr "Criar backup para visualizar" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Mostrar gerênciador de links ED2K" #~ msgid "Webserver Parameters" #~ msgstr "Parâmetros Webserver" #~ msgid "Webserver port" #~ msgstr "Webserver porta" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "Habilitar redirecionamento de porta UPnP na porta do Webserver" #~ msgid "Webserver UPnP TCP port" #~ msgstr "Porta TCP UPnP do Webserver" #~ msgid "Serverlist" #~ msgstr "Lista de Servidores" #~ msgid "Manual Server Add : Name" #~ msgstr "Adicionar Servidor: Nome" #~ msgid "No One" #~ msgstr "Ninguém" #~ msgid "Speed Limits:" #~ msgstr "Limites de Velocidade:" #~ msgid "Download Speed: %.1f" #~ msgstr "Velocidade de Down: %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "Velocidade de UP: %.1f" #~ msgid "TCP Port: %d" #~ msgstr "Porta TCP: %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "Porta TCP: Não pronta" #~ msgid "UDP Port: %d" #~ msgstr "Porta UDP: %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "Porta UDP: Não pronta" #~ msgid "Shared Files: %d" #~ msgstr "Compartilhando: %d" #~ msgid "Queued Clients: %d" #~ msgstr "Em espera: %d" #~ msgid "Upload Limit" #~ msgstr "Limite de Upload" #~ msgid "Download Limit" #~ msgstr "Limite de Download" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "Não foi encontrado nenhum endereço de servidor em 'addresses.dat'. Favor " #~ "adicionar um endereço server.met correto para o auto-update funcionar." #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "Cuidado, URL para atualizar servidores é inválida: %s" #~ msgid "webserver running on pid %d" #~ msgstr "webserver rodando com pid %d" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "Você ativou o webserver na inicialização, mas o binário do amuleweb não " #~ "pode ser executado. Por favor, instale o pacote contendo o aMule " #~ "webserver, ou compile o aMule usando --enable-webserver e rode make " #~ "install" #~ msgid "Disconnected from ED2K" #~ msgstr "Desconectado da rede ED2k" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "Falha ao abrir a lista de amigos 'emfriends.met' para leitura!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "Falha ao abrir a lista de amigos 'emfriends.met' para escrita!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "ERRO: Falha ao abrir arquivo .part)" #~ msgid "Mb" #~ msgstr "Mb" #~ msgid "Can't create web socket thread\n" #~ msgstr "Não foi possível criar thread de socket web\n" #~ msgid "Web Server: Started\n" #~ msgstr "Web Server: Iniciado\n" #~ msgid "Not Supported" #~ msgstr "Não Suportado" amule_2.3.1+git20151120.0023527bc2.orig/po/pt_PT.po0000644000175000017500000065051512611472361017523 0ustar morphmorph# Copyright (C) 2004 aMule Team # This file is distributed under the same license as the aMule package. # Kry , 2004. # IgoR , 2004. # Fabio Jr. Beneditto , 2004. # LPP # Helder Correia , 2005 # (special thanks to Pedro Rodrigues ) # Helder Correia , 2007. # Miguel Almeida , 2008. # Luís Picciochi Oliveira , 2009-2011 # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-06-18 14:15+0000\n" "Last-Translator: Luís Picciochi Oliveira \n" "Language-Team: Portuguese \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" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Adicionar um Amigo" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Deve indicar um endereço IP e porto válidos!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informação" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "A chave de utilizador especificada não é válida!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Falha ao abrir ficheiro de ligações eD2k." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "AVISO: Não se pode adicionar a si próprio como fonte para um link eD2k " "enquanto tiver lowid." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "A fechar a aplicação..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "A terminar instância do amuleweb com o pid '%ld' ... " #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "A matar instância do amuleweb com o pid '%ld' ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Falhas" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: A terminar núcleo." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "aMule terminado." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Resultados da depuração de memória para a saída do aMule:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "Configuração das LE" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Palavra-passe definida e permitidas as ligações externas." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "AVISO" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "O seu idioma foi alterado para a predefinição do sistema devido a uma " "mudança de configuração. Desculpe." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Informação" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Não tem nenhum servidor na lista de servidores.\n" "Quer que o aMule faça o download de uma lista nova agora?" #: src/amule.cpp:581 msgid "Server list download" msgstr "A fazer download da lista de servidores" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "servidor web a executar no pid %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Pediu para executar o servidor web no arranque, mas o executável não pode " "ser lançado. Por favor, instale o pacote que contém o servidor web ou " "compile o aMule com --enable-webserver e execute make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "ERRO" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Não foi possível associar os portos ao endereço especificado: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "O porto %u não está disponível. Ficará com LOWID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "O porto %u não está disponível!\n" "\n" "Isto significa que ficará com LOWID.\n" "\n" "Verifique a sua rede para se certificar de que o porto está aberto para " "leitura e escrita." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Erro ao criar o ficheiro da Assinatura Online" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Erro a criar o ficheiro da Assinatura Online do aMule" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "O idioma seleccionado parece não estar instalado no seu computador. (Nota: " "de qualquer das formas, irei tentar activá-lo)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Esta é a primeira vez que executa o aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Esta é uma versão de testes actualizada diariamente e\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "não há qualquer garantia de que não irá partir nada, pegar fogo à sua casa,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "ou matar o seu cão. Mas, *em princípio*, deverá ser seguro usá-lo.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "Mais informação, suporte e novos lançamentos na nossa página,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "em www.amule.org ou no canal de IRC #aMule em irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Esteja à vontade para comunicar erros para http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "A pasta para os ficheiros da Assinatura Online é INVÁLIDA!\n" " A Assinatura Online será DESACTIVADA até que resolva a situação nas " "preferências." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Servidor notificado" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Reserva de espaço em disco para o ficheiro '%s' falhou: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "ERRO: não é possível abrir o ficheiro de relatório" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "AVISO: o ficheiro de relatório está vazio. Algo está mal." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "O relatório foi limpo" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Mensagem do servidor: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" "O download de %s não foi feito porque o ficheiro requisitado não é mais " "recente." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Falha ao transferir a lista de nós." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Falha ao abrir o ficheiro de verificação de versão transferido" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Ficheiro de verificação de versão corrompido" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Está a usar uma versão antiga do aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "A sua versão do aMule é %i.%i.%i e a última versão é %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "A última versão pode ser sempre encontrada em http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" "AVISO: A sua versão do aMuled está desactualizada: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "A sua cópia do aMule está actualizada." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Falha ao transferir o ficheiro de verificação de versão" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Utilizadores: %s | Ficheiros: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Utilizadores: E: %s K: %s | Ficheiros: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Não foram seleccionadas redes" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "com LowID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "com HighID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Ligado a %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "A ligar a %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Desligado da eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad iniciada." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad parada." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Ligado à Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Ligado à Kad (atrás de firewall)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Desligado da Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "A rede Kad não pode ser usada se o porto UDP estiver desactivado nas " "preferências, inicialização não efectuada." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Rede Kad desligada nas preferências, a ligação não será efectuada." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ERRO: Não é possível usar o daemon do aMule quando as ligações externas " "estão desactivadas. Para activar as Ligações Externas use um aMule normal, " "inicie o amuled com a opção --ec-config ou mude a chave " "\"AcceptExternalConnections\" para 1 no ficheiro ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "ERRO: É necessária uma palavra-passe para utilizar as ligações externas e o " "daemon do aMule não pode ser utilizado sem ligações externas. Para executar " "o daemon do aMule deve definir o campo \"ECPassword\" no ficheiro ~/.aMule/" "amule.conf com um valor adequado. Execute o amuled com o parâmetro --ec-" "config para definir a palavra-passe. Para mais informações consulte http://" "wiki.amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - a iniciar temporizador" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: a fazer fork para segundo plano - adeus" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Não foi Possível Criar o Ficheiro de Pid" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "ERRO: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Este é o aMule %s, baseado no eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "A correr em %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "Visite http://www.amule.org para verificar se há novas versões." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ERRO FATAL: Falha ao criar Temporizador" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Controlo remoto do aMule " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Snapshot:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "Cliente p2p 'para todas as plataformas' baseado no eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Website: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Fórum: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Contacto: admin@amule.org (questões administrativas) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (C) 2003-2011 Equipa aMule \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Parte do aMule é baseado em \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Encaminhamento peer-to-peer baseado na métrica XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (C) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Mensagem" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "Caixa de diálogo do aMule destruída" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "A Ligar" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: A Ligar" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Desligado" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Atrás de firewall" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Ligado" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: A Ligar" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Desligado" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Cancelar" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Cancela as tentativas de ligação actuais" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Desligar" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Desligar das redes presentemente ligadas" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Ligar" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Ligar às redes presentemente activadas" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Up: %.1f(%.1f) | Down: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Up: %.1f | Down: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Ligado)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Desligado)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Quer mesmo fechar o %s?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Confirmação de saída" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Executar Comando: " #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- predefinição -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Pasta para os temas '%s' não existe" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "AVISO: Não é possível abrir ficheiro de tema '%s' para leitura" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Redes" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Janela de Redes" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Pesquisas" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Janela de Pesquisas" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Downloads" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Janela de Downloads" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Ficheiros partilhados" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Janela de Ficheiros Partilhados" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Mensagens" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Janela de Mensagens" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Estatísticas" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Janela de Estatísticas" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Preferências" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Janela de Preferências" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importar" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "A ferramenta de importação de ficheiro de partes" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Acerca" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Acerca/Ajuda" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Rede eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Rede Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Sem rede" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "Controlo remoto do aMule" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Erro Fatal: Falha ao criar o Temporizador Central" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Ligar ao amule remoto" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Erro Fatal: Falha ao criar o 'Poll Timer'" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "A ir para o ciclo de eventos..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "A Ligar..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "A ligação falhou " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Gestor de eventos da interface gráfica remota" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "A fechar" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "A ligação falhou. Não é possível ligar a %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Ligação fechada - provavelmente o aMule foi terminado." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Pronto" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Todos" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Não é possível criar o directório '%s' para a categoria '%s', a manter " "directório '%s'." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Desconhecido" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Erro ao receber ficheiros partilhados do utilizador '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "A procurar parceiro para ligação com lowid" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Versão do eMule falsa %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (eMule falso)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (eMule falso)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (baseado no eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Alcunha: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Pedido: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Estatísticas para esta sessão: Aceite %d de %d pedido, %s transferido\n" msgstr[1] "" "Estatísticas para esta sessão: Aceites %d de %d pedidos, %s transferidos\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Estatísticas para todas as sessões: Aceite %d de %d pedido, %s transferido\n" msgstr[1] "" "Estatísticas para todas as sessões: Aceites %d de %d pedidos, %s " "transferidos\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Pedido um ficheiro desconhecido" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Mensagem filtrada de '%s' (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nova mensagem de '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "O utilizador %s (%u) pediu a sua lista de ficheiros partilhados para a pasta " "'%s' -> Ignorado" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "AVISO: %s não pode ser aberto." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "AVISO: Lista de ficheiros cancelados corrompida, contém cabeçalho inválido." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "Erro de entrada/saída ao ler ficheiro %s: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Erro ao gravar ficheiro %s: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Escrever 'Captcha'" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Categoria" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nova Categoria" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Seleccione uma pasta de ficheiros completos" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Deve especificar um nome para a categoria!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Deve especificar um caminho para a categoria!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Erro ao criar pasta de entrada para categoria. Por favor, especifique um " "caminho válido!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Sessão de Conversa Iniciada: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Ligado ao Cliente ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** A Ligar ao Cliente ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Erro na ligação ao cliente / Ligação perdida ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" "*** Passou o teste do 'captcha' e o utilizador recebeu a sua mensagem. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** A sua resposta ao 'captcha' estava errada e a sua mensagem foi ignorada. " "Pode solicitar um novo 'captcha' enviando uma nova mensagem. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Chat" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Fechar o separador" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Fechar todos os separadores" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Fechar os outros separadores" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Adicionar à lista de Amigos" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Ficheiro de créditos carregado, %u cliente conhecido" msgstr[1] "Ficheiro de créditos carregado, %u clientes conhecidos" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Os créditos expiraram para %u cliente!" msgstr[1] " - Os créditos expiraram para %u clientes!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Ficheiro 'cryptkey.dat' não encontrado, a criar." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Detalhes do Cliente" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Activado" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Suportado" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Não suportado" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Desactivado" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Ligado" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Desligado" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Incompleto" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Pessoa Maldosa" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Verificado - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Indisponível" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" "O utilizador %s (%u) pediu a sua lista de ficheiros partilhados -> Aceite" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "O utilizador %s (%u) pediu a sua lista de ficheiros partilhados -> Negado" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "O utilizador %s (%u) pediu a sua lista de pastas partilhadas -> Aceite" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "O utilizador %s (%u) pediu a sua lista de pastas partilhadas -> Negado" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "O utilizador %s (%u) pediu a sua lista de ficheiros partilhados para a pasta " "'%s' -> aceite" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "O utilizador %s (%u) pediu a sua lista de ficheiros partilhados para a pasta " "'%s' -> negado" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "O utilizador %s (%u) partilha a pasta '%s'" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "O utilizador %s (%u) enviou pastas partilhadas não requisitadas." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "O utilizador %s (%u) enviou a lista de ficheiros partilhados para a pasta '%" "s'" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" "O utilizador %s (%u) terminou o envio da lista de ficheiros partilhados" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" "O utilizador %s (%u) enviou lista de ficheiros partilhados não desejada" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "O utilizador %s (%u) negou acesso à lista de pastas/ficheiros partilhados" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Comentários do ficheiro" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Nome de Utilizador" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Nome do Ficheiro" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Classificação" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Comentário" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Sem comentários" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u comentário" msgstr[1] "%u comentários" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Cliente %s banido por ter enviado %s dados corrompidos de um total de %s " "para o ficheiro '%s'" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Automática [Baixa]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Automática [Normal]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Automática [Alta]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Muito baixa" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Baixa" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normal" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Alta" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Muito Alta" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Lançamento" #: src/DataToText.cpp:62 msgid "Asking" msgstr "A Pedir" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "A ligar via servidor" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Fila de Espera Cheia" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Em Fila de Espera" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "A Receber" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "A receber o conjunto de chaves" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Não há partes necessárias" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Não é possível ligar dois clientes com LowID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Demasiadas ligações" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "A ligar via Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Demasiadas ligações Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Banidos" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Erro de Ligação" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Fila de Espera Remota Cheia" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "MLDonkey antigo" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "MLDonkey Novo" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "Compatível com eMule" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Servidor Local" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Servidor Remoto" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Troca de Fontes" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passivo" #: src/DataToText.cpp:133 msgid "Link" msgstr "Ligação" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Sementes de Fontes" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Resultados de Pesquisas" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Concluído" #: src/DataToText.cpp:146 msgid "In progress" msgstr "Em progresso" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "ERRO: Sem espaço em disco" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "ERRO: Partmet não encontrado" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ERRO: erro de entrada/saída!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ERRO: Falhou!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "Em Fila" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Já a transferir" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Formato de ficheiro temporário desconhecido ou danificado." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Parte" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Tamanho" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Transferido" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Velocidade" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Progresso" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Fontes" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioridade" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Estado" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Tempo Restante" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Última Vez Visto Completo" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Última recepção" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Tem a certeza que deseja eliminar o ficheiro seleccionado?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Tem a certeza que deseja eliminar os ficheiros seleccionados?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Comentário de: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Automática" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "P&arar" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pausa" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Continuar" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "&Limpar terminados" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Trocar cada A4AF para este ficheiro" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Trocar cada A4AF para este ficheiro (Automático)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Trocar cada A4AF para outro ficheiro" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Opções Estendidas" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Pré-visualizar" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Mostrar &detalhes do ficheiro" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Mostrar todos os comentários" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Copiar URI magnet para a área de transferência" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Copiar &ligação eD2k para a área de transferência" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Copiar comentários para a área de transferência" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "destituir" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Atribuir à categoria" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Abrir o ficheiro" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Insira o novo nome para este ficheiro:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Renomear ficheiro" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Downloads (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Para evitar que este aviso apareça em cada pré-visualização,\n" "defina o seu leitor de vídeo nas preferências (por omissão é o mplayer)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Pré-visualização do ficheiro" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "ERRO: Erro na execução do leitor multimédia externo! Comando: '%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "A gravar Ficheiro Parcial %u de %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Todos os Ficheiros Parciais Gravados." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "A carregar ficheiros temporários de %s." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "A carregar Ficheiro Parcial %u de %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "ERRO: Falha ao carregar ficheiro de backup. Procure em http://forum.amule." "org por soluções para recuperação de .part.met." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Carregados Todos os Ficheiros Parciais." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Nenhum ficheiro de partes (.part) encontrado" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Encontrado %u ficheiro de partes" msgstr[1] "Encontrados %u ficheiros de partes" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "O sistema de ficheiros da pasta de ficheiros temporários não suporta " "ficheiros grandes." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "O sistema de ficheiros da pasta de ficheiros completos não suporta ficheiros " "grandes" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "A transferir %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Já está a tentar obter o ficheiro '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Já possui o ficheiro '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Já está a tentar transferir o ficheiro %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Conversão de ligação magnet para eD2k não pode ser feita: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Protocolo do link desconhecido: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Ligação eD2k inválida! ERRO: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "O cliente enviou um pacote depois de a autenticação ter falhado." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Ligação externa fechada." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Ligações externas desactivadas devido a palavra-passe vazia!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Ligações externas desactivadas no ficheiro de configuração" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Nova ligação externa aceite" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "ERRO: não foi possível aceitar uma nova ligação externa" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Ligação externa recusada devido a palavra-passe não preenchida nas " "preferências!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "A ligar cliente: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Versão desconhecida" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Versão de LE incorrecta, pode haver incompatibilidade binária. Utilize " "núcleo e remoto da mesma versão." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Não pode ligar-se a uma versão oficial a partir de uma versão de " "desenvolvimento arbitrária! *suspiro*... Prevenido potencial erro futuro" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Versão de protocolo inválida." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Elemento de versão de protocolo em falta." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" "Falha de autenticação: chave inválida indicada como palavra-passe para LE" #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "A autenticação falhou: palavra-passe errada." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "A autenticação falhou: palavra-passe em falta." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Pedido inválido, deve autenticar-se primeiro." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Acesso concedido." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Enviada mensagem de erro \"%s\" ao cliente." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Acesso não-autorizado de %s. Ligação fechada." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "Falha no comando de ficheiro de partes remoto: Chave não encontrada: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Chave não encontrada: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "UPS! Erro de processamento de código de operação!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Servidor não adicionado" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "servidor não encontrado: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "é necessário definir o servidor a remover" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2K desactivada nas preferências." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "A pesquisar. Resultados dentro de momentos!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Pesquisa na web a partir da interface remota não faz sentido." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Sem pontos para gráfico." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "O cliente não está configurado para este nível de detalhe." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Ligação Externa: finalização pedida" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Já a desligar." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "LigaçãoExterna: a adicionar o link '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Ligação inválida ou já na lista." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Ficheiro não encontrado." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Nome de ficheiro inválido." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Não é possível renomear o ficheiro." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "A Kad está desactivada nas preferências." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Já ligado à eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "A ligar à eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Já ligado à Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "A ligar à Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Todas as redes estão desactivadas." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Desligado da eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Desligado da Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Ligação Externa: recebido código de operação inválido: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Código de operação inválido (versão de protocolo errada?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Extensão '%s' desconhecida para o comando '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Comando '%s' desconhecido.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Este comando não pode ter um argumento.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Este comando deve ter um argumento.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Este comando está incompleto, deve usar uma das extensões abaixo.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Extensões disponíveis:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Comandos disponíveis:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Todos os comandos não consideram a capitalização das letras.\n" "Escreva '%s ' para obter mais detalhes sobre .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Sai do programa." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Mostrar ajuda." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Para obter ajuda num comando, escreva 'help '.\n" "Para obter a lista completa de comandos escreva 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Use '%s' para a lista de comandos\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Erro de sintaxe!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Erro ao processar o comando - nunca deveria acontecer! Por favor, comunique " "o erro\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Este comando não deveria ter quaisquer parâmetros." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Este comando deve ter um parâmetro." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Argumento inválido." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Este comando está incompleto." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Escreva '%s' para obter mais ajuda.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Isto é %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Isto é %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "A criar o cliente...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "OK, a sair %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Não é possível ligar com uma palavra-passe vazia.\n" "Deve especificar uma palavra-passe no ficheiro de configuração\n" "ou na linha de comandos, ou insira uma quando lhe for pedida.\n" "\n" "A sair...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Mostra esta ajuda." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Máquina onde o aMule está a ser executado. (predefinida: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Porto do aMule para Ligação Externa. (predefinido: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Palavra-passe de Ligação Externa." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Ler a configuração a partir do ficheiro." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Não mostrar qualquer mensagem para a saída padrão." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Detalhado - mostrar também mensagens de depuração." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Define a localização do programa (idioma)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "" "Escrever as opções da linha de comandos para o ficheiro de configuração." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" "Cria ficheiro de configuração baseado no ficheiro de configuração do aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Mostrar a versão do programa." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Detalhes do ficheiro" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% terminado" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "Erro ao abrir o ficheiro de lista de amigos 'emfriends.met' para leitura!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "Erro ao abrir o ficheiro de lista de amigos 'emfriends.met' para escrita!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "CRÍTICO - sem cliente no StartChatSession" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Amigos" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Mostrar &Detalhes" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Adicionar um amigo" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Remover Amigo" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Enviar &Mensagem" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Ver Ficheiros" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Estabelecer Ligação de Amigo" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Tem a certeza que deseja remover o amigo seleccionado?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Tem a certeza que deseja remover os amigos seleccionados?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Não lhe é permitido definir mais do que uma ligação de amigo.\n" " Apenas uma ligação foi atribuída." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Selecção múltipla" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Enviar uma mensagem ao utilizador" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Mensagem a enviar:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Tirar da lista dos amigos" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Enviar mensagem" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Mudar para este ficheiro" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "Na Fila: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "A pedir outro ficheiro" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "À espera de upload" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "Em Fila de Espera: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "A Enviar" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Nenhum" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Não" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Sim" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "A Receber..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "Download HTTP cancelado" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Não é possível criar o ficheiro de destino %s para o download!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "O URL para download não pode estar vazio" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "O URL %s devolveu: %i - Erro (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Erro crítico durante a escrita do ficheiro recebido" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "%d bytes transferidos" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Esperavam-se %d bytes, mas foram transferidos %d" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "URL inválido para download HTTP ou redirecção HTTP (esqueceu-se do " "'http://' ?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Impossível ligar ao servidor HTTP" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Resposta inválida do servidor HTTP" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Transferir novo GeoIP.dat a partir de %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Transferência do ficheiro GeoIP.dat falhou, a abortar actualização." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Falhou ao remover ficheiro %s, a cancelar actualização." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Falhou ao mudar o nome do ficheiro %s, a cancelar actualização." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "%s actualizado com sucesso" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Erro ao actualizar o GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Falhou a transferência do %s de %s" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "Falha ao carregar dados de país para '%s'." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "A carregar os filtros de IPs 'ipfilter.dat' e 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "Erro ao carregar o ficheiro ipfilter.dat '%s', formato desconhecido " "encontrado." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Erro ao carregar o ficheiro ipfilter.dat '%s', não foi possível abrir o " "ficheiro." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "%u intervalo IP carregado de '%s'." msgstr[1] "%u intervalos IP carregados de '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u linha defeituosa foi ignorada." msgstr[1] "%u linhas defeituosas foram ignoradas." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Falhou ao mudar o nome ao novo ficheiro %s, a cancelar actualização." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "O filtro de IPs está pronto" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Arrancar a partir de \n" "clientes conhecidos" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nós (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Endereço IP inválido para arranque" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Porto inválido para arranque" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Por favor, preencha todos os campos pedidos" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Tem a certeza que deseja transferir um novo ficheiro nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Ao fazê-lo, irá remover os seus nós actuais e reiniciar a ligação à Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Continuar?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: palavra-chave de pesquisa demasiado curta" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Palavra-chave para pesquisa: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: A palavra-chave de pesquisa já está na lista de pesquisa: " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "Falha ao ler o ficheiro nodes.dat - demasiado antigo. Esta versão (0) já não " "é suportada." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Lido %u contacto Kad" msgstr[1] "Lidos %u contactos Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "Não foram encontrados contactos. Por favor inicialize ou transfira um " "ficheiro nodes.dat." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Apenas %d contacto Kad disponível, nodes.dat não escrito" msgstr[1] "Apenas %d contactos Kad disponíveis, nodes.dat não escrito" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Escrito %d contacto Kad" msgstr[1] "Escritos %d contactos Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Nome de ficheiro" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Tamanho do Ficheiro" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Razão de partilha" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Enviado" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Pedido" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Aceite" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Fontes completas" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "AVISO: Lista de ficheiros conhecidos corrompida, contém cabeçalho inválido." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Falhou ao carregar entrada na lista de ficheiros conhecidos, o ficheiro pode " "estar corrompido" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Entrada inválida na lista de ficheiros conhecidos, o ficheiro pode estar " "corrompido" #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Erro desconhecido %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "Impossível obter descrição para o erro %d" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "A gerar chave" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "A completar" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Completo" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Em Pausa" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Erróneo" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Em Espera" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Deve especificar uma palavra-passe não vazia." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Palavra-passe inválida, não é uma chave MD5!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Falha de ligação" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "Ligação LE falhou. Resposta vazia." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Ligação Externa: Má resposta, negociação inicial falhou. Ligação fechada." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Sucesso! Ligação estabelecida com o aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Sucesso! Ligação estabelecida." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Ligação Externa: Acesso negado porque: " #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Ligação Externa: Negociação inicial falhou." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Actualização automática iniciada" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket: Ok." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "ERRO: Não é possível escutar o porto TCP." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "ERRO: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "AVISO: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Fechar" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Cortar" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Copiar" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Colar" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Limpar" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Seleccionar tudo" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Ilimitado" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Menu de Área de Notificação do aMule" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Limites de velocidade:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "UL: Nenhum" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "UL: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DL: Nenhum" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DL: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Velocidade de Download: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Velocidade de Upload: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Informação do cliente" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Alcunha: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Nenhuma Alcunha seleccionada!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID do cliente: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Não ligado" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Nome do servidor: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP do servidor: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Não Ligado" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "Porto TCP: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Porto TCP: Não preparado" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "Porto UDP: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "Porto UDP: Não preparado" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Assinatura Online: Activada" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Assinatura Online: Desactivada" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Tempo de funcionamento: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Ficheiros partilhados: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Clientes em espera: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Total DL: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Total UL: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Limite de Upload" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Limite de Download" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Esconder" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Mostrar" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Sair" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "Ligação eD2k: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Adicionar" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Clique aqui para adicionar a ligação eD2k (na caixa de texto) à sua lista de " "downloads." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Os eventos são mostrados aqui. Para uma lista completa de eventos, consulte " "o relatório no separador Servidores." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "A carregar..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Número de utilizadores ligados a este servidor..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Utilizadores: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Utilizadores ligados ao servidor actual e um estimativa do número total de " "utilizadores." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Up: 0.0 | Down: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Médias de entrada e saída actuais. Se activado, os números entre parêntesis " "representam a sobrecarga da comunicação do cliente." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Mostra o estado da ligação e as transferências activas. Setas vermelhas " "significam que actualmente não está ligado, setas amarelas significam que " "tem LowID (atrás de firewall) e setas verdes significam que tem HighID (o " "tipo de ligação óptimo)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Desligado..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Servidor a que está ligado." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Pesquisar" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Nome:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tipo" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Local" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Global" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Chave de Ficheiro" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Parâmetros estendidos" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtragem" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Tipo de Ficheiro" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Qualquer" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Arquivos" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Áudio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Imagens de CDs" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Fotografias" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programas" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Textos" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Vídeos" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Extensão" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Tamanho Mínimo" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "kB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Tamanho Máximo" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Disponibilidade" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filtro:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filtrar Resultados" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Inverter Resultados" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Esconder Ficheiros Conhecidos" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Iniciar" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Mais" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Pesquisa mais resultados na eD2k. Ainda não funciona para a Kad." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Parar" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Download" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Limpar campos" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Resultados" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Limpa os downloads concluídos" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Fontes de ficheiros:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Geral" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Nome completo :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/D" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "Ficheiro de servidores conhecidos :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Chave :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Tamanho do ficheiro :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Estado do ficheiro de partes :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Última vez visto completo :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Transferência" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Fontes encontradas :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Fontes em transferência :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Contagem de partes :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Disponíveis :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Taxa de transferência :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Tempo de Download Activo: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Transferido :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Tamanho Completo :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Manipulação Inteligente de Corrupção (M.I.C.)" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Perdido por corrupção :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Ganho por compressão :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Pacotes recuperados por M.I.C. :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Nomes de ficheiros" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Assumir" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Limpar" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Aplicar" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Comentar/Avaliar ficheiro (Texto será visível a todos os utilizadores)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Para um filme pode dizer a sua duração, enredo, idioma ...\\n\\ne se for um " "ficheiro falso, pode transmiti-lo aos outros utilizadores." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Qualidade do Ficheiro" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Não avaliado" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Inválido / Corrompido / Falso" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Mau" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Razoável" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Bom" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Excelente" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Escolha a classificação ou avise os utilizadores se o ficheiro for " "inválido..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Actualizar" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "A transferir, por favor aguarde ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Tamanho desconhecido" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Informação Necessária" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Endereço IP :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Porto :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Informações adicionais" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Utilizador :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Chave de utilizador :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Adicionar" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Velocidade de Download" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Actual" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Média actual" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Média da sessão" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Velocidade de Upload" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Ligações" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Downloads activos" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Ligações activas (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Uploads activos" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Árvore de Estatísticas" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Utilizador:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Chave de utilizador:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Programa cliente:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Versão do cliente:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Endereço IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID do utilizador:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP do servidor:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Nome do servidor:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Ofuscação:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "A transferir" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Pedidos actuais:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Taxa média de upload:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Taxa média de download:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Enviado (sessão):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Recebido (sessão) :" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Enviado (total):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Recebido (total):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Pontuações" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Modificador DL/UL:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Identificação segura:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Pontuação na fila de espera:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Pontuação na fila de espera:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Alcunha" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - a Mula multi-plataforma" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "Este é o nome que os outros utilizadores verão ao ligar-se a si." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Idioma: " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "O tempo que decorre até serem mostradas as dicas." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Especifica o idioma usado nos controlos." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Verificar nova versão no arranque" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "Ao activar, fará o aMule procurar por uma nova versão no arranque" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Iniciar minimizado" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Quando activado, o aMule minimiza automaticamente no arranque." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Confirmar fecho do programa" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Faz com que o aMule peça uma confirmação ao sair." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Activar o ícone da área de notificação" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Activa/desactiva o ícone da área de notificação (ou barra de tarefas)." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimizar para a área de notificação" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Se activar isto o aMule vai minimizar para a área de notificação em vez de " "para a barra de tarefas." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Atraso de exibição de dicas: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "segundos" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Selecção de Navegador" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Indique aqui o nome do seu browser. Deixe este campo em branco para utilizar " "o browser por omissão do sistema." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Procurar" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Abrir num novo separador se possível" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Abrir a página num novo separador em vez de uma nova janela, quando possível" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Leitor de vídeo" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Limites de largura de banda" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Upload" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Atribuição de Ligações" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Portos" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Porto TCP Padrão " #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Este é o porto da eD2k por omissão e não pode ser desactivado." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Porto UDP para pedidos ao servidor (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Porto UDP estendido (Kad / pesquisa global) " #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "Este porto UDP é usado para pedidos eD2k estendidos e para a rede Kad" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Activar UPnP para encaminhamento de portos no router" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "Porto TCP UPnP (Opcional):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Associar endereço local ao IP (em branco para qualquer um):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Apenas para utilizadores avançados: Se possui múltiplos interfaces de rede " "indique o endereço do interface que o aMule deve usar." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Máximo de fontes por ficheiro:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Máximo de ligações simultâneas:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Ligar automaticamente no arranque" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Voltar a ligar se perder ligação" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Remover servidores inactivos após" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "tentativas" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Auto-actualizar lista de servidores no arranque" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Lista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Actualizar a lista de servidores quando se liga a um servidor" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Actualizar a lista de servidores quando um cliente se liga" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Usar o sistema de prioridades" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Usar verificação inteligente de LowID ao ligar" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Ligação segura" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Apenas ligar automaticamente a servidores estáticos" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Atribuir alta prioridade a servidores adicionados manualmente" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Manipulação Inteligente de Corrupção (M.I.C.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Activar" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "M.I.C. Avançada confia em todas as chaves (não recomendado)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Adicionar ficheiros para transferir em modo de pausa" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Adicionar ficheiros para transferir com prioridade automática" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Tentar receber primeiro o início e o final dos ficheiros" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Iniciar o próximo ficheiro em pausa quando um ficheiro completa" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Da mesma categoria" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "Em ordem alfabética" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Reservar previamente espaço em disco para novos ficheiros" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Para novos ficheiros, reserva o espaço em disco para o ficheiro completo, " "reduzindo assim a fragmentação" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Parar os downloads quando o espaço livre em disco atinge " #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Seleccione se quiser que o aMule verifique o espaço em disco" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Insira o espaço mínimo no disco desejado." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Guardar 10 fontes para ficheiros raros (< 20 fontes)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Uploads" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Adicionar novos ficheiros partilhados com prioridade automática" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Pasta de destino para downloads" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Pasta para ficheiros temporários" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Pastas partilhadas" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" "(Clique com o botão do lado direito no ícone da pasta para partilha " "recursiva)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Partilhar ficheiros ocultos" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Gráficos" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Atraso de actualização: 5 segundos" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Tempo para gráfico de média: 100 minutos" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Escala do Gráfico de Ligações: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Escala do gráfico de download:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Escala do gráfico de upload" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Cores: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Fundo" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Grelha" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Download actual" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Média actual de download" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Média de download da sessão" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Upload actual" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Média actual de upload" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Média de upload da sessão" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Ligações activas" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Barra de velocidade no ícone da área de notificação" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Nós Kad actuais" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Nós Kad a executar" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Nós Kad da sessão" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Seleccionar" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Árvore" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Número de Versões de Cliente mostradas (0=ilimitado)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! AVISO !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Máximo de novas ligações / 5 segundos" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Tamanho da memória temporária de ficheiro: 240000 Byte" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Tamanho da Lista de Espera de Upload: 5000 clientes" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Intervalo de actualização da ligação ao servidor: Desactivado" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Desactivar o modo de espera temporizado do computador" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Tema a utilizar: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Mostrar a barra de adição rápida de ligações eD2k em todas as janelas." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Mostrar informação extra nos separadores de categorias" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Mostrar velocidades de transferência na barra de título" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Mostrar velocidades de transferência na barra de título" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Antes do nome da aplicação" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Depois do nome da aplicação" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Mostrar sobrecarga na largura de banda" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Orientação vertical da barra de ferramentas" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Mostrar bandeiras de países para clientes" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Ficheiros na Fila de Espera dos Downloads" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Mostrar percentagem de progresso" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Mostrar barra de progresso" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Plana" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Arredondada" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Ordenar ficheiros automaticamente (pode consumir muito CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" "O aMule ordenará as colunas na sua lista de transferências automaticamente" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parâmetros de Ligação Externa" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Aceitar ligações externas" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP da interface a escutar:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Insira um endereço IP válido no formato a.b.c.d para a interface que irá " "aguardar as LE. Um campo vazio ou 0.0.0.0 significará qualquer interface." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "Porto TCP:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Activar UPnP para configuração do encaminhamento no porto das LE" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Palavra-passe" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Parâmetros do servidor web" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Executar o servidor web no arranque" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Aspecto da página web" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Palavra-passe para controlo total" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Activar utilizador com permissões reduzidas" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Palavra-passe para controlo reduzido" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Activar UPnP para encaminhamento do porto do servidor web" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Porto TCP UPnP do servidor web (Opcional)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Taxa de Actualização de Páginas (em segundos)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Activar compressão Gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Clique aqui para aplicar as alterações efectuadas nas preferências." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Anular as alterações efectuadas nas preferências." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Título :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Comentário :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Pasta de completos :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Trocar prioridade nos novos ficheiros :" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Não mudar" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Seleccionar a cor para a categoria seleccionada :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Limpar" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Clique para limpar o relatório." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" "Clique neste botão para actualizar a lista de servidores a partir do " "endereço ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Lista de Servidores" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Insira a localização de um ficheiro server.met e pressione o botão à " "esquerda para actualizar a lista de servidores conhecidos." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Adicionar servidor manualmente: Nome" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Insira o nome do novo servidor" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Porto" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Insira o IP do servidor, usando o formato x.x.x.x." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Insira o porto do servidor." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Adicionar manualmente um servidor (preencher os campos ao lado) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Relatório" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Informações do Servidor" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Informação ED2K" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Informação Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Clique para actualizar a lista de nós a partir do endereço ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nós (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Insira o endereço de um ficheiro nodes.dat e pressione o botão à esquerda " "para actualizar a lista de nós conhecidos." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Estado dos nós" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Inicialização" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Novo nó" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Porto:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Arrancar a partir de clientes conhecidos" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Desligar Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Utilizar Identificação Segura de Utilizador" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "É recomendado activar esta opção. Não receberá créditos se a Identificação " "Segura de Utilizador não estiver activada." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Ofuscação do Protocolo" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Suportar a Ofuscação do Protocolo" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Esta opção activa a Ofuscação do Protocolo e faz com que o aMule aceite " "ligações ofuscadas de outros clientes." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Usar ofuscação em ligações para o exterior" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Esta opção faz com que o aMule use a Ofuscação do Protocolo quando ligado a " "outros clientes/servidores." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Aceitar apenas ligações ofuscadas" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Esta opção faz com que o aMUle aceite apenas ligações ofuscadas. Terá menos " "fontes, mas todo o tráfego será ofuscado" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Todos" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Ninguém" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Quem pode ver os meus ficheiros partilhados:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Seleccione quem pode pedir a lista dos seus ficheiros partilhados." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Filtragem de IP" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtrar clientes" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Activar filtragem por IPs dos clientes definidos no ficheiro ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtrar servidores" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Activar filtragem da lista de IPs definida no ficheiro ~/.aMule/ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Recarregar a lista" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "Recarregar a lista de IPs a filtrar a partir do ficheiro ~/.aMule/ipfilter." "dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Actualizar agora" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Actualizar o filtro de IPs automaticamente no arranque" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Nível de filtragem:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Filtrar sempre endereços IP de rede local" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Tratamento paranóico de IPs sem correspondência" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Rejeitar pacotes se o IP do cliente é diferente do IP de onde o pacote é " "recebido. Usar com cautela." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Utilizar ipfilter.dat global do sistema se disponível" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Se não existir um ficheiro ipfilter.dat, permitir a utilização de um " "ficheiro ipfilter global do sistema." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Activar Assinatura Online" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Activa a escrita do ficheiro da AO, o qual pode ser usado por aplicações " "externas para criar assinaturas e afins." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Frequência de Actualização (segundos):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" "Alterar a frequência (em segundos) das actualizações da assinatura Online." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Gravar a assinatura Online em: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Clique para seleccionar a pasta que contém os ficheiros de Assinatura Online" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtrar mensagens recebidas (excepto da conversa corrente):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtrar todas as mensagens" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtrar mensagens de utilizadores que não pertençam à lista de amigos" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtrar mensagens de clientes desconhecidos" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtrar mensagens que contenham (usar ',' como separador):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "adicione as palavras que o aMule deve filtrar e bloquear as mensagens que as " "contenham" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Mostrar mensagens recebidas no relatório" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Comentários" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtrar comentários que contenham (usar ',' como separador):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Ligação ao servidor automática sem proxy" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Activar autenticação" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Activar/desactivar autenticação utilizador/palavra-passe" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Utilizador: " #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "O nome de utilizador para ligar ao proxy" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Palavra-passe:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "A palavra-passe a usar para ligar ao proxy" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Activar Proxy" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Activar/desactivar o suporte de proxy" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Tipo de proxy:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Servidor:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "O nome da máquina proxy" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Porto do proxy:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "O porto do proxy" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Ligar a:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Autenticação remota" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Nome de utilizador" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Lembrar estas preferências" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Activar Relatório detalhado para Depuração." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Abrir o ficheiro" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Categorias de Mensagens:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "A aguardar..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Adicionar importações" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Reassumir seleccionados" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Remover seleccionados" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Tipos de eventos" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Estatísticas e clientes em espera para o(s) ficheiro(s) seleccionado(s) : " "Sessão / Desde sempre" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Uploads Activos" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Percentagem dos ficheiros totais" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Todos os ficheiros" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Ficheiros seleccionados" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Apenas os uploads activos" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Mostrar Clientes para" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Recarregar:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Recarregar os seus ficheiros partilhados" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Enviar" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Envia a mensagem especificada." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Fechar esta conversa." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Ligar a qualquer servidor e/ou Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Ficheiros Partilhados" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Desactivado [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/seg" msgstr[1] "bytes/seg" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "segundos" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "minutos" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "horas" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Dias" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "todos" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "todos os outros" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Incompleto" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Parado" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Vídeo" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Arquivo" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Texto" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Activo" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "A utilizar pasta de configuração: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "À espera que o programa de conversão do ficheiro de partes termine..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "A importar %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "A ler pasta de temporários" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "A obter informação básica do ficheiro de informação de download" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "A criar ficheiro de destino" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "A carregar dados a partir do ficheiro de download antigo (%u de %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "A gravar bloco de dados no novo ficheiro único (%u de %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "A obter informação de ficheiro de fontes" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "A adicionar download e a gravar novo ficheiro de partes" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importar ficheiros de partes" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Estado" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Chave de ficheiro" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Disco: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Por favor escolha uma pasta para localizar downloads incompletos! (subpastas " "serão incluídas)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Deseja que os ficheiros de origem dos downloads importados com sucesso sejam " "removidos?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Remover fontes?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "ERRO: falha na criação do ficheiro de partes" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "A tentar carregar a cópia de segurança do ficheiro met de %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "ERRO: Falha ao abrir o ficheiro part.met: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "ERRO: O ficheiro part.met está vazio: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "ERRO: Versão inválida no ficheiro part.met: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Erro: %s (%s) está corrompido (elementos incorrectos: %s), não é possível " "carregar o ficheiro." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "ERRO: %s (%s) está corrompido (contagem de elementos errada), não é possível " "carregar o ficheiro." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "A tentar recuperar a informação do ficheiro..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "A recuperar ficheiro sem nome - tentar-se-á recuperá-lo como 'RecoveredFile." "dat'" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Recuperada toda a informação disponível do ficheiro :D - A tentar usá-la..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Não é possível recuperar a informação do ficheiro :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Falha ao abrir %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "AVISO: %s parece estar corrompido (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "ERRO ao gravar ficheiro parcial: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "Falha ao gravar ficheiro parcial: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Não foi possível obter o tamanho de '%s' - a usar o ficheiro %s." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' está vazio - a usar o ficheiro %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Erro ao gravar o ficheiro 'part.met.seeds' para %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Gravada %i semente de fontes para o ficheiro de partes: %s (%s)" msgstr[1] "Gravadas %i sementes de fontes para o ficheiro de partes: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Gravada %i semente de fontes para o ficheiro de partes: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Erro ao ler o ficheiro de sementes de ficheiro de partes (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Encontrada parte corrompida (%d) no ficheiro de %d parte %s - FileResultHash " "|%s| FileHash |%s|" msgstr[1] "" "Encontrada parte corrompida (%d) no ficheiro de %d partes %s - " "FileResultHash |%s| FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Encontrada parte completa (%i) em %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Terminado a regeneração da chave de %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Erro inesperado ao completar %s. ficheiro em pausa" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Transferência concluída: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "A eliminar o ficheiro: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "AVISO: Não é possível calcular a chave de uma parte recebida - conjunto de " "chaves incompleto para '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "ERRO: Impossível calcular a chave de uma parte recebida - conjunto de chaves " "incompleto (%s). Isto nunca deveria acontecer" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "EOF ao gerar a chave da parte transferida %u de comprimento %u (máximo %u) " "do ficheiro de partes '%s' com comprimento %u: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "AVISO: Espaço livre em disco insuficiente! A pausar o ficheiro: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Parte recebida %i está corrompida no ficheiro: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Recuperada parte corrompida %i para %s -> bytes guardados: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "A atribuir" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Espaço em disco insuficiente" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Transferido" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "ERRO: Falhou ao abrir ficheiro de partes '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Predefinição do sistema" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albanês" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Árabe" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturiano" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Basco" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Búlgaro" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Catalão" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Chinês (Simplificado)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Chinês (Tradicional)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Croata" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Checo" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Dinamarquês" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Holandês" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Inglês" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estoniano" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finlandês" #: src/Preferences.cpp:648 msgid "French" msgstr "Francês" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galego" #: src/Preferences.cpp:650 msgid "German" msgstr "Alemão" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Grego" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebreu" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Húngaro" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italiano" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italiano (Suíço)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japonês" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Coreano" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lituano" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norueguês (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polaco" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Português" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Português (Brasil)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Romeno" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Russo" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Esloveno" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Espanhol" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Sueco" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turco" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ucraniano" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Alterar Idioma" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Indisponível" #: src/Preferences.cpp:906 msgid "no options available" msgstr "sem opções disponíveis" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Categoria inválida encontrada, a ignorar" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "O porto TCP não pode ser superior a 65532 porque o socket UDP do servidor " "tem de ser TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "O porto predefinido será usado (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "A ignorar pasta partilhada inexistente: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Ligação" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Directórios" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Servidores" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Ficheiros" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Segurança" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Interface" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filtros" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Controlos remotos" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Assinatura Online" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Avançado" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Eventos" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Depuração" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "As seguintes variáveis serão substituídas:\n" " %PARTFILE - caminho completo do ficheiro\n" " %PARTNAME - apenas o nome do ficheiro" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "A menos que saiba o que está a fazer, não\n" "altere estas preferências. Caso contrário, \n" "pode facilmente piorar a sua situação.\n" "\n" "O aMule correrá perfeitamente sem ajustar qualquer\n" "uma destas opções." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Falhou ao ligar Cfg ao widget com o ID %d e chave %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "Falhou ao transferir dados do Cfg para o Widget com o ID %d e chave %s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "O tipo de proxy ao qual está a ligar-se" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "Falhou ao transferir dados do Widget para o Cfg com o ID %d e chave %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "O aMule tem de ser reiniciado para activar estas alterações:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- Porto TCP alterado.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- Porto UDP alterado.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Porta para ligações externas alterada.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Alterada a aceitação de ligações externas.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Alterada interface para ligações externas.\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Ofuscação do Protocolo" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "A sua lista de actualização automática de servidores está vazia.\n" "A 'actualização automática no arranque' será desactivada." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Activou as ligações externas mas não especificou uma palavra-passe.\n" "As ligações externas não podem ser activadas a menos que seja especificada " "uma palavra-passe válida." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- O idioma foi alterado.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- A pasta Temp foi alterada.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- Rede ED2K activada.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "As redes eD2K e Kad estão desactivados.\n" "Não vai conseguir uma ligação até activar pelo menos uma deles." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "A Kad não vai funcionar se o porto UDP estiver desactivado.\n" "Active o porto UDP ou desactive a Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "DEVE reiniciar o aMule agora.\n" "Se não o fizer, não se queixe se algo grave acontecer.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "A sua lista de actualização automática de servidores está vazia.\n" "Por favor, indique pelo menos uma localização que aponte para um ficheiro " "server.met válido.\n" "Clique no botão \"Lista\" para inserir uma localização." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Ficheiros temporários" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Ficheiros recebidos" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Assinaturas Online" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Seleccione uma pasta para %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Procurar leitor de vídeo" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Seleccionar navegador" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Executável%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Editar a lista de servidores" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Adicione localizações para obter ficheiros server.met\n" "Apenas uma localização por linha." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Intervalo de actualização: %d segundo" msgstr[1] "Intervalo de actualização: %d segundos" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Tempo para o gráfico de média: %d minuto" msgstr[1] "Tempo para o gráfico de média: %d minutos" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Escala do Gráfico de Ligações: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Tamanho de memória temporária de ficheiros: %d byte" msgstr[1] "Tamanho de memória temporária de ficheiros: %d bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Tamanho da fila de espera de upload: %d cliente" msgstr[1] "Tamanho da fila de espera de upload: %d clientes" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Intervalo de actualização de ligação ao servidor: %d minuto" msgstr[1] "Intervalo de actualização de ligação ao servidor: %d minutos" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Intervalo de actualização de ligação ao servidor: Desactivado" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "desactivado" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Executar o comando quando ocorrer o evento '%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Activar execução de comandos no núcleo" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Comando de núcleo:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Activar execução de comando na interface gráfica" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Comando da interface gráfica:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "As seguintes variáveis serão substituídas:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "O Tamanho mínimo tem de ser menor que o tamanho máximo. Tamanho máximo " "ignorado." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Aviso de pesquisa" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Principal" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Não é possível pesquisar na Kad se não estiver ligado à rede Kad" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "Não é possível pesquisar na eD2k se não estiver ligado à rede eD2k" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Erro inesperado enquanto tentava pesquisar na Kad: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ID do Ficheiro" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Ficheiro" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Transferir para a categoria" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "Obter %s para este ficheiro" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Procurar ficheiros relacionados (eD2k, servidor local)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Marcar como ficheiro conhecido" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Copiar ligação eD2k para a área de transferência" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Cancelado" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Novo" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Ligação a servidores ofuscados falhou. A tentar de novo, sem ofuscação." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Falha ao ligar a todos os servidores listados. A tentar novamente." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Rede eD2K desactivada nas preferências, a ligação não vai ser feita." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "Não há servidores válidos para ligar na lista de servidores" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Ligado a %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Ligação estabelecida a: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Erro Fatal durante tentativa de ligação. A ligação à Internet pode ter caído" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Perdida a ligação a %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) parece estar morto." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) parece estar cheio." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Ligação automática ao servidor irá repetir-se em %d segundo" msgstr[1] "Ligação automática ao servidor irá repetir-se em %d segundos" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Ligação perdida" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "A Ligação a %s (%s:%i) falhou." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "ERRO: Socket inválido durante a verificação" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "A tentativa de ligação a %s (%s:%i) expirou." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Recebido resultado tardio para pedido DNS, a descartar." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "A carregar o ficheiro server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Ficheiro server.met não encontrado!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Falha ao carregar o ficheiro server.met '%s', formato desconhecido " "encontrado." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Falha ao abrir server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Ficheiro server.met corrompido, versão inválida encontrada: 0x%x, tamanho %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "Foi encontrado %i servidor no server.met" msgstr[1] "Foram encontrados %i servidores no server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d servidor adicionado" msgstr[1] "%d servidores adicionados" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Erro: o ficheiro 'server.met' está corrompido: " #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "Erro de entrada/saída ao ler o ficheiro 'known.met': " #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Servidor não adicionado: [%s:%d] não especifica um porto válido." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Servidor não adicionado: O IP de [%s:%d] está filtrado ou é inválido." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Servidor não adicionado: Servidor com IP:Porto correspondente [%s:%d] " "encontrado na lista." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Servidor adicionado: Servidor em [%s:%d] a usar o nome '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Está ligado ao servidor que está a tentar remover. Por favor, desligue-se " "primeiro." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Erro ao abrir '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Falha ao gravar server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "URL inválido" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Terminou a transferência da lista de servidores de %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Não foi encontrada nenhuma lista de servidores no 'addresses.dat'. Por favor " "indique um endereço correcto neste ficheiro para a auto-actualização da " "lista de servidores" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Iniciar transferência de lista de servidores de %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "AVISO: URL especificado inválido para a actualização automática de " "servidores: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "Não há nenhuma localização válida para download automático do server.met em " "addresses.dat" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Erro ao obter a lista de servidores a partir de %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Servidor local filtrado pelo Filtro de IPs, a ligar a um servidor diferente!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Nome do Servidor" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Endereço" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Porto" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Descrição" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Utilizadores" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Estático" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versão" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Encontra-se ligado a um servidor que está a tentar remover. Por favor, " "desligue-se primeiro. O servidor NÃO foi removido." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Nome desconhecido)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Tem a certeza que deseja eliminar o servidor estático %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Servidores (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Servidor" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Ligar ao servidor" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Marcar o servidor como estático" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Marcar o servidor como não estático" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Marcar os servidores como estáticos" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Marcar os servidores como não estáticos" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Remover o servidor" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Remover os servidores" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Remover todos os servidores" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Copiar ligações eD2k para a área de transferência" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Voltar a ligar ao servidor" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Tem a certeza que deseja eliminar todos os servidores?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Tem a certeza que deseja eliminar o servidor seleccionado?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Tem a certeza que deseja eliminar os servidores seleccionados?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "ERRO: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "AVISO: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "O novo identificador de cliente é %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "AVISO: Recebeu LowID!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" "\tMuito provavelmente, isto deve-se ao facto de estar por detrás de uma " "firewall ou router." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPara mais informação, por favor consulte http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Recebida informação do servidor desconhecida! - demasiado curta" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Recebido %d novo servidor" msgstr[1] "Recebidos %d novos servidores" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Gravação da lista de servidores completa." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "O servidor rejeitou o último comando" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Pacote mal formado recebido do servidor: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Erro não tratado ao processar pacote do servidor: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" "Não é possível criar o processo leve de resolução de nomes para ligar a %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "O endereço IP do servidor %s (%s) está filtrado. Não irá ligar." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "a utilizar ofuscação do protocolo." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "A ligar a %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Não é possível resolver o nome do servidor %s: Incapaz de ligar!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Servidor não adicionado: IP ou nome de máquina não especificado." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Servidor não adicionado: Porto de servidor especificado inválido." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Estado da eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Estado da Kademlia:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "A correr no modo LAN" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "A Executar" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Estado:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Estado da Ligação:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Atrás de firewall - abra o porto TCP %d no seu router ou firewall" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "Estado da Ligação UDP:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Atrás de firewall - abra o porto UDP %d no seu router ou firewall" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Estado da firewall: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Não é necessário um parceiro - porto TCP aberto" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Não é necessário um parceiro - porto UDP aberto" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Sem parceiro" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "A ligar a um parceiro" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Ligado a parceiro em %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Fontes indexadas:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Palavras-chave indexadas:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Notas indexadas:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Carga indexada:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Média de Utilizadores:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Média de Ficheiros:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Parado" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "A adicionar ficheiro %s à partilha" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Encontrado %i ficheiro partilhado conhecido" msgstr[1] "Encontrados %i ficheiros partilhados conhecidos" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Encontrado %i ficheiro partilhado conhecido, %i desconhecido" msgstr[1] "Encontrados %i ficheiros partilhados conhecidos, %i desconhecidos" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "ERRO: Tentado partilhar %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Pasta partilhada não encontrada, a ignorar: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Não foram encontrados ficheiros partilhados no directório: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Nome de Utilizador" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Velocidade de Download" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Velocidade de Upload" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Partes Disponíveis" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "Estado do Upload" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Estado do Download" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Origem" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Nome do Ficheiro Local" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "Partilha a Lista de Ficheiros" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Pedidos" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Pedidos Aceites" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Dados Transferidos" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Grau de Partilha" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Partes Obtidas" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Fontes Completas" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Caminho da Pasta" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Adicionar Comentário/Avaliação" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Editar Comentário/Avaliação" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Renomear" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Adicionar ficheiros na colecção à lista de transferências" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Copiar &URI magnet para a área de transferência" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Copiar ligação eD2k para a área de transferência (&Fonte)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" "Copiar ligação eD2k para a área de transferência (Fonte) (Com opções C&rypt)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Copiar ligação eD2k para a área de transferência (&Hostname)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Copiar ligação eD2k para a área de transferência (Hostname) (Com opções " "Cr&ypt)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Copiar ligação eD2k para a área de transferência (informação &AICH)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Copiar ligação eD2k para a área de transferência (informação &AICH)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Necessita de HighID para criar uma ligação de fonte válida" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Ficheiros Partilhados (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[FicheiroPart]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Nome do Ficheiro Remoto" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Dados Enviados (Sessão (Total)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Sobrecarga Total (Pacotes): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Sobrecarga de Pedidos de Ficheiro (Pacotes): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Sobrecarga de Trocas de Fontes (Pacotes): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Sobrecarga do Servidor (Pacotes): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Sobrecarga na Kad (Pacotes): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Sobrecarga criptográfica (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Uploads Activos: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Uploads Em Espera: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Total de sessões de upload com sucesso: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Total de sessões de upload falhadas: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Tempo médio de envio: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Dados recebidos (Sessão (Total)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Fontes Encontradas: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Downloads activos (blocos): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Razão UL:DL da sessão (Total): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Taxa média de download (Sessão): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Taxa média de upload (Sessão): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Taxa máxima de download (Sessão): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Taxa máxima de upload (Sessão): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Religações: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Tempo Desde a Primeira Transferência: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Ligado Ao Servidor Desde: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Ligações Activas (estimativa): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Limite Máximo de Ligações Alcançado: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Média de Ligações (estimativa): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Pico de Ligações (estimativa): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Clientes" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Desconhecido: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Filtrados: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Banidos: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Total: %i Conhecidos: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Servidores Activos: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Servidores Falhados: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Total: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Servidores Removidos: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Servidores Filtrados: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Utilizadores em Servidores Activos: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Ficheiros em Servidores Activos: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Total de Utilizadores: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Total de Ficheiros: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Ocupação dos Servidores: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Número de Ficheiros Partilhados: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Tamanho total dos Ficheiros Partilhados: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Tamanho médio dos ficheiros: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Sistema Operativo" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Não recebido" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Ligações activas (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Indisponível" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Nunca" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Comando '%s' com pid '%d' terminou com o código '%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Executar e sair." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Formato de IP inválido. Use xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Este comando requer um argumento. Argumentos válidos: 'all', nome de " "ficheiro, ou um número.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "A processar por chave: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "A processar por ficheiro: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Este comando requer um argumento. Argumentos válidos: uma chave de " "ficheiro.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Número inválido\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Não é uma chave válida (o comprimento deveria ser de 32 caracteres)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Escreva '%s' para obter mais ajuda.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "A transferir %s" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "O pedido falhou com um erro desconhecido." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operação com sucesso." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Falha no pedido com o seguinte erro: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Filtro de IP para clientes está %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "Desactivado" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "Activado" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Filtro para servidores está %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "O nível actual do filtro de IPs é %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Limites de banda: Up: %u kB/s, Down: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Ligado a %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "A ligar" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "atrás de uma firewall" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Download:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Upload:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Clientes em espera:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Total de fontes:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Número de resultados: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Progresso da pesquisa: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Progresso da pesquisa indisponível" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Recebida resposta desconhecida do servidor, instrução %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Mostrar informação curta de estado." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Mostrar estado da ligação, velocidade de transferência actual, etc.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Mostrar a árvore de estatísticas completa." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Opcionalmente, um número no intervalo 0-255 pode ser passado como parâmetro " "a este\n" "comando, que diz quantas entradas das sub-árvores de versão do cliente devem " "ser\n" "exibidas. Passar 0 ou omitir significa 'ilimitado'.\n" "\n" "Exemplo: 'statistics 5' exibirá apenas as 5 versões de topo para cada tipo " "de cliente.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Terminar o aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Desligar o núcleo remoto em execução (amule/amuled).\n" "O cliente de texto também será desligado, uma vez que é inútil sem um\n" "núcleo em execução.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Recarrega o objecto." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Recarrega a lista de ficheiros partilhados." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Recarrega a tabela de filtros de IP a partir do ficheiro." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Recarrega a tabela de filtros de IPs actual." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Actualiza a tabela de filtros de IPs a partir do URL." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Se o URL for omitido, será utilizado o URL nas preferências." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Religar à rede." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Isto irá ligar a todas as redes activadas nas Preferências.\n" "Pode também especificar opcionalmente um endereço de servidor na forma IP:" "Porto, para\n" "ligar apenas a esse servidor. O endereço IP deve ser na forma IPv4 ou um\n" "nome resolúvel por DNS." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Ligar apenas à eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Ligar apenas à Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Desligar da rede." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Isto desligará de todas as redes actualmente ligadas.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Desligar apenas da eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Desligar apenas da Kad." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Adiciona uma ligação eD2k ou ligação magnet ao núcleo." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "A ligação eD2k a ser adicionada pode ser:\n" "*) uma ligação de ficheiro (ed2k://|file|...), será adicionado à lista dos \n" "ficheiros a serem transferidos,\n" "*) uma ligação de servidor (ed2k://|server|...), será adicionado à lista \n" "dos servidores,\n" "*) ou uma ligação para uma lista de servidores, todos dos quais \n" "serão adicionados à lista dos servidores \n" "A ligação magnet tem de conter a chave eD2k e o tamanho do ficheiro.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Definir um valor de preferência." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Definir preferências do filtro de IPs." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Activar o filtro de IPs para servidores e clientes." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Desactivar o filtro de IPs para clientes e servidores." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Activar/Desactivar filtro de IPs para clientes." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Activar filtro de IPs para clientes." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Desactivar filtro de IPs para clientes." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Activar/Desactivar filtro de IPs para servidores." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Activar filtro de IPs para servidores." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Desactivar filtro de IPs para servidores." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Seleccionar nível de filtragem de IPs." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Níveis de filtragem válidos pertencem ao intervalo 0-255 e\n" "o valor padrão (inicial) é 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Definir limites de largura de banda." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "O valor dado nestes comandos deve ser em kilobytes/s.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Definir limite de largura de banda de upload." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "O valor dado nestes comandos deve ser em kilobytes/s.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Definir limite de largura de banda de download." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Obter e exibir um valor de preferência." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Obter preferências do filtro de IPs." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Obter estado do filtro de IPs para clientes e servidores." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Obter estado do filtro de IPs para clientes." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Obter estado do filtro de IPs para servidores." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Obter nível de filtragem de IPs." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Obter limites de largura de banda." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Faz uma pesquisa." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "O tipo de pesquisa tem de ser definido com um tipo:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Exemplo: 'search kad file' fará uma pesquisa por \"file\" \n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Faz uma pesquisa global." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Faz uma pesquisa local" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Faz uma pesquisa na Kad" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Mostra os resultados da última pesquisa." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Mostra os resultados da pesquisa anterior.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Apresenta o progresso da pesquisa." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Apresenta o progresso de uma pesquisa.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Começar a transferir um ficheiro" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "O número do ficheiro da última pesquisa tem de ser especificado.\n" "Exemplo: 'download 12' iniciará o download do ficheiro com o número 12 da " "última pesquisa.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Pausar download." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Continuar download." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Cancelar download." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Estabelecer a prioridade." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Estabelecer a prioridade como Baixa, Normal, Alta ou Automática.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Estabelecer a prioridade como Baixa." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Estabelecer a prioridade como Normal." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Estabelecer a prioridade como Alta." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Estabelecer a prioridade como Automática." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Mostrar filas/listas." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Mostra as filas de upload/download, listas de servidores ou ficheiros " "partilhados.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Mostrar fila de saída." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Mostrar fila de entrada." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Mostrar o relatório." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Mostrar lista de servidores." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Apagar o relatório." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Comando obsoleto, passe a usar '%s'." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Este é um comando obsoleto, e poderá ser retirado no futuro.\n" "Passe a usar '%s'.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Cliente de texto do aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Conversão de grupos de chaves AICH antigas em '%s' para 64b em '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "AVISO: O nome do ficheiro '%s' é invalido e foi mudado para '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "AVISO: O ficheiro '%s' já existe, o novo ficheiro tem agora o nome '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Tem a certeza que deseja cancelar e apagar todos os ficheiros desta " "categoria?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Confirmação Necessária" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Só são suportadas 99 categorias" #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Demasiadas categorias!" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Todos os outros" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Seleccione o filtro de exibição" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Adicionar categoria" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Editar categoria" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Remover categoria" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Falha ao abrir ficheiro (%s), a remover da lista de ficheiros partilhados." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Conjunto de chaves pedido para ficheiro desconhecido: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "A continuar uploads do ficheiro: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "A suspender upload do ficheiro: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "A execução do comando `%s' no evento `%s' falhou." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Download concluído" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "O caminho completo para o ficheiro." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "O nome do ficheiro sem a parte do caminho." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "A chave eD2k do ficheiro." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "O tamanho do ficheiro em bytes." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Tempo cumulativo de download." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Nova sessão de conversa iniciada" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Remetente de mensagem." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Falta de espaço" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Partição de disco." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Erro ao completar" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "A processar o ficheiro número %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Requisitou chaves parciais (Usado apenas para ficheiros > 9.5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Ficheiro inexistente!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, o criador de ligações eD2k do aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Bem-vindo!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Parâmetros de entrada" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Ficheiro para gerar chave" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Adicionar URLs Opcionais para este ficheiro" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Indique aqui o ficheiro para o qual deseja obter o link eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Indique aqui o URL onde pretende adicionar a ligação eD2k: Adicione / ao fim " "para permitir que o aLinkCreator acrescente o nome de ficheiro actual" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Remover" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Criar a ligação com chaves de partes" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Ajudar a espalhar ficheiros novos e raros mais rapidamente, com o custo de " "um maior tamanho da ligação" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Chave MD4 do ficheiro" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Chave eD2k do ficheiro" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "Ligação eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Gravar" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Abrir" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Abrir um ficheiro para calcular a sua ligação eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Copiar ligação eD2k calculada para a área de transferência" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Gravar como" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Gravar a ligação eD2k calculada para um ficheiro" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Acerca do aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Seleccione o ficheiro para o qual pretende criar a ligação eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Não é possível abrir a área de transferência" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Nada a copiar por agora!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Seleccione o ficheiro para guardar a sua ligação eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Não é possível abrir " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Por favor, insira um nome de ficheiro" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Nada a gravar por agora!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, o criador de ligações eD2k do aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps de http://www.everaldo.com e http://www.icomania.com\n" "e http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distribuído sob a licença GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "A gerar chaves..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "O aLinkCreator está a trabalhar" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "A calcular chave MD4..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "A calcular chave eD2k..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Cancelado !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Concluído em %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Já adicionou este URL!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Por favor, insira um URL" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Não é possível abrir %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i dia(s) %i hora(s) %i minuto(s) %i segundo(s)" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02um %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02um %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02um %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f kB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, Estatísticas Online do aMule" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Taxa máxima de download desde que o wxCas está em execução" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "" "Taxa absoluta de download máxima durante as execuções anteriores do wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistema" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Parar Actualização Automática" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Gravar imagem das Estatísticas Online" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Imprimir a imagem de Estatísticas Online" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Definição de preferências" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Acerca do wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Iniciar a Actualização Automática" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Actualização Automática parada" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Actualização automática iniciada" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Gravar a Imagem de Estatísticas" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Estatísticas Online do aMule" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Ocorreu um erro ao imprimir.\n" "Talvez a sua impressora actual não esteja bem configurada." #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "A imprimir" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, Estatísticas de Assinatura Online do aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Baseado no CAS por Pedro de Oliveira \n" "\n" "Distribuído sob a licença GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh Oh, o aMule não esta em execução..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "O aMule está em execução" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "O aMule está a funcionar mas está desligado" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "O aMule está a ligar..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh Oh, o estado do aMule é desconhecido..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " está em execução há " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " está parado !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " não está ligado !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " está a ligar..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " está a fazer algo estranho, verifique!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " está ligado a " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "parado" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " está em " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr "com " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Download Total: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Download na Sessão: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Download: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Upload: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr "kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "A partilhar: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " ficheiro(s). Clientes na fila de espera: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Hora: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " no " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Média de carga do sistema (1-5-15 minutos): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Tempo de funcionamento do sistema: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Pasta que contém o ficheiro amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Insira a pasta onde se encontra o seu ficheiro amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Intervalo de actualização em segundos" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Gerar uma imagem das estatísticas a cada evento de actualização" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Insira aqui a pasta onde deseja gerar a imagem das estatísticas" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "" "Transferir periodicamente a imagem das estatísticas para o servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "URL do FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Caminho do FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Insira aqui o URL do seu servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Insira aqui a pasta do servidor FTP onde deseja colocar a sua imagem das " "estatísticas" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Utilizador" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Insira aqui o nome de utilizador para entrar no seu servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Insira aqui a palavra-passe para entrar no seu servidor FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Intervalo de actualização do FTP em minutos" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Validar" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Pasta que contém o seu ficheiro de assinatura" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Pasta onde se gera a imagem das estatísticas" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Carrega o modelo " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Porto HTTP do servidor web" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Utilizar UPnP para configurar encaminhamento no porto do servidor web" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Porto UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Usar compressão gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Palavra-passe de acesso total para o servidor web" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Palavra-passe de convidado para o servidor web" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Permitir acesso de convidado" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Negar acesso de convidado" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Carregar/guardar as preferências do servidor web de/para aMule remoto" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Caminho do ficheiro de configuração do aMule. NÃO USE DIRECTAMENTE!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Desactivar o interpretador PHP (obsoleto)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Recompilar as páginas PHP em cada pedido" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Servidor Web do aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "Ligação de cliente web aceite\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "ERRO: não é possível aceitar ligação de cliente web\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "O pedido falhou com o seguinte erro: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Ficheiro de índice não encontrado: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "A sessão expirou - a pedir entrada no sistema\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sessão ok, dentro do sistema\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sessão ok, fora do sistema\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Sessão não aberta - ir-se-á pedir entrada no sistema\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sessão criada - a pedir entrada no sistema\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "A processar pedido [original]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Não foi indicada uma palavra-passe, a entrada não será permitida" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "A verificar a palavra-passe\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Chave da palavra-passe inválida\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Palavra-passe correcta\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Palavra-passe incorrecta\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" "Não forneceu uma palavra-passe. Palavras-passe vazias não são permitidas.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Saída do sistema pedida\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "A processar pedido [redireccionado]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "O ficheiro de partes %s (%s) não tem ficheiro de sementes" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "O ficheiro de partes %s (%s) tem um ficheiro de sementes indefinido" #~ msgid "Download status" #~ msgstr "Estado do Download" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Início da criação de chaves MD4 e AICH para o ficheiro: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Início da criação da chave MD4 para o ficheiro: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Início da criação da chave AICH para o ficheiro: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "AVISO: Não é possível remover o original '%s' após criar cópia de " #~ "segurança" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "AVISO: Falha ao remover %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Cliente %s com IP:Porto %s:%d a usar %s %s %s" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "Transferring" #~ msgstr "A Transferir" #~ msgid "Unable to determine selected browser!" #~ msgstr "Não é possível determinar o navegador seleccionado!" #~ msgid "Networks window" #~ msgstr "Janela de redes" #~ msgid "Searches window" #~ msgstr "Janela de Pesquisas" #~ msgid "Transfers" #~ msgstr "Transferências" #~ msgid "Files transfers window" #~ msgstr "Janela de transferências" #~ msgid "Shared files window" #~ msgstr "Janela de ficheiros partilhados" #~ msgid "Messages window" #~ msgstr "Janela de mensagens" #~ msgid "Statistics graph window" #~ msgstr "Janela de estatísticas" #~ msgid "Preferences settings window" #~ msgstr "Janela de preferências" #~ msgid "User Defined" #~ msgstr "Personalizado" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Intervalo de actualização: %d segundo" #~ msgstr[1] "Intervalo de actualização: %d segundos" #~ msgid "Firewalled" #~ msgstr "Atrás de Firewall" #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Utilizadores: E: %s K: %s | Ficheiros E: %s K: %s" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Utilizadores: %s | Ficheiros: %s" #~ msgid "TODO - show progress of a search" #~ msgstr "A FAZER - mostrar o progresso de uma pesquisa" #~ msgid "Get IPFilter level." #~ msgstr "Obter nível de filtragem de IP." #~ msgid "Makes a search." #~ msgstr "Faz uma pesquisa." #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "" #~ "CIP2Country::CIP2Country(): Carregamento dos dados do país falhou de " #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "Foi carregada a imagem de %d bandeira." #~ msgstr[1] "Foram carregadas %d imagens de bandeiras." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Mostra Uploads / fila de espera de uploads" #~ msgid "Clients on queue :" #~ msgstr "Clientes na lista de espera :" #~ msgid "Current Session" #~ msgstr "Sessão actual" #~ msgid "Total" #~ msgstr "Total" #~ msgid "Requested :" #~ msgstr "Pedidos :" #~ msgid "Rating (total):" #~ msgstr "Classificação (total):" #~ msgid "Misc Options" #~ msgstr "Opções diversas" #~ msgid "System Default" #~ msgstr "Predefinição de Sistema" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Seleccione o seu navegador" #~ msgid "Custom Browser:" #~ msgstr "Navegador personalizado:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Insira o nome do seu navegador. Para usar o navegador personalizado, " #~ "seleccione o item Personalizado do menu acima." #~ msgid "Create Backup for preview" #~ msgstr "Criar cópia de segurança para pré-visualização" #~ msgid "Extended client UDP Port:" #~ msgstr "Porto UDP extendido do cliente:" #~ msgid "disable" #~ msgstr "desactivar" #~ msgid "Bind Address" #~ msgstr "Associar ao Endereço" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "Porto UDP para pedidos de servidor extendidos (TCP+3): 4665" #~ msgid "Hard limit" #~ msgstr "Limite máximo" #~ msgid "Connection limits" #~ msgstr "Limites de ligação" #~ msgid "Max Connections" #~ msgstr "Máximo de ligações" #~ msgid "Universal Plug and Play" #~ msgstr "Universal Plug and Play" #~ msgid "Enable UPnP" #~ msgstr "Activar UPnP" #~ msgid "Server Options" #~ msgstr "Opções de servidores" #~ msgid "I.C.H. active" #~ msgstr "M.I.C. activo" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Tentar enviar partes inteiras nos uploads" #~ msgid "Disk space" #~ msgstr "Espaço em disco" #~ msgid "Check disk space" #~ msgstr "Verificar espaço em disco" #~ msgid "Min disk space:" #~ msgstr "Espaço mínimo em disco:" #~ msgid "Incoming" #~ msgstr "Completos" #~ msgid "Temporary" #~ msgstr "Temporários" #~ msgid "Shared" #~ msgstr "Partilhados" #~ msgid "Select Statistics Colors" #~ msgstr "Seleccionar as Cores das Estatísticas" #~ msgid "Line Capacities" #~ msgstr "Capacidades da Ligação" #~ msgid "Note: These values are only used for statistics." #~ msgstr "Nota: estes valores são usados apenas nas estatísticas." #~ msgid "Advanced Settings" #~ msgstr "Preferências Avançadas" #~ msgid "Progressbar Style" #~ msgstr "Estilo da barra de progresso" #~ msgid "Skin Support" #~ msgstr "Suporte de temas" #~ msgid "Enable skin support " #~ msgstr "Activar supporte de temas" #~ msgid "Skin:" #~ msgstr "Tema:" #~ msgid "Column Sorting" #~ msgstr "Ordenação da coluna" #~ msgid "Misc Gui Tweaks" #~ msgstr "Ajustes de interface diversos" #~ msgid "Show part file number before file name" #~ msgstr "Mostrar o número do ficheiro parcial antes do nome do ficheiro" #~ msgid "Web server port" #~ msgstr "Porto do servidor web" #~ msgid "..." #~ msgstr "..." #~ msgid "Display server motd when connected ..." #~ msgstr "Exibir a mensagem do dia ao ligar ao servidor..." #~ msgid "eD2k Info" #~ msgstr "Informação eD2k" #~ msgid "File Options" #~ msgstr "Opções de ficheiros" #~ msgid "Online Signature Directory:" #~ msgstr "Pasta de Assinatura Online:" #~ msgid "Disable/Enable" #~ msgstr "Desactivar/Activar" #~ msgid "Filtering Options:" #~ msgstr "Opções de filtragem:" #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Authentication" #~ msgstr "Autenticação" #~ msgid "Files Transfers Window" #~ msgstr "Janela de Transferências" #~ msgid "Unban" #~ msgstr "Remover Ban" #~ msgid "Show Uploads" #~ msgstr "Mostrar Uploads" #~ msgid "Show Queue" #~ msgstr "Mostrar a Lista de Espera" #~ msgid "Select View" #~ msgstr "Seleccionar a Vista" #~ msgid "Client Software" #~ msgstr "Programa Cliente" #~ msgid "Waited" #~ msgstr "Esperou" #~ msgid "Upload Time" #~ msgstr "Tempo de Upload" #~ msgid "Upload/Download" #~ msgstr "Upload/Download" #~ msgid "Remote Status" #~ msgstr "Estado remoto" #~ msgid "QR: %u" #~ msgstr "QR: %u" #~ msgid "File Priority" #~ msgstr "Prioridade do ficheiro" #~ msgid "Score" #~ msgstr "Pontuação" #~ msgid "Asked" #~ msgstr "Pedido" #~ msgid "Last Seen" #~ msgstr "Última vez visto" #~ msgid "Entered Queue" #~ msgstr "Entrou na Lista de Espera" #~ msgid "Transferred Up" #~ msgstr "Enviado" #~ msgid "Transferred Down" #~ msgstr "Recebido" #~ msgid "Userhash" #~ msgstr "Chave de Utilizador" #~ msgid "Encrypted" #~ msgstr "Cifrado" #~ msgid "Hide shared files" #~ msgstr "Esconder ficheiros partilhados" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "As seguintes opções foram mudadas nesta distribuição por motivos de " #~ "segurança:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Activada a Ofuscação do Protocolo para todas as ligações de entrada e " #~ "saída.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Desactivada a actualização da lista de servidores de outros servidores " #~ "e clientes.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Para mais informação acerca da razão para estas mudanças, procure\n" #~ "informação no wiki do aMule em http://wiki.amule.org sobre \"fake servers" #~ "\".\n" #~ "É importante que remova todos os servidores falsos da sua lista para que " #~ "o aMule funcione correctamente." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "Adicionalmente, as definições sobre o navegador foram repostas para a " #~ "predefinição do sistema. Por favor configure as suas opções do navegador " #~ "de novo, caso seja necessário.\n" amule_2.3.1+git20151120.0023527bc2.orig/po/quot.sed0000644000175000017500000000023112611472361017602 0ustar morphmorphs/"\([^"]*\)"/“\1”/g s/`\([^`']*\)'/‘\1’/g s/ '\([^`']*\)' / ‘\1’ /g s/ '\([^`']*\)'$/ ‘\1’/g s/^'\([^`']*\)' /‘\1’ /g s/“”/""/g amule_2.3.1+git20151120.0023527bc2.orig/po/remove-potcdate.sin0000644000175000017500000000066012611472361021734 0ustar morphmorph# Sed script that remove the POT-Creation-Date line in the header entry # from a POT file. # # The distinction between the first and the following occurrences of the # pattern is achieved by looking at the hold space. /^"POT-Creation-Date: .*"$/{ x # Test if the hold space is empty. s/P/P/ ta # Yes it was empty. First occurrence. Remove the line. g d bb :a # The hold space was nonempty. Following occurrences. Do nothing. x :b } amule_2.3.1+git20151120.0023527bc2.orig/po/ro.po0000644000175000017500000063156612611472361017122 0ustar morphmorph# Copyright (C) 2014 Free Software Foundation, Inc. # This file is distributed under the same license as the aMule package. # # Angelescu Constantin , 2014. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2014-12-27 10:03+0200\n" "Last-Translator: Angelescu Constantin \n" "Language-Team: Angelescu Constantin \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.5.4\n" "Language: ro\n" "Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " "20)) ? 1 : 2;\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Adaugă un prieten" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Trebuie să introduceți un IP valid și un port!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informații" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Indexul utilizator specificat nu este valid!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "A eșuat deschiderea fișierului legătură eD2k." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "ATENȚIE: Nu vă puteți adăuga ca sursă pentru o legătură eD2k cât timp aveți " "lowid." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Acum, se oprește aplicația principală..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Se termină instanța amuleweb cu pid '%ld' ... " #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Se omoară instanța amuleweb cu pid '%ld' ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Eșuat" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule la ieșire: Se închide nucleul." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "aMule închidere terminată." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Rezultatele depanării memoriei pentru ieșirea aMule:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "configurație EC" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Configurarea parolei și conexiunile externe sunt activate." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "ATENȚIE" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Limba dumneavoastră a fost schimbată la cea implicită a sistemului datorită " "schimbării configurației. Regretăm." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Nu aveți nici un server în lista serverelor.\n" "Doriți ca aMule să descarce o nouă listă acum?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Lista serverelor s-a descărcat" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "server web rulând pe pid %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Ați solicitat să ruleze la pornire serverul web, dar fișierul binar amuleweb " "nu poate fi rulat. Instalați pachetul care conține serverul web aMule, sau " "compilați aMule utilizând --enable-webserver și apoi rulați make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "EROARE" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Nu se pot lega porturile la adresa specificată: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Portul %u nu este disponibil. Veți fi LOWID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Portul %u nu este disponibil!\n" "\n" "Aceasta înseamnă că veți fi LOWID.\n" "\n" "Verificați rețeaua pentru a vă asigura că portul este deschis pentru intrare " "și ieșire." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "A eșuat crearea fișierului Semnătură Online" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "A eșuat crearea fișierului aMule Semnătură Online" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Localizarea selectată se pare că nu este instalată pe computer. (Notă: Se va " "încerca configurarea acesteia oricum)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Aceasta este prima dată când rulați aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Această versiune este o versiune de testare, actualizată zilnic și\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "nu vă dăm nici un fel de garanție dacă nu se va strica nimic, ardeți-vă " "casa,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "sau omorâți-vă câinele. Dar * ar trebui să fie * sigur de utilizat oricum.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Mai multe informații, suport și versiuni noi pot fi găsite pe pagina noastră " "web,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "la www.aMule.org, sau în canalul nostru IRC #aMule at irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Raportați orice fel de probleme la http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Dosarul specificat pentru Semnătura Online NU ESTE VALID!\n" "Semnătura Online va fi DEZACTIVATĂ până va fi reparată problema în " "preferințe." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "S-a notificat numele serverului" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Prealocarea spațiului pe disc pentru fișierul '%s' a eșuat: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "EROARE: nu se poate deschide fișierul jurnal" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "ATENȚIE: fișierul jurnal este gol. Ceva este greșit." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Jurnalul a fost resetat" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Mesaj server: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "Se omite descărcarea a %s, fiindcă fișierul solicitat nu este mai nou." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "A eșuat descărcarea listei de noduri." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "A eșuat deschiderea fișierului de verificare a versiunii" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Fișierul de verificare a versiunii este corupt" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Utilizați o versiune învechită de aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" "Versiunea dumneavoastră de aMule este %i.%i.%i iar ultima versiune este %li.%" "li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Ultima versiune poate fi găsită mereu la http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" "ATENȚIE: Versiunea dumneavoastră aMuled este învechită: %i.%i.%i < %li.%li.%" "li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Copia dumneavoastră aMule este actualizată." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "A eșuat descărcarea fișierului de verificare a versiunii" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Utilizatori: %s | Fișiere: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Utilizatori: E: %s K: %s | Fișiere: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Nu este selectată nici o rețea" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "cu LowID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "cu HighID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Conectat la %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Conectare la %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Deconectat de la eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad este pornit." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad este oprit." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Conectat la Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Conectat la Kad (prin firewall)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Deconectat de la Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Nu se poate utiliza rețeaua Kad dacă portul UDP este dezactivat în " "preferințe, nu se pornește." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Rețeaua Kad este dezactivată în preferințe, nu se conectează." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "EROARE: Demonul aMule nu poate fi utilizat când conexiunile externe sunt " "dezactivate. Pentru a se activa Conexiuni Externe, utilizați fie un aMule " "normal, se pornește amuled cu opțiunea --ec-config sau configurați cheia " "\"AcceptExternalConnections\" la 1 în fișierul ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "EROARE: Este necesară o parolă validă pentru utilizarea conexiunilor " "externe, iar demonul aMule nu se poate utiliza fără conexiuni externe. " "Pentru a rula demonul aMule, trebuie să configurați câmpul \"ECPassword\" în " "fișierul ~/.aMule/amule.conf cu o valoare corespunzătoare. Executați amuled " "cu marcajul --ec-config pentru configurarea parolei. Mai multe informații " "pot fi găsite la http://wiki.amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - se pornește temporizarea" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: se îndreaptă spre fundal - veți vedea" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Nu se poate crea fișierul Pid" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "EROARE: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Acesta este aMule %s bazat pe eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Rulând pe %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Vizitați http://www.amule.org pentru a verifica dacă este disponibilă o nouă " "versiune." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "EROARE FATALĂ: A eșuat crearea temporizatorului" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "control distant aMule" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Variantă versiune:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "Client p2p bazat pe eMule pentru toate platformele \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Site web: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Forum: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Contact: admin@amule.org (probleme administrative) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Drept de autor (c) 2003-2011 Echipa aMule \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Părți din aMule sunt bazate pe \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Rutare P2P bazată pe XOR metric.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" " Drept de autor (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Mesaj" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "dialogul aMule distrus" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Mă conectez" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Se conectează" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Deconectat" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Prin firewall" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Conectat" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Se conectează" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Închis" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Renunță" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Oprește încercările curente de conectare" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Deconectează" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Deconectează de la rețelele curent conectate" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Conectează" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Conectează la rețelele activate curent" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "În: %.1f(%.1f) | Desc: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "În: %.1f | Desc: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Conectat)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Deconectat)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Sigur doriți să ieșiți %s?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Confirmare ieșire" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Lansare comandă:" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- implicit -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Directorul aspectului aplicației '%s' nu există" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "ATENȚIE: Nu se poate deschide fișierul aspect '%s' pentru citit" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Rețele" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Fereastra rețelelor" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Căutări" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Fereastra căutărilor" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Descărcări" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Fereastra descărcărilor" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Fișiere partajate" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Fereastra fișierelor partajate" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Mesaje" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Fereastra mesajelor" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistici" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Fereastra graficului statisticilor" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Preferences" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Fereastra configurare preferințe" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importă" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Unealta de importat fișiere parțiale" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Despre" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Despre/Ajutor" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Rețea eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Rețea Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Nici o rețea" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "control la distanță aMule" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Eroare fatală: Nu s-a putut crea temporizatorul nucleului" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Conectare la amule distant" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Eroare fatală: A eșuat crearea Poll Timer" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Se merge la bucla evenimentului..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Conectare..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Conectare eșuată" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "GUI distant rezolvare eveniment EC" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Se închide" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Conectare eșuată. Nu se poate conecta la %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Conexiune închisă - aMule a terminat probabil." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Pregătit" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Toate" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Nu se poate crea directorul '%s' pentru categoria '%s', se păstrează " "directorul '%s'." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Necunoscut" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "A eșuat preluarea fișierelor partajate de la utilizatorul '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Se caută parteneri pentru conexiunea lowid" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Versiune eMule falsă %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (eMule fals)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (eMule fals)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (bazat pe eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Nume Nick: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Solicitat: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Stare fișiere pentru această sesiune: Acceptat %d din %d solicitat, %s " "transferat\n" msgstr[1] "" "Stare fișiere pentru această sesiune: Acceptate %d din %d solicitate, %s " "transferate\n" msgstr[2] "" "Stare fișiere pentru această sesiune: Acceptate %d din %d solicitate, %s " "transferate\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Stare fișiere pentru toate sesiunile: Acceptat %d din %d solicitat, %s " "transferat\n" msgstr[1] "" "Stare fișiere pentru toate sesiunile: Acceptate %d din %d solicitate, %s " "transferate\n" msgstr[2] "" "Stare fișiere pentru toate sesiunile: Acceptate %d din %d solicitate, %s " "transferate\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Solicitat fișier necunoscut" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Mesaj filtrat de la '%s' (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Mesaj nou de la '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Utilizatorul %s (%u) a solicitat lista fișierelor partajate pentru un " "director inexistent '%s' -> se ignoră" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "ATENȚIE: %s nu poate fi deschis." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "ATENȚIE: S-a anulat lista de fișiere coruptă, conține antet nevalid." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "Eroare IO în timpul citirii fișierului %s : %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Eroare în timpul salvării fișierului %s : %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Introduceți Captcha" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Categorie" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Categorie nouă" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Alegeți un dosar pentru fișierele primite" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Trebuie să specificați un nume pentru categorie!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Trebuie să specificați o cale pentru categorie!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "A eșuat crearea directorului de primire pentru categorie. Specificați o cale " "validă!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "A pornit sesiunea de chat: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Conectat la client ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Se conectează la client ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** A eșuat conectarea la client / Conexiune pierdută ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" "*** Ați trecut verificarea captcha iar utilizatorul a primit mesajul " "dumneavoastră. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Răspunsul la verificarea captcha a fost greșit iar mesajul dumneavoastră " "a fost ignorat. Puteți solicita o nouă verificare captcha pentru a trimite " "un mesaj nou. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Discuție" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Închide tab" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Închide toate ferestrele" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Închide alte ferestre" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Adaugă la prieteni" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Fișierul credit este încărcat, %u client este cunoscut" msgstr[1] "Fișierul credit este încărcat, %u clienți sunt cunoscuți" msgstr[2] "Fișierul credit este încărcat, %u de clienți sunt cunoscuți" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Credit expirat pentru %u client!" msgstr[1] " - Credit expirat pentru %u clienți!" msgstr[2] " - Credit expirat pentru %u de clienți!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Nu s-a găsit nici un fișier 'cryptkey.dat' , se creează." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Detalii client" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Activat" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Susținut" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Nu este susținut" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Dezactivat" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Conectat" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Deconectat" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Nu este finalizat" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Utilizator rău" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Verificat - ok" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Indisponibilă" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Utilizatorul %s (%u) solicită lista fișierelor partajate -> Acceptat" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Utilizatorul %s (%u) solicită lista fișierelor partajate -> Interzis" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" "Utilizatorul %s (%u) solicită lista directoarelor partajate -> Acceptat" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "Utilizatorul %s (%u) solicită lista directoarelor partajate -> Interzis" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Utilizatorul %s (%u) solicită lista fișierelor partajate pentru directorul '%" "s' -> acceptat" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Utilizatorul %s (%u) solicită lista fișierelor partajate pentru directorul '%" "s' -> interzis" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Utilizatorul %s (%u) partajează directorul '%s'" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Utilizatorul %s (%u) trimite directoare partajate nesolicitate." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "Utilizatorul %s (%u) trimite lista fișierelor partajate pentru directorul '%" "s'" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Utilizatorul %s (%u) a finalizat trimiterea lista fișierelor partajate" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Utilizatorul %s (%u) trimite o listă de fișiere nedorită" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Utilizatorul %s (%u) interzice accesul la lista directoarelor/fișierelor " "partajate" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Comentarii fișier" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Utilizator" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Denumire fișier" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Evaluare" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Comment" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Fără comentarii" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u comentariu" msgstr[1] "%u comentarii" msgstr[2] "%u de comentarii" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Client interzis %s pentru trimiterea %s date corupte a %s total pentru " "fișierul '%s'" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Automat [Sc]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Automat [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Automat [În]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Foarte joasă" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Joasă" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normal" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Înaltă" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Foarte ridicat" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Versiune" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Solicitarea" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Se conectează prin server" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Coadă plină" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "În coadă" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Descărcare" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Se primesc indexări" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Nu sunt părți necesare" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Nu se poate conecta LowID la LowID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Prea multe conexiuni" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Conectare prin Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Prea multe conexiuni Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Interzis" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Eroare de conexiune" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Coadă distantă este plină" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Vechiul MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Noul MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "Compatibil eMule" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Server local" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Server distant" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Schimb surse" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Pasiv" #: src/DataToText.cpp:133 msgid "Link" msgstr "Legătură" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Semințe sursă" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Rezultat căutare" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Terminat" #: src/DataToText.cpp:146 msgid "In progress" msgstr "În curs" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "EROARE: Spațiu disc insuficient" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "EROARE: Nu s-a găsit partmet" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "EROARE: Eroare IO!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "EROARE: Eșuare!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "În coadă" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Deja se descarcă" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Format fișier temporar necunoscut sau greșit." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Parte" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Size" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Transferat" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Viteză" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Progres" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Surse" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioritate" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Stare" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Timp rămas" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Văzut complet ultima dată" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Ultima recepție" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Sigur doriți să ștergeți fișierul selectat?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Sigur doriți să ștergeți fișierele selectate?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Feedback de la: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Automat" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Stop" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pauză" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Reluare" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "C&urăță terminate" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Schimbă acum fiecare A4AF la acest fișier" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Schimbă fiecare A4AF la acest fișier (automat)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Schimbă acum fiecare A4AF la oricare fișier" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Opțiuni extinse" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Previzualizează" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Arată fișierele & detaliile" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Arată toate comentariile" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Copiază URI magnet în memoria temporară" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Coiază link-ul eD2k în memoria temporară" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Copiază feedback-ul în memoria temporară" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "neatribuit" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Atribuit la categoria" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Deshide fișierul" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Introduceți noul nume pentru acest fișier:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Redenumire fișier" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Descărcări (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Pentru a preveni apariția acestui avertisment la fiecare previzualizare,\n" "configurați în preferințe playerul video preferat (implicit este mplayer)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Previzualizare fișier" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "EROARE: A eșuat execuția playerului media extern! Comanda: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Se salvează fișierul parțial %u of %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Toate fișierele parțiale au fost salvate." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Se încarcă fișierul temporar de la %s." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Se încarcă fișierul parțial %u of %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "EROARE: A eșuat încărcarea fișierului de backup. Căutați pe http://forum." "amule.org soluții de recuperare pentru .part.met" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Toate fișierele parțiale sunt încărcate." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Nu s-au găsit fișiere parțiale" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "S-a găsit %u fișier parțial" msgstr[1] "S-au găsit %u fișiere parțiale" msgstr[2] "S-au găsit %u de fișiere parțiale" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "Sistemul de fișiere pentru directorul temporar nu poate manipula fișiere " "mari." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "Sistemul de fișiere pentru directorul de intrare nu poate manipula fișiere " "mari." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Se descarcă %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Deja încercați să descărcați fișierul '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Deja aveți fișierul '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Deja încercați să descărcați fișierul %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Nu se poate converti legătura magnet la eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Protocol necunoscut pentru legătura: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Legătură eD2k nevalidă!EROARE: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Clientul a trimis pachetul după eșuarea autentificării." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Conexiune externă închisă." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Conexiunile externe sunt dezactivate datorită lipsei parolei!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Conexiunile externe sunt dezactivate în fișierul de configurare" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Conexiune externă nouă acceptată" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "EROARE: nu se poate accepta o nouă conexiune externă" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Conexiunea externă este refuzată datorită lipsei parolei în preferințe!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Se conectează clientul: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Versiune necunoscută" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Incorecta EC versiune ID, poate fi o incompatibilitate de aplicații. " "Utilizați nucleul și aplicația distantă de la aceiași versiune." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Nu vă puteți conecta la o versiune lansată dintr-o versiune în dezvoltare " "arbitrară! *uf* se pot preveni disfuncțiile" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Versiune protocol nevalidă." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Lipsește eticheta versiunii protocolului." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "Autentificare eșuată: indexul specificat este nevalid ca parolă EC." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Autentificare eșuată: parolă greșită." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Autentificare eșuată: lipsă parolă." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Solicitare nevalidă, autentificați-vă întâi." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Acces asigurat." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Trimite mesajul de eroare \"%s\" la client." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Încercare neautorizată de acces de la %s. Conexiune închisă." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "A eșuat comanda distantă a fișierului parțial: Nu a fost găsit fișierul " "index: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Indexul fișierului nu este găsit: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OOPS! Eroare la procesarea OpCode!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Serverul nu este adăugat" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "serverul nu este găsit: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "trebuie să definiți un server pentru a fi eliminat" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k este dezactivat în preferințe." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Căutare în desfășurare. Se readuc rezultatele imediat!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Nu are nici un sens căutarea web de pe interfața distantă." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Nici un punct pentru grafic." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Clientul dumneavoastră nu este configurat pentru acest nivel detaliat." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Conexiune externă: închidere solicitată" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Deja se închide." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Conexiune externă: se adaugă legătura '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Legătură nevalidă sau care este deja în listă." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Fișierul nu este găsit." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Nume fișier nevalid." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Nu se poate redenumii fișierul." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad este dezactivat din preferințe." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Deja este conectat la eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Se conectează la eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Deja este conectat la Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Se conectează la Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Toate rețelele sunt dezactivate." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Deconectat de la eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Deconectat de la Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Conexiune externă: S-a primit un opcode nevalid: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Opcode nevalid (versiune protocol greșită?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Extensie necunoscută '%s' pentru comanda '%s' .\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Comandă necunoscută '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Această comandă nu poate avea un argument.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Această comandă trebuie să aibă un argument.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Această comandă este incompletă, trebuie să utilizați una dintre extensiile " "de mai jos.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Extensii disponibile:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Comenzi disponibile:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Toate comenzile nu sunt sensibile la majuscule.\n" "Tastați '%s ' pentru a obține informații detaliate la .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Teși din aplicație." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Arată ajutorul." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Pentru a obține ajutor la o comandă, tastați 'help '.\n" "Pentru a obține lista completă a comenzilor tastați 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Utilizați '%s' pentru lista de comenzi\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Eroare sintaxă!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Eroare la procesarea comenzii - nu ar trebui să se întâmple! Raportați " "defectul\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Această comandă nu ar trebui să aibă nici un parametru." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Comanda trebuie să aibă un parametru." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Argument nevalid." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Aceasta este o comandă incompletă." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Tastați '%s' pentru a obține mai mult ajutor.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Aceasta este %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Aceasta este %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Se creează clientul...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, se iese %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Nu se poate conecta cu o parolă goală.\n" "Trebuie să specificați o parolă fie în fișierul de configurare\n" "sau în linia de comandă, sau introduceți una când se solicită.\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Arată acest text de ajutor." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Gazda unde aMule rulează. (implicit: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Portul aMule pentru conexiunea externă. (implicit: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Parolă conexiune externă." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Citește configurația din fișier." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Nu tipării nici o ieșire la stdout." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Fi detaliat - arată și mesajele de depanare." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Configurează localizarea programului (limba)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Scrie opțiunile liniei de comandă la fișierul de configurare." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" "Creează fișierul de configurare bazat pe fișierul de configurare al aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Tipărește versiunea programului." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Detalii fișier" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "%.1f%% realizat" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "A eșuat deschiderea fișierului listă prieteni 'emfriends.met' pentru citit!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "A eșuat deschiderea fișierului listă prieteni 'emfriends.met' pentru scris!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "CRITIC - nici un client în StartChatSession" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Prieteni" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Arată &Detaliile" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Adaugă un prieten" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Elimină prieten" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Trimite &Mesaj" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Vizualizare fișiere" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Stabilește slot prieten" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Sigur doriți să eliminați prietenul selectat?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Sigur doriți să eliminați prietenii selectați?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Nu vă este permis să configurați mai mult de un slot prieten.\n" "A fost alocat numai un singur slot." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Selecții multiple" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Trimite mesaj utilizatorului" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Mesaj de trimis:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Elimină dintre prieteni" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Trimite mesaj" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Schimbă la acest fișier" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "În coadă: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Întrebat de un alt fișier" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Se așteaptă slotul de încărcare" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "În coadă: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Se încarcă" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Niciunul" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "No" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Yes" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Se descarcă..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "Descărcare HTTP anulată" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Nu se poate crea fișierul destinație %s pentru descărcare!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "Adresa URL de descărcat nu poate fi goală" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "Adresa URL %s a returnat: %i - Eroare (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Eroare critică în timpul scrierii fișierului descărcat" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "Descărcat %d octeți" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Se așteaptă %d octeți, dar s-au descărcat %d octeți" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "Adresă URL nevalidă pentru descărcare HTTP sau redirecționare HTTP (ați " "uitat 'http://' ?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Nu se poate conecta la serverul HTTP de descărcare" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Răspuns nevalid de la serverul HTTP de descărcare" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Se descarcă un nou fișier GeoIP.dat de la %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Descărcarea fișierului GeoIP.dat a eșuat, se abandonează actualizarea." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "A eșuat eliminarea fișierului %s , se abandonează actualizarea." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "A eșuat redenumirea fișierului %s file, se abandonează actualizarea." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "Actualizat cu succes %s" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Eroare la actualizarea GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "A eșuat descărcarea %s de la %s" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "A eșuat încărcarea datei țării pentru '%s'." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Se încarcă filtrele 'ipfilter.dat' și 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "A eșuat încărcarea fișierului ipfilter.dat '%s', s-a întâlnit un format " "necunoscut." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "A eșuat încărcarea fișierului ipfilter.dat '%s', nu se poate deschide " "fișierul." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "S-a încărcat %u interval IP de la '%s'." msgstr[1] "S-au încărcat %u intervale IP de la '%s'." msgstr[2] "S-au încărcat %u de intervale IP de la '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u linie incorectă a fost descărcată." msgstr[1] "%u linii incorecte au fost descărcate." msgstr[2] "%u de linii incorecte au fost descărcate." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "A eșuat redenumirea fișierului nou %s , se abandonează actualizarea." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "Filtrul IP este gata" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Bootstrap de la \n" "clienți cunoscuți" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Noduri (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Ip nevalid pentru bootstrap" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Port nevalid la bootstrap" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Completați toate câmpurile solicitate" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Sigur doriți să descărcați un nou fișier nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Procedând astfel veți elimina nodurile curente și veți reporni conexiunea " "Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Se continuă?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: cuvântul cheie căutat este prea scurt" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Cuvinte cheie de căutat: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Cuvântul cheie căutat este deja în lista de căutare:" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "A eșuat citirea fișierului nodes.dat - prea vechi. Această versiune (0) nu " "mai este suportată." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Sa citit %u contact Kad" msgstr[1] "S-au citit %u contacte Kad" msgstr[2] "S-au citit %u de contacte Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "Nu s-au găsit contacte, bootstrap, sau descărcați un fișier nodes.dat." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Este disponibil numai %d contact Kad, nodes.dat nu s-a scris" msgstr[1] "Sunt disponibile numai %d contacte Kad, nodes.dat nu s-a scris" msgstr[2] "Sunt disponibile numai %d de contacte Kad, nodes.dat nu s-a scris" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "S-a scris %d contact Kad" msgstr[1] "S-au scris %d contacte Kad" msgstr[2] "S-au scris %d de contacte Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Denumire fișier" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Dimensiune fișier" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Rată de partajare" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Încărcat" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Cerut" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Acceptat" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Surse complete" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "ATENȚIE: Lista de fișiere cunoscute este coruptă, conține antet nevalid." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "A eșuat încărcarea intrării în lista de fișiere cunoscute, fișierul poate fi " "corupt" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Intrare nevalidă în lista de fișiere cunoscute, fișierul poate fi corupt:" #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Eroare necunoscută %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "Nu se poate obține descrierea erorii pentru eroarea %d" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Se indexează" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Finalizat" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Terminat" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Întrerupt" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Eronat" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Se așteaptă" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Trebuie să specificați o parolă." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Parolă nevalidă, nu este un index MD5!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Eșec la conectare" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "Conexiune EC eșuată. Răspuns gol." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Conexiune externă: Răspuns greșit, a eșuat strângerea de mână. Conexiune " "închisă." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Succes! Conexiune stabilită la aMule" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Succes! Conexiune stabilită." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Conexiune externă; Acces interzis fiindcă:" #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Conexiune externă: A eșuat strângerea de mână." #: src/LibSocketAsio.cpp:1260 #, c-format msgid "Asio thread %d started" msgstr "Procesul Asio %d pornit" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "Ascultare socket: Ok." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "EROARE: Nu se poate asculta portul TCP." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "EROARE:" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "ATENȚIE:" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Închide" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Cut" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Copy" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Paste" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Curăță" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Selectează tot" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Nelimitat" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Meniul aMule din bara de sistem" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Limite viteză:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "ÎN: Fără" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "ÎN: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DE: Fără" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DE: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Viteză descărcare: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Viteză încărcare: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Informație client" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Poreclă: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Nu este selectată nici o poreclă!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID client:" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Neconectat" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Nume server:" #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP server" #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Nu este conectat" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "port TCP: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Port TCP: Nu este pregătit" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "port UDP: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "port UDP: Nu este pregătit" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Semnătură online: Activat" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Semnătură online: Dezactivat" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Timp conectare: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Fișiere partajate: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Clienți în coadă: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Total DE: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Total ÎN: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Limită încărcare" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Limită descărcare" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Ascunde aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Arată aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Ieşire" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "Legătură eD2k:" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Trimite" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Apăsați aici pentru a adăuga legătura eD2k în controlul textului în coada de " "descărcare." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Evenimentele sunt afișate aici. Pentru o listă completă de evenimente, aveți " "referințe în jurnal în fila serverelor." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Se încarcă ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Numărul de utilizatori pe serverul la care sunteți conectat ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Utilizatori: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Utilizatori conectați la serverul curent și o estimare a numărului total de " "utilizatori." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "În: 0.0 | Desc: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Media curentă a ratelor de încărcare și descărcare. Dacă activați numerele " "dintre paranteze semnifică comunicația globală cu clientul." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Afișează starea conexiunii și transferurile active. Săgețile roșii semnifică " "faptul că nu sunteți actualmente conectat, săgețile galbene semnifică că " "aveți low ID (prin firewall) iar săgețile verzi semnifică faptul că aveți " "high ID ( Tipul optim de conexiune)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Nu este conectat ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Server conectat curent." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Căutare" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Name:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tip" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Local" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Global" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Index fișier" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Parametrii extinși" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtrare" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Tipul fişierului" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Oricare" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Arhive" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Imagini-CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Imagini" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programe" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Texte" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Videoclipuri" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Extensie" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Dimensiune minimă" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Baiți" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MO" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GO" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Dimensiune maximă" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Disponibilitate" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filtru:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Rezultate filtru" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Inversează rezultatul" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Ascunde fișierele cunoscute" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Începe" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Mai mult" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Caută pentru mai multe rezultate pe eD2k. Kad nu este suportat încă." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Oprește" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Descarcă" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Resetare câmpuri" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Rezultate" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Curăță descărcările terminate" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Surse fișier:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "General" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Nume complet :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "NU SE APLICĂ" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met-File :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Index :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Dimensiune fișier :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Stare fișier parțial :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Văzut ultima oară complet :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Transfer" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "S-au găsit sursele :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Se transferă sursele :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Cantitate-fișiere parțiale :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Disponibil :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Rată date :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Timp activ de descărcare:" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Transferat :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Dimensiune completă :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Gestionare inteligentă a fișierelor corupte" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Pierdut la corupte :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Câștigat prin compresie :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Pachete salvate de I.C.H. :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Denumiri fișier" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Preluare" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Curățire" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Aplică" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "OK" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" "Comentariu/evaluare fișier (textul va fi vizibil tuturor utilizatorilor)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Pentru un film puteți spune lungimea, scenariul, limba ...\\n\\niar dacă " "este un fals, puteți spune aceasta altor utilizatori de aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Calitatea fișierului" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Nu este apreciat" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Nevalid / Corupt / Fals" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Slab" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Corect" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Bun" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Excelent" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Alegeți evaluarea fișierului sau atenționați utilizatorii dacă fișierul este " "nevalid ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Reîmprospătează" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Se descarcă, așteptați ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Mărime necunoscută" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Informație solicitată" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Adresă IP :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Informații suplimentare" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Nume utilizator:" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Index utilizator :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Adaugă" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Viteză-descărcare" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Curentul" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Medie rulare" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Medie sesiune" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Viteză-încărcare" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Conexiuni" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Descărcări active" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Conexiuni active (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Încărcări active" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Arbore statistici" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Utilizator:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Index utilizator:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Aplicație client:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Versiune client:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "adresă IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "Id. utilizator:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP server:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Nume server:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Disimulare:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Transferuri la client" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Solicitare curentă:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Rată medie de încărcare:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Rată medie de descărcare:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Încărcare (sesiune):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Descărcare (sesiune)" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Încărcat (total)" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Descărcat (total):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Scoruri" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Modificator De/În:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Identificare sigură:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Rang coadă:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Scor coadă:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Nick" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - Mule multi-platformă" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" "Acesta este numele pe care ceilalți utilizatori îl va vedea când se va " "conecta la dumneavoastră." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Limbă:" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Întârzierea afișării sfaturilor." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Aceasta specifică limba utilizată la controale." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Verifică la pornire dacă au apărut versiuni noi" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Activând aceasta va face aMule să verifice după noi versiuni la pornire" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Pornește minimizat" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Activând aceasta face aMule să se minimizeze după pornire." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Arată la ieșire" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Face ca aMule să afișeze înainte de ieșire." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "Ascunde fereastra aplicației când este apăsat butonul de închidere" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Activează miniatura în bara de sistem" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" "Aceasta activează/dezactivează miniatura de pe bara de sistem (sau bara de " "sarcini)." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimizează în bara de sistem" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Activând aceasta va face ca aMule să se minimizeze pe bara de sistem, mai " "degrabă decât în bara de sarcini." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Timp de întârziere balon de ajutor:" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "secunde" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Selecție navigator" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Introduceți aici numele navigatorului. Lăsați acest câmp necompletat pentru " "utilizarea navigatorului implicit de sistem." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Browse" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Deschide într-o fereastră nouă dacă este posibil" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Deschide pagina web într-o pagină nouă în schimbul unei ferestre noi când " "este posibil" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Player video" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Limite lățime de bandă" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Încărcare" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Alocare slot" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Porturi" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Port TCP standard" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Acesta este portul standard eD2k și nu poate fi dezactivat." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Port UDP pentru cererile serverului (TCP+3)" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Port UDP extins (Kad / căutare globală)" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" "Acest port UDP este utilizat pentru solicitări extinse eD2k și rețeaua Kad" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Activează UPnP pentru înaintare port ruter" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "Port UPnP TCP (facultativ):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Leagă adresa locală la IP (gol pentru oricare):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Numai pentru utilizatorii avansați: Dacă aveți mai multe interfețe de rețea, " "introduceți adresa interfeței la care aMule ar trebui să fie legat." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Număr maxim de surse pe fișier descărcat:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Număr maxim de conexiuni simultane:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Conectare automată la pornire" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Reconectare la pierdere" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Elimină serverele moarte după" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "încercări" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Actualizează automat lista serverelor la pornire" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Listă" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Actualizează lista serverelor la conectarea la un server" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Actualizează lista serverelor când se conectează un client" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Utilizează prioritatea sistemului" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Utilizează verificarea inteligentă LowID la conectare" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Conectare sigură" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Conectează automat numai la serverele din lista statică" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Configurează serverele adăugate manual la prioritate înaltă" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Gestionare inteligentă a fișierelor corupte (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Activează" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "I.C.H. avansat acordă încredere fiecărui index (nu este recomandat)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Adaugă fișiere la descărcare în modul pauză" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Adaugă fișiere la descărcare cu prioritate automată" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Încearcă să descarci întâi prima și ultima bucată" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Pornește următorul fișier pauzat când un fișier s-a terminat" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Din aceeași categorie" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "În ordine alfabetică" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Prealocare spațiu pe disc pentru noile fișiere" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Pentru noile fișiere se prealocă spațiu pe disc pentru întreg fișierul, " "astfel se reduce fragmentarea" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Oprește descărcarea când s-a atins limita spațiului disponibil" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Selectați asta dacă doriți ca aMule să verifice spațiul liber pe disk" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Introduceți aici minimum de spațiu pe disc dorit." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Salvează 10 surse de fișiere rare (< 20 surse)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Încărcări" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Adaugă noile fișiere partajate cu prioritate automată" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Dosar destinație pentru descărcări" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Dosar pentru fișiere descărcate temporar" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Dosare partajate" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(Click dreapta pe miniatura dosarului pentru partajare recursivă)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Partajează fișierele ascunse" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafice" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Întârziere actualizare : 5 secunde" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Timp pentru media graficului: 100 minute" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Scală grafic conexiuni: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Scală grafic descărcare:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Scală grafic încărcare:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Colori:" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Fundal" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Grilă" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Descărcare actuală" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Medie rulare descărcare" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Medie descărcare pe sesiune" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Încărcare actuală" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Medie rulare încărcare" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Medie încărcare pe sesiune" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Conexiuni active" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Miniatură rapidă pe bara de sistem" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Noduri Kad curente" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Noduri Kad care rulează" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Noduri Kad pe sesiune" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Selectează" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Arbore" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Număr de versiuni client arătate (0=nelimitat)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! ATENȚIE !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Maxim conexiuni noi /5 secunde" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Dimensiune fișier tampon: 240000 octeți" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Dimensiune coadă încărcare: 5000 clienți" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Interval reâmprospătare conexiune server: Dezactivat" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Dezactivează temporizarea modului de st-by al computerului" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Aspect interfață de utilizat:" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Arată \"Manipulator linkuri rapide eD2k\" în fiecare fereastră." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Arată informații extinse în fila categoriilor" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "Arată în titlu versiunea aplicației" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Arată rata de transfer în titlu" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Înaintea numelui aplicației" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "După numele aplicației" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Arată lățimea de bandă globală" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Orientare verticală a barei de unelte" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Arată steagul țării pentru clienți" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Descărcare coadă fișiere" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Arată procentul progresului" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Arată bara de progres" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Plat" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Rotund" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Sortare automată fișiere (consum mare de CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule va sorta automat coloanele în lista descărcărilor" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parametrii conexiune externă" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Acceptă conexiuni externe" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP a interfeței de ascultare:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Introduceți aici un ip valid în formatul a.b.c.d pentru ascultarea " "interfeței EC. Un câmp gol sau 0.0.0.0 va însemna orice interfață." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "port TCP:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Activează înaintarea portului UPnP pe portul EC" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Parolă" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Parametrii server web" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Rulează la pornire serverul web" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Șablon web" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Parolă cu drepturi depline" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Activează utilizatorul cu drepturi scăzute" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Parolă cu drepturi scăzute" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Activează înaintarea portului UPnP pe portul serverului web" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Port UPnP TCP server web (facultativ)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Timp reâmprospătare pagină (în secunde)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Activează compresia Gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "Bine" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Apăsați aici pentru a aplica orice modificare efectuată la preferințe." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Resetează orice schimbare efectuată la preferințe." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Titlu :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Comentariu :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Director intrare :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Schimbă prioritatea pentru noile fișiere alocate :" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Nu modifica" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Selectați culoarea pentru această categorie (selectată curent):" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Resetează" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Apăsați acest buton pentru resetarea jurnalului." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Apăsați acest buton pentru a se actualiza lista serverelor din URL ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Listă server" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Introduceți aici adresa URL pentru un fișier server.met și apăsați butonul " "din stânga pentru a actualiza lista serverelor. cunoscute." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Adăugare server manual: Nume" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Introduceți aici numele noului server" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Introduceți aici adresa IP a serverului, utilizând formatul x.x.x.x ." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Introduceți aici portul serverului." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Adăugați un server manual (completați întâi câmpurile din stânga) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Jurnal aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Informație server" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Informație eD2k" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Informație Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Apăsați pe acest buton pentru a actualiza lista nodurilor din URL ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Noduri (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Introduceți aici adresa url către un fișier nodes.dat și apăsați butonul din " "stânga pentru actualizarea listei nodurilor cunoscute." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Stare noduri" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Bootstrap" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Nod nou" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Port:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Bootstrap de la clienții cunoscuți" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Deconectare Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Utilizează identificarea securizată a utilizatorilor" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Este recomandat să activați această opțiune. Nu veți primii credite dacă SUI " "nu este activat." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Protocol disimulare" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Suport protocol disimulare" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Această opțiune activează Protocolul Disimulare, și determină aMule să " "accepte conexiuni disimulate de la alți clienți." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Utilizați disimularea pentru conexiunile de ieșire" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Această opțiune determină aMule să utilizeze Protocolul Disimulare când " "conectează alți clienți/servere." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Acceptă numai conexiuni disimulate" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Această opțiune face aMule să accepte numai conexiuni disimulate. Veți avea " "mai puține surse, dar tot traficul va fi disimulat" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Fiecare" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Nimănui" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Cine poate vedea fișierele mele partajate:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" "Selectați cine poate solicita să vizualizeze o listă a fișierelor partajate." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Filtrare-IP" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtru clienți" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Activați filtrarea IP-urilor client cum este definit în fișierul ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtrare servere" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Activați filtrarea IP-urilor server cum este definit în fișierul ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Reâncarcă lista" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "Reâncarcă lista IP-urilor de filtrat din fișierul ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Actualizează acum" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Actualizare automată filtru ip la pornire" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Nivel de filtrare:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Filtrează mereu IP-urile LAN" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Manipulare paranoică a IP-urilor care nu se potrivesc" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Respinge pachetele dacă adresa ip a clientului este diferită de adresa ip de " "unde este primit pachetul. Utilizați cu precauție." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Utilizați în tot sistemul ipfilter.dat dacă este disponibil" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Dacă nu s-a găsit local ipfilter.dat, permite utilizarea unui fișier " "ipfilter din sistem." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Activare semnătură online" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Activați scrierea fișierului OS, care poate fi utilizat de aplicații " "exterioare la crearea semnăturilor și aprecierii." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Frecvență actualizare (secunde)" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Schimbați frecvența (în secunde) a actualizărilor semnăturii online." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Salvează fișierul semnăturii online în:" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Apăsați aici pentru a selecta directorul care conține fișierele cu semnătura " "online." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtrare mesaje de intrare (cu excepția chat-ului curent):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtrează toate mesajele" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtrare mesaje de la persoane care nu sunt în lista de prieteni" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtrare mesaje de la clienți necunoscuți" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtrare mesaje conținând )utilizați ',' ca separator):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "adăugați aici cuvintele pe care amule trebuie să le filtreze și să blocheze " "mesajele care le includ" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Arată în jurnal mesajele primite" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Comentarii" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtrare comentarii conținând (utilizați ',' ca separator):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Conectare automată la server fără proxy" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Activează autentificarea" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Activează/dezactivează autentificarea cu nume utilizator/parolă" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Utilizator:" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Numele de utilizator de utilizat pentru conectarea la proxy" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Password:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Parola de utilizat pentru conectarea la proxy" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Activează proxy" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Activează/dezactivează suportul proxy" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Tip proxy:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Gazdă proxy:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Numele de gazdă proxy" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Port proxy:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Portul proxy" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Conectează la:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Autentificare la amule distant" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Nume utilizator" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Amintește aceste configurări" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Activează jurnalizarea de depanare detaliată." #: src/muuli_wdr.cpp:3169 msgid "Only to Logfile" msgstr "Numai la fișierul jurnal" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Categorii mesaje:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Așteptați..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Adaugă importurile" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Reâncearcă selectatele" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Elimină selecția" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Tipuri de evenimente" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Statistici și clienți în coadă pentru fișier(ele) selectate : Sesiune / Tot " "timpul" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Încărcări active" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Procentul din totalul fișierelor" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "All files" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Selected files" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Numai încărcările active" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Arată clienții pentru" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Reâncarcă:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Reâncărcați fișierele partajate" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Trimite" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Trimite mesajul specificat" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Închide această sesiune de chat." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Conectare la orice server și/sau Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Fișiere partajate" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Dezactivat [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "octet" msgstr[1] "octeți" msgstr[2] "octeți" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kO" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TO" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "octet/secundă" msgstr[1] "octeți/secundă" msgstr[2] "octeți/secundă" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MO/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "secunde" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "minute" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "ore" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Zile" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "toţi" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "toți ceilalți" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "incomplet" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Oprit" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Archive" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Text" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Activă" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Utilizând directorul de configurare: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" "Se așteaptă ca procesul de conversie pentru fișierul parțial să moară..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Se importă %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Se citește dosarul temporar" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Se obține informația de bază din fișierul informație descărcat" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Se creează fișierul destinație" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Se încarcă datele din fișierul vechi descărcat (%u of %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" "Se salvează datele blocului într-un nou și unic fișier descărcat (%u of %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Se preia sursa informației fișierelor descărcate" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Se adaugă descărcarea și se salvează fișierul parțial nou" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Se importă fișiere parțiale" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Stare" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Fișier index" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Disc: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Alegeți un dosar pentru a căuta descărcări temporare! (subdosarele vor fi " "incluse)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Doriți ca fișierele sursă ale descărcărilor importate cu succes să fie " "șterse?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Se elimină sursele?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "EROARE: A eșuat crearea fișierului parțial" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Se încearcă încărcarea copiei de siguranță a met-file de la %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "EROARE: A eșuat deschiderea fișierului part.met : %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "EROARE: fișierul part.met este de dimensiune 0: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "EROARE: Versiune nevalidă a fișierului part.met: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Eroare: %s (%s) este corupt (etichete greșite: %s), nu se poate încărca " "fișierul." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "EROARE: %s (%s) este corupt (număr etichetă greșit), nu se poate încărca " "fișierul." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Se încearcă recuperarea informației fișierului..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Se recuperează-fișierul nedenumit - se va încerca recuperarea ca " "RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "S-a recuperat toate fișierele informație disponibile :D - Se încearcă " "utilizarea lor..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Nu se poate recupera informația fișierului :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "A eșuat deschiderea %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "ATENȚIE: %s ar putea fi corupt (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "EROARE în timpul salvării fișierului parțial: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "Eșuare IO în timpul salvării fișierului parțial:" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Nu se poate obține lungimea a '%s' - utilizând fișierul %s ." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' este cumva de dimensiune 0 - utilizând fișierul %s ." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "A eșuat salvarea fișierului part.met.seeds pentru %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "S-a salvat %i sursă sămânță pentru fișierul parțial: %s (%s)" msgstr[1] "S-au salvat %i surse semințe pentru fișierul parțial: %s (%s)" msgstr[2] "S-au salvat %i de surse semințe pentru fișierul parțial: %s (%s)" #: src/PartFile.cpp:1050 #, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Nu se poate citi fișierul semințe pentru fișierul parțial %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" "Eroare la citirea fișierului sămânță al fișierului parțial (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "S-a găsit partea coruptă (%d) în %d fișierul parțial %s - Rezultat index " "fișier |%s| Index fișier |%s|" msgstr[1] "" "S-a găsit partea coruptă (%d) în %d fișiere parțiale %s - Rezultat index " "fișier |%s| Index fișier |%s|" msgstr[2] "" "S-a găsit partea coruptă (%d) în %d de fișiere parțiale %s - Rezultat index " "fișier |%s| Index fișier |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "S-au găsit părți complete (%i) în %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "S-a finalizat reindexarea %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Eroare neașteptată în timpul finalizării %s. Fișier pauzat" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "S-a finalizat descărcarea: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Se șterge fișierul: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "Atenție: Nu se poate indexa partea descărcată - indexare incompletă pentru '%" "s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "EROARE: Nu se poate indexa partea descărcătă - indexare incompletă (%s). " "Aceasta nu ar trebui să se întâmple" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "EOF în timpul indexării părții descărcate %u cu lungimea %u (max %u) de " "fișiere parțiale '%s' cu lungimea %u: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" "ATENȚIE: Nu este suficient spațiu liber pe disk! Se pauzează fișierul: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Partea descărcată %i este coruptă în fișierul: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: S-a recuperat partea coruptă %i pentru %s -> Octeți salvați: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Se alocă" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Spațiu pe disc insuficient" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Descărcat" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "EROARE: A eșuat deschiderea fișierului parțial '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Valoare implicită a sistemului" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albaneză" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabă" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturian" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Bască" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgară" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Catalană" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Chineză (Simplificat)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Chinez (tradițional)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Croată" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Cehă" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Daneză" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Olandeză" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Englez (U.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estonă" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finlandeză" #: src/Preferences.cpp:648 msgid "French" msgstr "Franceză" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galiciană" #: src/Preferences.cpp:650 msgid "German" msgstr "Germană" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Grecesc" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Ebraică" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Maghiară" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italiană" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italian (elvețian)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japoneză" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Koreană" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lituaniană" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norvegian" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Poloneză" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugheză" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugheză (Brazilia)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Română" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Rusă" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Slovenă" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Spaniolă" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Suedeză" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turcă" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ucraineană" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Schimbă limba" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "Nu sunt instalate traduceri pentru aMule" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "Nu sunt limbi disponibile" #: src/Preferences.cpp:906 msgid "no options available" msgstr "Nu sunt opțiuni disponibile" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "S-a găsit o categorie nevalidă, se omite" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "Portul TCP nu poate fi mai mare decât 65532 fiindcă soclul UDP al serverului " "trebuie să fie TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Va fi folosit portul implicit (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Se aruncă directoarele partajate inexistente: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Conexiune" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Directoare" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Servere" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Fișiere" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Securitate" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Interfaţă" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filtre" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Control la distanță" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Semnătură online" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Advanced" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Evenimente" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Depanare" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "Următoarele variabile vor fi substituite:\n" " %PARTFILE - calea completă la fișier\n" " %PARTNAME - numai nume fișier" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Nu modificați aceste configurări dacă nu știți\n" "ce faceți, altfel puteți face ușorca lucrurile să devină groaznice.\n" "\n" "aMule va rula perfect fără să ajustați nimic\n" "din aceste configurări." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "A eșuat conectarea Cfg la widget cu ID %d și cheia %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "A eșuat transferul datelor de la Cfg la widget cu ID %d și cheia %s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Tipul de proxy la care sunteți conectat" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "A eșuat transferul datelor de la widget la Cfg cu ID %d și cheia %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule trebuie repornit pentru ca aceste modificări să fie activate:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- Portul TCP s-a schimbat.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- Portul UDP s-a schimbat.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Portul conexiunii externe s-a schimbat.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Conectarea externă acceptă modificarea.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Interfața conexiunii externe s-a schimbat.\n" #: src/PrefsUnifiedDlg.cpp:619 msgid "- Protocol obfuscation support changed.\n" msgstr "- Suportul protocolului disimulare s-a schimbat.\n" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Lista de actualizare automată a serverelor este goală.\n" "'Actualizează automat lista serverelor la pornire' va fi dezactivată." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Ați activat conexiunile externe dar nu ați specificat o parolă.\n" "Conexiunile externe nu se pot activa până ce nu va fi specificată o parolă " "validă." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Limba s-a schimbat.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Dosarul temporar s-a schimbat.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- Rețeaua ED2K s-a activat.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Ambele rețele eD2k și Kad sunt dezactivate.\n" "Nu vă puteți conecta doar după ce veți activa cel puțin una dintre ele." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad nu va porni dacă portul UDP este dezactivat.\n" "Activați portul UDP sau dezactivați Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Trebuie să reporniți aMule acum.\n" "Dacă nu îl reporniți acum, nu vă plângeți dacă ceva rău se întâmplă.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Lista dumneavoastră pentru actualizarea automată a serverelor este goală.\n" "Introduceți în listă cel puțin o adresă URL pentru a se indica un fișier " "server.met valid.\n" "Apăsați butonul \"List\" cu această căsuță pentru a introduce o adresă URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Fișiere temporare" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Fișiere de intrare" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Semnături online" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Alegeți un dosar pentru %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Navigați pentru playerul video" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Selectare navigator" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Executabil%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Editare listă server" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Adăugați aici adresele URL pentru descărcat fișierele server.met.\n" "Numai o singură adresă URL pe fiecare linie." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Întârziere actualizare: %d secundă" msgstr[1] "Întârziere actualizare: %d secunde" msgstr[2] "Întârziere actualizare: %d de secunde" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Timp pentru media graficului: %d minut" msgstr[1] "Timp pentru media graficului: %d minute" msgstr[2] "Timp pentru media graficului: %d de minute" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Scală grafic conexiuni: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Dimensiune fișier tampon: %d octet" msgstr[1] "Dimensiune fișier tampon: %d octeți" msgstr[2] "Dimensiune fișier tampon: %d de octeți" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Dimensiune coadă încărcări: %d client" msgstr[1] "Dimensiune coadă încărcări: %d clienți" msgstr[2] "Dimensiune coadă încărcări: %d de clienți" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Interval reâmprospătare conexiune server: %d minut" msgstr[1] "Interval reâmprospătare conexiune server: %d minute" msgstr[2] "Interval reâmprospătare conexiune server: %d de minute" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Interval reâmprospătare conexiune server: Dezactivat" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "dezactivată" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Execută comanda la evenimentul '%s' " #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Activați executarea de comenzi în nucleu" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Comandă nucleu:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Activează execuția comenzi pe GUI" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Comandă GUI:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Următoarele variabile vor fi înlocuite:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "Dimensiunea mică trebuie să fie mai mică decât dimensiunea mare. Dimensiunea " "maximă s-a ignorat." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Atenționare căutare" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Principal" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Nu se poate face o căutare Kad dacă nu rulează Kad" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "Nu se poate face o căutare eD2k dacă eD2k nu este conectat" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Eroare neașteptată în timp ce se încerca o căutare Kad:" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ID fișier" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Fișier" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Descarcă în categoria" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "Obține %s pentru acest fișier" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Caută fișiere asociate (eD2k, server local)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Marchează ca fișier cunoscut" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Copiază link-ul eD2k în memoria temporară" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Anulat" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Nou" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "A eșuat conectarea la toate serverele disimulate listate. Se execută un alt " "pas fără disimulare." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "A eșuat conectarea la toate serverele listate. Se execută un alt pas." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Rețeaua eD2k este dezactivată în preferințe, nu se conectează." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "În lista de servere nu s-au găsit servere valide pentru conectare" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Conectat la %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Conexiune stabilită cu: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Eroare fatală în timpul conectării. Conexiunea la internet poate fi căzută" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "S-a pierdut conexiunea cu %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) par să fie moarte." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) par să fie pline." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Se va reîncerca conectarea automată la server în %d secundă" msgstr[1] "Se va reîncerca conectarea automată la server în %d secunde" msgstr[2] "Se va reîncerca conectarea automată la server în %d de secunde" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Conexiune pierdută" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Conexiunea la %s (%s:%i) a eșuat." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "EROARE: Soclu nevalid la expirarea verificării" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Încercarea conectării la %s (%s:%i) a expirat." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "S-a primit ultimele rezultate pentru căutarea DNS, se înlătură." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Se încarcă fișierul server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Fișierul server.met nu a fost găsit!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "A eșuat încărcarea fișierului server.met '%s', s-a întâlnit un format " "necunoscut." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "A eșuat deschiderea server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Fișierul server.met este corupt, s-a găsit o versiune de etichetă nevalidă: " "0x%x, dimensiune %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "S-a găsit %i server în server.met" msgstr[1] "S-au găsit %i servere în server.met" msgstr[2] "S-au găsit %i de servere în server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d server adăugat" msgstr[1] "%d servere adăugate" msgstr[2] "%d de servere adăugate" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Eroare: fișierul 'server.met' este corupt:" #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "Eroare IO la citirea 'server.met': " #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Serverul nu s-a adăugat: [%s:%d] nu specifică un port valid." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" "Serverul nu a fost adăugat: Adresa IP a [%s:%d] este filtrată sau nevalidă." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Serverul nu s-a adăugat: S-a găsit în listă un server care se potrivește cu " "IP:Port [%s:%d] ." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Serverul s-a adăugat: Server la [%s:%d] utilizând numele '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Sunteți conectat la serverul pe care încercați să-l ștergeți, deconectați-vă " "întâi." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "A eșuat deschiderea '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "A eșuat salvarea server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "URL nevalid" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "S-a finalizat descărcarea listei serverelor de la %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Nu s-a găsit nici o adresă de intrare în lista serverelor în 'addresses." "dat' . Lipiți o adresă validă listă server în acest fișier pentru a se " "actualiza automat lista serverelor" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Pornește descărcarea listei serverelor de la %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "ATENȚIE: Adresa URL specificată pentru actualizarea automată a serverelor " "este nevalidă: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "Nu este o adresă url de descărcare automată server.met validă în addresses." "dat" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "A eșuat descărcarea listei serverelor de la %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Serverul local este filtrat de filtrele IP, reconectați la un server diferit!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Nume server" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Adresă" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Descriere" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Utilizatori" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Static" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Version" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Sunteți conectat la un server pe care încercați să-l ștergeți. Întâi " "deconectați-vă. Serverul NU a fost șters." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Nume necunoscut)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Sigur doriți să ștergeți serverul static %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Servere (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Server" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Conectare la server" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Marcați serverul ca static" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Marcați serverul ca ne-static" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Marcați serverele ca statice" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Marcați serverele ca ne-statice" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Elimină server" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Elimină servere" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Elimină toate serverele" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Copiază link-urile eD2k în memoria temporară" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Reconectează la server" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Sigur doriți să ștergeți toate serverele?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Sigur doriți să ștergeți serverul selectat?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Sigur doriți să ștergeți serverele selectate?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "EROARE: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "ATENȚIE: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Noul ID client este %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "ATENȚIE: Ați primit Low-ID!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" "\tCel mai probabil este fiindcă vă aflați în spatele unui firewall sau " "router." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPentru mai multe informații, consultați http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "S-a primit o informație server necunoscută - prea scurtă" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "S-a primit %d server nou" msgstr[1] "S-au primit %d servere noi" msgstr[2] "S-au primit %d de servere noi" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Salvarea listei server terminată." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Serverul a respins ultima comandă" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "S-a primit un pachet fals de la serverul: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Eroare nerezolvată în timpul procesării pachetului de la server: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Nu se poate crea procesul de rezolvare DNS pentru conectarea la %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "Adresa IP a serverului %s (%s) este filtrată. Nu se conectează." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "utilizând protocolul de disimulare." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Se conectează la %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Nu se poate rezolva dns pentru serverul %s: Nu se poate conecta!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "" "Serverul nu s-a adăugat: Nu este specificat adresa IP sau numele de gazdă." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Serverul nu s-a adăugat: Portul specificat pentru server este nevalid." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Stare eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Stare Kademlia:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "Rulare în mod LAN" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Rulează" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Stare:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Stare conexiune:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Cu firewall - deschideți portul TCP %d în ruter sau firewall" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "Stare conexiune UDP:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Cu firewall - deschideți portul UDP %d în ruter sau firewall" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Stare firewall:" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Nici un prieten nu necesită - port TCP deschis" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Nici un prieten nu necesită - port UDP deschis" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Nici un prieten" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Se conectează la persoane" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Conectat cu prietenul la %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Surse indexate:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Cuvinte cheie indexate:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Note indexate:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Încărcare indexate:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Medie utilizatori:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Medie fișiere:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Nu rulează" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Se adaugă fișierul %s la partajări" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "S-a găsit %i fișier partajat cunoscut" msgstr[1] "S-au găsit %i fișiere partajate cunoscute" msgstr[2] "S-au găsit %i de fișiere partajate cunoscute" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "S-a găsit %i fișier partajat cunoscut, %i necunoscut" msgstr[1] "S-au găsit %i fișiere partajate cunoscute, %i necunoscute" msgstr[2] "S-au găsit %i de fișiere partajate cunoscute, %i necunoscute" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "EROARE: Se încearcă partajarea %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Directorul partajat nu a fost găsit, se omite: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Nu au fost găsite fișiere partajabile în directorul: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Nume utilizator" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Viteză descărcare" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Viteză încărcare" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Părți disponibile" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "Stare încărcare" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Stare descărcare" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Origine" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Nume fișier local" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "Listă fișiere partajate" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Cereri" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Solicitări acceptate" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Date transferate" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Rată partajare" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Părți obținute" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Surse complete" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Cale director" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Adaugă comentariu/evaluare" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Editare comentariu/evaluare" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Rename" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Adaugă fișierele în colecție la lista de transfer" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Copiază &URI magnet în memoria temporară" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Copiază link-ul eD2k în memoria temporară (&sursă)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" "Copiază link-ul eD2k în memoria temporară (sursă) (opțiunile &With Crypt)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Copiază link-ul eD2k în memoria temporară (&nume gazdă)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Copiază link-ul eD2k în memoria temporară (nume gazdă) (opțiuni With &Crypt)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Copiază link-ul eD2k în memoria temporară (informație &AICH)" #: src/SharedFilesCtrl.cpp:170 msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Copiază link-ul eD2k în memoria temporară (sursă + informație &AICH)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Vă trebuie un HighID pentru a se crea o legătură sursă validă" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Fișiere partajate (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Fișier parțial]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Nume fișier distant" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Date încărcate (sesiune (total)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Adițional total (pachete): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Adițional cerere fișiere (pachete): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Adițional schimb surse (pachete): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Adițional server (pachete): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Adițional kad (pachete): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Adițional criptate (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Încărcări active: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Încărcări în așteptare: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Total încărcări realizate cu succes pe sesiuni: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Total încărcări eșuate pe sesiuni: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Medie timp încărcare: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Date descărcate (sesiune(total)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Surse găsite: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Descărcări active (bucăți): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Raport ÎN:Des sesiune (total): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Medie rată descărcare (sesiune): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Medie rată încărcare (sesiune): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Rată maximă descărcare (sesiune): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Rată maximă încărcare (sesiune): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Reconectări: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Timpul de la primul transfer: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Conectat la server din: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Conexiuni active (estimativ): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "S-a atins limita maximă de conexiuni: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Medie conexiuni (estimativ): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Vârf conexiuni (estimare): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Clienți" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Necunoscut: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Filtrat: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Interzis: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Total: %i Cunoscute: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Servere funcționale: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Servere eșuate: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Total: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Servere șterse: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Servere filtrate: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Utilizatori pr serverele funcționale: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Fișiere pe serverele funcționale: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Total utilizatori: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Total fișiere: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Ocupare server: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Număr de fișiere partajate: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Dimensiunea totală a fișierelor partajate: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Medie dimensiune fișier: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Sistem de operare" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Nu s-a primit" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Conexiuni active (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Indisponibil" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Niciodată" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Comanda '%s' cu pid '%d' s-a finalizat cu cod stare '%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Execută și ieși." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Format IP nevalid. Utilizați xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Această comandă necesită un argument. Argumentele valide sunt: 'toate', nume " "fișier, sau un număr.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Se procesează după index:" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Se procesează după nume fișier:" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Această comandă necesită un argument. Argumente valide: un index fișier.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Nu este un număr valid\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Nu este un index valid (lungimea trebuie să fie exact 32 caractere)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "" "Nu s-a definit nici un tip de căutare.\n" "Tastați 'ajutor căutare' pentru a obține mai mult ajutor.\n" #: src/TextClient.cpp:553 #, c-format msgid "Download File: %lu %s\n" msgstr "Descărcare fișier: %lu %s\n" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Solicitarea a eșuat cu o eroare necunoscută." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operația a fost un succes." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Solicitarea a eșuat cu următoarea eroare: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Filtrarea IP pentru clienți este %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "OPRIT" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "PORNIT" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Filtrarea IP pentru servere este %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Nivelul actual al filtrului IP este %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Limite lățime de bandă: În: %u kB/s, Desc: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Conectat la %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Se conectează acum" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "cu firewall" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Descărcat:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Încărcat:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Clienți în coadă:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Total surse:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Numărul rezultatelor căutării: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Progres căutare: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Progresul căutării nu este disponibil" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "S-a primit un răspuns necunoscut de la server, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Arată o scurtă informație de stare." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" "Arată starea conexiunii, viteza curentă de încărcare/descărcare, etc.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Afișează arborele complet al statisticilor." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Facultativ, un număr în domeniul 0-255 poate fi trecut ca argument la " "această\n" "comandă, care vă spune cât de multe intrări a versiunii clientului ar trebui " "să\n" "fie arătate. Trecând 0 sau lăsând necompletat înseamnă 'nelimitat'.\n" "\n" "Exemplu: 'statistici 5' va arăta numai primele 5 versiuni de început pentru " "fiecare tip de client.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Închide aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Închide nucleul distant care rulează (amule/amuled).\n" "Aceasta va închide de asemenea și clientul text, fiind nefuncțional fără un\n" "nucleu care rulează.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Reâncarcă obiectul dat." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Reâncarcă lista fișierelor partajate." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Reâncarcă tabelul de filtrare IP." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Reâncarcă tabelul curent de filtrare IP." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Actualizează tabelul de filtrare IP din URL." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" "Dacă adresa URL este omisă este utilizată în schimb adresa URL din " "preferințe." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Conectare la rețea." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Aceasta va conecta la toate rețelele care sunt activate în preferințe.\n" "Puteți de asemenea specifica facultativ o adresă server de forma IP:Port, " "pentru a vă conecta\n" "numai la acel server. Adresa IP trebuie să fie o adresă IPv4 zecimală " "despărțită de puncte,\n" "sau un nume DNS rezolvabil." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Conectează numai la eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Conectează numai la Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Deconectează de la rețea." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" "Aceasta va deconecta de la toate rețelele la care sunteți actualmente " "conectat.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Deconectează numai de la eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Deconectează numai de la Kad." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Adaugă la nucleu un link eD2k sau magnet." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Link-ul eD2k de adăugat poate fi:\n" "*) un fișier link (ed2k://|file|...), va fi adăugat la coada descărcărilor,\n" "*) un link server (ed2k://|server|...), va fi adăugat la lista serverelor,\n" "*) sau un link listă server, caz în care toate serverele din listă vor fi " "adăugate la\n" " lista serverelor.\n" "\n" "Link-ul magnet trebuie să conțină indexul eD2k și lungimea fișierului.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Configurează o valoare preferată." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Configurează preferințele filtrării IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Pornește filtrarea IP pentru clienți și servere." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Oprește filtrarea IP pentru clienți și servere." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Activați/dezactivați filtrarea IP pentru clienți." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Pornește filtrarea IP pentru clienți." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Oprește filtrarea IP pentru clienți." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Activează/dezactivează filtrarea IP pentru servere." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Pornește filtrarea IP pentru servere." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Oprește filtrarea IP pentru servere." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Selectați nivelul de filtrare IP." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Nivelele de filtrare valide sunt în domeniul 0-255, iar valoarea implicită " "(inițială)\n" "este 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Configurare limite lățime de bandă." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "Valoarea dată acestei comenzi trebuie să fie în kiloocteți/secundă.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Configurare limită lățime de bandă încărcare." #: src/TextClient.cpp:900 src/TextClient.cpp:902 msgid "The given value must be in kilobytes/sec.\n" msgstr "Valoarea dată trebuie să fie în kiloocteți/secundă.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Configurare limită lățime de bandă descărcare." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Ia și afișează o valoare preferată." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Obține preferințele filtrării IP." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Obține starea filtrării IP pentru clienți și servere." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Obține starea filtrării IP numai pentru clienți." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Obține starea filtrării IP numai pentru servere." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Obține nivelul filtrării IP." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Obține limitele lățimii de bandă." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Execută o căutare." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Un tip de căutare trebuie specificată dând tipul:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Exemplu: 'caută fișier kad' va executa o căutare kad pentru \"fișier\".\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Execută o căutare globală." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Execută o căutare locală" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Execută o căutare kad" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Arată rezultatul ultimei căutări." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Revino la rezultatele căutării anterioare.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Arată progresul unei căutări." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Arată progresul unei căutări.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Pornește descărcarea unui fișier" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Trebuie dat numărul unui fișier de la ultima căutare.\n" "Exemplu: 'descarcă 12' va porni descărcarea fișierului cu numărului 12 a " "căutării anterioare.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Pauzează descărcarea." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Reia descărcarea." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Anulează descărcarea." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Configurare prioritate descărcare." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" "Configurați prioritatea unei descărcări la Scăzută, Normală, Înaltă sau " "Automată.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Configurează prioritatea la scăzută." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Configurează prioritatea la normală." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Configurează prioritatea la înaltă." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Configurează prioritatea la automată." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Arată cozile/listele." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Arată coada de încărcare/descărcare, lista serverelor sau fișierele " "partajate.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Arată coada încărcărilor." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Arată coada descărcărilor." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Arată jurnalul." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Arată lista serverelor." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Resetare jurnal." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Comandă învechită, utilizați '%s' în schimb." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Este o comandă învechită, și poate fi înlăturată în viitor.\n" "Utilizați '%s' în schimb.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "client text aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Se convertește vechile indexări AICH în '%s' la 64b în '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "ATENȚIE: Numele fișierului '%s' este nevalid și a fost redenumit la '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "ATENȚIE: Fișierul '%s' deja există, noul fișier este redenumit la '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Sigur doriți să anulați și să ștergeți toate fișierele din această categorie?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Confirmare necesară" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Sunt suportate numai 99 de categorii." #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Prea multe categorii!" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Toate celelalte" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Selectează filtrul de vizualizare" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Adaugă categorie" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Editează categoria" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Elimină categoria" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "A eșuat deschiderea fișierului (%s), se elimină din lista fișierelor " "partajate." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Indexare solicitată pentru fișierul necunoscut: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Se reia încărcarea fișierului: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Se suspendă încărcarea fișierului: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "A eșuat executarea comenzii `%s' la evenimentul `%s' ." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Descărcare completă" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Calea completă la fișier." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Numele fișierului fără componenta de cale." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "Indexul eD2k al fișierului." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Dimensiunea fișierului în octeți." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Timp cumulat activitate de descărcare:" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "O nouă sesiune chat este pornită" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Expeditor mesaj." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Fără spațiu" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Partiție disk." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Eroare la finalizare" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Se procesează numărul fișierului %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" "Ați fost întrebat pentru indexările parțiale (Utilizat numai pentru fișiere " "> 9.5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Fișier inexistent !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, creatorul de link-uri eD2k aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Bine ați venit!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Parametrii de intrare" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Fișier de indexat" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Adaugă o adresă URL facultativă pentru acest fișier" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Introduceți aici fișierul pentru care doriți să calculați linkul eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Introduceți aici adresa URL pe care doriți să o adăugați la linkul eD2k: " "Adaugă / la sfârșit pentru a permite aLinkCreator să adauge numele de fișier " "curent" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Șterge" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Creează un link cu indexuri parțiale" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Ajutați să popularizați rapid fișierele noi și rare, cu costul unei măriri a " "dimensiunii linkului" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Fișier index MD4" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Fișier index eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "legătură eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Salvează" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Copiază în clipboard" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Deschide" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Deschide un fișier pentru a calcula legătura sa eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Copiază în memoria temporară link-ul eD2k calculat" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Salvează ca" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Salvează legătura eD2k calculată în fișier" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Despre aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Selectați fișierul pentru care doriți să calculați legătura eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Nu se poate deschide memoria temporară" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Nimic de copiat pentru acum !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Selectați fișierul link-ului calculat eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Nu se poate deschide" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Introduceți un nume de fișier valid" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Nimic de salvat pentru acum !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, creatorul aMule de legături eD2k\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps de la http://www.everaldo.com și http://www.icomania.com\n" "și http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distribuit sub GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Se indexează..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator lucrează pentru dumneavostră" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Se calculează indexul MD4..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Se calculează indexurile eD2k..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Anulat !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Realizat în %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Ați adăugat deja acest URL !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Introduceți un URL valid" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Nu se poate deschide %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "S-a depășit memoria în timpul calculului indexului ed2k!" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i zi(e) %i oră(e) %i min %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, Statistici online aMule" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Rată maximă de descărcare de când wxCas rulează" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "" "Rată maximă absolută de descărcare în timpul rulării anterioare a wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistem" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Oprește reâmprospătarea automată" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Salvează imaginea statisticilor online" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Tipărește imaginea statisticilor online" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Configurare preferințe" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Despre wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Pornește reâmprospătarea automată" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Reâmprospătarea automată oprită" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Reâmprospătarea automată pornită" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Salvează imaginea statisticilor" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Statistici online aMule" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "A fost o problemă cu tipărirea.\n" "Poate imprimanta curentă nu este configurată corect?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Tipărire" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Bazat pe CAS de Pedro de Oliveira \n" "\n" "Distribuit sub GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Vai vai, aMule nu rulează..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule rulează" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule rulează, dar deconectat" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule se conectează..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Vai vai, starea aMule este necunoscută..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule" #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr "a rulat pentru" #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr "este oprit !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr "nu este conectat !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr "se conectează..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr "se întâmplă ceva ciudat, verificați !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr "este conectat la" #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "dezactivat" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr "este pornit" #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr "cu" #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Descărcat în total:" #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Încărcat: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Descărcat în această sesiune:" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Descărcare:" #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Încărcare:" #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Partajare:" #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " fișier(ere), Clienți în coadă:" #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Timp:" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " pornit " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Medie încărcare sistem (1-5-15 min): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Sistem activ:" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Director care conține fișierul amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Introduceți aici directorul unde se află fișierul amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Interval rată de reîmprospătare în secunde" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "" "Generează o imagine statistică la fiecare reâmprospătare a evenimentului" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" "Introduceți aici directorul unde doriți să se genereze imaginea statistică" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Încărcați periodic imaginea statistică pe un server FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "Url FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Cale FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Introduceți aici adresa URL a serverului FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Introduceți aici directorul unde puneți imaginea statistică pe serverul FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Utilizator" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "" "Introduceți aici numele de utilizator pentru autentificare pe serverul FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Introduceți aici parola de autentificare în serverul FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Rată interval actualizare FTP în minute" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Validează" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Dosar care conține fișierul semnătură" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Dosar unde se generează imaginea statistică" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Încarcă modelul " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Port server web HTTP" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Utilizează înaintarea portului UPnP pe portul serverului web" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Port UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Utilizează compresia gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Parola pentru accesul nerestricționat pentru serverul web" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Parola de oaspete pentru serverul web" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Permite accesul oaspeților" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Interzice accesul oaspeților" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Încarcă/salvează configurările serverului web de la/la aMule distant" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Calea fișierului de configurare aMule. NU UTILIZAȚI DIRECT!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Dezactivează interpretorul PHP (învechit)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Recompilează paginile PHP la fiecare solicitare" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Serverul Web aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "conexiunea clientului web este acceptată\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "EROARE: nu se poate accepta conexiunea clientului web\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Solicitare eșuată cu următoarea eroare: %s. " #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Fișierul index nu a fost găsit:" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sesiune expirată - se solicită autentificarea\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sesiunea este ok, sunteți autentificat\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sesiunea este ok, nu sunteți autentificat\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Nu este deschisă nici o sesiune - va solicita autentificare\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sesiunea s-a creat - se solicită autentificarea\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Se procesează cererea [original]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Nu s-a specificat nici o parolă, autentificarea nu va fi permisă." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Se verifică parola\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Index parolă nevalid\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Parolă validă\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Parolă greșită\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Nu ați introdus nici o parolă. Nu se permite fără parolă.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Deautentificare solicitată\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Se procesează cererea [redirecționat]: " amule_2.3.1+git20151120.0023527bc2.orig/po/ru.po0000644000175000017500000075164212611472361017126 0ustar morphmorph# translation of amule_2007-08-29.po to Русский # aMule project source code strings for i18n. # This file is distributed under the same license as the aMule package. # # # Nick Shaforostoff , 2005. # Konstantin , 2005. # toshi , 2006. # Ivan Nazimov , 2007. # Nick Shaforostoff , 2008. # Radist Morse , 2008. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-06-19 18:31+0100\n" "Last-Translator: Radist Morse \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: ru\n" "X-Poedit-Language: Russian\n" "X-Poedit-Country: RUSSIAN FEDERATION\n" "X-Poedit-SourceCharset: UTF-8\n" "X-Generator: LoKalize 0.2\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" "10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Добавить в друзья" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Вы должны ввести правильный IP-адрес и порт." #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Информация" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Указанный хеш пользователя недопустим." #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Не удалось открыть файл ED2KLinks." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "ПРЕДУПРЕЖДЕНИЕ: Вы не можете добавить себя в качестве источника для eD2k " "ссылки если у вас lowid." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Выходим из основного приложения..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Завершаем процесс amuleweb с pid `%ld' ... " #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Убиваем процесс amuleweb с pid `%ld' ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Неудачно" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Прекращаем работу ядра." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "выключение aMule завершено." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Результаты дебага памяти при выходе из aMule:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "EC конфигурация" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Пароль задан и внешние соединения разрешены." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "ПРЕДУПРЕЖДЕНИЕ" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "В связи со сменой версии, значение вашей локали было изменено на значение по " "умолчанию. Извините." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Сведения" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Ваш список серверов пуст.\n" "Скачать новый список?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Загрузить список серверов" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "веб-сервер работает с pid %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Вы хотите запускать веб-сервер при загрузке, но исполняемый файл amuleweb не " "может быть запущен. Установите пакет содержащий веб-сервер aMule или " "скомпилируйте его с опцией --enable-webserver и запустите make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "ОШИБКА" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Невозможно связать порты с указанными адресами: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Порт %u не доступен. У вас будет LowID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Порт %u недоступен!\n" "\n" "Это означает что вам будет выдан LowID.\n" "\n" "Проверьте вашу сетевую конфигурацию, убедитесь что необходимый порт открыт." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Не удалось создать aMule OnlineSig файл" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Не удалось создать aMule OnlineSig файл" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Выбранная локаль отсутствует в вашей системе (тем не менее, будет " "произведена попытка ее использовать)." #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Это первый запуск aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Эта версия является тестовой и обновляется ежедневно.\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "мы не предоставляем никаких гарантий на случай каких либо повреждений, " "пожара \n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "или же смерти вашей любимой собачки. И все же использование ее *должно* быть " "безопасным. \n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Дополнительную информацию, поддержку и обновленные версии вы найдете на " "нашем сайте \n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "www.aMule.org, или на нашем irc-канале #aMule, находящемся на сервере irc." "freenode.net. \n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Сообщайте нам о найденных ошибках на форум http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Указан неверный каталог для файлов Online-подписей!\n" "Online-подписи будут отключены пока вы не исправите это в настройках." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Имя сервера подтверждено" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Выделение место под файл '%s' не удалось: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "Ошибка: невозможно открыть файл журнала" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "ПРЕДУПРЕЖДЕНИЕ: файл журнала пуст. Что-то здесь не так :-(" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Журнал был очищен" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Сообщение сервера: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "Пропущена загрузка %s, так как запрашиваемый файл не новее." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Ошибка при загрузке списка узлов." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Ошибка при загрузке файла контроля версии" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Поврежден файл контроля версии" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Вы используете устаревшую версию aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" "Версия вашего aMule - %i.%i.%i, тогда как актуальная версия - %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Актуальная версия aMule всегда доступна тут: http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "ВНИМАНИЕ: Версия вашего aMule устарела: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Ваша копия aMule актуальна." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Ошибка при загрузке файла контроля версии" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Польз.: %s | Файлов: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Польз.: E: %s K: %s | Файлов: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Нет выделенной сети" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "LowID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "HighID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Соединен с %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Подключение к %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Отсоединен от eD2k" # Kad как сеть, или служба - поэтому в женском роде # да, согласен #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad запущена." # Kad как сеть, или служба - поэтому в женском роде # согласен #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad остановлена." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Подключен к Kad (норм.)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Подключен к Kad (за брандмауэром)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Отключился от Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Сеть Kad не может быть использована если порт UDP выключен в настройках. " "Отменяю запуск." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Сеть Kad выключена в настройках. Отменяю соединение." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ОШИБКА: демон aMule не может быть использован когда внешние соединения " "выключены. Чтобы включить внешние соединения, используйте aMule, или " "запустите amuled с параметром --ec-config, или установите ключ " "\"AcceptExternalConnections\" равным 1 в файле ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "ОШИБКА: Для использования внешних соединений необходим пароль, а без внешних " "соединений демон aMule бесполезен. Чтобы запустить aMule-демона необходимо " "заполнить поле \"ECPassword\" в файле ~/.aMule/amule.conf. Запустите amuled " "с флагом --ec-config чтобы создать пароль. Более подробную информацию вы " "найдете на http://wiki.amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - запускаем таймер" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: уходим в фоновый режим - до встречи" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Не удалось создать pid-файл" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "Ошибка: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "aMule %s (основан на eMule)." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Работает на %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "Посетите http://www.amule.org для проверки наличия новой версии." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ФАТАЛЬНАЯ ОШИБКА: не удалось создать таймер" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Удаленное управление aMule" # Used only in CVS! #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Версия CVS:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "Многоплатформенный p2p клиент основанный на eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Сайт: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Форум: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Контакт: admin@amule.org (по административным вопросам) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 команда aMule \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Часть aMule основана на \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: пиринговый роутинг на основе XOR-метрики.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "Copyright (c) 2002-2011 Петр Маймунков ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Сообщение" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "диалоговое окно aMule уничтожено" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Идет подключение" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Соединение" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: не соединено" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: За брандмауэром" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Подключена" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Идет подключение" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr " Kad: Выключено" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Отменить" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Прекратить попытки соединения" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Отключиться" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Отключиться от работающих сетей" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Подключиться" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Подключиться к разрешенным сетям" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Передача: %.1f(%.1f) | Прием: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Передача: %.1f | Прием: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Подключен)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Отключен)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Вы действительно хотите выйти из %s?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Подтверждение выхода" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Команда запуска:" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- по умолчанию -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Каталог с темами оформления '%s' не существует." #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "ПРЕДУПРЕЖДЕНИЕ: невозможно открыть для чтения файл скина '%s'" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Сети" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Окно сетей" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Поиск" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Окно поиска" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Загрузки" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Окно загрузки" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Публикуемые файлы" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Окно публикуемых файлов" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Сообщения" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Сообщения" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Статистика" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Статистика" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Настройки" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Окно настроек клиента" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Импорт" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Инструмент импортирования частично загруженных файлов (part files)" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "О программе" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "О программе/Помощь" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Сеть eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Сеть Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Нет сети" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "удаленное управление aMule" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Фатальная Ошибка: не удалось создать таймер ядра" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Подключиться к удаленному aMule" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Фатальная Ошибка: не удалось создать Poll-таймер" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Переходим в событийный цикл..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Подключаемся..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Попытка подключиться не удалась " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Обработчик событий EC удаленного GUI" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Выключаемся" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Неудачное соединение. Невозможно соединиться с %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Соединение прервано. Возможно, aMule остановлен." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Готов" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Все" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" "Не удается создать директорию '%s' для категории '%s', оставляем директорию " "'%s'." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Неизвестно" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Не удалось получить список доступных файлов от '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Ищем друга для lowid-соединения" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Поддельная версия eMule %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (имитация eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (имитация eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (на основе eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Псевдоним: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Запрошено: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Статистика для текущего сеанса: принято %d из %d запроса, %s передано\n" msgstr[1] "" "Статистика для текущего сеанса: принято %d из %d запросов, %s передано\n" msgstr[2] "" "Статистика для текущего сеанса: принято %d из %d запросов, %s передано\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Статистика для всех сеансов: принято %d из %d запроса, %s передано\n" msgstr[1] "" "Статистика для всех сеансов: принято %d из %d запросов, %s передано\n" msgstr[2] "" "Статистика для всех сеансов: принято %d из %d запросов, %s передано\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Запрошен неизвестный файл" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Отфильтрованное сообщение от '%s' (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Новое сообщение от '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Пользователь %s (%u) запросил список публикуемых файлов из несуществующего " "каталога %s -> Проигнорировано" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "ПРЕДУПРЕЖДЕНИЕ: файл %s не может быть открыт" #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "ПРЕДУПРЕЖДЕНИЕ: Список отмененных файлов поврежден, содержит некорректный " "заголовок." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "Ошибка ввода/вывода при чтении файла %s: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Ошибка при сохранении файла %s: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Введите код" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Категория" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Новая категория" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Выберите каталог для входящих файлов" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Вы должны указать имя для категории!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Вы должны указать путь для категории!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Не удалось создать каталог для загружаемых файлов категории. Укажите верный " "путь." #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Сеанс чата запущен: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Соединен с клиентом ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Соединение с клиентом ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Не удалость соединиться с клиентом / Соединение разорвано ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "*** Код введен верно. Пользователь получил ваше сообщение. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Код введен неверно. Ваше сообщение проигнорировано. Вы можете повторить " "ввод кода отправив новое сообщение. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Чат" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Закрыть вкладку" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Закрыть все вкладки" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Закрыть остальные вкладки" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Добавить в список друзей" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Файл кредитов загружен, %u клиент известен" msgstr[1] "Файл кредитов загружен, %u клиента известно" msgstr[2] "Файл кредитов загружен, %u клиентов известно" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Кредиты перестали действовать для %u клиента!" msgstr[1] " - Кредиты перестали действовать для %u клиентов!" msgstr[2] " - Кредиты перестали действовать для %u клиентов!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Файл 'cryptkey.dat' не найден. Создаю заново." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Сведения о клиенте" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Разрешено" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Поддерживается" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Не поддерживается" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Запрещено" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Подключен" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Отключен" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Не завершен" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Нарушитель" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Проверено - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Не доступно" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Пользователь %s (%u) запросил список публикуемых файлов -> Принято" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Пользователь %s (%u) запросил список публикуемых файлов -> Отказано" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "Пользователь %s (%u) запросил список публикуемых папок -> Принято" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "Пользователь %s (%u) запросил список публикуемых папок -> Отказано" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Пользователь %s (%u) запросил список публикуемых файлов из каталога '%s' -> " "Принято" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Пользователь %s (%u) запросил список публикуемых файлов из каталога '%s' -> " "Отказано" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Пользователь %s (%u) сделал доступным каталог '%s'" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Пользователь %s (%u) отправил незапрошенный список публикуемых папок." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "Пользователь %s (%u) отправил список публикуемых каталогов из каталога '%s'" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Пользователь %s (%u) закончил передачу списка публикуемых файлов." #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" "Пользователь %s (%u) отправил список публикуемых файлов, который не нужен." #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Пользователь %s (%u) отказал в доступе к списку публикуемых файлов/папок" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Комментарии к файлам" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Имя пользователя" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Имя файла" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Рейтинг" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Комментарий" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Нет комментариев" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u комментарий" msgstr[1] "%u комментария" msgstr[2] "%u комментариев" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Клиент %s забанен за отсыл %s поврежденных данных из %s всего для файла '%s'" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Авто [Низк]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Авто [Норм]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Авто [Выс]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Очень низкий" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Низкий" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Нормальный" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Высокий" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Очень высокий" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Релиз" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Запрос" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Соединение через сервер" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Очередь заполнена" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "В очереди" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Загружается" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Получение контрольных сумм" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Нет нужных частей" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Клиенты с LowID не могут подключаться друг с другом" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Слишком много соединений" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Подключение Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Слишком много соединений Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Заблокированы" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Ошибка подключения" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Удаленная очередь полна" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Старый MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Новый MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "Совместимый с eMule" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Локальный сервер" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Удаленный сервер" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Обмен источниками" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Пассивный" #: src/DataToText.cpp:133 msgid "Link" msgstr "Ссылка" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Источники" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Результаты поиска" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Завершено" #: src/DataToText.cpp:146 msgid "In progress" msgstr "В процессе" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "ОШИБКА: Недостаточно места на диске" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "ОШИБКА: Не найден файл part.met" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ОШИБКА: Ошибка ввода/вывода!" # знаю что звучит глупо. если есть идеи - прошу #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ОШИБКА: Неудачно!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "В очереди" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Уже скачивается" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Неизвестный или нарушенный формат временного файла." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Часть" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Размер" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Передано" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Скорость" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Выполнено" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Источники" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Приоритет" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Состояние" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Осталось времени" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Последний раз файл был доступен полностью" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Последнее получение данных" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Удалить выбранный файл?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Удалить выбранные файлы?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Ответ от: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Авто" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Остановить" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Пауза" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Возобновить" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "Очистить &завершенные" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Использовать все A4AF источники для этого файла" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Использовать все A4AF источники для этого файла (авто)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Отдать все A4AF источники этого файла другим файлам" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Дополнительные настройки" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Предварительный просмотр" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "По&казать подробности" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Показать все комментарии" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Скопировать magnet URL в буфер обмена" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Копировать eD2k &ссылку в буфер" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Скопировать доп. информацию в буфер обмена" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "отменить категорию" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Присвоить категорию" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Открыть файл" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Введите новое имя файла:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Переименовать файл" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Загрузки (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Чтобы избежать появления этого предупреждения\n" "при каждом предпросмотре, установите предпочитаемый\n" "видео проигрыватель в настройках (по умолчанию mplayer)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Предварительный просмотр" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "ОШИБКА: невозможно запустить видео-проигрыватель. Команда: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Сохранаяем файл %u из %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Все файлы сохранены." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Загружаются файлы из %s" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Загружается файл %u из %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "ОШИБКА: не удалось загрузить резервный файл. Ищите на http://forum.amule.org " "как восстановить файл part.met" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Все файлы загружены." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Частично загруженных файлов не найдено" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Найден %u частично закаченный файл" msgstr[1] "Найдено %u частично закаченных файла" msgstr[2] "Найдено %u частично закаченных файлов" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "Файловая система каталога временных файлов не поддерживает файлы больших " "размеров" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "Файловая система каталога принятых файлов не поддерживает файлы больших " "размеров" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Прием %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Вы уже загружаете файл '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "У вас уже есть файл '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Вы уже пытаетесь загрузить файл %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Не удается преобразовать magnet-ссылку в eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Неизвестный протокол ссылки: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Неверная eD2k ссылка! ОШИБКА: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Клиент послал пакет после ошибки идентификации." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Внешнее соединение закрыто." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Внешние соединения выключены из-за отсутствия пароля." #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Внешние соединения выключены в конфигурационном файле" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Принято новое внешнее соединение" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "ОШИБКА: невозможно принять новое внешнее соединение" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "Отказано во внешнем соединении из-за пустого пароля" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Соединение с клиентом: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Неизвестная версия" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Неверный идентификатор версии ВС. Возможна бинарная несовместимость. " "Используйте ядро и компонент удаленного доступа одинаковой версии." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Вы не можете подсоединиться к релизной версии с произвольной SVN версии! " "Возможный сбой предотвращен" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Недопустимая версия протокола." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Тег версии протокола отсутствует." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "Ошибка авторизации: в качестве EC-пароля указан неправильный хэш." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Ошибка идентификации: неверный пароль." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Ошибка идентификации: пароль не задан." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Неверный запрос, сначала пройдите идентификацию." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Доступ получен." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Клиенту отправлено сообщение об ошибке \"%s\"." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Попытка неавторизированного доступа с %s. Соединение разорвано." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "Удаленная команда PartFile не удалась: хеш файла не найден: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Хеш файла не найден: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "Ошибка при выполнении OpCode." #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Сервер не добавлен" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "сервер не найден: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "необходимо выделить сервер для удаления" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "Сеть eD2k отключена в настройках" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Поиск запущен. Ждите результатов." # Explained by Jacobo221. #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "При удаленном использовании aMule WWW поиск бесполезен." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "В графике нет точек." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Ваш клиент не настроен на этот уровень детализации." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Внешнее соединение: запрошено выключение" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Уже завершаю работу." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "ExternalConn: добавляю ссылку '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Ссылка неверна или уже в списке." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Файл не найден." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Неверное имя файла." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Невозможно переименовать файл." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad выключена в настройках." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Уже подсоединен к сети eD2k." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Подсоединение к сети eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Уже подключен к Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Подключаюсь к Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Все сети выключены." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Отсоединен от сети eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Отключен от Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Внешнее соединение: получен неверный код операции: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Неверный opcode (Возможно, не та версия протокола)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Неизвестное расширение '%s' для команды '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Неизвестная команда '%s.'\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "У этой команды не может быть аргументов.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "У этой команды должен быть аргумент.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Команда не завершена. Необходимо использовать одно из следующих расширений.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Доступные расширения:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Доступные команды:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Все команды чувствительны к регистру.\n" "Наберите '%s <имя команды>' чтобы получить справку по этой команде.\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Завершить работу с приложением." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Показать справку." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Чтобы получить справку по команде, наберите 'help <имя команды>'.\n" "Чтобы получить полный список команд, наберите 'help'.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Введите '%s' для получения списка команд\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Синтаксическая ошибка!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Ошибка при обработке команды - это не должно было произойти! Пожалуйста, " "сообщите нам об этой ошибке\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "У этой команды не должно быть параметров." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "У этой команды должен быть параметр." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Неверный аргумент." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Команда введена не полность." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Наберите '%s' для подробной справки.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Это %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Это %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Создается клиент...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, выход из %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Невозможно подключиться без пароля.\n" "Вы должны указать пароль либо в конфигурационном файле,\n" "либо используя командную строку.\n" "\n" "Завершение работы...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Показать эту справку." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Узел, на котором работает aMule (по умолчанию: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Порт aMule для внешних подключений (по умолчанию: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Пароль для внешнего соединения." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Прочесть настройки из файла." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Не выводить ничего в поток стандартного вывода." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Детально - выводить отладочную информацию." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Установить локаль программы (язык)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Записать параметры командной строки в конфигурационный файл." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Создает конфигурационный файл на основе оного из aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Вывести версию программы." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Детали файла" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% готово" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/сек" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "Не удалось открыть список друзей 'emfriends.met' для чтения!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "Не удалось открыть список друзей 'emfriends.met' для записи!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "КРИТИЧНО - нет клиентов на StartChatSession" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Друзья" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Показать &подробности" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Добавить в друзья" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Удалить из друзей" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Послать &сообщение" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Просмотр файлов" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Создать слот для друга" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Удалить выбранного пользователя из списка друзей?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Удалить выбранных пользователей из списка друзей?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Устанавка более одного слота для друзей запрещена.\n" " Был выделен только один слот." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Множественный выбор" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Послать сообщение пользователю" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Сообщение:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Удалить из списка друзей" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Отправить сообщение" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Переключить на этот файл" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "В очереди: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Запрошен другой файл" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Ожидание слота отдачи" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "В очереди: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Отдается" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Нет" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Нет" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Да" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Принимается..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "загрузка HTTP отменена" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Невозможно создать файл %s для загрузки!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "URL загрузки не может быть пустым" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "Обработка URL %s: %i - Ошибка (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Критическая ошибка при записи загруженного файла" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "Загружено %d байт" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Вместо %d байт было загружено %d байт" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "Неверный URL для HTTP-загрузки или HTTP-редиректа (возможно, забыт " "'http://'?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Невозможно соединиться с HTTP сервером загрузок" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Неверный ответ от сервера HTTP-загрузки" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Загружен новый GeoIP.dat с %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Загрузка GeoIP.dat неудачна, прекращаем обновление." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Удаление файла %s неудачно, прекращаем обновление." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Переименование файла %s неудачно, прекращаем обновление." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "Обновление %s успешно." #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Ошибка обновления GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Не удалось загрузить %s с %s" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "Не удалось загрузить данные страны для %s" #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Загружаю IP-фильтры 'ipfilter.dat' и 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "Не удалось загрузить ipfilter.dat файл '%s', формат файла неизвестен." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "Не удалось загрузить ipfilter.dat файл '%s', не удалось открыть файл." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Загружен %u IP-диапазон из '%s'." msgstr[1] "Загружено %u IP-диапазона из '%s'." msgstr[2] "Загружено %u IP-диапазонов из '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u испорченная строка была пропущена." msgstr[1] "%u испорченных строки было пропущено." msgstr[2] "%u испорченных строк было пропущено." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Переименование нового файла %s неудачно, прекращаем обновление." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "IP-фильтр готов" # Похоже, bootstrap в eMule перевели как инициализация #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Инициализация от \n" "известных клиентов" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Узлы (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Неверный IP для инициализации" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Неверный порт для инициализации" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Пожалуйста, заполните все необходимые поля" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Вы уверены что хотите загрузить новый файл nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "Это удалит используемые в данный момент узлы и перезапустит Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Продолжить?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kad: слово запроса лишком коротко" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Ключевое слово поиска: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: ключевое слово поиска уже в списке поиска:" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "Ошибка чтения nodes.dat - формат файла устарел. Эта версия (0) больше не " "поддерживается." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Считан %u контакт Kad" msgstr[1] "Считано %u контакта Kad" msgstr[2] "Считано %u контактов Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "Не найдено контактов. Произведите инициализацию, или загрузите файл nodes." "dat." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Доступен только %d контакт Kad, файл nodes.dat не записан" msgstr[1] "Доступно только %d контакта Kad, файл nodes.dat не записан" msgstr[2] "Доступно только %d контактов Kad, файл nodes.dat не записан" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Записан %d Kad контакт" msgstr[1] "Записано %d Kad контакта" msgstr[2] "Записано %d Kad контактов" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Имя файла" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Размер файла" # по крайней мере торренты называют его так #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Рейтинг" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Загружено" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Запрошено" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Разрешено" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Полных источников" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "ПРЕДУПРЕЖДЕНИЕ: Список известных файлов поврежден, содержит некорректный " "заголовок." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Ошибка загрузки элемента списка известных файлов, файл возможно поврежден" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "Неверный элемент списка известных файлов, файл возможно поврежден:" #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Неизвестная ошибка %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "Невозможно получить описание ошибки %d" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Хешируется" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Завершается" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Завершен" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Приостановлен" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Ошибочный" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Ожидает" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Необходимо указать пароль." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Неверный пароль. Не MD5-хеш!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Подключение не удалось" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "EC соединение не удалось. Пустой ответ." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Внешнее соединение: Некорректный ответ, авторизация неудачна. Соединение " "закрыто." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Успешное подключение к aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Соединение установлено." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Внешнее Соединение: В доступе отказано по причине:" #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Внешнее Соединение: авторизация неудачна." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Автоматическое обновление начато" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket: Ok." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "ОШИБКА: невозможно открыть TCP порт." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "ОШИБКА:" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "ПРЕДУПРЕЖДЕНИЕ:" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Закрыть" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Вырезать" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Копировать" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Вставить" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Очистить" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Выделить все" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "кБ/сек" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Неограниченно" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Меню aMule в области уведомлений" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Ограничения скорости:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "UL: Нет" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "UL: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "DL: Нет" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "DL: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Скорость приема: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Скорость отдачи: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Информация о клиенте" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Псевдоним: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Псевдоним не выбран!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID клиента: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Отсоединен" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Имя сервера: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP-адрес сервера: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Не подключен" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP порт: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP порт: Не готово" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "UDP порт: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UDP порт: Не готово" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Онлайн-подпись: Включена" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Онлайн-подпись: Выключена" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Время работы: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Опубликованные файлы: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Клиентов в очереди: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Всего загружено: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Всего передано: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Ограничение отдачи" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Ограничение приема" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Свернуть aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Показать aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Выйти" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k ссылка:" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Добавить" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Нажмите сюда чтобы добавить eD2k ссылку из текстового поля в очередь " "загрузок." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Тут отображаются события. Для полного списка событий, обратитесь к журналу в " "окне \"Сети\"." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Загружается..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Количество пользователей на сервере, к которым вы подключены..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Пользователей: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Пользователи, подключенные к данному серверу и оценка общего количества " "пользователей." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Передача: 0.0 | Прием: 0.0" # Тултип. Лучше оставить как можно более коротким (не все системы автоматом делают их многострочными ;-)) #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Входящая и исходящая усредненные скорости. Значения в скобках (если " "включены), отображают служебный трафик (трафик связи между клиентами)." # Тултип. Лучше оставить как можно более коротким (не все системы автоматом делают их многострочными ;-)) #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Статус соединения. Красная стрелка - нет соединения, желтая - LowID (вы за " "маршрутизатором или брандмауэром), зеленая - HighID (оптимальный вариант)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Не подключен..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Подключен к серверу." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Поиск" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Имя:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Тип" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Локальный" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Глобальный" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "По хешу" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Дополнительные параметры" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Фильтрация" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Тип файла" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Любой" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Архив" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Аудио" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD-образ" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Изображение" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Программа" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Текст" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Видео" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Расширение" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Мин. размер" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Байт" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "КБ" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "МБ" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "ГБ" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Макс. размер" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Доступность" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Фильтр:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Фильтровать результаты" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Инвертировать" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Скрывать известные файлы" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Начать" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Дополнительно" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Искать больше результатов в eD2k. Для Kad пока не поддерживается." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Остановить" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Загрузка" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Сбросить значения" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Результаты" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Очистить результаты" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Источников:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Общие" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Полное имя :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "Файл met:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Хеш:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Размер файла:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Статус:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Последний раз полный файл был доступен :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Передача" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Найдено источников:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Передающие источники:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Число частей:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Доступно:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Скорость передачи:" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Время активности закачки:" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Передано:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Завершено:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Интеллектуальная Обработка Ошибок (I.C.H.)" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Потери из-за повреждений :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Выигрыш сжатия:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Экономия пакетов I.C.H. :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Имя файла" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Выбрать" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Очистить" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Применить" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Комментарий/Оценка файла (Текст будет доступен всем пользователям)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Например, для фильма вы можете указать его длительность, сюжет, язык...\\n" "\\nЕсли это - фальшивка, вы можете сообщить об этом остальным пользователям " "aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Качество файла" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Без оценки" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Ошибочный / Поврежденный / Фальшивка" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Плохой" # было "очень хороший" непонятно почему. это название среднего рейтинга (обе полоски белые) #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Нормальный" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Хороший" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Великолепный" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "Выберите оценку файлу, или сообщите пользователям, что это - утка..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Обновить" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Идет загрузка, подождите..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Неизвестный размер" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Обязательная информация" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP адрес :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Порт :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Дополнительная информация" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Имя пользователя :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Хеш пользователя :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Добавить" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Скорость приема" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Текущая" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Средняя за все время" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "В среднем за сеанс" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Скорость отдачи" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Соединения" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Активные загрузки" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Активные соединения (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Активные передачи" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Дерево статистики" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Имя пользователя:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Хеш пользователя:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Клиентское ПО:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Версия клиентского ПО:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP адрес:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID пользователя:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP сервера:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Имя сервера:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Вуалирование:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Передача" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Текущий запрос:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Средняя скорость отдачи:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Средняя скорость приема:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Передано (сеанс):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Принято (этот сеанс):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Передано всего:" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Принято всего:" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Счет" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Модификатор DL/UP:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Безопасная идентификация:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "QR:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Счет на передачу:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Псевдоним" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - многоплатформный Mule" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "Это имя, которое будет показано пользователям, подключающимся к вам." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Язык:" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Задержка отображения контекстных подсказок (как эта) в секундах." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Выберите язык интерфейса." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Проверка наличия новой версии при запуске" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "При запуске aMule будет проверено наличие новой версии" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Сворачиваться при запуске" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Сразу после запуска aMule будет минимизирован в область уведомлений." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Подтверждение при выходе" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Делать подтверждающий запрос перед выходом" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Значок в области уведомлений" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Эта опция включает/выключает значок в области уведомлений" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Сворачивать в область уведомлений" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "Сворачивать aMule в область уведомлений, а не в панель задач." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Время задержки подсказок:" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "секунд" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Выбор браузера" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Введите имя предпочитаемого браузера. Оставьте поле пустым чтобы " "использовать системный браузер по умолчанию." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Открыть" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Открывать в новой вкладке" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Открывать веб-страницы в новой вкладке, а не в отдельном окне, если это " "возможно" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Видео-проигрыватель" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Ограничения загрузки" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Отдача" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Слот" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Порты" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Стандартный порт TCP" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Это стандартный порт eD2k, он не может быть отключен." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Порт UDP для запросов сервера (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Дополнительный порт UDP (Kad / Глобальный поиск)" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "Этот порт UDP используется для дополнительных eD2k запросов и Kad" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Разрешить UPnP форвардинг портов роутера" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnP TCP порт (Не обязательно):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Закрепить локальный адрес за IP (пустой для любого):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Только для продвинутых пользователей: если у вас несколько сетевых " "интерфейсов введите адрес того, которым будет пользоваться aMule." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Максимум источников на файл:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Максимум одновременных соединений:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Соединяться автоматически после запуска" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Восстановить соединение в случае разрыва" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Удалить нерабочий сервер после" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "попыток" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Автоматически обновлять список серверов при запуске" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Список" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Обновлять список серверов при подключении к серверу" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Обновлять список серверов при подключении к клиенту" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Использовать систему приоритетов" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Проверка на LowID при подключении к серверу" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Безопасное подключение" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Автоподключение только к статическим серверам" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Высокий приоритет серверов, добавленных вручную" # слишком уж частая аббривеатура. написать И.О.О. - никто не поймет #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Интеллектуальная Обработка Ошибок (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Разрешить" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "AICH-доверие для каждого хэша (не рекомендуется)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Добавлять файлы на загрузку в режиме паузы" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Добавлять файлы в загрузку с авто приоритетом" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Пытаться сначала загрузить первую и последнюю части" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Возобновлять следующий файл на паузе при завершении загрузки" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Из той же категории" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "В алфавитном порядке" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Заранее выделять место для новых фалов" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Сразу выделяет место под весь файл. Таким образом уменьшается фрагментация" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Останавливать загрузки по окончанию свободного места на диске" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" "Отметьте это если хотите чтобы aMule проверял наличие свободного места" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Введите здесь минимальное количество свободного места на диске." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Оставлять 10 источников для редких файлов (<20 источников)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Отдача" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Добавлять новые файлы для публикации с авто приоритетом" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Папка для загружаемых файлов" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Папка для временных файлов" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Публикуемые папки" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" "(кликните правой кнопкой на значке каталога для рекурсивной публикации)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Включая скрытые файлы" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Графики" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Интервал обновления: 5 сек" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Время для среднестатического графика: 100 минут" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Масштаб графика соединений: 100 " #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Масштаб графика загрузки:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Масштаб графика отдачи:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Цвета:" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Фон" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Сетка" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Текущая загрузка" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Средняя общая загрузка" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Средняя загрузка за сеанс" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Текущая отдача" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Средняя общая отдача" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Средняя отдача за сеанс" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Активные соединения" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Скорость передачи в области уведомлений" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Узлы Kad (текущие)" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Узлы Kad (действующие)" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Узлы Kad (сессия)" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Выбрать" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Дерево" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Число отображаемых версий клиентов (0=неогр.)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! ВНИМАНИЕ !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Предел количества новых соединений за 5 секунд" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Размер буфера: 240000 байт" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Размер очереди: 5000 клиентов" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Интервал обновления соединения с сервером: Отключено" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Отключить засыпание компьютера" # в LA помнится так и перевели - "шкурка", но по-моему глупо. #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Скин:" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Показывать строку \"быстрой загрузки\" в каждой вкладке." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Показывать дополнительную информацию на закладках категорий" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Выводить скорость передачи в заголовке" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Выводить скорость передачи в заголовке" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Перед именем приложения" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "После имени приложения" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Показывать скорость служебного трафика" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Вертикальное расположение панели инструментов" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Показывать национальные флаги клиентов" # This is the heading for the preference options regarding the files in the transfer list. #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Загружаемые файлы" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Показывать процент загрузки" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Показывать полосу выполнения" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Плоская" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Круглая" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Авто-сортировка файлов (нагружает процессор)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule будет сортировать файлы в списке загрузок автоматически." #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Параметры внешних соединений" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Принимать внешние соединения" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP прослушиваемого интерфейса:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Введите сюда IP в формате a.b.c.d для прослушиваемого интерфейса ВС. Пустое " "поле или значение 0.0.0.0 означают любой интерфейс." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "порт TCP:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Включить UPnP для порта ВС" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Пароль" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Параметры веб-сервера" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Запускать веб-сервер при старте" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Веб-шаблон" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Пароль для обычного доступа" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Разрешить ограниченный доступ" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Пароль ограниченного доступа" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Разрешить UPnP форвардинг порта веб-сервера" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "UPnP TCP порт веб-сервера (не обязательно):" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Период обновления страницы (в секундах)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Включить сжатие Gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "ОК" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Кликните тут, чтобы сохранить внесенные вами изменения." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Сбросить все изменения, внесенные вами." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Заголовок :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Комментарий :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Каталог загрузок:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Установить приоритет для новых файлов:" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Не изменять" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Выбрать цвет для этой категории:" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Сбросить" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Кликните тут для очистки журнала." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Кликните здесь чтобы обновить список серверов через URL ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Список серверов" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Введите URL к файлу 'server.met' и нажмите кнопку слева для обновления " "списка известных серверов." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Добавить сервер вручную: Имя" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Введите имя нового сервера" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Порт" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Введите здесь IP-адрес сервера в формате: x.x.x.x" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Введите здесь порт сервера." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Добавить сервер (предварительно заполните поля слева) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Журнал aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Сообщение сервера" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Инфо ED2K" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Инфо Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Нажмите на эту кнопку чтобы обновить список узлов из URL..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Узлы (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Ведите сюда URL к файлу nodes.dat и нажмите кнопку слева чтобы обновить " "список известных узлов." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Статистика узлов" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Инициализация" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Новый узел" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Порт:" # Похоже, bootstrap в eMule перевели как инициализация #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Инициализация от известных клиентов" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Отключить Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Использовать безопасную идентификацию пользователя" # интересно, что на самом деле подразумевалось под 'credits' #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Рекомендуется включить данную опцию. Вы не будете получать рейтинга если БИП " "выключена." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Вуалирование протокола" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Поддержка вуалирования протокола" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Включает вуалирование протокола и позволяет aMule принимать завуалированные " "соединения от других клиентов." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Использовать вуалирование исходящих соединений" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Включает вуалирование протокола при соединении с другими клиентами и " "серверами." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Принимать только завуалированные соединения" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "aMule будет принимать только завуалированные соединения. У вас будет меньше " "источников, но зато весь трафик будет завуалирован." #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Все" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Никто" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Кто может запрашивать публикуемые файлы:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Выберите, кому показывать список ваших файлов." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Фильтрование IP" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Фильтровать клиентов." #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Включает фильтрацию IP клиентов в соответствии с файлом ~/.aMule/ipfilter." "dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Фильтровать сервера" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Включает фильтрацию IP серверов в соответствии с файлом ~/.aMule/ipfilter." "dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Обновить список" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "Прочесть список IP адресов, указанных в файле '~/.aMule/ipfilter.dat'." #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Обновить сейчас" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Автоматически обновлять IP-фильтр при запуске" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Уровень фильтрации:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Всегда фильтровать IP-адреса LAN" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Параноидная обработка несовпадающих IP " #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Отбрасывает пакеты у которых IP клиента отличается от IP с которого пришел " "пакет. Используйте осторожно." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Использовать системный ipfilter.dat если возможно" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "Если не найден локальный ipfilter.dat разрешить использовать системный" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Включить Online-подпись" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Включает запись файла OS, который может использоваться другими приложениями " "для создания подписей." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Частота обновления (в секундах):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Изменить частоту обновления для Online-подписи в секундах." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Сохранять Online-подпись в:" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "Кликните здесь, чтобы выбрать каталок для файлов Online-подписи." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Фильтровать входящие сообщения (кроме текущего чата):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Фильтровать все сообщения" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Фильтровать сообщения пользователей не из вашего списка друзей" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Фильтровать сообщения от неизвестных клиентов" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Фильтровать сообщения по содержанию (используйте ',' как разделитель):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "Добавьте сюда ключевые слова, при наличии которых aMule будет " "отфильтровывать и блокировать входящие сообщения." #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Показывать полученные сообщения в логе" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Комментарии" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Фильтровать комментарии содержащие (используйте ',' как разделитель):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Автоматическое соединение с сервером без прокси" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Включить идентификацию" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Включить/выключить использование пароля и логина" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Имя:" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Имя пользователя для подключения к прокси-серверу" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Пароль:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Пароль для подключения к прокси-серверу" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Использовать прокси-сервер" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Включить/выключить поддержку прокси-сервера" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Тип прокси-сервера:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Прокси-сервер:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Имя прокси-сервера" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Порт:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Порт прокси-сервера" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Соединиться с:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Войти на удаленный aMule" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Имя пользователя" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Запомнить настройки" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Записывать в журнал подробные сообщения отладчика." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Открыть файл" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Категории сообщений:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Ожидание..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Добавить файлы" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Перезапустить выбранное" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Удалить выбранное" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Типы Событий" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Статистика и очередь клиентов для выбранных файлов: За сессию / За все время" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Активные загрузки" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Процент от всех файлов" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Все файлы" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Выбранные файлы" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Только активные передачи" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Показать клиентов для" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Обновить:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Обновить список публикуемых файлов" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Отправить" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Отправить данное сообщение." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Закрыть данный чат." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Соединиться с произвольным сервером и/или Kad" # подпись в главном окне. длинная просто не влезет. #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Файлы" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Отключено [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "Б" msgstr[1] "байт" msgstr[2] "байт" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "КБ" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "ТБ" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "К" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "М" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "Г" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "Т" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "Б/с" msgstr[1] "байт/сек" msgstr[2] "байт/сек" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "МБ/с" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "с" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "м" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "ч" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "д" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "все" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "все остальные" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Незавершенные" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Остановлен" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Видео" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Архив" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Текст" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Активные" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Используем директорию конфигурации: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Ожидание завершения нити конвертации файла..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Импортируется %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Чтение из временного каталога" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Извлекаю основную информацию из информационного файла загрузки" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Создаю целевой файл" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Загружаю данные из старого файла загрузки (%u из %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Сохраняю данные в новый монолитный файл загрузки (%u из %u)" # не уверен что верно #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Получаем информацию по источникам" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Добавляю загрузку и сохраняю новый частично закачанный файл" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Импорт частично загруженных файлов" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Состояние" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Хеш файла" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Диск: %s)" # Полностью лучше не переводить - это титул небольшого диалога. # Если перевести полностью - будет маленький, но широоооокий диалог :) #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "Укажите каталог для поиска незавершенных загрузок." #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "Вы хотите, чтобы исходные файлы импортированных закачек были удалены?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Удалить исходные файлы?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "ОШИБКА: невозможно создать part-файл" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Попытка загрузки резервной копии файла '.met' из %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "ОШИБКА: не удалось открыть файл part.met: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "ОШИБКА: файл part.met пуст: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "ОШИБКА: неверная версия файла part.met: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "ОШИБКА: %s (%s) поврежден (неверные теги: %s), невозможно открыть файл." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "ОШИБКА: %s (%s) поврежден (неверное число тегов), невозможно открыть файл." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Попытка восстановления информации о файле..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Восстановление безымянного файла - попытка восстановить его как " "'RecoveredFile.dat'" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Восстановлена вся возможная информация о файлах ;-))) Попытаемся ее " "использовать..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Не удалось восстановить информацию о файлах :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Не удалось открыть %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "ПРЕДУПРЕЖДЕНИЕ: %s возможно поврежден (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "Ошибка сохранения part-файла: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "Ошибка ввода-вывода во время сохранения файла:" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Невозможно получить длину '%s' - используется файл %s" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "Файл '%s' имеет размер в ноль байт - используется %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Не удалось сохранить файл 'part.met.seeds' для %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Сохранен %i источник для файла %s (%s)" msgstr[1] "Сохранено %i источника для файла %s (%s)" msgstr[2] "Сохранено %i источников для файла %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Сохранен %i источник для файла %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Ошибка при чтении источников частично загруженного файла (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Найдена испорченная часть (%d) в %d части файла %s - FileResultHash |%s| " "FileHash |%s|" msgstr[1] "" "Найдена испорченная часть (%d) в %d частях файла %s - FileResultHash |%s| " "FileHash |%s|" msgstr[2] "" "Найдена испорченная часть (%d) в %d частях файла %s - FileResultHash |%s| " "FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Найдена завершенная часть (%i) в %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Завершено повторное хеширование %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Неожиданная ошибка во время завершения %s. Файл приостановлен." #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Загрузка завершена: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Удаление файла: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "ПРЕДУПРЕЖДЕНИЕ: Не удается схэшировать загруженную часть - хэш-набор неполон " "для '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "ОШИБКА: Не удается схэшировать загруженную часть - хэш-набор неполон (%s). " "Это никогда не должно происходить" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "EOF при хешировании загруженной части %u с длиной %u (макс %u) файла '%s' с " "длиной %u: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" "ПРЕДУПРЕЖДЕНИЕ: не достаточно свободного места на диске. Файл приостановлен: " "%s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Загруженная часть %i повреждена: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Восстановлена поврежденная часть %i для %s -> Выигрыш: %s Б" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Выделяется место" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Недостаточно места на диске" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Загружено" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "ОШИБКА: не удалось открыть частично закаченный '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Системный" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Албанский" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Арабский" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Астурианский" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Баскский" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Болгарский" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Каталонский" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Китайский (упрощенный)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Китайский (традиционный)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Хорватский" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Чешский" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Датский" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Голландский" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Английский (Великобритания)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Эстонский" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Финский" #: src/Preferences.cpp:648 msgid "French" msgstr "Французский" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Гальский" #: src/Preferences.cpp:650 msgid "German" msgstr "Немецкий" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Греческий" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Израильский" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Венгерский" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Итальянский" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Итальянский (Швеция)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Японский" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Корейский" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Литовский" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Норвежский (Нюнорск)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Польский" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Португальский" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Португальский (Бразилия)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Румынский" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Русский" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Словакский" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Испанский" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Шведский" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Турецкий" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Украинский" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Изменить язык" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Недоступен" #: src/Preferences.cpp:906 msgid "no options available" msgstr "нет доступных опций" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Обнаружена неверная категория, пропускаем" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "TCP порт не может быть выше 65532, так как UDP сокет - TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Используется порт по умолчанию (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Убираем несуществующую опубликованную директорию: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Соединение" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Каталоги" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Сервера" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Файлы" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Безопасность" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Интерфейс" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Прокси" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Фильтры" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Удаленный контроль" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Online-подпись" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Дополнительно" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "События" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Отладчик" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "Эти переменный будут подставлены:\n" " %PARTFILE - полный путь к файлу\n" " %PARTNAME - только имя файла" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Не изменяйте следующие настройки до тех пор, пока\n" "вы не будете абсолютно уверены в том, что вы делаете,\n" "в противном случае может случиться непоправимое.\n" "\n" "aMule будет превосходно работать и БЕЗ ИЗМЕНЕНИЯ вами\n" "этих настроек." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Не удалось подключить Cfg к widget с ID %d и ключом %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "Не удалось передать данные из Cfg к Widget с ID %d и ключом %s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Тип прокси-сервера, который вы используете" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "Не удалось передать данные из Widget к Cfg с ID %d и ключом %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "Необходимо перезапустить aMule чтобы следующие изменения вступили в силу:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- изменен порт TCP.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- изменен порт UDP.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Порт для внешних соединений изменен.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Принятие внешних соединений изменено.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Интерфейс внешних соединений изменен.\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Вуалирование протокола" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Список авто обновления пуст.\n" "Автоматическое обновление списка серверов отключено." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Вы включили внешние соединения, но не указали пароль.\n" "Внешние соединения нельзя включить до тех пор, пока не указан пароль." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Изменен язык.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Изменен временный каталог.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- сеть eD2k включена. \n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Сети eD2k и Kad обе отключены.\n" "Вы не сможете подсоединиться пока не подключите хотя бы одну из них." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad не будет запущена, если UDP-порт выключен.\n" "Включите UDP-порт или выключите Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Вам НЕОБХОДИМО перезапустить aMule немедленно.\n" "Иначе не жалуйтесь, если произойдет какая-нибудь неприятность.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Ваш список авто обновления серверов пуст.\n" "Пожалуйста, внесите в список хотя бы один URL, указывающий на корректный " "'server.met'.\n" "Щелкните на кнопке \"Список\" чтобы ввести URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Временные файлы" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Входящие файлы" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Online-подписи" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Выберите каталог для %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Выбрать видео-проигрыватель" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Выберите броузер" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Команда запуска%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Редактировать список серверов" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Впишите сюда адреса для получения файлов 'server.met'.\n" "Только один URL в одной строчке." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Интервал обновления: %d с" msgstr[1] "Интервал обновления: %d сек" msgstr[2] "Интервал обновления: %d сек" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Отрезок времени, охватывающийся графиком: %d м" msgstr[1] "Отрезок времени, охватывающийся графиком: %d минут" msgstr[2] "Отрезок времени, охватывающийся графиком: %d минут" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Масштаб графика соединений: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Файловый буфер: %d Б" msgstr[1] "Размер буфера: %d байт" msgstr[2] "Размер буфера: %d байт" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Размер очереди отдачи: %d" msgstr[1] "Размер очереди отдачи: %d клиентов" msgstr[2] "Размер очереди отдачи: %d клиентов" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Частота связи с сервером: %d м" msgstr[1] "Интервал обновления соединения с сервером: %d минут" msgstr[2] "Интервал обновления соединения с сервером: %d минут" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Обновление соединения с сервером: Отключено" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "выключена" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Выполнить команду при событии '%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Включить выполнение команд в ядре" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Команда ядра:" # никто ни в жизни не поймет переведенную аббревиатуру #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Включить выполнение команд в GUI" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Команда GUI:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Следующие переменные будут заменены:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "Мин. размер должен быть меньше макс. размера. Игнорирую макс. размер." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Предупреждение поиска" # It's about default category to download to. #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Общая" # unification #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Поиск по сети Kad не может быть произведен когда она отсоединена." #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "Поиск по сети eD2k не может быть произведен когда она отсоединена." #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Ошибка при поиске через Kad: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "FileID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Файл" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Загрузить в категории" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "Получить %s для этого файла" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Искать связанные файлы (eD2k, локально)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Отметить как известный" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Копировать eD2k ссылку в буфер" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Отменено" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Новый" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Не могу соединиться ни с одним завуалированным сервером в списке. Пробую еще " "раз, но без вуалирования." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "Не удалось соединиться ни с одним указанным сервером. Еще один заход." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Сеть eD2k отключена в настройках, не соединяется." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "В списке серверов не найдено ни одного доступного сервера" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Подключен к %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Установлено соединение с: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "Ошибка во время соединения. Возможно нет соединения с Интернет." #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Утеряно соединение с %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) вероятно умер." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) вероятно заполнен." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "" "Автоматическое соединение с сервером будет предпринято через %d секунду" msgstr[1] "" "Автоматическое соединение с сервером будет предпринято через %d секунды" msgstr[2] "" "Автоматическое соединение с сервером будет предпринято через %d секунд" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Соединение утрачено" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Подключение к %s (%s:%i) завершилось ошибкой." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "ОШИБКА: сокет был закрыт по таймауту" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Время ожидания соединения с %s (%s:%i) вышло." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Получен старый результат поиска DNS, опускаем." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Загружается файл 'server.met': %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Файл 'server.met' не найден!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Не удалось загрузить файл server.met '%s', потому что он имеет неправильный " "формат." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Не удалось открыть файл 'server.met'!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "Файл server.met поврежден. Неверная метка версии: 0x%x, размер %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "В файле 'server.met' найден %i сервер" msgstr[1] "В файле 'server.met' найдено %i сервера" msgstr[2] "В файле 'server.met' найдено %i серверов" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d сервер добавлен" msgstr[1] "%d сервера добавлено" msgstr[2] "%d серверов добавлено" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Ошибка: файл 'server.met' поврежден:" #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "Ошибка ввода/вывода при чтении файла known.met: " #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Сервер не был добавлен: [%s:%d] не указывает на подходящий порт." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Сервер не был указан: IP адрес [%s:%d] был отфильтрован или неверен." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Сервер не был добавлен: сервер с совпадающим IP:порт [%s:%d] был найден в " "списке." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Сервер добавлен: сервер [%s:%d] использует имя '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Вы соединены с сервером, который вы пытаетесь удалить. Отключитесь от него." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Невозможно открыть %s" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Не удалось сохранить файл 'server.met'." #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Неверный URL" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Завершена загрузка списка серверов с %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Не найдено адресов списков серверов в 'addresses.dat'. Пожалуйста, введите " "правильные адреса чтобы авто-обновление работало." #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Начинаю загружать список серверов с %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "ПРЕДУПРЕЖДЕНИЕ: неверный URL для авто-обновления серверов: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "Отсутствует допустимый 'server.met' файл по адресу для автоматического " "обновления серверов" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Не удалось получить список серверов из %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Локальный сервер отфильтрован через IPFilters. Подключаюсь к другому серверу!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Имя сервера" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Адрес" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Порт" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Описание" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Пользователей" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Статический" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Версия" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Вы соединены с сервером, который вы пытаетесь удалить. Сначала нужно " "отключиться от него. Сервер НЕ удален." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Неизвестное имя)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Вы уверены, что хотите удалить сервер %s из статического списка " #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Серверов (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Сервер" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Подключиться к серверу" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Внести в список статических серверов" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Удалить из списка статических серверов" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Внести в список статических серверов" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Удалить из списка статических серверов" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Удалить выбранный сервер" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Удалить выбранные серверы" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Удалить все сервера" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Копировать eD2k ссылки в буфер" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Восстановить соединение с сервером" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Вы уверены, что хотите удалить все сервера?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Удалить выбранный сервер?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Удалить выбранные серверы?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "ОШИБКА: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "ПРЕДУПРЕЖДЕНИЕ: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Новый ID клиента %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "ПРЕДУПРЕЖДЕНИЕ: вы получили Low-ID!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" "\tСкорее всего это из-за того, что вы находитесь за брандмауэром или " "маршрутизатором." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tДля подробностей, обратитесь к http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Получена неизвестная информация о сервере. - слишком коротко" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Получен %d новый сервер" msgstr[1] "Получено %d новых сервера" msgstr[2] "Получено %d новых серверов" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Сохранение списка серверов завершено." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Сервер отклонил последнюю команду" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Подложный пакет получен от сервера: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Неизвестная ошибка при обработке пакета от сервера: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Невозможно создать поток разрешения DNS для соединения с %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "IP адрес сервера %s (%s) запрещен фильтром. Соединение отменено." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "использую вуалирование протокола." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Установка соединения с %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Не удалось разрешить DNS для сервера %s: Невозможно подключиться." #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Сервер не был добавлен: не указан адрес сервера." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Сервер не был добавлен: указан неверный порт сервера." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Статус eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Статус Kademlia:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "Работает в режиме LAN" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Выполняется" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Статус:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Состояние соединения:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" "За брандмауэром - откройте TCP порт %d на вашем роутере или брандмауэре" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "Состояние UDP соединения:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" "За брандмауэром - откройте UDP порт %d на вашем роутере или брандмауэре" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Состояние брандмауэра:" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Друг не требуется - TCP порт открыт" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Друг не требуется - UDP порт открыт" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Нет друзей" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Соединяем с другом" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Соединяем с другом на %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Проиндексировано источников:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Ключевые слова проиндексированы:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Проиндексировано записей:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Загрузки проиндексированы:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Пользователей в среднем:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Файлов в среднем:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Не запущен" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Добавляем файл %s к списку опубликованных" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Найден %i известный публикуемый файл." msgstr[1] "Найдено %i известных публикуемых файла." msgstr[2] "Найдено %i известных публикуемых файлов." #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Найден %i известный публикуемый файл, %i неизвестных." msgstr[1] "Найдено %i известных публикуемых файла, %i неизвестных." msgstr[2] "Найдено %i известных публикуемых файлов, %i неизвестных." # ей-богу не понимаю что за ошибка и когда вылазит #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "ОШИБКА: попытка опубликовать %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Публикуемая директория не найдена, пропускаем: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Нет публикуемых файлов в директории: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Имя пользователя" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Скорость загрузки" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Скорость отдачи" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Доступные части" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Статус отдачи" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Статус принимаемых файлов" # Source of a source. I mean, it's where a client came from. # (GonoszTopi) #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Откуда" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Локальное имя файла" # подпись в главном окне. длинная просто не влезет. #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Файлы" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Запросов" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Принятых запросов" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Передано данных" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Коэффициент передачи" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Полученные части" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Полных источников" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Каталог" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Добавить комментарий/рейтинг" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Редактировать комментарий/рейтинг" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Переименовать" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Добавить файлы коллекции в список для закачки" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Скопировать magnet URL в буфер &обмена" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Копировать eD2k ссылку в буфер (&Источник)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Копировать eD2k ссылку в буфер (Источник) (&С шифрованием)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Копировать eD2k ссылку в буфер (Имя &хоста)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "Копировать eD2k ссылку в буфер (Имя хоста) (С &шифрованием)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Копировать eD2k ссылку в &буфер (информация AICH)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Копировать eD2k ссылку в &буфер (информация AICH)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Для создания ссылки на источник требуется HighID" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Публикуемые файлы (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[частично]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Удаленное имя файла" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Передано за сеанс (всего): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Служебный трафик (пакеты): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Трафик запросов (пакеты): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Трафик обмена источниками (пакеты): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Трафик с сервером (пакеты): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Служебный трафик Kad (пакеты): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Потери шифрования (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Активные отдачи: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Ожидающие отдачи: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Всего успешных сессий отдачи: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Всего неудачных сессий отдачи: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Среднее время отдачи: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Принято за сеанс (всего): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Найдено источников: %s" # chunk, конечно, никакой не пакет.... но фиг знает #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Активных загрузок (фрагменты файлов): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Соотношение UL:DL (всего): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Средняя скорость закачки (Сессия): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Средняя скорость отдачи (Сессия): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Максимальная скорость закачки (Сессия): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Максимальная скорость отдачи (Сессия): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Пересоединений: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Прошло после первой передачи: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "Время подключения к серверу: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Активных соединений (примерно): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Достигнуто макс. число соединений: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Соединений в среднем (прибл.): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Максимальное число соединений (примерно): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Клиенты" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Неизвестны: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Отфильтрованы: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Заблокированы: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Всего: %i Известно: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Работающих серверов: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Сбойных серверов: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Всего: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Удаленных серверов: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Отфильтрованных серверов: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Пользователей на работающих серверах: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Файлов на работающих серверах: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Всего пользователей: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Всего файлов: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Загруженность сервера: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Число публикуемых файлов: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Общий размер публикуемых файлов: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Средний размер файлов: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Операционная система" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Не получено" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Активные соединения (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Недоступен" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Никогда" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Команда `%s' с pid `%d' завершилась с кодом статуса `%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Выполнить и выйти." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Неверный формат IP-адреса. Пример: xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Этой команде требуется аргумент. Доступные аргументы: 'all', имя файла или " "номер.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Обрабатывается по хэшу:" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Обрабатывается по имени:" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "Эта команда требует аргумента. Допустимые аргументы: хэш файла.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Недопустимый номер\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Недопустимый хеш (длина должна быть равна 32 символам)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Наберите '%s' для подробной справки.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Прием %s" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Запрос не удался - неизвестная ошибка." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Операция выполнена успешно." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Запрос не удался: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "IP-фильтрация клиентов: %s\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "ВЫКЛ" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "ВКЛ" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "IP-фильтрация серверов: %s\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Текущий уровень IP-фильтра: %d.\n" # писать тут "вверх" и "вниз" по-моему глупо. да и не поймет никто #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Ограничения загрузки: UL: %u kB/сек, DL: %u kB/сек.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Подключен к %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Идет подключение" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "за брандмауэром" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Закачка:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Отдача:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Клиентов в очереди:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Всего источников:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Число результатов поиска: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Состояние поиска: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Состояние поиска неизвестно" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Получен неверный ответ сервера, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Показать краткую информацию о статусе." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" "Показать состояние соединения, такущие скорости отдачи/закачки, и т.д.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Показать полную статистику." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Дополнительно этой команде в качестве аргумента может быть передано число от " "0 до 255,\n" "которое указывает сколько версий клиентов должно быть показано.\n" "0 или пустое значение отключает ограничение.\n" "\n" "Пример: 'statistics 5' покажет только пять наиболее частых номеров версий " "каждого клиента .\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Закрыть aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Завершить работу удаленного ядра (amule/amuled).\n" "Это так же завершит работу текстового клиента, т.к.\n" "без ядра он бесполезен.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Обновить данный объект." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Обновить список публикуемых файлов." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Обновить таблицу IP фильтра." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Обновить локальную таблицу IP фильтра." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Обновить таблицу IP фильтра с URL." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Если URL пропущен, используется URL из настроек." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Подключиться к сети." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Подключиться ко всем сетям, включенным в настройках\n" "Также можно указать адрес сервера, к которому надо\n" "подключиться, в форме IP:Порт. В поле IP вводится либо\n" "сетевой адрес вида x.x.x.x, либо доменное имя." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Подключиться только к eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Подключиться только к Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Отключиться от сети." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Это отключит от всех подсоединенных сетей.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Отключиться только от eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Отсоединиться от Kad." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Добавить eD2k или magnet-ссылку в ядро" #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Добавляемая eD2k ссылка может являться:\n" "*) ссылкой на файл (ed2k://|file|...), тогда данный файл будет\n" " добавлен в очередь на закачку\n" "*) ссылкой на сервер (ed2k://|server|...), тогда данный сервер будет\n" " добавлен в список серверов\n" "*) ссылкой на список серверов, тогда все сервера из него будут\n" " добавлены в список\n" "\n" "magnet-ссылка должна содержать eD2k хэш и длину файла.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Установить значение параметра." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Установить настройки IP фильтра." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Включить IP-фильтрацию для клиентов и серверов." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Выключить IP-фильтрацию для клиентов и серверов." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Включить/выключить IP-фильтрацию для клиентов." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Включить IP-фильтрацию для клиентов." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Выключить IP-фильтрацию для клиентов." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Включить/выключить IP-фильтрацию для серверов." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Включить IP-фильтрацию для серверов." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Выключить IP-фильтрацию для серверов." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Выбирите уровень IP фильтрации." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Допустимые уровни фильтрации находятся в диапазоне 0-255,\n" "значением по умолчанию является 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Укажите пределы канала." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "Значения тут указываются в кб/сек (килобайтах в секунду).\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Укажите ограничение скорости отдачи." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "Значения тут указываются в кб/сек (килобайтах в секунду).\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Укажите ограничение скорости загрузки." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Получить и отобразить значение параметра." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Получить параметры IP фильтра." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Получить состояние IP фильтра для клиентов и серверов." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Получить состояние IP фильтра только для клиентов." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Получить состояние IP фильтра только для серверов." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Получить уровень IP фильтрации." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Получить ограничения полосы пропускания." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Выполнить поиск." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Необходимо указать тип поиска с помощью следующих значений:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Пример: 'search kad file' выполнит поиск в Kad файла \"file\".\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Выполнить глобальный поиск." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Выполнить локальный поиск" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Выполнить поиск в Kad" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Показать результаты последнего поиска." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Вернуть результаты предыдущего поиска.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Показать состояние поиска." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Показать состояние поиска.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Начать загрузку файла." #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Должен быть указан номер файла из последнего поиска.\n" "Пример: 'download 12' запустит загрузку файла номер 12 из последнего " "поиска.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Приостановить закачку." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Продолжить закачку." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Отменить закачку." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Установить приоритет загрузки." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" "Установить для загрузки низкий, нормальный, высокий или автоматический " "приоритет.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Установить низкий приоритет." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Установить нормальный приоритет." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Установить высокий приоритет." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Установить авто-приоритет." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Показать очереди/списки." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Показать очереди на закачку/отдачу, список серверов или публикуемых файлов.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Показать очередь на отдачу." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Показать очередь на закачку." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Показать журнал." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Показать список серверов." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Очистить журнал." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Устаревшая команда, используйте вместо нее '%s'." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Устаревшая команда, и возможно в будущем будет удалена.\n" "Используйте вместо нее '%s'.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Текстовый клиент aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Конвертирую старые AICH хеши из '%s' в 64b в '%s'" #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "ПРЕДУПРЕЖДЕНИЕ: Имя файла '%s' - неверно и было изменено на '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "ПРЕДУПРЕЖДЕНИЕ: Файл '%s' уже существует. Новый файл назван '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "Вы уверены, что хотите отменить и удалить все файлы в этой категории?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Требуется подтверждение" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Поддерживается только 99 категорий." #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Слишком много категорий!" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Все остальные" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Выбрать фильтр просмотра" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Добавить категорию" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Редакировать категорию" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Удалить категорию" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "Не удалось открыть файл (%s), удаляю из списка публикуемых файлов." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Запрошен набор хешей для неизвестного файла: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Возобновляется отдача файла: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Приостанавливается отдача файла: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Не удалось выполнить команду `%s' при событии `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Загрузка завершена" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Полный путь к файлу" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Имя файла без пути" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "eD2k хэш файла" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Размер файла в байтах" #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Общее время загрузки" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Начата новая беседа" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Отправитель" #: src/UserEvents.h:88 msgid "Out of space" msgstr "Недостаточно места" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Раздел диска" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Ошибка при завершении" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Обрабатывается файл под номером %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Вы запросили частичные хеши (используется только для файлов > 9.5 MБ)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Файл не существует !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, программа для создания eD2k ссылок для aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Добро пожаловать!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Параметры ввода" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Файл для хеширования" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Добавьте возможные URL для этого файла" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Введите здесь файл для которого вы хотите получить eD2k ссылку" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Введите здесь URL который вы хотите добавить к eD2k ссылке: добавьте / в " "конце если хотите чтобы aLinkCreator присоеденил текущее имя файла" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Удалить" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Создать ссылку с хешами частей" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Помогите распространить новые и редкие файлы быстрее, за счет увеличения " "размера ссылки" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Хеш MD4" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k хэш-файл" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k ссылка" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Сохранить" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Скопировать в буфер обмена" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Открыть" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Открыть файл и получить его eD2k ссылку" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Копировать полученную eD2k ссылку в буфер" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Сохранить как" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Сохранить полученную eD2k ссылку в файл" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "О программе aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Выберите файл для которого вы хотите получить eD2k ссылку" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Невозможно открыть буфер" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Сейчас нечего копировать!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Выберите файл в который сохранить полученную eD2k ссылку" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Невозможно открыть " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Пожалуйста, введите не пустое имя файла" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Сейчас нечего сохранять!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, программа для создания eD2k ссылок для aMule\n" "\n" "(c) 2004 ThePolish \n" "\n" "Иконки взяты из http://www.everaldo.com и http://www.icomania.com\n" "и http://jimmac.musichall.cz/ikony.php3\n" "\n" "Лицензия - GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Идет хеширование..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator работает для вас" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Считаем MD4 хэш..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Считаем eD2k хэши..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Отменено." #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Выполнено за %.2f сек" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Этот URL уже добавлен !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Введите URL" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Не удалось открыть %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i дней %i часов %i минут %i секунд" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uд %02uч %02uмин %02uс" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uч %02uмин %02uс" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02uмин %02uс" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02uс" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, модуль статистики aMule" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Максимальная скорость загрузки за время работы wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Абсолютная максимальная скорость загрузки за время работы wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Система" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Остановить автоматическое обновление" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Сохранить картинку со статистикой" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Распечатать картинку со статистикой" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Настройки" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "О модуле wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Начать авто обновление" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Автоматическое обновление остановлено" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Автоматическое обновление начато" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Сохранить картинку со статистикой" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Онлайн-статистика" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Проблема с печатью.\n" "Возможно принтер неправильно установлен." #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Печать" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule модуль OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Основано на CAS, написанным Pedro de Oliveira \n" "\n" "Лицензия - GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Ох-ох... aMule то не запущен..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule запущен" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule запущен, но не подключен" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule подключается..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Ох-ох... статус aMule неизвестен..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " работает " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " остановлен!" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " не подключен!" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " подключается..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " делает что-то непонятное, проверьте!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " подключен к " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "отключен" # stands for $User is on $server #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " на " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " с " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Всего принято: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Передано: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Принято за сеанс: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Прием: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/сек, Передача: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr "kB/сек" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Передача другим: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr "файлов, клиентов в очереди: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Время:" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " на " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Системная загрузка (за 1-5-15 мин): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Время работы системы: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Каталог, содержащий файл amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Введите здесь путь к вашему файлу amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Интервал обновления в секундах" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Генерировать картинку со статистикой после каждого события обновления" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" "Укажите здесь каталог, в который вы хотите сохранять картинку со статистикой" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Периодическая загрузка картинки со статистикой на FTP сервер" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP Url" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP путь" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Введите здесь адрес вашего FTP сервера" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Введите здесь путь для сохранения картинки со статистикой на FTP сервере" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Пользователь" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Введите здесь имя пользователя для вашего FTP сервера" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Введите здесь пароль для вашего FTP сервера" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Интервал обновления через FTP в минутах" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Проверить" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Каталог, в котором хранится файл-подпись" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Каталог, в котором будет сохранятся картинка со статистикой" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Загрузить шаблон " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "HTTP порт веб-сервера" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Использовать UPnP форвардинг портов для порта веб-сервера" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP-порт" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Использовать gzip-сжатие" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Пароль веб-сервера для полного доступа" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Пароль веб-сервера для ограниченного доступа" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Позволять ограниченный доступ" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Запрещать ограниченный доступ" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Загрузить/сохранить настройки веб-сервера из/в удаленный aMule" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Путь к файлу конфигурации aMule. НЕ ИСПОЛЬЗУЙТЕ ПРЯМОЙ ПУТЬ!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Отключить PHP (не рекомендуется)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Компилировать PHP-страницы при каждом запросе" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Веб-сервер aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "соединение Веб-клиента принято\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "ОШИБКА: невозможно принять соединение web-клиента\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Запрос не удался из-за следующей ошибки: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Индексный файл не найден:" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Сессия просрочена - запрашиваю логин\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Сессия в порядке, авторизован\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Сессия в порядке, не авторизован\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Нет открытых сессий - буду запрашивать логин\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Сессия открыта - запрашиваю логин\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Обрабатываю запрос [исходный]:" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Не указан пароль, авторизация запрещена." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Проверяю пароль\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Хеш пароля неверен\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Пароль верен\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Неверный пароль\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Вы не ввели пароль. Пустой пароль недопустим.\n" # в eMule - так и пишут: логин/логаут, но мне не нравится #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Запрошено отсоединение\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Обрабатываю запрос [перенаправленный]:" #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Файл %s (%s) не имеет сохраненных источников" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Файл %s (%s) не имеет сохраненных источников" #~ msgid "Download status" #~ msgstr "Статус загрузки" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Интервал обновления: %d с" #~ msgstr[1] "Интервал обновления: %d секунд" #~ msgstr[2] "Интервал обновления: %d секунд" #~ msgid "Transferring" #~ msgstr "Передача" #, fuzzy #~ msgid "QR: ???" #~ msgstr "QR: %u" #~ msgid "QR: %u" #~ msgstr "QR: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "В очереди" #~ msgid "TODO - show progress of a search" #~ msgstr "СДЕЛАТЬ - отобразить прогресс поиска" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Начинаю создавать MD4 и AICH хеши для файла: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Начинаю создавать MD4-хеш для файла: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Начинаю создавать AICH-хеш для файла: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "ПРЕДУПРЕЖДЕНИЕ: не удалось удалить оригинал '%s' после создания резервной " #~ "копии." #~ msgid "WARNING: Failed to delete %s" #~ msgstr "ПРЕДУПРЕЖДЕНИЕ: не удалось удалить %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Рейтинг (всего):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Пытаться передать полные части всем клиентам" #~ msgid "Networks window" #~ msgstr "Окно сетей" #~ msgid "Searches window" #~ msgstr "Окно поиска" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Загружается" #~ msgid "Shared files window" #~ msgstr "Окно публикуемых файлов" #~ msgid "Messages window" #~ msgstr "Окно сообщений" #~ msgid "Statistics graph window" #~ msgstr "Окно статистики" #~ msgid "Preferences settings window" #~ msgstr "Окно настроек" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Потеряна пиктограмма области уведомлений, попытка пересоздать..." #~ msgid "Transfers" #~ msgstr "Передачи" #~ msgid "Files transfers window" #~ msgstr "Окно передач" #~ msgid "Unban" #~ msgstr "Разблокировать" #~ msgid "Show Uploads" #~ msgstr "Показать передачи" #~ msgid "Show Queue" #~ msgstr "Показать очередь" #~ msgid "Select View" #~ msgstr "Выбрать вид" #~ msgid "Client Software" #~ msgstr "Клиентская программа" #~ msgid "Waited" #~ msgstr "Время ожидания" #~ msgid "Upload Time" #~ msgstr "Время загрузки" #~ msgid "Upload/Download" #~ msgstr "Передача/Загрузка" #~ msgid "Remote Status" #~ msgstr "Удаленный статус" #~ msgid "File Priority" #~ msgstr "Приоритет файла" #~ msgid "Score" #~ msgstr "Счет" #~ msgid "Asked" #~ msgstr "Запрошено" #~ msgid "Last Seen" #~ msgstr "Последний раз был доступен" #~ msgid "Entered Queue" #~ msgstr "Встал в очередь" #~ msgid "Transferred Up" #~ msgstr "Передано" #~ msgid "Transferred Down" #~ msgstr "Принято" #~ msgid "Userhash" #~ msgstr "Хеш пользователя" #~ msgid "Encrypted" #~ msgstr "Зашифровано" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "Загружено %d изображений флагов." amule_2.3.1+git20151120.0023527bc2.orig/po/sl.po0000644000175000017500000073654312611472361017121 0ustar morphmorph# translation of sl.po to Slovenščina # This file is distributed under the same license as the aMule package. # # Uros Vampl , 2005-2008. # Aljosa Vidmar , 2006-2008. # Aljoša Vidmar , 2007. # Jure Repinc , 2011. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-04-26 01:08+0200\n" "Last-Translator: Jure Repinc \n" "Language-Team: Slovenian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: sl\n" "X-Generator: Lokalize 1.2\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n" "%100==4 ? 3 : 0);\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Dodaj prijatelja" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Vnesti morate veljaven IP in vrata." #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Podatki" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Navedena koda uporabnika ni veljavna." #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Ni bilo mogoče odpreti datoteke ED2KLinks." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "OPOZORILO: če imete nizek ID, sebe ne morete dodati kot vira za povezavo " "eD2k." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Sedaj, zapuščanje glavnega programa ..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Končanje izvoda amuleweb s PID »%ld« ... " #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Ubijanje izvoda amuleweb s PID »%ld« ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Neuspeh" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Končevanje jedra." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "Zaustavitev aMule zaključena." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Rezultati razhroščevanja pomnilnika za izhod iz aMule:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "Nastavitev zunanje povezave" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Geslo je bilo nastavljeno in zunanje povezave omogočene." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "OPOZORILO" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Vaše področne nastavitve so bile spremenjene na sistemsko privzete zaradi " "spremembe v nastavitvah. Oprostite." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Podatki" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Na seznamu strežnikov nimate nobenega strežnika.\n" "Ali želite, da aMule zdaj pridobi nov seznam?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Prejemanje seznama strežnikov" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "spletni strežnik teče s PID %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Zahtevali ste zagon spletnega strežnika ob zagonu programa, a programa " "amuleweb ni moč zagnati. Namestite paket, ki vsebuje spletni strežnik aMule, " "ali pa prevedite aMule z možnostjo »--enable-webserver« in ga znova namestite " "z »make install«." #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "NAPAKA" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Vrat ni bilo moč povezati z navedenim naslovom: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Vrata %u niso razpoložljiva. Imeli boste nizek ID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Vrata %u niso razpoložljiva.\n" "\n" "To pomeni, da boste imeli nizek ID.\n" "\n" "Preverite omrežje in se prepričajte, da so vrata odprta za izhod in vhod." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Ni bilo mogoče ustvariti datoteke spletnega podpisa" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Ni bilo mogoče ustvariti aMule datoteke spletnega podpisa" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Kot kaže izbrana področna nastavitev ni nameščena na vašem računalniku. " "(Opomba: vseeno se jo bo poskusilo nastaviti)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "To je vaš prvi zagon aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "To je testna različica, posodobljena dnevno in\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "ne dajemo zagotovila, da ne bo ničesar poškodovala, zažgala vaše hiše\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "ali ubila vašega psa. Vendar bi vseeno morala biti varna za uporabo.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Več informacij, podporo in nove različice, lahko najdete na naši domači " "strani,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "na www.aMule.org, ali na kanalu IRC #aMule, na strežniku irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Morebitne hrošče lahko sporočite na http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Navedena mapa za datoteke za spletni podpis je NEVELJAVNA.\n" "Spletni podpis bo ONEMOGOČEN, dokler težave ne odpravite v nastavitvah." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Gostitelj strežnika obveščen" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Vnaprejšnja dodelitev prostora na disku za datoteko »%s« ni uspela: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "NAPAKA: ni mogoče odpreti dnevniške datoteke" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "OPOZORILO: dnevniška datoteka je prazna. Nekaj je narobe." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Dnevnik je bil ponastavljen" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Sporočilo strežnika: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "Prejemanje %s je bilo preskočeno, ker zahtevana datoteka ni novejša." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Ni bilo mogoče prenesti seznama vozlišč." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Ni bilo mogoče odpreti prejete datoteke za preverjanje različice" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Datoteka za preverjanje različice je pokvarjena" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Uporabljate zastarelo različico aMule." #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" "Različica vaše aMule je %i.%i.%i, najnovejša različica pa je %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Najnovejšo različico lahko vedno najdete na http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "OPOZORILO: vaša različica aMule je zastarela: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Uporabljate najnovejšo različico aMule." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Ni bilo mogoče prenesti datoteke za preverjanje različice" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Uporabniki: %s | Datoteke: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Uporabniki: E: %s K: %s | Datoteke: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Izbranega ni nobenega omrežja" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "z nizkim ID-jem" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "z visokim ID-jem" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Povezan z %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Povezovanje z %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Povezava z eD2k prekinjena" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad zagnan." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad ustavljen." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Povezan s Kad (v redu)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Povezan s Kad (za požarnim zidom)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Povezava s Kad prekinjena" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Omrežja Kad ni mogoče uporabljati, če so vrata UDP onemogočena v " "nastavitvah. Kad ni zagnan." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Omrežje Kad je onemogočeno v nastavitvah. Ni povezave." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "NAPAKA: Ne morete uporabljati demona aMule, ko so zunanje povezave " "onemogočene. Za vklop zunanjih povezav uporabite ali navaden aMule ali " "zaženite amuled z možnostjo --ec-config ali pa nastavite vrednost ključa" "\"AcceptExternalConnections\" na 1 v datoteki ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "NAPAKA: Za uporabo zunanjih povezav je potrebno veljavno geslo, demona aMule " "pa brez zunanjih povezav ni mogoče uporabiti. Za zagon demona aMule morate " "ključ »ECPassword« v datoteki ~/.aMule/amule.conf nastaviti na ustrezno " "vrednost. Za nastavitev gesla zaženite amuled z možnostjo --ec-config. Več " "informacij lahko najdete na http://wiki.amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - zaganjanje časomerilnika" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: cepljenje v ozadje – se vidimo" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Ni moč ustvariti datoteke PID" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "NAPAKA: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "To je aMule %s, ki temelji na eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Operacijski sistem: %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Obiščite http://www.amule.org da preverite, če je na voljo nova različica." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "USODNA NAPAKA: ustvaritev časomerilnika ni uspela" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Oddaljen nadzor aMule " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Posnetek:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "Odjemalec P2P, ki temelji na eMule in je za vse platforme\n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Spletna stran: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Forum: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "PZS: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Stik: admin@amule.org (administrativne zadeve) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Avtorske pravice © 2003–2011 ekipa aMule\n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Del aMule temelji na\n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: usmerjanje med enakovrednimi, ki temelji na metriki XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" " Avtorske pravice 2002–2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Sporočilo" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "Pogovorno okno aMule je bilo uničeno" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Povezovanje" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: povezovanje" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: povezava prekinjena" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: za požarnim zidom" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: povezan" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: povezovanje" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: izklopljen" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Prekliči" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Ustavi trenutne poskuse povezovanja" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Prekini povezave" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Prekini povezavo s trenutno povezanimi omrežji" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Poveži se" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Poveži se s trenutno omogočenimi omrežji" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Gor: %.1f (%.1f) | Dol: %.1f (%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Gor: %.1f | Dol: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Povezan)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Ni povezave)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "Ali res želite zapustiti %s?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Potrditev izhoda" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Zaženi ukaz: " #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "– privzeto –" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Mapa za preobleke »%s« ne obstaja" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "OPOZORILO: datoteke s preobleko »%s« ni moč odpreti za branje" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Omrežja" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Okno z omrežji" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Iskanja" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Okno z iskanji" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Prejemanja" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "Okno s prejemanji" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Deljene datoteke" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Okno z deljenimi datotekami" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Sporočila" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Okno s sporočili" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistika" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Okno s statističnimi grafi" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Nastavitve" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Okno z nastavitvami" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Uvoz" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Orodje za uvažanje delnih datotek" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "O programu" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "O programu/pomoč" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Omrežje eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Omrežje Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Brez omrežja" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "Oddaljeni nadzor aMule" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Usodna napaka: ni bilo mogoče ustvariti osrednjega časomerilnika" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Poveži se z oddaljenim aMule" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Usodna napaka: ni bilo mogoče ustvariti časomerilnika za povpraševanje" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Prehod v dogodkovno zanko ..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Povezovanje ..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Povezovanje ni uspelo " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Rokovalnik z dogodki zunanje povezave oddaljenega vmesnika" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Zaustavljanje" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Povezava ni uspela. Ni se moč povezati z %s: %d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Povezava prekinjena – aMule se je najverjetneje končal." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Pripravljen" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Vse" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "Ni moč ustvariti mape »%s« za kategorijo »%s«, obdržana bo mapa »%s«." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Neznano" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Ni bilo mogoče dobiti deljenih datotek od uporabnika »%s«" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Iskanje kolega za povezavo z nizkim ID-jem" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (lažna različica eMule %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (lažni eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (lažni eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (temelji na eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Vzdevek: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Zahtevano: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statistika datotek v tej seji: sprejetih %d od %d zahtev, %s prenesenih\n" msgstr[1] "" "Statistika datotek v tej seji: Sprejetih %d od %d zahteve, %s prenesenih\n" msgstr[2] "" "Statistika datotek v tej seji: Sprejetih %d od %d zahtev, %s prenesenih\n" msgstr[3] "" "Statistika datotek v tej seji: Sprejetih %d od %d zahtev, %s prenesenih\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statistika datotek vseh sej: sprejetih %d od %d zahtev, %s prenesenih\n" msgstr[1] "" "Statistika datotek vseh sej: Sprejetih %d od %d zahteve, %s prenesenih\n" msgstr[2] "" "Statistika datotek vseh sej: Sprejetih %d od %d zahtev, %s prenesenih\n" msgstr[3] "" "Statistika datotek vseh sej: Sprejetih %d od %d zahtev, %s prenesenih\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Zahtevana neznana datoteka" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Filtrirano sporočilo od »%s« (IP: %s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Novo sporočilo od »%s« (IP: %s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Uporabnik %s (%u) je zahteval seznam deljenih datotek za mapo »%s« → prezrto" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "OPOZORILO: %s ni moč odpreti." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "OPOZORILO: Seznam preklicanih datotek je pokvarjen, vsebuje neveljavno glavo." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "Vhodno/izhodna napaka med branjem datoteke %s: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "Napaka med shranjevanjem datoteke %s: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Vnesite besedilo s slike" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategorija" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Nova kategorija" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Izberite mapo za prejete datoteke" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Navesti morate ime za kategorijo." #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Navesti morate pot za kategorijo." #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Ni bilo mogoče ustvariti mape prejetih datotek za kategorijo. Prosimo, " "navedite veljavno pot." #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Pogovorna seja se je začela: %s (%s:%u) – %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Povezan z odjemalcem ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Povezovanje z odjemalcem ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Povezava z odjemalcem ni uspela / povezava izgubljena ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" "*** Prestali ste preverjanje z besedilom na sliki in uporabnik je prejel " "vaše sporočilo. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Odgovor na preizkus z besedilom na sliki je bil napačen in vaše " "sporočilo je bilo prezrto. S pošiljanjem novega sporočila lahko zahtevate " "nov preizkus. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Klepet" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Zapri zavihek" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Zapri vse zavihke" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Zapri druge zavihke" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Dodaj med prijatelje" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Datoteka s krediti naložena, %u znanih odjemalcev" msgstr[1] "Datoteka s krediti naložena, %u znan odjemalec" msgstr[2] "Datoteka s krediti naložena, %u znana odjemalca" msgstr[3] "Datoteka s krediti naložena, %u znani odjemalci" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Zasluge potekle za %u odjemalcev." msgstr[1] " - Zasluge potekle za %u odjemalec." msgstr[2] " - Zasluge potekle za %u odjemalca." msgstr[3] " - Zasluge potekle za %u odjemalce." #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Datoteka »cryptkey.dat« ne obstaja. Ustvarjanje." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Podrobnosti o odjemalcu" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "Nizek ID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "Visok ID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Omogočeno" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Podprto" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Ni podprto" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Onemogočeno" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Povezan" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Ni povezave" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Nedokončano" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Baraba" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Preverjeno – v redu" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Ni na voljo" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Uporabnik %s (%u) je zahteval vaš seznam deljenih datotek → sprejeto" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Uporabnik %s (%u) je zahteval vaš seznam deljenih datotek → zavrnjeno" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "Uporabnik %s (%u) je zahteval vaš seznam deljenih map → sprejeto" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "Uporabnik %s (%u) je zahteval vaš seznam deljenih map → zavrnjeno" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Uporabnik %s (%u) je zahteval seznam deljenih datotek za mapo »%s« → sprejeto" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Uporabnik %s (%u) je zahteval seznam deljenih datotek za mapo »%s« → zavrnjeno" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Uporabnik %s (%u) deli mapo »%s«" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Uporabnik %s (%u) je poslal nezahtevane deljene mape." #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "Uporabnik %s (%u) je poslal seznam deljenih datotek za mapo »%s«" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Uporabnik %s (%u) je končal s prenosom seznama deljenih datotek" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Uporabnik %s (%u) je poslal nezaželen seznam deljenih datotek" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "Uporabnik %s (%u) je zavrnil dostop do seznama deljenih datotek/map" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Komentarji o datoteki" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Uporabniško ime" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Ime datoteke" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Ocena" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Komentar" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Ni komentarjev" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u komentarjev" msgstr[1] "%u komentar" msgstr[2] "%u komentarja" msgstr[3] "%u komentarji" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "Izločil odjemalca %s, ker je poslal %s pokvarjenih podatkov od skupno %s za " "datoteko »%s«" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Samod. [Ni]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Samod. [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Samod. [Vi]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Zelo nizka" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Nizka" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normalna" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Visoka" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Zelo visoka" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Najvišja" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Povpraševanje" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Povezovanje preko strežnika" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Vrsta polna" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "V vrsti" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Prejemanje" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Prejemanje kode" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Nič uporabnih delov" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Povezava nizkega ID-ja z nizkim ID-jem ni mogoča" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Preveč povezav" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Povezovanje preko Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Preveč povezav Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Izločen" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Napaka povezave" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Oddaljena vrsta polna" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Star MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Nov MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule združljiv" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Krajevni strežnik" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Oddaljni strežnik" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Izmenjava virov" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Pasivno" #: src/DataToText.cpp:133 msgid "Link" msgstr "Povezava" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Izvorna semena" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Rezultat iskanja" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Zaključeno" #: src/DataToText.cpp:146 msgid "In progress" msgstr "V teku" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "NAPAKA: zmanjkalo je prostora na disku" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "NAPAKA: ni bilo moč najti datoteke partmet" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "NAPAKA: vhodno/izhodna napaka" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "NAPAKA: neuspeh" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "V vrsti" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Datoteka se že prejema" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Neznan ali pokvarjen format začasne datoteke." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Del" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Velikost" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Preneseno" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Hitrost" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Napredek" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Viri" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prednost" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Stanje" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Preostali čas" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Nazadnje videno celotno" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Zadnji sprejem" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Ali res želite izbrisati izbrano datoteko?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Ali res želite izbrisati izbrane datoteke?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Odziv od: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Samod." #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Ustavi" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Premor" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Nadaljuj" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "Počisti &končane" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Prenesi vse vire PZDD na to datoteko zdaj" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Prenesi vse vire PZDD na to dat. (samod.)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Prenesi vse vire PZDD na druge datoteke" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Dodatne možnosti" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Ogled" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Prikaži po&drobnosti datoteke" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Prikaži vse komentarje" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Skopiraj magnet URI na odložišče" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Skopiraj &povezavo eD2k na odložišče" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Skopiraj odziv na odložišče" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "prekliči dodelitev" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Dodeli kategoriji" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Odpri datoteko" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Vnesite novo ime za to datoteko:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Preimenuj datoteko" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%d.%m.%y %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Prejemanja (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Da preprečite to opozorilo ob vsakem ogledu,\n" "nastavite svoj priljubljen predvajalnik video posnetkov (privzet je mplayer)" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Ogled datoteke" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "NAPAKA: Ni bilo mogoče zagnati zunanjega predvajalnika. Ukaz: »%s«" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Shranjevanje delne datoteke %u od %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Vse delne datoteke shranjene." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Nalaganje začasnih datotek iz %s." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Nalaganje delne datoteke %u od %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "NAPAKA: nalaganje varnostne kopije ni uspelo. Na http://forum.amule.org " "pošičite rešitve za obnavljanje datotek .part.met." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Vse delne datoteke naložene." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Ni mogoče najti delnih datotek" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Najdenih %u delnih datotek" msgstr[1] "Najdena %u delna datoteka" msgstr[2] "Najdeni %u delni datoteki" msgstr[3] "Najdene %u delne datoteke" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "Datotečni sistem z začasno mapo ne more shranjevati velikih datotek." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" "Datotečni sistem z mapo prejetih datotek ne more shranjevati velikih datotek." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Prejemanje %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Datoteko »%s« že poskušate prejeti." #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Datoteko »%s« že imate." #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Datoteko %s že poskušate prejemati" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Povezave magnet ni moč pretvoriti v eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Neznan protokol povezave: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Neveljavna povezava eD2k. NAPAKA: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "Po neuspelem overjanju je odjemalec poslal paket." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Zunanja povezava se je zaprla." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Zunanje povezave onemogočene zaradi praznega gesla." #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Zunanje povezave onemogočene v nastavitveni datoteki" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Nova zunanja povezava sprejeta" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "NAPAKA: nove zunanje povezave ni bilo moč sprejeti" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "Zunanja povezava zavrnjena zaradi praznega gesla v nastavitvah." #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Povezovanje z odjemalcem: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Neznana različica" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Napačen ID različice za zunanje povezave; lahko pride do binarne " "nezdružljivosti. Uporabite jedro in oddaljen odjemalec iz istega posnetka." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Ne morete se povezati s stabilno različico iz poljubne razvojne različice. " "Preprečeno morebitno sesutje." #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Neveljavna različica protokola." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Manjka oznaka različice protokola." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" "Overjanje ni uspelo: kot geslo za zunanje povezave je bila podana napačna " "koda." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Overjanje ni uspelo: napačno geslo." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Overjanje ni uspelo: manjkajoče geslo." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Neveljavna zahteva, najprej se morate overiti." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Dostop dovoljen." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "Odjemalcu je bilo poslano sporočilo o napaki »%s«." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Nepooblaščen poskus dostopa od %s. Povezava prekinjena." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" "Ukaz za oddaljeno delno datoteko ni uspel: Ni bilo mogoče najti kode " "datoteke: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Kode datoteke ni mogoče najti: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "UPS. Napaka pri obdelavi OpCode." #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Strežnik ni bil dodan" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "strežnika ni mogoče najti: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "morate navesti strežnik za odstranitev" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k je onemogočen v nastavitvah." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Iskanje poteka. Ponovno poglejte za rezultati čez nekaj trenutkov." #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Spletno iskanje iz oddaljenega vmesnika nima smisla." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Ni točk za graf." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Vaš odjemalec ni nastavljen za to stopnjo podrobnosti." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Zunanja povezava: zahtevana zaustavitev" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Ustavljanje že poteka." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Zunanja povezava: dodajanje povezave »%s«." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Neveljavna povezava oz. je že na seznamu." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Datoteke ni mogoče najti." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Neveljavno ime datoteke." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Ni mogoče preimenovati datoteke." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad je onemogočen v nastavitvah." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Povezava z eD2k že obstaja." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "Povezovanje z eD2k ..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Povezava s Kad že obstaja." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Povezovanje s Kad ..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Vsa omrežja so onemogočena." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Povezava z eD2k prekinjena." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Povezava s Kad prekinjena." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Zunanja povezava: prejeta je bila neveljavna operacijska koda: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Neveljavna operacijska koda (napačna različica protokola?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Neznana razširitev »%s« za ukaz »%s«.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Neznan ukaz »%s«.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Ta ukaz nima argumentov.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Ta ukaz mora imeti argument.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Ta ukaz je nepopoln, uporabiti morate eno od spodnjih razširitev.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Razpoložljive razširitve:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Razpoložljivi ukazi:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Ukazi niso občutljivi na velikost črk.\n" "Napišite »%s « za podrobne informacije o .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Konča program." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Prikaži pomoč." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Za pomoč pri ukazu napišite »help «.\n" "Za celoten seznam ukazov napišite »help«.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Uporabite »%s« za seznam ukazov\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Napaka v skladnji." #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Napaka pri obdelavi ukaza – se ne bi smelo zgoditi. Prosimo, poročajte o " "hrošču.\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Ta ukaz ne sme imeti parametrov." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Ta ukaz mora imeti parameter." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Neveljaven argument." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Ukaz ni popoln." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Napišite »%s« za dodatno pomoč.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "To je %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "To je %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Ustvarjanje odjemalca ...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "V redu, končevanje %s ...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Ne morete se povezati s praznim geslom.\n" "Vnesti morate geslo v nastavitveni datoteki,\n" "ukazni vrstici ali pa ko boste vprašani za geslo.\n" "\n" "Končevanje ...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Prikaži to besedilo pomoči." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Gostitelj kjer teče aMule. (privzeto: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Vrata aMule za zunanje povezave. (privzeto: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Geslo za zunanje povezave." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Preberi nastavitve iz datoteke." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Ne izpisuj izhodnih podatkov na standardni izhod." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Zgovorno – prikaži tudi razhroščevalna sporočila." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Nastavi področne nastavitve (jezik) programa." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Zapiši možnosti ukazne vrstice v nastavitveno datoteko." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" "Ustvari nastavitveno datoteko, ki temelji na nastavitveni datoteki aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Izpiši različico programa." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Podrobnosti datoteke" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% zaključeno" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" "Datoteke s seznamom prijateljev »emfriends.met« ni bilo moč odpreti za branje." #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" "Datoteke s seznamom prijateljev »emfriends.met« ni bilo moč odpreti za " "pisanje." #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "KRITIČNO – ni odjemalca za StartChatSession" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Prijatelji" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Prikaži po&drobnosti" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Dodaj prijatelja" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Odstrani prijatelja" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Pošlji &sporočilo" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Prikaži datoteke" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Ustvari mesto za prijatelja" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Ali res želite izbrisati izbranega prijatelja?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Ali res želite izbrisati izbrane prijatelje?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Ne morete dodeliti več kot enega mesta za prijatelja.\n" "Samo eno mesto je bilo dodeljeno." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Izbira večih" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Pošlji uporabniku sporočilo" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Sporočilo:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Odstrani s seznama prijateljev" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Pošlji sporočilo" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Prenesi k tej datoteki" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "PZDD" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "V vrsti: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Prosil za drugo datoteko" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Čakanje na mesto za pošiljanje" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "V vrsti: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Pošiljanje" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Brez" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Ne" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Da" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Prejemanje ..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "Prejemanje HTTP preklicano" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "Ni moč ustvariti ciljne datoteke %s za prejemanje." #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "URL za prejemanje ne sme biti prazen" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "URL %s je vrnil: %i – Napaka (%i)." #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "Kritična napaka pri zapisovanju prejete datoteke" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "Prejetih %d bajtov" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "Pričakovanih je bilo %d bajtov, prejetih pa %d bajtov" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "Neveljaven URL za prejemanje HTTP ali pa preusmeritev HTTP (ali ste pozabili " "»http://«?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "Ni se moč povezati s strežnikom za prejemanje HTTP" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "Neveljaven odziv strežnika za prejemanje HTTP" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Pridobi novo datoteko GeoIP.dat od %s" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Prejemanje datoteke GeoIP.dat ni uspelo, posodobitev preklicana." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "Odstranitev datoteke %s ni uspela, posodobitev preklicana." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "Preimenovanje datoteke %s ni uspelo, posodobitev preklicana." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "%s je bila uspešno posodobljena" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Napaka pri posodabljanju GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "Prejemanje %s od %s ni uspelo" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "Nalaganje državnih podatkov za »%s« ni uspelo." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Nalaganje datotek filtrov IP »ipfilter.dat« in »ipfilter_static.dat«." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "Ni bilo mogoče naložiti datoteke ipfilter.dat »%s«, neznan format." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Ni bilo mogoče naložiti datoteke ipfilter.dat »%s«, ni bilo moč odpreti " "datoteke" #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Naloženih %u nizov IP iz »%s«." msgstr[1] "Naložen %u niz IP iz '%s'." msgstr[2] "Naložena %u niza IP iz '%s'." msgstr[3] "Naloženi %u nizi IP iz '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u nepravilnih vrstic je bilo izpuščenih." msgstr[1] "%u nepravilna vrstica je bila izpuščena." msgstr[2] "%u nepravilni vrstici sta bili izpuščeni." msgstr[3] "%u nepravilne vrstice so bile izpuščene." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Preimenovanje nove datoteke %s ni uspelo, posodobitev preklicana." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "Filter IP je pripravljen" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Naloži od znanih \n" "odjemalcev" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Vozlišča (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Neveljaven IP za začetno nalaganje" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Neveljavna vrata za začetno nalaganje" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Prosimo, izpolnite vsa zahtevana polja" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Ali res želite prenesti novo datoteko nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "S tem boste odstranili trenutna vozlišča in ponovno zagnali povezavo Kad." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Ali želite nadaljevati?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: iskalni niz je prekratek" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Ključna beseda za iskanje: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: iskalna ključna beseda je že na iskalnem seznamu: " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "Branje datoteke nodes.dat ni uspelo – prestara je. Ta različica (0) ni več " "podprta." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Prebranih %u stikov Kad" msgstr[1] "Prebran %u stik Kad" msgstr[2] "Prebrana %u stika Kad" msgstr[3] "Prebrani %u stiki Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "Najdenega ni bilo nobenega stika. Opravite začetno nalaganje ali pa " "pridobite datoteko nodes.dat." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Na voljo je samo %d stikov Kad, nodes.dat ni bila zapisana" msgstr[1] "Na voljo je samo %d stik Kad, nodes.dat ni bila zapisana" msgstr[2] "Na voljo sta samo %d stika Kad, nodes.dat ni bila zapisana" msgstr[3] "Na voljo so samo %d stiki Kad, nodes.dat ni bila zapisana" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Zapisanih %d stikov Kad" msgstr[1] "Zapisan %d stik Kad" msgstr[2] "Zapisana %d stika Kad" msgstr[3] "Zapisani %d stiki Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Ime datoteke" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Velikost datoteke" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Delilno razmerje" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Poslano" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Zahtevano" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Sprejeto" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Popolnih virov" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "OPOZORILO: seznam znanih datotek je pokvarjen, vsebuje neveljavno glavo." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" "Nalaganje vnosa iz seznama znanih datotek ni uspelo, datoteka je morda " "pokvarjena" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Neveljaven vnos na seznamu znanih datotek, datoteka je morda pokvarjena: " #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Neznana napaka %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "Ni moč dobiti opisa napake za napako %d" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Ustvarjanje kode" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Zaključevanje" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Zaključeno" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Prekinjeno" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Vsebuje napake" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Na čakanju" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Navesti morate neprazno geslo." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Neveljavno geslo, ni izvleček MD5." #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Napaka med povezovanjem" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "Zunanja povezava ni uspela. Prazen odgovor." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" "Zunanja povezava: slab odgovor, rokovanje ni uspelo. Povezava prekinjena." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Uspeh! Vzpostavljena povezava z aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Uspeh! Povezava vzpostavljena." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Zunanja povezava: dostop je bil zavrnjen. Razlog: " #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Zunanja povezava: rokovanje ni uspelo." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Zagon sinhronizacijske niti." #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "Vtičnica za poslušanje: v redu." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "NAPAKA: ni moč poslušati na vratih TCP." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "NAPAKA: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "OPOZORILO: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Zapri" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Izreži" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Skopiraj" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Prilepi" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Počisti" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Izberi vse" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Neomejeno" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule meni sistemske vrstice" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Omejitve hitrosti" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "Gor: brez" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "Gor: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "Dol: brez" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "Dol: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Hitrost prejemanja: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Hitrost pošiljanja: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Podatki o odjemalcu" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Vzdevek: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Izbran ni noben vzdevek." #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "Odjemalčev ID: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Ni povezave" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Ime strežnika: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP strežnika: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Ni povezave" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "Vrata TCP: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Vrata TCP: niso pripravljena" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "Vrata UDP: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "Vrata UDP: niso pripravljena" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Spletni podpis: omogočen" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Spletni podpis: onemogočen" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Neprekinjeno delovanje: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Deljene datoteke: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Odjemalci v vrsti: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Skupno dol: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Skupno gor: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Omejitev pošiljanja" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Omejitev prejemanja" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Skrij aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Prikaži aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Končaj" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "Povezava eD2k: " #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Pridobi" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "Kliknite za dodajanje povezave eD2k v vrsto za prejemanje." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Dogodki so prikazani tukaj. Za celoten seznam dogodkov, poglejte v zapisnik " "na zavihku Strežniki." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Nalaganje ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Število uporabnikov na strežniku na katerega ste povezani ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Uporabnikov: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Število uporabnikov povezanih na ta strežnik in ocena skupnega števila " "uporabnikov." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Gor: 0,0 | Dol: 0,0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Trenutno povprečje prenosa v obe smeri. Če je vklopljen prikaz presežka, " "številke v oklepaju ponazarjajo presežek prenosa od komunikacije med " "odjemalci." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Prikazuje stanje povezave in aktivne prenose. Rdeče puščice pomenijo, da " "trenutno niste povezani, rumene puščice pomenijo, da imate nizek ID (ste za " "požarnim zidom) in zelene puščice pomenijo, da imate visok ID (optimalna " "povezava)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Ni povezave ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Trenutno povezan strežnik." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Iskanje" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Ime:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Vrsta" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Krajevno" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Globalno" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Koda datoteke" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Dodatni parametri" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtriranje" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Vrsta datoteke" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Vse" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Arhivi" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Zvok" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Slike CD-jev" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Slike" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programi" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Besedila" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Video" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Končnica" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Min. velikost" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bajtov" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KiB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MiB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GiB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Maks. velikost" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Razpoložljivost" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filter:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filtriraj rezultate" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Obrni rezultat" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Skrij znane datoteke" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Začni" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Več" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Poišče več rezultatov na eD2k. za Kad to še ni podprto." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Ustavi" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Pridobi" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Ponastavi polja" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Rezultati" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Počisti zaključena prejemanja" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Viri datoteke:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Splošno" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Polno Ime:" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "Ni na voljo" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "Datoteka met:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Koda:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Velikost datoteke:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Stanje delne datoteke:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Nazadnje videno celotno:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Prenos" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Najdenih virov:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Prenašajoči viri:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Število delov:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Razpoložljivih:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Podatkovna hitrost:" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Čas aktivnega prejemanja: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Preneseno:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Zaključeno:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Inteligentno rokovanje s poškodbami" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Izguba zaradi poškodb:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Pridobitev zaradi stiskanja:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Paketi rešeni z I.R.P.:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Imena datoteke" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Prevzemi" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Počisti" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Uveljavi" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "V redu" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Komentirajte/ocenite datoteko (besedilo bo vidno vsem uporabnikom)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Za film lahko poveste njegovo dolžino, zgodbo, jezik ...\\n\\nin če je " "lažna, lahko to sporočite drugim uporabnikom." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Kakovost datoteke" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Ni ocenjena" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Neveljavna/poškodovana/lažna" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Slaba" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Povprečna" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Dobra" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Odlična" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Izberite oceno datoteke ali sporočite uporabnikom, če datoteka ni " "veljavna ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Osveži" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Prejemanje, prosimo počakajte ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Neznana velikost" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Zahtevani podatki" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Naslov IP:" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Vrata:" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Dodatni podatki" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Uporabniško ime:" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Koda uporabnika:" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Dodaj" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Hitrost prejemanja" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Trenutno" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Trenutno povprečje" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Povprečje seje" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Hitrost pošiljanja" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Povezave" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktivna prejemanja" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktivne povezave (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Aktivna pošiljanja" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Statistično drevo" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Uporabniško ime:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Koda uporabnika:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Program odjemalca:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Različica odjemalca:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Naslov IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID uporabnika:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP strežnika:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Ime strežnika:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Maskiranje:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Prenosi do uporabnika" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Trenutna zahteva:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Povprečna hitrost pošiljanja:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Povprečna hitrost prejemanja:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Poslano (seja):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Prejeto (seja):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Poslano (skupno):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Prejeto (skupno):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Točke" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Količnik dol/gor:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Varna identifikacija:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Položaj v vrsti:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Točke v vrsti:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Vzdevek" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org – Mule za vse platforme" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "To je ime, ki ga vidijo ostali uporabniki, ko se povežejo z vami." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Jezik: " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Zakasnitev preden se pojavi namig z navodili." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "To določa jezik vmesnika programa." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Ob zagonu preveri za novo različico" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Ob vklopu te možnosti, bo aMule ob vsakem zagonu preveril za novo različico " "programa." #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Zaženi pomanjšano" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Vklop te možnosti pomanjša aMule ob zagonu." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Opozori ob končanju" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Preden se aMule konča vas o tem opozori." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Ikona v sistemski vrstici" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Vklopi/izklopi ikono v sistemski vrstici." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Pomanjšaj v sistemsko vrstico" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Ob vklopu te možnosti se bo aMule pomanjšal v sistemsko vrstico, namesto v " "opravilno vrstico." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Zakasnitev namigov: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "sekund" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Izbira brskalnika" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Sem vnesite ime brskalnika. Za uporabo privzetega sistemskega brskalnika " "pustite prazno." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Brskanje" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Odpri v novem zavihku, če je mogoče" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "Če je mogoče, odpre stran v novem zavihku namesto v novem oknu." #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Video predvajalnik" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Omejitve povezave" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Pošiljanje" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Hitrost za eno mesto" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Vrata" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Standardna vrata TCP " #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "To so standardna vrata za eD2k in jih ni moč onemogočiti." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Vrata UDP za zahtevke strežnika (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Dodatna vrata UDP (globalno/Kad iskanje) " #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "Ta vrata UDP se uporabljajo za dodatne zahtevke eD2k in omrežje Kad." #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Omogoči posredovanje vrat na usmerjevalniku" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "Vrata TCP za UPnP (neobvezno):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Krajevni naslov poveži z IP-jem (prazno za poljuben):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Samo za napredne uporabnike: če imate več omrežnih vmesnikov, vnesite naslov " "vmesnika, s katerim bo povezan aMule." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Največ virov na prejemanje:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Največ istočasnih povezav:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "eD2k" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Samodejno se poveži ob zagonu" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Ponovno se poveži ob prekinjeni povezavi" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Izbriši nedosegljiv strežnik po" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "poskusih" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Ob zagonu samodejno posodobi seznam strežnikov" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Seznam" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Ob povezavi s strežnikom posodobi seznam strežnikov" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Ob povezavi odjemalca posodobi seznam strežnikov" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Uporabi sistem prednosti" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Uporabi preverjanje za nizek ID ob povezavi" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Varno povezovanje" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Samodejna povezava samo s strežniki na statičnem seznamu" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Nastavi ročno dodane strežnike na visoko prednost" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Inteligentno rokovanje s poškodbami (I.R.P.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Omogoči" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "Napredni I.R.P. zaupa vsaki kodi (ni priporočeno)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Na novo dodani prenosi naj bodo prekinjeni" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Na novo dodani prenosi naj imajo samodejno prednost" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Najprej poskusi prenesti prvi in zadnji del" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Po zaključku datoteke začni naslednjo prekinjeno" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Iz iste kategorije" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "Po abecednem vrstnem redu" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Novim datotekam vnaprej dodeli prostor na disku" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Za nove datoteke v naprej dodeli prostor na disku v velikosti celotne " "datoteke, kar zmanjša razdrobljenost." #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Ustavi prejemanja, ko prostor na disku doseže " #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Izberite, če želite, da aMule preverja prostor na disku" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Sem vnesite min. želen prostor na disku." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Shrani 10 virov pri redkih datotekah (< 20 virov)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Pošiljanja" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Nove deljene datoteke naj imajo samodejno prednost" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Ciljna mapa za prejeto" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Mapa za začasne datoteke prejemanj" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Deljene mape" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(desni klik na ikono mape izbere tudi podmape)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Deli skrite datoteke" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafi" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Zamik posodabljanja: 5 sek." #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Čas za graf povprečja: 100 min." #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Merilo za graf povezav: 100 " #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Merilo za graf prejemanj:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Merilo za graf pošiljanj:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Barve: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Ozadje" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Mreža" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Trenutno prejemanje" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Povprečje prejemanja" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Povprečje seje za prejemanje" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Trenutno pošiljanje" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Povprečje pošiljanja" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Povprečje seje za pošiljanje" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Aktivne povezave" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Prikaz hitrosti v sistemski vrstici" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Trenutna vozlišča Kad" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Vozlišča Kad v teku" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Vozlišča Kad te seje" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Izberi" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Drevo" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Število prikazanih različic odjemalcev (0=neomejeno)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! OPOZORILO !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Maks. novih povezav / 5 sek." #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Datotečni medpomnilnik: 240000 bajtov" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Velikost vrste za pošiljanje: 5000 odjemalcev" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Čas med osvežitvama povezave na strežnik: onemogoči" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Onemogoči prehod računalnika v pripravljenost" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Uporabljena preobleka: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Prikaži hitri rokovalnik s povezavami eD2k v vsakem oknu." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Prikaži razširjene podatke na zavihkih kategorij" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Prikaži hitrosti prenosa v naslovu" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Prikaži hitrosti prenosa v naslovu" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Pred imenom programa" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Za imenom programa" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Prikaži presežek prenosov" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Usmeri orodjarno navpično" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "Prikaži zastave držav za odjemalce" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Datoteke v vrsti prejemanj" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Prikaži odstotek napredka" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Prikaži črto napredka" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Plosko" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Zaokroženo" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Samodejno razvrščaj datoteke" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" "aMule bo samodejno razvrstil datoteke na vašem seznamu pprejemanj, kar " "potrebuje precej procesorske moči." #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parametri za zunanje povezave" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Sprejmi zunanje povezave" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP vmesnika, ki posluša:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Sem vnesite veljaven IP v formatu a.b.c.d za poslušalen vmesnik. Prazno " "polje ali 0.0.0.0 pomeni poljuben vmesnik." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "Vrata TCP:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Vklopi posredovanje vrat UPnP za vrata zunanjih povezav" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Geslo" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Parametri spletnega strežnika" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Spletni strežnik zaženi ob zagonu" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Spletna predloga" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Geslo za vse pravice" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Omogoči uporabnika z nizkimi pravicami" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Geslo za nizke pravice" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Vklopi posredovanje vrat UPnP za vrata spletnega strežnika" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Vrata TCP za UPnP za spletni strežnik (neobvezno)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Čas med osvežitvami strani (v sek.)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Omogoči stiskanje gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "V redu" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Kliknite tukaj za uveljavitev sprememb v nastavitvah." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Razveljavi vse spremembe v nastavitvah." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Naslov:" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Komentar:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Mapa za prejeto:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Spremeni prednost novo dodeljenim datotekam:" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Ne spremeni" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Izberite barvo za to kategorijo (trenutno izbrano):" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Ponastavi" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Kliknite ta gumb, da ponastavite dnevnik." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Kliknite ta gumb za posodobitev seznama strežnikov iz URL-ja." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Seznam strežnikov" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Vnesite URL do datoteke server.met in kliknite gumb na levi, da posodobite " "seznam strežnikov." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Ročno dodaj strežnik: ime" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Sem vnesite ime novega strežnika" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Vrata" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Sem vnesite IP strežnika v formatu x.x.x.x." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Sem vnesite vrata strežnika." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Ročno dodaj strežnik (najprej izpolnite vsa polja) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule dnevnik" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Podatki o strežniku" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Podatki o eD2k" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Podatki o Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Kliknite ta gumb za posodobitev seznama vozlišč iz URL-ja." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Vozlišča (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Vnesite URL do datoteke nodes.dat in pritisnite gumb na levi za posodobitev " "seznama vozlišč." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Statistika vozlišč" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Začetno nalaganje" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Novo vozlišče" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Vrata:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "" "Naloži od znanih \n" "odjemalcev" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Prekini povezavo s Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Uporabi varno identifikacijo uporabnikov" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Priporočamo, da omogočite to možnost. Če to ni omogočeno, ne boste prejeli " "točk za zasluge." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Maskiranje protokola" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Omogoči maskiranje protokola" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Ob vklopu te možnosti, bo aMule sprejemal maskirane povezave od drugih " "odjemalcev." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Uporabi maskiranje za izhodne povezave" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Ob vklopu te možnosti, bo aMule uporabil maskiranje pri povezavi z drugimi " "odjemalci in s strežniki." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Dovoli samo maskirane povezave" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Ob vklopu te možnosti, bo aMule sprejemal samo maskirane povezave. Imeli " "boste manj virov, vendar bodo vse povezave maskirane." #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Vsi" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Nihče" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Kdo lahko vidi moje deljene datoteke:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Izberite, kdo lahko zahteva vaš seznam deljenih datotek." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Filtriranje IP-jev" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtriraj odjemalce" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Omogoči filtriranje odjemalčevih IP-jev, določenih v datoteki ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtriraj strežnike" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Omogoči filtriranje strežnikovih IP-jev, določenih v datoteki ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Znova naloži seznam" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "Ponovno naloži seznam IP-jev za filtriranje iz ~/.aMule/ipfilter.dat." #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Posodobi zdaj" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Samodejno posodobi filter IP-jev ob zagonu" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Stopnja filtriranja:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Vedno filtriraj IP-je krajevnega omrežja" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Paranoično rokovanje z ne-ujemajočimi IP-ji" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Zavrne paket, če se odjemalčev IP razlikuje od IP-ja kjer paket izvira. " "Bodite pazljivi pri uporabi te možnosti." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Uporabi sistemsko ipfilter.dat, če je na voljo" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Če krajevne datoteke ipfilter.dat ni moč najti, omogoči uporabo sistemske " "datoteke." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Omogoči spletni podpis" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Omogoči pisanje v datoteko spletnega podpisa, katero lahko uporabljajo " "zunanji programi za izdelavo podpisov in podobnih stvari." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Pogostost posodobitev (sek.):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Spremeni pogostost (v sekundah) posodobitev spletnega podpisa." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Spletni podpis shrani v datoteko: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Kliknite tukaj, da nastavite mapo, ki vsebuje datoteke za spletni podpis." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtriraj prihajajoča sporočila (razen v trenutnem pogovoru):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtriraj vsa sporočila" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtriraj sporočila vseh, ki niso na seznamu prijateljev" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtriraj sporočila neznanih uporabnikov" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtriraj sporočila, ki vsebujejo (uporabi »,« kot ločilnik):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "Sem dodajte besede, ki naj jih aMule filtrira, vključno s sporočili v " "katerih se nahajajo." #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Prejeta sporočila prikaži v dnevniku" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Komentarji" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Filtriraj komentarje, ki vsebujejo (uporabi »,« kot ločilnik):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Samodejna povezava s strežnikom brez posrednika" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Omogoči overjanje" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Omogoči/onemogoči overjanje z uporabniškim imenom/geslom" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Uporabniško ime: " #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Uporabniško ime za povezavo s posrednikom" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Geslo:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Geslo za povezavo s posrednikom" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Omogoči posrednika" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Omogoči/onemogoči podporo za posrednika" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Vrsta posrednika:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Gostitelj posrednika:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Ime gostitelja posredniškega strežnika" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Vrata posrednika:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Vrata posredniškega strežnika" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Poveži se z:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Prijavi se pri oddaljenem aMule" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Uporabniško ime" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Zapomni si te nastavitve" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Omogoči zgovorno beleženje za razhroščevanje." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Odpri datoteko" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Kategorije sporočil:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Čakanje ..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Dodaj uvoze" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Ponovno poskusi izbrane" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Odstrani izbrane" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Vrste dogodkov" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "Statistika in odjemalci v vrsti za izbrane datoteke: seja / ves čas" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Aktivna pošiljanja" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Odstotek vseh datotek" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Vse datoteke" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Izbrane datoteke" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Samo aktivna pošiljanja" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Prikaži odjemalce za" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Znova naloži" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Ponovno naloži deljene datoteke" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Pošlji" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Pošlje navedeno sporočilo." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Zapri to pogovorno sejo." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Poveži se s poljubnim strežnikom in/ali s Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Deljene datoteke" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Onemogočeno [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "bajtov" msgstr[1] "bajt" msgstr[2] "bajta" msgstr[3] "bajti" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "bajtov/sek." msgstr[1] "bajt/sek." msgstr[2] "bajta/sek." msgstr[3] "bajti/sek." #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MiB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "sek." #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "min." #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "ur" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "dni" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "vse" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "vse ostalo" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Nezaključeno" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Ustavljeno" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Arhiv" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Besedilo" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Aktivno" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Uporaba mape z nastavitvami: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Čakanje na zamrtje niti za pretvarjanje delnih datotek ..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Uvažanje %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Branje začasne mape" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Pridobivanje osnovnih podatkov iz datoteke o prejemanjuh" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Ustvarjanje ciljne datoteke" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Nalaganje podatkov iz stare datoteke prejemanja (%u od %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" "Shranjevanje podatkovnega bloka v novo enojno datoteko prejemanja (%u od %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Prenašanje podatkov o izvorni datoteki prejemanja" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Dodajanje prejemanja in shranjevanje nove delne datoteke" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Uvozi delne datoteke" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Stanje" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Koda datoteke" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (disk: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Prosimo, izberite mapo za iskanje začasnih prejemanj (vključene bodo tudi " "podmape)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "Ali želite izbrisati izvorne datoteke uspešno uvoženih prejemanj?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Ali želite odstraniti vire?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "NAPAKA: delne datoteke ni bilo mogoče ustvariti" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Poskus nalaganja varnostne kopije datoteke met iz %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "NAPAKA: odpiranje datoteke part.met ni uspelo: %s → %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "NAPAKA: datoteka part.met je velika 0: %s → %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "NAPAKA: neveljavna različica datoteke part.met: %s → %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Napaka: %s (%s) je pokvarjena (slabe oznake: %s), ni mogoče naložiti " "datoteke." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "NAPAKA: %s (%s) je pokvarjena (napačno število oznak), ni mogoče naložiti " "datoteke." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Poskus reševanja podatkov o datoteki ..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "Reševanje neimenovane datoteke – rešena bo kot RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Rešeni vsi podatki o datoteki, ki so na voljo :D – Poskus njihove uporabe ..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Ni mogoče rešiti podatkov o datoteki :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Ni bilo mogoče odpreti %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "OPOZORILO: %s je morda pokvarjena (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "NAPAKA med shranjevanjem delne datoteke: %s (%s → %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "Vhodno/izhodna napaka med shranjevanjem delne datoteke: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Ni bilo moč pridobiti dolžine »%s« – uporaba datoteke %s." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "Velikost »%s« je 0 – uporabljena bo datoteka %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Ni bilo mogoče shraniti datoteke part.met.seeds za %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Shranjenih %i izvornih semen za delno datoteko: %s (%s)" msgstr[1] "Shranjeno %i izvorno seme za delno datoteko: %s (%s)" msgstr[2] "Shranjeni %i izvorni semeni za delno datoteko: %s (%s)" msgstr[3] "Shranjena %i izvorna semena za delno datoteko: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Shranjenih %i izvornih semen za delno datoteko: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Napaka pri branju datoteke s semeni delne datoteke (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Najden pokvarjen del (%d) v %d delnih datotekah %s – FileResultHash |%s| " "FileHash |%s|" msgstr[1] "" "Najden pokvarjen del (%d) v %d delni datoteki %s - - FileResultHash |%s| " "FileHash |%s|" msgstr[2] "" "Najden pokvarjen del (%d) v %d delnih datotekah %s - - FileResultHash |%s| " "FileHash |%s|" msgstr[3] "" "Najden pokvarjen del (%d) v %d delnih datotekah %s - - FileResultHash |%s| " "FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Najden zaključen del (%i) v %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Zaključeno ponovno ustvarjanje kode za %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Nepričakovana napaka med zaključevanjem %s. Datoteka prekinjena." #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Zaključen prenos: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Brisanje datoteke: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "OPOZORILO: ni moč ustvariti kode za prejet del – nabor kod za »%s« ni popoln" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "NAPAKA: ni moč ustvariti kode za prejet del – nabor kod ni popoln (%s). To " "se nikoli ne bi smelo zgoditi." #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "Konec datoteke med ustvarjanjem kode prejetega dela %u z dolžino %u (maks. %" "u) delne datoteke »%s« z dolžino %u: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "OPOZORILO: na disku ni dovolj prostora. Datoteka prekinjena: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Prejet del %i v datoteki je pokvarjen: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "IRP: rešen pokvarjen del %i za %s → Rešenih bajtov: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Dodeljevanje" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Premalo prostora na disku" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Prejeto" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "NAPAKA: delne datoteke »%s« ni bilo moč odpreti" #: src/Preferences.cpp:632 msgid "System default" msgstr "Sistemsko privzet" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Albansko" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabsko" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturijsko" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Baskovsko" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bolgarsko" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Katalonsko" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Kitajsko (poenostavljeno)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Kitajsko (tradicionalno)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Hrvaško" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Češko" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Dansko" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Nizozemsko" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Angleško (Z.K.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estonsko" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finsko" #: src/Preferences.cpp:648 msgid "French" msgstr "Francosko" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galicijsko" #: src/Preferences.cpp:650 msgid "German" msgstr "Nemško" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Grško" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Hebrejsko" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Madžarsko" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italijansko" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italijansko (Švica)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japonsko" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Korejsko" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Litvansko" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norveško (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Poljsko" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugalsko" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugalsko (brazilsko)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Romunsko" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Rusko" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Slovensko" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Špansko" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Švedsko" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turško" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ukrajinsko" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Spremeni jezik" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Ni na voljo" #: src/Preferences.cpp:906 msgid "no options available" msgstr "na voljo ni nobene možnosti" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Najdena neveljavna kategorija, preskočena" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "Vrata TCP ne smejo biti večja od 65532, ker so vrata UDP TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Uporabljena bodo privzeta vrata (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Opuščanje neobstoječe deljene mape: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Povezava" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Mape" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Strežniki" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Datoteke" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Varnost" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Vmesnik" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Posrednik" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Filtri" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Oddaljeno upravljanje" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Spletni podpis" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Napredno" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Dogodki" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Razhroščevanje" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "Nadomeščene bodo naslednje spremenljivke:\n" " %PARTFILE – polna pot do datoteke\n" " %PARTNAME – samo ime datoteke" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Ne spreminjajte teh nastavitev, razen če dobro\n" "veste, kaj počnete. V nasprotnem primeru lahko\n" "hitro zadeve poslabšate.\n" "\n" "aMule bo deloval dobro tudi brez\n" "spreminjanja teh nastavitev." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Nastavitve ni bilo moč povezati z gradnikom z ID-jem %d in ključem %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" "Podatkov iz nastavitev ni bilo moč prenesti v gradnik z ID-jem %d in ključem " "%s." #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Vrsta posrednika s katerim se hočete povezati" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" "Podatkov iz gradnika ni bilo moč prenesti v nastavitve z ID-jem %d in " "ključem %s." #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "Potreben je ponoven zagon aMule za uveljavitev teh sprememb:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "• Vrata TCP so spremenjena.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "• Vrata UDP so spremenjena.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "• Vrata za zunanje povezave so spremenjena.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "• Sprejemljivost zunanjih povezav je spremenjena.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "• Vmesnik za zunanje povezave je spremenjen.\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Maskiranje protokola" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Seznam za samodejno posodobitev strežnikov je prazen.\n" "Možnost »Ob zagonu samodejno posodobi seznam strežnikov« bo onemogočena." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Omogočili ste zunanje povezave, vendar niste navedli gesla.\n" "Zunanje povezave ne morejo biti omogočene, dokler ne navedete veljavnega " "gesla." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "• Jezik je spremenjen.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "• Mapa za začasne datoteke spremenjena.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "• Omrežje eD2k je omogočeno.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Omrežji eD2k in Kad sta onemogočeni.\n" "Ne boste se mogli povezati, dokler ne omogočite vsaj enega izmed njih." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad se ne bo zagnal, če so vrata UDP onemogočena.\n" "Omogočite vrata UDP ali pa onemogočite Kad." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "aMule morate NUJNO ponovno zagnati.\n" "Če tega ne storite zdaj, se ne pritožujte, če se zgodi kaj slabega.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Seznam za samodejno posodabljanje strežnikov je prazen.\n" "Vnesite vsaj en URL do veljavne datoteke server.met.\n" "Kliknite na gumb »Seznam«, zraven potrditvenega polja, za vnos URL-ja." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Začasne datoteke" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Prejete datoteke" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Spletni podpisi" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Izberite mapo za %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Prebrskajte za video predvajalnik" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Izberite brskalnik" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Izvedljiva datoteka %s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Uredi seznam strežnikov" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Sem dodajte URL-je do datotek server.met.\n" "Po en URL v vsako vrstico." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Osveži vsakih: %d sekund" msgstr[1] "Osveži vsakih: %d sekundo" msgstr[2] "Osveži vsakih: %d sekundi" msgstr[3] "Osveži vsakih: %d sekunde" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Čas za graf povprečja: %d minut" msgstr[1] "Čas za graf trenutnega povprečja: %i minuta" msgstr[2] "Čas za graf trenutnega povprečja: %i minuti" msgstr[3] "Čas za graf trenutnega povprečja: %i minute" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Merilo za graf povezav: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Datotečni medpomnilnik: %d bajtov" msgstr[1] "Datotečni medpomnilnik: %d bajt" msgstr[2] "Datotečni medpomnilnik: %d bajta" msgstr[3] "Datotečni medpomnilnik: %d bajti" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Velikost vrste za pošiljanje: %d odjemalcev" msgstr[1] "Velikost vrste za pošiljanje: %d odjemalec" msgstr[2] "Velikost vrste za pošiljanje: %d odjemalca" msgstr[3] "Velikost vrste za pošiljanje: %d odjemalci" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Čas med osvežitvama povezave na strežnik: %d minut" msgstr[1] "Čas med osvežitvama povezave na strežnik: %d minuta" msgstr[2] "Čas med osvežitvama povezave na strežnik: %d minuti" msgstr[3] "Čas med osvežitvama povezave na strežnik: %d minute" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Čas med osvežitvama povezave na strežnik: onemogočeno" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "onemogočeno" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "Izvrši ukaz ob dogodku »%s«" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Omogoči izvrševanje ukazov na jedru" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Ukaz jedra:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Omogoči izvrševanje ukazov v vmesniku" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Ukaz vmesnika:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Sledeče spremenljivke bodo nadomeščene:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "Min. velikost mora biti manjša kot maks. velikost. Maks. velikost ni " "upoštevana." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Opozorilo iskanja" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Glavna" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Iskanje preko Kad ni mogoče, če Kad ne teče" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "Iskanje preko eD2k ni mogoče, če eD2k ni povezan" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Nepričakovana napaka med iskanjem Kad: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ID datoteke" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Datoteka" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Prejemaj v kategoriji" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "Dobi %s za to datoteko" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Poišči sorodne datoteke (eD2k, krajevni strežnik)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Označi kot znano datoteko" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Skopiraj povezavo eD2k na odložišče" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "Preklicano" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Novo" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Ni bilo mogoče vzpostaviti maskirane povezave s strežniki na seznamu. " "Ponoven poskus brez maskiranja." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Ni se bilo mogoče povezati na katerega koli izmed strežnikov na seznamu. " "Ponoven poskus." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "Omrežje eD2k je onemogočeno v nastavitvah, brez povezovanja." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "Na seznamu ni bilo moč najti nobenega veljavnega strežnika za povezavo" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Povezan z %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Povezava vzpostavljena z: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Kritična napaka med povezovanjem. Internetna povezava je mogoče prekinjena" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Izgubljena povezava z %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) je nedosegljiv." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) je poln." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "" "Samodejen poskus povezovanja s strežnikom se bo izvedel čez %d sekund" msgstr[1] "" "Samodejen poskus povezovanja s strežnikom se bo izvedel čez %d sekundo" msgstr[2] "" "Samodejen poskus povezovanja s strežnikom se bo izvedel čez %d sekundi" msgstr[3] "" "Samodejen poskus povezovanja s strežnikom se bo izvedel čez %d sekunde" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Povezava izgubljena" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Povezovanje z %s (%s:%i) ni uspelo." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "NAPAKA: po poteku časa je bila vtičnica neveljavna" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Čas za poskus povezovanja z %s (%s:%i) je potekel." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Prejel zapoznjen rezultat poizvedbe DNS, preziram" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Nalaganje datoteko server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Ni bilo mogoče najti datoteke server.met." #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "Ni bilo mogoče naložiti datoteke server.met »%s«, neznan format." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Ni bilo mogoče odpreti server.met." #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Datoteka server.met je pokvarjena, napačna oznaka različice: 0x%x, velikost %" "i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i najdenih strežnikov v server.met" msgstr[1] "%i najden strežnik v server.met" msgstr[2] "%i najdena strežnika v server.met" msgstr[3] "%i najdeni strežniki v server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d strežnikov dodanih" msgstr[1] "%d strežnik dodan" msgstr[2] "%d strežnika dodana" msgstr[3] "%d strežniki dodani" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Napaka: datoteka »server.met« je pokvarjena: " #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "Vhodno/izhodna napaka med branjem »server.met«: " #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Strežnik ni bil dodan: [%s:%d] nima navedenih veljavnih vrat." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Strežnik ni bil dodan: [%s:%d] IP je filtriran ali neveljaven." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Strežnik ni bil dodan: Strežnik z IP:vrata [%s:%d] že obstaja na seznamu." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Strežnik dodan: Strežnik na [%s:%d], z imenom »%s«." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Povezani ste s strežnikom, ki ga poskušate izbrisati. Prosimo, najprej " "prekinite povezavo." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Ni bilo mogoče odpreti »%s«" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Ni bilo mogoče shraniti server.met." #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Neveljaven URL" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "Prejemanje seznama strežnikov od %s zaključeno" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "V »addresses.dat« ni bil najden noben vnos za seznam strežnikov. Za samodejno " "posodobitev seznama strežnikov morate v to datoteko vnesti veljaven naslov " "seznama strežnikov." #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Začni s prejemanjem seznama strežnikov od %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "OPOZORILO: za samodejno posodabljanje strežnikov je bil naveden neveljaven " "URL: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "V addresses.dat ni veljavnega server.met URL-ja za samodejno posodabljanje." #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Ni bilo mogoče prenesti seznama strežnikov od %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "IP Filter je filtriral krajevni strežnik. Povezovanje z drugim strežnikom." #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Ime strežnika" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Naslov" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Vrata" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Opis" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Odziv" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Uporabniki" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Statičen" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Različica" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Povezani ste s strežnikom, ki ga poskušate izbrisati. Prosimo, najprej " "prekinite povezavo. Strežnik NI bil izbrisan." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(neznano ime)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Ali res želite izbrisati statičen strežnik %s?" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Strežniki (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Strežnik" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Poveži se s strežnikom" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Označi strežnik kot statičen" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Označi strežnik kot ne-statičen" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Označi strežnike kot statične" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Označi strežnike kot ne-statične" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Odstrani strežnik" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Odstrani strežnike" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Odstrani vse strežnike" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Skopiraj povezave eD2k na odložišče" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Ponovno se poveži s strežnikom" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Ali res želite izbrisati vse strežnike?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Ali res želite izbrisati izbrani strežnik?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Ali res želite izbrisati izbrane strežnike?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "NAPAKA: %s (%s) – %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "OPOZORILO: %s (%s) – %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Nov odjemalčev ID je %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "OPOZORILO: prejeli ste nizek ID." #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tPo vsej verjetnosti ste za požarnim zidom ali usmerjevalnikom." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tZa več informacij se obrnite na http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Prejeti neznani podatki o strežniku – prekratko" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Prejetih %d novih strežnikov" msgstr[1] "Prejet %d nov strežnik" msgstr[2] "Prejeta %d nova strežnika" msgstr[3] "Prejeti %d novi strežniki" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Shranjevanje seznama strežnikov zaključeno." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Strežnik je zavrnil zadnji ukaz" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Nepravi paket prejet od strežnika: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Neobravnavana napaka med obdelavo paketa od strežnika: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Ni mogoče ustvariti niti za razrešitev DNS pri povezavi z %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "Strežnikov IP %s (%s) je filtriran. Ni povezave." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "z maskiranim protokolom." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Povezovanje z %s (%s – %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Ni mogoče razrešiti DNS za strežnik: %s: Povezava ni mogoča." #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Strežnik ni bil dodan: IP ali ime gostitelja nista navedena." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Strežnik ni bil dodan: navedena so neveljavna vrata strežnika." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Stanje eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Stanje Kademlia:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "Teče v načinu krajevnega omrežja" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Teče" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Stanje:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Stanje povezave:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" "Za požarnim zidom – v požarnem zidu ali na usmerjevalniku odprite vrata TCP %" "d" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "Stanje povezave UDP:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" "Za požarnim zidom – v požarnem zidu ali na usmerjevalniku odprite vrata UDP %" "d" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Stanje za požarnim zidom: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Potreben ni noben kolega – vrata TCP odprta" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Potreben ni noben kolega – vrata UDP odprta" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Brez kolegov" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Povezovanje s kolegom" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Povezan s kolegom na %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Indeksirani viri:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Indeksirane ključne besede:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Indeksirane opombe:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Indeksirana obremenitev:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Povprečno uporabnikov:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Povprečno datotek:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Ne teče" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Dodajanje datoteke %s med deljene" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Najdenih %i znanih deljenih datotek" msgstr[1] "Najdena %i znana deljena datoteka" msgstr[2] "Najdeni %i znani deljeni datoteki" msgstr[3] "Najdene %i znane deljene datoteke" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Najdenih %i znanih deljenih datotek, %i neznanih" msgstr[1] "Najdena %i znana deljena datoteka, %i neznanih" msgstr[2] "Najdeni %i znani deljeni datoteki, %i neznanih" msgstr[3] "Najdene %i znane deljene datoteke, %i neznanih" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "NAPAKA: poskus delitve %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Deljene mape ni bilo moč najti, preskakujem: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "V mapi ni bilo moč najti datotek za deliti: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Uporabniško ime" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "Hitrost prejemanja" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Hitrost pošiljanja" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Razpoložljivi deli" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Stanje pošiljanja" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Stanje prejemanja" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Izvor" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Krajevno ime datoteke" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Deljene datoteke" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Zahteve" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Sprejete zahteve" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Prenesenih podatkov" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Delilno razmerje" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Dobljeni deli" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Popolni viri" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Pot mape" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Dodaj komentar/oceno" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Uredi komentar/oceno" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Preimenuj" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Dodaj datoteke iz zbirke na seznam prenosov" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Skopiraj magnet &URI na odložišče" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Skopiraj povezavo eD2k na odložišče (&vir)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Skopiraj povezavo eD2k na odložišče (vir) (&s šifrirnimi možnostmi)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Skopiraj povezavo eD2k na odložišče (&gostitelj)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "Skopiraj povezavo eD2k na odložišče (gostitelj) (s &šifrirnimi možnostmi)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Skopiraj povezavo eD2k na odložišče (&podatki NIRP)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Skopiraj povezavo eD2k na odložišče (&podatki NIRP)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Potrebujete visok ID, da ustvarite povezavo z virom" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Deljene datoteke (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Delna datoteka]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Oddaljeno ime datoteke" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Poslani podatki (seja (skupno)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Skupni presežek (paketov): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Presežek zahtev datotek (paketov): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Presežek izmenjav virov (paketov): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Presežek strežnikov (paketov): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Presežek Kad (paketov): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Presežek šifriranja (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Aktivna pošiljanja: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Čakajoča pošiljanja: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Skupno št. uspelih sej pošiljanj: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Skupno št. neuspelih sej pošiljanj: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Povprečen čas pošiljanja: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Prejeti podatki (seja (skupno)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Najdeni viri: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Aktivna prejemanja (deli): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Razmerje poslano/prejeto te seje (skupno): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Povprečna hitrost prejemanja (seja): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Povprečna hitrost pošiljanja (seja): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Največja hitrost prejemanja (seja): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Največja hitrost pošiljanja (seja): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Ponovne povezave: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Čas od prvega prenosa: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "S strežnikom povezan od: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Aktivnih povezav (ocena): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Dosežnih največ možnih povezav: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Povprečno povezav (ocena): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Največ povezav (ocena): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Odjemalci" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Neznani: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Filtrirani: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Izločeni: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Skupno: %i Znani: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Delujoči strežniki: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Nedelujoči strežniki: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Skupno: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Izbrisani strežniki: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Filtrirani strežniki: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Uporabniki na delujočih strežnikih: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Datoteke na delujočih strežnikih: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Skupno uporabnikov: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Skupno datotek: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Zasedenost strežnikov: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Število deljenih datotek: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Skupna velikost deljenih datotek: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Povprečna velikost datoteke: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Operacijski sistem" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Ni prejeto" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktivne povezave (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Ni na voljo" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Nikoli" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Ukaz »%s« s PID-jem »%d« se je končal s statusno kodo »%d«." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Izvrši in končaj." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Neveljaven format IP. Uporabite xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Ta ukaz potrebuje argument. Veljavni argumenti: »all«, ime datoteke ali " "število.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Obdelovanje po kodi: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Obdelovanje po imenu datoteke: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "Ta ukaz potrebuje argument. Veljaven argument: koda datoteke.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Ni veljavno število\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Ni veljavna koda (dolžina mora biti točno 32 znakov)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Napišite »%s« za dodatno pomoč.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Prenosi dol (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Zahteva spodletela z neznano napako." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operacija je bila uspešna." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Zahteva ni uspela zaradi napake: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Filtriranje IP za odjemalce je %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "IZKLOPLJENO" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "VKLOPLJENO" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Filtriranje IP za strežnike je %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Trenutna stopnja IP filtriranja je %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Omejitve povezave: Gor: %u kB/s, Dol: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Povezan z %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Povezovanje" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "za požarnim zidom" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "v redu" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Prejemanje:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Pošiljanje:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Odjemalci v vrsti:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Skupno virov:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Število rezultatov iskanja: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Napredek iskanja: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Napredek iskanja ni na voljo" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Prejet neznan odgovor od strežnika, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Prikaži kratke podatke o stanju." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Prikaži stanje povezave, trenutne hitrosti prenosa gor/dol, itd.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Prikaži celotno statistično drevo." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Neobvezno: kot argument tega ukaza lahko podate število v obsegu 0-255, ki " "določa,\n" "koliko različic odjemalca naj bo prikazanih v poddrevesu tipa odjemalcev.\n" "Vrednost 0 ali izpuščen argument pomeni »neomejeno«.\n" "\n" "Primer: »statistics 5« bo prikazalo 5 najpogostejših različic vsakega tipa " "odjemalca.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Zaustavi aMule" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Zaustavi oddaljeno tekoče jedro (amule/amuled).\n" "To bo zaustavilo tudi besedilnega odjemalca, ker brez tekočega jedra ni " "uporaben.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Ponovno naloži naveden objekt." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Ponovno naloži seznam deljenih datotek." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Ponovno naloži seznam za filtriranje IP-jev." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "Ponovno naloži trenutni seznam za filtriranje current IP-jev." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Posodobi seznam za filtriranje IP-jev iz URL-ja." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Če je URL izpuščen, se uporabi URL iz nastavitev." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Poveži se z omrežjem." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Ta možnost bo vzpostavila povezavo z vsemi omrežji, omogočenimi v " "nastavitvah.\n" "Neobvezno: Lahko navedete naslov strežnika v obliki IP:Vrata,\n" "za povezavo samo s tem strežnikom. IP mora biti s pikami ločen\n" "decimalen naslov IPv4 ali razrešljivo ime DNS." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Poveži se samo z eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Poveži se samo s Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Prekini povezavo z omrežjem." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "To bo prekinilo povezavo z vsemi omrežji, s katerimi ste povezani.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Prekini samo povezavo z eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Prekini samo povezavo s Kad." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Dodaj povezavo magnet ali povezavo ed2k v jedro." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Povezava eD2k za dodajanje je lahko:\n" "• povezava za datoteko (ed2k://|file|...), dodana bo na v vrsto prejemanj\n" "• povezava za strežnik (ed2k://|server|...), dodan bo na seznam strežnikov\n" "• povezava do seznama strežnikov, vsi strežniki bodo dodani na seznam " "strežnikov\n" "\n" "Povezava magnet mora vsebovati kodo eD2k in dolžino datoteke.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Nastavi vrednost nastavitve." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "Nastavi filtriranje IP-jev." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Vključi filtriranje IP-jev za odjemalce in strežnike." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Izključi filtriranje IP-jev za odjemalce in strežnike." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Omogoči/onemogoči filtriranje IP-jev za odjemalce." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Vključi filtriranje IP-jev za odjemalce." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Izključi filtriranje IP-jev za odjemalce." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Omogoči/onemogoči filtriranje IP-jev za strežnike." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Vključi filtriranje IP-jev za strežnike." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Izključi filtriranje IP-jev za strežnike." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Izberite stopnjo filtriranja IP-jev." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "Veljavne stopnje filtriranja so od 0-255, privzeta stopnja je 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Nastavi omejitve povezave." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "Vrednost podana tem ukazom mora biti v kilobajtih/sek.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Nastavi omejitev pošiljanja." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "Vrednost podana tem ukazom mora biti v kilobajtih/sek.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Nastavi omejitev prejemanja." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Dobi in prikaži vrednost nastavitve." #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "Dobi nastavitve filtriranja IP-jev." #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Dobi stanje filtriranja IP-jev za odjemalce in strežnike." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Dobi stanje filtriranja IP-jev samo za odjemalce." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Dobi stanje filtriranja IP-jev samo za strežnike." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "Dobi stopnjo filtriranja IP-jev." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Dobi omejitve prenosa." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Izvrši iskanje." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Vrsta iskanja mora biti navedena s sledečimi tipi:\n" " GLOBAL (globalno)\n" " LOCAL (krajevno)\n" " KAD (kad)\n" "Primer: »search kad datoteka« bo izvršilo Kad iskanje za »datoteka«.\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Izvrši globalno iskanje." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Izvrši krajevno iskanje." #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Izvrši iskanje kad." #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Prikaže rezultate zadnjega iskanja." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Vrne rezultate prejšnjega iskanja.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Prikaže napredek iskanja." #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Prikaže napredek iskanja.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Začni prejemati datoteko" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Navesti morate številko datoteke iz zadnjega iskanja.\n" "Primer: ukaz »download 12« bo dodal na seznam prejemanj datoteko št. 12 iz " "zadnjega iskanja.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Prekini prejemanje." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Nadaljuj prejemanje." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Prekliči prejemanje." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Nastavi prednost prejemanja." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" "Nastavi prednost prejemanja na nizko, normalno, visoko ali samodejno.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Nastavi prioriteto na nizko." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Nastavi prioriteto na normalno." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Nastavi prioriteto na visoko." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Nastavi prioriteto na samodejno." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Prikaži čakalne vrste/sezname." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Prikaži čakalno vrsto prenosov, seznam strežnikov ali deljenih datotek.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Prikaži čakalno vrsto pošiljanj." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Prikaži čakalno vrsto prejemanj." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Prikaži dnevnik." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Prikaži seznam strežnikov." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Ponastavi dnevnik." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Opuščen ukaz, namesto njega uporabite »%s«." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Ta ukaz je opuščen in bo morda v prihodnosti odstranjen.\n" "Namesto njega uporabite »%s«.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMule besedilni odjemalec" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Pretvarjanje starih kod NIRP v »%s« v 64b v »%s«." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "OPOZORILO: ime datoteke »%s« ni veljavno in je bilo spremenjeno v »%s«." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "OPOZORILO: datoteka »%s« že obstaja, nova datoteka je preimenovana v »%s«." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Ali res želite preklicati prejemanja in izbrisati vse datoteke iz te " "kategorije?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Potrebna je potrditev" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Podprtih je največ 99 kategorij." #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Preveč kategorij." #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Vse drugo" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Izberite filter prikaza" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Dodaj kategorijo" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Uredi kategorijo" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Odstrani kategorijo" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "Ni bilo mogoče odpreti datoteke (%s), odstranjevanje s seznama deljenih " "datotek." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Zahtevan je bil nabor kod za neznano datoteko: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Nadaljevanje ppošiljanja za datoteko: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Ustavljanje pošiljanja za datoteko: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Ni bilo mogoče izvesti ukaza »%s« za dogodek »%s«." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Prejemanje zaključeno" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Polna pot datoteke." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Ime datoteke brez poti." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "Koda eD2k datoteke." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Velikost datoteke v bajtih." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Skupni čas aktivnega prejemanja." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Začeta je bila nova seja klepeta." #: src/UserEvents.h:85 msgid "Message sender." msgstr "Pošiljatelj sporočila." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Zmanjkalo je prostora" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Razdelek diska." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Napaka pri zaključevanju" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Obdelovanje datoteke številka %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Zahtevali ste kode delov (na voljo samo za datoteke > 9,5 MiB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s → Datoteka ne obstaja.\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, ustvarjalnik povezav eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Dobrodošli!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Vhodni parametri" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Ustvari kodo za datoteko" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Dodaj URL-je za to datoteko (neobvezno)" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Sem vnesite datoteko, za katero želite ustvariti povezavo eD2k." #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Sem vnesite URL, ki ga želite dodati povezavi eD2k. Na konec dodajte »/«, da " "aLinkCreator doda trenutno ime datoteke." #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Odstrani" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Ustvari povezavo s kodami delov" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Pomaga pri hitrejšem razširjanju novih in redkih datotek, za ceno večje " "dolžine povezave" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Koda MD4 datoteke" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "Koda datoteke eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "Povezava eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Shrani" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Skopiraj na odložišče" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Odpri" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Odpre datoteko za ustvaritev povezave eD2k zanjo" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Skopira ustvarjeno povezavo eD2k na odložišče" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Shrani kot" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Shrani ustvarjeno povezavo eD2k v datoteko" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "O aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Izberite datoteko za ustvaritev povezave eD2k zanjo" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Odložišča ni moč odpreti" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Zaenkrat ni ničesar za skopirati." #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Izberite datoteko za ustvaritev povezave eD2k" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Ni mogoče odpreti " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Prosimo, vnesite neprazno ime datoteke" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Zaenkrat ni ničesar za shraniti." #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, ustvarjalnik povezav eD2k\n" "\n" "© 2004 ThePolish \n" "\n" "Ikone od http://www.everaldo.com in http://www.icomania.com\n" "in http://jimmac.musichall.cz/ikony.php3\n" "\n" "Razširja se pod pogoji licence GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Ustvarjanje kode ..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator dela za vas" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Izračunavanje kode MD4 ..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Izračunavanje kode eD2k ..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Preklicano." #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Zaključeno v %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Ta URL ste že dodali." #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Prosimo, vnesite neprazen URL" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Ni mogoče odpreti %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i dni %i ur %i min. %i sek." #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KiB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MiB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GiB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TiB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, spletna statistika aMule" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Najhitrejše prejemanje odkar teče wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Absolutno najhitrejše prejemanje med vsemi prejšnjimi sejami wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistem" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Ustavi samodejno osveževanje" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Shrani sliko spletne statistike" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Natisni sliko spletne statistike" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Nastavitve" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "O wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Zaženi samodejno osveževanje" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Samodejno osveževanje ustavljeno" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Samodejno osveževanje začeto" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Shrani statistično sliko" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Spletna statistika aMule" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Pri tiskanju se je pojavila težava.\n" "Morda privzeti tiskalnik ni pravilno nastavljen?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Tiskanje" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule statistika spletnega podpisa\n" "\n" "© 2004 ThePolish \n" "\n" "Temelji na CAS, avtorja Pedro de Oliveira \n" "\n" "Na voljo pod licenco GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "aMule ne teče." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule teče." #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule teče, vendar ni povezave." #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule se povezuje ..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Stanje aMule je neznano." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " teče že " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " je ustavljen." #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " ni povezan." #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " se povezuje..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " dela nekaj nenavadnega, preverite." #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " je povezan z " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "ugasnjen" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " je povezan " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " z " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Skupno prejetega: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", poslanega: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "To sejo prejetega: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Prejemanje: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Pošiljanje: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Deljenih: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " datotek, Odjemalcev v vrsti: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Čas: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " na " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Povprečna obremenitev sistema (1-5-15 min.):" #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Neprekinjeno delovanje: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Mapa, ki vsebuje datoteko amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Sem vnesite mapo, ki vsebuje datoteko amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Interval med osvežitvami v sekundah" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Ustvari statistično sliko ob vsaki osvežitvi" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Sem vnesite mapo, v katero želite ustvariti statistično sliko" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Periodično prenesi statistično sliko na strežnik FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "URL FTP-ja" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Pot na FTP-ju" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Sem vnesite URL vašega strežnika FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Sem vnesite mapo na strežniku FTP, v katero se naj shrani statistična slika" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Uporabnik" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Sem vnesite uporabniško ime za prijavo na vaš strežnik FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Sem vnesite geslo za prijavo na vaš strežnik FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Interval med osvežitvami prenosov na FTP v minutah" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Preveri veljavnost" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Mapa, ki vsebuje vašo datoteko s podpisom" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Mapa, v katerem je ustvarjena statistična slika" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Naloži predlogo " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Vrata HTTP spletnega strežnika" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Uporabi posredovanje vrat UPnP za vrata spletnega strežnika" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Vrata UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Uporabi stiskanje gzip" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Geslo za polni dostop do spletnega strežnika" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Geslo za goste na spletnem strežniku" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Dovoli dostop gostom" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Zavrni dostop gostom" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Naloži/shrani nastavitve spletnega strežnika od/na oddaljeni aMule" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Pot do nastavitvene datoteke. NE UPORABITE NEPOSREDNO." #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Onemogoči tolmača PHP-ja (opuščeno)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Ponovno prevedi strani PHP ob vsaki zahtevi" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Spletni strežnik aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "povezava spletnega odjemalca sprejeta\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "NAPAKA: ni moč sprejeti povezave spletnega odjemalca\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Zahteve ni bilo mogoče izvesti zaradi napake: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Indeksne datoteke ni mogoče najti: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Seja potekla – zahtevek za prijavo\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Seja v redu, prijavljen\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Seja v redu, ni prijave\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Ni odprte seje – zahtevek za prijavo\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Seja ustvarjena – zahtevek za prijavo\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Obdelovanje zahteve [izvorno]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Geslo ni nastavljeno, prijava ne bo dovoljena." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Preverjanje gesla\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Koda gesla ni veljavna\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Geslo v redu\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Napačno geslo\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Niste navedli gesla. Prazno geslo ni dovoljeno.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Zahtevana odjava\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Obdelovanje zahteve [preusmerjeno]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Delna datoteka %s (%s) nima datoteke s semeni" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Delna datoteka %s (%s) ima prazno datoteko s semeni" #~ msgid "Download status" #~ msgstr "Stanje prejemanja" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #, fuzzy #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Čas med posodobitvami: %d sek." #~ msgstr[1] "Čas med posodobitvami: %d sek." #~ msgid "Transferring" #~ msgstr "Prenašanje" #, fuzzy #~ msgid "QR: ???" #~ msgstr "QR: %u" #~ msgid "QR: %u" #~ msgstr "QR: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "V vrsti" #~ msgid "TODO - show progress of a search" #~ msgstr "V PRIHODNJE - prikaz poteka iskanja" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Začetek ustvarjanja hasha MD4 in AICH za datoteko: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Začetek ustvarjanja hasha MD4 za datoteko: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Začetek ustvarjanja hasha AICH za datoteko: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "OPOZORILO: Ni bilo mogoče odstraniti izvirnika '%s' po izdelavi varnostne " #~ "kopije" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "OPOZORILO: Ni bilo mogoče zbrisati %s" #, fuzzy #~ msgid "%u (QR: %u)" #~ msgstr "QR: %u" #~ msgid "Rating (total):" #~ msgstr "Ocena (skupna):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Poskušaj pošiljati cele dele vsem odjemalcem" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Prenašanje" #~ msgid "Transfers" #~ msgstr "Prenosi" #~ msgid "Unban" #~ msgstr "Dovoli nazaj" #~ msgid "Show Uploads" #~ msgstr "Prikaži prenose gor" #~ msgid "Show Queue" #~ msgstr "Prikaži čakalno vrsto" #~ msgid "Select View" #~ msgstr "Izberi pogled" #~ msgid "Client Software" #~ msgstr "Program odjemalca" #~ msgid "Waited" #~ msgstr "Čakal" #~ msgid "Upload Time" #~ msgstr "Čas prenosa gor" #~ msgid "Upload/Download" #~ msgstr "Preneseno gor/dol" #~ msgid "Remote Status" #~ msgstr "Oddaljeno stanje" #~ msgid "File Priority" #~ msgstr "Prioriteta datoteke" #~ msgid "Score" #~ msgstr "Točke" #~ msgid "Asked" #~ msgstr "Zahteval" #~ msgid "Last Seen" #~ msgstr "Nazadnje viden" #~ msgid "Entered Queue" #~ msgstr "Vstopil v vrsto" #~ msgid "Transferred Up" #~ msgstr "Prenesel gor" #~ msgid "Transferred Down" #~ msgstr "Prenesel dol" #~ msgid "Userhash" #~ msgstr "Hash uporabnika" #~ msgid "Encrypted" #~ msgstr "Maskiranje" #~ msgid "Shows Upload / Up-queue" #~ msgstr "Prikaže čakalno vrsto prenosov gor" #~ msgid "Clients on queue :" #~ msgstr "Uporabnikov v vrsti :" #~ msgid "Current Session" #~ msgstr "Trenutna seja" #~ msgid "Total" #~ msgstr "Skupno" #~ msgid "Requested :" #~ msgstr "Zahtevano :" #~ msgid "Files Transfers Window" #~ msgstr "Okno s prenosi datotek" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Skupno uporabnikov: %s | Skupno datotek: %s" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "" #~ "OPOZORILO: Ni bilo mogoče odstraniti izvirnika '%s' po izdelavi varnostne " #~ "kopije" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "" #~ "CIP2Country::CIP2Country(): Ni bilo mogoče naložiti podatkov o državah iz " #~ msgid "Get IPFilter level." #~ msgstr "Dobi stopnjo IP Filtra." #~ msgid "Makes a search." #~ msgstr "Začne iskanje." #, fuzzy #~ msgid "Killed!" #~ msgstr "Neuspeh" #, fuzzy #~ msgid "Using amuleweb in '%s'." #~ msgstr "Zaženi amuleweb ob zagonu" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "Zaustavi aMule." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Naslednje nastavitve so bile spremenjene v tej različici iz varnostnih " #~ "razlogov:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Vklop maskiranja protokola za prihajajoče in odhajajoče povezave.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Izklop posodobitev seznama strežnikov ob povezavi s strežnikom in z " #~ "odjemalcem.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Za več informacij o razlogih za te spremembe, preiščite wiki\n" #~ "na http://wiki.amule.org za informacije o \"lažnih strežnikih\".\n" #~ "Za pravilno delovanje aMule je zelo pomembno, da odstranite vse lažne " #~ "strežnike iz seznama strežnikov." #~ msgid "Fetching status..." #~ msgstr "Prenašanje stanja..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Uporabnikov: E: %s K: %s | Datoteke E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Odjemalec %s na IP:Vratih %s:%d uporablja %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgid "Firewalled" #~ msgstr "Za požarnim zidom" #, fuzzy #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "Naloženih %d slik zastav." #~ msgstr[1] "Naloženih %d slik zastav." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "" #~ "Datoteka %s je prevelika za Donkey: največja dovoljena velikost je 4 GB." #~ msgid "No handler for this file type." #~ msgstr "Ni upravitelja za to vrsto datoteke." #~ msgid "File was not saved" #~ msgstr "Datoteka ni bila shranjena" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "" #~ "Povezava ni uspela. Ni se bilo mogoče povezati z navedenim gostiteljem\n" #~ msgid "Message Filter" #~ msgstr "Filter za sporočila" #~ msgid "Gui Tweaks" #~ msgstr "Prilagoditve vmesnika" #~ msgid "Core Tweaks" #~ msgstr "Prilagoditve jedra" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Zakasnitev v sek. pri prikazu namigov" #~ msgid "Show part file number before file name" #~ msgstr "Pred imenom datoteke prikaži ime .part datoteke" #~ msgid "Skin Support" #~ msgstr "Podpora preoblekam" #~ msgid "- no skins available -" #~ msgstr " - nič preoblek na voljo -" #~ msgid "Online Signature Directory:" #~ msgstr "Imenik za Spletni podpis:" #~ msgid "Filtering Options:" #~ msgstr "Možnosti filtriranja: " #~ msgid "Line Capacities" #~ msgstr "Zmožnosti povezave" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Opomba: Te vrednosti\n" #~ "vplivajo samo na statistiko." #~ msgid "Standard client TCP Port:" #~ msgstr "Vrata TCP standardnega odjemalca:" #~ msgid "Extended client UDP Port:" #~ msgstr "Vrata UDP razširjenega odjemalca:" #~ msgid "Bind Address" #~ msgstr "Naslov za vezavo" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "Vrata UDP za razširjene zahteve strežnika (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "Maks. število virov na datoteko" #~ msgid "Universal Plug and Play" #~ msgstr "Univerzalen 'Plug and Play'" #~ msgid "Enable UPnP" #~ msgstr "Omogoči UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "Vrata UPnP TCP:" #~ msgid "Start next paused file when a file completed" #~ msgstr "Ob končanem prenosu začni prenašati naslednjo datoteko na premoru" #~ msgid "Select Statistics Colors" #~ msgstr "Izberi barve za statistiko" #~ msgid "Download Queue Files Progress" #~ msgstr "Napredek prenosov dol" #~ msgid "Show percentage" #~ msgstr "Prikaži odstotke" #~ msgid "Show progressbar " #~ msgstr "Prikaži vrstico napredka " #~ msgid "Enable skin support " #~ msgstr "Omogoči preobleke " #~ msgid "Skin:" #~ msgstr "Preobleka:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "Samodejno razvrsti dat. v vrsti prenosov (visoka poraba CPU)" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "IP poslušalnega vmesnika\n" #~ "(prazno za vse)" #~ msgid "TCP port" #~ msgstr "Vrata TCP" #~ msgid "Who can see shared files:" #~ msgstr "Kdo lahko vidi deljene datoteke:" #~ msgid "Event types" #~ msgstr "Vrste dogodkov" #~ msgid "Makes aMule promt before exiting." #~ msgstr "aMule prikaže opozorilo ob izhodu." #~ msgid "Show overhead bandwith" #~ msgstr "Prikaži presežek prenosa" #~ msgid "I.C.H. active" #~ msgstr "I.R.N. aktiven" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICH zaupa vsakemu hashu (ni priporočeno)" #~ msgid "Advanced Settings" #~ msgstr "Napredne nastavitve" #~ msgid "Progressbar Style" #~ msgstr "Slog vrstice napredka" #~ msgid "Column Sorting" #~ msgstr "Razvrščanje stolpcev" #~ msgid "Misc Gui Tweaks" #~ msgstr "Razne prilagoditve vmesnika" #~ msgid "File Options" #~ msgstr "Nastavitve datotek" #~ msgid "Status text" #~ msgstr "Besedilo stanja" #~ msgid "Pop-up status text" #~ msgstr "Prikaži okno z besedilom stanja" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "Za film lahko navedete zgodbo, dolžino, jezik ...\n" #~ "in če je lažen, lahko opozorite ostale uporabnike aMule." #~ msgid "Misc Options" #~ msgstr "Razne možnosti" #~ msgid "Server Options" #~ msgstr "Strežniške možnosti" #~ msgid "Display server motd when connected ..." #~ msgstr "Pokaži 'motd' strežnika ob povezavi ..." #~ msgid "Disable/Enable" #~ msgstr "Onemogoči/Omogoči" #~ msgid "Authentication" #~ msgstr "Overjanje" #~ msgid "General Settings" #~ msgstr "Splošne nastavitve" #~ msgid "Max Connections" #~ msgstr "Največ povezav" #~ msgid "GUI Tweaks" #~ msgstr "Prilagoditve vmesnika" #~ msgid "Remote Control" #~ msgstr "Oddaljeno upravljanje" #~ msgid "Unable to determine selected browser!" #~ msgstr "Ni mogoče določiti izbranega brskalnika!" #~ msgid "User Defined" #~ msgstr "Uporabniško določeno" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - mula za Linux" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Tu izberite svoj brskalnik" #~ msgid "Custom Browser:" #~ msgstr "Ročna nastavitev:" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Tu navedite ime vašega brskalnika. Da ga boste lahko uporabili, izberite " #~ "'Ročno' v zgornjem meniju." #~ msgid "Please wait... " #~ msgstr "Prosim, počakajte... " #~ msgid "Could not determine the command for running the browser." #~ msgstr "Ukaza za zagon brskalnika ni bilo mogoče določiti." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "EC povezava ni uspela. Prazen odgovor." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "ExternalConn: Dostop zavrnjen zaradi: " #~ msgid "ExternalConn: Access denied" #~ msgstr "ExternalConn: Dostop zavrnjen" #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Kopiraj pove&zavo ED2k v odložišče" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "Kopiraj povezavo ED2k v odložišče (&Vir)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "Kopiraj povezavo ED2k v odložišče (Vir) (s &kripto nastavitvami)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "Kopiraj povezavo ED2k v odložišče (&Ime gostitelja)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "" #~ "Kopiraj povezavo ED2k v odložišče (Ime gostitelja) (s k&ripto " #~ "nastavitvami)" #~ msgid "Copy ED2k link to clipboard (&AICH info)" #~ msgstr "Kopiraj povezavo ED2k v odložišče (&AICH info)" #~ msgid "Warning" #~ msgstr "Opozorilo" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "Napaka: Ni mogoče poslušati vrat TCP." #~ msgid "Webserver HTTP port" #~ msgstr "Vrata HTTP spletnega strežnika" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "Uporabi preusmerjanje vrat UPnP za vrata spletnega strežnika" #~ msgid "Full access password for webserver" #~ msgstr "Geslo s polnim dostopom za spletni strežnik" #~ msgid "Guest password for webserver" #~ msgstr "Geslo gosta za spletni strežnik" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "Naloži/shrani nastavitve spletnega strežnika iz/v oddaljeno aMule" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "Tu vnesite datoteko za katero želite izračunati Ed2k povezavo" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "Tu vnesite URL, ki ga želite dodati Ed2k povezavi : Dodajte / na koncu, " #~ "da bo aLinkCreator samodejno dodal trenutno ime datoteke" #~ msgid "Ed2k File Hash" #~ msgstr "Hash datoteke Ed2k" #~ msgid "Ed2k link" #~ msgstr "Povezava Ed2k" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "Odpri datoteko za izračun njene povezave ed2k" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "Kopiraj izračunano povezavo ed2k v odložišče" #~ msgid "Save computed ed2k link to file" #~ msgstr "Shrani izračunano povezavo ed2k v datoteko" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "Izberite datoteko za katero želite izračunati povezavo ed2k" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "Izberite datoteko k izračunani povezavi ed2k" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, aMule izdelovalec povezav ed2k\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Ikone iz http://www.everaldo.com in http://www.icomania.com\n" #~ "in http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Na voljo pod licenco GPL" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, aMule izdelovalec povezav ed2k" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Kopiraj povezavo ED2k v odložišče" #, fuzzy #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Kopiraj povezavo ED2k v odložišče" #, fuzzy #~ msgid "ED2K: Connecting" #~ msgstr "Povezovanje" #, fuzzy #~ msgid "ED2K: Disconnected" #~ msgstr "Ni povezave" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "Seznam za samodejno posodabljanje strežnikov je prazen.\n" #~ "'Samodejna posodobitev seznama strežnikov ob zagonu bo izklopljena." #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "Omrežji ED2k in Kad sta onemogočeni.\n" #~ "Ne boste se morali povezati, dokler ne omogočite vsaj enega." #~ msgid "Edit Serverlist" #~ msgstr "Uredi seznam strežnikov" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "Napaka: ni bilo mogoče sprejeti nove zunanje povezave" #~ msgid "ED2K is disabled in preferences." #~ msgstr "ED2K je izklopljen v nastavitvah." #~ msgid "ExternalConn: shutdown requested" #~ msgstr "ExternalConn: zahteva za ustavitev" #~ msgid "Already connected to ED2K." #~ msgstr "Povezava z ED2K že obstaja." #~ msgid "Connecting to ED2K..." #~ msgstr "Povezovanje z ED2K..." #~ msgid "Disconnected from ED2K." #~ msgstr "Povezava z ED2K prekinjena." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "ExternalConn: sprejet neveljaven 'opcode': %#x" #~ msgid "ED2K Status:" #~ msgstr "Stanje ED2K:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "Povprečen prenos dol (seja): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "Povprečen prenos gor (seja): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "Največji prenos dol (seja): %s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "Največji prenos gor (seja): %s" #~ msgid "Average filesize: %s" #~ msgstr "Povprečna velikost datoteke: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "Iskanje preko ED2K ni mogoče, če ED2K ni povezan" #~ msgid "Error: " #~ msgstr "Napaka: " #~ msgid "Warning: " #~ msgstr "Opozorilo: " #~ msgid "Search related files (ED2k, local server)" #~ msgstr "Išči sorodne datoteke (ED2K, krajevni strežnik)" #~ msgid "Error" #~ msgstr "Napaka" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "OPOZORILO: Ne morete dodati sebe kot vir za ed2k povezave, če imate nizek " #~ "ID." #, fuzzy #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "Prosimo, nastavite predvajalnik v nastavitvah.\n" #~ "Medtem bo aMule poskusil uporabiti MPlayer. To opozorilo boste dobili ob " #~ "vsakem predogledu." #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "Napaka: Ni bilo mogoče odpreti part.met datoteke: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "Napaka: Velikost part.met datoteke je 0: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "Napaka: Neveljavna različica part.met datoteke: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "Opozorilo: možno, da je %s pokvarjen (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "" #~ "Nepričakovana datotečna napaka med končevanjem %s. Datoteka na premoru" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "Opozorilo: Ni mogoče ustvariti hasha za prenesen del - hashset nepopoln " #~ "za '%s'" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "Napaka: Ni mogoče ustvariti hasha za prenesen del, hashset nepopoln (%s). " #~ "To se ne bi smelo zgoditi" #~ msgid "Insufficient Diskspace" #~ msgstr "Ni dovolj prostora na disku" #~ msgid "ERROR! Attempted to share %s" #~ msgstr "NAPAKA! Poskus deljenja %s" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "Omrežje ED2K onemogočeno v nastavitvah, ni povezave." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "" #~ "Na seznamu strežnikov ni veljavnih strežnikov s katerimi bi se lahko " #~ "povezali." #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "Napaka: Vtičnica ni bila veljavna ob preverjanju časovne omejitve" #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "Ni mogoče pretvoriti povezave magnet v povezavo ed2k: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "Neveljavna povezava ed2k! Napaka: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "Omejitve prenosa: Gor: %u kB/s, Dol: %u kB/s.\n" #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "Zaustavi oddaljeno jedro v teku (amule/amuled).\n" #~ "To bo zaustavilo tudi tekstovni odjemalec, saj je brez oddaljenega\n" #~ "jedra v teku neuporaben.\n" #~ msgid "Connect to ED2K only." #~ msgstr "Poveži se samo z ED2K." #~ msgid "Disconnect from ED2K only." #~ msgstr "Prekini samo povezavo ED2K." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "Dodana povezava ed2k je lahko:\n" #~ "*) datotečna povezava (ed2k://|datoteka|...), ki bo dodana na seznam " #~ "prenosov\n" #~ "*) strežniška povezava (ed2k://|strežnik|...), ki bo dodana na seznam " #~ "strežnikov\n" #~ "*) povezava do seznama strežnikov, vsi strežniki bodo dodani na seznam " #~ "strežnikov\n" #~ "\n" #~ "Povezava magnet mora vsebovati hash ed2k in velikost datoteke.\n" #~ msgid "Error: %s (%s) - %s" #~ msgstr "Napaka: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "Opozorilo: %s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "Napaka: Ni dovolj prostora na disku" #~ msgid "Error: Partmet not found" #~ msgstr "Napaka: Ni mogoče najti delne datoteke" #~ msgid "Error: IO error!" #~ msgstr "Napaka: Vhodno/izhodna napaka!" #~ msgid "Error: Failed!" #~ msgstr "Napaka: Ni uspelo!" #~ msgid "ED2K Link: " #~ msgstr "Povezava ED2K: " #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "Kliknite tukaj, da dodate povezavo ed2k na seznam prenosov." #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "Poizvedi za več rezultatov na ED2K. Podpora za Kad še ne obstaja." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Omejitve povezave" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "To so standardna vrata ED2K in jih ni mogoče onemogočiti." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "" #~ "Ta vrata UDP se uporabljajo za razširjene zahteve ED2K in za omrežje Kad." #~ msgid "Hard Limit" #~ msgstr "Zgornja meja" #~ msgid "Connection Limits" #~ msgstr "Omejitve povezave" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Samodejno posodobi seznam strežnikov ob zagonu" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Posodobi seznam strežnikov ob povezavi s strežnikom" #~ msgid "Update serverlist when a client connect" #~ msgstr "Posodobi seznam strežnikov ob povezavi z odjemalcem" #~ msgid "Disk Space" #~ msgstr "Prostor na disku" #~ msgid "Check Disk Space" #~ msgstr "Preveri prostor na disku" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "" #~ "Vklopite to, če želite, da aMule preverja ali je na disku dovolj prostora" #~ msgid "Min Disk Space:" #~ msgstr "Min. prostora na disku: " #~ msgid "Incoming Directory :" #~ msgstr "Imenik prihajajočih datotek :" #~ msgid "Temporary Directory :" #~ msgstr "Imenik začasnih datotek :" #~ msgid "Shared Directories" #~ msgstr "Deljeni imeniki" #~ msgid "Create Backup to preview" #~ msgstr "Ustvari varnostno kopijo za predogled" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Prikaži Hiter upravljalec povezav ED2K" #~ msgid "Webserver Parameters" #~ msgstr "Parametri spletnega strežnika" #~ msgid "Webserver port" #~ msgstr "Vrata spletnega strežnika" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "Vklopi preusmerjanje vrat UPnP za vrata spletnega strežnika" #~ msgid "Webserver UPnP TCP port" #~ msgstr "Vrata UPnP TCP spletnega strežnika" #~ msgid "Serverlist" #~ msgstr "Seznam strežnikov" #~ msgid "Manual Server Add : Name" #~ msgstr "Ročno dodajanje strežnika : Ime" #~ msgid "Speed Limits:" #~ msgstr "Omejitve hitrosti:" #~ msgid "Download Speed: %.1f" #~ msgstr "Prenos dol: %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "Prenos gor: %.1f" #~ msgid "TCP Port: %d" #~ msgstr "Vrata TCP: %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "Vrata TCP: Niso pripravljena" #~ msgid "UDP Port: %d" #~ msgstr "Vrata UDP: %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "Vrata UDP: Niso pripravljena" #~ msgid "Shared Files: %d" #~ msgstr "Deljenih datotek: %d" #~ msgid "Queued Clients: %d" #~ msgstr "Odjemalcev v vrsti: %d" #~ msgid "Upload Limit" #~ msgstr "Omejitev gor" #~ msgid "Download Limit" #~ msgstr "Omejitev dol" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "V addresses.dat ni naslova do seznama strežnikov. Prosim, prilepite " #~ "veljaven naslov do seznama strežnikov v to datoteko, da bo možna " #~ "samodejna posodobitev seznama." #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "" #~ "Opozorilo: naveden je neveljaven URL za samodejno posodabljanje " #~ "strežnikov: %s" #~ msgid "webserver running on pid %d" #~ msgstr "Spletni strežnik uporablja pid %d" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "Zahtevali ste vklop Spletnega strežnika ob zagonu, vendar binarnega " #~ "programa amuleweb ni mogoče zagnati. Prosim, namestite paket, ki vsebuje " #~ "aMule Spletni strežnik ali pa prevedite aMule z --enable-webserver in " #~ "zaženite make install" #~ msgid "Disconnected from ED2K" #~ msgstr "Povezava z ED2K prekinjena" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "" #~ "Ni bilo mogoče odpreti datoteke prijateljev 'emfriends.met' za branje!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "" #~ "Ni bilo mogoče odpreti datoteke prijateljev 'emfriends.met' za pisanje!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "NAPAKA: Delne datoteke ni bilo mogoče odpreti)" #~ msgid "Mb" #~ msgstr "Mb" #~ msgid "Can't create web socket thread\n" #~ msgstr "Ni mogoče ustvariti niti spletne vtičnice\n" #~ msgid "Web Server: Started\n" #~ msgstr "Spletni strežnik: Zagnan\n" #~ msgid "Not Supported" #~ msgstr "Ni podprt" #~ msgid "LowID: %u (%.2f%% Total %.2f%% Known)" #~ msgstr "Nizek ID: %u (%.2f%% Skupno %.2f%% Znanih)" #~ msgid "SecIdent On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgstr "SecIdent Da/Ne: %u (%.2f%%) : %u (%.2f%%)" #~ msgid "Browse wav" #~ msgstr "Prebrskajte za wav" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "Datoteka wav (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "Ni komentarjev" #~ msgid "Notifications" #~ msgstr "Obvestila" #~ msgid "Messages popup" #~ msgstr "Pojavno okno za sporočila" #~ msgid "Use sound" #~ msgstr "Uporabi zvok" #~ msgid "Pop out when :" #~ msgstr "Obvesti ob :" #~ msgid "New entry on log" #~ msgstr "Nov vnos v dnevniku" #~ msgid "Starts a new chat session" #~ msgstr "Začetek nove pogovorne seje" #~ msgid "A new chat message is received" #~ msgstr "Sprejeto je novo pogovorno sporočilo" #~ msgid "A download is added or finished" #~ msgstr "Prenos je dodan ali se je končal" #~ msgid "New aMule version detected" #~ msgstr "Na voljo je nova različica aMule" #~ msgid "Urgent OOD, serverconnection lost" #~ msgstr "Urgenten OOD, prekinjena povezava s strežnikom" #~ msgid "Notify by Mail" #~ msgstr "Obvestilo po e-pošti" #~ msgid "Send an Email when transfer complete." #~ msgstr "Pošlji e-pošto ob končanem prenosu." #~ msgid "SMTP server :" #~ msgstr "Strežnik SMTP :" #~ msgid "Email Address :" #~ msgstr "E-poštni naslov :" #~ msgid ":" #~ msgstr ":" #~ msgid "" #~ "The selected locale seems not to be installed on your box\n" #~ "You must generate it to use this language.\n" #~ "A good start on linux systems is the file /etc/locale.gen and the package " #~ "'locales'\n" #~ "Good luck!\n" #~ "(Note: I'll try to set it anyway)" #~ msgstr "" #~ "Izgleda, da izbrana področna nastavitev ni nameščena na vašem " #~ "računalniku.\n" #~ "Morate jo ustvariti, če bi radi uporabljali ta jezik.\n" #~ "V Linuxu si za začetek oglejte datoteko /etc/locale.gen in paket " #~ "'locales'.\n" #~ "Veliko sreče!\n" #~ "(Opomba: vseeno bo nastavljena)" #~ msgid "Never show this again" #~ msgstr "Tega sporočila ne kaži več" #~ msgid "Enable/Disable" #~ msgstr "Omogoči/Onemogoči" #~ msgid "You can't bootstrap an specific ip from remote GUI yet." #~ msgstr "" #~ "V oddaljenem vmesniku še ni mogoče izvesti začetnega nalaganja iz " #~ "določenega IP-ja." #~ msgid "You can't update server.met from remote GUI yet." #~ msgstr "V oddaljenem vmesniku še ni mogoče posodobiti server.met" #~ msgid "Disconnect from " #~ msgstr "Prekini povezavo z" #~ msgid "current server" #~ msgstr "trenutnim strežnikom" #~ msgid " and " #~ msgstr "in" #~ msgid "Disconnect from any server and/or Kad" #~ msgstr "Prekini povezavo s strežnikom in/ali Kad" #~ msgid " [" #~ msgstr " [" #~ msgid " | Kad: " #~ msgstr " | Kad: " #~ msgid "TCP Flags" #~ msgstr "Zastavice TCP" #~ msgid "UDP Flags" #~ msgstr "Zastavice UDP" #~ msgid "Copy ED2k link(s) to clipboard" #~ msgstr "Kopiraj povezavo ED2k v odložišče" #~ msgid "Client requests %u" #~ msgstr "Zahteve odjemalcev %u" #~ msgid "File block %u-%u (%d bytes):" #~ msgstr "Datotečni blok %u-%u (%d bajtov):" #~ msgid "Client request is invalid!" #~ msgstr "Zahteva odjemalca ni veljavna!" #~ msgid "Client request is invalid! %i / %i" #~ msgstr "Zahteva odjemalca ni veljavna! %i / %i" #~ msgid "Unable to open %s file - using %s file." #~ msgstr "Ni mogoče odpreti datoteke %s - uporabljena bo datoteka %s." #~ msgid "Warning: known.met does not exist." #~ msgstr "Opozorilo: known.met ne obstaja." #~ msgid "" #~ "CSharedFileList::FindSharedFiles: Removing %s from shared directory list: " #~ "directory not found." #~ msgstr "" #~ "CSharedFileList::FindSharedFiles: Odstranjevanje %s iz seznama deljenih " #~ "imenikov: imenika ni mogoče najti." #~ msgid "Waiting for subprocess termination failed" #~ msgstr "Čakanje na končanje podprocesa je spodletelo." #~ msgid "doesn't work" #~ msgstr "ne dela" #~ msgid "remote gui" #~ msgstr "oddaljen vmesnik" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "Napaka: Varnostne datoteke ni mogoče naložiti. Preiščite http://forum." #~ "amule.org za reševanje .part.met datotek." #~ msgid "" #~ "Error: Backup part.met file is 0 size! Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "Napaka: Velikost varnostne kopije part.met je 0! Preiščite na http://" #~ "forum.amule.org za reševanje .part.met datotek." #~ msgid "Error: part.met backup file is 0 size: %s ==> %s" #~ msgstr "Napaka: Velikost varnostne kopije od part.met je 0: %s ==> %s" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " Website: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contact: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ " Part of aMule is based on \n" #~ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr "" #~ " 'All-Platform P2P odjemalec, ki temelji na eMule \n" #~ "\n" #~ " Domača stran: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " Pogosta vprašanja: http://wiki.amule.org \n" #~ "\n" #~ " Stik: admin@amule.org (administrativna vprašanja) \n" #~ " Avtorske pravice (C) 2003-2006 aMule Team \n" #~ "\n" #~ " Del aMule temelji na \n" #~ " 'Kademlia: Peer-to-peer routing', ki temelji na metriki XOR.\n" #~ " Avtorske pravice (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "WARNING: You have recieved Low-ID!" #~ msgstr "OPOZORILO: Imate Nizek ID!" #~ msgid "This command requieres an argument. Valid arguments: a file hash.\n" #~ msgstr "Ta ukaz potrebuje argument. Veljavni argumenti: hash datoteke.\n" #~ msgid "Deprecated command, now 'Status'." #~ msgstr "Zastarel ukaz, uporabite 'Status'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Status' instead.\n" #~ msgstr "" #~ "Ta ukaz je zastarel in bo v prihodnosti odstranjen.\n" #~ "Namesto njega uporabite 'Status'.\n" #~ msgid "Deprecated command, now 'Set IPFilter'." #~ msgstr "Zastarel ukaz, uporabite 'Set IPFilter'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter' instead.\n" #~ msgstr "" #~ "Ta ukaz je zastarel in bo v prihodnosti odstranjen.\n" #~ "Namesto njega uporabite 'Set IPFilter'.\n" #~ msgid "Deprecated command, now 'Get IPFilter Level'." #~ msgstr "Zastarel ukaz, uporabite 'Get IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get IPFilter Level' instead.\n" #~ msgstr "" #~ "Ta ukaz je zastarel in bo v prihodnosti odstranjen.\n" #~ "Namesto njega uporabite 'Get IPFilter Level'.\n" #~ msgid "Deprecated command, now 'Set IPFilter Level'." #~ msgstr "Zastarel ukaz, uporabite 'Set IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter Level' instead.\n" #~ msgstr "" #~ "Ta ukaz je zastarel in bo v prihodnosti odstranjen.\n" #~ "Namesto njega uporabite 'Set IPFilter Level'.\n" #~ msgid "Deprecated command, now 'Get/Set IPFilter Level'." #~ msgstr "Zastarel ukaz, uporabite 'Get/Set IPFilter Level'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get/Set IPFilter Level' instead.\n" #~ msgstr "" #~ "Ta ukaz je zastarel in bo v prihodnosti odstranjen.\n" #~ "Namesto njega uporabite 'Get/Set IPFilter Level'.\n" #~ msgid "Deprecated command, now 'Show Servers'." #~ msgstr "Zastarel ukaz, uporabite 'Show Servers'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Show Servers' instead.\n" #~ msgstr "" #~ "Ta ukaz je zastarel in bo v prihodnosti odstranjen.\n" #~ "Namesto njega uporabite 'Show Servers'.\n" #~ msgid "Deprecated command, now 'Get BwLimits'." #~ msgstr "Zastarel ukaz, uporabite 'Get BwLimits'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get BwLimits' instead.\n" #~ msgstr "" #~ "Ta ukaz je zastarel in bo v prihodnosti odstranjen.\n" #~ "Namesto njega uporabite 'Get BwLimits'.\n" #~ msgid "Deprecated command, now 'Set BwLimit Up'." #~ msgstr "Zastarel ukaz, uporabite'Set BwLimit Up'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Up' instead.\n" #~ msgstr "" #~ "Ta ukaz je zastarel in bo v prihodnosti odstranjen.\n" #~ "Namesto njega uporabite 'Set BwLimit Up'.\n" #~ msgid "Deprecated command, now 'Set BwLimit Down'." #~ msgstr "Zastarel ukaz, uporabite 'Set BwLimit Down'." #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Down' instead.\n" #~ msgstr "" #~ "Ta ukaz je zastarel in bo v prihodnosti odstranjen.\n" #~ "Namesto njega uporabite 'Set BwLimit Down'.\n" #~ msgid "Masterhashes of known files have been loaded." #~ msgstr "Glavni hashi znanih datotek so bili naloženi." #~ msgid "Error while reading Kad contacts - 0 entries" #~ msgstr "Napaka med branjem stikov Kad - 0 vnosov" #~ msgid "Merge attempt" #~ msgstr "Poizkus spajanja" #~ msgid "Recursive merge" #~ msgstr "Rekurzivno spajanje" #~ msgid "Sucessful merge!" #~ msgstr "Spajanje uspešno!" #~ msgid "No merge possible" #~ msgstr "Spajanje ni mogoče" #~ msgid "Buddy address: " #~ msgstr "Naslov kolega: " #~ msgid "%d" #~ msgstr "%d" #~ msgid " %d" #~ msgstr " %d" #~ msgid ".%d" #~ msgstr ".%d" #~ msgid "Search warning." #~ msgstr "Opozorilo iskanja." #~ msgid "Client Identification:" #~ msgstr "Identifikacija odjemalca:" #~ msgid "Use Secure Identification" #~ msgstr "Uporabi Varno identifikacijo" #~ msgid "" #~ "Secure Identification uses a handshake approch to safely identify clients " #~ "for use with the credit system." #~ msgstr "" #~ "Varna identifikacija se uporablja za overjanje med odjemalci za varno " #~ "uporabo sistema s krediti." #~ msgid "Sources Dropping" #~ msgstr "Opuščanje virov" #~ msgid "Source Dropping" #~ msgstr "Opuščanje virov" #~ msgid "Drop sources" #~ msgstr "Opusti vire" #~ msgid "Send sources to any other file before dropping (High CPU)" #~ msgstr "Pošlji vire k drugim datotekam pred opuščanjem (visoka poraba CPU)" #~ msgid "Sources with no needed file-parts." #~ msgstr "Viri brez potrebnih delov za datoteko." #~ msgid "Full Queue Sources Handling" #~ msgstr "Upravljanje z viri s polno vrsto" #~ msgid "Enable auto drop Full Queue Sources" #~ msgstr "Omogoči avtomatsko opuščanje virov s polno vrsto" #~ msgid "High Queue Rating Sources Handling" #~ msgstr "Upravljanje z viri z visokim mestom v vrsti" #~ msgid "Enable auto drop High Queue Rating Sources" #~ msgstr "Omogoči opuščanje virov z visokim mestom v vrsti" #~ msgid "High Queue Rating value" #~ msgstr "Opusti vir pri tem mestu" #~ msgid "(Min 300 / Max 3000)" #~ msgstr "(Min. 300 / Maks. 3000)" #~ msgid "Auto Drop Sources Timer" #~ msgstr "Merilnik časa za samodejno opuščanje virov" #~ msgid "Timer (in secs)" #~ msgstr "Merilnik časa (v sek.)" #~ msgid "(Min 60 / 3600 Max)" #~ msgstr "(Min. 60 / 3600 Maks.)" #~ msgid "Drop No Needed Sources now" #~ msgstr "Opusti vse nepotrebne vire" #~ msgid "Drop Full Queue Sources now" #~ msgstr "Opusti vire s polno vrsto" #~ msgid "Drop High Queue Rating Sources now" #~ msgstr "Opusti vire z visokim mestom v vrsti" #~ msgid "Clean Up Sources now (NNS, FQS && HQRS)" #~ msgstr "Počisti vire (NNS, FQS && HQRS)" #~ msgid "English (U.S.)" #~ msgstr "angleški (US)" #~ msgid "Spanish (Mexican)" #~ msgstr "španski (mehiški)" amule_2.3.1+git20151120.0023527bc2.orig/po/sq.po0000644000175000017500000065553512611472361017127 0ustar morphmorph# translation of sq.po to Shqip # Albanian translations for aMule package. # This file is distributed under the same license as the aMule package. # # , 2008. # fation , 2008. # Fation , 2008. # Fation , 2008. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2008-04-20 20:41+0200\n" "Last-Translator: Fation \n" "Language-Team: Shqip \n" "Language: sq\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" "X-Generator: KBabel 1.11.4\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Shto nje shoke" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Ju duhet te futni nje IP dhe nje porte te vlefshem!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Informacion" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Userhash-i i specifikuar nuk eshte i vlefshem!" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "Deshtoi ne hapjen %s (%s)" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" #: src/amule.cpp:229 #, fuzzy msgid "Now, exiting main app..." msgstr "" "\n" "Ne rregull, duke dalur %s...\n" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "E Deshtuar" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 #, fuzzy msgid "aMule shutdown completed." msgstr "Shkarkimi Perfundoi" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "Konfirmimi i daljes" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "U pranua nje lidhje e jashtme e re" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "KUJDES" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Vendndodhja juaj eshte ndryshuar tek System Default i pershtatur per nje " "nderrim konfigurimi. Me vjen keq." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Informacion" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Ju nuk keni asnje server ne listen e serverave tuaj.\n" "Deshironi qe aMule te shkarkoje nje liste te re tani?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Shkarkim per listen e serverave" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Nuk mund te lidh portat tek adresa e dhene: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Porta %u nuk eshte me vlere. Ju do te keni ID te ulet\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Porta %u nuk eshte e vlefshme!\n" "\n" "Kjo do te thote qe ju do te keni ID te ulet.\n" "\n" "KOntrolloni rrjetin tuaj per tu siguruar qe porta eshte hapur per hyrje dhe " "dalje." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Deshtoi te krijoje failin per Firmen Online" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Deshtoi te krijoje failin per Firmen Online te aMule-s" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Vendi i zgjedur duket se nuk do te instalohet ne kutine tuaj. (Shenim: Une " "do te mundohem ta vendos ate)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Kjo eshte hera e pare qe ju po persorni aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Ky eshte nje version per testim,i azhornuar per dite, dhe\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "ne nuk japim siguri per te ai nuk do te thyej asgje,nuk do te djegi shtepine " "tuaj,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "ose te vrasi qenin tuaj. Por ai *do te* behet i sigurte per tu perdorur.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Me shume informacion,mbeshtetje dhe leshime te reja do ti gjeni tek faqet " "tona,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "tek www.amule.org ose ne kanalin tone IRC #amule tek irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Raportoni cdo gabim tek http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Kartela e faileve per Firmen Online qe ju specifikuat eshte e PAVLERE!\n" " Firma Online do te C'AKTIVIZOHET deri sa ju ta rregulloni tek Preferencat." #: src/amule.cpp:1116 #, fuzzy msgid "Server hostname notified" msgstr "Emri i Serverit:" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "GABIM: nuk mund te hapet logfile" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "KUJDES: faili i log-ve eshte bosh. Dicka nuk shkon." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Faili i Log eshte risetuar" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Mesazhe nga Serveri: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Deshtoi ne shkarkimin e listave nod." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Deshtoi te hapi failin per kontrollin e versionit qe sapo shkarkuat" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Fili per kontrollin e versionit eshte i demtuar" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Ju po perdorni nje version te vjeter te aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" "Versioni juaj i amUle eshte %i.%i-%i dhe versioni i fundit eshte %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Versioni i fundit mund te gjendet gjithmone tek http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "" "KUJDES: Versioni juaj i aMule-s eshte i vjeteruar: %i.%i-%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Kopja juaj e aMule eshte azhornuar." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Deshtoi ne shkarkimin e failit per kontrollin e versionit" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "me ID te ulet" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "me ID te larte" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "I lidhur tek %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Duke u lidhur tek %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad filloi." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad u ndalua." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "I lidhur ne Kad (Ne rregull)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "I lidhur ne Kad (Me firewall)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "I shkeputur nga Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Rrjeti Kad nuk mund te perdoret nqs porta UDP eshte c'aktivizuar tek " "Preferencat, nuk po filloj." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Rrjeti Kad eshte c'aktivizuar tek Preferencat,nuk eshte duke u lidhur." #: src/amuled.cpp:589 #, fuzzy msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "GABIM: demoni i aMule-s nuk mund te perdoret kur lidhjet e jashtme kan te " "c'aktivizuara. Per te aktivizuar Lidhjet e Jashtme mund te perdorni dhe nje " "aMule normale, filloje aMule me kete opsion --ec-config ose vendosni celesin" "\"AcceptExternalConnections\" tek 1 ne failin ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "GABIM: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Kjo eshte aMule %s dhe bazohet ne eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Duke punuar ne %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Vizitoni http://www.amule.org per te kontrolluar nqs eshte ne dispozicion " "nje version i ri." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Kontrolli remote i aMule " #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Snapshot:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Peer-to-peer routing i bazuar ne metriken XOR.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Mesazh" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Duke u lòidhur" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Me Firewall" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: I lidhur" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Po lidhet" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Fikur" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Fshij" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Ndalo tentativat e lidhjes qe po behen" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Shkeputu" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Shkeputu nga rrjetet e lidhura" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Lidhu" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Lidhu tek rrjetet" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Larte: %.1f(%.1f) | Poshte: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Larte: %.1f | Poshte: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | e lidhur)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | e shkeputur)" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "Vertet deshironi qe te dilni nga aMule?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Konfirmimi i daljes" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Direktoria e skin '%s' nuk ekziston" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Rrjetet" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Dritaret e rrjeteve" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Kerkimet" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Dritaret e kerkimeve" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Shkarkime" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "Duke shkarkuar" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Dritarja e faileve te ndara" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Mesazhe" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Dritarja e mesazheve" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistikat" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Dritarja e grafikut te statistikave" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Preferencat" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Dritarja e rregullimeve te preferencave" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importimi" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Veglat per importimin e pjeseve te faileve" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Rreth" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Rreth/Ndihme" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Rrjeti Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Nuk ka rrjet" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 #, fuzzy msgid "Fatal Error: Failed to create Core Timer" msgstr "Gabim Fatal: Deshtoi te krijoje Timerin" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Lidhu me Remote te amule" #: src/amule-remote-gui.cpp:257 #, fuzzy msgid "Fatal Error: Failed to create Poll Timer" msgstr "Gabim Fatal: Deshtoi te krijoje Timerin" #: src/amule-remote-gui.cpp:274 #, fuzzy msgid "Going to event loop..." msgstr "Tentative per rekuperimin e informacionit te failit..." #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "Duke u lòidhur" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Lidhja deshtoi " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Te gjithe" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "E panjohur" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Deshtoi te rimarri failet e ndara nga perdoruesi '%s'" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (eMule e falsifikuar versioni %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr "(eMule e falsifikuar)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (eMule e falsifikuar)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (e bazuar ne eMule v0 %u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Emri: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Kerkuar: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statistikat e failit per kete sesion: U pranua %d nga %d kerkesa, %s te " "transferuara\n" msgstr[1] "" "Statistikat e failit per kete sesion: U pranuan %d nga %d kerkesat, %s te " "transferuara\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Statistikat e failit per te gjitha sesionet: U pranua %d nga %d kerkesa, %s " "te transferuar\n" msgstr[1] "" "Statistikat e faileve per te gjitha sesionet: U pranua %d nga %d kerkesat, %" "s te transferuara\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Po kerkoni nje faili te panjohur" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Filtrim mesazhi nga '%s' (IP: %s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Mesazh i ri nga '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Perdoruesi %s (%u) kerkoi listen e faileve tuaja te ndara per kartelen %s -> " "nuk u lejua" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, fuzzy, c-format msgid "WARNING: %s cannot be opened." msgstr "Kujdes: known.met nuk mund te hapet." #: src/CanceledFileList.cpp:61 #, fuzzy msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "Kujdes: Lista e faileve te njohur eshte e demtuar, permban nje header te " "pavlere." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "Gabim IO duke lexuar failin known.met: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "Gabim duke shpetuar failin known.met: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategori" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Kategori e re" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Zgjidh nje kartele per failet ne hyrje" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Ju duhet te specifikoni nje emer per kategorine!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Ju duhet te specifikoni nje rruge per kategorine!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "E pamundur te krijoje nje kartele per failet ne hyrje per kete kategori.Ju " "lutem specifikoni nje rruge te vlefshme!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Sesioni i chatit filloi: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** I lidhur me klientin ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** DUke u lidhur me klientin ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Deshtoi te lidhet me klientin / Lidhja humbi ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Mbyll tabelen" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Mbylli te gjitha tabelat" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Mbyll tabelat e tjera" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Shto tek shoket" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Faili i kreditit u ngarkua, %u klienti eshte njohur" msgstr[1] "Faili i kreditit u ngarkua, %u klientet u njohen" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Kreditet mbaruan per %u klientin!" msgstr[1] " - Kreditet mbaruan per %u klientet!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "NUk u gjet faili cryptkey.dat,duke e krijuar." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Detajet e klientit" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "ID i ulet" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "ID i larte" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "I lidhur" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "I shkeputur" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Nuk eshte e kompletuar" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Djale i keq" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "E verifikuar - Ne rregull" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Nuk eshte aktive" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Perdoruesi %s (%u) kerkoi listen e faileve tuaja te ndara -> U lejua" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" "Perdoruesi %s (%u) kerkoi listen e faileve tuaja te ndara -> Nuk u lejua" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "Perdoruesi %s (%u) kerkoi listen e kartelave tuaja te ndara -> U lejua" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" "Perdoruesi %s (%u) kerkoi listen e kartelave tuaja te ndara -> Nuk u lejua" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Perdoruesi %s (%u) kerkoi listen e faileve tuaja te ndara per kartelen %s -> " "u lejua" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Perdoruesi %s (%u) kerkoi listen e faileve tuaja te ndara per kartelen %s -> " "nuk u lejua" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Perdoruesi %s (%u) ndan kartelen %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" "Perdoruesi %s (%u) dergoi nje liste te kartelave te ndara qe nuk u kerkua." #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "Perdoruesi %s (%u) derrgoi listen e faileve te ndara per direktorine %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Perdoruesi %s (%u) mbaroi dergimin e listes se faileve te ndara" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Perdoruesi %s (%u) dergoi listen e faileve te ndara te padeshiruara" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" "Perdoruesi %s (%u) nuk lejoi hyrjen ne listen e kartelave/faileve te ndara" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Komentet e faileve" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Emri i perdorimit" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Emri i failit" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Vleresimi" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Komenti" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Nuk ka komente" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u koment" msgstr[1] "%u komente" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Automatike [Ulet]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Automatike [Normale]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Automatike [Larte]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Shume ngadale" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Ngadale" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normale" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "E larte" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Shume e larte" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Leshim" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Duke pyetur" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Lidhje nepermjet serverit" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Radha ne pritje eshte plote" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Ne radhe" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Duke shkarkuar" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Hashsete te ardhura" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Pjese qe nuk nevojiten" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Nuk mund te lidh nje ID te ulet me nje ID te ulet" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Shume lidhje" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Lidhje nepermjet Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Shume lidhje Kad" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Te larguar" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Gabim ne lidhje" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Radha e plote" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "MLDonkey i vjeter" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "MLDonkey i ri" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "Pershtatet me eMule" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Server Lokal" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Server i larget" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Shkembim burimesh" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Pasiv" #: src/DataToText.cpp:133 msgid "Link" msgstr "Link" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Burime te shpetuara" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Te kompletuara" #: src/DataToText.cpp:146 msgid "In progress" msgstr "Ne vazhdim" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "Ne radhe" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Jam duke e shkarkuar" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Formati i failit temp i panjohur ose i gabuar." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Madhesia" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Te transferuara" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Shpejtesia" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Avancimi" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Burime" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Perparesia" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Gjendja" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Koha e mbetur" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Hera e fundit qe u pa e kompletuar" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Marrja e fundit" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Jeni te sigurte qe deshironi te fshini failin e zgjedhur?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Jeni te sigurte qe deshironi te fshini failet e zgjedhura?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Automatike" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Ndal" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pushim" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Rimerr" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "&Pastro te kompletuarit" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Sposto cdo A4AF ne kete fail tani" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Sposto cdo A4F4 ne kete fail (Automatikisht)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Sposto cdo A4F4 ne cdo fail tjeter tani" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Opsione te Avancuara" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Parashikim" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Trego &detajet e faileve" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Trego te gjithe komentet" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Kopjo magnetin URI ne shenimet" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Kopjo feedback ne shenimet" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "hiq" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Vendos tek kategoria" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Hap failin" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Futni nje emer te ti per kete fail:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Riemertim i failit" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Shkarkimet (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Parashikimi i failit" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "GABIM: Deshtoi te luaj media-player te jashtem! Komanda: `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, fuzzy, c-format msgid "Loading temp files from %s." msgstr "Duke ngarkuar failin e server.met: %s" #: src/DownloadQueue.cpp:132 #, fuzzy, c-format msgid "Loading PartFile %u of %u" msgstr "Duke ngarkuar te dhena nga nje fail i shkarkuar i vjeter (%u te %u)" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Nuk u gjenden part-files" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "U gjend %u part file" msgstr[1] "U gjenden %u part files" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Duke shkarkuar %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Jeni duke e shkarkuar kete fail ne nje vend tjeter '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Ju e keni kete fail '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Jeni duke u perpjekur te shkarkoni edhe njehere tjeter kete fail %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Protokoll i panjohur i linut: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "" #: src/ExternalConn.cpp:261 #, fuzzy msgid "Client sent packet after authentication failed." msgstr "Autentifikimi deshtoi." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Lidhja e jashtme u mbyll." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "LIdhjet e jashtme u c'aktivizuan sepse fjalekalimi ishte bosh|" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Lidhjet e jashtme u c'aktivizuan ne failin e konfigurimeve" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "U pranua nje lidhje e jashtme e re" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Lidhja e jashtme nuk u pranua sepse fjalekalimi tek preferencat ishte bosh!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Duke lidhur klientin: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Version i panjohur" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "ID-ja i versionit EC jo korrekt,duhet te kete mospershtatje binaresh. Perdor " "Core dhe Remote nga i njejti Snapshot." #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "NUk mund te lidheni me nje version SVN tek nje version i perfunduar ne " "menyre arbitrare| *sigh* crash i mundshem u evitua" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Version protokoli jo i rregullt." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Munfon tag-u i versionit te protokolit." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 #, fuzzy msgid "Authentication failed: wrong password." msgstr "Autentifikimi deshtoi." #: src/ExternalConn.cpp:512 #, fuzzy msgid "Authentication failed: missing password." msgstr "Autentifikimi deshtoi." #: src/ExternalConn.cpp:522 #, fuzzy msgid "Invalid request, please authenticate first." msgstr "Kerkese jo e rregullt, fillimisht duhet te identifikoheni." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Hyrja lejohet." #: src/ExternalConn.cpp:535 #, fuzzy, c-format msgid "Sent error message \"%s\" to client." msgstr "Filtron mesazhet nga klienta t èanjohur" #: src/ExternalConn.cpp:538 #, fuzzy, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Tentative per hyrje e paautorizuar. Lidhja u mbyll." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "Komanda e Remote per pjeset e faileve deshtoi: Nuk u gjet FileHash: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Nuk u gjet FileHash: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OOPS! Gabim ne procesimin e OpCode|" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Serveri nuk u shtua" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "Serveri nuk u gjend: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "nevojitet percaktimi i serverit qe do te levizet" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Kerkimi vazhdon. Rezultate ne ardhje!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Kerkimi WebSearch nga Remote eshte i kote." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "NUk ka pika per grafike." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Klienti juaj nuk eshte i konfiguruar per kete nivel detaji." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Jam duke dalur." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Lidhje e jashtme: Duke shtuar linkun '%s'." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Link i pavlere ose qe eshte ne liste." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Faili nuk u gjete." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Emri i failit i pavlere." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "E pamundur te riemeroje failin." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad-i eshte c'aktivizuar tek Preferencat." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Jam i lidhur ne Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Duke u lidhur me Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Te gjithe rrjetet jane c'aktivizuar." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "I shkeputur nga Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "OpCode e pavlere (version protokoli i gabuar?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Shtim i panjohur '%s' per komanden '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "KOmande e panjohur '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Kjo komande nuk mund te kete nje argument.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Kjo komande duhet te kete nje argument.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Kjo komande nuk eshte komplete, ju duhet te perdorni nje nga shtimet me " "poshte.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Shtime ne dispozicion:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Komanda ne dispozicion:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Te gjitha komandat mund te shkruhen me shkronja te medha ose te vogla.\n" "Shtyp '%s ' per te marre informacion te detajuar ne .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Del nga aplikimi." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Trego ndihme." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Per te marre ndihme per nje komande shtyp help .\n" "Per te marre listen e plote te komandave shtyp help .\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Perdor '%s' per listen e komandave\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Gabim Sintakse!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Gabim ne punimin e komandes - nuk duhet qe te ndodhi me! Raportoni Bug-un ju " "lutem\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Kjo komande nuk duhet te kete parametra." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Kjo komande duhet te kete nje parameter." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Argument i pavlere." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Kjo eshte nje komande jo komplete." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Shtyp '%s' per te marre me shume ndihme.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Ky eshte %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Ky eshte %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Duke krijuar klientin...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ne rregull, duke dalur %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Nuk mund te lidhem me nje fjalekalim boshe.\n" "Ju duhet te specifikoni nje fjalekalim edhe ne failin e konfigurimeve\n" "ose ne nje linje-komande, ose futni nje kur kerkohet.\n" "Duke dalur.\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Trego kete tekstin ndihmues." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Host ne te cilin aMule vepron. (default: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Porta e aMule per Lidhjet e Jashtme. (default: 4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Fjalekalimi per Lidhjet e Jashtme." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Lexo rregullimin nga faili." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Mos printo asnje output tek stdout" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Behu fjaleshume - trego dhe mesazhet e Debug-ut." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Vendos Locale-n e programit (gjuha)" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "" "Shkruaj opsionet e lenjes se komandave tek faili i konfigurimeve" "(rregullimeve)" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Krijo nje fail per konfigurimin te bazuar ne ate te aMule-s." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Printo versioni ne programit." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Detajet e failit" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% te mbaruara" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Shkoket" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Trego &Detaje" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Shto nje shoke" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Fshi nje shoke" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Dergo &Mesazh" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Shiko failet" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Vendos slotin per shoket" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Jeni te sigurt qe deshironi te fshini shokun e zgjedhur?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Jeni te sigurt qe deshironi te fshini shoket e zgjedhur?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Ju nuk lejoheni qe te vendosni me shume se nje slot per shoket.\n" " Vetem nje slot i vetem u vendos." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Perzgjedhje e shumte" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Dergo nje mesash perdoruesit" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Mesazhi qe do te dergohet:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Hiqe nga shoket" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Dergo mesazh" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Sposto tek ky fail" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "QR: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Nje tjeter fail i kerkuar" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Ngarkime ne pritje: %s" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "Ne radhe" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Ngarkim" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "Asnjeri" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Jo" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Po" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Duke shkarkuar..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "Kujdes: E pamundur te lexohet skin nga faili '%s'" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "Duke shkarkuar %s" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "Rilidhu ne Server" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "Deshtoi te shkarkoje listen e serverave nga %s" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Deshtoi te shkarkoje listen e serverave nga %s" #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "" "Duke ngarkuar filtrat e IP nga 'ipfilter.dat' dhe 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "Deshtoi ne ngarkimin e failit ipfilter.dat '%s', rastisem ne nje format te " "panjohur." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Deshtoi ne ngarkimin e failit ipfilter.dat '%s', nuk mund te hapet faili." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "U ngarkua %u intervali i adreses se IP nga '%s'." msgstr[1] "U ngarkuan %u intervale te adresave IP nga '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u linja e deformuar u skarcua." msgstr[1] "%u linjat e deformuara u skarcuan." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Bootstrap nga \n" "kliente te njohur" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nyjet (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "IP i pavlefshem per bootstrap" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Porte e pavlefshme per bootstrap" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Ju lutem plotesoni te gjitha fushat e kerkuara" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Jeni te sigurte qe deshironi te shkarkoni nje fail te ri nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Duke bere keshtu te gjitha nyjet aktuale do te hiqen dhe do te rifillohet " "lidhja ne Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Te vazhdoj?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: fjala qe u kerkua eshte shume e shkurter" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Po lexoj %u kontakt Kad" msgstr[1] "Po lexoj %u kontakte Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "U shkruajt %d kontakt Kadi" msgstr[1] "U shkruajten %d kontakte Kadi" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Emri i failit" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Version i panjohur" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "Kujdes: E pamundur te lexohet skin nga faili '%s'" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Hashing" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Duke perfunduar" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "E kompletuar" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Ne pritje" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "E gabuar" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Duke pritur" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Ju duhet te specifikoni nje fjalekalim jo bosh " #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Fjalekalim i gabuar, nuk eshte nje hash MD5 " #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Lidhja deshtoi" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:258 #, fuzzy msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "Lidje e jashtme: Pergjigje e keqe nga serveri. Lidhja u mbyll." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Sukses! Lidhja u vendos ne aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Sukses! Lidhja u vendos." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "Fjalekalimi per Lidhjet e Jashtme." #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Rifreskimi Automatik filloi" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Mbylle" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Ndaj" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Kopjo" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Ngjit" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Pastro" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Zgjidhi te gjitha" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "E pakufijshme" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "Menuja e sherbimeve te aMule" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "Ngarkim: Asnje" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "Ngarkim: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "Shkarkim: Asnje" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "Shkarkim: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Informacion mbi klientin" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Nickname: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Nuk eshte perzgjedhur asnje Nickname" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID-ja e klientit: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Nuk jam i lidhur" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Emri i Serverit: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP-ja e Serverit: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "I palidhur" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Firma Online: E aktivizuar" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Firma Online: E c'aktivizuar" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Uptime: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Totali i shkarkimit: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Totali i ngarkimit: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Fshih aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Trego aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Dlje" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Dergo" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Ngjarjet jane te treguara ketu. Per nje liste komplete te ngjarjeve, " "referohuni log-ut ne skeden e Serverave." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Duke ngarkuar ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Numeri i perdoruesve ne serverin qe jeni lidhur edhe ju ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Perdorues: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Perdoruesit e lidhur tek serveri aktual dhe nje vleresim i numrit te te " "gjithe perdoruesve." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Larte: 0.0 | Poshte: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Mesatarja aktuale e ngarkimeve dhe shkarkimeve. Nese aktivizohet numrat ne " "thonjeza tregojne overhead-in nga komunikimi me klientin." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Tregon gjendjen e lidhjes dhe transferimet aktive. Shigjetat e kuqe tregojne " "qe ju aktualisht nuk jeni lidhur, shigjetat e verdha tregojne qe ju keni nje " "ID te ulet (me firewall) dhe shigjetat e jeshile tregojne qe ju keni ID te " "larte (Tipi i lidhjes optimale)" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Nuk eshte i lidhur ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Serveri aktualisht i lidhur." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Kerko" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Emri:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tipi" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Lokale" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Globale" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Hash-i i failit" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Parametra te zgjeruara" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Filtrim" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Lloji i failit" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Kushdo" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Arkive" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Audio" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Imazhet-CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Figurat" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programe" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Tekste" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Video" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Zgjerimi" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Madhesia Minimale" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Bytes" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Madhesia Maksimale" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Te disponueshem" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filteri:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Rezultatet e filterit" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Nderro pozicionin e rezultateve" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Fshi failet e njohura" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Fillo" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Me shume" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Ndalo" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Shkarkime" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Reseto fushat" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Rezultatet" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Pastro shkarkimet e perfunduara" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Burime te gjetura :" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Te pergjithshme" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Emri i plote :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "Faili-met :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Madhesia e failit :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Gjendja e pjeseve te failit :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Hera e fundit qe u pa i perfunduar :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Transferimi" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Burime te gjetura :" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Burime ne transferim :" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Numerimi i pjeseve te failit :" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Te disponueshem :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Shpejtesia :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Koha Aktive e Shkarkimit :" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Te transferuara :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Te kompletuara :" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Intelligent Corruption Handling" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Humbje per pjese te prishura :" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Fitimi nga kompresimi :" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Paketa te rekuperuara nga I.C.H. :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Emrat e Faileve" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Mbishkruaj" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Pastro" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Zbato" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ne rregull" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Komento/Gjyko failin (Teksti do te shikohet nga perdoruesit e tjere)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Cilesia e failit" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "E pavotuar" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Pa vlere / E prishur / Falso" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "I varfer" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Mjaftueshem" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Mire" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "E perkryer" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "Gjyko failin ose lajmero perdoruesit nese faili eshte i pavlefshem ..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Rifreskim" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Duke shkarkuar, ju lutem prisni ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Madhesi e panjohur" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Informacion i Kerkuar" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "Adresa IP :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Porta :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Informacion i Shtuar" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Emri i Perdoruesit :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Userhash :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Shto" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Shpejtesia-Shkarkimit" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Aktualisht" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Mesatarja e Punes" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Mesatarja e Sesionit" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Shpejtesia-Ngarkimit" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Lidhjet" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Shkarkime Aktive" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Lidhje Aktive (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Ngarkime Aktive" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Pema e statistikave" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Emri i perdoruesit:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Userhash:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Software i klientit:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Versioni i klientit:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "Adresa IP:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID-ja e Perdoruesit:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "IP-ja e Serverit:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Emri i Serverit:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Transferime tek klienti" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Kerkesa aktuale:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Shpejtesia mesatare e ngarkimeve:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Shpejtesia mesatare e shkarkimeve:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Te ngarkuara (sesione):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Te shkarkuara (sesione):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Ngarkimet (total):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Shkarkimet (total):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Piket" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Modifikuesi DL/UP:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Identifikim i sigurte:" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "Ne radhe" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Piket e pritjes:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Nick" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "Ky eshte emri qe te tjeret do te shohin kur te lidhen tek ju." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Interval kohor para se te tregohen sugjerimet." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Kjo specifikon gjuhen e perzgjedhur." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Kerko per versione te reja sapo te filloje" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" "Duke aktivizuar kete beni qe aMule te kerkoje per versione te reja sapo te " "filloje" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Fillo te minimizuar" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "" "Duke aktivizuar kete opsion beni qe aMule te minimizohet vetevetiu sapo te " "filloje." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Pyet kur del" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Aktivizo Ikonen Tray" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Aktivizon ose C'aktivizon ikonen e System Tray (ose taskbar-in)" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Minimizoje ne ikonen Tray" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" "Duke aktivizuar kete opsion do te beni qe te minimizoni aMule-n ne System " "Tray sesa ne taskbar." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Zgjedhesi i shfletuesit" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Shfleto" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Hape ne nje faqe te re nqs eshte e mundur" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "Nqs eshte e mundur hape faqen e re te web-it ne nje faqe tjeter te re" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Video Player" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Ngarkim" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Vendndodhja e slotit" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Lidje automatike sapo programi te hapet" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Rilidhu mbas humbjes se lidhjes" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Largo serverat e papune mbas" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "tentativa" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Lista" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Perdor sistemin e prioritetit" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Perdor kontrollin e zgjuar per ID e ulet kur lidhesh" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Lidhje e sigurte" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Lidhu automatikisht vetem me serverat e qendrueshem" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Vendosni ne menyre manuale serverat e shtuar ne Prioritet te Larte" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Shto failet tek shkarkimi duke i vene ne pushim" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Shto failet tek shkarkimi me prioritet automatik" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Mundohu te shkarkosh pjesen e pare dhe te fundit te failit" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Nga e njejta kategori" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Futni ketu hapesiren minimale qe deshironi per diskun." #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Shpeto 10 burime per failet e rralla (< 20 burime)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Ngarkimi" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Shto faile te reja te ndara me prioritet automatik" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" "( Klikoni me butonin e djathte ne ikonene e karteles per te ndare ne menyre " "rekursive)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Nda failet e fshehur" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafiket" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Intervali i azhornimit : 5 sek" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Intervali grafik i vlerave mesatare: 100 minuta" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Shkalla grafike e lidhjeve: 100 " #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Sfondi" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Zgara" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Shkarkimi aktual" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Mesatarja e shkarkimeve ne punim" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Mesatarja e sesioneve te shkarkimit" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Ngarkimi aktual" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Mesatarja e ngarkimit ne punim" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Mesatarja e sesionit te ngarkimeve" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Lidhjet aktive" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Ikona e Speedbar-it ne Systray" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Nyjet e Kad aktuale" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Nyjet e Kad jane duke punuar" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Sesioni i Nyjeve te Kad" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Zgjidh" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Numera te treguar te versioneve te klienteve (0= pa kufij)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! KUJDES !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Lidhe maksimale te reja / 5 sek" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Madhesia e Buffer-it te failit: 240000 bytes" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Madhesia e Radhes ne Ngarkim: 5000 klienta" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Interval i azhornimit te lidhjes se serverit: C'aktivizuar" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Trego informacion te zgjeruar ne tabelat e kategorive" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Trego shpejtesine e transferimit ne titull" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Trego shpejtesine e transferimit ne titull" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Orientim Vertikal i toolbar-it" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "E sheshte" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "E rrumbullakosur" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" "aMule do te rreshtoje automatikisht kollonat ne listen tuaj te shkarkimeve" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Parametrat e Lidhjeve te Jashtme" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Prano lidhje te jashtme" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Futni ketu nje ip te vlefshem ne formatin a.b.c.d per te degjuar nderfaqesin " "EC. Nje fushe boshe ose 0.0.0.0 do te nenkuptoje cdo nderfaqe." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Aktivizo port forwarding UPnP tek porta EC" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Fjalekalim" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Modeli Web" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Fjalekalim per te drejta komplete" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Aktivizo Perdorues me te drejta te kufizuara" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Fjalekalim per te drejta te kufizuara" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Koha e Rifreskimit te Faqes (ne sek)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Aktivizo kompresimin Gzip" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "Ne rregull" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Kliko ketu per te bere aktive ndryshimet qe u bene tek Preferencat." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Rikthe ne gjendjen e meparshme ndryshimet te bera tek Preferencat." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Titulli :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Komente :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Direktoria e Hyrjeve :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Nderro perparesine per failet e reja te caktuara :" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "Mos nderro" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Zgjidh ngjyren per kete kategori (e zgjedhur aktualisht) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Rivendos" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Kliko ne kete buton per te resetuar log-un." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Kliko ne kete buton per te azhornuar listen e serverave nga URL ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Futni url tek nje fail server.met dhe shtypni butonin ne te majte per te " "azhornuar listen e serverave te njohur." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Futni emrin e serverit te ri ketu" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Porta" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Futni IP-ne e serverit ketu. duke perdorur formatin x.x.x.x." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Futni porten e serverit ketu." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "" "Shto ne menyre manuale nje server (mbushni fushen ne te majte me pare) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Log i aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Informacion mbi serverin" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Informacioni i ED2K" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Informacioni i Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Kliko ne kete buton per te azhornuar listen e nyjeve nga URL ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nyjet (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Fut url e nje faili nodes.dat dhe shtyp butonin ne te majte per te azhornuar " "listen e nyjeve te njohura." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Statistikat e Nyjeve" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Bootstrap" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Nyje e re" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Porta:" #: src/muuli_wdr.cpp:2763 #, fuzzy msgid "Bootstrap from known clients" msgstr "" "Bootstrap nga \n" "kliente te njohur" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Shkeput Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Perdor Identifikimin e Sigurte te Perdoruesve" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Eshte e rekomandueshme qe ta lejoni kete opsion. Ju nuk mund te merrni " "kredite nqs SUI nuk eshte i aktivizuar." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Protokolli i Turbullimit" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Mbeshtet Protokollin e Turbullimit" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Ky opsion lejon Protokollin e Turbullimit, dhe ben qe aMule te pranoje " "lidhje te turbulluara nga kliente te tjere." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Perdor turbullimin per lidhjet ne dalje" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Ky opsion lejon aMule-n qe te perdori protokollin e turbullimit kur lidhet " "me klientet/serverat e tjere." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Prano vetem lidhje te turbulluara" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Ky opsion e ben aMule-n qe te lejoje lidhje te turbulluara. Ju do te keni me " "pak burime, por i gjithe trafiku juaj do te turbullohet" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Te gjithe" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Zgjidh se kush ka kerkuar te shikoje listene faileve qe ju keni ndare." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "Filtrimi-IP" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Filtro klientet" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Lejo filtrimin e IP-ve te klientave te percaktuar ne failin ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Filtron Serverat" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Lejo filtrimin e IP-ve te serverave te percaktuara ne failin ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Lista e Ringarkimeve" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "Ringarko listen e IP-ve per te filtruar nga faili ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Azhorno tani" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Azhornim-Automatik i ipfilter sapo te ndizet" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Niveli i Filtrimit:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Gjithmone filtro IP-te LAN" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Perdorim Paranoik te IP-ve qe nuk korrespondojne" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Refuzo paketat nqs IP e klientit eshte e ndryshme nga IP se ku paketat kane " "ardhur. Perdore me kujdes." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Perdor ipfilter.dat te sistemit nqs eshte i disponueshem" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Nese nuk eshte gjetur ndonje ipfilter.dat lokal, lejo perdorimin e failit " "ipfilter te sistemit." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Lejo Firmen-Online" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Lejon shkrimin e faileve OS, qe mund te perdorren nga aplikacione te jashtme " "per te krijuar firma dhe te ngjashme." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Frekuenca e azhornimeve (sek):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Nderron frekuqncen (ne sekonda) te azhornimit te Firmes Online." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" "Shtypni ketu per te zgjedhur direktorine qe permban failet e Firmes Online." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Filtron mesazhet ne hyrje (pervec chatit qe po zhvilloni):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtron te gjithe mesazhet" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Filtron mesazhet nga njerezit qe nuk ndohen ne listen e miqve tuaj" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Filtron mesazhet nga klienta t èanjohur" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Filtron mesazhet qe permbajne (perdor ',' si nje ndarese):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "shto ketu fjalet qe aMule do te filtroje duke bllokuar mesazhet qe ato mbajne" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Komente" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Komente e filtrave permbajne (perdor ',' si nje ndarese):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Lidhje automatike e serverit pa nevojen e Proksit(Proxy)" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Aktivizo njohjen" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Aktivizo/C'aktivizo emri i perdoruesit/njohja e fjalekalimit" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Emri i perdorimit qe do perdoret per tu lidhur tek Proksi(Proxy)" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Fjalekalimi:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Fjalekalimi per te perdorur per tu lidhur tek Proksi(Proxy)" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Aktivizo Proksin(Proxy)" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Aktivizo/C'aktivizo mbeshtetjen e Proksit(Proxy)" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Lloji i Proksit(Proxy):" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Hosti i Proksit(Proxy)" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Host Name i Proksit(Proxy)" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Porta e Proksit:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Porta e Proksit(Proxy)" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Lidhu me:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Futu tek Remote i aMule" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Emri i Perdoruesit" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Mbaji mend keto rregullime" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Aktivizon logging-un e detajuar te mesazheve te debug-ut." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Hap failin" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Kategorite e Mesazheve:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Ne pritje..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Shton importimet" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Provoji perseri te perzgjedhurit" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Zhvendos te perzgjedhurat" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Ngarkime Aktive :" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Fshih failet e ndara" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Zgjidh filtrin e shikimit" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Ngarkime Aktive" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Trego klientet" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Lista e Ringarkimeve" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Ringarko failet e ndara" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Dergo" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Dergo mesazhin e specifikuar." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Mbylle kete sesion chati." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Lidhu me ndonje server dhe/ose Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "File te ndara" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Jo aktive [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "bytes" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/sec" msgstr[1] "bytes/sec" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "sekonda" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "minuta" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "ore" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Dite" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "te gjithe" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "te gjithe te tjeret" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "E pakompletuar" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "E ndalur" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Arkivi" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Tekst" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Aktive" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Duke importuar %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Duke lexuar kartelen temp" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Rekuperim informacioni themelor nga informacioni i failit ne shkarkim" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Duke krijuar destinacionin e failit" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Duke ngarkuar te dhena nga nje fail i shkarkuar i vjeter (%u te %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" "Shpetimi i blloqeve te dhenave ne nje fail shkarkimi te vetem (%u te %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Rekuperim informacioni mbi burimet e failit ne shkarkim" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Shtim shkarkimi dhe duke shpetuar partfile-n e re" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Importo pjeset e faileve" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Gjendja" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Filehash" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Disku: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Ju lutem zgjdhni nje kartele per te kerkuar per shkarkimet e perkohshme! " "(bejne pjese edhe nenkartelat)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "Deshironi qe burimet e faileve te importuara ne menyre te suksesshme te " "fshihen?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Te heq burimet?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "GABIM: Deshtoi te krijoje partfile)" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Ngarkimi i backup-it te failit met nga %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "Gabim: %s (%s) eshte e pavlere (tagcount i gabuar), e pamundur te ngarkoj " "failin." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Tentative per rekuperimin e informacionit te failit..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "Rekuperim i failit pa emer - tentativa e rekuperimit si RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" "Te gjitha informacionet e mundshme jane rekuperuar :D - duke u munduar ti " "perdor..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "E pamundur te merren informacione mbi failin :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Deshtoi ne hapjen %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "GABIM duke shpetuar partfile: %s (%s ==> %s)" #: src/PartFile.cpp:904 #, fuzzy msgid "IO failure while saving partfile: " msgstr "GABIM duke shpetuar partfile: %s (%s ==> %s)" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Nuk mund te merret gjatesia e '%s' - duke perdorur failin %s ." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' eshte 0 per ndonje motiv - po perdor failin %s ." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "E pamundur te shpetohet faili part.met seeds per %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Te shpetuar %i burimi seed per partfile: %s (%s)" msgstr[1] "Te shpetuar %i burimet seeds per partfile: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Te shpetuar %i burimi seed per partfile: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Gabim ne leximin e failit seeds tek partfile-t (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "U gjend pjese e prishur (%d) ne %d pjesen e failit %s - Rezultati Hash i " "Failit |%s| Hash i Failit |%s|" msgstr[1] "" "U gjend pjese e prishur (%d) ne %d pjeset e failit %s - Rezultati Hash i " "Failit !%s| Hash i Failit |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "U gjend pjese e kompletuar (%i) ne %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Hashing i ri i kompletuar %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Shkarkim i perfunduar: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Duke fshire failin: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" "KUJDES: Nuk ka hapesire te mjaftueshme ne disk! Duke vene ne pushim failet: %" "s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Pjesa e shkarkuar %i eshte e prishur ne failin: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH: Rekuperohet pjesa e demtuar %i per %s -> Bytes te kursyera: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "" #: src/Preferences.cpp:632 msgid "System default" msgstr "E vendosur nga sistemi" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Shqip" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabe" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "Estoneze" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Baske" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bullgare" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Katallanase" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Kineze (E thjeshtesuar)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "KIneze (Tradicionale)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Kroate" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Ceke" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Daneze" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Holandeze" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Anglisht (G.B.)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estoneze" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finlandeze" #: src/Preferences.cpp:648 msgid "French" msgstr "Frengjisht" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galiciane" #: src/Preferences.cpp:650 msgid "German" msgstr "Gjermanisht" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Greqisht" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Cifut" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Hungarisht" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italiane" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italiane (Zvic)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japonisht" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Koreane" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Lituane" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norvegjeze (Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polake" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugeze" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugeze (Braziliane)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Shqip" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Ruse" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Sllovene" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Spanjolle" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Suedeze" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Turqisht" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Gjuha" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Nuk eshte ne dispozicion" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "Porta TCP nuk mund te jene me te medha se 65532 sepse socket i UDP eshte " "fiksuar ne TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Do te perdoret porta e vendosur (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Lidhje" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Direktorite" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Servera" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Failet" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Sigurimi" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proksi" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Kontrollet e remote" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Firma online" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Ngjarje" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Debug" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "MOs ndryshoni keto rregullime vetem nese ju dini\n" "se cfare jeni duke bere, perndryshe ju mund te\n" "perkeqesoni gjerat.\n" "\n" "aMule do te punoje ne rregull pa modifikuarr asnje nga\n" "keto rregullime" #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Lloji i Proksit(Proxy) qe ju po lidheni" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule duhet qe te ristartohet qe keto ndryshime te aplikohen:\n" " \n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "Porta TCP eshte ndryshuar.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "Porta UDP eshte ndryshuar.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Lidhja e jashtme u mbyll." #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "U pranua nje lidhje e jashtme e re" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Lidhja e jashtme u mbyll." #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Protokolli i Turbullimit" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Ju keni lejuar lidhjet e jashtme por nuk keni specifikuar nje fjalekalim.\n" "Lidhjet e jashtme nuk mund te lejohen derisa te specifikohet nje fjalekalim." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Gjuha ndryshoi.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "Kartela Temp ndryshoi.\n" #: src/PrefsUnifiedDlg.cpp:657 #, fuzzy msgid "- ED2K network enabled.\n" msgstr "Te gjithe rrjetet jane c'aktivizuar." #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad nuk mund te filloje nqs porta juaj UDP eshte c'aktivizuar.\n" "Aktivizoni porten UDP ose c'aktivizoni Kad-in." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Ju duhet te ristartoni aMule-n tani.\n" "Nqs nuk e ristartoni tani mos u anko nqs te ndodh dicka e keqe.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Lista e azhornimit automatik te serverave eshte boshe.\n" "Ju lutem mbushni te pakten nje URL te vlefshme ne failin e server.met.\n" "Klikoni ne butonin \"List\" per te futur nje URL." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Failet e perkohshme" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Failet e shkarkuara" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Firma online" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Zgjidhni nje kartele per %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Shfletoni per nje videoplayer" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Perzgjidhni shfletuesin" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Te ekzekutueshme%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Futni ketu URL-te per te shkarkuar failet server.met.\n" "Vetem nga nje URL per c'do linje." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Intervali i azhornimit: %d sekonde" msgstr[1] "Intervali i azhornimit: %d sekonda" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Koha per mesataren grafike: %d minute" msgstr[1] "Koha per mesataren grafike: %d minuta" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Shkalla grafike e lidhjeve: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Madhesia buffer e failit: %d byte" msgstr[1] "Madesia Buffer e failit: %d bytes" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Madhesia e radhes se ngarkimit: %d klienti" msgstr[1] "Madhesia e radhes se ngarkimit: %d klientet" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Intervali i rifreskimit te lidhjeve te serverit: %d minute" msgstr[1] "Intervali i rifreskimit te lidhjeve te serverit: %d minuta" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Intervali i rifreskimit te lidhjeve te serverit: I c'aktivizuar" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "c'aktivizo" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "Ekzekuto komanden ne kete ngjarje `%s' " #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Lejo ekzekutimin e komandes ne core" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "KOmanda Core:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Lejo ekzekutimin e komandes ne GUI" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Komanda GUI:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Variacionet qe vijojne do te rivendosen:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "Masa minimale duhet te jete me e vogel se masa maksimale.Po injoroj Masen " "Maksimale.." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "PoParalajmerim per kerkim" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Kryesore" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Kerkimi i Kad nuk mund te behet nqs Kad nuk eshte duke punuar" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Gabim i paparashikuar duke kerkuar Kad: " #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "FailiID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Faile" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Shkarko ne kategori" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Shtoni URLs opsionale per kete fail" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Shenoje si fail te njohur" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "Fshij" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "E pamundur te lidhet tek lista e serverave me protokollin e turbullimit. Po " "provoj pa turbullim." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "E pamundur te lidhem tek serverat qe jane ne liste. Po provoj perseri." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "I lidhur tek %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Lidhja u vendos ne: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Gabim i Rende gjate tentatives per tu lidhur. Lidhja e Internetit mund te " "jete shkeputur" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Humbi lidhja tek %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) duket sikur nuk ka shenja jete." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) duket sikur eshte plote." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Rilidhje automatike tek serveri do te behet ne %d sekonde" msgstr[1] "Rilidhje automatike tek serveri do te behet ne %d sekonda" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "LIdhja humbi" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "Lidhja tek %s (%s:%i) deshtoi." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Lidhja tek %s (%s:%i) nuk u vendos per time-out." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Duke ngarkuar failin e server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Faili i server.met nuk u gjete!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" "Deshtoi te ngarkoje failin e server.met '%s' u ndeshem ne nje format te " "panjohur." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Deshtoi per te hapur server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Faili i server.met nuk eshte i vlefshem, u gjet nje TAG i versionit i " "pavlere: 0x%x, madhesia %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i u gjet server ne server.met" msgstr[1] "%i u gjeten servera ne server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d serveri i shtua" msgstr[1] "%d serverat u shtuan" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "Gabim IO duke lexuar failin known.met: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Serveri nuk u shtua: [%s:%d] nuk specifikon nje porte te vlefshme." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Serveri nuk u shtua: Ip-ja e [%s:%d] eshte e filtruar ose e pavlere." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" "Serveri nuk u shtua: Servera me Ip qe mungon:Porta [%s:%d] u gjet ne liste." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Serveri u shtua: Server tek é%s.%d* duke perdorur emrin '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Ju jeni i lidhur tek serveri qe deshironi te fshini. ju lutem ne fillim " "shkeputuni prej tij." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Deshtoi te hapi '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Deshtoi te shpetoje server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "URL e pavlere" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "Mbaroi se shkarkuari listen e serverave nga %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Duke filluar shkarkimin e listes se serverave nga %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "Nuk eshte gjetur nje url per auto-shkarkimin e server.met ne adresses.dat" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Deshtoi te shkarkoje listen e serverave nga %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Serverat lokale jane te filtruara nga IPFilters, duke u rilidhur ne nje " "server tjeter!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Emri i serverit" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Adresa" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Porta" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Pershkrimi" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping-u" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Perdoruesit" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "E qendrueshme" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Versioni" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Ju jeni lidhur tek nje serveri qe po perpiqeni te fshini. Ju lutem mbylleni " "lidhjen ne fillim. Serveri NUK u fshi." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Emer i panjohur)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Jeni te sigurte qe doni te fshini kete server te qendrueshem %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Serverat (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Serveri" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Lidhu ne Server" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Shenoje Serverin si te qendrueshem" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Shenoje Serverin si te Jo-Qendrueshem" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Shenoji Serverat si te qendrueshem" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Shenoji Serverat si te Jo-Qendrueshem" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Hiq Server" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Hiq Serverat" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Hiq te gjithe Serverat" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Rilidhu ne Server" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Jeni te sigurte qe deshironi te fshini te gjithe serverat?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "" "Jeni te sigurte qe deshironi te fshini te gjithe serverin e perzgjedhur?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Jeni te sigurte qe deshironi te fshini serverat e zgjedhur?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Klienti i ri eshte %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "KUJDES: Ju keni marre nje ID te ulet!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tMbase ngaqe ju jeni mbas nje firewalli ose routeri." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tPer me shume informacion ju lutem vizitoni http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "U moren Informacione serveri te panjohura! - shume e shkurter" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "U mor %d server i ri" msgstr[1] "U moren %d servera te rinj" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Shpetimi i listes se serverit u perfundua." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Serveri nuk pranoi komanden e fundit" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Paketa Bogus te marra nga serveri: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "" "Gabim qe nuk mund te menaxhohet derisa punohet me paketat nga serveri: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" "Nuk eshte e mundur te krijohet nje thread per te zgjidhur DNS per tu lidhur " "tek %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "IP-ja e Serverit %s ( %s) eshte e filtruar. Nuk po lidhet." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "duke perdorur protokollin e turbullimit." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "Duke u lidhur tek %s ( %s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" "NUk eshte e mundur te zgjidhet DNS per serverin %s: E pamundur te lidhem!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Serveri nuk u shtua: Nuk ka Hostname ose IP per specifikuar." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Serveri nuk u shtua: Porta e serverit te specifkuar eshte e pavlere." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Statusi i Kademlia" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "Duke punuar ne %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Aktive" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Statusi:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Gjendja e lidhjes" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "Gjendja e lidhjes" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Gjendja e firewall-it" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Nuk ka Shoke" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "I lidhur me shokun" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "I lidhur me shokun" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "Burime te gjetura :" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 #, fuzzy msgid "Indexed notes:" msgstr "Indeksi i failit nuk u gjet: " #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Perdorues mesatare:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Mesatarja e faileve:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Nuk eshte aktive" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "U gjend %i fail i njohur i ndare" msgstr[1] "U gjenden %i faile te njohura te ndara" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "U gjenden %i faile te njohur te ndare, %i te panjohura" msgstr[1] "U gjenden %i faile te njohura te ndara,%i te panjohura" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, fuzzy, c-format msgid "Shared directory not found, skipping: %s" msgstr "Serveri nuk u gjend: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Emri i Perdoruesit" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Shpejtesia-Shkarkimit" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Shpejtesia-Ngarkimit" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Te disponueshem :" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Gjendja e ngarkimit" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Gjendja e shkarkimit" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Emri i failit" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "File te ndara" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Kerkesa" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Kerkesa te pranuara" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Te dhena te transferuara" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Raporti i ndarjeve" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Pjese te marra" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Burime te kompletuara" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Direktoria Path" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Shti Komento/Klasifiko" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Redakto Koment/Klasifiko" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Riemerto" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Shto failet ne koleksionin e listes per transferim" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Kopjo magnetin &URI ne shenime " #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Kopjo linkun ED2k ne shenime (&AICH informacion)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "" "Ju keni nevoje per nje ID te larte per te krijuar nje sourcelink te vlefshem" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Faile te ndara (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[File ne shkarkim]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Emri i failit" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Vlera te ngarkuara (Sesioni (Total)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Overhead-i Total (Paketa): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Overhead-i i faileve te kerkuara (Paketa): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Overhead-i i nderrimit te burimit (Paketa): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Overhead-i i Serverit (Paketa): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Overhead i Kad (Paketa): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Ngarkime Aktive: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Ngarkime ne pritje: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Sesione totale ngarkimi me sukses: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Sesione totale ngarkimi te deshtuara: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Mesatarja kohore e ngarkimeve: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Te dhenat e shkarkimeve (Sesioni(Total)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Burime te gjetura: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Shkarkime Aktive (pjeset): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Raporti NG:SHK i sesionit (Total): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Rilidhjet: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Koha qe nga transferimi i pare: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "I lidhur ne server qe prej: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Lidhje Aktive (vleresimi): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Kufiri maksimal i lidhjeve u arrit: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Mesatarja e lidhjeve (vleresim): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Kulmi i lidhjeve (vleresim): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Kliente" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "Madhesi e panjohur" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "Te filtruar" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "Te larguar" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Totale: %i Te njohur: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Servera qe punojne: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Servera te deshtuar: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Totale: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Servera te fshire: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Servera te filtruar: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Perdorues ne serverat qe punojne: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Faile ne serverat qe punojne: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Perdorues Total: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Totali i Faileve: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Zenia e Serverit: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Numeri i faileve te ndara: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Totali i madhesise se faileve te ndara: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Sistemi Operativ" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Jo te marra" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Lidhjet Aktive (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Nuk eshte ne dispozicion" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Asnjehere" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Komanda `%s' me pid `%d' mbaroi me kodin e statusit `%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Shtyp dhe dil." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Format IP e pavlere. Perdor xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Kjo komanda kerkon nje argument, Argumente te vlefshme: all , emri i failit, " "ose nje numer.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Perpunim nga Hash: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Perpunim nga emri i failit: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Kjo komanda kerkon nje argumet. Argumente te vlefshem jane: nje fail hash.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Nuk eshte numer i vlefshem\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" "Nuk eshte hash i vlefshem (gjatesia duhet te jete ekzaktesisht 32 shkronja)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Shtyp '%s' per te marre me shume ndihme.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Shkarkimet (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Kerkesa deshtoi me nje gabim te panjohur. " #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Operacioni u mbyll me sukses." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Kerkesa deshtoi me kete gabim: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Filtrimi i IP per klientet eshte %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "Fikur" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "Ndezur" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Filtrimi i IP per serverat eshte %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Niveli aktual i filtrimit te IP eshte %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "I lidhur tek %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Tani po lidhem" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "firewalled" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Shkarkim:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Ngarkim:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Kliente ne radhe:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Burime Totale:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Numri i rezultateve te kerkimeve: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Erdhi nje pergjigje e panjohur nga serveri, OpCode = %#x" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Trego informacione mbi gjendjen." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Trego gjendjen e lidhjes, ngarkim/shkarkim shpejtesi aktuale, etj.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Trego pemen e te gjitha statistikave." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Me deshire, nje numer nga 0-255 mund te dergohet si nje argument tek kjo\n" "komande, per te treguar se sa versione te tregoje ne nenpeme\n" ". Asnje numer nuk tregon 'infinit'.\n" "Shembull: 'statitistics 5' do te tregoje vetem 5 versionet eme te perhapura " "per cdo lloj klienti.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 #, fuzzy msgid "Reload the given object." msgstr "Ringarko objektet e dhena." #: src/TextClient.cpp:862 #, fuzzy msgid "Reload shared files list." msgstr "Ringarko listen e faileve te ndara." #: src/TextClient.cpp:864 #, fuzzy msgid "Reload IP filtering table." msgstr "Ringarko tabelen e Filterit te Ip nga faili." #: src/TextClient.cpp:865 #, fuzzy msgid "Reload current IP filtering table." msgstr "Zgjidh nivelin e filtrimit te IP." #: src/TextClient.cpp:866 #, fuzzy msgid "Update IP filtering table from URL." msgstr "Ringarko tabelen e Filterit te Ip nga faili." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Lidhu me rrjetin." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Kjo do te lidh ne te gjithe rrjetet qe jane te aktivizuara tek Preferencat.\n" "Ju gjithashtu mund te specifikoni adresen IP ne formen IP:Port, te nje " "serveri dhe\n" "te lidhesh vetem tek ai. Mund te perdoret nje adrese IPv4 ose nje emer i " "zgjidhshem DNS." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Lidhu vetem tek Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Shkeputu nga rrjeti." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Kjo do te shkepusi aMulen nga te gjithe rrjetet qe eshte e lidhur.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Shkeputu vetem nga Kad." #: src/TextClient.cpp:879 #, fuzzy msgid "Add an eD2k or magnet link to core." msgstr "Shton nje link magnet ose ed2k tek Core." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Vendos nje vlere te preferuar." #: src/TextClient.cpp:885 #, fuzzy msgid "Set IP filtering preferences." msgstr "Vendos preferimet per filtrin e IP." #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Ndize filtrin e IP si per kliente dhe per serverat." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Fike filterin e IP si per klientet si per serverat." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Aktivizo/C'aktivizo filtrimin e IP per klientat." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Ndiz filtrimin e IP per klientet." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Fike filtrimin e IP per klientet." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Aktivizo/C'aktivizo filtrimin e IP per serverat." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Ndize filtrimin e IP per serverat." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Fike filtrimin e IP per serverat." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Zgjidh nivelin e filtrimit te IP." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Niveled e duhura per filtrimin jane nga 0-255, dhe eshte e dhene " "(fillimisht)\n" "vlera eshte 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Vendos kufijte e rrjetit." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "Vlera e dhene e ketyre komandave duhet te jete ne kilobytes/sec.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Vendos kufijte ngarkues te rrjetit." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "Vlera e dhene e ketyre komandave duhet te jete ne kilobytes/sec.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Vendos kufijte shkarkues per rrjetin." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Merr dhe trego nje vlere te preferencave." #: src/TextClient.cpp:907 #, fuzzy msgid "Get IP filtering preferences." msgstr "Merr preferencat e filtrit te IP." #: src/TextClient.cpp:908 #, fuzzy msgid "Get IP filtering state for both clients and servers." msgstr "Merr gjendjen e filterit te IP per klientet dhe per serverat." #: src/TextClient.cpp:909 #, fuzzy msgid "Get IP filtering state for clients only." msgstr "Merr gjendjen e filterit te IP vetem per kliente." #: src/TextClient.cpp:910 #, fuzzy msgid "Get IP filtering state for servers only." msgstr "Merr gjendjen e filterit IP vetem per servera." #: src/TextClient.cpp:911 #, fuzzy msgid "Get IP filtering level." msgstr "Zgjidh nivelin e filtrimit te IP." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Merrni kufijte e bandwdith" #: src/TextClient.cpp:915 #, fuzzy msgid "Execute a search." msgstr "Fillon nje kerkim Kad" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Eshte e nevojshme te specifikohet tipi i kerkimit qe mund te jete:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Shembull: 'search kad file' do te filloje kerkimin per \"fail\".\n" #: src/TextClient.cpp:917 #, fuzzy msgid "Execute a global search." msgstr "Fillon nje kerkim global." #: src/TextClient.cpp:918 #, fuzzy msgid "Execute a local search" msgstr "Fillon nje kerkim lokal" #: src/TextClient.cpp:919 #, fuzzy msgid "Execute a kad search" msgstr "Fillon nje kerkim Kad" #: src/TextClient.cpp:921 #, fuzzy msgid "Show the results of the last search." msgstr "Tregon rezultatet e kerkimit te fundit." #: src/TextClient.cpp:922 #, fuzzy msgid "Return the results of the previous search.\n" msgstr "Rikthen rezultatet tek kerkimi i meparshem.\n" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "Tregon ecurine e nje kerkimi." #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "Tregon ecurine e nje kerkimi.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Shkarko nje fail" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Duhet te jepet numri i nje faili nga kerkimi i fundit.\n" "Shembull: 'shkarkimi 12' do te filloje te shkarkoje failin me numer 12 te " "kerkimit te meparshem.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Pusho shkarkimin." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Rimerr shkarkimin." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Fshij shkarkimin." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Vendos prioritetin e shkarkimit." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" "Vendos prioritetin e nje shkarkimi tek Ulet, Normale, Larte ose Auto,\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Vendos prioritetin tek Ulet," #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Vendos prioritetin tek Normale." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Vendos prioritetin tek Larte." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Vendos prioritetin tek auto." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Trego radhet/listat." #: src/TextClient.cpp:952 #, fuzzy msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Tregon radhen e ngarkim/shkarkimit, listen e serverave ose listen e faileve " "te ndara.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Trego radhen e ngarkimeve." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Trego radhen e shkarkimeve." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Trego log." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Trego listen e serverave." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Fshi log-un" #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Kjo eshte nje komande e pavlere dhe mund te largohet ne te ardhmen.\n" "Perdor '%s' ne vendin e saj.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Teksti i klientit aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Duke kembyer hashsetet e vjetra AICH ne '%s' 64b ne '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" "KUJDES: Emri i failit '%s' eshte i pavlere dhe eshte riemeruar ne '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "KUJDES: Faili '%s' ekziston,faili i ri i riemertuar ne '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Jeni te sigurte qe deshironi te fshini te gjithe failet nga kjo kategori?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Konfirmo kerkesen" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Shume lidhje" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Te gjithe te tjeret" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Zgjidh filtrin e shikimit" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Shto kategorine" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Redakto kategorine" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Zhvendos kategorine" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "Deshtoi te hapi failin (%s). duke hequr nga lista failet e ndara." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Kerkohet Hashset-i per failin e panjohur: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Rimarrja e ngarkimeve te failit: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Duke pezulluar ngarkimin e failit: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Deshtoi te ekzekutoje komanden `%s' ne `%s' ngjarjet." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Shkarkimi Perfundoi" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Path-i i plote per tek faili" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Emri i failit pa perberesit e Path-it." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Madhesia e failit ne bytes." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "KOha permbledhese e shkarkimeve." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Sesion i ri chati filloi" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Derguesi i mesazheve." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Jashte nga hapesira" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Particioni i diskut." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Gabim ne perfundim" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Numeri i failit ne proces %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Ju kerkuat hashin e pjeseve (Vetem per failet e perdorur > 9.5 MB)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Fail qe nuk ekziston !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Miresevini!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Parametrat e hyrjes" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Faili per ekzaminim" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Shtoni URLs opsionale per kete fail" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Hiq" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Krijo lidhje me pjeset-hash" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Ndihmo te shperndash sa me shpejte failet e reja dhe te vyera, ne kembim te " "nje lidhjeje me te gjate" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "Hash MD4" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Shpeto" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Kopjo ne shenime" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Rreth aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Asgje per te kopjuar tani !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "E pamundur te hapet " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Ju lutem, futni nje emer faili jo boshe" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Asgje per te shpetuar tani !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Hashing..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "i anulluar !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "I perfunduar ne %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Ju e keni futur edhe me pare kete URL !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Ju lutem, futni nje URL jo boshe" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "I paafte per te hapur %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i dita(et) %i ora(et) %i min %i s" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uo %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02umin %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, Statistikat Online te aMule" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Shpejtesia maksimale e DL qe kur eshte aktive wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "Shpejtesia maksimale e DL ne aktivizimet e meparshme" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistem" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Ndalo Rifreskimin Automatik" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Shpeto imazhet e statistikave online" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Printo imazhet e statistikave online" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Rregullimet e preferencave" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Rreth wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Fillo Rifreskimin Automatik" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Rifreskimi Automatik u ndalua" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Rifreskimi Automatik filloi" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Shpeto imazhet e statistikave" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Statistikat Online te aMule" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Kishte nje problem duke printuar.\n" " Mos valle printeri juaj nuk eshte instaluar ne menyre korrekte?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Duke printuar" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, Statistikat e Firmes Online te aMule\n" "\n" "(c) 2004 The Polish \n" "\n" "Bazuar ne CAS nga Pedro de Oliveira \n" "\n" "Shperndare nga GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh Oh, aMule nuk eshte duke punuar..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule eshte duke punuar" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule eshte duke punuar,por e shkeputur" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule po lidhet..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh Oh, Statusi i aMule eshte i panjohur..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr "ka punuar per " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " ka ndaluar !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " nuk eshte lidhur !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " po lidhet..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " eshte duke bere dicka te cuditshme, kontrolloje !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " eshte lidhur me " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "Fikur" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " Eshte ndezur " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " me " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Shkarkimi Total: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Ngarkimi: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Sesioni i Shkarkimit: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Shkarkim: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Ngarkim: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Te ndara: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " faili(et), Klientet ne pritje: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Koha: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " Ndezur " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Ngarikimi mesatar i sistemit (1-5-15 minuta): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Uptime i Sistemit: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Direktoria permban failin amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Futni ketu direktorine se ku keni vendosur failin e amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Intervali i rifreskimit ne sekonda" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Prodho nje imazh te statistikave ne c'do rifreskim ngjarje" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" "Futni ketu direktorine se ku deshironi te prodhoni nje imazh te statistikave" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Ngarko periodikisht imazhin tuaj te statistikave ne serverin FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "Url e FTP-se" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "Rruga e FTP-se" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Futni ketu URL e serverit tuaj FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Futni ketu direktorine e serverit FTP ne te cilen doni te kopjoni imazhin " "tuaj te statistikave" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Perdorues" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Futni ketu emrin e Perdoruesit per te hyre ne serverin FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Futni ketu fjalekalimin e Perdoruesit per te hyre ne serverin FTP" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Intervali i rifreskimit te FTP-se ne minuta" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Konvalido" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Kartela qe mban failoin e firmes" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Kartela ku prodhohet imazhi i statistikave" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Duke ngarkuar modelin " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "Porta UPnP" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Perdor kompresimin gzip " #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Lejo hyrjen e guest-ve" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Ndalo hyrjen e guest-ve" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Rruga per konfigurimin e failit te aMule. MOS E PERDORNI DIREKT!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "C'aktivizo interpretuesin e PHP (nuk aprovohet)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Rimbush faqet PHP ne c'do kerkese" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Web Server i aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Kerkesa deshtoi me kete gabim: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Indeksi i failit nuk u gjet: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Sesioni mbaroi - kerkohet hyrja\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Sesioni ne rregull, u futet ne\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Sesioni ne rregul,nuk u futet ne\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Nuk ka sesion te hapur - kerkese per hyrje\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Sesioni u krijua - kerkohet hyrja\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Perpunim i kerkeses [origjinale]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Duke kerkuar fjalekalimin\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Hash-i i fjalekalimit nuk eshte i rregullt\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Fjalekalimi ne rregull\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Fjalekalim i gabuar\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Ju nuk futet asnje fjalekalim: Vendi bosh nuk lejohet.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Dalja e kerkuar\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Perpunimi i kerkeses [e ridrejtuar]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Partfile %s (%s) nuk ka faile seeds" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Partfile %s (%s) ka nje fail seeds boshe" #, fuzzy #~ msgid "Download status" #~ msgstr "Gjendja e shkarkimit" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Intervali i azhornimit : %d sekonde" #~ msgstr[1] "Intervali i azhornimit : %d sekonda" #~ msgid "Transferring" #~ msgstr "Duke transferuar" #, fuzzy #~ msgid "QR: ???" #~ msgstr "QR: %u" #~ msgid "QR: %u" #~ msgstr "QR: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "Ne radhe" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - tregon avancimin e kerkimit" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Duke filluar krijimin e MD4 dhe hash-it AICH per failin: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Duke filluar krijimin e hash-it MD4 per failin: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Duke filluar krijimin e hash-it AICH per failin: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "KUJDES: Nuk mund te zhvendosesh origjinalin '%s' mbas krijimit te backup-" #~ "it" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "KUJDES: Deshtoi ne fshirjen %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR: %u)" #~ msgid "Rating (total):" #~ msgstr "Gjykimi (total):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Kerko te transferosh pjese te plota per te gjithe ngarkimet" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Duke shkarkuar" #~ msgid "Transfers" #~ msgstr "Transferimet" #~ msgid "Unban" #~ msgstr "Hiqe nga Ban" #~ msgid "Show Uploads" #~ msgstr "Trego Ngarkimet" #~ msgid "Show Queue" #~ msgstr "Trego radhen" #~ msgid "Select View" #~ msgstr "Zgjidh veshtrimin" #~ msgid "Client Software" #~ msgstr "Software i klientit" #~ msgid "Waited" #~ msgstr "I pritur" #~ msgid "Upload Time" #~ msgstr "Koha e ngarkimit" #~ msgid "Upload/Download" #~ msgstr "Ngarkim/Shkarkim" #~ msgid "Remote Status" #~ msgstr "Gjendja e Remote" #~ msgid "File Priority" #~ msgstr "Perparesia e faileve" #~ msgid "Score" #~ msgstr "Piket" #~ msgid "Asked" #~ msgstr "E kerkuar" #~ msgid "Last Seen" #~ msgstr "Hera e fundit qe u pa" #~ msgid "Entered Queue" #~ msgstr "U shtua ne radhe" #~ msgid "Transferred Up" #~ msgstr "Te ngarkuara" #~ msgid "Transferred Down" #~ msgstr "Te marra" #~ msgid "Userhash" #~ msgstr "Userhash" #~ msgid "Encrypted" #~ msgstr "E kriptuar" #~ msgid "Shows Upload / Up-queue" #~ msgstr "Trego ngarkimin / Radha e ngarkimit" #~ msgid "Clients on queue :" #~ msgstr "Kliente ne radhe :" #~ msgid "Current Session" #~ msgstr "Sesioni Aktual" #~ msgid "Total" #~ msgstr "Totale" #~ msgid "Requested :" #~ msgstr "Te kerkuara :" #~ msgid "Files Transfers Window" #~ msgstr "Dritarja e transferimeve te faileve" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Totali i Perdoruesve: %s | Totali i Faileve: %s" #, fuzzy #~ msgid "WARNING: Void response on stream creation" #~ msgstr "" #~ "KUJDES: Nuk mund te zhvendosesh origjinalin '%s' mbas krijimit te backup-" #~ "it" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "" #~ "CIP2Country::CIP2Country(): Deshtoi te ngarkoje te dhenat e vendit nga " #~ msgid "Get IPFilter level." #~ msgstr "Merr nivelin e Filterit te IP." #~ msgid "Makes a search." #~ msgstr "Ben nje kerkim" #, fuzzy #~ msgid "Killed!" #~ msgstr "E Deshtuar" #, fuzzy #~ msgid "Using amuleweb in '%s'." #~ msgstr "Fillo amuleweb sapo te nise programi" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "Fike aMule." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Opsionet ne vazhdim u ndryshuan ne kete version per aresye sigurie:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* U aktivizua protekoli per suportimin e Fshejes per lidhjet hyrese dhe " #~ "dalese.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* U c'aktivizua azhornimi i listes se serverave nga serverat dhe klientet " #~ "e tjere.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Per me shume informacion ne lidhje me aresyet me keto ndryshime, kerko\n" #~ "wiki-n e aMule-s tek http://wiki.amule.org per \"informacion\"per servera " #~ "te rreme.\n" #~ "Eshte e rendesishme qe ju te fshini cdo server te rreme nga lista juaj qe " #~ "aMule te punoje rregullisht." #~ msgid "Fetching status..." #~ msgstr "Duke verifikuar gjendjen..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Perdoruesit: E: %s K: %s | Failet E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Klienti %s ne porten IP: %s:%d po perdor %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() na solli NULL" #~ msgid "Firewalled" #~ msgstr "Me firewall" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "Te ngarkuar %d flag bitmap." #~ msgstr[1] "Te ngarkuar %d flag bitmaps." #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "" #~ "Faili %s eshte shume i madh per rrjetin eDonkey: maksimumi i lejuar eshte " #~ "4 GB." #~ msgid "No handler for this file type." #~ msgstr "Nuk ka program per hapjen e ketij lloji." #~ msgid "File was not saved" #~ msgstr "Faili nuk u shpetua" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "Lidhja Deshtoi.E pamundur te lidhem ne ate host\n" #~ msgid "Message Filter" #~ msgstr "Filtrimi i mesazheve" #~ msgid "Gui Tweaks" #~ msgstr "Gui Tweaks" #~ msgid "Core Tweaks" #~ msgstr "Core Tweaks" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "Vonesa e sugjerimeve ne sekonda" #~ msgid "Show part file number before file name" #~ msgstr "Trego numrin partfile me pare se emrin e failit" #~ msgid "Skin Support" #~ msgstr "Perkrahja Skin" #~ msgid "- no skins available -" #~ msgstr "- nuk ka skin te disponueshem -" #~ msgid "Online Signature Directory:" #~ msgstr "Direktoria e Firmes Online:" #~ msgid "Filtering Options:" #~ msgstr "Opsionet e filtrimit:" #~ msgid "Line Capacities" #~ msgstr "Kapaciteti i Linjes" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "Shenim: Keto vlera jane\n" #~ " vetem per statistika" #~ msgid "Standard client TCP Port:" #~ msgstr "Porta standarte TCP e klientit:" #~ msgid "Extended client UDP Port:" #~ msgstr "Porta e avancuar e klientit UDP:" #~ msgid "Bind Address" #~ msgstr "Bind Adress" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "Porta UDP per kerkesat e zgjeruara te serverit (TCP+3): 4665" #~ msgid "Max Sources per File" #~ msgstr "Burimet maksimale per failet" #~ msgid "Universal Plug and Play" #~ msgstr "Plug and Play Universale" #~ msgid "Enable UPnP" #~ msgstr "Aktivizo UPnp" #~ msgid "UPnP TCP Port:" #~ msgstr "Porta TCP per UPnP:" #~ msgid "Start next paused file when a file completed" #~ msgstr "Fillo failin tjeter qe keni ne pritje kur nje fail te kompletohet" #~ msgid "Select Statistics Colors" #~ msgstr "Zgjidh ngjyrat e statistikave" #~ msgid "Download Queue Files Progress" #~ msgstr "Avancimi i faileve ne radhe per shkarkim" #~ msgid "Show percentage" #~ msgstr "Trego perqindjen" #~ msgid "Show progressbar " #~ msgstr "Trego Progressbar " #~ msgid "Enable skin support " #~ msgstr "Aktivizo perkrahjen e skin-ve" #~ msgid "Skin:" #~ msgstr "Skin:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "Rreshtim automatik i faileve ne radhen e shkarkimeve (CPU i larte)" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "IP-ja e nderfaqes se degjimit\n" #~ "(ose bosh per cdo IP)" #~ msgid "TCP port" #~ msgstr "Porta TCP" #~ msgid "Who can see shared files:" #~ msgstr "Kush mund te shikoje failet e ndara:" #~ msgid "Event types" #~ msgstr "Tipet e ngjarjeve" #~ msgid "Makes aMule promt before exiting." #~ msgstr "Bej qe aMule te kerkoje perpara daljes." #~ msgid "Show overhead bandwith" #~ msgstr "Trego Overhead-in e bandes" #~ msgid "I.C.H. active" #~ msgstr "I.C.H. aktive" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "AICH i beson kujtdo hashi (nuk rekomandohet)" #~ msgid "Advanced Settings" #~ msgstr "Rregullime te Avancuara" #~ msgid "Progressbar Style" #~ msgstr "Stili Progressbar" #~ msgid "Column Sorting" #~ msgstr "Rreshtimi i Kollonave" #~ msgid "Misc Gui Tweaks" #~ msgstr "Tweaks Gui te ndryshem" #~ msgid "File Options" #~ msgstr "Opsionet e faileve" #~ msgid "Status text" #~ msgstr "Teksti i statusit" #~ msgid "Pop-up status text" #~ msgstr "Teksti i gjendjes se pop-up" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr "" #~ "Te gjitha platformat p2p te bazuara ne eMule \n" #~ "\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr " Websajti: http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr " Forumi: http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ "FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " Kontakt: admin@amule.org (pyetje administrative) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ "Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr "Pjesa e aMule bazohet ne \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " Copyright (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http:/kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "Per nje film ju mund te tregoni gjatesine e tij, historine e tij, " #~ "gjuhen ...\n" #~ "dhe nese eshte falso, ju mund ta tregoni ate per perdoruesit e tjere te " #~ "aMule." #~ msgid "Misc Options" #~ msgstr "Opsione te ndryshme" #~ msgid "Server Options" #~ msgstr "Opsionet e Serverit" #~ msgid "Display server motd when connected ..." #~ msgstr "Trego motd e serverit kur jeni te lidhur ..." #~ msgid "Disable/Enable" #~ msgstr "C'aktivizo/Aktivizo" #~ msgid "Authentication" #~ msgstr "Njohja" #~ msgid "General Settings" #~ msgstr "Rregullimet e pergjithshme" #~ msgid "Max Connections" #~ msgstr "Lidhje Maksimale" #~ msgid "GUI Tweaks" #~ msgstr "GUI Tweaks" #~ msgid "Remote Control" #~ msgstr "Kontrolli i Remote" #~ msgid "Unable to determine selected browser!" #~ msgstr "E pamundur te percaktoj shfletuesin e zgjedhur!" #~ msgid "User Defined" #~ msgstr "Te percaktuara nga perdoruesi" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - Gomari i Linux " #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "Zgjidhni shfletuesin tuaj ketu" #~ msgid "Custom Browser:" #~ msgstr "Shfletuesi(browser) i zakonshem" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "Futni emrin e shfletuesit(browser) tuaj ketu. Per te perdorur nje " #~ "shfletues tjeter zgjidh shfletues te zakonshemr nga tendina poshte." #~ msgid "Please wait... " #~ msgstr "Ju lutem prisni... " #~ msgid "Could not determine the command for running the browser." #~ msgstr "Nuk eshte e mundur qe te gjej komanden per te filluar shfletuesin." #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "Lidhja EC deshtoi. Pergjigje bosh." #~ msgid "ExternalConn: Access denied because: " #~ msgstr "Lidhje e jashtme: Hyrja nuk lejohet sepse: " #~ msgid "ExternalConn: Access denied" #~ msgstr "Lidhje e jashtme: Hyrja nuk lejohet" #~ msgid "The ed2k hash of the file." #~ msgstr "Hash-i ed2k i failit" #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Kopjo &linun ED2k ne shenime" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "Kopjo linkun ED2k ne shenime (&Burim)" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "Kopjo linkun ED2k ne shenime (Burim) (&Me opsionet e kriptimit)" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "Kopjo linkun ED2k ne shenime (&Hostname)" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "Kopjo linkun ED2k ne shenime (Hostname) (Me opsionet e &Kriptimit)" #~ msgid "Warning" #~ msgstr "Kujdes" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "Gabim: Nuk mund te degjoj porten TCP." #~ msgid "Webserver HTTP port" #~ msgstr "Porta HTTP e webserver-it" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "Perdor porten forwarding UPnp ne porten e webserver-it" #~ msgid "Full access password for webserver" #~ msgstr "Fjalekalim per hyrjen e plote ne webserver" #~ msgid "Guest password for webserver" #~ msgstr "Fjalekalimi guest per webserver" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "Ngarko/shpeto rregullimet e webserverit nga/tek remote i aMule" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "Futni ketu failin per te llogaritur linkun e Ed2k" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "" #~ "Futni ketu URL qe doni te shtoni ne linkun Ed2k: Shto / ne fund derisa " #~ "aLinkCreator ta shtoje ne fund te emrit te failit" #~ msgid "Ed2k File Hash" #~ msgstr "Hash Ed2k" #~ msgid "Ed2k link" #~ msgstr "Linku Ed2k" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "Hap nje fail per te llogaritur linkun ed2k" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "Kopjo linkun ed2k te llogaritur ne shenime" #~ msgid "Save computed ed2k link to file" #~ msgstr "Shpeto linkun ed2k te llogaritur ne fail" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "Perzgjidhni failin qe deshironi te llogarisni linkun ed2k" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "Perzgjidh failin tek linku juaj i llogaritur ed2k" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, krijuesu i linkut ed2k te aMules\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps nga http://www.everaldo.com dhe http://www.icomania.com\n" #~ "dhe http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "E shperndare nga GPL" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, krijuesi i linkeve ed2k te aMule" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "Kopjo linkun ED2k ne shenime" #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Kopjo linket ED2k ne shenime" #~ msgid "ED2K: Connecting" #~ msgstr "ED2K: Po lidhet" #~ msgid "ED2K: Disconnected" #~ msgstr "ED2K: E shkeputur" #~ msgid "ed2k network" #~ msgstr "Rrjeti ed2k" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "Lista juaj e azhornimit automatik te serverave eshte boshe.\n" #~ " Azhornimi automatik ne cdo hyrje do te c'aktivizohet." #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "Qe te dy rrjetet ED2K dhe Kad jane te c'aktivizuara.\n" #~ "Nuk mund te lidheni derisa te aktivizoni te pakten njeren." #~ msgid "Edit Serverlist" #~ msgstr "Editoni listen e serverave" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "Gabim: Nuk mund te pranoj nje lidhje te jashtme" #~ msgid "ED2K is disabled in preferences." #~ msgstr "ED2K eshte c'aktivizuar tek preferencat." #~ msgid "ExternalConn: shutdown requested" #~ msgstr "Lidhje e jashtme: Kerkohet dalja" #~ msgid "Already connected to ED2K." #~ msgstr "Jam i lidhur ne ED2K." #~ msgid "Connecting to ED2K..." #~ msgstr "Duke u lidhur me ED2K..." #~ msgid "Disconnected from ED2K." #~ msgstr "I shkeputur nga ED2K." #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "Lidhje e jashtme: U mor OpCode e pavlere: %#x" #~ msgid "ED2K Status:" #~ msgstr "Statusi ED2K:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "Mesatarja e shpejtesise se shkarkimit(Sesion): %s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "Mesatarja e shpejtesise se Ngarkimit (Sesion): %s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "Shpejtesia maksimale e shkarkimit (Sesion):%s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "Shpejtesia maksimale e ngarkimit (Sesion): %s" #~ msgid "Average filesize: %s" #~ msgstr "Madhesia mesatare e faileve: %s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "Kerkimi ED2K nuk mund te behet nqs ED2K nuk eshte lidhur" #~ msgid "Error: " #~ msgstr "Gabim: " #~ msgid "Warning: " #~ msgstr "Kujdes: " #~ msgid "Search related files (ED2k, local server)" #~ msgstr "Kerko faile te ngjashem (ED2K, server lokal)" #~ msgid "Error" #~ msgstr "Gabim" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "" #~ "KUJDES: NUk mund te shtohesh si nje burim per linkun ed2k derisa te keni " #~ "id te ulet." #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "Ju lutem zgjidhni video playerin tuaj tek preferencat.\n" #~ "Nderkohe, aMule do te perdori mplayer dhe ju do te merrni kete lajmerim " #~ "ne cdo parashikim" #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "Gabim: Deshtoi te hapi failin part.met: %s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "Gabim:faili part.met eshte me permasa 0: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "Gabim:versioni i failit part.met eshte i pavlere: %s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "Kujdes: %s mund te jete e prishur (%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "" #~ "U verifikua nje gabim i papritur kur po perfundohej faili %s. Faili eshte " #~ "ne pushim" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "" #~ "Kujdes: E pamundur te bej hash-in e pjeseve te shkarkuara - hashset jo i " #~ "kompletuar per '%s'" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "Gabim: E pamundur te bej hash-in e pjeses se shkarkuar - hashset jo i " #~ "kompletuar (%s). Kjo nuk duhet te ndodhi kurre" #~ msgid "Insufficient Diskspace" #~ msgstr "Nuk ka hapesire te mjaftueshme ne Disk" #~ msgid "ERROR! Attempted to share %s" #~ msgstr "GABIM! Tentative per te ndare %s" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "" #~ "Rjeti ED2K eshte c'aktivizuar tek Preferencat, nuk jam duke u lidhur." #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "Ne listen e serverave nuk u gjend asnje server i vlefshem" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "Gabim: Socket i pavlere ne kontrollin timeout" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions." #~ msgstr "" #~ "Gabim: Deshtoi te ngarkoje failin backup. Kerko http://forum.amule.org " #~ "per rekuperimin e faileve part.met." #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "Nuk mund te kembeje linkun magnet ne ed2k: %s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "Link ed2k i pavlere! Gabim: %s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "Kufijte e rrjetit: Up: %u kB/s, Down: %u kB/s.\n" #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "Fikja e remote core (amule/amuled). \n" #~ "Kjo gjithashtu do te fike dhe klientin tekstual, qe nuk eshte i " #~ "perdorueshem\n" #~ "pa nje core qe punon.\n" #~ msgid "Connect to ED2K only." #~ msgstr "Lidhu vetem tek ED2K." #~ msgid "Disconnect from ED2K only." #~ msgstr "Shkeputu vetem nga ED2K." #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "Linku ed2k qe do te stohet mund te jete:\n" #~ "*) nje link faili (ed2k://|file|...), qe do te shtohet tek radha e " #~ "shkarkimeve,\n" #~ "*) nje link serveri (ed2k://|server|...) qe do te shtohet tek lista e " #~ "serverave,\n" #~ "*) ise nje link i listes se serverave qe ne cdo rast te gjithe serverat " #~ "ne liste do te shtohen tek\n" #~ " lista e serverave.\n" #~ "\n" #~ "Linku Magnet mund te mbaje hashin e ed2k dhe gjatesine e failit.\n" #~ msgid "Deprecated command, now '%s'." #~ msgstr "Komanda e pavlere, tani '%s'." #~ msgid "Error: %s (%s) - %s" #~ msgstr "Gabim: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "Kujdes: %s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "Gabim: Nuk ka me hapesire ne disk" #~ msgid "Error: Partmet not found" #~ msgstr "Gabim: Partmet nuk u gjend" #~ msgid "Error: IO error!" #~ msgstr "Gabim: Gabim IO!" #~ msgid "Error: Failed!" #~ msgstr "Gabim: Deshtoi!" #~ msgid "ED2K Link: " #~ msgstr "Linku ED2K: " #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "" #~ "Kliko ketu per te shtuar linkun ed2k ne kutine e tekstit ne radhen tuaj " #~ "te shkrakimeve." #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "" #~ "Kerko per me shume rezultate ne ED2K. Nuk mund te perkrahet nga Kad akoma." #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "Kufijte e transmetimit" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "Kjo eshte porta standarte e ED2K dhe nuk mund te c'aktivizohet." #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "" #~ "Kjo porta UDP perdoret per kerkesat e zgjeruara te Ed2K dhe rrjetit Kad" #~ msgid "Hard Limit" #~ msgstr "Kufiri Maksimal" #~ msgid "Connection Limits" #~ msgstr "Kufijte e lidhjes" #~ msgid "Auto-update serverlist at startup" #~ msgstr "Azhornim-Automatik te listes se serverave sapo te filloje programi" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "Azhorno listen e serverave kur lidhesh tek nje server" #~ msgid "Update serverlist when a client connect" #~ msgstr "Azhorno listen e serverave kur nje klient lidhet" #~ msgid "Disk Space" #~ msgstr "Hapesira e Diskut" #~ msgid "Check Disk Space" #~ msgstr "Kontrollo Hapesiren e Diskut" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "" #~ "Zgjidh kete nqs deshironi qe aMule te kontrolloje Hapesiren e Diskut tuaj" #~ msgid "Min Disk Space:" #~ msgstr "Hapesira Minimale e Diskut:" #~ msgid "Incoming Directory :" #~ msgstr "Kartelat e Hyrjeve :" #~ msgid "Temporary Directory :" #~ msgstr "Kartelat e Perkohshme :" #~ msgid "Shared Directories" #~ msgstr "Kartelat e ndara" #~ msgid "Create Backup to preview" #~ msgstr "Krijo Backup per parashikim" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "Trego menaxhimin e shpejte te linkeve te ED2K" #~ msgid "Webserver Parameters" #~ msgstr "Parametrat e Webserverit" #~ msgid "Webserver port" #~ msgstr "Porta e Webserverit" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "Aktvizo port forwarding UPnP ne porten e Webserverit" #~ msgid "Webserver UPnP TCP port" #~ msgstr "Porta TCP e webserverit UPnP" #~ msgid "Serverlist" #~ msgstr "Lista e Serverave" #~ msgid "Manual Server Add : Name" #~ msgstr "Shtimi manual i Serverit : Emri" #~ msgid "Speed Limits:" #~ msgstr "Kufijte e shpejtesise:" #~ msgid "Download Speed: %.1f" #~ msgstr "Shpejtesia e Shkarkimit: %.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "Shpejtesia e Ngarkimit: %.1f" #~ msgid "TCP Port: %d" #~ msgstr "Porta TCP: %d" #~ msgid "TCP Port: Not Ready" #~ msgstr "Porta TCP: Nuk eshte gati" #~ msgid "UDP Port: %d" #~ msgstr "Porta UDP: %d" #~ msgid "UDP Port: Not Ready" #~ msgstr "Porta UDO: Nuk eshte gati" #~ msgid "Shared Files: %d" #~ msgstr "Faile te ndara: %d" #~ msgid "Queued Clients: %d" #~ msgstr "Kliente ne radhe: %d" #~ msgid "Upload Limit" #~ msgstr "Kufiri i ngarkimit" #~ msgid "Download Limit" #~ msgstr "Kufiri i shkarkimit" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "Nuk u gjet asnje adrese e listes se serverave ne 'adreses.dat'. Ju lutem " #~ "ngjitni nje adrese te sakte te listes se serverave ne kete file qe te " #~ "mund te auto-azhornoni listen e serverave tuaj" #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "" #~ "Kujdes, URL e specifikuar per auto-azhornimin e serverave eshte e " #~ "pavlere: %s" #~ msgid "webserver running on pid %d" #~ msgstr "Serveri i rrjetit eshte aktiv ne pid %d" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "Ju kerkuat qe te lejoni serverin e rrjetin nga hyrja, por binari i " #~ "rrjetit te amule-s nuk mund te filloje. Ju lutem instaloni kutine qe " #~ "permban rrjetin e serverit te aMule-s ose plotesoni aMule-n duke perdorur " #~ "--enable-webserver dhe filloni make install" #~ msgid "Disconnected from ED2K" #~ msgstr "I shkeputur nga ED2K" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "" #~ "Deshtoi te hapi failin e listes se shokeve 'emfriends.met' per ta lexuar!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "Deshtoi te hapi listen e shokeve 'emfriends.met' per ta shkruar!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "GABIM: Deshtoi te hapi partfile)" #~ msgid "Mb" #~ msgstr "Mb" #~ msgid "Can't create web socket thread\n" #~ msgstr "E pamundur te krijoj web socket thread\n" #~ msgid "Web Server: Started\n" #~ msgstr "Web Server: Filloi\n" #~ msgid "Not Supported" #~ msgstr "NUk eshte e perkrahur" amule_2.3.1+git20151120.0023527bc2.orig/po/sv.po0000644000175000017500000050412412611472361017117 0ustar morphmorph# Swedish tranlation for aMule # This file is distributed under the same license as the amule package. # Daniel Nylander , 2007. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2007-03-12 22:49+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Lägg till en vän" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Du måste ange en giltig IP-adress och port!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Information" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Angiven userhash är inte giltig!" #: src/amuleAppCommon.cpp:128 #, fuzzy msgid "Failed to open ED2KLinks file." msgstr "Kunde inte öppna skalfil: %s" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" #: src/amule.cpp:229 #, fuzzy msgid "Now, exiting main app..." msgstr "" "\n" "Ok, avslutar %s...\n" #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "" #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Misslyckades" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "" #: src/amule.cpp:330 #, fuzzy msgid "aMule shutdown completed." msgstr "aMule är inte ansluten!" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "" #: src/amule.cpp:433 #, fuzzy msgid "" "\n" "EC configuration" msgstr "Bekräfta avslutning" #: src/amule.cpp:436 #, fuzzy msgid "Password set and external connections enabled." msgstr "Acceptera externa anslutningar" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "VARNING" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Din lokal har ändrats till systemets standardlokal på grund av en " "konfigurationsändring. Ursäkta." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Info" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Du har inga servrar i serverlistan.\n" "Vill du att aMule ska hämta en ny lista nu?" #: src/amule.cpp:581 #, fuzzy msgid "Server list download" msgstr "Serverlista" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Port %u är inte tillgänglig. Du kommer att bli LOWID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Misslyckades med att skapa OnlineSig File" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Misslyckades med att skapa aMule OnlineSig File" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Det här är första gången som du kör aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Den här versionen är en testversion, uppdaterad dagligen, och\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "vi ger ingen garanti, den kommer inte att förstöra någonting, bränna,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "när ditt hus eller döda din hund. Men den *bör* vara användbar ändå.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "Mer information, support och nya utgåvor kan hittas på vår,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "webbplats, www.aMule.org, eller i vår IRC-kanal #aMule på irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Rapportera gärna eventuella fel på http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "FEL: kan inte öppna loggfilen" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "VARNING: loggfilen är tom. Någonting är fel." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Loggen har nollställts" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Servermeddelande: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Misslyckades med att hämta nodlistan." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Misslyckades med att öppna den hämtade versionskontrollfilen" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Skadad versionskontrollfil" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Du använder en utdaterad version av aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "" "Din version av aMule är %i.%i.%i och den senaste versionen är %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Den senaste versionen kan alltid hittas på http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "VARNING: Din version av aMuled är utdaterad: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Din kopia av aMule är uppdaterad." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Misslyckades med att hämta versionskontrollfilen" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "med LowID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "med HighID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Ansluten till %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Ansluter till %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad startad." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad stoppad." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Ansluten till Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Ansluten till Kad (brandvägg)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Frånkopplad från Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "" #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "FEL: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Det här är aMule %s baserad på eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Kör på %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Besök http://www.amule.org för att se om en ny version finns tillgänglig." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Meddelande" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Ansluter" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "" #: src/amuleDlg.cpp:715 #, fuzzy msgid "Kad: Firewalled" msgstr "brandvägg" #: src/amuleDlg.cpp:719 #, fuzzy msgid "Kad: Connected" msgstr "Ansluten" #: src/amuleDlg.cpp:724 #, fuzzy msgid "Kad: Connecting" msgstr "Ansluter" #: src/amuleDlg.cpp:728 #, fuzzy msgid "Kad: Off" msgstr " Kad: " #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Avbryt" #: src/amuleDlg.cpp:775 #, fuzzy msgid "Stop the current connection attempts" msgstr "Stoppar de aktuella anslutningsförsöken" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Koppla från" #: src/amuleDlg.cpp:781 #, fuzzy msgid "Disconnect from the currently connected networks" msgstr "Koppla från nätverket." #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Anslut" #: src/amuleDlg.cpp:787 #, fuzzy msgid "Connect to the currently enabled networks" msgstr "Anslut till nätverket." #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Upp: %.1f(%.1f) | Ner: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Upp: %.1f | Ner: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Ansluten)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Frånkopplad)" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "Vill du verkligen avsluta aMule?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Bekräfta avslutning" #: src/amuleDlg.cpp:1174 #, fuzzy msgid "Launch Command: " msgstr "Kommando: %s" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Nätverk" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Sökningar" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Hämtningar" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "Hämtar" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Meddelanden" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Statistik" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Inställningar" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Importera" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Om" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Om/Hjälp" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "" #: src/amule-remote-gui.cpp:300 #, fuzzy msgid "Connecting..." msgstr "Ansluter" #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Anslutningen misslyckades " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Alla" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Okänd" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Fake eMule version %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Fake eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Fake eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (baserad på eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Smeknamn: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" msgstr[1] "" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" msgstr[1] "" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Meddelande filtrerat från \"%s\" (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Nytt meddelande från \"%s\" (IP:%s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "" #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Kategori" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Ny kategori" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Välj en mapp för inkommande filer" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Du måste ange ett namn för kategorin!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Du måste ange en sökväg för kategorin!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Ansluten till klient ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Ansluter till klient ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Stäng flik" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Stäng alla flikar" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Stäng andra flikar" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Lägg till i vänner" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] "" msgstr[1] "" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "" #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Klientdetaljer" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Ansluten" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Frånkopplad" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Inte färdig" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Verifierad - OK" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Inte tillgänglig" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "" #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Filkommentarer" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Användarnamn" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Filnamn" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Rankning" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Kommentar" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Inga kommentarer" #: src/CommentDialogLst.cpp:105 #, fuzzy, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%s kommentar(er)" msgstr[1] "%s kommentar(er)" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Auto [Lå]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Auto [No]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Auto [Hö]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Mycket låg" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Låg" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normal" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Hög" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Mycket hög" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Utgåva" #: src/DataToText.cpp:62 msgid "Asking" msgstr "" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Ansluter via server" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Hämtar" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "För många anslutningar" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Ansluter via Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "För många Kad-anslutningar" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Bannlyst" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Anslutningsfel" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Gammal MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Ny MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule-kompatibel" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Lokal server" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Fjärrserver" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Passiv" #: src/DataToText.cpp:133 msgid "Link" msgstr "Länk" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Färdig" #: src/DataToText.cpp:146 msgid "In progress" msgstr "Pågår" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Storlek" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Överfört" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Hastighet" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Förlopp" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Källor" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Prioritet" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Status" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "" #: src/DownloadListCtrl.cpp:411 #, fuzzy msgid "Are you sure that you wish to delete the selected file?" msgstr "Är du säker på att du vill ta bort alla servrar?" #: src/DownloadListCtrl.cpp:413 #, fuzzy msgid "Are you sure that you wish to delete the selected files?" msgstr "Är du säker på att du vill ta bort alla servrar?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Auto" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Stoppa" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Pausa" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Fortsätt" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Förhandsgranska" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Visa fil&detaljer" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Visa alla kommentarer" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "&Öppna filen" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Ange nytt namn för den här filen:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H.%M.%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Hämtningar (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "" #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "" msgstr[1] "" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Hämtar %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Du har redan filen \"%s\"" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "" #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "" #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Okänd version" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "" #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "" #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "" #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "" #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "" #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "" #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "" #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "" #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "" #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "" #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "" #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Filen hittades inte." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Ogiltigt filnamn." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Kunde inte byta namn på fil." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "" #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "" #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Redan ansluten till Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Ansluter till Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Alla nätverk är inaktiverade." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "" #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Tillgängliga kommandon:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Avslutar programmet." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Visa hjälp." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Använd \"%s\" för kommandolista\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Syntaxfel!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "" #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Ogiltigt argument." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "" #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Skriv \"%s\" för att få mer hjälp.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Det här är %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Det här är %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Skapar klient...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Ok, avslutar %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Visa den här hjälptexten." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Läs in konfiguration från fil." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Ställer in programlokalen (språk)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Skriv ut programversion." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Fildetaljer" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% färdig" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Vänner" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Visa &detaljer" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Lägg till en vän" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Ta bort vän" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Skicka &meddelande" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Visa filer" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "" #: src/FriendListCtrl.cpp:169 #, fuzzy msgid "Are you sure that you wish to delete the selected friend?" msgstr "Är du säker på att du vill ta bort alla servrar?" #: src/FriendListCtrl.cpp:171 #, fuzzy msgid "Are you sure that you wish to delete the selected friends?" msgstr "Är du säker på att du vill ta bort alla servrar?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Skicka meddelande till användare" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Meddelande att skicka:" #: src/GenericClientListCtrl.cpp:587 #, fuzzy msgid "Remove from friends" msgstr "Ta bort vän" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Skicka meddelande" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Växla till den här filen" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Väntande sändningar: %s" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Sändningar" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "Ingen" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Nej" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Ja" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Hämtar..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "Hämta: %s" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "Återanslut till server" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "Misslyckades med att hämta nodlistan." #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Misslyckades med att öppna \"%s\"" #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "" #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "" msgstr[1] "" #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Noder (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Fortsätt?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "" msgstr[1] "" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "" msgstr[1] "" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Filnamn" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Okänd version" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Färdig" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Pausad" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Väntar" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Lyckades! Anslutning etablerad till aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Lyckades! Anslutning etablerad." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "" #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "Anslutningen misslyckades " #: src/LibSocketAsio.cpp:1260 #, c-format msgid "Asio thread %d started" msgstr "" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Stäng" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Klipp ut" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Kopiera" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Klistra in" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Töm" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Markera alla" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Obegränsad" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Klientinformation" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Smeknamn: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Inte ansluten" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Servernamn: " #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "ServerIP: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Inte ansluten" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Upptid: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Dölj aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Visa aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Avsluta" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Verkställ" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Läser in ..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "" #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Användare: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Upp: 0.0 | Ner: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Inte ansluten ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "" #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Sök" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Namn:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Typ" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Lokal" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Global" #: src/muuli_wdr.cpp:199 #, fuzzy msgid "FileHash" msgstr "Filer" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Filtyp" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Arkiv" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Ljud" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Bilder" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Program" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Texter" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Videoklipp" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Filändelse" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Min storlek" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "Byte" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Max storlek" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Tillgänglighet" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Filter:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Filtrera resultat" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Invertera resultat" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Dölj kända filer" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "" #: src/muuli_wdr.cpp:356 #, fuzzy msgid "More" msgstr "Koreanska" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Stoppa" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Hämta" #: src/muuli_wdr.cpp:378 #, fuzzy msgid "Reset Fields" msgstr "Ta bort vän" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Resultat" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Ta bort källor?" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Allmänt" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "-" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Hash :" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Filstorlek :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Överför" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Tillgänglig :" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Datahastighet :" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Överförd :" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Filnamn" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Verkställ" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Ok" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Dålig" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Bra" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Normal" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Utmärkt" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Uppdatera" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Hämtar, vänta ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Okänd storlek" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP-adress :" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port :" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Användarnamn :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Lägg till" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Aktuell" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Anslutningar" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktiva hämtningar" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktiva anslutningar (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Användarnamn:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Klientprogramvara:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Klientversion:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP-adress:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Skickat (session):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Hämtat (session):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Skickat (totalt):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Hämtat (totalt):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "" #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "" #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Bläddra" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Videouppspelare" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Ta bort död server efter" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "försök" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Sändningar" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Dela ut dolda filer" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Diagram" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Bakgrund" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Välj" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! VARNING !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Flat" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Rund" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Acceptera externa anslutningar" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Lösenord" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "" #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Titel :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Kommentar :" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "Ändra inte" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Nollställ" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "" #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "" #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule-logg" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Serverinformation" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2K-info" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad-info" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "" #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Noder (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Ny nod" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Port:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Koppla från Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Alla" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP-filtrering" #: src/muuli_wdr.cpp:2847 #, fuzzy msgid "Filter clients" msgstr "Fildetaljer" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2852 #, fuzzy msgid "Filter servers" msgstr "Filtreringsnivå:" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Läs om lista" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Uppdatera nu" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Filtreringsnivå:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Filtrera alla meddelanden" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Kommentarer" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Aktivera autentisering" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Lösenord:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Aktivera proxy" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Proxytyp:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Proxyserver:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Proxyserverns värdnamn" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Proxyport:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Proxyporten" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Anslut till:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Användarnamn" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "&Öppna filen" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Väntar..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Aktiva sändningar: %s" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Utdelade filer" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Välj vy" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Aktiva sändningar: %s" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Visa klienter" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Läs om lista" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Skicka" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Anslut till någon server och/eller Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Utdelade filer" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Inaktiverad [%s]" #: src/OtherFunctions.cpp:111 #, fuzzy msgid "byte" msgid_plural "bytes" msgstr[0] "byte" msgstr[1] "byte" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 #, fuzzy msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "byte/s" msgstr[1] "byte/s" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "sekunder" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "minuter" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "timmar" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Dagar" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Stoppad" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Video" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Arkiv" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Text" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Aktiv" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "" #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Importerar %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Tillstånd" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Disk: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Ta bort källor?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "Misslyckades med att skapa OnlineSig File" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "" #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "" #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Misslyckades med att öppna %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "" #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1050 #, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" msgstr[1] "" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Tar bort fil: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "" #: src/Preferences.cpp:632 msgid "System default" msgstr "Systemets standard" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arabiska" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "Estniska" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Basiska" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgariska" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Katalanska" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Kinesiska (Förenklad)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Kinesiska (Traditionell)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Kroatiska" #: src/Preferences.cpp:642 msgid "Czech" msgstr "" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Danska" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Nederländska" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Engelska (Storbritannien)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estniska" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Finska" #: src/Preferences.cpp:648 msgid "French" msgstr "Franska" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galiciska" #: src/Preferences.cpp:650 msgid "German" msgstr "Tyska" #: src/Preferences.cpp:651 msgid "Greek" msgstr "" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Ungerska" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Italienska" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Italienska (Schweiz)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Koreanska" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Polska" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portugisiska" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portugisiska (Brasilien)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Kroatiska" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Ryska" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Slovenska" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Spanska" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Språk" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Inte tillgänglig" #: src/Preferences.cpp:906 msgid "no options available" msgstr "" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Anslutning" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Kataloger" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Servrar" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Filer" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Säkerhet" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Proxy" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Händelser" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Felsökning" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule måste startas om för att aktivera dessa ändringar:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP-port ändrad.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP-port ändrad.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "- UDP-port ändrad.\n" #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Anslutningen misslyckades " #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Anslutningen misslyckades " #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "- UDP-port ändrad.\n" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Språk ändrat.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:657 #, fuzzy msgid "- ED2K network enabled.\n" msgstr "Alla nätverk är inaktiverade." #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Temporära filer" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Inkommande filer" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Välj en mapp för %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Välj webbläsare" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "" msgstr[1] "" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "" #: src/PrefsUnifiedDlg.cpp:1204 #, fuzzy msgid "disabled" msgstr "inaktivera" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "" #: src/PrefsUnifiedDlg.cpp:1238 #, fuzzy msgid "Core command:" msgstr "Tillgängliga kommandon:\n" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Fil" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Ange nytt namn för den här filen:" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "Avbryt" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Misslyckades med att ansluta till alla listade servrar. Gör ett nytt försök." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "Ansluten till %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "Anslutning etablerad: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Förlorade anslutningen till %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) verkar vara död." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) verkar vara full." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "" msgstr[1] "" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Anslutningen förlorades" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "" #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "" #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" #: src/ServerList.cpp:174 #, fuzzy, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "Inga giltiga servrar att ansluta till hittades i serverlista" msgstr[1] "Inga giltiga servrar att ansluta till hittades i serverlista" #: src/ServerList.cpp:176 #, fuzzy, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "Servernamn" msgstr[1] "Servernamn" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "" #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "" #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "" #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Misslyckades med att öppna \"%s\"" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Ogiltig URL" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "Misslyckades med att hämta nodlistan." #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Servernamn" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Adress" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Beskrivning" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Användare" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Statisk" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Version" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Okänt namn)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Servrar (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Server" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Anslut till server" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "" #: src/ServerListCtrl.cpp:418 #, fuzzy msgid "Remove server" msgstr "Ta bort servrar" #: src/ServerListCtrl.cpp:420 #, fuzzy msgid "Remove servers" msgstr "Ta bort servrar" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Ta bort alla servrar" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Återanslut till server" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Är du säker på att du vill ta bort alla servrar?" #: src/ServerListCtrl.cpp:542 #, fuzzy msgid "Are you sure that you wish to delete the selected server?" msgstr "Är du säker på att du vill ta bort alla servrar?" #: src/ServerListCtrl.cpp:544 #, fuzzy msgid "Are you sure that you wish to delete the selected servers?" msgstr "Är du säker på att du vill ta bort alla servrar?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "" "\tMest sannolikt att det på grund av du är bakom en brandvägg eller router." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tFör mer information, referera till http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "" #: src/ServerSocket.cpp:532 #, fuzzy, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Ta bort död server efter" msgstr[1] "Ta bort död server efter" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "" #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "" #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "" #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "" #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kademlia-status:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "Kör på %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Kör" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Status:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Anslutningstillstånd:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:216 #, fuzzy msgid "UDP Connection State:" msgstr "Anslutningstillstånd:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "" #: src/ServerWnd.cpp:237 #, fuzzy msgid "Connecting to buddy" msgstr "Ansluter till %s" #: src/ServerWnd.cpp:240 #, fuzzy, c-format msgid "Connected to buddy at %s" msgstr "Ansluten till %s %s" #: src/ServerWnd.cpp:250 #, fuzzy msgid "Indexed sources:" msgstr "Ta bort källor?" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Kör inte" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "" msgstr[1] "" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "" msgstr[1] "" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Användarnamn" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Hämtningshastighet: %.1f" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Sändningshastighet: %.1f" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Tillgänglig :" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Sändningsstatus" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Hämtningsstatus" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Filnamn" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Utdelade filer" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Utdelningsratio" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Byt namn" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Kopiera ED2k-länk till urklipp" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Utdelade filer (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Filnamn" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Aktiva sändningar: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Väntande sändningar: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Klienter" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "Okänd storlek" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "Filtrered" #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "Bannlyst" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Fungerande servrar: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Totalt: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Borttagna servrar: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Filtrerade servrar: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Totalt antal filer: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Operativsystem" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktiva anslutningar (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Inte tillgänglig" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Aldrig" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "" #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "" #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Skriv \"%s\" för att få mer hjälp.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Hämtningar (%i)" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "" #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "" #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "AV" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "PÅ" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Ansluten till %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Ansluter nu" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "brandvägg" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Hämta:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Skicka:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Klienter i kö:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "" #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "" #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "" #: src/TextClient.cpp:862 #, fuzzy msgid "Reload shared files list." msgstr "Vem kan se utdelade filer:" #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "" #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "" #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "" #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Anslut till nätverket." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Anslut endast till Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Koppla från nätverket." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Koppla endast från Kad." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "" #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "" #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "" #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "" #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "" #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "" #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "" #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "" #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "" #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "" #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "" #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "" #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "" #: src/TextClient.cpp:900 src/TextClient.cpp:902 msgid "The given value must be in kilobytes/sec.\n" msgstr "" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "" #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "" #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "" #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "" #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "" #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "" #: src/TextClient.cpp:911 #, fuzzy msgid "Get IP filtering level." msgstr "Filtreringsnivå:" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "" #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "" #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "" #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "Visa förloppsmätare" #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "Visa förloppsmätare" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Pausa hämtning." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Fortsätt hämtning." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Avbryt hämtning." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Ställ in hämtningsprioritet." #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "" #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "" #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "" #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "" #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Visa köer/listor." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Visa sändningskö." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Visa hämtningskö." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Visa logg." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Visa serverlista." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Nollställ logg." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" #: src/TextClient.h:59 msgid "aMule text client" msgstr "" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "" #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "" #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "För många anslutningar" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Lägg till kategori" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Redigera kategori" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Ta bor kategori" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "" #: src/UserEvents.h:60 msgid "Download completed" msgstr "" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "" #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "" #: src/UserEvents.h:85 msgid "Message sender." msgstr "" #: src/UserEvents.h:88 msgid "Out of space" msgstr "" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Välkommen!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Ta bort" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Spara" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Kopiera till urklipp" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Om aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Kunde inte öppna" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Hashar..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 #, fuzzy msgid "Cancelled !" msgstr "Avbruten!" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Klar om %.2f s" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Kunde inte öppna %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "System" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Om wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Oh Oh, aMule kör inte..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule kör" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule kör men är frånkopplad" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule ansluter..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Oh oh, status för aMule är okänd..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " har kört i " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " är stoppad !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " är inte ansluten!" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " ansluter..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " gör någonting konstigt, kontrollera det!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " är ansluten till " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "av" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " är på " #: src/utils/wxCas/src/wxcasframe.cpp:1066 #, fuzzy msgid " with " msgstr "] med " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1110 #, fuzzy msgid " kB/s" msgstr "kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "" #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Användare" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Validera" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "" #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP-port" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Använd gzip-komprimering" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "" #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Kontrollerar lösenord\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "" #, fuzzy #~ msgid "Download status" #~ msgstr "Hämtningsstatus" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Transferring" #~ msgstr "Överför" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "VARNING: Misslyckades med att ta bort %s" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Hämtar" #~ msgid "Transfers" #~ msgstr "Överföringar" #~ msgid "Unban" #~ msgstr "Avbannlys" #~ msgid "Show Uploads" #~ msgstr "Visa sändningar" #~ msgid "Show Queue" #~ msgstr "Visa kö" #~ msgid "Client Software" #~ msgstr "Klientprogramvara" #~ msgid "Waited" #~ msgstr "Väntande" #~ msgid "Upload Time" #~ msgstr "Sändningstid" #~ msgid "Upload/Download" #~ msgstr "Skicka/Hämta" #~ msgid "Remote Status" #~ msgstr "Fjärrstatus" #~ msgid "File Priority" #~ msgstr "Filprioritet" #~ msgid "Score" #~ msgstr "Betyg" #~ msgid "Last Seen" #~ msgstr "Senast sedd" #~ msgid "Current Session" #~ msgstr "Aktuell session" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Totalt antal användare: %s | Totalt antal filer: %s" #, fuzzy #~ msgid "Killed!" #~ msgstr "Misslyckades" #, fuzzy #~ msgid "Shutting down aMule..." #~ msgstr "Stäng av aMule." #~ msgid "Fetching status..." #~ msgstr "Hämtar status..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Användare: E: %s K: %s | Filer E: %s K: %s" #~ msgid "Message Filter" #~ msgstr "Meddelandefilter" #, fuzzy #~ msgid "Bind Address" #~ msgstr "Adress" #, fuzzy #~ msgid "Enable UPnP" #~ msgstr "Aktivera proxy" #, fuzzy #~ msgid "UPnP TCP Port:" #~ msgstr "TCP-port: %d" #~ msgid "Show percentage" #~ msgstr "Visa procentandel" #~ msgid "TCP port" #~ msgstr "TCP-port" #~ msgid "Column Sorting" #~ msgstr "Kolumnsortering" #~ msgid "File Options" #~ msgstr "Filalternativ" #~ msgid "Status text" #~ msgstr "Statustext" #~ msgid "Disable/Enable" #~ msgstr "Inaktivera/Aktivera" #~ msgid "Authentication" #~ msgstr "Autentisering" #~ msgid "Max Connections" #~ msgstr "Max anslutningar" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Please wait... " #~ msgstr "Vänta..." #~ msgid "Could not determine the command for running the browser." #~ msgstr "Kunde inte fastställa kommandot för att köra webbläsaren." #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "Kopiera ED2k-&länk till urklipp" #~ msgid "Warning" #~ msgstr "Varning" #~ msgid "Guest password for webserver" #~ msgstr "Gästlösenord för webbserver" #, fuzzy #~ msgid "Copy ED2k links to clipboard" #~ msgstr "Kopiera ED2k-länk till urklipp" #, fuzzy #~ msgid "ED2K: Connecting" #~ msgstr "Ansluter" #, fuzzy #~ msgid "ED2K: Disconnected" #~ msgstr "Frånkopplad" #~ msgid "Edit Serverlist" #~ msgstr "Redigera serverlista" #~ msgid "Already connected to ED2K." #~ msgstr "Redan ansluten till ED2K." #~ msgid "Connecting to ED2K..." #~ msgstr "Ansluter till ED2K..." #~ msgid "ED2K Status:" #~ msgstr "ED2K-status:" #~ msgid "Error: " #~ msgstr "Fel: " #~ msgid "Warning: " #~ msgstr "Varning: " #~ msgid "Error" #~ msgstr "Fel" #~ msgid "Insufficient Diskspace" #~ msgstr "Otillräckligt diskutrymme" #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "Inga giltiga servrar att ansluta till hittades i serverlista" #~ msgid "Connect to ED2K only." #~ msgstr "Anslut endast till ED2K." #~ msgid "Disconnect from ED2K only." #~ msgstr "Koppla endast från ED2K." #~ msgid "Error: %s (%s) - %s" #~ msgstr "Fel: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "Varning: %s (%s) - %s" #, fuzzy #~ msgid "ED2K Link: " #~ msgstr "ED2K-info" #~ msgid "0" #~ msgstr "0" #~ msgid "Incoming Directory :" #~ msgstr "Katalog för inkommande :" #~ msgid "Temporary Directory :" #~ msgstr "Temporär katalog :" #~ msgid "Shared Directories" #~ msgstr "Utdelade kataloger" #~ msgid "Serverlist" #~ msgstr "Serverlista" #~ msgid "Manual Server Add : Name" #~ msgstr "Lägg till server manuellt : Namn" #~ msgid "TCP Port: %d" #~ msgstr "TCP-port: %d" #~ msgid "UDP Port: %d" #~ msgstr "UDP-port: %d" #~ msgid "Shared Files: %d" #~ msgstr "Utdelade filer: %d" #~ msgid "webserver running on pid %d" #~ msgstr "webbserver kör på pid %d" #~ msgid "Disconnected from ED2K" #~ msgstr "Frånkopplad från ED2K" #~ msgid "Mb" #~ msgstr "Mb" #~ msgid "Web Server: Started\n" #~ msgstr "Webbserver: Startad\n" #~ msgid "Not Supported" #~ msgstr "Stöds inte" #~ msgid "Notifications" #~ msgstr "Notifieringar" #~ msgid "Use sound" #~ msgstr "Använd ljud" #~ msgid "Starts a new chat session" #~ msgstr "Startar en ny chattsession" #~ msgid "Email Address :" #~ msgstr "E-postadress :" #~ msgid ":" #~ msgstr ":" #~ msgid "Never show this again" #~ msgstr "Visa aldrig det här igen" #~ msgid "Enable/Disable" #~ msgstr "Aktivera/Inaktivera" #~ msgid "Disconnect from " #~ msgstr "Koppla från " #~ msgid "current server" #~ msgstr "aktuell server" #~ msgid " and " #~ msgstr " och " #~ msgid " [" #~ msgstr " [" #~ msgid " | Kad: " #~ msgstr " | Kad: " #~ msgid "doesn't work" #~ msgstr "fungerar inte" #~ msgid "WARNING: You have recieved Low-ID!" #~ msgstr "VARNING: Du har tagit emot Low-ID!" #~ msgid "%d" #~ msgstr "%d" #~ msgid " %d" #~ msgstr " %d" #~ msgid ".%d" #~ msgstr ".%d" #~ msgid "(Min 60 / 3600 Max)" #~ msgstr "(Min 60 / 3600 Max)" #~ msgid "English (U.S.)" #~ msgstr "Engelska (U.S.A)" #~ msgid "Spanish (Mexican)" #~ msgstr "Spanska (Mexiko)" #~ msgid "Set riority to low." #~ msgstr "Ställ in prioritet till låg." #~ msgid "Set riority to normal." #~ msgstr "Ställ in prioritet till normal." #~ msgid "Set riority to high." #~ msgstr "Ställ in prioritet till hög." #~ msgid "Set riority to auto." #~ msgstr "Ställ in prioritet till auto." #~ msgid "Sources: %u" #~ msgstr "Källor: %u" #~ msgid "Client: aMule %s" #~ msgstr "Klient: aMule %s" #~ msgid "File Name: %s" #~ msgstr "Filnamn: %s" #~ msgid "File size: %s" #~ msgstr "Filstorlek: %s" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " Website: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contact: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2006 aMule Team \n" #~ "\n" #~ " Part of aMule is based on \n" #~ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr "" #~ " Plattformsoberoende P2P-klient baserad på eMule \n" #~ "\n" #~ " Webbplats: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " Vanliga frågor: http://wiki.amule.org \n" #~ "\n" #~ " Kontakt: admin@amule.org (administrativa frågor) \n" #~ " Copyright © 2003-2006 aMule Team \n" #~ "\n" #~ " Del av aMule är baserad på \n" #~ " Kademlia: Peer-to-peer-routing baserad på XOR metric.\n" #~ " Copyright © 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "http://download.overnet2000.de/nodes.dat" #~ msgstr "http://download.overnet2000.de/nodes.dat" #~ msgid "Skin file name is empty" #~ msgstr "Skalfilnamnet är tomt" #~ msgid "Skin file %s does not exist" #~ msgstr "Skalfilen %s finns inte" #~ msgid " - loading defaults" #~ msgstr " - läser in standardvärden" #~ msgid " - loading toolbar defaults" #~ msgstr " - läser in standardvärden för verktygsrad" #~ msgid "Skin file:" #~ msgstr "Skalfil:" #~ msgid "theApp.serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp.serverlist->GetServerByAddress() returnerade NULL" #~ msgid "Default Permissions" #~ msgstr "Standardrättigheter" #~ msgid "Enable IP-Filtering" #~ msgstr "Aktivera IP-filtrering" amule_2.3.1+git20151120.0023527bc2.orig/po/tr.po0000644000175000017500000063406212611472361017121 0ustar morphmorph# translation of aMule to Turkish # This file is distributed under the same license as the aMule package. # Atilla ÖNTAŞ , 2009. # Atilla ÖNTAŞ , 2009. # Atilla ÖNTAŞ , 2009. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2012-03-23 10:36+0100\n" "Last-Translator: \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: tr\n" "Plural-Forms: nplurals=1; plural=0\n" "X-Poedit-Language: Turkish\n" "X-Poedit-Country: TURKEY\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Arkadaş Ekle" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Geçerli bir IP ve port girmelisiniz!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Bilgi" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Belirlenen kullanıcı adreslemesi geçersiz!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "ED2KBağlantı dosyası açılamadı." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "UYARI: DüşükID olduğunuz sürece kendinizi bir kaynak olarak eD2k " "bağlantılarına ekleyemezsiniz." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Ana uygulamadan çıkılıyor..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Amuleweb oturumu pid `%ld' ile sonlandırılıyor..." #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Amuleweb oturumu pid `%ld' ile öldürülüyor..." #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Başarısız" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule Çıkışında: Çekirdek imha ediliyor." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "aMule kapatılma işlemi tamamlandı." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "aMule çıkışı için hafıza hata raporlama sonuçları:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "EC yapılandırması" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Parola ayarlandı ve dış bağlantılar etkinleştirildi." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "UYARI" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Bir yapılandırma değişikliği nedeniyle dil ayarınız 'Sistem Varsayılanı'na " "çevrildi. Üzgünüm. Vallahi..." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Bilgi" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Sunucu listesinde mevcut bir sunucu yok.\n" "aMule'nin yeni bir liste indirmesini ister misiniz?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Sunucu listesi indirme" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "web sunucusu pid %d üzerinde çalışıyor" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Web sunucusunun başlangıçta çalışmasını istediniz. Fakat amuleweb " "çalıştırılamıyor. Lütfen, aMule web sunucusunu içeren paketi yükleyin veya " "aMule' yi --enable-webserver komutu ile derleyip make install komutunu " "çalıştırın" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "HATA" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Belirtilen şu adrese portlar bağlanamıyor: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Port. %u kullanılamıyor. DÜŞÜKID alacaksınız.\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Port. %u kullanılamıyor!\n" "\n" "Bunun anlamı DÜŞÜKID alacağınızdır.\n" "\n" "Ağ ayarlarınıza göz atarak portun giriş ve çıkışlar için açık olup " "olmadığını denetleyiniz." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Çevrim içi İmza dosyası oluşturma başarısız." #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "aMule Çevrim içi İmza dosyası oluşturma başarısız." #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Seçilen yerelleştirme görünüşe göre bilgisayarınızda yüklü değil. (Not: Bunu " "yine de yapmaya çalışacağım)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Hoş geldiniz! aMule %s sürümünü ilk kez kullanıyorsunuz." #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Bu sürüm bir deneme sürümü, her gün güncellenir ve\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "bir şeyleri bozmayacağını veya evinizi yakmayacağını \n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "" "yahut da köpeğinizi öldürmeyeceğini garanti edemeyiz. Fakat bir *sorun* " "yaratmayacağını da umuyoruz.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "Daha fazla bilgi, destek ve yeni sürümler ana sayfamızda bulunabilir\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "www.aMule.org veya IRC Kanalımız: #aMule at irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Her türlü hatayı bize bildirmekten çekinmeyin http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Belirlediğiniz Çevrim içi İmza dosyaları dizini GEÇERSİZ!\n" " Çevrim içi İmza, ayarlarınızda düzeltene kadar DEVREDIŞI bırakıldı." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Sunucu makine adı uyarıldı" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "%s dosyası için diskte yer ayırma başarısız oldu: %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "HATA: Günlük dosyası açılamıyor." #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "UYARI: Günlük dosyası boş, bir şeyler yanlış." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Günlük kaydı silindi." #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Sunucu İletisi: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "%s indirilmeyecek; çünkü istenen dosya yeni değil." #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Nod listesini indirme başarısız." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "İndirilen sürüm denetleme dosyasını açma başarısız oldu." #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Bozuk sürüm denetleme dosyası" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "aMule'nin eski bir sürümünü kullanıyorsunuz!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "aMule sürümünüz %i.%i.%i ve en güncel sürüm %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "En güncel sürüm her zaman http://www.amule.org adresinde bulunabilir." #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "UYARI: aMuled sürümünüz eski: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "aMule sürümünüz güncel." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Sürüm denetleme dosyasını indirme başarısız oldu." #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Kullanıcılar: %s | Dosyalar: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Kullanıcılar: E: %s K: %s | Dosyalar: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Hiç bir ağ seçilmedi" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "DüşükID ile" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "YüksekID ile" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "Bağlandı: %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "Bağlanıyor: %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "eD2k Bağlantısı kesildi" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kademlia başladı." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kademlia durdu." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "Kademlia ağına bağlanıldı (tamam)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "Kademlia ağına bağlanıldı. (Güvenlik duvarı)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Kademlia bağlantısı kesildi." #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "UDP portu ayarlarda devre dışı bırakılmışsa Kad ağı kullanılamaz. " "Başlatılmıyor." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Kad ağı ayarlarda devre dışı bırakılmış, bağlanılmıyor." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "HATA: aMule daemon dış bağlantılar devre dışı bırakıldığında kullanılamaz. " "Dış Bağlantıları etkinleştirmek için ya aMule'yi, --ec-config seçeneği ile " "birlikte amuledi başlatarak ya da ~/.aMule/amule.conf dosyasındaki " "\"AcceptExternalConnections\" seçeneğini 1 olarak ayarlayın." #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "HATA: Dış bağlantıların kullanılabilmesi için geçerli bir parola gerekilidir " "ve aMule uygulamacığı dış bağlantılar olmadan kullanılamaz. aMule " "uygulamacığını çalıştırmak için ~/.aMule/amule.conf dosyasında \"ECPassword" "\" kısmını uygun bir değerle doldurmalısınız. amuled' i --ec-config seçeneği " "ile çalıştırın ve parolanızı ayarlayın. Daha fazla bilgi http://wiki.amule." "org adresinde bulunabilir." #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - zamanlayıcı başlatılıyor" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: arka plana çatallanıyor - görüşürüz" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "Pid dosyası oluşturulamıyor" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "HATA: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Bu, eMule üzerine kurulu olan aMule %s yazılımıdır." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "%s üzerinde çalışıyor" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "Yeni sürüm denetimi için http://www.amule.org adresini ziyaret ediniz." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ÖNEMLİ HATA: Zamanlayıcı oluşturulamadı" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "aMule uzak denetimi" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Bilgileri:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "eMule üzerine kurulu 'Sistem-Üstü' p2p yazılımı \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Web Sitemiz: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Forumumuz: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "S.S.S.: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "İletişim: admin@amule.org (yönetimsel konular) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 aMule Ekibi \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "aMule'nin üzerinde kurulduğu parçalar: \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: XOR matrisi üzerine kurulu bire-bir iletişim.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "İleti" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "aMule diyaloğu imha edildi" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "Bağlanıyor" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: Bağlanıyor" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: Bağlantı kesildi" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: Güvenlik Duvarı" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: Bağlandı" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: Bağlanıyor" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: Kapalı" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "İptal" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Durdur" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Bağlantıyı Kes" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Bağlanılmış olan ağlar ile bağlantıyı Kes" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "Bağlan" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "Etkinleştirilmiş olan ağlara bağlan" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Gön: %.1f(%.1f) | İnd:%.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Gön: %.1f | İnd:%.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | Bağlandı)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Bağlantı kesildi)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "%s üzerinden çıkmayı gerçekten istiyor musunuz?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Çıkışı onaylayınız" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Çalıştırma Komutu: " #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- ön tanımlı -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Kaplama dizini '%s' yok." #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "UYARI: Kaplama dosyası '%s' okuma için açılamıyor" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Ağlar" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Ağ Penceresi" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Aramalar" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Arama Penceresi" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "İndirmeler" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "İndirme Penceresi" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Paylaşılan dosyalar" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Paylaşılan Dosya Penceresi" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Sohbet" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Sohbet Penceresi" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "İstatistikler" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "İstatistik Grafik Penceresi" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Ayarlar" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Ayar Penceresi" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "İçe Aktar" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Parça dosyası içe aktarım aracı" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Hakkında" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Hakkında/Yardım" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "eD2k ağı" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Kademlia ağı" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Ağ yok" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "aMule Uzak Denetimi" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Önemli Hata: Çekirdek Zamanlayıcı oluşturulamadı" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "Uzak aMule'ye bağlan" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Önemli Hata: Havuz Zamanlayıcı oluşturulamadı" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Olay döngüsüne gidiliyor..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "Bağlanıyor..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "Bağlantı başarısız " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Uzak ARAYÜZ EC olay yakalayıcı" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "İniyor" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "Bağlantı Başarısız Oldu. %s:%d bağlanılamıyor\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "Bağlantı kesildi - Muhtemelen aMule sonlandırıldı." #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Hazır" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Tümü" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "'%s' dizini '%s' sınıfı için oluşturulamadı. '%s' dizini kullanılıyor." #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Bilinmiyor" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "'%s' kullanıcısının paylaşılmış dosyalarını alma başarısız" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "DüşükID bağlantı için bir eş aranıyor" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Sahte eMule sürümü %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr "(Sahte eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (Sahte eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (eMule s.0.%u üzerine kurulu)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Rumuz: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "İstek: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Bu oturum için dosya durumu: Kabul edilen istek %d, toplam %d, %s aktarıldı\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Tüm oturumlar için dosya durumu: Kabul edilen istek %d, toplam %d, %s " "aktarıldı\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Bilinmeyen dosya istendi" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "'%s' kullanıcısından gelen ileti engellendi. (IP: %s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "'%s' kullanıcısından yeni ileti geldi (IP: %s)" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Kullanıcı %s (%u), var olmayan '%s' dizini için paylaşılmış dosya listenizi " "istedi. -> Görmezden gelindi." #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "UYARI: %s açılamıyor." #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "UYARI: İptal edilen dosya listesi bozuk. Geçersiz başlık içeriyor." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "%s dosyası okumada IO hatası: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "%s dosyası kaydedilirken hata: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "Captcha Gir" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Sınıf" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Yeni Sınıf" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Gelen dosyalar için bir dizin seçin" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Sınıf için bir isim girmelisiniz!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Sınıf için bir yol girmelisiniz!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Sınıf için gelen dizini oluşturma başarısız. Lütfen geçerli bir yol giriniz!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Sohbet Oturumu Başladı: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** Kullanıcıya Bağlandı. ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** Kullanıcıya Bağlanıyor.***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Kullanıcıya bağlantı başarısız. / Bağlantı koptu.***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "*** Captcha denetiminden geçtiniz ve kullanıcı iletinizi aldı. ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** Captcha' ya cevabınız yanlıştı ve iletiniz yok sayıldı. Yeni bir ileti " "göndererek yeni bir captcha isteyebilirsiniz. ***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "Sohbet" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Sekmeyi Kapat" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Tüm sekmeleri kapat" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Diğer sekmeleri kapat" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Arkadaşlara Ekle" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Kredi dosyası yüklendi. %u adet kullanıcı biliniyor" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - %u adet kullanıcı için krediler bitti!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "'cryptkey.dat' dosyası bulunamadı. Oluşturuluyor..." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Kullanıcı Ayrıntıları" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "DüşükID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "YüksekID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Etkinleştirildi" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Destekleniyor" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Desteklenmiyor" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Devre dışı" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "Bağlandı" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Bağlantı kesildi" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Eksik" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Kötü Çocuk" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "İncelendi - Tamam" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Uygun değil." #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Kullanıcı %s (%u), paylaşılmış dosya listenizi istedi. -> Kabul edildi" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Kullanıcı %s (%u), paylaşılmış dosya listenizi istedi. -> Reddedildi" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "Kullanıcı %s (%u), paylaşılmış dizin listenizi istedi. -> Kabul edildi" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "Kullanıcı %s (%u), paylaşılmış dizin listenizi istedi. -> Reddedildi" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Kullanıcı %s (%u), '%s' dizini için paylaşılmış dosya listenizi istedi. -> " "kabul edildi" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Kullanıcı %s (%u), '%s' dizini için paylaşılmış dosya listenizi istedi. -> " "reddedildi." #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Kullanıcı %s (%u), %s dizinini paylaşıyor" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Kullanıcı %s (%u) istenmeyen paylaşılmış dosya listesi gönderdi" #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "" "Kullanıcı %s (%u) '%s' dizini için paylaşılmış dosya listesini gönderdi" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Kullanıcı %s (%u) paylaşılmış dosya listesini göndermeyi tamamladı" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Kullanıcı %s (%u) istenmeyen paylaşılmış dosya listesi gönderdi" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "Kullanıcı %s (%u)nın paylaşılmış dizin/dosyalara erişimi reddedildi." #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Dosya Yorumları" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Kullanıcı Adı" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Dosya Adı" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Puanlama" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Yorum" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Yorum yok" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u adet yorum" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "%s istemcisi %s kadar veriyi %s toplamda '%s' dosyasında gönderdiği için " "yasaklandı." #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Oto (Düş)" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Oto [Nor]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Oto (Yük)" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Çok düşük" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Düşük" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Normal" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Yüksek" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Çok Yüksek" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Yayım" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Soruyor" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "Sunucu yoluyla bağlanıyor" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Sıra dolu" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "Sırada" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Aktarılıyor" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Adresleme seti alınıyor" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Gereksiz parçalar" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "DüşükID'den DüşükID'ye bağlanılamaz" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Çok fazla bağlantı" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "Kad yoluyla bağlanıyor" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Çok fazla Kad bağlantısı" #: src/DataToText.cpp:73 msgid "Banned" msgstr "Engellendi" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Bağlantı Hatası" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Uzaktaki Sıra Dolu" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Eski MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Yeni MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Sunucu" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Uzak Sunucu" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kademlia" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Kaynak Değişimi" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Pasif" #: src/DataToText.cpp:133 msgid "Link" msgstr "Bağlantı" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Kaynak Girdileri" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Arama Sonucu" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Tamamlandı" #: src/DataToText.cpp:146 msgid "In progress" msgstr "İşlem yapılıyor" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "HATA: Disk dolu" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "HATA: Partmet bulunamadı" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "HATA: Girdi-çıktı hatası!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "HATA: Başarısız!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "Sıraya girdi" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Zaten aktarılıyor" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Bilinmeyen yada bozuk geçici dosya formatı." #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Parça" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Boyut" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Aktarıldı" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Hız" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "İşlem" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Kaynaklar" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Öncelik" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Durum" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Kalan Süre" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Son Tamamlanmış Görülme" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Son Alım" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Seçili dosyayı silmek istediğinizden emin misiniz?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Seçili dosyaları silmek istediğinizden emin misiniz?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Geri besleme: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Otomatik" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "&Dur" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "&Durakla" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "&Başlat" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "Tamamlananları T&emizle" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Tüm A4Afleri derhal bu dosyaya geçir" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Tüm A4Afleri bu dosyaya geçir (Otomatik)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Tüm A4Afleri derhal bir başka dosyaya geçir" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Genişletilmiş Seçenekler" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Ön İzleme" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Dosya &ayrıntılarını göster" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Tüm yorumları göster" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Magnet bağlantısını panoya kopyala" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "eD2k bağlantısını panoya kopya&la" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Geri beslemeyi panoya kopyala" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "Ekleme" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Sınıfa Ekle" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "Dosyayı &Aç" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Bu dosya için yeni bir isim girin:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Dosya yeniden adlandır" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "İndirmeler (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Her önizlemede bu uyarının gösterilemsini önlemek için,\n" "seçeneklerden tercih ettiğiniz video oynatıcısını ayarlayın. (öntanımlı " "mplayer)" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Dosya ön izlemesi" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "Hata: Ortam oynatıcısını çalıştırma başarısız! Komut : `%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "ParçaDosyası %u, %u'da kaydediliyor" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Tüm ParçaDosyaları Kaydedildi." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "%s konumundan geçici dosyalar yükleniyor." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "ParçaDosyası %u %u'dan yükleniyor" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "HATA: Yedekleme dosyası yüklenemedi. .part.met kurtarma çözümleri için " "http://forum.amule.org adresini ziyaret edin." #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Tüm ParçaDosyaları Yüklendi." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Hiç part dosyası bulunamadı" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "%u adet parça dosyası bulundu" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "Geçici dizininin dosya sistemi büyük dosyaları kullanamaz." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "Gelen dizininin dosya sistemi büyük dosyaları kullanamaz." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Aktarılıyor %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Zaten %s dosyasını indirmeye çalışıyorsunuz." #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Zaten %s dosyası var." #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "%s dosyasını indirmeyi zaten deniyorsunuz" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Magnet bağlantısı eD2k' ya çevrilemez: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Bağlantı için bilinmeyen protokol: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Geçersiz eD2k bağlantısı! HATA: %s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "" "Kimlik kanıtlamadan sonra istemci tarafından gönderilen paket başarısız." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Dışarıdan bağlantı kesildi." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Boş şifre sebebiyle dışarıdan bağlantı devre dışı!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Yapılandırma dosyasında dışarıdan bağlantılar devre dışı bırakılmış." #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Yeni dışarıdan bağlantı kabul edildi" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "HATA: yeni bir dış bağlantı kabul edilemiyor" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "Ayarlardaki boş şifre sebebiyle dışarıdan bağlantılar reddedildi." #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "Kullanıcıya bağlanılıyor: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Bilinmeyen sürüm" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Yanlış EC sürüm ID, bir çift uyumsuzluğu olabilir. Aynı görüntüden çekirdek " "ve uzak kullanınız." #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Bir geliştirme sürümünden dengeli bir sürüme bağlanamazsınız! *muhtemel* bir " "çökme önlendi" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Geçersiz protokol sürümü." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Kayıp protokol sürüm eki." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" "Kimlik doğrulama başarısız oldu: EC parolası olarak geçersiz adresleme " "girildi." #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "Kimlik doğrulama başarısız oldu: yanlış parola." #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "Kimlik doğrulama başarısız oldu: kayıp parola." #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "Geçersiz istem, öncelikle doğrulatmanız lazım." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Giriş izni verildi." #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "\"%s\" hata iletisi makineye gönderildi." #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "%s üzerinden yetkilendirilmemiş giriş denemesi. Bağlantı kesildi." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "Uzak Parça Dosyası komutu başarısız: Dosya Adreslemesi bulunamadı: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Dosya adreslemesi bulunamadı: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "Aman aman! OpCode işleme hatası!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Sunucu eklenmedi." #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "sunucu bulunamadı: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "çıkarılacak sunucunun tanımlanması gerekli" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "pasifleştirilmiş." #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Arama sürüyor. Bir dakikaya sonuçlanır!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Uzak arayüzden Web araması yapmak anlamsız." #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Grafik için hiç nokta yok." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Yazılımınız bu ayrıntı düzeyi için yapılandırılmamış." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Bağlantı kapat" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Zaten kapatılıyor." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Dışarıdan Bağ.:'%s' bağlantısı ekleniyor." #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Geçersiz bağlantı veya zaten listede mevcut." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Dosya bulunamadı." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Geçersiz dosya adı." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Dosya yeniden adlandırılamıyor." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad ayarlarda devre dışı bırakılmış." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "eD2k ağına zaten bağlandı." #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "eD2k ağına bağlanıyor..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Kad zaten bağlı." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Kad ağına bağlanıyor..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Bütün ağlar devre dışı" #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "eD2k ağından bağlantı kesildi." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Kad ağından bağlantı kesildi." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Dış Bağlantı: geçersiz opcode alındı: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Geçersiz opcode (yanlış protokol sürümü mü?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Bilinmeyen %s uzantısı, %s komutu için.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Bilinmeyen komut '%s' .\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Bu komut bir argüman içeremez.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Bu komut bir argüman içermelidir.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Bu komut eksik.Aşağıdaki uzantılardan birini girmelisiniz.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Uygun uzantılar:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Uygun komutlar:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Tüm komutlar büyük-küçük harf duyarlıdır.\n" "'%s ' tuşlayarak hakkında detaylı bilgi alabilirsiniz.\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Uygulamadan çıkar." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Yardımı göster." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Bir komut hakkında yardım çağırmak için 'help ' yazınız.\n" "Tüm komutları görmek için 'help' yazınız.\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Komut listesi için '%s' kullanınız.\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Söz dizimi hatası!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Komut çalıştırmada hata.- Bu hiç olmamalıydı! Lütfen hatayı bildiriniz.\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Bu komut herhangi bir parametre içermemeli." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Bu komut bir parametre içermeli." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Geçersiz argüman." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Bu eksik bir komut." #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Daha fazla yardım için '%s' yazınız.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Bu bir %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Bu bir %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Yazılım oluşturuluyor...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Tamam, çıkılıyor %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Boş bir şifreyle bağlanılamaz.\n" "Ya yapılandırma dosyasında ya da komut\n" "satırında bir şifre olmalı veyahut da istendiğinde girmelisiniz\n" "\n" "Çıkılıyor...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Bu yardım dosyasını göster." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "aMule'nin çalıştığı makine. (varsayılan: localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Dışarıdan bağlantı için aMule portu. (Varsayılan:4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Dışarıdan bağlantı şifresi." #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Yapılandırmayı dosyadan oku." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "stdout' a herhangi bir çıktı yazdırma." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Geveze ol - hata iletilerini de göster." #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Yazılım yerelini ayarla (dil)" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Komut satırı seçeneklerini yapılandırma dosyasına yaz." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "" "aMule'nin yapılandırma dosyasını temel alan yapılandırma dosyası oluşturur." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Yazılım sürümünü yazdır." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Dosya Ayrıntıları" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "%.1f%% tamamlandı" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "Arkadaş listesi 'emfriends.met' dosyası okunamıyor!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "Arkadaş listesi 'emfriends.met' dosyasına yazılamıyor!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "KRİTİK - SohbetOturumunuBaşlat' ta istemci yok" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Arkadaşlar" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "&Ayrıntıları Göster" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Arkadaş ekle" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Arkadaş sil" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "&İleti Gönder" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Paylaşılmış Dosyalara bak" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Arkadaş Slotu Kur" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Seçili arkadaşı silmek istediğinizden emin misiniz?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Seçili arkadaşları silmek istediğinizden emin misiniz?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Birden fazla arkadaş slotu kuramazsınız.\n" "Sadece bir slot kuruldu." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Çoklu seçim" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Kullanıcıya ileti gönder" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Gönderilecek ileti:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Arkadaşlardan Çıkar" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "İleti Gönder" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Bu dosyaya geçir" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "Sırada: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Başka dosya için soruldu" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "Gönderme slotu için bekleniyor" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "Sırada: %u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "Gönderiliyor" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "Yok" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Hayır" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Evet" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Aktarılıyor..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "HTTP aktarımı iptal edildi" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "İndirme için hedef %s dosyası oluşturulamıyor!" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "İndirme bağlantısı boş olamaz." #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "%s bağlantı adresi dönüşü: %i - Hata (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "İndirilen dosyanın yazımında önemli bir hata oluştu" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "%d bayt indirildi." #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "%d bayt bekleniyordu; fakat %d bayt indirildi" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" "HTTP aktarım veya HTTP yönlendirme için geçersiz bağlantı adresi ( 'http://' " "yazmayı unuttunuz mu?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "HTTP indirme sunucusuna bağlanılamıyor" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "HTTP indirme sunucusundan geçersiz yanıt alındı" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "%s kaynağından yeni bir GeoIP.dat indir" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "GeoIP.dat dosyası indirilemedi. Güncelleme iptal edildi." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "%s dosyası silinemedi. Güncelleme iptal edildi." #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "%s dosyası yeniden adlandırılamadı. Güncelleme iptal edildi." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "%s başarıyla güncellendi." #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "GeoIP.dat güncellemesinde hata oluştu." #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "%s, %s kaynağından indirilemedi." #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "'%s' için ülke verisi yüklenemedi." #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "IP süzgeçleri 'ipfilter.dat' ve 'ipfilter_static.dat' yükleniyor." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "" "ipfilter.dat dosyasını '%s' yükleme başarısız. bilinmeyen format algılandı." #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "ipfilter.dat dosyasını '%s' yükleme başarısız. Dosya açılamıyor." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "%u adet IP-aralığı '%s' den yüklendi." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u adet bozuk satır göz ardı edildi." #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Yeni %s dosyası yeniden adlandırılamadı. Güncelleme iptal edildi." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "IP süzgeci hazır" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Bilinen kullanıcılardan\n" "Ön Yükleme" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Nodlar (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Ön yükleme için geçersiz ip" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Ön yükleme için geçersiz port" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "İstenilen tüm alanları doldurunuz." #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Yeni bir nodes.dat dosyası indirmek istediğinizden emin misiniz?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Bunu yapmanız şu anki nodları silecek ve Kademlia bağlantısını baştan " "başlatacaktır." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Devam mı?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: Arama sözcüğü çok kısa" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Arama için anahtar kelime: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: Arama anahtar sözcüğü zaten arama listesinde var. " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" "Nodes.dat dosyası okunamadı- dosya çok eski. Bu sürüm (0) artık " "desteklenmiyor." #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "%u adet Kademlia bağlantısı okundu" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "Hiç bağlantı bulunamadı. Lütfen, ön yükleme veya nodes.dat dosyası indirmeyi " "deneyin." #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Sadece %d Kad bağlantısı var. Nodes.dat yazılamadı" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "%d Kademlia bağlantısı yazıldı" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Dosya adı" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Dosya" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Paylaşım oranı" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Gönderilen" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "İstenen" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Kabul edilen" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Tamamlandı" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "UYARI: Bilinen dosya listesi bozuk. Geçersiz başlık içeriyor." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "Bilinen dosyalar listesinden girdi yüklenemedi. Dosya bozuk olabilir" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" "Bilinen dosyalar listesinde geçersiz girdi bulundu. Dosya bozuk olabilir:" #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "Bilinmeyen hata %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "%d hatası için tanımlama alınamadı!" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Adresleniyor" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Tamamlanıyor" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Tamamlandı" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Duraklatıldı" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Hatalı" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Bekliyor" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Boş olmayan bir şifre girmelisiniz." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Geçersiz şifre, bir MD5 adreslemesi değil!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "Bağlantı başarısız" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "EC bağlantısı başarısız. Boş cevap." #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "Dış Bağlantı: Kötü yanıt. Bağlantı kapatıldı." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Başarıldı! aMule'ye bağlantı kuruldu. " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Başarıldı! Bağlantı kuruldu." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Dış Bağlantı: Erişim engellendi çünkü: " #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "Dış Bağlantı: Tanılama engellendi" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "HTTP aktarımı başladı" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "DinlemeSoketi: Tamam." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "HATA: TCP portu dinlenemiyor." #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "HATA: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "UYARI:" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Kapat" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Kes" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Kopyala" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Yapıştır" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Temizle" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Tümünü Seç" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Sınırsız" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule Sistem Tablası Menüsü" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Hız:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "GÖN: Yok" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "GÖN: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "İND: Yok" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "İND: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Aktarım hızı: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Gönderme hızı: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Yazılım Bilgisi" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Rumuz: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Rumuz Seçilmedi!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "KullanıcıID: " #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Bağlı değil" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Sunucu Adı:" #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "SunucuIP:" #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Bağlanmadı" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP port: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP port: Hazır değil" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "UDP port: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UDP port: Hazır değil" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Çevrim içi İmza: Etkin" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Çevrim içi İmza: Devre dışı" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Çalışma Süresi: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Paylaşılan dosyalar: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Sıraya giren kullanıcılar: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Toplam İND: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Toplam GÖN: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Gönderim sınırı" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Aktarım sınırı" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "aMule'yi Gizle" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "aMule'yi Göster" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Çıkış" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k Bağlantısı:" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Onayla" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Metin denetimindeki eD2k bağlantısını indirme sırasına eklemek için burayı " "tıklayın." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Olaylar burada gösterilir. Olayların tam listesi için Sunucu sekmesine " "bakınız." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Yükleniyor..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Sunucu üzerinden bağlandığınız kullanıcı sayısı..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Kullanıcılar: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "Şu anki sunucuya bağlı kullanıcılar ve kullanıcıların yaklaşık sayısı." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Gön: 0.0 | İnd: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Şu anki ortalama gönderim ve aktarım oranları. Etkinleştirilirse, ızgaralar " "üzerindeki rakamlar kullanıcı iletişiminden kaynaklanan ek yükü gösterir." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Bağlantı durumu ve aktif aktarımları gösterir. Kırmızı ok henüz " "bağlanmadığınızı, sarı ok düşük ID (güvenlik duvarı)aldığınızı ve yeşil ok " "ise yüksek ID (En verimli bağlantı türü) aldığınızı simgeler." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Bağlanmadı ..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "Şu an bağlanılan sunucu." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Ara" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Ad:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Tür" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Sunucu" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Genel" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Dosya Adreslemesi" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Genişletilmiş Parametreler" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Süzgeç" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Dosya Türü" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Herhangi" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Sıkıştırılmış Dosyalar" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Ses" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD-İmajı" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Resim" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Programlar" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Belgeler" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Videolar" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Uzantı" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "En Az Boyut" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "bayt" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "En Fazla Boyut" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Uygunluk" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Süz:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Süzme Sonuçları" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Sonuçları tersine çevir." #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Bilinen Dosyaları Gizle" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Başlat" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Daha Fazla" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Daha fazla sonuç için eD2k aranır. Kad ağında henüz desteklenmiyor." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Durdur" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "İndir" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Alanları Sıfırla" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Sonuçlar" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Tamamlanan aktarımları temizler." #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "Dosya kaynakları" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Genel" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Tam Ad :" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met-Dosyası :" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Adresleme:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Dosya Boyutu :" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Parça Dosya Durumu :" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Son Görülen Tamamlama :" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Aktarım" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Bulunan Kaynaklar:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Aktarılan Kaynaklar:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Dosya Parçası-Sayısı:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Uygun:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Veri Oranı:" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Aktarım Süresi: " #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Aktarılan:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Tamamlanmış Boyut:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Akıllı Bozulma Yakalayıcısı" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Bozulma ile kaybedilen:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Sıkıştırma ile kazanılan:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "I.C.H ile kurtarılan paketler :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Dosya Adları" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Devral" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Temizle" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Uygula" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Tamam" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Dosyayı Yorumla/Puanla (İçerik tüm kullanıcılara gösterilecektir.)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Bir film için süresini, öyküsünü, dilini ...\\n\\nve sahte bir dosya ise " "bunu diğer aMule kullanıcılarına bildirebilirsiniz." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Dosya Kalitesi" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Derecelendirilmemiş" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Geçersiz / Bozuk / Sahte" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Zayıf" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Doğru" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "İyi" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Mükemmel" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Dosya puanlaması seçiniz veya geçersiz ise diğer kullanıcıları uyarınız." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Yenile" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Aktarılıyor, lütfen bekleyiniz ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Boyut bilinmiyor" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Gerekli Bilgiler" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP Adresi:" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Port:" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Ek Bilgi" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Kullanıcı Adı :" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Kullanıcı Adreslemesi :" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Ekle" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "İndirme Hızı" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Şimdiki" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Çalışma ortalaması" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Oturum ortalaması" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Gönderim Hızı" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "Bağlantılar" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Aktif İndirmeler" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Aktif Bağlantılar (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Aktif Göndermeler" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "İstatistik Ağacı" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Kullanıcı Adı:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Kullanıcı Adreslemesi:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Yazılım:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Yazılım Sürümü:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP :" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "Kullanıcı ID:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "Sunucu IP:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Sunucu:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Gizleme:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kademlia:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Yapılan aktarımlar" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Şimdiki İstek:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Ortalama gönderim oranı:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Ortalama aktarım oranı:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Gönderilen (oturum):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "İndirilen (oturum):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Gönderilen (toplam):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "İndirilen (toplam):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Skor" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "İND./GÖN. niteleyici:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Güvenli Kimlik:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "Kuyruk sırası:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Sıra skoru:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Rumuz" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - çok-sistemli Katır" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "Bağlandığınızda diğerlerinin göreceği isminiz budur." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Dil: " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "İpuçlarını göstermeden önce geçecek süreyi belirler." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Arayüzde kullanılacak dil." #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Yeni sürümü başlangıçta denetle." #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "Bunu etkinleştirmek, aMule'nin yeni sürümleri aramasını sağlar." #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Küçültülmüş başla" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Bunu etkinleştirmek aMule'nin küçültülmüş durumda başlamasını sağlar." #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Çıkışta uyar" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "aMule'nin çıkıştan önce uyarmasını sağlar." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "Kapatma butonuna tıklandığında uygulamayı sakla" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Sistem tablası simgesini etkinleştir." #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "" "Bu, sistem tablası (ya da görev çubuğu) simgesini Etkinleştirir/Devre dışı " "bırakır." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Sistem tablasına küçült." #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "Bu, aMule'nin görev çubuğu yerine sistem tablasına küçülmesini sağlar." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "İpucu gecikme süresi: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "saniye" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Tarayıcı Seçimi" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Tarayıcı adını buraya giriniz. Sisteminizin ön tanımlı tarayıcısını " "kullanmak için boş bırakınız." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Göz at" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Mümkünse yeni sekmede aç" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "Web sayfasını ,yeni pencere yerine mümkünse yeni sekmede açar." #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Ortam Çalıcısı" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Bağlantı sınırları" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Gönderme" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Slot Tahsis Boyutu" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Portlar" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Standard TCP Portu " #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "pasifleştirilmiş." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Sunucu istemleri için UDP Portu (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Genişletilmiş UDP portu (Kad / Genel arama) " #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "Bu UDP portu genişletilmiş eD2k istemleri ve Kad ağı için kullanılır" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Router port iletimi için UPnP'yi etkinleştir" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnP TCP Portu (İsteğe bağlı):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Yerel adresi IP' ye bağla (herhangi biri için boş bırakın):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Sadece ileri düzey kullanıcılar: Birden fazla ağ arayüzünüz varsa; aMule'nin " "izleyeceği arayüz adresini giriniz." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "İndirilen dosya başına en fazla kaynak sayısı:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "En cazla eş bağlantı sayısı:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Başlangıçta otomatik bağlan" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Bağlantı koptuğunda yeniden bağlan" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Ölü sunucuları" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "denemeden sonra kaldır" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Otomatik başlangıç" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Liste" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Bir sunucuya bağlandığında sunucu listesini güncelle" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Bir kullanıcı bağlandığında sunucu listesini güncelle" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Öncelik sistemini kullan" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Bağlanırken akıllı DüşükID denetimi yap" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Güvenli Bağlantı" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Sadece statik listesindeki sunuculara otomatikman bağlan" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Elle eklenmiş sunuculara Yüksek Öncelik ata" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Akıllı Bozulma Yakalayıcısı (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Etkinleştir" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "Gelişmiş I.C.H. her adreslemeye güvensin. ( önerilmez )" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Dosyaları aktarımlara duraklatılmış kipte ekle" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Dosyaları, aktarımlara otomatik öncelikle ekle" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "İlk ve son parçaları en önce indirmeye çalış" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Bir dosya tamamlandığında duraklatılan sonraki dosyaya başla" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "Aynı sınıftan" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "Alfabetik sırayla" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Yeni dosyalar için diskte yer ayır" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Yeni dosyalarda, dosyanın tamamı için sabit diskte yer ayrılarak parçalanma " "azaltılır" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Boş disk alanı şu kadar kaldığında aktarımları durdur " #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "aMule'nin diskteki alanı denetlemesini istiyorsanız bunu seçiniz." #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Buraya istenilen en az disk alanını giriniz" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Nadir bulunan dosyalarda 10 kaynak sakla (<20 kaynak)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Gönderilenler" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Dosyaları paylaşılanlara otomatik öncelikle ekle" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "İndirmeler için hedef dizin" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Geçici dosyalar için dizin" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Paylaşılan dizinler" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(Sürekli paylaşım için dizin simgesine sağ tıklayınız.)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Gizli dosyaları paylaş" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Grafikler" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Güncelleme gecikmesi: 5 sn" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Ortalama grafiği için süre: 100 dk" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Bağlantı Grafik Ölçüsü: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "İndirme grafik ölçüsü:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Gönderme grafik ölçüsü:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Renkler: " #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Arka plan" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Izgara" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Şu anki aktarımlar" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Aktarım çalışma ortalaması" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Aktarım oturum ortalaması" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Şu anki gönderme" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Gönderme çalışma Ortalaması" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Gönderme oturum ortalaması" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Aktif bağlantılar" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Sistem Tablası Simgesi Hız Göstergesi" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Şu anki Kad nodları" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "İşlemdeki Kad-nodları" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Oturumdaki Kad-nodları" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Seçiniz" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Ağaç" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Gösterilen Yazılım Sürümü Sayısı (0=sınırsız)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! UYARI !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "En fazla yeni bağlantı / 5 sn" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Dosya Tampon Boyutu: 240000 bayt" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Gönderme Sıra Boyutu: 5000 kullanıcı" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Sunucu bağlantısı yenileme sıklığı :Devre dışı" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "Bilgisayarın devre dışı kalma modunu etkisiz hale getir" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Kullanılacak kaplama: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "\"Hızlı eD2k Bağlantı Yakalayıcısı\"nı her pencerede göster.." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Sınıf sekmelerinde genişletilmiş bilgi göster." #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "Başlık çubuğunda uygulama sürümünü göster" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Başlık çubuğunda aktarım oranlarını göster." #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Uygulama adından önce" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Uygulama adından sonra" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Ek yük ağ genişliğini göster" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Dikey araç çubuğu yerleşimi" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "İstemciler için ülke bayraklarını göster" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Sıradaki Dosyaları İndir" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "İşlem yüzdesini göster" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "İşlem çubuğunu göster" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Düz" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Yuvarlatılmış" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Dosyaları otomatik sırala (yüksek CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule aktarım listenizdeki sütunları otomatikman sıralayacaktır." #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Dışarıdan Bağlantı Parametreleri" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Dışarıdan bağlantıları kabul et." #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "Dinlenen arayüzün IP' si:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Dinleme EC arayüzü için a.b.c.d biçiminde geçerli bir ip giriniz. Boş " "bırakılan alan veya 0.0.0.0 arayüz yok demektir." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "TCP portu:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "EC portuna UPnP port yönlendirmesi etkin." #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Şifre" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Web sunucusu değerleri" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Başlangıçta web sunucusunu başlat" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Web şablonu" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Tam hak şifresi" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Düşük hakka sahip kullanıcıyı etki kıl." #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Düşük hak şifresi" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Web sunucu portunun UPnp port iletimini etkinleştir" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Web sunucusu UPnp TCP portu (İsteğe bağlı)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Sayfa yenileme zamanı (sn)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Gzip sıkıştırmayı etkinleştir." #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "Tamam" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Ayarlarda yapılan değişikliklerin uygulanması için buraya tıklayınız." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Ayarlarda yapılan değişiklikleri sil." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Başlık :" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Yorum:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Gelen Dosyalar Dizini :" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Yeni eklenen dosyalar için öncelikleri değiştir." #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "Değiştirme" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Bu sınıf için renk seçiniz. (varsayılan) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Sıfırla" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Günlük kayıtlarını silmek için bu düğmeye basınız." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Sunucu listesini İnternet'ten güncellemek için bu düğmeye basınız..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Sunucu" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Adresi server.met dosyasına buradan giriniz. Sonra, bilinen sunucuları " "güncellemek için soldaki düğmeye tıklayınız." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Sunucuyu elle ekle: İsim" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Yeni sunucunun adını buraya giriniz." #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Yeni sunucun IP numarasını x.x.x.x biçiminde buraya giriniz." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Sunucunu portunu buraya giriniz." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Sunucuyu elle ekle (önce soldaki alanları doldurunuz) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule Günlüğü" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Sunucu Bilgisi" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2K Bilgileri" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kademlia Bilgileri" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Nod listesini İnternet'ten güncellemek için bu düğmeye tıklayınız." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Nodlar (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Bilinen nodları güncellemek için buraya adresi giriniz ve soldaki düğmeye " "tıklayınız." #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Nod Durumu" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Ön Yükleme" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Yeni nod" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Port:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "Bilinen kullanıcılardan Ön Yükleme" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Kad Bağlantısını Kes" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Kullanıcı" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Bu seçeneği aktifleştirmeniz önerilir. SUI aktif değilse, kredi alamazsınız." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Protokol Gizleme" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Protokol Gizleme etkin" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Bu seçenek Protokol Gizleme'yi etkinleştirir ve aMule'nin gizlenmiş " "bağlantıları kabul etmesini sağlar." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Giden bağlantılar için gizleme kullan" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Bu seçenek diğer kullanıcı veya sunucularla olan bağlantılarda Protokol " "Gizleme'yi etkinleştirir." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Sadece gizlenmiş bağlantıları kabul et" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Bu seçenek aMule'nin sadece gizlenmiş bağlantıları kabul etmesini sağlar." "Daha az kaynak bulursunuz;ancak tüm trafiğiniz de gizlenmiş olur." #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Herkes" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Hiç kimse" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Paylaşılan dosyalarımı kim görebilir:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Paylaşılan dosyalarınızı kime göstereceğinizi seçiniz." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP_Süzme" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Kullanıcıları Süz" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "~/.aMule/ipfilter.dat dosyasında tanımlanan kullanıcı IP'lerini süzmeyi " "etkinleştir." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Sunucuları süz" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "~/.aMule/ipfilter.dat dosyasında tanımlanan sunucu IP'lerini süzmeyi " "etkinleştir." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Listeyi yeniden yükle" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "~/.aMule/ipfilter.dat dosyasından IP'leri süzgece yeniden yükle." #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "Adres:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Şimdi güncelle" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Ip süzgecini başlangıçta otomatikman güncelle." #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Süzme Seviyesi:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Her zaman LAN IP'lerini süz." #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Uyuşmayan IP'lere şüpheci yaklaşım." #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Paketin alındığı ip ile kullanıcı ip numarası farklıysa paket reddedilir." "(Dikkatli kullanın)" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Varsa, sistem geneli ipfilter.dat kullan" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Yerel bir ipfilter.dat dosyası bulunamazsa, sistem geneli ipfilter " "kullanımına izin ver" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Çevrimiçi-İmza' yı Etkinleştir" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Diğer uygulamaların imzalar ve benzerlerini oluşturabilmesi için " "kullanabileceği Çev.İmza dosyasını yazmayı etkinleştirir." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Güncelleme Sıklığı (Sn.):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "" "Çevrim içi İmza güncellemeleri için (saniye bazında) sıklığı değiştirir." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Çevrim içi imza dosyasını buraya sakla: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "Çevrim içi İmza dosyalarını içeren dizini seçiniz." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Gelen iletileri süz (o anki sohbet dışında.)" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Hepsini süz." #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Arkadaş listesindekiler dışında herkesi süz." #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Bilinmeyen yazılımlardan gelenleri süz." #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "Şu içerikteki iletileri süz (ayraç olarak ',' kullanınız.):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "Buraya ekleyeceğiniz sözcükleri içeren iletiler aMule tarafından engellenir." #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Günlükte alınan iletileri göster" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Yorumlar" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Şu içerikteki iletileri süz (ayraç olarak ',' kullanınız.):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Vekil sunucu kullanmadan otomatik sunucu bağlantısı" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Yetkilendirmeyi etkinleştir." #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Kullanıcı adı/şifre yetkilendirmeyi etkinleştir/devre dışı bırak." #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Kullanıcı adı: " #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Vekil sunucuya bağlanmak için gerekli kullanıcı adı" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Şifre:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Vekil sunucuya bağlanmak için gerekli şifre" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Vekil sunucuyu Etkinleştir." #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Vekil sunucu desteğini etkinleştir/devre dışı bırak" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Vekil sunucu Türü:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Vekil sunucu makine:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Vekil sunucu makine adı" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Vekil sunucu Portu:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Vekil sunucu portu" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "Bağlan:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Uzaktan aMule'ye giriş yapınız." #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Kullanıcı adı" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Bu ayarları hatırla" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Fazladan Hata Çıktısı Kaydını Etkinleştir." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "Dosyayı &Aç" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "İleti Sınıfları:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Bekliyor..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "İçe aktarımları ekle" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Seçileni tekrar dene" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Seçileni çıkar" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Olay Türleri" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" "Seçili dosya(lar) için kuyruktaki istemciler ve istatistikler: Oturum / " "Bütün zamanlar" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "Etkin Göndermeler" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "Toplam dosyaların yüzdesi" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "Tüm dosyalar" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "Seçilen dosyalar" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "Sadece aktif Göndermeler" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "Kullanıcıları Göster" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "Yeniden yükle" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Paylaşılan dosyalarınızı yeniden yükleyin" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Gönder" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Belirlenen iletiyi gönderir." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Bu sohbet oturumunu kapatır." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "Herhangi bir sunucuya ve/veya Kad'a bağlan." #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Paylaşılan Dosyalar" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Devre dışı [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "bayt" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "bayt/sn" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "sn" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "dk" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "saat" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "Gün" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "Tümü" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "Diğerleri" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Tamamlanmamış" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Durduruldu" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Görüntü" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Sıkıştırılmış" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Belge" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Etkin" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "Kullanılan yapılandırma dizini: %s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Parçadosyası dönüşümünün bitmesi bekleniyor..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "İçe Aktarılıyor %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Geçici dosyalar dizini okunuyor." #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Aktarım bilgisi dosyasından temel bilgiler alınıyor." #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Hedef dosya oluşturuluyor." #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Eski aktarım dosyasından veri yükleniyor. (%u of %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Yeni tek aktarım dosyasına veri bloku kaydediliyor. (%u of %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Kaynak aktarım dosyası bilgisi alınıyor." #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Aktarım ekleniyor ve yeni parça dosyası kaydediliyor." #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Parça dosyalarını içe aktar" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Durum" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Dosya adreslemesi" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (Disk: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Lütfen geçici aktarım dosyaları için bir dizin seçiniz. (Alt dizinler de " "taranacaktır.)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "" "İçe aktarımı başarılı olan kaynak dosyalarının silinmesini ister misiniz?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Kaynakları çıkar?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "HATA: Part dosyası oluşturma başarısız" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Met-dosyası yedeklemesi %s konumundan yüklenmeye çalışılıyor." #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "HATA: part.met dosyası açılamadı: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "HATA: part.met dosyası 0 boyuta sahip: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "HATA: Geçersiz part.met dosya sürümü: %s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "HATA: %s (%s) bozuk (hatalı yaftalar: %s), dosya yüklenemez." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "HATA: %s (%s) bozuk (hatalı başlık sayısı), dosya yüklenemez." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Dosya bilgisi kurtarılmaya çalışılıyor..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "" "İsimsiz dosya kurtarılmaya çalışılıyor-RecoveredFile.dat olarak kaydedilecek." #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "Uygun olan tüm bilgiler kurtarıldı. :-D - bunlar kullanılacak..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Dosya bilgisi kurtarılamıyor :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "%s (%s) açma başarısız" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "UYARI: %s bozulmuş olabilir (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "Parça dosyası kaydedilirken HATA: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "Parçadosyası kaydedilirken girdi-çıktı hatası: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "'%s' dosyasının uzunluğu alınamıyor - %s dosyası kullanılıyor." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' bir şekilde 0 boyutlu-%s dosyası kullanılacak." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "%s için pat.met girdilerini kaydetme başarısız." #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "%i kaynak tohumu parça dosyası için kaydedildi: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "%i kaynak tohumu parça dosyası için kaydedildi: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Parça dosyasına ait girdi dosyası (%s - %s): %s okunamıyor." #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Bozuk parça (%d) %d parça dosyası %s içinde bulundu -Dosya sonuç adreslemesi " "|%s| Dosya adreslemesi |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Tamamlanmış (%i) parçası %s içinde bulundu." #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "%s dosyasının yeniden adreslenmesi bitti" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "%s tamamlanırken beklenmeyen bir hata oluştu. Dosya duraklatıldı" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Aktarım tamamlandı: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Dosya siliniyor: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "UYARI: İndirilen parça adreslenemiyor - adresleme seti '%s' için eksik" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "HATA: Aktarılan parça adreslenemiyor.- adres seti tamamlanmamış (%s). Bu hiç " "olmamalıydı" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "İndirilen %u bölümünün %u uzunluğunda (maksimum %u) parçasının ('%s' parça " "dosyasına ait (%u uzunluğunda)), adreslenmesinde EOF: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "UYARI: Yetersiz disk alanı! %s dosyası duraklatılıyor." #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "İndirilen %i parçası %s dosyasındaydı ve bozuk." #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "" "ICH: Bozulan %i parçası %s dosyasındaydı ve kurtarıldı -> Kaydedilen miktar: " "%s bayt" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Ayrılıyor" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Yetersiz disk alanı" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "İndirildi" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "HATA: Parça dosyası '%s' açılamıyor" #: src/Preferences.cpp:632 msgid "System default" msgstr "Sistem öntanımlısı" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Arnavutça" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Arapça" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "Asturyasça" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Baskça" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Bulgarca" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Katalanca" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Çince (Simplified)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Çince (Traditional)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Hırvatça" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Çekçe" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Danca" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Felemenkçe" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "İngilizce (U.K)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Estonca" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Fince" #: src/Preferences.cpp:648 msgid "French" msgstr "Fransızca" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Galce" #: src/Preferences.cpp:650 msgid "German" msgstr "Almanca" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Yunanca" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "İbranice" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Macarca" #: src/Preferences.cpp:654 msgid "Italian" msgstr "İtalyanca" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "İtalyanca (İsviçre)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Japonca" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Korece" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Litvanyaca" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Norveççe(Nynorsk)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Lehçe" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Portekizce" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Portekizce (Brezilya)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "Rumence" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Rusça" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Slovence" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "İspanyolca" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "İsveççe" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Türkçe" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Ukraynaca" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "Dili Değiştirin " #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "aMule tercümeleri kurulu değildir" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "Diller mevcut değil" #: src/Preferences.cpp:906 msgid "no options available" msgstr "mevcut seçenek yok" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Geçersiz sınıf bulundu, atlanıyor" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "TCP portu numarası, UDP soketi TCP+3 olduğundan 65532' den yüksek olamaz" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Varsayılan port kullanılacak (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Var olmayan paylaşılmış dizin kaldırılıyor: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "Bağlantı" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Dizinler" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Sunucular" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Dosyalar" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Güvenlik" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Arayüz" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Vekil sunucu" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Süzgeçler" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Uzak Denetimler" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Çevrimiçi İmza" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Gelişmiş" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Olaylar" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Hata Çıktısı" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "Şu değişkenler kullanılacak:\n" " %PARTFILE - dosyanın tam yolu\n" " %PARTNAME - dosyanın sadece adı" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Ne yaptığınızı bilmediğiniz sürece \n" "bu ayarları değiştirmeyiniz.\n" "Yoksa her şeyi karıştırabilirsiniz.\n" "\n" "Bu ayarlarla oynanmasa da\n" "aMule gayet iyi işleyecektir." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Cfg %d Kimliği ve %s anahtarı ile parçacığa bağlanamadı" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "Cfg' den %d Kimliği ve %s anahtarı ile Parçacığa veri aktarılamadı" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Bağlanacağınız vekil sunucu türü" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "Parçacıktan %d Kimliği ve %s anahtarı ile Cfg' ye veri aktarılamadı" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "Değişikliklerin uygulanması için, aMule yeniden başlatılmalı\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP portu değişti.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP Portu değişti.\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- Dışarıdan bağlantı portu değişti.\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- Dışarıdan bağlantı kabul edilme işlemi değişti.\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- Dışarıdan bağlantı arayüzü değişti.\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Protokol Gizleme" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Otomatik Sunucu güncelleme listeniz boş.\n" "'Sunucu listesini başlangıçta otomatikman güncelle' devre dışı bırakılacak." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Dışarıdan bağlantıları aktifleştirmiş ama bir şifre belirlememişsiniz.\n" "Geçerli bir şifre belirlenmedikçe dışarıdan bağlantılar devre dışı " "kalacaktır." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Dil ayarları değişti.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Geçici Dosyalar dizini değişti.\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- ED2K ağı etkinleştirildi.\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Hem eD2k hem de Kad ağları devre dışı bırakılmış.\n" "En az birini etkinleştirmeden bağlanamaycaksınız." #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "UDP portu devre dışı bırakılmışsa Kad başlamayacaktır.\n" "UDP portu açın veya Kademlia'yı devre dışı bırakın." #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "aMule' yi ŞİMDİ yeniden başlatmalısınız.\n" "Şimdi yeniden başlatmazsanız, kötü şeyler olabilir.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Sunucuları Otomatik-Güncelleme listeniz boş.\n" "Lütfen geçerli bir server.met dosyasını gösteren en az bir adres yazınız.\n" "Bir adres girmek için bu kutucuğun yanındaki \"Liste\" düğmesine basınız." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Geçici dosya(lar)" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Gelen dosya(lar)" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Çevrimiçi İmzalar" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "%s için bir dizin seçiniz." #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Ortam Çalıcısı için göz at" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Tarayıcı Seçiniz" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Çalıştırılabilir %s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Sunucu listesini düzenle" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Server.met dosyasını indirmek için buraya bağlantı adresi girin.\n" "Her satıra sadece bir adres yazılmalıdır." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Güncelleme gecikmesi: %d saniye" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Ortalama grafiği için süre: %d dakika" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Bağlantı Grafik Ölçüsü: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Dosya Alım Boyutu: %d bayt" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Gönderme Sıra Boyutu: %d kullanıcı" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Sunucu bağlantısı yenileme sıklığı: %d dakika" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Sunucu bağlantısı yenileme döngüsü: Devre dışı" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "devre dışı" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "'%s' olayında komut çalıştır." #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Çekirdekte komut çalıştırmayı aktifleştir." #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Çekirdek komutu:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Arayüzde komut çalıştırmayı etkinleştir." #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Arayüz komutu:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Şu girdiler değiştirilecek:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "En küçük boyut, en büyük boyuttan küçük olmalıdır. En büyük boyut göz ardı " "ediliyor." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Arama uyarısı." #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Ana" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Kad çalışmıyorsa, Kad. araması yapılamaz." #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "eD2k ağına bağlanılmamışsa eD2k araması yapılamaz" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Kad araması sırasında beklenilmeyen hata oluştu." #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "Dosya Adresi" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Dosya" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Sınıfa göre indir" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "Bu dosya için %s iste" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "İlgili dosyaları ara (eD2k, yerel sunucu)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Bilinen dosya olarak işaretle" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "eD2k bağlantısını panoya kopyala" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "İptal edildi" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "Yeni" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Listelenen gizlenmiş bağlantılı tüm sunuculara bağlanma başarısız. Gizlenmiş " "bağlantı olmadan geçiş yapılacak." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Listelenen sunucuların hiç birine bağlanılamadı. Başka bir geçiş yapılıyor." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "eD2k ağı ayarlarda devre dışı bırakılmış, bağlanılmıyor." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "Sunucu listesinde bağlanılabilecek geçerli bir sunucu yok" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr " %s (%s:%i) sunucusuna bağlanıldı" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "%s sunucusuna bağlanıldı" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Önemli Hata: Bağlantı sağlanamıyor. İnternet bağlantınız kopmuş olabilir." #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Bağlantı kaybedildi: %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) görünüşe göre ölü." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) görünüşe göre dolu." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Sunucuya otomatik bağlanma %d saniye içinde tekrar denenecek" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Bağlantı Koptu" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "%s (%s:%i) adresine bağlantı başarısız." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "HATA: Zaman aşımı denetlemesinde soket geçersiz" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "%s (%s:%i) adresine bağlanma denemesi zaman aşımına uğradı." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "DNS araştırmasında geç sonuç alındı, atlanıyor." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Server.met dosyası yükleniyor: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Server.met dosyası bulunamadı!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "Server.met dosyası '%s' açılamadı. Bilinmeyen format." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Server.met açılamadı!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "Server.met dosyası bozuk, geçersiz sürüm eki bulundu: 0x%x, size %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i adet sunucu server.met dosyasında bulundu" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "%d adet sunucu eklendi" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "Hata: 'server.met' dosyası bozuk: " #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "'server.met' dosyası okumada IO hatası:" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Sunucu eklenmedi: [%s:%d] geçerli bir port içermiyor." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Sunucu eklenmedi: [%s:%d] IP'si süzüldü veya geçersiz." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "Sunucu eklenmedi: Listede IP:Portu [%s:%d] eşleşen bir sunucu bulundu." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Sunucu eklendi: [%s:%d] adresindeki sunucu '%s' adını kullanıyor." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Silmeye çalıştığınız sunucuya bağlı durumdasınız. Lütfen, öncelikle " "bağlantıyı kesiniz." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "'%s' açma başarısız" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Server.met kaydetme işlemi başarısız!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Geçersiz adres" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "%s adresinden sunucu listesi aktarımı tamamlandı." #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "'addresses.dat' dosyasında hiç sunucu listesi adresi bulunamadı. Lütfen " "sunucu listenizi otomatik güncellemek için bu bu dosyaya sunucu listesi " "dosyası yapıştırın" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Sunucu listesini %s adresinden indirmeye başla." #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "UYARI: sunucuların otomatik güncellenmesi için geçersi URL girildi: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "address.dat üzerinde, geçerli bir server.met güncelleme adresi bulunamadı." #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "%s adresinden sunucu listesi alınamadı." #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "" "Yerel sunucu IP Süzgeci tarafından engellendi, başka bir sunucuya " "bağlanılıyor!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Sunucu Adı" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Adres" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Port" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Açıklama" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Kullanıcılar" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Statik Sunucu" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Sürüm" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Silmeye çalıştığınız bir sunucuya bağlısınız. Lütfen önce bağlantıyı " "kesiniz. Sunucu SİLİNMEDİ." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(Bilinmeyen ad)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Statik sunucu %s'i silmek istediğinizden emin misiniz?" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Sunucular (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Sunucu" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "Sunucuya bağlan" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Sunucuyu statik olarak işaretle" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Sunucuyu statik olmayan olarak işaretle" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Sunucuları statik olarak işaretle" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Sunucuları statik olmayan olarak işaretle" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Sunucuyu kaldır" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Sunucuları kaldır" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Bütün sunucuları kaldır" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "eD2k bağlantısını panoya kopyala" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Sunucuya yeniden bağlan" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Hepsini silmek istediğinizden emin misiniz?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Seçili sunucuyu silmek istediğinizden emin misiniz?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Seçili sunucuları silmek istediğinizden emin misiniz?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "HATA: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "UYARI: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Yeni kullanıcı kimliğiniz %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "UYARI: Düşük ID aldınız!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tBüyük ihtimalle bir güvenlik duvarı veya router arkasındasınız." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\tDaha fazla bilgi için: http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Bilinmeyen sunucu bilgisi alındı! - çok kısa" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "%d adet yeni sunucu alındı" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Sunucu listesinin kaydı tamamlandı." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Sunucu son komutu reddetti" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "Sunucudan bozuk paket alındı: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "Sunucudan paket alınırken beklenmeyen hata: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "%s bağlantısı için DNS çözümlemesi yapılamıyor." #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "Sunucu IP. %s (%s) süzüldü. Bağlanılmıyor." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "protokol gizleme kullanılarak bağlanıyor." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "%s (%s - %s:%i) adresine %s ." #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Sunucu %s için DNS çözümlenemiyor: Bağlanmak imkansız!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Sunucu eklenmedi: Bir IP veya makine adı girilmedi." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Sunucu eklenmedi: Geçersiz sunucu portu girildi." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "eD2k Durumu:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kademlia Durumu:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "LAN kipinde çalışıyor" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Çalışıyor" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Durum:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Bağlantı Durumu:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "Güvenlik Duvarı - router veya güvenlik duvarınızda %d TCP portunu açın" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "UDP Bağlantı Durumu:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "Güvenlik Duvarı - router veya güvenlik duvarınızda %d UDP portunu açın" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Güvenlik duvarı durumu: " #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Eşe gerek yok - TCP portu açık" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Eşe gerek yok - UDP portu açık" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Eş yok" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "Eşe Bağlanıyor" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "Eşe %s üzerinde bağlandı" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Fihristlenen Kaynaklar:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Fihristlenen anahtar kelimeler: " #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Fihristlenen notlar: " #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Fihristlenen yük: " #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Kullanıcı Ortalaması:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Dosya Ortalaması:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Çalışmıyor" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "%s dosyası paylaşılanlara ekleniyor" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Bilinen %i adet paylaşılmış dosya bulundu" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Bilinen %i adet paylaşılmış dosya bulundu. Bilinmeyen %i adet" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "HATA: %s paylaşılmak istendi" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Paylaşılan dizin bulunamadı, atlanıyor: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Dizinde paylaşılabilir dosya bulunamadı: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "Kullanıcı Adı" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "İndirme Hızı" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "Gönderme Hızı" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "Erişilebilir Parçalar" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "Gönderme Durumu" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "İndirme Durumu" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "Köken" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "Yerel Dosya Adı" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "Paylaşılan Dosyalar Listesi" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "İstekler" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Kabul Edilen İstekler" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Aktarılan Veri" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Paylaşım Oranı" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Alınan Parçalar" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Tam Kaynak Sayısı" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Dizin Konumu" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Yorum/Puanlama Ekle" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Yorum/Puanlama Düzenle" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Yeniden Adlandır" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Koleksiyondaki dosyaları aktarım listesine ekle" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Magnet &bağlantısını panoya kopyala" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "eD2k bağlantısını panoya kopyala (&Kaynak)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "" "eD2k bağlantısını panoya kopyala (Kaynak) (&Şifreleme seçenekleriyle " "birlikte)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "eD2k bağlantısını panoya kopyala (&Makine Adı)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "" "eD2k bağlantısını panoya kopyala (Makine adı) (&Şifrelem seçenekleriyle " "birlikte)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "eD2k bağlantısını panoya kopyala (&AICH bilgisi)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "eD2k bağlantısını panoya kopyala (&AICH bilgisi)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "" "Geçerli bir kaynak bağlantısı oluşturmak için YüksekID almanız gerekiyor" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Paylaşılan Dosyalar (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[Parça Dosyası]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "Dosya Adı" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Gönderilen Veri (Oturum (Toplam)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Toplam Ek Yük (Paket): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Dosya İstemi Ek Yükü (Paket): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Kaynak Değişimi Ek Yükü (Paket): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Sunucu Ek Yükü (Paket):%s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Kad Ek Yükü (Paketler): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Şifreleme ek yükü (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Aktif Gönderimler: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Bekleyen Gönderimler: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Toplam başarılı gönderme oturumu: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Toplam başarısız gönderme oturumu: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Ortalama gönderme süresi: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Aktarılan Veri (Oturum (Toplam)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Bulunan Kaynaklar: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Aktif İndirmeler (parçalar): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Oturum GÖN:İND Oranı (Toplam): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Ortalama aktarım oranı (Oturum): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Ortalama gönderim oranı (Oturum): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "En fazla aktarım oranı (Oturum): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "En fazla gönderim oranı (Oturum): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Yeniden Bağlanma: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "İlk Aktarımdan Beri Geçen Süre: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "%s beri Sunucuya Bağlı" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Aktif Bağlantılar (yaklaşık): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Ulaşılan En Fazla Bağlantı Sınırı: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Ortalama Bağlantılar (yaklaşık): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Doruk Bağlantılar (yaklaşık): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Kullanıcılar" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "Bilinmiyor: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "Süzülen: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "Engellenen: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Toplam: %i Bilinen: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Çalışan Sunucular: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Başarısız Sunucular: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Toplam: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Silinen Sunucular: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Süzülen Sunucular: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Çalışan Sunuculardaki Kullanıcı Sayısı: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Çalışan Sunuculardaki Dosya Sayısı: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Toplam Kullanıcılar: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Toplam Dosyalar: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Sunucu Bağlantısı: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Paylaşılmış Dosya Sayısı: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Paylaşılan Dosyaların Toplam Boyutu: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Ortalama dosya boyutu: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "İşletim Sistemi" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Alınmadı" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Aktif Bağlantılar (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Devre dışı" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Hiç" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "`%s' komutu, pid `%d' içermekteydi ve durum kodu `%d' ile sona erdi." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr " çalıştır ve çık." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Geçersiz IP biçimi. xxx.xxx.xxx.xxx:xxxx kullanınız.\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Bu komut bir argüman gerektiriyor. Geçerli argümanlar: 'all', dosya adı veya " "bir sayı.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Adresleme ile işleniyor: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Dosya adı ile işleniyor: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "" "Bu komut bir argüman gerektirir. Geçerli argümanlar: bir dosya adreslemesi.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Geçerli bir sayı değil\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Geçerli bir adresleme değil (uzunluğu tam olarak 32 karakter olmalı)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Daha fazla yardım için '%s' yazınız.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "İndirme Boyutu: %i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "İstem bilinmeyen bir hatayla başarısız oldu." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "İşlem başarılı." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "İstek şu hata ile başarısız oldu: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Kullanıcılar için IP Süzgeci %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "KAPALI" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "AÇIK" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Sunucular için IP süzgeci %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Şu anki IP Süzgeç seviyesi %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "Bağlantı sınırları: Gön: %u kb/s, İnd: %u kB/s.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "Bağlandı: %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Şimdi bağlanıyor" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "güvenlik duvarı" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "tamam" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "İndirme:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Gönderme:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Sıradaki Kullanıcılar:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Toplam Kaynak:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Arama sonuçları sayısı:%i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "Arama süreci: %u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "Arama süreci görüntülenemiyor" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Sunucudan bilinmeyen bir cevap alındı.: OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Kısa durum bilgisi göster." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "Bağlantı durumunu, o anki gönderim/aktarım hızını v.b. göster.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Tüm istatistik ağacını göster." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "İsteğe bağlı olarak, yazılım alt dallarının kaç girdisinin gösterilmesi " "gerektiğini söyleyen\n" "bu komuta 0-255 aralığında bir sayı, argüman olarak\n" "verilebilir.\n" "Boş bırakma veya 0 değerini verme 'sınırsız' demektir.\n" "\n" "Örnek: 'istatistik 5 sadece her yazılım türünün en üstteki 5 sürümünü " "gösterecektir.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "aMule' yi kapat." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Çalışan uzak çekirdeği kapat (amule/amuled).\n" "Bu ayrıca sonraki aracı da kapatacaktır; çünkü çalışan bir çekirdek olmadan\n" "bir işe yaramayacaktır.\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "Verilen nesne yeniden yükleniyor." #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "Paylaşılmış dosya listesini yeniden yükler." #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "Dosyadan IP süzgeci tablosunu yeniden yükler." #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "IP süzme seviyesini seçiniz." #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "Dosyadan IP süzgeci tablosunu yeniden yükler." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "Bir URL verilmediyse ayarlarda belirlenen URL kullanılır." #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "Ağa bağlan." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "Bu, ayarlarda etkinleştirilen tüm ağlara bağlar.\n" "Bağlanılacak bir sunucu adresini de IP:Port biçiminde belirleyebilirsiniz.\n" "IP onluk IPv4 adresi biçiminde veya çözümlenebilir\n" "bir DNS adı olmalıdır." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "Sadece eD2k ağına bağlan." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "Sadece Kad'a bağlan" #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Ağ bağlantısını kes." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Bu, şu anda bağlı olduğunuz tüm ağlarla bağlantıyı kesecektir.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Sadece eD2k bağlantısını kes." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Sadece Kad'dan bağlantıyı kes." #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "Çekirdeğe bir eD2k veya magnet bağlantısı ekler." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "Eklenecek eD2k bağlantısı şunlar olabilir:\n" "*) bir dosya, (ed2k://|file|...), indirme sırasına eklenecektir.\n" "*) bir sunucu, (ed2k://|server|...), sunucu listesine eklenecektir.\n" "*) veya bir sunucu listesi, listedeki tüm sunucular, sunucu listesine\n" " eklenecektir.\n" "\n" "Magnet bağlantısı eD2k adreslemesi ve dosya boyutunu içermelidir.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Bir ayar değeri girin." #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "IP Süzgeci ayarları girin" #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "IP süzgecini hem kullanıcılar hem de sunucular için aç." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "IP süzgecini hem kullanıcılar hem de sunucular için kapat." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "IP süzgecini kullanıcılar için Aç/Kapat." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "IP süzgecini kullanıcılar için aç." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "IP süzgecini kullanıcılar için kapat." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "IP süzgecini sunucular için Aç/Kapa" #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "IP süzgecini sunucular için aç." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "IP süzgecini sunucular için kapat." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "IP süzme seviyesini seçiniz." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Geçerli süzme seviyeleri 0-255 aralığındadır.Varsayılan\n" "değer 127'dir.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Bağlantı sınırlarını girin." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "Bu komutlar için girdiler kilobayt/saniye cinsinden olmalıdır.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Gönderme sınırını girin." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "Bu komutlar için girdiler kilobayt/saniye cinsinden olmalıdır.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "İndirme sınırını girin." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Bir ayar değerini al ve göster" #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "IP Süzgeci ayarlarını al" #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "Hem kullanıcılar hem de sunucular için IP süzgeci durumunu al." #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "Sadece kullanıcılar için IP süzgeci durumunu al." #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "Sadece sunucular için IP süzgeci durumunu al." #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "IP süzme seviyesini seçiniz." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Bağlantı sınırlarını al." #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "Kad araması yapar." #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Bir arama türü şu seçeneklerle belirlenmelidir:\n" " GENEL\n" " SUNUCU\n" " KAD\n" "Örnek:'kad dosyası ara' \"dosya\" için bir kad araması gerçekleştirir.\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "Genel arama yapar." #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "Sunucuda arama yapar." #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "Kad araması yapar." #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "Son arama sonuçlarını gösterir." #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "Önceki aramanın sonuçlarına döner.\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "Bir aramanın işleyişini göster" #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "Bir aramanın işleyişini gösterir.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Dosyayı indirmeye başla." #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Son arama sonucunda elde edilen dosya numarası verilmelidir.\n" "Örnek: '12 İndir' bir önceki aramadaki 12 numaralı dosyayı indirmeye " "başlayacaktır.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Aktarımı duraklat" #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Aktarıma devam et" #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Aktarım İptal." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "İndirme önceliği ayarla" #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Bir aktarımın önceliğini Düşük, Normal, Yüksek veya OTO. ayarla.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Önceliği Düşük ayarla." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Önceliği Normal ayarla." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Önceliği Yüksek ayarla." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Önceliği Otomatik ayarla." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Sıra/liste göster." #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Gönderme/indirme sırasını,sunucu listesini veya paylaşılmış dosya listesini " "gösterir.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Gönderim sırasını göster." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "İndirme sırasını göster." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Günlük kayıtlarını göster." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Sunucu listesini göster." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Günlük kayıtlarını sıfırla." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Geçersiz komut, yerine '%s' kullanın." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Bu geçersiz bir komut, ve gelecekte belki çıkartılabilir.\n" "Bunun yerine '%s' kullanın.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMule metin aracı" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "" "'%s' içindeki eski AICH adresleme setleri '%s' içindeki 64 b'ye çevriliyor." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "UYARI: '%s' dosya adı geçersiz ve'%s'olarak yeniden adlandırıldı." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "UYARI: '%s' dosyası zaten var ve '%s'olarak yeniden adlandırıldı." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Bu sınıf içindeki bütün dosyaları iptal edip silmek istediğinizden emin " "misiniz?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Onaylama Gerekiyor" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "Sadece 99 kategori deskteklenir." #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "Çok fazla kategori!" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Tüm Diğerleri" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Görünüm Süzgeci Seç" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Sınıf Ekle" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Sınıfı Düzenle" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Sınıfı Kaldır" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "" "(%s) dosyasını açma başarısız. Paylaşılan dosya listesinden çıkartılıyor." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Bilinmeyen dosya için adresleme seti istendi: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Şu dosya için gönderimler sürdürülüyor: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Şu dosya için gönderimler bekletiliyor: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "%s komutunun %s olayında çalıştırılması başarısız oldu." #: src/UserEvents.h:60 msgid "Download completed" msgstr "İndirme tamamlandı" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Dosyanın tam konumu." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Konum eki olmaksızın dosyanın tam adı." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "Dosyanın eD2k adreslemesi." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Dosyanın bayt cinsinden boyutu." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Toplam indirme hareketleri süresi." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Yeni sohbet oturumu başladı" #: src/UserEvents.h:85 msgid "Message sender." msgstr "İleti göndericisi." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Dolu" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Disk bölümü." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Tamamla sırasına hata" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "İşlenmekte olan dosya sayısı %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "Parça dosyalarını sormuştunuz (Sadece 9.5 MB' tan büyük dosyalar)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Var olmayan dosya !\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, aMule'nin eD2k bağlantı oluşturucusu" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Hoş geldiniz!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Girdi parametreleri" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Adreslenecek Dosya" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Bu dosya için isteğe bağlı adres ekleyin" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "eD2k bağlantısının hesaplanmasını istediğiniz dosyayı buraya girin" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "eD2k bağlantısına eklenecek URL' yi girin: aLinkCreator' ün geçerli dosya " "adını ekleyebilmesi için sonuna / ekleyin" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Çıkar" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Parça adreslemesi içeren bağlantı oluştur." #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Yeni ve nadir dosyaların yayılmasına yardımcı olun;bunun bedeli ise artan " "bağlantı boyutu olacaktır." #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4 Dosya Adreslemesi" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k Dosya Adreslemesi" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k bağlantısı" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Kaydet" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Panoya kopyala" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Aç" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "eD2k bağlantısını hesaplamak için bir dosya açın" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Hesaplanan eD2k bağlantısını panoya kopyala" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Farklı Kaydet" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Hesaplanan eDk2 bağlantısını dosyaya kaydet" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "aLinkCreator Hakkında" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "eD2k bağlantısının hesaplanacağı dosyayı seçiniz" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Pano açılamıyor" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Şimdilik kopyalanacak bir şey yok !" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Seçiniz" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Açılamıyor" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Lütfen boş olmayan bir dosya adı giriniz." #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Şimdilik kaydedilecek bir şey yok !" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, aMule eD2k bağlantı oluşturucusu\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmapler: http://www.everaldo.com ve http://www.icomania.com\n" "ve http://jimmac.musichall.cz/ikony.php3\n" "\n" "GPL altında dağıtılır." #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Adresleniyor." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator sizin için çalışıyor" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "MD4 Adreslemesi hesaplanıyor..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "eD2k Adreslemeleri hesaplanıyor..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "İptal Edildi !" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "%.2f s içinde tamamlandı." #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Bu adresi zaten eklemiştiniz. !" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Lütfen boş olmayan bir adres giriniz." #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "%s açılamıyor." #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i gün %i saat %i dakika %i saniye" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uD %02uh %02udk. %02us" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uh %02udk. %02us" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02udk. %02us" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02us" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, aMule Bağlantı İstatistikleri" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "wxCas çalışmaya başladığından beri en fazla aktarım oranı" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "wxCas'ın önceki açılışlarındaki kesin En Fazla İND. oranı" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Sistem" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Otomatik Yenilemeyi Durdur." #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Bağlantı İstatistikleri imajını kaydet." #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Bağlantı İstatistikleri imajını yazdır." #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Ayarlar" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "wxCas Hakkında" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Otomatik Yenilemeyi Başlat" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Otomatik Yenilemeyi Durdu." #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Otomatik Yenileme Başladı." #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "İstatistik imajını kaydet." #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMule Bağlantı İstatistikleri" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Yazdırmada bir sorun var.\n" "Yazıcınız doğru ayarlanmamış olabilir mi?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Yazdırılıyor" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule Çevrim içi İmza İstatistikleri\n" "\n" "(c) 2004 ThePolish \n" "\n" " Pedro de Oliveira' nın geliştirdiği CAS üzerine " "kurulmuştur.\n" "\n" "GPL altında dağıtımı yapılır." #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "Aman Aman, aMule çalışmıyor..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule çalışıyor" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule çalışıyor ama bağlı değil." #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule bağlanıyor..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Aman aman, aMule'nin durumu bilinmiyor..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr "çalışıyor" #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " durdu !" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " bağlı değil !" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr "bağlanıyor..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr "garip şeyler yapıyor, denetleyiniz !" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " şuna bağlandı:" #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr "Kad:" #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "bağlı değil" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr "bağlı" #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr "ile" #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Toplam Aktarım: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", Gönderme: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Oturumdaki Aktarım: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Aktarım: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s, Gönderme " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr "kB" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Paylaşılan: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " dosya(lar), Sıradaki kullanıcılar:" #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Süre: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " bağlı " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Sistem Yükü Ortalaması (1-5-15 dk.): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Sistem çalışma süresi: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Dizin amulesig.dat dosyası içeriyor" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Buraya amulesig.dat dosyasının bulunduğu dizini giriniz" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Saniye bazında yenileme döngüsü" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Her yenileme olayında bir durum imajı oluştur" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Buraya istatistik imajının oluşturulacağı dizini giriniz." #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Durum imajını düzenli olarak FTP sunucusuna gönder." #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP bağlantısı" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP Yolu" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Buraya FTP Sunucunuz için adresi giriniz." #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "Buraya durum imajını koyacağınız FTP Sunucusundaki bir dizini giriniz." #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Kullanıcı" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "FTP sunucunuza girebilmek için bir Kullanıcı adı giriniz." #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "FTP sunucunuza girebilmek için bir Şifre giriniz." #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Dakika bazında FTP günceleme hızı" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Onayla" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Dizin imza dosyanızı içeriyor." #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "İstatistik imajının üretildiği dizin" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Şablonu yükler " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "web sunucusu HTTP portu" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Web sunucu portu üzerine iletmek için UPnP portunu kullanın" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP portu" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Gzip sıkıştırması kullan" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Web sunucusu için tam erişim parolası" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Web sunucusu için konuk parolası" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Konuk girişine izin ver" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Konuk girişini reddet" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Web sunucusu ayarlarını uzak aMule'ye/ aMule'den kaydet/yükle" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMule yapılandırma yolu: DOĞRUDAN KULLANMAYINIZ!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "PHP yorumcusunu devreden çıkar. (onaylanmamış)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Her istemde PHP sayfalarını yeniden oluştur" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule Web Sunucusu" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "web aracı bağlantısı kabul edildi\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "HATA: web aracı bağlantısı kabul edilemiyor\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "İstem şu hatayla başarısız oldu: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Fihristleme dosyası bulunamadı: " #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Oturum sona erdi - giriş gerekiyor\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Oturum tamam, giriş yapıldı.\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Oturum tamam, giriş yapılmadı.\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Hiç oturum açılmadı - giriş gerekecek\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Oturum oluşturuldu.- giriş gerekiyor\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "İstem işleniyor [özgün]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "Bir parola belirtilmemiş. Giriş yapılamaz." #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Şifre denetleniyor\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Şifre adreslemesi geçersiz.\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Şifre kabul edildi.\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Şifre kötü.\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Herhangi bir şifre girmediniz. Boş şifre kullanılamaz.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Çıkış istendi.\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "İstem işleniyor [yönlendirilmiş]: " #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "%s (%s) parça dosyası girdi dosyasına sahip değil." #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Parça dosyası %s (%s) geçersiz girdi dosyası içeriyor." #~ msgid "Download status" #~ msgstr "İndirme Durumu" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Güncelleme gecikmesi: %d saniye" #~ msgstr[1] "Güncelleme gecikmesi: %d saniye" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "Uzak arayüzde yorum ve puanlama henüz desteklenmemektedir." #~ msgid "Transferring" #~ msgstr "Aktarılıyor" #~ msgid "QR: ???" #~ msgstr "SR: ???" #~ msgid "QR: %u" #~ msgstr "SR: %u" #~ msgid "Only files currently uploading" #~ msgstr "Şu anda sadece gönderilen dosyalar" #~ msgid "Queue Rank" #~ msgstr "Kuyruk Sırası" #~ msgid "TODO - show progress of a search" #~ msgstr "YAPILACAK - bir aramanın gidişatını göstermek." #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "%s dosyası için MD4 ve AICH adreslemesi oluşturulmaya başlanıyor " #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "%s dosyası için MD4 adreslemesi oluşturulmaya başlanıyor." #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "%s dosyası için AICH adreslemesi oluşturulmaya başlanıyor." #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "UYARI: Yedekleme oluşturulduktan sonra özgün '%s' çıkartılamıyor" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "UYARI: %s dosyası silinemiyor" #~ msgid "%u" #~ msgstr "%u" #~ msgid "%u (QR: %u)" #~ msgstr "%u (SR: %u)" #~ msgid "Rating (total):" #~ msgstr "Puanlama (toplam):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Bütün gönderimlere tam parçaları yollamayı dene" #~ msgid "Networks window" #~ msgstr "Ağ Penceresi" #~ msgid "Searches window" #~ msgstr "Arama Penceresi" #~ msgid "Downloads window" #~ msgstr "İndirme penceresi" #~ msgid "Shared files window" #~ msgstr "Paylaşılan dosya penceresi" #~ msgid "Messages window" #~ msgstr "Sohbet penceresi" #~ msgid "Statistics graph window" #~ msgstr "İstatistik penceresi" #~ msgid "Preferences settings window" #~ msgstr "Ayar penceresi" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Sistem tablası simgesi kayboldu, yeniden oluşturulma deneniyor..." #~ msgid "Transfers" #~ msgstr "Aktarımlar" #~ msgid "Files transfers window" #~ msgstr "Dosya aktarım penceresi" #~ msgid "Unban" #~ msgstr "Yasaklama" #~ msgid "Show Uploads" #~ msgstr "Gönderimleri Göster" #~ msgid "Show Queue" #~ msgstr "Sırayı Göster" #~ msgid "Select View" #~ msgstr "Görünüm Seçiniz" #~ msgid "Client Software" #~ msgstr "İstemci Yazılımı" #~ msgid "Waited" #~ msgstr "Beklenen" #~ msgid "Upload Time" #~ msgstr "Gönderme Süresi" #~ msgid "Upload/Download" #~ msgstr "Gönderme/İndirme" #~ msgid "Remote Status" #~ msgstr "Uzak Durumu" #~ msgid "File Priority" #~ msgstr "Dosya Önceliği" #~ msgid "Score" #~ msgstr "Skor" #~ msgid "Asked" #~ msgstr "Soruldu" #~ msgid "Last Seen" #~ msgstr "Son Görülme" #~ msgid "Entered Queue" #~ msgstr "Girilen Sıra" #~ msgid "Transferred Up" #~ msgstr "Gönderilen" #~ msgid "Transferred Down" #~ msgstr "İndirilen" #~ msgid "Userhash" #~ msgstr "Kullanıcı Adreslemesi" #~ msgid "Encrypted" #~ msgstr "Şifrelenmiş" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "%d adet bit işlem bayrağı yüklendi." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Gönderim/Gön-sırasını Gösterir." #~ msgid "Clients on queue :" #~ msgstr "Sıradaki Kullanıcılar:" #~ msgid "Current Session" #~ msgstr "Şimdiki Oturum" #~ msgid "Total" #~ msgstr "Toplam" #~ msgid "Requested :" #~ msgstr "İstenilen :" #~ msgid "Create backup for preview" #~ msgstr "Ön izleme için yedekleme oluştur" #~ msgid "Files Transfers Window" #~ msgstr "Dosya Aktarım Penceresi" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Toplam Kullanıcılar: %s | Toplam Dosyalar: %s" #~ msgid "Download size not received, downloading until connection is closed" #~ msgstr "" #~ "İndirme boyutu alınamadı, bağlantı kesilinceye kadar indirme sürecek." #~ msgid "HTTP download thread ended" #~ msgstr "HTTP aktarımı bitti" #~ msgid "Host: %s:%i\n" #~ msgstr "Makine: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Cevap:%i (Hata: %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "UYARI: Akış oluşumunda geçersiz cevap" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "HATA: Yeniden yönlendirme kodu URL olmaksızın alındı" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country(): Ülke verisi yükleme başarısız " #~ msgid "Get IPFilter level." #~ msgstr "IP Süzgeç seviyesini al." #~ msgid "Makes a search." #~ msgstr "Arama yapar." #~ msgid "Killed!" #~ msgstr "Öldürüldü!" #~ msgid "Using amuleweb in '%s'." #~ msgstr "'%s'te amuleweb kullanılıyor." #~ msgid "Shutting down aMule..." #~ msgstr "aMule Kapatılıyor..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "" #~ "Aşağıdaki seçenekler güvenlik sebebiyle bu sürümde değiştirilmiştir:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Gelen ve giden bağlantılar için Protokol Gizleme \n" #~ "etkinleştirildi.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Sunucu listesinin diğer sunucular ve kullanıcılardan güncellenmesi " #~ "devre dışı bırakıldı.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Bu değişikliklerin sebepleri hakkında bilgi için;\n" #~ " http://wiki.amule.org adresindeki aMule Wiki \"sahte sunucular\" " #~ "bilgisini araştırın.\n" #~ "aMule'nin düzgün çalışabilmesi için sunucu listenizdeki sahte sunucuları " #~ "temizlemeniz çok önemlidir." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "Ayrıca, tarayıcı ayarları sistem ön tanımlısına ayarlanmıştır. Gerekirse, " #~ "lütfen tarayıcı seçeneklerini yeniden yapılandırın.\n" #~ msgid "Fetching status..." #~ msgstr "Durum alınıyor..." amule_2.3.1+git20151120.0023527bc2.orig/po/uk.po0000644000175000017500000075252112611472361017114 0ustar morphmorph# Ukrainian translations for aMule SVN package # Переклад українською для пакету aMule SVN. # Copyright (C) 2008-2011 Free Software Foundation, Inc. # This file is distributed under the same license as the aMule SVN. # # okovalenko , 2008. msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2008-12-17 11:21+0200\n" "Last-Translator: Oleksandr Kovalenko \n" "Language-Team: Ukrainian \n" "Language: uk\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" "X-Poedit-Language: Ukrainian\n" "X-Poedit-Country: UKRAINE\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "Додати друга" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "Ви повинні ввести вірну IP-адресу та порт!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "Інформація" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "Визначений хеш користувача невірний" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "Не вдалося відкрити файл ED2KLinks." #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "" "ЗАСТЕРЕЖЕННЯ: ви не можете додати себе як джерело для eD2k-посилання маючи " "LowID." #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "Тепер, виходимо з головної програми..." #: src/amule.cpp:248 #, fuzzy, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "Вбиваю екземпляр amuleweb з pid `%ld' ... " #: src/amule.cpp:251 #, fuzzy, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "Вбиваю екземпляр amuleweb з pid `%ld' ... " #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "Невдалі" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule OnExit: Завершується core." #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "Завершення роботи aMule закінчене." #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "Наслідки зневадження пам'яті для виходу aMule:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "Налаштування зовнішніх з'єднань" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "Пароль встановлений та дозволені зовнішні з'єднання." #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "ЗАСТЕРЕЖЕННЯ" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "" "Ваша локаль змінена на системну за замовчуванням із-за зміни налаштувань. " "Вибачте." #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "Інфо" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "Ви не маєте жодного серверу в переліку серверів.\n" "Хочете, щоб aMule звантажив зараз новий?" #: src/amule.cpp:581 msgid "Server list download" msgstr "Звантажити перелік серверів" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "Веб-сервер запущений з %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "Ви встановили запуск веб-сервера під час завантаження, але amuleweb не може " "бути запущено. Будь ласка, встановіть пакунок, що містить веб-сервер aMule, " "зберіть aMule з --enable-webserver та виконайте make install" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "ПОМИЛКА" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "Неможливо прив'язати порт до визначеної адреси: %s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "Порт %u недоступний. Ви будете мати LowID\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "Порт %u недоступний!\n" "\n" "Це означає, що ви отримаєте LowID.\n" "\n" "Перевірте вашу мережу, щоб впевнитись, що порт відкритий." #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "Неможливо створити файл онлайн-підпису" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "Неможливо створити файл онлайн-підпису aMule" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "Обрана локаль здається не встановлена. (примітка: спроба встановити її в " "будь-якому випадку)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "Ви запускаєте aMule %s вперше" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "Це тестова версія, оновлюється щодня, та\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "" "ми не даємо жодної гарантії, якщо вона щось пошкодить, спалить ваш будинок,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "або вб'є собаку. Але вона *має бути* безпечною у використанні всюди.\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "" "Більше подробиць, підтримка та нові випуски можуть бути знайдені на нашій " "сторінці,\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "" "на www.aMule.org, або у нашому IRC-каналі #aMule на irc.freenode.net.\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "Не соромтеся повідомити про будь-які помилки на http://forum.amule.org" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "Тека для файлів онлайн-підпису НЕВІРНА!\n" "Онлайн-підпис буде ВИМКНЕНО поки ви не виправите це в налаштуваннях." #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "Назва сервера повідомлена" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "Не вдалося виділити місце на диску для файлу '%s': %s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "ПОМИЛКА: не можу відкрити файл часопису" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "ЗАСТЕРЕЖЕННЯ: журнал порожній. Щось негаразд." #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "Часопис очищено" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "Повідомлення сервера: %s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "Не вдалося звантажити перелік вузлів." #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "Не вдалося відкрити звантажений файл перевірки версії" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "Файл перевірки версії зіпсований" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "Ви використовуєте застарілу версію aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "Ваша версія aMule %i.%i.%i, а остання %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "Остання версія може бути завжди знайдена на http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "ЗАСТЕРЕЖЕННЯ: Ваша версія aMuled застаріла: %i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "Ваша копія aMule оновлена." #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "Неможливо звантажити файл перевірки версії" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "Користувачі: %s | Файли: %s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "Користувачі: %s K: %s | Файли: E: %s K: %s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "Не вибрано жодної мережі" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "з LowID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "з HighID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "З'єднано з %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "З'єднується з %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "Від'єднано від eD2k" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad запущена." #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad зупинена." #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "З'єднано з Kad (все гаразд)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "З'єднано з Kad (за фаєрволом)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "Від'єднано від Kad" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "" "Мережа Kad не може бути використана якщо UDP-порт вимкнено в налаштуваннях, " "не починаю." #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Мережа Kad вимкнена в налаштуваннях, не з'єднуюсь." #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "ПОМИЛКА: демон aMule не може бути використаний з вимкненими зовнішніми " "з'єднаннями. Щоб ввімкнути зовнішні з'єднання, використовуйте або звичайний " "режим з опцією --ec-config або встановіть \"AcceptExternalConnections\" в 1 " "в файлі ~/.aMule/amule.conf" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "ПОМИЛКА: необхідний вірний пароль, щоб використовувати зовнішні з'єднання, і " "демон aMule не може бути використаний без зовнішніх з'єднань. Щоб запустити " "демон aMule, ви маєте встановити відповідне значення у полі \"ECPassword\" у " "файлі ~/.aMule/amule.conf. Виконайте amuled з параметром --ec-config, щоб " "встановити пароль. Більше інформації можете знайти на http://wiki.amule.org" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled: OnInit - запускається timer" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: переходимо у фоновий режим - до зустрічі" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "ПОМИЛКА: %s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "Це aMule %s оснований на eMule." #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "Запущений на %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "" "Відвідайте http://www.amule.org, щоб перевірити наявність нових версій." #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "ЖАХЛИВА ПОМИЛКА: не вдалося створити Timer" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "Віддалене керування aMule" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "Знімок:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "'Багатоплатформений' p2p-клієнт, що оснований на eMule \n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "Сторінка в Інтернет: http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "Форум: http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ: http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "Контакт: admin@amule.org (адміністративні питання) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 aMule Team \n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "Частина aMule основана на \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia: Peer-to-peer routing based on the XOR metric.\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "Повідомлення" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "Діалог aMule знищений" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "З'єднується" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k: з'єднання" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k: від'єднаний" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad: за фаєрволом" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad: з'єднаний" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad: з'єднуюсь" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad: вимкнена" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "Скасувати" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "Зупинити поточні спроби з'єднань" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "Від'єднатися" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "Від'єднатися від з'єднаних мереж" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "З'єднатися" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "З'єднатися з дозволеними мережами" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "Вивантаження: %.1f(%.1f) | Звантаження: %.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "Вивантаження: %.1f | Звантаження: %.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | З'єднано)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | Від'єднано)" #: src/amuleDlg.cpp:913 #, fuzzy, c-format msgid "Do you really want to exit %s?" msgstr "Ви справді хочете вийти з aMule?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "Підтвердження виходу" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "Команда для запуску: " #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- за замовчуванням -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "Тека з шкірами '%s' не існує" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "ЗАСТЕРЕЖЕННЯ: Неможливо відкрити файл шкіри '%s' для читання" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "Мережі" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "Вікно мереж" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "Пошук" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "Вікно пошуку" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "Звантаження" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 #, fuzzy msgid "Downloads Window" msgstr "Звантажується" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "Спільні файли" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "Вікно спільних файлів" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "Повідомлення" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "Вікно повідомлень" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "Статистика" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "Вікно статистики" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "Налаштування" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "Вікно налаштувань" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "Зовн. внесення" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "Засіб зовнішнього внесення частково звантажених файлів" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "Про програму" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "Про/Допомога" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "Мережа eD2k" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Мережа Kad" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "Немає мережі" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "Віддалене керування aMule" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "Жахлива помилка: не вдалося створити Core Timer" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "З'єднатися з віддаленим aMule" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "Жахлива помилка: не вдалося створити Poll Timer" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "Переходимо до циклу обробки подій..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "З'єднання..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "З'єднання невдале " #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "Віддалений обробник подій зовнішніх з'єднань графічного інтерфейсу" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "Вимикається" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "З'єдання невдале. Неможливо з'єднатися з %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "Готовий" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "Всі" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "Невідомо" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "Неможливо отримати спільні файли користувача %s" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "Шукається друг для lowid-з'єднання" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (Підробна версія eMule %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (Підробний eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (підробний eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (оснований на eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "Прізвисько: %s ID: %u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "Запросив: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Статистика файлів для цієї сесії: дозволено %d з %d запитаний, %s передано\n" msgstr[1] "" "Статистика файлів для цієї сесії: дозволено %d з %d запитаних, %s передано\n" msgstr[2] "" "Статистика файлів для цієї сесії: дозволено %d з %d запитаних, %s передано\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "" "Статистика файлів для всіх сесій: дозволено %d з %d запитаного, %s передано\n" msgstr[1] "" "Статистика файлів для всіх сесій: дозволено %d з %d запитаних, %s передано\n" msgstr[2] "" "Статистика файлів для всіх сесій: дозволено %d з %d запитаних, %s передано\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "Запитаний невідомий файл" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "Повідомлення відфільтроване від '%s' (IP:%s)" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "Нове повідомлення від '%s' (IP:%s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "" "Користувач %s (%u) запитав ваш перелік спільних файлів для теки %s -> " "відмовлено" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, fuzzy, c-format msgid "WARNING: %s cannot be opened." msgstr "ЗАСТЕРЕЖЕННЯ: не можна відкрити known.met." #: src/CanceledFileList.cpp:61 #, fuzzy msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "" "ЗАСТЕРЕЖЕННЯ: Перелік відомих файлів зіпсовано, містить неприпустимий " "заголовок." #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, fuzzy, c-format msgid "IO error while reading %s file: %s" msgstr "Помилка введення-виведення під час читання файлу known.met: %s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, fuzzy, c-format msgid "Error while saving %s file: %s" msgstr "Помилка під час збереження файлу known.met: %s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "Категорія" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "Нова категорія" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "Виберіть теку для вхідних файлів" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "Ви повинні визначити назву категорії" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "Ви повинні визначити шлях категорії!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "" "Неможливо створити вхідну теку для категорії. Будь ласка, вкажіть вірний " "шлях!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "Розмову розпочато: %s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** З'єднано з клієнтом ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** З'єднуюсь з клієнтом ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** Неможливо з'єднатись з клієнтом / з'єднання втрачене***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "Закрити вкладки" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "Закрити всі вкладки" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "Закрити інші вкладки" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "Додати до друзів" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "Завантажено файл довіри, %u відомий клієнт" msgstr[1] "Завантажено файл довіри, %u відомі клієнти" msgstr[2] "Завантажено файл довіри, %u відомих клієнтів" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - Довіра сплила для %u клієнта" msgstr[1] " - Довіра сплила для %u клієнтів" msgstr[2] " - Довіра сплила для %u клієнтів" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "Не знайдено 'cryptkey.dat', створюємо." #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "Подробиці клієнта" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "Дозволено" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "Підтримується" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "Не підтримується" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "Вимкнено" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "З'єднано" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "Від'єднана" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f кбайт/с" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "Незавершено" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "Поганий хлопець" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "Перевірено - добре" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "Недоступно" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "Користувач %s (%u) запитав ваш перелік спільних файлів -> Дозволено" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "Користувач %s (%u) запитав ваш перелік спільних файлів -> Відмовлено" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "Користувач %s (%u) запитав ваш перелік спільних тек -> Дозволено" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "Користувач %s (%u) запитав ваш перелік спільних тек -> Відмовлено" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "" "Користувач %s (%u) запитав ваш перелік спільних файлів для теки %s -> " "Дозволено" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "" "Користувач %s (%u) запитав ваш перелік спільних файлів для теки %s -> " "відмовлено" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "Користувач %s (%u) зробив спільною теку %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "Користувач %s (%u) надіслав незапитані спільні теки." #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "Користувач %s (%u) надіслав перелік спільних файлів для теки %s" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "Користувач %s (%u) завершив надсилати перелік спільних файлів" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "Користувач %s (%u) надіслав небажаний перелік спільних файлів" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "Користувач %s (%u) заборонив доступ до переліку спільних тек/файлів" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "Коментарі файлу" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "Ім'я користувача" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "Назва файлу" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "Рейтинг" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "Коментар" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "Немає коментарів" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u коментар" msgstr[1] "%u коментарі" msgstr[2] "%u коментарів" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" # перевага #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "Авто [низька]" # перевага #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "Авто [звичайна]" # перевага #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "Авто [висока]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "Дуже низька" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "Низька" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "Звичайна" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "Висока" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "Дуже висока" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "Випуск" #: src/DataToText.cpp:62 msgid "Asking" msgstr "Запитується" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "З'єднується через сервер" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "Черга заповнена" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "В черзі" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "Звантажується" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "Отримується набір хешів" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "Немає потрібних частин" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "Не можу з'єднати LowID з LowID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "Забагато з'єднань" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "З'єднується через Kad" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Забагато з'єднань Kad" # користувач #: src/DataToText.cpp:73 msgid "Banned" msgstr "заборонений" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "Помилка з'єднання" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "Віддалена черга заповнена" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "Старий MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "Новий MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "Сумісний з eMule" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "Місцевий сервер" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "Віддалений сервер" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "Обмін джерелами" #: src/DataToText.cpp:132 msgid "Passive" msgstr "Бездіяльні" #: src/DataToText.cpp:133 msgid "Link" msgstr "Посилання" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "Поширювачі джерел" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "Здобутки пошуку" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "Завершених" #: src/DataToText.cpp:146 msgid "In progress" msgstr "В дії" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "ПОМИЛКА: немає місця на диску" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "ПОМИЛКА: частковий met-файл не знайдений" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "ПОМИЛКА: помилка введення-виведення!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "ПОМИЛКА: невдача!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "В черзі" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "Вже звантажений" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "Невідомий або неправильний формат тимчасового файлу" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "Частина" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "Розмір" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "Переданих" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "Швидкість" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "Перебіг" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "Джерела" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "Перевага" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "Стан" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "Залишилось" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "Востаннє повний" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "Останнє отримання" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "Ви впевнені, що хочете видалити вибраний файл?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "Ви впевнені, що хочете видалити вибрані файли?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "Відгук від: %s (%s)\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "Автоматично" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "Зупинити" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "Призупинити" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "Продовжити" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "Видалити завершені" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "Віддати всі A4AF-джерела цьому файлу зараз" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "Віддати всі A4AF-джерела цьому файлу (авто)" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "Віддати всі A4AF-джерела іншим файлам зараз" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "Розширені налаштування" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "Попередній перегляд" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "Показати подробиці файлу" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "Показати всі коментарі" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "Скопіювати magnet-посилання в буфер обміну" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "Скопіювати eD2k-посилання до буферу обміну" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "Скопіювати інформацію відгуку до буферу обміну" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "прибрати" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "Призначити категорію" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "Відкрити файл" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "Введіть нову назву для цього файлу:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "Змінити назву файлу" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y.%m.%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "Звантаження (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "Щоб попередити показ цього застереження під час кожного попереднього " "перегляду,\n" "оберіть відеопрогравач в налаштуваннях (за замовчуванням mplayer)." #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "Попередній перегляд файлу" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "ПОМИЛКА: не вдалося виконати зовнішній медіа-програвач! Команда: '%s'" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "Зберігається частковий файл %u з %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "Всі часткові файли збережені." #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "Завантаження тимчасових файлів з %s." #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "Завантажуються частковий файл %u з %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "ПОМИЛКА: не вдалося завантажити файл резервної копії. Шукайте на http://" "forum.amule.org вирішення проблем відновлення .part.met" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "Всі часткові файли завантажені." #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "Не знайдено жодного часткового файлу" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "Знайдений %u частковий файл" msgstr[1] "Знайдені %u часткові файли" msgstr[2] "Знайдені %u часткових файлів" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "" "Файлова система для теки тимчасових файлів не може обробити великі файли." #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "Файлова система для теки вхідних файлів не може обробити великі файли." #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "Звантажую %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "Ви вже спробували звантажити файл '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "Ви вже маєте файл '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "Ви вже спробували звантажити файл %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "Неможливо перетворити magnet-посилання в eD2k-посилання: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "Невідомий протокол посилання: %s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "Невірне eD2k-посилання! ПОМИЛКА: %s" #: src/ExternalConn.cpp:261 #, fuzzy msgid "Client sent packet after authentication failed." msgstr "Аутентифікація не вдалася." #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "Зовнішнє з'єднання розірвано." #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "Зовнішні з'єднання вимкнені, оскільки відсутній пароль!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "Зовнішні з'єднання вимкнені у файлі налаштувань." #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "Дозволено нове зовнішнє з'єднання" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "ПОМИЛКА: неможливо дозволити нове зовнішнє з'єднання" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "" "Відмовлено у зовнішньому з'єднанні, оскільки в налаштуваннях порожній пароль!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "З'єднується клієнт: %s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "Невідома версія" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "Невірний ID версії EC, може бути двійкова несумісність. Використовуйте ядро " "та віддаленого клієнта з того самого зрізу" #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "Ви не можете під'єднатись до остаточної версії з довільної SVN-версії! " "Можлива відмова попереджена" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "Невірна версія протоколу." #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "Відсутня позначка версії протоколу." #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "" #: src/ExternalConn.cpp:510 #, fuzzy msgid "Authentication failed: wrong password." msgstr "Аутентифікація не вдалася." #: src/ExternalConn.cpp:512 #, fuzzy msgid "Authentication failed: missing password." msgstr "Аутентифікація не вдалася." #: src/ExternalConn.cpp:522 #, fuzzy msgid "Invalid request, please authenticate first." msgstr "Невірний запит, ви маєте спочатку представитись." #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "Дозвіл надано." #: src/ExternalConn.cpp:535 #, fuzzy, c-format msgid "Sent error message \"%s\" to client." msgstr "Фільтрувати повідомлення від невідомих клієнтів" #: src/ExternalConn.cpp:538 #, fuzzy, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "Спроба доступу без уповноваження. З'єднання розірвано." #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "Віддалена PartFile-команда не вдалася: хеш файлу не знайдено: %s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "Хеш файлу не знайдений: %s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "Помилка при виконання OpCode" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "Сервер не додано" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "сервер не знайдено: %s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "потрібно визначити сервер для видалення" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k вимкнена у налаштуваннях" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "Пошук просувається. За мить отримаю здобутки!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "Веб-пошук через віддалений інтерфейс не має сенсу. " #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "Немає точок для графіку." #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "Ваш клієнт не налаштований для такого рівня подробиць." #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "Зовнішнє з'єднання: запит на вимкнення" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "Вже вимикається." #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "Зовнішнє з'єднання: додається посилання '%s'" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "Недопустиме посилання або вже в переліку." #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "Файл не знайдено." #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "Недопустима назва файлу." #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "Неможливо змінити назву файлу." #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad вимкнена в налаштуваннях." #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "Вже з'єднано з eD2k" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "З'єднується з eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Вже з'єднано з Kad." #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "З'єднується з Kad" #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "Всі мережі вимкнені." #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "Від'єднується від eD2k." #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "Від'єднується від Kad." #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "Зовнішнє з'єднання: отримано недопустимий opcode: %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "Недопустимий opcode (невірна версія протоколу?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "Невідоме розширення '%s' для команди '%s'.\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "Невідома команда '%s'.\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "Ця команда не може мати аргумент.\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "Ця команда повинна мати аргумент.\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "Ця команда незавершена, ви повинні використати одне з розширень, що подані " "нижче.\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "Доступні розширення:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "Доступні команди:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "Всі команди розрізняють великі та малі літери.Введіть '%s ' щоб " "отримати докладну інформацію по .\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "Вийти з програми." #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "Показати допомогу." #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "Щоб отримати допомогу по команді, введіть 'help '.\n" "Щоб отримати повний перелік команд, введіть ''help\".\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "Використовуйте '%s' для переліку команд\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "Помилка синтаксису!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "" "Помилка обробки команди - не повинно ніколи такого бути! Будь, ласка, " "повідомте про помилку\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "Ця команда не повинна мати жодного параметру." #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "Ця команда повинна мати параметр." #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "Невірний аргумент." #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "Це незавершена команда" #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "Напишіть '%s' щоб отримати більше допомоги.\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "Це %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "Це %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "Створюється клієнт...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "Добре, виходимо %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "Неможливо з'єднатися з пустим паролем.\n" "Ви повинні визначити пароль чи в файлі налаштувань\n" "чи в командному рядку, або ввести на запит.\n" "\n" "Вихід...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "Показати цей текст допомоги." #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "Хост, де запущений aMule (за замовчуванням: localhost)." #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "Порт aMule для зовнішніх з'єднань (зазвичай: 4712)." #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "Пароль зовнішнього з'єднання" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "Читати налаштування з файлу." #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "Не друкувати нічого до stdout." #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "Бути докладним: показувати також всі повідомлення налагодження" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "Вибрати локаль програми (мова)." #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "Записати параметри командного рядка до файлу налаштувань." #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "Створити файл налаштувань оснований на файлі налаштувань aMule." #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "Друкувати версію програми." #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "Подробиці файлу" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% виконано" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f кбайт/с" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "Неможливо відкрити перелік друзів 'emfriends.met' для читання!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "Неможливо відкрити перелік друзів 'emfriends.met' для запису!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "КРИТИЧНО - немає клієнта на StartChatSession" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "Друзі" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "Показати подробиці" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "Додати друга" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "Видалити друга" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "Надіслати повідомлення" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "Переглянути файли" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "Встановити шматок для друга" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "Ви впевнені, що бажаєте видалити вибраного друга?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "Ви впевнені, що бажаєте видалити вибраних друзів?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "Встановлення більш ніж одного шматка для друга не дозволено.\n" "Був виділений тільки один слот." #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "Численний вибір" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "Надіслати повідомлення користувачу" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "Повідомлення:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "Видалити з друзів" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "Надіслати повідомлення" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "Перемкнути на цей файл" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "QR: %u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "Запитано інший файл" #: src/GenericClientListCtrl.cpp:1024 #, fuzzy msgid "Waiting for upload slot" msgstr "Вивантаження очікують: %s" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "В черзі" #: src/GenericClientListCtrl.cpp:1029 #, fuzzy msgid "Uploading" msgstr "Вивантаження" #: src/GenericClientListCtrl.cpp:1031 #, fuzzy msgid "None" msgstr "Жоден" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "Ні" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "Так" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "Звантажування..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "HTTP завантаження скасоване" #: src/HTTPDownload.cpp:205 #, fuzzy, c-format msgid "Unable to create destination file %s for download!" msgstr "Тека призначення для звантажень" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "" #: src/HTTPDownload.cpp:277 #, fuzzy, c-format msgid "Downloaded %d bytes" msgstr "Звантажені" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "" #: src/HTTPDownload.cpp:381 #, fuzzy msgid "Unable to connect to HTTP download server" msgstr "Перез'єднатись з сервером" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "Звантажую новий GeoIP.dat з %s" #: src/IP2Country.cpp:129 #, fuzzy msgid "Download of GeoIP.dat file failed, aborting update." msgstr "Неможливо видалити файл GeoIP.dat, оновлення зірване." #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, fuzzy, c-format msgid "Failed to remove %s file, aborting update." msgstr "Неможливо видалити файл GeoIP.dat, оновлення зірване." #: src/IP2Country.cpp:141 #, fuzzy, c-format msgid "Failed to rename %s file, aborting update." msgstr "Неможливо змінити назву нового файлу GeoIP.dat, оновлення зірване." #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, fuzzy, c-format msgid "Successfully updated %s" msgstr "Успішно оновлено GeoIP.dat" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "Помилка оновлення GeoIP.dat" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, fuzzy, c-format msgid "Failed to download %s from %s" msgstr "Не вдалося звантажити GeoIP.dat з %s" #: src/IP2Country.cpp:173 #, fuzzy, c-format msgid "Failed to load country data for '%s'." msgstr "Не вдалося звантажити GeoIP.dat з %s" #: src/IPFilter.cpp:113 #, fuzzy msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "Завантажую IP-filters 'ipfilter.dat' та 'ipfilter_static.dat'." #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "Звантаження файлу ipfilter.dat '%s' зазнало невдачі, невідомий формат" #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "" "Звантаження файлу ipfilter.dat '%s' зазнало невдачі, неможливо відкрити файл." #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "Завантажено %u обсяг IP-адрес з '%s'." msgstr[1] "Завантажено %u обсяги IP-адрес з '%s'." msgstr[2] "Завантажено %u обсягів IP-адрес з '%s'." #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "%u спотворений рядок був відкинутий." msgstr[1] "%u спотворені рядки були відкинуті." msgstr[2] "%u спотворених рядків були відкинуті." #: src/IPFilter.cpp:503 #, fuzzy, c-format msgid "Failed to rename new %s file, aborting update." msgstr "Неможливо змінити назву нового файлу GeoIP.dat, оновлення зірване." #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "" "Початковий запуск\n" "відомого клієнта" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "Вузли (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "Недопустима IP-адреса для початкового запуску" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "Недопустимий порт для початкового запуску" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "Будь ласка, заповніть потрібні поля" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "Ви впевнені, що хочете звантажити новий файл nodes.dat?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "" "Такі дії призведуть до видалення поточних вузлів та перез'єднання з Kademlia." #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "Продовжити?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kademlia: пошукове слово занадто коротке" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "Ключове слово для пошуку: %s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kademlia: пошукове слово вже в переліку пошуку: " #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "Прочитано %u контакт Kad" msgstr[1] "Прочитано %u контакти Kad" msgstr[2] "Прочитано %u контактів Kad" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "" "Не знайдено жодного контакту, будь ласка, здійсніть початковий запуск або " "звантажте файл nodes.dat" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "Тільки %d контакт Kad доступний, nodes.dat не записано" msgstr[1] "Тільки %d контакти Kad доступні, nodes.dat не записано" msgstr[2] "Тільки %d контактів Kad доступні, nodes.dat не записано" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "Записано %d контакт Kad" msgstr[1] "Записано %d контакти Kad" msgstr[2] "Записано %d контактів Kad" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "Назва файлу" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "Розмір файлу" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "Відношення передачі" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "Вивантажено" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "Запитано" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "Дозволено" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "Завершених джерел" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "" "ЗАСТЕРЕЖЕННЯ: Перелік відомих файлів зіпсовано, містить неприпустимий " "заголовок." #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "Невідома версія" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "Тека призначення для звантажень" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "Обчислюється хеш" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "Завершується" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "Завершений" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "Призупинений" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "Помилковий" # файл #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "Очікує" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "Ви повинні вказати непорожній пароль." #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "Неправильний пароль, не MD5-хеш" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "З'єднання невдале" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "EC з'єднання невдале. Порожня відповідь." #: src/libs/ec/cpp/RemoteConnect.cpp:258 #, fuzzy msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "Зовнішнє з'єднання: невірна відповідь сервера. З'єднання закрите." #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "Успіх! Встановлене з'єднання до aMule" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "Успіх! Встановлене з'єднання." #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "Зовнішнє з'єднання: в доступі відмовлено з причини: " #: src/libs/ec/cpp/RemoteConnect.cpp:278 #, fuzzy msgid "External Connection: Handshake failed." msgstr "Зовнішнє з'єднання: в доступі відмовлено" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "Потік звантаження HTTP розпочатий" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "ListenSocket: Гаразд." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "ПОМИЛКА: неможливо відкрити TCP-порт" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "ПОМИЛКА: " #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "ЗАСТЕРЕЖЕННЯ: " #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "Закрити" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "Вирізати" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "Скопіювати" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "Вставити" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "Очистити" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "Вибрати всі" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "кбайт/с" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "Безмежно" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule Tray Menu" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "Обмеження швидкості:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "Вивантаження: Немає" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "Вивантаження: %u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "Звантаження: немає" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "Звантаження: %u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "Швидкість звантаження: %.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "Швидкість вивантаження: %.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "Інформація клієнта" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "Прізвисько: %s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "Не вибрано прізвисько!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "ID клієнта:" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "Не з'єднаний" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "Назва серверу:" #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "IP серверу: " #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "Не з'єднано" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP: %s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "Порт TCP: %d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "Порт TCP: не готовий" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "Порт UDP: %d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "Порт UDP: не готовий" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "Online-підпис: увімкнено" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "Online-підпис: вимкнено" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "Час роботи: %s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "Спільні файли: %d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "Клієнтів в черзі: %d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "Всього звантажень: %s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "Всього вивантажень: %s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "Обмеження вивантаження" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "Обмеження звантаження" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "Сховати aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "Показати aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "Вийти" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k-посилання:" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "Підтвердити" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "" "Натисніть щоб додати eD2k-посилання в текстовий нагляд до черги звантажень." #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "" "Тут відображаються події. Для повного переліку подій, зверніться до часопису " "у вкладці серверів." #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "Завантаження..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "Кількість користувачів на сервері, з якими ви з'єднані..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "Користувачів: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "" "Користувачі, що з'єднані з поточним сервером, та оцінка загальної кількості " "користувачів." #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "Вивантаження: 0.0 | Звантаження: 0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "" "Поточні швидкості вивантаження та звантаження. Значення в дужках (якщо " "ввімкнено) відображають службовий трафік зв'язку клієнтів." #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "Відображає стан з'єднання та чинні передачі. Червоні стрілки означають, що " "ви не з'єднані, жовті - маєте LowID (за фаєрволом), зелені - маєте high ID " "(найкраще)." #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "Не з'єднано..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "З'єднаний сервер в даний час." #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "Пошук" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "Назва:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "Тип" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "Місцевий" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "Глобальний" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "Хеш файлу" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "Розширені параметри" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "Фільтрування" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "Тип файлу" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "Будь-який" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "Архіви" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "Аудіо" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "Образи CD" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "Зображення" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "Програми" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "Тексти" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "Відео" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "Розширення" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "Найменший розмір" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "байт" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "кбайт" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "Мбайт" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "Гбайт" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "Найбільший розмір" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "Доступність" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "Фільтр:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "Здобутки фільтру" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "Перевернути фільтр" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "Сховати відомі файли" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "Почати" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "Більше" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "Для більших наслідків шукайте в eD2k. Ще не підтримується Kad." #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "Зупинити" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "Звантаження" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "Очистити поля" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "Здобутки" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "Очистити завершені звантаження" #: src/muuli_wdr.cpp:466 #, fuzzy msgid "File sources:" msgstr "Завершених джерел" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "Загальні" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "Повна назва:" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "недоступні" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met-файл:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "Хеш:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "Розмір файлу:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "Стан часткових файлів:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "Востаннє повний:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "Передавання" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "Знайдено джерел:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "Передані джерела:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "Кількість часткових файлів:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "Наявні:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "Швидкість передачі:" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "Чинний час звантаження:" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "Передані:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "Розмір завершених:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "Розумна обробка пошкоджень" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "Втрачено за рахунок спотворень:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "Здобуто стисненням:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "Пакунки збережено Р.О.П. :" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "Назви файлів" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "Прибрати" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "Очистити" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "Застосувати" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "Гаразд" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "Коментувати/оцінити файл (текст буде видно всім користувачам)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "Для фільму ви можете написати тривалість, сюжет, мову... \\n\\nабо ж якщо " "він підробний, ви можете розповісти це іншим користувачам aMule." #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "Якість файлу" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "Без рейтингу" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "Невірний / Зіпсований / Підробний" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "Погано" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "Непогано" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "Добре" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "Відмінно" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "" "Змінити оцінку файлу або повідомити користувачів, якщо файл невірний..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "Оновити" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "Звантажується, будь ласка, зачекайте..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "Невідомий розмір" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "Потрібна інформація" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP-адреса:" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "Порт:" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "Додаткова інформація" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "Ім'я користувача:" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "Хеш користувача:" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "Додати" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "Швидкість звантаження" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "Поточна" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "Середня" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "Середня за сесію" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "Швидкість вивантаження" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "З'єднання" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "Чинні звантаження" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "Чинні з'єднання (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "Чинні вивантаження" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "Дерево статистики" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "Ім'я користувача:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "Хеш користувача:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "Програма клієнта:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "Версія клієнта:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP-адреса:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "ID користувача:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "Адреса сервера:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "Назва сервера:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "Приховування:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "Передано клієнту" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "Поточні запити:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "Середня швидкість вивантаження:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "Середня швидкість звантаження:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "Вивантажено (сесія):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "Звантажено (сесія):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "Вивантажено (всього):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "Звантажено (всього):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "Рахунок" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "Модифікатор звантаження/вивантаження:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "Безпечна ідентифікація:" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "В черзі" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "Рахунок черги:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "Прізвисько" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - багатоплатформений Mule" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "Це ім'я, яке бачать інші користувачі, коли під'єднуються до вас." #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "Мова: " #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "Затримка перед показом підказок." #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "Це визначає мову" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "Перевірити наявність нової версії під час запуску" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "Перевірка нової версії після запуску" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "Розпочати зменшеним" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "Зменшитись після запуску" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "Запит на вихід" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "Питає перед виходом." #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "Увімкнути знак у системному лотку" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "Ввімкнути/вимкнути знак в системному лотку або панелі." #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "Зменшитись в знак" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "Зменшуватись в системний лоток, а не в смужку програм." #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "Затримка показу порад: " #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "с" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "Обрати переглядач тенет" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "" "Введіть тут назву вашого переглядача тенет. Залиште це поле порожнім, щоб " "використовувати переглядач встановлений за замовчуванням." #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "Переглянути" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "Відкрити в новій вкладці, якщо можливо" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "" "Відкрити сторінку тенет в новій вкладці замість нового вікна, якщо можливо" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "Відеопрогравач" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "Обмеження ширини смуги" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "Вивантаження" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "Виділення шматків" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "Порти" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "Зразковий TCP-порт" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "Це звичайний порт eD2k і не може бути вимкненим." #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "Порт UDP для запитів сервера (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "Розширений порт UDP (Kad / глобальний пошук)" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "Цей порт використовується для зовнішній запитів eD2k та для мережі Kad" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "Ввімкнути UPnP для перенаправлення портів" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnP TCP порт (не обов'язково):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "Використовувати IP-адресу (пусто для будь-якої):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "" "Тільки досвідченим користувачам: якщо ви маєте багато мережевих інтерфейсів, " "введіть адресу інтерфейсу до якого слід прив'язатися aMule." #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "Найбільше джерел на звантажуваний файл:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "Найбільше одночасних з'єднань:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "eD2k" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "Автоматичне з'єднання після запуску" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "Перез'єднатись при втраті з'єднання" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "Вилучити мертвий сервер після" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "спроб" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "Автоматичне оновлення переліку серверів після запуску" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "Перелік" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "Оновити перелік серверів після з'єднання з сервером" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "Оновити перелік серверів після з'єднання з клієнтами" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "Використовувати систему переваг" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "Використовувати розумну перевірку LowID під час з'єднання" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "Безпечне з'єднання" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "Автоматично з'єднуватись тільки з серверами з переліку постійних" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "Встановити високу перевагу доданим вручну серверам" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "Розумна обробка пошкоджень (Р.О.П.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "Ввімкнено" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "Вдосконалена Р.О.П. довіряє всім хешам (не радимо)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "Додати файли для звантаження призупиненими" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "Додати файли для звантаження з автоматичною перевагою" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "Спробувати спершу звантажити перший та останній шматки" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "Запустити наступний призупинений файл, коли файл завершиться" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "З тієї самої категорії" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "Попереднє виділення місця на диску для нових файлів" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "" "Повністю виділяти місце для всього нового файлу, це зменшить фрагментування" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "Припинити звантаження коли вільне місце на диску досягнуло " #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "Виберіть це якщо хочете, щоб aMule перевіряв ваше місце на диску" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "Введіть найменше бажане місце на диску" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "Зберегти 10 джерел рідкісних файлів (менше ніж 20 джерел)" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "Вивантаження" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "Додати нові спільні файли з автоматичною перевагою" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "Тека призначення для звантажень" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "Тека для тимчасових звантажуваних файлів" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "Спільні теки" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(Праве клацання по значку теки для рекурсивного додавання)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "Робити спільними приховані файли" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "Графіки" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "Час оновлення: 5 с" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "Час для середніх графіків: 100 хв" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "Шкала графіку з'єднань: 100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "Шкала графіку звантаження" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "Шкала графіку вивантаження" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "Кольори:" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "Фон" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "Сітка" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "Звантаження зараз" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "Звантаження середні за роботу" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "Звантаження середні за сесію" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "Вивантаження поточні" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "Вивантаження середні за роботу" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "Вивантаження середні за сесію" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "Чинні з'єднання" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "Показувати стовпчик швидкості в системному лотку" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "Вузлів Kad зараз" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "Вузлів Kad запущено" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "Вузлів Kad за сесію" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "Вибрати" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "Дерево" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "Кількість відображуваних версій клієнтів (0=необмежено)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! ЗАСТЕРЕЖЕННЯ !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "Найбільше зовнішніх з'єднань за 5 с" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "Розмір файлу буфера: 240000 байт" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "Розмір черги вивантаження: 5000 клієнтів" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "Час оновлення з'єднання з сервером: вимкнено" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "Використати шкіру: " #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "Показати \"Швидкий оброблювач eD2k-посилань\" в кожному вікні." #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "Показати розширену інформацію на вкладках категорій" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "Показувати швидкість передавання в заголовку" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "Показувати швидкість передавання в заголовку" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "Перед назвою програми" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "Після назви програми" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "Показати ширину смуги службового трафіку" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "Вертикальне розміщення панелі інструментів" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "Звантажити файли в черзі" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "Показувати поступ у відсотках" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "Показувати панель поступу" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "Плаский" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "Круглий" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "Автоматично впорядковувати файли (багато ресурсів CPU)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule буде автоматично впорядковувати стовпці в переліку звантажень" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "Параметри зовнішніх з'єднань" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "Дозволити зовнішні з'єднання" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "IP-адреса інтерфейса:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "Введіть IP-адресу в вірному форматі a.b.c.d для прослуховування EC-" "інтерфейсу. Порожнє поле або 0.0.0.0 означатиме всі." #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "Порт TCP:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "Ввімкнути UPnP перенаправлення для EC-порту" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "Пароль" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Налаштування веб-сервера" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "Запустити веб-сервер під час запуску" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Веб шаблон" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "Пароль повних прав" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "Ввімкнути користувача з низькими правами" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "Пароль низьких прав" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "Ввімкнути UPnP перенаправлення портів для порту веб-сервера" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "UPnP TCP-порт веб-сервера (не обов'язково)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "Час оновлення сторінки (с)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "Дозволити Gzip-стиснення" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "Гаразд" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "Натисніть тут щоб застосувати зміни зроблені в налаштуваннях." #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "Скинути всі зміни внесені в налаштування." #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "Назва:" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "Коментар:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "Вхідна тека:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "Змінити перевагу для нового призначеного файлу:" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "Не змінювати" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "Виберіть колір для цієї категорії (зараз вибрано):" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "Очистити" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "Натисніть цю кнопку, щоб очистити часопис." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "Натисніть на кнопку щоб оновити перелік серверів з адреси..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "Перелік серверів" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "" "Введіть адресу файлу server.met та натисніть кнопку ліворуч щоб оновити " "перелік відомих серверів." #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "Додати сервер вручну: Назва" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "Введіть тут назву нового сервера" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Порт" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "Тут введіть IP-адресу сервера, використовуючи формат x.x.x.x." #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "Введіть тут порт сервера." #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "Додати сервер вручну (заповніть поля ліворуч)..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "Часопис aMule" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "Інфо сервера" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "Інфо eD2k" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Інфо Kad" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "Натисніть на цю кнопку щоб оновити перелік вузлів з URL..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "Вузли (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "" "Введіть адресу файлу nodes.dat та натисніть кнопку ліворуч щоб оновити " "перелік відомих вузлів. " #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "Статистика вузлів" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "Початковий запуск" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "Новий вузол" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "Порт:" #: src/muuli_wdr.cpp:2763 #, fuzzy msgid "Bootstrap from known clients" msgstr "" "Початковий запуск\n" "відомого клієнта" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "Від'єднатися від Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "Використовувати безпечну ідентифікацію користувача" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "" "Рекомендовано ввімкнути цю опцію. Ви не отримаєте довіру якщо безпечна " "ідентифікація вимкнена." #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "Приховування протоколу" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "Підтримка приховування протоколу" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "" "Ця опція вмикає приховування протоколу та дозволяє aMule приймати приховані " "з'єднання від інших клієнтів." #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "Використовувати приховування для вихідних з'єднань" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "" "Ця опція вмикає приховування протоколу під час з'єдання з іншими клієнтами/" "серверами." #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "Приймати тільки приховані з'єднання" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "Приймати приховані з'єднання. Будете мати менше джерел, але весь ваш трафік " "буде приховано" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "Кожен" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "Жоден" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "Хто може бачити мої спільні файли:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "Оберіть тих, хто може запитати перелік ваших спільних файлів." #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP-фільтрування" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "Фільтрувати клієнтів" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Ввімкнено фільтрування IP-адрес клієнтів, що визначені в файлі ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "Фільтрувати сервери" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "" "Ввімкнено фільтрування IP-адрес серверів, що визначені в файлі ~/.aMule/" "ipfilter.dat." #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "Перезавантажити перелік" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "" "Перезавантажити перелік IP-адрес для фільтрування з файлу ~/.aMule/ipfilter." "dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "URL:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "Оновити зараз" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "Автоматичне оновлення IP-фільтру після запуску" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "Рівень фільтра:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "Завжди відфільтровувати IP-адреси локальних мереж" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "Параноїдальна обробка IP-адрес, що не співпали" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "" "Відкинути пакет якщо IP-адреса клієнта відрізняється від IP-адреси з якої " "прийшов пакет. Використовуйте обережно." #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "Використовувати системний ipfilter.dat якщо наявний" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "" "Якщо не знайдено місцевий ipfilter.dat, дозволити використання системного." #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "Ввімкнути онлайн-підпис" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "" "Ввімкнути запис файлу ОС, який може бути використано зовнішніми програмами " "для створення підписів та подібного." #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "Частота оновлення (с)" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "Змінити частоту (в секундах) оновлень онлайн-підписів." #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "Зберегти файл онлайн-підпису в: " #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "Натисніть тут, щоб вибрати теку, що містить файли з онлайн-підписами." #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "Фільтрувати вхідні повідомлення (окрім поточної розмови):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "Фільтрувати всі повідомлення" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "Фільтрувати повідомлення від людей, що не в вашому переліку друзів" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "Фільтрувати повідомлення від невідомих клієнтів" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "" "Фільтрувати повідомлення, що містять (використовуйте ',' для переліку):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "" "додати слова, які aMule буде фільтрувати, та забороняти повідомлення, що їх " "містять" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "Показувати отримані повідомлення в часописі" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "Коментарі" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "Фільтрувати коментарі, що містять (використовуйте ',' для переліку):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "Автоматичне з'єднання з сервером без проксі" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "Включити авторизацію" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "Ввімкнути/вимкнути аутентифікацію з ім'ям/паролем" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "Ім'я користувача: " #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "Ім'я користувача для з'єднання з проксі" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "Пароль:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "Пароль для з'єднання з проксі" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "Ввімкнути проксі" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "Ввімкнути/вимкнути підтримку проксі" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "Тип проксі:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "Хост проксі:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "Ім'я хосту проксі" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "Порт проксі:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "Порт проксі" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "З'єднатись з:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "Вхід до віддаленого aMule" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "Ім'я користувача" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "Запам'ятати ці налаштування" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "Ввімкнути докладне ведення часопису." #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "Відкрити файл" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "Категорія повідомлення:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "Очікується..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "Додати зовнішні внесення" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "Повторити вибрані" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "Вилучити вибрані" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "Типи подій" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "" #: src/muuli_wdr.cpp:3351 #, fuzzy msgid "Active Uploads" msgstr "Чинні вивантаження:" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "Сховати спільні файли" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "Вибрати фільтр перегляду" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "Чинні вивантаження" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "Показати клієнтів" #: src/muuli_wdr.cpp:3425 #, fuzzy msgid "Reload:" msgstr "Перезавантажити перелік" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "Перезавантажити ваші спільні файли" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "Надіслати" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "Надіслати вказане повідомлення." #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "Закрити цю розмову." #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "З'єднатися з будь-яким сервером та/чи Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "Спільні файли" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "Вимкнено [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "байт" msgstr[1] "байти" msgstr[2] "байт" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "кбайт" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "Тбайт" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "к" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "М" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "Г" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "Т" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "байт/с" msgstr[1] "байти/с" msgstr[2] "байт/с" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "Мбайт/с" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "с" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "хв" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "год" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "діб" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "всі" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "всі інші" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "Незавершені" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "Зупинені" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "Відео" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "Архів" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "Текст" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "Чинні" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "Очікується завершення потому перетворення часткового файлу..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "Вноситься %s: %s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "Читається тимчасова тека" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "Витягується основна інформація з інформації звантажуваного файла" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "Створюється файл призначення" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "Завантажуються дані зі старого файлу звантажень (%u з %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "Зберігається блок даних в новий один файл звантаження (%u з %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "Отримується інформація по джерелам звантажуваного файла" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "Додається звантаження та зберігається новий частковий файл" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "Вношу часткові файли" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "Стан" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "Хеш файлу" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (диск: %s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "" "Будь ласка, виберіть теку з тимчасовими звантаженнями! (підтеки будуть " "додані)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "Ви хочете, щоб джерела успішно внесених звантажень були видалені?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "Видалити джерела?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "ПОМИЛКА: Не вдалося створити частковий файл" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "Спроба завантажити резервну копію met-файлу з %s" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "ПОМИЛКА: Не вдалося відкрити файл part.met: %s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "ПОМИЛКА: файл part.met має розмір 0: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "ПОМИЛКА: Невірна версія файлу part.met: %s ==> %s" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "" "ПОМИЛКА: %s (%s) зіпсований (невірна кількість міток), неможливо завантажити " "файл." #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "" "ПОМИЛКА: %s (%s) зіпсований (невірна кількість міток), неможливо завантажити " "файл." #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "Намагання відтворити інформацію файлу..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "Відновлюється файл без назви - спроба відновити як RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "Відновлена вся доступна інформація файлу :D - спроба використати її..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "Неможливо відтворити інформацію файлу" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "Не вдалося відкрити %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "ЗАСТЕРЕЖЕННЯ: %s може бути зіпсований (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "ПОМИЛКА під час збереження часткового файлу: %s (%s ==> %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "Помилка введення-виведення під час збереження часткового файлу: " #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "Неможливо отримати довжину '%s' - використовується файл %s." #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' чомусь має нульовий розмір - використовується файл %s." #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "Не вдалося зберегти файл part.met.seeds для %s" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "Збережено %i джерело для часткового файлу: %s (%s)" msgstr[1] "Збережено %i джерела для часткового файлу: %s (%s)" msgstr[2] "Збережено %i джерел для часткового файлу: %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "Збережено %i джерело для часткового файлу: %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "Помилка читання файлу-джерела часткового файлу (%s - %s): %s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "Знайдена підробна частина (%d) в (%d) частковому файлі %s - FileResultHash |%" "s| FileHash |%s|" msgstr[1] "" "Знайдена підробна частина (%d) в (%d) часткових файлах %s - FileResultHash |%" "s| FileHash |%s|" msgstr[2] "" "Знайдена підробна частина (%d) в (%d) часткових файлах %s - FileResultHash |%" "s| FileHash |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "Знайдено завершену частину (%i) в %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "Завершене повторне обчислення хешу: %s" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "Неочікувана помилка під час завершення %s. Файл призупинено" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "Завершене звантаження: %s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "Видаляється файл: %s" #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "" "ЗАСТЕРЕЖЕННЯ: неможливо обчислити хеш звантаженого файлу - набір хешів " "неповний для '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "ПОМИЛКА: неможливо обчислити хеш звантаженого файлу - набір хешів неповний (%" "s). Такого ніколи не повинно бути" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "" "ЗАСТЕРЕЖЕННЯ: недостатньо вільного місця на диску! Призупиняється файл: %s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "Звантажена частина %i зіпсована в файлі: %s" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "Р.О.П.: відновлено зіпсовану частину %i для %s -> Збережено байт: %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "Виділяється" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "Не вистачає місця на диску" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "Звантажені" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "ПОМИЛКА: не вдалося відкрити частковий файл '%s'" #: src/Preferences.cpp:632 msgid "System default" msgstr "Мова системи" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "Албанська" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "Арабська" #: src/Preferences.cpp:635 #, fuzzy msgid "Asturian" msgstr "Естонська" #: src/Preferences.cpp:636 msgid "Basque" msgstr "Баскська" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "Болгарська" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "Каталонська" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "Китайська (спрощена)" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "Китайська (традиційна)" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "Хорватська" #: src/Preferences.cpp:642 msgid "Czech" msgstr "Чеська" #: src/Preferences.cpp:643 msgid "Danish" msgstr "Данська" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "Нідерландська" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "Англійська (Великобританія)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "Естонська" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "Фінська" #: src/Preferences.cpp:648 msgid "French" msgstr "Французька" #: src/Preferences.cpp:649 msgid "Galician" msgstr "Галісійська" #: src/Preferences.cpp:650 msgid "German" msgstr "Німецька" #: src/Preferences.cpp:651 msgid "Greek" msgstr "Грецька" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "Іврит" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "Угорська" #: src/Preferences.cpp:654 msgid "Italian" msgstr "Італійська" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "Італійська (Швейцарія)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "Японська" #: src/Preferences.cpp:657 msgid "Korean" msgstr "Корейська" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "Литовська" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "Норвезька (Нюнорск)" #: src/Preferences.cpp:660 msgid "Polish" msgstr "Польська" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "Португальська" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "Португальська (Бразилія)" #: src/Preferences.cpp:663 #, fuzzy msgid "Romanian" msgstr "Албанська" #: src/Preferences.cpp:664 msgid "Russian" msgstr "Російська" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "Словенська" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "Іспанська" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "Шведська" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "Турецька" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "Українська" #: src/Preferences.cpp:732 #, fuzzy msgid "Change Language" msgstr "Мова: " #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "Недоступний" #: src/Preferences.cpp:906 msgid "no options available" msgstr "немає наявних опцій" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "Знайдена помилкова категорія, пропущена" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "" "Порт TCP не може бути більшим ніж 65532, оскільки UDP-порт сервера є TCP+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "Буде використовуватися порт за замовчуванням (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "Усунення неіснуючих спільних тек: %s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "З'єднання" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "Теки" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "Сервери" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "Файли" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "Безпека" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "Зовнішній вигляд" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "Проксі" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "Фільтри" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "Віддалене керування" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "Онлайн-підпис" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "Розширені" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "Події" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "Налагоджувач" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "Не змінюйте ці налаштування, якщо не знаєте\n" "що робите, інакше ви можете легко\n" "собі нашкодити\n" "\n" "aMule чудово працює без зміни будь-яких\n" "з цих параметрів." #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "Помилка з'єднання Cfg до Widget з ID %d та ключем %s" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "Помилка передавання даних з Cfg до Widget з ID %d та ключем %s" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "Тип проксі з яким ви з'єднуєтесь" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "Помилка передавання даних з Widget до Cfg з ID %d та ключем %s" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "aMule має бути перезапущений, щоб зміни подіяли:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP-порт змінено.\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP-порт змінено.\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "Зовнішнє з'єднання розірвано." #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "Дозволено нове зовнішнє з'єднання" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "Зовнішнє з'єднання розірвано." #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "Приховування протоколу" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "Ваш перелік автоматичного оновлення серверів порожній.\n" "'Автоматичне оновлення серверів під час завантаження буде вимкнено." #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "Ви увімкнули зовнішні з'єднання, але не визначили пароль.\n" "Зовнішні з'єднання не можуть бути ввімкнені поки не вказано вірний пароль." #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- Мова змінена.\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- Тимчасова тека змінена.\n" #: src/PrefsUnifiedDlg.cpp:657 #, fuzzy msgid "- ED2K network enabled.\n" msgstr "Всі мережі вимкнені." #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "Обидві eD2k та Kad-мережі вимкнені.\n" "Ви не зможете з'єднатися поки не увімкнете хоча б одну з них" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "Kad не розпочне роботу, якщо UDP-порт вимкнено.\n" "Увімкніть UDP-порт або вимкніть Kad" #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "Ви ЗОБОВ'ЯЗАНІ перезапустити aMule зараз.\n" "Якщо ж не перезапустите, не скаржтеся, коли станеться щось жахливе.\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "Ваш перелік серверів автоматичного оновлення порожній.\n" "Будь ласка заповніть принаймні одну адресу, що посилається на існуючий файл " "server.met.\n" "Натисніть на кнопку \"Перелік\" щоб ввести адресу." #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "Тимчасові файли" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "Вхідні файли" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "Онлайн-підписи" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "Виберіть теку для %s" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "Переглянути, щоб знайти відеопрогравач" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "Вибрати переглядач тенет" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "Виконуваний %s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "Редагувати перелік серверів" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "Додайте тут адреси файлів server.met.\n" "Тільки одна адреса на рядок." #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "Затримка оновлення: %d секунда" msgstr[1] "Затримка оновлення: %d секунди" msgstr[2] "Затримка оновлення: %d секунд" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "Час усереднення графіків: %d хвилина" msgstr[1] "Час усереднення графіків: %d хвилини" msgstr[2] "Час усереднення графіків: %d хвилин" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "Зміна розміру графіка з'єднань: %d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "Розмір файлу буфера: %d байт" msgstr[1] "Розмір файлу буфера: %d байти" msgstr[2] "Розмір файлу буфера: %d байт" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "Розмір черги вивантаження: %d клієнт" msgstr[1] "Розмір черги вивантаження: %d клієнти" msgstr[2] "Розмір черги вивантаження: %d клієнтів" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "Інтервал оновлення з'єднання з сервером: %d хвилина" msgstr[1] "Інтервал оновлення з'єднання з сервером: %d хвилини" msgstr[2] "Інтервал оновлення з'єднання з сервером: %d хвилин" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "Інтервал оновлення з'єднання з сервером: вимкнено" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "вимкнено" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "Виконати команду на подію '%s'" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "Ввімкнути виконання команди в ядрі" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "Команда ядра:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "Ввімкнути виконання команд в ГІК" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "Команда ГІК:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "Наступні змінні будуть замінені:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "" "Найменший розмір має бути меншим ніж найбільший. Найбільшим розміром " "знехтувано." #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "Очікування пошуку" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "Головна" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Пошук у Kad неможливо виконати коли Kad не працює" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "Пошук eD2k не може бути виконаний, якщо eD2k не з'єднана" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "Неочікувана помилка, коли намагаюсь шукати в Kad:" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "ID файлу" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "Файл" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "Звантажити в категорію" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "Додати додаткові URL-адреси для цього файлу" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "Пошук схожих файлів (eD2k, місцевий сервер)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "Позначити як відомий файл" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "Скопіювати eD2k посилання до буферу обміну" #: src/SearchListCtrl.cpp:1014 #, fuzzy msgid "Canceled" msgstr "Скасувати" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "" "Не вдалося з'єднатися з усіма переліченими прихованими серверами. Робиться " "ще одна спроба без приховування." #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "" "Не вдалося з'єднатися з усіма переліченими серверами. Робиться ще одна " "спроба." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "eD2k вимкнена в налаштуваннях, не з'єднується." #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "" "Не знайдено справних серверів в переліку серверів з якими можна було " "з'єднатися" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "З'єднані з %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "З'єднання встановлено з: %s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "" "Жахлива помилка під час спроби з'єднання. З'єднання з Інтернет може бути " "відсутнє" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "Втрачене з'єднання з %s (%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) здається мертвий." #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) здається заповнений." #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "Автоматичне з'єднання з сервером повториться через %d секунду" msgstr[1] "Автоматичне з'єднання з сервером повториться через %d секунди" msgstr[2] "Автоматичне з'єднання з сервером повториться через %d секунд" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "Втрата з'єднання" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "З'єднання з %s (%s:%i) не вдалося." #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "ПОМИЛКА: невірний сокет після сплину часу" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "Спроба з'єднання з %s (%s:%i) добігла кінця." #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "Отриманий застарілий наслідок запиту до DNS, відкидається." #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "Завантажую файл server.met: %s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "Файл server.met не знайдено!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "Неможливо завантажити файл server.met '%s', невірний формат." #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "Неможливо відкрити server.met!" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "" "Файл server.met підробний, знайдена невірна мітка версії: 0x%x, розмір %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "%i сервер знайдено в server.met" msgstr[1] "%i сервери знайдені в server.met" msgstr[2] "%i серверів знайдені в server.met" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "Додано %d сервер" msgstr[1] "Додано %d сервери" msgstr[2] "Додано %d серверів" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "" #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "Помилка введення-виведення під час читання файлу known.met: %s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "Сервер не додано: [%s:%d] не визначив вірний порт." #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "Сервер не додано: IP-адреса [%s:%d] відфільтрована або неприпустима." #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "Сервер не додано: сервер з такими ж IP:порт [%s:%d] вже в переліку." #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "Сервер додано: сервер на [%s:%d] використовуючи назву '%s'." #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "" "Ви з'єднані з сервером, який хочете видалити, будь ласка, роз'єднайтесь " "спочатку." #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "Не вдалося відкрити '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "Неможливо зберегти server.met!" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "Невірна URL-адреса" #: src/ServerList.cpp:856 #, fuzzy, c-format msgid "Finished downloading the server list from %s" msgstr "Завершилось звантаження переліку серверів з %s" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "Не знайдено жодного запису переліку серверів в addresses.dat. Будь ласка, " "вставте вірний перелік адрес серверів в цей файл для того щоб автоматично " "оновити ваш перелік серверів" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "Починається звантаження переліку серверів з %s" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "" "ЗАСТЕРЕЖЕННЯ: вказана невірна адреса для автоматичного оновлення серверів: %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "" "Немає правильної адреси автоматичного звантаження server.met в addresses.dat" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "Неможливо звантажити перелік серверів з %s" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "Місцевий сервер відфільтрований IPFilters, з'єднайтесь з іншим!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "Назва сервера" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "Адреса" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "Порт" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "Опис" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Час луни" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "Користувачі" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "Постійні" #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "Версія" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "" "Ви з'єднані з сервером, який намагаєтесь видалити. Будь ласка, роз'єднайтеся " "спочатку. Сервер НЕ був видалений." #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(невідома назва)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "Ви впевнені, що хочете видалити постійний сервер %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "Сервери (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "Сервер" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "З'єднатися з сервером" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "Позначити сервер як постійний" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "Позначити сервер як непостійний" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "Позначити сервери як постійні" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "Позначити сервери як непостійні" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "Видалити сервер" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "Видалити сервери" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "Видалити всі сервери" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "Скопіювати eD2k посилання до буферу обміну" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "Перез'єднатись з сервером" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "Ви впевнені, що хочете видалити всі сервери?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "Ви впевнені, що хочете видалити вибраний сервер?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "Ви впевнені, що хочете видалити вибрані сервери?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "ПОМИЛКА: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "ЗАСТЕРЕЖЕННЯ: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "Новий id клієнта %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "ЗАСТЕРЕЖЕННЯ: ви отримали LowID!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\tНайбільш ймовірно це тому, що ви за фаєрволом або маршрутизатором." #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "" "\tЗа додатковою інформацією, будь ласка, завітайте до http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "Отримана невідома інформація про сервери! - занадто коротко" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "Отримано %d новий сервер" msgstr[1] "Отримано %d нові сервери" msgstr[2] "Отримано %d нових серверів" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "Збереження переліку серверів завершено." #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "Сервер відхилив останню команду" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "З сервера отримано підробний пакет: %s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "" "Помилка, що не може бути опрацьована, під час обробки пакету з сервера: %s" #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "Неможливо створити потік DNS-запиту для з'єднання з %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "IP-адреса сервера %s (%s) відфільтрована. Не з'єднується." #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "використовується приховування протоколу." #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "З'єднуюсь з %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "Неможливо визначити DNS-назву для сервера: %s. Неможливо з'єднатися!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "Сервер не додано: не задана ні адреса, ні назва." #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "Сервер не додано: неприпустимий порт." #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "Стан eD2k:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Стан Kademlia:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "Запущений на %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "Працює" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "Стан:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "Стан з'єднання:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "" "За фаерволом - відкрийте порт TCP:%d на вашому маршрутизаторі або фаерволі" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "Стан з'єднання UDP:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "" "За фаерволом - відкрийте порт UDP:%d на вашому маршрутизаторі або фаерволі" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "Стан фаєрволу:" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "Не потрібен жоден друг: порт TCP відкритий" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "Не потрібен жоден друг: порт UDP відкритий" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "Немає друга" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "З'єднання з другом" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "З'єднання з другом на %s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "Проіндексовані джерела:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "Проіндексовані ключові слова:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "Проіндексовані нотатки:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "Проіндексовані завантаження:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "Середня кількість користувачів:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "Всередньому файлів:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "Не запущений" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "Додається файл %s до спільних" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "Знайдено %i новий спільний файл" msgstr[1] "Знайдено %i нові спільні файли" msgstr[2] "Знайдено %i нових спільних файлів" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "Знайдено %i відомий спільний файл, невідомих - %i" msgstr[1] "Знайдено %i відомі спільні файли, невідомих - %i" msgstr[2] "Знайдено %i відомих спільних файли, невідомих - %i" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "ПОМИЛКА: спроба зробити спільним %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "Спільна тека не знайдена, пропускаємо: %s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "Не знайдені спільні файли в теці: %s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 #, fuzzy msgid "User Name" msgstr "Ім'я користувача" #: src/SharedFilePeersListCtrl.cpp:30 #, fuzzy msgid "Download Speed" msgstr "Швидкість звантаження" #: src/SharedFilePeersListCtrl.cpp:32 #, fuzzy msgid "Upload Speed" msgstr "Швидкість вивантаження" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 #, fuzzy msgid "Available Parts" msgstr "Наявні:" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "Стан вивантаження" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "Стан звантаження" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "Назва файлу" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "Спільні файли" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "Запитів" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "Прийняті запити" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "Передані дані" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "Відношення поширення" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "Отримані частини" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "Повних джерел" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "Шлях до теки" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "Додати коментар/рейтинг" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "Редагувати коментар/рейтинг" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "Змінити назву" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "Додати файли зі збірки до переліку передач" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "Скопіювати magnet-посилання до буферу обміну" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "Скопіювати eD2k-посилання до буферу обміну (джерело)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "Скопіювати eD2k-посилання до буферу обміну (джерело з шифруванням)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "Скопіювати eD2k-посилання до буферу обміну (назва хосту)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "Скопіювати eD2k-посилання до буферу обміну (назва хосту з шифруванням)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "Скопіювати eD2k-посилання до буферу обміну (інформація AICH)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "Скопіювати eD2k-посилання до буферу обміну (інформація AICH)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "Вам потрібно мати HighID щоб створити посилання на джерело" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "Спільні файли (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[частковий файл]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "Назва файлу" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "Вивантажені дані (сесія (всього)): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "Всього службового трафіку (пакети): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "Трафік запитів (пакети): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "Трафік обміну джерелами (пакети): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "Трафік з сервером (пакети): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Трафік Kad (пакети): %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "Втрати на шифрування (UDP): %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "Активні вивантаження: %s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "Вивантаження очікують: %s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "Вього успішних сесій вивантаження: %s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "Всього невдалих сесій вивантаження: %s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "Середній час вивантаження: %s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "Звантажені дані (сесія (всього)): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "Знайдені джерела: %s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "Чинні звантаження (шматки): %s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "Відношення вивантажено/звантажено за сесію (всього): %s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "Середня швидкість звантаження (сесія): %s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "Середня швидкість вивантаження (сесія): %s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "Найбільша швидкість звантаження (сесія): %s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "Найбільша швидкість вивантаження (сесія): %s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "Перепід'єднань: %i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "Пройшло часу з останньої передачі: %s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "З'єднано з сервером з: %s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "Чинні з'єднання (приблизно): %i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "Досягнуто найбільшої кількості з'єднань: %s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "Середня кількість з'єднань (приблизно): %g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "Найбільше з'єднань (приблизно): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "Клієнти" #: src/Statistics.cpp:791 #, fuzzy, c-format msgid "Unknown: %s" msgstr "Невідомий розмір" #: src/Statistics.cpp:797 #, fuzzy, c-format msgid "Filtered: %s" msgstr "Відфільтровані" # користувач #: src/Statistics.cpp:798 #, fuzzy, c-format msgid "Banned: %s" msgstr "заборонений" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "Всього: %i Відомих: %i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "Робочі сервери: %i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "Неробочі сервери: %i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "Всього: %s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "Видалені сервери: %s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "Відфільтровані сервери: %s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "Користувачів на робочих серверах: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "Файлів на робочих серверах: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "Всього користувачів: %llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "Всього файлів: %llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "Навантаження на сервер: %.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "Кількість спільних файлів: %s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "Загальний розмір спільних файлів: %s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "Середній розмір файлу: %s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "Операційна система" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "Не отримана" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "Чинні з'єднання (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "Недоступний" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "Ніколи" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "Команда '%s' з pid '%d' завершилась з кодом стану '%d'." #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "Виконати та вийти." #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "Невірний формат IP-адреси. Використовуйте xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "" "Ця команда потребує аргумент. Вірні аргументи: 'all', назва файлу, або " "номер.\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "Оброблюється за хешем: " #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "Оброблюється на назвою файлу: " #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "Ця команда потребує аргумент. Правильний аргумент: хеш файлу.\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "Невірне число\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "Невірний хеш (довжина має бути точно 32 символи)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "Напишіть '%s' щоб отримати більше допомоги.\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "Розмір звантаження: %i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "Запит невдалий з невідомою помилкою." #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "Дія була вдалою." #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "Запит невдалий з помилкою: %s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "Фільтрування IP для клієнтів %s.\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "Вимк." #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "Ввімк." #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "Фільтрування IP для серверів %s.\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "Поточний рівень IP-фільтра %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "" "Обмеження смуги пропускання: вивантаження %u кб/с, звантаження: %u кб/с.\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "З'єднався з %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "Не з'єднується" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "за фаєрволом" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "гаразд" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "Звантаження:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "Вивантаження:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "Клієнтів у черзі:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "Всього джерел:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "Кількість здобутків пошуку: %i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "" #: src/TextClient.cpp:834 #, fuzzy msgid "Search progress not available" msgstr "Показувати поступ у відсотках" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "Отримано невідому відповідь з серверу, OpCode = %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "Показати коротку інформацію про стан." #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "" "Показати стан з'єднань, поточні швидкості вивантаження/звантаження, інше.\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "Показати повне дерево статистики." #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "Додатково, число з межах 0-255 може бути прийнято як аргумент для цієї\n" "команди, що повідомляє скільки елементів піддерева версій клієнта слід\n" "показувати. 0 або пусте значення означатимуть \"необмежено.\"\n" "\n" "Наприклад: 'statistics 5' покаже тільки 5 найбільш частих номерів для " "кожного типу клієнта.\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "Завершити роботу aMule." #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "Вимкнути віддалено запущене ядро (amule/amuled).\n" "Це також вимкне текстові клієнти, оскільки вони непридатні\n" "без запущеного ядра.\n" #: src/TextClient.cpp:861 #, fuzzy msgid "Reload the given object." msgstr "Перезавантажується отриманий об'єкт." #: src/TextClient.cpp:862 #, fuzzy msgid "Reload shared files list." msgstr "Перезавантажується перелік спільних файлів." #: src/TextClient.cpp:864 #, fuzzy msgid "Reload IP filtering table." msgstr "Перезавантажується IP фільтр з файлу." #: src/TextClient.cpp:865 #, fuzzy msgid "Reload current IP filtering table." msgstr "Вибрати рівні IP-фільтрування." #: src/TextClient.cpp:866 #, fuzzy msgid "Update IP filtering table from URL." msgstr "Перезавантажується IP фільтр з файлу." #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "З'єднання з мережею." #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "З'єднатися з усіма мережами, що ввімкнені в налаштуваннях.\n" "Ви також можете додатково визначити адресу сервера у вигляді IP:порт\n" "щоб з'єднатись тільки з ним. IP-адреса повинна мати вигляд a.b.c.d версії " "IPv4\n" "або назва." #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "З'єднання тільки з eD2k." #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "З'єднання тільки з Kad." #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "Від'єднано тільки від мережі." #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "Це від'єднає від всіх мереж, до яких зараз під'єднано.\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "Від'єднано тільки від eD2k." #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "Від'єднано тільки від Kad." #: src/TextClient.cpp:879 #, fuzzy msgid "Add an eD2k or magnet link to core." msgstr "Додає eD2k-посилання або magnet-посилання до ядра." #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "eD2k-посилання, яке треба додати, може бути:\n" "*) посиланням на файл (ed2k://|file|...), буде додане до черги звантажень,\n" "*) посиланням на сервер (ed2k://|server|...), буде додане до переліку " "серверів,\n" "*) або посиланням на перелік серверів, в такому випадку всі сервери списку " "будуть\n" " додані до переліку серверів.\n" "\n" "Magnet-посилання повинне містити eD2k-хеш та довжину файлу.\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "Встановити значення налаштувань." #: src/TextClient.cpp:885 #, fuzzy msgid "Set IP filtering preferences." msgstr "Налаштувати IP-фільтри" #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "Ввімкнути IP фільтрування для клієнтів та серверів." #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "Вимкнути IP фільтрування для клієнтів та серверів." #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "Ввімкнути/вимкнути IP фільтрування для клієнтів." #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "Ввімкнути IP-фільтри для клієнтів." #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "Вимкнути IP-фільтри для клієнтів." #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "Ввімкнути/вимкнути IP фільтрування для серверів." #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "Ввімкнути IP-фільтри для серверів." #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "Вимкнути IP-фільтри для серверів." #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "Вибрати рівні IP-фільтрування." #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "Вірні рівні фільтрування в межах 0-255, і їх значення\n" "за замовчуванням(початкове) 127.\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "Встановити обмеження швидкостей." #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "Значення передане цій команді має бути в кб/с.\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "Встановити обмеження швидкості вивантаження." #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "Значення передане цій команді має бути в кб/с.\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "Встановити обмеження швидкості звантаження." #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "Отримати та відобразити значення налаштувань." #: src/TextClient.cpp:907 #, fuzzy msgid "Get IP filtering preferences." msgstr "Отримати налаштування IP-фільтра." #: src/TextClient.cpp:908 #, fuzzy msgid "Get IP filtering state for both clients and servers." msgstr "Отримати стан IP-фільтра для клієнта і сервера." #: src/TextClient.cpp:909 #, fuzzy msgid "Get IP filtering state for clients only." msgstr "Отримати стан IP-фільтра тільки для клієнта." #: src/TextClient.cpp:910 #, fuzzy msgid "Get IP filtering state for servers only." msgstr "Отримати стан IP-фільтра тільки для сервера." #: src/TextClient.cpp:911 #, fuzzy msgid "Get IP filtering level." msgstr "Вибрати рівні IP-фільтрування." #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "Отримати обмеження смуги пропускання." #: src/TextClient.cpp:915 #, fuzzy msgid "Execute a search." msgstr "Виконати пошук у Kad" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "Вид пошуку має бути визначений одним з наступних:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Наприклад: 'search kad file' виконає пошук файлу \"file\" в Kad.\n" #: src/TextClient.cpp:917 #, fuzzy msgid "Execute a global search." msgstr "Виконати глобальний пошук" #: src/TextClient.cpp:918 #, fuzzy msgid "Execute a local search" msgstr "Виконати місцевий пошук" #: src/TextClient.cpp:919 #, fuzzy msgid "Execute a kad search" msgstr "Виконати пошук у Kad" #: src/TextClient.cpp:921 #, fuzzy msgid "Show the results of the last search." msgstr "Показати здобутки попереднього пошуку." #: src/TextClient.cpp:922 #, fuzzy msgid "Return the results of the previous search.\n" msgstr "Повернути здобутки попереднього пошуку.\n" #: src/TextClient.cpp:924 #, fuzzy msgid "Show the progress of a search." msgstr "Показати перебіг пошуку." #: src/TextClient.cpp:925 #, fuzzy msgid "Show the progress of a search.\n" msgstr "Показати перебіг пошуку.\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "Почати звантаження файлу." #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "Потрібно вказати номер файлу з останнього пошуку.\n" "Наприклад: 'download 12' розпочне звантаження файлу з номером 12 " "попереднього пошуку.\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "Призупинити звантаження." #: src/TextClient.cpp:938 msgid "Resume download." msgstr "Відновити звантаження." #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "Відмінити звантаження." #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "Встановити перевагу звантаження" #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "Встановити перевагу звантаження на низьку, звичайну або автоматичну.\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "Встановити перевагу низькою." #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "Встановити перевагу звичайною." #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "Встановити перевагу високою." #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "Встановити перевагу авто." #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "Показати черги/переліки." #: src/TextClient.cpp:952 #, fuzzy msgid "Show upload/download queue, server list or shared files list.\n" msgstr "" "Показати чергу звантаження та вивантаження, перелік серверів або перелік " "спільних файлів.\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "Показати чергу вивантаження." #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "Показати чергу звантаження." #: src/TextClient.cpp:955 msgid "Show log." msgstr "Показати часопис." #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "Показати перелік серверів." #: src/TextClient.cpp:959 msgid "Reset log." msgstr "Очистити журнал." #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "Застаріла команда, використовуйте '%s' замість неї." #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "Це застаріла команда та може бути видалена в майбутньому.\n" "Використовуйте '%s' замість неї.\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "Текстовий клієнт aMule" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "Перетворюється старий набір хешів AICH в '%s' до 64b в '%s'." #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "ЗАСТЕРЕЖЕННЯ: назва файлу '%s' невірна і буде змінена на '%s'." #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "" "ЗАСТЕРЕЖЕННЯ: файл '%s' вже існує, новий файл буде перейменований у '%s'." #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "" "Ви впевнені, що хочете відмінити або видалити всі файли в цій категорії?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "Потрібне підтвердження" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "Забагато з'єднань" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "Всі інші" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "Вибрати фільтр перегляду" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "Додати категорію" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "Редагувати категорію" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "Видалити категорію" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "Не вдалося відкрити файл (%s), видаляю з переліку спільних файлів." #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "Запитано набір хешів для невідомого файлу: %s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "Відновлюється вивантаження файлу: %s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "Призупиняється вивантаження файлу: %s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "Не вдалося виконати команду `%s' на подію `%s'." #: src/UserEvents.h:60 msgid "Download completed" msgstr "Звантаження завершено" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "Повний шлях до файлу." #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "Ім'я файлу без шляху." #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "eD2k-хеш файлу." #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "Розмір файлу в байтах." #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "Загальний час звантаження." #: src/UserEvents.h:82 msgid "New chat session started" msgstr "Розпочато нову розмову" #: src/UserEvents.h:85 msgid "Message sender." msgstr "Відправник." #: src/UserEvents.h:88 msgid "Out of space" msgstr "Немає місця" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "Розділ диску." #: src/UserEvents.h:94 msgid "Error on completion" msgstr "Помилка під час завершення" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "Кількість оброблених файлів %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "" "Ви запитали частковий хеш (використовується тільки для файлів розмір яких " "більше ніж 9.5 МБ" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> Файл не існує!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, створювач eD2k-посилань aMule" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "Ласкаво просимо!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "Вхідні параметри" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "Файл для обчислення хешу" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "Додати додаткові URL-адреси для цього файлу" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "Введіть тут файл, eD2k-посилання якого хочете обчислити" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "Введіть тут адресу, яку хочете додати до eD2k-посилання: Додати / в кінець, " "щоб дати змогу aLinkCreator долучити поточну назву файлу" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "Вилучити" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "Створити посилання з частковими хешами" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "" "Допоможіть поширювати нові та рідкісні файли швидше за рахунок збільшення " "розміру посилання" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4-хеш файлу" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k-хеш файлу" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k-посилання" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "Зберегти" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "Скопіювати до буферу обміну" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "Відкрити" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "Відкрити файл, щоб обчислити його eD2k-посилання" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "Копіювати eD2k-посилання до буферу обміну" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "Зберегти як" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "Зберегти розраховане eD2k-посилання до файлу" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "Про aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "Виберіть файл eD2k-посилання якого потрібно обчислити" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "Не можу відкрити буфер обміну" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "Зараз немає що копіювати!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "Виберіть файл для обчисленого eD2k-посилання" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "Неможливо відкрити " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "Будь ласка, введіть непорожнє ім'я файлу" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "Зараз немає що зберігати!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "Обчислення хешу..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator працює для вас" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "Обчислюється MD4-хеш..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "Обчислюються хеші eD2k..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "Скасовано!" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "Виконано за %.2f с" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "Ви вже додали цю URL-адресу!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "Будь ласка, введіть непустий URL-адресу" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "Неможливо відкрити %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i діб %i год %i хв %i с" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02uдіб %02uгод %02uхв %02uс" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02uгод %02uхв %02uс" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02uхв %02uс" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02uс" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f байт" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.0f кбайт" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.0f Мбайт" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.0f Гбайт" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.0f Тбайт" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, aMule онлайн-статистика" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "Найбільша швидкість звантаження з тих пір як wxCas запущено" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "" "Безумовна найбільша швидкість звантаження під час попереднього запуску wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "Система" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "Зупинити автоматичне оновлення" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "Зберегти зображення онлайн статистики" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "Надрукувати зображення онлайн статистики" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "Налаштування" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "Про wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "Розпочати автоматичне оновлення" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "Автоматичне оновлення зупинено" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "Автоматичне оновлення розпочато" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "Зберегти зображення статистики" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "Онлайн статистика aMule" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "Негаразди друку.\n" "Можливо ваша поточна друкарка не налаштована вірно?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "Друк" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "aMule не запущений..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule запущений" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule запущений, але від'єднаний" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule з'єднується..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "Стан aMule невідомий..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule" #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " працює " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " зупинений!" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr " не з'єднаний!" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " з'єднується..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " робить щось дивне, перевірте!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " з'єднався з " #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad: " #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "вимкнено" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " ввімкнено " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " з " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "Всього звантажень: " #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ", вивантажень: " #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "Сесія звантаження: " #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "Звантаження: " #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " кбайт/с, вивантаження: " #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " кбайт/с" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "Спільні файли: " #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " файл(ів), клієнтів у черзі: " #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "Час: " #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " ввімкнено " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "Середня завантаженість системи (1-5-15 хв): " #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "Час роботи системи: " #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "Тека, що містить файл amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "Введіть тут теку, де знаходиться файл amulesig.dat" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "Час оновлення в секундах" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "Створювати зображення статистики під час кожного оновлення" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "Введіть назву теки, де б ви хотіли зберігати зображення статистики" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "Вивантажувати час від часу ваші зображення статистики на FTP-сервер" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP-адреса" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP-шлях" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "Введіть тут адресу вашого FTP-сервера" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "" "Введіть тут теку, куди будуть складатися зображення зі статистикою на FTP-" "сервері" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "Користувач" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "Введіть тут ім'я користувача для входу на ваш FTP-сервер" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "Введіть тут пароль входу на ваш FTP-сервер" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "Час оновлення FTP в хвилинах" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "Перевірити" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "Тека, що містить файл з вашим підписом" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "Тека, де створюються зображення статистики" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "Завантажується зразок " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "HTTP порт веб-сервера" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "Використовувати перенаправлення UPnP-портів на порт веб-сервера" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP порт" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "Використовувати gzip-стиснення" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Пароль повного доступу для веб-сервера" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Пароль гостя веб-сервера" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "Дозволити гостьовий доступ" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "Заборонити гостьовий доступ" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "Завантажити/записати налаштування веб-сервера з/до віддаленого aMule" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "Шлях до файлу налаштувань aMule. НЕ ВИКОРИСТОВУЙТЕ БЕЗПОСЕРЕДНЬО!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "Вимкнути інтерпретатор PHP (застаріло)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "Перекомпілювати PHP-сторінки під час кожного запиту" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "Веб-сервер aMule" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "з'єднання веб-клієнта прийнято\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "ПОМИЛКА: неможливо прийняти з'єднання веб-клієнта\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "Запит невдалий з наступною помилкою: %s." #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "Файл індексу не знайдено:" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "Сесія добігла кінця - запитуємо новий вхід\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "Сесія в порядку, входимо\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "Сесія в порядку, не увійшли\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "Немає відкритих сесій, буде запитано вхід\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "Сесію створено - запит на вхід\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "Оброблюю запит [початковий]: " #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "Перевіряється пароль\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "Неправильний хеш пароля\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "Пароль правильний\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "Пароль неправильний\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "Ви не ввели жодного паролю. Порожній пароль не дозволено.\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "Запитано вихід\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "Обробляється запит [перенаправлений]:" #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Частковий файл %s (%s) не має джерел" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Частковий файл %s (%s) має порожні файли-джерела " #, fuzzy #~ msgid "Download status" #~ msgstr "Стан звантаження" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "Затримка оновлення: %d секунда" #~ msgstr[1] "Затримка оновлення: %d секунди" #~ msgstr[2] "Затримка оновлення: %d секунд" #~ msgid "Transferring" #~ msgstr "Передавання" #, fuzzy #~ msgid "QR: ???" #~ msgstr "Рахунок черги: %u" #~ msgid "QR: %u" #~ msgstr "Рахунок черги: %u" #, fuzzy #~ msgid "Queue Rank" #~ msgstr "В черзі" #~ msgid "TODO - show progress of a search" #~ msgstr "TODO - показати поступ пошуку" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Починається створення MD4 та AICH хешів для файлу: %s" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "Починається створення MD4 хеша для файлу: %s" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "Починається створення AICH хеша для файлу: %s" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "" #~ "ЗАСТЕРЕЖЕННЯ: неможливо перенести початковий '%s' після створення " #~ "резервної копії" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "ЗАСТЕРЕЖЕННЯ: неможливо видалити %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (рахунок черги: %u)" #~ msgid "Rating (total):" #~ msgstr "Оцінка (всього):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "Спробувати передати повні шматки до всіх вивантажень" #~ msgid "Networks window" #~ msgstr "Вікно мереж" #~ msgid "Searches window" #~ msgstr "Вікно пошуку" #, fuzzy #~ msgid "Downloads window" #~ msgstr "Звантажується" #~ msgid "Shared files window" #~ msgstr "Вікно спільних файлів" #~ msgid "Messages window" #~ msgstr "Вікно повідомлень" #~ msgid "Statistics graph window" #~ msgstr "Вікно статистики" #~ msgid "Preferences settings window" #~ msgstr "Вікно налаштувань" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "Піктограма в системному лотку втрачена, спроба створити знову ..." #~ msgid "Transfers" #~ msgstr "Передачі" #~ msgid "Files transfers window" #~ msgstr "Вікно передачі файлів" #~ msgid "Unban" #~ msgstr "Зняти заборону" #~ msgid "Show Uploads" #~ msgstr "Показати вивантаження" #~ msgid "Show Queue" #~ msgstr "Показати чергу" #~ msgid "Select View" #~ msgstr "Обрати вигляд" #~ msgid "Client Software" #~ msgstr "Програма клієнта" #~ msgid "Waited" #~ msgstr "Чекає" #~ msgid "Upload Time" #~ msgstr "Час вивантаження" #~ msgid "Upload/Download" #~ msgstr "Вивантаження/Звантаження" #~ msgid "Remote Status" #~ msgstr "Віддалений стан" #~ msgid "File Priority" #~ msgstr "Перевага файлу" #~ msgid "Score" #~ msgstr "Рахунок" #~ msgid "Asked" #~ msgstr "Запитаний" #~ msgid "Last Seen" #~ msgstr "Востаннє побачений" #~ msgid "Entered Queue" #~ msgstr "Увійшов в чергу" #~ msgid "Transferred Up" #~ msgstr "Вивантажується" #~ msgid "Transferred Down" #~ msgstr "Звантажується" #~ msgid "Userhash" #~ msgstr "Хеш користувача" #~ msgid "Encrypted" #~ msgstr "Зашифрований" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "Завантажено %d зображень прапорів." #~ msgid "Shows Upload / Up-queue" #~ msgstr "Показати черги вивантаження/звантаження" #~ msgid "Clients on queue :" #~ msgstr "Клієнтів у черзі:" #~ msgid "Current Session" #~ msgstr "Поточна сесія" #~ msgid "Total" #~ msgstr "Всього" #~ msgid "Requested :" #~ msgstr "Запитані:" #~ msgid "Create backup for preview" #~ msgstr "Створити копію для перегляду" #~ msgid "Files Transfers Window" #~ msgstr "Вікно передавання файлів" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "Вього користувачів: %s | Всього файлів: %s" #~ msgid "HTTP download thread ended" #~ msgstr "Потік звантаження HTTP завершений" #~ msgid "Host: %s:%i\n" #~ msgstr "Хост: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "Відповідь: %i (Помилка: %i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "ЗАСТЕРЕЖЕННЯ: порожня відповідь під час створення потоку" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "ПОМИЛКА: Отриманий код перенаправлення без URL-адреси" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country(): неможливо завантажити дані країн з " #~ msgid "Get IPFilter level." #~ msgstr "Отримати рівень IP-фільтра." #~ msgid "Makes a search." #~ msgstr "Робить пошук." #~ msgid "Killed!" #~ msgstr "Вбитий!" #~ msgid "Using amuleweb in '%s'." #~ msgstr "Використовується amuleweb у '%s'." #~ msgid "Shutting down aMule..." #~ msgstr "Завершення роботи aMule..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "Наступні опції були змінені в цьому випуску з причин безпеки:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* Ввімкнено підтримку приховування протоколу для вхідних та вихідних " #~ "з'єднань.\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* Вимкнено оновлення переліку серверів від іншого серверу та клієнтів.\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "Для більш докладної інформації з питань цих змін, шукайте\n" #~ "\"fake servers\" на aMule wiki (http://wiki.amule.org).\n" #~ "Важливо, щоб ви видалили всі підробні сервери з переліку ваших\n" #~ "серверів для правильної роботи aMule." #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "Додатково, налаштування переглядача тенет скинуті до за замовчуванням. " #~ "Будь ласка, якщо потрібно, налаштуйте його ще раз.\n" #~ msgid "Fetching status..." #~ msgstr "Отримується стан..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "Користувачі: E: %s K: %s | Файли E: %s K: %s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "Клієнт %s на IP:Port %s:%d використовує %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() повернув NULL" #~ msgid "Firewalled" #~ msgstr "За фаєрволом" amule_2.3.1+git20151120.0023527bc2.orig/po/zh_CN.po0000644000175000017500000074007512611472361017477 0ustar morphmorph# Chinese translation of aMule. # This file is distributed under the same license as the aMule package. # # Chen Nan, 2004. # xiaoqiao <29551030@qq.com>, 2007, 2008. # JimHu , 2009. # Xiaoqiao , 2010. # Yi Qi ,2011. # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-04-21 12:10+1000\n" "Last-Translator: YiQi \n" "Language-Team: Chinese Simplified \n" "Language: zh_CN\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" "X-Generator: Lokalize 1.0\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "添加好友" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "请输入正确 IP 地址和端口!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "信息" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "该用户编码无效!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "打开 ED2K 链接文件失败。" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "警告:在低 ID 的情况下,你不能添加自己作为 ed2k 链接的源。" #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "现在,正在退出主程序..." #: src/amule.cpp:248 #, fuzzy, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "杀死 pid 为 '%ld' 的 amuleweb 进程..." #: src/amule.cpp:251 #, fuzzy, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "杀死 pid 为 '%ld' 的 amuleweb 进程..." #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "失败" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule 正在退出:中止内核。" #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "aMule 已经关闭。" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "aMule 退出的内存 Debug 结果:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "EC 配置" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "密码已设置,启用远程连接。" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "警告" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "对不起,由于配置变动,您的地区设置已经变为系统默认值。" #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "信息" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "在服务器列表中没有任何服务器。\n" "需要 aMule 现在就下载一个新的列表吗?" #: src/amule.cpp:581 msgid "Server list download" msgstr "服务器列表已下载" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "Web 服务器正在运行,进程编号为 %d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "您要求启动时运行 Web 服务器,但 amuleweb 程序无法 运行, 请先安装包含 Web 服" "务器的 aMule 版本,或者使用 --enable-webserver 选项编译 aMule,然后运行 make " "install 进行安装" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "错误" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "无法绑定端口到指定的地址:%s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "端口 %u 已被占用,你会成为低 ID。\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "端口 %u 已被占用。\n" "\n" "这意味着你会成为低 ID。\n" "\n" "请检测网络设置以确保端口可用于输入输出。" #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "创建在线统计文件失败" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "创建 aMule 在线统计文件失败" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "您所选择的地区设置在您的计算机上似乎没有安装。(注意:我还是会尝试您所选择的地" "区设置。)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "这是您第一次运行 aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "此版本是测试版,更新频繁, \n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "我们无法承诺它不会损坏任何东西,烧毁您的房子,\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "或杀死你的狗,但 * 一般来讲 * 它应该是安全的。\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "如要获取使用信息、用户支持以及下载最新版本,请访问我们的首页\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "www.aMule.org,或进入我们在 irc.freenode.net 的 IRC 频道 #aMule。\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "欢迎您到 http://forum.amule.org 去提交错误报告" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "您为在线统计文件所选择的文件夹无效!\n" "在您更正设置之前在线统计将被禁用。" #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "获取服务器名称" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "为文件 '%s' 预分配磁盘空间失败:%s" #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "错误:无法打开日志文件" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "警告:日志文件为空。肯定有什么地方出错了。" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "记录文件已被重置" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "服务器消息:%s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "跳过下载%s,因为请求的文件不是最新的。" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "下载节点列表失败。" #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "打开已下载的版本检查文件失败" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "损坏的版本检查文件" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "您使用的是老版本的aMule!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "您的 aMule 版本是 %i.%i.%i,最新版本是 %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "最新版本可从这里下载:http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "警告:您的 aMuled 版本太旧:%i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "您的aMule是最新版本。" #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "下载版本检查文件失败" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "用户:%s | 文件:%s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "用户:E:%s K:%s | 文件:E:%s K:%s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "没有选择网络" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "有低 ID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "有高 ID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "已连接到 %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "正在连接到 %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "已从 eD2k 断开" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad 已启动。" #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad 已停止。" #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "已连接至 Kad (ok)" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "已连接至 Kad 网络 (有防火墙)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "已断开 Kad 连接" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "如果在设置中禁用了 UDP 端口,Kad 网络将不能使用,没有启动。" #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Kad 网络在设置中被禁用了,没有连接。" #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "错误:当远程连接被禁用的时,aMule 服务程序无法使用。要启用远程连接,请使用普" "通的 aMule,或使用 --ec-config选项启动 amuled 或在文件 ~/aMule/amule.conf 中" "设置选项\"AcceptExternalConnections\"为1" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "错误:如果需要使用外部连接,必须设置一个可用的密码,aMule daemon不能在没有启" "用外部连接的情况下使用。要运行aMule daemon,你必须设置~/.aMule/amule.conf文件" "中的\"ECPassword\"字段,使它有一个合适的值。执行amuled --ce-config来设置这个" "密码。更多信息请访问http://wiki.amule.org。" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled:正在初始化 - 启动计时器" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled: 进入后台 - 再见" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "不能创建 Pid 文件" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "错误:%s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "这是基于 eMule 的 aMule %s。" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "运行于 %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "访问 http://www.amule.org 来检查 是否有新版本。" #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "致命错误:创建计时器失败" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "aMule 远程控制" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "快照:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "基于 eMule 的“全平台” P2P客户端\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "网站:http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "论坛:http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "FAQ: http://wiki.amule.org \n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "联系邮件:admin@amule.org (管理问题) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "版权所有 (C) 2003-2008 aMule 团队 \n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "aMule 的一部分是基于 \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr "Kademlia:基于异或算法的点对点路由。\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr "版权所有 (c) 2002-2008 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "消息" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "aMule 对话损坏" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "正在连接" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k:正在连接" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k:连接已断开" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad:有防火墙" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad:已连接" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad:正在连接" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad:关闭" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "取消" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "终止本次连接尝试" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "断开连接" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "从当前已连接的网络断开" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "连接" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "连接至当前已启用的网络" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "上传:%.1f(%.1f) | 下载:%.1f(%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "上传:%.1f | 下载:%.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule(%s | 已连接)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule(%s | 已断开)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "您确定要关闭%s吗?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "退出确认" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "运行命令:" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- 默认 -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "皮肤目录 %s 不存在" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "警告:无法打开皮肤文件 %s 进行读取" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "网络" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "网络窗口" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "搜索" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "搜索窗口" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "下载" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "下载窗口" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "共享文件" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "共享文件窗口" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "消息" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "消息窗口" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "统计" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "统计图窗口" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "设置" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "设置窗口" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "导入" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "part 文件导入工具" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "关于" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "关于/帮助" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "eD2k 网络" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "Kad 网络" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "无网络" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "aMule 远程控制" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "严重错误:无法创建核心计时器" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "连接到远程 amule" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "严重错误:无法建立轮询计时器" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "准备事件循环..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "正在连接..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "连接失败" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "远程 GUI 外部连接事件处理程序" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "下降" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "连接失败。不能连接到 %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "连接关闭 - aMule 可能已经终止运行。" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "准备" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "全部" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "不能为分类 '%2$s' 创建目录 '%1$s',保持目录 '%3$s'。" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "未知" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "无法获取用户 %s 的共享文件" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "正在搜索用户用于低 ID 连接" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (假冒 eMule 版本 %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (假冒 eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (假冒 eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (基于 eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "昵称:%s ID:%u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "已请求: %s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "本次运行文件统计:接受了 %d 个请求(总请求数 %d),已传送 %s\n" msgstr[1] "本次运行文件统计:接受了 %d 个请求(总请求数 %d),已传送 %s\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "历史运行文件统计:接受了 %d 个请求(总请求数 %d),已传送 %s\n" msgstr[1] "历史运行文件统计:接受了 %d 个请求(总请求数 %d),已传送 %s\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "请求了未知文件" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "来自 %s(IP:%s)的消息被过滤掉了" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "新消息来自于 %s(IP:%s)" #: src/BaseClient.cpp:2899 #, fuzzy, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "用户 %s(%u)请求目录 %s 的共享文件列表 -> 已拒绝" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "警告:%s 文件无法打开。" #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "警告:已取消文件列表损坏,包含有非法头部。" #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "读取 %s 文件时发生 IO 错误:%s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "保存 %s 文件时发生错误:%s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "输入 Captcha" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "分类" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "新分类" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "请选择下载文件夹" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "必须定义分类名称!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "必须定义分类路径!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "无法建立该分类的接收文件夹,请给出一个有效的分类路径!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "聊天已开始:%s(%s:%u)- %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** 已连接到用户 ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** 正在连接用户 ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** 无法连接用户/连接丢失 ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "*** 您已经通过了 captcha 检测,用户已经接收到你的信息了。***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** 您输入了错误的 captcha 信息,您的信息已经被忽略。您可以通过重新发送一条信" "息来再一次请求一个captcha验证。***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "聊天" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "关闭分页" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "关闭所有分页" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "关闭其它分页" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "加为好友" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "积分文件已载入,%u 个已知用户" msgstr[1] "积分文件已载入,%u个已知用户" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - %u 个用户的积分已过期!" msgstr[1] " - %u 个用户的积分已过期" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "文件 'crytkey.dat' 未找到,正在创建。" #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "客户端详细信息" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "低 ID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "高 ID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "已启用" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "已支持" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "不支持" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "已禁用" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "已连接" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "断开连接" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f kB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "未完成" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "坏蛋" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "验证 - 通过" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "不可用" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "用户 %s(%u)请求您的共享文件列表 -> 已接受" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "用户 %s(%u)请求您的共享文件列表 -> 已拒绝" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "用户 %s(%u)请求了您的共享文件夹列表 -> 已接受" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "用户 %s(%u)请求了您的共享文件夹列表 -> 已拒绝" #: src/ClientTCPSocket.cpp:916 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "用户 %s(%u)请求目录 %s 的共享文件列表 -> 已接受" #: src/ClientTCPSocket.cpp:921 #, fuzzy, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "用户 %s(%u)请求目录 %s 的共享文件列表 -> 已拒绝" #: src/ClientTCPSocket.cpp:940 #, fuzzy, c-format msgid "User %s (%u) shares directory '%s'" msgstr "用户 %s(%u)共享了目录 %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "用户 %s(%u)发送了未经请求的共享文件夹列表" #: src/ClientTCPSocket.cpp:970 #, fuzzy, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "用户 %s(%u)发送了目录 %s 内的共享文件列表" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "用户 %s(%u)完成了共享文件列表的发送" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "用户 %s(%u)发送了未经请求的共享文件列表" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "用户 %s(%u)拒绝了目录/文件列表的访问" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "文件注释" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "用户名" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "文件名" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "评分" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "注释" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "没有注释" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u 条注释" msgstr[1] "%u条注释" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "" "封禁客户端 %1$s,因为向文件 '%4$s' 总共发送的 %3$s 中有 %2$s 的错误数据。" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "自动 [低]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "自动 [普]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "自动 [高]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "极低" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "低" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "普通" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "高" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "极高" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "发布" #: src/DataToText.cpp:62 msgid "Asking" msgstr "正在询问" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "通过服务器连接中" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "队列已满" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "正在排队" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "正在下载" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "正在接收校检码" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "没有需要的部分" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "无法连接两个低 ID 用户" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "连接过多" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "正在通过 Kad 连接" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Kad 连接过多" #: src/DataToText.cpp:73 msgid "Banned" msgstr "封杀" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "连接错误" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "队列已满" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "旧版 MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "新版 MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule 兼容程序" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "本地服务器" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "远程服务器" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "来源交换" #: src/DataToText.cpp:132 msgid "Passive" msgstr "被动" #: src/DataToText.cpp:133 msgid "Link" msgstr "链接" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "资源种子" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "搜索结果" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "已完成" #: src/DataToText.cpp:146 msgid "In progress" msgstr "正在处理" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "错误:磁盘空间不足" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "错误:缺少参数" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "错误:IO 错误!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "错误:失败!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "已加入队列" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "已经在下载" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "未知或错误的临时文件格式。" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "块" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "大小" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "已传输" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "速度" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "进度" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "源" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "优先级" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "状态" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "剩余时间" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "最后一次发现完整文件" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "最后一次下载" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "您确定删除所选择的文件吗?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "您确定删除所选择的文件吗?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "反馈来自:%s(%s)\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "自动" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "停止(&S)" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "暂停 (&P)" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "续传(&R)" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "清除已完成的文件 (&l)" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "立即转移所有 A4AF 到这个文件" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "自动转移所有 A4AF 到这个文件" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "立即转移所有 A4AF 到其它文件" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "扩展选项" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "预览" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "显示文件信息(&D)" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "显示所有注释" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "复制 magnet 地址到剪贴板" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "复制 eD2k 链接到剪贴板 (&L)" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "复制统计信息到剪贴板" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "清除分类" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "指定到分类" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "打开文件 (&O)" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "请输入新文件名:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "更改文件名" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "下载(%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "为了不让此提示在每次预览时都出现,\n" "请在设置中预设您喜欢的播放器(默认为mplayer)。" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "文件预览" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "错误:无法运行媒体播放器!命令:%s" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "正在保存 PartFile %u 之 %u" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "所有 PartFile 都已经保存。" #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "从 %s 载入临时文件。" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "载入 PartFile %u 之 %u" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "错误:载入备份文件失败!请到 http://forum.amule.org 搜索 .part 和 .met 文件的" "恢复方法。" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "所有 PartFile 已经载入。" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "没有找到 part 文件" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "发现 %u 个 part 文件" msgstr[1] "发现 %u 个 part 文件" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "存放零时文件分区的文件系统不支持大文件。" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "存放下载文件分区的文件系统不支持大文件。" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "正在下载 %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "您已经在下载文件 '%s'" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "您已下载了文件 '%s'" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "您已经尝试下载文件 %s" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "无法转换 magnet 链接为 eD2k:%s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "未知链接协议:%s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "非法 eD2k 链接!错误:%s" #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "客户端在验证失败后发送包。" #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "已关闭远程连接。" #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "密码未设置,远程连接已被禁止" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "配置文件中已禁止远程连接" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "新的远程连接已被接受" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "错误:不能接受新的远程连接" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "由于未设置密码,远程连接已被拒绝!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "正在连接用户:%s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "未知版本" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "错误的远程连接版本号,可能会不兼容,请使用相同版本的核心和远程程序。" #: src/ExternalConn.cpp:457 #, fuzzy msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "你不能连接至任意 CVS 版本的发布!目的是为了不让程序崩溃。" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "非法协议版本。" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "缺失协议版本标签。" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "验证失败:非法的校验作为EC密码" #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "验证失败:密码错误。" #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "验证失败:没有密码" #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "无效请求,请先验证。" #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "登录成功" #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "发送错误消息喔 \"%s\"到客户端。" #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "来自%s的非法登录尝试,已关闭连接。" #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "远程 Part 文件命令失败:文件校验码不存在:%s" #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "文件校验码不存在:%s" #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "OpCode 处理错误!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "服务器没有被添加" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "找不到服务器:%s" #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "必须定义需删除的服务器" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k 被设为禁用" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "正在搜索,请稍等然后重新获取结果!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "远程界面使用网络搜索没有意义。" #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "此图没有节点" #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "您的客户端没有为详细级别进行配置。" #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "远程连接:已请求关闭" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "已经在关闭。" #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "远程连接:正在添加链接 '%s'。" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "非法链接或已经存在列表中。" #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "文件未找到。" #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "非法文件名。" #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "无法重命名文件。" #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad 被设为禁用" #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "已经连接至 eD2k。" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "正在连接至 eD2k..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "已连接至 Kad。" #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "正在连接至 Kad..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "全部网络都被禁用了。" #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "已从 eD2k 断开连接。" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "已从 Kad 断开连接。" #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "远程连接:非法 opcode:%#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "非法的 opcode(错误的协议版本?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "未知扩展选项 '%s' 用于命令 '%s'。\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "未知命令 '%s'。\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "此命令不能含有参数。\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "此命令必须有参数。\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "此命令不完整,您必须使用以下扩展选项中的一个。\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "可用扩展选项:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "可用命令:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "全部命令都不区分大小写。\n" "输入 '%s <命令>' 获取在 <命令> 中的详细信息。\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "退出程序。" #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "显示帮助。" #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "输入 'help <命令>' 可显示命令的帮助。\n" "输入 'help' 可显示全部命令列表。\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "使用 '%s' 列出所有命令\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "语法错误!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "处理指令时发生意外错误 - 这不应该发生!请提交错误报告\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "此命令不需要任何参数。" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "此命令必须有一个参数。" #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "无效参数" #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "此命令不完整。" #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "输入 '%s' 显示更多帮助信息。\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "这是 %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "这是 %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "正在建立用户...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "完成,正在退出 %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "不能使用空密码连接,\n" "您必须在配置文件\n" "或在命令行设置一个,或者在询问时输入。\n" "\n" "退出...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "显示帮助信息。" #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "aMule 正在运行的主机。(缺省:localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "aMule 的远程连接端口。(默认:4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "远程连接密码。" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "从文件读取设置。" #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "不在控制台输出任何信息。" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "详细显示调试信息。" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "设置程序地区(语言)。" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "把命令行参数写入设置文件。" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "基于 aMule 的设置文件建立新设置文件。" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "输出程序版本。" #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "文件信息" #: src/FileDetailDialog.cpp:113 #, fuzzy, c-format msgid "%.1f%% done" msgstr "%.2f%% 已完成" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f kB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "读取好友列表文件 emfriends.met 失败!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "写好友列表文件emfriends.met失败!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "严重错误 - 开始聊天进程没有客户端" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "好友" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "显示详细信息 (&D)" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "添加好友" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "删除好友" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "发送消息 (&M)" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "查看共享文件" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "建立好友通道" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "确定删除选中的好友吗?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "确定删除选中的好友吗?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "不允许设置超过一个好友通道。\n" " 只能指定一个通道。" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "多选" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "发消息给用户" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "发送消息:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "从好友中删除" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "发送消息" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "转移到这个文件" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, fuzzy, c-format msgid "On Queue: %u (%i)" msgstr "队列级别:%u(%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "已要求其它文件 (A4AF)" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "等待上传机会" #: src/GenericClientListCtrl.cpp:1026 #, fuzzy, c-format msgid "On Queue: %u" msgstr "正在排队" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "正在上传" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "没有" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "否" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "是" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "正在下载..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "HTTP 下载已经取消" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "无法为下载创建目标文件%s" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "要下载的地址不能为空" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "地址%s已经返回:%i - 错误(%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "写入下载文件时发生严重错误" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "已下载 %d 字节" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "丢弃了 %d 字节,但是下载了 %d 字节。" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "非法的HTTP下载或重定向地址(您是否忘记了加“http://”?)" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "无法连接到HTTP下载服务器" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "HTTP下载服务器返回非法响应" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "从 %s 下载新的 GeoIP.dat" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "下载 GeoIP.dat 文件失败,放弃更新。" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "删除%s文件失败,放弃更新。" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "重名命%s文件失败,放弃更新。" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "成功更新%s" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "更新 GeoIP.dat 时发生错误" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "从%s下载%s失败" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "为%s载入国家数据失败" #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "正在载入IP过滤文件ipfilter.dat和ipfilter_static.dat。" #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "载入 ipfilter.dat 文件 '%s' 失败,遇到未知格式。" #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "载入 ipfilter.dat 文件 '%s' 失败,无法打开文件。" #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "自 %2$s 载入 %1$u 个IP段。" msgstr[1] "载入 %u 个IP段自 %s。" #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "丢弃了 %u 行错误数据。" msgstr[1] "丢弃了 %u 行错误数据。" #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "重名命新的%s文件失败,放弃更新。" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "IP过滤器已准备好" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "从已知用户启动" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "节点(%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "无效 IP" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "无效端口" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "请填写所有必要信息" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "确定要下载新的 node.dat 文件吗?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "这样将删除您当前节点并重启 Kad 连接。" #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "继续?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kad:搜索关键词太短" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "搜索关键词:%s" #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kad:搜索关键词已经在搜索列表中:" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "无法读取 node.dat 档案 - 版本 (0) 太旧,已经不再支持了。" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "读取 %u 个 Kad 联系人" msgstr[1] "读取 %u 个 Kad 联系人" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "没有找到联系人,请尝试 bootstrap 或者下载一个 nodes.dat 文件。" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "只有 %d 个 Kad 联系人可用,nodes.dat 没有写入" msgstr[1] "只有%d个Kad联系人可用,nodes.dat没有写入" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "已写入 %d 个 Kad 联系人" msgstr[1] "已写入%d个Kad联系人" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "文件名" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "文件大小" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "共享率" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "已上传" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "已请求" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "已接受" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "完成的源" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "警告:已知文件的列表已经损坏,包含有非法头部。" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "在已知文件列表载入条目失败,文件可能损坏" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "已知文件列表包含非法条目,文件可能损坏:" #: src/libs/common/Format.cpp:307 #, fuzzy, c-format msgid "Unknown error %d" msgstr "未知版本" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, fuzzy, c-format msgid "Unable to get error description for error %d" msgstr "无法为下载创建目标文件%s" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "正在校检" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "正在完成" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "完成" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "已暂停" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "已出错" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "等待中" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "您必须输入非空密码。" #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "非法密码,不是合法的MD5校验码!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "连接失败" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "远程连接失败,回复为空。" #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "远程连接:错误回应,握手失败。连接已经关闭。" #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "成功!已连接至 aMule" #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "成功!已经建立连接。" #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "远程连接:访问被拒绝,原因:" #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "远程连接:握手失败。" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "HTTP 下载线程开始" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "监听Socket: Ok." #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "错误:无法监听 TCP 端口。" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "错误:" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "警告:" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "关闭" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "剪切" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "复制" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "粘贴" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "清除" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "选择全部" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "kB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "无限制" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule 状态栏菜单" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "速度限制:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "上传:无" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "上传:%u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "下载:无" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "下载:%u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "下载速度:%.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "上传速度:%.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "客户端信息" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "昵称:%s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "未选择昵称" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "客户端 ID:" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "未连接" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "服务器名称:" #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "服务器 IP:" #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "未连接" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP:%s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP 端口:%d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP 端口:未准备好" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "UDP 端口:%d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UDP 端口:未准备好" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "在线统计: 启用" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "在线统计: 禁用" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "运行时间:%s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "共享文件:%d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "排队用户:%d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "总下载:%s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "总上传:%s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "上传限制" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "下载限制" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "隐藏 aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "显示 aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "退出" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k 链接:" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "确定" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "点击此处将添加文本框中的 eD2k 链接至下载队列。" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "此处显示系统事件。如需完整事件列表,请到服务器分页。" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "正在载入..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "当前服务器上用户数..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "用户: 0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "当前服务器上的用户和估算总用户数。" #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "上传:0.0 | 下载:0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "当前平均上传下载速度。括号中的值为于其他用户连接所消耗的带宽。" #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "显示当前连接状态及当前传送状态。红色箭头表示未连接,黄色箭头表示低 ID (有防火" "墙),绿色箭头表示正常连接(最佳连接方式)。" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "未连接..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "现在已连接的服务器。" #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "查找" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "名字:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "类型" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "本地" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "全球" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "文件校验码" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "附加参数" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "过滤" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "文件类型" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "任何" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "存档" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "音乐" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "CD 镜像" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "图片" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "程序" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "文本" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "视频" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "扩展名" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "大小下限" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "字节" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "大小上限" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "可用来源数" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "过滤:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "过滤结果" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "反向排序结果" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "隐藏已知文件" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "开始" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "更多" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "基于 eD2k 搜索更多结果。Kad 还不支持此功能。" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "停止" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "下载" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "重置表单" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "搜索结果" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "清除已完成的下载" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "文件资源:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "常规" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "全名:" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met 文件:" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "校检码:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "文件大小:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "part 文件状态:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "最后发现完整共享文件:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "传输" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "已发现来源:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "正在传输的来源:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "文件分块数量:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "可用:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "数据率:" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "下载活动时间:" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "已传输:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "已完成大小:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "智能损坏数据处理" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "因数据损坏而丢失:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "压缩效益:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "由 I.C.H. 挽救的数据包:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "文件名" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "替换" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "清除" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "应用" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "确定" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "注释/评分文件(文本将对全部用户可见)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "像电影的话,您可以说明它的长度、情节和语言等等...\\n\\n如果文件是假冒的,您可" "以提醒其它 aMule 用户。" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "文件质量" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "未评分" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "无效 / 损坏 / 假冒" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "差" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "一般" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "好" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "很好" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "选择文件评分或者提醒其它用户该文件是无效的..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "刷新" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "正在下载,请等待 ..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "未知大小" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "必填信息" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP 地址:" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "端口:" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "附加信息" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "用户名:" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "用户编码:" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "添加" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "下载速度" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "当前" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "动态平均值" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "本次运行平均值" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "上传速度" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "连接" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "活跃下载" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "活跃连接(1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "活跃上传" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "统计树" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "用户名:" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "用户编码:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "客户端软件:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "客户端软件版本:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP 地址:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "用户 ID:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "服务器 IP:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "服务器名称:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "迷惑协议:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "客户端传输" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "当前请求:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "平均上传速度:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "平均下载速度:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "上传 (本次运行):" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "下载 (本次运行):" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "上传 (总共):" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "下载 (总共):" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "分数" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "下载/上传比率:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "安全身份认证:" #: src/muuli_wdr.cpp:1410 #, fuzzy msgid "Queue rank:" msgstr "队列级别" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "队列积分:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "昵称" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - 跨平台的骡子" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "其他用户连接到您的时候,他们会看到这个名字。" #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "语言:" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "显示提示前的延迟时间。" #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "这用来指定控制语言。" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "启动时检查新版本" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "启用此选项将让 aMule 启动时检查新版本" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "启动后最小化" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "启用后 aMule 启动后立即最小化。" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "退出时确认" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "让 aMule 在退出前进行询问。" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "启用状态栏图标" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "启用/禁用系统状态栏图标。" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "最小化至系统状态栏图标" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "启用此选项将使 aMule 最小化到系统状态栏,而不是任务栏。" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "提示延时:" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "秒" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "浏览器选择" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "在此处输入您的浏览器名称,如要使用系统默认浏览器则请留空。" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "浏览" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "如果可能的话,在新标签页中打开" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "如果可能的话,在新的标签页中打开而不是新的窗口" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "视频播放器" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "带宽限制" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "上传" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "槽速度" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "端口" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "标准 TCP 端口 " #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "这是标准的 eD2k 端口,不能被禁用。" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "用户服务器请求的 UDP 端口(TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "扩展 UDP 端口(Kad/全局搜索)" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "此 UDP 端口用于扩展 eD2k 请求和 Kad 网络" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "启用 UPnP 以用于路由器端口转发" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnP 的 TCP 端口(可选):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "为本地地址绑定 IP(全部绑定则留空):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "只限高级用户:如果您有多个网络接口,请输入 aMule 将要绑定接口的地址。" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "每个下载文件的最大的源数量:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "最大同时连接:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kademlia" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "启动后自动连接" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "断线后自动重连" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "如果" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "次连接失败,则删除该服务器。" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "启动时自动更新服务器列表" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "列表" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "与服务器连接时更新服务器列表" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "与其他用户连接时更新服务器列表" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "启用优先级系统" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "连接时启用智能低 ID 检测" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "安全连接" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "只自动连接到静态服务器列表里的服务器" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "设置用户输入的服务器为高优先级" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "智能损坏数据处理(I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "启用" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "高级 I.C.H.,信任全部校验值(不推荐)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "添加新下载文件时设为暂停状态" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "添加新下载文件时设定优先级为自动" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "尝试先下载文件的第一段和最后一段" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "当一个文件完成时开始下一个暂停的文件" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "来自同一分类" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "依照字母顺序" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "为新文件预分配磁盘空间" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "为新文件分配全部所需的磁盘空间,这样可以减少碎片" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "停止下载当可用磁盘空间只有" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "要求检查磁盘空间" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "请输入最低硬盘空间。" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "保存稀有文件(少于20个源)的10个源" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "上传" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "添加新共享文件时设优先级为自动" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "存放下载文件的文件夹" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "存放临时下载文件的文件夹" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "共享的文件夹" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(鼠标右键单击文件夹图标来递归共享)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "共享隐藏文件" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "图表" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "刷新延迟:5 秒" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "平均值图表显示时间:100 分钟" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "连接图表尺寸:100" #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "下载图表尺寸:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "上传图表尺寸:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "颜色:" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "背景" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "网格" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "目前下载" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "动态平均下载" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "本次运行平均下载" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "目前上传" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "动态平均上传" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "本次运行平均上传" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "活跃连接" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "系统状态栏图标速度显示" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "当前 Kad 节点" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "运行的 Kad 节点" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "本次运行的 Kad 节点" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "选择" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "树" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "显示用户软件版本的数量(0代表不限制)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!!警告!!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "5 秒内最大新连接数" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "文件缓冲:24000 字节" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "上传队列长度:5000 用户" #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "服务器连接刷新周期:禁用" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "停用电脑自动进入待命模式功能" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "要使用的皮肤:" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "在全部窗口都显示“快捷 eD2k 链接处理栏”。" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "在分类页中显示附加信息" #: src/muuli_wdr.cpp:2107 #, fuzzy msgid "Show application version on title" msgstr "标题栏显示传送速度" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "标题栏显示传送速度" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "程序名称之前" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "程序名称之后" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "显示额外开销的带宽" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "垂直显示工具栏" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "显示客户端的国旗" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "下载队列文件" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "显示进度百分比" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "显示进度条" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "扁平" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "圆润" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "自动排序文件(高 CPU 占用)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule 会自动将下载列表按列排序" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "远程连接参数" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "接受远程连接" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "监听接口的 IP:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "" "在此输入正确的 IP(格式:a.b.c.d)用于监听远程连接接口。空着不填或者 0.0.0.0 表" "示任何接口。" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "TCP 端口:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "为远程连接端口启用 UPnP" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "密码" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "Web 服务参数" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "启动时运行 Web 服务" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "Web 模板" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "最高权限密码" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "启用低权限用户" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "低权限密码" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "为 Web 服务端口启用 UPn P端口转发" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "Web 服务器 UPnP 的 TCP 端口(可选)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "页面刷新周期(秒)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "启用 Gzip 压缩" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "确定" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "点击这里立即使用新的设置。" #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "取消所有设置改动。" #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "标题:" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "注释:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "下载文件目录:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "设置新加入的文件优先级为 :" #: src/muuli_wdr.cpp:2392 #, fuzzy msgid "Don't change" msgstr "不要改变" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "选择该类别颜色 (当前选择) :" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "重置" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "按此按钮清空日志." #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "按此按钮从该网址更新服务器列表 ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "服务器列表" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "输入 server.met 文件的地址,然后按此按钮更新服务器列表。" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "手动添加服务器:名称" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "在此输入新服务器的名称" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP地址:端口" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "输入新服务器的 IP 地址(x.x.x.x格式)。" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "在此请输入服务器端口。" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "添加新服务器(先填写左侧的内容) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule 日志" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "服务器信息" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "ED2K 信息" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad 信息" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "按此更新节点列表自网址..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "节点(0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "输入 nodes.dat 文件的地址并按左边的按钮以更新已知节点列表" #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "节点状态" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "启动" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "新节点" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "端口:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "从已知用户启动" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "断开 Kad" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "使用安全用户认证" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "建议使用此选项,如果安全用户认证没有启用,将不会接收信用证明。" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "迷惑协议" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "支持迷惑协议" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "此选项启用了迷惑协议,可让aMule接受其他用户用迷糊协议的连接" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "为传出连接使用迷惑协议" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "此选项使aMule在连接其他用户或服务器时使用迷惑协议。" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "只接受迷惑协议连接" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "" "此选项让aMule只接受迷惑协议连接,源相对来说会更少,但全部数据包都将进行迷惑处" "理" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "任何人" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "没人" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "谁可查看我的共享文件:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "选择可以浏览共享文件列表的用户。" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP 过滤" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "过滤用户" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "过滤在文件~/.aMule/ipfilter.dat中定义的用户IP" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "过滤服务器" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "过滤在文件~/.aMule/ipfilter.dat中定义的服务器IP" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "刷新列表" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "更新IP 地址过滤列表 ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "地址:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "立即更新" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "启动后自动更新IP 地址过滤列表" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "过滤级别:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "永远过滤局域网 IP 地址" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "处理不匹配的 IP" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "拒绝用户IP不同于接收包中的IP的数据包,请谨慎使用。" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "在可用的情况下使用系统级的 ipfilter.dat" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "如果没有找到本地 ipfilter.dat 文件,则允许使用系统级的IP过滤文件。" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "启用在线统计" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "输出该文件以用于在线统计等等。" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "更新频率(秒):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "更改在线统计文件的更新频率(秒)。" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "保存在线统计文件在:" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "点击选择包含在线统计文件的目录。" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "过滤收到的消息(不包括当前对话):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "过滤所有消息" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "过滤来自好友列表外的消息" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "过滤来自未知用户的消息" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "过滤包含以下内容的消息(用半角逗号分隔):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "输入需过滤的词组" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "在日志中显示接收的消息" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "备注" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "过滤包含以下内容的备注(使用‘,’作为分隔符):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "自动连接服务器时忽略代理设置" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "启用验证:" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "启用/禁用用户名/密码验证" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "用户名:" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "连接代理服务器的用户名" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "密码:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "连接代理服务器的密码" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "启用代理" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "启用/禁用代理支持" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "代理类型:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "代理服务器:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "代理服务器名称" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "代理端口:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "代理端口" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "连接到:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "登录远程 amule" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "用户名" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "记住这些设置" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "启用详细调试日志。" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "打开文件 (&O)" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "消息分类:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "等待中..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "添加导入文件" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "重试所选" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "删除所选" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "事件类型" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "所选文件的统计和队列用户:会话/全部时间" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "活跃上传:" #: src/muuli_wdr.cpp:3371 #, fuzzy msgid "Percent of total files" msgstr "全部文件的百分比" #: src/muuli_wdr.cpp:3418 #, fuzzy msgid "All files" msgstr "所有共享文件" #: src/muuli_wdr.cpp:3419 #, fuzzy msgid "Selected files" msgstr "选择显示过滤" #: src/muuli_wdr.cpp:3420 #, fuzzy msgid "Active uploads only" msgstr "活跃上传" #: src/muuli_wdr.cpp:3422 #, fuzzy msgid "Show Clients for" msgstr "显示用户" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "重新载入:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "刷新共享文件" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "发送" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "发送指定消息。" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "结束本次聊天。" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "连接至任何服务器和/或 Kad" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "共享文件" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "已禁用 [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "字节" msgstr[1] "字节" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "kB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "k" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "字节/秒" msgstr[1] "字节/秒" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "秒" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "分钟" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "小时" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "日" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "所有" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "其它" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "未完成" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "已停止" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "视频" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "归档" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "文本" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "活动" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "使用配置目录:%s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "等待partfile转换线程结束..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "正在导入 %s:%s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "正在读取临时文件夹" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "正在从下载信息文件获取基本信息" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "创建目标文件" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "从旧下载文件载入数据(%u 共 %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "正在保存数据块至新的单个下载文件(%u 共 %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "正在获取源下载文件信息" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "正在下载和保存新part文件" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "导入 part 文件" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "状态" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "文件校验码" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (磁盘:%s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "请选择一个目录用于搜索临时下载文件!(子目录也将被包括)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "要删除成功导入下载的源文件吗?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "删除源?" #: src/PartFile.cpp:298 #, fuzzy msgid "ERROR: Failed to create partfile" msgstr "错误:无法创建 part 文件)" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "尝试从 %s 载入 met 文件的备份" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "错误:无法打开part.met文件:%s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "错误:part.met文件大小为0: %s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "错误:非法的part.met文件版本:%s ==> %s" #: src/PartFile.cpp:595 #, fuzzy, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "错误:文件 %s(%s)已损坏(标签数不对),无法读取文件。" #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "错误:文件 %s(%s)已损坏(标签数不对),无法读取文件。" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "尝试恢复文件信息..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "尝试恢复无名文件 - 保存为 RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "成功恢复所有文件信息 :D - 尝试使用文件信息..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "无法恢复文件:(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "无法读取 %s(%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "警告:%s可能已损坏(%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "part 文件存盘时发生错误:%s(%s => %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "保存partfile时,发生磁盘读写错误:" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "无法获取%s的大小 - 正在使用%s文件。" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "'%s' 文件长度为 0 - 使用 %s 文件。" #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "%s 的 part.met.seeds 文件存盘失败" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "保存了 %i 个源给 part 文件 %s(%s)" msgstr[1] "保存了 %i 个源给 part 文件 %s(%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "保存了 %i 个源给 part 文件 %s(%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "读取 part 文件的种子文件出错(%s - %s):%s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "发现损坏的数据块 (%d) 于%d段文件 %s - 文件结果校检码 |%s| 文件校检码 |%s|" msgstr[1] "" "发现损坏的数据块 (%d) 于%d段文件 %s - 文件结果校检码 |%s| 文件校检码 |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "发现了已完成的数据段 %i 在%s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "重新校验 %s 完成" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "在完成文件%s时遇到意外文件错误,文件已暂停" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "完成下载:%s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "正在删除文件:%s " #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "警告:无法为已下载的数据段计算校检码 - 校检码集不完整 '%s'" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "警告:无法生成校检码 - 校检码集不完整(%s), 正常情况下这是不应该发生的" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "文件结束 当下载 %u 长度 %u (最大 %u) partfile '%s'长度 %u: %s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "警告:硬盘空间不足!暂停文件:%s" #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "下载的数据段 %i 已损坏 文件: (%s)" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH:修复了损坏的数据段 %i(%s),挽救数据(字节): %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "正在分配" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "磁盘空间不足" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "已下载" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "错误:打开part文件'%s'失败" #: src/Preferences.cpp:632 msgid "System default" msgstr "系统默认" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "阿尔巴尼亚语" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "阿拉伯语" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "澳大利亚" #: src/Preferences.cpp:636 msgid "Basque" msgstr "巴斯克语" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "保加利亚语" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "加泰罗尼亚语" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "简体中文" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "繁体中文" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "克罗的亚语" #: src/Preferences.cpp:642 msgid "Czech" msgstr "捷克语" #: src/Preferences.cpp:643 msgid "Danish" msgstr "丹麦语" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "荷兰语" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "英语(英国)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "爱斯托尼亚语" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "芬兰语" #: src/Preferences.cpp:648 msgid "French" msgstr "法语" #: src/Preferences.cpp:649 msgid "Galician" msgstr "加利西亚语" #: src/Preferences.cpp:650 msgid "German" msgstr "德语" #: src/Preferences.cpp:651 msgid "Greek" msgstr "希腊语" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "希伯来语" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "匈牙利语" #: src/Preferences.cpp:654 msgid "Italian" msgstr "意大利语" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "意大利语(瑞士)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "日语" #: src/Preferences.cpp:657 msgid "Korean" msgstr "韩语" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "立陶宛语" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "新挪威语" #: src/Preferences.cpp:660 msgid "Polish" msgstr "芬兰语" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "葡萄牙语" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "葡萄牙语(巴西)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "罗马尼亚语" #: src/Preferences.cpp:664 msgid "Russian" msgstr "俄语" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "斯洛文尼亚语" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "西班牙语" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "瑞典语" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "土耳其语" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "乌克兰" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "更改语言" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "" #: src/Preferences.cpp:775 #, fuzzy msgid "No languages available" msgstr "不可用" #: src/Preferences.cpp:906 msgid "no options available" msgstr "无选项可用" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "发现无效的分类,跳过" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "TCP端口不可高于65532,因为服务器UDP端口值为TCP端口值+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "缺省端口将被使用(%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "丢弃不存在共享目录:%s" #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "连接" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "目录" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "服务器" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "文件" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "安全" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "界面" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "代理" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "过滤" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "远程控制" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "在线统计" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "高级" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "事件" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "调试" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "以下变量将被被替换: %PARTFILE - 文件的完整路径\n" " %PARTNAME - 只有文件名" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" "如果您不清楚以下设置的\n" "含义,请不要随意更改,\n" "否则您可能弄巧成拙。\n" "\n" "即使不改动这些设置,aMule\n" "也完全可以正常运行。" #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "使用ID %d和密匙%s连接Cfg到小插件失败" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "通过ID %d和密匙%s把数据从Cfg转移到小插件失败" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "正在连接的代理服务器类型" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "通过ID %d和密匙%s把数据从小插件转移到Cfg失败" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "重启aMule后设置才能生效:\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP端口已更改。\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP端口已更改。\n" #: src/PrefsUnifiedDlg.cpp:607 #, fuzzy msgid "- External connect port changed.\n" msgstr "已关闭远程连接。" #: src/PrefsUnifiedDlg.cpp:611 #, fuzzy msgid "- External connect acceptance changed.\n" msgstr "新的远程连接已被接受" #: src/PrefsUnifiedDlg.cpp:615 #, fuzzy msgid "- External connect interface changed.\n" msgstr "已关闭远程连接。" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "迷惑协议" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "您的自动更新服务器列表是可空的,\n" "启动时自动更新服务器列表功能将被禁用。" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "您已经启用了远程连接但还没有设置密码。\n" "远程连接在没有有效密码的情况下不能使用。" #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- 语言已更改。\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- 临时文件目录已更改。\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "-ED2K网络已启用。\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "eD2k和Kad网络都已被禁用,\n" "你至少要启用其中的一项才能连接。" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "如果你的 UDP 端口被禁用,Kad 将不能启动。\n" "启动 UDP 端口或禁用 Kad。" #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "你必须现在重启aMule,\n" "如果现在不重启的话,出现任何问题可别怪别人。\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "您的自动更新服务器列表是的空的,\n" "请输入至少一个指向有效 server.met 的网址,\n" "点击这个勾选框旁边的\"列表\"按钮然后输入网址。" #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "临时文件" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "传入文件" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "在线统计" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "为%s选择文件夹" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "浏览寻找视频播放器" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "选择浏览器" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "可执行%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "编辑服务器列表" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "加入下载 server.met 文件的网址,每行只限一个网址。\n" " " #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "刷新时间:%d秒" msgstr[1] "刷新时间:%d秒" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "平均值图表显示时间:%d分钟" msgstr[1] "平均值图表显示时间:%d分钟" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "网络连接图表缩放:%d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "文件缓冲区大小:%d字节" msgstr[1] "文件缓冲区大小:%d字节" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "上传队列长度:%d个用户" msgstr[1] "上传队列长度:%d个用户" #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "服务器连接刷新周期:%d分钟" msgstr[1] "服务器连接刷新周期:%d分钟" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "服务器连接刷新周期:已禁用" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "禁用" #: src/PrefsUnifiedDlg.cpp:1227 #, fuzzy, c-format msgid "Execute command on '%s' event" msgstr "发生 '%s' 事件时执行命令" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "在核心启用执行命令" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "核心命令:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "在图形界面端启用执行命令" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "图形界面命令:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "以下变量将被替换:" #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "最小值必须小于最大值,最大值已被忽略。" #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "搜索警告" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "主要" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Kad搜索不能使用,因为Kad没有连接" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "eD2k未连接时eD2k搜索无法进行" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "尝试Kad搜索时出现不可预料的错误:" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "文件编号" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "文件" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "下载分类" #: src/SearchListCtrl.cpp:639 #, fuzzy, c-format msgid "Get %s for this file" msgstr "添加附加链接到该文件" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "搜索相关文件(eD2k,本地服务器)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "标记为已知文件" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "复制eD2k链接至剪贴板" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "已取消" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "新建" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "无法连接至列出的全部迷惑协议服务器,尝试不使用迷惑协议。" #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "无法连接列表中的所有服务器. 开始新的一轮尝试." #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "设置中已禁用eD2k网络,将不会连接。" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "服务器列表中没有可以连接的服务器" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "已连接至 %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "已成功连接到:%s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "尝试连接时出现严重错误,网络可能没有连接" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "连接已断开 %s(%s:%i)" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s(%s:%i)可能已当机" #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s(%s:%i)可能已没有空位" #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "服务器自动连接会在 %d 秒后重新尝试" msgstr[1] "服务器自动连接会在 %d 秒后重新尝试" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "连接已断" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "连接失败 %s(%s:%i)" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "错误:连接超时,端口无效" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "连接超时 %s(%s:%i)" #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "获取更新的DNS查询结果,丢弃。" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "正在载入 server.met 文件:%s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "找不到server.met 文件" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "载入 server.met 文件 '%s' 失败,遇到未知格式。" #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "无法打开 server.met 文件" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "Server.met 文件损坏,发现错误的版本标记:0x%x,大小 %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "server.met 中找到%i个服务器" msgstr[1] "server.met 中找到%i个服务器" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "新增%d个服务器" msgstr[1] "新增%d个服务器" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "错误: 文件 'server.met' 已经损坏: " #: src/ServerList.cpp:183 #, fuzzy msgid "IO error while reading 'server.met': " msgstr "读取 %s 文件时发生 IO 错误:%s" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "没有添加服务器:[%s:%d] 端口无效" #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "没有添加服务器:[%s:%d] IP 地址无效" #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "没有添加服务器: 服务器列表中已有[%s:%d]" #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "成功添加服务器:[%s:%d] 服务器名为 '%s'" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "您在连接您已决定删除的服务器,请断开连接。" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "无法读取 '%s'" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "无法 server.met 保存" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "无效 URL" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "从%s下载服务器列表完成" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "addresses.dat文件内没有服务器列表地址,请粘贴一个有效服务器列表地址到该文件以" "自动更新服务器列表." #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "正在开始从 %s 下载服务器列表" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "警告:自动下载服务器列表的地址错误:%s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "addresses.dat 文件中没有有效的自动更新服务器列表URL" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "无法从 %s 下载服务器列表" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "本地服务器被IP过滤器过滤掉了,正在重新连接至其他服务器!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "服务器名称" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "地址" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "端口" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "描述" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "响应时间" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "用户数" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "静态" # #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "版本" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "现在正连接在要删除的服务器。该服务器暂时无法删除。请先断开连接。" #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(未知名称)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "您确定要删除静态服务器 %s ?" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "服务器(%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "服务器" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "连接到服务器" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "标记服务器为静态" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "标记服务器为非静态" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "标记服务器为静态" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "标记服务器为非静态" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "删除服务器" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "删除服务器" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "删除所有服务器" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "复制eD2k链接至剪贴板" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "重新连接到服务器" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "您确定要删除所有服务器吗?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "您确定要删除已选的服务器吗?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "您确定要删除已选的服务器吗?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "错误: %s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "警告: %s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "新的用户编号是 %u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "警告:你收到了低ID!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\t大概这是因为您处在防火墙或路由器后面。" #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\t如需了解更多相关信息,请访问 http://wiki.amule.org" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "收到未知服务器信息 ! - 长度过短" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "收到 %d 个新服务器" msgstr[1] "收到 %d 个新服务器" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "服务器列表保存完毕。" #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "服务器拒绝了上一个明令" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "服务器数据包无效:%s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "在处理从服务器接收的数据有无法处理的错误 : %s " #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "无法建立DNS线程以连接 %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "服务器 IP %s (%s) 已被过滤,不在连接。" #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr "使用迷惑协议。" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "正在连接至 %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "无法查找服务器%s的DNS记录: 无法连接!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "没有添加服务器: 没有 IP 地址或主机名" #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "没有添加服务器: 服务器端口无效" #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "eD2k状态:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kad 状态:" #: src/ServerWnd.cpp:206 #, fuzzy msgid "Running in LAN mode" msgstr "运行于 %s" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "正在运行" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "状态:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "连接状态:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "被防火墙阻挡-请在你的路由器或者防火墙中打开TCP端口%d" #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "UDP连接状态:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "被防火墙阻挡-请在你的路由器或者防火墙中打开UDP端口%d" #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "防火墙状态:" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "没有请求 - TCP 端口打开" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "没有请求 - UDP 端口打开" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "没有好友" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "已连接至好友" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "连接到好友于%s" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "索引源:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "索引关键词:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "索引批注:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "索引载入:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "平均用户:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "平均文件:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "没有运行" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "将文件%s加入共享" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "发现 %i 个已知共享文件" msgstr[1] "发现 %i 个已知共享文件" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "发现 %i 个已知共享的文件, %i 个未知" msgstr[1] "发现 %i 个已知共享的文件, %i 个未知" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "错误:尝试共享%s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "找不到共享目录,跳过:%s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "在目录中没有找到可以共享的文件:%s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "用户名" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "下载速度" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "上传速度" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "可用分块" #: src/SharedFilePeersListCtrl.cpp:35 #, fuzzy msgid "Upload Status" msgstr "上传状态" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "下载状态" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "来源" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 #, fuzzy msgid "Local File Name" msgstr "文件名" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 #, fuzzy msgid "Shares File List" msgstr "共享文件" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "请求" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "接受的请求" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "已传送数据" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "共享比例" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "已获取的部分" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "完整源" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "所在目录" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "添加注释" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "编辑注释" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "更名" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "添加收藏中的文件至传输列表" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "复制magnet地址到剪贴板(&U)" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "复制eD2k链接到剪贴板(含源)(&S)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "复制eD2k链接到剪贴板(含源)(包括加密选项)(&W)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "复制eD2k链接到剪贴板(含主机名)(&H)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "复制eD2k链接到剪贴板(含主机名)(包括加密选项)(&C)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "复制eD2k链接到剪贴板(包含&AICH信息)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "复制eD2k链接到剪贴板(包含&AICH信息)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "你需要高ID来产生源链接" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "共享文件 (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[part 文件]" #: src/SourceListCtrl.cpp:37 #, fuzzy msgid "Remote File Name" msgstr "文件名" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "本次上传(全部): %s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "总开销 (数据包): %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr "文件请求开销(数据包): %s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr "源交换开销(数据包): %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr "服务器开销(数据包): %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr "Kad 开销(数据包):%s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr "加密开销(UDP):%s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "活动上传:%s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "等待上传:%s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "成功上传会话总数:%s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "失败上传会话总数:%s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "平均上传时间:%s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "本次下载(总共): %s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "发现的源:%s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "活动下载(块数):%s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "本次上传下载比率:%s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "平均下载速度(本次运行):%s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "平均上传速度(本次运行):%s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "最大下载速度(本次运行):%s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "最大上传速度(本次运行):%s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "重新连接:%i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "首次传输到现在时间:%s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "与服务器连接时间:%s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "活跃连接(估计值):%i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "达到最大连接数:%s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "平均连接数(估计):%g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "最高连接(估计值): %i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "用户" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "未知大小: %s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "过滤: %s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "封杀: %s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "总数:%i 已知:%i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "有效服务器:%i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "无效服务器:%i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "总共:%s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "已删除服务器:%s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "被过滤的服务器:%s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "有效服务器中的用户数: %llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "有效服务器中的文件数: %llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "用户总数:%llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "文件总数:%llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "服务器开销:%.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "共享文件数:%s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "共享文件大小总和:%s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "平均文件大小:%s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "操作系统" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "没有收到" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "活跃连接 (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "不可用" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "从来没有" #: src/TerminationProcess.cpp:47 #, fuzzy, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "命令 '%s' 已启动进程 %d,返回值为 %d。" #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "执行 然后退出。" #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "无效 IP 地址格式,请使用 xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "此命令需要一个参数,合法参数为 'all'、文件名或一个数字。\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "正在用此校验码处理:" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "正在用此文件名处理:" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "此命令需要一个参数,合法参数为文件校验码。\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "非有效数字\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "无效的校验值(长度必须为32个字符)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "输入 '%s' 显示更多帮助信息。\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "下载大小:%i" #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "请求失败,错误未知。" #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "操作成功。" #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "请求失败,错误为:%s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "用户的IP过滤器是:%s。\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "关" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "开" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "服务器的IP过滤器是%s。\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "当前IP过滤级别时 %d.\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "带宽限制:上传:%u kB/s,下载:%u kB/s。\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "已连接到 %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "正在连接" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "被防火墙阻挡" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "确定" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "下载:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "上传:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "队列长度:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "源总数:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "搜索结果数量:%i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "搜索进度: %u %% \n" #: src/TextClient.cpp:834 #, fuzzy msgid "Search progress not available" msgstr "显示进度百分比" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "从服务器收到未知的回复,操作码是 %#x." #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "显示简短的状态信息。" #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "显示连接状态,当前上传下载速度等等。\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "显示全部统计树。" #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "可选,一个0-255之间的数字可作为此命令的参数, \n" "用于设置用户版本树显示的节点数量。 n参数设为0表示无限制。\n" "\n" "示例: 'statistics 5' 将显示每个用户软件的5个版本。\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "关闭aMule。" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "关闭远程运行的服务程序(amule/amuled),\n" "当远程服务程序不可用时,文本客户端也将关闭。\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "重新载入所给的对象。" #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "重新载入共享文件列表。" #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "重新载入IP过滤表。" #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "重新载入当前IP过滤表。" #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "从URL更新IP过滤表。" #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "如果URL省略了则将使用设置的URL。" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "连接至网络。" #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "这将连接至全部在设置中启用的网络。\n" "您也可以使用此格式(IP:端口)定义一个服务器地址,并只连接至此服务器。\n" "此IP必须是用点分隔的十进制IPv4地址,\n" "或者是可以解析的DNS名称。" #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "只连接eD2k。" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "只连接Kad。" #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "断开网络。" #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "这将断开当前已连接的全部网络。\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "只断开eD2k。" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "只断开 Kad 连接。" #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "添加一个eD2k或magnet链接到核心。" #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "允许添加的eD2k链接:\n" "*) 文件链接(ed2k://|file|..),将添加至下载队列,\n" "*) 服务器链接(ed2k://|server|...),将添加至服务器列表,\n" "*) 或服务器列表链接,这种情况将添加此列表中的所有服务器至服务器列表。\n" "\n" "magnet链接必须包含eD2k校验码和文件大小。\n" "\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "设置一个参数值。" #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "设置IP过滤参数。" #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "开启用户和服务器的 IP 过滤。" #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "关闭用户和服务器的 IP 过滤。" #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "启动/禁用用户 IP 过滤。" #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "开启用户 IP 过滤。" #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "关闭用户 IP 过滤。" #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "启用/禁用服务器 IP 过滤。" #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "开启服务器 IP 过滤。" #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "关闭服务器 IP 过滤。" #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "选择 IP 过滤级别。" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "正确的 IP 过滤级别是在0-255之间,\n" "默认(初始)值是127。\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "设置带宽限制。" #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "给此命令的值必须使用kB/s。\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "设置上传带宽限制。" #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "给此命令的值必须使用kB/s。\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "设置下载带宽限制。" #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "获取并显示设置值。" #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "获取 IP 过滤器设置。" #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "获取用户和服务器的 IP 过滤器状态。" #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "只获取用户的 IP 过滤器状态。" #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "只获取服务器的 IP 过滤器状态。" #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "获取 IP 过滤级别。" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "获取带宽限制。" #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "执行搜索" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "搜索类型必须使用设定的类型:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "示例: 'search kad 文件' 将对 \"文件\"执行 Kad 搜索。\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "执行全面搜索。" #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "执行本地搜索" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "执行 Kad 搜索" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "显示上次搜索的结果。" #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "返回以前搜索的结果。\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "显示搜索进度。" #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "显示搜索进度。\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "开始下载文件" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "必须指定上次搜索的文件数量。\n" "示例:'download 12' 将开始下载上次搜索结果中的12个文件。\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "停止下载。" #: src/TextClient.cpp:938 msgid "Resume download." msgstr "继续下载。" #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "取消下载。" #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "设置下载优先级。" #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "设置下载的优先级为低、正常、高或自动。\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "设为低优先级。" #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "设为正常优先级。" #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "设为高优先级。" #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "设为自动优先级。" #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "显示队列/列表。" #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "显示上传/下载队列,服务器列表或共享文件列表。\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "显示上传队列。" #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "显示下载队列。" #: src/TextClient.cpp:955 msgid "Show log." msgstr "显示日志。" #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "显示服务器列表。" #: src/TextClient.cpp:959 msgid "Reset log." msgstr "重设日志。" #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "废弃的命令,请使用%s代替。" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "这是一个已废弃的命令,将来可能被删除,请使用 '%s' 替代。\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMule 文本客户端" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "正在转换在 '%s'在 '%s' 中旧的 AICH 校验集至64b" #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "警告:文件名 '%s' 非法,已经重命名为 '%s'。" #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "警告:文件 '%s' 已经存在,新文件重命名为 '%s'。" #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "您确定要删除分类中的所有下载文件吗?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "需要确认" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "只支持99个连接数" #: src/TransferWnd.cpp:238 #, fuzzy msgid "Too many categories!" msgstr "连接过多" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "所有其它" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "选择显示过滤" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "新建分类" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "编辑分类" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "删除分类" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "打开文件(%s)失败,从共享文件列表删除。" #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "请求未知文件校检码:%s" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "继续上传此文件:%s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "暂停上传此文件:%s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "执行`%s' 事件中的命令`%s' 失败。" #: src/UserEvents.h:60 msgid "Download completed" msgstr "下载已完成" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "文件的完整路径。" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "不包含路径部分的文件名。" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "文件的eD2k校验码。" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "文件大小(字节)。" #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "累计下载活动时间。" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "新的聊天对话已启动" #: src/UserEvents.h:85 msgid "Message sender." msgstr "消息发送者。" #: src/UserEvents.h:88 msgid "Out of space" msgstr "磁盘空间不足" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "磁盘分区。" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "最后阶段出错" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "正在处理文件号 %u: %s" #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "您要求了文件块校检码(只用于大于 9.5 MB 的文件)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> 文件不存在!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator,aMule eD2k链接的创建程序" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "欢迎!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "输入参数" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "需计算校检码的文件" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "添加附加链接到该文件" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "在此处输入需要生成eD2k链接的文件名" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "在这里输入要添加的eD2k链接,在结尾加 '/' 以附加此文件名" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "删除" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "创建有文件块校检码的链接" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "该选项可以帮助新文件和稀有文件更快散播,只是链接长度会增加" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4 文件校检码" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k文件校验码" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k链接" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "保存" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "复制到剪贴板" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "打开" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "打开文件并生成eD2k链接" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "复制已生成的eD2k链接至剪贴板" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "另存为" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "保存已生成的eD2k链接至文件" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "关于 aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "选择要生成eD2k链接的文件" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "不能打开剪贴簿" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "当前无内容需要复制!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "选择已生成eD2k链接的文件" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "无法读取 " #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "请输入一个非空的文件名" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "暂时没有东西可保存!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator, 用于生成eD2k链接的程序\n" "\n" "(c) 2004 ThePolish \n" "\n" "图片来自 http://www.everaldo.com 和 http://www.icomania.com\n" "以及 http://jimmac.musichall.cz/ikony.php3\n" "\n" "基于GPL协议发布" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "正在生成校检码" #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator正在工作" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "计算MD4编码..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "计算eD2K编码..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "已取消!" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "在 %.2f 秒内完成" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "您已添加了该链接!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "请输入一个非空的链接" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "无法打开 %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i 天 %i 小时 %i 分钟 %i 秒" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02u天 %02u小时 %02u分钟 %02u秒" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02u小时 %02u分钟 %02u秒" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02u分钟 %02u秒" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02u秒" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas,aMule在线统计" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "本次运行最高下载速度" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "历史最高下载速度" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "系统" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "停止自动刷新" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "保存在线统计图" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "打印在线统计图" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "设置" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "关于 wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "开始自动刷新" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "自动刷新已停止" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "自动刷新已开始" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "保存统计图" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMule 在线统计" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "打印时出现问题。\n" "可能当前打印机没有设置正确?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "打印中" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule在线统计\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "基于 GPL 协议分发" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "aMule没有运行" #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule 正在运行" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule 正在运行,但是已断开连接" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule 正在连接..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "aMule状态不明..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " 已经运行 " #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr "已停止!" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr "未连接!" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " 正在连接..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " 状态不正常,请检查!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr "已连接至" #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr "Kad:" #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "关闭" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " 是在 " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " 和 " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "总下载:" #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ",上传:" #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "本次运行下载:" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "下载:" #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " kB/s,上传:" #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " kB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "共享:" #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " 文件,队列长度:" #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "时间:" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " 在 " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "系统平均负载(1-5-15 分钟):" #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "系统运行时间:" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "amulesig.dat 文件所在的目录" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "请输入 amulesig.dat 文件所在的目录" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "刷新周期(秒)" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "每次刷新都生成统计图" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "输入存放所产生的统计图的目录" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "周期性上传统计图到 FTP 服务器" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP 地址" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP 路径" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "输入 FTP 服务器的地址" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "输入 FTP 服务器上存放统计图的目录" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "用户名" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "输入登录 FTP 服务器的用户名" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "输入登录FTP服务器的密码" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "FTP上传周期(分钟)" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "检测" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "统计文件所在文件夹" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "统计图存放文件夹" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "载入模板 " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "Web服务器的HTTP端口" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "为Web服务器端口启用uPnP" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP端口" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "使用gzip压缩" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "Web服务器的完整权限密码" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "Web服务器的访客密码" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "允许访客访问" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "拒绝访客访问" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "载入/保存Web服务器设置从/至远程aMule" #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMule设置文件路径,不要直接使用!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "禁用PHP解释器(已废弃)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "为每个请求重编译PHP页面" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule Web服务器" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "网页客户端连接已被接受\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "错误:无法接受网页客户端连接\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "请求失败,错误为:%s" #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "索引文件未找到:" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "会话过期 - 正在请求登录\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "会话正常,已登录\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "会话正常,未登录\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "没有会话已打开 - 将请求登录\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "会话已创建 - 正在请求登录\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "正在处理请求 [原始]:" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "没有指定密码,不允许登录。" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "检查密码\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "密码校验值错误\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "密码正确\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "密码错误\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "您没有输入密码,不允许空密码。\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "已请求注销\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "正在处理请求 [已重定向]:" #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "Part 文件 %s(%s)没有种子文件" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "Part 文件 %s(%s)的种子文件为空" #, fuzzy #~ msgid "Download status" #~ msgstr "下载状态" #~ msgid "( %s / %s )" #~ msgstr "(%s / %s)" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "刷新时间:%d秒" #~ msgstr[1] "刷新时间:%d秒" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "远程 GUI 目前不支持评论和打分" #~ msgid "Transferring" #~ msgstr "正在传送" #~ msgid "QR: ???" #~ msgstr "队列级别: ???" #~ msgid "QR: %u" #~ msgstr "队列级别: %u" #~ msgid "Only files currently uploading" #~ msgstr "只有当前上传中的文件" #~ msgid "Queue Rank" #~ msgstr "队列级别" #~ msgid "TODO - show progress of a search" #~ msgstr "待办事项 - 显示搜索进度" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "开始为文件 %s 创建 MD4 和 AICH 校验码" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "开始为文件 %s 创建 MD4 校验码" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "开始为文件 %s 创建 AICH 校验码" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "警告:为 '%s' 建立备份后无法删除原文件" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "警告:无法删除 %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u(QR:%u)" #~ msgid "" #~ "You cannot connect to a release version from an arbitrary SVN version! " #~ "*sigh* possible crash prevented" #~ msgstr "为了尽可能避免程序崩溃,您不能从任意的SVN版本连接到发行版本!" #~ msgid "Rating (total):" #~ msgstr "评级 (总和):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "尝试传送完整数据段给所有用户" #~ msgid "Networks window" #~ msgstr "网络窗口" #~ msgid "Searches window" #~ msgstr "查找窗口" #, fuzzy #~ msgid "Downloads window" #~ msgstr "正在下载" #~ msgid "Shared files window" #~ msgstr "共享文件窗口" #~ msgid "Messages window" #~ msgstr "消息窗口" #~ msgid "Statistics graph window" #~ msgstr "统计图表窗口" #~ msgid "Preferences settings window" #~ msgstr "设置窗口" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "任务栏图标丢失,尝试重新创建..." #~ msgid "Transfers" #~ msgstr "传输文件" #~ msgid "Files transfers window" #~ msgstr "文件传输窗口" #~ msgid "Unban" #~ msgstr "取消封杀" #~ msgid "Show Uploads" #~ msgstr "显示上传" #~ msgid "Show Queue" #~ msgstr "显示队列" #~ msgid "Select View" #~ msgstr "选择视角" #~ msgid "Client Software" #~ msgstr "客户端软件" #~ msgid "Waited" #~ msgstr "已等待" #~ msgid "Upload Time" #~ msgstr "上传时间" #~ msgid "Upload/Download" #~ msgstr "上传/下载" #~ msgid "Remote Status" #~ msgstr "远程状态" #~ msgid "File Priority" #~ msgstr "文件优先级" #~ msgid "Score" #~ msgstr "分数" #~ msgid "Asked" #~ msgstr "已请求" #~ msgid "Last Seen" #~ msgstr "最后连接" #~ msgid "Entered Queue" #~ msgstr "进入队列" #~ msgid "Transferred Up" #~ msgstr "已传输" #~ msgid "Transferred Down" #~ msgstr "已传输" #~ msgid "Userhash" #~ msgstr "用户编码" #~ msgid "Encrypted" #~ msgstr "已加密" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "读取 %d 国旗位图。" #~ msgid "Shows Upload / Up-queue" #~ msgstr "显示上传/上传队列" #~ msgid "Clients on queue :" #~ msgstr "队列长度:" #~ msgid "Current Session" #~ msgstr "本次运行" #~ msgid "Total" #~ msgstr "总和" #~ msgid "Requested :" #~ msgstr "已请求:" #~ msgid "Create backup for preview" #~ msgstr "为预览创建备份" #~ msgid "Files Transfers Window" #~ msgstr "文件传送窗口" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "用户总数:%s | 文件总数:%s" #~ msgid "Download size not received, downloading until connection is closed" #~ msgstr "没有获得下载大小,持续下载直到连接关闭" #~ msgid "HTTP download thread ended" #~ msgstr "HTTP 下载进程结束" #~ msgid "Host: %s:%i\n" #~ msgstr "主机: %s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "回应: %i (错误:%i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "警告:创建流时收到空回应" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "错误:跳转代码没有获取到 URL" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country():载入国家数据失败" #~ msgid "Get IPFilter level." #~ msgstr "获取 IP 过滤级别。" #~ msgid "Makes a search." #~ msgstr "进行搜索。" #~ msgid "Killed!" #~ msgstr "杀死!" #~ msgid "Using amuleweb in '%s'." #~ msgstr "使用 amuleweb 在 '%s'。" #~ msgid "Shutting down aMule..." #~ msgstr "正在关闭 aMule..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "此版本中,以下选项因为安全问题已经被更改:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* 为进站和出站连接启用迷惑协议支持。\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* 禁用从其他服务器和用户更新服务器列表。\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "想更多地了解更改的原因, 请访问\n" #~ "aMule Wiki ,http://wiki.amule.org,中关于“虚假服务器”的信息。\n" #~ "这一点很重要,为了让您的 aMule 正常工作,请从服务器列表中清除假冒服务器。" #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "此外,浏览器设定已经被重设为系统默认值。如有必要,请重新配置浏览器选项。\n" #~ msgid "Fetching status..." #~ msgstr "正在获取状态..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "用户:E:%s K:%s | 文件 E:%s K:%s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "用户 %s 位于 %s:%d,使用 %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() 返回了 NULL" #~ msgid "Firewalled" #~ msgstr "有防火墙" #~ msgid "Loaded %d flag bitmap." #~ msgid_plural "Loaded %d flag bitmaps." #~ msgstr[0] "%d个国旗标志已载入。" #~ msgstr[1] "%d个国旗标志已载入。" #~ msgid "The file %s is to big for the Donkey: maximum allowed is 4 GB." #~ msgstr "文件 %s 过大:上限为4GB。" #~ msgid "User:" #~ msgstr "用户:" #~ msgid "System:" #~ msgstr "系统:" #~ msgid "No handler for this file type." #~ msgstr "无法处理该文件类型" #~ msgid "File was not saved" #~ msgstr "文件未被保存" #~ msgid "Connection Failed. Unable to connect to the specified host\n" #~ msgstr "连接失败,无法连接到指定的计算机\n" #~ msgid " Copyright (C) 2002 Petar Maymounkov \n" #~ msgstr "版权所有 (C) 2002 Petar Maymounkov\n" #~ msgid "Message Filter" #~ msgstr "消息过滤" #~ msgid "Gui Tweaks" #~ msgstr "界面设置" #~ msgid "Core Tweaks" #~ msgstr "核心设置" #~ msgid "Tooltip Delay Time in secs" #~ msgstr "提示延迟时间(秒)" #~ msgid "Show part file number before file name" #~ msgstr "在文件名前显示 part 文件编号" #~ msgid "Skin Support" #~ msgstr "皮肤支持" #~ msgid "- no skins available -" #~ msgstr "- 没有皮肤可用 -" #~ msgid "Online Signature Directory:" #~ msgstr "在线统计目录:" #~ msgid "Filtering Options:" #~ msgstr "过滤选项:" #~ msgid "Line Capacities" #~ msgstr "连接带宽" #~ msgid "" #~ "Note: These values are\n" #~ " only used for statistics." #~ msgstr "" #~ "注意:这些数值只作为统计用途。\n" #~ " " #~ msgid "Standard client TCP Port:" #~ msgstr "标准用户 TCP 端口:" #~ msgid "Extended client UDP Port:" #~ msgstr "扩展用户 UDP 端口:" #~ msgid "Bind Address" #~ msgstr "绑定地址" #~ msgid "UDP port for extended server requests (TCP+3): 4665" #~ msgstr "用于扩展的服务器请求的 UDP 端口 (TCP+3):4665" #~ msgid "Max Sources per File" #~ msgstr "单个文件最大源数" #~ msgid "Connection limits" #~ msgstr "连接限制" #~ msgid "Universal Plug and Play" #~ msgstr "通用即插即用(UPnP)" #~ msgid "Enable UPnP" #~ msgstr "启用UPnP" #~ msgid "UPnP TCP Port:" #~ msgstr "UPnP的TCP 端口" #~ msgid "Start next paused file when a file completed" #~ msgstr "文件下载完毕时开始下一个暂停的文件" #~ msgid "Check disk space" #~ msgstr "检查磁盘空间" #~ msgid "Min disk space:" #~ msgstr "最小磁盘空间:" #~ msgid "Incoming" #~ msgstr "传入" #~ msgid "Temporary" #~ msgstr "临时" #~ msgid "Shared" #~ msgstr "共享" #~ msgid "Select Statistics Colors" #~ msgstr "选择统计图表使用颜色" #~ msgid "Download Queue Files Progress" #~ msgstr "下载队列文件进度" #~ msgid "Show percentage" #~ msgstr "显示百分比" #~ msgid "Show progressbar " #~ msgstr "显示进度条" #~ msgid "Enable skin support " #~ msgstr "启用皮肤支持" #~ msgid "Skin:" #~ msgstr "皮肤:" #~ msgid "Auto-sort files in the download queue (high CPU)" #~ msgstr "自动排列下载队列中的文件 (大CPU用量)" #~ msgid "Show Fast eD2k Links Handler" #~ msgstr "显示快速eD2k链接处理器" #~ msgid "Web server port" #~ msgstr "Web服务器端口" #~ msgid "Enable UPnP port forwarding on the web server port" #~ msgstr "为Web服务器端口启用UPnP" #~ msgid "Web server UPnP TCP port" #~ msgstr "Web服务器UPnP使用的TCP端口" #~ msgid "" #~ "IP of the listening interface\n" #~ "(empty for any)" #~ msgstr "" #~ "监听IP\n" #~ "(留空则监听全部)" #~ msgid "TCP port" #~ msgstr "TCP端口" #~ msgid "Who can see shared files:" #~ msgstr "谁可以查看我共享的文件: " #~ msgid "Event types" #~ msgstr "事件类型" #~ msgid "ERROR: can not accept web client connection\n" #~ msgstr "错误:无法接受Web客户端连接\n" #~ msgid "" #~ "Your Auto-update server list is empty.\n" #~ "'Auto-update server list at startup will be disabled." #~ msgstr "" #~ "自动更新服务器地址列表为空,\n" #~ "启动时自动更新服务器将被禁用。" #~ msgid "ERROR: Invalid part.met fileversion: %s ==> %s" #~ msgstr "错误:无效的part.met文件版本:%s ==> %s" #~ msgid "WARNING: Knownfile list corrupted, contains invalid header." #~ msgstr "警告:已知文件列表已损坏,文件头无效。" #~ msgid "Makes aMule promt before exiting." #~ msgstr "退出前确认。" #~ msgid "Bandwith limits" #~ msgstr "带宽限制" #~ msgid "This UDP port is used for extended ed2k requests and Kad network" #~ msgstr "此UDP端口用于扩展eD2k请求和Kad网络" #~ msgid "Show overhead bandwith" #~ msgstr "显示通信开销带宽" #~ msgid "I.C.H. active" #~ msgstr "启用ICH" #~ msgid "AICH trusts every hash (not recomended)" #~ msgstr "高级智能损坏数据处理(AICH)信任所有校验码(建议不要使用)" #~ msgid "Disk space" #~ msgstr "磁盘空间" #~ msgid "Create Backup for preview" #~ msgstr "为预览创建备份" #~ msgid "Advanced Settings" #~ msgstr "高级设置" #~ msgid "Progressbar Style" #~ msgstr "进度条风格" #~ msgid "Column Sorting" #~ msgstr "列排序" #~ msgid "Misc Gui Tweaks" #~ msgstr "界面设置" #~ msgid "File Options" #~ msgstr "文件选项" #~ msgid "Status text" #~ msgstr "状态" #~ msgid "Pop-up status text" #~ msgstr "弹出状态显示" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ msgstr " 基于eMule的“全平台”P2P客户端\n" #~ msgid " Website: http://www.amule.org \n" #~ msgstr " 网站:http://www.amule.org \n" #~ msgid " Forum: http://forum.amule.org \n" #~ msgstr " 论坛:http://forum.amule.org \n" #~ msgid "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgstr "" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ msgid " Contact: admin@amule.org (administrative issues) \n" #~ msgstr " 联系邮件:admin@amule.org (管理问题) \n" #~ msgid "" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ msgstr "" #~ " 版权所有 (C) 2003-2008 aMule 团队 \n" #~ "\n" #~ msgid " Part of aMule is based on \n" #~ msgstr " aMule的一部分是基于 \n" #~ msgid " Copyright (C) 2002 Petar Maymounkov\n" #~ msgstr " 版权所有 (C) 2002 Petar Maymounkov\n" #~ msgid " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "" #~ "For a film you can say its length, its story, language ...\n" #~ "and if it's a fake, you can tell that to other users of aMule." #~ msgstr "" #~ "您可以说明电影的长度,情节和语言等等...\n" #~ "如果电影是假冒的,您可以提醒其它用户。" #~ msgid "Misc Options" #~ msgstr "其它选项" #~ msgid "Server Options" #~ msgstr "服务器选项" #~ msgid "Display server motd when connected ..." #~ msgstr "连接后显示服务器当日通告" #~ msgid "eD2k Info" #~ msgstr "eD2k信息" #~ msgid "Disable/Enable" #~ msgstr "禁用/启用" #~ msgid "Authentication" #~ msgstr "验证" #~ msgid "General Settings" #~ msgstr "综合设置" #~ msgid "Hard limit" #~ msgstr "硬限制" #~ msgid "Max Connections" #~ msgstr "最大连接数" #~ msgid "GUI Tweaks" #~ msgstr "界面设置" #~ msgid "Remote Control" #~ msgstr "远程控制" #~ msgid "Unable to determine selected browser!" #~ msgstr "未检测到所选择的浏览器" #~ msgid "User Defined" #~ msgstr "用户定义的" #~ msgid "http://www.aMule.org - the Linux Mule" #~ msgstr "http://www.aMule.org - Linux 平台的 Mule" #~ msgid "Konqueror" #~ msgstr "Konqueror" #~ msgid "Mozilla" #~ msgstr "Mozilla" #~ msgid "Firefox" #~ msgstr "Firefox" #~ msgid "Firebird" #~ msgstr "Firebird" #~ msgid "Opera" #~ msgstr "Opera" #~ msgid "Netscape" #~ msgstr "Netscape" #~ msgid "Galeon" #~ msgstr "Galeon" #~ msgid "Epiphany" #~ msgstr "Epiphany" #~ msgid "Select your browser here" #~ msgstr "请选择您的网络浏览器" #~ msgid "Custom Browser:" #~ msgstr "其它浏览器" #~ msgid "" #~ "Enter your browser name here. To use the custom browser, select the " #~ "Custom menu-item from the dropdown-menu above." #~ msgstr "" #~ "请输入网络浏览器名称。如需使用自定义浏览器,在以上弹出菜单中选择自定义。" #~ msgid "Please wait... " #~ msgstr "请等待 ..." #~ msgid "Could not determine the command for running the browser." #~ msgstr "无法确定运行浏览器的命令" #~ msgid "EC Connection Failed. Empty reply." #~ msgstr "连接外部连接失败,回复为空" #~ msgid "ExternalConn: Access denied because: " #~ msgstr "外部连接:访问被拒绝,原因:" #~ msgid "ExternalConn: Access denied" #~ msgstr "外部连接:请求被拒绝" #~ msgid "ExternalConn: Bad reply from server. Connection closed." #~ msgstr "外部连接:服务器回复错误。已断开连接。" #~ msgid "The ed2k hash of the file." #~ msgstr "文件的ed2k校验码。" #~ msgid "Copy ED2k &link to clipboard" #~ msgstr "复制 ED2k 链接到剪贴板 (&L)" #~ msgid "Copy ED2k link to clipboard (&Source)" #~ msgstr "复制 ED2K 链接到剪贴板 (源(&S))" #~ msgid "Copy ED2k link to clipboard (Source) (&With Crypt options)" #~ msgstr "复制 ED2K 链接到剪贴板(源) (使用加密选项(&W))" #~ msgid "Copy ED2k link to clipboard (&Hostname)" #~ msgstr "复制 ED2K 链接到剪贴板(主机名(&H))" #~ msgid "Copy ED2k link to clipboard (Hostname) (With &Crypt options)" #~ msgstr "复制 ED2K 链接到剪贴板(主机名) (使用加密选项(&C))" #~ msgid "Copy ED2k link to clipboard (&AICH info)" #~ msgstr "复制 ED2K 链接到剪贴板(&AICH 信息)" #~ msgid "Warning" #~ msgstr "警告" #~ msgid "Error: Could not listen to TCP port." #~ msgstr "错误:无法监听TCP端口。" #~ msgid "Error: can not accept web client connection\n" #~ msgstr "错误:无法接受网页客户端连接\n" #~ msgid "Webserver HTTP port" #~ msgstr "HTTP服务器端口" #~ msgid "Use UPnP port forwarding on webserver port" #~ msgstr "在 Web 服务器端口使用 UPnP端口转发" #~ msgid "Full access password for webserver" #~ msgstr "Web 服务器最高访问权密码" #~ msgid "Guest password for webserver" #~ msgstr "服务器访客密码" #~ msgid "Load/save webserver settings from/to remote aMule" #~ msgstr "载入/保存 Web 服务器设置 自/至 远程 aMule" #~ msgid "Enter here the file you want to compute the Ed2k link" #~ msgstr "输入需要创建 ED2K 链接的文件" #~ msgid "" #~ "Enter here the URL you want to add to the Ed2k link: Add / at the end to " #~ "let aLinkCreator append the current file name" #~ msgstr "在这里输入要添加的 ED2K 链接,在结尾加 '/' 以附加此文件名" #~ msgid "Ed2k File Hash" #~ msgstr "ED2K 文件校检码" #~ msgid "Ed2k link" #~ msgstr "ED2k 链接" #~ msgid "Open a file to compute its ed2k link" #~ msgstr "打开要创建 ED2K 链接的文件" #~ msgid "Copy computed ed2k link to clipboard" #~ msgstr "复制 ED2K 链接到剪贴板" #~ msgid "Save computed ed2k link to file" #~ msgstr "保存 ED2K 链接到文件" #~ msgid "Select the file you want to compute the ed2k link" #~ msgstr "选择要创建 ED2K 链接的文件" #~ msgid "Select the file to your computed ed2k link" #~ msgstr "请选择要创建 ED2K 链接的文件" #~ msgid "" #~ "aLinkCreator, the aMule ed2k link creator\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" #~ "and http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "Distributed under GPL" #~ msgstr "" #~ "aLinkCreator, 用于创建 ed2k 链接\n" #~ "\n" #~ "(c) 2004 ThePolish \n" #~ "\n" #~ "图片来自 http://www.everaldo.com 和 http://www.icomania.com\n" #~ "以及 http://jimmac.musichall.cz/ikony.php3\n" #~ "\n" #~ "基于 GPL 协议发布" #~ msgid "aLinkCreator, the aMule ed2k link creator" #~ msgstr "aLinkCreator, aMule ED2K 链接生成器" #~ msgid "Copy ED2k link to clipboard" #~ msgstr "复制 ED2K 链接到剪贴板" #~ msgid "Copy ED2k links to clipboard" #~ msgstr "复制 ED2K 链接到剪贴板" #~ msgid "ED2K: Connecting" #~ msgstr "ED2K:正在连接" #~ msgid "ED2K: Disconnected" #~ msgstr "ED2K:连接已断" #~ msgid "Warning: Unable to open skin file '%s' for read" #~ msgstr "警告:无法打开皮肤文件 %s" #~ msgid "ed2k network" #~ msgstr "ed2k 网络" #~ msgid "" #~ "Your Auto-update servers list is in blank.\n" #~ "'Auto-update serverlist at startup' will be disabled." #~ msgstr "" #~ "自动更新服务器列表空白。\n" #~ "自动更新服务器已被禁用。" #~ msgid "" #~ "Both ED2K and Kad network are disabled.\n" #~ "You won't be able to connect until you enable at least one of them." #~ msgstr "" #~ "ED2K 和 Kad 网络都已被禁用,\n" #~ "你至少必须启用其中的一项才能连接。" #~ msgid "Edit Serverlist" #~ msgstr "编辑服务器列表" #~ msgid "Error: couldn't accept a new external connection" #~ msgstr "错误:无法接受外来连接" #~ msgid "ED2K is disabled in preferences." #~ msgstr "ED2K 在设置中被禁用了。" #~ msgid "ExternalConn: shutdown requested" #~ msgstr "外部连接:收到关机请求" #~ msgid "Already connected to ED2K." #~ msgstr "已连接至 ED2K。" #~ msgid "Connecting to ED2K..." #~ msgstr "正在连接至 ED2K..." #~ msgid "Disconnected from ED2K." #~ msgstr "断开 ED2K。" #~ msgid "ExternalConn: invalid opcode received: %#x" #~ msgstr "外部连接:收到错误的操作码:%#x" #~ msgid "ED2K Status:" #~ msgstr "ED2K 状态:" #~ msgid "Average Downloadrate (Session): %s" #~ msgstr "平均下载速度(本次运行):%s" #~ msgid "Average Uploadrate (Session): %s" #~ msgstr "平均上传速度(本次运行):%s" #~ msgid "Max Downloadrate (Session): %s" #~ msgstr "最大下载速度(本次运行):%s" #~ msgid "Max Uploadrate (Session): %s" #~ msgstr "最大上传速度(本次运行):%s" #~ msgid "Average filesize: %s" #~ msgstr "平均文件大小:%s" #~ msgid "ED2K search can't be done if ED2K is not connected" #~ msgstr "ED2K 搜索不能使用,因为 ED2K 没有连接" #~ msgid "Error: " #~ msgstr "错误:" #~ msgid "Warning: " #~ msgstr "警告:" #~ msgid "Search related files (ED2k, local server)" #~ msgstr "搜索相关文件(ED2K,本地服务器)" #~ msgid "Error" #~ msgstr "错误" #~ msgid "" #~ "WARNING: You can't add yourself as a source for a ed2k link while being " #~ "lowid." #~ msgstr "警告:在低 ID 的情况下,你不能添加你自己作为 ed2k 链接的源" #~ msgid "" #~ "Please set your preferred video player on preferences.\n" #~ "Meanwhile, aMule will attempt to use mplayer and you will get this " #~ "warning on every preview" #~ msgstr "" #~ "请在设置中设置您喜欢用的视频播放器,\n" #~ "同时,aMule 会尝试使用 mplayer,并在每次预览时你都会看到这个提示" #~ msgid "Error: Failed to open part.met file: %s ==> %s" #~ msgstr "错误:无法打开 part.met 文件:%s ==> %s" #~ msgid "Error: part.met file is 0 size: %s ==> %s" #~ msgstr "错误:part.met 文件长度为 0: %s ==> %s" #~ msgid "Error: Invalid part.met fileversion: %s ==> %s" #~ msgstr "错误:无效的 part.met 文件版本:%s ==> %s" #~ msgid "Warning: %s might be corrupted (%i)" #~ msgstr "警告:%s 可能已损坏(%i)" #~ msgid "Unexpected file error while completing %s. File paused" #~ msgstr "在完成文件 %s 时遇到意外文件错误,文件已暂停" #~ msgid "" #~ "Warning: Unable to hash downloaded part - hashset incomplete for '%s'" #~ msgstr "警告:无法为已下载的数据段计算校检码 - 校检码集残缺 '%s'" #~ msgid "" #~ "Error: Unable to hash downloaded part - hashset incomplete (%s). This " #~ "should never happen" #~ msgstr "" #~ "警告:无法生成校检码 - 校检码残缺(%s), 正常情况下这是不应该发生的" #~ msgid "Insufficient Diskspace" #~ msgstr "硬盘空间不足" #~ msgid "Warning: known.met cannot be opened." #~ msgstr "警告:know.net文件无法打开。" #~ msgid "Warning: Knownfile list corrupted, contains invalid header." #~ msgstr "警告:已知文件列表已损坏,文件头无效" #~ msgid "ERROR! Attempted to share %s" #~ msgstr "错误!试图共享 %s" #~ msgid "ED2K network disabled on preferences, not connecting." #~ msgstr "ED2K网络在设置被禁用,没有连接。" #~ msgid "No valid servers to connect in serverlist found" #~ msgstr "服务器列表中没有有效服务器可供连接" #~ msgid "Error: Socket invalid at timeoutcheck" #~ msgstr "错误:接口无效" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions." #~ msgstr "" #~ "错误:载入备份文件失败!请到http://forum.amule.org搜索.part和.met文件的恢" #~ "复方法。" #~ msgid "Cannot convert magnet link to ed2k: %s" #~ msgstr "无法转换 magnet 链接至 ed2k:%s" #~ msgid "Invalid ed2k link! Error: %s" #~ msgstr "无效 ed2k 链接!错误:%s" #~ msgid "Bandwidth Limits: Up: %u kB/s, Down: %u kB/s.\n" #~ msgstr "带宽限制:上传: %u kB/s, 下载: %u kB/s.\n" #~ msgid "Shutdown aMule." #~ msgstr "关闭aMule。" #~ msgid "" #~ "Shutdown the remote running core (amule/amuled).\n" #~ "This will also shut down the text client, since it is unusable without a\n" #~ "running core.\n" #~ msgstr "" #~ "关闭远程运行核心程序(amule/amuled)。\n" #~ "这也将关闭文本客户端,直至没有一个在运行的核心可用。\n" #~ msgid "Connect to ED2K only." #~ msgstr "只连接 ED2K。" #~ msgid "Disconnect from ED2K only." #~ msgstr "只断开 ED2K 连接。" #~ msgid "Adds an ed2k or magnet link to core." #~ msgstr "添加一个 ed2k 或 magnet 链接至核心。" #~ msgid "" #~ "The ed2k link to be added can be:\n" #~ "*) a file link (ed2k://|file|...), it will be added to the download " #~ "queue,\n" #~ "*) a server link (ed2k://|server|...), it will be added to the server " #~ "list,\n" #~ "*) or a serverlist link, in which case all servers in the list will be " #~ "added to the\n" #~ " server list.\n" #~ "\n" #~ "The magnet link must contain the ed2k hash and file length.\n" #~ msgstr "" #~ "添加的 ed2k 链接可以是:\n" #~ "*) 文件链接(ed2k://|file|..),将添加至下载队列,\n" #~ "*) 服务器链接(ed2k://|server|...),将添加至服务器列表,\n" #~ "*) 或服务器列表链接,这种情况将添加此列表中的所有服务器至服务器列表。\n" #~ "\n" #~ "\n" #~ "magnet 链接必须包含 ed2k 校验码和文件大小。\n" #~ msgid "Deprecated command, now '%s'." #~ msgstr "已废弃的命令,现用 '%s'。" #~ msgid "Error: %s (%s) - %s" #~ msgstr "错误: %s (%s) - %s" #~ msgid "Warning: %s (%s) - %s" #~ msgstr "警告:%s (%s) - %s" #~ msgid "Error: Out of diskspace" #~ msgstr "错误:磁盘空间不足" #~ msgid "Error: Partmet not found" #~ msgstr "错误:partmet文件未找到" #~ msgid "Error: IO error!" #~ msgstr "错误:IO错误!" #~ msgid "Error: Failed!" #~ msgstr "错误:失败!" #~ msgid "ED2K Link: " #~ msgstr "ED2K 链接:" #~ msgid "" #~ "Click here to add the ed2k link in the text control to your download " #~ "queue." #~ msgstr "请点击这里把输入的ED2K链接加入下载队列。" #~ msgid "Searches for more results on ED2K. Not supported for Kad yet." #~ msgstr "在 ED2K 上搜索更多结果,暂不支持 Kad" #~ msgid "0" #~ msgstr "0" #~ msgid "Bandwith Limits" #~ msgstr "带宽限制" #~ msgid "This is the standard ED2K port and cannot be disabled." #~ msgstr "这是标准 ED2K 端口,不能被禁用" #~ msgid "This UDP port is used for extended Ed2K requests and Kad network" #~ msgstr "此 UDP 端口用于扩展的 Ed2k 请求和 Kad 网络" #~ msgid "Hard Limit" #~ msgstr "绝对上限" #~ msgid "Connection Limits" #~ msgstr "连接限制" #~ msgid "Auto-update serverlist at startup" #~ msgstr "启动后自动更新服务器列表" #~ msgid "Update serverlist when connecting to a server" #~ msgstr "与服务器连接时更新服务器列表" #~ msgid "Update serverlist when a client connect" #~ msgstr "与其它用户连接时更新服务器列表" #~ msgid "Disk Space" #~ msgstr "硬盘空间" #~ msgid "Check Disk Space" #~ msgstr "检查硬盘空间" #~ msgid "Select this if you want aMule to check your Disk Space" #~ msgstr "如果需要 aMule 检查硬盘空间请选此项" #~ msgid "Min Disk Space:" #~ msgstr "最低磁盘空间:" #~ msgid "Incoming Directory :" #~ msgstr "已下载文件存放目录:" #~ msgid "Temporary Directory :" #~ msgstr "临时文件存放目录:" #~ msgid "Shared Directories" #~ msgstr "共享的目录" #~ msgid "Create Backup to preview" #~ msgstr "预览前备份文件" #~ msgid "Show Fast ED2K Links Handler" #~ msgstr "显示 ED2K 链接处理栏" #~ msgid "Webserver Parameters" #~ msgstr "Web 服务器参数" #~ msgid "Webserver port" #~ msgstr "Web 服务器端口" #~ msgid "Enable UPnP port forwarding on the Webserver port" #~ msgstr "在 Web 服务器端口上启动 UPnP 端口转发" #~ msgid "Webserver UPnP TCP port" #~ msgstr "Web 服务器 UPnP TCP 端口" #~ msgid "Serverlist" #~ msgstr "服务器列表" #~ msgid "Manual Server Add : Name" #~ msgstr "手动添加服务器:名称" #~ msgid "No One" #~ msgstr "没人可以" #~ msgid "Speed Limits:" #~ msgstr "速度限制:" #~ msgid "Download Speed: %.1f" #~ msgstr "下载速度:%.1f" #~ msgid "Upload Speed: %.1f" #~ msgstr "上传速度:%.1f" #~ msgid "TCP Port: %d" #~ msgstr "TCP 端口:%d" #~ msgid "TCP Port: Not Ready" #~ msgstr "TCP 端口:未就绪" #~ msgid "UDP Port: %d" #~ msgstr "UDP 端口:%d" #~ msgid "UDP Port: Not Ready" #~ msgstr "UDP 端口:未就绪" #~ msgid "Shared Files: %d" #~ msgstr "共享文件:%d" #~ msgid "Queued Clients: %d" #~ msgstr "队列用户:%d" #~ msgid "Upload Limit" #~ msgstr "上传限制" #~ msgid "Download Limit" #~ msgstr "下载限制" #~ msgid "" #~ "No serverlist address entry in 'addresses.dat' found. Please paste a " #~ "valid serverlist address into this file in order to auto-update your " #~ "serverlist" #~ msgstr "" #~ "'addresses.dat' 文件内没有服务器列表地址. 请粘贴一个有效服务器列表地址到该" #~ "文件以自动更新服务器列表." #~ msgid "Warning, invalid URL specified for auto-updating of servers: %s" #~ msgstr "警告,该自动更新地址无效:%s" #~ msgid "webserver running on pid %d" #~ msgstr "Web 服务器正在运行,进程号是 %d" #~ msgid "" #~ "You requested to run webserver from startup, but the amuleweb binary " #~ "cannot be run. Please install the package containing aMule webserver, or " #~ "compile aMule using --enable-webserver and run make install" #~ msgstr "" #~ "您要求启动时运行 Web 服务器,但 amuleweb 程序无法运行。请先安装包含 aMule " #~ "Web 服务器的 aMule 版本,或者使用 --enable-webserver选项编译 aMule,然后运" #~ "行 make install进行安装" #~ msgid "Disconnected from ED2K" #~ msgstr "已断开 ED2K" #~ msgid "Failed to open friendlist file 'emfriends.met' for reading!" #~ msgstr "无法打开好友列表文件 'emfriends.met'!" #~ msgid "Failed to open friendlist file 'emfriends.met' for writing!" #~ msgstr "无法写入好友列表文件 'emfriends.met'!" #~ msgid "ERROR: Failed to open partfile)" #~ msgstr "错误:无法打开 part 文件)" #~ msgid "Mb" #~ msgstr "Mb" #~ msgid "Can't create web socket thread\n" #~ msgstr "无法创建 Web 端口进程\n" #~ msgid "Web Server: Started\n" #~ msgstr "Web 服务器:已启动\n" #~ msgid "Not Supported" #~ msgstr "不被支持" #~ msgid "LowID: %u (%.2f%% Total %.2f%% Known)" #~ msgstr "低ID:%u(总计 %.2f%% 已知 %.2f%%)" #~ msgid "SecIdent On/Off: %u (%.2f%%) : %u (%.2f%%)" #~ msgstr "安全身份认证 开/关:%u(%.2f%%):%u(%.2f%%)" #~ msgid "Browse wav" #~ msgstr "浏览 wav 文件" #~ msgid "File wav (*.wav)|*.wav||" #~ msgstr "文件 wav (*.wav)|*.wav||" #~ msgid "No comment(s)" #~ msgstr "无注释" #~ msgid "" #~ "Note: These values are\n" #~ "only used for statistics." #~ msgstr "" #~ "提示:此值只用于统计用途。\n" #~ " " #~ msgid "Notifications" #~ msgstr "通知" #~ msgid "Messages popup" #~ msgstr "消息弹出" #~ msgid "Use sound" #~ msgstr "启用声音" #~ msgid "Pop out when :" #~ msgstr "以下情况弹出窗口::" #~ msgid "New entry on log" #~ msgstr "日志中添加了新内容" #~ msgid "Starts a new chat session" #~ msgstr "开始新的消息对话" #~ msgid "A new chat message is received" #~ msgstr "收到新用户消息" #~ msgid "A download is added or finished" #~ msgstr "添加或完成了下载文件" #~ msgid "New aMule version detected" #~ msgstr "发现新 aMule 版本" #~ msgid "Urgent OOD, serverconnection lost" #~ msgstr "硬盘已满,服务器连接已断" #~ msgid "Notify by Mail" #~ msgstr "邮件通知" #~ msgid "Send an Email when transfer complete." #~ msgstr "下载完成后用电子邮件通知" #~ msgid "SMTP server :" #~ msgstr "SMTP 服务器:" #~ msgid "Email Address :" #~ msgstr "电子邮件地址:" #~ msgid ":" #~ msgstr ":" #~ msgid "" #~ "The selected locale seems not to be installed on your box\n" #~ "You must generate it to use this language.\n" #~ "A good start on linux systems is the file /etc/locale.gen and the package " #~ "'locales'\n" #~ "Good luck!\n" #~ "(Note: I'll try to set it anyway)" #~ msgstr "" #~ "您所选择的地区设置在您的计算机上似乎没有安装\n" #~ "您需要先产生它.您可以在/etc/locale.gen文件和locales软件包开始,祝您好运!无" #~ "论如何,我还是会先尝试你所选择的地区设置。" #~ msgid "Never show this again" #~ msgstr "下次不需要再显示" #~ msgid "Enable/Disable" #~ msgstr "启用/禁用" #~ msgid "You can't bootstrap an specific ip from remote GUI yet." #~ msgstr "您不能使用远程GUI用指定的IP启动" #~ msgid "You can't update server.met from remote GUI yet." #~ msgstr "不能从远程GUI更新 server.met。" #~ msgid "Disconnect from " #~ msgstr "断开连接从" #~ msgid "current server" #~ msgstr "当前服务器" #~ msgid " and " #~ msgstr "和 " #~ msgid "Disconnect from any server and/or Kad" #~ msgstr "从全部服务器 和/或 Kad 断开" #~ msgid " [" #~ msgstr " [" #~ msgid " | Kad: " #~ msgstr " | Kad:" #~ msgid "TCP Flags" #~ msgstr "TCP 标志" #~ msgid "UDP Flags" #~ msgstr "UDP 标志" #~ msgid "Copy ED2k link(s) to clipboard" #~ msgstr "复制 ED2K 链接到剪贴板" #~ msgid "Client requests %u" #~ msgstr "用户请求 %u" #~ msgid "File block %u-%u (%d bytes):" #~ msgstr "文件数据段 %u-%u (%d 字节):" #~ msgid "Client request is invalid!" #~ msgstr "用户请求非法!" #~ msgid "Client request is invalid! %i / %i" #~ msgstr "用户请求非法!%i / %i" #~ msgid "Unable to open %s file - using %s file." #~ msgstr "无法读取 %s - 现在使用 %s" #~ msgid "Warning: known.met does not exist." #~ msgstr "警告:known.net文件不存在。" #~ msgid "" #~ "CSharedFileList::FindSharedFiles: Removing %s from shared directory list: " #~ "directory not found." #~ msgstr "" #~ "CSharedFileList::FindSharedFiles: 从共享文件列表中删除 %s:目录未找到" #~ msgid "Waiting for subprocess termination failed" #~ msgstr "等待子进程终止失败" #~ msgid "doesn't work" #~ msgstr "没有工作" #~ msgid "remote gui" #~ msgstr "远程GUI" #~ msgid "" #~ "Error: Failed to load backup file. Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "错误:无法载入备份文件,请到 http://forum.amule.org 搜索关于恢复 .part." #~ "met 文件的解决办法" #~ msgid "" #~ "Error: Backup part.met file is 0 size! Search http://forum.amule.org for ." #~ "part.met recovery solutions" #~ msgstr "" #~ "错误:备份的 part.met 文件长度为 0,请到 http://forum.amule.org 搜索关于恢" #~ "复 .part.met 文件的解决办法" #~ msgid "Error: part.met backup file is 0 size: %s ==> %s" #~ msgstr "错误:part.met文件大小为 0:%s ==> %s" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " Website: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contact: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2008 aMule Team \n" #~ "\n" #~ " Part of aMule is based on \n" #~ " Kademlia: Peer-to-peer routing based on the XOR metric.\n" #~ " Copyright (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgstr "" #~ " 基于 eMule 的跨平台 P2P 软件\n" #~ "\n" #~ " 网站: http://www.amule.org \n" #~ " 论坛:http://forum.amule.org \n" #~ " FAQ:http://wiki.amule.org \n" #~ "\n" #~ " 联系人:admin@amule.org (administrative issues) \n" #~ " 版权所有 (C) 2003-2008 aMule 开发团队 \n" #~ "\n" #~ " aMule 的一部分是基于 \n" #~ " Kad:基于异或算法的 P2P 路由协议。\n" #~ " 版权所有 (C) 2002 Petar Maymounkov\n" #~ " http://kademlia.scs.cs.nyu.edu\n" #~ msgid "WARNING: You have recieved Low-ID!" #~ msgstr "警告:您收到了低ID!" #~ msgid "" #~ "This command requieres an argument. Valid arguments: 'all' or a number.\n" #~ msgstr "该命令需要一个参数,有效参数为:'all',或一数字\n" #~ msgid "This command requieres an argument. Valid arguments: a file hash.\n" #~ msgstr "此命令需要一个参数,参数无效,需要文件校验码。\n" #~ msgid "Deprecated command, now 'Status'." #~ msgstr "过时的命令,现已改为 'Status'。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Status' instead.\n" #~ msgstr "" #~ "此命令已过时,将来可能会删除。\n" #~ "'Status' 替代。\n" #~ msgid "Deprecated command, now 'Set IPFilter'." #~ msgstr "过时的命令,现已改为 'Set IPFilter'。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter' instead.\n" #~ msgstr "" #~ "此命令已过时,将来可能会删除。\n" #~ "请用 'Set IPFilter' 替代。\n" #~ msgid "Deprecated command, now 'Get IPFilter Level'." #~ msgstr "过时的命令,现已改为 'Get IPFilter Level'。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get IPFilter Level' instead.\n" #~ msgstr "" #~ "此命令已过时,将来可能会删除。\n" #~ "请用 'Get IPFilter Level' 替代。\n" #~ msgid "Deprecated command, now 'Set IPFilter Level'." #~ msgstr "过时的命令,现已改为 'Set IPFilter Level'。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set IPFilter Level' instead.\n" #~ msgstr "" #~ "此命令已过时,将来可能会删除。\n" #~ "请用 'Set IPFilter Level' 替代。\n" #~ msgid "Deprecated command, now 'Get/Set IPFilter Level'." #~ msgstr "过时的命令,现已改为 'Get/Set IPFilter Level'。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get/Set IPFilter Level' instead.\n" #~ msgstr "" #~ "此命令已过时,将来可能会删除。\n" #~ "请用 'Get/Set IPFilter Level' 替代。\n" #~ msgid "Deprecated command, now 'Show Servers'." #~ msgstr "过时的命令,现已改为 'Show Servers'。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Show Servers' instead.\n" #~ msgstr "" #~ "此命令已过时,将来可能会删除。\n" #~ "请用 'Show Servers' 替代。\n" #~ msgid "Deprecated command, now 'Get BwLimits'." #~ msgstr "过时的命令,现已改为 'Get BwLimits'。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Get BwLimits' instead.\n" #~ msgstr "" #~ "此命令已过时,将来可能会删除。\n" #~ "请用 'Get BwLimits' 替代。\n" #~ msgid "Deprecated command, now 'Set BwLimit Up'." #~ msgstr "过时的命令,现已改为 'Set BwLimit Up'。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Up' instead.\n" #~ msgstr "" #~ "此命令已过时,将来可能会删除。\n" #~ "请用 'Set BwLimit Up' 替代。\n" #~ msgid "Deprecated command, now 'Set BwLimit Down'." #~ msgstr "过时的命令,现已改为 'Set BwLimit Down'。" #~ msgid "" #~ "This is a deprecated command, and may be removed in the future.\n" #~ "Use 'Set BwLimit Down' instead.\n" #~ msgstr "" #~ "此命令已过时,将来可能会删除。\n" #~ "请用 'Set BwLimit Down' 替代。\n" #~ msgid "Masterhashes of known files have been loaded." #~ msgstr "已经文件的主校验码已经载入" #~ msgid "Error while reading Kad contacts - 0 entries" #~ msgstr "读取 Kad 联系人时出错 - 没有记录 " #~ msgid "Merge attempt" #~ msgstr "尝试合并" #~ msgid "Recursive merge" #~ msgstr "递归合并" #~ msgid "Sucessful merge!" #~ msgstr "成功合并!" #~ msgid "No merge possible" #~ msgstr "没有合并的可能" #~ msgid "Buddy address: " #~ msgstr "好友地址:" #~ msgid "Allow usage of system wide ipfilter.dat" #~ msgstr "允许使用系统级别的 ipfilter.dat" #~ msgid "%d" #~ msgstr "%d" #~ msgid " %d" #~ msgstr " %d" #~ msgid ".%d" #~ msgstr ".%d" #~ msgid "Shows the process of a search." #~ msgstr "显示搜索进度。" #~ msgid "Shows the process of a search..\n" #~ msgstr "显示搜索进度..\n" #~ msgid "Search warning." #~ msgstr "搜索警告" #~ msgid "Client Identification:" #~ msgstr "用户身份认证:" #~ msgid "Use Secure Identification" #~ msgstr "使用安全身份认证" #~ msgid "" #~ "Secure Identification uses a handshake approch to safely identify clients " #~ "for use with the credit system." #~ msgstr "安全身份认证使用握手协议来确认用户身份以计算积分。" #~ msgid "Sources Dropping" #~ msgstr "源的清理" #~ msgid "Source Dropping" #~ msgstr "源清理" #~ msgid "Drop sources" #~ msgstr "清除源" #~ msgid "Send sources to any other file before dropping (High CPU)" #~ msgstr "清除前把源分配到其它下载文件(高 CPU 占用)" #~ msgid "Sources with no needed file-parts." #~ msgstr "没有需要文件段的源。" #~ msgid "Full Queue Sources Handling" #~ msgstr "队列已满的源的处理" #~ msgid "Enable auto drop Full Queue Sources" #~ msgstr "启用自动清除队列已满的源" #~ msgid "High Queue Rating Sources Handling" #~ msgstr "队列过长的源的处理" #~ msgid "Enable auto drop High Queue Rating Sources" #~ msgstr "启用自动清除队列过长的源" #~ msgid "High Queue Rating value" #~ msgstr "队列长度" #~ msgid "(Min 300 / Max 3000)" #~ msgstr "(最低 300 / 最高 3000)" #~ msgid "Auto Drop Sources Timer" #~ msgstr "自动清除源计时器" #~ msgid "Timer (in secs)" #~ msgstr "计时(秒)" #~ msgid "(Min 60 / 3600 Max)" #~ msgstr "(最低 60 / 最高 3600)" #~ msgid "Drop No Needed Sources now" #~ msgstr "立即清理无可供下载的源" #~ msgid "Drop Full Queue Sources now" #~ msgstr "立即清理队列已满的源" #~ msgid "Drop High Queue Rating Sources now" #~ msgstr "立即清理队列超长的源" #~ msgid "Clean Up Sources now (NNS, FQS && HQRS)" #~ msgstr "立即清理所有无用源" #~ msgid "English (U.S.)" #~ msgstr "英语(美国)" #~ msgid "Spanish (Mexican)" #~ msgstr "西班牙语(墨西哥)" #~ msgid "Nothing to copy for now!" #~ msgstr "暂时没有东西可复制!" #~ msgid "Copy ED2k link to clipboard (Hostname)" #~ msgstr "拷贝 ED2K 链接到剪贴板 (计算机名)" #~ msgid "Connecting to %s (%s - %s:%i)" #~ msgstr "正在连接到%s (%s - %s:%i)" #~ msgid "Minimize to trayicon" #~ msgstr "最小化到系统状态栏" #~ msgid "" #~ "Enabling this will make aMule minimize to the system-tray, rather than " #~ "the taskbar." #~ msgstr "启用后最小化系统状态栏而不是系统任务栏。" #~ msgid "Browse skin file" #~ msgstr "浏览skin面板文件" #~ msgid "Use skin file to set aMule bitmaps." #~ msgstr "使用skin面板来设置aMule bitmaps." #~ msgid "Skin file:" #~ msgstr "Skin 文件:" #~ msgid "theApp.serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp.serverlist->GetServerByAddress() returned NULL" #~ msgid "Skin file name is empty - loading defaults" #~ msgstr "面板文件未设置 - 正在加载默认面板" #~ msgid "Skin file %s does not exist - loading defaults" #~ msgstr "面板文件 %s 不存在 - 正在加载默认面板" #~ msgid "Enable IP-Filtering" #~ msgstr "启用IP过滤" #~ msgid "" #~ "Enable filtering of the IPs defined in the file ~/.aMule/ipfilter.dat." #~ msgstr "启用IP 地址过滤列表 ~/.aMule/ipfilter.dat" #~ msgid "ED2K Link Handler" #~ msgstr "ED2K 链接处理" #~ msgid "Local Search" #~ msgstr "本地搜索" #~ msgid "Global Search" #~ msgstr "全球搜索" #~ msgid "FileHash (WWW)" #~ msgstr "文件校检码 (WWW)" #~ msgid "Socks5" #~ msgstr "Socks5" #~ msgid "Socks4" #~ msgstr "Socks4" #~ msgid "Hasher: Creating new thread." #~ msgstr "Hasher: 正在产生新线程。" #~ msgid "Hasher: Signaling for remaining threads to terminate." #~ msgstr "Hasher: 正在通知剩余线程结束。" #~ msgid "Hasher: No files on queue, stopping thread." #~ msgstr "Hasher: 队列上没有文件,正在结束线程。" #~ msgid "Hasher: Starting to create MD4 and AICH hash for file: %s" #~ msgstr "Hasher: 开始计算MD4和AICH校检码:%s" #~ msgid "Hasher: Starting to create MD4 hash for file: " #~ msgstr "Hasher: 开始计算MD4校检码:" #~ msgid "Hasher: Finished hashing file: %s" #~ msgstr "校检码生成器:完成了文件: %s" #~ msgid "Hasher: A thread has died." #~ msgstr "校检码生成器:一个线程死亡了。" #~ msgid "AICH Thread: Signaling for thread to terminate." #~ msgstr "AICH Thread: 正在通知线程退出。" #~ msgid "AICH Thread: Terminated." #~ msgstr "AICH Thread: 已退出" #~ msgid "AICH Thread: Syncronization thread started." #~ msgstr "AICH Thread: 同步线程已启动" #~ msgid "AICH Thread: Masterhashes of known files have been loaded." #~ msgstr "AICH Thread: 已载入已知文件的主校检码" #~ msgid "AICH Thread: Starting to hash files. %li files found." #~ msgstr "AICH Thread: 开始计算文件校检码。找到 %li 个文件。" #~ msgid "AICH Thread: Hashing file: %s, total files left: %li" #~ msgstr "AICH Thread: 正在计算校检码: %s, 剩余文件数: %li" #~ msgid "AICH Thread: Hashing completed." #~ msgstr "AICH Thread: 计算完成" #~ msgid "AICH Thread: No new files found." #~ msgstr "AICH Thread: 没有发现新文件。" #~ msgid "" #~ "Copied old ~/.xMule config and credit files to ~/.aMule\n" #~ "However, be sure NOT to remove .xMule if your Incoming / Temp folders are " #~ "still there ;)" #~ msgstr "" #~ "已复制旧的 ~/.xMule 配置及积分文件到 ~/.aMule\n" #~ "但如果你的临时文件夹或接收文件夹在 ~/.xMule ,就不要删除该目录 ;)" #~ msgid "" #~ "Temp dir is placed on a FAT32 partition. Disabling chmod to avoid useless " #~ "warnings." #~ msgstr "" #~ "临时文件夹位于FAT32硬盘分区。正在关闭chmod以避免没有意义的警告信息。" #~ msgid "" #~ "Incoming dir is placed on a FAT32 partition. Disabling chmod to avoid " #~ "useless warnings." #~ msgstr "" #~ "接收文件夹位于FAT32硬盘分区。正在关闭chmod以避免没有意义的警告信息。" #~ msgid "" #~ "ERROR: amule daemon is useless when external connections disabled. Change " #~ "configuration either from GUI or by editing the config file" #~ msgstr "错误:禁用外部连接时amule服务进程毫无意义。请更改您的设置。" #~ msgid "Desktop integration" #~ msgstr "桌面集成" #~ msgid "" #~ " 'All-Platform' p2p client based on eMule \n" #~ "\n" #~ " Website: http://www.amule.org \n" #~ " Forum: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " Contact: admin@amule.org (administrative issues) \n" #~ " Copyright (C) 2003-2006 aMule Team \n" #~ msgstr "" #~ "多平台P2P客户端软件.\n" #~ "\n" #~ " 网站: http://www.amule.org\n" #~ " 论坛: http://forum.amule.org \n" #~ " FAQ: http://wiki.amule.org \n" #~ "\n" #~ " 联系: admin@amule.org (管理事务) \n" #~ " Copyright (C) 2003-2006 aMule Project \n" #~ msgid "Disconnect from current server" #~ msgstr "服务器连接已中断" #~ msgid "Connect to any server" #~ msgstr "连接到任意服务器" #~ msgid "Users: %s (%s) | Files %s (%s)" #~ msgstr "用户: %s (%s) | 文件 %s (%s)" #~ msgid "Connected to amule at %s" #~ msgstr "已连接到 %s" #~ msgid "Connection Failed. Unable to connect to the specified host" #~ msgstr "连接失败。无法连接到指定的计算机" #~ msgid "ExternalConn: Access denied because: %s" #~ msgstr "外部连接:请求被拒绝,具体原因:%s" #~ msgid "Succeeded! Connection established to aMule %s" #~ msgstr "已成功连接 aMule %s" #~ msgid " (Fake eMule version %x)" #~ msgstr " (假冒 eMule 版本%x)" #~ msgid " (based on eMule v0.%u)" #~ msgstr "(基于 eMule v0.%u)" #~ msgid "Client %s on IP:Port %s:%d using %s" #~ msgstr "用户 %s 在 IP:Port %s:%d 使用 %s" #~ msgid "Chat-Session Started: %s - %s %s" #~ msgstr "聊天开始: %s - %s %s" #~ msgid "No 'cryptkey.dat' file found, creating" #~ msgstr "没找到'cryptkey.dat',产生新文件" #~ msgid "aMule O.S. info is: %s" #~ msgstr "aMule 操作系统信息:%s" #~ msgid "Feedback from:" #~ msgstr "反馈 - 来自:" #~ msgid "Client: aMule" #~ msgstr "客户: aMule " #~ msgid "File Name:" #~ msgstr "文件名:" #~ msgid "Download:" #~ msgstr "下载:" #~ msgid "Sources:" #~ msgstr "源:" #~ msgid "Complete Sources:" #~ msgstr "完整源:" #~ msgid "Get Razorback 2's stats for this file" #~ msgstr "获取Razorback 2上该文件的信息" #~ msgid "jugle.net Fake Check" #~ msgstr "jugle.net 假冒检查" #~ msgid "'Donkey Fakes' Fake Check" #~ msgstr "'Donkey Fakes'假冒检查" #~ msgid "FakeCheck" #~ msgstr "假冒检查" #~ msgid "Copy ED2k link to clipboard (&HTML)" #~ msgstr "拷贝 ED2k 连接到剪贴板 (HTML)" #~ msgid "You are already trying to download the file " #~ msgstr "您已经在下载该文件" #~ msgid "ExternalConn: failed to Create thread" #~ msgstr "ExternalConn: failed to Create thread" #~ msgid "Invalid EC packet received" #~ msgstr "收到无效EC数据包" #~ msgid "" #~ "Incorrect CVSDATE. Please run core and remote from the same CVS tarball." #~ msgstr "CVSDATE不正确。请确保核心和远程部分来自同一CVS源文件包。" #~ msgid "aMule is not connected! Cannot do search." #~ msgstr "您现在没有连接到服务器上!所以无法搜索。" #~ msgid "ExternalConn: Unable to understand ed2k link '%s'." #~ msgstr "外部连接:无法理解ED2K链接 '%s'." #~ msgid "ExternalConn: invalid opcode received" #~ msgstr "外部连接:收到无效 opcode" #~ msgid "ExternalConnClientThread: Failed to Create thread." #~ msgstr "ExternalConnClientThread: 无法建立新线程。" #~ msgid "ExternalConnClientThread: Connection closed." #~ msgstr "ExternalConnClientThread: 已关闭连接。" #~ msgid "Syntax error!\n" #~ msgstr "格式错误!\n" #~ msgid "Now, doing connection....\n" #~ msgstr "现在正在连接....\n" #~ msgid "Using host '%s' port: %d\n" #~ msgstr "使用主机 '%s' 端口: %d\n" #~ msgid "Trying to connect (timeout = 10 sec)...\n" #~ msgstr "正在连接 (时限=10秒)...\n" #~ msgid "ExternalConn: Access denied because: %s\n" #~ msgstr "外部连接:请求被拒绝,具体原因:%s\n" amule_2.3.1+git20151120.0023527bc2.orig/po/zh_TW.po0000644000175000017500000061524112611472361017525 0ustar morphmorph# aMule Translation file. # Copyright (c) 2003-2011 aMule Team # This file is distributed under the same license as the aMule package. # # Simplified Chinese translation by: # Chen yu-kai , 2004. # xiaoqiao <29551030@qq.com>, 2007-2008. # # Traditional Chinese translation converted and updated by: # Wayne Su , 2008-2010. # # ============================================================================= # How to translate: # http://www.amule.org/wiki/index.php/Translations-tw # # Please give any advice here: # http://www.ubuntu-tw.org/modules/newbb/viewtopic.php?topic_id=12208&forum=15 # msgid "" msgstr "" "Project-Id-Version: aMule\n" "Report-Msgid-Bugs-To: http://forum.amule.org/index.php?board=40.0\n" "POT-Creation-Date: 2014-11-25 15:48+0100\n" "PO-Revision-Date: 2011-11-11 01:29+0800\n" "Last-Translator: Wayne Su \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: zh_TW\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Poedit-Language: Chinese\n" "X-Poedit-Country: TAIWAN\n" "X-Poedit-SourceCharset: utf-8\n" #: src/AddFriend.cpp:45 msgid "Add a Friend" msgstr "加入好友" #: src/AddFriend.cpp:61 msgid "You have to enter a valid IP and port!" msgstr "請輸入有效的 IP 位址和通訊埠!" #: src/AddFriend.cpp:61 src/AddFriend.cpp:67 msgid "Information" msgstr "資訊" #: src/AddFriend.cpp:67 msgid "The specified userhash is not valid!" msgstr "這個使用者 hash 值無效!" #: src/amuleAppCommon.cpp:128 msgid "Failed to open ED2KLinks file." msgstr "無法開啟 ED2K 連結檔。" #: src/amuleAppCommon.cpp:201 msgid "" "WARNING: You can't add yourself as a source for an eD2k link while having a " "lowid." msgstr "警告:LowID 時不可以將自己加入 eD2k 連結來源。" #: src/amule.cpp:229 msgid "Now, exiting main app..." msgstr "正在離開主程式..." #: src/amule.cpp:248 #, c-format msgid "Terminating amuleweb instance with pid '%ld' ... " msgstr "正在終止 pid %ld 的 amuleweb 執行緒..." #: src/amule.cpp:251 #, c-format msgid "Killing amuleweb instance with pid '%ld' ... " msgstr "正在強行終止 pid %ld 的 amuleweb 執行緒..." #: src/amule.cpp:253 src/ClientRef.cpp:194 src/ServerListCtrl.cpp:95 msgid "Failed" msgstr "失敗" #: src/amule.cpp:259 msgid "aMule OnExit: Terminating core." msgstr "aMule 離開中:正在終止主程式。" #: src/amule.cpp:330 msgid "aMule shutdown completed." msgstr "已關閉 aMule 。" #: src/amule.cpp:334 msgid "Memory debug results for aMule exit:" msgstr "離開 aMule 時記憶體除錯結果:" #: src/amule.cpp:433 msgid "" "\n" "EC configuration" msgstr "" "\n" "外部連線設定" #: src/amule.cpp:436 msgid "Password set and external connections enabled." msgstr "密碼已設定,外部連線已啟用。" #: src/amule.cpp:447 src/KadDlg.cpp:183 src/KadDlg.cpp:189 #: src/PrefsUnifiedDlg.cpp:747 src/SharedFilesCtrl.cpp:318 msgid "WARNING" msgstr "警告" #: src/amule.cpp:493 msgid "" "Your locale has been changed to System Default due to a configuration " "change. Sorry." msgstr "對不起,由於版本變更,您的地區設定已經被變更爲系統預設值。" #: src/amule.cpp:495 src/amule.cpp:1049 src/CatDialog.cpp:141 #: src/CatDialog.cpp:151 src/CatDialog.cpp:163 src/ServerList.cpp:346 #: src/ServerListCtrl.cpp:149 msgid "Info" msgstr "資訊" #: src/amule.cpp:580 msgid "" "You don't have any server in the server list.\n" "Do you want aMule to download a new list now?" msgstr "" "在伺服器清單中沒有任何伺服器。\n" "要讓 aMule 現在就下載一個新的嗎?" #: src/amule.cpp:581 msgid "Server list download" msgstr "已下載伺服器清單" #: src/amule.cpp:650 #, c-format msgid "web server running on pid %d" msgstr "執行中的網站伺服器 pid:%d" #: src/amule.cpp:654 msgid "" "You requested to run web server on startup, but the amuleweb binary cannot " "be run. Please install the package containing aMule web server, or compile " "aMule using --enable-webserver and run make install" msgstr "" "您要求啟動時執行網站伺服器,但系統無法執行 amuleweb。請安裝含有 aMule 網站伺" "服器的套件,或於編譯 aMule 程式碼時加入 --enable-webserver 選項" #: src/amule.cpp:655 src/amule.cpp:769 src/amule.cpp:1060 #: src/amule-remote-gui.cpp:304 src/amule-remote-gui.cpp:326 #: src/amule-remote-gui.cpp:328 src/amule-remote-gui.cpp:641 msgid "ERROR" msgstr "錯誤" #: src/amule.cpp:737 #, c-format msgid "Could not bind ports to the specified address: %s" msgstr "無法選定使用此位址的通訊埠:%s" #: src/amule.cpp:761 #, c-format msgid "Port %u is not available. You will be LOWID\n" msgstr "通訊埠 %u 已被佔用。您會變成 LOWID。\n" #: src/amule.cpp:767 #, c-format msgid "" "Port %u is not available!\n" "\n" "This means that you will be LOWID.\n" "\n" "Check your network to make sure the port is open for output and input." msgstr "" "通訊埠 %u 已被佔用!\n" "\n" "這表示您會變成 LOWID。\n" "\n" "請檢查網路設定以確保通訊埠可正常使用。" #: src/amule.cpp:846 msgid "Failed to create OnlineSig File" msgstr "無法建立線上簽名識別檔" #: src/amule.cpp:854 msgid "Failed to create aMule OnlineSig File" msgstr "無法建立 aMule 線上簽名識別檔" #: src/amule.cpp:1026 msgid "" "The selected locale seems not to be installed on your box. (Note: I'll try " "to set it anyway)" msgstr "" "在您的電腦上似乎沒有安裝您所選取的地區設定。 (但仍會採用您所選擇的設定)" #: src/amule.cpp:1035 #, c-format msgid "This is the first time you run aMule %s" msgstr "這是您第一次執行 aMule %s" #: src/amule.cpp:1037 msgid "This version is a testing version, updated daily, and\n" msgstr "這個版本是測試版,每日有更新,\n" #: src/amule.cpp:1038 msgid "we give no warranty it won't break anything, burn your house,\n" msgstr "但我們無法擔保它不會造成任何損害、燒掉您的房子、\n" #: src/amule.cpp:1039 msgid "or kill your dog. But it *should* be safe to use anyway.\n" msgstr "或害死您的狗。但一般來講它「應該」是安全的。\n" #: src/amule.cpp:1044 msgid "More information, support and new releases can found at our homepage,\n" msgstr "在我們的網頁可找到更多資訊、使用者支援以及程式最新版本:\n" #: src/amule.cpp:1045 msgid "at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n" msgstr "http://www.aMule.org,或我們在 irc.freenode.net 的 IRC 頻道 #aMule。\n" #: src/amule.cpp:1047 msgid "Feel free to report any bugs to http://forum.amule.org" msgstr "歡迎您到 http://forum.amule.org 提出錯誤報告" #: src/amule.cpp:1060 msgid "" "The folder for Online Signature files you specified is INVALID!\n" " OnlineSignature will be DISABLED until you fix it on preferences." msgstr "" "您選擇的線上簽名識別檔案所在資料夾無效!\n" " 在您變更偏好設定之前,線上簽名識別功能將被停用。" #: src/amule.cpp:1116 msgid "Server hostname notified" msgstr "已通伺服器主機名稱" #: src/amule.cpp:1342 #, c-format msgid "Disk space preallocation for file '%s' failed: %s" msgstr "無法為檔案 %s 預先分配磁碟空間:%s " #: src/amule.cpp:1477 msgid "ERROR: can't open logfile" msgstr "錯誤:無法開啟記錄檔" #: src/amule.cpp:1481 msgid "WARNING: logfile is empty. Something is wrong." msgstr "警告:沒有記錄檔,肯定有什麽地方出錯了。" #: src/amule.cpp:1499 msgid "Log has been reset" msgstr "記錄已被清除" #: src/amule.cpp:1525 #, c-format msgid "ServerMessage: %s" msgstr "伺服器訊息:%s" #: src/amule.cpp:1567 src/IP2Country.cpp:152 src/IPFilter.cpp:510 #: src/ServerList.cpp:860 #, c-format msgid "Skipped download of %s, because requested file is not newer." msgstr "略過不下載 %s ,因為並不是新近檔案。" #: src/amule.cpp:1569 msgid "Failed to download the nodes list." msgstr "無法下載節點清單。" #: src/amule.cpp:1589 msgid "Failed to open the downloaded version check file" msgstr "無法開啟下載的版本檢查檔" #: src/amule.cpp:1592 src/amule.cpp:1602 src/amule.cpp:1608 msgid "Corrupted version check file" msgstr "損壞的版本檢查檔" #: src/amule.cpp:1618 msgid "You are using an outdated version of aMule!" msgstr "您使用的是過期的 aMule 版本!" #: src/amule.cpp:1620 #, c-format msgid "Your aMule version is %i.%i.%i and the latest version is %li.%li.%li" msgstr "您的 aMule 版本是 %i.%i.%i,最新版本是 %li.%li.%li" #: src/amule.cpp:1621 msgid "The latest version can always be found at http://www.amule.org" msgstr "最新版本可從這裏下載:http://www.amule.org" #: src/amule.cpp:1623 #, c-format msgid "WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li" msgstr "警告:您的 aMuled 版本已經過期:%i.%i.%i < %li.%li.%li" #: src/amule.cpp:1627 msgid "Your copy of aMule is up to date." msgstr "您的 aMule 是最新版本。" #: src/amule.cpp:1634 msgid "Failed to download the version check file" msgstr "無法下載版本檢查檔" #: src/amule.cpp:1799 src/amule-remote-gui.cpp:526 #, c-format msgid "Users: %s | Files: %s" msgstr "使用者:%s | 檔案:%s" #: src/amule.cpp:1800 src/amule-remote-gui.cpp:527 #, c-format msgid "Users: E: %s K: %s | Files: E: %s K: %s" msgstr "使用者:E:%s K:%s | 檔案:E:%s K:%s" #: src/amule.cpp:1809 src/amule-remote-gui.cpp:536 msgid "No networks selected" msgstr "未選取網路" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with LowID" msgstr "有 LowID" #: src/amule.cpp:1872 src/TextClient.cpp:709 msgid "with HighID" msgstr "有 HighID" #: src/amule.cpp:1874 #, c-format msgid "Connected to %s %s" msgstr "已連線到 %s %s" #: src/amule.cpp:1878 #, c-format msgid "Connecting to %s" msgstr "正在連線到 %s" #: src/amule.cpp:1880 msgid "Disconnected from eD2k" msgstr "已中斷 eD2k 網路連線" #: src/amule.cpp:1888 msgid "Kad started." msgstr "Kad 已啓動。" #: src/amule.cpp:1890 msgid "Kad stopped." msgstr "Kad 已停止。" #: src/amule.cpp:1898 msgid "Connected to Kad (ok)" msgstr "已連線到 Kad" #: src/amule.cpp:1900 msgid "Connected to Kad (firewalled)" msgstr "已連線到 Kad 網路 (防火牆內)" #: src/amule.cpp:1903 msgid "Disconnected from Kad" msgstr "已中斷 Kad 網路連線" #: src/amule.cpp:1970 msgid "" "Kad network cannot be used if UDP port is disabled on preferences, not " "starting." msgstr "Kad 網路未啟動:如果在偏好設定中停用了 UDP 埠,Kad 網路將不能使用。" #: src/amule.cpp:1973 msgid "Kad network disabled on preferences, not connecting." msgstr "Kad 網路在偏好設定中被停用了,沒有連線。" #: src/amuled.cpp:589 msgid "" "ERROR: aMule daemon cannot be used when external connections are disabled. " "To enable External Connections, use either a normal aMule, start amuled with " "the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in " "the file ~/.aMule/amule.conf" msgstr "" "錯誤:當停用外部連線時,aMule 背景服務程式無法使用。要啓用外部連線,請使用標" "準的 aMule,或使用 --ec-config 選項啓動 amuled,或在檔案 ~/aMule/amule.conf " "中將「AcceptExternalConnections」設定值改為 1" #: src/amuled.cpp:592 msgid "" "ERROR: A valid password is required to use external connections, and aMule " "daemon cannot be used without external connections. To run aMule deamon, you " "must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an " "appropriate value. Execute amuled with the flag --ec-config to set the " "password. More information can be found at http://wiki.amule.org" msgstr "" "錯誤:需要有效的密碼以使用外部連線,且 aMule 背景服務程式要有外部連線才可使" "用。要執行 aMule 背景服務程式,您必須在檔案 ~/aMule/amule.conf 中將 " "「ECPassword」 設定值改為適當的數字。使用 --ec-config 參數啓動 amuled 以設定" "密碼。請到 http://wiki.amule.org 取得更多資訊" #: src/amuled.cpp:649 msgid "amuled: OnInit - starting timer" msgstr "amuled:初始中 - 正在開始計時器" #: src/amuled.cpp:664 msgid "amuled: forking to background - see you" msgstr "amuled:在背景執行 - 再見" #: src/amuled.cpp:695 msgid "Cannot Create Pid File" msgstr "無法建立 pid 檔案" #: src/amuled.cpp:742 #, c-format msgid "ERROR: %s" msgstr "錯誤:%s" #: src/amuleDlg.cpp:238 #, c-format msgid "This is aMule %s based on eMule." msgstr "這是 aMule %s (源自 eMule)。" #: src/amuleDlg.cpp:240 #, c-format msgid "Running on %s" msgstr "執行於 %s" #: src/amuleDlg.cpp:242 msgid "Visit http://www.amule.org to check if a new version is available." msgstr "請到 http://www.amule.org 下載最新版本。" #: src/amuleDlg.cpp:268 msgid "FATAL ERROR: Failed to create Timer" msgstr "嚴重錯誤:無法建立計時器" #: src/amuleDlg.cpp:493 msgid "aMule remote control " msgstr "aMule 遠端控制" #: src/amuleDlg.cpp:499 msgid "Snapshot:" msgstr "快照:" #: src/amuleDlg.cpp:501 msgid "" "'All-Platform' p2p client based on eMule \n" "\n" msgstr "" "源自 eMule 的「跨平台」P2P 客戶端程式\n" "\n" #: src/amuleDlg.cpp:502 msgid "Website: http://www.amule.org \n" msgstr "網站:http://www.amule.org \n" #: src/amuleDlg.cpp:503 msgid "Forum: http://forum.amule.org \n" msgstr "論壇:http://forum.amule.org \n" #: src/amuleDlg.cpp:504 msgid "" "FAQ: http://wiki.amule.org \n" "\n" msgstr "" "FAQ:http://wiki.amule.org \n" "\n" #: src/amuleDlg.cpp:505 msgid "Contact: admin@amule.org (administrative issues) \n" msgstr "聯絡:admin@amule.org (行政管理) \n" #: src/amuleDlg.cpp:506 msgid "" "Copyright (c) 2003-2011 aMule Team \n" "\n" msgstr "" "Copyright (c) 2003-2011 aMule 團隊\n" "\n" #: src/amuleDlg.cpp:507 msgid "Part of aMule is based on \n" msgstr "部份 aMule 源自 \n" #: src/amuleDlg.cpp:508 msgid "Kademlia: Peer-to-peer routing based on the XOR metric.\n" msgstr " KAD:基於 XOR 演算法的 P2P 路由。\n" #: src/amuleDlg.cpp:509 msgid " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" msgstr " Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n" #: src/amuleDlg.cpp:510 msgid "http://kademlia.scs.cs.nyu.edu\n" msgstr "http://kademlia.scs.cs.nyu.edu\n" #: src/amuleDlg.cpp:513 src/KadDlg.cpp:193 src/PartFile.cpp:920 #: src/PartFile.cpp:928 src/PrefsUnifiedDlg.cpp:629 #: src/PrefsUnifiedDlg.cpp:734 src/PrefsUnifiedDlg.cpp:847 msgid "Message" msgstr "訊息" #: src/amuleDlg.cpp:550 msgid "aMule dialog destroyed" msgstr "aMule 對話方塊已銷毀" #: src/amuleDlg.cpp:574 src/DataToText.cpp:61 src/IPFilter.cpp:544 msgid "Connecting" msgstr "正在連線" #: src/amuleDlg.cpp:705 msgid "eD2k: Connecting" msgstr "eD2k:正在連線" #: src/amuleDlg.cpp:709 msgid "eD2k: Disconnected" msgstr "eD2k:已中斷連線" #: src/amuleDlg.cpp:715 msgid "Kad: Firewalled" msgstr "Kad:防火牆內" #: src/amuleDlg.cpp:719 msgid "Kad: Connected" msgstr "Kad:已連線" #: src/amuleDlg.cpp:724 msgid "Kad: Connecting" msgstr "Kad:正在連線" #: src/amuleDlg.cpp:728 msgid "Kad: Off" msgstr "Kad:關閉" #: src/amuleDlg.cpp:774 src/DownloadListCtrl.cpp:415 #: src/DownloadListCtrl.cpp:652 src/FriendListCtrl.cpp:174 #: src/muuli_wdr.cpp:803 src/muuli_wdr.cpp:863 src/muuli_wdr.cpp:937 #: src/muuli_wdr.cpp:1003 src/muuli_wdr.cpp:2329 src/muuli_wdr.cpp:2431 #: src/muuli_wdr.cpp:3147 src/ServerListCtrl.cpp:154 #: src/ServerListCtrl.cpp:528 src/ServerListCtrl.cpp:547 #: src/TransferWnd.cpp:375 src/utils/wxCas/src/wxcasprefs.cpp:285 msgid "Cancel" msgstr "取消" #: src/amuleDlg.cpp:775 msgid "Stop the current connection attempts" msgstr "停止連線作業" #: src/amuleDlg.cpp:780 src/MuleTrayIcon.cpp:496 src/muuli_wdr.cpp:2572 msgid "Disconnect" msgstr "中斷連線" #: src/amuleDlg.cpp:781 msgid "Disconnect from the currently connected networks" msgstr "中斷已連線的網路" #: src/amuleDlg.cpp:786 src/MuleTrayIcon.cpp:499 src/muuli_wdr.cpp:2755 #: src/muuli_wdr.cpp:3143 src/muuli_wdr.cpp:3530 msgid "Connect" msgstr "連線" #: src/amuleDlg.cpp:787 msgid "Connect to the currently enabled networks" msgstr "連線到目前已啟用的網路" #: src/amuleDlg.cpp:846 #, c-format msgid "Up: %.1f(%.1f) | Down: %.1f(%.1f)" msgstr "上傳:%.1f (%.1f) | 下載:%.1f (%.1f)" #: src/amuleDlg.cpp:848 #, c-format msgid "Up: %.1f | Down: %.1f" msgstr "上傳:%.1f | 下載:%.1f" #: src/amuleDlg.cpp:874 #, c-format msgid "aMule (%s | Connected)" msgstr "aMule (%s | 已連線)" #: src/amuleDlg.cpp:876 #, c-format msgid "aMule (%s | Disconnected)" msgstr "aMule (%s | 已中斷連線)" #: src/amuleDlg.cpp:913 #, c-format msgid "Do you really want to exit %s?" msgstr "您確定要離開 %s 嗎?" #: src/amuleDlg.cpp:914 msgid "Exit confirmation" msgstr "確認離開" #: src/amuleDlg.cpp:1174 msgid "Launch Command: " msgstr "執行指令:" #: src/amuleDlg.cpp:1210 src/muuli_wdr.cpp:2092 src/Preferences.cpp:846 msgid "- default -" msgstr "- 預設 -" #: src/amuleDlg.cpp:1233 #, c-format msgid "Skin directory '%s' does not exist" msgstr "面板目錄 %s 不存在" #: src/amuleDlg.cpp:1238 #, c-format msgid "WARNING: Unable to open skin file '%s' for read" msgstr "警告:無法開啟面板檔案 %s 供讀取" #: src/amuleDlg.cpp:1336 src/amuleDlg.cpp:1472 src/muuli_wdr.cpp:1673 #: src/muuli_wdr.cpp:3532 msgid "Networks" msgstr "網路" #: src/amuleDlg.cpp:1336 src/muuli_wdr.cpp:3532 msgid "Networks Window" msgstr "網路 視窗" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches" msgstr "搜尋" #: src/amuleDlg.cpp:1337 src/muuli_wdr.cpp:3533 msgid "Searches Window" msgstr "搜尋 視窗" #: src/amuleDlg.cpp:1338 src/DownloadListCtrl.cpp:643 src/muuli_wdr.cpp:426 #: src/muuli_wdr.cpp:1788 src/muuli_wdr.cpp:3534 src/Statistics.cpp:757 msgid "Downloads" msgstr "下載" #: src/amuleDlg.cpp:1338 src/muuli_wdr.cpp:3534 msgid "Downloads Window" msgstr "下載 視窗" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3412 msgid "Shared files" msgstr "檔案分享" #: src/amuleDlg.cpp:1339 src/muuli_wdr.cpp:3536 msgid "Shared Files Window" msgstr "檔案分享 視窗" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:2971 src/muuli_wdr.cpp:3485 #: src/muuli_wdr.cpp:3537 msgid "Messages" msgstr "訊息" #: src/amuleDlg.cpp:1340 src/muuli_wdr.cpp:3537 msgid "Messages Window" msgstr "訊息 視窗" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 src/PrefsUnifiedDlg.cpp:183 #: src/Statistics.cpp:727 src/Statistics.cpp:1024 msgid "Statistics" msgstr "統計" #: src/amuleDlg.cpp:1341 src/muuli_wdr.cpp:3538 msgid "Statistics Graph Window" msgstr "統計 視窗" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 src/PrefsUnifiedDlg.cpp:198 #: src/utils/wxCas/src/wxcasprefs.cpp:41 msgid "Preferences" msgstr "偏好設定" #: src/amuleDlg.cpp:1343 src/muuli_wdr.cpp:3540 msgid "Preferences Settings Window" msgstr "偏好設定 視窗" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "Import" msgstr "匯入" #: src/amuleDlg.cpp:1345 src/muuli_wdr.cpp:3541 msgid "The partfile importer tool" msgstr "暫存檔匯入工具" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 #: src/utils/aLinkCreator/src/alcframe.cpp:271 msgid "About" msgstr "關於" #: src/amuleDlg.cpp:1347 src/muuli_wdr.cpp:3542 msgid "About/Help" msgstr "關於/幫助" #: src/amuleDlg.cpp:1476 msgid "eD2k network" msgstr "eD2k 網路" #: src/amuleDlg.cpp:1480 msgid "Kad network" msgstr "kad 網路" #: src/amuleDlg.cpp:1480 msgid "No network" msgstr "無網路" #: src/amule-gui.cpp:210 msgid "aMule remote control" msgstr "aMulle 遠端控制" #: src/amule-gui.cpp:212 src/utils/wxCas/src/wxcasframe.cpp:111 msgid "aMule" msgstr "aMule" #: src/amule-gui.cpp:294 msgid "Fatal Error: Failed to create Core Timer" msgstr "嚴重錯誤:無法建立主程式端計時器" #: src/amule-remote-gui.cpp:71 msgid "Connect to remote amule" msgstr "連線到遠端 amule" #: src/amule-remote-gui.cpp:257 msgid "Fatal Error: Failed to create Poll Timer" msgstr "嚴重錯誤:無法建立 Poll Timer" #: src/amule-remote-gui.cpp:274 msgid "Going to event loop..." msgstr "正在進行事件迴圈..." #: src/amule-remote-gui.cpp:300 msgid "Connecting..." msgstr "正在連線..." #: src/amule-remote-gui.cpp:304 msgid "Connection failed " msgstr "無法連線" #: src/amule-remote-gui.cpp:315 msgid "Remote GUI EC event handler" msgstr "遠端 GUI 外部連線事件處理器" #: src/amule-remote-gui.cpp:322 msgid "Going down" msgstr "關閉中" #: src/amule-remote-gui.cpp:325 src/ExternalConnector.cpp:387 #, c-format msgid "Connection Failed. Unable to connect to %s:%d\n" msgstr "無法連線到 %s:%d\n" #: src/amule-remote-gui.cpp:328 msgid "Connection closed - aMule has terminated probably." msgstr "已關閉連線 - aMule 可能已經被終止執行了。" #: src/amule-remote-gui.cpp:415 msgid "Ready" msgstr "就緒" #: src/amule-remote-gui.cpp:593 src/TransferWnd.cpp:340 msgid "All" msgstr "全部" #: src/amule-remote-gui.cpp:639 #, c-format msgid "Can't create directory '%s' for category '%s', keeping directory '%s'." msgstr "無法建立 %s 目錄 ( %s 分類用),繼續使用 %s 目錄。" #: src/amule-remote-gui.cpp:1351 src/BaseClient.cpp:1783 #: src/BaseClient.cpp:2311 src/BaseClient.cpp:2327 src/BaseClient.cpp:2622 #: src/ClientDetailDialog.cpp:80 src/ClientDetailDialog.cpp:81 #: src/ClientDetailDialog.cpp:114 src/ClientDetailDialog.cpp:115 #: src/ClientDetailDialog.cpp:125 src/DataToText.cpp:54 src/DataToText.cpp:70 #: src/DataToText.cpp:80 src/DataToText.cpp:116 src/DataToText.cpp:137 #: src/DownloadListCtrl.cpp:1081 src/DownloadListCtrl.cpp:1094 #: src/DownloadListCtrl.cpp:1105 src/ExternalConn.cpp:441 #: src/FileDetailDialog.cpp:129 src/GenericClientListCtrl.cpp:1050 #: src/GenericClientListCtrl.cpp:1061 src/GenericClientListCtrl.cpp:1071 #: src/HTTPDownload.cpp:83 src/KnownFile.cpp:919 src/KnownFile.cpp:925 #: src/MuleTrayIcon.cpp:365 src/PartFile.cpp:2526 src/PartFile.cpp:2532 #: src/Server.cpp:133 src/Server.cpp:208 src/Statistics.cpp:972 msgid "Unknown" msgstr "不明" #: src/BaseClient.cpp:1374 #, c-format msgid "Failed to retrieve shared files from user '%s'" msgstr "無法從使用者 %s 取得分享檔案清單" #: src/BaseClient.cpp:1586 msgid "Searching buddy for lowid connection" msgstr "搜尋 LowID 連線好友" #: src/BaseClient.cpp:1800 #, c-format msgid " (Fake eMule version %#x)" msgstr " (假 eMule 版本 %#x)" #: src/BaseClient.cpp:1811 msgid " (Fake eMule)" msgstr " (假 eMule)" #: src/BaseClient.cpp:1813 msgid "xMule (Fake eMule)" msgstr "xMule (假 eMule)" #: src/BaseClient.cpp:1852 #, c-format msgid "1.x (based on eMule v0.%u)" msgstr "1.x (源自 eMule v0.%u)" #: src/BaseClient.cpp:2025 #, c-format msgid "NickName: %s ID: %u" msgstr "暱稱:%s ID:%u" #: src/BaseClient.cpp:2027 #, c-format msgid "Requested: %s\n" msgstr "已要求:%s\n" #: src/BaseClient.cpp:2029 #, c-format msgid "Filestats for this session: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for this session: Accepted %d of %d requests, %s transferred\n" msgstr[0] "本次:共接受 %d/%d 個要求,已傳送 %s\n" #: src/BaseClient.cpp:2032 #, c-format msgid "Filestats for all sessions: Accepted %d of %d request, %s transferred\n" msgid_plural "" "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n" msgstr[0] "總計:共接受 %d/%d 個要求,已傳送 %s\n" #: src/BaseClient.cpp:2035 msgid "Requested unknown file" msgstr "已要求不明檔案" #: src/BaseClient.cpp:2700 #, c-format msgid "Message filtered from '%s' (IP:%s)" msgstr "來自 %s (IP:%s) 的訊息被過濾掉了" #: src/BaseClient.cpp:2807 #, c-format msgid "New message from '%s' (IP:%s)" msgstr "來自 %s (IP:%s) 的新訊息" #: src/BaseClient.cpp:2899 #, c-format msgid "" "User %s (%u) requested sharedfiles-list for not existing directory '%s' -> " "Ignored" msgstr "使用者 %s (%u) 要求不存在的目錄 %s 的分享檔案清單 -> 已忽略" #: src/CanceledFileList.cpp:54 src/KnownFileList.cpp:86 #, c-format msgid "WARNING: %s cannot be opened." msgstr "警告:無法開啟 %s 。" #: src/CanceledFileList.cpp:61 msgid "WARNING: Canceled file list corrupted, contains invalid header." msgstr "警告:已取消檔案清單損壞,內有無效標頭。" #: src/CanceledFileList.cpp:81 src/KnownFileList.cpp:117 #, c-format msgid "IO error while reading %s file: %s" msgstr "讀取 %s 時發生 IO 錯誤:%s" #: src/CanceledFileList.cpp:104 src/KnownFileList.cpp:165 #, c-format msgid "Error while saving %s file: %s" msgstr "儲存 %s 時發生錯誤:%s" #: src/CaptchaDialog.cpp:44 msgid "Enter Captcha" msgstr "輸入圖形驗證碼" #: src/CatDialog.cpp:60 src/DownloadListCtrl.cpp:693 src/muuli_wdr.cpp:244 #: src/SearchListCtrl.cpp:627 src/TransferWnd.cpp:335 msgid "Category" msgstr "分類" #: src/CatDialog.cpp:87 msgid "New Category" msgstr "新分類" #: src/CatDialog.cpp:125 msgid "Choose a folder for incoming files" msgstr "請選擇新進檔案資料夾" #: src/CatDialog.cpp:140 msgid "You must specify a name for the category!" msgstr "請輸入此分類的名稱!" #: src/CatDialog.cpp:150 msgid "You must specify a path for the category!" msgstr "請輸入此分類的路徑!" #: src/CatDialog.cpp:162 msgid "" "Failed to create incoming dir for category. Please specify a valid path!" msgstr "無法建立該分類的目錄。請輸入有效的路徑!" #: src/ChatSelector.cpp:129 #, c-format msgid "Chat-Session Started: %s (%s:%u) - %s %s" msgstr "已開始交談:%s (%s:%u) - %s %s" #: src/ChatSelector.cpp:208 src/ChatSelector.cpp:288 msgid "*** Connected to Client ***" msgstr "*** 已連線到客戶端 ***" #: src/ChatSelector.cpp:251 msgid "*** Connecting to Client ***" msgstr "*** 正在連線到客戶端 ***" #: src/ChatSelector.cpp:282 msgid "*** Failed to Connect to client / Connection lost ***" msgstr "*** 無法連線到客戶端 / 連線中斷 ***" #: src/ChatSelector.cpp:335 msgid "" "*** You have passed the captcha check and the user has received your " "message. ***" msgstr "*** 您已通過圖形驗證,使用者已收到您的訊息。 ***" #: src/ChatSelector.cpp:336 msgid "" "*** Your response to the captcha was wrong and your message has been " "ignored. You can request a new captcha by sending a new message. ***" msgstr "" "*** 您輸入的驗證碼不正確,訊息將被忽略。要重傳送訊息,請重新輸入圖形驗證碼。 " "***" #: src/ChatWnd.cpp:99 msgid "Chat" msgstr "交談" #: src/ChatWnd.cpp:101 src/MuleNotebook.cpp:168 msgid "Close tab" msgstr "關閉分頁" #: src/ChatWnd.cpp:102 src/MuleNotebook.cpp:169 msgid "Close all tabs" msgstr "關閉所有分頁" #: src/ChatWnd.cpp:103 src/MuleNotebook.cpp:170 msgid "Close other tabs" msgstr "關閉其它分頁" #: src/ChatWnd.cpp:107 src/GenericClientListCtrl.cpp:587 msgid "Add to Friends" msgstr "加入好友" #: src/ClientCreditsList.cpp:158 #, c-format msgid "Creditfile loaded, %u client is known" msgid_plural "Creditfile loaded, %u clients are known" msgstr[0] "積分檔已載入,有 %u 個已知客戶端" #: src/ClientCreditsList.cpp:161 #, c-format msgid " - Credits expired for %u client!" msgid_plural " - Credits expired for %u clients!" msgstr[0] " - %u 個客戶端的積分已過期!" #: src/ClientCreditsList.cpp:305 msgid "No 'cryptkey.dat' file found, creating." msgstr "找不到 crytkey.dat,正在建立新的。" #: src/ClientDetailDialog.cpp:49 msgid "Client Details" msgstr "客戶端詳細資訊" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:169 src/ServerWnd.cpp:179 #: src/utils/wxCas/src/onlinesig.cpp:260 msgid "LowID" msgstr "LowID" #: src/ClientDetailDialog.cpp:100 src/ServerWnd.cpp:182 #: src/utils/wxCas/src/onlinesig.cpp:258 msgid "HighID" msgstr "HighID" #: src/ClientDetailDialog.cpp:121 msgid "Enabled" msgstr "已啟用" #: src/ClientDetailDialog.cpp:122 msgid "Supported" msgstr "已支援" #: src/ClientDetailDialog.cpp:123 src/ClientRef.cpp:192 msgid "Not supported" msgstr "不支援" #: src/ClientDetailDialog.cpp:124 msgid "Disabled" msgstr "已停用" #: src/ClientDetailDialog.cpp:131 src/ServerWnd.cpp:163 src/ServerWnd.cpp:210 #: src/TextClient.cpp:719 msgid "Connected" msgstr "已連線" #: src/ClientDetailDialog.cpp:133 src/ServerWnd.cpp:210 msgid "Disconnected" msgstr "已中斷連線" #: src/ClientDetailDialog.cpp:155 src/ClientDetailDialog.cpp:159 #: src/DownloadListCtrl.cpp:964 src/GenericClientListCtrl.cpp:879 #: src/GenericClientListCtrl.cpp:886 #, c-format msgid "%.1f kB/s" msgstr "%.1f KB/s" #: src/ClientRef.cpp:196 msgid "Not complete" msgstr "未完成" #: src/ClientRef.cpp:198 msgid "Bad Guy" msgstr "壞蛋" #: src/ClientRef.cpp:200 msgid "Verified - OK" msgstr "驗證通過" #: src/ClientRef.cpp:203 msgid "Not Available" msgstr "N/A" #: src/ClientTCPSocket.cpp:832 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Accepted" msgstr "使用者 %s (%u) 要求您的分享檔案清單 -> 已接受" #: src/ClientTCPSocket.cpp:853 #, c-format msgid "User %s (%u) requested your sharedfiles-list -> Denied" msgstr "使用者 %s (%u) 要求您的分享檔案清單 -> 已拒絕" #: src/ClientTCPSocket.cpp:885 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Accepted" msgstr "使用者 %s (%u) 要求您的分享目錄清單 -> 接受" #: src/ClientTCPSocket.cpp:891 #, c-format msgid "User %s (%u) requested your shareddirectories-list -> Denied" msgstr "使用者 %s (%u) 要求您的分享目錄清單 -> 拒絕" #: src/ClientTCPSocket.cpp:916 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted" msgstr "使用者 %s (%u) 要求目錄 %s 的分享檔案清單 -> 已接受" #: src/ClientTCPSocket.cpp:921 #, c-format msgid "" "User %s (%u) requested your sharedfiles-list for directory '%s' -> denied" msgstr "使用者 %s (%u) 要求目錄 %s 的分享檔案清單 -> 已拒絕" #: src/ClientTCPSocket.cpp:940 #, c-format msgid "User %s (%u) shares directory '%s'" msgstr "使用者 %s (%u) 分享的目錄 %s" #: src/ClientTCPSocket.cpp:955 #, c-format msgid "User %s (%u) sent unrequested shared dirs." msgstr "使用者 %s (%u) 傳送了未要求的分享目錄。" #: src/ClientTCPSocket.cpp:970 #, c-format msgid "User %s (%u) sent sharedfiles-list for directory '%s'" msgstr "使用者 %s (%u) 傳送了目錄 %s 內的分享檔案清單" #: src/ClientTCPSocket.cpp:977 #, c-format msgid "User %s (%u) finished sending sharedfiles-list" msgstr "使用者 %s (%u) 已傳送分享檔案清單" #: src/ClientTCPSocket.cpp:982 #, c-format msgid "User %s (%u) sent unwanted sharedfiles-list" msgstr "使用者 %s (%u) 傳送了未經要求的分享檔案清單" #: src/ClientTCPSocket.cpp:994 #, c-format msgid "User %s (%u) denied access to shared directories/files list" msgstr "使用者 %s (%u) 拒絕傳送分享檔案/目錄清單" #: src/CommentDialog.cpp:35 src/CommentDialogLst.cpp:47 msgid "File Comments" msgstr "檔案註解" #: src/CommentDialogLst.cpp:55 src/FriendListCtrl.cpp:60 msgid "Username" msgstr "使用者名稱" #: src/CommentDialogLst.cpp:56 src/DownloadListCtrl.cpp:159 #: src/FileDetailListCtrl.cpp:42 src/SearchListCtrl.cpp:87 #: src/SharedFilesCtrl.cpp:102 msgid "File Name" msgstr "檔案名稱" #: src/CommentDialogLst.cpp:57 msgid "Rating" msgstr "評價" #: src/CommentDialogLst.cpp:58 msgid "Comment" msgstr "註解" #: src/CommentDialogLst.cpp:103 src/muuli_wdr.cpp:891 msgid "No comments" msgstr "沒有註解" #: src/CommentDialogLst.cpp:105 #, c-format msgid "%u comment" msgid_plural "%u comments" msgstr[0] "%u 個註解" #: src/CorruptionBlackBox.cpp:227 #, c-format msgid "" "Banned client %s for sending %s corrupt data of %s total for the file '%s'" msgstr "已封鎖客戶端 %s:因傳送 %s (總計 %s ) 損壞資料 (檔案 %s )" #: src/DataToText.cpp:37 msgid "Auto [Lo]" msgstr "自動 [低]" #: src/DataToText.cpp:38 msgid "Auto [No]" msgstr "自動 [普]" #: src/DataToText.cpp:39 msgid "Auto [Hi]" msgstr "自動 [高]" #: src/DataToText.cpp:43 src/SharedFilesCtrl.cpp:137 msgid "Very low" msgstr "極低" #: src/DataToText.cpp:44 src/DownloadListCtrl.cpp:646 src/muuli_wdr.cpp:2393 #: src/ServerListCtrl.cpp:236 src/ServerListCtrl.cpp:399 #: src/SharedFilesCtrl.cpp:138 msgid "Low" msgstr "低" #: src/DataToText.cpp:45 src/DownloadListCtrl.cpp:647 src/muuli_wdr.cpp:2394 #: src/ServerListCtrl.cpp:237 src/ServerListCtrl.cpp:400 #: src/SharedFilesCtrl.cpp:139 msgid "Normal" msgstr "普通" #: src/DataToText.cpp:46 src/DownloadListCtrl.cpp:648 src/muuli_wdr.cpp:2395 #: src/ServerListCtrl.cpp:238 src/ServerListCtrl.cpp:401 #: src/SharedFilesCtrl.cpp:140 msgid "High" msgstr "高" #: src/DataToText.cpp:47 src/SharedFilesCtrl.cpp:141 msgid "Very High" msgstr "極高" #: src/DataToText.cpp:48 src/SharedFilesCtrl.cpp:142 msgid "Release" msgstr "釋放" #: src/DataToText.cpp:62 msgid "Asking" msgstr "正在要求" #: src/DataToText.cpp:63 msgid "Connecting via server" msgstr "正在經伺服器連線" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:981 msgid "Queue Full" msgstr "等候區已滿" #: src/DataToText.cpp:64 src/GenericClientListCtrl.cpp:997 #: src/KnownFile.cpp:1553 msgid "On Queue" msgstr "等候中" #: src/DataToText.cpp:65 src/libs/ec/cpp/ECSpecialTags.cpp:53 #: src/OtherFunctions.cpp:681 src/PartFile.cpp:3720 src/TransferWnd.cpp:348 msgid "Downloading" msgstr "正在下載" #: src/DataToText.cpp:66 msgid "Receiving hashset" msgstr "正在接收 hash 值組" #: src/DataToText.cpp:67 msgid "No needed parts" msgstr "沒有需要的部份" #: src/DataToText.cpp:68 msgid "Cannot connect LowID to LowID" msgstr "無法由 LowID 連線至 LowID" #: src/DataToText.cpp:69 msgid "Too many connections" msgstr "連線數過多" #: src/DataToText.cpp:71 msgid "Connecting via Kad" msgstr "正在用 Kad 連線" #: src/DataToText.cpp:72 msgid "Too many Kad connections" msgstr "Kad 連線數過多" #: src/DataToText.cpp:73 msgid "Banned" msgstr "已封鎖" #: src/DataToText.cpp:74 msgid "Connection Error" msgstr "連線錯誤" #: src/DataToText.cpp:75 msgid "Remote Queue Full" msgstr "遠端等候區已滿" #: src/DataToText.cpp:105 msgid "Old MLDonkey" msgstr "舊 MLDonkey" #: src/DataToText.cpp:108 msgid "New MLDonkey" msgstr "新 MLDonkey" #: src/DataToText.cpp:118 msgid "eMule Compatible" msgstr "eMule 相容版" #: src/DataToText.cpp:128 msgid "Local Server" msgstr "本地伺服器" #: src/DataToText.cpp:129 msgid "Remote Server" msgstr "遠端伺服器" #: src/DataToText.cpp:130 src/muuli_wdr.cpp:198 src/muuli_wdr.cpp:3287 #: src/SearchDlg.cpp:109 src/TextClient.cpp:716 msgid "Kad" msgstr "Kad" #: src/DataToText.cpp:131 msgid "Source Exchange" msgstr "來源交換" #: src/DataToText.cpp:132 msgid "Passive" msgstr "被動" #: src/DataToText.cpp:133 msgid "Link" msgstr "連結" #: src/DataToText.cpp:134 msgid "Source Seeds" msgstr "來源種子" #: src/DataToText.cpp:135 msgid "Search Result" msgstr "搜尋結果" #: src/DataToText.cpp:145 src/DownloadListCtrl.cpp:162 #: src/OtherFunctions.cpp:679 src/TransferWnd.cpp:346 msgid "Completed" msgstr "已完成" #: src/DataToText.cpp:146 msgid "In progress" msgstr "正在處理" #: src/DataToText.cpp:147 msgid "ERROR: Out of diskspace" msgstr "錯誤:磁碟空間不足" #: src/DataToText.cpp:148 msgid "ERROR: Partmet not found" msgstr "錯誤:找不到暫存檔資訊檔案" #: src/DataToText.cpp:149 msgid "ERROR: IO error!" msgstr "錯誤:IO 錯誤!" #: src/DataToText.cpp:150 msgid "ERROR: Failed!" msgstr "錯誤:失敗!" #: src/DataToText.cpp:151 src/SearchListCtrl.cpp:1011 msgid "Queued" msgstr "待處理" #: src/DataToText.cpp:152 msgid "Already downloading" msgstr "已在下載清單中" #: src/DataToText.cpp:153 msgid "Unknown or bad tempfile format." msgstr "不明或錯誤的暫存檔格式。" #: src/DownloadListCtrl.cpp:158 msgid "Part" msgstr "部份" #: src/DownloadListCtrl.cpp:160 src/PartFileConvertDlg.cpp:93 #: src/SearchListCtrl.cpp:88 src/SharedFilesCtrl.cpp:103 msgid "Size" msgstr "大小" #: src/DownloadListCtrl.cpp:161 src/muuli_wdr.cpp:3362 msgid "Transferred" msgstr "已傳輸" #: src/DownloadListCtrl.cpp:163 src/SourceListCtrl.cpp:30 msgid "Speed" msgstr "速度" #: src/DownloadListCtrl.cpp:164 msgid "Progress" msgstr "進度" #: src/DownloadListCtrl.cpp:165 src/FileDetailListCtrl.cpp:43 #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:89 msgid "Sources" msgstr "來源" #: src/DownloadListCtrl.cpp:166 src/DownloadListCtrl.cpp:651 #: src/ServerListCtrl.cpp:94 src/ServerListCtrl.cpp:403 #: src/SharedFilesCtrl.cpp:105 src/SharedFilesCtrl.cpp:145 msgid "Priority" msgstr "優先等級" #: src/DownloadListCtrl.cpp:167 src/PartFile.cpp:3768 #: src/SearchListCtrl.cpp:92 msgid "Status" msgstr "狀態" #: src/DownloadListCtrl.cpp:168 msgid "Time Remaining" msgstr "剩餘時間" #: src/DownloadListCtrl.cpp:169 msgid "Last Seen Complete" msgstr "最後看到完整檔案" #: src/DownloadListCtrl.cpp:170 msgid "Last Reception" msgstr "最後一次下載" #: src/DownloadListCtrl.cpp:411 msgid "Are you sure that you wish to delete the selected file?" msgstr "您確定要刪除這個檔案嗎?" #: src/DownloadListCtrl.cpp:413 msgid "Are you sure that you wish to delete the selected files?" msgstr "您確定要刪除這些檔案嗎?" #: src/DownloadListCtrl.cpp:554 src/SharedFilesCtrl.cpp:203 #, c-format msgid "" "Feedback from: %s (%s)\n" "\n" msgstr "" "%s (%s) 回覆訊息\n" "\n" #: src/DownloadListCtrl.cpp:649 src/muuli_wdr.cpp:2396 #: src/SharedFilesCtrl.cpp:143 msgid "Auto" msgstr "自動" #: src/DownloadListCtrl.cpp:653 src/TransferWnd.cpp:376 msgid "&Stop" msgstr "停止(&S)" #: src/DownloadListCtrl.cpp:654 src/TransferWnd.cpp:377 msgid "&Pause" msgstr "暫停(&P)" #: src/DownloadListCtrl.cpp:655 src/TransferWnd.cpp:378 msgid "&Resume" msgstr "續傳(&R)" #: src/DownloadListCtrl.cpp:656 msgid "C&lear completed" msgstr "清除已傳完成的(&l)" #: src/DownloadListCtrl.cpp:662 msgid "Swap every A4AF to this file now" msgstr "立即轉移所有 A4AF 到這個檔案" #: src/DownloadListCtrl.cpp:664 msgid "Swap every A4AF to this file (Auto)" msgstr "自動轉移所有 A4AF 到這個檔案" #: src/DownloadListCtrl.cpp:669 msgid "Swap every A4AF to any other file now" msgstr "立即轉移所有 A4AF 到其它檔案" #: src/DownloadListCtrl.cpp:672 msgid "Extended Options" msgstr "擴充選項" #: src/DownloadListCtrl.cpp:677 src/DownloadListCtrl.cpp:737 msgid "Preview" msgstr "預覽" #: src/DownloadListCtrl.cpp:678 msgid "Show file &details" msgstr "顯示檔案詳細資訊(&D)" #: src/DownloadListCtrl.cpp:679 src/muuli_wdr.cpp:768 msgid "Show all comments" msgstr "顯示所有註解" #: src/DownloadListCtrl.cpp:684 msgid "Copy magnet URI to clipboard" msgstr "複製 magnet 網址到剪貼簿" #: src/DownloadListCtrl.cpp:686 src/SharedFilesCtrl.cpp:164 msgid "Copy eD2k &link to clipboard" msgstr "複製 eD2k 連結到剪貼簿(&L)" #: src/DownloadListCtrl.cpp:688 src/SharedFilesCtrl.cpp:171 msgid "Copy feedback to clipboard" msgstr "複製傳輸狀況到剪貼簿" #: src/DownloadListCtrl.cpp:697 msgid "unassign" msgstr "取消" #: src/DownloadListCtrl.cpp:704 msgid "Assign to category" msgstr "分類" #: src/DownloadListCtrl.cpp:740 msgid "&Open the file" msgstr "開啟檔案(&O)" #: src/DownloadListCtrl.cpp:812 src/SharedFilesCtrl.cpp:686 msgid "Enter new name for this file:" msgstr "請輸入新檔案名稱:" #: src/DownloadListCtrl.cpp:813 src/SharedFilesCtrl.cpp:687 msgid "File rename" msgstr "更改檔名" #: src/DownloadListCtrl.cpp:1092 src/DownloadListCtrl.cpp:1103 msgid "%y/%m/%d %H:%M:%S" msgstr "%y/%m/%d %H:%M:%S" #: src/DownloadListCtrl.cpp:1273 #, c-format msgid "Downloads (%i)" msgstr "下載 (%i)" #: src/DownloadListCtrl.cpp:1428 msgid "" "To prevent this warning to show up in every preview,\n" "set your preferred video player in preferences (default is mplayer)." msgstr "" "請在偏好設定中設定影片播放器 (預設為 mplayer),\n" "以避免這個警告訊息繼續出現。" #: src/DownloadListCtrl.cpp:1429 msgid "File preview" msgstr "檔案預覽" #: src/DownloadListCtrl.cpp:1477 #, c-format msgid "ERROR: Failed to execute external media-player! Command: `%s'" msgstr "錯誤:無法執行媒體播放器!指令:「 %s 」" #: src/DownloadQueue.cpp:103 #, c-format msgid "Saving PartFile %u of %u" msgstr "正在儲存暫存檔 (%u / %u)" #: src/DownloadQueue.cpp:106 msgid "All PartFiles Saved." msgstr "已儲存所有暫存檔。" #: src/DownloadQueue.cpp:113 #, c-format msgid "Loading temp files from %s." msgstr "正在從 %s 載入暫存檔。" #: src/DownloadQueue.cpp:132 #, c-format msgid "Loading PartFile %u of %u" msgstr "正在載入暫存檔 (%u / %u)" #: src/DownloadQueue.cpp:154 msgid "" "ERROR: Failed to load backup file. Search http://forum.amule.org for .part." "met recovery solutions." msgstr "" "錯誤:無法載入備份檔案,請到 http://forum.amule.org 搜尋復原 .part.met 的方" "法。" #: src/DownloadQueue.cpp:163 msgid "All PartFiles Loaded." msgstr "已載入所有暫存檔。" #: src/DownloadQueue.cpp:166 msgid "No part files found" msgstr "找不到暫存檔" #: src/DownloadQueue.cpp:168 #, c-format msgid "Found %u part file" msgid_plural "Found %u part files" msgstr[0] "找到 %u 個暫存檔" #: src/DownloadQueue.cpp:244 src/DownloadQueue.cpp:1470 msgid "Filesystem for Temp directory cannot handle large files." msgstr "設定存放暫存檔的目錄,檔案系統不支援大容量檔案。" #: src/DownloadQueue.cpp:247 src/DownloadQueue.cpp:1473 msgid "Filesystem for Incoming directory cannot handle large files." msgstr "設定存放新進檔案的目錄,檔案系統不支援大容量檔案。" #: src/DownloadQueue.cpp:377 #, c-format msgid "Downloading %s" msgstr "下載 %s" #: src/DownloadQueue.cpp:385 #, c-format msgid "You are already trying to download the file '%s'" msgstr "您已經在下載檔案 %s 了" #: src/DownloadQueue.cpp:397 #, c-format msgid "You already have the file '%s'" msgstr "您已經有檔案 %s" #: src/DownloadQueue.cpp:402 #, c-format msgid "You are already trying to download the file %s" msgstr "您已經在下載檔案 %s 了" #: src/DownloadQueue.cpp:1404 #, c-format msgid "Cannot convert magnet link to eD2k: %s" msgstr "無法將 magnet 連結轉換為 eD2k: %s" #: src/DownloadQueue.cpp:1412 #, c-format msgid "Unknown protocol of link: %s" msgstr "有不明協定的連結:%s" #: src/DownloadQueue.cpp:1433 #, c-format msgid "Invalid eD2k link! ERROR: %s" msgstr "無效的 eD2k 連結!錯誤:%s " #: src/ExternalConn.cpp:261 msgid "Client sent packet after authentication failed." msgstr "客戶端在驗證失敗後傳送封包。" #: src/ExternalConn.cpp:279 msgid "External connection closed." msgstr "已關閉外部連線。" #: src/ExternalConn.cpp:318 msgid "External connections disabled due to empty password!" msgstr "未設定密碼,外部連線已被停用!" #: src/ExternalConn.cpp:341 msgid "External connections disabled in config file" msgstr "已在設定檔中停用外部連線" #: src/ExternalConn.cpp:408 msgid "New external connection accepted" msgstr "已接受新的外部連線" #: src/ExternalConn.cpp:411 msgid "ERROR: couldn't accept a new external connection" msgstr "錯誤:無法接受新的外部連線" #: src/ExternalConn.cpp:429 msgid "External connection refused due to empty password in preferences!" msgstr "由於偏好設定中未設定密碼,外部連線已被拒絕!" #: src/ExternalConn.cpp:440 #, c-format msgid "Connecting client: %s %s" msgstr "連線中客戶端:%s %s" #: src/ExternalConn.cpp:442 msgid "Unknown version" msgstr "不明版本" #: src/ExternalConn.cpp:452 msgid "" "Incorrect EC version ID, there might be binary incompatibility. Use core and " "remote from same snapshot." msgstr "" "不正確的外部連線版本 ID,這將導致執行檔不相容,請使用相同版本的主程式和遠端程" "式。" #: src/ExternalConn.cpp:457 msgid "" "You cannot connect to a release version from an arbitrary development " "snapshot! *sigh* possible crash prevented" msgstr "" "您不能用開發中版本 (SVN) 連線到正式發行版,這是為了避免系統遭受不確定的損害" #: src/ExternalConn.cpp:481 msgid "Invalid protocol version." msgstr "協定版本無效。" #: src/ExternalConn.cpp:486 msgid "Missing protocol version tag." msgstr "缺少協定版本標記。" #: src/ExternalConn.cpp:493 msgid "Authentication failed: invalid hash specified as EC password." msgstr "驗證失敗:指定無效的 hash 值做為外部連線密碼。" #: src/ExternalConn.cpp:510 msgid "Authentication failed: wrong password." msgstr "驗證失敗:密碼錯誤。" #: src/ExternalConn.cpp:512 msgid "Authentication failed: missing password." msgstr "驗證失敗:沒有密碼。" #: src/ExternalConn.cpp:522 msgid "Invalid request, please authenticate first." msgstr "無效的要求,請先通過登入驗證。" #: src/ExternalConn.cpp:527 msgid "Access granted." msgstr "登入成功。" #: src/ExternalConn.cpp:535 #, c-format msgid "Sent error message \"%s\" to client." msgstr "傳送錯誤訊息「%s」給客戶端。" #: src/ExternalConn.cpp:538 #, c-format msgid "Unauthorized access attempt from %s. Connection closed." msgstr "%s 試圖非法登入,已關閉連線。" #: src/ExternalConn.cpp:804 #, c-format msgid "Remote PartFile command failed: FileHash not found: %s" msgstr "無法執行對遠端暫存檔的指令:找不到檔案 hash 值:%s " #: src/ExternalConn.cpp:806 #, c-format msgid "FileHash not found: %s" msgstr "找不到檔案 hash 值:%s " #: src/ExternalConn.cpp:853 src/ExternalConn.cpp:935 src/ExternalConn.cpp:1006 msgid "OOPS! OpCode processing error!" msgstr "糟糕!指令碼處理錯誤!" #: src/ExternalConn.cpp:881 msgid "Server not added" msgstr "伺服器未被加入" #: src/ExternalConn.cpp:899 #, c-format msgid "server not found: %s" msgstr "找不到伺服器:%s " #: src/ExternalConn.cpp:915 msgid "need to define server to be removed" msgstr "必須指定要刪除的伺服器" #: src/ExternalConn.cpp:929 msgid "eD2k is disabled in preferences." msgstr "eD2k 網路已在偏好設定中被停用了。" #: src/ExternalConn.cpp:1107 msgid "Search in progress. Refetch results in a moment!" msgstr "搜尋中,請稍候!" #: src/ExternalConn.cpp:1113 msgid "WebSearch from remote interface makes no sense." msgstr "從遠端界面使用網頁搜尋功能沒有意義。" #: src/ExternalConn.cpp:1311 msgid "No points for graph." msgstr "此圖沒有參考點。" #: src/ExternalConn.cpp:1320 msgid "Your client is not configured for this detail level." msgstr "您的客戶端並沒有設定這個細部等級。" #: src/ExternalConn.cpp:1347 msgid "External Connection: shutdown requested" msgstr "外部連線:必須關閉" #: src/ExternalConn.cpp:1359 msgid "Already shutting down." msgstr "已經在關閉中。" #: src/ExternalConn.cpp:1371 #, c-format msgid "ExternalConn: adding link '%s'." msgstr "外部連線:正在加入連結 %s 。" #: src/ExternalConn.cpp:1377 msgid "Invalid link or already on list." msgstr "無效連結或已在清單中。" #: src/ExternalConn.cpp:1447 msgid "File not found." msgstr "找不到檔案。" #: src/ExternalConn.cpp:1452 msgid "Invalid file name." msgstr "無效的檔名。" #: src/ExternalConn.cpp:1460 msgid "Unable to rename file." msgstr "無法重新命名。" #: src/ExternalConn.cpp:1758 src/ExternalConn.cpp:1785 msgid "Kad is disabled in preferences." msgstr "Kad 網路已在偏好設定中被停用了。" #: src/ExternalConn.cpp:1797 msgid "Already connected to eD2k." msgstr "eD2k 網路已連線。" #: src/ExternalConn.cpp:1800 msgid "Connecting to eD2k..." msgstr "eD2k 連線中..." #: src/ExternalConn.cpp:1808 msgid "Already connected to Kad." msgstr "Kad 網路已連線。" #: src/ExternalConn.cpp:1811 msgid "Connecting to Kad..." msgstr "Kad 連線中..." #: src/ExternalConn.cpp:1818 msgid "All networks are disabled." msgstr "所有網路都被停用了。" #: src/ExternalConn.cpp:1826 msgid "Disconnected from eD2k." msgstr "已中斷 eD2k 網路連線。" #: src/ExternalConn.cpp:1830 msgid "Disconnected from Kad." msgstr "已中斷 Kad 網路連線。" #: src/ExternalConn.cpp:1839 #, c-format msgid "External Connection: invalid opcode received: %#x" msgstr "外部連線:接收到無效的指令碼 - %#x" #: src/ExternalConn.cpp:1842 msgid "Invalid opcode (wrong protocol version?)" msgstr "無效的指令碼(協定版本錯誤?)" #: src/ExternalConnector.cpp:143 #, c-format msgid "Unknown extension '%s' for the '%s' command.\n" msgstr "不明的副檔名 %s 傳給指令「 %s 」。\n" #: src/ExternalConnector.cpp:145 #, c-format msgid "Unknown command '%s'.\n" msgstr "不明的指令「 %s 」。\n" #: src/ExternalConnector.cpp:157 msgid "" "\n" "This command cannot have an argument.\n" msgstr "" "\n" "這個指令不能有引數。\n" #: src/ExternalConnector.cpp:159 msgid "" "\n" "This command must have an argument.\n" msgstr "" "\n" "這個指令必須要有引數。\n" #: src/ExternalConnector.cpp:162 msgid "" "\n" "This command is incomplete, you must use one of the extensions below.\n" msgstr "" "\n" "這個指令不完整,您必須使用以下其中一個副檔名。\n" #: src/ExternalConnector.cpp:168 msgid "" "\n" "Available extensions:\n" msgstr "" "\n" "可用的副檔名:\n" #: src/ExternalConnector.cpp:170 msgid "Available commands:\n" msgstr "可用的指令:\n" #: src/ExternalConnector.cpp:187 #, c-format msgid "" "\n" "All commands are case insensitive.\n" "Type '%s ' to get detailed info on .\n" msgstr "" "\n" "所有指令都不區分大小寫。\n" "輸入「 %s <指令> 」取得 <指令> 的詳細資訊。\n" #: src/ExternalConnector.cpp:225 src/ExternalConnector.cpp:226 msgid "Exits from the application." msgstr "離開程式。" #: src/ExternalConnector.cpp:227 msgid "Show help." msgstr "顯示幫助。" #. TRANSLATORS: #. Do not translate the word 'help', it is a command to the program! #: src/ExternalConnector.cpp:230 msgid "" "To get help on a command, type 'help '.\n" "To get the full command list type 'help'.\n" msgstr "" "輸入「 help <指令> 」可顯示該指令的說明。\n" "輸入「 help 」可顯示所有指令一覽。\n" #: src/ExternalConnector.cpp:251 #, c-format msgid "" "\n" "Use '%s' for command list\n" "\n" msgstr "" "\n" "使用「 %s 」列出所有指令\n" "\n" #: src/ExternalConnector.cpp:281 msgid "Syntax error!" msgstr "語法錯誤!" #: src/ExternalConnector.cpp:284 msgid "Error processing command - should never happen! Report bug, please\n" msgstr "處理指令時發生意外錯誤!請提出錯誤報告\n" #: src/ExternalConnector.cpp:287 msgid "This command should not have any parameters." msgstr "這個指令不能有參數。" #: src/ExternalConnector.cpp:290 msgid "This command must have a parameter." msgstr "這個指令必須要有參數。" #: src/ExternalConnector.cpp:293 msgid "Invalid argument." msgstr "無效的引數。" #: src/ExternalConnector.cpp:296 msgid "This is an incomplete command." msgstr "不完整的指令。" #: src/ExternalConnector.cpp:305 #, c-format msgid "Type '%s' to get more help.\n" msgstr "輸入「 %s 」顯示更多協助資訊。\n" #: src/ExternalConnector.cpp:360 #, c-format msgid "This is %s %s %s\n" msgstr "這是 %s %s %s\n" #: src/ExternalConnector.cpp:362 #, c-format msgid "This is %s %s\n" msgstr "這是 %s %s\n" #: src/ExternalConnector.cpp:377 msgid "" "\n" "Creating client...\n" msgstr "" "\n" "正在建立客戶端...\n" #: src/ExternalConnector.cpp:401 #, c-format msgid "" "\n" "Ok, exiting %s...\n" msgstr "" "\n" "OK,正在離開 %s...\n" #: src/ExternalConnector.cpp:407 msgid "" "Cannot connect with an empty password.\n" "You must specify a password either in config file\n" "or on command-line, or enter one when asked.\n" "\n" "Exiting...\n" msgstr "" "不能使用空白密碼連線。\n" "您必須在設定檔或命令列中設定,\n" "或者在詢問時輸入。\n" "\n" "正在離開...\n" #: src/ExternalConnector.cpp:416 msgid "Show this help text." msgstr "顯示協助資訊。" #: src/ExternalConnector.cpp:419 msgid "Host where aMule is running. (default: localhost)" msgstr "執行 aMule 的主機。(預設:localhost)" #: src/ExternalConnector.cpp:422 msgid "aMule's port for External Connection. (default: 4712)" msgstr "aMule 的外部連線埠。 (預設:4712)" #: src/ExternalConnector.cpp:425 msgid "External Connection password." msgstr "外部連線密碼。" #: src/ExternalConnector.cpp:428 msgid "Read configuration from file." msgstr "從檔案讀取設定。" #: src/ExternalConnector.cpp:431 msgid "Do not print any output to stdout." msgstr "不顯示任何輸出訊息。" #: src/ExternalConnector.cpp:434 msgid "Be verbose - show also debug messages." msgstr "詳細顯示除錯資訊。" #: src/ExternalConnector.cpp:437 msgid "Sets program locale (language)." msgstr "設定程式的地區設定 (語言)。" #: src/ExternalConnector.cpp:440 msgid "Write command line options to config file." msgstr "把命令列選項寫入設定檔。" #: src/ExternalConnector.cpp:443 msgid "Creates config file based on aMule's config file." msgstr "使用 aMule 的設定檔建立新設定檔。" #: src/ExternalConnector.cpp:446 msgid "Print program version." msgstr "列出程式版本。" #: src/FileDetailDialog.cpp:60 msgid "File Details" msgstr "檔案詳細資訊" #: src/FileDetailDialog.cpp:113 #, c-format msgid "%.1f%% done" msgstr "完成 %.1f%%" #: src/FileDetailDialog.cpp:115 src/utils/wxCas/src/wxcasframe.cpp:1139 #: src/utils/wxCas/src/wxcasframe.cpp:1149 #, c-format msgid "%.2f kB/s" msgstr "%.2f KB/s" #: src/FriendList.cpp:123 msgid "Failed to open friend list file 'emfriends.met' for reading!" msgstr "無法開啟好友清單檔案 emfriends.met 供讀取!" #: src/FriendList.cpp:149 msgid "Failed to open friend list file 'emfriends.met' for writing!" msgstr "無法開啟好友清單檔案 emfriends.met 供寫入!" #: src/FriendList.cpp:249 msgid "CRITICAL - no client on StartChatSession" msgstr "重大錯誤 - 開始交談時沒有客戶端" #: src/FriendListCtrl.cpp:122 src/muuli_wdr.cpp:2833 src/muuli_wdr.cpp:3458 msgid "Friends" msgstr "好友" #: src/FriendListCtrl.cpp:126 src/GenericClientListCtrl.cpp:586 msgid "Show &Details" msgstr "顯示詳細資訊(&D)" #: src/FriendListCtrl.cpp:130 msgid "Add a friend" msgstr "加入好友" #: src/FriendListCtrl.cpp:133 msgid "Remove Friend" msgstr "移除好友" #: src/FriendListCtrl.cpp:134 msgid "Send &Message" msgstr "傳送訊息(&M)" #: src/FriendListCtrl.cpp:135 src/GenericClientListCtrl.cpp:597 msgid "View Files" msgstr "檢視檔案" #: src/FriendListCtrl.cpp:136 src/GenericClientListCtrl.cpp:589 msgid "Establish Friend Slot" msgstr "建立好友位置" #: src/FriendListCtrl.cpp:169 msgid "Are you sure that you wish to delete the selected friend?" msgstr "您確定要刪除這個好友嗎?" #: src/FriendListCtrl.cpp:171 msgid "Are you sure that you wish to delete the selected friends?" msgstr "您確定要刪除這些好友嗎?" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "" "You are not allowed to set more than one friendslot.\n" " Only one slot was assigned." msgstr "" "不允許設定超過一個好友位置。\n" " 只設定了一個位置。" #: src/FriendListCtrl.cpp:229 src/GenericClientListCtrl.cpp:530 msgid "Multiple selection" msgstr "多重選取" #: src/GenericClientListCtrl.cpp:547 msgid "Send message to user" msgstr "傳送訊息給使用者" #: src/GenericClientListCtrl.cpp:548 msgid "Message to send:" msgstr "傳送訊息:" #: src/GenericClientListCtrl.cpp:587 msgid "Remove from friends" msgstr "從好友中刪除" #: src/GenericClientListCtrl.cpp:598 msgid "Send message" msgstr "傳送訊息" #: src/GenericClientListCtrl.cpp:600 msgid "Swap to this file" msgstr "轉移到這個檔案" #: src/GenericClientListCtrl.cpp:943 msgid "A4AF" msgstr "A4AF" #: src/GenericClientListCtrl.cpp:995 #, c-format msgid "On Queue: %u (%i)" msgstr "QR:%u (%i)" #: src/GenericClientListCtrl.cpp:1005 src/GenericClientListCtrl.cpp:1034 msgid "Asked for another file" msgstr "已要求其它檔案 (A4AF)" #: src/GenericClientListCtrl.cpp:1024 msgid "Waiting for upload slot" msgstr "正在等待上傳位置" #: src/GenericClientListCtrl.cpp:1026 #, c-format msgid "On Queue: %u" msgstr "QR:%u" #: src/GenericClientListCtrl.cpp:1029 msgid "Uploading" msgstr "正在上傳" #: src/GenericClientListCtrl.cpp:1031 msgid "None" msgstr "無" #: src/GenericClientListCtrl.cpp:1089 src/ServerListCtrl.cpp:243 msgid "No" msgstr "否" #: src/GenericClientListCtrl.cpp:1091 src/ServerListCtrl.cpp:243 msgid "Yes" msgstr "是" #: src/HTTPDownload.cpp:57 msgid "Downloading..." msgstr "正在下載..." #: src/HTTPDownload.cpp:109 msgid "HTTP download cancelled" msgstr "已取消 HTTP 下載" #: src/HTTPDownload.cpp:205 #, c-format msgid "Unable to create destination file %s for download!" msgstr "無法建立要下載的目標檔案 %s !" #: src/HTTPDownload.cpp:210 msgid "The URL to download can't be empty" msgstr "要下載的網址不可空白" #: src/HTTPDownload.cpp:233 #, c-format msgid "The URL %s returned: %i - Error (%i)!" msgstr "網址 %s 傳回:%i - 錯誤 (%i)!" #: src/HTTPDownload.cpp:262 msgid "Critical error while writing downloaded file" msgstr "寫入下載檔案時發生重大錯誤" #: src/HTTPDownload.cpp:277 #, c-format msgid "Downloaded %d bytes" msgstr "已下載 %d B" #: src/HTTPDownload.cpp:281 #, c-format msgid "Expected %d bytes, but downloaded %d bytes" msgstr "原預計 %d B,但實際下載了 %d B" #: src/HTTPDownload.cpp:338 msgid "" "Invalid URL for HTTP download or HTTP redirection (did you forget " "'http://' ?)" msgstr "無效的 HTTP 下載網址或 HTTP 轉址 (您是否忘了在前面加「http://」?" #: src/HTTPDownload.cpp:381 msgid "Unable to connect to HTTP download server" msgstr "無法連線到 HTTP 下載伺服器" #: src/HTTPDownload.cpp:402 msgid "Invalid response from HTTP download server" msgstr "HTTP 下載伺服器傳來無效的回應" #: src/IP2Country.cpp:100 #, c-format msgid "Download new GeoIP.dat from %s" msgstr "從 %s 下載新的 GeoIP.dat" #: src/IP2Country.cpp:129 msgid "Download of GeoIP.dat file failed, aborting update." msgstr "無法下載 GeoIP.dat,停止更新。" #: src/IP2Country.cpp:135 src/IPFilter.cpp:500 #, c-format msgid "Failed to remove %s file, aborting update." msgstr "無法移除 %s 檔案,停止更新。" #: src/IP2Country.cpp:141 #, c-format msgid "Failed to rename %s file, aborting update." msgstr "無法重新命名 %s 檔案,停止更新。" #: src/IP2Country.cpp:147 src/IPFilter.cpp:506 #, c-format msgid "Successfully updated %s" msgstr "成功更新 %s" #: src/IP2Country.cpp:149 msgid "Error updating GeoIP.dat" msgstr "GeoIP.dat 更新錯誤" #: src/IP2Country.cpp:154 src/IPFilter.cpp:512 src/ServerList.cpp:862 #, c-format msgid "Failed to download %s from %s" msgstr "無法下載 %s (從 %s)" #: src/IP2Country.cpp:173 #, c-format msgid "Failed to load country data for '%s'." msgstr "無法自 %s 下載國家資料。" #: src/IPFilter.cpp:113 msgid "Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'." msgstr "正在載入 IP 過濾檔 ipfilter.dat 與 ipfilter_static.dat 。" #: src/IPFilter.cpp:299 #, c-format msgid "Failed to load ipfilter.dat file '%s', unknown format encountered." msgstr "無法載入 ipfilter.dat 檔案 %s,為不明格式。" #: src/IPFilter.cpp:325 #, c-format msgid "Failed to load ipfilter.dat file '%s', could not open file." msgstr "無法載入 ipfilter.dat 檔案 %s,無法開啟檔案。" #: src/IPFilter.cpp:329 #, c-format msgid "Loaded %u IP-range from '%s'." msgid_plural "Loaded %u IP-ranges from '%s'." msgstr[0] "已載入 %u 個 IP 區段 (從 %s )。" #: src/IPFilter.cpp:331 #, c-format msgid "%u malformed line was discarded." msgid_plural "%u malformed lines were discarded." msgstr[0] "放棄 %u 行錯誤資料。" #: src/IPFilter.cpp:503 #, c-format msgid "Failed to rename new %s file, aborting update." msgstr "無法重新命名新的 %s 檔案,停止更新。" #: src/IPFilter.cpp:534 msgid "IP filter is ready" msgstr "IP 過濾表已備妥" #: src/KadDlg.cpp:86 msgid "" "Bootstrap from \n" "known clients" msgstr "從已知客戶端啓動" #: src/KadDlg.cpp:151 #, c-format msgid "Nodes (%u)" msgstr "節點 (%u)" #: src/KadDlg.cpp:183 msgid "Invalid ip to bootstrap" msgstr "無效 IP" #: src/KadDlg.cpp:189 msgid "Invalid port to bootstrap" msgstr "無效的通訊埠" #: src/KadDlg.cpp:193 msgid "Please fill all fields required" msgstr "請填寫所有必要資訊" #: src/KadDlg.cpp:212 msgid "Are you sure you want to download a new nodes.dat file?\n" msgstr "確定要下載新的 node.dat 檔案嗎?\n" #: src/KadDlg.cpp:213 msgid "" "Doing so will remove your current nodes and restart Kademlia connection." msgstr "這樣將會刪除您現有節點並重新啓動 Kad 連線。" #: src/KadDlg.cpp:214 msgid "Continue?" msgstr "繼續?" #: src/kademlia/kademlia/SearchManager.cpp:125 msgid "Kademlia: search keyword too short" msgstr "Kad:關鍵字太短" #: src/kademlia/kademlia/SearchManager.cpp:130 #, c-format msgid "Keyword for search: %s" msgstr "搜尋的關鍵字:%s " #: src/kademlia/kademlia/SearchManager.cpp:138 msgid "Kademlia: Search keyword is already on search list: " msgstr "Kad:關鍵字已在搜尋清單中:" #: src/kademlia/routing/RoutingZone.cpp:171 msgid "" "Failed to read nodes.dat file - too old. This version (0) is not supported " "anymore." msgstr "無法讀取 nodes.dat 檔案 - 版本 (0) 太舊,已經不再支援了。" #: src/kademlia/routing/RoutingZone.cpp:209 #: src/kademlia/routing/RoutingZone.cpp:284 #, c-format msgid "Read %u Kad contact" msgid_plural "Read %u Kad contacts" msgstr[0] "讀取 %u 個 Kad 聯絡人" #: src/kademlia/routing/RoutingZone.cpp:221 #: src/kademlia/routing/RoutingZone.cpp:288 msgid "No contacts found, please bootstrap, or download a nodes.dat file." msgstr "找不到聯絡人,請設啟動節點、或下載一個 nodes.dat 檔案。" #: src/kademlia/routing/RoutingZone.cpp:306 #, c-format msgid "Only %d Kad contact available, nodes.dat not written" msgid_plural "Only %d Kad contacts available, nodes.dat not written" msgstr[0] "只有 %d 個 Kad 聯絡人,nods.dat 未寫入" #: src/kademlia/routing/RoutingZone.cpp:337 #, c-format msgid "Wrote %d Kad contact" msgid_plural "Wrote %d Kad contacts" msgstr[0] "已寫入 %d 個 Kad 聯絡人" #: src/KnownFile.cpp:1547 src/PartFileConvertDlg.cpp:91 msgid "File name" msgstr "檔案名稱" #: src/KnownFile.cpp:1548 msgid "File size" msgstr "檔案大小" #: src/KnownFile.cpp:1549 msgid "Share ratio" msgstr "分享率" #: src/KnownFile.cpp:1550 src/SharedFilePeersListCtrl.cpp:31 #: src/SourceListCtrl.cpp:31 msgid "Uploaded" msgstr "已上傳" #: src/KnownFile.cpp:1551 src/muuli_wdr.cpp:3340 msgid "Requested" msgstr "已要求" #: src/KnownFile.cpp:1552 msgid "Accepted" msgstr "已接受" #: src/KnownFile.cpp:1554 msgid "Complete sources" msgstr "完整來源" #: src/KnownFileList.cpp:93 msgid "WARNING: Known file list corrupted, contains invalid header." msgstr "警告:已知檔案清單損壞,內有無效標頭。" #: src/KnownFileList.cpp:108 msgid "Failed to load entry in known file list, file may be corrupt" msgstr "無法載入已知檔案清單內的項目,檔案可能有損壞" #: src/KnownFileList.cpp:115 msgid "Invalid entry in known file list, file may be corrupt: " msgstr "已知檔案清單內有無效的項目,檔案可能有損壞:" #: src/libs/common/Format.cpp:307 #, c-format msgid "Unknown error %d" msgstr "不明的錯誤 %d" #: src/libs/common/Format.cpp:312 src/libs/common/Format.cpp:321 #, c-format msgid "Unable to get error description for error %d" msgstr "無法取得關於錯誤 %d 的說明" #: src/libs/ec/cpp/ECSpecialTags.cpp:40 src/PartFile.cpp:3698 msgid "Hashing" msgstr "正在計算 hash 值" #: src/libs/ec/cpp/ECSpecialTags.cpp:44 src/PartFile.cpp:3704 msgid "Completing" msgstr "正在完成" #: src/libs/ec/cpp/ECSpecialTags.cpp:46 src/PartFile.cpp:3707 msgid "Complete" msgstr "完成" #: src/libs/ec/cpp/ECSpecialTags.cpp:48 src/OtherFunctions.cpp:683 #: src/PartFile.cpp:3710 src/TransferWnd.cpp:350 msgid "Paused" msgstr "已暫停" #: src/libs/ec/cpp/ECSpecialTags.cpp:50 src/OtherFunctions.cpp:682 #: src/PartFile.cpp:3713 src/TransferWnd.cpp:349 msgid "Erroneous" msgstr "錯誤的" #: src/libs/ec/cpp/ECSpecialTags.cpp:55 src/OtherFunctions.cpp:680 #: src/PartFile.cpp:3722 src/TransferWnd.cpp:347 msgid "Waiting" msgstr "正在等候" #: src/libs/ec/cpp/RemoteConnect.cpp:119 src/libs/ec/cpp/RemoteConnect.cpp:127 msgid "You must specify a non-empty password." msgstr "您必須輸入密碼。" #: src/libs/ec/cpp/RemoteConnect.cpp:124 msgid "Invalid password, not a MD5 hash!" msgstr "無效的密碼,不是 MD5 hash 值!" #: src/libs/ec/cpp/RemoteConnect.cpp:187 msgid "Connection failure" msgstr "無法連線" #: src/libs/ec/cpp/RemoteConnect.cpp:247 msgid "EC connection failed. Empty reply." msgstr "無法外部連線,無回應。" #: src/libs/ec/cpp/RemoteConnect.cpp:258 msgid "External Connection: Bad reply, handshake failed. Connection closed." msgstr "外部連線:回應不正確、訊號交換失敗,已關閉連線。" #: src/libs/ec/cpp/RemoteConnect.cpp:266 msgid "Succeeded! Connection established to aMule " msgstr "已成功連線到 aMule " #: src/libs/ec/cpp/RemoteConnect.cpp:269 msgid "Succeeded! Connection established." msgstr "連線成功。" #: src/libs/ec/cpp/RemoteConnect.cpp:275 msgid "External Connection: Access denied because: " msgstr "外部連線:拒絕存取,原因:" #: src/libs/ec/cpp/RemoteConnect.cpp:278 msgid "External Connection: Handshake failed." msgstr "外部連線:訊號交換失敗" #: src/LibSocketAsio.cpp:1260 #, fuzzy, c-format msgid "Asio thread %d started" msgstr "已開始 HTTP 下載執行緒" #: src/ListenSocket.cpp:65 msgid "ListenSocket: Ok." msgstr "監聽連接端點:OK。" #: src/ListenSocket.cpp:67 msgid "ERROR: Could not listen to TCP port." msgstr "錯誤:無法監聽 TCP 埠。" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "ERROR: " msgstr "錯誤:" #: src/Logger.cpp:321 src/Logger.cpp:345 msgid "WARNING: " msgstr "警告:" #: src/MuleNotebook.cpp:167 src/muuli_wdr.cpp:901 src/muuli_wdr.cpp:1430 #: src/muuli_wdr.cpp:3235 src/muuli_wdr.cpp:3505 msgid "Close" msgstr "關閉" #: src/MuleTextCtrl.cpp:79 msgid "Cut" msgstr "剪下" #: src/MuleTextCtrl.cpp:80 src/PartFileConvert.cpp:388 #: src/utils/aLinkCreator/src/alcframe.cpp:263 msgid "Copy" msgstr "複製" #: src/MuleTextCtrl.cpp:81 msgid "Paste" msgstr "貼上" #: src/MuleTextCtrl.cpp:82 src/muuli_wdr.cpp:385 src/muuli_wdr.cpp:832 #: src/utils/aLinkCreator/src/alcframe.cpp:152 msgid "Clear" msgstr "清除" #: src/MuleTextCtrl.cpp:86 msgid "Select All" msgstr "全選" #: src/MuleTrayIcon.cpp:82 src/MuleTrayIcon.cpp:464 src/MuleTrayIcon.cpp:485 #: src/muuli_wdr.cpp:1576 src/muuli_wdr.cpp:1585 src/muuli_wdr.cpp:1594 #: src/muuli_wdr.cpp:1941 src/muuli_wdr.cpp:1950 src/OtherFunctions.cpp:144 #: src/StatisticsDlg.cpp:101 src/StatisticsDlg.cpp:103 msgid "kB/s" msgstr "KB/s" #: src/MuleTrayIcon.cpp:98 src/MuleTrayIcon.cpp:124 src/MuleTrayIcon.cpp:451 #: src/MuleTrayIcon.cpp:472 msgid "Unlimited" msgstr "無限制" #: src/MuleTrayIcon.cpp:290 msgid "aMule Tray Menu" msgstr "aMule 狀態列選單" #: src/MuleTrayIcon.cpp:296 msgid "Speed limits:" msgstr "速度限制:" #: src/MuleTrayIcon.cpp:301 msgid "UL: None" msgstr "上傳:無" #: src/MuleTrayIcon.cpp:304 #, c-format msgid "UL: %u" msgstr "上傳:%u" #: src/MuleTrayIcon.cpp:311 msgid "DL: None" msgstr "下載:無" #: src/MuleTrayIcon.cpp:314 #, c-format msgid "DL: %u" msgstr "下載:%u" #: src/MuleTrayIcon.cpp:318 #, c-format msgid "Download speed: %.1f" msgstr "下載速度:%.1f" #: src/MuleTrayIcon.cpp:320 #, c-format msgid "Upload speed: %.1f" msgstr "上傳速度:%.1f" #: src/MuleTrayIcon.cpp:326 msgid "Client Information" msgstr "客戶端資訊" #: src/MuleTrayIcon.cpp:330 #, c-format msgid "Nickname: %s" msgstr "暱稱:%s" #: src/MuleTrayIcon.cpp:330 msgid "No Nickname Selected!" msgstr "未選取暱稱!" #: src/MuleTrayIcon.cpp:337 msgid "ClientID: " msgstr "客戶端 ID:" #: src/MuleTrayIcon.cpp:342 src/MuleTrayIcon.cpp:356 src/TextClient.cpp:714 #: src/TextClient.cpp:727 msgid "Not connected" msgstr "未連線" #: src/MuleTrayIcon.cpp:349 msgid "ServerName: " msgstr "伺服器名稱:" #: src/MuleTrayIcon.cpp:350 msgid "ServerIP: " msgstr "伺服器 IP:" #: src/MuleTrayIcon.cpp:357 src/ServerWnd.cpp:187 #: src/utils/wxCas/src/onlinesig.cpp:263 msgid "Not Connected" msgstr "未連線" #: src/MuleTrayIcon.cpp:365 #, c-format msgid "IP: %s" msgstr "IP:%s" #: src/MuleTrayIcon.cpp:374 #, c-format msgid "TCP port: %d" msgstr "TCP 埠:%d" #: src/MuleTrayIcon.cpp:376 msgid "TCP port: Not ready" msgstr "TCP 埠:尚未就緒" #: src/MuleTrayIcon.cpp:385 #, c-format msgid "UDP port: %d" msgstr "UDP 埠:%d" #: src/MuleTrayIcon.cpp:387 msgid "UDP port: Not ready" msgstr "UDP 埠:尚未就緒" #: src/MuleTrayIcon.cpp:396 msgid "Online Signature: Enabled" msgstr "線上簽名識別:啟用" #: src/MuleTrayIcon.cpp:399 msgid "Online Signature: Disabled" msgstr "線上簽名識別:停用" #: src/MuleTrayIcon.cpp:406 src/Statistics.cpp:732 #, c-format msgid "Uptime: %s" msgstr "已執行時間:%s" #: src/MuleTrayIcon.cpp:412 #, c-format msgid "Shared files: %d" msgstr "已分享檔案:%d" #: src/MuleTrayIcon.cpp:418 #, c-format msgid "Queued clients: %d" msgstr "等候中客戶端:%d" #: src/MuleTrayIcon.cpp:425 #, c-format msgid "Total DL: %s" msgstr "總下載:%s" #: src/MuleTrayIcon.cpp:432 #, c-format msgid "Total UL: %s" msgstr "總上傳:%s" #: src/MuleTrayIcon.cpp:443 msgid "Upload limit" msgstr "上傳限制" #: src/MuleTrayIcon.cpp:447 msgid "Download limit" msgstr "下載限制" #: src/MuleTrayIcon.cpp:507 msgid "Hide aMule" msgstr "隱藏 aMule" #: src/MuleTrayIcon.cpp:510 msgid "Show aMule" msgstr "顯示 aMule" #: src/MuleTrayIcon.cpp:517 src/utils/aLinkCreator/src/alcframe.cpp:235 msgid "Exit" msgstr "離開" #: src/muuli_wdr.cpp:75 msgid "eD2k Link: " msgstr "eD2k 連結:" #: src/muuli_wdr.cpp:82 msgid "Commit" msgstr "加入" #: src/muuli_wdr.cpp:83 msgid "" "Click here to add the eD2k link in the text control to your download queue." msgstr "點選這裏將欄內的 eD2k 連結加入下載等候區。" #: src/muuli_wdr.cpp:91 msgid "" "Events are displayed here. For a complete list of events, refer to the log " "in the Servers-tab." msgstr "此處顯示系統事件。如需完整事件記錄,請到伺服器分頁。" #: src/muuli_wdr.cpp:94 msgid "Loading ..." msgstr "正在載入..." #: src/muuli_wdr.cpp:102 msgid "Number of users on the server you are connected to ..." msgstr "目前伺服器上使用者數 ..." #: src/muuli_wdr.cpp:105 msgid "Users: 0" msgstr "使用者數:0" #: src/muuli_wdr.cpp:106 msgid "" "Users connected to the current server and an estimate of the total number of " "users." msgstr "目前伺服器上的連線使用者和估計的總使用者數。" #: src/muuli_wdr.cpp:117 msgid "Up: 0.0 | Down: 0.0" msgstr "上傳:0.0 | 下載:0.0" #: src/muuli_wdr.cpp:118 msgid "" "Current average upload and download rates. If enabled the numbers in the " "braces signify the overhead from client communication." msgstr "目前平均上傳下載速度。括號中的爲與其他客戶端連線所消耗的頻寬。" #: src/muuli_wdr.cpp:126 msgid "" "Displays the connected status and active transfers. Red arrows signifies " "that you are currently not connected, yellow arrows signify that you have " "low ID (firewalled) and green arrows signify that you have high ID (The " "optimal connection type)." msgstr "" "顯示目前連線與傳輸狀態。紅色箭頭表示未連線,黃色箭頭表示 LowID (防火牆內),綠" "色箭頭表示正常連線。" #: src/muuli_wdr.cpp:130 msgid "Not Connected ..." msgstr "未連線..." #: src/muuli_wdr.cpp:131 msgid "Currently connected server." msgstr "目前連線的伺服器。" #: src/muuli_wdr.cpp:177 msgid "Search" msgstr "搜尋" #: src/muuli_wdr.cpp:183 msgid "Name:" msgstr "名稱:" #: src/muuli_wdr.cpp:191 src/SearchListCtrl.cpp:90 src/SharedFilesCtrl.cpp:104 msgid "Type" msgstr "類型" #: src/muuli_wdr.cpp:196 src/SearchDlg.cpp:108 msgid "Local" msgstr "本地" #: src/muuli_wdr.cpp:197 msgid "Global" msgstr "全球" #: src/muuli_wdr.cpp:199 msgid "FileHash" msgstr "檔案 hash 值" #: src/muuli_wdr.cpp:207 msgid "Extended Parameters" msgstr "擴充參數" #: src/muuli_wdr.cpp:213 msgid "Filtering" msgstr "過濾" #: src/muuli_wdr.cpp:224 msgid "File Type" msgstr "檔案類型" #: src/muuli_wdr.cpp:229 src/OtherFunctions.cpp:246 msgid "Any" msgstr "任何" #: src/muuli_wdr.cpp:230 src/OtherFunctions.cpp:211 msgid "Archives" msgstr "壓縮檔" #: src/muuli_wdr.cpp:231 src/OtherFunctions.cpp:204 src/OtherFunctions.cpp:686 #: src/TransferWnd.cpp:357 msgid "Audio" msgstr "音樂" #: src/muuli_wdr.cpp:232 src/OtherFunctions.cpp:218 src/OtherFunctions.cpp:688 #: src/TransferWnd.cpp:359 msgid "CD-Images" msgstr "光碟映像" #: src/muuli_wdr.cpp:233 src/OtherFunctions.cpp:225 src/OtherFunctions.cpp:689 #: src/TransferWnd.cpp:360 msgid "Pictures" msgstr "圖片" #: src/muuli_wdr.cpp:234 src/OtherFunctions.cpp:239 msgid "Programs" msgstr "程式" #: src/muuli_wdr.cpp:235 src/OtherFunctions.cpp:232 msgid "Texts" msgstr "文件" #: src/muuli_wdr.cpp:236 src/OtherFunctions.cpp:197 msgid "Videos" msgstr "影片" #: src/muuli_wdr.cpp:254 msgid "Extension" msgstr "副檔名" #: src/muuli_wdr.cpp:260 msgid "Min Size" msgstr "大小下限" #: src/muuli_wdr.cpp:270 src/muuli_wdr.cpp:293 msgid "Bytes" msgstr "B" #: src/muuli_wdr.cpp:271 src/muuli_wdr.cpp:294 msgid "KB" msgstr "KB" #: src/muuli_wdr.cpp:272 src/muuli_wdr.cpp:295 src/muuli_wdr.cpp:1826 #: src/OtherFunctions.cpp:115 msgid "MB" msgstr "MB" #: src/muuli_wdr.cpp:273 src/muuli_wdr.cpp:296 src/OtherFunctions.cpp:117 msgid "GB" msgstr "GB" #: src/muuli_wdr.cpp:283 msgid "Max Size" msgstr "大小上限" #: src/muuli_wdr.cpp:306 msgid "Availability" msgstr "最小來源數" #: src/muuli_wdr.cpp:319 msgid "Filter:" msgstr "過濾:" #: src/muuli_wdr.cpp:328 msgid "Filter Results" msgstr "過濾結果" #: src/muuli_wdr.cpp:334 msgid "Invert Result" msgstr "反向排序結果" #: src/muuli_wdr.cpp:340 msgid "Hide Known Files" msgstr "隱藏已知檔案" #: src/muuli_wdr.cpp:349 src/utils/aLinkCreator/src/alcframe.cpp:229 msgid "Start" msgstr "開始" #: src/muuli_wdr.cpp:356 msgid "More" msgstr "其他" #: src/muuli_wdr.cpp:357 msgid "Searches for more results on eD2k. Not supported for Kad yet." msgstr "在 eD2k 搜尋更多結果 (尚不支援 Kad)。" #: src/muuli_wdr.cpp:364 msgid "Stop" msgstr "停止" #: src/muuli_wdr.cpp:371 src/muuli_wdr.cpp:1570 src/SearchListCtrl.cpp:625 msgid "Download" msgstr "下載" #: src/muuli_wdr.cpp:378 msgid "Reset Fields" msgstr "清空欄位" #: src/muuli_wdr.cpp:393 msgid "Results" msgstr "搜尋結果" #: src/muuli_wdr.cpp:422 msgid "Clears completed downloads" msgstr "清除已完成的檔案" #: src/muuli_wdr.cpp:466 msgid "File sources:" msgstr "檔案來源:" #: src/muuli_wdr.cpp:520 src/muuli_wdr.cpp:1216 src/PrefsUnifiedDlg.cpp:176 msgid "General" msgstr "一般" #: src/muuli_wdr.cpp:525 msgid "Full Name :" msgstr "全名︰" #: src/muuli_wdr.cpp:528 src/muuli_wdr.cpp:539 src/muuli_wdr.cpp:550 #: src/muuli_wdr.cpp:565 src/muuli_wdr.cpp:576 src/muuli_wdr.cpp:587 #: src/muuli_wdr.cpp:609 src/muuli_wdr.cpp:620 src/muuli_wdr.cpp:631 #: src/muuli_wdr.cpp:642 src/muuli_wdr.cpp:653 src/muuli_wdr.cpp:664 #: src/muuli_wdr.cpp:675 src/muuli_wdr.cpp:688 src/muuli_wdr.cpp:695 #: src/muuli_wdr.cpp:722 src/muuli_wdr.cpp:733 src/muuli_wdr.cpp:744 #: src/muuli_wdr.cpp:1233 src/muuli_wdr.cpp:1237 src/muuli_wdr.cpp:1252 #: src/muuli_wdr.cpp:1261 src/muuli_wdr.cpp:1268 src/muuli_wdr.cpp:1277 #: src/muuli_wdr.cpp:1284 src/muuli_wdr.cpp:1293 src/muuli_wdr.cpp:1300 #: src/muuli_wdr.cpp:1309 src/muuli_wdr.cpp:1325 src/muuli_wdr.cpp:1338 #: src/muuli_wdr.cpp:1347 src/muuli_wdr.cpp:1354 src/muuli_wdr.cpp:1363 #: src/muuli_wdr.cpp:1370 src/muuli_wdr.cpp:1379 src/muuli_wdr.cpp:1397 #: src/muuli_wdr.cpp:1406 src/muuli_wdr.cpp:1413 src/muuli_wdr.cpp:1422 #: src/muuli_wdr.cpp:3343 src/muuli_wdr.cpp:3354 src/muuli_wdr.cpp:3365 msgid "N/A" msgstr "N/A" #: src/muuli_wdr.cpp:536 msgid "met-File :" msgstr "met 檔" #: src/muuli_wdr.cpp:547 msgid "Hash :" msgstr "hash 值:" #: src/muuli_wdr.cpp:562 msgid "Filesize :" msgstr "檔案大小:" #: src/muuli_wdr.cpp:573 msgid "Partfilestatus :" msgstr "暫存檔狀態:" #: src/muuli_wdr.cpp:584 msgid "Last seen complete :" msgstr "最後看到完整檔案:" #: src/muuli_wdr.cpp:597 src/Statistics.cpp:734 msgid "Transfer" msgstr "傳輸" #: src/muuli_wdr.cpp:606 msgid "Found Sources :" msgstr "找到的來源:" #: src/muuli_wdr.cpp:617 msgid "Transferring Sources :" msgstr "正在傳輸的來源:" #: src/muuli_wdr.cpp:628 msgid "Filepart-Count :" msgstr "檔案分段數:" #: src/muuli_wdr.cpp:639 msgid "Available :" msgstr "可用:" #: src/muuli_wdr.cpp:650 msgid "Datarate :" msgstr "速度:" #: src/muuli_wdr.cpp:661 msgid "Download Active Time: " msgstr "下載時間:" #: src/muuli_wdr.cpp:672 msgid "Transferred :" msgstr "已傳輸:" #: src/muuli_wdr.cpp:683 msgid "Completed Size :" msgstr "已完成:" #: src/muuli_wdr.cpp:710 msgid "Intelligent Corruption Handling" msgstr "智慧資料損壞處理 (I.C.H.)" #: src/muuli_wdr.cpp:719 msgid "Lost to corruption :" msgstr "因資料損壞而損失:" #: src/muuli_wdr.cpp:730 msgid "Gained by compression :" msgstr "壓縮量:" #: src/muuli_wdr.cpp:741 msgid "Packages saved by I.C.H. :" msgstr "由 I.C.H. 救回的封包:" #: src/muuli_wdr.cpp:754 msgid "File Names" msgstr "檔案名稱" #: src/muuli_wdr.cpp:763 msgid "Takeover" msgstr "取用" #: src/muuli_wdr.cpp:773 msgid "Cleanup" msgstr "清除" #: src/muuli_wdr.cpp:793 src/muuli_wdr.cpp:859 msgid "Apply" msgstr "套用" #: src/muuli_wdr.cpp:798 msgid "Ok" msgstr "確定" #: src/muuli_wdr.cpp:823 msgid "Comment/Rate file (Text will be visible to all users)" msgstr "註解/評價 檔案 (所有使用者都可看到)" #: src/muuli_wdr.cpp:829 msgid "" "For a film you can say its length, its story, language ...\\n\\nand if it's " "a fake, you can tell that to other users of aMule." msgstr "" "針對影片,您可以留下片長、故事、語言...等資訊\\n\\n或是提出假檔警告,以供其" "他 aMule 使用者注意。" #: src/muuli_wdr.cpp:841 msgid "File Quality" msgstr "檔案品質" #: src/muuli_wdr.cpp:846 src/OtherFunctions.cpp:266 src/OtherFunctions.cpp:272 msgid "Not rated" msgstr "未評價" #: src/muuli_wdr.cpp:847 src/OtherFunctions.cpp:267 msgid "Invalid / Corrupt / Fake" msgstr "無效 / 損壞 / 假檔" #: src/muuli_wdr.cpp:848 src/OtherFunctions.cpp:268 msgid "Poor" msgstr "差" #: src/muuli_wdr.cpp:849 src/OtherFunctions.cpp:269 msgid "Fair" msgstr "一般" #: src/muuli_wdr.cpp:850 src/OtherFunctions.cpp:270 msgid "Good" msgstr "好" #: src/muuli_wdr.cpp:851 src/OtherFunctions.cpp:271 msgid "Excellent" msgstr "優良" #: src/muuli_wdr.cpp:854 msgid "Choose the file rating or advice users if the file is invalid ..." msgstr "選擇檔案評價或者提醒其它使用者該檔案是無效的..." #: src/muuli_wdr.cpp:898 msgid "Refresh" msgstr "重新整理" #: src/muuli_wdr.cpp:925 msgid "Downloading, please wait ..." msgstr "正在下載,請稍待..." #: src/muuli_wdr.cpp:931 msgid "Unknown size" msgstr "不明大小" #: src/muuli_wdr.cpp:955 msgid "Required Information" msgstr "必要資訊" #: src/muuli_wdr.cpp:960 msgid "IP Address :" msgstr "IP 位址︰" #: src/muuli_wdr.cpp:966 msgid "Port :" msgstr "通訊埠︰" #: src/muuli_wdr.cpp:976 msgid "Additional Information" msgstr "附加資訊" #: src/muuli_wdr.cpp:981 msgid "Username :" msgstr "使用者名稱︰" #: src/muuli_wdr.cpp:987 msgid "Userhash :" msgstr "使用者 hash 值:" #: src/muuli_wdr.cpp:999 src/muuli_wdr.cpp:2565 #: src/utils/aLinkCreator/src/alcframe.cpp:145 msgid "Add" msgstr "加入" #: src/muuli_wdr.cpp:1046 msgid "Download-Speed" msgstr "下載速度" #: src/muuli_wdr.cpp:1064 src/muuli_wdr.cpp:1113 src/muuli_wdr.cpp:2677 msgid "Current" msgstr "目前" #: src/muuli_wdr.cpp:1075 src/muuli_wdr.cpp:1124 src/muuli_wdr.cpp:2688 msgid "Running average" msgstr "執行中平均值" #: src/muuli_wdr.cpp:1086 src/muuli_wdr.cpp:1135 src/muuli_wdr.cpp:2699 msgid "Session average" msgstr "本次平均值" #: src/muuli_wdr.cpp:1095 msgid "Upload-Speed" msgstr "上傳速度" #: src/muuli_wdr.cpp:1144 msgid "Connections" msgstr "連線" #: src/muuli_wdr.cpp:1162 src/muuli_wdr.cpp:1972 msgid "Active downloads" msgstr "目前下載數" #: src/muuli_wdr.cpp:1173 msgid "Active connections (1:1)" msgstr "目前連線數 (1:1)" #: src/muuli_wdr.cpp:1184 src/muuli_wdr.cpp:1973 msgid "Active uploads" msgstr "目前上傳數" #: src/muuli_wdr.cpp:1193 msgid "Statistics Tree" msgstr "統計資訊" #: src/muuli_wdr.cpp:1223 msgid "Username:" msgstr "使用者名稱︰" #: src/muuli_wdr.cpp:1226 msgid "Userhash:" msgstr "使用者 hash 值:" #: src/muuli_wdr.cpp:1249 msgid "Client software:" msgstr "客戶端軟體:" #: src/muuli_wdr.cpp:1258 msgid "Client version:" msgstr "版本:" #: src/muuli_wdr.cpp:1265 src/ServerWnd.cpp:246 msgid "IP address:" msgstr "IP 位址:" #: src/muuli_wdr.cpp:1274 msgid "User ID:" msgstr "使用者 ID:" #: src/muuli_wdr.cpp:1281 msgid "Server IP:" msgstr "伺服器 IP:" #: src/muuli_wdr.cpp:1290 msgid "Server name:" msgstr "伺服器名稱:" #: src/muuli_wdr.cpp:1297 msgid "Obfuscation:" msgstr "模糊協定:" #: src/muuli_wdr.cpp:1306 msgid "Kad:" msgstr "Kad:" #: src/muuli_wdr.cpp:1317 msgid "Transfers to client" msgstr "傳輸" #: src/muuli_wdr.cpp:1322 msgid "Current request:" msgstr "目前要求:" #: src/muuli_wdr.cpp:1335 msgid "Average upload rate:" msgstr "平均上傳速度:" #: src/muuli_wdr.cpp:1344 msgid "Average download rate:" msgstr "平均下載速度:" #: src/muuli_wdr.cpp:1351 msgid "Uploaded (session):" msgstr "本次上傳:" #: src/muuli_wdr.cpp:1360 msgid "Downloaded (session):" msgstr "本次下載:" #: src/muuli_wdr.cpp:1367 msgid "Uploaded (total):" msgstr "總計上傳:" #: src/muuli_wdr.cpp:1376 msgid "Downloaded (total):" msgstr "總計下載:" #: src/muuli_wdr.cpp:1387 msgid "Scores" msgstr "分數" #: src/muuli_wdr.cpp:1394 msgid "DL/UP modifier:" msgstr "下載/上傳 比率:" #: src/muuli_wdr.cpp:1403 msgid "Secure ident:" msgstr "安全驗證:" #: src/muuli_wdr.cpp:1410 msgid "Queue rank:" msgstr "等候排名:" #: src/muuli_wdr.cpp:1419 msgid "Queue score:" msgstr "得分:" #: src/muuli_wdr.cpp:1448 msgid "Nick" msgstr "暱稱" #: src/muuli_wdr.cpp:1451 msgid "http://www.aMule.org - the multi-platform Mule" msgstr "http://www.aMule.org - 跨平台的騾子" #: src/muuli_wdr.cpp:1452 msgid "This is the name that other users will see when connecting to you." msgstr "這是其他使用者與您連線時能看到的名字。" #: src/muuli_wdr.cpp:1460 msgid "Language: " msgstr "語言:" #: src/muuli_wdr.cpp:1461 src/muuli_wdr.cpp:1498 src/muuli_wdr.cpp:1502 #: src/muuli_wdr.cpp:1506 msgid "The delay before showing tool-tips." msgstr "顯示提示的延遲時間。" #: src/muuli_wdr.cpp:1466 msgid "This specifies the language used on controls." msgstr "選擇界面語言。" #: src/muuli_wdr.cpp:1471 msgid "Check for new version at startup" msgstr "啓動時檢查新版本" #: src/muuli_wdr.cpp:1472 msgid "Enabling this will make aMule check for new version at startup" msgstr "啟用後使 aMule 在啓動時檢查新版本" #: src/muuli_wdr.cpp:1475 msgid "Start minimized" msgstr "啟動後縮到最小" #: src/muuli_wdr.cpp:1476 msgid "Enabling this makes aMule minimize itself upon start." msgstr "啓用後使 aMule 啓動後立即最小化。" #: src/muuli_wdr.cpp:1479 msgid "Prompt on exit" msgstr "離開前先確認" #: src/muuli_wdr.cpp:1481 msgid "Makes aMule prompt before exiting." msgstr "離開 aMule 前要先確認。" #: src/muuli_wdr.cpp:1484 msgid "Hide application window when close button is pressed" msgstr "按下關閉按鈕後隱藏應用程式視窗" #: src/muuli_wdr.cpp:1487 msgid "Enable Tray Icon" msgstr "啟用狀態列圖示" #: src/muuli_wdr.cpp:1488 msgid "This Enables/Disables the system tray (or taskbar) icon." msgstr "啓用/停用系統狀態列圖示。" #: src/muuli_wdr.cpp:1491 msgid "Minimize to Tray Icon" msgstr "縮小到狀態列圖示" #: src/muuli_wdr.cpp:1492 msgid "" "Enabling this will make aMule minimize to the System Tray, rather than the " "taskbar." msgstr "開啓此選項將使 aMule 最小化到系統狀態列,而不是工作列。" #: src/muuli_wdr.cpp:1497 msgid "Tooltip delay time: " msgstr "工具提示延遲:" #: src/muuli_wdr.cpp:1505 msgid "seconds" msgstr "秒" #: src/muuli_wdr.cpp:1511 msgid "Browser Selection" msgstr "瀏覽器設定" #: src/muuli_wdr.cpp:1517 msgid "" "Enter your browser name here. Leave this field empty to use the system " "default browser." msgstr "請輸入瀏覽器的名稱,空白則使用系統預設。" #: src/muuli_wdr.cpp:1520 src/muuli_wdr.cpp:1540 src/muuli_wdr.cpp:1865 #: src/muuli_wdr.cpp:1876 src/muuli_wdr.cpp:2951 #: src/utils/aLinkCreator/src/alcframe.cpp:142 #: src/utils/wxCas/src/wxcasprefs.cpp:56 #: src/utils/wxCas/src/wxcasprefs.cpp:133 msgid "Browse" msgstr "瀏覽" #: src/muuli_wdr.cpp:1525 msgid "Open in new tab if possible" msgstr "在新分頁中開啟" #: src/muuli_wdr.cpp:1527 msgid "Open the web page in a new tab instead of in a new window when possible" msgstr "如果可能,在新的分頁中打開而不是新的視窗" #: src/muuli_wdr.cpp:1532 msgid "Video Player" msgstr "影片播放器" #: src/muuli_wdr.cpp:1564 msgid "Bandwidth limits" msgstr "頻寬限制" #: src/muuli_wdr.cpp:1579 msgid "Upload" msgstr "上傳" #: src/muuli_wdr.cpp:1588 msgid "Slot Allocation" msgstr "位置分配" #: src/muuli_wdr.cpp:1601 msgid "Ports" msgstr "通訊埠" #: src/muuli_wdr.cpp:1607 msgid "Standard TCP Port " msgstr "標準 TCP 埠" #: src/muuli_wdr.cpp:1611 msgid "This is the standard eD2k port and cannot be disabled." msgstr "標準 eD2k 通訊埠,不可停用。" #: src/muuli_wdr.cpp:1614 msgid "UDP port for server requests (TCP+3):" msgstr "伺服器要求 UDP 埠 (TCP+3):" #: src/muuli_wdr.cpp:1617 msgid "4665" msgstr "4665" #: src/muuli_wdr.cpp:1620 msgid "Extended UDP port (Kad / global search) " msgstr "擴充 UDP 埠 (Kad / 全球搜尋)" #: src/muuli_wdr.cpp:1624 msgid "This UDP port is used for extended eD2k requests and Kad network" msgstr "這個 UDP 埠用於 eD2k 擴充要求與 Kad 網路" #: src/muuli_wdr.cpp:1627 msgid "Enable UPnP for router port forwarding" msgstr "啟用 UPnP 的路由通訊埠轉向" #: src/muuli_wdr.cpp:1632 msgid "UPnP TCP Port (Optional):" msgstr "UPnP TCP 埠 (選用):" #: src/muuli_wdr.cpp:1645 msgid "Bind local address to IP (empty for any):" msgstr "選定本機使用 IP (留白或輸入):" #: src/muuli_wdr.cpp:1649 msgid "" "Advanced users only: If you have multiple network interfaces, enter the " "address of the interface to which aMule should be bound." msgstr "進階使用者用:如果您有多網路介面,請輸入要給 aMule 使用的的網路位址。" #: src/muuli_wdr.cpp:1657 msgid "Max sources per downloading file:" msgstr "每個檔案最大來源數:" #: src/muuli_wdr.cpp:1663 msgid "Max simultaneous connections:" msgstr "最大同時連線數:" #: src/muuli_wdr.cpp:1676 msgid "Kademlia" msgstr "Kad" #: src/muuli_wdr.cpp:1680 src/muuli_wdr.cpp:3282 msgid "ED2K" msgstr "ED2K" #: src/muuli_wdr.cpp:1689 msgid "Autoconnect on startup" msgstr "啟動後自動連線" #: src/muuli_wdr.cpp:1692 msgid "Reconnect on loss" msgstr "斷線後自動重新連線" #: src/muuli_wdr.cpp:1716 msgid "Remove dead server after" msgstr "移除無法連線伺服器:如果" #: src/muuli_wdr.cpp:1722 msgid "retries" msgstr "次重試" #: src/muuli_wdr.cpp:1729 msgid "Auto-update server list at startup" msgstr "啟動時自動更新伺服器清單" #: src/muuli_wdr.cpp:1732 msgid "List" msgstr "清單" #: src/muuli_wdr.cpp:1737 msgid "Update server list when connecting to a server" msgstr "連線到伺服器時更新伺服器清單" #: src/muuli_wdr.cpp:1740 msgid "Update server list when a client connects" msgstr "連線到客戶端時更新伺服器清單" #: src/muuli_wdr.cpp:1743 msgid "Use priority system" msgstr "啟用優先等級系統" #: src/muuli_wdr.cpp:1747 msgid "Use smart LowID check on connect" msgstr "連線時啟用智慧 LowID 偵測" #: src/muuli_wdr.cpp:1751 msgid "Safe connect" msgstr "安全連線" #: src/muuli_wdr.cpp:1755 msgid "Autoconnect to servers in static list only" msgstr "只自動連線到靜態伺服器清單裏的伺服器" #: src/muuli_wdr.cpp:1758 msgid "Set manually added servers to High Priority" msgstr "手動輸入的伺服器設為高優先等級" #: src/muuli_wdr.cpp:1776 msgid "Intelligent Corruption Handling (I.C.H.)" msgstr "智慧型損壞處理 (I.C.H.)" #: src/muuli_wdr.cpp:1779 msgid "Enable" msgstr "啟用" #: src/muuli_wdr.cpp:1783 msgid "Advanced I.C.H. trusts every hash (not recommended)" msgstr "進階 I.C.H. 信任所有 hash 值 (不建議)" #: src/muuli_wdr.cpp:1791 msgid "Add files to download in pause mode" msgstr "加入新下載檔案時設為暫停狀態" #: src/muuli_wdr.cpp:1794 msgid "Add files to download with auto priority" msgstr "加入新下載檔案時設定優先等級為自動狀態" #: src/muuli_wdr.cpp:1797 msgid "Try to download first and last chunks first" msgstr "嘗試先下載檔案的第一段和最後一段" #: src/muuli_wdr.cpp:1801 msgid "Start next paused file when a file completes" msgstr "完成後自動傳輸下一個暫停的檔案" #: src/muuli_wdr.cpp:1805 msgid "From the same category" msgstr "同一分類檔案" #: src/muuli_wdr.cpp:1808 msgid "In alphabetic order" msgstr "依字母順序" #: src/muuli_wdr.cpp:1811 msgid "Preallocate disk space for new files" msgstr "新檔案預先分配磁碟空間" #: src/muuli_wdr.cpp:1812 msgid "" "For new files preallocates disk space for the whole file, thus reduces " "fragmentation" msgstr "新檔案預先分配所需的完整磁碟空間,這樣可以減少檔案分散度" #: src/muuli_wdr.cpp:1818 msgid "Stop downloads when free disk space reaches " msgstr "磁碟可用空間不足時停止下載" #: src/muuli_wdr.cpp:1819 msgid "Select this if you want aMule to check your disk space" msgstr "讓 aMule 檢查磁碟可用空間" #: src/muuli_wdr.cpp:1823 msgid "Enter here the min disk space desired." msgstr "請輸入最小磁碟可用空間。" #: src/muuli_wdr.cpp:1831 msgid "Save 10 sources on rare files (< 20 sources)" msgstr "為來源稀少 (< 20) 的檔案儲存 10 個來源" #: src/muuli_wdr.cpp:1837 src/Statistics.cpp:736 msgid "Uploads" msgstr "上傳" #: src/muuli_wdr.cpp:1840 msgid "Add new shared files with auto priority" msgstr "新加入分享檔案優先等級設定為自動" #: src/muuli_wdr.cpp:1859 msgid "Destination folder for downloads" msgstr "下載資料夾" #: src/muuli_wdr.cpp:1870 msgid "Folder for temporary download files" msgstr "暫存資料夾" #: src/muuli_wdr.cpp:1881 msgid "Shared folders" msgstr "分享資料夾" #: src/muuli_wdr.cpp:1884 msgid "(Right click on folder icon for recursive share)" msgstr "(滑鼠右鍵點選檔案夾圖示可全部遞迴分享)" #: src/muuli_wdr.cpp:1891 msgid "Share hidden files" msgstr "分享隱藏檔" #: src/muuli_wdr.cpp:1911 msgid "Graphs" msgstr "圖表" #: src/muuli_wdr.cpp:1914 src/muuli_wdr.cpp:1992 msgid "Update delay : 5 secs" msgstr "更新延遲時間:5 秒" #: src/muuli_wdr.cpp:1920 msgid "Time for average graph: 100 mins" msgstr "平均圖表顯示時間:100 分鐘" #: src/muuli_wdr.cpp:1926 msgid "Connections Graph Scale: 100 " msgstr "連線圖表比例:100 " #: src/muuli_wdr.cpp:1935 msgid "Download graph scale:" msgstr "下載統計圖比例:" #: src/muuli_wdr.cpp:1944 msgid "Upload graph scale:" msgstr "上傳統計圖比例:" #: src/muuli_wdr.cpp:1958 msgid "Colours: " msgstr "顏色:" #: src/muuli_wdr.cpp:1963 msgid "Background" msgstr "背景" #: src/muuli_wdr.cpp:1964 msgid "Grid" msgstr "格線" #: src/muuli_wdr.cpp:1965 msgid "Download current" msgstr "目前下載" #: src/muuli_wdr.cpp:1966 msgid "Download running average" msgstr "執行中平均下載" #: src/muuli_wdr.cpp:1967 msgid "Download session average" msgstr "本次平均下載" #: src/muuli_wdr.cpp:1968 msgid "Upload current" msgstr "目前上傳" #: src/muuli_wdr.cpp:1969 msgid "Upload running average" msgstr "執行中平均上傳" #: src/muuli_wdr.cpp:1970 msgid "Upload session average" msgstr "本次平均上傳" #: src/muuli_wdr.cpp:1971 msgid "Active connections" msgstr "目前連線數" #: src/muuli_wdr.cpp:1974 msgid "Systray Icon Speedbar" msgstr "狀態列圖示顯示速度" #: src/muuli_wdr.cpp:1975 msgid "Kad-nodes current" msgstr "目前 Kad 節點" #: src/muuli_wdr.cpp:1976 msgid "Kad-nodes running" msgstr "執行中 Kad 節點" #: src/muuli_wdr.cpp:1977 msgid "Kad-nodes session" msgstr "本次 Kad 節點" #: src/muuli_wdr.cpp:1982 src/muuli_wdr.cpp:2417 msgid "Select" msgstr "選取" #: src/muuli_wdr.cpp:1989 msgid "Tree" msgstr "樹狀" #: src/muuli_wdr.cpp:2000 msgid "Number of Client Versions shown (0=unlimited)" msgstr "顯示客戶端版本的數量 ( 0 代表不限制)" #: src/muuli_wdr.cpp:2028 msgid "!!! WARNING !!!" msgstr "!!! 警告 !!!" #: src/muuli_wdr.cpp:2042 msgid "Max new connections / 5 secs" msgstr "5 秒內最大新連線數" #: src/muuli_wdr.cpp:2048 msgid "File Buffer Size: 240000 bytes" msgstr "檔案緩衝區:240.000 KB" #: src/muuli_wdr.cpp:2054 msgid "Upload Queue Size: 5000 clients" msgstr "上傳等候區大小:5000 " #: src/muuli_wdr.cpp:2060 msgid "Server connection refresh interval: Disable" msgstr "伺服器連線更新間隔時間:停用" #: src/muuli_wdr.cpp:2066 msgid "Disable computer's timed standby mode" msgstr "停用電腦的自動進入待命模式功能" #: src/muuli_wdr.cpp:2087 msgid "Skin to use: " msgstr "使用面板:" #: src/muuli_wdr.cpp:2099 msgid "Show \"Fast eD2k Links Handler\" in every window." msgstr "在每個視窗顯示「eD2k 連結快速處理器」。" #: src/muuli_wdr.cpp:2103 msgid "Show extended info on categories tabs" msgstr "在分類頁中顯示擴充資訊" #: src/muuli_wdr.cpp:2107 msgid "Show application version on title" msgstr "在標題顯示應用程式版本" #: src/muuli_wdr.cpp:2110 msgid "Show transfer rates on title" msgstr "標題列顯示傳輸速度" #: src/muuli_wdr.cpp:2113 msgid "Before application name" msgstr "在程式名稱前" #: src/muuli_wdr.cpp:2116 msgid "After application name" msgstr "在程式名稱後" #: src/muuli_wdr.cpp:2120 msgid "Show overhead bandwidth" msgstr "顯示額外支出頻寬" #: src/muuli_wdr.cpp:2124 msgid "Vertical toolbar orientation" msgstr "垂直顯示工具列" #: src/muuli_wdr.cpp:2127 msgid "Show country flags for clients" msgstr "顯示客戶端的國旗" #: src/muuli_wdr.cpp:2130 msgid "Download Queue Files" msgstr "下載等候區檔案" #: src/muuli_wdr.cpp:2133 msgid "Show progress percentage" msgstr "顯示進度百分比" #: src/muuli_wdr.cpp:2140 msgid "Show progress bar" msgstr "顯示進度條" #: src/muuli_wdr.cpp:2144 msgid "Flat" msgstr "扁平" #: src/muuli_wdr.cpp:2150 msgid "Round" msgstr "圓弧" #: src/muuli_wdr.cpp:2155 msgid "Auto-sort files (high CPU)" msgstr "自動排序檔案 (耗系統資源)" #: src/muuli_wdr.cpp:2157 msgid "aMule will sort the columns in your download list automatically" msgstr "aMule 將自動對下載清單進行排序" #: src/muuli_wdr.cpp:2176 msgid "External Connection Parameters" msgstr "外部連線參數" #: src/muuli_wdr.cpp:2179 msgid "Accept external connections" msgstr "接受外部連線" #: src/muuli_wdr.cpp:2186 msgid "IP of the listening interface:" msgstr "監聽 IP:" #: src/muuli_wdr.cpp:2190 msgid "" "Enter here a valid ip in the a.b.c.d format for the listening EC interface. " "An empty field or 0.0.0.0 will mean any interface." msgstr "輸入要監聽外部連線的的 IP (格式:a.b.c.d),空白或 0.0.0.0 表示全部。" #: src/muuli_wdr.cpp:2198 src/muuli_wdr.cpp:2259 msgid "TCP port:" msgstr "TCP 埠:" #: src/muuli_wdr.cpp:2206 msgid "Enable UPnP port forwarding on the EC port" msgstr "外部連線通訊埠啟用 UPnP 通訊埠轉向" #: src/muuli_wdr.cpp:2211 src/muuli_wdr.cpp:3127 #: src/utils/wxCas/src/wxcasprefs.cpp:201 msgid "Password" msgstr "密碼" #: src/muuli_wdr.cpp:2221 msgid "Web server parameters" msgstr "網站伺服器參數" #: src/muuli_wdr.cpp:2224 msgid "Run webserver on startup" msgstr "啟動時執行網站伺服器" #: src/muuli_wdr.cpp:2230 msgid "Web template" msgstr "網頁模板" #: src/muuli_wdr.cpp:2237 msgid "Full rights password" msgstr "絕對權限使用者密碼" #: src/muuli_wdr.cpp:2243 msgid "Enable Low rights User" msgstr "啟用低權限使用者" #: src/muuli_wdr.cpp:2249 msgid "Low rights password" msgstr "低權限使用者密碼" #: src/muuli_wdr.cpp:2267 msgid "Enable UPnP port forwarding of the web server port" msgstr "網站伺服器的通訊埠啟用 UPnP 通訊埠轉向" #: src/muuli_wdr.cpp:2272 msgid "Web server UPnP TCP port (Optional)" msgstr "網站伺服器的 UPnP TCP 埠 (選用)" #: src/muuli_wdr.cpp:2282 msgid "Page Refresh Time (in secs)" msgstr "頁面更新時間 (秒)" #: src/muuli_wdr.cpp:2290 msgid "Enable Gzip compression" msgstr "啟用 Gzip 壓縮" #: src/muuli_wdr.cpp:2324 src/muuli_wdr.cpp:2427 src/ServerWnd.cpp:215 #: src/ServerWnd.cpp:220 msgid "OK" msgstr "OK" #: src/muuli_wdr.cpp:2326 msgid "Click here to apply any changes made to the preferences." msgstr "點選這裏立即套用已變更的偏好設定。" #: src/muuli_wdr.cpp:2330 msgid "Reset any changes made to the preferences." msgstr "取消所有偏好設定變更。" #: src/muuli_wdr.cpp:2354 msgid "Title :" msgstr "標題:" #: src/muuli_wdr.cpp:2364 msgid "Comment :" msgstr "註解:" #: src/muuli_wdr.cpp:2374 msgid "Incoming Dir :" msgstr "新進檔目錄:" #: src/muuli_wdr.cpp:2387 msgid "Change priority for new assigned files :" msgstr "設定新加入的檔案優先等級為:" #: src/muuli_wdr.cpp:2392 msgid "Don't change" msgstr "不要變更" #: src/muuli_wdr.cpp:2406 msgid "Select color for this Category (currently selected) :" msgstr "選取該分類的顏色 (目前選擇):" #: src/muuli_wdr.cpp:2480 src/muuli_wdr.cpp:2505 #: src/utils/wxCas/src/wxcasframe.cpp:133 #: src/utils/wxCas/src/wxcasframe.cpp:137 msgid "Reset" msgstr "清除" #: src/muuli_wdr.cpp:2481 src/muuli_wdr.cpp:2506 msgid "Click this button to reset the log." msgstr "點選這個按鈕來清除記錄。" #: src/muuli_wdr.cpp:2528 msgid "Click on this button to update the servers list from URL ..." msgstr "點選這個按鈕從該網址更新伺服器清單 ..." #: src/muuli_wdr.cpp:2532 msgid "Server list" msgstr "伺服器清單" #: src/muuli_wdr.cpp:2537 msgid "" "Enter the url to a server.met file here and press the button to the left to " "update the list of known servers." msgstr "輸入 server.met 檔案的網址並按下左邊的按鈕以更新已知伺服器清單。" #: src/muuli_wdr.cpp:2544 msgid "Add server manually: Name" msgstr "手動加入伺服器:名稱" #: src/muuli_wdr.cpp:2548 msgid "Enter the name of the new server here" msgstr "輸入新伺服器的名稱" #: src/muuli_wdr.cpp:2551 src/ServerWnd.cpp:167 msgid "IP:Port" msgstr "IP:Port" #: src/muuli_wdr.cpp:2555 msgid "Enter the IP of the server here, using the x.x.x.x format." msgstr "輸入新伺服器的 IP (格式:x.x.x.x)。" #: src/muuli_wdr.cpp:2562 msgid "Enter the port of the server here." msgstr "輸入伺服器的通訊埠。" #: src/muuli_wdr.cpp:2566 msgid "Add manually a server (fill fields to the left before) ..." msgstr "手動加入伺服器 (填入左側空格中) ..." #: src/muuli_wdr.cpp:2604 msgid "aMule Log" msgstr "aMule 記錄" #: src/muuli_wdr.cpp:2608 msgid "Server Info" msgstr "伺服器資訊" #: src/muuli_wdr.cpp:2612 msgid "ED2K Info" msgstr "eD2k 資訊" #: src/muuli_wdr.cpp:2616 msgid "Kad Info" msgstr "Kad 資訊" #: src/muuli_wdr.cpp:2645 msgid "Click on this button to update the nodes list from URL ..." msgstr "點選這個按鈕來從該網址更新節點清單 ..." #: src/muuli_wdr.cpp:2649 msgid "Nodes (0)" msgstr "節點 (0)" #: src/muuli_wdr.cpp:2654 msgid "" "Enter the url to a nodes.dat file here and press the button to the left to " "update the list of known nodes." msgstr "輸入 nodes.dat 檔案的網址,並按下左邊的按鈕以更新已知節點清單。" #: src/muuli_wdr.cpp:2659 msgid "Nodes stats" msgstr "節點狀態" #: src/muuli_wdr.cpp:2710 msgid "Bootstrap" msgstr "啓動" #: src/muuli_wdr.cpp:2713 msgid "New node" msgstr "新節點" #: src/muuli_wdr.cpp:2718 msgid "IP:" msgstr "IP:" #: src/muuli_wdr.cpp:2747 msgid "Port:" msgstr "埠:" #: src/muuli_wdr.cpp:2763 msgid "Bootstrap from known clients" msgstr "從已知客戶端啓動" #: src/muuli_wdr.cpp:2768 msgid "Disconnect Kad" msgstr "中斷 Kad 連線" #: src/muuli_wdr.cpp:2806 msgid "Use Secure User Identification" msgstr "啟用使用者安全認證" #: src/muuli_wdr.cpp:2808 msgid "" "It is recommended to enable this option. You will not receive credits if SUI " "is not enabled." msgstr "建議啟用此選項。如果使用者安全認證未啟用,將會得不到積分。" #: src/muuli_wdr.cpp:2811 msgid "Protocol Obfuscation" msgstr "模糊協定" #: src/muuli_wdr.cpp:2814 msgid "Support Protocol Obfuscation" msgstr "支援模糊協定" #: src/muuli_wdr.cpp:2816 msgid "" "This option enabled Protocol Obfuscation, and makes aMule accept obfuscated " "connections from other clients." msgstr "啓用模糊協定,可讓 aMule 接受來自其他客戶端的模糊連線。" #: src/muuli_wdr.cpp:2819 msgid "Use obfuscation for outgoing connections" msgstr "對外的連線使用模糊協定" #: src/muuli_wdr.cpp:2821 msgid "" "This option makes aMule use Protocol Obfuscation when connecting other " "clients/servers." msgstr "使 aMule 在與其他客戶端或伺服器連線時使用模糊協定。" #: src/muuli_wdr.cpp:2824 msgid "Accept only obfuscated connections" msgstr "只接受模糊連線" #: src/muuli_wdr.cpp:2825 msgid "" "This option makes aMule only accept obfuscated connections. You will have " "less sources, but all your traffic will be obfuscated" msgstr "讓 aMule 只接受模糊協定,檔案來源會比較少,但所有傳輸都將是模糊連線" #: src/muuli_wdr.cpp:2832 msgid "Everybody" msgstr "任何人" #: src/muuli_wdr.cpp:2834 msgid "No one" msgstr "無" #: src/muuli_wdr.cpp:2836 msgid "Who can see my shared files:" msgstr "誰可以看我的分享檔案:" #: src/muuli_wdr.cpp:2837 msgid "Select who can request to view a list of your shared files." msgstr "選取可以瀏覽分享檔案清單的使用者。" #: src/muuli_wdr.cpp:2840 msgid "IP-Filtering" msgstr "IP 過濾" #: src/muuli_wdr.cpp:2847 msgid "Filter clients" msgstr "過濾客戶端" #: src/muuli_wdr.cpp:2849 msgid "" "Enable filtering of the client IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "過濾列在 ~/.aMule/ipfilter.dat 檔案中的客戶端 IP" #: src/muuli_wdr.cpp:2852 msgid "Filter servers" msgstr "過濾伺服器" #: src/muuli_wdr.cpp:2854 msgid "" "Enable filtering of the server IPs defined in the file ~/.aMule/ipfilter.dat." msgstr "過濾列在 ~/.aMule/ipfilter.dat 檔案中的伺服器 IP 。" #: src/muuli_wdr.cpp:2861 msgid "Reload List" msgstr "重載入清單" #: src/muuli_wdr.cpp:2862 msgid "Reload the list of IPs to filter from the file ~/.aMule/ipfilter.dat" msgstr "重新載入 IP 過濾清單 ~/.aMule/ipfilter.dat" #: src/muuli_wdr.cpp:2870 msgid "URL:" msgstr "網址:" #: src/muuli_wdr.cpp:2876 msgid "Update now" msgstr "立即更新" #: src/muuli_wdr.cpp:2881 msgid "Auto-update ipfilter at startup" msgstr "啓動後自動更新 IP 過濾清單" #: src/muuli_wdr.cpp:2886 msgid "Filtering Level:" msgstr "過濾等級:" #: src/muuli_wdr.cpp:2896 msgid "Always filter LAN IPs" msgstr "永遠過濾區域網路 IP" #: src/muuli_wdr.cpp:2900 msgid "Paranoid handling of non-matching IPs" msgstr "處理不匹配的 IP" #: src/muuli_wdr.cpp:2902 msgid "" "Rejects packet if the client ip is different from the ip where the packet is " "received from. Use with caution." msgstr "拒絕客戶端 IP 與接收封包中的 IP 不同的封包。(請小心使用)" #: src/muuli_wdr.cpp:2905 msgid "Use system-wide ipfilter.dat if available" msgstr "如果可以則使用系統級的 ipfilter.dat" #: src/muuli_wdr.cpp:2906 msgid "" "If there's no local ipfilter.dat found, allow usage of a systemwide ipfilter " "file." msgstr "如果找不到本機 ipfilter.dat 檔案,則允許使用系統級的 IP 過濾檔。" #: src/muuli_wdr.cpp:2925 msgid "Enable Online-Signature" msgstr "啟用線上簽名識別" #: src/muuli_wdr.cpp:2927 msgid "" "Enables the writing of the OS file, which can be used by external apps to " "create signatures and the like." msgstr "啟用寫入到作業系統檔案,以讓外部程式用來建立簽名識別等等。" #: src/muuli_wdr.cpp:2932 msgid "Update Frequency (Secs):" msgstr "更新頻率(秒):" #: src/muuli_wdr.cpp:2936 msgid "Change the frequency (in seconds) of Online Signature updates." msgstr "變更線上簽名識別檔的更新頻率 (單位為 秒)。" #: src/muuli_wdr.cpp:2945 msgid "Save online signature file in: " msgstr "儲存線上簽名識別檔:" #: src/muuli_wdr.cpp:2952 msgid "" "Click here to select the directory containing the the Online Signature files." msgstr "點擊選取線上簽識別名檔案所在的目錄。" #: src/muuli_wdr.cpp:2974 msgid "Filter incoming messages (except current chat):" msgstr "過濾收到的訊息 (不包含目前交談):" #: src/muuli_wdr.cpp:2977 msgid "Filter all messages" msgstr "過濾所有訊息" #: src/muuli_wdr.cpp:2980 msgid "Filter messages from people not on your friend list" msgstr "過濾來自好友以外的訊息" #: src/muuli_wdr.cpp:2983 msgid "Filter messages from unknown clients" msgstr "過濾來自不明客戶端的訊息" #: src/muuli_wdr.cpp:2986 msgid "Filter messages containing (use ',' as separator):" msgstr "過濾含以下內容的訊息 (用逗號 ',' 隔開):" #: src/muuli_wdr.cpp:2990 src/muuli_wdr.cpp:3005 msgid "add here the words amule should filter and block messages including it" msgstr "輸入要過濾的詞句" #: src/muuli_wdr.cpp:2993 msgid "Show received messages in the log" msgstr "記錄收到的訊息" #: src/muuli_wdr.cpp:2998 msgid "Comments" msgstr "註解" #: src/muuli_wdr.cpp:3001 msgid "Filter comments containing (use ',' as separator):" msgstr "過濾含以下內容的註解 (用逗號 ',' 隔開):" #: src/muuli_wdr.cpp:3024 msgid "Automatic server connect without proxy" msgstr "自動不經代理伺服器連線到伺服器" #: src/muuli_wdr.cpp:3030 msgid "Enable authentication" msgstr "啓用登入驗證" #: src/muuli_wdr.cpp:3031 msgid "Enable/disable username/password authentication" msgstr "啓用/停用 使用者名稱/密碼登入驗證" #: src/muuli_wdr.cpp:3036 msgid "Username: " msgstr "使用者名稱:" #: src/muuli_wdr.cpp:3040 msgid "The username to use to connect to the proxy" msgstr "登入代理伺服器的使用者名稱" #: src/muuli_wdr.cpp:3043 msgid "Password:" msgstr "密碼:" #: src/muuli_wdr.cpp:3047 msgid "The password to use to connect to the proxy" msgstr "登入代理伺服器的密碼" #: src/muuli_wdr.cpp:3050 msgid "Enable Proxy" msgstr "啓用代理伺服器" #: src/muuli_wdr.cpp:3051 msgid "Enable/disable proxy support" msgstr "啓用/停用代理伺服器支援" #: src/muuli_wdr.cpp:3056 msgid "Proxy type:" msgstr "類型:" #: src/muuli_wdr.cpp:3069 msgid "Proxy host:" msgstr "主機:" #: src/muuli_wdr.cpp:3073 msgid "The proxy host name" msgstr "代理伺服器主機名稱" #: src/muuli_wdr.cpp:3076 msgid "Proxy port:" msgstr "連接埠:" #: src/muuli_wdr.cpp:3080 msgid "The proxy port" msgstr "代理伺服器連接埠" #: src/muuli_wdr.cpp:3101 msgid "Connect to:" msgstr "連線到:" #: src/muuli_wdr.cpp:3115 msgid "Login to remote amule" msgstr "登入遠端 amule" #: src/muuli_wdr.cpp:3120 msgid "User name" msgstr "使用者名稱" #: src/muuli_wdr.cpp:3137 msgid "Remember those settings" msgstr "記住這些設定" #: src/muuli_wdr.cpp:3166 msgid "Enable Verbose Debug-Logging." msgstr "啓用記錄詳細除錯訊息。" #: src/muuli_wdr.cpp:3169 #, fuzzy msgid "Only to Logfile" msgstr "開啟檔案(&O)" #: src/muuli_wdr.cpp:3172 msgid "Message Categories:" msgstr "訊息分類:" #: src/muuli_wdr.cpp:3198 src/PartFileConvertDlg.cpp:153 msgid "Waiting..." msgstr "等候中..." #: src/muuli_wdr.cpp:3225 msgid "Add imports" msgstr "加入" #: src/muuli_wdr.cpp:3229 msgid "Retry selected" msgstr "重試" #: src/muuli_wdr.cpp:3232 msgid "Remove selected" msgstr "移除" #: src/muuli_wdr.cpp:3304 msgid "Event Types" msgstr "事件種類" #: src/muuli_wdr.cpp:3324 msgid "Statistics and queued clients for selected file(s) : Session / All time" msgstr "已選取的檔案的統計資料與等候區客戶端數:本次 / 總計" #: src/muuli_wdr.cpp:3351 msgid "Active Uploads" msgstr "目前上傳數" #: src/muuli_wdr.cpp:3371 msgid "Percent of total files" msgstr "% (所有檔案中)" #: src/muuli_wdr.cpp:3418 msgid "All files" msgstr "所有檔案" #: src/muuli_wdr.cpp:3419 msgid "Selected files" msgstr "選取的檔案" #: src/muuli_wdr.cpp:3420 msgid "Active uploads only" msgstr "僅限目前上傳中" #: src/muuli_wdr.cpp:3422 msgid "Show Clients for" msgstr "顯示客戶端:" #: src/muuli_wdr.cpp:3425 msgid "Reload:" msgstr "重新載入:" #: src/muuli_wdr.cpp:3430 msgid "Reload your shared files" msgstr "重新載入分享的檔案" #: src/muuli_wdr.cpp:3500 msgid "Send" msgstr "傳送" #: src/muuli_wdr.cpp:3501 msgid "Sends the specified message." msgstr "傳送訊息。" #: src/muuli_wdr.cpp:3506 msgid "Close this chat-session." msgstr "結束本次交談。" #: src/muuli_wdr.cpp:3530 msgid "Connect to any server and/or Kad" msgstr "連線到任何伺服器 和/或 Kad 網路" #: src/muuli_wdr.cpp:3536 src/SharedFilesCtrl.cpp:135 src/Statistics.cpp:815 msgid "Shared Files" msgstr "分享檔案" #: src/OScopeCtrl.cpp:242 #, c-format msgid "Disabled [%s]" msgstr "已停用 [%s]" #: src/OtherFunctions.cpp:111 msgid "byte" msgid_plural "bytes" msgstr[0] "B" #: src/OtherFunctions.cpp:113 msgid "kB" msgstr "KB" #: src/OtherFunctions.cpp:119 msgid "TB" msgstr "TB" #: src/OtherFunctions.cpp:129 msgid "k" msgstr "K" #: src/OtherFunctions.cpp:131 msgid "M" msgstr "M" #: src/OtherFunctions.cpp:133 msgid "G" msgstr "G" #: src/OtherFunctions.cpp:135 msgid "T" msgstr "T" #: src/OtherFunctions.cpp:142 msgid "byte/sec" msgid_plural "bytes/sec" msgstr[0] "B/s" #: src/OtherFunctions.cpp:146 msgid "MB/s" msgstr "MB/s" #: src/OtherFunctions.cpp:155 src/OtherFunctions.cpp:158 msgid "secs" msgstr "秒" #: src/OtherFunctions.cpp:162 msgid "mins" msgstr "分" #: src/OtherFunctions.cpp:165 src/OtherFunctions.cpp:169 msgid "hours" msgstr "時" #: src/OtherFunctions.cpp:168 msgid "Days" msgstr "天" #: src/OtherFunctions.cpp:676 msgid "all" msgstr "全部" #: src/OtherFunctions.cpp:677 msgid "all others" msgstr "其它" #: src/OtherFunctions.cpp:678 src/TransferWnd.cpp:345 msgid "Incomplete" msgstr "不完整" #: src/OtherFunctions.cpp:684 src/PartFile.cpp:3727 src/TransferWnd.cpp:351 msgid "Stopped" msgstr "已停止" #: src/OtherFunctions.cpp:685 src/TransferWnd.cpp:356 msgid "Video" msgstr "影片" #: src/OtherFunctions.cpp:687 src/TransferWnd.cpp:358 msgid "Archive" msgstr "壓縮檔" #: src/OtherFunctions.cpp:690 src/TransferWnd.cpp:361 msgid "Text" msgstr "文件" #: src/OtherFunctions.cpp:691 src/TransferWnd.cpp:352 msgid "Active" msgstr "啟動" #: src/OtherFunctions.cpp:1111 #, c-format msgid "Using config dir: %s" msgstr "使用設定目錄:%s" #: src/PartFileConvert.cpp:154 msgid "Waiting for partfile convert thread to die..." msgstr "正在等候暫存檔轉換執行緒終止..." #: src/PartFileConvert.cpp:198 #, c-format msgid "Importing %s: %s" msgstr "正在匯入 %s:%s" #: src/PartFileConvert.cpp:234 msgid "Reading temp folder" msgstr "正在讀取暫存資料夾" #: src/PartFileConvert.cpp:238 msgid "Retrieving basic information from download info file" msgstr "正在從下載資訊檔取得基本資訊" #: src/PartFileConvert.cpp:316 msgid "Creating destination file" msgstr "正在建立目標檔案" #: src/PartFileConvert.cpp:326 #, c-format msgid "Loading data from old download file (%u of %u)" msgstr "正在從舊下載檔案載入資料 (%u / %u)" #: src/PartFileConvert.cpp:344 #, c-format msgid "Saving data block into new single download file (%u of %u)" msgstr "正在將資料區塊儲存到新的單一下載檔案 (%u / %u)" #: src/PartFileConvert.cpp:408 msgid "Retrieving source downloadfile information" msgstr "正在取得來源下載檔案資訊" #: src/PartFileConvert.cpp:431 msgid "Adding download and saving new partfile" msgstr "正在加入下載和儲存新暫存檔" #: src/PartFileConvertDlg.cpp:84 msgid "Import partfiles" msgstr "匯入暫存檔" #: src/PartFileConvertDlg.cpp:92 msgid "State" msgstr "狀態" #: src/PartFileConvertDlg.cpp:94 msgid "Filehash" msgstr "檔案 hash 值" #: src/PartFileConvertDlg.cpp:177 #, c-format msgid "%s (Disk: %s)" msgstr "%s (磁碟:%s)" #: src/PartFileConvertDlg.cpp:202 msgid "" "Please choose a folder to search for temporary downloads! (subfolders will " "be included)" msgstr "請選擇要搜尋暫存檔的資料夾! (底下的子資料夾將一併處理)" #: src/PartFileConvertDlg.cpp:206 msgid "" "Do you want the source files of succesfully imported downloads be deleted?" msgstr "要刪除已成功匯入下載的來源檔嗎?" #: src/PartFileConvertDlg.cpp:207 msgid "Remove sources?" msgstr "刪除來源?" #: src/PartFile.cpp:298 msgid "ERROR: Failed to create partfile" msgstr "錯誤:無法建立暫存檔" #: src/PartFile.cpp:336 #, c-format msgid "Trying to load backup of met-file from %s" msgstr "嘗試使用在 %s 的 met 設定檔備份檔" #: src/PartFile.cpp:343 #, c-format msgid "ERROR: Failed to open part.met file: %s ==> %s" msgstr "錯誤:無法開啟 part.met 檔案:%s ==> %s" #: src/PartFile.cpp:349 #, c-format msgid "ERROR: part.met file is 0 size: %s ==> %s" msgstr "錯誤:part.met 檔案大小為 0:%s ==> %s" #: src/PartFile.cpp:360 #, c-format msgid "ERROR: Invalid part.met file version: %s ==> %s" msgstr "錯誤:無效的 part.met 檔案版本:%s ==> %s" #: src/PartFile.cpp:595 #, c-format msgid "Error: %s (%s) is corrupt (bad tags: %s), unable to load file." msgstr "錯誤:%s (%s) 已經損壞 (錯誤的標記:%s ),無法載入檔案。" #: src/PartFile.cpp:606 #, c-format msgid "ERROR: %s (%s) is corrupt (wrong tagcount), unable to load file." msgstr "錯誤:%s (%s) 已經損壞 (標記數錯誤),無法載入。" #: src/PartFile.cpp:609 msgid "Trying to recover file info..." msgstr "嘗試復原檔案資訊中..." #: src/PartFile.cpp:624 msgid "Recovering no-named file - will try to recover it as RecoveredFile.dat" msgstr "嘗試復原無名檔案 - 將存爲 RecoveredFile.dat" #: src/PartFile.cpp:628 msgid "Recovered all available file info :D - Trying to use it..." msgstr "已復原所有檔案資訊 :D - 嘗試使用中..." #: src/PartFile.cpp:630 msgid "Unable to recover file info :(" msgstr "無法復原檔案資訊 :(" #: src/PartFile.cpp:665 #, c-format msgid "Failed to open %s (%s)" msgstr "無法開啟 %s (%s)" #: src/PartFile.cpp:715 #, c-format msgid "WARNING: %s might be corrupted (%i)" msgstr "警告:%s 可能已經損壞 (%i)" #: src/PartFile.cpp:897 #, c-format msgid "ERROR while saving partfile: %s (%s ==> %s)" msgstr "儲存暫存檔時發生錯誤:%s (%s => %s)" #: src/PartFile.cpp:904 msgid "IO failure while saving partfile: " msgstr "儲存暫存檔時發生 IO 錯誤:" #: src/PartFile.cpp:917 #, c-format msgid "Could not retrieve length of '%s' - using %s file." msgstr "無法取得 %s 的大小 - 使用 %s 檔案。" #: src/PartFile.cpp:925 #, c-format msgid "'%s' is 0 size somehow - using %s file." msgstr "%s 檔案大小爲 0 - 使用 %s 檔案。" #: src/PartFile.cpp:994 #, c-format msgid "Failed to save part.met.seeds file for %s" msgstr "無法儲存 %s 的 part.met.seeds 檔案" #: src/PartFile.cpp:1020 #, c-format msgid "Saved %i source seed for partfile: %s (%s)" msgid_plural "Saved %i source seeds for partfile: %s (%s)" msgstr[0] "已儲存 %i 個來源種子給暫存檔 %s (%s)" #: src/PartFile.cpp:1050 #, fuzzy, c-format msgid "Can't read seeds file for Partfile %s (%s)" msgstr "已儲存 %i 個來源種子給暫存檔 %s (%s)" #: src/PartFile.cpp:1109 #, c-format msgid "Error reading partfile's seeds file (%s - %s): %s" msgstr "讀取暫存檔的種子檔案 (%s - %s) 時出錯:%s" #: src/PartFile.cpp:1132 src/PartFile.cpp:1159 #, c-format msgid "" "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |" "%s|" msgid_plural "" "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash " "|%s|" msgstr[0] "" "找到損壞 (%d) 的 %d 個暫存檔 %s - 檔案結果 hash 值 |%s| 檔案 hash 值 |%s|" #: src/PartFile.cpp:1174 #, c-format msgid "Found completed part (%i) in %s" msgstr "找到已完成的暫存檔 %i 在 %s" #: src/PartFile.cpp:1209 #, c-format msgid "Finished rehashing %s" msgstr "已重新計算完成 %s 的 hash 值" #: src/PartFile.cpp:2129 #, c-format msgid "Unexpected error while completing %s. File paused" msgstr "計算 %s 時發生意外的錯誤,暫停檔案處理" #: src/PartFile.cpp:2166 #, c-format msgid "Finished downloading: %s" msgstr "下載完成:%s" #: src/PartFile.cpp:2223 #, c-format msgid "Deleting file: %s" msgstr "正刪除檔案:%s " #: src/PartFile.cpp:2292 #, c-format msgid "WARNING: Unable to hash downloaded part - hashset incomplete for '%s'" msgstr "警告:無法計算已下載部份的 hash 值 - %s 的 hash 值組不完整" #: src/PartFile.cpp:2297 #, c-format msgid "" "ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should " "never happen" msgstr "" "錯誤:無法計算已下載部分的 hash 值 - %s 的 hash 值組不完整,這個狀況不該發生" #: src/PartFile.cpp:2307 src/PartFile.cpp:2312 #, c-format msgid "" "EOF while hashing downloaded part %u with length %u (max %u) of partfile '%" "s' with length %u: %s" msgstr "" "計算下載部份 %u (長度 %u / 最大 %u) - 暫存檔 %s (長度 %u) 的 hash 值時出現檔" "案結束碼:%s" #: src/PartFile.cpp:2973 #, c-format msgid "WARNING: Not enough free disk-space! Pausing file: %s" msgstr "警告:磁碟可用空間不足!暫停檔案:%s " #: src/PartFile.cpp:3043 #, c-format msgid "Downloaded part %i is corrupt in file: %s" msgstr "已下載的部份 %i 已損壞 (檔案:%s)" #: src/PartFile.cpp:3095 #, c-format msgid "ICH: Recovered corrupted part %i for %s -> Saved bytes: %s" msgstr "ICH:已修復損壞的部份 %i (%s) -> 救回 %s" #: src/PartFile.cpp:3700 msgid "Allocating" msgstr "正在分配" #: src/PartFile.cpp:3716 msgid "Insufficient disk space" msgstr "磁碟空間不足" #: src/PartFile.cpp:3766 src/SearchListCtrl.cpp:1006 #: src/SharedFilePeersListCtrl.cpp:29 src/SourceListCtrl.cpp:29 msgid "Downloaded" msgstr "已下載" #: src/PartFile.cpp:4015 #, c-format msgid "ERROR: Failed to open partfile '%s'" msgstr "錯誤:無法開啟暫存檔 %s" #: src/Preferences.cpp:632 msgid "System default" msgstr "系統預設" #: src/Preferences.cpp:633 msgid "Albanian" msgstr "阿爾巴尼亞語" #: src/Preferences.cpp:634 msgid "Arabic" msgstr "阿拉伯語" #: src/Preferences.cpp:635 msgid "Asturian" msgstr "奧地利語" #: src/Preferences.cpp:636 msgid "Basque" msgstr "巴斯克語" #: src/Preferences.cpp:637 msgid "Bulgarian" msgstr "保加利亞語" #: src/Preferences.cpp:638 msgid "Catalan" msgstr "加泰隆尼亞語" #: src/Preferences.cpp:639 msgid "Chinese (Simplified)" msgstr "簡體中文" #: src/Preferences.cpp:640 msgid "Chinese (Traditional)" msgstr "正體中文" #: src/Preferences.cpp:641 msgid "Croatian" msgstr "克羅埃西亞語" #: src/Preferences.cpp:642 msgid "Czech" msgstr "捷克語" #: src/Preferences.cpp:643 msgid "Danish" msgstr "丹麥語" #: src/Preferences.cpp:644 msgid "Dutch" msgstr "荷蘭語" #: src/Preferences.cpp:645 msgid "English (U.K.)" msgstr "英語 (英國)" #: src/Preferences.cpp:646 msgid "Estonian" msgstr "愛沙尼亞語" #: src/Preferences.cpp:647 msgid "Finnish" msgstr "芬蘭語" #: src/Preferences.cpp:648 msgid "French" msgstr "法語" #: src/Preferences.cpp:649 msgid "Galician" msgstr "加利西亞語" #: src/Preferences.cpp:650 msgid "German" msgstr "德語" #: src/Preferences.cpp:651 msgid "Greek" msgstr "希臘語" #: src/Preferences.cpp:652 msgid "Hebrew" msgstr "希伯來語" #: src/Preferences.cpp:653 msgid "Hungarian" msgstr "匈牙利語" #: src/Preferences.cpp:654 msgid "Italian" msgstr "義大利語" #: src/Preferences.cpp:655 msgid "Italian (Swiss)" msgstr "意大利語 (瑞士)" #: src/Preferences.cpp:656 msgid "Japanese" msgstr "日語" #: src/Preferences.cpp:657 msgid "Korean" msgstr "韓語" #: src/Preferences.cpp:658 msgid "Lithuanian" msgstr "立陶宛語" #: src/Preferences.cpp:659 msgid "Norwegian (Nynorsk)" msgstr "新挪威語" #: src/Preferences.cpp:660 msgid "Polish" msgstr "波蘭語" #: src/Preferences.cpp:661 msgid "Portuguese" msgstr "葡萄牙語" #: src/Preferences.cpp:662 msgid "Portuguese (Brazilian)" msgstr "葡萄牙語 (巴西)" #: src/Preferences.cpp:663 msgid "Romanian" msgstr "羅馬尼亞語" #: src/Preferences.cpp:664 msgid "Russian" msgstr "俄語" #: src/Preferences.cpp:665 msgid "Slovenian" msgstr "斯洛維尼亞語" #: src/Preferences.cpp:666 msgid "Spanish" msgstr "西班牙語" #: src/Preferences.cpp:667 msgid "Swedish" msgstr "瑞典語" #: src/Preferences.cpp:668 msgid "Turkish" msgstr "土耳其語" #: src/Preferences.cpp:669 msgid "Ukrainian" msgstr "烏克蘭語" #: src/Preferences.cpp:732 msgid "Change Language" msgstr "變更語言" #: src/Preferences.cpp:775 msgid "There are no translations installed for aMule" msgstr "沒有已安裝的 aMule 翻譯" #: src/Preferences.cpp:775 msgid "No languages available" msgstr "沒有可用的語言" #: src/Preferences.cpp:906 msgid "no options available" msgstr "沒有選項" #: src/Preferences.cpp:1589 msgid "Invalid category found, skipping" msgstr "找到無效的分類,略過" #: src/Preferences.cpp:1771 msgid "" "TCP port can't be higher than 65532 due to server UDP socket being TCP+3" msgstr "TCP 埠不可大於 65532,因爲伺服器 UDP 連接端點值爲 TCP 埠值+3" #: src/Preferences.cpp:1772 #, c-format msgid "Default port will be used (%d)" msgstr "使用預設通訊埠 (%d)" #: src/Preferences.cpp:1795 #, c-format msgid "Dropping non-existing shared directory: %s" msgstr "正在放棄不存在的分享目錄:%s " #: src/PrefsUnifiedDlg.cpp:177 src/Statistics.cpp:776 msgid "Connection" msgstr "連線" #: src/PrefsUnifiedDlg.cpp:178 src/SearchListCtrl.cpp:93 msgid "Directories" msgstr "目錄" #: src/PrefsUnifiedDlg.cpp:179 src/Statistics.cpp:802 msgid "Servers" msgstr "伺服器" #: src/PrefsUnifiedDlg.cpp:180 src/ServerListCtrl.cpp:93 msgid "Files" msgstr "檔案" #: src/PrefsUnifiedDlg.cpp:181 msgid "Security" msgstr "安全" #: src/PrefsUnifiedDlg.cpp:182 msgid "Interface" msgstr "介面" #: src/PrefsUnifiedDlg.cpp:184 msgid "Proxy" msgstr "代理伺服器" #: src/PrefsUnifiedDlg.cpp:185 msgid "Filters" msgstr "過濾" #: src/PrefsUnifiedDlg.cpp:186 msgid "Remote Controls" msgstr "遠端控制" #: src/PrefsUnifiedDlg.cpp:187 msgid "Online Signature" msgstr "線上簽名識別" #: src/PrefsUnifiedDlg.cpp:188 msgid "Advanced" msgstr "進階" #: src/PrefsUnifiedDlg.cpp:189 msgid "Events" msgstr "事件" #: src/PrefsUnifiedDlg.cpp:191 msgid "Debugging" msgstr "除錯" #: src/PrefsUnifiedDlg.cpp:249 msgid "" "The following variables will be substituted:\n" " %PARTFILE - full path to the file\n" " %PARTNAME - file name only" msgstr "" "可使用以下變數:\n" " %PARTFILE - 檔案的完整路徑\n" " %PARTNAME - 只有檔案名稱" #: src/PrefsUnifiedDlg.cpp:290 msgid "" "Do not change these setting unless you know\n" "what you are doing, otherwise you can easily\n" "make things worse for yourself.\n" "\n" "aMule will run fine without adjusting any of\n" "these settings." msgstr "" " \n" "如果您不清楚以下設定的意義,就請不要隨意變更,\n" "否則可能會弄巧成拙。\n" "\n" "即使不變更這些設定,aMule 一樣可以正常運作。" #: src/PrefsUnifiedDlg.cpp:351 #, c-format msgid "Failed to connect Cfg to widget with the ID %d and key %s" msgstr "無法以 ID %d、key %s 將 Cfg 與 widget 相連" #: src/PrefsUnifiedDlg.cpp:400 #, c-format msgid "Failed to transfer data from Cfg to Widget with the ID %d and key %s" msgstr "無法以 ID %d、key %s 將資料 Cfg 與 widget 連線" #: src/PrefsUnifiedDlg.cpp:417 msgid "The type of proxy you are connecting to" msgstr "正在連線的代理伺服器類型" #: src/PrefsUnifiedDlg.cpp:535 #, c-format msgid "Failed to transfer data from Widget to Cfg with the ID %d and key %s" msgstr "無法以 ID %d、key %s 從 Cfg 傳輸資料到 Widget" #: src/PrefsUnifiedDlg.cpp:590 msgid "" "aMule must be restarted to enable these changes:\n" "\n" msgstr "" "請重新啟動 aMule,變更的設定才能生效:\n" "\n" #: src/PrefsUnifiedDlg.cpp:597 msgid "- TCP port changed.\n" msgstr "- TCP 埠已變更。\n" #: src/PrefsUnifiedDlg.cpp:602 msgid "- UDP port changed.\n" msgstr "- UDP 埠已變更。\n" #: src/PrefsUnifiedDlg.cpp:607 msgid "- External connect port changed.\n" msgstr "- 已變更外部連線埠設定。\n" #: src/PrefsUnifiedDlg.cpp:611 msgid "- External connect acceptance changed.\n" msgstr "- 已變更外部連線設定。\n" #: src/PrefsUnifiedDlg.cpp:615 msgid "- External connect interface changed.\n" msgstr "- 已變更外部連線介面設定。\n" #: src/PrefsUnifiedDlg.cpp:619 #, fuzzy msgid "- Protocol obfuscation support changed.\n" msgstr "模糊協定" #: src/PrefsUnifiedDlg.cpp:628 msgid "" "Your Auto-update server list is empty.\n" "'Auto-update server list at startup' will be disabled." msgstr "" "您的自動更新伺服器清單是空的。\n" "「啟動時自動更新伺服器清單」功能將被停用。" #: src/PrefsUnifiedDlg.cpp:635 msgid "" "You have enabled external connections but have not specified a password.\n" "External connections cannot be enabled unless a valid password is specified." msgstr "" "您已經設定啓用外部連線但還沒有輸入密碼,\n" "輸入有效密碼之後,外部連線才能開始使用。" #: src/PrefsUnifiedDlg.cpp:647 msgid "- Language changed.\n" msgstr "- 語言已變更。\n" #: src/PrefsUnifiedDlg.cpp:652 msgid "- Temp folder changed.\n" msgstr "- 暫存資料夾已變更。\n" #: src/PrefsUnifiedDlg.cpp:657 msgid "- ED2K network enabled.\n" msgstr "- ED2K 網路已啟用。\n" #: src/PrefsUnifiedDlg.cpp:729 msgid "" "Both eD2k and Kad network are disabled.\n" "You won't be able to connect until you enable at least one of them." msgstr "" "eD2k 與 Kad 網路都已停用。\n" "請至少啟用一種,否則您將無法連線。" #: src/PrefsUnifiedDlg.cpp:733 msgid "" "Kad will not start if your UDP port is disabled.\n" "Enable UDP port or disable Kad." msgstr "" "如果您停用 UDP 埠,Kad 將無法啓動。\n" "請啟用 UDP 埠或停用 Kad。" #: src/PrefsUnifiedDlg.cpp:746 msgid "" "\n" "You MUST restart aMule now.\n" "If you do not restart now, don't complain if anything bad happens.\n" msgstr "" "\n" "您必須立即重新啟動 aMule,\n" "如果現在不重啟動,可能會發生不可預期的問題。\n" #: src/PrefsUnifiedDlg.cpp:846 msgid "" "Your Auto-update servers list is in blank.\n" "Please fill in at least one URL to point to a valid server.met file.\n" "Click on the button \"List\" by this checkbox to enter an URL." msgstr "" "伺服器清單自動更新設定空白。\n" "請至少輸入一個能取得有效 server.met 檔案的網址。\n" "請點選旁邊的「清單」按鈕後輸入。" #: src/PrefsUnifiedDlg.cpp:985 msgid "Temporary files" msgstr "暫存檔" #: src/PrefsUnifiedDlg.cpp:990 msgid "Incoming files" msgstr "新進檔案" #: src/PrefsUnifiedDlg.cpp:995 msgid "Online Signatures" msgstr "線上簽名識別" #: src/PrefsUnifiedDlg.cpp:1008 #, c-format msgid "Choose a folder for %s" msgstr "爲 %s 選擇資料夾" #: src/PrefsUnifiedDlg.cpp:1028 msgid "Browse for videoplayer" msgstr "瀏覽尋找影片播放器" #: src/PrefsUnifiedDlg.cpp:1032 msgid "Select browser" msgstr "設定瀏覽器" #: src/PrefsUnifiedDlg.cpp:1038 #, c-format msgid "Executable%s" msgstr "可執行%s" #: src/PrefsUnifiedDlg.cpp:1059 msgid "Edit server list" msgstr "編輯伺服器清單" #: src/PrefsUnifiedDlg.cpp:1060 msgid "" "Add here URL's to download server.met files.\n" "Only one url on each line." msgstr "" "加入可下載 server.met 檔案的網址。\n" "每一行一個網址。" #: src/PrefsUnifiedDlg.cpp:1119 src/PrefsUnifiedDlg.cpp:1138 #, c-format msgid "Update delay: %d second" msgid_plural "Update delay: %d seconds" msgstr[0] "更新延遲時間:%d 秒" #: src/PrefsUnifiedDlg.cpp:1126 #, c-format msgid "Time for average graph: %d minute" msgid_plural "Time for average graph: %d minutes" msgstr[0] "平均值圖表顯示時間:%d 分鐘" #: src/PrefsUnifiedDlg.cpp:1132 #, c-format msgid "Connections Graph Scale: %d" msgstr "網路連線圖表比例:%d" #: src/PrefsUnifiedDlg.cpp:1144 #, c-format msgid "File Buffer Size: %d byte" msgid_plural "File Buffer Size: %d bytes" msgstr[0] "檔案緩衝區大小:%d B" #: src/PrefsUnifiedDlg.cpp:1150 #, c-format msgid "Upload Queue Size: %d client" msgid_plural "Upload Queue Size: %d clients" msgstr[0] "上傳等候區大小:%d " #: src/PrefsUnifiedDlg.cpp:1157 #, c-format msgid "Server connection refresh interval: %d minute" msgid_plural "Server connection refresh interval: %d minutes" msgstr[0] "伺服器連線更新間隔時間:%d 分鐘" #: src/PrefsUnifiedDlg.cpp:1159 msgid "Server connection refresh interval: Disabled" msgstr "伺服器連線更新間隔時間:已停用" #: src/PrefsUnifiedDlg.cpp:1204 msgid "disabled" msgstr "已停用" #: src/PrefsUnifiedDlg.cpp:1227 #, c-format msgid "Execute command on '%s' event" msgstr "發生 %s 事件時執行指令" #: src/PrefsUnifiedDlg.cpp:1230 msgid "Enable command execution on core" msgstr "啓用在主程式端執行指令" #: src/PrefsUnifiedDlg.cpp:1238 msgid "Core command:" msgstr "主程式端指令:" #: src/PrefsUnifiedDlg.cpp:1247 msgid "Enable command execution on GUI" msgstr "啓用在圖形界面端執行指令" #: src/PrefsUnifiedDlg.cpp:1255 msgid "GUI command:" msgstr "圖形界面端指令:" #: src/PrefsUnifiedDlg.cpp:1264 msgid "The following variables will be replaced:" msgstr "" "使用以下變數:\n" " " #: src/SearchDlg.cpp:506 msgid "Min size must be smaller than max size. Max size ignored." msgstr "最小值必須小於最大值,最大值已被忽略。" #: src/SearchDlg.cpp:507 src/SearchDlg.cpp:566 msgid "Search warning" msgstr "搜尋警告" #: src/SearchDlg.cpp:626 src/SearchListCtrl.cpp:628 msgid "Main" msgstr "主要" #: src/SearchList.cpp:292 msgid "Kad search can't be done if Kad is not running" msgstr "Kad 網路尚未連線,無法使用 Kad 搜尋" #: src/SearchList.cpp:294 msgid "eD2k search can't be done if eD2k is not connected" msgstr "eD2k 網路尚未連線,無法使用 eD2k 搜尋" #: src/SearchList.cpp:343 msgid "Unexpected error while attempting Kad search: " msgstr "試圖 Kad 搜尋時發生無法預料的錯誤:" #: src/SearchListCtrl.cpp:91 src/SharedFilesCtrl.cpp:106 msgid "FileID" msgstr "檔案 ID" #: src/SearchListCtrl.cpp:624 msgid "File" msgstr "檔案" #: src/SearchListCtrl.cpp:634 msgid "Download in category" msgstr "分類下載" #: src/SearchListCtrl.cpp:639 #, c-format msgid "Get %s for this file" msgstr "取得這個檔案的 %s" #: src/SearchListCtrl.cpp:643 msgid "Search related files (eD2k, local server)" msgstr "搜尋相關檔案 (eD2k,本地伺服器)" #: src/SearchListCtrl.cpp:648 msgid "Mark as known file" msgstr "標記為已知檔案" #: src/SearchListCtrl.cpp:652 src/ServerListCtrl.cpp:427 msgid "Copy eD2k link to clipboard" msgstr "複製 eD2k 連結到剪貼簿" #: src/SearchListCtrl.cpp:1014 msgid "Canceled" msgstr "已取消" #: src/SearchListCtrl.cpp:1017 msgid "New" msgstr "新" #: src/ServerConnect.cpp:74 msgid "" "Failed to connect to all obfuscated servers listed. Making another pass " "without obfuscation." msgstr "無法與清單中的模糊伺服器連線,嘗試不使用模糊協定。" #: src/ServerConnect.cpp:79 msgid "Failed to connect to all servers listed. Making another pass." msgstr "無法與清單中的模糊伺服器連線,開始下一輪嘗試。" #: src/ServerConnect.cpp:94 src/ServerConnect.cpp:148 msgid "eD2k network disabled on preferences, not connecting." msgstr "eD2k 網路已在偏好設定中被停用了,未連線。" #: src/ServerConnect.cpp:122 src/ServerConnect.cpp:135 msgid "No valid servers to which to connect found in server list" msgstr "在伺服器清單中找不到有效的伺服器可連線" #: src/ServerConnect.cpp:198 #, c-format msgid "Connected to %s (%s:%i)" msgstr "已連線到 %s (%s:%i)" #: src/ServerConnect.cpp:274 #, c-format msgid "Connection established on: %s" msgstr "已連線到:%s" #: src/ServerConnect.cpp:346 msgid "Fatal Error while trying to connect. Internet connection might be down" msgstr "連線時發生嚴重錯誤. 網路連線可能有問題" #: src/ServerConnect.cpp:350 #, c-format msgid "Lost connection to %s (%s:%i)" msgstr "已與 %s (%s:%i) 失去連線" #: src/ServerConnect.cpp:360 #, c-format msgid "%s (%s:%i) appears to be dead." msgstr "%s (%s:%i) 可能已當機。" #: src/ServerConnect.cpp:373 #, c-format msgid "%s (%s:%i) appears to be full." msgstr "%s (%s:%i) 可能已客滿。" #: src/ServerConnect.cpp:392 #, c-format msgid "Automatic connection to server will retry in %d second" msgid_plural "Automatic connection to server will retry in %d seconds" msgstr[0] "在 %d 秒後自動連線到伺服器" #: src/ServerConnect.cpp:412 msgid "Connection lost" msgstr "失去連線" #: src/ServerConnect.cpp:419 #, c-format msgid "Connecting to %s (%s:%i) failed." msgstr "無法連線到 %s (%s:%i)。" #: src/ServerConnect.cpp:461 msgid "ERROR: Socket invalid at timeout check" msgstr "錯誤:連接端點於逾時查驗時失效" #: src/ServerConnect.cpp:471 #, c-format msgid "Connection attempt to %s (%s:%i) timed out." msgstr "連線到 %s (%s:%i) 時逾時。" #: src/ServerConnect.cpp:646 msgid "Received late result of DNS lookup, discarding." msgstr "接收到過期的 DNS 查閱,放棄中。" #: src/ServerList.cpp:88 #, c-format msgid "Loading server.met file: %s" msgstr "正在載入 server.met 檔案:%s" #: src/ServerList.cpp:93 msgid "Server.met file not found!" msgstr "找不到 server.met 檔案!" #: src/ServerList.cpp:101 #, c-format msgid "Failed to load server.met file '%s', unknown format encountered." msgstr "無法載入 server.met 檔案 %s,為不明格式。" #: src/ServerList.cpp:107 msgid "Failed to open server.met!" msgstr "無法開啟 server.met !" #: src/ServerList.cpp:118 #, c-format msgid "Server.met file corrupt, found invalid versiontag: 0x%x, size %i" msgstr "server.met 檔案損壞,發現無效的版本標記:0x%x, 大小 %i" #: src/ServerList.cpp:174 #, c-format msgid "%i server in server.met found" msgid_plural "%i servers in server.met found" msgstr[0] "在 server.met 中找到 %i 個伺服器" #: src/ServerList.cpp:176 #, c-format msgid "%d server added" msgid_plural "%d servers added" msgstr[0] "已加入 %d 個伺服器" #: src/ServerList.cpp:179 msgid "Error: the file 'server.met' is corrupted: " msgstr "錯誤: server.met 檔案已經損壞: " #: src/ServerList.cpp:183 msgid "IO error while reading 'server.met': " msgstr "讀取 server.met 時發生 IO 錯誤:" #: src/ServerList.cpp:196 #, c-format msgid "Server not added: [%s:%d] does not specify a valid port." msgstr "未加入伺服器:[%s:%d] 的通訊埠無效。" #: src/ServerList.cpp:214 #, c-format msgid "Server not added: The IP of [%s:%d] is filtered or invalid." msgstr "未加入伺服器:[%s:%d] 已被過濾或無效。" #: src/ServerList.cpp:233 #, c-format msgid "Server not added: Server with matching IP:Port [%s:%d] found in list." msgstr "未加入伺服器:%s:%d 已在伺服器清單中。" #: src/ServerList.cpp:251 #, c-format msgid "Server added: Server at [%s:%d] using the name '%s'." msgstr "已加入伺服器:[%s:%d] 名稱 %s 。" #: src/ServerList.cpp:346 msgid "" "You are connected to the server you are trying to delete. please disconnect " "first." msgstr "現在正連線到要刪除的伺服器。請先中斷連線。" #: src/ServerList.cpp:518 #, c-format msgid "Failed to open '%s'" msgstr "無法開啟 %s" #: src/ServerList.cpp:686 msgid "Failed to save server.met!" msgstr "無法儲存 server.met !" #: src/ServerList.cpp:833 msgid "Invalid URL" msgstr "無效網址" #: src/ServerList.cpp:856 #, c-format msgid "Finished downloading the server list from %s" msgstr "完成從 %s 下載伺服器清單" #: src/ServerList.cpp:874 msgid "" "No server list address entry in 'addresses.dat' found. Please paste a valid " "server list address into this file in order to auto-update your server list" msgstr "" "在 addresses.dat 中找不到伺服器清單檔位址。請在檔案中貼上有效的伺服器清單檔位" "址,以自動更新您的伺服器清單" #: src/ServerList.cpp:887 #, c-format msgid "Start downloading server list from %s" msgstr "開始從 %s下載伺服器清單" #: src/ServerList.cpp:896 #, c-format msgid "WARNING: invalid URL specified for auto-updating of servers: %s" msgstr "警告:自動更新伺服器的網址無效 - %s" #: src/ServerList.cpp:900 msgid "No valid server.met auto-download url on addresses.dat" msgstr "addresses.dat 檔案中沒有有效的自動更新伺服器清單網址" #: src/ServerList.cpp:916 #, c-format msgid "Failed to download the server list from %s" msgstr "無法從 %s 下載伺服器清單" #: src/ServerList.cpp:990 msgid "" "Local server is filtered by the IPFilters, reconnecting to a different " "server!" msgstr "本地伺服器被 IP 過濾器過濾掉了,正在重新連線到其他伺服器!" #: src/ServerListCtrl.cpp:87 msgid "Server Name" msgstr "伺服器名稱" #: src/ServerListCtrl.cpp:88 msgid "Address" msgstr "位址" #: src/ServerListCtrl.cpp:89 msgid "Port" msgstr "通訊埠" #: src/ServerListCtrl.cpp:90 msgid "Description" msgstr "說明" #: src/ServerListCtrl.cpp:91 msgid "Ping" msgstr "Ping" #: src/ServerListCtrl.cpp:92 msgid "Users" msgstr "使用者" #: src/ServerListCtrl.cpp:96 msgid "Static" msgstr "靜態" # #: src/ServerListCtrl.cpp:97 src/SharedFilePeersListCtrl.cpp:34 #: src/SourceListCtrl.cpp:33 src/Statistics.cpp:959 msgid "Version" msgstr "版本" #: src/ServerListCtrl.cpp:149 msgid "" "You are connected to a server you are trying to delete. Please disconnect " "first. The server was NOT deleted." msgstr "您現在正和要刪除的伺服器連線,該伺服器暫時無法刪除。請先中斷連線。" #: src/ServerListCtrl.cpp:152 msgid "(Unknown name)" msgstr "(不明名稱)" #: src/ServerListCtrl.cpp:154 #, c-format msgid "Are you sure you want to delete the static server %s" msgstr "您確定要刪除靜態伺服器 %s" #: src/ServerListCtrl.cpp:348 #, c-format msgid "Servers (%i)" msgstr "伺服器 (%i)" #: src/ServerListCtrl.cpp:397 src/ServerSocket.cpp:255 #: src/ServerSocket.cpp:270 src/ServerWnd.cpp:178 msgid "Server" msgstr "伺服器" #: src/ServerListCtrl.cpp:402 msgid "Connect to server" msgstr "連線到伺服器" #: src/ServerListCtrl.cpp:408 msgid "Mark server as static" msgstr "標記爲靜態伺服器" #: src/ServerListCtrl.cpp:409 msgid "Mark server as non-static" msgstr "標記爲非靜態伺服器" #: src/ServerListCtrl.cpp:411 msgid "Mark servers as static" msgstr "標記爲靜態伺服器" #: src/ServerListCtrl.cpp:412 msgid "Mark servers as non-static" msgstr "標記爲非靜態伺服器" #: src/ServerListCtrl.cpp:418 msgid "Remove server" msgstr "移除伺服器" #: src/ServerListCtrl.cpp:420 msgid "Remove servers" msgstr "移除伺服器" #: src/ServerListCtrl.cpp:422 msgid "Remove all servers" msgstr "移除所有伺服器" #: src/ServerListCtrl.cpp:429 msgid "Copy eD2k links to clipboard" msgstr "複製 eD2k 連結到剪貼簿" #: src/ServerListCtrl.cpp:437 msgid "Reconnect to server" msgstr "重新連線到伺服器" #: src/ServerListCtrl.cpp:526 msgid "Are you sure that you wish to delete all servers?" msgstr "您確定要刪除所有伺服器嗎?" #: src/ServerListCtrl.cpp:542 msgid "Are you sure that you wish to delete the selected server?" msgstr "您確定要刪除選取的伺服器嗎?" #: src/ServerListCtrl.cpp:544 msgid "Are you sure that you wish to delete the selected servers?" msgstr "您確定要刪除選取的伺服器嗎?" #: src/ServerSocket.cpp:257 #, c-format msgid "ERROR: %s (%s) - %s" msgstr "錯誤:%s (%s) - %s" #: src/ServerSocket.cpp:272 #, c-format msgid "WARNING: %s (%s) - %s" msgstr "警告:%s (%s) - %s" #: src/ServerSocket.cpp:411 #, c-format msgid "New clientid is %u" msgstr "新客戶端 ID:%u" #: src/ServerSocket.cpp:413 msgid "WARNING: You have received Low-ID!" msgstr "警告:您現在是 Low-ID!" #: src/ServerSocket.cpp:414 msgid "\tMost likely this is because you're behind a firewall or router." msgstr "\t可能是因爲受到防火牆或網路分享器影響。" #: src/ServerSocket.cpp:415 msgid "\tFor more information, please refer to http://wiki.amule.org" msgstr "\t請參考 http://wiki.amule.org 的資訊" #: src/ServerSocket.cpp:471 msgid "Unknown server info received! - too short" msgstr "收到不明伺服器資訊 ! - 長度過短" #: src/ServerSocket.cpp:532 #, c-format msgid "Received %d new server" msgid_plural "Received %d new servers" msgstr[0] "收到 %d 個新伺服器" #: src/ServerSocket.cpp:535 msgid "Saving of server-list completed." msgstr "伺服器清單儲存完畢。" #: src/ServerSocket.cpp:585 msgid "Server rejected last command" msgstr "伺服器已拒絕上一個指令" #: src/ServerSocket.cpp:593 src/ServerSocket.cpp:595 #, c-format msgid "Bogus packet received from server: %s" msgstr "從伺服器收到偽裝封包:%s" #: src/ServerSocket.cpp:597 #, c-format msgid "Unhandled error while processing packet from server: %s" msgstr "處理伺服器傳來的封包時發生無法處理的錯誤:%s " #: src/ServerSocket.cpp:636 src/ServerSocket.cpp:640 #, c-format msgid "Cannot create DNS solving thread for connecting to %s" msgstr "無法送出 DNS 解析執行緒以連線到 %s" #: src/ServerSocket.cpp:722 #, c-format msgid "Server IP %s (%s) is filtered. Not connecting." msgstr "伺服器 IP %s (%s) 已被過濾。未連線。" #: src/ServerSocket.cpp:732 msgid "using protocol obfuscation." msgstr ",使用模糊協定。" #: src/ServerSocket.cpp:741 #, c-format msgid "Connecting to %s (%s - %s:%i) %s" msgstr "正在連線到 %s (%s - %s:%i) %s" #: src/ServerSocket.cpp:754 #, c-format msgid "Could not solve dns for server %s: Unable to connect!" msgstr "無法解析伺服器 %s 的 DNS 資訊:無法連線!" #: src/ServerWnd.cpp:102 msgid "Server not added: No IP or hostname specified." msgstr "伺服器未加入:沒有 IP 或主機名稱。" #: src/ServerWnd.cpp:107 msgid "Server not added: Invalid server-port specified." msgstr "伺服器未加入:無效的伺服器通訊埠。" #: src/ServerWnd.cpp:160 msgid "eD2k Status:" msgstr "eD2k 狀態:" #: src/ServerWnd.cpp:171 msgid "ID" msgstr "ID" #: src/ServerWnd.cpp:203 msgid "Kademlia Status:" msgstr "Kad 狀態:" #: src/ServerWnd.cpp:206 msgid "Running in LAN mode" msgstr "在區域網路模式下執行" #: src/ServerWnd.cpp:206 msgid "Running" msgstr "執行中" #: src/ServerWnd.cpp:209 msgid "Status:" msgstr "狀態:" #: src/ServerWnd.cpp:212 msgid "Connection State:" msgstr "連線狀態:" #: src/ServerWnd.cpp:214 #, c-format msgid "Firewalled - open TCP port %d in your router or firewall" msgstr "防火牆內 - 請設定您的路由器或防火牆開啟 TCP 埠 %d " #: src/ServerWnd.cpp:216 msgid "UDP Connection State:" msgstr "UDP 連線狀態:" #: src/ServerWnd.cpp:219 #, c-format msgid "Firewalled - open UDP port %d in your router or firewall" msgstr "防火牆內 - 請設定您的路由器或防火牆開啟 UDP 埠 %d " #: src/ServerWnd.cpp:223 msgid "Firewalled state: " msgstr "防火牆狀態:" #: src/ServerWnd.cpp:229 msgid "No buddy required - TCP port open" msgstr "沒有好友要求 - TCP 埠開啟" #: src/ServerWnd.cpp:231 msgid "No buddy required - UDP port open" msgstr "沒有好友要求 - UDP 埠開啟" #: src/ServerWnd.cpp:233 msgid "No buddy" msgstr "沒有好友" #: src/ServerWnd.cpp:237 msgid "Connecting to buddy" msgstr "正在與好友連線" #: src/ServerWnd.cpp:240 #, c-format msgid "Connected to buddy at %s" msgstr "已與在 %s 的好友連線" #: src/ServerWnd.cpp:250 msgid "Indexed sources:" msgstr "索引來源:" #: src/ServerWnd.cpp:252 msgid "Indexed keywords:" msgstr "索引關鍵字:" #: src/ServerWnd.cpp:254 msgid "Indexed notes:" msgstr "索引註釋:" #: src/ServerWnd.cpp:256 msgid "Indexed load:" msgstr "索引負載:" #: src/ServerWnd.cpp:259 msgid "Average Users:" msgstr "平均使用者數:" #: src/ServerWnd.cpp:262 msgid "Average Files:" msgstr "平均檔案數:" #: src/ServerWnd.cpp:267 src/TextClient.cpp:730 msgid "Not running" msgstr "未執行" #: src/SharedFileList.cpp:332 #, c-format msgid "Adding file %s to shares" msgstr "正在加入分享檔案 %s" #: src/SharedFileList.cpp:371 #, c-format msgid "Found %i known shared file" msgid_plural "Found %i known shared files" msgstr[0] "找到 %i 個已知的分享檔案" #: src/SharedFileList.cpp:377 #, c-format msgid "Found %i known shared file, %i unknown" msgid_plural "Found %i known shared files, %i unknown" msgstr[0] "發現 %i 個已知、%i 個不明的分享檔案" #: src/SharedFileList.cpp:386 #, c-format msgid "ERROR: Attempted to share %s" msgstr "錯誤:試圖分享 %s" #: src/SharedFileList.cpp:410 #, c-format msgid "Shared directory not found, skipping: %s" msgstr "找不到分享目錄,略過:%s" #: src/SharedFileList.cpp:480 #, c-format msgid "No shareable files found in directory: %s" msgstr "目錄中找不到可分享的檔案:%s" #: src/SharedFilePeersListCtrl.cpp:28 src/SourceListCtrl.cpp:28 msgid "User Name" msgstr "使用者名稱" #: src/SharedFilePeersListCtrl.cpp:30 msgid "Download Speed" msgstr "下載速度" #: src/SharedFilePeersListCtrl.cpp:32 msgid "Upload Speed" msgstr "上傳速度" #: src/SharedFilePeersListCtrl.cpp:33 src/SourceListCtrl.cpp:32 msgid "Available Parts" msgstr "可取得的部份" #: src/SharedFilePeersListCtrl.cpp:35 msgid "Upload Status" msgstr "上傳狀態" #: src/SharedFilePeersListCtrl.cpp:36 src/SourceListCtrl.cpp:34 msgid "Download Status" msgstr "下載狀態" #: src/SharedFilePeersListCtrl.cpp:37 src/SourceListCtrl.cpp:35 msgid "Origin" msgstr "來源" #: src/SharedFilePeersListCtrl.cpp:38 src/SourceListCtrl.cpp:36 msgid "Local File Name" msgstr "本地檔案名稱" #: src/SharedFilePeersListCtrl.cpp:39 src/SourceListCtrl.cpp:38 msgid "Shares File List" msgstr "分享檔案清單" #: src/SharedFilesCtrl.cpp:107 msgid "Requests" msgstr "要求" #: src/SharedFilesCtrl.cpp:108 msgid "Accepted Requests" msgstr "已接受要求" #: src/SharedFilesCtrl.cpp:109 msgid "Transferred Data" msgstr "已傳輸資料" #: src/SharedFilesCtrl.cpp:110 msgid "Share Ratio" msgstr "分享率" #: src/SharedFilesCtrl.cpp:111 msgid "Obtained Parts" msgstr "已獲得部分" #: src/SharedFilesCtrl.cpp:112 msgid "Complete Sources" msgstr "完整來源" #: src/SharedFilesCtrl.cpp:113 msgid "Directory Path" msgstr "所在目錄" #: src/SharedFilesCtrl.cpp:150 msgid "Add Comment/Rating" msgstr "加入註解/評價" #: src/SharedFilesCtrl.cpp:152 msgid "Edit Comment/Rating" msgstr "編輯註解/評價" #: src/SharedFilesCtrl.cpp:156 msgid "Rename" msgstr "重新命名" #: src/SharedFilesCtrl.cpp:160 msgid "Add files in collection to transfer list" msgstr "加入收藏中的檔案到傳輸清單" #: src/SharedFilesCtrl.cpp:163 msgid "Copy magnet &URI to clipboard" msgstr "複製 magnet 網址到剪貼簿(&U)" #: src/SharedFilesCtrl.cpp:165 msgid "Copy eD2k link to clipboard (&Source)" msgstr "複製 eD2k 連結到剪貼簿 (來源) (&S)" #: src/SharedFilesCtrl.cpp:166 msgid "Copy eD2k link to clipboard (Source) (&With Crypt options)" msgstr "複製 eD2k 連結到剪貼簿 (來源,加密) (&W)" #: src/SharedFilesCtrl.cpp:167 msgid "Copy eD2k link to clipboard (&Hostname)" msgstr "複製 eD2k 連結到剪貼簿 (主機名稱) (&H)" #: src/SharedFilesCtrl.cpp:168 msgid "Copy eD2k link to clipboard (Hostname) (With &Crypt options)" msgstr "複製 eD2k 連結到剪貼簿 (主機名稱,加密) (&C)" #: src/SharedFilesCtrl.cpp:169 msgid "Copy eD2k link to clipboard (&AICH info)" msgstr "複製 eD2k 連結到剪貼簿 (AICH 資訊) (&A)" #: src/SharedFilesCtrl.cpp:170 #, fuzzy msgid "Copy eD2k link to clipboard (&AICH info + Source)" msgstr "複製 eD2k 連結到剪貼簿 (AICH 資訊) (&A)" #: src/SharedFilesCtrl.cpp:318 msgid "You need a HighID to create a valid sourcelink" msgstr "您需要一個 HighID 才能建立有效來源連結" #: src/SharedFilesCtrl.cpp:465 #, c-format msgid "Shared Files (%i)" msgstr "分享檔案 (%i)" #: src/SharedFilesCtrl.cpp:600 msgid "[PartFile]" msgstr "[--暫存檔--]" #: src/SourceListCtrl.cpp:37 msgid "Remote File Name" msgstr "遠端檔案名稱" #: src/Statistics.cpp:737 #, c-format msgid "Uploaded Data (Session (Total)): %s" msgstr "本次上傳量/總計上傳量:%s" #: src/Statistics.cpp:739 src/Statistics.cpp:760 #, c-format msgid "Total Overhead (Packets): %s" msgstr "額外支出傳輸量/封包: %s" #: src/Statistics.cpp:740 src/Statistics.cpp:761 #, c-format msgid "File Request Overhead (Packets): %s" msgstr " 檔案要求支出傳輸量/封包:%s" #: src/Statistics.cpp:742 src/Statistics.cpp:763 #, c-format msgid "Source Exchange Overhead (Packets): %s" msgstr " 來源交換支出傳輸量/封包: %s" #: src/Statistics.cpp:744 src/Statistics.cpp:765 #, c-format msgid "Server Overhead (Packets): %s" msgstr " 伺服器支出傳輸量/封包: %s" #: src/Statistics.cpp:746 src/Statistics.cpp:767 #, c-format msgid "Kad Overhead (Packets): %s" msgstr " Kad 網路支出傳輸量/封包: %s" #: src/Statistics.cpp:748 src/Statistics.cpp:769 #, c-format msgid "Crypt overhead (UDP): %s" msgstr " 加密支出傳輸量/封包: %s" #: src/Statistics.cpp:750 #, c-format msgid "Active Uploads: %s" msgstr "目前上傳數:%s" #: src/Statistics.cpp:751 #, c-format msgid "Waiting Uploads: %s" msgstr "等候中:%s" #: src/Statistics.cpp:752 #, c-format msgid "Total successful upload sessions: %s" msgstr "上傳成功總次數:%s" #: src/Statistics.cpp:753 #, c-format msgid "Total failed upload sessions: %s" msgstr "上傳失敗總次數:%s" #: src/Statistics.cpp:755 #, c-format msgid "Average upload time: %s" msgstr "平均上傳時間:%s" #: src/Statistics.cpp:758 #, c-format msgid "Downloaded Data (Session (Total)): %s" msgstr "本次下載量/總計下載量:%s" #: src/Statistics.cpp:771 #, c-format msgid "Found Sources: %s" msgstr "找到的來源數:%s" #: src/Statistics.cpp:772 #, c-format msgid "Active Downloads (chunks): %s" msgstr "目前下載中區塊數:%s" #: src/Statistics.cpp:774 #, c-format msgid "Session UL:DL Ratio (Total): %s" msgstr "本次上傳下載比率 (總計):%s" #: src/Statistics.cpp:777 #, c-format msgid "Average download rate (Session): %s" msgstr "本次平均下載速度:%s" #: src/Statistics.cpp:778 #, c-format msgid "Average upload rate (Session): %s" msgstr "本次平均上傳速度:%s" #: src/Statistics.cpp:779 #, c-format msgid "Max download rate (Session): %s" msgstr "本次最大下載速度:%s" #: src/Statistics.cpp:780 #, c-format msgid "Max upload rate (Session): %s" msgstr "本次最大上傳速度:%s" #: src/Statistics.cpp:781 #, c-format msgid "Reconnects: %i" msgstr "重新連線次數:%i" #: src/Statistics.cpp:782 #, c-format msgid "Time Since First Transfer: %s" msgstr "首次傳輸至今時間:%s" #: src/Statistics.cpp:783 #, c-format msgid "Connected To Server Since: %s" msgstr "與伺服器連線時間:%s" #: src/Statistics.cpp:784 #, c-format msgid "Active Connections (estimate): %i" msgstr "目前連線數 (估計值):%i" #: src/Statistics.cpp:785 #, c-format msgid "Max Connection Limit Reached: %s" msgstr "達到最大連線量次數:%s" #: src/Statistics.cpp:786 #, c-format msgid "Average Connections (estimate): %g" msgstr "平均連線數 (估計值):%g" #: src/Statistics.cpp:788 #, c-format msgid "Peak Connections (estimate): %i" msgstr "最高連線數 (估計值):%i" #: src/Statistics.cpp:790 msgid "Clients" msgstr "客戶端" #: src/Statistics.cpp:791 #, c-format msgid "Unknown: %s" msgstr "不明:%s" #: src/Statistics.cpp:797 #, c-format msgid "Filtered: %s" msgstr "已過濾:%s" #: src/Statistics.cpp:798 #, c-format msgid "Banned: %s" msgstr "已封鎖:%s" #: src/Statistics.cpp:799 #, c-format msgid "Total: %i Known: %i" msgstr "總計:%i - 已知:%i" #: src/Statistics.cpp:803 #, c-format msgid "Working Servers: %i" msgstr "有效:%i" #: src/Statistics.cpp:804 #, c-format msgid "Failed Servers: %i" msgstr "無效:%i" #: src/Statistics.cpp:805 #, c-format msgid "Total: %s" msgstr "總計:%s" #: src/Statistics.cpp:806 #, c-format msgid "Deleted Servers: %s" msgstr "已刪除:%s" #: src/Statistics.cpp:807 #, c-format msgid "Filtered Servers: %s" msgstr "已過濾:%s" #: src/Statistics.cpp:808 #, c-format msgid "Users on Working Servers: %llu" msgstr "有效使用者數:%llu" #: src/Statistics.cpp:809 #, c-format msgid "Files on Working Servers: %llu" msgstr "有效檔案數:%llu" #: src/Statistics.cpp:810 #, c-format msgid "Total Users: %llu" msgstr "使用者總數:%llu" #: src/Statistics.cpp:811 #, c-format msgid "Total Files: %llu" msgstr "檔案總數:%llu" #: src/Statistics.cpp:812 #, c-format msgid "Server Occupation: %.2f%%" msgstr "伺服器使用率:%.2f%%" #: src/Statistics.cpp:816 #, c-format msgid "Number of Shared Files: %s" msgstr "檔案數:%s" #: src/Statistics.cpp:817 #, c-format msgid "Total size of Shared Files: %s" msgstr "檔案總容量:%s" #: src/Statistics.cpp:819 #, c-format msgid "Average file size: %s" msgstr "平均檔案大小:%s" #: src/Statistics.cpp:960 msgid "Operating System" msgstr "作業系統" #: src/Statistics.cpp:985 msgid "Not Received" msgstr "未收到" #: src/StatisticsDlg.cpp:189 #, c-format msgid "Active connections (1:%u)" msgstr "目前連線數 (1:%u)" #: src/StatTree.cpp:550 msgid "Not available" msgstr "不可用" #: src/StatTree.cpp:594 src/StatTree.cpp:605 msgid "Never" msgstr "無" #: src/TerminationProcess.cpp:47 #, c-format msgid "Command '%s' with pid '%d' has finished with status code '%d'." msgstr "指令「 %s 」(pid %d) 的傳回狀態值爲「%d」。 " #: src/TextClient.cpp:134 msgid "Execute and exit." msgstr "執行 後離開。" #: src/TextClient.cpp:209 msgid "Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n" msgstr "IP 格式無效。請使用 xxx.xxx.xxx.xxx:xxxx\n" #: src/TextClient.cpp:323 msgid "" "This command requires an argument. Valid arguments: 'all', filename, or a " "number.\n" msgstr "這個指令需要引數,有效引數為:「all」、「檔案名」或「數字」。\n" #: src/TextClient.cpp:359 msgid "Processing by hash: " msgstr "正在依 hash 值處理:" #: src/TextClient.cpp:373 msgid "Processing by filename: " msgstr "正在依檔名處理:" #: src/TextClient.cpp:395 msgid "This command requires an argument. Valid arguments: a file hash.\n" msgstr "這個指令需要引數,有效引數為:「檔案 hash 值」。\n" #: src/TextClient.cpp:421 msgid "Not a valid number\n" msgstr "不是有效的數字\n" #: src/TextClient.cpp:425 msgid "Not a valid hash (length should be exactly 32 chars)\n" msgstr "不是有效的 hash 值 (必須爲 32 碼)\n" #. TRANSLATORS: #. 'help search' is a command to the program, do not translate it. #: src/TextClient.cpp:534 #, fuzzy msgid "" "No search type defined.\n" "Type 'help search' to get more help.\n" msgstr "輸入「 %s 」顯示更多協助資訊。\n" #: src/TextClient.cpp:553 #, fuzzy, c-format msgid "Download File: %lu %s\n" msgstr "下載大小:%i " #: src/TextClient.cpp:645 src/webserver/src/WebServer.cpp:395 msgid "Request failed with an unknown error." msgstr "要求失敗,不明的錯誤。" #: src/TextClient.cpp:649 msgid "Operation was successful." msgstr "操作成功。" #: src/TextClient.cpp:655 #, c-format msgid "Request failed with the following error: %s" msgstr "要求失敗,錯誤:%s" #: src/TextClient.cpp:669 #, c-format msgid "IP filtering for clients is %s.\n" msgstr "對客戶端的 IP 過濾:%s 。\n" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "OFF" msgstr "關" #: src/TextClient.cpp:670 src/TextClient.cpp:676 msgid "ON" msgstr "開" #: src/TextClient.cpp:675 #, c-format msgid "IP filtering for servers is %s.\n" msgstr "對伺服器的 IP 過濾:%s 。\n" #: src/TextClient.cpp:680 #, c-format msgid "Current IPFilter Level is %d.\n" msgstr "目前的 IP 過濾等級:%d 。\n" #: src/TextClient.cpp:687 #, c-format msgid "Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n" msgstr "頻寬限制:上傳 %u KB/s、下載 %u KB/s 。\n" #: src/TextClient.cpp:701 msgid "eD2k" msgstr "eD2k" #: src/TextClient.cpp:706 #, c-format msgid "Connected to %s %s %s" msgstr "已連線到 %s %s %s" #: src/TextClient.cpp:712 msgid "Now connecting" msgstr "正在連線" #: src/TextClient.cpp:721 src/utils/wxCas/src/wxcasframe.cpp:1051 #: src/utils/wxCas/src/wxcasframe.cpp:1073 msgid "firewalled" msgstr "防火牆內" #: src/TextClient.cpp:723 src/utils/wxCas/src/wxcasframe.cpp:1049 #: src/utils/wxCas/src/wxcasframe.cpp:1071 msgid "ok" msgstr "ok" #: src/TextClient.cpp:736 #, c-format msgid "" "\n" "Download:\t%s" msgstr "" "\n" "下載:\t%s" #: src/TextClient.cpp:739 #, c-format msgid "" "\n" "Upload:\t%s" msgstr "" "\n" "上傳:\t%s" #: src/TextClient.cpp:742 #, c-format msgid "" "\n" "Clients in queue:\t%d\n" msgstr "" "\n" "等候區內人數:\t%d\n" #: src/TextClient.cpp:745 #, c-format msgid "" "\n" "Total sources:\t%d\n" msgstr "" "\n" "來源總數:\t%d\n" #: src/TextClient.cpp:818 #, c-format msgid "Number of search results: %i\n" msgstr "搜尋結果:%i\n" #: src/TextClient.cpp:832 #, c-format msgid "Search progress: %u %% \n" msgstr "搜尋進度:%u %% \n" #: src/TextClient.cpp:834 msgid "Search progress not available" msgstr "沒有進行中的搜尋" #: src/TextClient.cpp:839 #, c-format msgid "Received an unknown reply from the server, OpCode = %#x." msgstr "從伺服器收到不明的回應,指令碼是 %#x 。" #: src/TextClient.cpp:852 msgid "Show short status information." msgstr "顯示簡短狀態資訊。" #: src/TextClient.cpp:853 msgid "Show connection status, current up/download speeds, etc.\n" msgstr "顯示連線狀態、目前上傳下載速度等等。\n" #: src/TextClient.cpp:855 msgid "Show full statistics tree." msgstr "顯示完整統計資料。" #: src/TextClient.cpp:856 msgid "" "Optionally, a number in the range 0-255 can be passed as an argument to " "this\n" "command, which tells how many entries of the client version subtrees should " "be\n" "shown. Passing 0 or omitting it means 'unlimited'.\n" "\n" "Example: 'statistics 5' will show only the top 5 versions for each client " "type.\n" msgstr "" "可附加一個 0 到 255 之間的數字作爲此指令的引數, 以用來設定\n" "每種客戶端軟體各要顯示多少個版本數。設爲 0 表示全部顯示。\n" "\n" "例如:「 statistics 5 」則每種客戶端軟體最多會顯示 5 個版本。\n" "\n" #: src/TextClient.cpp:858 msgid "Shut down aMule." msgstr "關閉 aMule 。" #: src/TextClient.cpp:859 msgid "" "Shut down the remote running core (amule/amuled).\n" "This will also shut down the text client, since it is unusable without a\n" "running core.\n" msgstr "" "關閉遠端執行中主程式 (amule 或 amuled)。\n" "這會導致文字模式客戶端程式因缺少執行核心而一起被關閉。\n" "\n" #: src/TextClient.cpp:861 msgid "Reload the given object." msgstr "重新載入指定的項目。" #: src/TextClient.cpp:862 msgid "Reload shared files list." msgstr "重新載入分享檔案清單。" #: src/TextClient.cpp:864 msgid "Reload IP filtering table." msgstr "重新載入 IP 過濾表。" #: src/TextClient.cpp:865 msgid "Reload current IP filtering table." msgstr "重新載入現用的 IP 過濾表。" #: src/TextClient.cpp:866 msgid "Update IP filtering table from URL." msgstr "從網址更新 IP 過濾表。" #: src/TextClient.cpp:867 msgid "If URL is omitted the URL from the preferences is used." msgstr "如果網址被省略掉,則使用偏好設定中的網址。" #: src/TextClient.cpp:869 msgid "Connect to the network." msgstr "連線到網路。" #: src/TextClient.cpp:870 msgid "" "This will connect to all networks that are enabled in Preferences.\n" "You may also optionally specify a server address in IP:Port form, to connect " "to\n" "that server only. The IP must be a dotted decimal IPv4 address,\n" "or a resolvable DNS name." msgstr "" "這將連線到偏好設定中設定啓用的所有網路。\n" "您也可以用「 IP:Port 」格式指定要連線的伺服器。\n" "此位址必須是用句點隔開的十進位 IPv4 位址,\n" "或者是可以解析的 DNS 網域名稱。" #: src/TextClient.cpp:871 msgid "Connect to eD2k only." msgstr "只連線到 eD2k 網路。" #: src/TextClient.cpp:872 msgid "Connect to Kad only." msgstr "只連線到 Kad 網路。" #: src/TextClient.cpp:874 msgid "Disconnect from the network." msgstr "中斷網路連線。" #: src/TextClient.cpp:875 msgid "This will disconnect from all networks that are currently connected.\n" msgstr "這將中斷目前所有已連線的網路。\n" #: src/TextClient.cpp:876 msgid "Disconnect from eD2k only." msgstr "只中斷 eD2k 連線。" #: src/TextClient.cpp:877 msgid "Disconnect from Kad only." msgstr "只中斷 Kad 連線。" #: src/TextClient.cpp:879 msgid "Add an eD2k or magnet link to core." msgstr "加入 eD2k 或 magnet 連結到主程式。" #: src/TextClient.cpp:880 msgid "" "The eD2k link to be added can be:\n" "*) a file link (ed2k://|file|...), it will be added to the download queue,\n" "*) a server link (ed2k://|server|...), it will be added to the server list,\n" "*) or a serverlist link, in which case all servers in the list will be added " "to the\n" " server list.\n" "\n" "The magnet link must contain the eD2k hash and file length.\n" msgstr "" "加入的 eD2k 連結:\n" "*) 檔案連結 (ed2k://|file|...):會被加入下載等候區。\n" "*) 伺服器連結 (ed2k://|server|...):會被加入伺服器清單。\n" "*) 伺服器清單連結:裏面的所有伺服器都會被加入伺服器清單中。\n" "\n" "magnet 連結必須含有 eD2k hash 值與檔案大小資料。\n" #: src/TextClient.cpp:882 msgid "Set a preference value." msgstr "設定參數值。" #: src/TextClient.cpp:885 msgid "Set IP filtering preferences." msgstr "設定 IP 過濾參數。" #: src/TextClient.cpp:886 msgid "Turn IP filtering on for both clients and servers." msgstr "開啓對客戶端和對伺服器 IP 過濾。" #: src/TextClient.cpp:887 msgid "Turn IP filtering off for both clients and servers." msgstr "關閉對客戶端和對伺服器 IP 過濾。" #: src/TextClient.cpp:888 msgid "Enable/Disable IP filtering for clients." msgstr "啓用/停用對客戶端 IP 過濾。" #: src/TextClient.cpp:889 msgid "Turn IP filtering on for clients." msgstr "啟動對客戶端 IP 過濾。" #: src/TextClient.cpp:890 msgid "Turn IP filtering off for clients." msgstr "停用對客戶端 IP 過濾。" #: src/TextClient.cpp:891 msgid "Enable/Disable IP filtering for servers." msgstr "啓用/停用對伺服器 IP 過濾。" #: src/TextClient.cpp:892 msgid "Turn IP filtering on for servers." msgstr "啓動對伺服器 IP 過濾。" #: src/TextClient.cpp:893 msgid "Turn IP filtering off for servers." msgstr "停用對伺服器 IP 過濾。" #: src/TextClient.cpp:894 msgid "Select IP filtering level." msgstr "選取 IP 過濾等級。" #: src/TextClient.cpp:895 msgid "" "Valid filtering levels are in the range 0-255, and it's default (initial)\n" "value is 127.\n" msgstr "" "有效的 IP 過濾等級是在 0 到 255 之間,\n" "初始預設值是 127。\n" #: src/TextClient.cpp:897 msgid "Set bandwidth limits." msgstr "設定頻寬限制。" #: src/TextClient.cpp:898 msgid "The value given to these commands has to be in kilobytes/sec.\n" msgstr "給此指令的的值,單位是 KB/s 。\n" #: src/TextClient.cpp:899 msgid "Set upload bandwidth limit." msgstr "設定上傳頻寬限制。" #: src/TextClient.cpp:900 src/TextClient.cpp:902 #, fuzzy msgid "The given value must be in kilobytes/sec.\n" msgstr "給此指令的的值,單位是 KB/s 。\n" #: src/TextClient.cpp:901 msgid "Set download bandwidth limit." msgstr "設定下載頻寬限制。" #: src/TextClient.cpp:904 msgid "Get and display a preference value." msgstr "取得並顯示偏好設定值。" #: src/TextClient.cpp:907 msgid "Get IP filtering preferences." msgstr "取得 IP 過濾設定。" #: src/TextClient.cpp:908 msgid "Get IP filtering state for both clients and servers." msgstr "取得對客戶端和伺服器的 IP 過濾狀態。" #: src/TextClient.cpp:909 msgid "Get IP filtering state for clients only." msgstr "只取得對客戶端的 IP 過濾狀態。" #: src/TextClient.cpp:910 msgid "Get IP filtering state for servers only." msgstr "只取得對伺服器的 IP 過濾狀態。" #: src/TextClient.cpp:911 msgid "Get IP filtering level." msgstr "取得 IP 過濾等級。" #: src/TextClient.cpp:913 msgid "Get bandwidth limits." msgstr "取得頻寬限制。" #: src/TextClient.cpp:915 msgid "Execute a search." msgstr "執行搜尋。" #: src/TextClient.cpp:916 msgid "" "A search type has to be specified by giving the type:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "Example: 'search kad file' will execute a kad search for \"file\".\n" msgstr "" "搜尋類型必須為以下幾種之一:\n" " GLOBAL\n" " LOCAL\n" " KAD\n" "\n" "例如:「 search kad 關鍵字 」將在 Kad 網路搜尋該「關鍵字」。\n" #: src/TextClient.cpp:917 msgid "Execute a global search." msgstr "執行全球搜尋。" #: src/TextClient.cpp:918 msgid "Execute a local search" msgstr "執行本地搜尋" #: src/TextClient.cpp:919 msgid "Execute a kad search" msgstr "執行 Kad 搜尋" #: src/TextClient.cpp:921 msgid "Show the results of the last search." msgstr "顯示上一次的搜尋結果。" #: src/TextClient.cpp:922 msgid "Return the results of the previous search.\n" msgstr "傳回前幾次的搜尋結果。\n" #: src/TextClient.cpp:924 msgid "Show the progress of a search." msgstr "顯示搜尋進度。" #: src/TextClient.cpp:925 msgid "Show the progress of a search.\n" msgstr "顯示搜尋進度。\n" #: src/TextClient.cpp:927 msgid "Start downloading a file" msgstr "開始下載檔案" #: src/TextClient.cpp:928 msgid "" "The number of a file from the last search has to be given.\n" "Example: 'download 12' will start to download the file with the number 12 of " "the previous search.\n" msgstr "" "必須指定檔案在過去搜尋中的編號。\n" "例如:「 download 12 」將會下載過去搜尋結果中編號 12 號的檔案。\n" #: src/TextClient.cpp:935 msgid "Pause download." msgstr "暫停下載。" #: src/TextClient.cpp:938 msgid "Resume download." msgstr "繼續下載。" #: src/TextClient.cpp:941 msgid "Cancel download." msgstr "取消下載。" #: src/TextClient.cpp:944 msgid "Set download priority." msgstr "設定下載優先等級。" #: src/TextClient.cpp:945 msgid "Set priority of a download to Low, Normal, High or Auto.\n" msgstr "設定下載優先等級爲:低、普通、高或自動。\n" #: src/TextClient.cpp:946 msgid "Set priority to low." msgstr "設爲低優先等級。" #: src/TextClient.cpp:947 msgid "Set priority to normal." msgstr "設爲普通優先等級。" #: src/TextClient.cpp:948 msgid "Set priority to high." msgstr "設爲高優先等級。" #: src/TextClient.cpp:949 msgid "Set priority to auto." msgstr "設爲自動優先等級。" #: src/TextClient.cpp:951 msgid "Show queues/lists." msgstr "顯示等候區/清單。" #: src/TextClient.cpp:952 msgid "Show upload/download queue, server list or shared files list.\n" msgstr "顯示上傳/下載等候區、伺服器清單或分享檔案清單。\n" #: src/TextClient.cpp:953 msgid "Show upload queue." msgstr "顯示上傳等候區。" #: src/TextClient.cpp:954 msgid "Show download queue." msgstr "顯示下載等候區。" #: src/TextClient.cpp:955 msgid "Show log." msgstr "顯示記錄。" #: src/TextClient.cpp:956 msgid "Show servers list." msgstr "顯示伺服器清單。" #: src/TextClient.cpp:959 msgid "Reset log." msgstr "清除記錄。" #: src/TextClient.cpp:966 #, c-format msgid "Deprecated command, use '%s' instead." msgstr "已停用的指令,請改用「 %s 」。" #: src/TextClient.cpp:967 #, c-format msgid "" "This is a deprecated command, and may be removed in the future.\n" "Use '%s' instead.\n" msgstr "" "這是一個已停用的指令,將來可能被刪除,\n" "請改用「 %s 」。\n" #: src/TextClient.h:59 msgid "aMule text client" msgstr "aMule 文字模式客戶端" #: src/ThreadTasks.cpp:376 #, c-format msgid "Converting old AICH hashsets in '%s' to 64b in '%s'." msgstr "將 %s 的舊 AICH hash 值組轉換為 %s 的 64b 格式。" #: src/ThreadTasks.cpp:455 #, c-format msgid "WARNING: The filename '%s' is invalid and has been renamed to '%s'." msgstr "警告:檔名 %s 無效,已重新命名爲 %s 。" #: src/ThreadTasks.cpp:467 #, c-format msgid "WARNING: The file '%s' already exists, new file renamed to '%s'." msgstr "警告:檔案 %s 已經存在,新檔案重新命名爲 %s 。" #: src/TransferWnd.cpp:209 msgid "Are you sure you wish to cancel and delete all files in this category?" msgstr "您確定要移除此分類中的所有檔案嗎?" #: src/TransferWnd.cpp:209 msgid "Confirmation Required" msgstr "需要確認" #: src/TransferWnd.cpp:238 msgid "Only 99 categories are supported." msgstr "最多只支援 99 個分類。" #: src/TransferWnd.cpp:238 msgid "Too many categories!" msgstr "分類數過多!" #: src/TransferWnd.cpp:341 msgid "All others" msgstr "其它" #: src/TransferWnd.cpp:363 msgid "Select view filter" msgstr "選取顯示過濾" #: src/TransferWnd.cpp:366 msgid "Add category" msgstr "加入分類" #: src/TransferWnd.cpp:369 msgid "Edit category" msgstr "編輯分類" #: src/TransferWnd.cpp:370 msgid "Remove category" msgstr "移除分類" #: src/UploadClient.cpp:240 #, c-format msgid "Failed to open file (%s), removing from list of shared files." msgstr "無法開啟檔案 %s,從分享檔案清單移除。" #: src/UploadClient.cpp:683 #, c-format msgid "Hashset requested for unknown file: %s" msgstr "要求不明檔案 %s 的 hash 值組" #: src/UploadQueue.cpp:596 #, c-format msgid "Resuming uploads of file: %s" msgstr "繼續上傳檔案:%s" #: src/UploadQueue.cpp:613 #, c-format msgid "Suspending upload of file: %s" msgstr "暫停上傳檔案:%s" #: src/UserEvents.cpp:138 #, c-format msgid "Failed to execute command `%s' on `%s' event." msgstr "無法執行指令「 %s 」(事件:%s )。" #: src/UserEvents.h:60 msgid "Download completed" msgstr "下載完畢" #: src/UserEvents.h:63 src/UserEvents.h:97 msgid "The full path to the file." msgstr "檔案的完整路徑。" #: src/UserEvents.h:67 msgid "The name of the file without path component." msgstr "不包含路徑的檔名。" #: src/UserEvents.h:71 msgid "The eD2k hash of the file." msgstr "這個檔案的 eD2k hash 值。" #: src/UserEvents.h:75 msgid "The size of the file in bytes." msgstr "檔案大小 (B)。" #: src/UserEvents.h:79 msgid "Cumulative download activity time." msgstr "累計實際下載時間。" #: src/UserEvents.h:82 msgid "New chat session started" msgstr "已開始新的交談" #: src/UserEvents.h:85 msgid "Message sender." msgstr "訊息傳送者。" #: src/UserEvents.h:88 msgid "Out of space" msgstr "空間不足" #: src/UserEvents.h:91 msgid "Disk partition." msgstr "磁碟分割區。" #: src/UserEvents.h:94 msgid "Error on completion" msgstr "有錯誤發生於完成" #: src/utils/aLinkCreator/src/alcc.cpp:67 #, c-format msgid "Processing file number %u: %s" msgstr "a正在處理檔案編號 %u:%s " #: src/utils/aLinkCreator/src/alcc.cpp:71 msgid "You have asked for part hashes (Only used for files > 9.5 MB)" msgstr "您已要求暫存檔 hash 值 (只用於超過 9.5 MB 的檔案)" #: src/utils/aLinkCreator/src/alcc.cpp:88 #, c-format msgid "%s ---> Non existant file !\n" msgstr "%s ---> 檔案不存在!\n" #: src/utils/aLinkCreator/src/alc.cpp:46 msgid "aLinkCreator, the aMule eD2k link creator" msgstr "aLinkCreator, 用以建立 aMule eD2k 連結" #: src/utils/aLinkCreator/src/alcframe.cpp:85 #: src/utils/wxCas/src/wxcasframe.cpp:91 msgid "Welcome!" msgstr "歡迎!" #: src/utils/aLinkCreator/src/alcframe.cpp:105 msgid "Input parameters" msgstr "輸入參數" #: src/utils/aLinkCreator/src/alcframe.cpp:116 msgid "File to Hash" msgstr "須計算 hash 值的檔案" #: src/utils/aLinkCreator/src/alcframe.cpp:120 msgid "Add Optional URLs for this file" msgstr "加入附加網址到這個檔案" #: src/utils/aLinkCreator/src/alcframe.cpp:128 msgid "Enter here the file you want to compute the eD2k link" msgstr "輸入您想要求得 eD2k 連結的檔案" #: src/utils/aLinkCreator/src/alcframe.cpp:134 msgid "" "Enter here the URL you want to add to the eD2k link: Add / at the end to let " "aLinkCreator append the current file name" msgstr "" "輸入您想要加入 eD2k 連結的網址:請在最後加上 '/' 以利 aLinkCreator 程式幫您輸" "入檔名" #: src/utils/aLinkCreator/src/alcframe.cpp:150 msgid "Remove" msgstr "移除" #: src/utils/aLinkCreator/src/alcframe.cpp:161 msgid "Create link with part-hashes" msgstr "以暫存檔 hash 值建立連結" #: src/utils/aLinkCreator/src/alcframe.cpp:167 msgid "" "Help to spread new and rare files faster, at the cost of an increased link " "size" msgstr "協助新檔案和稀有檔案更快散播,只是會增加連結長度" #: src/utils/aLinkCreator/src/alcframe.cpp:193 msgid "MD4 File Hash" msgstr "MD4 檔案 hash 值" #: src/utils/aLinkCreator/src/alcframe.cpp:205 msgid "eD2k File Hash" msgstr "eD2k 檔案 hash 值" #: src/utils/aLinkCreator/src/alcframe.cpp:216 msgid "eD2k link" msgstr "eD2k 連結" #: src/utils/aLinkCreator/src/alcframe.cpp:231 msgid "Save" msgstr "儲存" #: src/utils/aLinkCreator/src/alcframe.cpp:233 msgid "Copy to clipboard" msgstr "複製到剪貼簿" #: src/utils/aLinkCreator/src/alcframe.cpp:260 msgid "Open" msgstr "開啟" #: src/utils/aLinkCreator/src/alcframe.cpp:261 msgid "Open a file to compute its eD2k link" msgstr "開啟要求得 eD2k 連結的檔案" #: src/utils/aLinkCreator/src/alcframe.cpp:264 msgid "Copy computed eD2k link to clipboard" msgstr "複製 eD2k 連結到剪貼簿" #: src/utils/aLinkCreator/src/alcframe.cpp:266 msgid "Save as" msgstr "另存為" #: src/utils/aLinkCreator/src/alcframe.cpp:267 msgid "Save computed eD2k link to file" msgstr "儲存 eD2k 連結到檔案" #: src/utils/aLinkCreator/src/alcframe.cpp:272 #: src/utils/aLinkCreator/src/alcframe.cpp:472 msgid "About aLinkCreator" msgstr "關於 aLinkCreator" #: src/utils/aLinkCreator/src/alcframe.cpp:369 msgid "Select the file you want to compute the eD2k link" msgstr "選取要求得 eD2k 連結的檔案" #: src/utils/aLinkCreator/src/alcframe.cpp:403 msgid "Can't open the clipboard" msgstr "無法開啟剪貼簿" #: src/utils/aLinkCreator/src/alcframe.cpp:412 msgid "Nothing to copy for now !" msgstr "沒有東西可複製!" #: src/utils/aLinkCreator/src/alcframe.cpp:439 msgid "Select the file to your computed eD2k link" msgstr "選取已求得 eD2k 連結的檔案" #: src/utils/aLinkCreator/src/alcframe.cpp:450 msgid "Unable to open " msgstr "無法開啟" #: src/utils/aLinkCreator/src/alcframe.cpp:457 #: src/utils/aLinkCreator/src/alcframe.cpp:582 msgid "Please, enter a non empty file name" msgstr "請輸入一個非空白的檔名" #: src/utils/aLinkCreator/src/alcframe.cpp:462 msgid "Nothing to save for now !" msgstr "沒有東西可儲存!" #: src/utils/aLinkCreator/src/alcframe.cpp:471 msgid "" "aLinkCreator, the aMule eD2k link creator\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps from http://www.everaldo.com and http://www.icomania.com\n" "and http://jimmac.musichall.cz/ikony.php3\n" "\n" "Distributed under GPL" msgstr "" "aLinkCreator,用以建立 aMule eD2k 連結\n" "\n" "(c) 2004 ThePolish \n" "\n" "Pixmaps 來自 http://www.everaldo.com and http://www.icomania.com\n" "與 http://jimmac.musichall.cz/ikony.php3\n" "\n" "依據 GPL 授權散佈" #: src/utils/aLinkCreator/src/alcframe.cpp:512 #: src/utils/aLinkCreator/src/alcframe.cpp:513 #: src/utils/aLinkCreator/src/alcframe.cpp:519 msgid "Hashing..." msgstr "正在計算 hash 值..." #: src/utils/aLinkCreator/src/alcframe.cpp:517 #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "aLinkCreator is working for you" msgstr "aLinkCreator 正為您運作中" #: src/utils/aLinkCreator/src/alcframe.cpp:517 msgid "Computing MD4 Hash..." msgstr "計算 MD4 hash 值中..." #: src/utils/aLinkCreator/src/alcframe.cpp:532 msgid "Computing eD2k Hashes..." msgstr "計算 eD2k hash 值中..." #: src/utils/aLinkCreator/src/alcframe.cpp:567 #: src/utils/aLinkCreator/src/alcframe.cpp:568 #: src/utils/aLinkCreator/src/md4.cpp:352 msgid "Cancelled !" msgstr "已取消!" #: src/utils/aLinkCreator/src/alcframe.cpp:576 #, c-format msgid "Done in %.2f s" msgstr "在 %.2f 秒內完成" #: src/utils/aLinkCreator/src/alcframe.cpp:614 msgid "You have already added this URL !" msgstr "您已經加入這個網址了!" #: src/utils/aLinkCreator/src/alcframe.cpp:619 msgid "Please, enter a non empty URL" msgstr "請輸入一個非空白的網址" #: src/utils/aLinkCreator/src/ed2khash.cpp:58 #, c-format msgid "Unable to open %s" msgstr "無法開啟 %s" #: src/utils/aLinkCreator/src/ed2khash.cpp:147 msgid "Out of memory while calculating ed2k hash!" msgstr "" #: src/utils/wxCas/src/linuxmon.cpp:77 #, c-format msgid "%i day(s) %i hour(s) %i min %i s" msgstr "%i 天 %i 小時 %i 分鐘 %i 秒" #: src/utils/wxCas/src/onlinesig.cpp:225 #, c-format msgid "%02uD %02uh %02umin %02us" msgstr "%02u天 %02u小時 %02u分鐘 %02u秒" #: src/utils/wxCas/src/onlinesig.cpp:227 #, c-format msgid "%02uh %02umin %02us" msgstr "%02u小時 %02u分鐘 %02u秒" #: src/utils/wxCas/src/onlinesig.cpp:229 #, c-format msgid "%02umin %02us" msgstr "%02u分鐘 %02u秒" #: src/utils/wxCas/src/onlinesig.cpp:231 #, c-format msgid "%02us" msgstr "%02u秒" #: src/utils/wxCas/src/onlinesig.cpp:330 #, c-format msgid "%.0f B" msgstr "%.0f B" #: src/utils/wxCas/src/onlinesig.cpp:333 #, c-format msgid "%.2f KB" msgstr "%.2f KB" #: src/utils/wxCas/src/onlinesig.cpp:336 #, c-format msgid "%.2f MB" msgstr "%.2f MB" #: src/utils/wxCas/src/onlinesig.cpp:339 #, c-format msgid "%.2f GB" msgstr "%.2f GB" #: src/utils/wxCas/src/onlinesig.cpp:342 #, c-format msgid "%.2f TB" msgstr "%.2f TB" #: src/utils/wxCas/src/wxcas.cpp:74 msgid "wxCas, aMule Online Statistics" msgstr "wxCas, aMule 線上統計" #: src/utils/wxCas/src/wxcasframe.cpp:115 msgid "Maximum DL rate since wxCas is running" msgstr "本次 wxCas 執行後最大下載速度" #: src/utils/wxCas/src/wxcasframe.cpp:119 msgid "Absolute Maximum DL rate during wxCas previous runs" msgstr "過去執行 wxCas 時最大下載速度" #: src/utils/wxCas/src/wxcasframe.cpp:142 msgid "System" msgstr "系統" #: src/utils/wxCas/src/wxcasframe.cpp:206 #: src/utils/wxCas/src/wxcasframe.cpp:335 msgid "Stop Auto Refresh" msgstr "停止自動更新顯示" #: src/utils/wxCas/src/wxcasframe.cpp:211 msgid "Save Online Statistics image" msgstr "儲存線上統計圖表" #: src/utils/wxCas/src/wxcasframe.cpp:214 msgid "Print Online Statistics image" msgstr "列印線上統計圖表" #: src/utils/wxCas/src/wxcasframe.cpp:217 msgid "Preferences setting" msgstr "偏好設定" #: src/utils/wxCas/src/wxcasframe.cpp:222 #: src/utils/wxCas/src/wxcasframe.cpp:410 msgid "About wxCas" msgstr "關於 wxCas" #: src/utils/wxCas/src/wxcasframe.cpp:326 msgid "Start Auto Refresh" msgstr "開始自動更新顯示" #: src/utils/wxCas/src/wxcasframe.cpp:328 msgid "Auto Refresh stopped" msgstr "自動更新顯示已停止" #: src/utils/wxCas/src/wxcasframe.cpp:337 msgid "Auto Refresh started" msgstr "已開始自動更新顯示" #: src/utils/wxCas/src/wxcasframe.cpp:348 msgid "Save Statistics Image" msgstr "儲存統計圖表" #: src/utils/wxCas/src/wxcasframe.cpp:386 msgid "aMule Online Statistics" msgstr "aMule 線上統計" #: src/utils/wxCas/src/wxcasframe.cpp:390 msgid "" "There was a problem printing.\n" "Perhaps your current printer is not set correctly?" msgstr "" "列印時發生問題。\n" "可能是您的印表機沒有設定正確?" #: src/utils/wxCas/src/wxcasframe.cpp:391 msgid "Printing" msgstr "正在列印" #: src/utils/wxCas/src/wxcasframe.cpp:409 msgid "" "wxCas, aMule OnLine Signature Statistics\n" "\n" "(c) 2004 ThePolish \n" "\n" "Based on CAS by Pedro de Oliveira \n" "\n" "Distributed under GPL" msgstr "" "wxCas, aMule 線上簽名識別統計\n" "\n" "(c) 2004 ThePolish \n" "\n" "源自 CAS by Pedro de Oliveira \n" "\n" "依據 GPL 授權散佈" #: src/utils/wxCas/src/wxcasframe.cpp:575 msgid "Oh Oh, aMule is not running..." msgstr "aMule 未執行..." #: src/utils/wxCas/src/wxcasframe.cpp:651 #: src/utils/wxCas/src/wxcasframe.cpp:721 #: src/utils/wxCas/src/wxcasframe.cpp:790 msgid "aMule is running" msgstr "aMule 正在執行" #: src/utils/wxCas/src/wxcasframe.cpp:860 msgid "aMule is running, but disconnected" msgstr "aMule 正在執行,但是已中斷連線" #: src/utils/wxCas/src/wxcasframe.cpp:931 msgid "aMule is connecting..." msgstr "aMule 正在連線..." #: src/utils/wxCas/src/wxcasframe.cpp:935 msgid "Oh Oh, aMule status is unknown..." msgstr "aMule 狀態不明..." #: src/utils/wxCas/src/wxcasframe.cpp:1006 #: src/utils/wxCas/src/wxcasframe.cpp:1011 #: src/utils/wxCas/src/wxcasframe.cpp:1015 #: src/utils/wxCas/src/wxcasframe.cpp:1019 #: src/utils/wxCas/src/wxcasframe.cpp:1023 msgid "aMule " msgstr "aMule " #: src/utils/wxCas/src/wxcasframe.cpp:1008 msgid " has been running for " msgstr " 已執行" #: src/utils/wxCas/src/wxcasframe.cpp:1013 msgid " is stopped !" msgstr " 已停止!" #: src/utils/wxCas/src/wxcasframe.cpp:1017 #: src/utils/wxCas/src/wxcasframe.cpp:1041 msgid " is not connected !" msgstr "未連線!" #: src/utils/wxCas/src/wxcasframe.cpp:1021 msgid " is connecting..." msgstr " 正在連線..." #: src/utils/wxCas/src/wxcasframe.cpp:1025 msgid " is doing something strange, check it !" msgstr " 狀態不正常,請檢查!" #: src/utils/wxCas/src/wxcasframe.cpp:1046 msgid " is connected to " msgstr " 已連線到" #: src/utils/wxCas/src/wxcasframe.cpp:1047 #: src/utils/wxCas/src/wxcasframe.cpp:1069 msgid " Kad: " msgstr " Kad:" #: src/utils/wxCas/src/wxcasframe.cpp:1053 #: src/utils/wxCas/src/wxcasframe.cpp:1075 msgid "off" msgstr "關閉" #: src/utils/wxCas/src/wxcasframe.cpp:1059 msgid " is on " msgstr " 是在 " #: src/utils/wxCas/src/wxcasframe.cpp:1066 msgid " with " msgstr " 和 " #: src/utils/wxCas/src/wxcasframe.cpp:1084 msgid "Total Download: " msgstr "總下載:" #: src/utils/wxCas/src/wxcasframe.cpp:1086 #: src/utils/wxCas/src/wxcasframe.cpp:1097 msgid ", Upload: " msgstr ",上傳:" #: src/utils/wxCas/src/wxcasframe.cpp:1095 msgid "Session Download: " msgstr "本次下載:" #: src/utils/wxCas/src/wxcasframe.cpp:1106 msgid "Download: " msgstr "下載:" #: src/utils/wxCas/src/wxcasframe.cpp:1108 msgid " kB/s, Upload: " msgstr " KB/s,上傳:" #: src/utils/wxCas/src/wxcasframe.cpp:1110 msgid " kB/s" msgstr " KB/s" #: src/utils/wxCas/src/wxcasframe.cpp:1118 msgid "Sharing: " msgstr "分享:" #: src/utils/wxCas/src/wxcasframe.cpp:1120 msgid " file(s), Clients on queue: " msgstr " 個檔案、等候區人數:" #: src/utils/wxCas/src/wxcasframe.cpp:1130 msgid "Time: " msgstr "時間:" #: src/utils/wxCas/src/wxcasframe.cpp:1140 #: src/utils/wxCas/src/wxcasframe.cpp:1150 msgid " on " msgstr " 在 " #: src/utils/wxCas/src/wxcasframe.cpp:1160 msgid "System Load Average (1-5-15 min): " msgstr "系統平均負載 (1-5-15 分鐘):" #: src/utils/wxCas/src/wxcasframe.cpp:1171 msgid "System uptime: " msgstr "系統執行時間:" #: src/utils/wxCas/src/wxcasprefs.cpp:51 msgid "Directory containing amulesig.dat file" msgstr "amulesig.dat 檔案所在的目錄" #: src/utils/wxCas/src/wxcasprefs.cpp:71 msgid "Enter here the directory where your amulesig.dat file is" msgstr "請輸入 amulesig.dat 所在的目錄" #: src/utils/wxCas/src/wxcasprefs.cpp:90 msgid "Refresh rate interval in seconds" msgstr "更新顯示間隔 (秒)" #: src/utils/wxCas/src/wxcasprefs.cpp:106 msgid "Generate a stat image at every refresh event" msgstr "每次更新顯示時都產生統計圖" #: src/utils/wxCas/src/wxcasprefs.cpp:130 msgid "Enter here the directory where you want to generate the statistic image" msgstr "輸入存放製成的統計圖的目錄" #: src/utils/wxCas/src/wxcasprefs.cpp:157 msgid "Upload periodicaly your stat image to FTP server" msgstr "定期上傳統計圖到 FTP 伺服器" #: src/utils/wxCas/src/wxcasprefs.cpp:165 msgid "FTP Url" msgstr "FTP 網址" #: src/utils/wxCas/src/wxcasprefs.cpp:169 msgid "FTP Path" msgstr "FTP 路徑" #: src/utils/wxCas/src/wxcasprefs.cpp:179 msgid "Enter here the URL of your FTP server" msgstr "輸入 FTP 伺服器的網址" #: src/utils/wxCas/src/wxcasprefs.cpp:191 msgid "Enter here the directory where putting your stat image on FTP server" msgstr "輸入 FTP 伺服器上存放統計圖的目錄" #: src/utils/wxCas/src/wxcasprefs.cpp:197 msgid "User" msgstr "使用者" #: src/utils/wxCas/src/wxcasprefs.cpp:212 msgid "Enter here the User name to log into your FTP server" msgstr "輸入登入 FTP 伺服器的使用者名稱" #: src/utils/wxCas/src/wxcasprefs.cpp:224 msgid "Enter here the User password to log into your FTP server" msgstr "輸入登入 FTP 伺服器的密碼" #: src/utils/wxCas/src/wxcasprefs.cpp:243 msgid "FTP update rate interval in minutes" msgstr "FTP 上傳間隔 (分鐘)" #: src/utils/wxCas/src/wxcasprefs.cpp:283 msgid "Validate" msgstr "檢測" #: src/utils/wxCas/src/wxcasprefs.cpp:317 msgid "Folder containing your signature file" msgstr "簽名識別檔所在資料夾" #: src/utils/wxCas/src/wxcasprefs.cpp:331 msgid "Folder where generating the statistic image" msgstr "統計圖存放資料夾" #: src/webserver/src/WebInterface.cpp:561 msgid "Loads template " msgstr "載入模板 " #: src/webserver/src/WebInterface.cpp:565 msgid "Web server HTTP port" msgstr "網站伺服器 HTTP 埠" #: src/webserver/src/WebInterface.cpp:569 msgid "Use UPnP port forwarding on web server port" msgstr "網站伺服器通訊埠使用 UPnP 通訊埠轉向" #: src/webserver/src/WebInterface.cpp:573 msgid "UPnP port" msgstr "UPnP 埠" #: src/webserver/src/WebInterface.cpp:577 msgid "Use gzip compression" msgstr "使用 gzip 壓縮" #: src/webserver/src/WebInterface.cpp:585 msgid "Full access password for web server" msgstr "網站伺服器的 完整存取密碼" #: src/webserver/src/WebInterface.cpp:589 msgid "Guest password for web server" msgstr "網站伺服器的 訪客密碼" #: src/webserver/src/WebInterface.cpp:593 msgid "Allow guest access" msgstr "允許訪客連線" #: src/webserver/src/WebInterface.cpp:597 msgid "Deny guest access" msgstr "拒絕訪客連線" #: src/webserver/src/WebInterface.cpp:601 msgid "Load/save web server settings from/to remote aMule" msgstr "載入/儲存 遠端 aMule 的網站伺服器設定 " #: src/webserver/src/WebInterface.cpp:605 msgid "aMule config file path. DO NOT USE DIRECTLY!" msgstr "aMule 設定檔路徑。請勿直接使用!" #: src/webserver/src/WebInterface.cpp:613 msgid "Disable PHP interpreter (deprecated)" msgstr "停用 PHP 解譯器(不建議)" #: src/webserver/src/WebInterface.cpp:621 msgid "Recompile PHP pages on each request" msgstr "爲每個要求重編譯 PHP 頁面" #: src/webserver/src/WebInterface.cpp:719 msgid "aMule Web Server" msgstr "aMule 網站伺服器" #: src/webserver/src/WebServer.cpp:320 msgid "web client connection accepted\n" msgstr "已接受網頁客戶端連線\n" #: src/webserver/src/WebServer.cpp:323 msgid "ERROR: cannot accept web client connection\n" msgstr "錯誤:無法接受網頁客戶端連線\n" #: src/webserver/src/WebServer.cpp:392 #, c-format msgid "Request failed with the following error: %s." msgstr "要求失敗,錯誤爲:%s 。" #: src/webserver/src/WebServer.cpp:1726 msgid "Index file not found: " msgstr "找不到索引檔:" #: src/webserver/src/WebServer.cpp:1805 msgid "Session expired - requesting login\n" msgstr "作業階段過期 - 正在要求登入\n" #: src/webserver/src/WebServer.cpp:1810 msgid "Session ok, logged in\n" msgstr "作業階段正常,已登入\n" #: src/webserver/src/WebServer.cpp:1812 msgid "Session ok, not logged in\n" msgstr "作業階段正常,未登入\n" #: src/webserver/src/WebServer.cpp:1817 msgid "No session opened - will request login\n" msgstr "未開啟作業階段 - 將要求登入\n" #: src/webserver/src/WebServer.cpp:1826 msgid "Session created - requesting login\n" msgstr "作業階段已建立 - 正在要求登入\n" #: src/webserver/src/WebServer.cpp:1841 msgid "Processing request [original]: " msgstr "正在處理要求 [原始]:" #: src/webserver/src/WebServer.cpp:1856 msgid "No password specified, login will not be allowed." msgstr "未輸入密碼,不允許登入。" #: src/webserver/src/WebServer.cpp:1858 msgid "Checking password\n" msgstr "正在檢查密碼\n" #: src/webserver/src/WebServer.cpp:1863 msgid "Password hash invalid\n" msgstr "密碼 hash 值無效\n" #: src/webserver/src/WebServer.cpp:1878 msgid "Password ok\n" msgstr "密碼正確\n" #: src/webserver/src/WebServer.cpp:1880 msgid "Password bad\n" msgstr "密碼錯誤\n" #: src/webserver/src/WebServer.cpp:1883 msgid "You did not enter any password. Blank password is not allowed.\n" msgstr "您沒有輸入密碼,密碼不允許空白。\n" #: src/webserver/src/WebServer.cpp:1891 msgid "Logout requested\n" msgstr "已要求登出\n" #: src/webserver/src/WebServer.cpp:1896 msgid "Processing request [redirected]: " msgstr "正在處理 [已重定向] 的要求:" #~ msgid "Partfile %s (%s) has no seeds file" #~ msgstr "暫存檔 %s (%s) 沒有種子檔案" #~ msgid "Partfile %s (%s) has a void seeds file" #~ msgstr "ha暫存檔 %s (%s) 的種子檔案沒有內容" #~ msgid "Download status" #~ msgstr "下載狀態" #~ msgid "( %s / %s )" #~ msgstr "( %s / %s )" #~ msgid "..." #~ msgstr "..." #~ msgid "SOCKS5" #~ msgstr "SOCKS5" #~ msgid "SOCKS4" #~ msgstr "SOCKS4" #~ msgid "HTTP" #~ msgstr "HTTP" #~ msgid "SOCKS4a" #~ msgstr "SOCKS4a" #~ msgid "Update delay : %d second" #~ msgid_plural "Update delay : %d seconds" #~ msgstr[0] "更新延遲時間:%d 秒" #~ msgid "Comments and ratings are not supported on remote gui yet" #~ msgstr "遠端圖形介面尚未支援註解與評價功能" #~ msgid "Transferring" #~ msgstr "正在傳輸" #~ msgid "QR: ???" #~ msgstr "QR:???" #~ msgid "QR: %u" #~ msgstr "QR:%u" #~ msgid "Only files currently uploading" #~ msgstr "只有目前正在上傳的檔案" #~ msgid "Queue Rank" #~ msgstr "等候排名" #~ msgid "TODO - show progress of a search" #~ msgstr "待辦事項 - 顯示搜尋進度" #~ msgid "Starting to create MD4 and AICH hash for file: %s" #~ msgstr "開始爲檔案 %s 計算 MD4 和 AICH hash 值" #~ msgid "Starting to create MD4 hash for file: %s" #~ msgstr "開始爲檔案 %s 計算 MD4 hash 值" #~ msgid "Starting to create AICH hash for file: %s" #~ msgstr "開始爲檔案 %s 計算 AICH hash 值" #~ msgid "WARNING: Could not remove original '%s' after creating backup" #~ msgstr "警告:爲 %s 建立備份後無法刪除原檔案" #~ msgid "WARNING: Failed to delete %s" #~ msgstr "警告:無法刪除 %s" #~ msgid "%u (QR: %u)" #~ msgstr "%u (QR:%u)" #~ msgid "Rating (total):" #~ msgstr "評價 (總計):" #~ msgid "Try to transfer full chunks to all uploads" #~ msgstr "嘗試傳送完整資料區塊給所有人" #~ msgid "Networks window" #~ msgstr "網路 視窗" #~ msgid "Searches window" #~ msgstr "搜尋 視窗" #, fuzzy #~ msgid "Downloads window" #~ msgstr "正在下載" #~ msgid "Shared files window" #~ msgstr "檔案分享 視窗" #~ msgid "Messages window" #~ msgstr "訊息 視窗" #~ msgid "Statistics graph window" #~ msgstr "統計 視窗" #~ msgid "Preferences settings window" #~ msgstr "偏好設定 視窗" #~ msgid "Traybar-icon lost, trying to recreate ..." #~ msgstr "狀態列圖示遺失,正在重新建立..." #~ msgid "Transfers" #~ msgstr "檔案傳輸" #~ msgid "Files transfers window" #~ msgstr "檔案傳輸 視窗" #~ msgid "Unban" #~ msgstr "取消封鎖" #~ msgid "Show Uploads" #~ msgstr "顯示上傳" #~ msgid "Show Queue" #~ msgstr "顯示等候區" #~ msgid "Select View" #~ msgstr "切換顯示" #~ msgid "Client Software" #~ msgstr "客戶端軟體" #~ msgid "Waited" #~ msgstr "已等候" #~ msgid "Upload Time" #~ msgstr "上傳時間" #~ msgid "Upload/Download" #~ msgstr "上傳/下載" #~ msgid "Remote Status" #~ msgstr "遠端狀態" #~ msgid "File Priority" #~ msgstr "檔案優先等級" #~ msgid "Score" #~ msgstr "分數" #~ msgid "Asked" #~ msgstr "已要求" #~ msgid "Last Seen" #~ msgstr "最後看到" #~ msgid "Entered Queue" #~ msgstr "已進等候區" #~ msgid "Transferred Up" #~ msgstr "已傳輸" #~ msgid "Transferred Down" #~ msgstr "已傳輸" #~ msgid "Userhash" #~ msgstr "使用者 hash 值" #~ msgid "Encrypted" #~ msgstr "已加密" #~ msgid "Loaded %d flag bitmaps." #~ msgstr "已載入 %d 個國旗圖片。" #~ msgid "Shows Upload / Up-queue" #~ msgstr "顯示上傳/上傳等候區" #~ msgid "Clients on queue :" #~ msgstr "等候區人數:" #~ msgid "Current Session" #~ msgstr "本次執行" #~ msgid "Total" #~ msgstr "總計" #~ msgid "Requested :" #~ msgstr "已要求:" #~ msgid "Create backup for preview" #~ msgstr "建立備份檔案以供預覽" #~ msgid "Files Transfers Window" #~ msgstr "傳輸 視窗" #~ msgid "Total Users: %s | Total Files: %s" #~ msgstr "使用者總數:%s | 檔案總數:%s" #~ msgid "Download size not received, downloading until connection is closed" #~ msgstr "未收到下載大小資料,持續下載至連線關閉時" #~ msgid "HTTP download thread ended" #~ msgstr "已啟用 HTTP 下載執行緒" #~ msgid "Host: %s:%i\n" #~ msgstr "主機:%s:%i\n" #~ msgid "Response: %i (Error: %i)" #~ msgstr "回應:%i (錯誤:%i)" #~ msgid "WARNING: Void response on stream creation" #~ msgstr "警告:建立串流時沒有回應" #~ msgid "ERROR: Redirection code received with no URL" #~ msgstr "錯誤:接收到沒有網址的重新導向碼" #~ msgid "CIP2Country::CIP2Country(): Failed to load country data from " #~ msgstr "CIP2Country::CIP2Country():無法載入國家資訊 (" #~ msgid "Get IPFilter level." #~ msgstr "取得 IP 過濾等級。" #~ msgid "Makes a search." #~ msgstr "開始搜尋。" #~ msgid "Killed!" #~ msgstr "已終止!" #~ msgid "Using amuleweb in '%s'." #~ msgstr "在 '%s' 使用 amuleweb 。" #~ msgid "Shutting down aMule..." #~ msgstr "關閉 aMule 中..." #~ msgid "" #~ "The following options have been changed in this release for security " #~ "reasons:\n" #~ msgstr "因爲安全問題,此版本中以下的選項已經被變更:\n" #~ msgid "" #~ "\n" #~ "* Enabled Protocol Obfuscation support for incoming and outgoing " #~ "connections.\n" #~ msgstr "" #~ "\n" #~ "* 已啓用模糊協定。\n" #~ msgid "" #~ "\n" #~ "* Disabled updating the server list from other server and clients.\n" #~ msgstr "" #~ "\n" #~ "* 已停用從其他伺服器和客戶端更新伺服器清單。\n" #~ msgid "" #~ "\n" #~ "For more information on the reason for this changes, seach\n" #~ "the aMule wiki at http://wiki.amule.org for \"fake servers\" info.\n" #~ "It's important that you clear any fake server from your server list for " #~ "aMule to work properly." #~ msgstr "" #~ "\n" #~ "想瞭解更多改版原因, 請到 aMule wiki 搜尋「fake servers」 。\n" #~ "網址是:http://wiki.amule.org \n" #~ "爲了讓 aMule 正常工作,從伺服器清單中清除假伺服器非常重要。" #~ msgid "" #~ "\n" #~ "\n" #~ "Additionally, the browser settings have been reset to the system default. " #~ "Please configure your browser options again if needed.\n" #~ msgstr "" #~ "\n" #~ "\n" #~ "瀏覽器設定已恢復為系統預設值。如果有需要,請設定您的瀏覽器。\n" #~ msgid "Fetching status..." #~ msgstr "正在取得狀態..." #~ msgid "Users: E: %s K: %s | Files E: %s K: %s" #~ msgstr "使用者:E:%s K:%s | 檔案 E:%s K:%s" #~ msgid "Client %s on IP:Port %s:%d using %s %s %s" #~ msgstr "客戶端 %s:位址 %s:%d,使用 %s %s %s" #~ msgid "theApp->serverlist->GetServerByAddress() returned NULL" #~ msgstr "theApp->serverlist->GetServerByAddress() 傳回 NULL" #~ msgid "Do you really want to exit aMule?" #~ msgstr "您確定要離開 aMule 嗎?" #~ msgid "Failed to remove GeoIP.dat file, aborting update." #~ msgstr "無法移除 GeoIP.dat,停止更新。" #~ msgid "Failed to rename new GeoIP.dat file, aborting update." #~ msgstr "無法重新命名 GeoIP.dat,停止更新。" #~ msgid "Successfully updated GeoIP.dat" #~ msgstr "成功更新 GeoIP.dat" #~ msgid "Failed to download GeoIP.dat from %s" #~ msgstr "無法自 %s 下載 GeoIP.dat" #~ msgid "Finished to download the server list from %s" #~ msgstr "完成從 %s 下載伺服器清單" #~ msgid "WARNING: known.met cannot be opened." #~ msgstr "警告:無法開啟 known.met 。" #~ msgid "IO error while reading known.met file: %s" #~ msgstr "讀取 known.net 檔案時發生 IO 錯誤:%s" #~ msgid "Error while saving known.met file: %s" #~ msgstr "儲存 known.met 時發生錯誤:%s" #~ msgid "Reloads the given object." #~ msgstr "重新載入指定的項目。" #~ msgid "Reloads shared files list." #~ msgstr "重新載入分享檔案清單。" #~ msgid "Reloads IP Filter table from file." #~ msgstr "重新從檔案載入 IP 過濾表。" #~ msgid "Adds an eD2k or magnet link to core." #~ msgstr "加入 eD2k 或 magnet 連結到主程式。" #~ msgid "Set IPFilter preferences." #~ msgstr "設定 IP 過濾參數。" #~ msgid "Get IPFilter preferences." #~ msgstr "取得 IP 過濾器設定。" #~ msgid "Get IPFilter state for both clients and servers." #~ msgstr "取得對客戶端和伺服器的 IP 過濾器狀態。" #~ msgid "Get IPFilter state for clients only." #~ msgstr "只取得對客戶端的 IP 過濾器狀態。" #~ msgid "Get IPFilter state for servers only." #~ msgstr "只取得對伺服器的 IP 過濾器狀態。" #~ msgid "Executes a global search." #~ msgstr "執行全球搜尋。" #~ msgid "Executes a local search" #~ msgstr "執行本地搜尋" #~ msgid "Executes a kad search" #~ msgstr "執行 Kad 搜尋" #~ msgid "Shows the results of the last search." #~ msgstr "顯示上一次的搜尋結果。" #~ msgid "Returns the results of the previous search.\n" #~ msgstr "傳回前幾次的搜尋結果。\n" #~ msgid "Shows the progress of a search." #~ msgstr "顯示搜尋進度。" #~ msgid "Shows the progress of a search.\n" #~ msgstr "顯示搜尋進度。\n" #~ msgid "Shows upload/download queue, server list or shared files list.\n" #~ msgstr "顯示上傳/下載等候區,伺服器清單或分享檔案清單。\n" #~ msgid "Authentication failed." #~ msgstr "登入驗證失敗。" #~ msgid "Loading IP-filters 'ipfilter.dat' and 'ipfilter_static.dat'." #~ msgstr "正在載入 IP 過濾檔 ipfilter.dat 與 ipfilter_static.dat 。" amule_2.3.1+git20151120.0023527bc2.orig/src/0000755000175000017500000000000012611472361016272 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/AddFriend.cpp0000644000175000017500000000561012611472361020620 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "AddFriend.h" // Interface declarations. #include "muuli_wdr.h" // Needed for addFriendDlg #include "amule.h" // Needed for theApp #include "amuleDlg.h" // Needed for amuleDlg #include "FriendList.h" #include "NetworkFunctions.h" #include "OtherFunctions.h" #include "MD4Hash.h" #include // Needed for unicode2char BEGIN_EVENT_TABLE(CAddFriend, wxDialog) EVT_BUTTON(ID_ADDFRIEND, CAddFriend::OnAddBtn) EVT_BUTTON(ID_CLOSEDLG, CAddFriend::OnCloseBtn) END_EVENT_TABLE() CAddFriend::CAddFriend(wxWindow* parent) : wxDialog(parent, 9995, _("Add a Friend"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxSYSTEM_MENU) { wxSizer* content=addFriendDlg(this, TRUE); content->Show(this, TRUE); } void CAddFriend::OnAddBtn(wxCommandEvent& WXUNUSED(evt)) { wxString name = CastChild(ID_USERNAME, wxTextCtrl)->GetValue().Strip(wxString::both); wxString hash = CastChild(ID_USERHASH, wxTextCtrl)->GetValue().Strip(wxString::both); wxString fullip = CastChild(ID_IPADDRESS, wxTextCtrl)->GetValue().Strip(wxString::both); uint16 port = StrToULong( CastChild(ID_IPORT, wxTextCtrl)->GetValue() ); uint32 ip = StringIPtoUint32(fullip); if (!ip || !port) { wxMessageBox(_("You have to enter a valid IP and port!"), _("Information"), wxOK | wxICON_INFORMATION, this); return; } CMD4Hash userhash; if ((!hash.IsEmpty()) && (!userhash.Decode(hash))) { wxMessageBox(_("The specified userhash is not valid!"), _("Information"), wxOK | wxICON_INFORMATION, this); return; }; // Better than nothing at all... if ( name.IsEmpty() ) { name = fullip; } theApp->friendlist->AddFriend(userhash, ip, port, name); EndModal(true); // Friend added } void CAddFriend::OnCloseBtn(wxCommandEvent& WXUNUSED(evt)) { EndModal(false); // Friend not added } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/AddFriend.h0000644000175000017500000000266312611472361020272 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef ADDFRIEND_H #define ADDFRIEND_H #include // Needed for wxDialog class CAddFriend : public wxDialog { public: CAddFriend(wxWindow* parent); ~CAddFriend() {}; protected: DECLARE_EVENT_TABLE() private: void OnAddBtn(wxCommandEvent& evt); void OnCloseBtn(wxCommandEvent& evt); }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ArchSpecific.h0000644000175000017500000001253112611472361020770 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef ARCHSPECIFIC_H #define ARCHSPECIFIC_H #include "Types.h" #ifdef HAVE_CONFIG_H # include "config.h" #endif #define ENDIAN_SWAP_16(x) (wxUINT16_SWAP_ON_BE(x)) #define ENDIAN_SWAP_I_16(x) x = wxUINT16_SWAP_ON_BE(x) #define ENDIAN_SWAP_32(x) (wxUINT32_SWAP_ON_BE(x)) #define ENDIAN_SWAP_I_32(x) x = wxUINT32_SWAP_ON_BE(x) #if ((defined __GNUC__) && __GNUC__ >= 2) || defined (_MSC_VER) || (defined(__SUNPRO_CC) && (__SUNPRO_CC >= 0x550)) #define ENDIAN_SWAP_64(x) (wxUINT64_SWAP_ON_BE(x)) #define ENDIAN_SWAP_I_64(x) x = wxUINT64_SWAP_ON_BE(x) #endif // ntohs #define ENDIAN_NTOHS(x) ( wxUINT16_SWAP_ON_LE(x) ) // ntohl #define ENDIAN_NTOHL(x) ( wxUINT32_SWAP_ON_LE(x) ) // new #define ENDIAN_NTOHLL(x) ( wxUINT64_SWAP_ON_LE(x) ) // htons #define ENDIAN_HTONS(x) ( wxUINT16_SWAP_ON_LE(x) ) // htonl #define ENDIAN_HTONL(x) ( wxUINT32_SWAP_ON_LE(x) ) // new #define ENDIAN_HTONLL(x) ( wxUINT64_SWAP_ON_LE(x) ) /** * Returns the value in the given bytestream. * * The value is returned exactly as it is found. */ // \{ inline uint16 RawPeekUInt16(const void* p); inline uint32 RawPeekUInt32(const void* p); inline uint64 RawPeekUInt64(const void* p); // \} /** * Writes the specified value into the bytestream. * * The value is written exactly as it is. */ // \{ inline void RawPokeUInt16(void* p, uint16 nVal); inline void RawPokeUInt32(void* p, uint32 nVal); inline void RawPokeUInt64(void* p, uint64 nVal); // \} /** * Returns the value in the given bytestream. * * The value is returned as little-endian. */ // \{ inline uint8 PeekUInt8(const void* p); inline uint16 PeekUInt16(const void* p); inline uint32 PeekUInt32(const void* p); inline uint64 PeekUInt64(const void* p); // \} /** * Writes the specified value into the bytestream. * * The value is written as little-endian. */ // \{ inline void PokeUInt8(void* p, uint8 nVal); inline void PokeUInt16(void* p, uint16 nVal); inline void PokeUInt32(void* p, uint32 nVal); inline void PokeUInt64(void* p, uint64 nVal); // \} #if defined(__arm__) || defined(__sparc__) || defined(__mips__) || defined(GCC_USES_STRICT_ALIASING) #define ARCHSPECIFIC_USE_MEMCPY #endif /////////////////////////////////////////////////////////////////////////////// // Peek - helper functions for read-accessing memory without modifying the memory pointer inline uint16 RawPeekUInt16(const void* p) { #ifndef ARCHSPECIFIC_USE_MEMCPY return *((uint16*)p); #else uint16 value; memcpy( &value, p, sizeof( uint16 ) ); return value; #endif } inline uint32 RawPeekUInt32(const void* p) { #ifndef ARCHSPECIFIC_USE_MEMCPY return *((uint32*)p); #else uint32 value; memcpy( &value, p, sizeof( uint32 ) ); return value; #endif } inline uint64 RawPeekUInt64(const void* p) { #ifndef ARCHSPECIFIC_USE_MEMCPY return *((uint64*)p); #else uint64 value; memcpy( &value, p, sizeof( uint64 ) ); return value; #endif } inline uint8 PeekUInt8(const void* p) { return *((uint8*)p); } inline uint16 PeekUInt16(const void* p) { return ENDIAN_SWAP_16( RawPeekUInt16( p ) ); } inline uint32 PeekUInt32(const void* p) { return ENDIAN_SWAP_32( RawPeekUInt32( p ) ); } inline uint64 PeekUInt64(const void* p) { return ENDIAN_SWAP_64( RawPeekUInt64( p ) ); } /////////////////////////////////////////////////////////////////////////////// // Poke - helper functions for write-accessing memory without modifying the memory pointer inline void RawPokeUInt16(void* p, uint16 nVal) { #ifndef ARCHSPECIFIC_USE_MEMCPY *((uint16*)p) = nVal; #else memcpy( p, &nVal, sizeof(uint16) ); #endif } inline void RawPokeUInt32(void* p, uint32 nVal) { #ifndef ARCHSPECIFIC_USE_MEMCPY *((uint32*)p) = nVal; #else memcpy( p, &nVal, sizeof(uint32) ); #endif } inline void RawPokeUInt64(void* p, uint64 nVal) { #ifndef ARCHSPECIFIC_USE_MEMCPY *((uint64*)p) = nVal; #else memcpy( p, &nVal, sizeof(uint64) ); #endif } inline void PokeUInt8(void* p, uint8 nVal) { *((uint8*)p) = nVal; } inline void PokeUInt16(void* p, uint16 nVal) { RawPokeUInt16( p, ENDIAN_SWAP_16( nVal ) ); } inline void PokeUInt32(void* p, uint32 nVal) { RawPokeUInt32( p, ENDIAN_SWAP_32( nVal ) ); } inline void PokeUInt64(void* p, uint64 nVal) { RawPokeUInt64( p, ENDIAN_SWAP_64( nVal ) ); } // Don't pollute the preprocessor namespace #undef ARCHSPECIFIC_USE_MEMCPY #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/AsyncDNS.cpp0000644000175000017500000000451012611472361020420 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "AsyncDNS.h" // Interface declaration #include "InternalEvents.h" // Needed for wxEVT_* #include "NetworkFunctions.h" // Needed for StringHosttoUint32 #include "Logger.h" CAsyncDNS::CAsyncDNS(const wxString& ipName, DnsSolveType type, wxEvtHandler* handler, void* socket) : wxThread(wxTHREAD_DETACHED) { m_type = type; m_ipName = ipName.wc_str(); // make a deep copy to to circument the thread-unsafe wxString reference counting m_socket = socket; m_handler = handler; } wxThread::ExitCode CAsyncDNS::Entry() { uint32 result = StringHosttoUint32(m_ipName); uint32 event_id = 0; void* event_data = NULL; switch (m_type) { case DNS_UDP: event_id = wxEVT_CORE_UDP_DNS_DONE; event_data = m_socket; break; case DNS_SOURCE: event_id = wxEVT_CORE_SOURCE_DNS_DONE; event_data = NULL; break; case DNS_SERVER_CONNECT: event_id = wxEVT_CORE_SERVER_DNS_DONE; event_data = m_socket; break; default: AddLogLineN(wxT("WRONG TYPE ID ON ASYNC DNS SOLVING!!!")); } if (event_id) { CMuleInternalEvent evt(event_id); evt.SetExtraLong(result); evt.SetClientData(event_data); wxPostEvent(m_handler,evt); } return NULL; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/AsyncDNS.h0000644000175000017500000000354312611472361020072 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef ASYNCDNS_H #define ASYNCDNS_H #include #include // Implementation of Asynchronous dns resolving using wxThread // and internal wxIPV4address handling of dns class wxEvtHandler; enum DnsSolveType { DNS_UDP, DNS_SOURCE, DNS_SERVER_CONNECT }; // Time between DNS solving the same address // 30 minutes * 60 s/m * 1000 ms/s #define DNS_SOLVE_TIME 30*60*1000 class CAsyncDNS : public wxThread { public: CAsyncDNS(const wxString& ipName, DnsSolveType type, wxEvtHandler* handler, void* socket = NULL); virtual ExitCode Entry(); private: DnsSolveType m_type; wxString m_ipName; void* m_socket; wxEvtHandler* m_handler; }; #endif // ASYNCDNS_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/BarShader.cpp0000644000175000017500000001302712611472361020634 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include #include "BarShader.h" // Interface declarations. #include // Needed for std::memcpy const double Pi = 3.14159265358979323846264338328; #define HALF(X) (((X) + 1) / 2) #define DEFAULT_DEPTH 10 CBarShader::CBarShader(unsigned height, unsigned width) : m_Width( width ), m_Height( height ), m_FileSize( 1 ), m_Modifiers( NULL ), m_used3dlevel( DEFAULT_DEPTH ), m_Content(width, 0) { } CBarShader::~CBarShader() { if ( m_Modifiers ) { delete[] m_Modifiers; } } void CBarShader::SetHeight(unsigned height) { if( m_Height != height ) { m_Height = height; // Reset the modifers if ( m_Modifiers ) { delete[] m_Modifiers; m_Modifiers = NULL; } } } void CBarShader::SetWidth(int width) { if (width > 0) { m_Width = width; Fill(CMuleColour(0,0,0)); } } void CBarShader::Set3dDepth(unsigned depth) { if ( depth < 1 ) { depth = 1; } else if ( depth > 5 ) { depth = 5; } if ( m_used3dlevel != depth ) { m_used3dlevel = depth; // Reset the modifers if ( m_Modifiers ) { delete[] m_Modifiers; m_Modifiers = NULL; } } } void CBarShader::BuildModifiers() { wxASSERT(m_used3dlevel < 7); if ( m_Modifiers ) { delete[] m_Modifiers; } unsigned depth = (7 - m_used3dlevel); unsigned count = HALF(m_Height); double piOverDepth = Pi/depth; double base = piOverDepth * ((depth / 2.0) - 1); double increment = piOverDepth / (count - 1); m_Modifiers = new double[count]; for (unsigned i = 0; i < count; i++) m_Modifiers[i] = (double)(sin(base + i * increment)); } void CBarShader::FillRange(uint64 start, uint64 end, const CMuleColour& colour) { wxASSERT(m_FileSize > 0); if (start >= end || start >= m_FileSize) { return; } // precision for small files: end must be increased by one // think of each byte as a visible block, then start points to // the beginning of its block, but end points to the END of its block end++; if (end > m_FileSize) { end = m_FileSize; } unsigned firstPixel = start * m_Width / m_FileSize; unsigned lastPixel = end * m_Width / m_FileSize; if (lastPixel == m_Width) { lastPixel--; } double f_Width = m_Width; // calculate how much of this pixels is to be covered with the fill double firstCovered = firstPixel + 1 - start * f_Width / m_FileSize; double lastCovered = end * f_Width / m_FileSize - lastPixel; // all inside one pixel ? if (firstPixel == lastPixel) { m_Content[firstPixel].BlendWith(colour, firstCovered + lastCovered - 1.0); } else { m_Content[firstPixel].BlendWith(colour, firstCovered); m_Content[lastPixel].BlendWith(colour, lastCovered); // fill pixels between (if any) for (unsigned i = firstPixel + 1; i < lastPixel; i++) { m_Content[i] = colour; } } } void CBarShader::Draw( wxDC* dc, int iLeft, int iTop, bool bFlat ) { wxASSERT( dc ); // Do we need to rebuild the modifiers? if ( !bFlat && !m_Modifiers ) { BuildModifiers(); } // Render the bar into a raw buffer unsigned char * buf = (unsigned char *) malloc(m_Width * m_Height * 3); if (bFlat) { // draw flat bar unsigned idx = 0; for (unsigned x = 0; x < m_Width; x++) { unsigned cRed = m_Content[x].Red(); unsigned cGreen = m_Content[x].Green(); unsigned cBlue = m_Content[x].Blue(); buf[idx++] = cRed; buf[idx++] = cGreen; buf[idx++] = cBlue; } unsigned linelength = idx; unsigned y = 1; for (; y < m_Height >> 1; y <<= 1, idx <<= 1) { std::memcpy(buf + idx, buf, idx); } if (y < m_Height) { std::memcpy(buf + idx, buf, (m_Height - y) * linelength); } } else { // draw rounded bar unsigned Max = HALF(m_Height); unsigned idx = 0; for (unsigned y = 0; y < Max; y++) { for (unsigned x = 0; x < m_Width; x++) { unsigned cRed = (unsigned)(m_Content[x].Red() * m_Modifiers[y] + .5f); unsigned cGreen = (unsigned)(m_Content[x].Green() * m_Modifiers[y] + .5f); unsigned cBlue = (unsigned)(m_Content[x].Blue() * m_Modifiers[y] + .5f); cRed = std::min(255u, cRed); cGreen = std::min(255u, cGreen); cBlue = std::min(255u, cBlue); buf[idx++] = cRed; buf[idx++] = cGreen; buf[idx++] = cBlue; } } unsigned linelength = m_Width * 3; for (unsigned y = std::max(Max, m_Height - Max); y < m_Height; y++) { std::memcpy(buf + y * linelength, buf + (m_Height - 1 - y) * linelength, linelength); } } wxImage image(m_Width, m_Height); image.SetData(buf); wxBitmap bitmap(image); dc->DrawBitmap(bitmap, iLeft, iTop); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/BarShader.h0000644000175000017500000001113712611472361020301 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef BARSHADER_H #define BARSHADER_H #include "Types.h" // Needed for uint16 and uint32 #include "MuleColour.h" class wxRect; class wxDC; /** * The barshader class is responsible for drawing the chunk-based progress bars used in aMule. * * CBarShader represents the chunks of a file through the use of spans, which * cover a range in the file with a certain color. New spans can be added on * the fly and old spans are automatically removed, resized or merged when * necessary. * * CBarShader will try to minimize the number of spans when possible. */ class CBarShader { public: /** * Constructor. * * @param height The height of the area upon which the span is drawn. * @param width The width of the area upon which the span is drawn. */ CBarShader(unsigned height = 1, unsigned width = 1); /** * Destructor. */ ~CBarShader(); /** * Sets the width of the drawn bar. * * @param width The new width. * * Setting this sets the width the bar which is used when it * is drawn and resets the pixel buffer to the fill color. */ void SetWidth(int width); /** * Sets the height of the drawn bar. * * @param height The new height. * * Changes the height of the bar, used when it is drawn. */ void SetHeight(unsigned height); /** * Sets the 3D-depth of the bar * * @param depth A value in the range from 1 to 5. */ void Set3dDepth(unsigned depth); /** * Sets a new filesize. * * @param fileSize The new filesize. * * Calling this function sets a new filesize, which is the virtual * length of the bar. This function must be called before any filling. */ void SetFileSize(uint64 fileSize) { m_FileSize = fileSize; } /** * Fills in a range with a certain color. * * @param start The starting position of the new span. * @param end The ending position of the new span. Must be larger than start. * @param colour The colour of the new span. * * Calling this function fill the specified range with the specified color. * Any spans completly or partially covered by the new span are either * removed or resized. If the value of end is larger than the current * filesize, the filesize is increased to the value of end. */ void FillRange(uint64 start, uint64 end, const CMuleColour& colour); /** * Fill the entire bar with a span of the specified color. * * @param colour The colour of the new span. */ void Fill(const CMuleColour& colour) { m_Content.clear(); m_Content.resize(m_Width, colour); } /** * Draws the bar on the specifed wxDC. * * @param dc The wxDC upon which the bar should be drawn. * @param iLeft The left position from where to start drawing. * @param iTop The top position from where to start drawing. * @param bFlat 3D effect is not applied if this is true. * * This functions draws the bar with the height and width specified * through either the contructor or with SetWidth() and SetHeight(). */ void Draw( wxDC* dc, int iLeft, int iTop, bool bFlat ); private: /** * Calculates the modifiers used to create 3d effect. */ void BuildModifiers(); //! The width of the drawn bar unsigned m_Width; //! The height of the drawn bar unsigned m_Height; //! The virtual filesize assosiated with the bar uint64 m_FileSize; //! Pointer to array of modifers used to create 3D effect. Size is (m_Height+1)/2 when set. double* m_Modifiers; //! The current 3d level uint16 m_used3dlevel; // color for each pixel across the width is stored here std::vector m_Content; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/BaseClient.cpp0000644000175000017500000027506412611472361021025 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include #include #include "updownclient.h" // Needed for CUpDownClient #include "SharedFileList.h" // Needed for CSharedFileList #include #include #include #include #include #include #include #include #include #include // Needed for inflateEnd #include // Needed for CFormat #include "SearchList.h" // Needed for CSearchList #include "DownloadQueue.h" // Needed for CDownloadQueue #include "UploadQueue.h" // Needed for CUploadQueue #include "IPFilter.h" // Needed for CIPFilter #include "ServerConnect.h" // Needed for CServerConnect #include "ClientCredits.h" // Needed for CClientCredits #include "ClientCreditsList.h" // Needed for CClientCreditsList #include "Server.h" // Needed for CServer #include "Preferences.h" // Needed for CPreferences #include "MemFile.h" // Needed for CMemFile #include "Packet.h" // Needed for CPacket #include "Friend.h" // Needed for CFriend #include "ClientList.h" // Needed for CClientList #ifndef AMULE_DAEMON #include "amuleDlg.h" // Needed for CamuleDlg #include "CaptchaDialog.h" // Needed for CCaptchaDialog #include "CaptchaGenerator.h" #include "ChatWnd.h" // Needed for CChatWnd #endif #include "amule.h" // Needed for theApp #include "PartFile.h" // Needed for CPartFile #include "ClientTCPSocket.h" // Needed for CClientTCPSocket #include "ListenSocket.h" // Needed for CListenSocket #include "FriendList.h" // Needed for CFriendList #include "Statistics.h" // Needed for theStats #include "ClientUDPSocket.h" #include "Logger.h" #include "DataToText.h" // Needed for GetSoftName() #include "GuiEvents.h" // Needed for Notify_ #include "ServerList.h" // For CServerList #include "kademlia/kademlia/Kademlia.h" #include "kademlia/kademlia/Prefs.h" #include "kademlia/kademlia/Search.h" #include "kademlia/kademlia/UDPFirewallTester.h" #include "kademlia/routing/RoutingZone.h" //#define __PACKET_DEBUG__ // some client testing variables static wxString crash_name = wxT("[Invalid User Name]"); static wxString empty_name = wxT("[Empty User Name]"); // members of CUpDownClient // which are used by down and uploading functions CUpDownClient::CUpDownClient(CClientTCPSocket* sender) { #ifdef __DEBUG__ m_socket = NULL; SetSocket(sender); #else m_socket = sender; #endif Init(); } CUpDownClient::CUpDownClient(uint16 in_port, uint32 in_userid, uint32 in_serverip, uint16 in_serverport, CPartFile* in_reqfile, bool ed2kID, bool checkfriend) { m_socket = NULL; Init(); m_nUserPort = in_port; if(ed2kID && !IsLowID(in_userid)) { SetUserIDHybrid( wxUINT32_SWAP_ALWAYS(in_userid) ); } else { SetUserIDHybrid( in_userid); } //If highID and ED2K source, incoming ID and IP are equal.. //If highID and Kad source, incoming IP needs swap for the IP if (!HasLowID()) { if (ed2kID) { m_nConnectIP = in_userid; } else { m_nConnectIP = wxUINT32_SWAP_ALWAYS(in_userid); } // Will be on right endianess now m_FullUserIP = m_nConnectIP; } m_dwServerIP = in_serverip; m_nServerPort = in_serverport; SetRequestFile( in_reqfile ); ReGetClientSoft(); if (checkfriend) { if ((m_Friend = theApp->friendlist->FindFriend(CMD4Hash(), m_dwUserIP, m_nUserPort)) != NULL){ m_Friend->LinkClient(CCLIENTREF(this, wxT("CUpDownClient::CUpDownClient m_Friend->LinkClient"))); } else{ // avoid that an unwanted client instance keeps a friend slot m_bFriendSlot = false; } } } void CUpDownClient::Init() { m_linked = 0; #ifdef DEBUG_ZOMBIE_CLIENTS m_linkedDebug = false; #endif m_bAddNextConnect = false; credits = NULL; m_byChatstate = MS_NONE; m_nKadState = KS_NONE; m_nChatCaptchaState = CA_NONE; m_cShowDR = 0; m_reqfile = NULL; // No file required yet m_nTransferredUp = 0; m_cSendblock = 0; m_cAsked = 0; msReceivedPrev = 0; kBpsDown = 0.0; bytesReceivedCycle = 0; m_nServerPort = 0; m_iFileListRequested = 0; m_dwLastUpRequest = 0; m_bEmuleProtocol = false; m_bCompleteSource = false; m_bFriendSlot = false; m_bCommentDirty = false; m_bReaskPending = false; m_bUDPPending = false; m_nUserPort = 0; m_nPartCount = 0; m_dwLastAskedTime = 0; m_nDownloadState = DS_NONE; m_dwUploadTime = 0; m_nTransferredDown = 0; m_nUploadState = US_NONE; m_dwLastBlockReceived = 0; m_bUnicodeSupport = false; m_fSentOutOfPartReqs = 0; m_nCurQueueSessionPayloadUp = 0; m_addedPayloadQueueSession = 0; m_nUpDatarate = 0; m_nSumForAvgUpDataRate = 0; m_nRemoteQueueRank = 0; m_nOldRemoteQueueRank = 0; m_dwLastSourceRequest = 0; m_dwLastSourceAnswer = 0; m_dwLastAskedForSources = 0; m_SecureIdentState = IS_UNAVAILABLE; m_dwLastSignatureIP = 0; m_byInfopacketsReceived = IP_NONE; m_bIsHybrid = false; m_bIsML = false; m_Friend = NULL; m_iRating = 0; m_nCurSessionUp = 0; m_clientSoft=SO_UNKNOWN; m_bRemoteQueueFull = false; m_HasValidHash = false; SetWaitStartTime(); m_fHashsetRequesting = 0; m_fSharedDirectories = 0; m_lastPartAsked = 0xffff; m_nUpCompleteSourcesCount= 0; m_waitingPosition = 0; m_score = 0; m_lastRefreshedDLDisplay = 0; m_bHelloAnswerPending = false; m_fSentCancelTransfer = 0; m_Aggressiveness = 0; m_LastFileRequest = 0; m_clientState = CS_NEW; ClearHelloProperties(); m_pReqFileAICHHash = NULL; m_fSupportsAICH = 0; m_fAICHRequested = 0; m_fSupportsLargeFiles = 0; m_fExtMultiPacket = 0; m_fIsSpammer = 0; m_dwUserIP = 0; m_nConnectIP = 0; m_dwServerIP = 0; m_fNeedOurPublicIP = false; m_bHashsetRequested = false; m_lastDownloadingPart = 0; m_uploadingfile = NULL; m_OSInfo_sent = false; /* Kad stuff */ SetBuddyID(NULL); m_nBuddyIP = 0; m_nBuddyPort = 0; m_nUserIDHybrid = 0; m_nSourceFrom = SF_NONE; if (m_socket) { SetIP(m_socket->GetPeerInt()); } else { SetIP(0); } /* Statistics */ m_lastClientSoft = (uint32)(-1); m_lastClientVersion = 0; /* Creation time (for buddies timeout) */ m_nCreationTime = ::GetTickCount(); m_MaxBlockRequests = STANDARD_BLOCKS_REQUEST; // Safe starting amount m_last_block_start = 0; m_lastaverage = 0; SetLastBuddyPingPongTime(); m_fRequestsCryptLayer = 0; m_fSupportsCryptLayer = 0; m_fRequiresCryptLayer = 0; m_fSupportsSourceEx2 = 0; m_fSupportsCaptcha = 0; m_fDirectUDPCallback = 0; m_dwDirectCallbackTimeout = 0; m_hasbeenobfuscatinglately = false; m_cCaptchasSent = 0; m_cMessagesReceived = 0; m_cMessagesSent = 0; } CUpDownClient::~CUpDownClient() { #ifdef __DEBUG__ if (!connection_reason.IsEmpty()) { AddDebugLogLineN(logClient, wxT("Client to check for ") + connection_reason + wxT(" was deleted without connection.")); } #endif if (m_lastClientSoft == SO_UNKNOWN) { theStats::RemoveUnknownClient(); } else if (m_lastClientSoft != (uint32)(-1)) { theStats::RemoveKnownClient(m_lastClientSoft, m_lastClientVersion, m_lastOSInfo); } // Indicate that we are not anymore on stats m_lastClientSoft = (uint32)(-1); // The socket should have been removed in Safe_Delete, but it // doesn't hurt to have an extra check. if (m_socket) { m_socket->Safe_Delete(); // Paranoia SetSocket(NULL); } ClearUploadBlockRequests(); ClearDownloadBlockRequests(); DeleteContents(m_WaitingPackets_list); // Allow detection of deleted clients that didn't go through Safe_Delete m_clientState = CS_DYING; } void CUpDownClient::ClearHelloProperties() { m_nUDPPort = 0; m_byUDPVer = 0; m_byDataCompVer = 0; m_byEmuleVersion = 0; m_bySourceExchange1Ver = 0; m_byAcceptCommentVer = 0; m_byExtendedRequestsVer = 0; m_byCompatibleClient = 0; m_nKadPort = 0; m_bySupportSecIdent = 0; m_bSupportsPreview = 0; m_nClientVersion = 0; m_fSharedDirectories = 0; m_bMultiPacket = 0; m_fOsInfoSupport = 0; m_fValueBasedTypeTags = 0; SecIdentSupRec = 0; m_byKadVersion = 0; m_fRequestsCryptLayer = 0; m_fSupportsCryptLayer = 0; m_fRequiresCryptLayer = 0; m_fSupportsSourceEx2 = 0; m_fSupportsCaptcha = 0; m_fDirectUDPCallback = 0; m_bIsHybrid = false; m_bIsML = false; m_fNoViewSharedFiles = true; // that's a sensible default to assume until we get the real value m_bUnicodeSupport = false; } bool CUpDownClient::ProcessHelloPacket(const byte* pachPacket, uint32 nSize) { const CMemFile data(pachPacket,nSize); uint8 hashsize = data.ReadUInt8(); if ( 16 != hashsize ) { /* * Hint: We can not accept other sizes here because: * - the magic number is spread all over the source * - the answer packet lacks the size field */ throw wxString(wxT("Invalid Hello packet: Other userhash sizes than 16 are not implemented")); } // eMule 0.42: reset all client properties; a client may not send a particular emule tag any longer ClearHelloProperties(); return ProcessHelloTypePacket(data); } void CUpDownClient::Safe_Delete() { // Because we are delaying the deletion, we might end up trying to delete // it twice, however, this is normal and shouldn't trigger any failures if ( m_clientState == CS_DYING ) { return; } // If called from background, post an event to process it in main thread if (!wxThread::IsMain()) { CoreNotify_Client_Delete(CCLIENTREF(this, wxT("CUpDownClient::Safe_Delete CoreNotify_Client_Delete"))); return; } m_clientState = CS_DYING; // Make sure client doesn't get deleted until this method is finished CClientRef ref(CCLIENTREF(this, wxT("CUpDownClient::Safe_Delete reflocker"))); // Close the socket to avoid any more connections and related events if ( m_socket ) { m_socket->Safe_Delete(); // Paranoia SetSocket(NULL); } // Remove the client from the clientlist if we still have it if ( theApp->clientlist ) { theApp->clientlist->RemoveClient( this ); } // Doing what RemoveClient used to do. Just to be sure... if (theApp->uploadqueue) { theApp->uploadqueue->RemoveFromUploadQueue(this); theApp->uploadqueue->RemoveFromWaitingQueue(this); } if (theApp->downloadqueue) { theApp->downloadqueue->RemoveSource(this); } // For security, remove it from the lists unconditionally. Notify_SharedCtrlRemoveClient(ECID(), (CKnownFile*)NULL); Notify_SourceCtrlRemoveSource(ECID(), (CPartFile*)NULL); if (IsAICHReqPending()){ m_fAICHRequested = FALSE; CAICHHashSet::ClientAICHRequestFailed(this); } if (m_Friend) { m_Friend->UnLinkClient(); // this notifies m_Friend = NULL; } if (m_iRating>0 || !m_strComment.IsEmpty()) { m_iRating = 0; m_strComment.Clear(); if (m_reqfile) { m_reqfile->UpdateFileRatingCommentAvail(); } } // Ensure that source-counts gets updated in case // of a source not on the download-queue SetRequestFile( NULL ); SetUploadFileID(NULL); delete m_pReqFileAICHHash; m_pReqFileAICHHash = NULL; #ifdef DEBUG_ZOMBIE_CLIENTS if (m_linked > 1) { AddLogLineC(CFormat(wxT("Client %d still linked in %d places: %s")) % ECID() % (m_linked - 1) % GetLinkedFrom()); m_linkedDebug = true; } #endif } bool CUpDownClient::ProcessHelloAnswer(const byte* pachPacket, uint32 nSize) { const CMemFile data(pachPacket,nSize); bool bIsMule = ProcessHelloTypePacket(data); m_bHelloAnswerPending = false; return bIsMule; } bool CUpDownClient::ProcessHelloTypePacket(const CMemFile& data) { uint32 dwEmuleTags = 0; CMD4Hash hash = data.ReadHash(); SetUserHash( hash ); SetUserIDHybrid( data.ReadUInt32() ); uint16 nUserPort = data.ReadUInt16(); // hmm clientport is sent twice - why? uint32 tagcount = data.ReadUInt32(); for (uint32 i = 0;i < tagcount; i++){ CTag temptag(data, true); switch(temptag.GetNameID()){ case CT_NAME: m_Username = temptag.GetStr(); break; case CT_VERSION: m_nClientVersion = temptag.GetInt(); break; case ET_MOD_VERSION: if (temptag.IsStr()) { m_strModVersion = temptag.GetStr(); } else if (temptag.IsInt()) { m_strModVersion = CFormat(wxT("ModID=%u")) % temptag.GetInt(); } else { m_strModVersion = wxT("ModID="); } break; case CT_PORT: nUserPort = temptag.GetInt(); break; case CT_EMULE_UDPPORTS: // 16 KAD Port // 16 UDP Port SetKadPort((temptag.GetInt() >> 16) & 0xFFFF); m_nUDPPort = temptag.GetInt() & 0xFFFF; dwEmuleTags |= 1; #ifdef __PACKET_DEBUG__ AddLogLineNS(CFormat(wxT("Hello type packet processing with eMule ports UDP=%i KAD=%i")) % m_nUDPPort % m_nKadPort); #endif break; case CT_EMULE_BUDDYIP: // 32 BUDDY IP m_nBuddyIP = temptag.GetInt(); #ifdef __PACKET_DEBUG__ AddLogLineNS(CFormat(wxT("Hello type packet processing with eMule BuddyIP=%u (%s)")) % m_nBuddyIP % Uint32toStringIP(m_nBuddyIP)); #endif break; case CT_EMULE_BUDDYUDP: // 16 --Reserved for future use-- // 16 BUDDY Port m_nBuddyPort = (uint16)temptag.GetInt(); #ifdef __PACKET_DEBUG__ AddLogLineNS(CFormat(wxT("Hello type packet processing with eMule BuddyPort=%u")) % m_nBuddyPort); #endif break; case CT_EMULE_MISCOPTIONS1: { // 3 AICH Version (0 = not supported) // 1 Unicode // 4 UDP version // 4 Data compression version // 4 Secure Ident // 4 Source Exchange // 4 Ext. Requests // 4 Comments // 1 PeerCache supported // 1 No 'View Shared Files' supported // 1 MultiPacket // 1 Preview uint32 flags = temptag.GetInt(); m_fSupportsAICH = (flags >> (4*7+1)) & 0x07; m_bUnicodeSupport = (flags >> 4*7) & 0x01; m_byUDPVer = (flags >> 4*6) & 0x0f; m_byDataCompVer = (flags >> 4*5) & 0x0f; m_bySupportSecIdent = (flags >> 4*4) & 0x0f; m_bySourceExchange1Ver = (flags >> 4*3) & 0x0f; m_byExtendedRequestsVer = (flags >> 4*2) & 0x0f; m_byAcceptCommentVer = (flags >> 4*1) & 0x0f; m_fNoViewSharedFiles = (flags >> 1*2) & 0x01; m_bMultiPacket = (flags >> 1*1) & 0x01; m_fSupportsPreview = (flags >> 1*0) & 0x01; dwEmuleTags |= 2; #ifdef __PACKET_DEBUG__ AddLogLineNS(wxT("Hello type packet processing with eMule Misc Options:")); AddLogLineNS(CFormat(wxT("m_byUDPVer = %i")) % m_byUDPVer); AddLogLineNS(CFormat(wxT("m_byDataCompVer = %i")) % m_byDataCompVer); AddLogLineNS(CFormat(wxT("m_bySupportSecIdent = %i")) % m_bySupportSecIdent); AddLogLineNS(CFormat(wxT("m_bySourceExchangeVer = %i")) % m_bySourceExchange1Ver); AddLogLineNS(CFormat(wxT("m_byExtendedRequestsVer = %i")) % m_byExtendedRequestsVer); AddLogLineNS(CFormat(wxT("m_byAcceptCommentVer = %i")) % m_byAcceptCommentVer); AddLogLineNS(CFormat(wxT("m_fNoViewSharedFiles = %i")) % m_fNoViewSharedFiles); AddLogLineNS(CFormat(wxT("m_bMultiPacket = %i")) % m_bMultiPacket); AddLogLineNS(CFormat(wxT("m_fSupportsPreview = %i")) % m_fSharedDirectories); AddLogLineNS(wxT("That's all.")); #endif SecIdentSupRec += 1; break; } case CT_EMULE_MISCOPTIONS2: // 19 Reserved // 1 Direct UDP Callback supported and available // 1 Supports ChatCaptchas // 1 Supports SourceExachnge2 Packets, ignores SX1 Packet Version // 1 Requires CryptLayer // 1 Requests CryptLayer // 1 Supports CryptLayer // 1 Reserved (ModBit) // 1 Ext Multipacket (Hash+Size instead of Hash) // 1 Large Files (includes support for 64bit tags) // 4 Kad Version - will go up to version 15 only (may need to add another field at some point in the future) m_fDirectUDPCallback = (temptag.GetInt() >> 12) & 0x01; m_fSupportsCaptcha = (temptag.GetInt() >> 11) & 0x01; m_fSupportsSourceEx2 = (temptag.GetInt() >> 10) & 0x01; m_fRequiresCryptLayer = (temptag.GetInt() >> 9) & 0x01; m_fRequestsCryptLayer = (temptag.GetInt() >> 8) & 0x01; m_fSupportsCryptLayer = (temptag.GetInt() >> 7) & 0x01; // reserved 1 m_fExtMultiPacket = (temptag.GetInt() >> 5) & 0x01; m_fSupportsLargeFiles = (temptag.GetInt() >> 4) & 0x01; m_byKadVersion = (temptag.GetInt() >> 0) & 0x0f; dwEmuleTags |= 8; m_fRequestsCryptLayer &= m_fSupportsCryptLayer; m_fRequiresCryptLayer &= m_fRequestsCryptLayer; #ifdef __PACKET_DEBUG__ AddLogLineNS(wxT("Hello type packet processing with eMule Misc Options 2:")); AddLogLineNS(CFormat(wxT(" m_fDirectUDPCallback = %i")) % m_fDirectUDPCallback); AddLogLineNS(CFormat(wxT(" m_fSupportsCaptcha = %i")) % m_fSupportsCaptcha); AddLogLineNS(CFormat(wxT(" m_fSupportsSourceEx2 = %i")) % m_fSupportsSourceEx2); AddLogLineNS(CFormat(wxT(" m_fRequiresCryptLayer = %i")) % m_fRequiresCryptLayer); AddLogLineNS(CFormat(wxT(" m_fRequestsCryptLayer = %i")) % m_fRequestsCryptLayer); AddLogLineNS(CFormat(wxT(" m_fSupportsCryptLayer = %i")) % m_fSupportsCryptLayer); AddLogLineNS(CFormat(wxT(" m_fExtMultiPacket = %i")) % m_fExtMultiPacket); AddLogLineNS(CFormat(wxT(" m_fSupportsLargeFiles = %i")) % m_fSupportsLargeFiles); AddLogLineNS(CFormat(wxT(" KadVersion = %u")) % m_byKadVersion); AddLogLineNS(wxT("That's all.")); #endif break; // Special tag for Compat. Clients Misc options. case CT_EMULECOMPAT_OPTIONS: // 1 Operative System Info // 1 Value-based-type int tags (experimental!) m_fValueBasedTypeTags = (temptag.GetInt() >> 1*1) & 0x01; m_fOsInfoSupport = (temptag.GetInt() >> 1*0) & 0x01; break; case CT_EMULE_VERSION: // 8 Compatible Client ID // 7 Mjr Version (Doesn't really matter..) // 7 Min Version (Only need 0-99) // 3 Upd Version (Only need 0-5) // 7 Bld Version (Only need 0-99) m_byCompatibleClient = (temptag.GetInt() >> 24); m_nClientVersion = temptag.GetInt() & 0x00ffffff; m_byEmuleVersion = 0x99; m_fSharedDirectories = 1; dwEmuleTags |= 4; break; } } m_nUserPort = nUserPort; m_dwServerIP = data.ReadUInt32(); m_nServerPort = data.ReadUInt16(); // Hybrid now has an extra uint32.. What is it for? // Also, many clients seem to send an extra 6? These are not eDonkeys or Hybrids.. if ( data.GetLength() - data.GetPosition() == sizeof(uint32) ) { uint32 test = data.ReadUInt32(); /*if (test == 'KDLM') below kdlm is converted to ascii values. This fixes a warning with gcc 3.4. K=4b D=44 L=4c M=4d */ if (test == 0x4b444c4d) { //if it's == "KDLM" m_bIsML=true; } else{ m_bIsHybrid = true; m_fSharedDirectories = 1; } } if (m_socket) { SetIP(m_socket->GetPeerInt()); } else { throw wxString(wxT("Huh, socket failure. Avoided crash this time.")); } if (thePrefs::AddServersFromClient()) { CServer* addsrv = new CServer(m_nServerPort, Uint32toStringIP(m_dwServerIP)); addsrv->SetListName(addsrv->GetAddress()); if (!theApp->AddServer(addsrv)) { delete addsrv; } } //(a)If this is a highID user, store the ID in the Hybrid format. //(b)Some older clients will not send a ID, these client are HighID users that are not connected to a server. //(c)Kad users with a *.*.*.0 IPs will look like a lowID user they are actually a highID user.. They can be detected easily //because they will send a ID that is the same as their IP.. if(!HasLowID() || m_nUserIDHybrid == 0 || m_nUserIDHybrid == m_dwUserIP ) { SetUserIDHybrid(wxUINT32_SWAP_ALWAYS(m_dwUserIP)); } // get client credits CClientCredits* pFoundCredits = theApp->clientcredits->GetCredit(m_UserHash); if (credits == NULL){ credits = pFoundCredits; if (!theApp->clientlist->ComparePriorUserhash(m_dwUserIP, m_nUserPort, pFoundCredits)){ AddDebugLogLineN( logClient, CFormat( wxT("Client: %s (%s) Banreason: Userhash changed (Found in TrackedClientsList)") ) % GetUserName() % GetFullIP() ); Ban(); } } else if (credits != pFoundCredits){ // userhash change ok, however two hours "waittime" before it can be used credits = pFoundCredits; AddDebugLogLineN( logClient, CFormat( wxT("Client: %s (%s) Banreason: Userhash changed") ) % GetUserName() % GetFullIP() ); Ban(); } if ((m_Friend = theApp->friendlist->FindFriend(m_UserHash, m_dwUserIP, m_nUserPort)) != NULL){ m_Friend->LinkClient(CCLIENTREF(this, wxT("CUpDownClient::ProcessHelloTypePacket m_Friend->LinkClient"))); } else{ // avoid that an unwanted client instance keeps a friend slot SetFriendSlot(false); } ReGetClientSoft(); m_byInfopacketsReceived |= IP_EDONKEYPROTPACK; // check if at least CT_EMULEVERSION was received, all other tags are optional bool bIsMule = (dwEmuleTags & 0x04) == 0x04; if (bIsMule) { m_bEmuleProtocol = true; m_byInfopacketsReceived |= IP_EMULEPROTPACK; } if (GetKadPort() && GetKadVersion() > 1) { Kademlia::CKademlia::Bootstrap(wxUINT32_SWAP_ALWAYS(GetIP()), GetKadPort()); } return bIsMule; } bool CUpDownClient::SendHelloPacket() { if (m_socket == NULL) { wxFAIL; return true; } // if IP is filtered, don't greet him but disconnect... if (theApp->ipfilter->IsFiltered(m_socket->GetPeerInt())) { if (Disconnected(wxT("IPFilter"))) { Safe_Delete(); return false; } return true; } CMemFile data(128); data.WriteUInt8(16); // size of userhash SendHelloTypePacket(&data); CPacket* packet = new CPacket(data, OP_EDONKEYPROT, OP_HELLO); theStats::AddUpOverheadOther(packet->GetPacketSize()); SendPacket(packet,true); m_bHelloAnswerPending = true; AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_HELLO to ") + GetFullIP() ); return true; } void CUpDownClient::SendMuleInfoPacket(bool bAnswer, bool OSInfo) { if (m_socket == NULL){ wxFAIL; return; } CPacket* packet = NULL; CMemFile data; data.WriteUInt8(CURRENT_VERSION_SHORT); if (OSInfo) { // Special MuleInfo packet for clients supporting it. // This means aMule >= 2.0.0 and Hydranode // Violently mark it as special Mule Info packet // Sending this makes non-supporting-osinfo clients to refuse to read this // packet. Anyway, this packet should NEVER get to non-supporting clients. data.WriteUInt8(/*EMULE_PROTOCOL*/ 0xFF); data.WriteUInt32(1); // One Tag (OS_INFO) CTagString tag1(ET_OS_INFO,theApp->GetOSType()); tag1.WriteTagToFile(&data); m_OSInfo_sent = true; // So we don't send it again } else { // Normal MuleInfo packet // Kry - There's no point on upgrading to VBT tags here // as no client supporting it uses mule info packet. data.WriteUInt8(EMULE_PROTOCOL); // Tag number data.WriteUInt32(9); CTagInt32 tag1(ET_COMPRESSION,1); tag1.WriteTagToFile(&data); CTagInt32 tag2(ET_UDPVER,4); tag2.WriteTagToFile(&data); CTagInt32 tag3(ET_UDPPORT, thePrefs::GetEffectiveUDPPort()); tag3.WriteTagToFile(&data); CTagInt32 tag4(ET_SOURCEEXCHANGE,3); tag4.WriteTagToFile(&data); CTagInt32 tag5(ET_COMMENTS,1); tag5.WriteTagToFile(&data); CTagInt32 tag6(ET_EXTENDEDREQUEST,2); tag6.WriteTagToFile(&data); uint32 dwTagValue = (theApp->CryptoAvailable() ? 3 : 0); // Kry - Needs the preview code from eMule /* // set 'Preview supported' only if 'View Shared Files' allowed if (thePrefs::CanSeeShares() != vsfaNobody) { dwTagValue |= 128; } */ CTagInt32 tag7(ET_FEATURES, dwTagValue); tag7.WriteTagToFile(&data); CTagInt32 tag8(ET_COMPATIBLECLIENT,SO_AMULE); tag8.WriteTagToFile(&data); // Support for tag ET_MOD_VERSION wxString mod_name(MOD_VERSION_LONG); CTagString tag9(ET_MOD_VERSION, mod_name); tag9.WriteTagToFile(&data); // Maella end } packet = new CPacket(data, OP_EMULEPROT, (bAnswer ? OP_EMULEINFOANSWER : OP_EMULEINFO)); if (m_socket) { theStats::AddUpOverheadOther(packet->GetPacketSize()); SendPacket(packet,true,true); #ifdef __DEBUG__ if (!bAnswer) { if (!OSInfo) { AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_EMULEINFO to ") + GetFullIP() ); } else { AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_EMULEINFO/OS_INFO to ") + GetFullIP() ); } } else { AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_EMULEINFOANSWER to ") + GetFullIP() ); } #endif } } bool CUpDownClient::ProcessMuleInfoPacket(const byte* pachPacket, uint32 nSize) { uint8 protocol_version; const CMemFile data(pachPacket,nSize); // The version number part of this packet will soon be useless since // it is only able to go to v.99. Why the version is a uint8 and why // it was not done as a tag like the eDonkey hello packet is not known. // Therefore, sooner or later, we are going to have to switch over to // using the eDonkey hello packet to set the version. No sense making // a third value sent for versions. uint8 mule_version = data.ReadUInt8(); protocol_version = data.ReadUInt8(); uint32 tagcount = data.ReadUInt32(); if (protocol_version == 0xFF) { // OS Info supporting clients sending a recycled Mule info packet for (uint32 i = 0;i < tagcount; i++){ CTag temptag(data, true); switch(temptag.GetNameID()){ case ET_OS_INFO: // Special tag, only supporting clients (aMule/Hydranode) // It was recycled from a mod's tag, so if the other side // is not supporting OS Info, we're seriously fucked up :) m_sClientOSInfo = temptag.GetStr(); // If we didn't send our OSInfo to this client, just send it if (!m_OSInfo_sent) { SendMuleInfoPacket(false,true); } UpdateStats(); break; // Your ad... er... I mean TAG, here default: break; } } } else { // Old eMule sending tags m_byCompatibleClient = 0; m_byEmuleVersion = mule_version; if( m_byEmuleVersion == 0x2B ) { m_byEmuleVersion = 0x22; } if (!(m_bEmuleProtocol = (protocol_version == EMULE_PROTOCOL))) { return false; } for (uint32 i = 0;i < tagcount; i++){ CTag temptag(data, false); switch(temptag.GetNameID()){ case ET_COMPRESSION: // Bits 31- 8: 0 - reserved // Bits 7- 0: data compression version m_byDataCompVer = temptag.GetInt(); break; case ET_UDPPORT: // Bits 31-16: 0 - reserved // Bits 15- 0: UDP port m_nUDPPort = temptag.GetInt(); break; case ET_UDPVER: // Bits 31- 8: 0 - reserved // Bits 7- 0: UDP protocol version m_byUDPVer = temptag.GetInt(); break; case ET_SOURCEEXCHANGE: // Bits 31- 8: 0 - reserved // Bits 7- 0: source exchange protocol version m_bySourceExchange1Ver = temptag.GetInt(); break; case ET_COMMENTS: // Bits 31- 8: 0 - reserved // Bits 7- 0: comments version m_byAcceptCommentVer = temptag.GetInt(); break; case ET_EXTENDEDREQUEST: // Bits 31- 8: 0 - reserved // Bits 7- 0: extended requests version m_byExtendedRequestsVer = temptag.GetInt(); break; case ET_COMPATIBLECLIENT: // Bits 31- 8: 0 - reserved // Bits 7- 0: compatible client ID m_byCompatibleClient = temptag.GetInt(); break; case ET_FEATURES: // Bits 31- 8: 0 - reserved // Bit 7: Preview // Bit 6- 0: secure identification m_bySupportSecIdent = temptag.GetInt() & 3; m_bSupportsPreview = (temptag.GetInt() & 128) > 0; SecIdentSupRec += 2; break; case ET_MOD_VERSION: if (temptag.IsStr()) { m_strModVersion = temptag.GetStr(); } else if (temptag.IsInt()) { m_strModVersion = CFormat(wxT("ModID=%u")) % temptag.GetInt(); } else { m_strModVersion = wxT("ModID="); } break; default: AddDebugLogLineN( logPacketErrors, CFormat( wxT("Unknown Mule tag (%s) from client: %s") ) % temptag.GetFullInfo() % GetClientFullInfo() ); break; } } if( m_byDataCompVer == 0 ){ m_bySourceExchange1Ver = 0; m_byExtendedRequestsVer = 0; m_byAcceptCommentVer = 0; m_nUDPPort = 0; } //implicitly supported options by older clients //in the future do not use version to guess about new features if(m_byEmuleVersion < 0x25 && m_byEmuleVersion > 0x22) { m_byUDPVer = 1; } if(m_byEmuleVersion < 0x25 && m_byEmuleVersion > 0x21) { m_bySourceExchange1Ver = 1; } if(m_byEmuleVersion == 0x24) { m_byAcceptCommentVer = 1; } // Shared directories are requested from eMule 0.28+ because eMule 0.27 has a bug in // the OP_ASKSHAREDFILESDIR handler, which does not return the shared files for a // directory which has a trailing backslash. if(m_byEmuleVersion >= 0x28 && !m_bIsML) {// MLdonkey currently does not support shared directories m_fSharedDirectories = 1; } ReGetClientSoft(); m_byInfopacketsReceived |= IP_EMULEPROTPACK; } return (protocol_version == 0xFF); // This was a OS_Info? } void CUpDownClient::SendHelloAnswer() { if (m_socket == NULL){ wxFAIL; return; } CMemFile data(128); SendHelloTypePacket(&data); CPacket* packet = new CPacket(data, OP_EDONKEYPROT, OP_HELLOANSWER); theStats::AddUpOverheadOther(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_HELLOANSWER to ") + GetFullIP() ); SendPacket(packet,true); } void CUpDownClient::SendHelloTypePacket(CMemFile* data) { data->WriteHash(thePrefs::GetUserHash()); data->WriteUInt32(theApp->GetID()); data->WriteUInt16(thePrefs::GetPort()); uint32 tagcount = 6; if( theApp->clientlist->GetBuddy() && theApp->IsFirewalled() ) { tagcount += 2; } tagcount ++; // eMule misc flags 2 (kad version) #ifdef __SVN__ // Kry - This is the tagcount!!! Be sure to update it!! // Last update: CT_EMULECOMPAT_OPTIONS included data->WriteUInt32(tagcount + 1); #else data->WriteUInt32(tagcount); // NO MOD_VERSION #endif CTagString tagname(CT_NAME,thePrefs::GetUserNick()); tagname.WriteTagToFile(data, utf8strRaw); CTagVarInt tagversion(CT_VERSION, EDONKEYVERSION, GetVBTTags() ? 0 : 32); tagversion.WriteTagToFile(data); // eMule UDP Ports uint32 kadUDPPort = 0; if(Kademlia::CKademlia::IsConnected()) { if (Kademlia::CKademlia::GetPrefs()->GetExternalKadPort() != 0 && Kademlia::CKademlia::GetPrefs()->GetUseExternKadPort() && Kademlia::CUDPFirewallTester::IsVerified()) { kadUDPPort = Kademlia::CKademlia::GetPrefs()->GetExternalKadPort(); } else { kadUDPPort = Kademlia::CKademlia::GetPrefs()->GetInternKadPort(); } } CTagVarInt tagUdpPorts(CT_EMULE_UDPPORTS, (kadUDPPort << 16) | ((uint32)thePrefs::GetEffectiveUDPPort()), GetVBTTags() ? 0 : 32); tagUdpPorts.WriteTagToFile(data); if( theApp->clientlist->GetBuddy() && theApp->IsFirewalled() ) { CTagVarInt tagBuddyIP(CT_EMULE_BUDDYIP, theApp->clientlist->GetBuddy()->GetIP(), GetVBTTags() ? 0 : 32); tagBuddyIP.WriteTagToFile(data); CTagVarInt tagBuddyPort(CT_EMULE_BUDDYUDP, // ( RESERVED ) ((uint32)theApp->clientlist->GetBuddy()->GetUDPPort() ) , GetVBTTags() ? 0 : 32); tagBuddyPort.WriteTagToFile(data); } // aMule Version CTagVarInt tagMuleVersion(CT_EMULE_VERSION, (SO_AMULE << 24) | make_full_ed2k_version(VERSION_MJR, VERSION_MIN, VERSION_UPDATE) // | (RESERVED ) , GetVBTTags() ? 0 : 32); tagMuleVersion.WriteTagToFile(data); // eMule Misc. Options #1 const uint32 uUdpVer = 4; const uint32 uDataCompVer = 1; const uint32 uSupportSecIdent = theApp->CryptoAvailable() ? 3 : 0; const uint32 uSourceExchangeVer = 3; const uint32 uExtendedRequestsVer = 2; const uint32 uAcceptCommentVer = 1; const uint32 uNoViewSharedFiles = (thePrefs::CanSeeShares() == vsfaNobody) ? 1 : 0; // for backward compatibility this has to be a 'negative' flag const uint32 uMultiPacket = 1; const uint32 uSupportPreview = 0; // No network preview at all. const uint32 uPeerCache = 0; // No peercache for aMule, baby const uint32 uUnicodeSupport = 1; const uint32 nAICHVer = 1; // AICH is ENABLED right now. CTagVarInt tagMisOptions(CT_EMULE_MISCOPTIONS1, (nAICHVer << ((4*7)+1)) | (uUnicodeSupport << 4*7) | (uUdpVer << 4*6) | (uDataCompVer << 4*5) | (uSupportSecIdent << 4*4) | (uSourceExchangeVer << 4*3) | (uExtendedRequestsVer << 4*2) | (uAcceptCommentVer << 4*1) | (uPeerCache << 1*3) | (uNoViewSharedFiles << 1*2) | (uMultiPacket << 1*1) | (uSupportPreview << 1*0) , GetVBTTags() ? 0 : 32); tagMisOptions.WriteTagToFile(data); // eMule Misc. Options #2 const uint32 uKadVersion = KADEMLIA_VERSION; const uint32 uSupportLargeFiles = 1; const uint32 uExtMultiPacket = 1; const uint32 uReserved = 0; // mod bit const uint32 uSupportsCryptLayer = thePrefs::IsClientCryptLayerSupported() ? 1 : 0; const uint32 uRequestsCryptLayer = thePrefs::IsClientCryptLayerRequested() ? 1 : 0; const uint32 uRequiresCryptLayer = thePrefs::IsClientCryptLayerRequired() ? 1 : 0; const uint32 uSupportsSourceEx2 = 1; #ifdef AMULE_DAEMON // captcha for daemon/remotegui not supported for now const uint32 uSupportsCaptcha = 0; #else const uint32 uSupportsCaptcha = 1; #endif // direct callback is only possible if connected to kad, tcp firewalled and verified UDP open (for example on a full cone NAT) const uint32 uDirectUDPCallback = (Kademlia::CKademlia::IsRunning() && Kademlia::CKademlia::IsFirewalled() && !Kademlia::CUDPFirewallTester::IsFirewalledUDP(true) && Kademlia::CUDPFirewallTester::IsVerified()) ? 1 : 0; CTagVarInt tagMisOptions2(CT_EMULE_MISCOPTIONS2, // (RESERVED ) (uDirectUDPCallback << 12) | (uSupportsCaptcha << 11) | (uSupportsSourceEx2 << 10) | (uRequiresCryptLayer << 9) | (uRequestsCryptLayer << 8) | (uSupportsCryptLayer << 7) | (uReserved << 6) | (uExtMultiPacket << 5) | (uSupportLargeFiles << 4) | (uKadVersion << 0) , GetVBTTags() ? 0 : 32 ); tagMisOptions2.WriteTagToFile(data); const uint32 nOSInfoSupport = 1; // We support OS_INFO const uint32 nValueBasedTypeTags = 0; // Experimental, disabled CTagVarInt tagMisCompatOptions(CT_EMULECOMPAT_OPTIONS, (nValueBasedTypeTags << 1*1) | (nOSInfoSupport << 1*0) , GetVBTTags() ? 0 : 32); tagMisCompatOptions.WriteTagToFile(data); #ifdef __SVN__ wxString mod_name(MOD_VERSION_LONG); CTagString tagModName(ET_MOD_VERSION, mod_name); tagModName.WriteTagToFile(data); #endif uint32 dwIP = 0; uint16 nPort = 0; if (theApp->IsConnectedED2K()) { dwIP = theApp->serverconnect->GetCurrentServer()->GetIP(); nPort = theApp->serverconnect->GetCurrentServer()->GetPort(); } data->WriteUInt32(dwIP); data->WriteUInt16(nPort); } void CUpDownClient::ProcessMuleCommentPacket(const byte* pachPacket, uint32 nSize) { if (!m_reqfile) { throw CInvalidPacket(wxT("Comment packet for unknown file")); } if (!m_reqfile->IsPartFile()) { throw CInvalidPacket(wxT("Comment packet for completed file")); } const CMemFile data(pachPacket, nSize); uint8 rating = data.ReadUInt8(); if (rating > 5) { AddDebugLogLineN( logClient, wxString(wxT("Invalid Rating for file '")) << m_clientFilename << wxT("' received: ") << rating); m_iRating = 0; } else { m_iRating = rating; AddDebugLogLineN( logClient, wxString(wxT("Rating for file '")) << m_clientFilename << wxT("' received: ") << m_iRating); } // The comment is unicoded, with a uin32 len and safe read // (won't break if string size is < than advertised len) // Truncated to MAXFILECOMMENTLEN size m_strComment = data.ReadString((GetUnicodeSupport() != utf8strNone), 4 /* bytes (it's a uint32)*/, true).Left(MAXFILECOMMENTLEN); AddDebugLogLineN( logClient, wxString(wxT("Description for file '")) << m_clientFilename << wxT("' received: ") << m_strComment); // Update file rating m_reqfile->UpdateFileRatingCommentAvail(); } void CUpDownClient::ClearDownloadBlockRequests() { { std::list::iterator it = m_DownloadBlocks_list.begin(); for (; it != m_DownloadBlocks_list.end(); ++it) { Requested_Block_Struct* cur_block = *it; if (m_reqfile){ m_reqfile->RemoveBlockFromList(cur_block->StartOffset, cur_block->EndOffset); } delete cur_block; } m_DownloadBlocks_list.clear(); } { std::list::iterator it = m_PendingBlocks_list.begin(); for (; it != m_PendingBlocks_list.end(); ++it) { Pending_Block_Struct* pending = *it; if (m_reqfile) { m_reqfile->RemoveBlockFromList(pending->block->StartOffset, pending->block->EndOffset); } delete pending->block; // Not always allocated if (pending->zStream){ inflateEnd(pending->zStream); delete pending->zStream; } delete pending; } m_PendingBlocks_list.clear(); } } bool CUpDownClient::Disconnected(const wxString& DEBUG_ONLY(strReason), bool bFromSocket) { //wxASSERT(theApp->clientlist->IsValidClient(this)); if (HasBeenDeleted()) { AddDebugLogLineN(logClient, wxT("Disconnected() called for already deleted client on ip ") + Uint32toStringIP(GetConnectIP())); return false; } // was this a direct callback? if (m_dwDirectCallbackTimeout != 0) { theApp->clientlist->RemoveDirectCallback(this); m_dwDirectCallbackTimeout = 0; theApp->clientlist->AddDeadSource(this); AddDebugLogLineN(logClient, wxT("Direct callback failed to client on ip ") + Uint32toStringIP(GetConnectIP())); } if (GetKadState() == KS_QUEUED_FWCHECK_UDP || GetKadState() == KS_CONNECTING_FWCHECK_UDP) { Kademlia::CUDPFirewallTester::SetUDPFWCheckResult(false, true, wxUINT32_SWAP_ALWAYS(GetConnectIP()), 0); // inform the tester that this test was cancelled } else if (GetKadState() == KS_FWCHECK_UDP) { Kademlia::CUDPFirewallTester::SetUDPFWCheckResult(false, false, wxUINT32_SWAP_ALWAYS(GetConnectIP()), 0); // inform the tester that this test has failed } else if (GetKadState() == KS_CONNECTED_BUDDY) { AddDebugLogLineN(logClient, wxT("Buddy client disconnected - ") + strReason); } //If this is a KAD client object, just delete it! SetKadState(KS_NONE); if (GetUploadState() == US_UPLOADING) { // sets US_NONE theApp->uploadqueue->RemoveFromUploadQueue(this); } if (GetDownloadState() == DS_DOWNLOADING) { SetDownloadState(DS_ONQUEUE); } else { // ensure that all possible block requests are removed from the partfile ClearDownloadBlockRequests(); if (GetDownloadState() == DS_CONNECTED) { // successfully connected, but probably didn't respond to our filerequest theApp->clientlist->AddDeadSource(this); theApp->downloadqueue->RemoveSource(this); } } // we had still an AICH request pending, handle it if (IsAICHReqPending()) { m_fAICHRequested = FALSE; CAICHHashSet::ClientAICHRequestFailed(this); } // The remote client does not have to answer with OP_HASHSETANSWER *immediatly* // after we've sent OP_HASHSETREQUEST. It may occure that a (buggy) remote client // is sending use another OP_FILESTATUS which would let us change to DL-state to DS_ONQUEUE. if (((GetDownloadState() == DS_REQHASHSET) || m_fHashsetRequesting) && (m_reqfile)) { m_reqfile->SetHashSetNeeded(true); } SourceItemType source_type = UNAVAILABLE_SOURCE; SourceItemType peer_type = UNAVAILABLE_SOURCE; //check if this client is needed in any way, if not delete it bool bDelete = true; switch (m_nUploadState) { case US_ONUPLOADQUEUE: bDelete = false; peer_type = AVAILABLE_SOURCE; break; }; switch (m_nDownloadState) { case DS_ONQUEUE: source_type = A4AF_SOURCE; // Will be checked. case DS_TOOMANYCONNS: case DS_NONEEDEDPARTS: case DS_LOWTOLOWIP: bDelete = false; break; }; switch (m_nUploadState) { case US_CONNECTING: case US_WAITCALLBACK: case US_ERROR: theApp->clientlist->AddDeadSource(this); bDelete = true; }; switch (m_nDownloadState) { case DS_CONNECTING: case DS_WAITCALLBACK: case DS_ERROR: case DS_BANNED: theApp->clientlist->AddDeadSource(this); bDelete = true; }; // We keep chat partners in any case if (GetChatState() != MS_NONE) { bDelete = false; m_pendingMessage.Clear(); Notify_ChatConnResult(false,GUI_ID(GetIP(),GetUserPort()),wxEmptyString); } // Delete socket if (!bFromSocket && m_socket) { wxASSERT (theApp->listensocket->IsValidSocket(m_socket)); m_socket->Safe_Delete(); } SetSocket(NULL); if (m_iFileListRequested) { AddLogLineC(CFormat(_("Failed to retrieve shared files from user '%s'")) % GetUserName() ); m_iFileListRequested = 0; } if (bDelete) { if (m_Friend) { // Remove the friend linkage m_Friend->UnLinkClient(); // this notifies } } else { Notify_SharedCtrlRefreshClient(ECID(), peer_type); Notify_SourceCtrlUpdateSource(ECID(), source_type); m_fHashsetRequesting = 0; SetSentCancelTransfer(0); m_bHelloAnswerPending = false; m_fSentOutOfPartReqs = 0; } AddDebugLogLineN(logClient, CFormat(wxT("--- %s client D:%d U:%d \"%s\"; Reason was %s")) % (bDelete ? wxT("Deleted") : wxT("Disconnected")) % m_nDownloadState % m_nUploadState % GetClientFullInfo() % strReason ); return bDelete; } //Returned bool is not if the TryToConnect is successful or not.. //false means the client was deleted! //true means the client was not deleted! bool CUpDownClient::TryToConnect(bool bIgnoreMaxCon) { // Kad reviewed if (theApp->listensocket->TooManySockets() && !bIgnoreMaxCon ) { if (!(m_socket && m_socket->IsConnected())) { if(Disconnected(wxT("Too many connections"))) { Safe_Delete(); return false; } return true; } } // Do not try to connect to source which are incompatible with our encryption setting (one requires it, and the other one doesn't supports it) if ( (RequiresCryptLayer() && !thePrefs::IsClientCryptLayerSupported()) || (thePrefs::IsClientCryptLayerRequired() && !SupportsCryptLayer()) ){ if(Disconnected(wxT("CryptLayer-Settings (Obfuscation) incompatible"))){ Safe_Delete(); return false; } else { return true; } } // Ipfilter check uint32 uClientIP = GetIP(); if (uClientIP == 0 && !HasLowID()) { uClientIP = wxUINT32_SWAP_ALWAYS(m_nUserIDHybrid); } if (uClientIP) { // Although we filter all received IPs (server sources, source exchange) and all incomming connection attempts, // we do have to filter outgoing connection attempts here too, because we may have updated the ip filter list if (theApp->ipfilter->IsFiltered(uClientIP)) { AddDebugLogLineN(logIPFilter, CFormat(wxT("Filtered ip %u (%s) on TryToConnect\n")) % uClientIP % Uint32toStringIP(uClientIP)); if (Disconnected(wxT("IPFilter"))) { Safe_Delete(); return false; } return true; } // for safety: check again whether that IP is banned if (theApp->clientlist->IsBannedClient(uClientIP)) { AddDebugLogLineN(logClient, wxT("Refused to connect to banned client ") + Uint32toStringIP(uClientIP)); if (Disconnected(wxT("Banned IP"))) { Safe_Delete(); return false; } return true; } } if (GetKadState() == KS_QUEUED_FWCHECK) { SetKadState(KS_CONNECTING_FWCHECK); } else if (GetKadState() == KS_QUEUED_FWCHECK_UDP) { SetKadState(KS_CONNECTING_FWCHECK_UDP); } if (HasLowID()) { if (!theApp->CanDoCallback(GetServerIP(), GetServerPort())) { //We cannot do a callback! if (GetDownloadState() == DS_CONNECTING) { SetDownloadState(DS_LOWTOLOWIP); } else if (GetDownloadState() == DS_REQHASHSET) { SetDownloadState(DS_ONQUEUE); m_reqfile->SetHashSetNeeded(true); } if (GetUploadState() == US_CONNECTING) { if(Disconnected(wxT("LowID->LowID and US_CONNECTING"))) { Safe_Delete(); return false; } } return true; } //We already know we are not firewalled here as the above condition already detected LowID->LowID and returned. //If ANYTHING changes with the "if(!theApp->CanDoCallback(this))" above that will let you fall through //with the condition that the source is firewalled and we are firewalled, we must //recheck it before the this check.. if (HasValidBuddyID() && !GetBuddyIP() && !GetBuddyPort() && !theApp->serverconnect->IsLocalServer(GetServerIP(), GetServerPort()) && !(SupportsDirectUDPCallback() && thePrefs::GetEffectiveUDPPort() != 0)) { //This is a Kad firewalled source that we want to do a special callback because it has no buddyIP or buddyPort. if( Kademlia::CKademlia::IsConnected() ) { //We are connect to Kad if( Kademlia::CKademlia::GetPrefs()->GetTotalSource() > 0 || Kademlia::CSearchManager::AlreadySearchingFor(Kademlia::CUInt128(GetBuddyID()))) { //There are too many source lookups already or we are already searching this key. SetDownloadState(DS_TOOMANYCONNSKAD); return true; } } } } if (!m_socket || !m_socket->IsConnected()) { if (m_socket) { m_socket->Safe_Delete(); } m_socket = new CClientTCPSocket(this, thePrefs::GetProxyData()); } else { ConnectionEstablished(); return true; } if (HasLowID() && SupportsDirectUDPCallback() && thePrefs::GetEffectiveUDPPort() != 0 && GetConnectIP() != 0) { // LOWID with DirectCallback if (m_dwDirectCallbackTimeout != 0) { AddDebugLogLineN(logClient, wxT("ERROR: Trying Direct UDP Callback while already trying to connect to client on ip ") + Uint32toStringIP(GetConnectIP())); return true; // We're already trying a direct connection to this client } // a direct callback is possible - since no other parties are involved and only one additional packet overhead // is used we basically handle it like a normal connection try, no restrictions apply // we already check above with !theApp->CanDoCallback(this) if any callback is possible at all m_dwDirectCallbackTimeout = ::GetTickCount() + SEC2MS(45); theApp->clientlist->AddDirectCallbackClient(this); AddDebugLogLineN(logClient, CFormat(wxT("Direct Callback on port %u to client on ip %s")) % GetKadPort() % Uint32toStringIP(GetConnectIP())); CMemFile data; data.WriteUInt16(thePrefs::GetPort()); // needs to know our port data.WriteHash(thePrefs::GetUserHash()); // and userhash // our connection settings data.WriteUInt8(Kademlia::CPrefs::GetMyConnectOptions(true, false)); AddDebugLogLineN(logClientUDP, wxT("Sending OP_DIRECTCALLBACKREQ to ") + Uint32_16toStringIP_Port(GetConnectIP(), GetKadPort())); CPacket* packet = new CPacket(data, OP_EMULEPROT, OP_DIRECTCALLBACKREQ); theStats::AddUpOverheadOther(packet->GetPacketSize()); theApp->clientudp->SendPacket(packet, GetConnectIP(), GetKadPort(), ShouldReceiveCryptUDPPackets(), GetUserHash().GetHash(), false, 0); } else if (HasLowID()) { // LOWID if (GetDownloadState() == DS_CONNECTING) { SetDownloadState(DS_WAITCALLBACK); } if (GetUploadState() == US_CONNECTING) { if(Disconnected(wxT("LowID and US_CONNECTING"))) { Safe_Delete(); return false; } return true; } if (theApp->serverconnect->IsLocalServer(m_dwServerIP,m_nServerPort)) { CMemFile data; // AFAICS, this id must be reversed to be sent to clients // But if I reverse it, we do a serve violation ;) data.WriteUInt32(m_nUserIDHybrid); CPacket* packet = new CPacket(data, OP_EDONKEYPROT, OP_CALLBACKREQUEST); theStats::AddUpOverheadServer(packet->GetPacketSize()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_CALLBACKREQUEST to ") + GetFullIP()); theApp->serverconnect->SendPacket(packet); SetDownloadState(DS_WAITCALLBACK); } else { if (GetUploadState() == US_NONE && (!GetRemoteQueueRank() || m_bReaskPending)) { if( !HasValidBuddyID() ) { theApp->downloadqueue->RemoveSource(this); if (Disconnected(wxT("LowID and US_NONE and QR=0"))) { Safe_Delete(); return false; } return true; } if( !Kademlia::CKademlia::IsConnected() ) { //We are not connected to Kad and this is a Kad Firewalled source.. theApp->downloadqueue->RemoveSource(this); if(Disconnected(wxT("Kad Firewalled source but not connected to Kad."))) { Safe_Delete(); return false; } return true; } if( GetDownloadState() == DS_WAITCALLBACK ) { if( GetBuddyIP() && GetBuddyPort()) { CMemFile bio(34); bio.WriteUInt128(Kademlia::CUInt128(GetBuddyID())); bio.WriteUInt128(Kademlia::CUInt128(m_reqfile->GetFileHash().GetHash())); bio.WriteUInt16(thePrefs::GetPort()); CPacket* packet = new CPacket(bio, OP_KADEMLIAHEADER, KADEMLIA_CALLBACK_REQ); // eMule FIXME: We don't know which kadversion the buddy has, so we need to send unencrypted theApp->clientudp->SendPacket(packet, GetBuddyIP(), GetBuddyPort(), false, NULL, true, 0); AddDebugLogLineN(logClientKadUDP, CFormat(wxT("KadCallbackReq (size=%i) to %s")) % packet->GetPacketSize() % Uint32_16toStringIP_Port(GetBuddyIP(), GetBuddyPort())); theStats::AddUpOverheadKad(packet->GetRealPacketSize()); SetDownloadState(DS_WAITCALLBACKKAD); } else { AddLogLineN(_("Searching buddy for lowid connection")); //Create search to find buddy. Kademlia::CSearch *findSource = new Kademlia::CSearch; findSource->SetSearchTypes(Kademlia::CSearch::FINDSOURCE); findSource->SetTargetID(Kademlia::CUInt128(GetBuddyID())); findSource->AddFileID(Kademlia::CUInt128(m_reqfile->GetFileHash().GetHash())); if(Kademlia::CSearchManager::StartSearch(findSource)) { //Started lookup.. SetDownloadState(DS_WAITCALLBACKKAD); } else { //This should never happen.. wxFAIL; } } } } else { if (GetDownloadState() == DS_WAITCALLBACK) { m_bReaskPending = true; SetDownloadState(DS_ONQUEUE); } } } } else { // HIGHID if (!Connect()) { return false; } } return true; } bool CUpDownClient::Connect() { m_hasbeenobfuscatinglately = false; if (!m_socket->IsOk()) { // Enable or disable crypting based on our and the remote clients preference if (HasValidHash() && SupportsCryptLayer() && thePrefs::IsClientCryptLayerSupported() && (RequestsCryptLayer() || thePrefs::IsClientCryptLayerRequested())){ m_socket->SetConnectionEncryption(true, GetUserHash().GetHash(), false); } else { m_socket->SetConnectionEncryption(false, NULL, false); } amuleIPV4Address tmp; tmp.Hostname(GetConnectIP()); tmp.Service(GetUserPort()); AddDebugLogLineN(logClient, wxT("Trying to connect to ") + Uint32_16toStringIP_Port(GetConnectIP(),GetUserPort())); m_socket->Connect(tmp, false); // We should send hello packets AFTER connecting! // so I moved it to OnConnect return true; } else { return false; } } void CUpDownClient::ConnectionEstablished() { /* Kry - First thing, check if this client was just used to retrieve info. That's some debug thing for myself... check connection_reason definition */ m_hasbeenobfuscatinglately = (m_socket && m_socket->IsConnected() && m_socket->IsObfusicating()); #ifdef __DEBUG__ if (!connection_reason.IsEmpty()) { AddLogLineN(CFormat(wxT("Got client info checking for %s: %s\nDisconnecting and deleting.")) % connection_reason % GetClientFullInfo()); connection_reason.Clear(); // So we don't re-print on destructor. Safe_Delete(); return; } #endif // Check if we should use this client to retrieve our public IP // Ignore local ip on GetPublicIP (could be wrong) if (theApp->GetPublicIP(true) == 0 && theApp->IsConnectedED2K()) { SendPublicIPRequest(); } // was this a direct callback? if (m_dwDirectCallbackTimeout != 0){ theApp->clientlist->RemoveDirectCallback(this); m_dwDirectCallbackTimeout = 0; AddDebugLogLineN(logClient, wxT("Direct Callback succeeded, connection established to ") + Uint32toStringIP(GetConnectIP())); } switch (GetKadState()) { case KS_CONNECTING_FWCHECK: SetKadState(KS_CONNECTED_FWCHECK); break; case KS_CONNECTING_BUDDY: case KS_INCOMING_BUDDY: SetKadState(KS_CONNECTED_BUDDY); break; case KS_CONNECTING_FWCHECK_UDP: SetKadState(KS_FWCHECK_UDP); SendFirewallCheckUDPRequest(); break; default: break; } // ok we have a connection, lets see if we want anything from this client if (GetChatState() == MS_CONNECTING) { SetChatState( MS_CHATTING ); } if (GetChatState() == MS_CHATTING) { bool result = true; if (!m_pendingMessage.IsEmpty()) { result = SendChatMessage(m_pendingMessage); } Notify_ChatConnResult(result,GUI_ID(GetIP(),GetUserPort()),m_pendingMessage); m_pendingMessage.Clear(); } switch(GetDownloadState()) { case DS_CONNECTING: case DS_WAITCALLBACK: case DS_WAITCALLBACKKAD: m_bReaskPending = false; SetDownloadState(DS_CONNECTED); SendFileRequest(); } if (m_bReaskPending){ m_bReaskPending = false; if (GetDownloadState() != DS_NONE && GetDownloadState() != DS_DOWNLOADING) { SetDownloadState(DS_CONNECTED); SendFileRequest(); } } switch(GetUploadState()){ case US_CONNECTING: case US_WAITCALLBACK: if (theApp->uploadqueue->IsDownloading(this)) { SetUploadState(US_UPLOADING); CPacket* packet = new CPacket(OP_ACCEPTUPLOADREQ, 0, OP_EDONKEYPROT); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); SendPacket(packet,true); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ACCEPTUPLOADREQ to ") + GetFullIP() ); } } if (m_iFileListRequested == 1) { CPacket* packet = new CPacket(m_fSharedDirectories ? OP_ASKSHAREDDIRS : OP_ASKSHAREDFILES, 0, OP_EDONKEYPROT); theStats::AddUpOverheadOther(packet->GetPacketSize()); SendPacket(packet,true,true); #ifdef __DEBUG__ if (m_fSharedDirectories) { AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ASKSHAREDDIRS to ") + GetFullIP() ); } else { AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ASKSHAREDFILES to ") + GetFullIP() ); } #endif } while (!m_WaitingPackets_list.empty()) { CPacket* packet = m_WaitingPackets_list.front(); m_WaitingPackets_list.pop_front(); SendPacket(packet); } } int CUpDownClient::GetHashType() const { if ( m_UserHash[5] == 13 && m_UserHash[14] == 110 ) { return SO_OLDEMULE; } if ( m_UserHash[5] == 14 && m_UserHash[14] == 111 ) { return SO_EMULE; } if ( m_UserHash[5] == 'M' && m_UserHash[14] == 'L' ) { return SO_MLDONKEY; } return SO_UNKNOWN; } void CUpDownClient::SetSocket(CClientTCPSocket* socket) { #ifdef __DEBUG__ if (m_socket == NULL && socket != NULL) { theStats::SocketAssignedToClient(); } else if (m_socket != NULL && socket == NULL) { theStats::SocketUnassignedFromClient(); } #endif m_socket = socket; } void CUpDownClient::ReGetClientSoft() { if (m_Username.IsEmpty()) { m_clientSoft=SO_UNKNOWN; m_clientVerString = m_clientSoftString = m_clientVersionString = m_fullClientVerString = _("Unknown"); UpdateStats(); return; } int iHashType = GetHashType(); wxString clientModString; if (iHashType == SO_EMULE) { m_clientSoft = m_byCompatibleClient; m_clientSoftString = GetSoftName(m_clientSoft); // Special issues: if(!GetClientModString().IsEmpty() && (m_clientSoft != SO_EMULE)) { m_clientSoftString = GetClientModString(); } // Isn't xMule annoying? if ((m_clientSoft == SO_LXMULE) && (GetMuleVersion() > 0x26) && (GetMuleVersion() != 0x99)) { m_clientSoftString += CFormat(_(" (Fake eMule version %#x)")) % GetMuleVersion(); } if ((m_clientSoft == SO_EMULE) && ( wxString(GetClientModString()).MakeLower().Find(wxT("xmule")) != -1 || GetUserName().Find(wxT("xmule.")) != -1 ) ) { // FAKE eMule -a newer xMule faking is ident. m_clientSoft = SO_LXMULE; if (GetClientModString().IsEmpty() == false) { m_clientSoftString = GetClientModString() + _(" (Fake eMule)"); } else { m_clientSoftString = _("xMule (Fake eMule)"); // don't use GetSoftName, it's not lmule. } } // Now, what if we don't know this SO_ID? if (m_clientSoftString.IsEmpty()) { if(m_bIsML) { m_clientSoft = SO_MLDONKEY; m_clientSoftString = GetSoftName(m_clientSoft); } else if (m_bIsHybrid) { m_clientSoft = SO_EDONKEYHYBRID; m_clientSoftString = GetSoftName(m_clientSoft); } else if (m_byCompatibleClient != 0) { m_clientSoft = SO_COMPAT_UNK; #ifdef __DEBUG__ if ( // Exceptions: (m_byCompatibleClient != 0xf0) // Chinese leech mod && (1==1) // Your ad here ) { AddLogLineNS(CFormat(wxT("Compatible client found with ET_COMPATIBLECLIENT of %x")) % m_byCompatibleClient); } #endif m_clientSoftString = CFormat(wxT("%s(%#x)")) % GetSoftName(m_clientSoft) % m_byCompatibleClient; } else { // If we step here, it might mean 2 things: // a eMule // a Compat Client that has sent no MuleInfo packet yet. m_clientSoft = SO_EMULE; m_clientSoftString = wxT("eMule"); } } if (m_byEmuleVersion == 0) { m_nClientVersion = MAKE_CLIENT_VERSION(0,0,0); } else if (m_byEmuleVersion != 0x99) { uint32 nClientMinVersion = (m_byEmuleVersion >> 4)*10 + (m_byEmuleVersion & 0x0f); m_nClientVersion = MAKE_CLIENT_VERSION(0,nClientMinVersion,0); switch (m_clientSoft) { case SO_AMULE: m_clientVerString = CFormat(_("1.x (based on eMule v0.%u)")) % nClientMinVersion; break; case SO_LPHANT: m_clientVerString = wxT("< v0.05"); break; default: clientModString = GetClientModString(); m_clientVerString = CFormat(wxT("v0.%u")) % nClientMinVersion; break; } } else { uint32 nClientMajVersion = (m_nClientVersion >> 17) & 0x7f; uint32 nClientMinVersion = (m_nClientVersion >> 10) & 0x7f; uint32 nClientUpVersion = (m_nClientVersion >> 7) & 0x07; m_nClientVersion = MAKE_CLIENT_VERSION(nClientMajVersion, nClientMinVersion, nClientUpVersion); switch (m_clientSoft) { case SO_AMULE: case SO_LXMULE: case SO_HYDRANODE: case SO_MLDONKEY: case SO_NEW_MLDONKEY: case SO_NEW2_MLDONKEY: // Kry - xMule started sending correct version tags on 1.9.1b. // It only took them 4 months, and being told by me and the // eMule+ developers, so I think they're slowly getting smarter. // They are based on our implementation, so we use the same format // for the version string. m_clientVerString = CFormat(wxT("v%u.%u.%u")) % nClientMajVersion % nClientMinVersion % nClientUpVersion; break; case SO_LPHANT: m_clientVerString = CFormat(wxT(" v%u.%.2u%c")) % (nClientMajVersion-1) % nClientMinVersion % ('a' + nClientUpVersion); break; case SO_EMULEPLUS: m_clientVerString = CFormat(wxT("v%u")) % nClientMajVersion; if(nClientMinVersion != 0) { m_clientVerString += CFormat(wxT(".%u")) % nClientMinVersion; } if(nClientUpVersion != 0) { m_clientVerString += CFormat(wxT("%c")) % ('a' + nClientUpVersion - 1); } break; default: clientModString = GetClientModString(); m_clientVerString = CFormat(wxT("v%u.%u%c")) % nClientMajVersion % nClientMinVersion % ('a' + nClientUpVersion); break; } } } else if (m_bIsHybrid) { // seen: // 105010 50.10 // 10501 50.1 // 1051 51.0 // 501 50.1 m_clientSoft = SO_EDONKEYHYBRID; m_clientSoftString = GetSoftName(m_clientSoft); uint32 nClientMajVersion; uint32 nClientMinVersion; uint32 nClientUpVersion; if (m_nClientVersion > 100000) { uint32 uMaj = m_nClientVersion/100000; nClientMajVersion = uMaj - 1; nClientMinVersion = (m_nClientVersion - uMaj*100000) / 100; nClientUpVersion = m_nClientVersion % 100; } else if (m_nClientVersion > 10000) { uint32 uMaj = m_nClientVersion/10000; nClientMajVersion = uMaj - 1; nClientMinVersion = (m_nClientVersion - uMaj*10000) / 10; nClientUpVersion = m_nClientVersion % 10; } else if (m_nClientVersion > 1000) { uint32 uMaj = m_nClientVersion/1000; nClientMajVersion = uMaj - 1; nClientMinVersion = m_nClientVersion - uMaj*1000; nClientUpVersion = 0; } else if (m_nClientVersion > 100) { uint32 uMin = m_nClientVersion/10; nClientMajVersion = 0; nClientMinVersion = uMin; nClientUpVersion = m_nClientVersion - uMin*10; } else{ nClientMajVersion = 0; nClientMinVersion = m_nClientVersion; nClientUpVersion = 0; } m_nClientVersion = MAKE_CLIENT_VERSION(nClientMajVersion, nClientMinVersion, nClientUpVersion); if (nClientUpVersion) { m_clientVerString = CFormat(wxT("v%u.%u.%u")) % nClientMajVersion % nClientMinVersion % nClientUpVersion; } else { m_clientVerString = CFormat(wxT("v%u.%u")) % nClientMajVersion % nClientMinVersion; } } else if (m_bIsML || (iHashType == SO_MLDONKEY)) { m_clientSoft = SO_MLDONKEY; m_clientSoftString = GetSoftName(m_clientSoft); uint32 nClientMinVersion = m_nClientVersion; m_nClientVersion = MAKE_CLIENT_VERSION(0, nClientMinVersion, 0); m_clientVerString = CFormat(wxT("v0.%u")) % nClientMinVersion; } else if (iHashType == SO_OLDEMULE) { m_clientSoft = SO_OLDEMULE; m_clientSoftString = GetSoftName(m_clientSoft); uint32 nClientMinVersion = m_nClientVersion; m_nClientVersion = MAKE_CLIENT_VERSION(0, nClientMinVersion, 0); m_clientVerString = CFormat(wxT("v0.%u")) % nClientMinVersion; } else { m_clientSoft = SO_EDONKEY; m_clientSoftString = GetSoftName(m_clientSoft); m_nClientVersion *= 10; m_clientVerString = CFormat(wxT("v%u.%u")) % (m_nClientVersion / 100000) % ((m_nClientVersion / 1000) % 100); } m_clientVersionString = m_clientVerString; if (!clientModString.IsEmpty()) { m_clientVerString += wxT(" - ") + clientModString; } m_fullClientVerString = m_clientSoftString + wxT(" ") + m_clientVerString; UpdateStats(); } void CUpDownClient::RequestSharedFileList() { if (m_iFileListRequested == 0) { AddDebugLogLineN( logClient, wxString( wxT("Requesting shared files from ") ) + GetUserName() ); m_iFileListRequested = 1; TryToConnect(true); } else { AddDebugLogLineN( logClient, CFormat( wxT("Requesting shared files from user %s (%u) is already in progress") ) % GetUserName() % GetUserIDHybrid() ); } } void CUpDownClient::ProcessSharedFileList(const byte* pachPacket, uint32 nSize, wxString& pszDirectory) { if (m_iFileListRequested > 0) { m_iFileListRequested--; theApp->searchlist->ProcessSharedFileList(pachPacket, nSize, this, NULL, pszDirectory); } } void CUpDownClient::ResetFileStatusInfo() { m_nPartCount = 0; if ( m_reqfile ) { m_reqfile->UpdatePartsFrequency( this, false ); } m_downPartStatus.clear(); m_clientFilename.Clear(); m_bCompleteSource = false; m_dwLastAskedTime = 0; m_iRating = 0; m_strComment.Clear(); if (m_pReqFileAICHHash != NULL) { delete m_pReqFileAICHHash; m_pReqFileAICHHash = NULL; } } wxString CUpDownClient::GetUploadFileInfo() { // build info text and display it wxString sRet; sRet = (CFormat(_("NickName: %s ID: %u")) % GetUserName() % GetUserIDHybrid()) + wxT(" "); if (m_reqfile) { sRet += CFormat(_("Requested: %s\n")) % m_reqfile->GetFileName(); sRet += CFormat( wxPLURAL("Filestats for this session: Accepted %d of %d request, %s transferred\n", "Filestats for this session: Accepted %d of %d requests, %s transferred\n", m_reqfile->statistic.GetRequests()) ) % m_reqfile->statistic.GetAccepts() % m_reqfile->statistic.GetRequests() % CastItoXBytes(m_reqfile->statistic.GetTransferred()); sRet += CFormat( wxPLURAL("Filestats for all sessions: Accepted %d of %d request, %s transferred\n", "Filestats for all sessions: Accepted %d of %d requests, %s transferred\n", m_reqfile->statistic.GetAllTimeRequests()) ) % m_reqfile->statistic.GetAllTimeAccepts() % m_reqfile->statistic.GetAllTimeRequests() % CastItoXBytes(m_reqfile->statistic.GetAllTimeTransferred()); } else { sRet += _("Requested unknown file"); } return sRet; } // sends a packet, if needed it will establish a connection before // options used: ignore max connections, control packet, delete packet // !if the functions returns false it is _possible_ that this clientobject was deleted, because the connectiontry fails bool CUpDownClient::SafeSendPacket(CPacket* packet) { if (IsConnected()) { SendPacket(packet, true); return true; } else { m_WaitingPackets_list.push_back(packet); return TryToConnect(true); } } void CUpDownClient::SendPublicKeyPacket(){ // send our public key to the client who requested it if (m_socket == NULL || credits == NULL || m_SecureIdentState != IS_KEYANDSIGNEEDED){ wxFAIL; return; } if (!theApp->CryptoAvailable()) return; CMemFile data; data.WriteUInt8(theApp->clientcredits->GetPubKeyLen()); data.Write(theApp->clientcredits->GetPublicKey(), theApp->clientcredits->GetPubKeyLen()); CPacket* packet = new CPacket(data, OP_EMULEPROT, OP_PUBLICKEY); theStats::AddUpOverheadOther(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_PUBLICKEY to ") + GetFullIP() ); SendPacket(packet,true,true); m_SecureIdentState = IS_SIGNATURENEEDED; } void CUpDownClient::SendSignaturePacket(){ // signate the public key of this client and send it if (m_socket == NULL || credits == NULL || m_SecureIdentState == 0){ wxFAIL; return; } if (!theApp->CryptoAvailable()) { return; } if (credits->GetSecIDKeyLen() == 0) { return; // We don't have his public key yet, will be back here later } // do we have a challenge value received (actually we should if we are in this function) if (credits->m_dwCryptRndChallengeFrom == 0){ AddDebugLogLineN( logClient, wxString(wxT("Want to send signature but challenge value is invalid - User ")) + GetUserName()); return; } // v2 // we will use v1 as default, except if only v2 is supported bool bUseV2; if ( (m_bySupportSecIdent&1) == 1 ) bUseV2 = false; else bUseV2 = true; uint8 byChaIPKind = 0; uint32 ChallengeIP = 0; if (bUseV2){ if (::IsLowID(theApp->GetED2KID())) { // we cannot do not know for sure our public ip, so use the remote clients one ChallengeIP = GetIP(); byChaIPKind = CRYPT_CIP_REMOTECLIENT; } else { ChallengeIP = theApp->GetED2KID(); byChaIPKind = CRYPT_CIP_LOCALCLIENT; } } //end v2 byte achBuffer[250]; uint8 siglen = theApp->clientcredits->CreateSignature(credits, achBuffer, 250, ChallengeIP, byChaIPKind ); if (siglen == 0){ wxFAIL; return; } CMemFile data; data.WriteUInt8(siglen); data.Write(achBuffer, siglen); if (bUseV2) { data.WriteUInt8(byChaIPKind); } CPacket* packet = new CPacket(data, OP_EMULEPROT, OP_SIGNATURE); theStats::AddUpOverheadOther(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_SIGNATURE to ") + GetFullIP() ); SendPacket(packet,true,true); m_SecureIdentState = IS_ALLREQUESTSSEND; } void CUpDownClient::ProcessPublicKeyPacket(const byte* pachPacket, uint32 nSize) { theApp->clientlist->AddTrackClient(this); if (m_socket == NULL || credits == NULL || pachPacket[0] != nSize-1 || nSize == 0 || nSize > 250){ wxFAIL; return; } if (!theApp->CryptoAvailable()) return; // the function will handle everything (mulitple key etc) if (credits->SetSecureIdent(pachPacket+1, pachPacket[0])){ // if this client wants a signature, now we can send him one if (m_SecureIdentState == IS_SIGNATURENEEDED){ SendSignaturePacket(); } else if (m_SecureIdentState == IS_KEYANDSIGNEEDED) { // something is wrong AddDebugLogLineN( logClient, wxT("Invalid State error: IS_KEYANDSIGNEEDED in ProcessPublicKeyPacket") ); } } else { AddDebugLogLineN( logClient, wxT("Failed to use new received public key") ); } } void CUpDownClient::ProcessSignaturePacket(const byte* pachPacket, uint32 nSize) { // here we spread the good guys from the bad ones ;) if (m_socket == NULL || credits == NULL || nSize == 0 || nSize > 250){ wxFAIL; return; } uint8 byChaIPKind; if (pachPacket[0] == nSize-1) byChaIPKind = 0; else if (pachPacket[0] == nSize-2 && (m_bySupportSecIdent & 2) > 0) //v2 byChaIPKind = pachPacket[nSize-1]; else{ wxFAIL; return; } if (!theApp->CryptoAvailable()) return; // we accept only one signature per IP, to avoid floods which need a lot cpu time for cryptfunctions if (m_dwLastSignatureIP == GetIP()){ AddDebugLogLineN( logClient, wxT("received multiple signatures from one client") ); return; } // also make sure this client has a public key if (credits->GetSecIDKeyLen() == 0){ AddDebugLogLineN( logClient, wxT("received signature for client without public key") ); return; } // and one more check: did we ask for a signature and sent a challange packet? if (credits->m_dwCryptRndChallengeFor == 0){ AddDebugLogLineN( logClient, wxT("received signature for client with invalid challenge value - User ") + GetUserName() ); return; } // cppcheck-suppress duplicateBranch if (theApp->clientcredits->VerifyIdent(credits, pachPacket+1, pachPacket[0], GetIP(), byChaIPKind ) ) { // result is saved in function above AddDebugLogLineN( logClient, CFormat( wxT("'%s' has passed the secure identification, V2 State: %i") ) % GetUserName() % byChaIPKind ); } else { AddDebugLogLineN( logClient, CFormat( wxT("'%s' has failed the secure identification, V2 State: %i") ) % GetUserName() % byChaIPKind ); } m_dwLastSignatureIP = GetIP(); } void CUpDownClient::SendSecIdentStatePacket(){ // check if we need public key and signature if (credits){ uint8 nValue = 0; if (theApp->CryptoAvailable()){ if (credits->GetSecIDKeyLen() == 0) { nValue = IS_KEYANDSIGNEEDED; } else if (m_dwLastSignatureIP != GetIP()) { nValue = IS_SIGNATURENEEDED; } } if (nValue == 0){ AddDebugLogLineN( logClient, wxT("Not sending SecIdentState Packet, because State is Zero") ); return; } // crypt: send random data to sign uint32 dwRandom = rand()+1; credits->m_dwCryptRndChallengeFor = dwRandom; CMemFile data; data.WriteUInt8(nValue); data.WriteUInt32(dwRandom); CPacket* packet = new CPacket(data, OP_EMULEPROT, OP_SECIDENTSTATE); theStats::AddUpOverheadOther(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_SECIDENTSTATE to ") + GetFullIP() ); SendPacket(packet,true,true); } else { wxFAIL; } } void CUpDownClient::ProcessSecIdentStatePacket(const byte* pachPacket, uint32 nSize) { if ( nSize != 5 ) { return; } if ( !credits ) { wxASSERT( credits ); return; } CMemFile data(pachPacket,nSize); switch ( data.ReadUInt8() ) { case 0: m_SecureIdentState = IS_UNAVAILABLE; break; case 1: m_SecureIdentState = IS_SIGNATURENEEDED; break; case 2: m_SecureIdentState = IS_KEYANDSIGNEEDED; break; default: return; } credits->m_dwCryptRndChallengeFrom = data.ReadUInt32(); } void CUpDownClient::InfoPacketsReceived() { // indicates that both Information Packets has been received // needed for actions, which process data from both packets wxASSERT ( m_byInfopacketsReceived == IP_BOTH ); m_byInfopacketsReceived = IP_NONE; if (m_bySupportSecIdent){ SendSecIdentStatePacket(); } } bool CUpDownClient::CheckHandshakeFinished() const { if (m_bHelloAnswerPending) { // this triggers way too often.. need more time to look at this -> only create a warning // The reason for this is that 2 clients are connecting to each other at the same time.. AddDebugLogLineN( logClient, wxT("Handshake not finished while processing packet.") ); return false; } return true; } #ifdef __DEBUG__ wxString CUpDownClient::GetClientFullInfo() { if (m_clientVerString.IsEmpty()) { ReGetClientSoft(); } return CFormat( wxT("Client %s on IP:Port %s:%d using %s %s %s") ) % ( m_Username.IsEmpty() ? wxString(_("Unknown")) : m_Username ) % GetFullIP() % GetUserPort() % m_clientSoftString % m_clientVerString % m_strModVersion; } #endif wxString CUpDownClient::GetClientShortInfo() { if (m_clientVerString.IsEmpty()) { ReGetClientSoft(); } return CFormat( wxT("'%s' (%s %s %s)") ) % ( m_Username.IsEmpty() ? wxString(_("Unknown")) : m_Username ) % m_clientSoftString % m_clientVerString % m_strModVersion; } void CUpDownClient::SendPublicIPRequest() { if (IsConnected()){ CPacket* packet = new CPacket(OP_PUBLICIP_REQ,0,OP_EMULEPROT); theStats::AddUpOverheadOther(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_PUBLICIP_REQ to ") + GetFullIP()); SendPacket(packet,true); m_fNeedOurPublicIP = true; } } void CUpDownClient::ProcessPublicIPAnswer(const byte* pbyData, uint32 uSize) { if (uSize != 4) { throw wxString(wxT("Wrong Packet size on Public IP answer")); } uint32 dwIP = PeekUInt32(pbyData); if (m_fNeedOurPublicIP == true){ // did we? m_fNeedOurPublicIP = false; // Ignore local ip on GetPublicIP (could be wrong) if (theApp->GetPublicIP(true) == 0 && !IsLowID(dwIP) ) { theApp->SetPublicIP(dwIP); } } } bool CUpDownClient::IsConnected() const { return m_socket && m_socket->IsConnected(); } bool CUpDownClient::SendPacket(CPacket* packet, bool delpacket, bool controlpacket) { if ( m_socket ) { m_socket->SendPacket(packet, delpacket, controlpacket ); return true; } else { AddLogLineN(wxT("CAUGHT DEAD SOCKET IN SENDPACKET()")); return false; } } float CUpDownClient::SetDownloadLimit(uint32 reducedownload) { // lfroen: in daemon it actually can happen wxASSERT( m_socket ); float kBpsClient = CalculateKBpsDown(); if ( m_socket ) { if (reducedownload) { // (% to reduce * current speed) / 100 and THEN, / (1000 / CORE_TIMER_PERIOD) // which is how often it is called per second. uint32 limit = (uint32)(reducedownload * kBpsClient * 1024.0 / 100000.0 * CORE_TIMER_PERIOD); if(limit<1024 && reducedownload >= 200) { // If we're going up and this download is < 1kB, // we want it to go up fast. Can be reduced later, // and it'll probably be in a more fair way with // other downloads that are faster. limit +=1024; } else if(limit == 0) { // This download is not transferring yet... make it // 1024 so we don't fill the TCP stack and lose the // connection. limit = 1024; } m_socket->SetDownloadLimit(limit); } else { m_socket->DisableDownloadLimit(); } } else { AddLogLineNS(CFormat(wxT("CAUGHT DEAD SOCKET IN SETDOWNLOADLIMIT() WITH SPEED %f")) % kBpsClient); } return kBpsClient; } void CUpDownClient::SetUserIDHybrid(uint32 nUserID) { theApp->clientlist->UpdateClientID( this, nUserID ); m_nUserIDHybrid = nUserID; } void CUpDownClient::SetIP( uint32 val ) { theApp->clientlist->UpdateClientIP( this, val ); m_dwUserIP = val; m_nConnectIP = val; m_FullUserIP = val; } void CUpDownClient::SetUserHash(const CMD4Hash& userhash) { theApp->clientlist->UpdateClientHash( this, userhash ); m_UserHash = userhash; ValidateHash(); } EUtf8Str CUpDownClient::GetUnicodeSupport() const { return m_bUnicodeSupport ? utf8strRaw : utf8strNone; } void CUpDownClient::SetSpammer(bool bVal) { if (bVal) { Ban(); } else if (IsBanned() && m_fIsSpammer) { UnBan(); } m_fIsSpammer = bVal; } uint8 CUpDownClient::GetSecureIdentState() { if (m_SecureIdentState != IS_UNAVAILABLE) { if (!SecIdentSupRec) { // This can be caused by a 0.30x based client which sends the old // style Hello packet, and the mule info packet, but between them they // send a secure ident state packet (after a hello but before we have // the SUI capabilities). This is a misbehaving client, and somehow I // feel like it should be dropped. But then again, it won't harm to use // this SUI state if they are reporting no SUI (won't be used) and if // they report using SUI on the mule info packet, it's ok to use it. AddDebugLogLineN(logClient, wxT("A client sent secure ident state before telling us the SUI capabilities")); AddDebugLogLineN(logClient, wxT("Client info: ") + GetClientFullInfo()); AddDebugLogLineN(logClient, wxT("This client won't be disconnected, but it should be. :P")); } } return m_SecureIdentState; } bool CUpDownClient::SendChatMessage(const wxString& message) { if (GetChatCaptchaState() == CA_CAPTCHARECV) { m_nChatCaptchaState = CA_SOLUTIONSENT; } else if (GetChatCaptchaState() == CA_SOLUTIONSENT) { wxFAIL; // we responsed to a captcha but didn't heard from the client afterwards - hopefully its just lag and this message will get through } else { m_nChatCaptchaState = CA_ACCEPTING; } SetSpammer(false); IncMessagesSent(); // Already connecting? if (GetChatState() == MS_CONNECTING) { // Queue all messages till we're able to send them (or discard them) if (!m_pendingMessage.IsEmpty()) { m_pendingMessage += wxT("\n"); } else { // There must be a message to send // - except if we got disconnected. No need to assert therefore. } m_pendingMessage += message; return false; } if (IsConnected()) { // If we are already connected when we send the first message, // we have to update the chat status. SetChatState(MS_CHATTING); CMemFile data; data.WriteString(message, GetUnicodeSupport()); CPacket* packet = new CPacket(data, OP_EDONKEYPROT, OP_MESSAGE); theStats::AddUpOverheadOther(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_MESSAGE to ") + GetFullIP()); SendPacket(packet, true, true); return true; } else { m_pendingMessage = message; SetChatState(MS_CONNECTING); // True to ignore "Too Many Connections" TryToConnect(true); return false; } } /* Kad stuff */ void CUpDownClient::SetBuddyID(const byte* pucBuddyID) { if( pucBuddyID == NULL ){ md4clr(m_achBuddyID); m_bBuddyIDValid = false; return; } m_bBuddyIDValid = true; md4cpy(m_achBuddyID, pucBuddyID); } // Kad added by me bool CUpDownClient::SendBuddyPing() { SetLastBuddyPingPongTime(); CPacket* buddyPing = new CPacket(OP_BUDDYPING, 0, OP_EMULEPROT); theStats::AddUpOverheadKad(buddyPing->GetPacketSize()); AddDebugLogLineN(logLocalClient,wxT("Local Client: OP_BUDDYPING to ") + GetFullIP()); return SafeSendPacket(buddyPing); } /* Statistics */ void CUpDownClient::UpdateStats() { if (m_lastClientSoft != m_clientSoft || m_lastClientVersion != m_nClientVersion || m_lastOSInfo != m_sClientOSInfo) { if (m_lastClientSoft == SO_UNKNOWN) { theStats::RemoveUnknownClient(); } else if (m_lastClientSoft != (uint32)(-1)) { theStats::RemoveKnownClient(m_lastClientSoft, m_lastClientVersion, m_lastOSInfo); } m_lastClientSoft = m_clientSoft; m_lastClientVersion = m_nClientVersion; m_lastOSInfo = m_sClientOSInfo; if (m_clientSoft == SO_UNKNOWN) { theStats::AddUnknownClient(); } else { theStats::AddKnownClient(this); } } } bool CUpDownClient::IsIdentified() const { return (credits && credits->GetCurrentIdentState(GetIP()) == IS_IDENTIFIED); } bool CUpDownClient::IsBadGuy() const { return (credits && credits->GetCurrentIdentState(GetIP()) == IS_IDBADGUY); } bool CUpDownClient::SUIFailed() const { return (credits && credits->GetCurrentIdentState(GetIP()) == IS_IDFAILED); } bool CUpDownClient::SUINeeded() const { return (credits && credits->GetCurrentIdentState(GetIP()) == IS_IDNEEDED); } bool CUpDownClient::SUINotSupported() const { return (credits && credits->GetCurrentIdentState(GetIP()) == IS_NOTAVAILABLE); } uint64 CUpDownClient::GetDownloadedTotal() const { return credits ? credits->GetDownloadedTotal() : 0; } uint64 CUpDownClient::GetUploadedTotal() const { return credits ? credits->GetUploadedTotal() : 0; } double CUpDownClient::GetScoreRatio() const { return credits ? credits->GetScoreRatio(GetIP(), theApp->CryptoAvailable()) : 0; } const wxString CUpDownClient::GetServerName() const { wxString ret; wxString srvaddr = Uint32toStringIP(GetServerIP()); CServer* cserver = theApp->serverlist->GetServerByAddress( srvaddr, GetServerPort()); if (cserver) { ret = cserver->GetListName(); } else { ret = _("Unknown"); } return ret; } bool CUpDownClient::ShouldReceiveCryptUDPPackets() const { return (thePrefs::IsClientCryptLayerSupported() && SupportsCryptLayer() && theApp->GetPublicIP() != 0 && HasValidHash() && (thePrefs::IsClientCryptLayerRequested() || RequestsCryptLayer()) ); } #ifdef AMULE_DAEMON void CUpDownClient::ProcessCaptchaRequest(CMemFile* WXUNUSED(data)) {} void CUpDownClient::ProcessCaptchaReqRes(uint8 WXUNUSED(nStatus)) {} void CUpDownClient::ProcessChatMessage(const wxString WXUNUSED(message)) {} #else void CUpDownClient::ProcessCaptchaRequest(CMemFile* data) { uint64 id = GUI_ID(GetIP(),GetUserPort()); // received a captcha request, check if we actually accept it (only after sending a message ourself to this client) if (GetChatCaptchaState() == CA_ACCEPTING && GetChatState() != MS_NONE && theApp->amuledlg->m_chatwnd->IsIdValid(id)) { // read tags (for future use) uint8 nTagCount = data->ReadUInt8(); if (nTagCount) { AddDebugLogLineN(logClient, CFormat(wxT("Received captcha request from client (%s) with (%u) tags")) % GetFullIP() % nTagCount); // and ignore them for now for (uint32 i = 0; i < nTagCount; i++) { CTag tag(*data, true); } } // sanitize checks - we want a small captcha not a wallpaper uint32 nSize = (uint32)(data->GetLength() - data->GetPosition()); if ( nSize > 128 && nSize < 4096 ) { uint64 pos = data->GetPosition(); wxMemoryInputStream memstr(data->GetRawBuffer() + pos, nSize); wxImage imgCaptcha(memstr, wxBITMAP_TYPE_BMP); if (imgCaptcha.IsOk() && imgCaptcha.GetHeight() > 10 && imgCaptcha.GetHeight() < 50 && imgCaptcha.GetWidth() > 10 && imgCaptcha.GetWidth() < 150 ) { m_nChatCaptchaState = CA_CAPTCHARECV; CCaptchaDialog * dialog = new CCaptchaDialog(theApp->amuledlg, imgCaptcha, id); dialog->Show(); } else { AddDebugLogLineN(logClient, CFormat(wxT("Received captcha request from client, processing image failed or invalid pixel size (%s)")) % GetFullIP()); } } else { AddDebugLogLineN(logClient, CFormat(wxT("Received captcha request from client, size sanitize check failed (%u) (%s)")) % nSize % GetFullIP()); } } else { AddDebugLogLineN(logClient, CFormat(wxT("Received captcha request from client, but don't accepting it at this time (%s)")) % GetFullIP()); } } void CUpDownClient::ProcessCaptchaReqRes(uint8 nStatus) { uint64 id = GUI_ID(GetIP(),GetUserPort()); if (GetChatCaptchaState() == CA_SOLUTIONSENT && GetChatState() != MS_NONE && theApp->amuledlg->m_chatwnd->IsIdValid(id)) { wxASSERT( nStatus < 3 ); m_nChatCaptchaState = CA_NONE; theApp->amuledlg->m_chatwnd->ShowCaptchaResult(id, nStatus == 0); } else { m_nChatCaptchaState = CA_NONE; AddDebugLogLineN(logClient, CFormat(wxT("Received captcha result from client, but not accepting it at this time (%s)")) % GetFullIP()); } } void CUpDownClient::ProcessChatMessage(wxString message) { if (IsMessageFiltered(message)) { AddLogLineC(CFormat(_("Message filtered from '%s' (IP:%s)")) % GetUserName() % GetFullIP()); return; } // advanced spamfilter check if (thePrefs::IsChatCaptchaEnabled() && !IsFriend()) { // captcha checks outrank any further checks - if the captcha has been solved, we assume it's not spam // first check if we need to send a captcha request to this client if (GetMessagesSent() == 0 && GetMessagesReceived() == 0 && GetChatCaptchaState() != CA_CAPTCHASOLVED) { // we have never sent a message to this client, and no message from him has ever passed our filters if (GetChatCaptchaState() != CA_CHALLENGESENT) { // we also aren't currently expecting a captcha response if (m_fSupportsCaptcha) { // and he supports captcha, so send him one and store the message (without showing for now) if (m_cCaptchasSent < 3) { // no more than 3 tries m_strCaptchaPendingMsg = message; wxMemoryOutputStream memstr; memstr.PutC(0); // no tags, for future use CCaptchaGenerator captcha(4); if (captcha.WriteCaptchaImage(memstr)){ m_strCaptchaChallenge = captcha.GetCaptchaText(); m_nChatCaptchaState = CA_CHALLENGESENT; m_cCaptchasSent++; CMemFile fileAnswer((byte*) memstr.GetOutputStreamBuffer()->GetBufferStart(), memstr.GetLength()); CPacket* packet = new CPacket(fileAnswer, OP_EMULEPROT, OP_CHATCAPTCHAREQ); theStats::AddUpOverheadOther(packet->GetPacketSize()); AddLogLineN(CFormat(wxT("sent Captcha %s (%d)")) % m_strCaptchaChallenge % packet->GetPacketSize()); SafeSendPacket(packet); } else { wxFAIL; } } } else { // client doesn't support captchas, but we require them, tell him that it's not going to work out // with an answer message (will not be shown and doesn't count as sent message) if (m_cCaptchasSent < 1) { // don't send this notifier more than once m_cCaptchasSent++; // always sent in english SendChatMessage(wxT("In order to avoid spam messages, this user requires you to solve a captcha before you can send a message to him. However your client does not supports captchas, so you will not be able to chat with this user.")); AddDebugLogLineN(logClient, CFormat(wxT("Received message from client not supporting captchas, filtered and sent notifier (%s)")) % GetClientFullInfo()); } else { AddDebugLogLineN(logClient, CFormat(wxT("Received message from client not supporting captchas, filtered, didn't send notifier (%s)")) % GetClientFullInfo()); } } return; } else { // (GetChatCaptchaState() == CA_CHALLENGESENT) // this message must be the answer to the captcha request we sent him, let's verify wxASSERT( !m_strCaptchaChallenge.IsEmpty() ); if (m_strCaptchaChallenge.CmpNoCase(message.Trim().Right(std::min(message.Length(), m_strCaptchaChallenge.Length()))) == 0) { // allright AddDebugLogLineN(logClient, CFormat(wxT("Captcha solved, showing withheld message (%s)")) % GetClientFullInfo()); m_nChatCaptchaState = CA_CAPTCHASOLVED; // this state isn't persitent, but the messagecounter will be used to determine later if the captcha has been solved // replace captchaanswer with withheld message and show it message = m_strCaptchaPendingMsg; m_cCaptchasSent = 0; m_strCaptchaChallenge.Clear(); CPacket* packet = new CPacket(OP_CHATCAPTCHARES, 1, OP_EMULEPROT, false); byte statusResponse = 0; // status response packet->CopyToDataBuffer(0, &statusResponse, 1); theStats::AddUpOverheadOther(packet->GetPacketSize()); SafeSendPacket(packet); } else { // wrong, cleanup and ignore AddDebugLogLineN(logClient, CFormat(wxT("Captcha answer failed (%s)")) % GetClientFullInfo()); m_nChatCaptchaState = CA_NONE; m_strCaptchaChallenge.Clear(); m_strCaptchaPendingMsg.Clear(); CPacket* packet = new CPacket(OP_CHATCAPTCHARES, 1, OP_EMULEPROT, false); byte statusResponse = (m_cCaptchasSent < 3) ? 1 : 2; // status response packet->CopyToDataBuffer(0, &statusResponse, 1); theStats::AddUpOverheadOther(packet->GetPacketSize()); SafeSendPacket(packet); return; // nothing more todo } } } } if (thePrefs::IsAdvancedSpamfilterEnabled() && !IsFriend()) { // friends are never spammer... (but what if two spammers are friends :P ) bool bIsSpam = false; if (m_fIsSpammer) { bIsSpam = true; } else { // first fixed criteria: If a client sends me an URL in his first message before I respond to him // there is a 99,9% chance that it is some poor guy advising his leech mod, or selling you .. well you know :P if (GetMessagesSent() == 0) { static wxArrayString urlindicators(wxStringTokenize(wxT("http:|www.|.de |.net |.com |.org |.to |.tk |.cc |.fr |ftp:|ed2k:|https:|ftp.|.info|.biz|.uk|.eu|.es|.tv|.cn|.tw|.ws|.nu|.jp"), wxT("|"))); for (size_t pos = urlindicators.GetCount(); pos--;) { if (message.Find(urlindicators[pos]) != wxNOT_FOUND) { bIsSpam = true; break; } } // second fixed criteria: he sent me 4 or more messages and I didn't answer him once if (GetMessagesReceived() > 3) { bIsSpam = true; } } } if (bIsSpam) { AddDebugLogLineN(logClient, CFormat(wxT("'%s' has been marked as spammer")) % GetUserName()); SetSpammer(true); theApp->amuledlg->m_chatwnd->EndSession(GUI_ID(GetIP(),GetUserPort())); return; } } wxString logMsg = CFormat(_("New message from '%s' (IP:%s)")) % GetUserName() % GetFullIP(); if(thePrefs::ShowMessagesInLog()) { logMsg += wxT(": ") + message; } AddLogLineC(logMsg); IncMessagesReceived(); Notify_ChatProcessMsg(GUI_ID(GetIP(), GetUserPort()), GetUserName() + wxT("|") + message); } bool CUpDownClient::IsMessageFiltered(const wxString& message) { bool filtered = false; // If we're chatting to the guy, we don't want to filter! if (GetChatState() != MS_CHATTING) { if (thePrefs::MsgOnlyFriends() && !IsFriend()) { filtered = true; } else if (thePrefs::MsgOnlySecure() && GetUserName().IsEmpty() ) { filtered = true; } else if (thePrefs::MustFilterMessages()) { filtered = thePrefs::IsMessageFiltered(message); } } if (filtered) { SetSpammer(true); } return filtered; } #endif void CUpDownClient::SendSharedDirectories() { // This list will contain all (unique) folders. PathList foldersToSend; // The shared folders const unsigned folderCount = theApp->glob_prefs->shareddir_list.size(); for (unsigned i = 0; i < folderCount; ++i) { foldersToSend.push_back(theApp->glob_prefs->shareddir_list[i]); } // ... the categories folders ... (category 0 -> incoming) for (unsigned i = 0; i < theApp->glob_prefs->GetCatCount(); ++i) { foldersToSend.push_back(theApp->glob_prefs->GetCategory(i)->path); } // Strip duplicates foldersToSend.sort(); foldersToSend.unique(); // Build packet CMemFile tempfile(80); tempfile.WriteUInt32(foldersToSend.size() + 1); // + 1 for the incomplete files PathList::iterator it = foldersToSend.begin(); for (; it != foldersToSend.end(); ++it) { // Note: the public shared name contains the 'raw' path, so we can recognize it again. // the 'raw' path is determined using CPath::GetRaw() tempfile.WriteString( theApp->sharedfiles->GetPublicSharedDirName(*it), GetUnicodeSupport() ); } // ... and the Magic thing from the eDonkey Hybrids... tempfile.WriteString(OP_INCOMPLETE_SHARED_FILES, GetUnicodeSupport()); // Send the packet. CPacket* replypacket = new CPacket(tempfile, OP_EDONKEYPROT, OP_ASKSHAREDDIRSANS); theStats::AddUpOverheadOther(replypacket->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ASKSHAREDDIRSANS to ") + GetFullIP() ); SendPacket(replypacket, true, true); } void CUpDownClient::SendSharedFilesOfDirectory(const wxString& strReqDir) { CKnownFilePtrList list; if (strReqDir == OP_INCOMPLETE_SHARED_FILES) { // get all shared files from download queue int iQueuedFiles = theApp->downloadqueue->GetFileCount(); for (int i = 0; i < iQueuedFiles; i++) { CPartFile* pFile = theApp->downloadqueue->GetFileByIndex(i); if (pFile == NULL || pFile->GetStatus(true) != PS_READY) { continue; } list.push_back(pFile); } } else { // get all shared files for the requested directory const CPath *sharedDir = theApp->sharedfiles->GetDirForPublicSharedDirName(strReqDir); if (sharedDir) { theApp->sharedfiles->GetSharedFilesByDirectory(sharedDir->GetRaw(), list); } else { AddLogLineC(CFormat(_("User %s (%u) requested sharedfiles-list for not existing directory '%s' -> Ignored")) % GetUserName() % GetUserIDHybrid() % strReqDir); } } CMemFile tempfile(80); tempfile.WriteString(strReqDir, GetUnicodeSupport()); tempfile.WriteUInt32(list.size()); while (!list.empty()) { if (!list.front()->IsLargeFile() || SupportsLargeFiles()) { list.front()->CreateOfferedFilePacket(&tempfile, NULL, this); } list.pop_front(); } CPacket* replypacket = new CPacket(tempfile, OP_EDONKEYPROT, OP_ASKSHAREDFILESDIRANS); theStats::AddUpOverheadOther(replypacket->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ASKSHAREDFILESDIRANS to ") + GetFullIP() ); SendPacket(replypacket, true, true); } void CUpDownClient::SendFirewallCheckUDPRequest() { wxASSERT(GetKadState() == KS_FWCHECK_UDP); if (!Kademlia::CKademlia::IsRunning()) { SetKadState(KS_NONE); return; } else if (GetUploadState() != US_NONE || GetDownloadState() != DS_NONE || GetChatState() != MS_NONE || GetKadVersion() <= 5 || GetKadPort() == 0) { Kademlia::CUDPFirewallTester::SetUDPFWCheckResult(false, true, wxUINT32_SWAP_ALWAYS(GetIP()), 0); // inform the tester that this test was cancelled SetKadState(KS_NONE); return; } CMemFile data; data.WriteUInt16(Kademlia::CKademlia::GetPrefs()->GetInternKadPort()); data.WriteUInt16(Kademlia::CKademlia::GetPrefs()->GetExternalKadPort()); data.WriteUInt32(Kademlia::CKademlia::GetPrefs()->GetUDPVerifyKey(GetConnectIP())); CPacket* packet = new CPacket(data, OP_EMULEPROT, OP_FWCHECKUDPREQ); theStats::AddUpOverheadKad(packet->GetPacketSize()); SafeSendPacket(packet); } void CUpDownClient::ProcessFirewallCheckUDPRequest(CMemFile* data) { if (!Kademlia::CKademlia::IsRunning() || Kademlia::CKademlia::GetUDPListener() == NULL) { //DebugLogWarning(_T("Ignored Kad Firewallrequest UDP because Kad is not running (%s)"), GetClientFullInfo()); return; } // first search if we know this IP already, if so the result might be biased and we need tell the requester bool errorAlreadyKnown = false; if (GetUploadState() != US_NONE || GetDownloadState() != DS_NONE || GetChatState() != MS_NONE) { errorAlreadyKnown = true; } else if (Kademlia::CKademlia::GetRoutingZone()->GetContact(wxUINT32_SWAP_ALWAYS(GetConnectIP()), 0, false) != NULL) { errorAlreadyKnown = true; } uint16_t remoteInternPort = data->ReadUInt16(); uint16_t remoteExternPort = data->ReadUInt16(); uint32_t senderKey = data->ReadUInt32(); if (remoteInternPort == 0) { //DebugLogError(_T("UDP Firewallcheck requested with Intern Port == 0 (%s)"), GetClientFullInfo()); return; } // if (senderKey == 0) // DebugLogWarning(_T("UDP Firewallcheck requested with SenderKey == 0 (%s)"), GetClientFullInfo()); CMemFile testPacket1; testPacket1.WriteUInt8(errorAlreadyKnown ? 1 : 0); testPacket1.WriteUInt16(remoteInternPort); DebugSend(Kad2FirewallUDP, wxUINT32_SWAP_ALWAYS(GetConnectIP()), remoteInternPort); Kademlia::CKademlia::GetUDPListener()->SendPacket(testPacket1, KADEMLIA2_FIREWALLUDP, wxUINT32_SWAP_ALWAYS(GetConnectIP()), remoteInternPort, Kademlia::CKadUDPKey(senderKey, theApp->GetPublicIP(false)), NULL); // if the client has a router with PAT (and therefore a different extern port than intern), test this port too if (remoteExternPort != 0 && remoteExternPort != remoteInternPort) { CMemFile testPacket2; testPacket2.WriteUInt8(errorAlreadyKnown ? 1 : 0); testPacket2.WriteUInt16(remoteExternPort); DebugSend(Kad2FirewalledUDP, wxUINT32_SWAP_ALWAYS(GetConnectIP()), remoteExternPort); Kademlia::CKademlia::GetUDPListener()->SendPacket(testPacket2, KADEMLIA2_FIREWALLUDP, wxUINT32_SWAP_ALWAYS(GetConnectIP()), remoteExternPort, Kademlia::CKadUDPKey(senderKey, theApp->GetPublicIP(false)), NULL); } //DebugLog(_T("Answered UDP Firewallcheck request (%s)"), GetClientFullInfo()); } void CUpDownClient::SetConnectOptions(uint8_t options, bool encryption, bool callback) { SetCryptLayerSupport((options & 0x01) != 0 && encryption); SetCryptLayerRequest((options & 0x02) != 0 && encryption); SetCryptLayerRequires((options & 0x04) != 0 && encryption); SetDirectUDPCallbackSupport((options & 0x08) != 0 && callback); } #ifdef DEBUG_ZOMBIE_CLIENTS void CUpDownClient::Unlink(const wxString& from) { std::multiset::iterator it = m_linkedFrom.find(from); if (it != m_linkedFrom.end()) { m_linkedFrom.erase(it); } m_linked--; if (!m_linked) { if (m_linkedDebug) { AddLogLineN(CFormat(wxT("Last reference to client %d %p unlinked, delete it.")) % ECID() % this); } delete this; } } #else void CUpDownClient::Unlink() { m_linked--; if (!m_linked) { delete this; } } #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/BitVector.h0000644000175000017500000000757412611472361020361 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2009-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2009-2011 Stu Redman ( sturedman@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef BITVECTOR_H #define BITVECTOR_H // // Packed bit vector // class BitVector { public: BitVector() { m_bits = 0; m_bytes = 0; m_allTrue = 0; m_vector = NULL; } ~BitVector() { clear(); } // number of bits uint32 size() const { return m_bits; } // is it empty? bool empty() const { return m_bits == 0; } // get bit at index bool get(uint32 idx) const { if (idx >= m_bits) { wxFAIL; return false; } return (m_vector[idx / 8] & s_posMask[idx & 7]) != 0; } // set bit at index void set(uint32 idx, bool value) { if (idx >= m_bits) { wxFAIL; return; } uint32 bidx = idx / 8; if (value) { m_vector[bidx] = m_vector[bidx] | s_posMask[idx & 7]; // If it was not all true before, then we don't know now. if (m_allTrue == 0) { m_allTrue = 2; } } else { m_vector[bidx] = m_vector[bidx] & s_negMask[idx & 7]; m_allTrue = 0; } } // set number of bits to zero and free memory void clear() { m_bits = 0; m_bytes = 0; m_allTrue = 0; delete[] m_vector; m_vector = NULL; } // set number of bits and initialize them with value void setsize(uint32 newsize, bool value) { if (newsize == 0) { clear(); return; } m_bits = newsize; m_bytes = newsize / 8; if (newsize & 7) { m_bytes++; } delete[] m_vector; m_vector = new uint8[m_bytes]; memset(m_vector, value ? 0xFF : 0, m_bytes); m_allTrue = value ? 1 : 0; } // are all bits true ? bool AllTrue() const { if (m_allTrue == 2) { // don't know, have to check bool foundFalse = false; uint32 lastByte = m_bytes; if (m_bits & 7) { // uneven: check bits of last byte individually lastByte--; for (uint32 i = m_bits & 0xfffffff8; !foundFalse && i < m_bits; i++) { foundFalse = !get(i); } } // check bytewise for (uint32 i = 0; !foundFalse && i < lastByte; i++) { foundFalse = m_vector[i] != 0xff; } // This is really just a caching of information, // so m_allTrue is mutable and AllTrue() still const. m_allTrue = foundFalse ? 0 : 1; } return m_allTrue == 1; } // set all bits to true void SetAllTrue() { if (m_bytes) { memset(m_vector, 0xFF, m_bytes); } } // handling of the internal buffer (for EC) // get size uint32 SizeBuffer() const { return m_bytes; } // get buffer const void* GetBuffer() const { return m_vector; } // set buffer void SetBuffer(const void* src) { memcpy(m_vector, src, m_bytes); m_allTrue = 2; } private: uint32 m_bits; // number of bits uint32 m_bytes; // number of bytes in the vector uint8 * m_vector; // the storage mutable uint8 m_allTrue;// All true ? 0: no 1: yes 2: don't know static const uint8 s_posMask[]; // = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; implemented in OtherFunctions.cpp static const uint8 s_negMask[]; // = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F}; }; #endif amule_2.3.1+git20151120.0023527bc2.orig/src/CFile.cpp0000644000175000017500000002470212611472361017765 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 1998-2011 Vadim Zeitlin ( zeitlin@dptmaths.ens-cachan.fr ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "CFile.h" // Interface declarations. #include "Logger.h" // Needed for AddDebugLogLineC #include // Needed for CPath #ifdef HAVE_CONFIG_H #include "config.h" // Needed for HAVE_SYS_PARAM_H #endif #ifdef HAVE_SYS_PARAM_H #include #endif // standard #if defined(__WINDOWS__ ) && !defined(__GNUWIN32__) && !defined(__WXWINE__) && !defined(__WXMICROWIN__) # include # ifndef __SALFORDC__ # define WIN32_LEAN_AND_MEAN # define NOSERVICE # define NOIME # define NOATOM # define NOGDI # define NOGDICAPMASKS # define NOMETAFILE #ifndef NOMINMAX #define NOMINMAX #endif # define NOMSG # define NOOPENFILE # define NORASTEROPS # define NOSCROLL # define NOSOUND # define NOSYSMETRICS # define NOTEXTMETRIC # define NOWH # define NOCOMM # define NOKANJI # define NOCRYPT # define NOMCX # endif #elif (defined(__UNIX__) || defined(__GNUWIN32__)) # ifdef __GNUWIN32__ # include # endif #elif (defined(__WXPM__)) # include #elif (defined(__WXSTUBS__)) // Have to ifdef this for different environments # include #elif (defined(__WXMAC__)) #if __MSL__ < 0x6000 int access( const char *path, int mode ) { return 0 ; } #else int _access( const char *path, int mode ) { return 0 ; } #endif char* mktemp( char * path ) { return path ;} # include #else # error "Please specify the header with file functions declarations." #endif //Win/UNIX // there is no distinction between text and binary files under Unix, so define // O_BINARY as 0 if the system headers don't do it already #if defined(__UNIX__) && !defined(O_BINARY) # define O_BINARY (0) #endif //__UNIX__ #ifdef __WINDOWS__ #include #endif // The following defines handle different names across platforms, // and ensures that we use 64b IO on windows (only 32b by default). #ifdef __WINDOWS__ #define FLUSH_FD(x) _commit(x) #define SEEK_FD(x, y, z) _lseeki64(x, y, z) #define TELL_FD(x) _telli64(x) #if (__MSVCRT_VERSION__ < 0x0601) //#warning MSCVRT-Version smaller than 6.01 #define STAT_FD(x, y) _fstati64(x, y) #define STAT_STRUCT struct _stati64 #else #define STAT_FD(x, y) _fstat64(x, y) #define STAT_STRUCT struct __stat64 #endif #else // We don't need to sync all meta-data, just the contents, // so use fdatasync when possible (see man fdatasync). #if defined(_POSIX_SYNCHRONIZED_IO) && (_POSIX_SYNCHRONIZED_IO > 0) #define FLUSH_FD(x) fdatasync(x) #else #define FLUSH_FD(x) fsync(x) #endif #define SEEK_FD(x, y, z) lseek(x, y, z) #define TELL_FD(x) wxTell(x) #define STAT_FD(x, y) fstat(x, y) #define STAT_STRUCT struct stat #endif // This function is used to check if a syscall failed, in that case // log an appropriate message containing the errno string. inline void syscall_check( bool check, const CPath& filePath, const wxString& what) { if (!check) { AddDebugLogLineC(logCFile, CFormat(wxT("Error when %s (%s): %s")) % what % filePath % wxSysErrorMsg()); } } CSeekFailureException::CSeekFailureException(const wxString& desc) : CIOFailureException(wxT("SeekFailure"), desc) {} CFile::CFile() : m_fd(fd_invalid), m_safeWrite(false) {} CFile::CFile(const CPath& fileName, OpenMode mode) : m_fd(fd_invalid) { Open(fileName, mode); } CFile::CFile(const wxString& fileName, OpenMode mode) : m_fd(fd_invalid) { Open(fileName, mode); } CFile::~CFile() { if (IsOpened()) { // If the writing gets aborted, dtor is still called. // In this case do NOT replace the original file with the // probably broken new one! m_safeWrite = false; Close(); } } int CFile::fd() const { return m_fd; } bool CFile::IsOpened() const { return m_fd != fd_invalid; } const CPath& CFile::GetFilePath() const { return m_filePath; } bool CFile::Create(const CPath& path, bool overwrite, int accessMode) { if (!overwrite && path.FileExists()) { return false; } return Open(path, write, accessMode); } bool CFile::Create(const wxString& path, bool overwrite, int accessMode) { return Create(CPath(path), overwrite, accessMode); } bool CFile::Open(const wxString& fileName, OpenMode mode, int accessMode) { MULE_VALIDATE_PARAMS(fileName.Length(), wxT("CFile: Cannot open, empty path.")); return Open(CPath(fileName), mode, accessMode); } bool CFile::Open(const CPath& fileName, OpenMode mode, int accessMode) { MULE_VALIDATE_PARAMS(fileName.IsOk(), wxT("CFile: Cannot open, empty path.")); if (IsOpened()) { Close(); } m_safeWrite = false; m_filePath = fileName; #ifdef __linux__ int flags = O_BINARY | O_LARGEFILE; #else int flags = O_BINARY; #endif switch ( mode ) { case read: flags |= O_RDONLY; break; case write_append: if (fileName.FileExists()) { flags |= O_WRONLY | O_APPEND; break; } //else: fall through as write_append is the same as write if the // file doesn't exist case write: flags |= O_WRONLY | O_CREAT | O_TRUNC; break; case write_safe: flags |= O_WRONLY | O_CREAT | O_TRUNC; m_filePath = m_filePath.AppendExt(wxT(".new")); m_safeWrite = true; break; case write_excl: flags |= O_WRONLY | O_CREAT | O_EXCL; break; case read_write: flags |= O_RDWR; break; } // Windows needs wide character file names #ifdef __WINDOWS__ m_fd = _wopen(m_filePath.GetRaw().c_str(), flags, accessMode); #else Unicode2CharBuf tmpFileName = filename2char(m_filePath.GetRaw()); wxASSERT_MSG(tmpFileName, wxT("Convertion failed in CFile::Open")); m_fd = open(tmpFileName, flags, accessMode); #endif syscall_check(m_fd != fd_invalid, m_filePath, wxT("opening file")); return IsOpened(); } void CFile::Reopen(OpenMode mode) { if (!Open(m_filePath, mode)) { throw CIOFailureException(wxString(wxT("Error reopening file"))); } } bool CFile::Close() { MULE_VALIDATE_STATE(IsOpened(), wxT("CFile: Cannot close closed file.")); bool closed = (close(m_fd) != -1); syscall_check(closed, m_filePath, wxT("closing file")); m_fd = fd_invalid; if (m_safeWrite) { CPath filePathTemp(m_filePath); m_filePath = m_filePath.RemoveExt(); // restore m_filePath for Reopen() if (closed) { closed = CPath::RenameFile(filePathTemp, m_filePath, true); } } return closed; } bool CFile::Flush() { MULE_VALIDATE_STATE(IsOpened(), wxT("CFile: Cannot flush closed file.")); bool flushed = (FLUSH_FD(m_fd) != -1); syscall_check(flushed, m_filePath, wxT("flushing file")); return flushed; } sint64 CFile::doRead(void* buffer, size_t count) const { MULE_VALIDATE_PARAMS(buffer, wxT("CFile: Invalid buffer in read operation.")); MULE_VALIDATE_STATE(IsOpened(), wxT("CFile: Cannot read from closed file.")); size_t totalRead = 0; while (totalRead < count) { int current = ::read(m_fd, (char*)buffer + totalRead, count - totalRead); if (current == -1) { // Read error, nothing we can do other than abort. throw CIOFailureException(wxString(wxT("Error reading from file: ")) + wxSysErrorMsg()); } else if ((totalRead + current < count) && Eof()) { // We may fail to read the specified count in a couple // of situations: EOF and interrupts. The check for EOF // is needed to avoid inf. loops. break; } totalRead += current; } return totalRead; } sint64 CFile::doWrite(const void* buffer, size_t nCount) { MULE_VALIDATE_PARAMS(buffer, wxT("CFile: Invalid buffer in write operation.")); MULE_VALIDATE_STATE(IsOpened(), wxT("CFile: Cannot write to closed file.")); sint64 result = ::write(m_fd, buffer, nCount); if (result != (sint64)nCount) { throw CIOFailureException(wxString(wxT("Error writing to file: ")) + wxSysErrorMsg()); } return result; } sint64 CFile::doSeek(sint64 offset) const { MULE_VALIDATE_STATE(IsOpened(), wxT("Cannot seek on closed file.")); MULE_VALIDATE_PARAMS(offset >= 0, wxT("Invalid position, must be positive.")); sint64 result = SEEK_FD(m_fd, offset, SEEK_SET); if (result == offset) { return result; } else if (result == wxInvalidOffset) { throw CSeekFailureException(wxString(wxT("Seeking failed: ")) + wxSysErrorMsg()); } else { throw CSeekFailureException(wxT("Seeking returned incorrect position")); } } uint64 CFile::GetPosition() const { MULE_VALIDATE_STATE(IsOpened(), wxT("Cannot get position in closed file.")); sint64 pos = TELL_FD(m_fd); if (pos == wxInvalidOffset) { throw CSeekFailureException(wxString(wxT("Failed to retrieve position in file: ")) + wxSysErrorMsg()); } return pos; } uint64 CFile::GetLength() const { MULE_VALIDATE_STATE(IsOpened(), wxT("CFile: Cannot get length of closed file.")); STAT_STRUCT buf; if (STAT_FD(m_fd, &buf) == -1) { throw CIOFailureException(wxString(wxT("Failed to retrieve length of file: ")) + wxSysErrorMsg()); } return buf.st_size; } uint64 CFile::GetAvailable() const { const uint64 length = GetLength(); const uint64 position = GetPosition(); // Safely handle seeking past EOF if (position < length) { return length - position; } // File is at or after EOF return 0; } bool CFile::SetLength(uint64 new_len) { MULE_VALIDATE_STATE(IsOpened(), wxT("CFile: Cannot set length when no file is open.")); #ifdef __WINDOWS__ #ifdef _MSC_VER // MSVC has a 64bit version bool result = _chsize_s(m_fd, new_len) == 0; #else // MingW has an old runtime without it bool result = chsize(m_fd, new_len) == 0; #endif #else bool result = ftruncate(m_fd, new_len) != -1; #endif syscall_check(result, m_filePath, wxT("truncating file")); return result; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CFile.h0000644000175000017500000001334412611472361017432 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 1998-2011 Vadim Zeitlin ( zeitlin@dptmaths.ens-cachan.fr ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CFILE_H #define CFILE_H #include // Needed for CPath #include "SafeFile.h" // Needed for CFileDataIO #include // Needed for constants #ifdef _MSC_VER // silly warnings about deprecated functions #pragma warning(disable:4996) #endif /** * This class is a modified version of the wxFile class. * * In addition to implementing the CFileDataIO interface, * it offers improved support for UTF8 filenames and 64b * file-IO on both windows and unix-like systems. * * @see wxFile */ class CFile : public CFileDataIO { public: //! Standard values for file descriptor enum { fd_invalid = -1, fd_stdin, fd_stdout, fd_stderr }; /** @see wxFile::OpenMode */ enum OpenMode { read, write, read_write, write_append, write_excl, write_safe }; /** * Creates a closed file. */ CFile(); /** * Constructor, calls Open on the specified file. * * To check if the file was successfully opened, a * call to IsOpened() is required. */ CFile(const CPath& path, OpenMode mode = read); CFile(const wxString& path, OpenMode mode = read); /** * Destructor, closes the file if opened. */ virtual ~CFile(); /** * Opens a file. * * @param path The full or relative path to the file. * @param mode The opening mode. * @param accessMode The permissions in case a new file is created. * @return True if the file was opened, false otherwise. * * Calling Open with the openmodes 'write' or 'write_append' will * create the specified file if it does not already exist. * * Calling Open with the openmode 'write_safe' will append ".new" * to the file name and otherwise work like 'write'. * On close it will be renamed to the original name. * Close() has to be called manually - destruct won't rename the file! * * If an accessMode is not explicitly specified, the accessmode * specified via CPreferences::GetFilePermissions will be used. */ bool Open(const CPath& path, OpenMode mode = read, int accessMode = wxS_DEFAULT); bool Open(const wxString& path, OpenMode mode = read, int accessMode = wxS_DEFAULT); /** * Reopens a file which was opened and closed before. * * @param mode The opening mode. * * The filename used for last open is used again. * No return value - function throws on failure. */ void Reopen(OpenMode mode); /** * Calling Create is equivilant of calling open with OpenMode 'write'. * * @param overwrite Specifies if the target file should be overwritten, * in case that it already exists. * * @see CFile::Open */ bool Create(const CPath& path, bool overwrite = false, int accessMode = wxS_DEFAULT); bool Create(const wxString& path, bool overwrite = false, int accessMode = wxS_DEFAULT); /** * Closes the file. * * Note that calling Close on an closed file * is an illegal operation. */ bool Close(); /** * Returns the file descriptior assosiated with the file. * * Note that direct manipulation of the descriptor should * be avoided! That's what this class is for. */ int fd() const; /** * Flushes data not yet written. * * Note that calling Flush on an closed file * is an illegal operation. */ bool Flush(); /** * @see CSafeFileIO::GetLength * * Note that calling GetLength on a closed file * is an illegal operation. */ virtual uint64 GetLength() const; /** * Resizes the file to the specified length. */ bool SetLength(uint64 newLength); /** * @see CSafeFileIO::GetPosition * * Note that calling GetPosition on a closed file * is an illegal operation. */ virtual uint64 GetPosition() const; /** * Returns the current available bytes to read on the file before EOF * */ virtual uint64 GetAvailable() const; /** * Returns the path of the currently opened file. * */ const CPath& GetFilePath() const; /** * Returns true if the file is opened, false otherwise. */ bool IsOpened() const; protected: /** @see CFileDataIO::doRead **/ virtual sint64 doRead(void* buffer, size_t count) const; /** @see CFileDataIO::doWrite **/ virtual sint64 doWrite(const void* buffer, size_t count); /** @see CFileDataIO::doSeek **/ virtual sint64 doSeek(sint64 offset) const; private: //! A CFile is neither copyable nor assignable. //@{ CFile(const CFile&); CFile& operator=(const CFile&); //@} //! File descriptor or 'fd_invalid' if not opened int m_fd; //! The full path to the current file. CPath m_filePath; //! Are we using safe write mode? bool m_safeWrite; }; /** * This exception is thrown by CFile if a seek or tell fails. */ struct CSeekFailureException : public CIOFailureException { CSeekFailureException(const wxString& desc); }; #endif // CFILE_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CanceledFileList.cpp0000644000175000017500000000663512611472361022142 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2010-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "CanceledFileList.h" // Interface declarations #include #include "Preferences.h" #include "CFile.h" #include "Logger.h" #include CCanceledFileList::CCanceledFileList() { m_filename = wxT("canceled.met"); Init(); } bool CCanceledFileList::Init() { CFile file; CPath fullpath = CPath(thePrefs::GetConfigDir() + m_filename); if (!fullpath.FileExists()) { // This is perfectly normal. The file was probably either // deleted, or this is the first time running aMule. return false; } if (!file.Open(fullpath)) { AddLogLineC(CFormat(_("WARNING: %s cannot be opened.")) % m_filename); return false; } try { uint8 version = file.ReadUInt8(); if (version != CANCELEDFILE_VERSION) { AddLogLineC(_("WARNING: Canceled file list corrupted, contains invalid header.")); return false; } uint32 RecordsNumber = file.ReadUInt32(); AddDebugLogLineN(logKnownFiles, CFormat(wxT("Reading %i canceled files from file format 0x%02x.")) % RecordsNumber % version); for (uint32 i = 0; i < RecordsNumber; i++) { CMD4Hash hash; file.Read(hash.GetHash(), 16); AddDebugLogLineN(logKnownFiles, CFormat(wxT("Canceled file read: %s")) % hash.Encode()); if (!hash.IsEmpty()) { m_canceledFileList.insert(hash); } } AddDebugLogLineN(logKnownFiles, wxT("Finished reading canceled files")); return true; } catch (const CSafeIOException& e) { AddLogLineC(CFormat(_("IO error while reading %s file: %s")) % m_filename % e.what()); } return false; } void CCanceledFileList::Save() { CFile file(thePrefs::GetConfigDir() + m_filename, CFile::write); if (!file.IsOpened()) { return; } try { file.WriteUInt8(CANCELEDFILE_VERSION); file.WriteUInt32(m_canceledFileList.size()); CanceledFileList::iterator it = m_canceledFileList.begin(); for (; it != m_canceledFileList.end(); ++it) { file.Write(it->GetHash(), 16); } } catch (const CIOFailureException& e) { AddLogLineC(CFormat(_("Error while saving %s file: %s")) % m_filename % e.what()); } } bool CCanceledFileList::IsCanceledFile(const CMD4Hash& hash) const { return !hash.IsEmpty() && m_canceledFileList.find(hash) != m_canceledFileList.end(); } bool CCanceledFileList::Add(const CMD4Hash& hash) { return m_canceledFileList.insert(hash).second; } bool CCanceledFileList::Remove(const CMD4Hash& hash) { return m_canceledFileList.erase(hash) > 0; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CanceledFileList.h0000644000175000017500000000360612611472361021602 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2010-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CANCELEDFILELIST_H #define CANCELEDFILELIST_H #include #include "MD4Hash.h" // // A list to keep track of canceled files, stored in canceled.met . // Only the file hash is stored. // class CCanceledFileList { public: // Ctor, calls Init() CCanceledFileList(); // Save list void Save(); // Check if hash belongs to a canceled file bool IsCanceledFile(const CMD4Hash& hash) const; // Add a hash to the list (returns true if added, false if already in list) bool Add(const CMD4Hash& hash); // Remove a hash from the list (returns true if removed, false if not in list) bool Remove(const CMD4Hash& hash); private: // The list typedef std::set CanceledFileList; CanceledFileList m_canceledFileList; // The filename "canceled.met" wxString m_filename; // Load list from file (if it exists) bool Init(); }; #endif // CANCELEDFILELIST_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CaptchaDialog.cpp0000644000175000017500000000507312611472361021466 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "CaptchaDialog.h" // Interface declarations #include "muuli_wdr.h" // Needed for ID_CLOSEWND #include "GuiEvents.h" BEGIN_EVENT_TABLE(CCaptchaDialog,wxDialog) EVT_BUTTON(wxID_OK, CCaptchaDialog::OnBnClose) END_EVENT_TABLE() CCaptchaDialog::CCaptchaDialog( wxWindow *parent, const wxImage& captchaImage, uint64 id) : wxDialog( parent, -1, _("Enter Captcha"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE) { m_captchaBitmap = new wxBitmap(captchaImage); m_id = id; wxSizer* content = captchaDlg(this); OnInitDialog(); content->SetSizeHints(this); content->Show(this, true); m_TextCtrl->SetFocus(); } CCaptchaDialog::~CCaptchaDialog() { delete m_captchaBitmap; } void CCaptchaDialog::OnBnClose(wxCommandEvent& WXUNUSED(evt)) { Notify_ChatSendCaptcha(m_TextCtrl->GetLineText(0), m_id); Destroy(); } wxSizer * CCaptchaDialog::captchaDlg( wxWindow *parent ) { wxBoxSizer *item0 = new wxBoxSizer( wxVERTICAL ); wxStaticBitmap *item1 = new wxStaticBitmap( parent, -1, *m_captchaBitmap, wxDefaultPosition, wxSize(160,60) ); item0->Add( item1, 0, wxALIGN_CENTER|wxALL, 5 ); m_TextCtrl = new wxTextCtrl( parent, -1, wxEmptyString, wxDefaultPosition, wxSize(80,20)); item0->Add( m_TextCtrl, 0, wxALIGN_CENTER|wxALL, 5 ); wxButton *item3 = new wxButton( parent, wxID_OK ); item3->SetDefault(); item0->Add( item3, 0, wxALIGN_CENTER|wxALL, 5 ); parent->SetSizer( item0 ); item0->SetSizeHints( parent ); return item0; } bool CCaptchaDialog::OnInitDialog() { Layout(); return true; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CaptchaDialog.h0000644000175000017500000000442212611472361021130 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CAPTCHADIALOG_H #define CAPTCHADIALOG_H #include // Needed for wxDialog #include "Types.h" /** * The ClientDetailDialog class is responsible for showing the info about a client. * * It shows all releavant data about the client: ip, port, hash, name, client * type and version, uploading/downloading data, credits, server... etc * * It's wxDialog, modal, with return value always '0'. * */ class CCaptchaDialog : public wxDialog { public: /** * Constructor. * * @param parent The window that created the dialog. * @param client The client whose details we're showing. */ CCaptchaDialog(wxWindow*parent, const wxImage& captchaImage, uint64 id); /** * Destructor. */ virtual ~CCaptchaDialog(); protected: /** * Creates all the data objects in the dialog, filling them accordingly. * * Called when the dialog object is created. */ virtual bool OnInitDialog(); /** * Ends the dialog, calling EndModal with return value 0 * * @param evt The close event, unused right now */ void OnBnClose(wxCommandEvent& evt); DECLARE_EVENT_TABLE() private: wxSizer * captchaDlg( wxWindow *parent ); class wxBitmap * m_captchaBitmap; class wxTextCtrl * m_TextCtrl; uint64 m_id; }; #endif // CAPTCHADIALOG_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CaptchaGenerator.cpp0000644000175000017500000000637012611472361022216 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "CaptchaGenerator.h" #include "RandomFunctions.h" #include "MemFile.h" #include #include #include #define LETTERSIZE 32 #define CROWDEDSIZE 20 // fairly simply captcha generator, might be improved is spammers think its really worth it solving captchas on aMule CCaptchaGenerator::CCaptchaGenerator(uint32 nLetterCount) { ReGenerateCaptcha(nLetterCount); } void CCaptchaGenerator::ReGenerateCaptcha(uint32 nLetterCount) { static wxString schCaptchaContent = wxT("ABCDEFGHJKLMNPQRSTUVWXYZ123456789"); m_strCaptchaText.Clear(); // Bitmap must be created with full depth, or it will fail on GTK wxBitmap pimgResult(LETTERSIZE + (nLetterCount-1)*CROWDEDSIZE, 36); wxMemoryDC dc(pimgResult); dc.SetBackground(*wxWHITE_BRUSH); dc.Clear(); dc.SetTextForeground(*wxBLACK); dc.SetTextBackground(*wxWHITE); double lastrotate = 15.0; for (uint32 i = 0; i < nLetterCount; i++) { wxString strLetter(schCaptchaContent[GetRandomUint16() % schCaptchaContent.length()]); m_strCaptchaText += strLetter; uint16 nRandomSize = 30 - GetRandomUint16() % 12; wxFont font(nRandomSize, wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_BOLD); dc.SetFont(font); uint16 nRandomOffset = 3 + GetRandomUint16() % 8; uint16 maxRotate = 50 - nRandomSize; // rotate small letters more than large letters double fRotate = (double)(maxRotate - (GetRandomUint16() % (maxRotate*2))); // limit angle diff - it causes too much overlap since wx rotates at the corner // (maybe I'll redo that with some coordinate transformation one day) if (fRotate - lastrotate > 20) { fRotate = lastrotate + 20; } else if (fRotate - lastrotate < -20) { fRotate = lastrotate - 20; } dc.DrawRotatedText(strLetter, nRandomOffset + i * CROWDEDSIZE, 0, fRotate); } m_pimgCaptcha = pimgResult.ConvertToImage(); // wx always saves as 24 bpp except when it gets this WELL DOCUMENTED option... m_pimgCaptcha.SetOption(wxIMAGE_OPTION_BMP_FORMAT, wxBMP_1BPP); // m_pimgCaptcha.SaveFile(wxT("captcha.bmp"), wxBITMAP_TYPE_BMP); } bool CCaptchaGenerator::WriteCaptchaImage(wxMemoryOutputStream& file) { return m_pimgCaptcha.SaveFile(file, wxBITMAP_TYPE_BMP); } amule_2.3.1+git20151120.0023527bc2.orig/src/CaptchaGenerator.h0000644000175000017500000000310512611472361021654 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CAPTCHAGENERATOR_H #define CAPTCHAGENERATOR_H #include #include #include "Types.h" class wxImage; class CCaptchaGenerator { public: CCaptchaGenerator(uint32 nLetterCount = 4); void ReGenerateCaptcha(uint32 nLetterCount = 4); wxString GetCaptchaText() const { return m_strCaptchaText; } bool WriteCaptchaImage(wxMemoryOutputStream& file); private: wxImage m_pimgCaptcha; wxString m_strCaptchaText; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CatDialog.cpp0000644000175000017500000001542612611472361020635 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) created by Ornis // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include #ifdef __WINDOWS__ #include // Do_not_auto_remove #endif #include "CatDialog.h" // Interface declarations. #include "DownloadListCtrl.h" // Needed for CDownloadListCtrl #include "TransferWnd.h" // Needed for CTransferWnd #include "amuleDlg.h" // Needed for CamuleDlg #include "SearchDlg.h" // Needed for UpdateCatChoice #include // Needed for MakeFoldername #include "OtherFunctions.h" // Needed for CastChild #include "Preferences.h" // Needed for CPreferences #include "amule.h" // Needed for theApp #include "muuli_wdr.h" // Needed for CategoriesEditWindow BEGIN_EVENT_TABLE(CCatDialog,wxDialog) EVT_BUTTON(wxID_OK, CCatDialog::OnBnClickedOk) EVT_BUTTON(IDC_CATCOLOR, CCatDialog::OnBnClickColor) EVT_BUTTON(IDC_BROWSE, CCatDialog::OnBnClickedBrowse) END_EVENT_TABLE() /* * This class is used in both amule and amulegui. It cannot go into * libmuleappgui because of preferences. When the compiler must passes * here on the remote client, the variable glob_prefs has two different * types, in one case it is (CPreferences *), on the other case it is * (CPreferencesRem *). A proper fix involves a class hierarchy redesign. */ CCatDialog::CCatDialog(wxWindow* parent, bool allowbrowse, int index) : wxDialog(parent, -1, _("Category"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxSYSTEM_MENU) { wxSizer* content = CategoriesEditWindow(this, true); content->Show(this, true); Center(); m_category = NULL; // Attempt to get the specified category, this may or may not succeed, // we dont really care. If it fails (too high index or such), then we // simply get NULL and create a new category if (index > -1) { m_category = theApp->glob_prefs->GetCategory(index); } if (m_category) { // Filling values by the specified category CastChild(IDC_TITLE, wxTextCtrl)->SetValue(m_category->title); // We use the 'raw' filename, since the value is also passed to wxDirSelector CastChild(IDC_INCOMING, wxTextCtrl)->SetValue(m_category->path.GetRaw()); CastChild(IDC_COMMENT, wxTextCtrl)->SetValue(m_category->comment); CastChild(IDC_PRIOCOMBO,wxChoice)->SetSelection(m_category->prio); m_colour = CMuleColour(m_category->color); } else { // Default values for new categories CastChild(IDC_TITLE, wxTextCtrl)->SetValue(_("New Category")); CastChild(IDC_INCOMING, wxTextCtrl)->SetValue(thePrefs::GetIncomingDir().GetRaw()); CastChild(IDC_COMMENT, wxTextCtrl)->SetValue(wxEmptyString); CastChild(IDC_PRIOCOMBO,wxChoice)->SetSelection(0); m_colour = CMuleColour(rand() % 255, rand() % 255, rand() % 255); } CastChild(ID_BOX_CATCOLOR, wxStaticBitmap)->SetBitmap(MakeBitmap()); if (!allowbrowse) { CastChild(IDC_BROWSE, wxButton)->Destroy(); } } CCatDialog::~CCatDialog() { } wxBitmap CCatDialog::MakeBitmap() { wxBitmap bitmap(16, 16); wxMemoryDC dc(bitmap); dc.SetBrush(m_colour.GetBrush()); dc.DrawRectangle(0, 0, 16, 16); return bitmap; } void CCatDialog::OnBnClickedBrowse(wxCommandEvent& WXUNUSED(evt)) { wxString dir = CastChild(IDC_INCOMING, wxTextCtrl)->GetValue(); dir = wxDirSelector( _("Choose a folder for incoming files"), dir, wxDD_DEFAULT_STYLE, wxDefaultPosition, this); if (!dir.IsEmpty()) { CastChild(IDC_INCOMING, wxTextCtrl)->SetValue(dir); } } void CCatDialog::OnBnClickedOk(wxCommandEvent& WXUNUSED(evt)) { wxString newname = CastChild(IDC_TITLE, wxTextCtrl)->GetValue(); // No empty names if (newname.IsEmpty()) { wxMessageBox( _("You must specify a name for the category!"), _("Info"), wxOK, this); return; } CPath newpath = CPath(CastChild(IDC_INCOMING, wxTextCtrl)->GetValue()); // No empty dirs please if (!newpath.IsOk()) { wxMessageBox( _("You must specify a path for the category!"), _("Info"), wxOK, this); return; } // remote gui: // Pass path unchecked (and don't try to create it on the wrong machine...). // It will be checked on the server, and an error message created. #ifndef CLIENT_GUI if (!newpath.DirExists()) { if (!CPath::MakeDir(newpath)) { wxMessageBox(_("Failed to create incoming dir for category. Please specify a valid path!"), _("Info"), wxOK, this); return; } } #endif // Check if we are using an existing category, and if we are, if it has // been removed in the mean-while. Otherwise create new category. // lfroen: The only place where it could happen, is removing category // from remote gui, while local gui amule have dialog opened in this // category. int index = -1; if (m_category) { // Check if the original category still exists bool found = false; for (uint32 i = 0; i < theApp->glob_prefs->GetCatCount(); ++i) { if (m_category == theApp->glob_prefs->GetCategory(i)) { found = true; index = i; break; } } if (!found) { m_category = 0; } } if (!m_category) { // New category, or the old one is gone theApp->glob_prefs->CreateCategory( m_category, newname, newpath, CastChild(IDC_COMMENT, wxTextCtrl)->GetValue(), m_colour.GetULong(), CastChild(IDC_PRIOCOMBO, wxChoice)->GetSelection()); theApp->amuledlg->m_transferwnd->AddCategory(m_category); } else { theApp->glob_prefs->UpdateCategory(index, newname, newpath, CastChild(IDC_COMMENT, wxTextCtrl)->GetValue(), m_colour.GetULong(), CastChild(IDC_PRIOCOMBO, wxChoice)->GetSelection()); theApp->amuledlg->m_transferwnd->UpdateCategory(index); theApp->amuledlg->m_transferwnd->downloadlistctrl->Refresh(); theApp->amuledlg->m_searchwnd->UpdateCatChoice(); } EndModal(wxID_OK); } void CCatDialog::OnBnClickColor(wxCommandEvent& WXUNUSED(evt)) { wxColour newcol = wxGetColourFromUser(this, m_colour); if (newcol.Ok()) { m_colour = newcol; CastChild(ID_BOX_CATCOLOR, wxStaticBitmap)->SetBitmap(MakeBitmap()); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CatDialog.h0000644000175000017500000000566612611472361020307 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 quekky // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CATDIALOG_H #define CATDIALOG_H #include // Needed for wxDialog #include "Types.h" // Needed for uint32 #include "OtherStructs.h" #include "MuleColour.h" class wxStaticBitmap; class wxBitmap; /** * This dialog takes of displaying either existing or new categories, so that * the user can add or change them. * * It is a self-contained entity, and does not rely on the categories staying * the same while the dialog is visble, though it will overwrite any changes * made to the selected category in the mean time. Also, if the selected category * has been deleted then it will simply be readded. * * It does however rely on the Transferwnd keeping its own list of categories up- * to-date. */ class CCatDialog : public wxDialog { public: /** * Constructor. * * @param parent The parent of the new dialog. * @param catindex The category to be edited. * * The parameter catindex can be a valid index, in which case that category * will be selected, or it can be less than zero, in which case a new * category will be created. */ CCatDialog(wxWindow* parent, bool allowbrowse, int catindex = -1 ); /** * Destructor. */ ~CCatDialog(); private: /** * Helper function for making the color-preview. * * This function creates a single-color 16x16 image, using the * m_colour member variable. */ wxBitmap MakeBitmap(); //! Variable used to store the user-selected color. CMuleColour m_colour; //! Pointer to category to be edited or NULL if we are adding a new category. Category_Struct* m_category; /** * Event-handler for selecting incomming dir. */ void OnBnClickedBrowse(wxCommandEvent& evt); /** * Event-handler for saving the changes. */ void OnBnClickedOk(wxCommandEvent& evt); /** * Event-handler for selecting category color. */ void OnBnClickColor(wxCommandEvent& evt); DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ChatSelector.cpp0000644000175000017500000002340012611472361021355 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include #include #include "pixmaps/chat.ico.xpm" #include "ChatSelector.h" // Interface declarations #include "Preferences.h" // Needed for CPreferences #include "amule.h" // Needed for theApp #include "ClientRef.h" // Needed for CClientRef #include "OtherFunctions.h" #include "muuli_wdr.h" // Needed for amuleSpecial #include "UserEvents.h" #include "Constants.h" // Needed for MS_NONE //#warning Needed while not ported #include "ClientList.h" #include // Needed for CFormat // Default colors, #define COLOR_BLACK wxTextAttr( wxColor( 0, 0, 0 ) ) #define COLOR_BLUE wxTextAttr( wxColor( 0, 0, 255 ) ) #define COLOR_GREEN wxTextAttr( wxColor( 0, 102, 0 ) ) #define COLOR_RED wxTextAttr( wxColor( 255, 0, 0 ) ) CChatSession::CChatSession(wxWindow* parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) : CMuleTextCtrl( parent, id, value, pos, size, style | wxTE_READONLY | wxTE_RICH | wxTE_MULTILINE, validator, name ) { m_client_id = 0; m_active = false; SetBackgroundColour(*wxWHITE); } CChatSession::~CChatSession() { //#warning EC NEEDED #ifndef CLIENT_GUI theApp->clientlist->SetChatState(m_client_id,MS_NONE); #endif } void CChatSession::AddText(const wxString& text, const wxTextAttr& style, bool newline) { // Split multi-line messages into individual lines wxStringTokenizer tokens( text, wxT("\n") ); while ( tokens.HasMoreTokens() ) { // Check if we should add a time-stamp if ( GetNumberOfLines() > 1 ) { // Check if the last line ended with a newline wxString line = GetLineText( GetNumberOfLines() - 1 ); if ( line.IsEmpty() ) { SetDefaultStyle( COLOR_BLACK ); AppendText( wxT(" [") + wxDateTime::Now().FormatISOTime() + wxT("] ") ); } } SetDefaultStyle(style); AppendText( tokens.GetNextToken() ); // Only add newlines after the last line if it is desired if ( tokens.HasMoreTokens() || newline ) { AppendText( wxT("\n") ); } } } CChatSelector::CChatSelector(wxWindow* parent, wxWindowID id, const wxPoint& pos, wxSize siz, long style) : CMuleNotebook(parent, id, pos, siz, style) { wxImageList* imagelist = new wxImageList(16,16); // Chat icon -- default state imagelist->Add(wxBitmap(chat_ico_xpm)); // Close icon -- on mouseover imagelist->Add(amuleSpecial(4)); AssignImageList(imagelist); } CChatSession* CChatSelector::StartSession(uint64 client_id, const wxString& client_name, bool show) { // Check to see if we've already opened a session for this user if ( GetPageByClientID( client_id ) ) { if ( show ) { SetSelection( GetTabByClientID( client_id ) ); } return NULL; } CChatSession* chatsession = new CChatSession(this); chatsession->m_client_id = client_id; wxString text; text = wxT(" *** ") + (CFormat(_("Chat-Session Started: %s (%s:%u) - %s %s")) % client_name % Uint32toStringIP(IP_FROM_GUI_ID(client_id)) % PORT_FROM_GUI_ID(client_id) % wxDateTime::Now().FormatISODate() % wxDateTime::Now().FormatISOTime()); chatsession->AddText( text, COLOR_RED ); AddPage(chatsession, client_name, show, 0); CUserEvents::ProcessEvent(CUserEvents::NewChatSession, &client_name); return chatsession; } CChatSession* CChatSelector::GetPageByClientID(uint64 client_id) { for ( unsigned int i = 0; i < (unsigned int ) GetPageCount(); i++ ) { CChatSession* page = static_cast(GetPage(i)); if( page->m_client_id == client_id ) { return page; } } return NULL; } int CChatSelector::GetTabByClientID(uint64 client_id) { for ( unsigned int i = 0; i < (unsigned int) GetPageCount(); i++ ) { CChatSession* page = static_cast(GetPage(i)); if( page->m_client_id == client_id ) { return i; } } return -1; } bool CChatSelector::ProcessMessage(uint64 sender_id, const wxString& message) { CChatSession* session = GetPageByClientID(sender_id); // Try to get the name (core sent it?) int separator = message.Find(wxT("|")); wxString client_name; wxString client_message; if (separator != -1) { client_name = message.Left(separator); client_message = message.Mid(separator+1); } else { // No need to define client_name. If needed, will be build on tab creation. client_message = message; } bool newtab = !session; if ( !session ) { // This must be a mesage from a client that is not already chatting if (client_name.IsEmpty()) { // Core did not send us the name. // This must NOT happen. // Build a client name based on the ID uint32 ip = IP_FROM_GUI_ID(sender_id); client_name = CFormat(wxT("IP: %s Port: %u")) % Uint32toStringIP(ip) % PORT_FROM_GUI_ID(sender_id); } session = StartSession( sender_id, client_name, true ); } // Other client connected after disconnection or a new session if ( !session->m_active ) { session->m_active = true; session->AddText( _("*** Connected to Client ***"), COLOR_RED ); } // Page text is client name session->AddText( GetPageText(GetTabByClientID(sender_id)), COLOR_BLUE, false ); session->AddText( wxT(": ") + client_message, COLOR_BLACK ); return newtab; } bool CChatSelector::SendMessage( const wxString& message, const wxString& client_name, uint64 to_id ) { // Dont let the user send empty messages // This is also a user-fix for people who mash the enter-key ... if ( message.IsEmpty() ) { return false; } if (to_id) { // Checks if there's a page with this client, and selects it or creates it StartSession(to_id, client_name, true); } int usedtab = GetSelection(); // Workaround for a problem with wxNotebook, where an invalid selection is returned if (usedtab >= (int)GetPageCount()) { usedtab = GetPageCount() - 1; } if (usedtab == -1) { return false; } CChatSession* ci = static_cast(GetPage(usedtab)); ci->m_active = true; //#warning EC needed here. #ifndef CLIENT_GUI if (theApp->clientlist->SendChatMessage(ci->m_client_id, message)) { ci->AddText( thePrefs::GetUserNick(), COLOR_GREEN, false ); ci->AddText( wxT(": ") + message, COLOR_BLACK ); } else { ci->AddText( _("*** Connecting to Client ***"), COLOR_RED ); } #endif return true; } //#warning Creteil? I know you are here Creteil... follow the white rabbit. /* Madcat - knock knock ... ,-.,-. \ \\ \ \ \\_\ / \ __| a a| /` `'. = y)= / `"`} _| \ } { \ ), // '-', /__\ ( ( jgs (______)\_)_) */ void CChatSelector::ConnectionResult(bool success, const wxString& message, uint64 id) { CChatSession* ci = GetPageByClientID(id); if ( !ci ) { return; } if ( !success ) { ci->AddText( _("*** Failed to Connect to client / Connection lost ***"), COLOR_RED ); ci->m_active = false; } else { // Kry - Woops, fix for the everlasting void message sending. if ( !message.IsEmpty() ) { ci->AddText( _("*** Connected to Client ***"), COLOR_RED ); ci->AddText( thePrefs::GetUserNick(), COLOR_GREEN, false ); ci->AddText( wxT(": ") + message, COLOR_BLACK ); } } } void CChatSelector::EndSession(uint64 client_id) { int usedtab; if (client_id) { usedtab = GetTabByClientID(client_id); } else { usedtab = GetSelection(); } if (usedtab == -1) { return; } DeletePage(usedtab); } // Refresh the tab assosiated with a client void CChatSelector::RefreshFriend(uint64 toupdate_id, const wxString& new_name) { wxASSERT( toupdate_id ); int tab = GetTabByClientID(toupdate_id); if (tab != -1) { // This client has a tab. SetPageText(tab,new_name); } else { // This client has no tab (friend disconnecting, etc) // Nothing to be done here. } } void CChatSelector::ShowCaptchaResult(uint64 id, bool ok) { CChatSession* ci = GetPageByClientID(id); if (ci) { ci->AddText(ok ? _("*** You have passed the captcha check and the user has received your message. ***") : _("*** Your response to the captcha was wrong and your message has been ignored. You can request a new captcha by sending a new message. ***"), COLOR_RED ); } } #ifdef CLIENT_GUI bool CChatSelector::GetCurrentClient(CClientRef&) const { return false; } #else bool CChatSelector::GetCurrentClient(CClientRef& clientref) const { // Get the chat session associated with the active tab CChatSession* ci = static_cast(GetPage(GetSelection())); // Get the client that the session is open to if (ci) { CUpDownClient * client = theApp->clientlist->FindClientByIP(IP_FROM_GUI_ID(ci->m_client_id), PORT_FROM_GUI_ID(ci->m_client_id)); if (client) { clientref.Link(client CLIENT_DEBUGSTRING("CChatSelector::GetCurrentClient")); return true; } } return false; } #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ChatSelector.h0000644000175000017500000000604312611472361021026 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CHATSELECTOR_H #define CHATSELECTOR_H #include "MuleTextCtrl.h" #include "MuleNotebook.h" #include "Types.h" // Needed for uint16 class CClientRef; class CFriend; /** * This class is used to display chat sessions. */ class CChatSession : public CMuleTextCtrl { public: CChatSession(wxWindow *parent, wxWindowID id = -1, const wxString& value = wxT(""), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxTextCtrlNameStr ); ~CChatSession(); uint64 m_client_id; bool m_active; /** * Appends the specified text. * * @param text The text to add. * @param style The style of the new text. * @param newline If a newline should be added to the end of the line. * * If newline is false, then no newlines will be at the end of added text, * even if the passed string ends with newlines. Multiline strings are * broken into indivudual lines and each are timestamped with the same date. */ void AddText( const wxString& text, const wxTextAttr& style, bool newline = true ); }; class CChatSelector : public CMuleNotebook { public: CChatSelector(wxWindow* parent, wxWindowID id, const wxPoint& pos, wxSize siz, long style); virtual ~CChatSelector() {}; CChatSession* StartSession(uint64 client_id, const wxString& client_name, bool show = true); void EndSession(uint64 client_id = 0); CChatSession* GetPageByClientID(uint64 client_id); int GetTabByClientID(uint64 client_id); bool ProcessMessage(uint64 sender_id, const wxString& message); bool SendMessage(const wxString& message, const wxString& client_name = wxEmptyString, uint64 to_id = 0); void ConnectionResult(bool success, const wxString& message, uint64 id); void RefreshFriend(uint64 toupdate_id, const wxString& new_name); void ShowCaptchaResult(uint64 id, bool ok); bool GetCurrentClient(CClientRef&) const; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ChatWnd.cpp0000644000175000017500000001664612611472361020343 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include // IDs for the chat-popup menu #include #include "ChatWnd.h" // Interface declarations #include "amule.h" // Needed for theApp #include "amuleDlg.h" // Needed for CamuleDlg #include "ClientList.h" // Needed for CClientList #include "ClientRef.h" // Needed for CClientRef #include "FriendListCtrl.h" // Needed for CFriendListCtrl #include "FriendList.h" // Needed for CFriendList #include "Friend.h" // Needed for CFriend #include "ChatSelector.h" // Needed for CChatSelector #include "muuli_wdr.h" // Needed for messagePage #include "OtherFunctions.h" BEGIN_EVENT_TABLE(CChatWnd, wxPanel) EVT_RIGHT_DOWN(CChatWnd::OnNMRclickChatTab) EVT_MENU(MP_CLOSE_TAB, CChatWnd::OnPopupClose) EVT_MENU(MP_CLOSE_ALL_TABS, CChatWnd::OnPopupCloseAll) EVT_MENU(MP_CLOSE_OTHER_TABS, CChatWnd::OnPopupCloseOthers) EVT_MENU(MP_ADDFRIEND, CChatWnd::OnAddFriend ) EVT_TEXT_ENTER(IDC_CMESSAGE, CChatWnd::OnBnClickedCsend) EVT_BUTTON(IDC_CSEND, CChatWnd::OnBnClickedCsend) EVT_BUTTON(IDC_CCLOSE, CChatWnd::OnBnClickedCclose) EVT_MULENOTEBOOK_ALL_PAGES_CLOSED(IDC_CHATSELECTOR, CChatWnd::OnAllPagesClosed) END_EVENT_TABLE() CChatWnd::CChatWnd(wxWindow* pParent) : wxPanel(pParent, -1) { wxSizer* content = messagePage(this, true); content->Show(this, true); chatselector = CastChild( IDC_CHATSELECTOR, CChatSelector ); // We want to use our own popup menu chatselector->SetPopupHandler(this); m_menu = NULL; friendlistctrl = CastChild( ID_FRIENDLIST, CFriendListCtrl ); } void CChatWnd::StartSession(CFriend* friend_client, bool setfocus) { if ( !friend_client->GetName().IsEmpty() ) { if (setfocus) { theApp->amuledlg->SetActiveDialog(CamuleDlg::DT_CHAT_WND, this); } chatselector->StartSession(GUI_ID(friend_client->GetIP(), friend_client->GetPort()), friend_client->GetName(), true); } // Check to enable the window controls if needed CheckNewButtonsState(); } void CChatWnd::OnNMRclickChatTab(wxMouseEvent& evt) { // Only handle events from the chat-notebook if (evt.GetEventObject() != (wxObject*)chatselector) return; if (chatselector->GetSelection() == -1) { return; } // Avoid opening another menu when it's already open if (m_menu == NULL) { m_menu = new wxMenu(_("Chat")); m_menu->Append(MP_CLOSE_TAB, wxString(_("Close tab"))); m_menu->Append(MP_CLOSE_ALL_TABS, wxString(_("Close all tabs"))); m_menu->Append(MP_CLOSE_OTHER_TABS, wxString(_("Close other tabs"))); m_menu->AppendSeparator(); wxMenuItem * addFriend = m_menu->Append(MP_ADDFRIEND, _("Add to Friends")); // Disable this client if it is already a friend CClientRef client; if (chatselector->GetCurrentClient(client) && client.IsFriend()) { addFriend->Enable(false); } PopupMenu(m_menu, evt.GetPosition()); delete m_menu; m_menu = NULL; } } void CChatWnd::OnPopupClose(wxCommandEvent& WXUNUSED(evt)) { chatselector->DeletePage(chatselector->GetSelection()); } void CChatWnd::OnPopupCloseAll(wxCommandEvent& WXUNUSED(evt)) { chatselector->DeleteAllPages(); } void CChatWnd::OnPopupCloseOthers(wxCommandEvent& WXUNUSED(evt)) { wxNotebookPage* current = chatselector->GetPage(chatselector->GetSelection()); for (int i = chatselector->GetPageCount() - 1; i >= 0; i--) { if (current != chatselector->GetPage(i)) chatselector->DeletePage( i ); } } void CChatWnd::OnAddFriend(wxCommandEvent& WXUNUSED(evt)) { // Get the client that the session is open to CClientRef client; // Add the client as friend unless it's already a friend if (chatselector->GetCurrentClient(client) && !client.IsFriend()) { theApp->friendlist->AddFriend(client); } } void CChatWnd::OnBnClickedCsend(wxCommandEvent& WXUNUSED(evt)) { wxString message = CastChild(IDC_CMESSAGE, wxTextCtrl)->GetValue(); SendMessage(message); } void CChatWnd::OnBnClickedCclose(wxCommandEvent& WXUNUSED(evt)) { chatselector->EndSession(); } void CChatWnd::OnAllPagesClosed(wxNotebookEvent& WXUNUSED(evt)) { CastChild(IDC_CMESSAGE, wxTextCtrl)->Clear(); // Check to disable the window controls CheckNewButtonsState(); } void CChatWnd::UpdateFriend(CFriend* toupdate) { if (toupdate->GetLinkedClient().IsLinked()) { chatselector->RefreshFriend(GUI_ID(toupdate->GetIP(), toupdate->GetPort()), toupdate->GetName()); } else { // drop Chat session chatselector->EndSession(GUI_ID(toupdate->GetIP(), toupdate->GetPort())); } friendlistctrl->UpdateFriend(toupdate); } void CChatWnd::RemoveFriend(CFriend* todel) { chatselector->EndSession(GUI_ID(todel->GetIP(), todel->GetPort())); friendlistctrl->RemoveFriend(todel); } void CChatWnd::ProcessMessage(uint64 sender, const wxString& message) { if ( !theApp->amuledlg->IsDialogVisible(CamuleDlg::DT_CHAT_WND) ) { theApp->amuledlg->SetMessageBlink(true); } if (chatselector->ProcessMessage(sender, message)) { // Check to enable the window controls if needed CheckNewButtonsState(); } } void CChatWnd::ConnectionResult(bool success, const wxString& message, uint64 id) { chatselector->ConnectionResult(success, message, id); } void CChatWnd::SendMessage(const wxString& message, const wxString& client_name, uint64 to_id) { if (chatselector->SendMessage( message, client_name, to_id )) { CastChild(IDC_CMESSAGE, wxTextCtrl)->Clear(); } // Check to enable the window controls if needed CheckNewButtonsState(); CastChild(IDC_CMESSAGE, wxTextCtrl)->SetFocus(); } void CChatWnd::CheckNewButtonsState() { switch (chatselector->GetPageCount()) { case 0: GetParent()->FindWindow(IDC_CSEND)->Enable(false); GetParent()->FindWindow(IDC_CCLOSE)->Enable(false); GetParent()->FindWindow(IDC_CMESSAGE)->Enable(false); break; case 1: GetParent()->FindWindow(IDC_CSEND)->Enable(true); GetParent()->FindWindow(IDC_CCLOSE)->Enable(true); GetParent()->FindWindow(IDC_CMESSAGE)->Enable(true); break; default: // Nothing to be done here. Keep current state, which should be enabled. wxASSERT(GetParent()->FindWindow(IDC_CSEND)->IsEnabled()); wxASSERT(GetParent()->FindWindow(IDC_CCLOSE)->IsEnabled()); wxASSERT(GetParent()->FindWindow(IDC_CMESSAGE)->IsEnabled()); break; } } bool CChatWnd::IsIdValid(uint64 id) { return chatselector->GetTabByClientID(id) >= 0; } void CChatWnd::ShowCaptchaResult(uint64 id, bool ok) { chatselector->ShowCaptchaResult(id, ok); } void CChatWnd::EndSession(uint64 id) { chatselector->EndSession(id); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ChatWnd.h0000644000175000017500000000564512611472361020005 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CHATWND_H #define CHATWND_H #include // Needed for wxPanel #include // Needed for wxNotebookEvent #include "Types.h" class CFriend; class CChatSelector; class CFriendListCtrl; class CMD4Hash; class CChatWnd : public wxPanel { public: CChatWnd(wxWindow* pParent = NULL); ~CChatWnd() {}; void StartSession(CFriend* friend_client, bool setfocus = true); void UpdateFriend(CFriend* toupdate); void RemoveFriend(CFriend* todel); void ProcessMessage(uint64 sender, const wxString& message); void ConnectionResult(bool success, const wxString& message, uint64 id); void SendMessage(const wxString& message, const wxString& client_name = wxEmptyString, uint64 to_id = 0); bool IsIdValid(uint64 id); void ShowCaptchaResult(uint64 id, bool ok); void EndSession(uint64 id); protected: /** * Event-handler for displaying the chat-popup menu. */ void OnNMRclickChatTab(wxMouseEvent& evt); /** * Event-handler fo the Close item on the popup-menu. */ void OnPopupClose(wxCommandEvent& evt); /** * Event-handler fo the CloseAll item on the popup-menu. */ void OnPopupCloseAll(wxCommandEvent& evt); /** * Event-handler fo the CloseOthers item on the popup-menu. */ void OnPopupCloseOthers(wxCommandEvent& evt); /** * Event-handler fo the AddFriend item on the popup-menu. */ void OnAddFriend(wxCommandEvent& evt); void OnBnClickedCsend(wxCommandEvent& evt); void OnBnClickedCclose(wxCommandEvent& evt); void OnAllPagesClosed(wxNotebookEvent& evt); void CheckNewButtonsState(); DECLARE_EVENT_TABLE() //! Variable used to ensure that the popup menu doesn't get displayed twice. wxMenu* m_menu; //! Pointer to the control serving as the friend list CFriendListCtrl* friendlistctrl; //! Pointer to the chat tabs. CChatSelector* chatselector; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ClientCredits.cpp0000644000175000017500000001474412611472361021544 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ClientCredits.h" // Interface declarations #include #include "GetTickCount.h" // Needed for GetTickCount #include "Logger.h" // Needed for Add(Debug)LogLine CreditStruct::CreditStruct() : uploaded(0), downloaded(0), nLastSeen(0), nReserved3(0), nKeySize(0) { memset(abySecureIdent, 0, MAXPUBKEYSIZE); } CClientCredits::CClientCredits(CreditStruct* in_credits) { m_pCredits = in_credits; InitalizeIdent(); m_dwUnSecureWaitTime = 0; m_dwSecureWaitTime = 0; m_dwWaitTimeIP = 0; } CClientCredits::CClientCredits(const CMD4Hash& key) { m_pCredits = new CreditStruct(); m_pCredits->key = key; InitalizeIdent(); m_dwUnSecureWaitTime = ::GetTickCount(); m_dwSecureWaitTime = ::GetTickCount(); m_dwWaitTimeIP = 0; } CClientCredits::~CClientCredits() { delete m_pCredits; } void CClientCredits::AddDownloaded(uint32 bytes, uint32 dwForIP, bool cryptoavail) { switch (GetCurrentIdentState(dwForIP)) { case IS_IDFAILED: case IS_IDBADGUY: case IS_IDNEEDED: if (cryptoavail) { return; } break; case IS_NOTAVAILABLE: case IS_IDENTIFIED: break; } m_pCredits->downloaded += bytes; } void CClientCredits::AddUploaded(uint32 bytes, uint32 dwForIP, bool cryptoavail) { switch (GetCurrentIdentState(dwForIP)) { case IS_IDFAILED: case IS_IDBADGUY: case IS_IDNEEDED: if (cryptoavail) { return; } break; case IS_NOTAVAILABLE: case IS_IDENTIFIED: break; } m_pCredits->uploaded += bytes; } uint64 CClientCredits::GetUploadedTotal() const { return m_pCredits->uploaded; } uint64 CClientCredits::GetDownloadedTotal() const { return m_pCredits->downloaded; } float CClientCredits::GetScoreRatio(uint32 dwForIP, bool cryptoavail) { // check the client ident status switch (GetCurrentIdentState(dwForIP)) { case IS_IDFAILED: case IS_IDBADGUY: case IS_IDNEEDED: if (cryptoavail) { // bad guy - no credits for you return 1.0f; } break; case IS_NOTAVAILABLE: case IS_IDENTIFIED: break; } if (GetDownloadedTotal() < 1000000) { return 1.0f; } float result = 0.0f; if (!GetUploadedTotal()) { result = 10.0f; } else { result = (GetDownloadedTotal() * 2.0f) / GetUploadedTotal(); } float result2 = sqrt((GetDownloadedTotal() / 1048576.0) + 2.0f); if (result > result2) { result = result2; } if (result < 1.0f) { return 1.0f; } else if (result > 10.0f) { return 10.0f; } return result; } void CClientCredits::SetLastSeen() { m_pCredits->nLastSeen = time(NULL); } void CClientCredits::InitalizeIdent() { if (m_pCredits->nKeySize == 0 ){ memset(m_abyPublicKey,0,80); // for debugging m_nPublicKeyLen = 0; m_identState = IS_NOTAVAILABLE; } else{ m_nPublicKeyLen = m_pCredits->nKeySize; memcpy(m_abyPublicKey, m_pCredits->abySecureIdent, m_nPublicKeyLen); m_identState = IS_IDNEEDED; } m_dwCryptRndChallengeFor = 0; m_dwCryptRndChallengeFrom = 0; m_dwIdentIP = 0; } void CClientCredits::Verified(uint32 dwForIP) { m_dwIdentIP = dwForIP; // client was verified, copy the keyto store him if not done already if (m_pCredits->nKeySize == 0){ m_pCredits->nKeySize = m_nPublicKeyLen; memcpy(m_pCredits->abySecureIdent, m_abyPublicKey, m_nPublicKeyLen); if (GetDownloadedTotal() > 0){ // for security reason, we have to delete all prior credits here // in order to save this client, set 1 byte m_pCredits->downloaded = 1; m_pCredits->uploaded = 1; AddDebugLogLineN( logCredits, wxT("Credits deleted due to new SecureIdent") ); } } m_identState = IS_IDENTIFIED; } bool CClientCredits::SetSecureIdent(const byte* pachIdent, uint8 nIdentLen) { // verified Public key cannot change, use only if there is not public key yet if (MAXPUBKEYSIZE < nIdentLen || m_pCredits->nKeySize != 0 ) { return false; } memcpy(m_abyPublicKey,pachIdent, nIdentLen); m_nPublicKeyLen = nIdentLen; m_identState = IS_IDNEEDED; return true; } EIdentState CClientCredits::GetCurrentIdentState(uint32 dwForIP) const { if (m_identState != IS_IDENTIFIED) return m_identState; else{ if (dwForIP == m_dwIdentIP) return IS_IDENTIFIED; else return IS_IDBADGUY; // mod note: clients which just reconnected after an IP change and have to ident yet will also have this state for 1-2 seconds // so don't try to spam such clients with "bad guy" messages (besides: spam messages are always bad) } } uint32 CClientCredits::GetSecureWaitStartTime(uint32 dwForIP) { if (m_dwUnSecureWaitTime == 0 || m_dwSecureWaitTime == 0) SetSecWaitStartTime(dwForIP); if (m_pCredits->nKeySize != 0){ // this client is a SecureHash Client if (GetCurrentIdentState(dwForIP) == IS_IDENTIFIED){ // good boy return m_dwSecureWaitTime; } else{ // not so good boy if (dwForIP == m_dwWaitTimeIP){ return m_dwUnSecureWaitTime; } else{ // bad boy // this can also happen if the client has not identified himself yet, but will do later - so maybe he is not a bad boy :) . m_dwUnSecureWaitTime = ::GetTickCount(); m_dwWaitTimeIP = dwForIP; return m_dwUnSecureWaitTime; } } } else{ // not a SecureHash Client - handle it like before for now (no security checks) return m_dwUnSecureWaitTime; } } void CClientCredits::SetSecWaitStartTime(uint32 dwForIP) { m_dwUnSecureWaitTime = ::GetTickCount()-1; m_dwSecureWaitTime = ::GetTickCount()-1; m_dwWaitTimeIP = dwForIP; } void CClientCredits::ClearWaitStartTime() { m_dwUnSecureWaitTime = 0; m_dwSecureWaitTime = 0; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ClientCredits.h0000644000175000017500000000643612611472361021210 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CLIENTCREDITS_H #define CLIENTCREDITS_H #include "MD4Hash.h" // Needed for CMD4Hash #define MAXPUBKEYSIZE 80 #define CRYPT_CIP_REMOTECLIENT 10 #define CRYPT_CIP_LOCALCLIENT 20 #define CRYPT_CIP_NONECLIENT 30 class CreditStruct { public: CreditStruct(); CMD4Hash key; uint64 uploaded; // uploaded TO him uint64 downloaded; // downloaded from him uint32 nLastSeen; uint16 nReserved3; uint8 nKeySize; byte abySecureIdent[MAXPUBKEYSIZE]; }; enum EIdentState{ IS_NOTAVAILABLE, IS_IDNEEDED, IS_IDENTIFIED, IS_IDFAILED, IS_IDBADGUY }; class CClientCredits { public: CClientCredits(CreditStruct* in_credits); CClientCredits(const CMD4Hash& key); ~CClientCredits(); const CMD4Hash& GetKey() const {return m_pCredits->key;} const byte* GetSecureIdent() const {return m_abyPublicKey;} uint8 GetSecIDKeyLen() const {return m_nPublicKeyLen;} const CreditStruct* GetDataStruct() const {return m_pCredits;} void ClearWaitStartTime(); void AddDownloaded(uint32 bytes, uint32 dwForIP, bool cryptoavail); void AddUploaded(uint32 bytes, uint32 dwForIP, bool cryptoavail); uint64 GetUploadedTotal() const; uint64 GetDownloadedTotal() const; float GetScoreRatio(uint32 dwForIP, bool cryptoavail); void SetLastSeen(); bool SetSecureIdent(const byte* pachIdent, uint8 nIdentLen); // Public key cannot change, use only if there is not public key yet uint32 m_dwCryptRndChallengeFor; uint32 m_dwCryptRndChallengeFrom; EIdentState GetCurrentIdentState(uint32 dwForIP) const; // can be != m_identState uint32 GetSecureWaitStartTime(uint32 dwForIP); void SetSecWaitStartTime(uint32 dwForIP); void Verified(uint32 dwForIP); EIdentState GetIdentState() const { return m_identState; } void SetIdentState(EIdentState state) { m_identState = state; } private: EIdentState m_identState; void InitalizeIdent(); CreditStruct* m_pCredits; byte m_abyPublicKey[80]; // even keys which are not verified will be stored here, and - if verified - copied into the struct uint8 m_nPublicKeyLen; uint32 m_dwIdentIP; uint32 m_dwSecureWaitTime; uint32 m_dwUnSecureWaitTime; uint32 m_dwWaitTimeIP; // client IP assigned to the waittime }; #endif // CLIENTCREDITS_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ClientCreditsList.cpp0000644000175000017500000003620112611472361022370 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ClientCreditsList.h" // Interface declarations #include #include #include #include // Needed for GetFileSize #include "GetTickCount.h" // Needed for GetTickCount #include "Preferences.h" // Needed for thePrefs #include "ClientCredits.h" // Needed for CClientCredits #include "amule.h" // Needed for theApp #include "CFile.h" // Needed for CFile #include "Logger.h" // Needed for Add(Debug)LogLine #include "CryptoPP_Inc.h" // Needed for Crypto functions #define CLIENTS_MET_FILENAME wxT("clients.met") #define CLIENTS_MET_BAK_FILENAME wxT("clients.met.bak") #define CRYPTKEY_FILENAME wxT("cryptkey.dat") CClientCreditsList::CClientCreditsList() { m_nLastSaved = ::GetTickCount(); LoadList(); InitalizeCrypting(); } CClientCreditsList::~CClientCreditsList() { DeleteContents(m_mapClients); delete static_cast(m_pSignkey); } void CClientCreditsList::LoadList() { CFile file; CPath fileName = CPath(thePrefs::GetConfigDir() + CLIENTS_MET_FILENAME); if (!fileName.FileExists()) { return; } try { file.Open(fileName, CFile::read); if (file.ReadUInt8() != CREDITFILE_VERSION) { AddDebugLogLineC( logCredits, wxT("Creditfile is outdated and will be replaced") ); file.Close(); return; } // everything is ok, lets see if the backup exist... CPath bakFileName = CPath(thePrefs::GetConfigDir() + CLIENTS_MET_BAK_FILENAME); bool bCreateBackup = TRUE; if (bakFileName.FileExists()) { // Ok, the backup exist, get the size CFile hBakFile(bakFileName); if ( hBakFile.GetLength() > file.GetLength()) { // the size of the backup was larger then the // org. file, something is wrong here, don't // overwrite old backup.. bCreateBackup = FALSE; } // else: backup is smaller or the same size as org. // file, proceed with copying of file } //else: the backup doesn't exist, create it if (bCreateBackup) { file.Close(); // close the file before copying if (!CPath::CloneFile(fileName, bakFileName, true)) { AddDebugLogLineC(logCredits, CFormat(wxT("Could not create backup file '%s'")) % fileName); } // reopen file if (!file.Open(fileName, CFile::read)) { AddDebugLogLineC( logCredits, wxT("Failed to load creditfile") ); return; } file.Seek(1); } uint32 count = file.ReadUInt32(); const uint32 dwExpired = time(NULL) - 12960000; // today - 150 day uint32 cDeleted = 0; for (uint32 i = 0; i < count; i++){ CreditStruct* newcstruct = new CreditStruct(); newcstruct->key = file.ReadHash(); newcstruct->uploaded = file.ReadUInt32(); newcstruct->downloaded = file.ReadUInt32(); newcstruct->nLastSeen = file.ReadUInt32(); newcstruct->uploaded += static_cast(file.ReadUInt32()) << 32; newcstruct->downloaded += static_cast(file.ReadUInt32()) << 32; newcstruct->nReserved3 = file.ReadUInt16(); newcstruct->nKeySize = file.ReadUInt8(); file.Read(newcstruct->abySecureIdent, MAXPUBKEYSIZE); if ( newcstruct->nKeySize > MAXPUBKEYSIZE ) { // Oh dear, this is bad mojo, the file is most likely corrupt // We can no longer assume that any of the clients in the file are valid // and will have to discard it. delete newcstruct; DeleteContents(m_mapClients); AddDebugLogLineC( logCredits, wxT("WARNING: Corruptions found while reading Creditfile!") ); return; } if (newcstruct->nLastSeen < dwExpired){ cDeleted++; delete newcstruct; continue; } CClientCredits* newcredits = new CClientCredits(newcstruct); m_mapClients[newcredits->GetKey()] = newcredits; } AddLogLineN(CFormat(wxPLURAL("Creditfile loaded, %u client is known", "Creditfile loaded, %u clients are known", count - cDeleted)) % (count - cDeleted)); if (cDeleted) { AddLogLineN(CFormat(wxPLURAL(" - Credits expired for %u client!", " - Credits expired for %u clients!", cDeleted)) % cDeleted); } } catch (const CSafeIOException& e) { AddDebugLogLineC(logCredits, wxT("IO error while loading clients.met file: ") + e.what()); } } void CClientCreditsList::SaveList() { AddDebugLogLineN( logCredits, wxT("Saved Credit list")); m_nLastSaved = ::GetTickCount(); wxString name(thePrefs::GetConfigDir() + CLIENTS_MET_FILENAME); CFile file; if ( !file.Create(name, true) ) { AddDebugLogLineC( logCredits, wxT("Failed to create creditfile") ); return; } if ( file.Open(name, CFile::write) ) { try { uint32 count = 0; file.WriteUInt8( CREDITFILE_VERSION ); // Temporary place-holder for number of stucts file.WriteUInt32( 0 ); ClientMap::iterator it = m_mapClients.begin(); for ( ; it != m_mapClients.end(); ++it ) { CClientCredits* cur_credit = it->second; if ( cur_credit->GetUploadedTotal() || cur_credit->GetDownloadedTotal() ) { const CreditStruct* const cstruct = cur_credit->GetDataStruct(); file.WriteHash(cstruct->key); file.WriteUInt32(static_cast(cstruct->uploaded)); file.WriteUInt32(static_cast(cstruct->downloaded)); file.WriteUInt32(cstruct->nLastSeen); file.WriteUInt32(static_cast(cstruct->uploaded >> 32)); file.WriteUInt32(static_cast(cstruct->downloaded >> 32)); file.WriteUInt16(cstruct->nReserved3); file.WriteUInt8(cstruct->nKeySize); // Doesn't matter if this saves garbage, will be fixed on load. file.Write(cstruct->abySecureIdent, MAXPUBKEYSIZE); count++; } } // Write the actual number of structs file.Seek( 1 ); file.WriteUInt32( count ); } catch (const CIOFailureException& e) { AddDebugLogLineC(logCredits, wxT("IO failure while saving clients.met: ") + e.what()); } } else { AddDebugLogLineC(logCredits, wxT("Failed to open existing creditfile!")); } } CClientCredits* CClientCreditsList::GetCredit(const CMD4Hash& key) { CClientCredits* result; ClientMap::iterator it = m_mapClients.find( key ); if ( it == m_mapClients.end() ){ result = new CClientCredits(key); m_mapClients[result->GetKey()] = result; } else { result = it->second; } result->SetLastSeen(); return result; } void CClientCreditsList::Process() { if (::GetTickCount() - m_nLastSaved > MIN2MS(13)) SaveList(); } bool CClientCreditsList::CreateKeyPair() { try { CryptoPP::AutoSeededX917RNG rng; CryptoPP::InvertibleRSAFunction privkey; privkey.Initialize(rng, RSAKEYSIZE); // Nothing we can do against this filename2char :/ wxCharBuffer filename = filename2char(thePrefs::GetConfigDir() + CRYPTKEY_FILENAME); CryptoPP::FileSink *fileSink = new CryptoPP::FileSink(filename); CryptoPP::Base64Encoder *privkeysink = new CryptoPP::Base64Encoder(fileSink); privkey.DEREncode(*privkeysink); privkeysink->MessageEnd(); // Do not delete these pointers or it will blow in your face. // cryptopp semantics is giving ownership of these objects. // // delete privkeysink; // delete fileSink; AddDebugLogLineN(logCredits, wxT("Created new RSA keypair")); } catch(const CryptoPP::Exception& e) { AddDebugLogLineC(logCredits, wxString(wxT("Failed to create new RSA keypair: ")) + wxString(char2unicode(e.what()))); wxFAIL; return false; } return true; } void CClientCreditsList::InitalizeCrypting() { m_nMyPublicKeyLen = 0; memset(m_abyMyPublicKey,0,80); // not really needed; better for debugging tho m_pSignkey = NULL; if (!thePrefs::IsSecureIdentEnabled()) { return; } try { // check if keyfile is there if (wxFileExists(thePrefs::GetConfigDir() + CRYPTKEY_FILENAME)) { off_t keySize = CPath::GetFileSize(thePrefs::GetConfigDir() + CRYPTKEY_FILENAME); if (keySize == wxInvalidOffset) { AddDebugLogLineC(logCredits, wxT("Cannot access 'cryptkey.dat', please check permissions.")); return; } else if (keySize == 0) { AddDebugLogLineC(logCredits, wxT("'cryptkey.dat' is empty, recreating keypair.")); CreateKeyPair(); } } else { AddLogLineN(_("No 'cryptkey.dat' file found, creating.") ); CreateKeyPair(); } // load private key CryptoPP::FileSource filesource(filename2char(thePrefs::GetConfigDir() + CRYPTKEY_FILENAME), true, new CryptoPP::Base64Decoder); m_pSignkey = new CryptoPP::RSASSA_PKCS1v15_SHA_Signer(filesource); // calculate and store public key CryptoPP::RSASSA_PKCS1v15_SHA_Verifier pubkey(*static_cast(m_pSignkey)); CryptoPP::ArraySink asink(m_abyMyPublicKey, 80); pubkey.DEREncode(asink); m_nMyPublicKeyLen = asink.TotalPutLength(); asink.MessageEnd(); } catch (const CryptoPP::Exception& e) { delete static_cast(m_pSignkey); m_pSignkey = NULL; AddDebugLogLineC(logCredits, wxString(wxT("Error while initializing encryption keys: ")) + wxString(char2unicode(e.what()))); } } uint8 CClientCreditsList::CreateSignature(CClientCredits* pTarget, byte* pachOutput, uint8 nMaxSize, uint32 ChallengeIP, uint8 byChaIPKind, void* sigkey) { CryptoPP::RSASSA_PKCS1v15_SHA_Signer* signer = static_cast(sigkey); // signer param is used for debug only if (signer == NULL) signer = static_cast(m_pSignkey); // create a signature of the public key from pTarget wxASSERT( pTarget ); wxASSERT( pachOutput ); if ( !CryptoAvailable() ) { return 0; } try { CryptoPP::SecByteBlock sbbSignature(signer->SignatureLength()); CryptoPP::AutoSeededX917RNG rng; byte abyBuffer[MAXPUBKEYSIZE+9]; uint32 keylen = pTarget->GetSecIDKeyLen(); memcpy(abyBuffer,pTarget->GetSecureIdent(),keylen); // 4 additional bytes random data send from this client uint32 challenge = pTarget->m_dwCryptRndChallengeFrom; wxASSERT ( challenge != 0 ); PokeUInt32(abyBuffer+keylen,challenge); uint16 ChIpLen = 0; if ( byChaIPKind != 0){ ChIpLen = 5; PokeUInt32(abyBuffer+keylen+4, ChallengeIP); PokeUInt8(abyBuffer+keylen+4+4,byChaIPKind); } signer->SignMessage(rng, abyBuffer ,keylen+4+ChIpLen , sbbSignature.begin()); CryptoPP::ArraySink asink(pachOutput, nMaxSize); asink.Put(sbbSignature.begin(), sbbSignature.size()); return asink.TotalPutLength(); } catch (const CryptoPP::Exception& e) { AddDebugLogLineC(logCredits, wxString(wxT("Error while creating signature: ")) + wxString(char2unicode(e.what()))); wxFAIL; return 0; } } bool CClientCreditsList::VerifyIdent(CClientCredits* pTarget, const byte* pachSignature, uint8 nInputSize, uint32 dwForIP, uint8 byChaIPKind) { wxASSERT( pTarget ); wxASSERT( pachSignature ); if ( !CryptoAvailable() ){ pTarget->SetIdentState(IS_NOTAVAILABLE); return false; } bool bResult; try { CryptoPP::StringSource ss_Pubkey((byte*)pTarget->GetSecureIdent(),pTarget->GetSecIDKeyLen(),true,0); CryptoPP::RSASSA_PKCS1v15_SHA_Verifier pubkey(ss_Pubkey); // 4 additional bytes random data send from this client +5 bytes v2 byte abyBuffer[MAXPUBKEYSIZE+9]; memcpy(abyBuffer,m_abyMyPublicKey,m_nMyPublicKeyLen); uint32 challenge = pTarget->m_dwCryptRndChallengeFor; wxASSERT ( challenge != 0 ); PokeUInt32(abyBuffer+m_nMyPublicKeyLen, challenge); // v2 security improvments (not supported by 29b, not used as default by 29c) uint8 nChIpSize = 0; if (byChaIPKind != 0){ nChIpSize = 5; uint32 ChallengeIP = 0; switch (byChaIPKind) { case CRYPT_CIP_LOCALCLIENT: ChallengeIP = dwForIP; break; case CRYPT_CIP_REMOTECLIENT: // Ignore local ip... if (!theApp->GetPublicIP(true)) { if (::IsLowID(theApp->GetED2KID())){ AddDebugLogLineN(logCredits, wxT("Warning: Maybe SecureHash Ident fails because LocalIP is unknown")); // Fallback to local ip... ChallengeIP = theApp->GetPublicIP(); } else { ChallengeIP = theApp->GetED2KID(); } } else { ChallengeIP = theApp->GetPublicIP(); } break; case CRYPT_CIP_NONECLIENT: // maybe not supported in future versions ChallengeIP = 0; break; } PokeUInt32(abyBuffer+m_nMyPublicKeyLen+4, ChallengeIP); PokeUInt8(abyBuffer+m_nMyPublicKeyLen+4+4, byChaIPKind); } //v2 end bResult = pubkey.VerifyMessage(abyBuffer, m_nMyPublicKeyLen+4+nChIpSize, pachSignature, nInputSize); } catch (const CryptoPP::Exception& e) { AddDebugLogLineC(logCredits, wxString(wxT("Error while verifying identity: ")) + wxString(char2unicode(e.what()))); bResult = false; } if (!bResult){ if (pTarget->GetIdentState() == IS_IDNEEDED) pTarget->SetIdentState(IS_IDFAILED); } else { pTarget->Verified(dwForIP); } return bResult; } bool CClientCreditsList::CryptoAvailable() const { return m_nMyPublicKeyLen > 0 && m_pSignkey != NULL; } #ifdef _DEBUG bool CClientCreditsList::Debug_CheckCrypting(){ // create random key CryptoPP::AutoSeededX917RNG rng; CryptoPP::RSASSA_PKCS1v15_SHA_Signer priv(rng, 384); CryptoPP::RSASSA_PKCS1v15_SHA_Verifier pub(priv); byte abyPublicKey[80]; CryptoPP::ArraySink asink(abyPublicKey, 80); pub.DEREncode(asink); int8 PublicKeyLen = asink.TotalPutLength(); asink.MessageEnd(); uint32 challenge = rand(); // create fake client which pretends to be this emule CreditStruct* newcstruct = new CreditStruct(); CClientCredits newcredits(newcstruct); newcredits.SetSecureIdent(m_abyMyPublicKey,m_nMyPublicKeyLen); newcredits.m_dwCryptRndChallengeFrom = challenge; // create signature with fake priv key byte pachSignature[200]; memset(pachSignature,0,200); uint8 sigsize = CreateSignature(&newcredits,pachSignature,200,0,false, &priv); // next fake client uses the random created public key CreditStruct* newcstruct2 = new CreditStruct(); CClientCredits newcredits2(newcstruct2); newcredits2.m_dwCryptRndChallengeFor = challenge; // if you uncomment one of the following lines the check has to fail //abyPublicKey[5] = 34; //m_abyMyPublicKey[5] = 22; //pachSignature[5] = 232; newcredits2.SetSecureIdent(abyPublicKey,PublicKeyLen); //now verify this signature - if it's true everything is fine return VerifyIdent(&newcredits2,pachSignature,sigsize,0,0); } #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ClientCreditsList.h0000644000175000017500000000446712611472361022046 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CLIENTCREDITSLIST_H #define CLIENTCREDITSLIST_H #include "MD4Hash.h" // Needed for CMD4Hash #include class CClientCredits; class CClientCreditsList { public: CClientCreditsList(); ~CClientCreditsList(); // return signature size, 0 = Failed | use sigkey param for debug only uint8 CreateSignature(CClientCredits* pTarget, byte* pachOutput, uint8 nMaxSize, uint32 ChallengeIP, uint8 byChaIPKind, void* sigkey = NULL); bool VerifyIdent(CClientCredits* pTarget, const byte* pachSignature, uint8 nInputSize, uint32 dwForIP, uint8 byChaIPKind); CClientCredits* GetCredit(const CMD4Hash& key); void Process(); uint8 GetPubKeyLen() const {return m_nMyPublicKeyLen;} const byte* GetPublicKey() const {return m_abyMyPublicKey;} bool CryptoAvailable() const; void SaveList(); protected: void LoadList(); void InitalizeCrypting(); bool CreateKeyPair(); #ifdef _DEBUG bool Debug_CheckCrypting(); #endif private: typedef std::map ClientMap; ClientMap m_mapClients; uint32 m_nLastSaved; // A void* to avoid having to include the large CryptoPP.h file void* m_pSignkey; byte m_abyMyPublicKey[80]; uint8 m_nMyPublicKeyLen; }; #endif // CLIENTCREDITSLIST_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ClientDetailDialog.cpp0000644000175000017500000001365312611472361022467 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ClientDetailDialog.h" // Interface declarations #include "PartFile.h" // Needed for CPartFile #include "UploadQueue.h" // Needed for CUploadQueue #include "ServerList.h" // Needed for CServerList #include "amule.h" // Needed for theApp #include "Server.h" // Needed for CServer #include "muuli_wdr.h" // Needed for ID_CLOSEWND #include "Preferences.h" // Needed for thePrefs // CClientDetailDialog dialog BEGIN_EVENT_TABLE(CClientDetailDialog,wxDialog) EVT_BUTTON(ID_CLOSEWND,CClientDetailDialog::OnBnClose) END_EVENT_TABLE() CClientDetailDialog::CClientDetailDialog( wxWindow *parent, const CClientRef& client) : wxDialog( parent, 9997, _("Client Details"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE) { m_client = client; wxSizer* content = clientDetails(this, true); OnInitDialog(); content->SetSizeHints(this); content->Show(this, true); } CClientDetailDialog::~CClientDetailDialog() { } void CClientDetailDialog::OnBnClose(wxCommandEvent& WXUNUSED(evt)) { EndModal(0); } bool CClientDetailDialog::OnInitDialog() { // Username, Userhash if (!m_client.GetUserName().IsEmpty()) { CastChild(ID_DNAME, wxStaticText)->SetLabel( m_client.GetUserName()); // if we have client name we have userhash wxASSERT(!m_client.GetUserHash().IsEmpty()); CastChild(ID_DHASH, wxStaticText)->SetLabel( m_client.GetUserHash().Encode()); } else { CastChild(ID_DNAME, wxStaticText)->SetLabel(_("Unknown")); CastChild(ID_DHASH, wxStaticText)->SetLabel(_("Unknown")); } // Client Software wxString OSInfo = m_client.GetClientOSInfo(); if (!OSInfo.IsEmpty()) { CastChild(ID_DSOFT, wxStaticText)->SetLabel( m_client.GetSoftStr()+wxT(" (")+OSInfo+wxT(")")); } else { CastChild(ID_DSOFT, wxStaticText)->SetLabel( m_client.GetSoftStr()); } // Client Version CastChild(ID_DVERSION, wxStaticText)->SetLabel( m_client.GetSoftVerStr()); // User ID CastChild(ID_DID, wxStaticText)->SetLabel( CFormat(wxT("%u (%s)")) % m_client.GetUserIDHybrid() % (m_client.HasLowID() ? _("LowID") : _("HighID"))); // Client IP/Port CastChild(ID_DIP, wxStaticText)->SetLabel( CFormat(wxT("%s:%i")) % m_client.GetFullIP() % m_client.GetUserPort()); // Server IP/Port/Name if (m_client.GetServerIP()) { wxString srvaddr = Uint32toStringIP(m_client.GetServerIP()); CastChild(ID_DSIP, wxStaticText)->SetLabel( CFormat(wxT("%s:%i")) % srvaddr % m_client.GetServerPort()); CastChild(ID_DSNAME, wxStaticText)->SetLabel( m_client.GetServerName()); } else { CastChild(ID_DSIP, wxStaticText)->SetLabel(_("Unknown")); CastChild(ID_DSNAME, wxStaticText)->SetLabel(_("Unknown")); } // Obfuscation wxString buffer; switch (m_client.GetObfuscationStatus()) { case OBST_ENABLED: buffer = _("Enabled"); break; case OBST_SUPPORTED: buffer = _("Supported"); break; case OBST_NOT_SUPPORTED: buffer = _("Not supported"); break; case OBST_DISABLED: buffer = _("Disabled"); break; default: buffer = _("Unknown"); break; } CastChild(IDT_OBFUSCATION, wxStaticText)->SetLabel(buffer); // Kad if (m_client.GetKadPort()) { CastChild(IDT_KAD, wxStaticText)->SetLabel(_("Connected")); } else { CastChild(IDT_KAD, wxStaticText)->SetLabel(_("Disconnected")); } // File Name const CKnownFile* file = m_client.GetUploadFile(); if (file) { wxString filename = MakeStringEscaped(file->GetFileName().TruncatePath(60)); CastChild(ID_DDOWNLOADING, wxStaticText)->SetLabel(filename); } else { CastChild(ID_DDOWNLOADING, wxStaticText)->SetLabel(wxT("-")); } // Upload CastChild(ID_DDUP, wxStaticText)->SetLabel( CastItoXBytes(m_client.GetTransferredDown())); // Download CastChild(ID_DDOWN, wxStaticText)->SetLabel( CastItoXBytes(m_client.GetTransferredUp())); // Average Upload Rate CastChild(ID_DAVUR, wxStaticText)->SetLabel( CFormat(_("%.1f kB/s")) % m_client.GetKBpsDown()); // Average Download Rate CastChild(ID_DAVDR, wxStaticText)->SetLabel( CFormat(_("%.1f kB/s")) % (m_client.GetUploadDatarate() / 1024.0f)); // Total Upload CastChild(ID_DUPTOTAL, wxStaticText)->SetLabel( CastItoXBytes(m_client.GetDownloadedTotal())); // Total Download CastChild(ID_DDOWNTOTAL, wxStaticText)->SetLabel( CastItoXBytes(m_client.GetUploadedTotal())); // DL/UP Modifier CastChild(ID_DRATIO, wxStaticText)->SetLabel( CFormat(wxT("%.1f")) % m_client.GetScoreRatio()); // Secure Ident CastChild(IDC_CDIDENT, wxStaticText)->SetLabel( m_client.GetSecureIdentTextStatus()); // Queue Score if (m_client.GetUploadState() != US_NONE) { CastChild(ID_QUEUERANK, wxStaticText)->SetLabel( CFormat(wxT("%u")) % m_client.GetUploadQueueWaitingPosition()); CastChild(ID_DSCORE, wxStaticText)->SetLabel( CFormat(wxT("%u")) % m_client.GetScore()); } else { CastChild(ID_QUEUERANK, wxStaticText)->SetLabel(wxT("-")); CastChild(ID_DSCORE, wxStaticText)->SetLabel(wxT("-")); } Layout(); return true; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ClientDetailDialog.h0000644000175000017500000000457212611472361022134 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CLIENTDETAILDIALOG_H #define CLIENTDETAILDIALOG_H #include // Needed for wxDialog #include "ClientRef.h" // Needed for CClientRef /** * The ClientDetailDialog class is responsible for showing the info about a client. * * It shows all releavant data about the client: ip, port, hash, name, client * type and version, uploading/downloading data, credits, server... etc * * It's wxDialog, modal, with return value always '0'. * */ class CClientDetailDialog : public wxDialog { public: /** * Constructor. * * @param parent The window that created the dialog. * @param client The client whose details we're showing. */ CClientDetailDialog(wxWindow*parent, const CClientRef& client); /** * Destructor. * * Does nothing currently. */ virtual ~CClientDetailDialog(); protected: /** * Creates all the data objects in the dialog, filling them accordingly. * * Called when the dialog object is created. */ virtual bool OnInitDialog(); /** * Ends the dialog, calling EndModal with return value 0 * * @param evt The close event, unused right now */ void OnBnClose(wxCommandEvent& evt); DECLARE_EVENT_TABLE() private: //! The client whose data is drawn CClientRef m_client; }; #endif // CLIENTDETAILDIALOG_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ClientList.cpp0000644000175000017500000011116512611472361021055 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ClientList.h" // Interface declarations. #include #include #include #include #include #include "amule.h" // Needed for theApp #include "ClientTCPSocket.h" // Needed for CClientTCPSocket #include "DownloadQueue.h" // Needed for CDownloadQueue #include "UploadQueue.h" // Needed for CUploadQueue #include "IPFilter.h" // Needed for CIPFIlter #include "updownclient.h" // Needed for CUpDownClient #include "Preferences.h" // Needed for thePrefs #include "Statistics.h" // Needed for theStats #include "Logger.h" #include "GuiEvents.h" // Needed for Notify_* #include "Packet.h" #include #include "kademlia/kademlia/Search.h" #include "kademlia/kademlia/SearchManager.h" #include "kademlia/kademlia/UDPFirewallTester.h" #include "kademlia/net/KademliaUDPListener.h" #include "kademlia/routing/Contact.h" /** * CDeletedClient Class * * This class / list is a bit overkill, but currently needed to avoid any * exploit possibility. It will keep track of certain clients attributes * for 2 hours, while the CUpDownClient object might be deleted already. * Currently saves: IP, Port, UserHash. */ class CDeletedClient { public: CDeletedClient(CUpDownClient* pClient) { m_dwInserted = ::GetTickCount(); PortAndHash porthash = { pClient->GetUserPort(), pClient->GetCreditsHash()}; m_ItemsList.push_back(porthash); } struct PortAndHash { uint16 nPort; void* pHash; }; typedef std::list PaHList; PaHList m_ItemsList; uint32 m_dwInserted; }; CClientList::CClientList() : m_deadSources( true ) { m_dwLastBannCleanUp = 0; m_dwLastTrackedCleanUp = 0; m_dwLastClientCleanUp = 0; m_nBuddyStatus = Disconnected; } CClientList::~CClientList() { DeleteContents(m_trackedClientsList); wxASSERT(m_clientList.empty()); } void CClientList::AddClient( CUpDownClient* toadd ) { // Ensure that only new clients can be added to the list if ( toadd->GetClientState() == CS_NEW ) { // Update the client-state toadd->m_clientState = CS_LISTED; //Notify_ClientCtrlAddClient( toadd ); // We always add the ID/ptr pair, regardles of the actual ID value m_clientList.insert( IDMapPair( toadd->GetUserIDHybrid(), CCLIENTREF(toadd, wxT("CClientList::AddClient m_clientList.insert"))) ); // We only add the IP if it is valid if ( toadd->GetIP() ) { m_ipList.insert( IDMapPair( toadd->GetIP(), CCLIENTREF(toadd, wxT("CClientList::AddClient m_ipList.insert")) ) ); } // We only add the hash if it is valid if ( toadd->HasValidHash() ) { m_hashList.insert( HashMapPair( toadd->GetUserHash(), CCLIENTREF(toadd, wxT("CClientList::AddClient m_hashList.insert")) ) ); } toadd->UpdateStats(); } } void CClientList::RemoveClient(CUpDownClient* client) { RemoveFromKadList( client ); RemoveDirectCallback( client ); if ( RemoveIDFromList( client ) ) { // Also remove the ip and hash entries RemoveIPFromList( client ); RemoveHashFromList( client ); } } void CClientList::UpdateClientID( CUpDownClient* client, uint32 newID ) { // Sanity check if ( ( client->GetClientState() != CS_LISTED ) || ( client->GetUserIDHybrid() == newID ) ) return; // First remove the ID entry RemoveIDFromList( client ); // Add the new entry m_clientList.insert( IDMapPair( newID, CCLIENTREF(client, wxT("CClientList::UpdateClientID")) ) ); } void CClientList::UpdateClientIP( CUpDownClient* client, uint32 newIP ) { // Sanity check if ( ( client->GetClientState() != CS_LISTED ) || ( client->GetIP() == newIP ) ) return; // Remove the old IP entry RemoveIPFromList( client ); if ( newIP ) { m_ipList.insert( IDMapPair( newIP, CCLIENTREF(client, wxT("CClientList::UpdateClientIP")) ) ); } } void CClientList::UpdateClientHash( CUpDownClient* client, const CMD4Hash& newHash ) { // Sanity check if ( ( client->GetClientState() != CS_LISTED ) || ( client->GetUserHash() == newHash ) ) return; // Remove the old entry RemoveHashFromList( client ); // And add the new one if valid if ( !newHash.IsEmpty() ) { m_hashList.insert( HashMapPair( newHash, CCLIENTREF(client, wxT("CClientList::UpdateClientHash")) ) ); } } bool CClientList::RemoveIDFromList( CUpDownClient* client ) { bool result = false; // First remove the ID entry std::pair range = m_clientList.equal_range( client->GetUserIDHybrid() ); for ( ; range.first != range.second; ++range.first ) { if ( client == range.first->second.GetClient() ) { /* erase() will invalidate the iterator, but we're not using it anymore anyway (notice the break;) */ m_clientList.erase( range.first ); result = true; break; } } return result; } void CClientList::RemoveIPFromList( CUpDownClient* client ) { // Check if we need to look for the IP entry if ( !client->GetIP() ) { return; } // Remove the IP entry std::pair range = m_ipList.equal_range( client->GetIP() ); for ( ; range.first != range.second; ++range.first ) { if ( client == range.first->second.GetClient() ) { /* erase() will invalidate the iterator, but we're not using it anymore anyway (notice the break;) */ m_ipList.erase( range.first ); break; } } } void CClientList::RemoveHashFromList( CUpDownClient* client ) { // Nothing to remove if ( !client->HasValidHash() ) { return; } // Find all items with the specified hash std::pair range = m_hashList.equal_range( client->GetUserHash() ); for ( ; range.first != range.second; ++range.first ) { if ( client == range.first->second.GetClient() ) { /* erase() will invalidate the iterator, but we're not using it anymore anyway (notice the break;) */ m_hashList.erase( range.first ); break; } } } CUpDownClient* CClientList::FindMatchingClient( CUpDownClient* client ) { typedef std::pair IDMapIteratorPair; wxCHECK(client, NULL); const uint32 userIP = client->GetIP(); const uint32 userID = client->GetUserIDHybrid(); const uint16 userPort = client->GetUserPort(); const uint16 userKadPort = client->GetKadPort(); // LowID clients need a different set of checks if (client->HasLowID()) { // User is firewalled ... Must do two checks. if (userIP && (userPort || userKadPort)) { IDMapIteratorPair range = m_ipList.equal_range(userIP); for ( ; range.first != range.second; ++range.first ) { CUpDownClient* other = range.first->second.GetClient(); wxASSERT(userIP == other->GetIP()); if (userPort && (userPort == other->GetUserPort())) { return other; } else if (userKadPort && (userKadPort == other->GetKadPort())) { return other; } } } const uint32 serverIP = client->GetServerIP(); const uint32 serverPort = client->GetServerPort(); if (userID && serverIP && serverPort) { IDMapIteratorPair range = m_clientList.equal_range(userID); for (; range.first != range.second; ++range.first) { CUpDownClient* other = range.first->second.GetClient(); wxASSERT(userID == other->GetUserIDHybrid()); // For lowid, we also have to check the server if (serverIP == other->GetServerIP()) { if (serverPort == other->GetServerPort()) { return other; } } } } } else if (userPort || userKadPort) { // Check by IP first, then by ID struct { const IDMap& map; uint32 value; } toCheck[] = { { m_ipList, userIP }, { m_clientList, userID } }; for (size_t i = 0; i < itemsof(toCheck); ++i) { if (toCheck[i].value == 0) { // We may not have both (or any) of these values. continue; } IDMapIteratorPair range = toCheck[i].map.equal_range(toCheck[i].value); if (userPort) { IDMap::const_iterator it = range.first; for (; it != range.second; ++it) { if (userPort == it->second.GetUserPort()) { return it->second.GetClient(); } } } if (userKadPort) { IDMap::const_iterator it = range.first; for (; it != range.second; ++it) { if (userKadPort == it->second.GetClient()->GetKadPort()) { return it->second.GetClient(); } } } } } // If anything else fails, then we look at hashes if ( client->HasValidHash() ) { // Find all items with the specified hash std::pair range = m_hashList.equal_range( client->GetUserHash() ); // Just return the first item if any if ( range.first != range.second ) { return range.first->second.GetClient(); } } // Nothing found, must be a new client return NULL; } uint32 CClientList::GetClientCount() const { return m_clientList.size(); } void CClientList::DeleteAll() { m_ipList.clear(); m_hashList.clear(); while ( !m_clientList.empty() ) { IDMap::iterator it = m_clientList.begin(); // Will call the removal of the item on this same class it->second.GetClient()->Disconnected(wxT("Removed while deleting all from ClientList.")); it->second.GetClient()->Safe_Delete(); } } bool CClientList::AttachToAlreadyKnown(CUpDownClient** client, CClientTCPSocket* sender) { CUpDownClient* tocheck = (*client); CUpDownClient* found_client = FindMatchingClient( tocheck ); if ( tocheck == found_client ) { // We found the same client instance (client may have sent more than one OP_HELLO). do not delete that client! return true; } if (found_client != NULL){ if (sender) { if (found_client->GetSocket()) { if (found_client->IsConnected() && (found_client->GetIP() != tocheck->GetIP() || found_client->GetUserPort() != tocheck->GetUserPort() ) ) { // if found_client is connected and has the IS_IDENTIFIED, it's safe to say that the other one is a bad guy if (found_client->IsIdentified()){ AddDebugLogLineN(logClient, wxT("Client: ") + tocheck->GetUserName() + wxT("(") + tocheck->GetFullIP() + wxT("), Banreason: Userhash invalid")); tocheck->Ban(); return false; } AddDebugLogLineN(logClient, wxT("WARNING! Found matching client, to a currently connected client: ") + tocheck->GetUserName() + wxT("(") + tocheck->GetFullIP() + wxT(") and ") + found_client->GetUserName() + wxT("(") + found_client->GetFullIP() + wxT(")")); return false; } found_client->GetSocket()->Safe_Delete(); } found_client->SetSocket( sender ); tocheck->SetSocket( NULL ); } *client = 0; tocheck->Safe_Delete(); *client = found_client; return true; } return false; } CUpDownClient* CClientList::FindClientByIP( uint32 clientip, uint16 port ) { // Find all items with the specified ip std::pair range = m_ipList.equal_range( clientip ); for ( ; range.first != range.second; ++range.first ) { CUpDownClient* cur_client = range.first->second.GetClient(); // Check if it's actually the client we want if ( cur_client->GetUserPort() == port ) { return cur_client; } } return NULL; } CUpDownClient* CClientList::FindClientByIP( uint32 clientip ) { // Find all items with the specified ip std::pair range = m_ipList.equal_range( clientip ); return (range.first != range.second) ? range.first->second.GetClient() : NULL; } CUpDownClient* CClientList::FindClientByECID(uint32 ecid) const { for (IDMap::const_iterator it = m_clientList.begin(); it != m_clientList.end(); ++it) { if (it->second.ECID() == ecid) { return it->second.GetClient(); } } return NULL; } bool CClientList::IsIPAlreadyKnown(uint32_t ip) { // Find all items with the specified ip std::pair range = m_ipList.equal_range(ip); return range.first != range.second; } bool CClientList::ComparePriorUserhash(uint32 dwIP, uint16 nPort, void* pNewHash) { std::map::iterator it = m_trackedClientsList.find( dwIP ); if ( it != m_trackedClientsList.end() ) { CDeletedClient* pResult = it->second; CDeletedClient::PaHList::iterator it2 = pResult->m_ItemsList.begin(); for ( ; it2 != pResult->m_ItemsList.end(); ++it2 ) { if ( it2->nPort == nPort ) { if ( it2->pHash != pNewHash) { return false; } else { break; } } } } return true; } void CClientList::AddTrackClient(CUpDownClient* toadd) { std::map::iterator it = m_trackedClientsList.find( toadd->GetIP() ); if ( it != m_trackedClientsList.end() ) { CDeletedClient* pResult = it->second; pResult->m_dwInserted = ::GetTickCount(); CDeletedClient::PaHList::iterator it2 = pResult->m_ItemsList.begin(); for ( ; it2 != pResult->m_ItemsList.end(); ++it2 ) { if ( it2->nPort == toadd->GetUserPort() ) { // already tracked, update it2->pHash = toadd->GetCreditsHash(); return; } } // New client for that IP, add an entry CDeletedClient::PortAndHash porthash = { toadd->GetUserPort(), toadd->GetCreditsHash()}; pResult->m_ItemsList.push_back(porthash); } else { m_trackedClientsList[ toadd->GetIP() ] = new CDeletedClient(toadd); } } uint16 CClientList::GetClientsFromIP(uint32 dwIP) { std::map::iterator it = m_trackedClientsList.find( dwIP ); if ( it != m_trackedClientsList.end() ) { return it->second->m_ItemsList.size(); } else { return 0; } } void CClientList::Process() { const uint32 cur_tick = ::GetTickCount(); if (m_dwLastBannCleanUp + BAN_CLEANUP_TIME < cur_tick) { m_dwLastBannCleanUp = cur_tick; ClientMap::iterator it = m_bannedList.begin(); while ( it != m_bannedList.end() ) { if ( it->second + CLIENTBANTIME < cur_tick ) { ClientMap::iterator tmp = it++; m_bannedList.erase( tmp ); theStats::RemoveBannedClient(); } else { ++it; } } } if ( m_dwLastTrackedCleanUp + TRACKED_CLEANUP_TIME < cur_tick ) { m_dwLastTrackedCleanUp = cur_tick; std::map::iterator it = m_trackedClientsList.begin(); while ( it != m_trackedClientsList.end() ) { std::map::iterator cur_src = it++; if ( cur_src->second->m_dwInserted + KEEPTRACK_TIME < cur_tick ) { delete cur_src->second; m_trackedClientsList.erase( cur_src ); } } } //We need to try to connect to the clients in m_KadList //If connected, remove them from the list and send a message back to Kad so we can send a ACK. //If we don't connect, we need to remove the client.. //The sockets timeout should delete this object. // buddy is just a flag that is used to make sure we are still connected or connecting to a buddy. buddyState buddy = Disconnected; CClientRefSet::iterator current_it = m_KadSources.begin(); while (current_it != m_KadSources.end()) { CUpDownClient* cur_client = current_it->GetClient(); ++current_it; // Won't be used anymore till while loop if( !Kademlia::CKademlia::IsRunning() ) { //Clear out this list if we stop running Kad. //Setting the Kad state to KS_NONE causes it to be removed in the switch below. cur_client->SetKadState(KS_NONE); } switch (cur_client->GetKadState()) { case KS_QUEUED_FWCHECK: case KS_QUEUED_FWCHECK_UDP: //Another client asked us to try to connect to them to check their firewalled status. cur_client->TryToConnect(true); break; case KS_CONNECTING_FWCHECK: //Ignore this state as we are just waiting for results. break; case KS_FWCHECK_UDP: case KS_CONNECTING_FWCHECK_UDP: // We want a UDP firewallcheck from this client and are just waiting to get connected to send the request break; case KS_CONNECTED_FWCHECK: //We successfully connected to the client. //We now send a ack to let them know. if (cur_client->GetKadVersion() >= 7) { // The result is now sent per TCP instead of UDP, because this will fail if our intern port is unreachable. // But we want the TCP testresult regardless if UDP is firewalled, the new UDP state and test takes care of the rest wxASSERT(cur_client->IsConnected()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_KAD_FWTCPCHECK_ACK to ") + Uint32toStringIP(cur_client->GetIP())); CPacket *packet = new CPacket(OP_KAD_FWTCPCHECK_ACK, 0, OP_EMULEPROT); cur_client->SafeSendPacket(packet); } else { AddDebugLogLineN(logClientKadUDP, wxT("KadFirewalledAckRes to ") + Uint32_16toStringIP_Port(cur_client->GetIP(), cur_client->GetKadPort())); Kademlia::CKademlia::GetUDPListener()->SendNullPacket(KADEMLIA_FIREWALLED_ACK_RES, wxUINT32_SWAP_ALWAYS(cur_client->GetIP()), cur_client->GetKadPort(), 0, NULL); } //We are done with this client. Set Kad status to KS_NONE and it will be removed in the next cycle. cur_client->SetKadState(KS_NONE); break; case KS_INCOMING_BUDDY: //A firewalled client wants us to be his buddy. //If we already have a buddy, we set Kad state to KS_NONE and it's removed in the next cycle. //If not, this client will change to KS_CONNECTED_BUDDY when it connects. if( m_nBuddyStatus == Connected ) { cur_client->SetKadState(KS_NONE); } break; case KS_QUEUED_BUDDY: //We are firewalled and want to request this client to be a buddy. //But first we check to make sure we are not already trying another client. //If we are not already trying. We try to connect to this client. //If we are already connected to a buddy, we set this client to KS_NONE and it's removed next cycle. //If we are trying to connect to a buddy, we just ignore as the one we are trying may fail and we can then try this one. if( m_nBuddyStatus == Disconnected ) { buddy = Connecting; m_nBuddyStatus = Connecting; cur_client->SetKadState(KS_CONNECTING_BUDDY); cur_client->TryToConnect(true); Notify_ServerUpdateED2KInfo(); } else { if( m_nBuddyStatus == Connected ) { cur_client->SetKadState(KS_NONE); } } break; case KS_CONNECTING_BUDDY: //We are trying to connect to this client. //Although it should NOT happen, we make sure we are not already connected to a buddy. //If we are we set to KS_NONE and it's removed next cycle. //But if we are not already connected, make sure we set the flag to connecting so we know //things are working correctly. if( m_nBuddyStatus == Connected ) { cur_client->SetKadState(KS_NONE); } else { wxASSERT( m_nBuddyStatus == Connecting ); buddy = Connecting; } break; case KS_CONNECTED_BUDDY: //A potential connected buddy client wanting to me in the Kad network //We set our flag to connected to make sure things are still working correctly. buddy = Connected; //If m_nBuddyStatus is not connected already, we set this client as our buddy! if( m_nBuddyStatus != Connected ) { m_pBuddy.Link(cur_client CLIENT_DEBUGSTRING("CClientList::Process KS_CONNECTED_BUDDY m_pBuddy.Link")); m_nBuddyStatus = Connected; Notify_ServerUpdateED2KInfo(); } if( m_pBuddy.GetClient() == cur_client && theApp->IsFirewalled() && cur_client->SendBuddyPingPong() ) { cur_client->SendBuddyPing(); } break; default: RemoveFromKadList(cur_client); } } //We either never had a buddy, or lost our buddy.. if( buddy == Disconnected ) { if( m_nBuddyStatus != Disconnected || m_pBuddy.IsLinked() ) { if( Kademlia::CKademlia::IsRunning() && theApp->IsFirewalled() && Kademlia::CUDPFirewallTester::IsFirewalledUDP(true) ) { //We are a lowID client and we just lost our buddy. //Go ahead and instantly try to find a new buddy. Kademlia::CKademlia::GetPrefs()->SetFindBuddy(); } m_pBuddy.Unlink(); m_nBuddyStatus = Disconnected; Notify_ServerUpdateED2KInfo(); } } if ( Kademlia::CKademlia::IsConnected() ) { // we only need a buddy if direct callback is not available if(Kademlia::CKademlia::IsFirewalled() && Kademlia::CUDPFirewallTester::IsFirewalledUDP(true)) { // TODO: Kad buddies won't work with RequireCrypt, so it is disabled for now, but should (and will) // be fixed in later version // Update: buddy connections themselves support obfuscation properly since eMule 0.49a and aMule SVN 2008-05-09 // (this makes it work fine if our buddy uses require crypt), however callback requests don't support it yet so we // wouldn't be able to answer callback requests with RequireCrypt, protocolchange intended for eMule 0.49b if(m_nBuddyStatus == Disconnected && Kademlia::CKademlia::GetPrefs()->GetFindBuddy() && !thePrefs::IsClientCryptLayerRequired()) { AddDebugLogLineN(logKadMain, wxT("Starting BuddySearch")); //We are a firewalled client with no buddy. We have also waited a set time //to try to avoid a false firewalled status.. So lets look for a buddy.. if (!Kademlia::CSearchManager::PrepareLookup(Kademlia::CSearch::FINDBUDDY, true, Kademlia::CUInt128(true) ^ (Kademlia::CKademlia::GetPrefs()->GetKadID()))) { //This search ID was already going. Most likely reason is that //we found and lost our buddy very quickly and the last search hadn't //had time to be removed yet. Go ahead and set this to happen again //next time around. Kademlia::CKademlia::GetPrefs()->SetFindBuddy(); } } } else { if (m_pBuddy.IsLinked()) { //Lets make sure that if we have a buddy, they are firewalled! //If they are also not firewalled, then someone must have fixed their firewall or stopped saturating their line.. //We just set the state of this buddy to KS_NONE and things will be cleared up with the next cycle. if( !m_pBuddy.HasLowID() ) { m_pBuddy.GetClient()->SetKadState(KS_NONE); } } } } else { if (m_pBuddy.IsLinked()) { //We are not connected anymore. Just set this buddy to KS_NONE and things will be cleared out on next cycle. m_pBuddy.GetClient()->SetKadState(KS_NONE); } } CleanUpClientList(); ProcessDirectCallbackList(); } void CClientList::AddBannedClient(uint32 dwIP) { m_bannedList[dwIP] = ::GetTickCount(); theStats::AddBannedClient(); } bool CClientList::IsBannedClient(uint32 dwIP) { ClientMap::iterator it = m_bannedList.find( dwIP ); if ( it != m_bannedList.end() ) { if ( it->second + CLIENTBANTIME > ::GetTickCount() ) { return true; } else { RemoveBannedClient(dwIP); } } return false; } void CClientList::RemoveBannedClient(uint32 dwIP) { m_bannedList.erase(dwIP); theStats::RemoveBannedClient(); } void CClientList::FilterQueues() { // Filter client list for ( IDMap::iterator it = m_ipList.begin(); it != m_ipList.end(); ) { IDMap::iterator tmp = it++; // Don't change this to a ++it! CUpDownClient* client = tmp->second.GetClient(); if ( theApp->ipfilter->IsFiltered(client->GetConnectIP())) { client->Disconnected(wxT("Filtered by IPFilter")); client->Safe_Delete(); } } } CClientList::SourceList CClientList::GetClientsByHash( const CMD4Hash& hash ) { SourceList results; // Find all items with the specified hash std::pair range = m_hashList.equal_range( hash ); for ( ; range.first != range.second; ++range.first) { results.push_back( range.first->second ); } return results; } CClientList::SourceList CClientList::GetClientsByIP( unsigned long ip ) { SourceList results; // Find all items with the specified hash std::pair range = m_ipList.equal_range( ip ); for ( ; range.first != range.second; range.first++ ) { results.push_back( range.first->second ); } return results; } const CClientList::IDMap& CClientList::GetClientList() { return m_clientList; } void CClientList::AddDeadSource(const CUpDownClient* client) { m_deadSources.AddDeadSource( client ); } bool CClientList::IsDeadSource(const CUpDownClient* client) { return m_deadSources.IsDeadSource( client ); } bool CClientList::SendChatMessage(uint64 client_id, const wxString& message) { CUpDownClient* client = FindClientByIP(IP_FROM_GUI_ID(client_id), PORT_FROM_GUI_ID(client_id)); AddDebugLogLineN( logClient, wxT("Trying to Send Message.") ); if (client) { AddDebugLogLineN( logClient, wxT("Sending.") ); } else { AddDebugLogLineC( logClient, CFormat( wxT("No client (GUI_ID %lli [%s:%llu]) found in CClientList::SendChatMessage(). Creating") ) % client_id % Uint32toStringIP(IP_FROM_GUI_ID(client_id)) % PORT_FROM_GUI_ID(client_id) ); client = new CUpDownClient(PORT_FROM_GUI_ID(client_id),IP_FROM_GUI_ID(client_id),0,0,NULL, true, true); AddClient(client); } return client->SendChatMessage(message); } void CClientList::SetChatState(uint64 client_id, uint8 state) { CUpDownClient* client = FindClientByIP(IP_FROM_GUI_ID(client_id), PORT_FROM_GUI_ID(client_id)); if (client) { client->SetChatState(state); } } /* Kad stuff */ bool CClientList::RequestTCP(Kademlia::CContact* contact, uint8_t connectOptions) { uint32_t nContactIP = wxUINT32_SWAP_ALWAYS(contact->GetIPAddress()); // don't connect ourself if (theApp->GetPublicIP() == nContactIP && thePrefs::GetPort() == contact->GetTCPPort()) { return false; } CUpDownClient* pNewClient = FindClientByIP(nContactIP, contact->GetTCPPort()); if (!pNewClient) { //#warning Do we actually have to check friendstate here? pNewClient = new CUpDownClient(contact->GetTCPPort(), contact->GetIPAddress(), 0, 0, NULL, false, true); } else if (pNewClient->GetKadState() != KS_NONE) { return false; // already busy with this client in some way (probably buddy stuff), don't mess with it } //Add client to the lists to be processed. pNewClient->SetKadPort(contact->GetUDPPort()); pNewClient->SetKadState(KS_QUEUED_FWCHECK); if (contact->GetClientID() != 0) { uint8_t ID[16]; contact->GetClientID().ToByteArray(ID); pNewClient->SetUserHash(CMD4Hash(ID)); pNewClient->SetConnectOptions(connectOptions, true, false); } AddToKadList(pNewClient); // This was a direct adding, but I like to check duplicates //This method checks if this is a dup already. AddClient(pNewClient); return true; } void CClientList::RequestBuddy(Kademlia::CContact* contact, uint8_t connectOptions) { uint32_t nContactIP = wxUINT32_SWAP_ALWAYS(contact->GetIPAddress()); // Don't connect to ourself if (theApp->GetPublicIP() == nContactIP && thePrefs::GetPort() == contact->GetTCPPort()) { return; } CUpDownClient* pNewClient = FindClientByIP(nContactIP, contact->GetTCPPort()); if (!pNewClient) { pNewClient = new CUpDownClient(contact->GetTCPPort(), contact->GetIPAddress(), 0, 0, NULL, false, true ); } else if (pNewClient->GetKadState() != KS_NONE) { return; // already busy with this client in some way (probably fw stuff), don't mess with it } else if (IsKadFirewallCheckIP(nContactIP)) { // doing a kad firewall check with this IP, abort AddDebugLogLineN(logKadMain, wxT("Kad TCP firewallcheck / Buddy request collision for IP ") + Uint32toStringIP(nContactIP)); return; } //Add client to the lists to be processed. pNewClient->SetKadPort(contact->GetUDPPort()); pNewClient->SetKadState(KS_QUEUED_BUDDY); uint8_t ID[16]; contact->GetClientID().ToByteArray(ID); pNewClient->SetUserHash(CMD4Hash(ID)); pNewClient->SetConnectOptions(connectOptions, true, false); AddToKadList(pNewClient); //This method checks if this is a dup already. AddClient(pNewClient); } bool CClientList::IncomingBuddy(Kademlia::CContact* contact, Kademlia::CUInt128* buddyID) { uint32_t nContactIP = wxUINT32_SWAP_ALWAYS(contact->GetIPAddress()); //If aMule already knows this client, abort this.. It could cause conflicts. //Although the odds of this happening is very small, it could still happen. if (FindClientByIP(nContactIP, contact->GetTCPPort())) { return false; } else if (IsKadFirewallCheckIP(nContactIP)) { // doing a kad firewall check with this IP, abort AddDebugLogLineN(logKadMain, wxT("Kad TCP firewallcheck / Buddy request collision for IP ") + Uint32toStringIP(nContactIP)); return false; } if (theApp->GetPublicIP() == nContactIP && thePrefs::GetPort() == contact->GetTCPPort()) { return false; // don't connect ourself } //Add client to the lists to be processed. CUpDownClient* pNewClient = new CUpDownClient(contact->GetTCPPort(), contact->GetIPAddress(), 0, 0, NULL, false, true ); pNewClient->SetKadPort(contact->GetUDPPort()); pNewClient->SetKadState(KS_INCOMING_BUDDY); byte ID[16]; contact->GetClientID().ToByteArray(ID); pNewClient->SetUserHash(CMD4Hash(ID)); buddyID->ToByteArray(ID); pNewClient->SetBuddyID(ID); AddToKadList(pNewClient); AddClient(pNewClient); return true; } void CClientList::RemoveFromKadList(CUpDownClient* torem) { wxCHECK_RET(torem, wxT("NULL pointer in RemoveFromKadList")); if (m_KadSources.erase(CCLIENTREF(torem, wxEmptyString))) { if (torem == m_pBuddy.GetClient()) { m_pBuddy.Unlink(); m_nBuddyStatus = Disconnected; Notify_ServerUpdateED2KInfo(); } } } void CClientList::AddToKadList(CUpDownClient* toadd) { wxCHECK_RET(toadd, wxT("NULL pointer in AddToKadList")); m_KadSources.insert(CCLIENTREF(toadd, wxT("CClientList::AddToKadList"))); // This will take care of duplicates. } bool CClientList::DoRequestFirewallCheckUDP(const Kademlia::CContact& contact) { // first make sure we don't know this IP already from somewhere if (IsIPAlreadyKnown(wxUINT32_SWAP_ALWAYS(contact.GetIPAddress()))) { return false; } // fine, just create the client object, set the state and wait // TODO: We don't know the client's userhash, this means we cannot build an obfuscated connection, which // again mean that the whole check won't work on "Require Obfuscation" setting, which is not a huge problem, // but certainly not nice. Only somewhat acceptable way to solve this is to use the KadID instead. CUpDownClient* pNewClient = new CUpDownClient(contact.GetTCPPort(), contact.GetIPAddress(), 0, 0, NULL, false, true); pNewClient->SetKadState(KS_QUEUED_FWCHECK_UDP); AddDebugLogLineN(logClient, wxT("Selected client for UDP Firewallcheck: ") + KadIPToString(contact.GetIPAddress())); AddToKadList(pNewClient); AddClient(pNewClient); wxASSERT(!pNewClient->SupportsDirectUDPCallback()); return true; } void CClientList::CleanUpClientList() { // We remove clients which are not needed any more by time // this check is also done on CUpDownClient::Disconnected, however it will not catch all // cases (if a client changes the state without beeing connected // // Adding this check directly to every point where any state changes would be more effective, // is however not compatible with the current code, because there are points where a client has // no state for some code lines and the code is also not prepared that a client object gets // invalid while working with it (aka setting a new state) // so this way is just the easy and safe one to go (as long as amule is basically single threaded) const uint32 cur_tick = ::GetTickCount(); if (m_dwLastClientCleanUp + CLIENTLIST_CLEANUP_TIME < cur_tick ){ m_dwLastClientCleanUp = cur_tick; DEBUG_ONLY( uint32 cDeleted = 0; ) IDMap::iterator current_it = m_clientList.begin(); while (current_it != m_clientList.end()) { CUpDownClient* pCurClient = current_it->second.GetClient(); ++current_it; // Won't be used till while loop again // Don't delete sources coming from source seeds for 10 mins, // to give them a chance to connect and become a useful source. if (pCurClient->GetSourceFrom() == SF_SOURCE_SEEDS && cur_tick - (uint32)theStats::GetStartTime() < MIN2MS(10)) continue; if ((pCurClient->GetUploadState() == US_NONE || (pCurClient->GetUploadState() == US_BANNED && !pCurClient->IsBanned())) && pCurClient->GetDownloadState() == DS_NONE && pCurClient->GetChatState() == MS_NONE && pCurClient->GetKadState() == KS_NONE && pCurClient->GetSocket() == NULL) { DEBUG_ONLY( cDeleted++; ) pCurClient->Disconnected(wxT("Removed during ClientList cleanup.")); pCurClient->Safe_Delete(); #ifdef __DEBUG__ } else { if (!(pCurClient->GetUploadState() == US_NONE || (pCurClient->GetUploadState() == US_BANNED && !pCurClient->IsBanned()))) { AddDebugLogLineN(logProxy, CFormat(wxT("Debug: Not deleted client %x with up state: %i ")) % (long int)pCurClient % pCurClient->GetUploadState()); } if (!(pCurClient->GetDownloadState() == DS_NONE)) { AddDebugLogLineN(logProxy, CFormat(wxT("Debug: Not deleted client %x with down state: %i ")) % (long int)pCurClient % pCurClient->GetDownloadState()); } if (!(pCurClient->GetChatState() == MS_NONE)) { AddDebugLogLineN(logProxy, CFormat(wxT("Debug: Not deleted client %x with chat state: %i ")) % (long int)pCurClient % pCurClient->GetChatState()); } if (!(pCurClient->GetKadState() == KS_NONE)) { AddDebugLogLineN(logProxy, CFormat(wxT("Debug: Not deleted client %x with kad state: %i ip: %s")) % (long int)pCurClient % (int)pCurClient->GetKadState() % pCurClient->GetFullIP()); } if (!(pCurClient->GetSocket() == NULL)) { AddDebugLogLineN(logProxy, CFormat(wxT("Debug: Not deleted client %x: has socket")) % (long int)pCurClient); } AddDebugLogLineN(logProxy, CFormat(wxT("Debug: Not deleted client %x with kad version: %i")) % (long int)pCurClient % pCurClient->GetKadVersion()); #endif } } AddDebugLogLineN(logClient, CFormat(wxT("Cleaned ClientList, removed %i not used known clients")) % cDeleted); } } void CClientList::AddKadFirewallRequest(uint32 ip) { uint32 ticks = ::GetTickCount(); IpAndTicks add = { ip, ticks }; m_firewallCheckRequests.push_front(add); while (!m_firewallCheckRequests.empty()) { if (ticks - m_firewallCheckRequests.back().inserted > SEC2MS(180)) { m_firewallCheckRequests.pop_back(); } else { break; } } } bool CClientList::IsKadFirewallCheckIP(uint32 ip) const { uint32 ticks = ::GetTickCount(); for (IpAndTicksList::const_iterator it = m_firewallCheckRequests.begin(); it != m_firewallCheckRequests.end(); ++it) { if (it->ip == ip && ticks - it->inserted < SEC2MS(180)) { return true; } } return false; } void CClientList::AddDirectCallbackClient(CUpDownClient* toAdd) { wxASSERT(toAdd->GetDirectCallbackTimeout() != 0); if (toAdd->HasBeenDeleted()) { return; } for (DirectCallbackList::const_iterator it = m_currentDirectCallbacks.begin(); it != m_currentDirectCallbacks.end(); ++it) { if (it->GetClient() == toAdd) { wxFAIL; // might happen very rarely on multiple connection tries, could be fixed in the client class, till then it's not much of a problem though return; } } m_currentDirectCallbacks.push_back(CCLIENTREF(toAdd, wxT("CClientList::AddDirectCallbackClient"))); } void CClientList::ProcessDirectCallbackList() { // we do check if any direct callbacks have timed out by now const uint32_t cur_tick = ::GetTickCount(); for (DirectCallbackList::iterator it = m_currentDirectCallbacks.begin(); it != m_currentDirectCallbacks.end();) { DirectCallbackList::iterator it2 = it++; CUpDownClient* curClient = it2->GetClient(); if (curClient->GetDirectCallbackTimeout() < cur_tick) { wxASSERT(curClient->GetDirectCallbackTimeout() != 0); // TODO LOGREMOVE //DebugLog(_T("DirectCallback timed out (%s)"), pCurClient->DbgGetClientInfo()); m_currentDirectCallbacks.erase(it2); if (curClient->Disconnected(wxT("Direct Callback Timeout"))) { curClient->Safe_Delete(); } } } } void CClientList::AddTrackCallbackRequests(uint32_t ip) { uint32_t now = ::GetTickCount(); IpAndTicks add = { ip, now }; m_directCallbackRequests.push_front(add); while (!m_directCallbackRequests.empty()) { if (now - m_directCallbackRequests.back().inserted > MIN2MS(3)) { m_directCallbackRequests.pop_back(); } else { break; } } } bool CClientList::AllowCallbackRequest(uint32_t ip) const { uint32_t now = ::GetTickCount(); for (IpAndTicksList::const_iterator it = m_directCallbackRequests.begin(); it != m_directCallbackRequests.end(); ++it) { if (it->ip == ip && now - it->inserted < MIN2MS(3)) { return false; } } return true; } uint32 CClientList::GetBuddyIP() { return GetBuddy()->GetIP(); } uint16 CClientList::GetBuddyPort() { return GetBuddy()->GetUDPPort(); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ClientList.h0000644000175000017500000003010712611472361020516 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CLIENTLIST_H #define CLIENTLIST_H #include "DeadSourceList.h" // Needed for CDeadSourceList #include "ClientRef.h" #include #include class CUpDownClient; class CClientTCPSocket; class CDeletedClient; class CMD4Hash; namespace Kademlia { class CContact; class CUInt128; } enum buddyState { Disconnected, Connecting, Connected }; #define BAN_CLEANUP_TIME 1200000 // 20 min /** * This class takes care of managing existing clients. * * This class tracks a number of attributes related to existing and deleted * clients. Among other things, it keeps track of existing, banned, dead and * dying clients, as well as offers support for matching new client-instances * against already exist clients to avoid duplicates. */ class CClientList { public: /** * Constructor. */ CClientList(); /** * Destructor. */ ~CClientList(); /** * Adds a client to the global list of clients. * * @param toadd The new client. */ void AddClient( CUpDownClient* toadd ); /** * Removes a client from the client lists. * * @param client The client to be removed. * * To be called from CUpDownClient::Safe_Delete only. */ void RemoveClient( CUpDownClient* client ); /** * Updates the recorded IP of the specified client. * * @param client The client to have its entry updated. * @param newIP The new IP adress of the client. * * This function is to be called before the client actually changes its * IP-address, and will update the old entry with the new value. There * will only be added an entry if the new IP isn't zero. */ void UpdateClientIP( CUpDownClient* client, uint32 newIP ); /** * Updates the recorded ID of the specified client. * * @param client The client to have its entry updated. * @param newID The new ID of the client. * * This function is to be called before the client actually changes its * ID, and will update the old entry with the new value. Unlike the other * two functions, this function will always ensure that there is an entry * for the client, regardless of the value of newID. */ void UpdateClientID( CUpDownClient* client, uint32 newID ); /** * Updates the recorded hash of the specified client. * * @param client The client to have its entry updated. * @param newHash The new user-hash. * * This function is to be called before the client actually changes its * user-hash, and will update the old entry with the new value. There will * only be added an entry if the new hash is valid. */ void UpdateClientHash( CUpDownClient* client, const CMD4Hash& newHash ); /** * Returns the number of listed clients. */ uint32 GetClientCount() const; /** * Deletes all tracked clients. */ void DeleteAll(); /** * Replaces a new client-instance with the an already existing client, if one such exist. * * @param client A pointer to the pointer of the new instance. * @param sender The socket assosiated with the new instance. * * Call this function when a new client-instance has been created. This function will then * compare it against all existing clients and see if we already have an instance matching * the new one. If that is the case, it will delete the new instance and set the pointer to * the existing one. */ bool AttachToAlreadyKnown( CUpDownClient** client, CClientTCPSocket* sender ); /** * Finds a client with the specified ip and port. * * @param clientip The IP of the client to find. * @param port The port used by the client. */ CUpDownClient* FindClientByIP( uint32 clientip, uint16 port ); /** * Finds a client with the specified ip. * * @param clientip The IP of the client to find. * * Returns the first client found if there are several with same ip. */ CUpDownClient* FindClientByIP( uint32 clientip ); /** * Finds a client with the specified ECID. * * @param clientip The IP of the client to find. * */ CUpDownClient* FindClientByECID(uint32 ecid) const; //! The list-type used to store clients IPs and other information typedef std::map ClientMap; /** * Adds a client to the list of tracked clients. * * @param toadd The client to track. * * This function is used to keep track of clients after they * have been deleted and makes it possible to spot port or hash * changes. */ void AddTrackClient(CUpDownClient* toadd); /** * Returns the number of tracked client. * * @param dwIP The IP-adress which of the clients. * @return The number of clients tracked at the specifed IP. */ uint16 GetClientsFromIP(uint32 dwIP); /** * Checks if a client has changed its user-hash. * * @param dwIP The IP of the client. * @param nPort The port of the client. * @param pNewHash The userhash assosiated with the client. * */ bool ComparePriorUserhash( uint32 dwIP, uint16 nPort, void* pNewHash ); /** * Bans an IP address for 2 hours. * * @param dwIP The IP from which all clients will be banned. */ void AddBannedClient(uint32 dwIP); /** * Checks if a client has been banned. * * @param dwIP The IP to check. * @return True if the IP is banned, false otherwise. */ bool IsBannedClient(uint32 dwIP); /** * Unbans an IP address, if it has been banned. * * @param dwIP The IP address to unban. */ void RemoveBannedClient(uint32 dwIP); /** * Main loop. * * This function takes care of cleaning the various lists and deleting * pending clients on the deletion-queue. */ void Process(); /** * This function removes all clients filtered by the current IPFilter. * * Call this function after changing the current IPFiler list, to ensure * that no client-connections to illegal IPs exist. These would otherwise * be allowed to exist, bypassing the IPFilter. */ void FilterQueues(); //! The type of the list used to store client-pointers for a couple of tasks. typedef std::deque SourceList; /** * Returns a list of clients with the specified user-hash. * * @param hash The userhash to search for. * * This function will return a list of clients with the specified userhash, * provided that the hash is a valid non-empty userhash. Empty hashes will * simply result in nothing being found. */ SourceList GetClientsByHash( const CMD4Hash& hash ); /** * Returns a list of clients with the specified IP. * * @param ip The IP-address to search for. * * This function will return a list of clients with the specified IP, * provided that the IP is a non-zero value. A value of zero will not * result in any results. */ SourceList GetClientsByIP( unsigned long ip ); //! The type of the lists used to store IPs and IDs. typedef std::multimap IDMap; //! The pairs of the IP/ID list. typedef std::pair IDMapPair; /** * Returns a list of all clients. * * @return The complete list of clients. */ const IDMap& GetClientList(); /** * Adds a source to the list of dead sources. * * @param client The source to be recorded as dead. */ void AddDeadSource(const CUpDownClient* client); /** * Checks if a source is recorded as being dead. * * @param client The client to evaluate. * @return True if dead, false otherwise. * * Sources that are dead are not to be considered valid * sources and should not be added to partfiles. */ bool IsDeadSource(const CUpDownClient* client); /** * Sends a message to a client, identified by a GUI_ID * * @return Success */ bool SendChatMessage(uint64 client_id, const wxString& message); /** * Stops a chat session with a client. * */ void SetChatState(uint64 client_id, uint8 state); uint8 GetBuddyStatus() const {return m_nBuddyStatus;} // This must be used on CreateKadSourceLink and if we ever add the columns // on shared files control. CUpDownClient* GetBuddy() { return m_pBuddy.GetClient(); } uint32 GetBuddyIP(); uint16 GetBuddyPort(); bool RequestTCP(Kademlia::CContact* contact, uint8_t connectOptions); void RequestBuddy(Kademlia::CContact* contact, uint8_t connectOptions); bool IncomingBuddy(Kademlia::CContact* contact, Kademlia::CUInt128* buddyID); void RemoveFromKadList(CUpDownClient* torem); void AddToKadList(CUpDownClient* toadd); bool DoRequestFirewallCheckUDP(const Kademlia::CContact& contact); void AddKadFirewallRequest(uint32 ip); bool IsKadFirewallCheckIP(uint32 ip) const; // Direct Callback list void AddDirectCallbackClient(CUpDownClient *toAdd); void RemoveDirectCallback(CUpDownClient *toRemove) { m_currentDirectCallbacks.remove(CCLIENTREF(toRemove, wxEmptyString)); } void AddTrackCallbackRequests(uint32_t ip); bool AllowCallbackRequest(uint32_t ip) const; protected: /* * Avoids unwanted clients to be forever in the client list */ void CleanUpClientList(); void ProcessDirectCallbackList(); private: /** * Helperfunction which finds a client matching the specified client. * * @param client The client to search for. * @return The matching client or NULL. * * This functions searches through the list of clients and finds the first match * using the same checks as CUpDownClient::Compare, but without the overhead. */ CUpDownClient* FindMatchingClient( CUpDownClient* client ); /** * Check if we already know this IP. * * This function is used to determine if the given IP address * is already known. * * @param ip The IP address to check. */ bool IsIPAlreadyKnown(uint32_t ip); /** * Helperfunction which removes the client from the IP-list. */ void RemoveIPFromList( CUpDownClient* client ); /** * Helperfunction which removes the client from the ID-list. */ bool RemoveIDFromList( CUpDownClient* client ); /** * Helperfunction which removes the client from the hash-list. */ void RemoveHashFromList( CUpDownClient* client ); //! The type of the list used to store user-hashes. typedef std::multimap HashMap; //! The pairs of the Hash-list. typedef std::pair HashMapPair; //! The map of clients with valid hashes HashMap m_hashList; //! The map of clients with valid IPs IDMap m_ipList; //! The full lists of clients IDMap m_clientList; //! This is the map of banned clients. ClientMap m_bannedList; //! This variable is used to keep track of the last time the banned-list was pruned. uint32 m_dwLastBannCleanUp; //! This is the map of tracked clients. std::map m_trackedClientsList; //! This keeps track of the last time the tracked-list was pruned. uint32 m_dwLastTrackedCleanUp; //! This keeps track of the last time the client-list was pruned. uint32 m_dwLastClientCleanUp; //! List of unusable sources. CDeadSourceList m_deadSources; /* Kad Stuff */ CClientRefSet m_KadSources; CClientRef m_pBuddy; uint8 m_nBuddyStatus; typedef struct { uint32 ip; uint32 inserted; } IpAndTicks; typedef std::list IpAndTicksList; IpAndTicksList m_firewallCheckRequests; typedef CClientRefList DirectCallbackList; DirectCallbackList m_currentDirectCallbacks; IpAndTicksList m_directCallbackRequests; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ClientRef.cpp0000644000175000017500000001267212611472361020661 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2003-2011 Stu Redman ( sturedman@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ClientRef.h" #include "amule.h" // Needed fot theApp #ifdef CLIENT_GUI #include "UpDownClientEC.h" // Needed for CUpDownClient #else #include "updownclient.h" // Needed for CUpDownClient #endif #ifdef DEBUG_ZOMBIE_CLIENTS #define MFROM m_from #define ASSIGN_MFROM(a) m_from = a #else #define MFROM #define ASSIGN_MFROM(a) #endif CClientRef::CClientRef(const CClientRef& ref) { m_client = ref.m_client; ASSIGN_MFROM(wxT("copy ctor of ") + ref.m_from); if (m_client) { m_client->Link(MFROM); } } CClientRef::CClientRef(CUpDownClient * client LINKED_FROM) { m_client = client; ASSIGN_MFROM(from); if (m_client) { m_client->Link(MFROM); } } void CClientRef::Link(CUpDownClient * client LINKED_FROM) { Unlink(); m_client = client; ASSIGN_MFROM(from); if (m_client) { m_client->Link(MFROM); } } void CClientRef::Unlink() { if (m_client) { m_client->Unlink(MFROM); m_client = NULL; } } // in amulegui clients are never deleted except when they are marked as removed through EC #ifndef CLIENT_GUI CUpDownClient * CClientRef::GetClientChecked() { if (m_client && m_client->HasBeenDeleted()) { m_client->Unlink(MFROM); m_client = NULL; } return m_client; } CClientRef& CClientRef::GetRef() { if (m_client && m_client->HasBeenDeleted()) { m_client->Unlink(MFROM); m_client = NULL; } return *this; } void CClientRef::Safe_Delete() { CUpDownClient * client = m_client; if (client) { Unlink(); client->Safe_Delete(); } } #endif #define WRAPC(func) CClientRef::func() const { return m_client->func(); } uint32 WRAPC(ECID) bool WRAPC(ExtProtocolAvailable) uint16 WRAPC(GetAvailablePartCount) const wxString& WRAPC(GetClientFilename) const wxString& WRAPC(GetClientModString) const wxString& WRAPC(GetClientOSInfo) uint8 WRAPC(GetClientSoft) const wxString& WRAPC(GetClientVerString) uint64 WRAPC(GetDownloadedTotal) uint8 WRAPC(GetDownloadState) CFriend* WRAPC(GetFriend) bool WRAPC(GetFriendSlot) wxString WRAPC(GetFullIP) uint32 WRAPC(GetIP) uint16 WRAPC(GetKadPort) float WRAPC(GetKBpsDown) uint16 WRAPC(GetLastDownloadingPart) uint16 WRAPC(GetNextRequestedPart) uint8 WRAPC(GetObfuscationStatus) uint16 WRAPC(GetOldRemoteQueueRank) const BitVector& WRAPC(GetPartStatus) uint16 WRAPC(GetRemoteQueueRank) CPartFile* WRAPC(GetRequestFile) uint32 WRAPC(GetScore) double WRAPC(GetScoreRatio) uint32 WRAPC(GetServerIP) const wxString WRAPC(GetServerName) uint16 WRAPC(GetServerPort) const wxString& WRAPC(GetSoftStr) const wxString& WRAPC(GetSoftVerStr) int WRAPC(GetSourceFrom) uint64 WRAPC(GetTransferredDown) uint64 WRAPC(GetTransferredUp) uint32 WRAPC(GetUploadDatarate) uint64 WRAPC(GetUploadedTotal) const CKnownFile* WRAPC(GetUploadFile) uint16 WRAPC(GetUploadQueueWaitingPosition) uint8 WRAPC(GetUploadState) size_t WRAPC(GetUpPartCount) uint32 WRAPC(GetUserIDHybrid) const wxString& WRAPC(GetUserName) uint16_t WRAPC(GetUserPort) const CMD4Hash& WRAPC(GetUserHash) uint32 WRAPC(GetVersion) bool WRAPC(HasDisabledSharedFiles) bool WRAPC(HasLowID) bool WRAPC(IsBadGuy) bool WRAPC(IsFriend) bool WRAPC(IsIdentified) bool WRAPC(IsRemoteQueueFull) void WRAPC(RequestSharedFileList) bool CClientRef::IsUpPartAvailable(uint16 iPart) const { return m_client->IsUpPartAvailable(iPart); } void CClientRef::SetFriend(CFriend* newfriend) const { m_client->SetFriend(newfriend); } void CClientRef::SetFriendSlot(bool bNV) const { m_client->SetFriendSlot(bNV); } #ifndef CLIENT_GUI void WRAPC(ClearUploadFileID) uint16 WRAPC(GetUDPPort) void CClientRef::SetCommentDirty(bool bDirty) const { m_client->SetCommentDirty(bDirty); } #endif bool CClientRef::SwapToAnotherFile(bool bIgnoreNoNeeded, bool ignoreSuspensions, bool bRemoveCompletely, CPartFile* toFile) const { return m_client->SwapToAnotherFile(bIgnoreNoNeeded, ignoreSuspensions, bRemoveCompletely, toFile); } wxString CClientRef::GetSecureIdentTextStatus() const { wxString ret; if (theApp->CryptoAvailable()) { if (m_client->SUINotSupported()) { ret = _("Not supported"); } else if (m_client->SUIFailed()) { ret = _("Failed"); } else if (m_client->SUINeeded()) { ret = _("Not complete"); } else if (m_client->IsBadGuy()) { ret = _("Bad Guy"); } else if (m_client->IsIdentified()) { ret = _("Verified - OK"); } } else { ret = _("Not Available"); } return ret; } amule_2.3.1+git20151120.0023527bc2.orig/src/ClientRef.h0000644000175000017500000001370012611472361020317 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2003-2011 Stu Redman ( sturedman@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CLIENTREF_H #define CLIENTREF_H // // Clients are stored in many places. To prevent problems when a client gets deleted // and later a pointer to a deleted client is referenced, clients are now stored in // this class only. It uses reference counting in the client which deletes the client only // after the last reference has been unlinked. // Also the class is used as abstraction layer for the CUpDownClient class. // #include #include #include "Types.h" class CUpDownClient; class CKnownFile; class CPartFile; class CFriend; class BitVector; class CMD4Hash; #ifdef __DEBUG__ #define DEBUG_ZOMBIE_CLIENTS #endif #ifdef DEBUG_ZOMBIE_CLIENTS #define LINKED_FROM , wxString from #define CLIENT_DEBUGSTRING(a) , wxT(a) #define CCLIENTREF(a, b) CClientRef(a, b) #else #define LINKED_FROM #define CLIENT_DEBUGSTRING(a) #define CCLIENTREF(a, b) CClientRef(a) #endif class CClientRef { CUpDownClient * m_client; #ifdef DEBUG_ZOMBIE_CLIENTS wxString m_from; #endif public: CClientRef() { m_client = NULL; } CClientRef(const CClientRef&); CClientRef(CUpDownClient * client LINKED_FROM); CClientRef(const class CEC_UpDownClient_Tag *); ~CClientRef() { Unlink(); } CClientRef& operator = (const CClientRef& ref) { #ifdef DEBUG_ZOMBIE_CLIENTS m_from = wxT("assigned from ") + ref.m_from; Link(ref.m_client, m_from); #else Link(ref.m_client); #endif return *this; } // For sets and maps bool operator < (const CClientRef & other) const { return m_client < other.m_client; } bool operator == (const CClientRef & other) const { return m_client == other.m_client; } bool operator != (const CClientRef & other) const { return m_client != other.m_client; } void swap(CClientRef & other) { CUpDownClient * c = m_client; m_client = other.m_client; other.m_client = c; #ifdef DEBUG_ZOMBIE_CLIENTS m_from.swap(other.m_from); #endif } void Link(CUpDownClient * client LINKED_FROM); void Unlink(); bool IsLinked() const { return m_client != NULL; } // Return client, no matter if it was deleted CUpDownClient * GetClient() const { return m_client; } // Check if client was deleted, if yes unlink and return zero CUpDownClient * GetClientChecked(); // Check if client was deleted, if yes unlink CClientRef& GetRef(); void Safe_Delete(); // Wrapper methods void ClearUploadFileID() const; // only wrapper const uint32 ECID() const; bool ExtProtocolAvailable() const; uint16 GetAvailablePartCount() const; const wxString& GetClientFilename() const; const wxString& GetClientModString() const; const wxString& GetClientOSInfo() const; uint8 GetClientSoft() const; const wxString& GetClientVerString() const; uint64 GetDownloadedTotal() const; uint8 GetDownloadState() const; CFriend* GetFriend() const; bool GetFriendSlot() const; wxString GetFullIP() const; uint16 GetKadPort() const; float GetKBpsDown() const; uint32 GetIP() const; uint16 GetLastDownloadingPart() const; uint16 GetNextRequestedPart() const; uint8 GetObfuscationStatus() const; uint16 GetOldRemoteQueueRank() const; const BitVector& GetPartStatus() const; uint16 GetRemoteQueueRank() const; CPartFile* GetRequestFile() const; uint32 GetScore() const; double GetScoreRatio() const; uint32 GetServerIP() const; const wxString GetServerName() const; uint16 GetServerPort() const; const wxString& GetSoftStr() const; const wxString& GetSoftVerStr() const; int GetSourceFrom() const; // ESourceFrom wxString GetSecureIdentTextStatus() const; uint64 GetTransferredDown() const; uint64 GetTransferredUp() const; uint16 GetUDPPort() const; uint32 GetUploadDatarate() const; uint64 GetUploadedTotal() const; const CKnownFile* GetUploadFile() const; uint16 GetUploadQueueWaitingPosition() const; uint8 GetUploadState() const; size_t GetUpPartCount() const; const CMD4Hash& GetUserHash() const; uint32 GetUserIDHybrid() const; const wxString& GetUserName() const; uint16_t GetUserPort() const; uint32 GetVersion() const; bool HasDisabledSharedFiles() const; bool HasLowID() const; bool IsBadGuy() const; bool IsFriend() const; bool IsIdentified() const; bool IsRemoteQueueFull() const; bool IsUpPartAvailable(uint16 iPart) const; void RequestSharedFileList() const; void SetCommentDirty(bool bDirty = true) const; // only wrapper const void SetFriend(CFriend* newfriend) const; // only wrapper const void SetFriendSlot(bool bNV) const; // only wrapper const bool SwapToAnotherFile(bool bIgnoreNoNeeded, bool ignoreSuspensions, bool bRemoveCompletely, CPartFile* toFile = NULL) const; // only wrapper const }; // efficient std::swap for it namespace std { template<> inline void swap(CClientRef& a, CClientRef& b) { a.swap(b); } } typedef std::list CClientRefList; typedef std::set CClientRefSet; #endif amule_2.3.1+git20151120.0023527bc2.orig/src/ClientTCPSocket.cpp0000644000175000017500000022070312611472361021740 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net )// // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ClientTCPSocket.h" // Interface declarations #include #include #include // Sometimes we reply with UDP packets. #include #include #include #include "Preferences.h" // Needed for thePrefs #include "Packet.h" // Needed for CPacket #include "Statistics.h" // Needed for theStats #include "Logger.h" // Neeed for logRemoteClient #include "updownclient.h" // Needed for CUpDownClient #include // Needed for CFormat #include "amule.h" // Needed for theApp #include "SharedFileList.h" // Needed for CSharedFileList #include "ClientList.h" // Needed for CClientList #include "UploadQueue.h" // Needed for CUploadQueue #include "ClientUDPSocket.h" // Needed for CClientUDPSocket #include "PartFile.h" // Needed for CPartFile #include "MemFile.h" // Needed for CMemFile #include "kademlia/kademlia/Kademlia.h" // Needed for CKademlia::Kademlia #include "kademlia/kademlia/Prefs.h" // Needed for CKademlia::CPrefs #include "DownloadQueue.h" // Needed for CDownloadQueue #include "Server.h" // Needed for CServer #include "ServerList.h" // Needed for CServerList #include "IPFilter.h" // Needed for CIPFilter #include "ListenSocket.h" // Needed for CListenSocket #include "GuiEvents.h" // Needed for Notify_* //#define __PACKET_RECV_DUMP__ //------------------------------------------------------------------------------ // CClientTCPSocketHandler //------------------------------------------------------------------------------ class CClientTCPSocketHandler: public wxEvtHandler { public: CClientTCPSocketHandler() {}; private: void ClientTCPSocketHandler(wxSocketEvent& event); DECLARE_EVENT_TABLE() }; BEGIN_EVENT_TABLE(CClientTCPSocketHandler, wxEvtHandler) EVT_SOCKET(ID_CLIENTTCPSOCKET_EVENT, CClientTCPSocketHandler::ClientTCPSocketHandler) END_EVENT_TABLE() void CClientTCPSocketHandler::ClientTCPSocketHandler(wxSocketEvent& event) { wxSocketBase* baseSocket = event.GetSocket(); // wxASSERT(baseSocket); // Rather want a log message right now. Enough other wx problems. >:( if (!baseSocket) { // WTF? AddDebugLogLineN(logClient, wxT("received bad wxSocketEvent")); return; } CClientTCPSocket *socket = dynamic_cast(baseSocket); wxASSERT(socket); if (!socket) { return; } if (socket->IsDestroying()) { return; } switch(event.GetSocketEvent()) { case wxSOCKET_LOST: socket->OnError(0xFEFF /* SOCKET_LOST is not an error */); break; case wxSOCKET_INPUT: socket->OnReceive(0); break; case wxSOCKET_OUTPUT: socket->OnSend(0); break; case wxSOCKET_CONNECTION: // connection stablished, nothing to do about it? socket->OnConnect(socket->LastError()); break; default: // Nothing should arrive here... wxFAIL; break; } } // // There can be only one. :) // static CClientTCPSocketHandler g_clientReqSocketHandler; //------------------------------------------------------------------------------ // CClientTCPSocket //------------------------------------------------------------------------------ CClientTCPSocket::CClientTCPSocket(CUpDownClient* in_client, const CProxyData *ProxyData) : CEMSocket(ProxyData) { SetClient(in_client); if (in_client) { m_remoteip = wxUINT32_SWAP_ALWAYS(in_client->GetUserIDHybrid()); } else { m_remoteip = 0; } ResetTimeOutTimer(); SetEventHandler(g_clientReqSocketHandler, ID_CLIENTTCPSOCKET_EVENT); SetNotify( wxSOCKET_CONNECTION_FLAG | wxSOCKET_INPUT_FLAG | wxSOCKET_OUTPUT_FLAG | wxSOCKET_LOST_FLAG); Notify(true); theApp->listensocket->AddSocket(this); theApp->listensocket->AddConnection(); } CClientTCPSocket::~CClientTCPSocket() { // remove event handler SetNotify(0); Notify(false); if (m_client) { m_client->SetSocket( NULL ); } m_client = NULL; if (theApp->listensocket && !theApp->listensocket->OnShutdown()) { theApp->listensocket->RemoveSocket(this); } } bool CClientTCPSocket::InitNetworkData() { wxASSERT(!m_remoteip); wxASSERT(!m_client); m_remoteip = GetPeerInt(); MULE_CHECK(m_remoteip, false); if (theApp->ipfilter->IsFiltered(m_remoteip)) { AddDebugLogLineN(logClient, wxT("Denied connection from ") + GetPeer() + wxT("(Filtered IP)")); return false; } else if (theApp->clientlist->IsBannedClient(m_remoteip)) { AddDebugLogLineN(logClient, wxT("Denied connection from ") + GetPeer() + wxT("(Banned IP)")); return false; } else { AddDebugLogLineN(logClient, wxT("Accepted connection from ") + GetPeer()); return true; } } void CClientTCPSocket::ResetTimeOutTimer() { timeout_timer = ::GetTickCount(); } bool CClientTCPSocket::CheckTimeOut() { // 0.42x uint32 uTimeout = GetTimeOut(); if (m_client) { if (m_client->GetKadState() == KS_CONNECTED_BUDDY) { //We originally ignored the timeout here for buddies. //This was a stupid idea on my part. There is now a ping/pong system //for buddies. This ping/pong system now prevents timeouts. //This release will allow lowID clients with KadVersion 0 to remain connected. //But a soon future version needs to allow these older clients to time out to prevent dead connections from continuing. //JOHNTODO: Don't forget to remove backward support in a future release. if ( m_client->GetKadVersion() == 0 ) { return false; } uTimeout += MIN2MS(15); } if (m_client->GetChatState() != MS_NONE) { uTimeout += CONNECTION_TIMEOUT; } } if (::GetTickCount() - timeout_timer > uTimeout){ timeout_timer = ::GetTickCount(); Disconnect(wxT("Timeout")); return true; } return false; } void CClientTCPSocket::SetClient(CUpDownClient* pClient) { m_client = pClient; if (m_client) { m_client->SetSocket( this ); } } void CClientTCPSocket::OnClose(int nErrorCode) { // 0.42x wxASSERT(theApp->listensocket->IsValidSocket(this)); CEMSocket::OnClose(nErrorCode); if (nErrorCode) { Disconnect(CFormat(wxT("Closed: %u")) % nErrorCode); } else { Disconnect(wxT("Close")); } } void CClientTCPSocket::Disconnect(const wxString& strReason) { byConnected = ES_DISCONNECTED; if (m_client) { if (m_client->Disconnected(strReason, true)) { // Somehow, Safe_Delete() is beeing called by Disconnected(), // or any other function that sets m_client to NULL, // so we must check m_client first. if (m_client) { m_client->SetSocket( NULL ); m_client->Safe_Delete(); } } m_client = NULL; } Safe_Delete(); } void CClientTCPSocket::Safe_Delete() { // More paranoia - make sure client is unlinked in any case if (m_client) { m_client->SetSocket( NULL ); m_client = NULL; } // Destroy may be called several times byConnected = ES_DISCONNECTED; Destroy(); } void CClientTCPSocket::Safe_Delete_Client() { if (m_client) { m_client->Safe_Delete(); m_client = NULL; } } bool CClientTCPSocket::ProcessPacket(const byte* buffer, uint32 size, uint8 opcode) { #ifdef __PACKET_RECV_DUMP__ //printf("Rec: OPCODE %x \n",opcode); DumpMem(buffer, size); #endif if (!m_client && opcode != OP_HELLO) { throw wxString(wxT("Asks for something without saying hello")); } else if (m_client && opcode != OP_HELLO && opcode != OP_HELLOANSWER) { m_client->CheckHandshakeFinished(); } switch(opcode) { case OP_HELLOANSWER: { // 0.43b AddDebugLogLineN(logRemoteClient, wxT("Remote Client: OP_HELLOANSWER from ") + m_client->GetFullIP()); theStats::AddDownOverheadOther(size); m_client->ProcessHelloAnswer(buffer, size); // start secure identification, if // - we have received OP_EMULEINFO and OP_HELLOANSWER (old eMule) // - we have received eMule-OP_HELLOANSWER (new eMule) if (m_client->GetInfoPacketsReceived() == IP_BOTH) { m_client->InfoPacketsReceived(); } // Socket might die because of sending in InfoPacketsReceived, so check if (m_client) { m_client->ConnectionEstablished(); } // Socket might die on ConnectionEstablished somehow. Check it. if (m_client) { Notify_SharedCtrlRefreshClient( m_client->ECID() , AVAILABLE_SOURCE); } break; } case OP_HELLO: { // 0.43b theStats::AddDownOverheadOther(size); bool bNewClient = !m_client; if (bNewClient) { // create new client to save standart informations m_client = new CUpDownClient(this); } // Do not move up! AddDebugLogLineN(logRemoteClient, wxT("Remote Client: OP_HELLO from ") + m_client->GetFullIP() ); bool bIsMuleHello = false; try{ bIsMuleHello = m_client->ProcessHelloPacket(buffer, size); } catch(...) { if (bNewClient && m_client) { // Don't let CUpDownClient::Disconnected be processed for a client which is not in the list of clients. m_client->Safe_Delete(); m_client = NULL; } throw; } if (thePrefs::ParanoidFilter() && !IsLowID(m_client->GetUserIDHybrid()) && (GetRemoteIP() != wxUINT32_SWAP_ALWAYS(m_client->GetUserIDHybrid()))) { wxString reason = wxT("Client claims a different IP from the one we received the hello packet from: "); reason += Uint32toStringIP(wxUINT32_SWAP_ALWAYS(m_client->GetUserIDHybrid())) + wxT(" / ") + Uint32toStringIP(GetRemoteIP()); AddDebugLogLineN(logClient, reason); if (bNewClient) { m_client->Safe_Delete(); m_client = NULL; } Disconnect(wxT("Paranoid disconecting: ") + reason); return false; } // if IP is filtered, dont reply but disconnect... if (theApp->ipfilter->IsFiltered(m_client->GetIP())) { if (bNewClient) { m_client->Safe_Delete(); m_client = NULL; } Disconnect(wxT("IPFilter")); return false; } wxASSERT(m_client); // now we check if we know this client already. if yes this socket will // be attached to the known client, the new client will be deleted // and the var. "client" will point to the known client. // if not we keep our new-constructed client ;) if (theApp->clientlist->AttachToAlreadyKnown(&m_client,this)) { // update the old client informations bIsMuleHello = m_client->ProcessHelloPacket(buffer, size); } else { theApp->clientlist->AddClient(m_client); m_client->SetCommentDirty(); } Notify_SharedCtrlRefreshClient( m_client->ECID(), AVAILABLE_SOURCE ); // send a response packet with standart informations if ((m_client->GetHashType() == SO_EMULE) && !bIsMuleHello) { m_client->SendMuleInfoPacket(false); } // Client might die from Sending in SendMuleInfoPacket, so check if ( m_client ) { m_client->SendHelloAnswer(); } // Kry - If the other side supports it, send OS_INFO // Client might die from Sending in SendHelloAnswer, so check if (m_client && m_client->GetOSInfoSupport()) { m_client->SendMuleInfoPacket(false,true); // Send the OS Info tag on the recycled Mule Info } // Client might die from Sending in SendMuleInfoPacket, so check if ( m_client ) { m_client->ConnectionEstablished(); } // start secure identification, if // - we have received eMule-OP_HELLO (new eMule) if (m_client && m_client->GetInfoPacketsReceived() == IP_BOTH) { m_client->InfoPacketsReceived(); } break; } case OP_REQUESTFILENAME: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_REQUESTFILENAME from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); // IP banned, no answer for this request if (m_client->IsBanned()) { break; } if (size >= 16) { if (!m_client->GetWaitStartTime()) { m_client->SetWaitStartTime(); } CMemFile data_in(buffer, size); CMD4Hash reqfilehash = data_in.ReadHash(); CKnownFile *reqfile = theApp->sharedfiles->GetFileByID(reqfilehash); if ( reqfile == NULL ) { reqfile = theApp->downloadqueue->GetFileByID(reqfilehash); if ( !( reqfile != NULL && reqfile->GetFileSize() > PARTSIZE ) ) { break; } } // if we are downloading this file, this could be a new source // no passive adding of files with only one part if (reqfile->IsPartFile() && reqfile->GetFileSize() > PARTSIZE) { if (thePrefs::GetMaxSourcePerFile() > static_cast(reqfile)->GetSourceCount()) { theApp->downloadqueue->CheckAndAddKnownSource(static_cast(reqfile), m_client); } } // check to see if this is a new file they are asking for if (m_client->GetUploadFileID() != reqfilehash) { m_client->SetCommentDirty(); } m_client->SetUploadFileID(reqfile); m_client->ProcessExtendedInfo(&data_in, reqfile); // send filename etc CMemFile data_out(128); data_out.WriteHash(reqfile->GetFileHash()); // Since it's for somebody else to see, we need to send the prettified // filename, rather than the (possibly) mangled actual filename. data_out.WriteString(reqfile->GetFileName().GetPrintable(), m_client->GetUnicodeSupport()); CPacket* packet = new CPacket(data_out, OP_EDONKEYPROT, OP_REQFILENAMEANSWER); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_REQFILENAMEANSWER to ") + m_client->GetFullIP() ); SendPacket(packet,true); // SendPacket might kill the socket, so check if (m_client) m_client->SendCommentInfo(reqfile); break; } throw wxString(wxT("Invalid OP_REQUESTFILENAME packet size")); break; } case OP_SETREQFILEID: { // 0.43b EXCEPT track of bad clients AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_SETREQFILEID from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); if (m_client->IsBanned()) { break; } // DbT:FileRequest if (size == 16) { if (!m_client->GetWaitStartTime()) { m_client->SetWaitStartTime(); } const CMD4Hash fileID(buffer); CKnownFile *reqfile = theApp->sharedfiles->GetFileByID(fileID); if ( reqfile == NULL ) { reqfile = theApp->downloadqueue->GetFileByID(fileID); if ( !( reqfile != NULL && reqfile->GetFileSize() > PARTSIZE ) ) { CPacket* replypacket = new CPacket(OP_FILEREQANSNOFIL, 16, OP_EDONKEYPROT); replypacket->Copy16ToDataBuffer(fileID.GetHash()); theStats::AddUpOverheadFileRequest(replypacket->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_FILERE to ") + m_client->GetFullIP() ); SendPacket(replypacket, true); break; } } // check to see if this is a new file they are asking for if (m_client->GetUploadFileID() != fileID) { m_client->SetCommentDirty(); } m_client->SetUploadFileID(reqfile); // send filestatus CMemFile data(16+16); data.WriteHash(reqfile->GetFileHash()); if (reqfile->IsPartFile()) { static_cast(reqfile)->WritePartStatus(&data); } else { data.WriteUInt16(0); } CPacket* packet = new CPacket(data, OP_EDONKEYPROT, OP_FILESTATUS); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_FILESTATUS to ") + m_client->GetFullIP() ); SendPacket(packet, true); break; } throw wxString(wxT("Invalid OP_FILEREQUEST packet size")); break; // DbT:End } case OP_FILEREQANSNOFIL: { // 0.43b protocol, lacks ZZ's download manager on swap AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_FILEREQANSNOFIL from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); if (size == 16) { // if that client does not have my file maybe has another different CPartFile* reqfile = theApp->downloadqueue->GetFileByID(CMD4Hash(buffer)); if ( reqfile) { reqfile->AddDeadSource( m_client ); } else { break; } // we try to swap to another file ignoring no needed parts files switch (m_client->GetDownloadState()) { case DS_CONNECTED: case DS_ONQUEUE: case DS_NONEEDEDPARTS: if (!m_client->SwapToAnotherFile(true, true, true, NULL)) { theApp->downloadqueue->RemoveSource(m_client); } break; } break; } throw wxString(wxT("Invalid OP_FILEREQUEST packet size")); break; } case OP_REQFILENAMEANSWER: { // 0.43b except check for bad clients AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_REQFILENAMEANSWER from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); CMemFile data(buffer, size); CMD4Hash hash = data.ReadHash(); const CPartFile* file = theApp->downloadqueue->GetFileByID(hash); m_client->ProcessFileInfo(&data, file); break; } case OP_FILESTATUS: { // 0.43b except check for bad clients AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_FILESTATUS from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); CMemFile data(buffer, size); CMD4Hash hash = data.ReadHash(); const CPartFile* file = theApp->downloadqueue->GetFileByID(hash); m_client->ProcessFileStatus(false, &data, file); break; } case OP_STARTUPLOADREQ: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_STARTUPLOADREQ from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); if (!m_client->CheckHandshakeFinished()) { break; } m_client->CheckForAggressive(); if ( m_client->IsBanned() ) { break; } if (size == 16) { const CMD4Hash fileID(buffer); CKnownFile* reqfile = theApp->sharedfiles->GetFileByID(fileID); if (reqfile) { if (m_client->GetUploadFileID() != fileID) { m_client->SetCommentDirty(); } m_client->SetUploadFileID(reqfile); m_client->SendCommentInfo(reqfile); // Socket might die because of SendCommentInfo, so check if (m_client) theApp->uploadqueue->AddClientToQueue(m_client); } } break; } case OP_QUEUERANK: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_QUEUERANK from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); CMemFile data(buffer, size); uint32 rank = data.ReadUInt32(); m_client->SetRemoteQueueRank(rank); break; } case OP_ACCEPTUPLOADREQ: { // 0.42e (xcept khaos stats) AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_ACCEPTUPLOADREQ from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); if (m_client->GetRequestFile() && !m_client->GetRequestFile()->IsStopped() && (m_client->GetRequestFile()->GetStatus()==PS_READY || m_client->GetRequestFile()->GetStatus()==PS_EMPTY)) { if (m_client->GetDownloadState() == DS_ONQUEUE ) { m_client->SetDownloadState(DS_DOWNLOADING); m_client->SetLastPartAsked(0xffff); // Reset current downloaded Chunk // Maella -Enhanced Chunk Selection- (based on jicxicmic) m_client->SendBlockRequests(); } } else { if (!m_client->GetSentCancelTransfer()) { CPacket* packet = new CPacket(OP_CANCELTRANSFER, 0, OP_EDONKEYPROT); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_CANCELTRANSFER to ") + m_client->GetFullIP() ); m_client->SendPacket(packet,true,true); // SendPacket can cause the socket to die, so check if (m_client) m_client->SetSentCancelTransfer(1); } if (m_client) m_client->SetDownloadState((m_client->GetRequestFile()==NULL || m_client->GetRequestFile()->IsStopped()) ? DS_NONE : DS_ONQUEUE); } break; } case OP_REQUESTPARTS: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_REQUESTPARTS from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); m_client->ProcessRequestPartsPacket(buffer, size, false); break; } case OP_CANCELTRANSFER: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_CANCELTRANSFER from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); theApp->uploadqueue->RemoveFromUploadQueue(m_client); AddDebugLogLineN( logClient, m_client->GetUserName() + wxT(": Upload session ended due canceled transfer.")); break; } case OP_END_OF_DOWNLOAD: { // 0.43b except check for bad clients AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_END_OF_DOWNLOAD from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); if (size>=16 && m_client->GetUploadFileID() == CMD4Hash(buffer)) { theApp->uploadqueue->RemoveFromUploadQueue(m_client); AddDebugLogLineN( logClient, m_client->GetUserName() + wxT(": Upload session ended due ended transfer.")); } break; } case OP_HASHSETREQUEST: { // 0.43b except check for bad clients AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_HASHSETREQUEST from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); if (size != 16) { throw wxString(wxT("Invalid OP_HASHSETREQUEST packet size")); } m_client->SendHashsetPacket(CMD4Hash(buffer)); break; } case OP_HASHSETANSWER: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_HASHSETANSWER from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); m_client->ProcessHashSet(buffer, size); break; } case OP_SENDINGPART: { // 0.47a AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_SENDINGPART from ") + m_client->GetFullIP() ); if ( m_client->GetRequestFile() && !m_client->GetRequestFile()->IsStopped() && (m_client->GetRequestFile()->GetStatus() == PS_READY || m_client->GetRequestFile()->GetStatus()==PS_EMPTY)) { m_client->ProcessBlockPacket(buffer, size, false, false); if ( m_client && ( m_client->GetRequestFile()->IsStopped() || m_client->GetRequestFile()->GetStatus() == PS_PAUSED || m_client->GetRequestFile()->GetStatus() == PS_ERROR) ) { if (!m_client->GetSentCancelTransfer()) { CPacket* packet = new CPacket(OP_CANCELTRANSFER, 0, OP_EDONKEYPROT); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_CANCELTRANSFER to ") + m_client->GetFullIP() ); m_client->SendPacket(packet,true,true); // Socket might die because of SendPacket, so check if (m_client) m_client->SetSentCancelTransfer(1); } if (m_client) m_client->SetDownloadState(m_client->GetRequestFile()->IsStopped() ? DS_NONE : DS_ONQUEUE); } } else { if (!m_client->GetSentCancelTransfer()) { CPacket* packet = new CPacket(OP_CANCELTRANSFER, 0, OP_EDONKEYPROT); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_CANCELTRANSFER to ") + m_client->GetFullIP() ); m_client->SendPacket(packet,true,true); // Socket might die because of SendPacket, so check m_client->SetSentCancelTransfer(1); } m_client->SetDownloadState((m_client->GetRequestFile()==NULL || m_client->GetRequestFile()->IsStopped()) ? DS_NONE : DS_ONQUEUE); } break; } case OP_OUTOFPARTREQS: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_OUTOFPARTREQS from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); if (m_client->GetDownloadState() == DS_DOWNLOADING) { m_client->SetDownloadState(DS_ONQUEUE); } break; } case OP_CHANGE_CLIENT_ID: { // Kad reviewed AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_CHANGE_CLIENT_ID from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); CMemFile data(buffer, size); uint32 nNewUserID = data.ReadUInt32(); uint32 nNewServerIP = data.ReadUInt32(); if (IsLowID(nNewUserID)) { // client changed server and gots a LowID CServer* pNewServer = theApp->serverlist->GetServerByIP(nNewServerIP); if (pNewServer != NULL){ m_client->SetUserIDHybrid(nNewUserID); // update UserID only if we know the server m_client->SetServerIP(nNewServerIP); m_client->SetServerPort(pNewServer->GetPort()); } } else if (nNewUserID == m_client->GetIP()) { // client changed server and gots a HighID(IP) m_client->SetUserIDHybrid(wxUINT32_SWAP_ALWAYS(nNewUserID)); CServer* pNewServer = theApp->serverlist->GetServerByIP(nNewServerIP); if (pNewServer != NULL){ m_client->SetServerIP(nNewServerIP); m_client->SetServerPort(pNewServer->GetPort()); } } break; } case OP_CHANGE_SLOT:{ // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_CHANGE_SLOT from ") + m_client->GetFullIP() ); // sometimes sent by Hybrid theStats::AddDownOverheadOther(size); break; } case OP_MESSAGE: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_MESSAGE from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); if (size < 2) { throw wxString(wxT("invalid message packet")); } CMemFile message_file(buffer, size); uint16 length = message_file.ReadUInt16(); if (length + 2u != size) { throw wxString(wxT("invalid message packet")); } // limit message length static const uint16 MAX_CLIENT_MSG_LEN = 450; if (length > MAX_CLIENT_MSG_LEN) { AddDebugLogLineN(logRemoteClient, CFormat(wxT("Message from '%s' (IP:%s) exceeds limit by %u chars, truncated.")) % m_client->GetUserName() % m_client->GetFullIP() % (length - MAX_CLIENT_MSG_LEN)); length = MAX_CLIENT_MSG_LEN; } wxString message = message_file.ReadOnlyString((m_client->GetUnicodeSupport() != utf8strNone), length); m_client->ProcessChatMessage(message); break; } case OP_ASKSHAREDFILES: { // 0.43b (well, er, it does the same, but in our own way) AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_ASKSHAREDFILES from ") + m_client->GetFullIP() ); // client wants to know what we have in share, let's see if we allow him to know that theStats::AddDownOverheadOther(size); // IP banned, no answer for this request if (m_client->IsBanned()) { break; } if (thePrefs::CanSeeShares() == vsfaEverybody || (thePrefs::CanSeeShares() == vsfaFriends && m_client->IsFriend())) { AddLogLineC(CFormat( _("User %s (%u) requested your sharedfiles-list -> Accepted")) % m_client->GetUserName() % m_client->GetUserIDHybrid() ); std::vector list; theApp->sharedfiles->CopyFileList(list); CMemFile tempfile(80); tempfile.WriteUInt32(list.size()); for (unsigned i = 0; i < list.size(); ++i) { if (!list[i]->IsLargeFile() || m_client->SupportsLargeFiles()) { list[i]->CreateOfferedFilePacket(&tempfile, NULL, m_client); } } // create a packet and send it CPacket* replypacket = new CPacket(tempfile, OP_EDONKEYPROT, OP_ASKSHAREDFILESANSWER); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ASKSHAREDFILESANSWER to ") + m_client->GetFullIP() ); theStats::AddUpOverheadOther(replypacket->GetPacketSize()); SendPacket(replypacket, true, true); } else { AddLogLineC(CFormat( _("User %s (%u) requested your sharedfiles-list -> Denied")) % m_client->GetUserName() % m_client->GetUserIDHybrid() ); CPacket* replypacket = new CPacket(OP_ASKSHAREDDENIEDANS, 0, OP_EDONKEYPROT); theStats::AddUpOverheadOther(replypacket->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ASKSHAREDDENIEDANS to ") + m_client->GetFullIP() ); SendPacket(replypacket, true, true); } break; } case OP_ASKSHAREDFILESANSWER: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_ASKSHAREDFILESANSWER from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); wxString EmptyStr; m_client->ProcessSharedFileList(buffer, size, EmptyStr); break; } case OP_ASKSHAREDDIRS: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_ASKSHAREDDIRS from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); wxASSERT( size == 0 ); // IP banned, no answer for this request if (m_client->IsBanned()) { break; } if ((thePrefs::CanSeeShares()==vsfaEverybody) || ((thePrefs::CanSeeShares()==vsfaFriends) && m_client->IsFriend())) { AddLogLineC(CFormat( _("User %s (%u) requested your shareddirectories-list -> Accepted") ) % m_client->GetUserName() % m_client->GetUserIDHybrid() ); // send the list of shared directories m_client->SendSharedDirectories(); } else { AddLogLineC(CFormat( _("User %s (%u) requested your shareddirectories-list -> Denied") ) % m_client->GetUserName() % m_client->GetUserIDHybrid() ); CPacket* replypacket = new CPacket(OP_ASKSHAREDDENIEDANS, 0, OP_EDONKEYPROT); theStats::AddUpOverheadOther(replypacket->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ASKSHAREDDENIEDANS to ") + m_client->GetFullIP() ); SendPacket(replypacket, true, true); } break; } case OP_ASKSHAREDFILESDIR: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_ASKSHAREDFILESDIR from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); // IP banned, no answer for this request if (m_client->IsBanned()) { break; } CMemFile data(buffer, size); wxString strReqDir = data.ReadString((m_client->GetUnicodeSupport() != utf8strNone)); if (thePrefs::CanSeeShares()==vsfaEverybody || (thePrefs::CanSeeShares()==vsfaFriends && m_client->IsFriend())) { AddLogLineC(CFormat(_("User %s (%u) requested your sharedfiles-list for directory '%s' -> accepted")) % m_client->GetUserName() % m_client->GetUserIDHybrid() % strReqDir); wxASSERT( data.GetPosition() == data.GetLength() ); // send the list of shared files for the requested directory m_client->SendSharedFilesOfDirectory(strReqDir); } else { AddLogLineC(CFormat(_("User %s (%u) requested your sharedfiles-list for directory '%s' -> denied")) % m_client->GetUserName() % m_client->GetUserIDHybrid() % strReqDir); CPacket* replypacket = new CPacket(OP_ASKSHAREDDENIEDANS, 0, OP_EDONKEYPROT); theStats::AddUpOverheadOther(replypacket->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ASKSHAREDDENIEDANS to ") + m_client->GetFullIP() ); SendPacket(replypacket, true, true); } break; } case OP_ASKSHAREDDIRSANS:{ // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_ASKSHAREDDIRSANS from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); if (m_client->GetFileListRequested() == 1){ CMemFile data(buffer, size); uint32 uDirs = data.ReadUInt32(); for (uint32 i = 0; i < uDirs; i++){ wxString strDir = data.ReadString((m_client->GetUnicodeSupport() != utf8strNone)); AddLogLineC(CFormat( _("User %s (%u) shares directory '%s'") ) % m_client->GetUserName() % m_client->GetUserIDHybrid() % strDir ); CMemFile tempfile(80); tempfile.WriteString(strDir, m_client->GetUnicodeSupport()); CPacket* replypacket = new CPacket(tempfile, OP_EDONKEYPROT, OP_ASKSHAREDFILESDIR); theStats::AddUpOverheadOther(replypacket->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ASKSHAREDFILESDIR to ") + m_client->GetFullIP() ); SendPacket(replypacket, true, true); } wxASSERT( data.GetPosition() == data.GetLength() ); m_client->SetFileListRequested(uDirs); } else { AddLogLineC(CFormat( _("User %s (%u) sent unrequested shared dirs.") ) % m_client->GetUserName() % m_client->GetUserIDHybrid() ); } break; } case OP_ASKSHAREDFILESDIRANS: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_ASKSHAREDFILESDIRANS from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); CMemFile data(buffer, size); wxString strDir = data.ReadString((m_client->GetUnicodeSupport() != utf8strNone)); if (m_client->GetFileListRequested() > 0){ AddLogLineC(CFormat( _("User %s (%u) sent sharedfiles-list for directory '%s'") ) % m_client->GetUserName() % m_client->GetUserIDHybrid() % strDir ); m_client->ProcessSharedFileList(buffer + data.GetPosition(), size - data.GetPosition(), strDir); if (m_client->GetFileListRequested() == 0) { AddLogLineC(CFormat( _("User %s (%u) finished sending sharedfiles-list") ) % m_client->GetUserName() % m_client->GetUserIDHybrid() ); } } else { AddLogLineC(CFormat( _("User %s (%u) sent unwanted sharedfiles-list") ) % m_client->GetUserName() % m_client->GetUserIDHybrid() ); } break; } case OP_ASKSHAREDDENIEDANS: AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_ASKSHAREDDENIEDANS from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); wxASSERT( size == 0 ); AddLogLineC(CFormat( _("User %s (%u) denied access to shared directories/files list") ) % m_client->GetUserName() % m_client->GetUserIDHybrid() ); m_client->SetFileListRequested(0); break; default: theStats::AddDownOverheadOther(size); AddDebugLogLineN(logRemoteClient, CFormat(wxT("Edonkey packet: unknown opcode: %i %x from %s")) % opcode % opcode % m_client->GetFullIP()); return false; } return true; } bool CClientTCPSocket::ProcessExtPacket(const byte* buffer, uint32 size, uint8 opcode) { #ifdef __PACKET_RECV_DUMP__ //printf("Rec: OPCODE %x \n",opcode); DumpMem(buffer,size); #endif // 0.42e - except the catchs on mem exception and file exception if (!m_client) { throw wxString(wxT("Unknown clients sends extended protocol packet")); } /* if (!client->CheckHandshakeFinished()) { // Here comes an extended packet without finishing the handshake. // IMHO, we should disconnect the client. throw wxString(wxT("Client send extended packet before finishing handshake")); } */ switch(opcode) { case OP_MULTIPACKET_EXT: AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_MULTIPACKET_EXT from ") + m_client->GetFullIP()); case OP_MULTIPACKET: { if (opcode == OP_MULTIPACKET) AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_MULTIPACKET from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); if (m_client->IsBanned()) { break; } if (!m_client->CheckHandshakeFinished()) { // Here comes an extended packet without finishing the handshake. // IMHO, we should disconnect the client. throw wxString(wxT("Client send OP_MULTIPACKET before finishing handshake")); } CMemFile data_in(buffer, size); CMD4Hash reqfilehash = data_in.ReadHash(); uint64 nSize = (opcode == OP_MULTIPACKET_EXT) ? data_in.ReadUInt64() : 0; bool file_not_found = false; CKnownFile* reqfile = theApp->sharedfiles->GetFileByID(reqfilehash); if ( reqfile == NULL ){ reqfile = theApp->downloadqueue->GetFileByID(reqfilehash); if ( !( reqfile != NULL && reqfile->GetFileSize() > PARTSIZE ) ) { AddDebugLogLineN(logRemoteClient, wxT("Remote client asked for a non-shared file")); file_not_found = true; } } if (!file_not_found && reqfile->IsLargeFile() && !m_client->SupportsLargeFiles()) { AddDebugLogLineN(logRemoteClient, wxT("Remote client asked for a large file but doesn't support them")); file_not_found = true; } if (!file_not_found && nSize && (reqfile->GetFileSize() != nSize)) { AddDebugLogLineN(logRemoteClient, wxT("Remote client asked for a file but specified wrong size")); file_not_found = true; } if (file_not_found) { CPacket* replypacket = new CPacket(OP_FILEREQANSNOFIL, 16, OP_EDONKEYPROT); replypacket->Copy16ToDataBuffer(reqfilehash.GetHash()); theStats::AddUpOverheadFileRequest(replypacket->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_FILEREQANSNOFIL to ") + m_client->GetFullIP() ); SendPacket(replypacket, true); break; } if (!m_client->GetWaitStartTime()) { m_client->SetWaitStartTime(); } // if we are downloading this file, this could be a new source // no passive adding of files with only one part if (reqfile->IsPartFile() && reqfile->GetFileSize() > PARTSIZE) { if (thePrefs::GetMaxSourcePerFile() > static_cast(reqfile)->GetSourceCount()) { theApp->downloadqueue->CheckAndAddKnownSource(static_cast(reqfile), m_client); } } // check to see if this is a new file they are asking for if (m_client->GetUploadFileID() != reqfilehash) { m_client->SetCommentDirty(); } m_client->SetUploadFileID(reqfile); CMemFile data_out(128); data_out.WriteHash(reqfile->GetFileHash()); while(data_in.GetLength()-data_in.GetPosition()) { if (!m_client) { throw wxString(wxT("Client suddenly disconnected")); } uint8 opcode_in = data_in.ReadUInt8(); switch(opcode_in) { case OP_REQUESTFILENAME: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_MULTIPACKET has OP_REQUESTFILENAME") ); m_client->ProcessExtendedInfo(&data_in, reqfile); data_out.WriteUInt8(OP_REQFILENAMEANSWER); // Since it's for somebody else to see, we need to send the prettified // filename, rather than the (possibly) mangled actual filename data_out.WriteString(reqfile->GetFileName().GetPrintable(), m_client->GetUnicodeSupport()); break; } case OP_AICHFILEHASHREQ: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_MULTIPACKET has OP_AICHFILEHASHANS") ); if (m_client->IsSupportingAICH() && reqfile->GetAICHHashset()->GetStatus() == AICH_HASHSETCOMPLETE && reqfile->GetAICHHashset()->HasValidMasterHash()) { data_out.WriteUInt8(OP_AICHFILEHASHANS); reqfile->GetAICHHashset()->GetMasterHash().Write(&data_out); } break; } case OP_SETREQFILEID: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_MULTIPACKET has OP_SETREQFILEID") ); data_out.WriteUInt8(OP_FILESTATUS); if (reqfile->IsPartFile()) { static_cast(reqfile)->WritePartStatus(&data_out); } else { data_out.WriteUInt16(0); } break; } //We still send the source packet separately.. //We could send it within this packet.. If agreeded, I will fix it.. case OP_REQUESTSOURCES2: case OP_REQUESTSOURCES: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_MULTIPACKET has OP_REQUESTSOURCES(2)") ); uint8 byRequestedVersion = 0; uint16 byRequestedOptions = 0; if (opcode_in == OP_REQUESTSOURCES2){ // SX2 requests contains additional data byRequestedVersion = data_in.ReadUInt8(); byRequestedOptions = data_in.ReadUInt16(); } //Although this shouldn't happen, it's a just in case to any Mods that mess with version numbers. if (byRequestedVersion > 0 || m_client->GetSourceExchange1Version() > 1) { uint32 dwTimePassed = ::GetTickCount() - m_client->GetLastSrcReqTime() + CONNECTION_LATENCY; bool bNeverAskedBefore = m_client->GetLastSrcReqTime() == 0; if( //if not complete and file is rare ( reqfile->IsPartFile() && (bNeverAskedBefore || dwTimePassed > SOURCECLIENTREASKS) && static_cast(reqfile)->GetSourceCount() <= RARE_FILE ) || //OR if file is not rare or if file is complete ( (bNeverAskedBefore || dwTimePassed > SOURCECLIENTREASKS * MINCOMMONPENALTY) ) ) { m_client->SetLastSrcReqTime(); CPacket* tosend = reqfile->CreateSrcInfoPacket(m_client, byRequestedVersion, byRequestedOptions); if(tosend) { theStats::AddUpOverheadSourceExchange(tosend->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ANSWERSOURCES to ") + m_client->GetFullIP() ); SendPacket(tosend, true); } } } break; } } } if( data_out.GetLength() > 16 ) { CPacket* reply = new CPacket(data_out, OP_EMULEPROT, OP_MULTIPACKETANSWER); theStats::AddUpOverheadFileRequest(reply->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_MULTIPACKETANSWER to ") + m_client->GetFullIP() ); SendPacket(reply, true); } break; } case OP_MULTIPACKETANSWER: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_MULTIPACKETANSWER from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); if (m_client->IsBanned()) { break; } if (m_client->GetKadPort() && m_client->GetKadVersion() > 1) { Kademlia::CKademlia::Bootstrap(wxUINT32_SWAP_ALWAYS(m_client->GetIP()), m_client->GetKadPort()); } if (!m_client->CheckHandshakeFinished()) { // Here comes an extended packet without finishing the handshake. // IMHO, we should disconnect the client. throw wxString(wxT("Client send OP_MULTIPACKETANSWER before finishing handshake")); } CMemFile data_in(buffer, size); CMD4Hash reqfilehash = data_in.ReadHash(); const CPartFile *reqfile = theApp->downloadqueue->GetFileByID(reqfilehash); //Make sure we are downloading this file. if ( !reqfile ) { throw wxString(wxT(" Wrong File ID: (OP_MULTIPACKETANSWER; reqfile==NULL)")); } if ( !m_client->GetRequestFile() ) { throw wxString(wxT(" Wrong File ID: OP_MULTIPACKETANSWER; client->reqfile==NULL)")); } if (reqfile != m_client->GetRequestFile()) { throw wxString(wxT(" Wrong File ID: OP_MULTIPACKETANSWER; reqfile!=client->reqfile)")); } while (data_in.GetLength()-data_in.GetPosition()) { // Some of the cases down there can actually send a packet and lose the client if (!m_client) { throw wxString(wxT("Client suddenly disconnected")); } uint8 opcode_in = data_in.ReadUInt8(); switch(opcode_in) { case OP_REQFILENAMEANSWER: { if (!m_client) { throw wxString(wxT("Client suddenly disconnected")); } else { m_client->ProcessFileInfo(&data_in, reqfile); } break; } case OP_FILESTATUS: { if (!m_client) { throw wxString(wxT("Client suddenly disconnected")); } else { m_client->ProcessFileStatus(false, &data_in, reqfile); } break; } case OP_AICHFILEHASHANS: { if (!m_client) { throw wxString(wxT("Client suddenly disconnected")); } else { m_client->ProcessAICHFileHash(&data_in, reqfile); } break; } } } break; } case OP_EMULEINFO: { // 0.43b theStats::AddDownOverheadOther(size); if (!m_client->ProcessMuleInfoPacket(buffer, size)) { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_EMULEINFO from ") + m_client->GetFullIP() ); // If it's not a OS Info packet, is an old client // start secure identification, if // - we have received eD2K and eMule info (old eMule) if (m_client->GetInfoPacketsReceived() == IP_BOTH) { m_client->InfoPacketsReceived(); } m_client->SendMuleInfoPacket(true); } else { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_EMULEINFO is an OS_INFO") ); } break; } case OP_EMULEINFOANSWER: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_EMULEINFOANSWER from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); m_client->ProcessMuleInfoPacket(buffer, size); // start secure identification, if // - we have received eD2K and eMule info (old eMule) if (m_client->GetInfoPacketsReceived() == IP_BOTH) { m_client->InfoPacketsReceived(); } break; } case OP_SECIDENTSTATE:{ // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_SECIDENTSTATE from ") + m_client->GetFullIP() ); if (!m_client->CheckHandshakeFinished()) { // Here comes an extended packet without finishing the handshake. // IMHO, we should disconnect the client. throw wxString(wxT("Client send OP_SECIDENTSTATE before finishing handshake")); } m_client->ProcessSecIdentStatePacket(buffer, size); // ProcessSecIdentStatePacket() might cause the socket to die, so check if (m_client) { int SecureIdentState = m_client->GetSecureIdentState(); if (SecureIdentState == IS_SIGNATURENEEDED) { m_client->SendSignaturePacket(); } else if (SecureIdentState == IS_KEYANDSIGNEEDED) { m_client->SendPublicKeyPacket(); // SendPublicKeyPacket() might cause the socket to die, so check if ( m_client ) { m_client->SendSignaturePacket(); } } } break; } case OP_PUBLICKEY: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_PUBLICKEY from ") + m_client->GetFullIP() ); if (m_client->IsBanned() ){ break; } if (!m_client->CheckHandshakeFinished()) { // Here comes an extended packet without finishing the handshake. // IMHO, we should disconnect the client. throw wxString(wxT("Client send OP_PUBLICKEY before finishing handshake")); } m_client->ProcessPublicKeyPacket(buffer, size); break; } case OP_SIGNATURE:{ // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_SIGNATURE from ") + m_client->GetFullIP() ); if (!m_client->CheckHandshakeFinished()) { // Here comes an extended packet without finishing the handshake. // IMHO, we should disconnect the client. throw wxString(wxT("Client send OP_COMPRESSEDPART before finishing handshake")); } m_client->ProcessSignaturePacket(buffer, size); break; } case OP_SENDINGPART_I64: AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_SENDINGPART_I64 from ") + m_client->GetFullIP() ); case OP_COMPRESSEDPART_I64: if (opcode == OP_COMPRESSEDPART_I64) AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_COMPRESSEDPART_I64 from ") + m_client->GetFullIP() ); case OP_COMPRESSEDPART: { // 0.47a if (opcode == OP_COMPRESSEDPART) AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_COMPRESSEDPART from ") + m_client->GetFullIP() ); if (!m_client->CheckHandshakeFinished()) { // Here comes an extended packet without finishing the handshake. // IMHO, we should disconnect the client. throw wxString(wxT("Client send OP_COMPRESSEDPART before finishing handshake")); } if (m_client->GetRequestFile() && !m_client->GetRequestFile()->IsStopped() && (m_client->GetRequestFile()->GetStatus()==PS_READY || m_client->GetRequestFile()->GetStatus()==PS_EMPTY)) { m_client->ProcessBlockPacket(buffer, size, (opcode != OP_SENDINGPART_I64), (opcode == OP_COMPRESSEDPART_I64) || (opcode == OP_SENDINGPART_I64)); if (m_client && ( m_client->GetRequestFile()->IsStopped() || m_client->GetRequestFile()->GetStatus() == PS_PAUSED || m_client->GetRequestFile()->GetStatus() == PS_ERROR)) { if (!m_client->GetSentCancelTransfer()) { CPacket* packet = new CPacket(OP_CANCELTRANSFER, 0, OP_EDONKEYPROT); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_CANCELTRANSFER to ") + m_client->GetFullIP() ); m_client->SendPacket(packet,true,true); if (m_client) { m_client->SetSentCancelTransfer(1); } } if ( m_client ) { m_client->SetDownloadState(m_client->GetRequestFile()->IsStopped() ? DS_NONE : DS_ONQUEUE); } } } else { if (!m_client->GetSentCancelTransfer()) { CPacket* packet = new CPacket(OP_CANCELTRANSFER, 0, OP_EDONKEYPROT); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_CANCELTRANSFER to ") + m_client->GetFullIP() ); m_client->SendPacket(packet,true,true); if ( m_client ) { m_client->SetSentCancelTransfer(1); } } if ( m_client ) { m_client->SetDownloadState((m_client->GetRequestFile()==NULL || m_client->GetRequestFile()->IsStopped()) ? DS_NONE : DS_ONQUEUE); } } break; } case OP_REQUESTPARTS_I64: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_REQUESTPARTS_I64 from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); m_client->ProcessRequestPartsPacket(buffer, size, true); break; } case OP_QUEUERANKING: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_QUEUERANKING from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); if (!m_client->CheckHandshakeFinished()) { // Here comes an extended packet without finishing the handshake. // IMHO, we should disconnect the client. throw wxString(wxT("Client send OP_QUEUERANKING before finishing handshake")); } if (size != 12) { throw wxString(wxT("Invalid size (OP_QUEUERANKING)")); } uint16 newrank = PeekUInt16(buffer); m_client->SetRemoteQueueFull(false); m_client->SetRemoteQueueRank(newrank); break; } case OP_REQUESTSOURCES2: case OP_REQUESTSOURCES:{ AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_REQUESTSOURCES from ") + m_client->GetFullIP() ); theStats::AddDownOverheadSourceExchange(size); if (!m_client->CheckHandshakeFinished()) { // Here comes an extended packet without finishing the handshake. // IMHO, we should disconnect the client. throw wxString(wxT("Client send OP_REQUESTSOURCES before finishing handshake")); } uint8 byRequestedVersion = 0; uint16 byRequestedOptions = 0; CMemFile data_in(buffer, size); if (opcode == OP_REQUESTSOURCES2){ // SX2 requests contains additional data byRequestedVersion = data_in.ReadUInt8(); byRequestedOptions = data_in.ReadUInt16(); } if (byRequestedVersion > 0 || m_client->GetSourceExchange1Version() >= 1) { if(size != 16) { throw wxString(wxT("Invalid size (OP_QUEUERANKING)")); } //first check shared file list, then download list const CMD4Hash fileID(buffer); CKnownFile* file = theApp->sharedfiles->GetFileByID(fileID); if(!file) { file = theApp->downloadqueue->GetFileByID(fileID); } if(file) { // There are some clients which do not follow the correct protocol procedure of sending // the sequence OP_REQUESTFILENAME, OP_SETREQFILEID, OP_REQUESTSOURCES. If those clients // are doing this, they will not get the optimal set of sources which we could offer if // they would follow the above noted protocol sequence. They better do it the right way // or they will get just a random set of sources because we do not know their download // part status which may get cleared with the call of 'SetUploadFileID'. m_client->SetUploadFileID(file); uint32 dwTimePassed = ::GetTickCount() - m_client->GetLastSrcReqTime() + CONNECTION_LATENCY; bool bNeverAskedBefore = m_client->GetLastSrcReqTime() == 0; if( //if not complete and file is rare, allow once every 40 minutes ( file->IsPartFile() && static_cast(file)->GetSourceCount() <= RARE_FILE && (bNeverAskedBefore || dwTimePassed > SOURCECLIENTREASKS) ) || //OR if file is not rare or if file is complete, allow every 90 minutes ( (bNeverAskedBefore || dwTimePassed > SOURCECLIENTREASKS * MINCOMMONPENALTY) ) ) { m_client->SetLastSrcReqTime(); CPacket* tosend = file->CreateSrcInfoPacket(m_client, byRequestedVersion, byRequestedOptions); if(tosend) { theStats::AddUpOverheadSourceExchange(tosend->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ANSWERSOURCES to ") + m_client->GetFullIP() ); SendPacket(tosend, true, true); } } } } break; } case OP_ANSWERSOURCES: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_ANSWERSOURCES from ") + m_client->GetFullIP() ); theStats::AddDownOverheadSourceExchange(size); if (!m_client->CheckHandshakeFinished()) { // Here comes an extended packet without finishing the handshake. // IMHO, we should disconnect the client. throw wxString(wxT("Client send OP_ANSWERSOURCES before finishing handshake")); } CMemFile data(buffer, size); CMD4Hash hash = data.ReadHash(); CKnownFile* file = theApp->downloadqueue->GetFileByID(hash); if(file){ if (file->IsPartFile()){ //set the client's answer time m_client->SetLastSrcAnswerTime(); //and set the file's last answer time static_cast(file)->SetLastAnsweredTime(); static_cast(file)->AddClientSources(&data, SF_SOURCE_EXCHANGE, m_client->GetSourceExchange1Version(), false, m_client); } } break; } case OP_ANSWERSOURCES2: { //printf("Received OP_ANSWERSOURCES2\n"); theStats::AddDownOverheadSourceExchange(size); if (!m_client->CheckHandshakeFinished()) { // Here comes an extended packet without finishing the handshake. // IMHO, we should disconnect the client. throw wxString(wxT("Client send OP_ANSWERSOURCES2 before finishing handshake")); } CMemFile data(buffer, size); uint8 byVersion = data.ReadUInt8(); CMD4Hash hash = data.ReadHash(); CKnownFile* file = theApp->downloadqueue->GetFileByID(hash); if (file){ if (file->IsPartFile()){ //set the client's answer time m_client->SetLastSrcAnswerTime(); //and set the file's last answer time static_cast(file)->SetLastAnsweredTime(); static_cast(file)->AddClientSources(&data, SF_SOURCE_EXCHANGE, byVersion, true, m_client); } } break; } case OP_FILEDESC: { // 0.43b AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_FILEDESC from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); if (!m_client->CheckHandshakeFinished()) { // Here comes an extended packet without finishing the handshake. // IMHO, we should disconnect the client. throw wxString(wxT("Client send OP_FILEDESC before finishing handshake")); } m_client->ProcessMuleCommentPacket(buffer, size); break; } // Unsupported case OP_REQUESTPREVIEW: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_REQUESTPREVIEW from ") + m_client->GetFullIP() ); break; } // Unsupported case OP_PREVIEWANSWER: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_PREVIEWANSWER from ") + m_client->GetFullIP() ); break; } case OP_PUBLICIP_ANSWER: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_PUBLICIP_ANSWER from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); m_client->ProcessPublicIPAnswer(buffer, size); break; } case OP_PUBLICIP_REQ: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_PUBLICIP_REQ from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); CPacket* pPacket = new CPacket(OP_PUBLICIP_ANSWER, 4, OP_EMULEPROT); pPacket->CopyUInt32ToDataBuffer(m_client->GetIP()); theStats::AddUpOverheadOther(pPacket->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_PUBLICIP_ANSWER to") + m_client->GetFullIP()); SendPacket(pPacket); break; } case OP_AICHANSWER: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_AICHANSWER from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); m_client->ProcessAICHAnswer(buffer, size); break; } case OP_AICHREQUEST: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_AICHREQUEST from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); m_client->ProcessAICHRequest(buffer, size); break; } case OP_AICHFILEHASHANS: { // those should not be received normally, since we should only get those in MULTIPACKET AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_AICHFILEHASHANS from ") + m_client->GetFullIP() ); theStats::AddDownOverheadOther(size); CMemFile data(buffer, size); m_client->ProcessAICHFileHash(&data, NULL); break; } case OP_AICHFILEHASHREQ: { // those should not be received normally, since we should only get those in MULTIPACKET AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_AICHFILEHASHREQ from ") + m_client->GetFullIP() ); CMemFile data(buffer, size); CMD4Hash hash = data.ReadHash(); CKnownFile* pPartFile = theApp->sharedfiles->GetFileByID(hash); if (pPartFile == NULL){ break; } if (m_client->IsSupportingAICH() && pPartFile->GetAICHHashset()->GetStatus() == AICH_HASHSETCOMPLETE && pPartFile->GetAICHHashset()->HasValidMasterHash()) { CMemFile data_out; data_out.WriteHash(hash); pPartFile->GetAICHHashset()->GetMasterHash().Write(&data_out); CPacket* packet = new CPacket(data_out, OP_EMULEPROT, OP_AICHFILEHASHANS); theStats::AddUpOverheadOther(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_AICHFILEHASHANS to") + m_client->GetFullIP()); SendPacket(packet); } break; } case OP_CALLBACK: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_CALLBACK from ") + m_client->GetFullIP() ); theStats::AddDownOverheadFileRequest(size); if(!Kademlia::CKademlia::IsRunning()) { break; } CMemFile data(buffer, size); CUInt128 check = data.ReadUInt128(); check ^= Kademlia::CUInt128(true); if (check != Kademlia::CKademlia::GetPrefs()->GetKadID()) { break; } CUInt128 fileid = data.ReadUInt128(); byte fileid2[16]; fileid.ToByteArray(fileid2); const CMD4Hash fileHash(fileid2); if (theApp->sharedfiles->GetFileByID(fileHash) == NULL) { if (theApp->downloadqueue->GetFileByID(fileHash) == NULL) { break; } } uint32 ip = data.ReadUInt32(); uint16 tcp = data.ReadUInt16(); CUpDownClient* callback; callback = theApp->clientlist->FindClientByIP(wxUINT32_SWAP_ALWAYS(ip), tcp); if( callback == NULL ) { //#warning Do we actually have to check friend status here? callback = new CUpDownClient(tcp,ip,0,0,NULL,false, false); theApp->clientlist->AddClient(callback); } callback->TryToConnect(true); break; } case OP_BUDDYPING: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_BUDDYPING from ") + m_client->GetFullIP() ); theStats::AddDownOverheadKad(size); CUpDownClient* buddy = theApp->clientlist->GetBuddy(); if( buddy != m_client || m_client->GetKadVersion() == 0 || !m_client->AllowIncomeingBuddyPingPong() ) { //This ping was not from our buddy or wrong version or packet sent to fast. Ignore break; } m_client->SetLastBuddyPingPongTime(); CPacket* replypacket = new CPacket(OP_BUDDYPONG, 0, OP_EMULEPROT); theStats::AddUpOverheadKad(replypacket->GetPacketSize()); AddDebugLogLineN(logLocalClient,wxT("Local Client: OP_BUDDYPONG to ") + m_client->GetFullIP()); SendPacket(replypacket); break; } case OP_BUDDYPONG: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_BUDDYPONG from ") + m_client->GetFullIP() ); theStats::AddDownOverheadKad(size); CUpDownClient* buddy = theApp->clientlist->GetBuddy(); if( buddy != m_client || m_client->GetKadVersion() == 0 ) { //This pong was not from our buddy or wrong version. Ignore break; } m_client->SetLastBuddyPingPongTime(); //All this is for is to reset our socket timeout. break; } case OP_REASKCALLBACKTCP: { theStats::AddDownOverheadFileRequest(size); CUpDownClient* buddy = theApp->clientlist->GetBuddy(); if (buddy != m_client) { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_REASKCALLBACKTCP from ") + m_client->GetFullIP() + wxT(" which is not our buddy!") ); //This callback was not from our buddy.. Ignore. break; } AddDebugLogLineN( logRemoteClient, wxT("Remote Client: OP_REASKCALLBACKTCP from ") + m_client->GetFullIP() ); CMemFile data_in(buffer, size); uint32 destip = data_in.ReadUInt32(); uint16 destport = data_in.ReadUInt16(); CMD4Hash hash = data_in.ReadHash(); CKnownFile* reqfile = theApp->sharedfiles->GetFileByID(hash); bool bSenderMultipleIpUnknown = false; CUpDownClient* sender = theApp->uploadqueue->GetWaitingClientByIP_UDP(destip, destport, true, &bSenderMultipleIpUnknown); if (!reqfile) { AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_FILENOTFOUND to ") + m_client->GetFullIP() ); CPacket* response = new CPacket(OP_FILENOTFOUND,0,OP_EMULEPROT); theStats::AddUpOverheadFileRequest(response->GetPacketSize()); if (sender) { theApp->clientudp->SendPacket(response, destip, destport, sender->ShouldReceiveCryptUDPPackets(), sender->GetUserHash().GetHash(), false, 0); } else { theApp->clientudp->SendPacket(response, destip, destport, false, NULL, false, 0); } break; } if (sender) { //Make sure we are still thinking about the same file if (hash == sender->GetUploadFileID()) { sender->AddAskedCount(); sender->SetLastUpRequest(); //I messed up when I first added extended info to UDP //I should have originally used the entire ProcessExtenedInfo the first time. //So now I am forced to check UDPVersion to see if we are sending all the extended info. //For now on, we should not have to change anything here if we change //anything to the extended info data as this will be taken care of in ProcessExtendedInfo() //Update extended info. if (sender->GetUDPVersion() > 3) { sender->ProcessExtendedInfo(&data_in, reqfile); } else if (sender->GetUDPVersion() > 2) { //Update our complete source counts. uint16 nCompleteCountLast= sender->GetUpCompleteSourcesCount(); uint16 nCompleteCountNew = data_in.ReadUInt16(); sender->SetUpCompleteSourcesCount(nCompleteCountNew); if (nCompleteCountLast != nCompleteCountNew) { reqfile->UpdatePartsInfo(); } } CMemFile data_out(128); if(sender->GetUDPVersion() > 3) { if (reqfile->IsPartFile()) { static_cast(reqfile)->WritePartStatus(&data_out); } else { data_out.WriteUInt16(0); } } data_out.WriteUInt16(sender->GetUploadQueueWaitingPosition()); CPacket* response = new CPacket(data_out, OP_EMULEPROT, OP_REASKACK); theStats::AddUpOverheadFileRequest(response->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client UDP: OP_REASKACK to ") + m_client->GetFullIP() ); theApp->clientudp->SendPacket(response, destip, destport, sender->ShouldReceiveCryptUDPPackets(), sender->GetUserHash().GetHash(), false, 0); } else { AddDebugLogLineN(logListenSocket, wxT("Client UDP socket; OP_REASKCALLBACKTCP; reqfile does not match")); } } else { if (!bSenderMultipleIpUnknown){ if ((theStats::GetWaitingUserCount() + 50) > thePrefs::GetQueueSize()) { AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_QUEUEFULL to ") + m_client->GetFullIP() ); CPacket* response = new CPacket(OP_QUEUEFULL,0,OP_EMULEPROT); theStats::AddUpOverheadFileRequest(response->GetPacketSize()); theApp->clientudp->SendPacket(response, destip, destport, false, NULL, false, 0); } } else { AddDebugLogLineN(logRemoteClient, CFormat(wxT("OP_REASKCALLBACKTCP Packet received - multiple clients with the same IP but different UDP port found. Possible UDP Portmapping problem, enforcing TCP connection. IP: %s, Port: %u")) % Uint32toStringIP(destip) % destport); } } break; } case OP_CHATCAPTCHAREQ: { AddDebugLogLineN(logRemoteClient, wxT("Remote Client: OP_CHATCAPTCHAREQ from ") + m_client->GetFullIP()); theStats::AddDownOverheadOther(size); CMemFile data_in(buffer, size); m_client->ProcessCaptchaRequest(&data_in); break; } case OP_CHATCAPTCHARES: { AddDebugLogLineN(logRemoteClient, wxT("Remote Client: OP_CHATCAPTCHARES from ") + m_client->GetFullIP()); theStats::AddDownOverheadOther(size); if (size) { m_client->ProcessCaptchaReqRes(buffer[0]); } break; } case OP_FWCHECKUDPREQ: { // Support required for Kadversion >= 6 AddDebugLogLineN(logRemoteClient, wxT("Remote Client: OP_FWCHECKUDPREQ from ") + m_client->GetFullIP()); theStats::AddDownOverheadOther(size); CMemFile data_in(buffer, size); m_client->ProcessFirewallCheckUDPRequest(&data_in); break; } case OP_KAD_FWTCPCHECK_ACK: { // Support required for Kadversion >= 7 AddDebugLogLineN(logRemoteClient, wxT("Remote Client: OP_KAD_FWTCPCHECK_ACK from ") + m_client->GetFullIP()); if (theApp->clientlist->IsKadFirewallCheckIP(m_client->GetIP())) { if (Kademlia::CKademlia::IsRunning()) { Kademlia::CKademlia::GetPrefs()->IncFirewalled(); } } else { AddDebugLogLineN(logListenSocket, wxT("Received unrequested OP_KAD_FWTCPCHECK_ACK packet from ") + m_client->GetFullIP()); } break; } default: theStats::AddDownOverheadOther(size); AddDebugLogLineN(logRemoteClient, CFormat(wxT("eMule packet : unknown opcode: %i %x from %s")) % opcode % opcode % m_client->GetFullIP()); break; } return true; } bool CClientTCPSocket::ProcessED2Kv2Packet(const byte* buffer, uint32 size, uint8 opcode) { #ifdef __PACKET_RECV_DUMP__ //printf("Rec: OPCODE %x ED2Kv2\n",opcode); DumpMem(buffer,size); #endif if (!m_client) { throw wxString(wxT("Unknown clients sends extended ED2Kv2 protocol packet")); } CMemFile data(buffer, size); try { switch(opcode) { case OP_QUEUERANK: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: ED2Kv2 OP_QUEUERANK from ") + m_client->GetFullIP() ); uint8 numtags = data.ReadUInt8(); wxASSERT(numtags == 1); if(numtags){} // prevent GCC warning m_client->SetRemoteQueueRank(data.GetIntTagValue()); theStats::AddDownOverheadFileRequest(size); break; } case OP_REQUESTPARTS: { AddDebugLogLineN( logRemoteClient, wxT("Remote Client: ED2Kv2 OP_REQUESTPARTS from ") + m_client->GetFullIP() ); m_client->ProcessRequestPartsPacketv2(data); theStats::AddDownOverheadFileRequest(size); break; } default: theStats::AddDownOverheadOther(size); AddDebugLogLineN(logRemoteClient, CFormat(wxT("ED2Kv2 packet : unknown opcode: %i %x from %s")) % opcode % opcode % m_client->GetFullIP()); } } catch (...) { AddDebugLogLineN(logRemoteClient, CFormat(wxT("ED2Kv2 packet is corrupt at pos %i! opcode: %i %x from %s")) % data.GetPosition() % opcode % opcode % m_client->GetFullIP()); throw; } return true; } void CClientTCPSocket::OnConnect(int nErrorCode) { if (nErrorCode) { OnError(nErrorCode); } else if (!m_client) { // and now? Disconnect? not? AddDebugLogLineN( logClient, wxT("Couldn't send hello packet (Client deleted!)") ); } else if (!m_client->SendHelloPacket()) { // and now? Disconnect? not? AddDebugLogLineN( logClient, wxT("Couldn't send hello packet (Client deleted by SendHelloPacket!)") ); } else { ResetTimeOutTimer(); } } void CClientTCPSocket::OnSend(int nErrorCode) { ResetTimeOutTimer(); CEMSocket::OnSend(nErrorCode); } void CClientTCPSocket::OnReceive(int nErrorCode) { ResetTimeOutTimer(); // We might have updated ipfilter wxASSERT(m_remoteip); if (theApp->ipfilter->IsFiltered(m_remoteip)) { if (m_client) { m_client->Safe_Delete(); } Safe_Delete(); AddDebugLogLineN( logIPFilter, wxT("A connected client was dropped by IPFilter on new packet received")); } else { CEMSocket::OnReceive(nErrorCode); } } void CClientTCPSocket::OnError(int nErrorCode) { //printf("* Called OnError for %p\n",this); // 0.42e + Kry changes for handling of socket lost events wxString strError; if ((nErrorCode == 0) || (nErrorCode == 7) || (nErrorCode == 0xFEFF)) { if (m_client) { if (!m_client->GetUserName().IsEmpty()) { strError = wxT("Client '") + m_client->GetUserName() + wxT("'"); } else { strError = wxT("An unnamed client"); } strError += wxT(" (IP:") + m_client->GetFullIP() + wxT(") "); } else { strError = wxT("A client "); } if (nErrorCode == 0) { strError += wxT("closed connection."); } else if (nErrorCode == 0xFEFF) { strError += wxT(" caused a wxSOCKET_LOST event."); } else { strError += wxT("caused a socket blocking error."); } } else { if (theLogger.IsEnabled(logClient) && nErrorCode != 107) { // 0 -> No Error / Disconect // 107 -> Transport endpoint is not connected if (m_client) { if (!m_client->GetUserName().IsEmpty()) { strError = CFormat(wxT("OnError: Client '%s' (IP:%s) caused an error: %u. Disconnecting client!")) % m_client->GetUserName() % m_client->GetFullIP() % nErrorCode; } else { strError = CFormat(wxT("OnError: Unknown client (IP:%s) caused an error: %u. Disconnecting client!")) % m_client->GetFullIP() % nErrorCode; } } else { strError = CFormat(wxT("OnError: A client caused an error or did something bad (error %u). Disconnecting client !")) % nErrorCode; } } else { strError = wxT("Error 107 (Transport endpoint is not connected)"); } } Disconnect(strError); } bool CClientTCPSocket::PacketReceived(CPacket* packet) { // 0.42e bool bResult = false; uint32 uRawSize = packet->GetPacketSize(); AddDebugLogLineN( logRemoteClient, CFormat(wxT("Packet with protocol %x, opcode %x, size %u received from %s")) % packet->GetProtocol() % packet->GetOpCode() % packet->GetPacketSize() % ( m_client ? m_client->GetFullIP() : wxT("Unknown Client") ) ); wxString exception; try { bool process = true; if ((packet->GetProtocol() == OP_PACKEDPROT) || (packet->GetProtocol() == OP_ED2KV2PACKEDPROT)) { if (!packet->UnPackPacket()) { AddDebugLogLineN(logZLib, wxT("Failed to decompress client TCP packet.")); bResult = false; process = false; } else { AddDebugLogLineN(logRemoteClient, CFormat(wxT("Packet unpacked, new protocol %x, opcode %x, size %u")) % packet->GetProtocol() % packet->GetOpCode() % packet->GetPacketSize()); } } if (process) { switch (packet->GetProtocol()) { case OP_EDONKEYPROT: bResult = ProcessPacket(packet->GetDataBuffer(),uRawSize,packet->GetOpCode()); break; case OP_EMULEPROT: bResult = ProcessExtPacket(packet->GetDataBuffer(), packet->GetPacketSize(), packet->GetOpCode()); break; case OP_ED2KV2HEADER: bResult = ProcessED2Kv2Packet(packet->GetDataBuffer(), packet->GetPacketSize(), packet->GetOpCode()); break; case OP_ED2KV2PACKEDPROT: case OP_PACKEDPROT: // Packed inside packed? wxFAIL; break; default: { theStats::AddDownOverheadOther(uRawSize); if (m_client) { m_client->SetDownloadState(DS_ERROR); } Disconnect(wxT("Unknown protocol")); bResult = false; } } } } catch (const CEOFException& err) { exception = wxT("EOF exception: ") + err.what(); } catch (const CInvalidPacket& err) { exception = wxT("InvalidPacket exception: ") + err.what(); } catch (const wxString& error) { exception = wxT("error: ") + (error.IsEmpty() ? wxString(wxT("Unknown error")) : error); } if (!exception.IsEmpty()) { AddDebugLogLineN( logPacketErrors, CFormat(wxT("Caught %s\nOn packet with protocol %x, opcode %x, size %u\tClientData: %s\n")) % exception % packet->GetProtocol() % packet->GetOpCode() % packet->GetPacketSize() % ( m_client ? m_client->GetClientFullInfo() : wxT("Unknown") ) ); if (m_client) { m_client->SetDownloadState(DS_ERROR); } AddDebugLogLineN( logClient, CFormat( wxT("Client '%s' (IP: %s) caused an error (%s). Disconnecting client!" ) ) % ( m_client ? m_client->GetUserName() : wxString(wxT("Unknown")) ) % ( m_client ? m_client->GetFullIP() : wxString(wxT("Unknown")) ) % exception ); Disconnect(wxT("Caught exception on CClientTCPSocket::ProcessPacket\n")); } return bResult; } SocketSentBytes CClientTCPSocket::SendControlData(uint32 maxNumberOfBytesToSend, uint32 overchargeMaxBytesToSend) { SocketSentBytes returnStatus = CEMSocket::SendControlData(maxNumberOfBytesToSend, overchargeMaxBytesToSend); if(returnStatus.success && (returnStatus.sentBytesControlPackets > 0 || returnStatus.sentBytesStandardPackets > 0)) { ResetTimeOutTimer(); } return returnStatus; } SocketSentBytes CClientTCPSocket::SendFileAndControlData(uint32 maxNumberOfBytesToSend, uint32 overchargeMaxBytesToSend) { SocketSentBytes returnStatus = CEMSocket::SendFileAndControlData(maxNumberOfBytesToSend, overchargeMaxBytesToSend); if(returnStatus.success && (returnStatus.sentBytesControlPackets > 0 || returnStatus.sentBytesStandardPackets > 0)) { ResetTimeOutTimer(); } return returnStatus; } void CClientTCPSocket::SendPacket(CPacket* packet, bool delpacket, bool controlpacket, uint32 actualPayloadSize) { ResetTimeOutTimer(); CEMSocket::SendPacket(packet,delpacket,controlpacket, actualPayloadSize); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ClientTCPSocket.h0000644000175000017500000000561212611472361021405 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // // Handling incoming connections (up or downloadrequests) // #ifndef CLIENTTCPSOCKET_H #define CLIENTTCPSOCKET_H #include "EMSocket.h" // Needed for CEMSocket class CProxyData; //------------------------------------------------------------------------------ // CClientTCPSocket //------------------------------------------------------------------------------ class CUpDownClient; class CPacket; class CTimerWnd; class CClientTCPSocket : public CEMSocket { public: CClientTCPSocket(CUpDownClient* in_client = NULL, const CProxyData *ProxyData = NULL); virtual ~CClientTCPSocket(); void Disconnect(const wxString& strReason); bool InitNetworkData(); bool CheckTimeOut(); void Safe_Delete(); void Safe_Delete_Client(); void OnConnect(int nErrorCode); void OnSend(int nErrorCode); void OnReceive(int nErrorCode); void OnClose(int nErrorCode); void OnError(int nErrorCode); uint32 GetRemoteIP() const { return m_remoteip; } CUpDownClient* GetClient() { return m_client; } virtual void SendPacket(CPacket* packet, bool delpacket = true, bool controlpacket = true, uint32 actualPayloadSize = 0); virtual SocketSentBytes SendControlData(uint32 maxNumberOfBytesToSend, uint32 overchargeMaxBytesToSend); virtual SocketSentBytes SendFileAndControlData(uint32 maxNumberOfBytesToSend, uint32 overchargeMaxBytesToSend); protected: virtual bool PacketReceived(CPacket* packet); private: CUpDownClient* m_client; bool ProcessPacket(const byte* packet, uint32 size, uint8 opcode); bool ProcessExtPacket(const byte* packet, uint32 size, uint8 opcode); bool ProcessED2Kv2Packet(const byte* packet, uint32 size, uint8 opcode); void ResetTimeOutTimer(); void SetClient(CUpDownClient* client); uint32 timeout_timer; uint32 m_remoteip; }; #endif // CLIENTTCPSOCKET_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ClientUDPSocket.cpp0000644000175000017500000003057712611472361021752 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ClientUDPSocket.h" // Interface declarations #include #include // Sometimes we reply with TCP packets. #include #include #include #include // Needed for CFormat #include "Preferences.h" // Needed for CPreferences #include "PartFile.h" // Needed for CPartFile #include "updownclient.h" // Needed for CUpDownClient #include "UploadQueue.h" // Needed for CUploadQueue #include "Packet.h" // Needed for CPacket #include "SharedFileList.h" // Needed for CSharedFileList #include "DownloadQueue.h" // Needed for CDownloadQueue #include "Statistics.h" // Needed for theStats #include "amule.h" // Needed for theApp #include "ClientList.h" // Needed for clientlist (buddy support) #include "ClientTCPSocket.h" // Needed for CClientTCPSocket #include "MemFile.h" // Needed for CMemFile #include "Logger.h" #include "kademlia/kademlia/Kademlia.h" #include "kademlia/utils/KadUDPKey.h" #include #include "EncryptedDatagramSocket.h" // // CClientUDPSocket -- Extended eMule UDP socket // CClientUDPSocket::CClientUDPSocket(const amuleIPV4Address& address, const CProxyData* ProxyData) : CMuleUDPSocket(wxT("Client UDP-Socket"), ID_CLIENTUDPSOCKET_EVENT, address, ProxyData) { if (!thePrefs::IsUDPDisabled()) { Open(); } } void CClientUDPSocket::OnReceive(int errorCode) { CMuleUDPSocket::OnReceive(errorCode); // TODO: A better solution is needed. if (thePrefs::IsUDPDisabled()) { Close(); } } void CClientUDPSocket::OnPacketReceived(uint32 ip, uint16 port, byte* buffer, size_t length) { wxCHECK_RET(length >= 2, wxT("Invalid packet.")); uint8_t *decryptedBuffer; uint32_t receiverVerifyKey; uint32_t senderVerifyKey; int packetLen = CEncryptedDatagramSocket::DecryptReceivedClient(buffer, length, &decryptedBuffer, ip, &receiverVerifyKey, &senderVerifyKey); uint8_t protocol = decryptedBuffer[0]; uint8_t opcode = decryptedBuffer[1]; if (packetLen >= 1) { try { switch (protocol) { case OP_EMULEPROT: ProcessPacket(decryptedBuffer + 2, packetLen - 2, opcode, ip, port); break; case OP_KADEMLIAHEADER: theStats::AddDownOverheadKad(length); if (packetLen >= 2) { Kademlia::CKademlia::ProcessPacket(decryptedBuffer, packetLen, wxUINT32_SWAP_ALWAYS(ip), port, (Kademlia::CPrefs::GetUDPVerifyKey(ip) == receiverVerifyKey), Kademlia::CKadUDPKey(senderVerifyKey, theApp->GetPublicIP(false))); } else { throw wxString(wxT("Kad packet too short")); } break; case OP_KADEMLIAPACKEDPROT: theStats::AddDownOverheadKad(length); if (packetLen >= 2) { uint32_t newSize = packetLen * 10 + 300; // Should be enough... std::vector unpack(newSize); uLongf unpackedsize = newSize - 2; uint16_t result = uncompress(&(unpack[2]), &unpackedsize, decryptedBuffer + 2, packetLen - 2); if (result == Z_OK) { AddDebugLogLineN(logClientKadUDP, wxT("Correctly uncompressed Kademlia packet")); unpack[0] = OP_KADEMLIAHEADER; unpack[1] = opcode; Kademlia::CKademlia::ProcessPacket(&(unpack[0]), unpackedsize + 2, wxUINT32_SWAP_ALWAYS(ip), port, (Kademlia::CPrefs::GetUDPVerifyKey(ip) == receiverVerifyKey), Kademlia::CKadUDPKey(senderVerifyKey, theApp->GetPublicIP(false))); } else { AddDebugLogLineN(logClientKadUDP, wxT("Failed to uncompress Kademlia packet")); } } else { throw wxString(wxT("Kad packet (compressed) too short")); } break; default: AddDebugLogLineN(logClientUDP, CFormat(wxT("Unknown opcode on received packet: 0x%x")) % protocol); } } catch (const wxString& DEBUG_ONLY(e)) { AddDebugLogLineN(logClientUDP, wxT("Error while parsing UDP packet: ") + e); } catch (const CInvalidPacket& DEBUG_ONLY(e)) { AddDebugLogLineN(logClientUDP, wxT("Invalid UDP packet encountered: ") + e.what()); } catch (const CEOFException& DEBUG_ONLY(e)) { AddDebugLogLineN(logClientUDP, wxT("Malformed packet encountered while parsing UDP packet: ") + e.what()); } } } void CClientUDPSocket::ProcessPacket(byte* packet, int16 size, int8 opcode, uint32 host, uint16 port) { switch (opcode) { case OP_REASKCALLBACKUDP: { AddDebugLogLineN( logClientUDP, wxT("Client UDP socket; OP_REASKCALLBACKUDP") ); theStats::AddDownOverheadOther(size); CUpDownClient* buddy = theApp->clientlist->GetBuddy(); if( buddy ) { if( size < 17 || buddy->GetSocket() == NULL ) { break; } if (!md4cmp(packet, buddy->GetBuddyID())) { /* The packet has an initial 16 bytes key for the buddy. This is currently unused, so to make the transformation we discard the first 10 bytes below and then overwrite the other 6 with ip/port. */ CMemFile mem_packet(packet+10,size-10); // Change the ip and port while leaving the rest untouched mem_packet.Seek(0,wxFromStart); mem_packet.WriteUInt32(host); mem_packet.WriteUInt16(port); CPacket* response = new CPacket(mem_packet, OP_EMULEPROT, OP_REASKCALLBACKTCP); AddDebugLogLineN( logClientUDP, wxT("Client UDP socket: send OP_REASKCALLBACKTCP") ); theStats::AddUpOverheadFileRequest(response->GetPacketSize()); buddy->GetSocket()->SendPacket(response); } } break; } case OP_REASKFILEPING: { AddDebugLogLineN( logClientUDP, wxT("Client UDP socket: OP_REASKFILEPING") ); theStats::AddDownOverheadFileRequest(size); CMemFile data_in(packet, size); CMD4Hash reqfilehash = data_in.ReadHash(); CKnownFile* reqfile = theApp->sharedfiles->GetFileByID(reqfilehash); bool bSenderMultipleIpUnknown = false; CUpDownClient* sender = theApp->uploadqueue->GetWaitingClientByIP_UDP(host, port, true, &bSenderMultipleIpUnknown); if (!reqfile) { CPacket* response = new CPacket(OP_FILENOTFOUND,0,OP_EMULEPROT); theStats::AddUpOverheadFileRequest(response->GetPacketSize()); if (sender) { SendPacket(response, host, port, sender->ShouldReceiveCryptUDPPackets(), sender->GetUserHash().GetHash(), false, 0); } else { SendPacket(response, host, port, false, NULL, false, 0); } break; } if (sender){ sender->CheckForAggressive(); //Make sure we are still thinking about the same file if (reqfilehash == sender->GetUploadFileID()) { sender->AddAskedCount(); sender->SetUDPPort(port); sender->SetLastUpRequest(); if (sender->GetUDPVersion() > 3) { sender->ProcessExtendedInfo(&data_in, reqfile); } else if (sender->GetUDPVersion() > 2) { uint16 nCompleteCountLast = sender->GetUpCompleteSourcesCount(); uint16 nCompleteCountNew = data_in.ReadUInt16(); sender->SetUpCompleteSourcesCount(nCompleteCountNew); if (nCompleteCountLast != nCompleteCountNew) { reqfile->UpdatePartsInfo(); } } CMemFile data_out(128); if(sender->GetUDPVersion() > 3) { if (reqfile->IsPartFile()) { static_cast(reqfile)->WritePartStatus(&data_out); } else { data_out.WriteUInt16(0); } } data_out.WriteUInt16(sender->GetUploadQueueWaitingPosition()); CPacket* response = new CPacket(data_out, OP_EMULEPROT, OP_REASKACK); theStats::AddUpOverheadFileRequest(response->GetPacketSize()); AddDebugLogLineN( logClientUDP, wxT("Client UDP socket: OP_REASKACK to ") + sender->GetFullIP()); SendPacket(response, host, port, sender->ShouldReceiveCryptUDPPackets(), sender->GetUserHash().GetHash(), false, 0); } else { AddDebugLogLineN( logClientUDP, wxT("Client UDP socket; ReaskFilePing; reqfile does not match") ); } } else { if (!bSenderMultipleIpUnknown) { if ((theStats::GetWaitingUserCount() + 50) > thePrefs::GetQueueSize()) { CPacket* response = new CPacket(OP_QUEUEFULL,0,OP_EMULEPROT); theStats::AddUpOverheadFileRequest(response->GetPacketSize()); SendPacket(response,host,port, false, NULL, false, 0); // we cannot answer this one encrypted since we dont know this client } } else { AddDebugLogLineN(logClientUDP, CFormat(wxT("UDP Packet received - multiple clients with the same IP but different UDP port found. Possible UDP Portmapping problem, enforcing TCP connection. IP: %s, Port: %u")) % Uint32toStringIP(host) % port); } } break; } case OP_QUEUEFULL: { AddDebugLogLineN( logClientUDP, wxT("Client UDP socket: OP_QUEUEFULL") ); theStats::AddDownOverheadOther(size); CUpDownClient* sender = theApp->downloadqueue->GetDownloadClientByIP_UDP(host,port); if (sender) { sender->SetRemoteQueueFull(true); sender->UDPReaskACK(0); } break; } case OP_REASKACK: { theStats::AddDownOverheadFileRequest(size); CUpDownClient* sender = theApp->downloadqueue->GetDownloadClientByIP_UDP(host,port); if (sender) { CMemFile data_in(packet,size); if ( sender->GetUDPVersion() > 3 ) { sender->ProcessFileStatus(true, &data_in, sender->GetRequestFile()); } uint16 nRank = data_in.ReadUInt16(); sender->SetRemoteQueueFull(false); sender->UDPReaskACK(nRank); } break; } case OP_FILENOTFOUND: { AddDebugLogLineN( logClientUDP, wxT("Client UDP socket: OP_FILENOTFOUND") ); theStats::AddDownOverheadFileRequest(size); CUpDownClient* sender = theApp->downloadqueue->GetDownloadClientByIP_UDP(host,port); if (sender){ sender->UDPReaskFNF(); // may delete 'sender'! sender = NULL; } break; } case OP_DIRECTCALLBACKREQ: { AddDebugLogLineN( logClientUDP, wxT("Client UDP socket: OP_DIRECTCALLBACKREQ") ); theStats::AddDownOverheadOther(size); if (!theApp->clientlist->AllowCallbackRequest(host)) { AddDebugLogLineN(logClientUDP, wxT("Ignored DirectCallback Request because this IP (") + Uint32toStringIP(host) + wxT(") has sent too many requests within a short time")); break; } // do we accept callbackrequests at all? if (Kademlia::CKademlia::IsRunning() && Kademlia::CKademlia::IsFirewalled()) { theApp->clientlist->AddTrackCallbackRequests(host); CMemFile data(packet, size); uint16_t remoteTCPPort = data.ReadUInt16(); CMD4Hash userHash(data.ReadHash()); uint8_t connectOptions = data.ReadUInt8(); CUpDownClient* requester = NULL; CClientList::SourceList clients = theApp->clientlist->GetClientsByHash(userHash); for (CClientList::SourceList::iterator it = clients.begin(); it != clients.end(); ++it) { if ((host == 0 || it->GetIP() == host) && (remoteTCPPort == 0 || it->GetUserPort() == remoteTCPPort)) { requester = it->GetClient(); break; } } if (requester == NULL) { requester = new CUpDownClient(remoteTCPPort, host, 0, 0, NULL, true, true); requester->SetUserHash(CMD4Hash(userHash)); theApp->clientlist->AddClient(requester); } requester->SetConnectOptions(connectOptions, true, false); requester->SetDirectUDPCallbackSupport(false); requester->SetIP(host); requester->SetUserPort(remoteTCPPort); AddDebugLogLineN(logClientUDP, wxT("Accepting incoming DirectCallback Request from ") + Uint32toStringIP(host)); requester->TryToConnect(); } else { AddDebugLogLineN(logClientUDP, wxT("Ignored DirectCallback Request because we do not accept Direct Callbacks at all (") + Uint32toStringIP(host) + wxT(")")); } break; } default: theStats::AddDownOverheadOther(size); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ClientUDPSocket.h0000644000175000017500000000312212611472361021401 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CLIENTUDPSOCKET_H #define CLIENTUDPSOCKET_H #include "MuleUDPSocket.h" class CClientUDPSocket : public CMuleUDPSocket { public: CClientUDPSocket(const amuleIPV4Address &address, const CProxyData *ProxyData = NULL); protected: void OnReceive(int errorCode); private: void OnPacketReceived(uint32 ip, uint16 port, byte* buffer, size_t length); void ProcessPacket(byte* packet, int16 size, int8 opcode, uint32 host, uint16 port); }; #endif // CLIENTUDPSOCKET_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ColorFrameCtrl.cpp0000644000175000017500000001006012611472361021651 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include "ColorFrameCtrl.h" // Interface declarations #include "MuleColour.h" ///////////////////////////////////////////////////////////////////////////// // CColorFrameCtrl CColorFrameCtrl::CColorFrameCtrl( wxWindow* parent,int id, int wid,int hei ) : wxControl(parent,id,wxDefaultPosition,wxSize(wid,hei)), m_brushBack(*wxBLACK_BRUSH), m_brushFrame(CMuleColour(0,255,255).GetBrush()) { SetSizeHints(wid,hei,wid,hei,0,0); wxRect rc=GetClientRect(); m_rectClient.left=rc.x; m_rectClient.top=rc.y; m_rectClient.right=rc.x + wid; m_rectClient.bottom=rc.y + hei; } // CColorFrameCtrl ///////////////////////////////////////////////////////////////////////////// CColorFrameCtrl::~CColorFrameCtrl() { } // ~CColorFrameCtrl BEGIN_EVENT_TABLE(CColorFrameCtrl,wxControl) EVT_PAINT(CColorFrameCtrl::OnPaint) EVT_SIZE(CColorFrameCtrl::OnSize) END_EVENT_TABLE() ///////////////////////////////////////////////////////////////////////////// // CColorFrameCtrl message handlers ///////////////////////////////////////////////////////////////////////////// void CColorFrameCtrl::SetFrameBrushColour(const wxColour& colour) { m_brushFrame = *(wxTheBrushList->FindOrCreateBrush(colour, wxSOLID)); Refresh(FALSE); } // SetFrameColor ///////////////////////////////////////////////////////////////////////////// void CColorFrameCtrl::SetBackgroundBrushColour(const wxColour& colour) { m_brushBack = *(wxTheBrushList->FindOrCreateBrush(colour, wxSOLID)); // clear out the existing garbage, re-start with a clean plot Refresh(FALSE); } // SetBackgroundColor //////////////////////////////////////////////////////////////////////////// void CColorFrameCtrl::OnPaint(wxPaintEvent& WXUNUSED(evt)) { wxPaintDC dc(this); wxRect rc; rc.x=m_rectClient.left; rc.y=m_rectClient.top; rc.width=m_rectClient.right-m_rectClient.left; rc.height=m_rectClient.bottom-m_rectClient.top; dc.SetPen(*wxTRANSPARENT_PEN); dc.SetBrush(m_brushBack); dc.DrawRectangle(rc); dc.SetPen(*wxBLACK_PEN); dc.DrawLine(rc.x+1,rc.y+1,rc.x+rc.width-2,rc.y+1); dc.DrawLine(rc.x+rc.width-2,rc.y+1,rc.x+rc.width-2,rc.y+rc.height-2); dc.DrawLine(rc.x+rc.width-2,rc.y+rc.height-2,rc.x+1,rc.y+rc.height-2); dc.DrawLine(rc.x+1,rc.y+rc.height-2,rc.x+1,rc.y+1); dc.SetPen(*wxWHITE_PEN); dc.DrawLine(rc.x+rc.width-1,rc.y,rc.x+rc.width-1,rc.y+rc.height-1); dc.DrawLine(rc.x+rc.width-1,rc.y+rc.height-1,rc.x,rc.y+rc.height-1); dc.SetPen(*wxGREY_PEN); dc.DrawLine(rc.x+rc.width,rc.y,rc.x,rc.y); dc.DrawLine(rc.x,rc.y,rc.x,rc.y+rc.height); } // OnPaint ///////////////////////////////////////////////////////////////////////////// void CColorFrameCtrl::OnSize(wxSizeEvent& WXUNUSED(evt)) { // NOTE: OnSize automatically gets called during the setup of the control // Kry - Not on Mac. wxRect rc=GetClientRect(); m_rectClient.left=rc.x; m_rectClient.top=rc.y; m_rectClient.right=rc.x + rc.width; m_rectClient.bottom=rc.y + rc.height; } // OnSize // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ColorFrameCtrl.h0000644000175000017500000000366212611472361021330 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef COLORFRAMECTRL_H #define COLORFRAMECTRL_H #include // Needed for wxBrush #include // Needed for wxControl #include "Types.h" // Needed for RECT class wxColour; ///////////////////////////////////////////////////////////////////////////// // CColorFrameCtrl window class CColorFrameCtrl : public wxControl { public: CColorFrameCtrl( wxWindow* parent, int id,int wid,int hei ); virtual ~CColorFrameCtrl(); void SetFrameBrushColour(const wxColour& colour); void SetBackgroundBrushColour(const wxColour& colour); protected: void OnPaint(wxPaintEvent& evt); void OnSize(wxSizeEvent& evt); DECLARE_EVENT_TABLE() RECT m_rectClient; wxBrush m_brushBack,m_brushFrame; }; ///////////////////////////////////////////////////////////////////////////// #endif // COLORFRAMECTRL_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CommentDialog.cpp0000644000175000017500000000537412611472361021531 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "CommentDialog.h" // Interface declarations #include "GuiEvents.h" #include "KnownFile.h" // Needed for CKnownFile #include "muuli_wdr.h" // Needed for commentDlg // CommentDialog dialog //IMPLEMENT_DYNAMIC(CCommentDialog, CDialog) CCommentDialog::CCommentDialog(wxWindow* parent,CKnownFile* file) : wxDialog(parent,-1,_("File Comments"), wxDefaultPosition,wxDefaultSize,wxDEFAULT_DIALOG_STYLE|wxSYSTEM_MENU) { m_file = file; wxSizer* content=commentDlg(this,TRUE); content->SetSizeHints(this); content->Show(this,TRUE); Center(); ratebox = CastChild( IDC_RATELIST, wxChoice ); OnInitDialog(); } CCommentDialog::~CCommentDialog() { } BEGIN_EVENT_TABLE(CCommentDialog,wxDialog) EVT_TEXT_ENTER(IDC_CMT_TEXT, CCommentDialog::OnBnClickedApply) EVT_BUTTON(IDCOK, CCommentDialog::OnBnClickedApply) EVT_BUTTON(IDC_FC_CLEAR, CCommentDialog::OnBnClickedClear) EVT_BUTTON(IDCCANCEL, CCommentDialog::OnBnClickedCancel) END_EVENT_TABLE() void CCommentDialog::OnBnClickedApply(wxCommandEvent& WXUNUSED(evt)) { wxString comment = CastChild( IDC_CMT_TEXT, wxTextCtrl )->GetValue(); CoreNotify_KnownFile_Comment_Set(m_file, comment, (int8)ratebox->GetSelection()); EndModal(0); } void CCommentDialog::OnBnClickedClear(wxCommandEvent& WXUNUSED(evt)) { CastChild(IDC_CMT_TEXT, wxTextCtrl)->SetValue(wxEmptyString); } void CCommentDialog::OnBnClickedCancel(wxCommandEvent& WXUNUSED(evt)) { EndModal(0); } bool CCommentDialog::OnInitDialog() { CastChild(IDC_CMT_TEXT, wxTextCtrl)->SetValue(m_file->GetFileComment()); CastChild(IDC_CMT_TEXT, wxTextCtrl)->SetMaxLength(MAXFILECOMMENTLEN); ratebox->SetSelection(m_file->GetFileRating()); return TRUE; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CommentDialog.h0000644000175000017500000000336112611472361021170 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef COMMENTDIALOG_H #define COMMENTDIALOG_H #include // Needed for wxDialog #include // Needed for wxChoice class CKnownFile; // CCommentDialog dialog class CCommentDialog : public wxDialog { public: CCommentDialog(wxWindow* pParent, CKnownFile* file); // standard constructor virtual ~CCommentDialog(); virtual bool OnInitDialog(); protected: DECLARE_EVENT_TABLE() public: void OnBnClickedApply(wxCommandEvent& evt); void OnBnClickedClear(wxCommandEvent& evt); void OnBnClickedCancel(wxCommandEvent& evt); private: wxChoice* ratebox; CKnownFile* m_file; }; #endif // COMMENTDIALOG_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CommentDialogLst.cpp0000644000175000017500000001035412611472361022206 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "CommentDialogLst.h" // Interface declarations #include "muuli_wdr.h" // Needed for commentLstDlg #include "PartFile.h" // Needed for CPartFile #include // Needed for CFormat #include "MuleListCtrl.h" // Needed for CMuleListCtrl #include "Preferences.h" #include "amule.h" // Needed for theApp BEGIN_EVENT_TABLE(CCommentDialogLst,wxDialog) EVT_BUTTON(IDCOK,CCommentDialogLst::OnBnClickedApply) EVT_BUTTON(IDCREF,CCommentDialogLst::OnBnClickedRefresh) END_EVENT_TABLE() /* * Constructor */ CCommentDialogLst::CCommentDialogLst(wxWindow*parent, CPartFile* file) : wxDialog(parent, -1, wxString(_("File Comments")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER), m_file(file) { wxSizer* content = commentLstDlg(this, true); content->Show(this, true); m_list = CastChild(IDC_LST, CMuleListCtrl); m_list->InsertColumn(0, _("Username"), wxLIST_FORMAT_LEFT, 130); m_list->InsertColumn(1, _("File Name"), wxLIST_FORMAT_LEFT, 130); m_list->InsertColumn(2, _("Rating"), wxLIST_FORMAT_LEFT, 80); m_list->InsertColumn(3, _("Comment"), wxLIST_FORMAT_LEFT, 340); m_list->SetSortFunc(SortProc); UpdateList(); } CCommentDialogLst::~CCommentDialogLst() { ClearList(); } void CCommentDialogLst::OnBnClickedApply(wxCommandEvent& WXUNUSED(evt)) { EndModal(0); } void CCommentDialogLst::OnBnClickedRefresh(wxCommandEvent& WXUNUSED(evt)) { UpdateList(); } void CCommentDialogLst::UpdateList() { int count = 0; ClearList(); FileRatingList list; m_file->GetRatingAndComments(list); for (FileRatingList::const_iterator it = list.begin(); it != list.end(); ++it) { if (!thePrefs::IsCommentFiltered(it->Comment)) { m_list->InsertItem(count, it->UserName); m_list->SetItem(count, 1, it->FileName); m_list->SetItem(count, 2, (it->Rating != -1) ? GetRateString(it->Rating) : wxString(wxT("on"))); m_list->SetItem(count, 3, it->Comment); m_list->SetItemPtrData(count, reinterpret_cast(new SFileRating(*it))); ++count; } } wxString info; if (count == 0) { info = _("No comments"); } else { info = CFormat(wxPLURAL("%u comment", "%u comments", count)) % count; } FindWindow(IDC_CMSTATUS)->SetLabel(info); FindWindow(IDC_CMSTATUS)->GetParent()->Layout(); m_file->UpdateFileRatingCommentAvail(); } void CCommentDialogLst::ClearList() { size_t count = m_list->GetItemCount(); for (size_t i = 0; i < count; ++i) { delete reinterpret_cast(m_list->GetItemData(i)); } m_list->DeleteAllItems(); } int CCommentDialogLst::SortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData) { SFileRating* file1 = reinterpret_cast(item1); SFileRating* file2 = reinterpret_cast(item2); int mod = (sortData & CMuleListCtrl::SORT_DES) ? -1 : 1; switch (sortData & CMuleListCtrl::COLUMN_MASK) { case 0: return mod * file1->UserName.Cmp(file2->UserName); case 1: return mod * file1->FileName.Cmp(file2->FileName); case 2: return mod * (file1->Rating - file2->Rating); case 3: return mod * file1->Comment.Cmp(file2->Comment); default: return 0; } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CommentDialogLst.h0000644000175000017500000000421312611472361021650 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef COMMENTDIALOGLST_H #define COMMENTDIALOGLST_H #include // Needed for wxDialog // Do_not_auto_remove #include class CMuleListCtrl; class wxCommandEvent; class CPartFile; /** * This dialog is used to display file-comments received from other clients. */ class CCommentDialogLst : public wxDialog { public: CCommentDialogLst(wxWindow* pParent, CPartFile* file); ~CCommentDialogLst(); /** * Sorter function for the CMuleListCtrl used to contain the lists. */ static int wxCALLBACK SortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData); private: void OnBnClickedApply(wxCommandEvent& evt); void OnBnClickedRefresh(wxCommandEvent& evt); /** * Updates the contents of the comments/ratings list. */ void UpdateList(); /** * Clears the contents of the comments/ratings list. */ void ClearList(); //! The file to display comments for. CPartFile* m_file; //! The list containing comments/ratings. CMuleListCtrl* m_list; DECLARE_EVENT_TABLE() }; #endif // COMMENTDIALOGLST_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CompilerSpecific.h0000644000175000017500000000253512611472361021670 0ustar morphmorph/* * This file is part of the aMule Project. * * Copyright (c) 2011 aMule Team ( admin@amule.org / http://www.amule.org ) * Copyright (c) 2011 Dévai Tamás ( gonosztopi@amule.org ) * * Any parts of this program derived from the xMule, lMule or eMule project, * or contributed by third-party developers are copyrighted by their * respective authors. * * 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, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ /** * @file * * @brief Tests for compiler-specific features. * * This file helps aMule be compiled with various compilers. */ #ifndef COMPILERSPECIFIC_H #define COMPILERSPECIFIC_H #if defined(__SUNPRO_CC) # define __FUNCTION__ __FILE__+__LINE__ #endif #endif /* COMPILERSPECIFIC_H */ amule_2.3.1+git20151120.0023527bc2.orig/src/Constants.h0000644000175000017500000001060512611472361020421 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CONSTANTS_H #define CONSTANTS_H //! This enum lists the views currently supported by the CClientListCtrl class. enum ViewType { //! The "neutral" state, where nothing is displayed. vtNone = 0, //! Clients which are received files are displayed. vtUploading = 1, //! Clients which are queued for files are displayed. vtQueued = 2, //! All clients are displayed. vtClients = 3 }; // lfroen : custom events for core internal messages // 'cause - there's no wxCommand etc in wxBase enum Core_Event_ID { HTTP_DOWNLOAD_FINISHED = 1, SOURCE_DNS_DONE, UDP_DNS_DONE, SERVER_DNS_DONE }; //! These IDs are used when a download is initiated via the HTTPThread. enum HTTP_Download_File { //! The download is a ipfilter.dat file (possibly compressed). HTTP_IPFilter = 1, //! The download is a server.met file (possibly compressed). HTTP_ServerMet, // Auto-updating server.met has a different callback. HTTP_ServerMetAuto, //! The download is the version check file. HTTP_VersionCheck, //! The download is a notes.dat file (possibly compressed). HTTP_NodesDat, //! The download is a GeoIP database file (possibly compressed). HTTP_GeoIP }; //! Source types for source showing list. enum SourceItemType { //! A source which is currently queued for another file. A4AF_SOURCE, //! A source which has not yet been contacted. UNAVAILABLE_SOURCE, //! A source which is currently queued for this file. AVAILABLE_SOURCE }; //! Types of stat graphs enum StatsGraphType { GRAPH_INVALID = 0, GRAPH_DOWN, GRAPH_UP, GRAPH_CONN, GRAPH_KAD }; // KnownFile constants #define PS_READY 0 #define PS_EMPTY 1 #define PS_WAITINGFORHASH 2 #define PS_HASHING 3 #define PS_ERROR 4 #define PS_INSUFFICIENT 5 #define PS_UNKNOWN 6 #define PS_PAUSED 7 #define PS_COMPLETING 8 #define PS_COMPLETE 9 #define PS_ALLOCATING 10 #define PR_VERYLOW 4 // I Had to change this because // it didn't save negative number // correctly.. Had to modify the // sort function for this change.. #define PR_LOW 0 //* #define PR_NORMAL 1 // Don't change this - needed for // edonkey clients and server! #define PR_HIGH 2 //* #define PR_VERYHIGH 3 #define PR_AUTO 5 #define PR_POWERSHARE 6 //added for powershare (deltaHF) // CUpDownClient constants enum ESourceFrom { SF_NONE, SF_LOCAL_SERVER, SF_REMOTE_SERVER, SF_KADEMLIA, SF_SOURCE_EXCHANGE, SF_PASSIVE, SF_LINK, SF_SOURCE_SEEDS, SF_SEARCH_RESULT }; // downloadstate enum EDownloadState { DS_DOWNLOADING = 0, DS_ONQUEUE, DS_CONNECTED, DS_CONNECTING, DS_WAITCALLBACK, DS_WAITCALLBACKKAD, DS_REQHASHSET, DS_NONEEDEDPARTS, DS_TOOMANYCONNS, DS_TOOMANYCONNSKAD, DS_LOWTOLOWIP, DS_BANNED, DS_ERROR, DS_NONE, DS_REMOTEQUEUEFULL // not used yet, except in statistics }; // uploadstate enum EUploadState { US_UPLOADING = 0, US_ONUPLOADQUEUE, US_WAITCALLBACK, US_CONNECTING, US_PENDING, US_LOWTOLOWIP, US_BANNED, US_ERROR, US_NONE }; // Obfuscation status enum EObfuscationState { OBST_UNDEFINED = 0, OBST_ENABLED, OBST_SUPPORTED, OBST_NOT_SUPPORTED, OBST_DISABLED }; // m_byChatstate enum { MS_NONE = 0, MS_CHATTING, MS_CONNECTING, MS_UNABLETOCONNECT }; // partfile converter status codes enum ConvStatus { CONV_OK = 0, CONV_QUEUE, CONV_INPROGRESS, CONV_OUTOFDISKSPACE, CONV_PARTMETNOTFOUND, CONV_IOERROR, CONV_FAILED, CONV_BADFORMAT, CONV_ALREADYEXISTS }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/CorruptionBlackBox.cpp0000644000175000017500000002322612611472361022555 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2008-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2008-2011 Stu Redman ( sturedman@amule.org ) // Copyright (C) 2002-2011 Merkur ( strEmail.Format("%s@%s", "devteam", "emule-project.net") / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "CorruptionBlackBox.h" #include // needed for PARTSIZE #include "updownclient.h" // Needed for CUpDownClient #include "Logger.h" #include "amule.h" // needed for theApp #include "ClientList.h" #include "NetworkFunctions.h" // needed for Uint32toStringIP #include "OtherFunctions.h" // needed for CastItoXBytes #include // needed for CFormat #include #define CBB_BANTHRESHOLD 32 //% max corrupted data // Record to store information which piece of data was downloaded from which client CCorruptionBlackBox::CCBBRecord::CCBBRecord(uint32 nStartPos, uint32 nEndPos, uint32 dwIP) { if (nStartPos > nEndPos) { wxFAIL; return; } m_nStartPos = nStartPos; m_nEndPos = nEndPos; m_dwIP = dwIP; } // Try to merge new data to an existing record bool CCorruptionBlackBox::CCBBRecord::Merge(uint32 nStartPos, uint32 nEndPos, uint32 dwIP) { if (m_dwIP == dwIP) { if (nStartPos == m_nEndPos + 1) { m_nEndPos = nEndPos; return true; } else if (nEndPos + 1 == m_nStartPos) { m_nStartPos = nStartPos; return true; } } return false; } // Release memory (after download completes) void CCorruptionBlackBox::Free() { m_Records.clear(); m_goodClients.clear(); m_badClients.clear(); } // Store a piece of received data (don't know if it's good or bad yet). // Data is stored in a list for the chunk in belongs to. void CCorruptionBlackBox::TransferredData(uint64 nStartPos, uint64 nEndPos, uint32 senderIP) { if (nStartPos > nEndPos) { wxFAIL; return; } // convert pos to relative block pos uint16 nPart = (uint16)(nStartPos / PARTSIZE); uint32 nRelStartPos = nStartPos - nPart*PARTSIZE; uint32 nRelEndPos = nEndPos - nPart*PARTSIZE; if (nRelEndPos >= PARTSIZE) { // data crosses the partborder, split it // (for the fun of it, this should never happen) nRelEndPos = PARTSIZE-1; TransferredData((nPart+1)*PARTSIZE, nEndPos, senderIP); } // // Let's keep things simple. // We don't request data we already have. // We check if received data exceeds block boundaries. // -> There should not be much overlap here. // So just stuff everything received into the list and only join adjacent blocks. // CRecordList & list = m_Records[nPart]; // this creates the entry if it doesn't exist yet bool merged = false; for (CRecordList::iterator it = list.begin(); it != list.end() && !merged; ++it) { merged = it->Merge(nRelStartPos, nRelEndPos, senderIP); } if (!merged) { list.push_back(CCBBRecord(nRelStartPos, nRelEndPos, senderIP)); AddDebugLogLineN(logPartFile, CFormat(wxT("CorruptionBlackBox(%s): transferred: new record for part %d (%d - %d, %s)")) % m_partNumber % nPart % nRelStartPos % nRelEndPos % Uint32toStringIP(senderIP)); } } // Mark a piece of data as good or bad. // Piece is removed from the chunk list and added to the client's record. void CCorruptionBlackBox::VerifiedData(bool ok, uint16 nPart, uint32 nRelStartPos, uint32 nRelEndPos) { if (nRelStartPos > nRelEndPos) { wxFAIL; return; } CRecordList & list = m_Records[nPart]; #ifdef __DEBUG__ std::map mapDebug; uint32 nDbgVerifiedBytes = 0; size_t listsize1 = list.size(); #endif for (CRecordList::iterator it1 = list.begin(); it1 != list.end();) { CRecordList::iterator it = it1++; uint32 & curStart = it->m_nStartPos; uint32 & curEnd = it->m_nEndPos; uint32 ip = it->m_dwIP; uint32 data = 0; if (curStart >= nRelStartPos && curStart <= nRelEndPos) { // [arg // [cur if (curEnd > nRelEndPos) { // [arg] // [cur] data = nRelEndPos - curStart + 1; curStart = nRelEndPos + 1; } else { // [arg ] // [cur] data = curEnd - curStart + 1; list.erase(it); } } else if (curStart < nRelStartPos && curEnd >= nRelStartPos) { // [arg // [cur if (curEnd > nRelEndPos) { // [arg] // [cur ] data = nRelEndPos - nRelStartPos + 1; // split it: insert new block before current block list.insert(it, CCBBRecord(curStart, nRelStartPos - 1, ip)); curStart = nRelEndPos + 1; } else { // [arg] // [cur] data = curEnd - nRelStartPos + 1; curEnd = nRelStartPos - 1; } // else no overlap } if (data) { if (ok) { m_goodClients[ip].m_downloaded += data; } else { // corrupted data records are always counted as at least blocksize or bigger m_badClients[ip].m_downloaded += (data > EMBLOCKSIZE) ? data : EMBLOCKSIZE;; } DEBUG_ONLY(nDbgVerifiedBytes += data); DEBUG_ONLY(mapDebug[ip] = 1); } } DEBUG_ONLY(size_t listsize2 = list.size()); // when everything is added to the stats drop the whole record if (list.empty()) { m_Records.erase(nPart); } #ifdef __DEBUG__ AddDebugLogLineN(logPartFile, CFormat(wxT("CorruptionBlackBox(%s): found and marked %d recorded bytes of %d as %s in part %d, %d records found, %d records left, %d different clients")) % m_partNumber % nDbgVerifiedBytes % (nRelEndPos-nRelStartPos+1) % (ok ? wxT("verified") : wxT("corrupt")) % nPart % listsize1 % listsize2 % mapDebug.size()); #endif } // Check all clients that uploaded corrupted data, // and ban them if they didn't upload enough good data too. void CCorruptionBlackBox::EvaluateData() { CCBBClientMap::iterator it = m_badClients.begin(); for (; it != m_badClients.end(); ++it) { uint32 ip = it->first; uint64 bad = it->second.m_downloaded; if (!bad) { wxFAIL; // this should not happen continue; } uint64 good = 0; CCBBClientMap::iterator it2 = m_goodClients.find(ip); if (it2 != m_goodClients.end()) { good = it2->second.m_downloaded; } int nCorruptPercentage = bad * 100 / (bad + good); if (nCorruptPercentage > CBB_BANTHRESHOLD) { CUpDownClient* pEvilClient = theApp->clientlist->FindClientByIP(ip); wxString clientName; if (pEvilClient != NULL) { clientName = pEvilClient->GetClientShortInfo(); AddDebugLogLineN(logPartFile, CFormat(wxT("CorruptionBlackBox(%s): Banning: Found client which sent %d of %d corrupted data, %s")) % m_partNumber % bad % (good + bad) % pEvilClient->GetClientFullInfo()); theApp->clientlist->AddTrackClient(pEvilClient); pEvilClient->Ban(); // Identified as sender of corrupt data // Stop download right away pEvilClient->SetDownloadState(DS_BANNED); if (pEvilClient->Disconnected(wxT("Upload of corrupted data"))) { pEvilClient->Safe_Delete(); } } else { clientName = Uint32toStringIP(ip); theApp->clientlist->AddBannedClient(ip); } AddLogLineN(CFormat(_("Banned client %s for sending %s corrupt data of %s total for the file '%s'")) % clientName % CastItoXBytes(bad) % CastItoXBytes(good + bad) % m_fileName); } else { CUpDownClient* pSuspectClient = theApp->clientlist->FindClientByIP(ip); if (pSuspectClient != NULL) { AddDebugLogLineN(logPartFile, CFormat(wxT("CorruptionBlackBox(%s): Reporting: Found client which probably sent %d of %d corrupted data, but it is within the acceptable limit, %s")) % m_partNumber % bad % (good + bad) % pSuspectClient->GetClientFullInfo()); theApp->clientlist->AddTrackClient(pSuspectClient); } else { AddDebugLogLineN(logPartFile, CFormat(wxT("CorruptionBlackBox(%s): Reporting: Found client which probably sent %d of %d corrupted data, but it is within the acceptable limit, %s")) % m_partNumber % bad % (good + bad) % Uint32toStringIP(ip)); } } } } // Full debug output of all data void CCorruptionBlackBox::DumpAll() { #ifdef __DEBUG__ AddDebugLogLineN(logPartFile, wxT("CBB Dump Records")); std::map::iterator it = m_Records.begin(); for (; it != m_Records.end(); ++it) { uint16 block = it->first; CRecordList & list = it->second; for (CRecordList::iterator it2 = list.begin(); it2 != list.end(); ++it2) { AddDebugLogLineN(logPartFile, CFormat(wxT("CBBD %6d %.16s %10d - %10d")) % block % Uint32toStringIP(it2->m_dwIP) % it2->m_nStartPos % it2->m_nEndPos); } } if (!m_goodClients.empty()) { AddDebugLogLineN(logPartFile, wxT("CBB Dump good Clients")); CCBBClientMap::iterator it3 = m_goodClients.begin(); for (; it3 != m_goodClients.end(); ++it3) { AddDebugLogLineN(logPartFile, CFormat(wxT("CBBD %.16s good %10d")) % Uint32toStringIP(it3->first) % it3->second.m_downloaded); } } if (!m_badClients.empty()) { AddDebugLogLineN(logPartFile, wxT("CBB Dump bad Clients")); CCBBClientMap::iterator it3 = m_badClients.begin(); for (; it3 != m_badClients.end(); ++it3) { AddDebugLogLineN(logPartFile, CFormat(wxT("CBBD %.16s bad %10d")) % Uint32toStringIP(it3->first) % it3->second.m_downloaded); } } #endif } amule_2.3.1+git20151120.0023527bc2.orig/src/CorruptionBlackBox.h0000644000175000017500000000451612611472361022223 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2008-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2008-2011 Stu Redman ( sturedman@amule.org ) // Copyright (C) 2002-2011 Merkur ( strEmail.Format("%s@%s", "devteam", "emule-project.net") / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CORRUPTIONBLACKBOX_H #define CORRUPTIONBLACKBOX_H #include "Types.h" #include #include class CCorruptionBlackBox { public: void Free(); void TransferredData(uint64 nStartPos, uint64 nEndPos, uint32 senderIP); void VerifiedData(bool ok, uint16 nPart, uint32 nRelStartPos, uint32 nRelEndPos); void EvaluateData(); void SetPartFileInfo(const wxString& name, const wxString& nr) { m_fileName = name; m_partNumber = nr; } void DumpAll(); private: // downloaded data for each part class CCBBRecord { public: CCBBRecord(uint32 nStartPos, uint32 nEndPos, uint32 dwIP); bool Merge(uint32 nStartPos, uint32 nEndPos, uint32 dwIP); // Startpos / Endpos relative to part uint32 m_nStartPos; uint32 m_nEndPos; // IP of client uint32 m_dwIP; }; typedef std::list CRecordList; std::map m_Records; // good/bad data for each client class CCBBClient { public: CCBBClient() { m_downloaded = 0; } uint64 m_downloaded; }; typedef std::map CCBBClientMap; CCBBClientMap m_goodClients, m_badClients; // for debug prints wxString m_fileName; wxString m_partNumber; }; #endif amule_2.3.1+git20151120.0023527bc2.orig/src/CryptoPP_Inc.h0000644000175000017500000000354312611472361020761 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CRYPTOPP_INC_H #define CRYPTOPP_INC_H // WIN32: force usage of Cryptopp >= 5.5 (no reason to use an older one) // and so get rid of "weak algorithm" warnings #if defined(_WIN32) && !defined(__WEAK_CRYPTO__) #define __WEAK_CRYPTO__ 1 #endif #ifdef __WEAK_CRYPTO__ #define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1 #endif #ifndef CRYPTOPP_INCLUDE_PREFIX #ifdef HAVE_CONFIG_H #include "config.h" // Needed for CRYPTOPP_INCLUDE_PREFIX #else #define CRYPTOPP_INCLUDE_PREFIX cryptopp #endif #endif #define noinline noinline #define CRYPTO_HEADER(hdr) #include CRYPTO_HEADER(config.h) #include CRYPTO_HEADER(md4.h) #include CRYPTO_HEADER(rsa.h) #include CRYPTO_HEADER(base64.h) #include CRYPTO_HEADER(osrng.h) #include CRYPTO_HEADER(files.h) #include CRYPTO_HEADER(sha.h) #include CRYPTO_HEADER(des.h) #endif /* CRYPTOPP_INC_H */ amule_2.3.1+git20151120.0023527bc2.orig/src/DataToText.cpp0000644000175000017500000001122512611472361021020 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include "Constants.h" #include wxString PriorityToStr( int priority, bool isAuto ) { if ( isAuto ) { switch ( priority ) { case PR_LOW: return _("Auto [Lo]"); case PR_NORMAL: return _("Auto [No]"); case PR_HIGH: return _("Auto [Hi]"); } } else { switch ( priority ) { case PR_VERYLOW: return _("Very low"); case PR_LOW: return _("Low"); case PR_NORMAL: return _("Normal"); case PR_HIGH: return _("High"); case PR_VERYHIGH: return _("Very High"); case PR_POWERSHARE: return _("Release"); } } wxFAIL; return _("Unknown"); } wxString DownloadStateToStr( int state, bool queueFull ) { switch ( state ) { case DS_CONNECTING: return _("Connecting"); case DS_CONNECTED: return _("Asking"); case DS_WAITCALLBACK: return _("Connecting via server"); case DS_ONQUEUE: return ( queueFull ? _("Queue Full") : _("On Queue") ); case DS_DOWNLOADING: return _("Downloading"); case DS_REQHASHSET: return _("Receiving hashset"); case DS_NONEEDEDPARTS: return _("No needed parts"); case DS_LOWTOLOWIP: return _("Cannot connect LowID to LowID"); case DS_TOOMANYCONNS: return _("Too many connections"); case DS_NONE: return _("Unknown"); case DS_WAITCALLBACKKAD: return _("Connecting via Kad"); case DS_TOOMANYCONNSKAD: return _("Too many Kad connections"); case DS_BANNED: return _("Banned"); case DS_ERROR: return _("Connection Error"); case DS_REMOTEQUEUEFULL: return _("Remote Queue Full"); } wxFAIL; return _("Unknown"); } const wxString GetSoftName(unsigned int software_ident) { switch (software_ident) { case SO_OLDEMULE: case SO_EMULE: return wxT("eMule"); case SO_CDONKEY: return wxT("cDonkey"); case SO_LXMULE: return wxT("(l/x)Mule"); case SO_AMULE: return wxT("aMule"); case SO_SHAREAZA: case SO_NEW_SHAREAZA: case SO_NEW2_SHAREAZA: return wxT("Shareaza"); case SO_EMULEPLUS: return wxT("eMule+"); case SO_HYDRANODE: return wxT("HydraNode"); case SO_MLDONKEY: return wxTRANSLATE("Old MLDonkey"); case SO_NEW_MLDONKEY: case SO_NEW2_MLDONKEY: return wxTRANSLATE("New MLDonkey"); case SO_LPHANT: return wxT("lphant"); case SO_EDONKEYHYBRID: return wxT("eDonkeyHybrid"); case SO_EDONKEY: return wxT("eDonkey"); case SO_UNKNOWN: return wxTRANSLATE("Unknown"); case SO_COMPAT_UNK: return wxTRANSLATE("eMule Compatible"); default: return wxEmptyString; } } wxString OriginToText(unsigned int source_from) { switch ((ESourceFrom)source_from) { case SF_LOCAL_SERVER: return wxTRANSLATE("Local Server"); case SF_REMOTE_SERVER: return wxTRANSLATE("Remote Server"); case SF_KADEMLIA: return wxTRANSLATE("Kad"); case SF_SOURCE_EXCHANGE: return wxTRANSLATE("Source Exchange"); case SF_PASSIVE: return wxTRANSLATE("Passive"); case SF_LINK: return wxTRANSLATE("Link"); case SF_SOURCE_SEEDS: return wxTRANSLATE("Source Seeds"); case SF_SEARCH_RESULT: return wxTRANSLATE("Search Result"); case SF_NONE: default: return wxTRANSLATE("Unknown"); } } wxString GetConversionState(unsigned int state) { switch (state) { case CONV_OK : return _("Completed"); case CONV_INPROGRESS : return _("In progress"); case CONV_OUTOFDISKSPACE : return _("ERROR: Out of diskspace"); case CONV_PARTMETNOTFOUND : return _("ERROR: Partmet not found"); case CONV_IOERROR : return _("ERROR: IO error!"); case CONV_FAILED : return _("ERROR: Failed!"); case CONV_QUEUE : return _("Queued"); case CONV_ALREADYEXISTS : return _("Already downloading"); case CONV_BADFORMAT : return _("Unknown or bad tempfile format."); default: return wxT("?"); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/DataToText.h0000644000175000017500000000346412611472361020473 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef DATATOTEXT_H #define DATATOTEXT_H class wxString; // Returns the textual representation of a priority value wxString PriorityToStr( int priority, bool isAuto ); // Returns the textual representation of download states wxString DownloadStateToStr( int state, bool queueFull ); /** * @return Human-readable client software name. */ const wxString GetSoftName( unsigned int software_ident ); /** * Get "Source From" text, i.e. where we got the source from. * * @param source_from A ESourceFrom enum value. * @return Human-readable text for the ESourceFrom enum values. */ wxString OriginToText(unsigned int source_from); /** * @return The textual representation of a partfile conversion state. */ wxString GetConversionState(unsigned int state); #endif /* DATATOTEXT_H */ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/DeadSourceList.cpp0000644000175000017500000001030712611472361021651 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "DeadSourceList.h" #include #include "updownclient.h" // Needed for CUpDownClient #define CLEANUPTIME MIN2MS(60) #define BLOCKTIME (::GetTickCount() + (m_bGlobalList ? MIN2MS(30) : MIN2MS(45))) #define BLOCKTIMEFW (::GetTickCount() + (m_bGlobalList ? MIN2MS(45) : MIN2MS(60))) /////////////////////////////////////////////////////////////////////////////////////// //// CDeadSource CDeadSourceList::CDeadSource::CDeadSource(uint32 ID, uint16 Port, uint32 ServerIP, uint16 KadPort) { m_ID = ID; m_Port = Port; m_KadPort = KadPort; m_ServerIP = ServerIP; m_TimeStamp = 0; } void CDeadSourceList::CDeadSource::SetTimeout( uint32 t ) { m_TimeStamp = t; } uint32 CDeadSourceList::CDeadSource::GetTimeout() const { return m_TimeStamp; } bool CDeadSourceList::CDeadSource::operator==(const CDeadSource& other) const { if ( m_ID == other.m_ID ) { if ( m_Port == other.m_Port || m_KadPort == other.m_KadPort ) { if ( IsLowID( m_ID ) ) { return m_ServerIP == other.m_ServerIP; } else { return true; } } } return false; } /////////////////////////////////////////////////////////////////////////////////////// //// CDeadSourceList CDeadSourceList::CDeadSourceList(bool isGlobal) { m_dwLastCleanUp = ::GetTickCount(); m_bGlobalList = isGlobal; } uint32 CDeadSourceList::GetDeadSourcesCount() const { return m_sources.size(); } bool CDeadSourceList::IsDeadSource(const CUpDownClient* client) { CDeadSource source( client->GetUserIDHybrid(), client->GetUserPort(), client->GetServerIP(), client->GetKadPort() ); DeadSourcePair range = m_sources.equal_range( client->GetUserIDHybrid() ); for ( ; range.first != range.second; range.first++ ) { if ( range.first->second == source ) { // Check if the entry is still valid if ( range.first->second.GetTimeout() > GetTickCount() ) { return true; } // The source is no longer dead, so remove it to reduce the size of the list m_sources.erase( range.first ); break; } } return false; } void CDeadSourceList::AddDeadSource( const CUpDownClient* client ) { CDeadSource source( client->GetUserIDHybrid(), client->GetUserPort(), client->GetServerIP(), client->GetKadPort() ); // Set the timeout for the new source source.SetTimeout( client->HasLowID() ? BLOCKTIMEFW : BLOCKTIME ); // Check if the source is already listed DeadSourcePair range = m_sources.equal_range( client->GetUserIDHybrid() ); for ( ; range.first != range.second; range.first++ ) { if ( range.first->second == source ) { range.first->second = source; return; } } m_sources.insert( DeadSourceMap::value_type( client->GetUserIDHybrid(), source ) ); // Check if we should cleanup the list. This is // done to avoid a buildup of stale entries. if ( GetTickCount() - m_dwLastCleanUp > CLEANUPTIME ) { CleanUp(); } } void CDeadSourceList::CleanUp() { m_dwLastCleanUp = ::GetTickCount(); DeadSourceIterator it = m_sources.begin(); for ( ; it != m_sources.end(); ) { DeadSourceIterator it1 = it++; if ( it1->second.GetTimeout() < m_dwLastCleanUp ) { m_sources.erase( it1 ); } } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/DeadSourceList.h0000644000175000017500000000742412611472361021324 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef DEADSOURCELIST_H #define DEADSOURCELIST_H #include #include "Types.h" class CUpDownClient; /** * This class keeps track of "invalid" sources. * * A dead source is a source that has been evaluated as being useles * which can be due to serveral reasons, such as not responding to * queries. This list then allows for those sources to be ignored * for an set ammount of time in order to avoid the overhead of * trying to connect to them. * * This is important, since these sources would be removed and readded * repeatedly, causing extra overhead with no gain. */ class CDeadSourceList { public: /** * Constructor. * * @param isGlobal Specifies if the list is global or not, used for debugging. */ CDeadSourceList(bool isGlobal = false); /** * Adds a client to the list of dead sources. */ void AddDeadSource(const CUpDownClient* client); /** * Returns true if the client object is a dead source. */ bool IsDeadSource(const CUpDownClient* client); /** * Returns the number of sources. */ uint32 GetDeadSourcesCount() const; private: /** * Removes too old entries from the list. */ void CleanUp(); /** * Record of dead source. */ class CDeadSource { public: /** * Constructor. * * @param ID The IP/ID of the recorded client. * @param Port The TCP port of the recorded client. * @param ServerIP The ip of the connected server. * @param KadPort The Kad port used by the client. * * Notes: * * ID must be specified. * * Either KadPort or Port must be specified. * * For lowid sources, ServerIP must be specified. * */ CDeadSource(uint32 ID, uint16 Port, uint32 ServerIP, uint16 KadPort); /** * Equality operator. */ bool operator==(const CDeadSource& other) const; /** * Sets the timestamp for the time where this entry will expire. */ void SetTimeout( uint32 t ); /** * Returns the timestamp of this entry. */ uint32 GetTimeout() const; private: //! The ID/IP of the client. uint32 m_ID; //! The TCP port of the client uint16 m_Port; //! The Kad port of the client. uint16 m_KadPort; //! The IP of the server the client is connected to. uint32 m_ServerIP; //! The timestamp of DOOM! uint32 m_TimeStamp; }; typedef std::multimap< uint32, CDeadSource > DeadSourceMap; typedef DeadSourceMap::iterator DeadSourceIterator; typedef std::pair DeadSourcePair; //! List of currently dead sources. DeadSourceMap m_sources; //! The timestamp of when the last cleanup was performed. uint32 m_dwLastCleanUp; //! Specifies if the list is global or not. bool m_bGlobalList; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/DirectoryTreeCtrl.cpp0000644000175000017500000002550212611472361022413 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2003-2011 Robert Rostek ( tecxx@rrs.at ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "DirectoryTreeCtrl.h" // Interface declarations #include #include #include #include #include #include "amule.h" // Needed for theApp #include "muuli_wdr.h" // Needed for amuleSpecial BEGIN_EVENT_TABLE(CDirectoryTreeCtrl, wxTreeCtrl) EVT_TREE_ITEM_RIGHT_CLICK(wxID_ANY, CDirectoryTreeCtrl::OnRButtonDown) EVT_TREE_ITEM_ACTIVATED(wxID_ANY, CDirectoryTreeCtrl::OnItemActivated) EVT_TREE_ITEM_EXPANDED(wxID_ANY, CDirectoryTreeCtrl::OnItemExpanding) END_EVENT_TABLE() class CItemData : public wxTreeItemData { public: CItemData(const CPath& pathComponent) : m_path(pathComponent) { } ~CItemData() {} const CPath& GetPathComponent() const { return m_path; } private: CPath m_path; }; CDirectoryTreeCtrl::CDirectoryTreeCtrl(wxWindow* parent, int id, const wxPoint& pos, wxSize siz, int flags) : wxTreeCtrl(parent,id,pos,siz,flags,wxDefaultValidator,wxT("ShareTree")) { m_IsInit = false; HasChanged = false; #ifdef CLIENT_GUI m_IsRemote = !theApp->m_connect->IsConnectedToLocalHost(); #else m_IsRemote = false; #endif } CDirectoryTreeCtrl::~CDirectoryTreeCtrl() { } enum { IMAGE_FOLDER = 0, IMAGE_FOLDER_SUB_SHARED }; void CDirectoryTreeCtrl::Init() { // already done ? if (m_IsInit) { return; } m_IsInit = true; // init image(s) wxImageList* images = new wxImageList(16, 16); images->Add(wxBitmap(amuleSpecial(1))); images->Add(wxBitmap(amuleSpecial(2))); // Gives wxTreeCtrl ownership of the list AssignImageList(images); // Create an empty root item, which we can // safely append when creating a full path. m_root = AddRoot(wxEmptyString, IMAGE_FOLDER, -1, new CItemData(CPath())); if (!m_IsRemote) { #ifndef __WINDOWS__ AddChildItem(m_root, CPath(wxT("/"))); #else // this might take awhile, so change the cursor ::wxSetCursor(*wxHOURGLASS_CURSOR); // retrieve bitmask of all drives available uint32 drives = GetLogicalDrives(); drives >>= 1; for (char drive = 'C'; drive <= 'Z'; drive++) { drives >>= 1; if (! (drives & 1)) { // skip non existant drives continue; } wxString driveStr = CFormat(wxT("%c:")) % drive; uint32 type = GetDriveType((driveStr + wxT("\\")).wc_str()); // skip removable/undefined drives, share only fixed or remote drives if ((type == 3 || type == 4) // fixed drive / remote drive && CPath::DirExists(driveStr)) { AddChildItem(m_root, CPath(driveStr)); } } ::wxSetCursor(*wxSTANDARD_CURSOR); #endif } HasChanged = false; UpdateSharedDirectories(); } void CDirectoryTreeCtrl::OnItemExpanding(wxTreeEvent& evt) { wxTreeItemId hItem = evt.GetItem(); // Force reloading of the path DeleteChildren(hItem); AddSubdirectories(hItem, GetFullPath(hItem)); SortChildren(hItem); } void CDirectoryTreeCtrl::OnItemActivated(wxTreeEvent& evt) { if (!m_IsRemote) { CheckChanged(evt.GetItem(), !IsBold(evt.GetItem()), false); HasChanged = true; } } void CDirectoryTreeCtrl::OnRButtonDown(wxTreeEvent& evt) { if (m_IsRemote) { SelectItem(evt.GetItem()); // looks weird otherwise } else { // this might take awhile, so change the cursor ::wxSetCursor(*wxHOURGLASS_CURSOR); MarkChildren(evt.GetItem(), !IsBold(evt.GetItem()), false); ::wxSetCursor(*wxSTANDARD_CURSOR); HasChanged = true; } } void CDirectoryTreeCtrl::MarkChildren(wxTreeItemId hChild, bool mark, bool recursed) { // Ensure that children are added, otherwise we might only get a "." entry. if (!IsExpanded(hChild) && ItemHasChildren(hChild)) { DeleteChildren(hChild); AddSubdirectories(hChild, GetFullPath(hChild)); SortChildren(hChild); } wxTreeItemIdValue cookie; wxTreeItemId hChild2 = GetFirstChild(hChild, cookie); if (hChild2.IsOk()) { SetHasSharedSubdirectory(hChild, mark); } while (hChild2.IsOk()) { MarkChildren(hChild2, mark, true); hChild2 = GetNextSibling(hChild2); } CheckChanged(hChild, mark, recursed); } void CDirectoryTreeCtrl::AddChildItem(wxTreeItemId hBranch, const CPath& item) { wxCHECK_RET(hBranch.IsOk(), wxT("Attempted to add children to invalid item")); CPath fullPath = GetFullPath(hBranch).JoinPaths(item); wxTreeItemId treeItem = AppendItem(hBranch, item.GetPrintable(), IMAGE_FOLDER, -1, new CItemData(item)); // BUG: wxGenericTreeControl won't set text calculated sizes when the item is created in AppendItem. // This causes asserts on Mac and possibly other systems, so we have to repeat setting the string here. SetItemText(treeItem, item.GetPrintable()); if (IsShared(fullPath)) { SetItemBold(treeItem, true); } if (HasSharedSubdirectory(fullPath)) { SetHasSharedSubdirectory(treeItem, true); } if (HasSubdirectories(fullPath)) { // Trick. will show + if it has subdirs AppendItem(treeItem, wxT(".")); } } CPath CDirectoryTreeCtrl::GetFullPath(wxTreeItemId hItem) { { wxCHECK_MSG(hItem.IsOk(), CPath(), wxT("Invalid item in GetFullPath")); } CPath result; for (; hItem.IsOk(); hItem = GetItemParent(hItem)) { CItemData* data = dynamic_cast(GetItemData(hItem)); wxCHECK_MSG(data, CPath(), wxT("Missing data-item in GetFullPath")); result = data->GetPathComponent().JoinPaths(result); } return result; } void CDirectoryTreeCtrl::AddSubdirectories(wxTreeItemId hBranch, const CPath& path) { wxCHECK_RET(path.IsOk(), wxT("Invalid path in AddSubdirectories")); CDirIterator sharedDir(path); CPath dirName = sharedDir.GetFirstFile(CDirIterator::Dir); while (dirName.IsOk()) { AddChildItem(hBranch, dirName); dirName = sharedDir.GetNextFile(); } } bool CDirectoryTreeCtrl::HasSubdirectories(const CPath& folder) { // Prevent error-messages if we try to traverse somewhere we have no access. wxLogNull logNo; return CDirIterator(folder).HasSubDirs(); } void CDirectoryTreeCtrl::GetSharedDirectories(PathList* list) { wxCHECK_RET(list, wxT("Invalid list in GetSharedDirectories")); for (SharedMap::iterator it = m_lstShared.begin(); it != m_lstShared.end(); ++it) { list->push_back(it->second); } } void CDirectoryTreeCtrl::SetSharedDirectories(PathList* list) { wxCHECK_RET(list, wxT("Invalid list in SetSharedDirectories")); m_lstShared.clear(); for (PathList::iterator it = list->begin(); it != list->end(); ++it) { m_lstShared.insert(SharedMapItem(GetKey(*it), *it)); } if (m_IsInit) { UpdateSharedDirectories(); } } wxString CDirectoryTreeCtrl::GetKey(const CPath& path) { if (m_IsRemote) { return path.GetRaw(); } // Sanity check, see IsSameAs() in Path.cpp const wxString cwd = wxGetCwd(); const int flags = (wxPATH_NORM_ALL | wxPATH_NORM_CASE) & ~wxPATH_NORM_ENV_VARS; wxFileName fn(path.GetRaw()); fn.Normalize(flags, cwd); return fn.GetFullPath(); } void CDirectoryTreeCtrl::UpdateSharedDirectories() { // ugly hack to at least show shared dirs in remote gui if (m_IsRemote) { DeleteChildren(m_root); for (SharedMap::iterator it = m_lstShared.begin(); it != m_lstShared.end(); ++it) { AppendItem(m_root, it->second.GetPrintable(), IMAGE_FOLDER, -1, new CItemData(it->second)); } return; } // Mark all shared root items (on windows this can be multiple // drives, on unix there is only the root dir). wxTreeItemIdValue cookie; wxTreeItemId hChild = GetFirstChild(GetRootItem(), cookie); while (hChild.IsOk()) { // Does this drive have shared subfolders? if (HasSharedSubdirectory(GetFullPath(hChild))) { SetHasSharedSubdirectory(hChild, true); } // Is this drive shared? if (IsShared(GetFullPath(hChild))) { SetItemBold(hChild, true); } hChild = GetNextSibling(hChild); } } bool CDirectoryTreeCtrl::HasSharedSubdirectory(const CPath& path) { SharedMap::iterator it = m_lstShared.upper_bound(GetKey(path) + wxFileName::GetPathSeparator()); if (it == m_lstShared.end()) { return false; } // upper_bound() doesn't find the directory itself, so no need to check for that. return it->second.StartsWith(path); } void CDirectoryTreeCtrl::SetHasSharedSubdirectory(wxTreeItemId hItem, bool add) { SetItemImage(hItem, add ? IMAGE_FOLDER_SUB_SHARED : IMAGE_FOLDER); } void CDirectoryTreeCtrl::CheckChanged(wxTreeItemId hItem, bool bChecked, bool recursed) { if (IsBold(hItem) != bChecked) { SetItemBold(hItem, bChecked); if (bChecked) { AddShare(GetFullPath(hItem)); } else { DelShare(GetFullPath(hItem)); } if (!recursed) { UpdateParentItems(hItem, bChecked); } } } bool CDirectoryTreeCtrl::IsShared(const CPath& path) { wxCHECK_MSG(path.IsOk(), false, wxT("Invalid path in IsShared")); return m_lstShared.find(GetKey(path)) != m_lstShared.end(); } void CDirectoryTreeCtrl::AddShare(const CPath& path) { wxCHECK_RET(path.IsOk(), wxT("Invalid path in AddShare")); if (IsShared(path)) { return; } m_lstShared.insert(SharedMapItem(GetKey(path), path)); } void CDirectoryTreeCtrl::DelShare(const CPath& path) { wxCHECK_RET(path.IsOk(), wxT("Invalid path in DelShare")); m_lstShared.erase(GetKey(path)); } void CDirectoryTreeCtrl::UpdateParentItems(wxTreeItemId hChild, bool add) { wxTreeItemId parent = hChild; while (parent != GetRootItem()) { parent = GetItemParent(parent); if (add) { if (GetItemImage(parent) == IMAGE_FOLDER_SUB_SHARED) { // parent already marked -> so are all its parents, finished break; } else { SetHasSharedSubdirectory(parent, true); } } else { if (GetItemImage(parent) == IMAGE_FOLDER_SUB_SHARED) { // check if now there are still other shared dirs if (HasSharedSubdirectory(GetFullPath(parent))) { // yes, then further parents can stay red break; } else { // no, further parents have to be checked too SetHasSharedSubdirectory(parent, false); } } else { // should not happen (unmark child of which the parent is already unmarked break; } } } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/DirectoryTreeCtrl.h0000644000175000017500000000642712611472361022065 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Robert Rostek ( tecxx@rrs.at ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef DIRECTORYTREECTRL_H #define DIRECTORYTREECTRL_H #include #include #include #include class CDirectoryTreeCtrl : public wxTreeCtrl { public: typedef std::vector PathList; CDirectoryTreeCtrl(wxWindow* parent, int id, const wxPoint& pos, wxSize siz, int flags); virtual ~CDirectoryTreeCtrl(); // get all shared directories void GetSharedDirectories(PathList* list); // set list of shared directories void SetSharedDirectories(PathList* list); // User made any changes to list? bool HasChanged; // initialize control void Init(); private: // add a new item void AddChildItem(wxTreeItemId hBranch, const CPath& item); // add subdirectory items void AddSubdirectories(wxTreeItemId hBranch, const CPath& path); // returns true if folder has at least one subdirectory bool HasSubdirectories(const CPath& path); // return the full path of an item (like C:\abc\somewhere\inheaven\) CPath GetFullPath(wxTreeItemId hItem); // check status of an item has changed void CheckChanged(wxTreeItemId hItem, bool bChecked, bool recursed); // returns true if a subdirectory of strDir is shared bool HasSharedSubdirectory(const CPath& path); // set shared directories according to list void UpdateSharedDirectories(); // when sharing a directory, make all parent directories red void UpdateParentItems(wxTreeItemId hChild, bool add); // set color red if there's a shared subdirectory void SetHasSharedSubdirectory(wxTreeItemId hItem, bool add); // share list access bool IsShared(const CPath& path); void AddShare(const CPath& path); void DelShare(const CPath& path); void MarkChildren(wxTreeItemId hChild, bool mark, bool recursed); void OnItemExpanding(wxTreeEvent& evt); void OnRButtonDown(wxTreeEvent& evt); void OnItemActivated(wxTreeEvent& evt); typedef std::pair SharedMapItem; typedef std::map SharedMap; SharedMap m_lstShared; // get map key from path (normalized path) wxString GetKey(const CPath& path); bool m_IsInit; // Are we running the remote GUI, and from a remote location? bool m_IsRemote; wxTreeItemId m_root; DECLARE_EVENT_TABLE() }; #undef wxTreeItemId #endif // DIRECTORYTREECTRL_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/DownloadClient.cpp0000644000175000017500000015417612611472361021722 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "updownclient.h" // Needed for CUpDownClient #include #include #include #include #include #include #include #include // Needed for std:exp #include "ClientCredits.h" // Needed for CClientCredits #include "ClientUDPSocket.h" // Needed for CClientUDPSocket #include "DownloadQueue.h" // Needed for CDownloadQueue #include "Preferences.h" // Needed for thePrefs #include "Packet.h" // Needed for CPacket #include "MemFile.h" // Needed for CMemFile #include "ClientTCPSocket.h"// Needed for CClientTCPSocket #include "ListenSocket.h" // Needed for CListenSocket #include "amule.h" // Needed for theApp #include "PartFile.h" // Needed for CPartFile #include "SharedFileList.h" #include "Statistics.h" // Needed for theStats #include "Logger.h" #include "GuiEvents.h" // Needed for Notify_* #include "UploadQueue.h" // Needed for CUploadQueue #ifdef __MULE_UNUSED_CODE__ // This function is left as a reminder. // Changes here _must_ be reflected in CClientList::FindMatchingClient. bool CUpDownClient::Compare(const CUpDownClient* tocomp, bool bIgnoreUserhash) const { if (!tocomp) { // should we wxASSERT here? return false; } //Compare only the user hash.. if(!bIgnoreUserhash && HasValidHash() && tocomp->HasValidHash()) { return GetUserHash() == tocomp->GetUserHash(); } if (HasLowID()) { //User is firewalled.. Must do two checks.. if (GetIP()!=0 && GetIP() == tocomp->GetIP()) { //The IP of both match if (GetUserPort()!=0 && GetUserPort() == tocomp->GetUserPort()) { //IP-UserPort matches return true; } if (GetKadPort()!=0 && GetKadPort() == tocomp->GetKadPort()) { //IP-KadPort Matches return true; } } if (GetUserIDHybrid()!=0 && GetUserIDHybrid() == tocomp->GetUserIDHybrid() && GetServerIP()!=0 && GetServerIP() == tocomp->GetServerIP() && GetServerPort()!=0 && GetServerPort() == tocomp->GetServerPort()) { //Both have the same lowID, Same serverIP and Port.. return true; } //Both IP, and Server do not match.. return false; } //User is not firewalled. if (GetUserPort()!=0) { //User has a Port, lets check the rest. if (GetIP() != 0 && tocomp->GetIP() != 0) { //Both clients have a verified IP.. if(GetIP() == tocomp->GetIP() && GetUserPort() == tocomp->GetUserPort()) { //IP and UserPort match.. return true; } } else { //One of the two clients do not have a verified IP if (GetUserIDHybrid() == tocomp->GetUserIDHybrid() && GetUserPort() == tocomp->GetUserPort()) { //ID and Port Match.. return true; } } } if(GetKadPort()!=0) { //User has a Kad Port. if(GetIP() != 0 && tocomp->GetIP() != 0) { //Both clients have a verified IP. if(GetIP() == tocomp->GetIP() && GetKadPort() == tocomp->GetKadPort()) { //IP and KadPort Match.. return true; } } else { //One of the users do not have a verified IP. if (GetUserIDHybrid() == tocomp->GetUserIDHybrid() && GetKadPort() == tocomp->GetKadPort()) { //ID and KadProt Match.. return true; } } } //No Matches.. return false; } #endif bool CUpDownClient::AskForDownload() { // 0.42e if (theApp->listensocket->TooManySockets()) { if (!m_socket) { if (GetDownloadState() != DS_TOOMANYCONNS) { SetDownloadState(DS_TOOMANYCONNS); } return true; } else if (!m_socket->IsConnected()) { if (GetDownloadState() != DS_TOOMANYCONNS) { SetDownloadState(DS_TOOMANYCONNS); } return true; } } m_bUDPPending = false; m_dwLastAskedTime = ::GetTickCount(); SetDownloadState(DS_CONNECTING); SetSentCancelTransfer(0); return TryToConnect(); } void CUpDownClient::SendStartupLoadReq() { // 0.42e if (m_socket==NULL || m_reqfile==NULL) { return; } SetDownloadState(DS_ONQUEUE); CMemFile dataStartupLoadReq(16); dataStartupLoadReq.WriteHash(m_reqfile->GetFileHash()); CPacket* packet = new CPacket(dataStartupLoadReq, OP_EDONKEYPROT, OP_STARTUPLOADREQ); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_STARTUPLOADREQ to ") + GetFullIP()); SendPacket(packet, true, true); } bool CUpDownClient::IsSourceRequestAllowed() { //#warning REWRITE - Source swapping from eMule. // 0.42e uint32 dwTickCount = ::GetTickCount() + CONNECTION_LATENCY; uint32 nTimePassedClient = dwTickCount - GetLastSrcAnswerTime(); uint32 nTimePassedFile = dwTickCount - m_reqfile->GetLastAnsweredTime(); bool bNeverAskedBefore = (GetLastAskedForSources() == 0); uint32 uSources = m_reqfile->GetSourceCount(); return ( // if client has the correct extended protocol ExtProtocolAvailable() && (SupportsSourceExchange2() || GetSourceExchange1Version() > 1) && // AND if we need more sources thePrefs::GetMaxSourcePerFileSoft() > uSources && // AND if... ( //source is not complete and file is very rare ( !m_bCompleteSource && (bNeverAskedBefore || nTimePassedClient > SOURCECLIENTREASKS) && (uSources <= RARE_FILE/5) ) || //source is not complete and file is rare ( !m_bCompleteSource && (bNeverAskedBefore || nTimePassedClient > SOURCECLIENTREASKS) && (uSources <= RARE_FILE || uSources - m_reqfile->GetValidSourcesCount() <= RARE_FILE / 2) && (nTimePassedFile > SOURCECLIENTREASKF) ) || // OR if file is not rare ( (bNeverAskedBefore || nTimePassedClient > (unsigned)(SOURCECLIENTREASKS * MINCOMMONPENALTY)) && (nTimePassedFile > (unsigned)(SOURCECLIENTREASKF * MINCOMMONPENALTY)) ) ) ); } void CUpDownClient::SendFileRequest() { wxCHECK_RET(m_reqfile, wxT("Cannot request file when no reqfile is set")); CMemFile dataFileReq(16+16); dataFileReq.WriteHash(m_reqfile->GetFileHash()); if (SupportMultiPacket()) { DEBUG_ONLY( wxString sent_opcodes; ) if (SupportExtMultiPacket()) { dataFileReq.WriteUInt64(m_reqfile->GetFileSize()); } AddDebugLogLineN(logClient, wxT("Sending file request to client")); dataFileReq.WriteUInt8(OP_REQUESTFILENAME); DEBUG_ONLY( sent_opcodes += wxT("|RFNM|"); ) // Extended information if (GetExtendedRequestsVersion() > 0) { m_reqfile->WritePartStatus(&dataFileReq); } if (GetExtendedRequestsVersion() > 1) { m_reqfile->WriteCompleteSourcesCount(&dataFileReq); } if (m_reqfile->GetPartCount() > 1) { DEBUG_ONLY( sent_opcodes += wxT("|RFID|"); ) dataFileReq.WriteUInt8(OP_SETREQFILEID); } if (IsEmuleClient()) { SetRemoteQueueFull( true ); SetRemoteQueueRank(0); } if (IsSourceRequestAllowed()) { if (SupportsSourceExchange2()){ DEBUG_ONLY( sent_opcodes += wxT("|RSRC2|"); ) dataFileReq.WriteUInt8(OP_REQUESTSOURCES2); dataFileReq.WriteUInt8(SOURCEEXCHANGE2_VERSION); const uint16 nOptions = 0; // 16 ... Reserved dataFileReq.WriteUInt16(nOptions); } else { DEBUG_ONLY( sent_opcodes += wxT("|RSRC|"); ) dataFileReq.WriteUInt8(OP_REQUESTSOURCES); } m_reqfile->SetLastAnsweredTimeTimeout(); SetLastAskedForSources(); } if (IsSupportingAICH()) { DEBUG_ONLY( sent_opcodes += wxT("|AFHR|"); ) dataFileReq.WriteUInt8(OP_AICHFILEHASHREQ); } CPacket* packet = new CPacket(dataFileReq, OP_EMULEPROT, (SupportExtMultiPacket() ? OP_MULTIPACKET_EXT : OP_MULTIPACKET)); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN(logLocalClient, CFormat(wxT("Local Client: %s (%s) to %s")) % (SupportExtMultiPacket() ? wxT("OP_MULTIPACKET_EXT") : wxT("OP_MULTIPACKET")) % sent_opcodes % GetFullIP()); SendPacket(packet, true); } else { //This is extended information if (GetExtendedRequestsVersion() > 0 ) { m_reqfile->WritePartStatus(&dataFileReq); } if (GetExtendedRequestsVersion() > 1 ) { m_reqfile->WriteCompleteSourcesCount(&dataFileReq); } CPacket* packet = new CPacket(dataFileReq, OP_EDONKEYPROT, OP_REQUESTFILENAME); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_REQUESTFILENAME to ") + GetFullIP() ); SendPacket(packet, true); // 26-Jul-2003: removed requesting the file status for files <= PARTSIZE for better compatibility with ed2k protocol (eDonkeyHybrid). // if the remote client answers the OP_REQUESTFILENAME with OP_REQFILENAMEANSWER the file is shared by the remote client. if we // know that the file is shared, we know also that the file is complete and don't need to request the file status. // Sending the packet could have deleted the client, check m_reqfile if (m_reqfile && (m_reqfile->GetPartCount() > 1)) { CMemFile dataSetReqFileID(16); dataSetReqFileID.WriteHash(m_reqfile->GetFileHash()); packet = new CPacket(dataSetReqFileID, OP_EDONKEYPROT, OP_SETREQFILEID); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_SETREQFILEID to ") + GetFullIP()); SendPacket(packet, true); } if (IsEmuleClient()) { SetRemoteQueueFull( true ); SetRemoteQueueRank(0); } // Sending the packet could have deleted the client, check m_reqfile if (m_reqfile && IsSourceRequestAllowed()) { m_reqfile->SetLastAnsweredTimeTimeout(); CMemFile packetdata; if (SupportsSourceExchange2()) { packetdata.WriteUInt8(SOURCEEXCHANGE2_VERSION); packetdata.WriteUInt16(0 /* Reserved */); } packetdata.WriteHash(m_reqfile->GetFileHash()); packet = new CPacket(packetdata, OP_EMULEPROT, SupportsSourceExchange2() ? OP_REQUESTSOURCES2 : OP_REQUESTSOURCES); theStats::AddUpOverheadSourceExchange(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_REQUESTSOURCES to ") + GetFullIP() ); SendPacket(packet,true,true); SetLastAskedForSources(); } // Sending the packet could have deleted the client, check m_reqfile if (m_reqfile && IsSupportingAICH()) { packet = new CPacket(OP_AICHFILEHASHREQ,16,OP_EMULEPROT); packet->Copy16ToDataBuffer((const char *)m_reqfile->GetFileHash().GetHash()); theStats::AddUpOverheadOther(packet->GetPacketSize()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_AICHFILEHASHREQ to ") + GetFullIP()); SendPacket(packet,true,true); } } } void CUpDownClient::ProcessFileInfo(const CMemFile* data, const CPartFile* file) { // 0.42e if (file==NULL) { throw wxString(wxT("ERROR: Wrong file ID (ProcessFileInfo; file==NULL)")); } if (m_reqfile==NULL) { throw wxString(wxT("ERROR: Wrong file ID (ProcessFileInfo; m_reqfile==NULL)")); } if (file != m_reqfile) { throw wxString(wxT("ERROR: Wrong file ID (ProcessFileInfo; m_reqfile!=file)")); } m_clientFilename = data->ReadString((GetUnicodeSupport() != utf8strNone)); // 26-Jul-2003: removed requesting the file status for files <= PARTSIZE for better compatibility with ed2k protocol (eDonkeyHybrid). // if the remote client answers the OP_REQUESTFILENAME with OP_REQFILENAMEANSWER the file is shared by the remote client. if we // know that the file is shared, we know also that the file is complete and don't need to request the file status. if (m_reqfile->GetPartCount() == 1) { m_nPartCount = m_reqfile->GetPartCount(); m_reqfile->UpdatePartsFrequency( this, false ); // Decrement m_downPartStatus.setsize( m_nPartCount, 1 ); m_reqfile->UpdatePartsFrequency( this, true ); // Increment m_bCompleteSource = true; UpdateDisplayedInfo(); // even if the file is <= PARTSIZE, we _may_ need the hashset for that file (if the file size == PARTSIZE) if (m_reqfile->IsHashSetNeeded()) { if (m_socket) { CPacket* packet = new CPacket(OP_HASHSETREQUEST,16, OP_EDONKEYPROT); packet->Copy16ToDataBuffer((const char *)m_reqfile->GetFileHash().GetHash()); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_HASHSETREQUEST to ") + GetFullIP()); SendPacket(packet,true,true); SetDownloadState(DS_REQHASHSET); m_fHashsetRequesting = 1; m_reqfile->SetHashSetNeeded(false); } else { wxFAIL; } } else { SendStartupLoadReq(); } m_reqfile->UpdatePartsInfo(); } } void CUpDownClient::ProcessFileStatus(bool bUdpPacket, const CMemFile* data, const CPartFile* file) { // 0.42e wxString strReqFileNull(wxT("ERROR: Wrong file ID (ProcessFileStatus; m_reqfile==NULL)")); if ( !m_reqfile || file != m_reqfile ){ if (!m_reqfile) { throw strReqFileNull; } throw wxString(wxT("ERROR: Wrong file ID (ProcessFileStatus; m_reqfile!=file)")); } uint16 nED2KPartCount = data->ReadUInt16(); m_reqfile->UpdatePartsFrequency( this, false ); // Decrement m_downPartStatus.clear(); bool bPartsNeeded = false; if (!nED2KPartCount) { m_nPartCount = m_reqfile->GetPartCount(); m_downPartStatus.setsize( m_nPartCount, 1); bPartsNeeded = true; m_bCompleteSource = true; } else { // Somehow this happened. if (!m_reqfile) { throw strReqFileNull; } if (m_reqfile->GetED2KPartCount() != nED2KPartCount) { wxString strError; strError << wxT("ProcessFileStatus - wrong part number recv=") << nED2KPartCount << wxT(" expected=") << m_reqfile->GetED2KPartCount() << wxT(" ") << m_reqfile->GetFileHash().Encode(); m_nPartCount = 0; throw strError; } m_nPartCount = m_reqfile->GetPartCount(); m_bCompleteSource = false; m_downPartStatus.setsize( m_nPartCount, 0 ); uint16 done = 0; try { while (done != m_nPartCount) { uint8 toread = data->ReadUInt8(); for ( uint8 i = 0;i < 8; i++ ) { bool status = ((toread>>i)&1)? 1:0; m_downPartStatus.set(done, status); if (status) { if (!m_reqfile->IsComplete(done)){ bPartsNeeded = true; } } done++; if (done == m_nPartCount) { break; } } } } catch( ... ) { // We want the counts to be updated, even if we fail to read everything m_reqfile->UpdatePartsFrequency( this, true ); // Increment throw; } } m_reqfile->UpdatePartsFrequency( this, true ); // Increment UpdateDisplayedInfo(); // NOTE: This function is invoked from TCP and UDP socket! if (!bUdpPacket) { if (!bPartsNeeded) { SetDownloadState(DS_NONEEDEDPARTS); } else if (m_reqfile->IsHashSetNeeded()) { //If we are using the eMule filerequest packets, this is taken care of in the Multipacket! if (m_socket) { CPacket* packet = new CPacket(OP_HASHSETREQUEST,16, OP_EDONKEYPROT); packet->Copy16ToDataBuffer((const char *)m_reqfile->GetFileHash().GetHash()); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_HASHSETREQUEST to ") + GetFullIP()); SendPacket(packet, true, true); SetDownloadState(DS_REQHASHSET); m_fHashsetRequesting = 1; m_reqfile->SetHashSetNeeded(false); } else { wxFAIL; } } else { SendStartupLoadReq(); } } else { if (!bPartsNeeded) { SetDownloadState(DS_NONEEDEDPARTS); } else { SetDownloadState(DS_ONQUEUE); } } m_reqfile->UpdatePartsInfo(); } bool CUpDownClient::AddRequestForAnotherFile(CPartFile* file) { if ( m_A4AF_list.find( file ) == m_A4AF_list.end() ) { // When we access a non-existing entry entry, it will be zeroed by default, // so we have to set NeededParts. All in one go. m_A4AF_list[file].NeededParts = true; file->AddA4AFSource( this ); return true; } else { return false; } } bool CUpDownClient::DeleteFileRequest(CPartFile* file) { return (m_A4AF_list.erase( file ) > 0); } void CUpDownClient::DeleteAllFileRequests() { m_A4AF_list.clear(); } /* eMule 0.30c implementation, i give it a try (Creteil) BEGIN ... */ void CUpDownClient::SetDownloadState(uint8 byNewState) { if (m_nDownloadState != byNewState) { if (m_reqfile) { // Notify the client that this source has changed its state m_reqfile->ClientStateChanged( m_nDownloadState, byNewState ); if (byNewState == DS_DOWNLOADING) { m_reqfile->AddDownloadingSource(this); } else if (m_nDownloadState == DS_DOWNLOADING) { m_reqfile->RemoveDownloadingSource(this); } } if (byNewState == DS_DOWNLOADING) { msReceivedPrev = GetTickCount(); theStats::AddDownloadingSource(); } else if (m_nDownloadState == DS_DOWNLOADING) { theStats::RemoveDownloadingSource(); } if (m_nDownloadState == DS_DOWNLOADING) { m_nDownloadState = byNewState; ClearDownloadBlockRequests(); kBpsDown = 0.0; bytesReceivedCycle = 0; msReceivedPrev = 0; if (byNewState == DS_NONE) { if (m_reqfile) { m_reqfile->UpdatePartsFrequency( this, false ); // Decrement } m_downPartStatus.clear(); m_nPartCount = 0; } if (m_socket && byNewState != DS_ERROR) { m_socket->DisableDownloadLimit(); } } m_nDownloadState = byNewState; if(GetDownloadState() == DS_DOWNLOADING) { if (IsEmuleClient()) { SetRemoteQueueFull(false); } SetRemoteQueueRank(0); // eMule 0.30c set like this ... } UpdateDisplayedInfo(true); } } /* eMule 0.30c implementation, i give it a try (Creteil) END ... */ void CUpDownClient::ProcessHashSet(const byte* packet, uint32 size) { if ((!m_reqfile) || md4cmp(packet,m_reqfile->GetFileHash().GetHash())) { throw wxString(wxT("Wrong fileid sent (ProcessHashSet)")); } if (!m_fHashsetRequesting) { throw wxString(wxT("Received unsolicited hashset, ignoring it.")); } CMemFile data(packet,size); if (m_reqfile->LoadHashsetFromFile(&data,true)) { m_fHashsetRequesting = 0; } else { m_reqfile->SetHashSetNeeded(true); throw wxString(wxT("Corrupted or invalid hashset received")); } SendStartupLoadReq(); } void CUpDownClient::SendBlockRequests() { uint32 current_time = ::GetTickCount(); if (GetVBTTags()) { // Ask new blocks only when all completed if (!m_PendingBlocks_list.empty()) { return; } if ((m_dwLastBlockReceived + SEC2MS(5)) > current_time) { // We received last block in less than 5 secs? Let's request faster. m_MaxBlockRequests = m_MaxBlockRequests << 1; if ( m_MaxBlockRequests > 0x20) { m_MaxBlockRequests = 0x20; } } else { m_MaxBlockRequests = m_MaxBlockRequests >> 1; if ( m_MaxBlockRequests < STANDARD_BLOCKS_REQUEST) { m_MaxBlockRequests = STANDARD_BLOCKS_REQUEST; } } } m_dwLastBlockReceived = current_time; if (!m_reqfile) { return; } uint8 version = GetVBTTags() ? 2 : 1; if (m_DownloadBlocks_list.empty()) { // Barry - instead of getting 3, just get how many is needed uint16 count = m_MaxBlockRequests - m_PendingBlocks_list.size(); std::vector toadd; if (m_reqfile->GetNextRequestedBlock(this, toadd, count)) { for (int i = 0; i != count; i++) { m_DownloadBlocks_list.push_back(toadd[i]); } } } // Barry - Why are unfinished blocks requested again, not just new ones? while (m_PendingBlocks_list.size() < m_MaxBlockRequests && !m_DownloadBlocks_list.empty()) { Pending_Block_Struct* pblock = new Pending_Block_Struct; pblock->block = m_DownloadBlocks_list.front(); pblock->zStream = NULL; pblock->totalUnzipped = 0; pblock->fZStreamError = 0; pblock->fRecovered = 0; m_PendingBlocks_list.push_back(pblock); m_DownloadBlocks_list.pop_front(); } if (m_PendingBlocks_list.empty()) { CUpDownClient* slower_client = NULL; if (thePrefs::GetDropSlowSources()) { slower_client = m_reqfile->GetSlowerDownloadingClient(m_lastaverage, this); } if (slower_client == NULL) { slower_client = this; } if (!slower_client->GetSentCancelTransfer()) { CPacket* packet = new CPacket(OP_CANCELTRANSFER, 0, OP_EDONKEYPROT); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); // if (slower_client != this) { // printf("Dropped client %p to allow client %p to download\n",slower_client, this); // } slower_client->ClearDownloadBlockRequests(); slower_client->SendPacket(packet,true,true); slower_client->SetSentCancelTransfer(1); } slower_client->SetDownloadState(DS_NONEEDEDPARTS); if (slower_client != this) { // Re-request freed blocks. AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_CANCELTRANSFER (faster source eager to transfer) to ") + slower_client->GetFullIP() ); wxASSERT(m_DownloadBlocks_list.empty()); wxASSERT(m_PendingBlocks_list.empty()); uint16 count = m_MaxBlockRequests; std::vector toadd; if (m_reqfile->GetNextRequestedBlock(this, toadd, count)) { for (int i = 0; i != count; i++) { Pending_Block_Struct* pblock = new Pending_Block_Struct; pblock->block = toadd[i]; pblock->zStream = NULL; pblock->totalUnzipped = 0; pblock->fZStreamError = 0; pblock->fRecovered = 0; m_PendingBlocks_list.push_back(pblock); } } else { // WTF, we just freed blocks. wxFAIL; return; } } else { // Drop this one. AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_CANCELTRANSFER (no free blocks) to ") + GetFullIP() ); //#warning Kry - Would be nice to swap A4AF here. return; } } CPacket* packet = NULL; switch (version) { case 2: { // ED2Kv2 packet... // Most common scenario: hash + blocks to request + every one // having 2 uint32 tags uint8 nBlocks = m_PendingBlocks_list.size(); if (nBlocks > m_MaxBlockRequests) { nBlocks = m_MaxBlockRequests; } CMemFile data(16 + 1 + nBlocks*((2+4)*2)); data.WriteHash(m_reqfile->GetFileHash()); data.WriteUInt8(nBlocks); std::list::iterator it = m_PendingBlocks_list.begin(); while (nBlocks) { wxASSERT(it != m_PendingBlocks_list.end()); wxASSERT( (*it)->block->StartOffset <= (*it)->block->EndOffset ); (*it)->fZStreamError = 0; (*it)->fRecovered = 0; CTagVarInt(/*Noname*/0,(*it)->block->StartOffset).WriteTagToFile(&data); CTagVarInt(/*Noname*/0,(*it)->block->EndOffset).WriteTagToFile(&data); ++it; nBlocks--; } packet = new CPacket(data, OP_ED2KV2HEADER, OP_REQUESTPARTS); AddDebugLogLineN( logLocalClient, CFormat(wxT("Local Client ED2Kv2: OP_REQUESTPARTS(%i) to %s")) % (m_PendingBlocks_list.size()::iterator it = m_PendingBlocks_list.begin(); for (uint32 i = 0; i != m_MaxBlockRequests; i++){ if (it != m_PendingBlocks_list.end()) { Pending_Block_Struct* pending = *it++; wxASSERT( pending->block->StartOffset <= pending->block->EndOffset ); if (pending->block->StartOffset > 0xFFFFFFFF || pending->block->EndOffset > 0xFFFFFFFF){ bHasLongBlocks = true; if (!SupportsLargeFiles()){ // Requesting a large block from a client that doesn't support large files? wxFAIL; if (!GetSentCancelTransfer()){ CPacket* cancel_packet = new CPacket(OP_CANCELTRANSFER, 0, OP_EDONKEYPROT); theStats::AddUpOverheadFileRequest(cancel_packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_CANCELTRANSFER to ") + GetFullIP() ); SendPacket(cancel_packet,true,true); SetSentCancelTransfer(1); } SetDownloadState(DS_ERROR); } break; } } } CMemFile data(16 /*Hash*/ + (m_MaxBlockRequests*(bHasLongBlocks ? 8 : 4) /* uint32/64 start*/) + (3*(bHasLongBlocks ? 8 : 4)/* uint32/64 end*/)); data.WriteHash(m_reqfile->GetFileHash()); it = m_PendingBlocks_list.begin(); for (uint32 i = 0; i != m_MaxBlockRequests; i++) { if (it != m_PendingBlocks_list.end()) { Pending_Block_Struct* pending = *it++; wxASSERT( pending->block->StartOffset <= pending->block->EndOffset ); pending->fZStreamError = 0; pending->fRecovered = 0; if (bHasLongBlocks) { data.WriteUInt64(pending->block->StartOffset); } else { data.WriteUInt32(pending->block->StartOffset); } } else { if (bHasLongBlocks) { data.WriteUInt64(0); } else { data.WriteUInt32(0); } } } it = m_PendingBlocks_list.begin(); for (uint32 i = 0; i != m_MaxBlockRequests; i++) { if (it != m_PendingBlocks_list.end()) { Requested_Block_Struct* block = (*it++)->block; if (bHasLongBlocks) { data.WriteUInt64(block->EndOffset+1); } else { data.WriteUInt32(block->EndOffset+1); } } else { if (bHasLongBlocks) { data.WriteUInt64(0); } else { data.WriteUInt32(0); } } } packet = new CPacket(data, (bHasLongBlocks ? OP_EMULEPROT : OP_EDONKEYPROT), (bHasLongBlocks ? (uint8)OP_REQUESTPARTS_I64 : (uint8)OP_REQUESTPARTS)); AddDebugLogLineN(logLocalClient, CFormat(wxT("Local Client: %s to %s")) % (bHasLongBlocks ? wxT("OP_REQUESTPARTS_I64") : wxT("OP_REQUESTPARTS")) % GetFullIP()); break; } default: wxFAIL; } if (packet) { theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); SendPacket(packet, true, true); } else { wxFAIL; } } /* Barry - Originally this only wrote to disk when a full 180k block had been received from a client, and only asked for data in 180k blocks. This meant that on average 90k was lost for every connection to a client data source. That is a lot of wasted data. To reduce the lost data, packets are now written to a buffer and flushed to disk regularly regardless of size downloaded. This includes compressed packets. Data is also requested only where gaps are, not in 180k blocks. The requests will still not exceed 180k, but may be smaller to fill a gap. */ void CUpDownClient::ProcessBlockPacket(const byte* packet, uint32 size, bool packed, bool largeblocks) { // Ignore if no data required if (!(GetDownloadState() == DS_DOWNLOADING || GetDownloadState() == DS_NONEEDEDPARTS)) { return; } // This vars are defined here to be able to use them on the catch int header_size = 16; uint64 nStartPos = 0; uint64 nEndPos = 0; uint32 nBlockSize = 0; uint32 lenUnzipped = 0; // Update stats m_dwLastBlockReceived = ::GetTickCount(); try { // Read data from packet const CMemFile data(packet, size); // Check that this data is for the correct file if ((!m_reqfile) || data.ReadHash() != m_reqfile->GetFileHash()) { throw wxString(wxT("Wrong fileid sent (ProcessBlockPacket)")); } // Find the start & end positions, and size of this chunk of data if (largeblocks) { nStartPos = data.ReadUInt64(); header_size += 8; } else { nStartPos = data.ReadUInt32(); header_size += 4; } if (packed) { nBlockSize = data.ReadUInt32(); header_size += 4; nEndPos = nStartPos + (size - header_size); } else { if (largeblocks) { nEndPos = data.ReadUInt64(); header_size += 8; } else { nEndPos = data.ReadUInt32(); header_size += 4; } } // Check that packet size matches the declared data size + header size if ( nEndPos == nStartPos || size != ((nEndPos - nStartPos) + header_size)) { throw wxString(wxT("Corrupted or invalid DataBlock received (ProcessBlockPacket)")); } theStats::AddDownloadFromSoft(GetClientSoft(),size - header_size); bytesReceivedCycle += size - header_size; credits->AddDownloaded(size - header_size, GetIP(), theApp->CryptoAvailable()); // Move end back one, should be inclusive nEndPos--; // Loop through to find the reserved block that this is within std::list::iterator it = m_PendingBlocks_list.begin(); for (; it != m_PendingBlocks_list.end(); ++it) { Pending_Block_Struct* cur_block = *it; if ((cur_block->block->StartOffset <= nStartPos) && (cur_block->block->EndOffset >= nStartPos)) { // Found reserved block if (cur_block->block->StartOffset == nStartPos) { // This block just started transfering. Set the start time. m_last_block_start = ::GetTickCountFullRes(); } if (cur_block->fZStreamError){ AddDebugLogLineN(logZLib, CFormat(wxT("Ignoring %u bytes of block %u-%u because of erroneous zstream state for file: %s")) % (size - header_size) % nStartPos % nEndPos % m_reqfile->GetFileName()); m_reqfile->RemoveBlockFromList(cur_block->block->StartOffset, cur_block->block->EndOffset); return; } // Remember this start pos, used to draw part downloading in list m_lastDownloadingPart = nStartPos / PARTSIZE; // Occasionally packets are duplicated, no point writing it twice // This will be 0 in these cases, or the length written otherwise uint32 lenWritten = 0; // Handle differently depending on whether packed or not if (!packed) { // security sanitize check if (nEndPos > cur_block->block->EndOffset) { AddDebugLogLineN(logRemoteClient, CFormat(wxT("Received Blockpacket exceeds requested boundaries (requested end: %u, Part: %u, received end: %u, Part: %u), file: %s remote IP: %s")) % cur_block->block->EndOffset % (uint32)(cur_block->block->EndOffset / PARTSIZE) % nEndPos % (uint32)(nEndPos / PARTSIZE) % m_reqfile->GetFileName() % Uint32toStringIP(GetIP())); m_reqfile->RemoveBlockFromList(cur_block->block->StartOffset, cur_block->block->EndOffset); return; } // Write to disk (will be buffered in part file class) lenWritten = m_reqfile->WriteToBuffer( size - header_size, (byte*)(packet + header_size), nStartPos, nEndPos, cur_block->block, this); } else { // Packed wxASSERT( (long int)size > 0 ); // Create space to store unzipped data, the size is // only an initial guess, will be resized in unzip() // if not big enough lenUnzipped = (size * 2); // Don't get too big if (lenUnzipped > (BLOCKSIZE + 300)) { lenUnzipped = (BLOCKSIZE + 300); } byte *unzipped = new byte[lenUnzipped]; // Try to unzip the packet int result = unzip(cur_block, (byte*)(packet + header_size), (size - header_size), &unzipped, &lenUnzipped); // no block can be uncompressed to >2GB, 'lenUnzipped' is obviously erroneous. if (result == Z_OK && ((int)lenUnzipped >= 0)) { // Write any unzipped data to disk if (lenUnzipped > 0) { wxASSERT( (int)lenUnzipped > 0 ); // Use the current start and end positions for the uncompressed data nStartPos = cur_block->block->StartOffset + cur_block->totalUnzipped - lenUnzipped; nEndPos = cur_block->block->StartOffset + cur_block->totalUnzipped - 1; if (nStartPos > cur_block->block->EndOffset || nEndPos > cur_block->block->EndOffset) { AddDebugLogLineN(logZLib, CFormat(wxT("Corrupted compressed packet for '%s' received (error 666)")) % m_reqfile->GetFileName()); m_reqfile->RemoveBlockFromList(cur_block->block->StartOffset, cur_block->block->EndOffset); } else { // Write uncompressed data to file lenWritten = m_reqfile->WriteToBuffer( size - header_size, unzipped, nStartPos, nEndPos, cur_block->block, this); } } } else { wxString strZipError; if (cur_block->zStream && cur_block->zStream->msg) { strZipError = wxT(" - ") + wxString::FromAscii(cur_block->zStream->msg); } AddDebugLogLineN(logZLib, CFormat(wxT("Corrupted compressed packet for '%s' received (error %i): %s")) % m_reqfile->GetFileName() % result % strZipError); m_reqfile->RemoveBlockFromList(cur_block->block->StartOffset, cur_block->block->EndOffset); // If we had an zstream error, there is no chance that we could recover from it nor that we // could use the current zstream (which is in error state) any longer. if (cur_block->zStream){ inflateEnd(cur_block->zStream); delete cur_block->zStream; cur_block->zStream = NULL; } // Although we can't further use the current zstream, there is no need to disconnect the sending // client because the next zstream (a series of 10K-blocks which build a 180K-block) could be // valid again. Just ignore all further blocks for the current zstream. cur_block->fZStreamError = 1; cur_block->totalUnzipped = 0; // bluecow's fix } delete [] unzipped; } // These checks only need to be done if any data was written if (lenWritten > 0) { m_nTransferredDown += lenWritten; // If finished reserved block if (nEndPos == cur_block->block->EndOffset) { // Save last average speed based on data and time. // This should do bytes/sec. uint32 average_time = (::GetTickCountFullRes() - m_last_block_start); // Avoid divide by 0. if (average_time == 0) { average_time++; } m_lastaverage = ((cur_block->block->EndOffset - cur_block->block->StartOffset) * 1000) / average_time; m_reqfile->RemoveBlockFromList(cur_block->block->StartOffset, cur_block->block->EndOffset); delete cur_block->block; // Not always allocated if (cur_block->zStream) { inflateEnd(cur_block->zStream); delete cur_block->zStream; } delete cur_block; m_PendingBlocks_list.erase(it); // Request next block SendBlockRequests(); } } // Stop looping and exit method return; } } } catch (const CEOFException& e) { wxString error = wxString(wxT("Error reading ")); if (packed) error += CFormat(wxT("packed (LU: %i) largeblocks ")) % lenUnzipped; error += CFormat(wxT("data packet: RS: %i HS: %i SP: %i EP: %i BS: %i -> ")) % size % header_size % nStartPos % nEndPos % nBlockSize; AddDebugLogLineC(logRemoteClient, error + e.what()); return; } } int CUpDownClient::unzip(Pending_Block_Struct *block, byte *zipped, uint32 lenZipped, byte **unzipped, uint32 *lenUnzipped, int iRecursion) { int err = Z_DATA_ERROR; // Save some typing z_stream *zS = block->zStream; // Is this the first time this block has been unzipped if (zS == NULL) { // Create stream block->zStream = new z_stream; zS = block->zStream; // Initialise stream values zS->zalloc = (alloc_func)0; zS->zfree = (free_func)0; zS->opaque = (voidpf)0; // Set output data streams, do this here to avoid overwriting on recursive calls zS->next_out = (*unzipped); zS->avail_out = (*lenUnzipped); // Initialise the z_stream err = inflateInit(zS); if (err != Z_OK) { return err; } } // Use whatever input is provided zS->next_in = zipped; zS->avail_in = lenZipped; // Only set the output if not being called recursively if (iRecursion == 0) { zS->next_out = (*unzipped); zS->avail_out = (*lenUnzipped); } // Try to unzip the data err = inflate(zS, Z_SYNC_FLUSH); // Is zip finished reading all currently available input and writing // all generated output if (err == Z_STREAM_END) { // Finish up err = inflateEnd(zS); if (err != Z_OK) { return err; } // Got a good result, set the size to the amount unzipped in this call // (including all recursive calls) (*lenUnzipped) = (zS->total_out - block->totalUnzipped); block->totalUnzipped = zS->total_out; } else if ((err == Z_OK) && (zS->avail_out == 0) && (zS->avail_in != 0)) { // Output array was not big enough, // call recursively until there is enough space // What size should we try next uint32 newLength = (*lenUnzipped) *= 2; if (newLength == 0) { newLength = lenZipped * 2; } // Copy any data that was successfully unzipped to new array byte *temp = new byte[newLength]; wxASSERT( zS->total_out - block->totalUnzipped <= newLength ); memcpy(temp, (*unzipped), (zS->total_out - block->totalUnzipped)); delete [] (*unzipped); (*unzipped) = temp; (*lenUnzipped) = newLength; // Position stream output to correct place in new array zS->next_out = (*unzipped) + (zS->total_out - block->totalUnzipped); zS->avail_out = (*lenUnzipped) - (zS->total_out - block->totalUnzipped); // Try again err = unzip(block, zS->next_in, zS->avail_in, unzipped, lenUnzipped, iRecursion + 1); } else if ((err == Z_OK) && (zS->avail_in == 0)) { // All available input has been processed, everything ok. // Set the size to the amount unzipped in this call // (including all recursive calls) (*lenUnzipped) = (zS->total_out - block->totalUnzipped); block->totalUnzipped = zS->total_out; } else { // Should not get here unless input data is corrupt wxString strZipError; if ( zS->msg ) { strZipError = CFormat(wxT(" %d '%s'")) % err % wxString::FromAscii(zS->msg); } else if (err != Z_OK) { strZipError = CFormat(wxT(" %d")) % err; } AddDebugLogLineN(logZLib, CFormat(wxT("Unexpected zip error %s in file '%s'")) % strZipError % (m_reqfile ? m_reqfile->GetFileName() : CPath(wxT("?")))); } if (err != Z_OK) { (*lenUnzipped) = 0; } return err; } // Speed is now updated only when data was received, calculated as // (data received) / (time since last receiption) // and slightly filtered (10s average). // Result is quite precise now and makes the DownloadRateAdjust workaround obsolete. float CUpDownClient::CalculateKBpsDown() { const float tAverage = 10.0; uint32 msCur = GetTickCount(); if (bytesReceivedCycle) { float dt = (msCur - msReceivedPrev) / 1000.0; // time since last reception if (dt < 0.01) { // (safeguard against divide-by-zero) dt = 0.01f; // diff should be 100ms actually } float kBpsDownCur = bytesReceivedCycle / 1024.0 / dt; if (dt >= tAverage) { kBpsDown = kBpsDownCur; } else { kBpsDown = (kBpsDown * (tAverage - dt) + kBpsDownCur * dt) / tAverage; } //AddDebugLogLineN(logLocalClient, CFormat(wxT("CalculateKBpsDown %p kbps %.1f kbpsCur %.1f dt %.3f rcv %d ")) // % this % kBpsDown % kBpsDownCur % dt % bytesReceivedCycle); bytesReceivedCycle = 0; msReceivedPrev = msCur; } m_cShowDR++; if (m_cShowDR == 30){ m_cShowDR = 0; UpdateDisplayedInfo(); } if (msCur - m_dwLastBlockReceived > DOWNLOADTIMEOUT) { if (!GetSentCancelTransfer()){ CPacket* packet = new CPacket(OP_CANCELTRANSFER, 0, OP_EDONKEYPROT); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_CANCELTRANSFER to ") + GetFullIP() ); SendPacket(packet,true,true); SetSentCancelTransfer(1); } SetDownloadState(DS_ONQUEUE); } return kBpsDown; } uint16 CUpDownClient::GetAvailablePartCount() const { uint16 result = 0; for (int i = 0;i != m_nPartCount;i++){ if (IsPartAvailable(i)) result++; } return result; } void CUpDownClient::SetRemoteQueueRank(uint16 nr) { m_nOldRemoteQueueRank = m_nRemoteQueueRank; m_nRemoteQueueRank = nr; UpdateDisplayedInfo(); } void CUpDownClient::UDPReaskACK(uint16 nNewQR) { // 0.42e m_bUDPPending = false; SetRemoteQueueRank(nNewQR); m_dwLastAskedTime = ::GetTickCount(); } void CUpDownClient::UDPReaskFNF() { m_bUDPPending = false; // avoid premature deletion of 'this' client if (GetDownloadState() != DS_DOWNLOADING){ if (m_reqfile) { m_reqfile->AddDeadSource(this); } theApp->downloadqueue->RemoveSource(this); if (!m_socket) { if (Disconnected(wxT("UDPReaskFNF m_socket=NULL"))) { Safe_Delete(); } } } else { AddDebugLogLineN( logRemoteClient, wxT("UDP ANSWER FNF : ") + GetUserName() + wxT(" - did not remove client because of current download state") ); } } void CUpDownClient::UDPReaskForDownload() { wxASSERT(m_reqfile); if(!m_reqfile || m_bUDPPending ) { return; } //#warning We should implement the quality tests for udp reliability /* if( m_nTotalUDPPackets > 3 && ((float)(m_nFailedUDPPackets/m_nTotalUDPPackets) > .3)) { return; } */ if (thePrefs::GetEffectiveUDPPort() == 0) { return; } if (m_nUDPPort != 0 && !theApp->IsFirewalled() && !IsConnected()) { //don't use udp to ask for sources if(IsSourceRequestAllowed()) { return; } m_bUDPPending = true; CMemFile data(128); data.WriteHash(m_reqfile->GetFileHash()); if (GetUDPVersion() > 3) { if (m_reqfile->IsPartFile()) { static_cast(m_reqfile)->WritePartStatus(&data); } else { data.WriteUInt16(0); } } if (GetUDPVersion() > 2) { data.WriteUInt16(m_reqfile->m_nCompleteSourcesCount); } CPacket* response = new CPacket(data, OP_EMULEPROT, OP_REASKFILEPING); AddDebugLogLineN( logClientUDP, wxT("Client UDP socket: send OP_REASKFILEPING") ); theStats::AddUpOverheadFileRequest(response->GetPacketSize()); theApp->clientudp->SendPacket(response,GetConnectIP(),GetUDPPort(), ShouldReceiveCryptUDPPackets(), GetUserHash().GetHash(), false, 0); } else if (HasLowID() && GetBuddyIP() && GetBuddyPort() && HasValidBuddyID()) { m_bUDPPending = true; CMemFile data(128); data.WriteHash(CMD4Hash(GetBuddyID())); data.WriteHash(m_reqfile->GetFileHash()); if (GetUDPVersion() > 3) { if (m_reqfile->IsPartFile()) { static_cast(m_reqfile)->WritePartStatus(&data); } else { data.WriteUInt16(0); } } if (GetUDPVersion() > 2) { data.WriteUInt16(m_reqfile->m_nCompleteSourcesCount); } CPacket* response = new CPacket(data, OP_EMULEPROT, OP_REASKCALLBACKUDP); AddDebugLogLineN( logClientUDP, wxT("Client UDP socket: send OP_REASKCALLBACKUDP") ); theStats::AddUpOverheadFileRequest(response->GetPacketSize()); theApp->clientudp->SendPacket(response, GetBuddyIP(), GetBuddyPort(), false, NULL, true, 0 ); } } // Get the next part that is requested uint16 CUpDownClient::GetNextRequestedPart() const { uint16 part = 0xffff; std::list::const_iterator it = m_PendingBlocks_list.begin(); for (; it != m_PendingBlocks_list.end(); ++it) { part = (*it)->block->StartOffset / PARTSIZE; if (part != m_lastDownloadingPart) { break; } } return part; } void CUpDownClient::UpdateDisplayedInfo(bool force) { uint32 curTick = ::GetTickCount(); if (force || curTick-m_lastRefreshedDLDisplay > MINWAIT_BEFORE_DLDISPLAY_WINDOWUPDATE) { // Check if we actually need to notify of changes bool update = m_reqfile && m_reqfile->ShowSources(); // Check A4AF files only if needed if ( !update ) { A4AFList::iterator it = m_A4AF_list.begin(); for ( ; it != m_A4AF_list.end(); ++it ) { if ( it->first->ShowSources() ) { update = true; break; } } } // And finnaly trigger an event if there's any reason if ( update ) { SourceItemType type; switch (GetDownloadState()) { case DS_DOWNLOADING: case DS_ONQUEUE: // We will send A4AF, which will be checked. type = A4AF_SOURCE; break; default: type = UNAVAILABLE_SOURCE; break; } Notify_SourceCtrlUpdateSource(ECID(), type ); } // Shared files view if (m_uploadingfile && m_uploadingfile->ShowPeers()) { Notify_SharedCtrlRefreshClient(ECID(), AVAILABLE_SOURCE); } m_lastRefreshedDLDisplay = curTick; } } uint8 CUpDownClient::GetObfuscationStatus() const { uint8 ret = OBST_UNDEFINED; if (thePrefs::IsClientCryptLayerSupported()) { if (SupportsCryptLayer()) { if ((RequestsCryptLayer() || thePrefs::IsClientCryptLayerRequested()) && HasObfuscatedConnectionBeenEstablished()) { ret = OBST_ENABLED; } else { ret = OBST_SUPPORTED; } } else { ret = OBST_NOT_SUPPORTED; } } else { ret = OBST_DISABLED; } return ret; } // IgnoreNoNeeded = will switch to files of which this source has no needed parts (if no better fiels found) // ignoreSuspensions = ignore timelimit for A4Af jumping // bRemoveCompletely = do not readd the file which the source is swapped from to the A4AF lists (needed if deleting or stopping a file) // toFile = Try to swap to this partfile only bool CUpDownClient::SwapToAnotherFile(bool bIgnoreNoNeeded, bool ignoreSuspensions, bool bRemoveCompletely, CPartFile* toFile) { // Fail if m_reqfile is invalid if ( m_reqfile == NULL ) { return false; } // It would be stupid to swap away a downloading source if (GetDownloadState() == DS_DOWNLOADING) { return false; } // The iterator of the final target A4AFList::iterator target = m_A4AF_list.end(); // Do we want to swap to a specific file? if ( toFile != NULL ) { A4AFList::iterator it = m_A4AF_list.find( toFile ); if ( it != m_A4AF_list.end() ) { // We force ignoring of timestamps if ( IsValidSwapTarget( it, bIgnoreNoNeeded, true ) ) { // Set the target target = it; } } } else { // We want highest priority possible, but need to start with // a value less than any other priority char priority = -1; A4AFList::iterator it = m_A4AF_list.begin(); for ( ; it != m_A4AF_list.end(); ++it ) { if ( IsValidSwapTarget( it, bIgnoreNoNeeded, ignoreSuspensions ) ) { char cur_priority = it->first->GetDownPriority(); // We would prefer to get files with needed parts, thus rate them higher. // However, this really only matters if bIgnoreNoNeeded is true. if ( it->second.NeededParts ) cur_priority += 10; // Change target if the current file has a higher rate than the previous if ( cur_priority > priority ) { priority = cur_priority; // Set the new target target = it; // Break on the first High-priority file with needed parts if ( priority == PR_HIGH + 10 ) { break; } } } } } // Try to swap if we found a valid target if ( target != m_A4AF_list.end() ) { // Sanity check, if reqfile doesn't own the source, then something // is wrong and the swap cannot proceed. if ( m_reqfile->DelSource( this ) ) { CPartFile* SwapTo = target->first; // remove this client from the A4AF list of our new m_reqfile if ( SwapTo->RemoveA4AFSource( this ) ) { Notify_SourceCtrlRemoveSource(ECID(), SwapTo); } m_reqfile->RemoveDownloadingSource( this ); // Do we want to remove it completly? Say if the old file is getting deleted if ( !bRemoveCompletely ) { m_reqfile->AddA4AFSource( this ); // Set the status of the old file m_A4AF_list[m_reqfile].NeededParts = (GetDownloadState() != DS_NONEEDEDPARTS); // Avoid swapping to this file for a while m_A4AF_list[m_reqfile].timestamp = ::GetTickCount(); Notify_SourceCtrlAddSource(m_reqfile, CCLIENTREF(this, wxT("CUpDownClient::SwapToAnotherFile Notify_SourceCtrlAddSource 1")), A4AF_SOURCE); } else { Notify_SourceCtrlRemoveSource(ECID(), m_reqfile); } SetDownloadState(DS_NONE); ResetFileStatusInfo(); m_nRemoteQueueRank = 0; m_nOldRemoteQueueRank = 0; m_reqfile->UpdatePartsInfo(); SetRequestFile( SwapTo ); SwapTo->AddSource( this ); Notify_SourceCtrlAddSource(SwapTo, CCLIENTREF(this, wxT("CUpDownClient::SwapToAnotherFile Notify_SourceCtrlAddSource 2")), UNAVAILABLE_SOURCE); // Remove the new reqfile from the list of other files m_A4AF_list.erase( target ); return true; } } return false; } bool CUpDownClient::IsValidSwapTarget( A4AFList::iterator it, bool ignorenoneeded, bool ignoresuspended ) { wxASSERT( it != m_A4AF_list.end() && it->first ); // Check if this file has been suspended if ( !ignoresuspended ) { if ( ::GetTickCount() - it->second.timestamp >= PURGESOURCESWAPSTOP ) { // The wait-time has been exceeded and the file is now a valid target it->second.timestamp = 0; } else { // The file was still suspended and we are not ignoring suspensions return false; } } // Check if the client has needed parts if ( !ignorenoneeded ) { if ( !it->second.NeededParts ) { return false; } } // Final checks to see if the client is a valid target CPartFile* cur_file = it->first; if ( ( cur_file != m_reqfile && !cur_file->IsStopped() ) && ( cur_file->GetStatus() == PS_READY || cur_file->GetStatus() == PS_EMPTY ) && ( cur_file->IsPartFile() ) ) { return true; } else { return false; } } void CUpDownClient::SetRequestFile(CPartFile* reqfile) { if ( m_reqfile != reqfile ) { // Decrement the source-count of the old request-file if ( m_reqfile ) { m_reqfile->ClientStateChanged( GetDownloadState(), -1 ); m_reqfile->UpdatePartsFrequency( this, false ); } m_nPartCount = 0; m_downPartStatus.clear(); m_reqfile = reqfile; if ( reqfile ) { // Increment the source-count of the new request-file m_reqfile->ClientStateChanged( -1, GetDownloadState() ); m_nPartCount = reqfile->GetPartCount(); } } } void CUpDownClient::SetReqFileAICHHash(CAICHHash* val){ if(m_pReqFileAICHHash != NULL && m_pReqFileAICHHash != val) delete m_pReqFileAICHHash; m_pReqFileAICHHash = val; } void CUpDownClient::SendAICHRequest(CPartFile* pForFile, uint16 nPart){ CAICHRequestedData request; request.m_nPart = nPart; request.m_pClient.Link(this CLIENT_DEBUGSTRING("CUpDownClient::SendAICHRequest")); request.m_pPartFile = pForFile; CAICHHashSet::m_liRequestedData.push_back(request); m_fAICHRequested = TRUE; CMemFile data; data.WriteHash(pForFile->GetFileHash()); data.WriteUInt16(nPart); pForFile->GetAICHHashset()->GetMasterHash().Write(&data); CPacket* packet = new CPacket(data, OP_EMULEPROT, OP_AICHREQUEST); theStats::AddUpOverheadOther(packet->GetPacketSize()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_AICHREQUEST to") + GetFullIP()); SafeSendPacket(packet); } void CUpDownClient::ProcessAICHAnswer(const byte* packet, uint32 size) { if (m_fAICHRequested == FALSE){ throw wxString(wxT("Received unrequested AICH Packet")); } m_fAICHRequested = FALSE; CMemFile data(packet, size); if (size <= 16){ CAICHHashSet::ClientAICHRequestFailed(this); return; } CMD4Hash hash = data.ReadHash(); CPartFile* pPartFile = theApp->downloadqueue->GetFileByID(hash); CAICHRequestedData request = CAICHHashSet::GetAICHReqDetails(this); uint16 nPart = data.ReadUInt16(); if (pPartFile != NULL && request.m_pPartFile == pPartFile && request.m_pClient.GetClient() == this && nPart == request.m_nPart){ CAICHHash ahMasterHash(&data); if ( (pPartFile->GetAICHHashset()->GetStatus() == AICH_TRUSTED || pPartFile->GetAICHHashset()->GetStatus() == AICH_VERIFIED) && ahMasterHash == pPartFile->GetAICHHashset()->GetMasterHash()) { if(pPartFile->GetAICHHashset()->ReadRecoveryData(request.m_nPart*PARTSIZE, &data)){ // finally all checks passed, everythings seem to be fine AddDebugLogLineN(logAICHTransfer, wxT("AICH Packet Answer: Succeeded to read and validate received recoverydata")); CAICHHashSet::RemoveClientAICHRequest(this); pPartFile->AICHRecoveryDataAvailable(request.m_nPart); return; } else { AddDebugLogLineN(logAICHTransfer, wxT("AICH Packet Answer: Succeeded to read and validate received recoverydata")); } } else { AddDebugLogLineN( logAICHTransfer, wxT("AICH Packet Answer: Masterhash differs from packethash or hashset has no trusted Masterhash") ); } } else { AddDebugLogLineN( logAICHTransfer, wxT("AICH Packet Answer: requested values differ from values in packet") ); } CAICHHashSet::ClientAICHRequestFailed(this); } void CUpDownClient::ProcessAICHRequest(const byte* packet, uint32 size) { if (size != 16 + 2 + CAICHHash::GetHashSize()) { throw wxString(wxT("Received AICH Request Packet with wrong size")); } CMemFile data(packet, size); CMD4Hash hash = data.ReadHash(); uint16 nPart = data.ReadUInt16(); CAICHHash ahMasterHash(&data); CKnownFile* pKnownFile = theApp->sharedfiles->GetFileByID(hash); if (pKnownFile != NULL){ if (pKnownFile->GetAICHHashset()->GetStatus() == AICH_HASHSETCOMPLETE && pKnownFile->GetAICHHashset()->HasValidMasterHash() && pKnownFile->GetAICHHashset()->GetMasterHash() == ahMasterHash && pKnownFile->GetPartCount() > nPart && pKnownFile->GetFileSize() > EMBLOCKSIZE && pKnownFile->GetFileSize() - PARTSIZE*nPart > EMBLOCKSIZE) { CMemFile fileResponse; fileResponse.WriteHash(pKnownFile->GetFileHash()); fileResponse.WriteUInt16(nPart); pKnownFile->GetAICHHashset()->GetMasterHash().Write(&fileResponse); if (pKnownFile->GetAICHHashset()->CreatePartRecoveryData(nPart*PARTSIZE, &fileResponse)){ AddDebugLogLineN(logAICHTransfer, CFormat(wxT("AICH Packet Request: Sucessfully created and send recoverydata for '%s' to %s")) % pKnownFile->GetFileName() % GetClientFullInfo()); CPacket* packAnswer = new CPacket(fileResponse, OP_EMULEPROT, OP_AICHANSWER); theStats::AddUpOverheadOther(packAnswer->GetPacketSize()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_AICHANSWER to") + GetFullIP()); SafeSendPacket(packAnswer); return; } else { AddDebugLogLineN(logAICHTransfer, CFormat(wxT("AICH Packet Request: Failed to create recoverydata for '%s' to %s")) % pKnownFile->GetFileName() % GetClientFullInfo()); } } else { AddDebugLogLineN(logAICHTransfer, CFormat(wxT("AICH Packet Request: Failed to create recoverydata - Hashset not ready or requested Hash differs from Masterhash for '%s' to %s")) % pKnownFile->GetFileName() % GetClientFullInfo()); } } else { AddDebugLogLineN( logAICHTransfer, wxT("AICH Packet Request: Failed to find requested shared file - ") + GetClientFullInfo() ); } CPacket* packAnswer = new CPacket(OP_AICHANSWER, 16, OP_EMULEPROT); packAnswer->Copy16ToDataBuffer(hash.GetHash()); theStats::AddUpOverheadOther(packAnswer->GetPacketSize()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_AICHANSWER to") + GetFullIP()); SafeSendPacket(packAnswer); } void CUpDownClient::ProcessAICHFileHash(CMemFile* data, const CPartFile* file){ CPartFile* pPartFile; if (file == NULL){ pPartFile = theApp->downloadqueue->GetFileByID(data->ReadHash()); } else { pPartFile = const_cast(file); } CAICHHash ahMasterHash(data); if(pPartFile != NULL && pPartFile == GetRequestFile()){ SetReqFileAICHHash(new CAICHHash(ahMasterHash)); pPartFile->GetAICHHashset()->UntrustedHashReceived(ahMasterHash, GetConnectIP()); } else { AddDebugLogLineN( logAICHTransfer, wxT("ProcessAICHFileHash(): PartFile not found or Partfile differs from requested file, ") + GetClientFullInfo() ); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/DownloadListCtrl.cpp0000644000175000017500000012343612611472361022237 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "DownloadListCtrl.h" // Interface declarations #include #include #include // Needed for CFormat #include "amule.h" // Needed for theApp #include "amuleDlg.h" // Needed for CamuleDlg #include "BarShader.h" // Needed for CBarShader #include "CommentDialogLst.h" // Needed for CCommentDialogLst #include "DataToText.h" // Needed for PriorityToStr #include "DownloadQueue.h" #include "FileDetailDialog.h" // Needed for CFileDetailDialog #include "GuiEvents.h" // Needed for CoreNotify_* #include "Logger.h" #include "muuli_wdr.h" // Needed for ID_DLOADLIST #include "PartFile.h" // Needed for CPartFile #include "Preferences.h" #include "SharedFileList.h" // Needed for CSharedFileList #include "TerminationProcess.h" // Needed for CTerminationProcess #include "TransferWnd.h" #include "SourceListCtrl.h" class CPartFile; struct FileCtrlItem_Struct { FileCtrlItem_Struct() : dwUpdated(0), status(NULL), m_fileValue(NULL) { } ~FileCtrlItem_Struct() { delete status; } CPartFile* GetFile() const { return m_fileValue; } void SetContents(CPartFile* file) { m_fileValue = file; } uint32 dwUpdated; wxBitmap* status; private: CPartFile* m_fileValue; }; #define m_ImageList theApp->amuledlg->m_imagelist enum ColumnEnum { ColumnPart = 0, ColumnFileName, ColumnSize, ColumnTransferred, ColumnCompleted, ColumnSpeed, ColumnProgress, ColumnSources, ColumnPriority, ColumnStatus, ColumnTimeRemaining, ColumnLastSeenComplete, ColumnLastReception, ColumnNumberOfColumns }; BEGIN_EVENT_TABLE(CDownloadListCtrl, CMuleListCtrl) EVT_LIST_ITEM_ACTIVATED(ID_DLOADLIST, CDownloadListCtrl::OnItemActivated) EVT_LIST_ITEM_RIGHT_CLICK(ID_DLOADLIST, CDownloadListCtrl::OnMouseRightClick) EVT_LIST_ITEM_MIDDLE_CLICK(ID_DLOADLIST, CDownloadListCtrl::OnMouseMiddleClick) EVT_LIST_ITEM_SELECTED(ID_DLOADLIST, CDownloadListCtrl::OnItemSelectionChanged) EVT_LIST_ITEM_DESELECTED(ID_DLOADLIST, CDownloadListCtrl::OnItemSelectionChanged) EVT_CHAR( CDownloadListCtrl::OnKeyPressed ) EVT_MENU( MP_CANCEL, CDownloadListCtrl::OnCancelFile ) EVT_MENU( MP_PAUSE, CDownloadListCtrl::OnSetStatus ) EVT_MENU( MP_STOP, CDownloadListCtrl::OnSetStatus ) EVT_MENU( MP_RESUME, CDownloadListCtrl::OnSetStatus ) EVT_MENU( MP_PRIOLOW, CDownloadListCtrl::OnSetPriority ) EVT_MENU( MP_PRIONORMAL, CDownloadListCtrl::OnSetPriority ) EVT_MENU( MP_PRIOHIGH, CDownloadListCtrl::OnSetPriority ) EVT_MENU( MP_PRIOAUTO, CDownloadListCtrl::OnSetPriority ) EVT_MENU( MP_SWAP_A4AF_TO_THIS, CDownloadListCtrl::OnSwapSources ) EVT_MENU( MP_SWAP_A4AF_TO_THIS_AUTO, CDownloadListCtrl::OnSwapSources ) EVT_MENU( MP_SWAP_A4AF_TO_ANY_OTHER, CDownloadListCtrl::OnSwapSources ) EVT_MENU_RANGE( MP_ASSIGNCAT, MP_ASSIGNCAT + 99, CDownloadListCtrl::OnSetCategory ) EVT_MENU( MP_CLEARCOMPLETED, CDownloadListCtrl::OnClearCompleted ) EVT_MENU( MP_GETMAGNETLINK, CDownloadListCtrl::OnGetLink ) EVT_MENU( MP_GETED2KLINK, CDownloadListCtrl::OnGetLink ) EVT_MENU( MP_METINFO, CDownloadListCtrl::OnViewFileInfo ) EVT_MENU( MP_VIEW, CDownloadListCtrl::OnPreviewFile ) EVT_MENU( MP_VIEWFILECOMMENTS, CDownloadListCtrl::OnViewFileComments ) EVT_MENU( MP_WS, CDownloadListCtrl::OnGetFeedback ) END_EVENT_TABLE() //! This listtype is used when gathering the selected items. typedef std::list ItemList; CDownloadListCtrl::CDownloadListCtrl( wxWindow *parent, wxWindowID winid, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name ) : CMuleListCtrl( parent, winid, pos, size, style | wxLC_OWNERDRAW, validator, name ) { // Setting the sorter function. SetSortFunc( SortProc ); // Set the table-name (for loading and saving preferences). SetTableName( wxT("Download") ); m_menu = NULL; m_hilightBrush = CMuleColour(wxSYS_COLOUR_HIGHLIGHT).Blend(125).GetBrush(); m_hilightUnfocusBrush = CMuleColour(wxSYS_COLOUR_BTNSHADOW).Blend(125).GetBrush(); InsertColumn( ColumnPart, _("Part"), wxLIST_FORMAT_LEFT, 30, wxT("a") ); InsertColumn( ColumnFileName, _("File Name"), wxLIST_FORMAT_LEFT, 260, wxT("N") ); InsertColumn( ColumnSize, _("Size"), wxLIST_FORMAT_LEFT, 60, wxT("Z") ); InsertColumn( ColumnTransferred, _("Transferred"), wxLIST_FORMAT_LEFT, 65, wxT("T") ); InsertColumn( ColumnCompleted, _("Completed"), wxLIST_FORMAT_LEFT, 65, wxT("C") ); InsertColumn( ColumnSpeed, _("Speed"), wxLIST_FORMAT_LEFT, 65, wxT("S") ); InsertColumn( ColumnProgress, _("Progress"), wxLIST_FORMAT_LEFT, 170, wxT("P") ); InsertColumn( ColumnSources, _("Sources"), wxLIST_FORMAT_LEFT, 50, wxT("u") ); InsertColumn( ColumnPriority, _("Priority"), wxLIST_FORMAT_LEFT, 55, wxT("p") ); InsertColumn( ColumnStatus, _("Status"), wxLIST_FORMAT_LEFT, 70, wxT("s") ); InsertColumn( ColumnTimeRemaining, _("Time Remaining"), wxLIST_FORMAT_LEFT, 110, wxT("r") ); InsertColumn( ColumnLastSeenComplete, _("Last Seen Complete"), wxLIST_FORMAT_LEFT, 220, wxT("c") ); InsertColumn( ColumnLastReception, _("Last Reception"), wxLIST_FORMAT_LEFT, 220, wxT("R") ); m_category = 0; m_filecount = 0; m_ItemSelectionChangePending = false; LoadSettings(); //m_ready = true; } // This is the order the columns had before extendable list-control settings save/load code was introduced. // Don't touch when inserting new columns! wxString CDownloadListCtrl::GetOldColumnOrder() const { return wxT("N,Z,T,C,S,P,u,p,s,r,c,R"); } CDownloadListCtrl::~CDownloadListCtrl() { while ( !m_ListItems.empty() ) { delete m_ListItems.begin()->second; m_ListItems.erase( m_ListItems.begin() ); } } void CDownloadListCtrl::AddFile( CPartFile* file ) { wxASSERT( file ); // Avoid duplicate entries of files if ( m_ListItems.find( file ) == m_ListItems.end() ) { FileCtrlItem_Struct* newitem = new FileCtrlItem_Struct; newitem->SetContents(file); m_ListItems.insert( ListItemsPair( file, newitem ) ); // Check if the new file is visible in the current category if ( file->CheckShowItemInGivenCat( m_category ) ) { ShowFile( file, true ); if (file->IsCompleted()) { CastByID(ID_BTNCLRCOMPL, GetParent(), wxButton)->Enable(true); } SortList(); } } } void CDownloadListCtrl::RemoveFile( CPartFile* file ) { wxASSERT( file ); // Ensure that any list-entries are removed ShowFile( file, false ); // Find the assosiated list-item ListItems::iterator it = m_ListItems.find( file ); if ( it != m_ListItems.end() ) { delete it->second; m_ListItems.erase( it ); } } void CDownloadListCtrl::UpdateItem(const void* toupdate) { // Retrieve all entries matching the source ListIteratorPair rangeIt = m_ListItems.equal_range( toupdate ); // Visible lines, default to all because not all platforms // support the GetVisibleLines function long first = 0, last = GetItemCount(); #ifndef __WINDOWS__ // Get visible lines if we need them if ( rangeIt.first != rangeIt.second ) { GetVisibleLines( &first, &last ); } #endif for ( ListItems::iterator it = rangeIt.first; it != rangeIt.second; ++it ) { FileCtrlItem_Struct* item = it->second; long index = FindItem( -1, reinterpret_cast(item) ); // Determine if the file should be shown in the current category CPartFile* file = item->GetFile(); bool show = file->CheckShowItemInGivenCat( m_category ); if ( index > -1 ) { if ( show ) { item->dwUpdated = 0; // Only update visible lines if ( index >= first && index <= last) { RefreshItem( index ); } } else { // Item should no longer be shown in // the current category ShowFile( file, false ); } } else if ( show ) { // Item has been hidden but new status means // that it should it should be shown in the // current category ShowFile( file, true ); } if (file->IsCompleted() && show) { CastByID(ID_BTNCLRCOMPL, GetParent(), wxButton)->Enable(true); } } } void CDownloadListCtrl::ShowFile( CPartFile* file, bool show ) { wxASSERT( file ); ListItems::iterator it = m_ListItems.find( file ); if ( it != m_ListItems.end() ) { FileCtrlItem_Struct* item = it->second; if ( show ) { // Check if the file is already being displayed long index = FindItem( -1, reinterpret_cast(item) ); if ( index == -1 ) { long newitem = InsertItem( GetItemCount(), wxEmptyString ); SetItemPtrData( newitem, reinterpret_cast(item) ); wxListItem myitem; myitem.m_itemId = newitem; myitem.SetBackgroundColour( GetBackgroundColour() ); SetItem(myitem); RefreshItem( newitem ); ShowFilesCount( 1 ); } } else { // Try to find the file and remove it long index = FindItem( -1, reinterpret_cast(item) ); if ( index > -1 ) { DeleteItem( index ); ShowFilesCount( -1 ); } } } } void CDownloadListCtrl::ChangeCategory( int newCategory ) { Freeze(); bool hasCompletedDownloads = false; // remove all displayed files with a different cat and show the correct ones for (ListItems::const_iterator it = m_ListItems.begin(); it != m_ListItems.end(); ++it) { CPartFile* file = it->second->GetFile(); bool curVisibility = file->CheckShowItemInGivenCat( m_category ); bool newVisibility = file->CheckShowItemInGivenCat( newCategory ); if (newVisibility && file->IsCompleted()) { hasCompletedDownloads = true; } // Check if the visibility of the file has changed. However, if the // current category is the default (0) category, then we can't use // curVisiblity to see if the visibility has changed but instead // have to let ShowFile() check if the file is or isn't on the list. if ( curVisibility != newVisibility || !newCategory ) { ShowFile( file, newVisibility ); } } CastByID(ID_BTNCLRCOMPL, GetParent(), wxButton)->Enable(hasCompletedDownloads); Thaw(); m_category = newCategory; } uint8 CDownloadListCtrl::GetCategory() const { return m_category; } /** * Helper-function: This function is used to gather selected items. * * @param list A pointer to the list to gather items from. * @return A list containing the selected items. */ ItemList GetSelectedItems( CDownloadListCtrl* list) { ItemList results; long index = list->GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while ( index > -1 ) { FileCtrlItem_Struct* item = reinterpret_cast(list->GetItemData( index )); results.push_back( item ); index = list->GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } return results; } void CDownloadListCtrl::OnCancelFile(wxCommandEvent& WXUNUSED(event)) { ItemList files = ::GetSelectedItems(this); for (ItemList::iterator it = files.begin(); it != files.end(); ) { ItemList::iterator it1 = it++; CPartFile* file = (*it1)->GetFile(); if (file) { switch (file->GetStatus()) { case PS_WAITINGFORHASH: case PS_HASHING: case PS_COMPLETING: case PS_COMPLETE: files.erase(it1); break; } } } if (!files.empty()) { wxString question; if (files.size() == 1) { question = _("Are you sure that you wish to delete the selected file?"); } else { question = _("Are you sure that you wish to delete the selected files?"); } if (wxMessageBox( question, _("Cancel"), wxICON_QUESTION | wxYES_NO, this) == wxYES) { for (ItemList::iterator it = files.begin(); it != files.end(); ++it) { CPartFile* file = (*it)->GetFile(); if (file) { CoreNotify_PartFile_Delete(file); } } } } } void CDownloadListCtrl::OnSetPriority( wxCommandEvent& event ) { int priority = 0; switch ( event.GetId() ) { case MP_PRIOLOW: priority = PR_LOW; break; case MP_PRIONORMAL: priority = PR_NORMAL; break; case MP_PRIOHIGH: priority = PR_HIGH; break; case MP_PRIOAUTO: priority = PR_AUTO; break; default: wxFAIL; } ItemList files = ::GetSelectedItems( this ); for ( ItemList::iterator it = files.begin(); it != files.end(); ++it ) { CPartFile* file = (*it)->GetFile(); if ( priority == PR_AUTO ) { CoreNotify_PartFile_PrioAuto( file, true ); } else { CoreNotify_PartFile_PrioAuto( file, false ); CoreNotify_PartFile_PrioSet( file, priority, true ); } } } void CDownloadListCtrl::OnSwapSources( wxCommandEvent& event ) { ItemList files = ::GetSelectedItems( this ); for ( ItemList::iterator it = files.begin(); it != files.end(); ++it ) { CPartFile* file = (*it)->GetFile(); switch ( event.GetId() ) { case MP_SWAP_A4AF_TO_THIS: CoreNotify_PartFile_Swap_A4AF( file ); break; case MP_SWAP_A4AF_TO_THIS_AUTO: CoreNotify_PartFile_Swap_A4AF_Auto( file ); break; case MP_SWAP_A4AF_TO_ANY_OTHER: CoreNotify_PartFile_Swap_A4AF_Others( file ); break; } } } void CDownloadListCtrl::OnSetCategory( wxCommandEvent& event ) { ItemList files = ::GetSelectedItems( this ); for ( ItemList::iterator it = files.begin(); it != files.end(); ++it ) { CoreNotify_PartFile_SetCat( (*it)->GetFile(), event.GetId() - MP_ASSIGNCAT ); ShowFile((*it)->GetFile(), false); } wxListEvent ev; OnItemSelectionChanged(ev); // clear clients that may have been shown ChangeCategory( m_category ); // This only updates the visibility of the clear completed button theApp->amuledlg->m_transferwnd->UpdateCatTabTitles(); } void CDownloadListCtrl::OnSetStatus( wxCommandEvent& event ) { ItemList files = ::GetSelectedItems( this ); for ( ItemList::iterator it = files.begin(); it != files.end(); ++it ) { CPartFile* file = (*it)->GetFile(); switch ( event.GetId() ) { case MP_PAUSE: CoreNotify_PartFile_Pause( file ); break; case MP_RESUME: CoreNotify_PartFile_Resume( file ); break; case MP_STOP: CoreNotify_PartFile_Stop( file ); break; } } } void CDownloadListCtrl::OnClearCompleted( wxCommandEvent& WXUNUSED(event) ) { ClearCompleted(); } void CDownloadListCtrl::OnGetLink(wxCommandEvent& event) { ItemList files = ::GetSelectedItems( this ); wxString URIs; for ( ItemList::iterator it = files.begin(); it != files.end(); ++it ) { CPartFile* file = (*it)->GetFile(); if ( event.GetId() == MP_GETED2KLINK ) { URIs += theApp->CreateED2kLink( file ) + wxT("\n"); } else { URIs += theApp->CreateMagnetLink( file ) + wxT("\n"); } } if ( !URIs.IsEmpty() ) { theApp->CopyTextToClipboard( URIs.BeforeLast(wxT('\n')) ); } } void CDownloadListCtrl::OnGetFeedback(wxCommandEvent& WXUNUSED(event)) { wxString feed; ItemList files = ::GetSelectedItems( this ); for (ItemList::iterator it = files.begin(); it != files.end(); ++it) { if (feed.IsEmpty()) { feed = CFormat(_("Feedback from: %s (%s)\n\n")) % thePrefs::GetUserNick() % theApp->GetFullMuleVersion(); } else { feed += wxT("\n"); } feed += (*it)->GetFile()->GetFeedback(); } if (!feed.IsEmpty()) { theApp->CopyTextToClipboard(feed); } } void CDownloadListCtrl::OnViewFileInfo( wxCommandEvent& WXUNUSED(event) ) { long index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); if (index >= 0) { ShowFileDetailDialog(index); } } void CDownloadListCtrl::OnViewFileComments( wxCommandEvent& WXUNUSED(event) ) { ItemList files = ::GetSelectedItems( this ); if ( files.size() == 1 ) { CCommentDialogLst dialog( this, files.front()->GetFile() ); dialog.ShowModal(); } } void CDownloadListCtrl::OnPreviewFile( wxCommandEvent& WXUNUSED(event) ) { ItemList files = ::GetSelectedItems( this ); if ( files.size() == 1 ) { PreviewFile(files.front()->GetFile()); } } void CDownloadListCtrl::OnItemActivated( wxListEvent& evt ) { CPartFile* file = reinterpret_cast(GetItemData(evt.GetIndex()))->GetFile(); if ((!file->IsPartFile() || file->IsCompleted()) && file->PreviewAvailable()) { PreviewFile( file ); } } void CDownloadListCtrl::OnItemSelectionChanged( wxListEvent& ) { if (!m_ItemSelectionChangePending && !IsSorting()) { m_ItemSelectionChangePending = true; Notify_DownloadCtrlDoItemSelectionChanged(); } } void CDownloadListCtrl::DoItemSelectionChanged() { m_ItemSelectionChangePending = false; CKnownFileVector filesVector; filesVector.reserve(GetSelectedItemCount()); long index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while ( index > -1 ) { CPartFile* file = reinterpret_cast(GetItemData( index ))->GetFile(); if (file->IsPartFile()) { filesVector.push_back(file); } index = GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } std::sort(filesVector.begin(), filesVector.end()); theApp->amuledlg->m_transferwnd->clientlistctrl->ShowSources(filesVector); } void CDownloadListCtrl::OnMouseRightClick(wxListEvent& evt) { long index = CheckSelection(evt); if (index < 0) { return; } delete m_menu; m_menu = NULL; FileCtrlItem_Struct* item = reinterpret_cast(GetItemData( index )); m_menu = new wxMenu( _("Downloads") ); wxMenu* priomenu = new wxMenu(); priomenu->AppendCheckItem(MP_PRIOLOW, _("Low")); priomenu->AppendCheckItem(MP_PRIONORMAL, _("Normal")); priomenu->AppendCheckItem(MP_PRIOHIGH, _("High")); priomenu->AppendCheckItem(MP_PRIOAUTO, _("Auto")); m_menu->Append(MP_MENU_PRIO, _("Priority"), priomenu); m_menu->Append(MP_CANCEL, _("Cancel")); m_menu->Append(MP_STOP, _("&Stop")); m_menu->Append(MP_PAUSE, _("&Pause")); m_menu->Append(MP_RESUME, _("&Resume")); m_menu->Append(MP_CLEARCOMPLETED, _("C&lear completed")); //----------------------------------------------------- m_menu->AppendSeparator(); //----------------------------------------------------- wxMenu* extendedmenu = new wxMenu(); extendedmenu->Append(MP_SWAP_A4AF_TO_THIS, _("Swap every A4AF to this file now")); extendedmenu->AppendCheckItem(MP_SWAP_A4AF_TO_THIS_AUTO, _("Swap every A4AF to this file (Auto)")); //----------------------------------------------------- extendedmenu->AppendSeparator(); //----------------------------------------------------- extendedmenu->Append(MP_SWAP_A4AF_TO_ANY_OTHER, _("Swap every A4AF to any other file now")); //----------------------------------------------------- m_menu->Append(MP_MENU_EXTD, _("Extended Options"), extendedmenu); //----------------------------------------------------- m_menu->AppendSeparator(); //----------------------------------------------------- m_menu->Append(MP_VIEW, _("Preview")); m_menu->Append(MP_METINFO, _("Show file &details")); m_menu->Append(MP_VIEWFILECOMMENTS, _("Show all comments")); //----------------------------------------------------- m_menu->AppendSeparator(); //----------------------------------------------------- m_menu->Append(MP_GETMAGNETLINK, _("Copy magnet URI to clipboard")); m_menu->Append(MP_GETED2KLINK, _("Copy eD2k &link to clipboard")); m_menu->Append(MP_WS, _("Copy feedback to clipboard")); //----------------------------------------------------- m_menu->AppendSeparator(); //----------------------------------------------------- // Add dynamic entries wxMenu *cats = new wxMenu(_("Category")); if (theApp->glob_prefs->GetCatCount() > 1) { for (uint32 i = 0; i < theApp->glob_prefs->GetCatCount(); i++) { if ( i == 0 ) { cats->Append( MP_ASSIGNCAT, _("unassign") ); } else { cats->Append( MP_ASSIGNCAT + i, theApp->glob_prefs->GetCategory(i)->title ); } } } m_menu->Append(MP_MENU_CATS, _("Assign to category"), cats); m_menu->Enable(MP_MENU_CATS, (theApp->glob_prefs->GetCatCount() > 1) ); CPartFile* file = item->GetFile(); // then set state bool canStop; bool canPause; bool canCancel; bool fileResumable; if (file->GetStatus(true) != PS_ALLOCATING) { const uint8_t fileStatus = file->GetStatus(); canStop = (fileStatus != PS_ERROR) && (fileStatus != PS_COMPLETE) && (file->IsStopped() != true); canPause = (file->GetStatus() != PS_PAUSED) && canStop; fileResumable = (fileStatus == PS_PAUSED) || (fileStatus == PS_ERROR) || (fileStatus == PS_INSUFFICIENT); canCancel = fileStatus != PS_COMPLETE; } else { canStop = canPause = canCancel = fileResumable = false; } m_menu->Enable( MP_CANCEL, canCancel ); m_menu->Enable( MP_PAUSE, canPause ); m_menu->Enable( MP_STOP, canStop ); m_menu->Enable( MP_RESUME, fileResumable ); m_menu->Enable( MP_CLEARCOMPLETED, CastByID(ID_BTNCLRCOMPL, GetParent(), wxButton)->IsEnabled() ); wxString view; if (file->IsPartFile() && !file->IsCompleted()) { view = CFormat(wxT("%s [%s]")) % _("Preview") % file->GetPartMetFileName().RemoveExt(); } else if ( file->IsCompleted() ) { view = _("&Open the file"); } m_menu->SetLabel(MP_VIEW, view); m_menu->Enable(MP_VIEW, file->PreviewAvailable()); FileRatingList ratingList; item->GetFile()->GetRatingAndComments(ratingList); m_menu->Enable(MP_VIEWFILECOMMENTS, !ratingList.empty()); m_menu->Check( MP_SWAP_A4AF_TO_THIS_AUTO, file->IsA4AFAuto() ); int priority = file->IsAutoDownPriority() ? PR_AUTO : file->GetDownPriority(); priomenu->Check( MP_PRIOHIGH, priority == PR_HIGH ); priomenu->Check( MP_PRIONORMAL, priority == PR_NORMAL ); priomenu->Check( MP_PRIOLOW, priority == PR_LOW ); priomenu->Check( MP_PRIOAUTO, priority == PR_AUTO ); m_menu->Enable( MP_MENU_EXTD, canPause ); bool autosort = thePrefs::AutoSortDownload(false); PopupMenu(m_menu, evt.GetPoint()); thePrefs::AutoSortDownload(autosort); delete m_menu; m_menu = NULL; } void CDownloadListCtrl::OnMouseMiddleClick(wxListEvent& evt) { // Check if clicked item is selected. If not, unselect all and select it. long index = CheckSelection(evt); if (index >= 0) { ShowFileDetailDialog(index); } } void CDownloadListCtrl::ShowFileDetailDialog(long index) { // Make list of part files in control std::vector files; int nrItems = GetItemCount(); files.reserve(nrItems); for (int i = 0; i < nrItems; i++) { files.push_back(reinterpret_cast(GetItemData(i))->GetFile()); } bool autosort = thePrefs::AutoSortDownload(false); CFileDetailDialog(this, files, index).ShowModal(); thePrefs::AutoSortDownload(autosort); } void CDownloadListCtrl::OnKeyPressed( wxKeyEvent& event ) { // Check if delete was pressed switch (event.GetKeyCode()) { case WXK_NUMPAD_DELETE: case WXK_DELETE: { wxCommandEvent evt; OnCancelFile( evt ); break; } case WXK_F2: { ItemList files = ::GetSelectedItems( this ); if (files.size() == 1) { CPartFile* file = files.front()->GetFile(); // Currently renaming of completed files causes problem with kad if (file->IsPartFile()) { wxString strNewName = ::wxGetTextFromUser( _("Enter new name for this file:"), _("File rename"), file->GetFileName().GetPrintable()); CPath newName = CPath(strNewName); if (newName.IsOk() && (newName != file->GetFileName())) { theApp->sharedfiles->RenameFile(file, newName); } } } break; } default: event.Skip(); } } void CDownloadListCtrl::OnDrawItem( int item, wxDC* dc, const wxRect& rect, const wxRect& rectHL, bool highlighted) { // Don't do any drawing if there's nobody to see it. if ( !theApp->amuledlg->IsDialogVisible( CamuleDlg::DT_TRANSFER_WND ) ) { return; } FileCtrlItem_Struct* content = reinterpret_cast(GetItemData(item)); // Define text-color and background // and the border of the drawn area if (highlighted) { CMuleColour colour; if (GetFocus()) { dc->SetBackground(m_hilightBrush); colour = m_hilightBrush.GetColour(); } else { dc->SetBackground(m_hilightUnfocusBrush); colour = m_hilightUnfocusBrush.GetColour(); } dc->SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT)); dc->SetPen( colour.Blend(65).GetPen() ); } else { dc->SetBackground(*(wxTheBrushList->FindOrCreateBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOX), wxSOLID))); dc->SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); dc->SetPen(*wxTRANSPARENT_PEN); } dc->SetBrush( dc->GetBackground() ); dc->DrawRectangle( rectHL.x, rectHL.y, rectHL.width, rectHL.height ); dc->SetPen(*wxTRANSPARENT_PEN); if (!highlighted || !GetFocus() ) { // If we have category, override textforeground with what category tells us. CPartFile *file = content->GetFile(); if ( file->GetCategory() ) { dc->SetTextForeground(CMuleColour(theApp->glob_prefs->GetCatColor(file->GetCategory())) ); } } // Various constant values we use const int iTextOffset = ( rect.GetHeight() - dc->GetCharHeight() ) / 2; const int iOffset = 4; wxRect cur_rec( iOffset, rect.y, 0, rect.height ); for (int i = 0; i < GetColumnCount(); i++) { wxListItem listitem; GetColumn(i, listitem); if (listitem.GetWidth() > 2*iOffset) { cur_rec.width = listitem.GetWidth() - 2*iOffset; // Make a copy of the current rectangle so we can apply specific tweaks wxRect target_rec = cur_rec; if ( i == ColumnProgress ) { // Double the offset to make room for the cirle-marker target_rec.x += iOffset; target_rec.width -= iOffset; } else { // will ensure that text is about in the middle ;) target_rec.y += iTextOffset; } // Draw the item DrawFileItem(dc, i, target_rec, content); } // Increment to the next column cur_rec.x += listitem.GetWidth(); } } void CDownloadListCtrl::DrawFileItem( wxDC* dc, int nColumn, const wxRect& rect, FileCtrlItem_Struct* item ) const { wxDCClipper clipper( *dc, rect.GetX(), rect.GetY(), rect.GetWidth(), rect.GetHeight() ); const CPartFile* file = item->GetFile(); // Used to contain the contenst of cells that dont need any fancy drawing, just text. wxString text; switch (nColumn) { // Part Number case ColumnPart: { if (file->IsPartFile() && !file->IsCompleted()) { text = CFormat(wxT("%03d")) % file->GetPartMetNumber(); } break; } // Filename case ColumnFileName: { wxString filename = file->GetFileName().GetPrintable(); if (file->HasRating() || file->HasComment()) { int image = Client_CommentOnly_Smiley; if (file->HasRating()) { image = Client_InvalidRating_Smiley + file->UserRating() - 1; } wxASSERT(image >= Client_InvalidRating_Smiley); wxASSERT(image <= Client_CommentOnly_Smiley); int imgWidth = 16; // it's already centered by OnDrawItem() ... m_ImageList.Draw(image, *dc, rect.GetX(), rect.GetY() - 1, wxIMAGELIST_DRAW_TRANSPARENT); dc->DrawText(filename, rect.GetX() + imgWidth + 4, rect.GetY()); } else { dc->DrawText(filename, rect.GetX(), rect.GetY()); } break; } // Filesize case ColumnSize: text = CastItoXBytes( file->GetFileSize() ); break; // Transferred case ColumnTransferred: text = CastItoXBytes( file->GetTransferred() ); break; // Completed case ColumnCompleted: text = CastItoXBytes( file->GetCompletedSize() ); break; // Speed case ColumnSpeed: if ( file->GetTransferingSrcCount() ) { text = CFormat(_("%.1f kB/s")) % file->GetKBpsDown(); } break; // Progress case ColumnProgress:{ if (thePrefs::ShowProgBar()) { int iWidth = rect.GetWidth() - 2; int iHeight = rect.GetHeight() - 2; // DO NOT DRAW IT ALL THE TIME uint32 dwTicks = GetTickCount(); wxMemoryDC cdcStatus; if (item->dwUpdated < dwTicks || file->GetHashingProgress() > 0 || !item->status || iWidth != item->status->GetWidth()) { if ( item->status == NULL) { item->status = new wxBitmap(iWidth, iHeight); } else if ( item->status->GetWidth() != iWidth ) { // Only recreate if the size has changed item->status->Create(iWidth, iHeight); } cdcStatus.SelectObject( *item->status ); if ( thePrefs::UseFlatBar() ) { DrawFileStatusBar( file, &cdcStatus, wxRect(0, 0, iWidth, iHeight), true); } else { DrawFileStatusBar( file, &cdcStatus, wxRect(1, 1, iWidth - 2, iHeight - 2), false); // Draw black border cdcStatus.SetPen( *wxBLACK_PEN ); cdcStatus.SetBrush( *wxTRANSPARENT_BRUSH ); cdcStatus.DrawRectangle( 0, 0, iWidth, iHeight ); } item->dwUpdated = dwTicks + 5000; // Plus five seconds } else { cdcStatus.SelectObject( *item->status ); } dc->Blit( rect.GetX(), rect.GetY() + 1, iWidth, iHeight, &cdcStatus, 0, 0); if (thePrefs::ShowPercent()) { // Percentage of completing or hashing uint16 hashingProgress = file->GetHashingProgress(); double percent = hashingProgress == 0 ? file->GetPercentCompleted() : 100.0 * hashingProgress * PARTSIZE / file->GetFileSize(); if (percent > 100.0) { percent = 100.0; } wxString buffer = CFormat(wxT("%.1f%%")) % percent; int middlex = (2*rect.GetX() + rect.GetWidth()) >> 1; int middley = (2*rect.GetY() + rect.GetHeight()) >> 1; wxCoord textwidth, textheight; dc->GetTextExtent(buffer, &textwidth, &textheight); wxColour AktColor = dc->GetTextForeground(); // Ordinary progress bar: white percentage // Hashing progressbar (green/yellow): black percentage if (thePrefs::ShowProgBar() && hashingProgress == 0) { dc->SetTextForeground(*wxWHITE); } else { dc->SetTextForeground(*wxBLACK); } dc->DrawText(buffer, middlex - (textwidth >> 1), middley - (textheight >> 1)); dc->SetTextForeground(AktColor); } } break; } // Sources case ColumnSources: { uint16 sc = file->GetSourceCount(); uint16 ncsc = file->GetNotCurrentSourcesCount(); if ( ncsc ) { text = CFormat(wxT("%i/%i")) % (sc - ncsc) % sc; } else { text = CFormat(wxT("%i")) % sc; } if ( file->GetSrcA4AFCount() ) { text += CFormat(wxT("+%i")) % file->GetSrcA4AFCount(); } if ( file->GetTransferingSrcCount() ) { text += CFormat(wxT(" (%i)")) % file->GetTransferingSrcCount(); } break; } // Priority case ColumnPriority: text = PriorityToStr( file->GetDownPriority(), file->IsAutoDownPriority() ); break; // File-status case ColumnStatus: text = file->getPartfileStatus(); break; // Remaining case ColumnTimeRemaining: { if ((file->GetStatus() != PS_COMPLETING) && file->IsPartFile()) { uint64 remainSize = file->GetFileSize() - file->GetCompletedSize(); sint32 remainTime = file->getTimeRemaining(); if (remainTime >= 0) { text = CastSecondsToHM(remainTime); } else { text = _("Unknown"); } text += wxT(" (") + CastItoXBytes(remainSize) + wxT(")"); } break; } // Last seen completed case ColumnLastSeenComplete: { if ( file->lastseencomplete ) { text = wxDateTime( file->lastseencomplete ).Format( _("%y/%m/%d %H:%M:%S") ); } else { text = _("Unknown"); } break; } // Last received case ColumnLastReception: { const time_t lastReceived = file->GetLastChangeDatetime(); if (lastReceived) { text = wxDateTime(lastReceived).Format( _("%y/%m/%d %H:%M:%S") ); } else { text = _("Unknown"); } } } if ( !text.IsEmpty() ) { dc->DrawText( text, rect.GetX(), rect.GetY() ); } } wxString CDownloadListCtrl::GetTTSText(unsigned item) const { return reinterpret_cast(GetItemData(item))->GetFile()->GetFileName().GetPrintable(); } int CDownloadListCtrl::SortProc(wxUIntPtr param1, wxUIntPtr param2, long sortData) { FileCtrlItem_Struct* item1 = reinterpret_cast(param1); FileCtrlItem_Struct* item2 = reinterpret_cast(param2); int sortMod = (sortData & CMuleListCtrl::SORT_DES) ? -1 : 1; sortData &= CMuleListCtrl::COLUMN_MASK; // We modify the result so that it matches with ascending or decending return sortMod * Compare( item1->GetFile(), item2->GetFile(), sortData); } int CDownloadListCtrl::Compare( const CPartFile* file1, const CPartFile* file2, long lParamSort) { int result = 0; switch (lParamSort) { // Sort by part number case ColumnPart: result = CmpAny( file1->GetPartMetNumber(), file2->GetPartMetNumber() ); break; // Sort by filename case ColumnFileName: result = CmpAny( file1->GetFileName(), file2->GetFileName() ); break; // Sort by size case ColumnSize: result = CmpAny( file1->GetFileSize(), file2->GetFileSize() ); break; // Sort by transferred case ColumnTransferred: result = CmpAny( file1->GetTransferred(), file2->GetTransferred() ); break; // Sort by completed case ColumnCompleted: result = CmpAny( file1->GetCompletedSize(), file2->GetCompletedSize() ); break; // Sort by speed case ColumnSpeed: result = CmpAny( file1->GetKBpsDown() * 1024, file2->GetKBpsDown() * 1024 ); break; // Sort by percentage completed case ColumnProgress: result = CmpAny( file1->GetPercentCompleted(), file2->GetPercentCompleted() ); break; // Sort by number of sources case ColumnSources: result = CmpAny( file1->GetSourceCount(), file2->GetSourceCount() ); break; // Sort by priority case ColumnPriority: result = CmpAny( file1->GetDownPriority(), file2->GetDownPriority() ); break; // Sort by status case ColumnStatus: result = CmpAny( file1->getPartfileStatusRang(), file2->getPartfileStatusRang() ); break; // Sort by remaining time case ColumnTimeRemaining: if (file1->getTimeRemaining() == -1) { if (file2->getTimeRemaining() == -1) { result = 0; } else { result = 1; } } else { if (file2->getTimeRemaining() == -1) { result = -1; } else { result = CmpAny( file1->getTimeRemaining(), file2->getTimeRemaining() ); } } break; // Sort by last seen complete case ColumnLastSeenComplete: result = CmpAny( file1->lastseencomplete, file2->lastseencomplete ); break; // Sort by last reception case ColumnLastReception: result = CmpAny( file1->GetLastChangeDatetime(), file2->GetLastChangeDatetime() ); break; } return result; } void CDownloadListCtrl::ClearCompleted() { CastByID(ID_BTNCLRCOMPL, GetParent(), wxButton)->Enable(false); // Search for completed files ListOfUInts32 toClear; for ( ListItems::iterator it = m_ListItems.begin(); it != m_ListItems.end(); ) { FileCtrlItem_Struct* item = it->second; ++it; CPartFile* file = item->GetFile(); if (file->IsCompleted() && file->CheckShowItemInGivenCat(m_category)) { toClear.push_back(file->ECID()); } } if (!toClear.empty()) { theApp->downloadqueue->ClearCompleted(toClear); } } void CDownloadListCtrl::ShowFilesCount( int diff ) { m_filecount += diff; wxStaticText* label = CastByName( wxT("downloadsLabel"), GetParent(), wxStaticText ); label->SetLabel(CFormat(_("Downloads (%i)")) % m_filecount); label->GetParent()->Layout(); } static const CMuleColour crHave(104, 104, 104); static const CMuleColour crFlatHave(0, 0, 0); static const CMuleColour crPending(255, 208, 0); static const CMuleColour crFlatPending(255, 255, 100); static const CMuleColour crProgress(0, 224, 0); static const CMuleColour crFlatProgress(0, 150, 0); static const CMuleColour crMissing(255, 0, 0); void CDownloadListCtrl::DrawFileStatusBar( const CPartFile* file, wxDC* dc, const wxRect& rect, bool bFlat ) const { static CBarShader s_ChunkBar(16); s_ChunkBar.SetHeight(rect.height); s_ChunkBar.SetWidth(rect.width); s_ChunkBar.SetFileSize( file->GetFileSize() ); s_ChunkBar.Set3dDepth( thePrefs::Get3DDepth() ); if ( file->IsCompleted() || file->GetStatus() == PS_COMPLETING ) { s_ChunkBar.Fill( bFlat ? crFlatProgress : crProgress ); s_ChunkBar.Draw(dc, rect.x, rect.y, bFlat); return; } else if (file->GetHashingProgress() > 0) { uint64 left = file->GetHashingProgress() * PARTSIZE; if (left < file->GetFileSize() - 1) { // Fill the amount not yet hashed with yellow s_ChunkBar.FillRange(left + 1, file->GetFileSize() - 1, bFlat ? crFlatPending : crPending); } else { left = file->GetFileSize() - 1; } // Fill the amount already hashed with green s_ChunkBar.FillRange(0, left, bFlat ? crFlatProgress : crProgress); s_ChunkBar.Draw(dc, rect.x, rect.y, bFlat); return; } // Part availability ( of missing parts ) const CGapList& gaplist = file->GetGapList(); CGapList::const_iterator it = gaplist.begin(); uint64 lastGapEnd = 0; CMuleColour colour; for (; it != gaplist.end(); ++it) { // Start position uint32 start = ( it.start() / PARTSIZE ); // fill the Have-Part (between this gap and the last) if (it.start()) { s_ChunkBar.FillRange(lastGapEnd + 1, it.start() - 1, bFlat ? crFlatHave : crHave); } lastGapEnd = it.end(); // End position uint32 end = ( it.end() / PARTSIZE ) + 1; // Avoid going past the filesize. Dunno if this can happen, but the old code did check. if ( end > file->GetPartCount() ) { end = file->GetPartCount(); } // Place each gap, one PART at a time for ( uint64 i = start; i < end; ++i ) { if ( i < file->m_SrcpartFrequency.size() && file->m_SrcpartFrequency[i]) { int blue = 210 - ( 22 * ( file->m_SrcpartFrequency[i] - 1 ) ); colour.Set(0, ( blue < 0 ? 0 : blue ), 255 ); } else { colour = crMissing; } if ( file->IsStopped() ) { colour.Blend(50); } uint64 gap_begin = ( i == start ? it.start() : PARTSIZE * i ); uint64 gap_end = ( i == end - 1 ? it.end() : PARTSIZE * ( i + 1 ) - 1 ); s_ChunkBar.FillRange( gap_begin, gap_end, colour); } } // fill the last Have-Part (between this gap and the last) s_ChunkBar.FillRange(lastGapEnd + 1, file->GetFileSize() - 1, bFlat ? crFlatHave : crHave); // Pending parts const CPartFile::CReqBlockPtrList& requestedblocks_list = file->GetRequestedBlockList(); CPartFile::CReqBlockPtrList::const_iterator it2 = requestedblocks_list.begin(); // adjacing pending parts must be joined to avoid bright lines between them uint64 lastStartOffset = 0; uint64 lastEndOffset = 0; colour = bFlat ? crFlatPending : crPending; if ( file->IsStopped() ) { colour.Blend(50); } for (; it2 != requestedblocks_list.end(); ++it2) { if ((*it2)->StartOffset > lastEndOffset + 1) { // not adjacing, draw last block s_ChunkBar.FillRange(lastStartOffset, lastEndOffset, colour); lastStartOffset = (*it2)->StartOffset; lastEndOffset = (*it2)->EndOffset; } else { // adjacing, grow block lastEndOffset = (*it2)->EndOffset; } } s_ChunkBar.FillRange(lastStartOffset, lastEndOffset, colour); // Draw the progress-bar s_ChunkBar.Draw( dc, rect.x, rect.y, bFlat ); // Green progressbar width int width = (int)(( (float)rect.width / (float)file->GetFileSize() ) * file->GetCompletedSize() ); if ( bFlat ) { dc->SetBrush( crFlatProgress.GetBrush() ); dc->DrawRectangle( rect.x, rect.y, width, 3 ); } else { // Draw the two black lines for 3d-effect dc->SetPen( *wxBLACK_PEN ); dc->DrawLine( rect.x, rect.y + 0, rect.x + width, rect.y + 0 ); dc->DrawLine( rect.x, rect.y + 2, rect.x + width, rect.y + 2 ); // Draw the green line dc->SetPen( *(wxThePenList->FindOrCreatePen( crProgress , 1, wxSOLID ) )); dc->DrawLine( rect.x, rect.y + 1, rect.x + width, rect.y + 1 ); } } #ifdef __WINDOWS__ # define QUOTE wxT("\"") #else # define QUOTE wxT("\'") #endif void CDownloadListCtrl::PreviewFile(CPartFile* file) { wxString command; // If no player set in preferences, use mplayer. // And please, do a warning also :P if (thePrefs::GetVideoPlayer().IsEmpty()) { wxMessageBox(_( "To prevent this warning to show up in every preview,\nset your preferred video player in preferences (default is mplayer)."), _("File preview"), wxOK, this); // Since newer versions for some reason mplayer does not automatically // select video output device and needs a parameter, go figure... command = wxT("xterm -T \"aMule Preview\" -iconic -e mplayer ") QUOTE wxT("$file") QUOTE; } else { command = thePrefs::GetVideoPlayer(); } wxString partFile; // File name with full path wxString partName; // File name only, without path // Check if we are (pre)viewing a completed file or not if (!file->IsCompleted()) { // Remove the .met and see if out video player specifiation uses the magic string partName = file->GetPartMetFileName().RemoveExt().GetRaw(); partFile = thePrefs::GetTempDir().JoinPaths(file->GetPartMetFileName().RemoveExt()).GetRaw(); } else { // This is a complete file // FIXME: This is probably not going to work if the filenames are mangled ... partName = file->GetFileName().GetRaw(); partFile = file->GetFullName().GetRaw(); } // Compatibility with old behaviour if (!command.Replace(wxT("$file"), wxT("%PARTFILE"))) { if ((command.Find(wxT("%PARTFILE")) == wxNOT_FOUND) && (command.Find(wxT("%PARTNAME")) == wxNOT_FOUND)) { // No magic string, so we just append the filename to the player command // Need to use quotes in case filename contains spaces command << wxT(" ") << QUOTE << wxT("%PARTFILE") << QUOTE; } } #ifndef __WINDOWS__ // We have to escape quote characters in the file name, otherwise arbitrary // options could be passed to the player. partFile.Replace(QUOTE, wxT("\\") QUOTE); partName.Replace(QUOTE, wxT("\\") QUOTE); #endif command.Replace(wxT("%PARTFILE"), partFile); command.Replace(wxT("%PARTNAME"), partName); // We can't use wxShell here, it blocks the app CTerminationProcess *p = new CTerminationProcess(command); int ret = wxExecute(command, wxEXEC_ASYNC, p); bool ok = ret > 0; if (!ok) { delete p; AddLogLineC(CFormat( _("ERROR: Failed to execute external media-player! Command: `%s'") ) % command ); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/DownloadListCtrl.h0000644000175000017500000001551012611472361021675 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef DOWNLOADLISTCTRL_H #define DOWNLOADLISTCTRL_H #include // Needed for std::multimap #include #include "Types.h" // Needed for uint8 #include "Constants.h" // Needed for DownloadItemType #include "MuleListCtrl.h" // Needed for CMuleListCtrl class CPartFile; class wxBitmap; class wxRect; class wxDC; struct FileCtrlItem_Struct; /** * This class is responsible for representing the download queue. * * The CDownlodListCtrl class is responsible for drawing files being downloaded. * It is in many ways primary widget within the application, since it is here that * users can inspect and manipulate their current downloads. * */ class CDownloadListCtrl : public CMuleListCtrl { public: /** * Constructor. * * @see CMuleListCtrl::CMuleListCtrl for documentation of parameters. */ CDownloadListCtrl( wxWindow *parent, wxWindowID winid = -1, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, const wxString &name = wxT("downloadlistctrl") ); /** * Destructor. */ virtual ~CDownloadListCtrl(); /** * Adds a file to the list, but it wont show unless it matches the current category. * * @param A valid pointer to a new partfile. * * Please note that duplicates wont be added. */ void AddFile( CPartFile* file ); /** * Removes the specified file from the list. * * @param file A valid pointer of the file to be removed. * * This function also removes any sources assosiated with the file. */ void RemoveFile( CPartFile* file ); /** * Shows or hides the sources of a specific file. * * @param file A valid pointer to the file to be shown/hidden. * @param show Whenever or not to show the file. * * If the file is hidden, then its sources will also be hidden. */ void ShowFile( CPartFile* file, bool show ); /** * Updates the state of the specified item, possibly causing a redrawing. * * @param toupdate The source or file to be updated. * * Calling this function with a file as the argument will ensure that the * file is hidden/shown depending on its state and the currently selected * category. */ void UpdateItem(const void* toupdate); /** * Returns the current category. */ uint8 GetCategory() const; /** * Changes the displayed category and updates the list of shown files. * * @param newCategory The new category to display. */ void ChangeCategory( int newCategory ); /** * Clears all completed files from the list. */ void ClearCompleted(); /** * Perform client update when item selection has changed. */ void DoItemSelectionChanged(); protected: /// Return old column order. wxString GetOldColumnOrder() const; private: /** * Updates the displayed number representing the amount of files currently shown. */ void ShowFilesCount( int diff ); /** * @see CMuleListCtrl::GetTTSText */ virtual wxString GetTTSText(unsigned item) const; /** * Overloaded function needed for custom drawing of items. */ virtual void OnDrawItem( int item, wxDC* dc, const wxRect& rect, const wxRect& rectHL, bool highlighted ); /** * Draws a file item. */ void DrawFileItem( wxDC* dc, int nColumn, const wxRect& rect, FileCtrlItem_Struct* item ) const; /** * Draws the status (chunk) bar for a file. */ void DrawFileStatusBar( const CPartFile* file, wxDC* dc, const wxRect& rect, bool bFlat ) const; static int wxCALLBACK SortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData); static int Compare( const CPartFile* file1, const CPartFile* file2, long lParamSort ); // Event-handlers for files void OnCancelFile( wxCommandEvent& event ); void OnSetPriority( wxCommandEvent& event ); void OnSwapSources( wxCommandEvent& event ); void OnSetCategory( wxCommandEvent& event ); void OnSetStatus( wxCommandEvent& event ); void OnClearCompleted( wxCommandEvent& event ); void OnGetLink( wxCommandEvent& event ); void OnGetFeedback( wxCommandEvent& event ); void OnViewFileInfo( wxCommandEvent& event ); void OnViewFileComments( wxCommandEvent& event ); void OnPreviewFile( wxCommandEvent& event ); // Misc event-handlers void OnItemActivated( wxListEvent& event ); void OnMouseRightClick( wxListEvent& event ); void OnMouseMiddleClick( wxListEvent& event ); void OnKeyPressed( wxKeyEvent& event ); void OnItemSelectionChanged( wxListEvent& event ); /** * Executes the user-selected preview command on the specified file. * * @file The file to be previewed. */ void PreviewFile(CPartFile* file); /** * Show file detail dialog for item at index */ void ShowFileDetailDialog(long index); //! The type of list used to store items on the listctrl. typedef std::multimap ListItems; //! Shortcut to the pair-type used on the list. typedef ListItems::value_type ListItemsPair; //! This pair is used when searching for equal-ranges. typedef std::pair< ListItems::iterator, ListItems::iterator > ListIteratorPair; //! This list contains everything shown on the list. Sources are only to //! be found on this list if they are being displayed, whereas files can //! always be found on this list, even if they are currently hidden. ListItems m_ListItems; //! Pointer to the current menu object, used to avoid multiple menus. wxMenu* m_menu; //! Cached brush object. wxBrush m_hilightBrush; //! Cached brush object. wxBrush m_hilightUnfocusBrush; //! The currently displayed category uint8 m_category; //! Flag if change of item selection is pending bool m_ItemSelectionChangePending; //! The number of displayed files int m_filecount; DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/DownloadQueue.cpp0000644000175000017500000013644612611472361021570 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "DownloadQueue.h" // Interface declarations #include #include #include #include #include #include #include "Server.h" // Needed for CServer #include "Packet.h" // Needed for CPacket #include "MemFile.h" // Needed for CMemFile #include "ClientList.h" // Needed for CClientList #include "updownclient.h" // Needed for CUpDownClient #include "ServerList.h" // Needed for CServerList #include "ServerConnect.h" // Needed for CServerConnect #include "ED2KLink.h" // Needed for CED2KFileLink #include "SearchList.h" // Needed for CSearchFile #include "SharedFileList.h" // Needed for CSharedFileList #include "PartFile.h" // Needed for CPartFile #include "Preferences.h" // Needed for thePrefs #include "amule.h" // Needed for theApp #include "AsyncDNS.h" // Needed for CAsyncDNS #include "Statistics.h" // Needed for theStats #include "Logger.h" #include // Needed for CFormat #include "IPFilter.h" #include // Needed for CDirIterator #include "GuiEvents.h" // Needed for Notify_* #include "UserEvents.h" #include "MagnetURI.h" // Needed for CMagnetED2KConverter #include "ScopedPtr.h" // Needed for CScopedPtr #include "PlatformSpecific.h" // Needed for CanFSHandleLargeFiles #include "kademlia/kademlia/Kademlia.h" #include // Do_not_auto_remove (mingw-gcc-3.4.5) // Max. file IDs per UDP packet // ---------------------------- // 576 - 30 bytes of header (28 for UDP, 2 for "E3 9A" edonkey proto) = 546 bytes // 546 / 16 = 34 #define MAX_FILES_PER_UDP_PACKET 31 // 2+16*31 = 498 ... is still less than 512 bytes!! #define MAX_REQUESTS_PER_SERVER 35 CDownloadQueue::CDownloadQueue() // Needs to be recursive that that is can own an observer assigned to itself : m_mutex( wxMUTEX_RECURSIVE ) { m_datarate = 0; m_udpserver = 0; m_lastsorttime = 0; m_lastudpsearchtime = 0; m_lastudpstattime = 0; m_udcounter = 0; m_nLastED2KLinkCheck = 0; m_dwNextTCPSrcReq = 0; m_cRequestsSentToServer = 0; m_lastDiskCheck = 0; // Static thresholds until dynamic kicks in. m_rareFileThreshold = RARE_FILE; m_commonFileThreshold = 100; SetLastKademliaFileRequest(); } CDownloadQueue::~CDownloadQueue() { if ( !m_filelist.empty() ) { for ( unsigned int i = 0; i < m_filelist.size(); i++ ) { AddLogLineNS(CFormat(_("Saving PartFile %u of %u")) % (i + 1) % m_filelist.size()); delete m_filelist[i]; } AddLogLineNS(_("All PartFiles Saved.")); } } void CDownloadQueue::LoadMetFiles(const CPath& path) { AddLogLineNS(CFormat(_("Loading temp files from %s.")) % path.GetPrintable()); std::vector files; // Locate part-files to be loaded CDirIterator TempDir(path); CPath fileName = TempDir.GetFirstFile(CDirIterator::File, wxT("*.part.met")); while (fileName.IsOk()) { files.push_back(path.JoinPaths(fileName)); fileName = TempDir.GetNextFile(); } // Loading in order makes it easier to figure which // file is broken in case of crashes, or the like. std::sort(files.begin(), files.end()); // Load part-files for ( size_t i = 0; i < files.size(); i++ ) { AddLogLineNS(CFormat(_("Loading PartFile %u of %u")) % (i + 1) % files.size()); fileName = files[i].GetFullName(); CPartFile *toadd = new CPartFile(); bool result = toadd->LoadPartFile(path, fileName) != 0; if (!result) { // Try from backup result = toadd->LoadPartFile(path, fileName, true) != 0; } if (result && !IsFileExisting(toadd->GetFileHash())) { { wxMutexLocker lock(m_mutex); m_filelist.push_back(toadd); } NotifyObservers(EventType(EventType::INSERTED, toadd)); Notify_DownloadCtrlAddFile(toadd); } else { wxString msg; if (result) { msg << CFormat(wxT("WARNING: Duplicate partfile with hash '%s' found, skipping: %s")) % toadd->GetFileHash().Encode() % fileName; } else { // If result is false, then reading of both the primary and the backup .met failed AddLogLineN(_("ERROR: Failed to load backup file. Search http://forum.amule.org for .part.met recovery solutions.")); msg << CFormat(wxT("ERROR: Failed to load PartFile '%s'")) % fileName; } AddLogLineCS(msg); // Delete the partfile object in the end. delete toadd; } } AddLogLineNS(_("All PartFiles Loaded.")); if ( GetFileCount() == 0 ) { AddLogLineN(_("No part files found")); } else { AddLogLineN(CFormat(wxPLURAL("Found %u part file", "Found %u part files", GetFileCount())) % GetFileCount()); DoSortByPriority(); CheckDiskspace( path ); Notify_ShowUpdateCatTabTitles(); } } uint16 CDownloadQueue::GetFileCount() const { wxMutexLocker lock( m_mutex ); return m_filelist.size(); } void CDownloadQueue::CopyFileList(std::vector& out_list, bool includeCompleted) const { wxMutexLocker lock(m_mutex); uint32 reserve = m_filelist.size(); if (includeCompleted) { reserve += m_completedDownloads.size(); } out_list.reserve(reserve); for (FileQueue::const_iterator it = m_filelist.begin(); it != m_filelist.end(); ++it) { out_list.push_back(*it); } if (includeCompleted) { for (FileList::const_iterator it = m_completedDownloads.begin(); it != m_completedDownloads.end(); ++it) { out_list.push_back(*it); } } } CServer* CDownloadQueue::GetUDPServer() const { wxMutexLocker lock( m_mutex ); return m_udpserver; } void CDownloadQueue::SetUDPServer( CServer* server ) { wxMutexLocker lock( m_mutex ); m_udpserver = server; } void CDownloadQueue::SaveSourceSeeds() { for ( uint16 i = 0; i < GetFileCount(); i++ ) { GetFileByIndex( i )->SaveSourceSeeds(); } } void CDownloadQueue::LoadSourceSeeds() { for ( uint16 i = 0; i < GetFileCount(); i++ ) { GetFileByIndex( i )->LoadSourceSeeds(); } } void CDownloadQueue::AddSearchToDownload(CSearchFile* toadd, uint8 category) { if ( IsFileExisting(toadd->GetFileHash()) ) { return; } if (toadd->GetFileSize() > OLD_MAX_FILE_SIZE) { if (!PlatformSpecific::CanFSHandleLargeFiles(thePrefs::GetTempDir())) { AddLogLineC(_("Filesystem for Temp directory cannot handle large files.")); return; } else if (!PlatformSpecific::CanFSHandleLargeFiles(theApp->glob_prefs->GetCatPath(category))) { AddLogLineC(_("Filesystem for Incoming directory cannot handle large files.")); return; } } CPartFile* newfile = NULL; try { newfile = new CPartFile(toadd); } catch (const CInvalidPacket& WXUNUSED(e)) { AddDebugLogLineC(logDownloadQueue, wxT("Search-result contained invalid tags, could not add")); } if ( newfile && newfile->GetStatus() != PS_ERROR ) { AddDownload( newfile, thePrefs::AddNewFilesPaused(), category ); // Add any possible sources if (toadd->GetClientID() && toadd->GetClientPort()) { CMemFile sources(1+4+2); sources.WriteUInt8(1); sources.WriteUInt32(toadd->GetClientID()); sources.WriteUInt16(toadd->GetClientPort()); sources.Reset(); newfile->AddSources(sources, toadd->GetClientServerIP(), toadd->GetClientServerPort(), SF_SEARCH_RESULT, false); } for (std::list::const_iterator it = toadd->GetClients().begin(); it != toadd->GetClients().end(); ++it) { CMemFile sources(1+4+2); sources.WriteUInt8(1); sources.WriteUInt32(it->m_ip); sources.WriteUInt16(it->m_port); sources.Reset(); newfile->AddSources(sources, it->m_serverIP, it->m_serverPort, SF_SEARCH_RESULT, false); } } else { delete newfile; } } struct SFindBestPF { void operator()(CPartFile* file) { // Check if we should filter out other categories int alphaorder = 0; if ((m_category != -1) && (file->GetCategory() != m_category)) { return; } else if (file->GetStatus() != PS_PAUSED) { return; } else if (m_alpha && m_result && ((alphaorder = file->GetFileName().GetPrintable().CmpNoCase(m_result->GetFileName().GetPrintable())) > 0)) { return; } if (!m_result) { m_result = file; } else { if (m_alpha && (alphaorder < 0)) { m_result = file; } else if (file->GetDownPriority() > m_result->GetDownPriority()) { // Either not alpha ordered, or they have the same alpha ordering (could happen if they have same name) m_result = file; } else { // Lower priority file } } } //! The category to look for, or -1 if any category is good int m_category; //! If any acceptable files are found, this variable store their pointer CPartFile* m_result; //! If we should order alphabetically bool m_alpha; }; void CDownloadQueue::StartNextFile(CPartFile* oldfile) { if ( thePrefs::StartNextFile() ) { SFindBestPF visitor = { -1, NULL, thePrefs::StartNextFileAlpha() }; { wxMutexLocker lock(m_mutex); if (thePrefs::StartNextFileSame()) { // Get a download in the same category visitor.m_category = oldfile->GetCategory(); visitor = std::for_each(m_filelist.begin(), m_filelist.end(), visitor); } if (visitor.m_result == NULL) { // Get a download, regardless of category visitor.m_category = -1; visitor = std::for_each(m_filelist.begin(), m_filelist.end(), visitor); } // Alpha doesn't need special cases } if (visitor.m_result) { visitor.m_result->ResumeFile(); } } } void CDownloadQueue::AddDownload(CPartFile* file, bool paused, uint8 category) { wxCHECK_RET(!IsFileExisting(file->GetFileHash()), wxT("Adding duplicate part-file")); if (file->GetStatus(true) == PS_ALLOCATING) { file->PauseFile(); } else if (paused && GetFileCount()) { file->StopFile(); } { wxMutexLocker lock(m_mutex); m_filelist.push_back( file ); DoSortByPriority(); } NotifyObservers( EventType( EventType::INSERTED, file ) ); if (category < theApp->glob_prefs->GetCatCount()) { file->SetCategory(category); } else { AddDebugLogLineN( logDownloadQueue, wxT("Tried to add download into invalid category.") ); } Notify_DownloadCtrlAddFile( file ); theApp->searchlist->UpdateSearchFileByHash(file->GetFileHash()); // Update file in the search dialog if it's still open AddLogLineC(CFormat(_("Downloading %s")) % file->GetFileName() ); } bool CDownloadQueue::IsFileExisting( const CMD4Hash& fileid ) const { if (CKnownFile* file = theApp->sharedfiles->GetFileByID(fileid)) { if (file->IsPartFile()) { AddLogLineC(CFormat( _("You are already trying to download the file '%s'") ) % file->GetFileName()); } else { // Check if the file exists, since otherwise the user is forced to // manually reload the shares to download a file again. CPath fullpath = file->GetFilePath().JoinPaths(file->GetFileName()); if (!fullpath.FileExists()) { // The file is no longer available, unshare it theApp->sharedfiles->RemoveFile(file); return false; } AddLogLineC(CFormat( _("You already have the file '%s'") ) % file->GetFileName()); } return true; } else if ((file = GetFileByID(fileid))) { AddLogLineC(CFormat( _("You are already trying to download the file %s") ) % file->GetFileName()); return true; } return false; } #define RARITY_FACTOR 4 // < 25% #define NORMALITY_FACTOR 2 // <50% // x > NORMALITY_FACTOR -> High availablity. void CDownloadQueue::Process() { // send src requests to local server ProcessLocalRequests(); { wxMutexLocker lock(m_mutex); uint32 downspeed = 0; if (thePrefs::GetMaxDownload() != UNLIMITED && m_datarate > 1500) { downspeed = (((uint32)thePrefs::GetMaxDownload())*1024*100)/(m_datarate+1); if (downspeed < 50) { downspeed = 50; } else if (downspeed > 200) { downspeed = 200; } } m_datarate = 0; m_udcounter++; uint32 cur_datarate = 0; uint32 cur_udcounter = m_udcounter; std::list m_sourcecountlist; bool mustPreventSleep = false; for ( uint16 i = 0; i < m_filelist.size(); i++ ) { CPartFile* file = m_filelist[i]; CMutexUnlocker unlocker(m_mutex); uint8 status = file->GetStatus(); mustPreventSleep |= !(status == PS_ERROR || status == PS_INSUFFICIENT || status == PS_PAUSED || status == PS_COMPLETE); if (status == PS_READY || status == PS_EMPTY ){ cur_datarate += file->Process( downspeed, cur_udcounter ); } else { //This will make sure we don't keep old sources to paused and stoped files.. file->StopPausedFile(); } if (!file->IsPaused() && !file->IsStopped()) { m_sourcecountlist.push_back(file->GetSourceCount()); } } if (thePrefs::GetPreventSleepWhileDownloading()) { if ((mustPreventSleep == false) && (theStats::GetSessionSentBytes() < theStats::GetSessionReceivedBytes())) { // I can see right through your clever plan. mustPreventSleep = true; } if (mustPreventSleep) { PlatformSpecific::PreventSleepMode(); } else { PlatformSpecific::AllowSleepMode(); } } else { // Just in case the value changes while we're preventing. Calls to this function are totally inexpensive anwyay PlatformSpecific::AllowSleepMode(); } // Set the source rarity thresholds int nSourceGroups = m_sourcecountlist.size(); if (nSourceGroups) { m_sourcecountlist.sort(); if (nSourceGroups == 1) { // High anyway. m_rareFileThreshold = m_sourcecountlist.front() + 1; m_commonFileThreshold = m_rareFileThreshold + 1; } else if (nSourceGroups == 2) { // One high, one low (unless they're both 0, then both high) m_rareFileThreshold = (m_sourcecountlist.back() > 0) ? (m_sourcecountlist.back() - 1) : 1; m_commonFileThreshold = m_rareFileThreshold + 1; } else { // More than two, time to do some math. // Lower 25% with the current #define values. int rarecutpoint = (nSourceGroups / RARITY_FACTOR); for (int i = 0; i < rarecutpoint; ++ i) { m_sourcecountlist.pop_front(); } m_rareFileThreshold = (m_sourcecountlist.front() > 0) ? (m_sourcecountlist.front() - 1) : 1; // 50% of the non-rare ones, with the curent #define values. int commoncutpoint = (nSourceGroups - rarecutpoint) / NORMALITY_FACTOR; for (int i = 0; i < commoncutpoint; ++ i) { m_sourcecountlist.pop_front(); } m_commonFileThreshold = (m_sourcecountlist.front() > 0) ? (m_sourcecountlist.front() - 1) : 1; } } else { m_rareFileThreshold = RARE_FILE; m_commonFileThreshold = 100; } m_datarate += cur_datarate; if (m_udcounter == 5) { if (theApp->serverconnect->IsUDPSocketAvailable()) { if( (::GetTickCount() - m_lastudpstattime) > UDPSERVERSTATTIME) { m_lastudpstattime = ::GetTickCount(); CMutexUnlocker unlocker(m_mutex); theApp->serverlist->ServerStats(); } } } if (m_udcounter == 10) { m_udcounter = 0; if (theApp->serverconnect->IsUDPSocketAvailable()) { if ( (::GetTickCount() - m_lastudpsearchtime) > UDPSERVERREASKTIME) { SendNextUDPPacket(); } } } if ( (::GetTickCount() - m_lastsorttime) > 10000 ) { DoSortByPriority(); } // Check if any paused files can be resumed CheckDiskspace(thePrefs::GetTempDir()); } // Check for new links once per second. if ((::GetTickCount() - m_nLastED2KLinkCheck) >= 1000) { theApp->AddLinksFromFile(); m_nLastED2KLinkCheck = ::GetTickCount(); } } CPartFile* CDownloadQueue::GetFileByID(const CMD4Hash& filehash) const { wxMutexLocker lock( m_mutex ); for ( uint16 i = 0; i < m_filelist.size(); ++i ) { if ( filehash == m_filelist[i]->GetFileHash()) { return m_filelist[ i ]; } } // Check completed too so we can execute remote commands (like change cat) on them for (FileList::const_iterator it = m_completedDownloads.begin(); it != m_completedDownloads.end(); ++it) { if ( filehash == (*it)->GetFileHash()) { return *it; } } return NULL; } CPartFile* CDownloadQueue::GetFileByIndex(unsigned int index) const { wxMutexLocker lock( m_mutex ); if ( index < m_filelist.size() ) { return m_filelist[ index ]; } wxFAIL; return NULL; } bool CDownloadQueue::IsPartFile(const CKnownFile* file) const { wxMutexLocker lock(m_mutex); for (uint16 i = 0; i < m_filelist.size(); ++i) { if (file == m_filelist[i]) { return true; } } return false; } void CDownloadQueue::OnConnectionState(bool bConnected) { wxMutexLocker lock(m_mutex); for (uint16 i = 0; i < m_filelist.size(); ++i) { if ( m_filelist[i]->GetStatus() == PS_READY || m_filelist[i]->GetStatus() == PS_EMPTY) { m_filelist[i]->SetActive(bConnected); } } } void CDownloadQueue::CheckAndAddSource(CPartFile* sender, CUpDownClient* source) { // if we block loopbacks at this point it should prevent us from connecting to ourself if ( source->HasValidHash() ) { if ( source->GetUserHash() == thePrefs::GetUserHash() ) { AddDebugLogLineN( logDownloadQueue, wxT("Tried to add source with matching hash to your own.") ); source->Safe_Delete(); return; } } if (sender->IsStopped()) { source->Safe_Delete(); return; } // Filter sources which are known to be dead/useless if ( theApp->clientlist->IsDeadSource( source ) || sender->IsDeadSource(source) ) { source->Safe_Delete(); return; } // Filter sources which are incompatible with our encryption setting (one requires it, and the other one doesn't supports it) if ( (source->RequiresCryptLayer() && (!thePrefs::IsClientCryptLayerSupported() || !source->HasValidHash())) || (thePrefs::IsClientCryptLayerRequired() && (!source->SupportsCryptLayer() || !source->HasValidHash()))) { source->Safe_Delete(); return; } // Find all clients with the same hash if ( source->HasValidHash() ) { CClientList::SourceList found = theApp->clientlist->GetClientsByHash( source->GetUserHash() ); CClientList::SourceList::iterator it = found.begin(); for ( ; it != found.end(); ++it ) { CKnownFile* file = it->GetRequestFile(); // Only check files on the download-queue if ( file ) { // Is the found source queued for something else? if ( file != sender ) { // Try to add a request for the other file if ( it->GetClient()->AddRequestForAnotherFile(sender)) { // Add it to downloadlistctrl Notify_SourceCtrlAddSource(sender, *it, A4AF_SOURCE); } } source->Safe_Delete(); return; } } } // Our new source is real new but maybe it is already uploading to us? // If yes the known client will be attached to the var "source" and the old // source-client will be deleted. However, if the request file of the known // source is NULL, then we have to treat it almost like a new source and if // it isn't NULL and not "sender", then we shouldn't move it, but rather add // a request for the new file. ESourceFrom nSourceFrom = source->GetSourceFrom(); if ( theApp->clientlist->AttachToAlreadyKnown(&source, 0) ) { // Already queued for another file? if ( source->GetRequestFile() ) { // If we're already queued for the right file, then there's nothing to do if ( sender != source->GetRequestFile() ) { // Add the new file to the request list source->AddRequestForAnotherFile( sender ); } } else { // Source was known, but reqfile NULL. source->SetRequestFile( sender ); source->SetSourceFrom(nSourceFrom); sender->AddSource( source ); if ( source->GetFileRating() || !source->GetFileComment().IsEmpty() ) { sender->UpdateFileRatingCommentAvail(); } Notify_SourceCtrlAddSource(sender, CCLIENTREF(source, wxT("CDownloadQueue::CheckAndAddSource Notify_SourceCtrlAddSource 1")), UNAVAILABLE_SOURCE); } } else { // Unknown client, add it to the clients list source->SetRequestFile( sender ); theApp->clientlist->AddClient(source); sender->AddSource( source ); if ( source->GetFileRating() || !source->GetFileComment().IsEmpty() ) { sender->UpdateFileRatingCommentAvail(); } Notify_SourceCtrlAddSource(sender, CCLIENTREF(source, wxT("CDownloadQueue::CheckAndAddSource Notify_SourceCtrlAddSource 2")), UNAVAILABLE_SOURCE); } } void CDownloadQueue::CheckAndAddKnownSource(CPartFile* sender,CUpDownClient* source) { // Kad reviewed if (sender->IsStopped()) { return; } // Filter sources which are known to be dead/useless if ( sender->IsDeadSource(source) ) { return; } // "Filter LAN IPs" -- this may be needed here in case we are connected to the internet and are also connected // to a LAN and some client from within the LAN connected to us. Though this situation may be supported in future // by adding that client to the source list and filtering that client's LAN IP when sending sources to // a client within the internet. // // "IPfilter" is not needed here, because that "known" client was already IPfiltered when receiving OP_HELLO. if (!source->HasLowID()) { uint32 nClientIP = wxUINT32_SWAP_ALWAYS(source->GetUserIDHybrid()); if (!IsGoodIP(nClientIP, thePrefs::FilterLanIPs())) { // check for 0-IP, localhost and LAN addresses AddDebugLogLineN(logIPFilter, wxT("Ignored already known source with IP=%s") + Uint32toStringIP(nClientIP)); return; } } // Filter sources which are incompatible with our encryption setting (one requires it, and the other one doesn't supports it) if ( (source->RequiresCryptLayer() && (!thePrefs::IsClientCryptLayerSupported() || !source->HasValidHash())) || (thePrefs::IsClientCryptLayerRequired() && (!source->SupportsCryptLayer() || !source->HasValidHash()))) { return; } CPartFile* file = source->GetRequestFile(); // Check if the file is already queued for something else if ( file ) { if ( file != sender ) { if ( source->AddRequestForAnotherFile( sender ) ) { Notify_SourceCtrlAddSource( sender, CCLIENTREF(source, wxT("CDownloadQueue::CheckAndAddKnownSource Notify_SourceCtrlAddSource 1")), A4AF_SOURCE ); } } } else { source->SetRequestFile( sender ); if ( source->GetFileRating() || !source->GetFileComment().IsEmpty() ) { sender->UpdateFileRatingCommentAvail(); } source->SetSourceFrom(SF_PASSIVE); sender->AddSource( source ); Notify_SourceCtrlAddSource( sender, CCLIENTREF(source, wxT("CDownloadQueue::CheckAndAddKnownSource Notify_SourceCtrlAddSource 2")), UNAVAILABLE_SOURCE); } } bool CDownloadQueue::RemoveSource(CUpDownClient* toremove, bool WXUNUSED(updatewindow), bool bDoStatsUpdate) { bool removed = false; toremove->DeleteAllFileRequests(); for ( uint16 i = 0; i < GetFileCount(); i++ ) { CPartFile* cur_file = GetFileByIndex( i ); // Remove from source-list if ( cur_file->DelSource( toremove ) ) { // Remove from sourcelist widget Notify_SourceCtrlRemoveSource(toremove->ECID(), cur_file); cur_file->RemoveDownloadingSource(toremove); removed = true; if ( bDoStatsUpdate ) { cur_file->UpdatePartsInfo(); } } // Remove from A4AF-list cur_file->RemoveA4AFSource( toremove ); } if ( !toremove->GetFileComment().IsEmpty() || toremove->GetFileRating()>0) { toremove->GetRequestFile()->UpdateFileRatingCommentAvail(); } toremove->SetRequestFile( NULL ); toremove->SetDownloadState(DS_NONE); toremove->ResetFileStatusInfo(); return removed; } void CDownloadQueue::RemoveFile(CPartFile* file, bool keepAsCompleted) { RemoveLocalServerRequest( file ); NotifyObservers( EventType( EventType::REMOVED, file ) ); wxMutexLocker lock( m_mutex ); EraseValue( m_filelist, file ); if (keepAsCompleted) { m_completedDownloads.push_back(file); } } void CDownloadQueue::ClearCompleted(const ListOfUInts32 & ecids) { for (ListOfUInts32::const_iterator it1 = ecids.begin(); it1 != ecids.end(); ++it1) { uint32 ecid = *it1; for (FileList::iterator it = m_completedDownloads.begin(); it != m_completedDownloads.end(); ++it) { CPartFile * file = *it; if (file->ECID() == ecid) { m_completedDownloads.erase(it); // get a new EC ID so it is resent and cleared in remote gui file->RenewECID(); Notify_DownloadCtrlRemoveFile(file); break; } } } } CUpDownClient* CDownloadQueue::GetDownloadClientByIP_UDP(uint32 dwIP, uint16 nUDPPort) const { wxMutexLocker lock( m_mutex ); for ( unsigned int i = 0; i < m_filelist.size(); i++ ) { const CKnownFile::SourceSet& set = m_filelist[i]->GetSourceList(); for ( CKnownFile::SourceSet::const_iterator it = set.begin(); it != set.end(); ++it ) { if ( it->GetIP() == dwIP && it->GetUDPPort() == nUDPPort ) { return it->GetClient(); } } } return NULL; } /** * Checks if the specified server is the one we are connected to. */ bool IsConnectedServer(const CServer* server) { if (server && theApp->serverconnect->GetCurrentServer()) { wxString srvAddr = theApp->serverconnect->GetCurrentServer()->GetAddress(); uint16 srvPort = theApp->serverconnect->GetCurrentServer()->GetPort(); return server->GetAddress() == srvAddr && server->GetPort() == srvPort; } return false; } bool CDownloadQueue::SendNextUDPPacket() { if ( m_filelist.empty() || !theApp->serverconnect->IsUDPSocketAvailable() || !theApp->IsConnectedED2K()) { return false; } // Start monitoring the server and the files list if ( !m_queueServers.IsActive() ) { AddObserver( &m_queueFiles ); theApp->serverlist->AddObserver( &m_queueServers ); } bool packetSent = false; while ( !packetSent ) { // Get max files ids per packet for current server int filesAllowed = GetMaxFilesPerUDPServerPacket(); if (filesAllowed < 1 || !m_udpserver || IsConnectedServer(m_udpserver)) { // Select the next server to ask, must not be the connected server do { m_udpserver = m_queueServers.GetNext(); } while (IsConnectedServer(m_udpserver)); m_cRequestsSentToServer = 0; filesAllowed = GetMaxFilesPerUDPServerPacket(); } // Check if we have asked all servers, in which case we are done if (m_udpserver == NULL) { DoStopUDPRequests(); return false; } // Memoryfile containing the hash of every file to request // 28bytes allocation because 16b + 4b + 8b is the worse case scenario. CMemFile hashlist( 28 ); CPartFile* file = m_queueFiles.GetNext(); while ( file && filesAllowed ) { uint8 status = file->GetStatus(); if ( ( status == PS_READY || status == PS_EMPTY ) && file->GetSourceCount() < thePrefs::GetMaxSourcePerFileUDP() ) { if (file->IsLargeFile() && !m_udpserver->SupportsLargeFilesUDP()) { AddDebugLogLineN(logDownloadQueue, wxT("UDP Request for sources on a large file ignored: server doesn't support it")); } else { ++m_cRequestsSentToServer; hashlist.WriteHash( file->GetFileHash() ); // See the notes on TCP packet if ( m_udpserver->GetUDPFlags() & SRV_UDPFLG_EXT_GETSOURCES2 ) { if (file->IsLargeFile()) { wxASSERT(m_udpserver->SupportsLargeFilesUDP()); hashlist.WriteUInt32( 0 ); hashlist.WriteUInt64( file->GetFileSize() ); } else { hashlist.WriteUInt32( file->GetFileSize() ); } } --filesAllowed; } } // Avoid skipping a file if we can't send any more currently if ( filesAllowed ) { file = m_queueFiles.GetNext(); } } // See if we have anything to send if ( hashlist.GetLength() ) { packetSent = SendGlobGetSourcesUDPPacket(hashlist); } // Check if we've covered every file if ( file == NULL ) { // Reset the list of asked files so that the loop will start over m_queueFiles.Reset(); // Unset the server so that the next server will be used m_udpserver = NULL; } } return true; } void CDownloadQueue::StopUDPRequests() { wxMutexLocker lock( m_mutex ); DoStopUDPRequests(); } void CDownloadQueue::DoStopUDPRequests() { // No need to observe when we wont be using the results theApp->serverlist->RemoveObserver( &m_queueServers ); RemoveObserver( &m_queueFiles ); m_udpserver = 0; m_lastudpsearchtime = ::GetTickCount(); } // Comparison function needed by sort. Returns true if file1 preceeds file2 bool ComparePartFiles(const CPartFile* file1, const CPartFile* file2) { if (file1->GetDownPriority() != file2->GetDownPriority()) { // To place high-priority files before low priority files we have to // invert this test, since PR_LOW is lower than PR_HIGH, and since // placing a PR_LOW file before a PR_HIGH file would mean that // the PR_LOW file gets sources before the PR_HIGH file ... return (file1->GetDownPriority() > file2->GetDownPriority()); } else { int sourcesA = file1->GetSourceCount(); int sourcesB = file2->GetSourceCount(); int notSourcesA = file1->GetNotCurrentSourcesCount(); int notSourcesB = file2->GetNotCurrentSourcesCount(); int cmp = CmpAny( sourcesA - notSourcesA, sourcesB - notSourcesB ); if ( cmp == 0 ) { cmp = CmpAny( notSourcesA, notSourcesB ); } return cmp < 0; } } void CDownloadQueue::DoSortByPriority() { m_lastsorttime = ::GetTickCount(); sort( m_filelist.begin(), m_filelist.end(), ComparePartFiles ); } void CDownloadQueue::ResetLocalServerRequests() { wxMutexLocker lock( m_mutex ); m_dwNextTCPSrcReq = 0; m_localServerReqQueue.clear(); for ( uint16 i = 0; i < m_filelist.size(); i++ ) { m_filelist[i]->SetLocalSrcRequestQueued(false); } } void CDownloadQueue::RemoveLocalServerRequest( CPartFile* file ) { wxMutexLocker lock( m_mutex ); EraseValue( m_localServerReqQueue, file ); file->SetLocalSrcRequestQueued(false); } void CDownloadQueue::ProcessLocalRequests() { wxMutexLocker lock( m_mutex ); bool bServerSupportsLargeFiles = theApp->serverconnect && theApp->serverconnect->GetCurrentServer() && theApp->serverconnect->GetCurrentServer()->SupportsLargeFilesTCP(); if ( (!m_localServerReqQueue.empty()) && (m_dwNextTCPSrcReq < ::GetTickCount()) ) { CMemFile dataTcpFrame(22); const int iMaxFilesPerTcpFrame = 15; int iFiles = 0; while (!m_localServerReqQueue.empty() && iFiles < iMaxFilesPerTcpFrame) { // find the file with the longest waitingtime uint32 dwBestWaitTime = 0xFFFFFFFF; std::list::iterator posNextRequest = m_localServerReqQueue.end(); std::list::iterator it = m_localServerReqQueue.begin(); while( it != m_localServerReqQueue.end() ) { CPartFile* cur_file = (*it); if (cur_file->GetStatus() == PS_READY || cur_file->GetStatus() == PS_EMPTY) { uint8 nPriority = cur_file->GetDownPriority(); if (nPriority > PR_HIGH) { wxFAIL; nPriority = PR_HIGH; } if (cur_file->GetLastSearchTime() + (PR_HIGH-nPriority) < dwBestWaitTime ){ dwBestWaitTime = cur_file->GetLastSearchTime() + (PR_HIGH - nPriority); posNextRequest = it; } ++it; } else { it = m_localServerReqQueue.erase(it); cur_file->SetLocalSrcRequestQueued(false); AddDebugLogLineN(logDownloadQueue, CFormat(wxT("Local server source request for file '%s' not sent because of status '%s'")) % cur_file->GetFileName() % cur_file->getPartfileStatus()); } } if (posNextRequest != m_localServerReqQueue.end()) { CPartFile* cur_file = (*posNextRequest); cur_file->SetLocalSrcRequestQueued(false); cur_file->SetLastSearchTime(::GetTickCount()); m_localServerReqQueue.erase(posNextRequest); iFiles++; if (!bServerSupportsLargeFiles && cur_file->IsLargeFile()) { AddDebugLogLineN(logDownloadQueue, wxT("TCP Request for sources on a large file ignored: server doesn't support it")); } else { AddDebugLogLineN(logDownloadQueue, CFormat(wxT("Creating local sources request packet for '%s'")) % cur_file->GetFileName()); // create request packet CMemFile data(16 + (cur_file->IsLargeFile() ? 8 : 4)); data.WriteHash(cur_file->GetFileHash()); // Kry - lugdunum extended protocol on 17.3 to handle filesize properly. // There is no need to check anything, old server ignore the extra 4 bytes. // As of 17.9, servers accept a 0 32-bits size and then a 64bits size if (cur_file->IsLargeFile()) { wxASSERT(bServerSupportsLargeFiles); data.WriteUInt32(0); data.WriteUInt64(cur_file->GetFileSize()); } else { data.WriteUInt32(cur_file->GetFileSize()); } uint8 byOpcode = 0; if (thePrefs::IsClientCryptLayerSupported() && theApp->serverconnect->GetCurrentServer() != NULL && theApp->serverconnect->GetCurrentServer()->SupportsGetSourcesObfuscation()) { byOpcode = OP_GETSOURCES_OBFU; } else { byOpcode = OP_GETSOURCES; } CPacket packet(data, OP_EDONKEYPROT, byOpcode); dataTcpFrame.Write(packet.GetPacket(), packet.GetRealPacketSize()); } } } int iSize = dataTcpFrame.GetLength(); if (iSize > 0) { // create one 'packet' which contains all buffered OP_GETSOURCES ED2K packets to be sent with one TCP frame // server credits: (16+4)*regularfiles + (16+4+8)*largefiles +1 CScopedPtr packet(new CPacket(new byte[iSize], dataTcpFrame.GetLength(), true, false)); dataTcpFrame.Seek(0, wxFromStart); dataTcpFrame.Read(packet->GetPacket(), iSize); uint32 size = packet->GetPacketSize(); theApp->serverconnect->SendPacket(packet.release(), true); // Deletes `packet'. AddDebugLogLineN(logDownloadQueue, wxT("Sent local sources request packet.")); theStats::AddUpOverheadServer(size); } // next TCP frame with up to 15 source requests is allowed to be sent in.. m_dwNextTCPSrcReq = ::GetTickCount() + SEC2MS(iMaxFilesPerTcpFrame*(16+4)); } } void CDownloadQueue::SendLocalSrcRequest(CPartFile* sender) { wxMutexLocker lock( m_mutex ); m_localServerReqQueue.push_back(sender); } void CDownloadQueue::ResetCatParts(uint8 cat) { for (FileQueue::iterator it = m_filelist.begin(); it != m_filelist.end(); ++it) { CPartFile* file = *it; file->RemoveCategory(cat); } for (FileList::iterator it = m_completedDownloads.begin(); it != m_completedDownloads.end(); ++it) { CPartFile* file = *it; file->RemoveCategory(cat); } } void CDownloadQueue::SetCatPrio(uint8 cat, uint8 newprio) { for ( uint16 i = 0; i < GetFileCount(); i++ ) { CPartFile* file = GetFileByIndex( i ); if ( !cat || file->GetCategory() == cat ) { if ( newprio == PR_AUTO ) { file->SetAutoDownPriority(true); } else { file->SetAutoDownPriority(false); file->SetDownPriority(newprio); } } } } void CDownloadQueue::SetCatStatus(uint8 cat, int newstatus) { std::list files; { wxMutexLocker lock(m_mutex); for ( uint16 i = 0; i < m_filelist.size(); i++ ) { if ( m_filelist[i]->CheckShowItemInGivenCat(cat) ) { files.push_back( m_filelist[i] ); } } } std::list::iterator it = files.begin(); for ( ; it != files.end(); ++it ) { switch ( newstatus ) { case MP_CANCEL: (*it)->Delete(); break; case MP_PAUSE: (*it)->PauseFile(); break; case MP_STOP: (*it)->StopFile(); break; case MP_RESUME: (*it)->ResumeFile(); break; } } } uint16 CDownloadQueue::GetDownloadingFileCount() const { wxMutexLocker lock( m_mutex ); uint16 count = 0; for ( uint16 i = 0; i < m_filelist.size(); i++ ) { uint8 status = m_filelist[i]->GetStatus(); if ( status == PS_READY || status == PS_EMPTY ) { count++; } } return count; } uint16 CDownloadQueue::GetPausedFileCount() const { wxMutexLocker lock( m_mutex ); uint16 count = 0; for ( uint16 i = 0; i < m_filelist.size(); i++ ) { if ( m_filelist[i]->GetStatus() == PS_PAUSED ) { count++; } } return count; } void CDownloadQueue::CheckDiskspace( const CPath& path ) { if ( ::GetTickCount() - m_lastDiskCheck < DISKSPACERECHECKTIME ) { return; } m_lastDiskCheck = ::GetTickCount(); uint64 min = 0; // Check if the user has set an explicit limit if ( thePrefs::IsCheckDiskspaceEnabled() ) { min = thePrefs::GetMinFreeDiskSpace(); } // The very least acceptable diskspace is a single PART if ( min < PARTSIZE ) { min = PARTSIZE; } uint64 free = CPath::GetFreeSpaceAt(path); if (free == static_cast(wxInvalidOffset)) { return; } else if (free < min) { CUserEvents::ProcessEvent( CUserEvents::OutOfDiskSpace, wxT("Temporary partition")); } for (unsigned int i = 0; i < m_filelist.size(); ++i) { CPartFile* file = m_filelist[i]; switch ( file->GetStatus() ) { case PS_ERROR: case PS_COMPLETING: case PS_COMPLETE: continue; } if ( free >= min && file->GetInsufficient() ) { // We'll try to resume files if there is enough free space if ( free - file->GetNeededSpace() > min ) { file->ResumeFile(); } } else if ( free < min && !file->IsPaused() ) { // No space left, stop the files. file->PauseFile( true ); } } } int CDownloadQueue::GetMaxFilesPerUDPServerPacket() const { if ( m_udpserver ) { if ( m_udpserver->GetUDPFlags() & SRV_UDPFLG_EXT_GETSOURCES ) { // get max. file ids per packet if ( m_cRequestsSentToServer < MAX_REQUESTS_PER_SERVER ) { return std::min( MAX_FILES_PER_UDP_PACKET, MAX_REQUESTS_PER_SERVER - m_cRequestsSentToServer ); } } else if ( m_cRequestsSentToServer < MAX_REQUESTS_PER_SERVER ) { return 1; } } return 0; } bool CDownloadQueue::SendGlobGetSourcesUDPPacket(CMemFile& data) { if (!m_udpserver) { return false; } CPacket packet(data, OP_EDONKEYPROT, ((m_udpserver->GetUDPFlags() & SRV_UDPFLG_EXT_GETSOURCES2) ? OP_GLOBGETSOURCES2 : OP_GLOBGETSOURCES)); theStats::AddUpOverheadServer(packet.GetPacketSize()); theApp->serverconnect->SendUDPPacket(&packet,m_udpserver,false); return true; } void CDownloadQueue::AddToResolve(const CMD4Hash& fileid, const wxString& pszHostname, uint16 port, const wxString& hash, uint8 cryptoptions) { // double checking if ( !GetFileByID(fileid) ) { return; } wxMutexLocker lock( m_mutex ); Hostname_Entry entry = { fileid, pszHostname, port, hash, cryptoptions }; m_toresolve.push_front(entry); // Check if there are other DNS lookups on queue if (m_toresolve.size() == 1) { // Check if it is a simple dot address uint32 ip = StringIPtoUint32(pszHostname); if (ip) { OnHostnameResolved(ip); } else { CAsyncDNS* dns = new CAsyncDNS(pszHostname, DNS_SOURCE, theApp); if ((dns->Create() != wxTHREAD_NO_ERROR) || (dns->Run() != wxTHREAD_NO_ERROR)) { dns->Delete(); m_toresolve.pop_front(); } } } } void CDownloadQueue::OnHostnameResolved(uint32 ip) { wxMutexLocker lock( m_mutex ); wxASSERT( m_toresolve.size() ); Hostname_Entry resolved = m_toresolve.front(); m_toresolve.pop_front(); if ( ip ) { CPartFile* file = GetFileByID( resolved.fileid ); if ( file ) { CMemFile sources(1+4+2); sources.WriteUInt8(1); // No. Sources sources.WriteUInt32(ip); sources.WriteUInt16(resolved.port); sources.WriteUInt8(resolved.cryptoptions); if (resolved.cryptoptions & 0x80) { wxASSERT(!resolved.hash.IsEmpty()); CMD4Hash sourcehash; sourcehash.Decode(resolved.hash); sources.WriteHash(sourcehash); } sources.Seek(0,wxFromStart); file->AddSources(sources, 0, 0, SF_LINK, true); } } while (!m_toresolve.empty()) { Hostname_Entry entry = m_toresolve.front(); // Check if it is a simple dot address uint32 tmpIP = StringIPtoUint32(entry.strHostname); if (tmpIP) { OnHostnameResolved(tmpIP); } else { CAsyncDNS* dns = new CAsyncDNS(entry.strHostname, DNS_SOURCE, theApp); if ((dns->Create() != wxTHREAD_NO_ERROR) || (dns->Run() != wxTHREAD_NO_ERROR)) { dns->Delete(); m_toresolve.pop_front(); } else { break; } } } } bool CDownloadQueue::AddLink( const wxString& link, uint8 category ) { wxString uri(link); if (link.compare(0, 7, wxT("magnet:")) == 0) { uri = CMagnetED2KConverter(link); if (uri.empty()) { AddLogLineC(CFormat(_("Cannot convert magnet link to eD2k: %s")) % link); return false; } } if (uri.compare(0, 7, wxT("ed2k://")) == 0) { return AddED2KLink(uri, category); } else { AddLogLineC(CFormat(_("Unknown protocol of link: %s")) % link); return false; } } bool CDownloadQueue::AddED2KLink( const wxString& link, uint8 category ) { wxASSERT( !link.IsEmpty() ); wxString URI = link; // Need the links to end with /, otherwise CreateLinkFromUrl crashes us. if ( URI.Last() != wxT('/') ) { URI += wxT("/"); } try { CScopedPtr uri(CED2KLink::CreateLinkFromUrl(URI)); return AddED2KLink( uri.get(), category ); } catch ( const wxString& err ) { AddLogLineC(CFormat( _("Invalid eD2k link! ERROR: %s")) % err); } return false; } bool CDownloadQueue::AddED2KLink( const CED2KLink* link, uint8 category ) { switch ( link->GetKind() ) { case CED2KLink::kFile: return AddED2KLink( dynamic_cast( link ), category ); case CED2KLink::kServer: return AddED2KLink( dynamic_cast( link ) ); case CED2KLink::kServerList: return AddED2KLink( dynamic_cast( link ) ); default: return false; } } bool CDownloadQueue::AddED2KLink( const CED2KFileLink* link, uint8 category ) { CPartFile* file = NULL; if (IsFileExisting(link->GetHashKey())) { // Must be a shared file if we are to add hashes or sources if ((file = GetFileByID(link->GetHashKey())) == NULL) { return false; } } else { if (link->GetSize() > OLD_MAX_FILE_SIZE) { if (!PlatformSpecific::CanFSHandleLargeFiles(thePrefs::GetTempDir())) { AddLogLineC(_("Filesystem for Temp directory cannot handle large files.")); return false; } else if (!PlatformSpecific::CanFSHandleLargeFiles(theApp->glob_prefs->GetCatPath(category))) { AddLogLineC(_("Filesystem for Incoming directory cannot handle large files.")); return false; } } file = new CPartFile(link); if (file->GetStatus() == PS_ERROR) { delete file; return false; } AddDownload(file, thePrefs::AddNewFilesPaused(), category); } if (link->HasValidAICHHash()) { CAICHHashSet* hashset = file->GetAICHHashset(); if (!hashset->HasValidMasterHash() || (hashset->GetMasterHash() != link->GetAICHHash())) { hashset->SetMasterHash(link->GetAICHHash(), AICH_VERIFIED); hashset->FreeHashSet(); } } const CED2KFileLink::CED2KLinkSourceList& list = link->m_sources; CED2KFileLink::CED2KLinkSourceList::const_iterator it = list.begin(); for (; it != list.end(); ++it) { AddToResolve(link->GetHashKey(), it->addr, it->port, it->hash, it->cryptoptions); } return true; } bool CDownloadQueue::AddED2KLink( const CED2KServerLink* link ) { CServer *server = new CServer( link->GetPort(), Uint32toStringIP( link->GetIP() ) ); server->SetListName( Uint32toStringIP( link->GetIP() ) ); theApp->serverlist->AddServer(server); Notify_ServerAdd(server); return true; } bool CDownloadQueue::AddED2KLink( const CED2KServerListLink* link ) { theApp->serverlist->UpdateServerMetFromURL( link->GetAddress() ); return true; } void CDownloadQueue::ObserverAdded( ObserverType* o ) { CObservableQueue::ObserverAdded( o ); EventType::ValueList list; { wxMutexLocker lock(m_mutex); list.reserve( m_filelist.size() ); list.insert( list.begin(), m_filelist.begin(), m_filelist.end() ); } NotifyObservers( EventType( EventType::INITIAL, &list ), o ); } void CDownloadQueue::KademliaSearchFile(uint32_t searchID, const Kademlia::CUInt128* pcontactID, const Kademlia::CUInt128* pbuddyID, uint8_t type, uint32_t ip, uint16_t tcp, uint16_t udp, uint32_t buddyip, uint16_t buddyport, uint8_t byCryptOptions) { AddDebugLogLineN(logKadSearch, CFormat(wxT("Search result sources (type %i)")) % type); //Safety measure to make sure we are looking for these sources CPartFile* temp = GetFileByKadFileSearchID(searchID); if( !temp ) { AddDebugLogLineN(logKadSearch, wxT("This is not the file we're looking for...")); return; } //Do we need more sources? if(!(!temp->IsStopped() && thePrefs::GetMaxSourcePerFile() > temp->GetSourceCount())) { AddDebugLogLineN(logKadSearch, wxT("No more sources needed for this file")); return; } uint32_t ED2KID = wxUINT32_SWAP_ALWAYS(ip); if (theApp->ipfilter->IsFiltered(ED2KID)) { AddDebugLogLineN(logKadSearch, wxT("Source ip got filtered")); AddDebugLogLineN(logIPFilter, CFormat(wxT("IPfiltered source IP=%s received from Kademlia")) % Uint32toStringIP(ED2KID)); return; } if( (ip == Kademlia::CKademlia::GetIPAddress() || ED2KID == theApp->GetED2KID()) && tcp == thePrefs::GetPort()) { AddDebugLogLineN(logKadSearch, wxT("Trying to add myself as source, ignore")); return; } CUpDownClient* ctemp = NULL; switch (type) { case 4: case 1: { // NonFirewalled users if(!tcp) { AddDebugLogLineN(logKadSearch, CFormat(wxT("Ignored source (IP=%s) received from Kademlia, no tcp port received")) % Uint32toStringIP(ip)); return; } if (!IsGoodIP(ED2KID,thePrefs::FilterLanIPs())) { AddDebugLogLineN(logKadSearch, CFormat(wxT("%s got filtered")) % Uint32toStringIP(ED2KID)); AddDebugLogLineN(logIPFilter, CFormat(wxT("Ignored source (IP=%s) received from Kademlia, filtered")) % Uint32toStringIP(ED2KID)); return; } ctemp = new CUpDownClient(tcp, ip, 0, 0, temp, false, true); ctemp->SetSourceFrom(SF_KADEMLIA); // not actually sent or needed for HighID sources //ctemp->SetServerIP(serverip); //ctemp->SetServerPort(serverport); ctemp->SetKadPort(udp); byte cID[16]; pcontactID->ToByteArray(cID); ctemp->SetUserHash(CMD4Hash(cID)); break; } case 2: { // Don't use this type... Some clients will process it wrong.. break; } case 5: case 3: { // This will be a firewalled client connected to Kad only. // We set the clientID to 1 as a Kad user only has 1 buddy. ctemp = new CUpDownClient(tcp, 1, 0, 0, temp, false, true); // The only reason we set the real IP is for when we get a callback // from this firewalled source, the compare method will match them. ctemp->SetSourceFrom(SF_KADEMLIA); ctemp->SetKadPort(udp); byte cID[16]; pcontactID->ToByteArray(cID); ctemp->SetUserHash(CMD4Hash(cID)); pbuddyID->ToByteArray(cID); ctemp->SetBuddyID(cID); ctemp->SetBuddyIP(buddyip); ctemp->SetBuddyPort(buddyport); break; } case 6: { // firewalled source which supports direct UDP callback // if we are firewalled ourself, the source is useless to us if (theApp->IsFirewalled()) { break; } if ((byCryptOptions & 0x08) == 0){ AddDebugLogLineN(logKadSearch, CFormat(wxT("Received Kad source type 6 (direct callback) which has the direct callback flag not set (%s)")) % Uint32toStringIP(ED2KID)); break; } ctemp = new CUpDownClient(tcp, 1, 0, 0, temp, false, true); ctemp->SetSourceFrom(SF_KADEMLIA); ctemp->SetKadPort(udp); ctemp->SetIP(ED2KID); // need to set the IP address, which cannot be used for TCP but for UDP byte cID[16]; pcontactID->ToByteArray(cID); ctemp->SetUserHash(CMD4Hash(cID)); } } if (ctemp) { // add encryption settings ctemp->SetConnectOptions(byCryptOptions); AddDebugLogLineN(logKadSearch, CFormat(wxT("Happily adding a source (%s) type %d")) % Uint32_16toStringIP_Port(ED2KID, ctemp->GetUserPort()) % type); CheckAndAddSource(temp, ctemp); } } CPartFile* CDownloadQueue::GetFileByKadFileSearchID(uint32 id) const { wxMutexLocker lock( m_mutex ); for ( uint16 i = 0; i < m_filelist.size(); ++i ) { if ( id == m_filelist[i]->GetKadFileSearchID()) { return m_filelist[ i ]; } } return NULL; } bool CDownloadQueue::DoKademliaFileRequest() { return ((::GetTickCount() - lastkademliafilerequest) > KADEMLIAASKTIME); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/DownloadQueue.h0000644000175000017500000002531612611472361021226 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef DOWNLOADQUEUE_H #define DOWNLOADQUEUE_H #include "MD4Hash.h" // Needed for CMD4Hash #include "ObservableQueue.h" // Needed for CObservableQueue #include "GetTickCount.h" // Needed fot GetTickCount #include class CSharedFileList; class CSearchFile; class CPartFile; class CUpDownClient; class CServer; class CMemFile; class CKnownFile; class CED2KLink; class CED2KFileLink; class CED2KServerLink; class CED2KServerListLink; class CPath; namespace Kademlia { class CUInt128; } /** * The download queue houses all active downloads. * * * This class should be thread-safe. */ class CDownloadQueue : public CObservableQueue { public: /** * Constructor. */ CDownloadQueue(); /** * Destructor. */ ~CDownloadQueue(); /** Loads met-files from the specified directory. */ void LoadMetFiles(const CPath& path); /** * Main worker function. */ void Process(); /** * Returns a pointer to the file with the specified hash, or NULL. * * @param filehash The hash to search for. * @return The corresponding file or NULL. */ CPartFile* GetFileByID(const CMD4Hash& filehash) const; /** * Returns the file at the specified position in the file-list, or NULL if invalid. * * @param A valid position in the file-list. * @return A valid pointer or NULL if the index was invalid. */ CPartFile* GetFileByIndex(unsigned int idx) const; /** * Returns true if the file is currently being shared or downloaded */ bool IsFileExisting(const CMD4Hash& fileid) const; /** * Returns true if the specified file is on the download-queue. */ bool IsPartFile(const CKnownFile* file) const; /** * Updates the file's download active time */ void OnConnectionState(bool bConnected); /** * Starts a new download based on the specified search-result. * * @param toadd The search-result to add. * @param category The category to assign to the new download. * * The download will only be started if no identical files are either * being downloaded or shared currently. */ void AddSearchToDownload(CSearchFile* toadd, uint8 category); /** * Adds an existing partfile to the queue. * * @param newfile The file to add. * @param paused If the file should be stopped when added. * @param category The category to assign to the file. */ void AddDownload(CPartFile* newfile, bool paused, uint8 category); /** * Removes the specified file from the queue. * * @param toremove A pointer to the file object to be removed. * @param keepAsCompleted If true add the removed file to the list of completed files. */ void RemoveFile(CPartFile* toremove, bool keepAsCompleted = false); /** * Saves the source-seeds of every file on the queue. */ void SaveSourceSeeds(); /** * Loads the source-seeds of every file on the queue. */ void LoadSourceSeeds(); /** * Adds a potiential new client to the specified file. * * @param sender The owner of the new source. * @param source The client in question, might be deleted! * * This function will check the new client against the already existing * clients. The source will then be queued as is appropriate, or deleted * if it is duplicate of an existing client. */ void CheckAndAddSource(CPartFile* sender, CUpDownClient* source); /** * This function adds already known source to the specified file. * * @param sender The owner fo the new source. * @param source The client in question. * * This function acts like CheckAndAddSource, with the exception that no * checks are made to see if the client is a duplicate. It is assumed that * it is in fact a valid client. */ void CheckAndAddKnownSource(CPartFile* sender, CUpDownClient* source); /** * Removes the specified client completly. * * @param toremove The client to be removed. * @param updatewindow NOT USED! * @param bDoStatsUdpate Specifies if the affected files should update their statistics. * @return True if the sources was found and removed. * * This function will remove the specified source from both normal source * lists, A4AF lists and the downloadqueue-widget. The requestfile of the * source is also reset. */ bool RemoveSource(CUpDownClient* toremove, bool updatewindow = true, bool bDoStatsUpdate = true); /** * Finds the queued client by IP and UDP-port, by looking at file-sources. * * @param dwIP The IP-address of the client. * @param nUDPPort The UDP-port of the client. * @return The matching client or NULL if none was found. */ CUpDownClient* GetDownloadClientByIP_UDP(uint32 dwIP, uint16 nUDPPort) const; /** * Queues the specified file for source-requestion from the connected server. */ void SendLocalSrcRequest(CPartFile* sender); /** * Removes the specified server from the request-queue. */ void RemoveLocalServerRequest(CPartFile* pFile); /** * Resets all queued server-requests. */ void ResetLocalServerRequests(); /** * Starts the next paused file on the queue, going after priority. * Also checks for categories if enabled on preferences. */ void StartNextFile(CPartFile* oldfile); /** * Resets the category of all files with the specified category. */ void ResetCatParts(uint8 cat); /** * Sets the priority of all files with the specified category. */ void SetCatPrio(uint8 cat, uint8 newprio); /** * Sets the status of all files with the specified category. */ void SetCatStatus(uint8 cat, int newstatus); /** * Returns the current number of queued files. */ uint16 GetFileCount() const; /** * Makes a copy of the file list. */ void CopyFileList(std::vector& out_list, bool includeCompleted = false) const; /** * Returns the current number of downloading files. */ uint16 GetDownloadingFileCount() const; /** * Returns the current number of paused files. */ uint16 GetPausedFileCount() const; /** * This function is called when a DNS lookup is finished. */ void OnHostnameResolved(uint32 ip); /** * Adds an ed2k or magnet link to download queue. */ bool AddLink( const wxString& link, uint8 category = 0 ); bool AddED2KLink( const wxString& link, uint8 category = 0 ); bool AddED2KLink( const CED2KLink* link, uint8 category = 0 ); bool AddED2KLink( const CED2KFileLink* link, uint8 category = 0 ); bool AddED2KLink( const CED2KServerLink* link ); bool AddED2KLink( const CED2KServerListLink* link ); /** * Returns the current server which is beening queried by UDP packets. */ CServer* GetUDPServer() const; /** * Set the server to query through UDP packest. */ void SetUDPServer( CServer* server ); /** * Stop the source-requests from non-connected servers. */ void StopUDPRequests(); /* Kad Stuff */ /** * Add a Kad source to a download */ void KademliaSearchFile(uint32_t searchID, const Kademlia::CUInt128* pcontactID, const Kademlia::CUInt128* pkadID, uint8_t type, uint32_t ip, uint16_t tcp, uint16_t udp, uint32_t buddyip, uint16_t buddyport, uint8_t byCryptOptions); CPartFile* GetFileByKadFileSearchID(uint32 id) const; bool DoKademliaFileRequest(); void SetLastKademliaFileRequest() {lastkademliafilerequest = ::GetTickCount();} uint32 GetRareFileThreshold() const { return m_rareFileThreshold; } uint32 GetCommonFileThreshold() const { return m_commonFileThreshold; } /** * Remove a file from the list of completed downloads. */ void ClearCompleted(const ListOfUInts32 & ecids); private: /** * This function initializes new observers with the current contents of the queue. */ virtual void ObserverAdded( ObserverType* o ); /** * Helper-function, sorts the filelist so that high-priority files are first. */ void DoSortByPriority(); /** Checks that there is enough free spaces for temp-files at that specified path. */ void CheckDiskspace(const CPath& path); /** * Stops performing UDP requests. */ void DoStopUDPRequests(); void ProcessLocalRequests(); bool SendNextUDPPacket(); int GetMaxFilesPerUDPServerPacket() const; bool SendGlobGetSourcesUDPPacket(CMemFile& data); void AddToResolve(const CMD4Hash& fileid, const wxString& pszHostname, uint16 port, const wxString& hash, uint8 cryptoptions); //! The mutex assosiated with this class, mutable to allow for const functions. mutable wxMutex m_mutex; uint32 m_datarate; uint32 m_lastDiskCheck; uint32 m_lastudpsearchtime; uint32 m_lastsorttime; uint32 m_lastudpstattime; uint32 m_nLastED2KLinkCheck; uint8 m_cRequestsSentToServer; uint32 m_dwNextTCPSrcReq; uint8 m_udcounter; CServer* m_udpserver; /** * Structure used to store sources with dynamic hostnames. */ struct Hostname_Entry { //! The ID of the file the source provides. CMD4Hash fileid; //! The dynamic hostname. wxString strHostname; //! The user-port of the source. uint16 port; //! The hash of the source wxString hash; //! The cryptoptions for the source uint8 cryptoptions; }; std::deque m_toresolve; typedef std::deque FileQueue; FileQueue m_filelist; typedef std::list FileList; FileList m_localServerReqQueue; //! List of downloads completed and still on display FileList m_completedDownloads; //! Observer used to keep track of which servers have yet to be asked for sources CQueueObserver m_queueServers; //! Observer used to keep track of which file to send UDP requests for CQueueObserver m_queueFiles; /* Kad Stuff */ uint32 lastkademliafilerequest; //! Threshold for rare files, dynamically based on the sources for each. uint32 m_rareFileThreshold; //! Threshold for common files, dynamically based on the sources for each. uint32 m_commonFileThreshold; }; #endif // DOWNLOADQUEUE_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ECSpecialCoreTags.cpp0000644000175000017500000004025512611472361022224 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include // Needed for CECTag #include // Needed for special EC tag creator classes // Since there are only constructors defined here, // removing everything from non-local builds. #include "amule.h" #include "Server.h" // Needed for CServer #include "PartFile.h" // Needed for CPartFile #include "ServerConnect.h" // Needed for CServerConnect #include "updownclient.h" // Needed for CUpDownClient #include "UploadQueue.h" // Needed for CUploadQueue #include "SharedFileList.h" #include "SearchList.h" #include "Friend.h" #include "kademlia/kademlia/Kademlia.h" // used for webserver, amulecmd CEC_Server_Tag::CEC_Server_Tag(const CServer *server, EC_DETAIL_LEVEL detail_level) : CECTag(EC_TAG_SERVER, EC_IPv4_t(server->GetIP(), server->GetPort())) { wxString tmpStr; uint32 tmpInt; uint8 tmpShort; switch (detail_level) { case EC_DETAIL_INC_UPDATE: // should not get here wxFAIL; break; case EC_DETAIL_UPDATE: if ((tmpInt = server->GetPing()) != 0) { AddTag(CECTag(EC_TAG_SERVER_PING, tmpInt)); } if ((tmpShort = (uint8)server->GetFailedCount()) != 0) { AddTag(CECTag(EC_TAG_SERVER_FAILED, tmpShort)); } break; case EC_DETAIL_WEB: case EC_DETAIL_FULL: if ((tmpInt = server->GetPing()) != 0) { AddTag(CECTag(EC_TAG_SERVER_PING, tmpInt)); } if ((tmpShort = (uint8)server->GetPreferences()) != SRV_PR_NORMAL) { AddTag(CECTag(EC_TAG_SERVER_PRIO, tmpShort)); } if ((tmpShort = (uint8)server->GetFailedCount()) != 0) { AddTag(CECTag(EC_TAG_SERVER_FAILED, tmpShort)); } if ((tmpShort = (server->IsStaticMember() ? 1 : 0)) != 0) { AddTag(CECTag(EC_TAG_SERVER_STATIC, tmpShort)); } if (!(tmpStr = server->GetVersion()).IsEmpty()) { AddTag(CECTag(EC_TAG_SERVER_VERSION, tmpStr)); } if (!(tmpStr = server->GetDescription()).IsEmpty()) { AddTag(CECTag(EC_TAG_SERVER_DESC, tmpStr)); } if ((tmpInt = server->GetUsers()) != 0) { AddTag(CECTag(EC_TAG_SERVER_USERS, tmpInt)); } if ((tmpInt = server->GetMaxUsers()) != 0) { AddTag(CECTag(EC_TAG_SERVER_USERS_MAX, tmpInt)); } if ((tmpInt = server->GetFiles()) != 0) { AddTag(CECTag(EC_TAG_SERVER_FILES, tmpInt)); } case EC_DETAIL_CMD: if (!(tmpStr = server->GetListName()).IsEmpty()) { AddTag(CECTag(EC_TAG_SERVER_NAME, tmpStr)); } } } // used for amulegui (EC_DETAIL_INC_UPDATE) CEC_Server_Tag::CEC_Server_Tag(const CServer *server, CValueMap *valuemap) : CECTag(EC_TAG_SERVER, server->ECID()) { AddTag(EC_TAG_SERVER_NAME, server->GetListName(), valuemap); AddTag(EC_TAG_SERVER_DESC, server->GetDescription(), valuemap); AddTag(EC_TAG_SERVER_VERSION, server->GetVersion(), valuemap); AddTag(EC_TAG_SERVER_IP, server->GetIP(), valuemap); AddTag(EC_TAG_SERVER_PORT, server->GetPort(), valuemap); AddTag(EC_TAG_SERVER_PING, server->GetPing(), valuemap); AddTag(EC_TAG_SERVER_PRIO, server->GetPreferences(), valuemap); AddTag(EC_TAG_SERVER_FAILED, server->GetFailedCount(), valuemap); AddTag(EC_TAG_SERVER_STATIC, server->IsStaticMember(), valuemap); AddTag(EC_TAG_SERVER_USERS, server->GetUsers(), valuemap); AddTag(EC_TAG_SERVER_USERS_MAX, server->GetMaxUsers(), valuemap); AddTag(EC_TAG_SERVER_FILES, server->GetFiles(), valuemap); } CEC_ConnState_Tag::CEC_ConnState_Tag(EC_DETAIL_LEVEL detail_level) : CECTag(EC_TAG_CONNSTATE, (uint8)( (theApp->IsConnectedED2K() ? 0x01 : 0x00) | (theApp->serverconnect->IsConnecting() ? 0x02 : 0x00) | (theApp->IsConnectedKad() ? 0x04 : 0x00) | (Kademlia::CKademlia::IsFirewalled() ? 0x08 : 0x00) | (Kademlia::CKademlia::IsRunning() ? 0x10 : 0x00) )) { if (theApp->IsConnectedED2K()) { if ( theApp->serverconnect->GetCurrentServer() ) { if (detail_level == EC_DETAIL_INC_UPDATE) { // Send no full server tag, just the ECID of the connected server AddTag(CECTag(EC_TAG_SERVER, theApp->serverconnect->GetCurrentServer()->ECID())); } else { AddTag(CEC_Server_Tag(theApp->serverconnect->GetCurrentServer(), detail_level)); } } AddTag(CECTag(EC_TAG_ED2K_ID, theApp->GetED2KID())); } else if (theApp->serverconnect->IsConnecting()) { AddTag(CECTag(EC_TAG_ED2K_ID, 0xffffffff)); } AddTag(CECTag(EC_TAG_CLIENT_ID, theApp->GetID())); } CEC_PartFile_Tag::CEC_PartFile_Tag(const CPartFile *file, EC_DETAIL_LEVEL detail_level, CValueMap *valuemap) : CEC_SharedFile_Tag(file, detail_level, valuemap, EC_TAG_PARTFILE) { AddTag(EC_TAG_PARTFILE_STATUS, file->GetStatus(), valuemap); AddTag(EC_TAG_PARTFILE_STOPPED, file->IsStopped(), valuemap); AddTag(EC_TAG_PARTFILE_SOURCE_COUNT, file->GetSourceCount(), valuemap); AddTag(EC_TAG_PARTFILE_SOURCE_COUNT_NOT_CURRENT, file->GetNotCurrentSourcesCount(), valuemap); AddTag(EC_TAG_PARTFILE_SOURCE_COUNT_XFER, file->GetTransferingSrcCount(), valuemap); AddTag(EC_TAG_PARTFILE_SOURCE_COUNT_A4AF, file->GetSrcA4AFCount(), valuemap); if ( (file->GetTransferingSrcCount() > 0) || (detail_level != EC_DETAIL_UPDATE) || valuemap) { AddTag(EC_TAG_PARTFILE_SIZE_XFER, file->GetTransferred(), valuemap); AddTag(EC_TAG_PARTFILE_SIZE_DONE, file->GetCompletedSize(), valuemap); AddTag(EC_TAG_PARTFILE_SPEED, (uint64_t)(file->GetKBpsDown()*1024), valuemap); } AddTag(EC_TAG_PARTFILE_PRIO, (file->IsAutoDownPriority() ? file->GetDownPriority() + 10 : file->GetDownPriority()), valuemap); AddTag(EC_TAG_PARTFILE_CAT, file->GetCategory(), valuemap); AddTag(EC_TAG_PARTFILE_LAST_SEEN_COMP, file->lastseencomplete, valuemap); AddTag(EC_TAG_PARTFILE_LAST_RECV, file->GetLastChangeDatetime(), valuemap); AddTag(EC_TAG_PARTFILE_DOWNLOAD_ACTIVE, file->GetDlActiveTime(), valuemap); AddTag(EC_TAG_PARTFILE_AVAILABLE_PARTS, file->GetAvailablePartCount(), valuemap); AddTag(EC_TAG_PARTFILE_HASHED_PART_COUNT, file->GetHashingProgress(), valuemap); AddTag(EC_TAG_PARTFILE_LOST_CORRUPTION, file->GetLostDueToCorruption(), valuemap); AddTag(EC_TAG_PARTFILE_GAINED_COMPRESSION, file->GetGainDueToCompression(), valuemap); AddTag(EC_TAG_PARTFILE_SAVED_ICH, file->TotalPacketsSavedDueToICH(), valuemap); AddTag(EC_TAG_PARTFILE_A4AFAUTO, file->IsA4AFAuto(), valuemap); // Tag for comments CECEmptyTag sc(EC_TAG_PARTFILE_COMMENTS); FileRatingList list; file->GetRatingAndComments(list); for (FileRatingList::const_iterator it = list.begin(); it != list.end(); ++it) { // Tag children are evaluated by index, not by name sc.AddTag(CECTag(EC_TAG_PARTFILE_COMMENTS, it->UserName)); sc.AddTag(CECTag(EC_TAG_PARTFILE_COMMENTS, it->FileName)); sc.AddTag(CECTag(EC_TAG_PARTFILE_COMMENTS, (uint64) it->Rating)); sc.AddTag(CECTag(EC_TAG_PARTFILE_COMMENTS, it->Comment)); } AddTag(sc, valuemap); if (detail_level == EC_DETAIL_UPDATE) { return; } AddTag(EC_TAG_PARTFILE_PARTMETID, file->GetPartMetNumber(), valuemap); // A4AF sources CECEmptyTag a4afTag(EC_TAG_PARTFILE_A4AF_SOURCES); const CKnownFile::SourceSet& a4afSources = file->GetA4AFList(); for (CKnownFile::SourceSet::const_iterator it = a4afSources.begin(); it != a4afSources.end(); ++it) { a4afTag.AddTag(CECTag(EC_TAG_ECID, it->ECID())); } AddTag(a4afTag, valuemap); } CEC_SharedFile_Tag::CEC_SharedFile_Tag(const CKnownFile *file, EC_DETAIL_LEVEL detail_level, CValueMap *valuemap, ec_tagname_t name) : CECTag(name, file->ECID()) { AddTag(EC_TAG_KNOWNFILE_REQ_COUNT, file->statistic.GetRequests(), valuemap); AddTag(EC_TAG_KNOWNFILE_REQ_COUNT_ALL, file->statistic.GetAllTimeRequests(), valuemap); AddTag(EC_TAG_KNOWNFILE_ACCEPT_COUNT, file->statistic.GetAccepts(), valuemap); AddTag(EC_TAG_KNOWNFILE_ACCEPT_COUNT_ALL, file->statistic.GetAllTimeAccepts(), valuemap); AddTag(EC_TAG_KNOWNFILE_XFERRED, file->statistic.GetTransferred(), valuemap); AddTag(EC_TAG_KNOWNFILE_XFERRED_ALL, file->statistic.GetAllTimeTransferred(), valuemap); AddTag(EC_TAG_KNOWNFILE_AICH_MASTERHASH, file->GetAICHMasterHash(), valuemap); AddTag(EC_TAG_KNOWNFILE_PRIO, (uint8)(file->IsAutoUpPriority() ? file->GetUpPriority() + 10 : file->GetUpPriority()), valuemap); AddTag(EC_TAG_KNOWNFILE_COMPLETE_SOURCES_LOW, file->m_nCompleteSourcesCountLo, valuemap); AddTag(EC_TAG_KNOWNFILE_COMPLETE_SOURCES_HIGH, file->m_nCompleteSourcesCountHi, valuemap); AddTag(EC_TAG_KNOWNFILE_COMPLETE_SOURCES, file->m_nCompleteSourcesCount, valuemap); AddTag(EC_TAG_KNOWNFILE_ON_QUEUE, file->GetQueuedCount(), valuemap); if (detail_level == EC_DETAIL_UPDATE) { return; } AddTag(EC_TAG_PARTFILE_NAME,file->GetFileName().GetPrintable(), valuemap); AddTag(EC_TAG_PARTFILE_HASH, file->GetFileHash(), valuemap); AddTag(EC_TAG_KNOWNFILE_FILENAME, file->IsPartFile() ? wxString(CFormat(wxT("%s")) % static_cast(file)->GetPartMetFileName().RemoveExt()) : file->GetFilePath().GetPrintable(), valuemap); AddTag(EC_TAG_PARTFILE_SIZE_FULL, file->GetFileSize(), valuemap); AddTag(EC_TAG_PARTFILE_ED2K_LINK, theApp->CreateED2kLink(file, (theApp->IsConnectedED2K() && !theApp->serverconnect->IsLowID())), valuemap); AddTag(EC_TAG_KNOWNFILE_COMMENT, file->GetFileComment(), valuemap); AddTag(EC_TAG_KNOWNFILE_RATING, file->GetFileRating(), valuemap); } CEC_UpDownClient_Tag::CEC_UpDownClient_Tag(const CUpDownClient* client, EC_DETAIL_LEVEL detail_level, CValueMap *valuemap) : CECTag(EC_TAG_CLIENT, client->ECID()) { // General AddTag(CECTag(EC_TAG_CLIENT_NAME, client->GetUserName()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_HASH, client->GetUserHash()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_USER_ID, client->GetUserIDHybrid()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_SCORE, client->GetScore()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_SOFTWARE, client->GetClientSoft()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_SOFT_VER_STR, client->GetSoftVerStr()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_USER_IP, client->GetIP()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_USER_PORT, client->GetUserPort()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_FROM, (uint64)client->GetSourceFrom()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_SERVER_IP, client->GetServerIP()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_SERVER_PORT, client->GetServerPort()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_SERVER_NAME, client->GetServerName()), valuemap); // Transfers to Client AddTag(CECTag(EC_TAG_CLIENT_UP_SPEED, client->GetUploadDatarate()), valuemap); if (client->GetDownloadState() == DS_DOWNLOADING || valuemap) { AddTag(CECTag(EC_TAG_CLIENT_DOWN_SPEED, (double)(client->GetKBpsDown())), valuemap); } AddTag(CECTag(EC_TAG_CLIENT_UPLOAD_SESSION, client->GetSessionUp()), valuemap); AddTag(CECTag(EC_TAG_PARTFILE_SIZE_XFER, client->GetTransferredDown()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_UPLOAD_TOTAL, client->GetUploadedTotal()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_DOWNLOAD_TOTAL, client->GetDownloadedTotal()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_UPLOAD_STATE, client->GetUploadState()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_DOWNLOAD_STATE, client->GetDownloadState()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_IDENT_STATE, (uint64) client->GetCurrentIdentState()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_EXT_PROTOCOL, client->ExtProtocolAvailable()), valuemap); // These are not needed atm. Keep them for now, maybe columns get reintroduced in client view. //AddTag(CECTag(EC_TAG_CLIENT_WAIT_TIME, client->GetWaitTime()), valuemap); //AddTag(CECTag(EC_TAG_CLIENT_XFER_TIME, client->GetUpStartTimeDelay()), valuemap); //AddTag(CECTag(EC_TAG_CLIENT_QUEUE_TIME, (uint64)(::GetTickCount() - client->GetWaitStartTime())), valuemap); //AddTag(CECTag(EC_TAG_CLIENT_LAST_TIME, (uint64)(::GetTickCount() - client->GetLastUpRequest())), valuemap); AddTag(CECTag(EC_TAG_CLIENT_WAITING_POSITION, client->GetUploadQueueWaitingPosition()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_REMOTE_QUEUE_RANK, client->IsRemoteQueueFull() ? (uint16)0xffff : client->GetRemoteQueueRank()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_OLD_REMOTE_QUEUE_RANK, client->GetOldRemoteQueueRank()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_OBFUSCATION_STATUS, client->GetObfuscationStatus()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_KAD_PORT, client->GetKadPort()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_FRIEND_SLOT, client->GetFriendSlot()), valuemap); if (detail_level == EC_DETAIL_UPDATE) { return; } const CKnownFile* file = client->GetUploadFile(); if (file) { AddTag(CECTag(EC_TAG_PARTFILE_NAME, file->GetFileName().GetPrintable()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_UPLOAD_FILE, file->ECID()), valuemap); } else { AddTag(CECIntTag(EC_TAG_CLIENT_UPLOAD_FILE, 0), valuemap); } const CPartFile* pfile = client->GetRequestFile(); AddTag(CECTag(EC_TAG_CLIENT_REQUEST_FILE, pfile ? pfile->ECID() : 0), valuemap); AddTag(CECTag(EC_TAG_CLIENT_REMOTE_FILENAME, client->GetClientFilename()), valuemap); if (detail_level != EC_DETAIL_INC_UPDATE) { return; } AddTag(CECTag(EC_TAG_CLIENT_DISABLE_VIEW_SHARED, client->HasDisabledSharedFiles()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_VERSION, client->GetVersion()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_MOD_VERSION, client->GetClientModString()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_OS_INFO, client->GetClientOSInfo()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_AVAILABLE_PARTS, client->GetAvailablePartCount()), valuemap); if (pfile) { const BitVector & partStatus = client->GetPartStatus(); if (partStatus.size() == pfile->GetPartCount()) { if (partStatus.AllTrue()) { // send just an empty tag for a full source AddTag(CECEmptyTag(EC_TAG_CLIENT_PART_STATUS), valuemap); } else { AddTag(CECTag(EC_TAG_CLIENT_PART_STATUS, partStatus.SizeBuffer(), partStatus.GetBuffer()), valuemap); } } AddTag(CECTag(EC_TAG_CLIENT_NEXT_REQUESTED_PART, client->GetNextRequestedPart()), valuemap); AddTag(CECTag(EC_TAG_CLIENT_LAST_DOWNLOADING_PART, client->GetLastDownloadingPart()), valuemap); } if (file) { const BitVector & upPartStatus = client->GetUpPartStatus(); if (upPartStatus.size() == file->GetPartCount()) { AddTag(CECTag(EC_TAG_CLIENT_UPLOAD_PART_STATUS, upPartStatus.SizeBuffer(), upPartStatus.GetBuffer()), valuemap); } } } // // Search reply // CEC_SearchFile_Tag::CEC_SearchFile_Tag(const CSearchFile *file, EC_DETAIL_LEVEL detail_level, CValueMap *valuemap) : CECTag(EC_TAG_SEARCHFILE, file->ECID()) { AddTag(CECTag(EC_TAG_PARTFILE_SOURCE_COUNT, file->GetSourceCount()), valuemap); AddTag(CECTag(EC_TAG_PARTFILE_SOURCE_COUNT_XFER, file->GetCompleteSourceCount()), valuemap); AddTag(CECTag(EC_TAG_PARTFILE_STATUS, (uint32)file->GetDownloadStatus()), valuemap); if (detail_level == EC_DETAIL_UPDATE) { return; } AddTag(CECTag(EC_TAG_PARTFILE_NAME, file->GetFileName().GetPrintable()), valuemap); AddTag(CECTag(EC_TAG_PARTFILE_SIZE_FULL, file->GetFileSize()), valuemap); AddTag(EC_TAG_PARTFILE_HASH, file->GetFileHash(), valuemap); if (file->GetParent()) { AddTag(EC_TAG_SEARCH_PARENT, file->GetParent()->ECID(), valuemap); } } // // Friend // CEC_Friend_Tag::CEC_Friend_Tag(const CFriend* Friend, CValueMap* valuemap) : CECTag(EC_TAG_FRIEND, Friend->ECID()) { AddTag(EC_TAG_FRIEND_NAME, Friend->GetName(), valuemap); AddTag(EC_TAG_FRIEND_HASH, Friend->GetUserHash(), valuemap); AddTag(EC_TAG_FRIEND_IP, Friend->GetIP(), valuemap); AddTag(EC_TAG_FRIEND_PORT, Friend->GetPort(), valuemap); const CClientRef& linkedClient = Friend->GetLinkedClient(); AddTag(EC_TAG_FRIEND_CLIENT, linkedClient.IsLinked() ? linkedClient.ECID() : 0, valuemap); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ECSpecialMuleTags.cpp0000644000175000017500000005566012611472361022244 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include // Needed for CECTag #include // Needed for special EC tag creator classes #include "Preferences.h" #include "amule.h" CEC_Category_Tag::CEC_Category_Tag(uint32 cat_index, EC_DETAIL_LEVEL detail_level) : CECTag(EC_TAG_CATEGORY, cat_index) { Category_Struct *cat = theApp->glob_prefs->GetCategory(cat_index); switch (detail_level) { case EC_DETAIL_UPDATE: case EC_DETAIL_INC_UPDATE: case EC_DETAIL_WEB: case EC_DETAIL_FULL: AddTag(CECTag(EC_TAG_CATEGORY_PATH, cat->path.GetRaw())); AddTag(CECTag(EC_TAG_CATEGORY_COMMENT, cat->comment)); AddTag(CECTag(EC_TAG_CATEGORY_COLOR, (uint32)cat->color)); AddTag(CECTag(EC_TAG_CATEGORY_PRIO, cat->prio)); case EC_DETAIL_CMD: AddTag(CECTag(EC_TAG_CATEGORY_TITLE, cat->title)); } } CEC_Category_Tag::CEC_Category_Tag(uint32 cat_index, wxString name, wxString path, wxString comment, uint32 color, uint8 prio) : CECTag(EC_TAG_CATEGORY, cat_index) { AddTag(CECTag(EC_TAG_CATEGORY_PATH, path)); AddTag(CECTag(EC_TAG_CATEGORY_COMMENT, comment)); AddTag(CECTag(EC_TAG_CATEGORY_COLOR, color)); AddTag(CECTag(EC_TAG_CATEGORY_PRIO, prio)); AddTag(CECTag(EC_TAG_CATEGORY_TITLE, name)); } bool CEC_Category_Tag::Apply() { bool ret = theApp->glob_prefs->UpdateCategory(GetInt(), Name(), CPath(Path()), Comment(), Color(), Prio()); if (!ret) { GetTagByName(EC_TAG_CATEGORY_PATH)->SetStringData(theApp->glob_prefs->GetCatPath(GetInt()).GetRaw()); } return ret; } bool CEC_Category_Tag::Create() { Category_Struct * category = NULL; bool ret = theApp->glob_prefs->CreateCategory(category, Name(), CPath(Path()), Comment(), Color(), Prio()); if (!ret) { GetTagByName(EC_TAG_CATEGORY_PATH)->SetStringData(theApp->glob_prefs->GetCatPath( theApp->glob_prefs->GetCatCount() - 1).GetRaw()); } return ret; } CEC_Prefs_Packet::CEC_Prefs_Packet(uint32 selection, EC_DETAIL_LEVEL pref_details, EC_DETAIL_LEVEL cat_details) : CECPacket(EC_OP_SET_PREFERENCES, pref_details) { if (selection & EC_PREFS_CATEGORIES) { if (theApp->glob_prefs->GetCatCount() > 1) { CECEmptyTag cats(EC_TAG_PREFS_CATEGORIES); for (unsigned int i = 0; i < theApp->glob_prefs->GetCatCount(); ++i) { CEC_Category_Tag catTag(i, cat_details); cats.AddTag(catTag); } AddTag(cats); } } if (selection & EC_PREFS_GENERAL) { CECEmptyTag user_prefs(EC_TAG_PREFS_GENERAL); user_prefs.AddTag(CECTag(EC_TAG_USER_NICK, thePrefs::GetUserNick())); user_prefs.AddTag(CECTag(EC_TAG_USER_HASH, thePrefs::GetUserHash())); user_prefs.AddTag(CECTag(EC_TAG_USER_HOST, thePrefs::GetYourHostname())); user_prefs.AddTag(CECTag(EC_TAG_GENERAL_CHECK_NEW_VERSION, thePrefs::GetCheckNewVersion())); AddTag(user_prefs); } if (selection & EC_PREFS_CONNECTIONS) { CECEmptyTag connPrefs(EC_TAG_PREFS_CONNECTIONS); connPrefs.AddTag(CECTag(EC_TAG_CONN_UL_CAP, thePrefs::GetMaxGraphUploadRate())); connPrefs.AddTag(CECTag(EC_TAG_CONN_DL_CAP, thePrefs::GetMaxGraphDownloadRate())); connPrefs.AddTag(CECTag(EC_TAG_CONN_MAX_UL, thePrefs::GetMaxUpload())); connPrefs.AddTag(CECTag(EC_TAG_CONN_MAX_DL, thePrefs::GetMaxDownload())); connPrefs.AddTag(CECTag(EC_TAG_CONN_SLOT_ALLOCATION, thePrefs::GetSlotAllocation())); connPrefs.AddTag(CECTag(EC_TAG_CONN_TCP_PORT, thePrefs::GetPort())); connPrefs.AddTag(CECTag(EC_TAG_CONN_UDP_PORT, thePrefs::GetUDPPort())); if (thePrefs::IsUDPDisabled()) { connPrefs.AddTag(CECEmptyTag(EC_TAG_CONN_UDP_DISABLE)); } connPrefs.AddTag(CECTag(EC_TAG_CONN_MAX_FILE_SOURCES, thePrefs::GetMaxSourcePerFile())); connPrefs.AddTag(CECTag(EC_TAG_CONN_MAX_CONN, thePrefs::GetMaxConnections())); if (thePrefs::DoAutoConnect()) { connPrefs.AddTag(CECEmptyTag(EC_TAG_CONN_AUTOCONNECT)); } if (thePrefs::Reconnect()) { connPrefs.AddTag(CECEmptyTag(EC_TAG_CONN_RECONNECT)); } if (thePrefs::GetNetworkED2K()) { connPrefs.AddTag(CECEmptyTag(EC_TAG_NETWORK_ED2K)); } if (thePrefs::GetNetworkKademlia()) { connPrefs.AddTag(CECEmptyTag(EC_TAG_NETWORK_KADEMLIA)); } AddTag(connPrefs); } if (selection & EC_PREFS_MESSAGEFILTER) { CECEmptyTag msg_prefs(EC_TAG_PREFS_MESSAGEFILTER); if (thePrefs::MustFilterMessages()) { msg_prefs.AddTag(CECEmptyTag(EC_TAG_MSGFILTER_ENABLED)); } if (thePrefs::IsFilterAllMessages()) { msg_prefs.AddTag(CECEmptyTag(EC_TAG_MSGFILTER_ALL)); } if (thePrefs::MsgOnlyFriends()) { msg_prefs.AddTag(CECEmptyTag(EC_TAG_MSGFILTER_FRIENDS)); } if (thePrefs::MsgOnlySecure()) { msg_prefs.AddTag(CECEmptyTag(EC_TAG_MSGFILTER_SECURE)); } if (thePrefs::IsFilterByKeywords()) { msg_prefs.AddTag(CECEmptyTag(EC_TAG_MSGFILTER_BY_KEYWORD)); } msg_prefs.AddTag(CECTag(EC_TAG_MSGFILTER_KEYWORDS, thePrefs::GetMessageFilterString())); AddTag(msg_prefs); } if (selection & EC_PREFS_REMOTECONTROLS) { CECEmptyTag rc_prefs(EC_TAG_PREFS_REMOTECTRL); rc_prefs.AddTag(CECTag(EC_TAG_WEBSERVER_PORT, thePrefs::GetWSPort())); if (thePrefs::GetWSIsEnabled()) { rc_prefs.AddTag(CECEmptyTag(EC_TAG_WEBSERVER_AUTORUN)); } if (!thePrefs::GetWSPass().IsEmpty()) { CMD4Hash passhash; wxCHECK2(passhash.Decode(thePrefs::GetWSPass()), /* Do nothing. */); rc_prefs.AddTag(CECTag(EC_TAG_PASSWD_HASH, passhash)); } if (thePrefs::GetWSIsLowUserEnabled()) { CECEmptyTag lowUser(EC_TAG_WEBSERVER_GUEST); if (!thePrefs::GetWSLowPass().IsEmpty()) { CMD4Hash passhash; wxCHECK2(passhash.Decode(thePrefs::GetWSLowPass()), /* Do nothing. */); lowUser.AddTag(CECTag(EC_TAG_PASSWD_HASH, passhash)); } rc_prefs.AddTag(lowUser); } if (thePrefs::GetWebUseGzip()) { rc_prefs.AddTag(CECEmptyTag(EC_TAG_WEBSERVER_USEGZIP)); } rc_prefs.AddTag(CECTag(EC_TAG_WEBSERVER_REFRESH, thePrefs::GetWebPageRefresh())); rc_prefs.AddTag(CECTag(EC_TAG_WEBSERVER_TEMPLATE, thePrefs::GetWebTemplate())); AddTag(rc_prefs); } if (selection & EC_PREFS_ONLINESIG) { CECEmptyTag online_sig(EC_TAG_PREFS_ONLINESIG); if (thePrefs::IsOnlineSignatureEnabled()) { online_sig.AddTag(CECEmptyTag(EC_TAG_ONLINESIG_ENABLED)); } AddTag(online_sig); } if (selection & EC_PREFS_SERVERS) { CECEmptyTag srv_prefs(EC_TAG_PREFS_SERVERS); if (thePrefs::DeadServer()) { srv_prefs.AddTag(CECEmptyTag(EC_TAG_SERVERS_REMOVE_DEAD)); } srv_prefs.AddTag(CECTag(EC_TAG_SERVERS_DEAD_SERVER_RETRIES, (uint16)thePrefs::GetDeadserverRetries())); if (thePrefs::AutoServerlist()) { srv_prefs.AddTag(CECEmptyTag(EC_TAG_SERVERS_AUTO_UPDATE)); } // Here should come the URL list... if (thePrefs::AddServersFromServer()) { srv_prefs.AddTag(CECEmptyTag(EC_TAG_SERVERS_ADD_FROM_SERVER)); } if (thePrefs::AddServersFromClient()) { srv_prefs.AddTag(CECEmptyTag(EC_TAG_SERVERS_ADD_FROM_CLIENT)); } if (thePrefs::Score()) { srv_prefs.AddTag(CECEmptyTag(EC_TAG_SERVERS_USE_SCORE_SYSTEM)); } if (thePrefs::GetSmartIdCheck()) { srv_prefs.AddTag(CECEmptyTag(EC_TAG_SERVERS_SMART_ID_CHECK)); } if (thePrefs::IsSafeServerConnectEnabled()) { srv_prefs.AddTag(CECEmptyTag(EC_TAG_SERVERS_SAFE_SERVER_CONNECT)); } if (thePrefs::AutoConnectStaticOnly()) { srv_prefs.AddTag(CECEmptyTag(EC_TAG_SERVERS_AUTOCONN_STATIC_ONLY)); } if (thePrefs::IsManualHighPrio()) { srv_prefs.AddTag(CECEmptyTag(EC_TAG_SERVERS_MANUAL_HIGH_PRIO)); } srv_prefs.AddTag(CECTag(EC_TAG_SERVERS_UPDATE_URL, thePrefs::GetEd2kServersUrl())); AddTag(srv_prefs); } if (selection & EC_PREFS_FILES) { CECEmptyTag filePrefs(EC_TAG_PREFS_FILES); if (thePrefs::IsICHEnabled()) { filePrefs.AddTag(CECEmptyTag(EC_TAG_FILES_ICH_ENABLED)); } if (thePrefs::IsTrustingEveryHash()) { filePrefs.AddTag(CECEmptyTag(EC_TAG_FILES_AICH_TRUST)); } if (thePrefs::AddNewFilesPaused()) { filePrefs.AddTag(CECEmptyTag(EC_TAG_FILES_NEW_PAUSED)); } if (thePrefs::GetNewAutoDown()) { filePrefs.AddTag(CECEmptyTag(EC_TAG_FILES_NEW_AUTO_DL_PRIO)); } if (thePrefs::GetPreviewPrio()) { filePrefs.AddTag(CECEmptyTag(EC_TAG_FILES_PREVIEW_PRIO)); } if (thePrefs::GetNewAutoUp()) { filePrefs.AddTag(CECEmptyTag(EC_TAG_FILES_NEW_AUTO_UL_PRIO)); } if (thePrefs::StartNextFile()) { filePrefs.AddTag(CECEmptyTag(EC_TAG_FILES_START_NEXT_PAUSED)); } if (thePrefs::StartNextFileSame()) { filePrefs.AddTag(CECEmptyTag(EC_TAG_FILES_RESUME_SAME_CAT)); } if (thePrefs::GetSrcSeedsOn()) { filePrefs.AddTag(CECEmptyTag(EC_TAG_FILES_SAVE_SOURCES)); } if (thePrefs::GetExtractMetaData()) { filePrefs.AddTag(CECEmptyTag(EC_TAG_FILES_EXTRACT_METADATA)); } if (thePrefs::GetAllocFullFile()) { filePrefs.AddTag(CECEmptyTag(EC_TAG_FILES_ALLOC_FULL_SIZE)); } if (thePrefs::IsCheckDiskspaceEnabled()) { filePrefs.AddTag(CECEmptyTag(EC_TAG_FILES_CHECK_FREE_SPACE)); } filePrefs.AddTag(CECTag(EC_TAG_FILES_MIN_FREE_SPACE, thePrefs::GetMinFreeDiskSpaceMB())); AddTag(filePrefs); } if (selection & EC_PREFS_DIRECTORIES) { CECEmptyTag dirPrefs(EC_TAG_PREFS_DIRECTORIES); dirPrefs.AddTag(CECTag(EC_TAG_DIRECTORIES_INCOMING, thePrefs::GetIncomingDir().GetRaw())); dirPrefs.AddTag(CECTag(EC_TAG_DIRECTORIES_TEMP, thePrefs::GetTempDir().GetRaw())); uint32 sharedDirs = theApp->glob_prefs->shareddir_list.size(); CECTag dirtag(EC_TAG_DIRECTORIES_SHARED, sharedDirs); for (size_t i = 0; i < sharedDirs; i++) { dirtag.AddTag(CECTag(EC_TAG_STRING, theApp->glob_prefs->shareddir_list[i].GetRaw())); } dirPrefs.AddTag(dirtag); dirPrefs.AddTag(CECTag(EC_TAG_DIRECTORIES_SHARE_HIDDEN, thePrefs::ShareHiddenFiles())); AddTag(dirPrefs); } if (selection & EC_PREFS_STATISTICS) { //#warning TODO } if (selection & EC_PREFS_SECURITY) { CECEmptyTag secPrefs(EC_TAG_PREFS_SECURITY); secPrefs.AddTag(CECTag(EC_TAG_SECURITY_CAN_SEE_SHARES, thePrefs::CanSeeShares())); if (thePrefs::IsFilteringClients()) { secPrefs.AddTag(CECEmptyTag(EC_TAG_IPFILTER_CLIENTS)); } if (thePrefs::IsFilteringServers()) { secPrefs.AddTag(CECEmptyTag(EC_TAG_IPFILTER_SERVERS)); } if (thePrefs::IPFilterAutoLoad()) { secPrefs.AddTag(CECEmptyTag(EC_TAG_IPFILTER_AUTO_UPDATE)); } secPrefs.AddTag(CECTag(EC_TAG_IPFILTER_UPDATE_URL, thePrefs::IPFilterURL())); secPrefs.AddTag(CECTag(EC_TAG_IPFILTER_LEVEL, thePrefs::GetIPFilterLevel())); if (thePrefs::FilterLanIPs()) { secPrefs.AddTag(CECEmptyTag(EC_TAG_IPFILTER_FILTER_LAN)); } if (thePrefs::IsSecureIdentEnabled()) { secPrefs.AddTag(CECEmptyTag(EC_TAG_SECURITY_USE_SECIDENT)); } if (thePrefs::IsClientCryptLayerSupported()) { secPrefs.AddTag(CECEmptyTag(EC_TAG_SECURITY_OBFUSCATION_SUPPORTED)); } if (thePrefs::IsClientCryptLayerRequested()) { secPrefs.AddTag(CECEmptyTag(EC_TAG_SECURITY_OBFUSCATION_REQUESTED)); } if (thePrefs::IsClientCryptLayerRequired()) { secPrefs.AddTag(CECEmptyTag(EC_TAG_SECURITY_OBFUSCATION_REQUIRED)); } AddTag(secPrefs); } if (selection & EC_PREFS_CORETWEAKS) { CECEmptyTag cwPrefs(EC_TAG_PREFS_CORETWEAKS); cwPrefs.AddTag(CECTag(EC_TAG_CORETW_MAX_CONN_PER_FIVE, thePrefs::GetMaxConperFive())); if (thePrefs::GetVerbose()) { cwPrefs.AddTag(CECEmptyTag(EC_TAG_CORETW_VERBOSE)); } cwPrefs.AddTag(CECTag(EC_TAG_CORETW_FILEBUFFER, thePrefs::GetFileBufferSize())); cwPrefs.AddTag(CECTag(EC_TAG_CORETW_UL_QUEUE, thePrefs::GetQueueSize())); cwPrefs.AddTag(CECTag(EC_TAG_CORETW_SRV_KEEPALIVE_TIMEOUT, thePrefs::GetServerKeepAliveTimeout())); AddTag(cwPrefs); } if (selection & EC_PREFS_KADEMLIA) { CECEmptyTag kadPrefs(EC_TAG_PREFS_KADEMLIA); kadPrefs.AddTag(CECTag(EC_TAG_KADEMLIA_UPDATE_URL, thePrefs::GetKadNodesUrl())); AddTag(kadPrefs); } } /** * Applies a boolean value from the set_preferences request * * @param use_tag If true, an unset variable means "leave unchanged". If false, an unset variable means false. * @param thisTab The TAG that contains the TAG with a boolean value * @param applyFunc The function to use for applying the value * @param tagName The name of the TAG that holds the boolean value */ void ApplyBoolean(bool use_tag, const CECTag *thisTab, void (applyFunc)(bool), int tagName) { const CECTag *boolTag = thisTab->GetTagByName(tagName); if (use_tag) { if (boolTag != NULL) { applyFunc(boolTag->GetInt() != 0); } } else { applyFunc(boolTag != NULL); } } /* * This will set all preferences except of categories, which are work as following: * -> On remote gui they are loaded on startup, and then changed on-command * -> Webserver doesn't supposed to change it. */ void CEC_Prefs_Packet::Apply() const { const CECTag *thisTab = NULL; const CECTag *oneTag = NULL; if ((thisTab = GetTagByName(EC_TAG_PREFS_GENERAL)) != NULL) { if ((oneTag = thisTab->GetTagByName(EC_TAG_USER_NICK)) != NULL) { thePrefs::SetUserNick(oneTag->GetStringData()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_USER_HASH)) != NULL) { thePrefs::SetUserHash(oneTag->GetMD4Data()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_USER_HOST)) != NULL) { thePrefs::SetYourHostname(oneTag->GetStringData()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_GENERAL_CHECK_NEW_VERSION)) != NULL) { thePrefs::SetCheckNewVersion(oneTag->GetInt() != 0); } } // // webserver doesn't transmit all boolean values // bool use_tag = (GetDetailLevel() == EC_DETAIL_FULL); if ((thisTab = GetTagByName(EC_TAG_PREFS_CONNECTIONS)) != NULL) { if ((oneTag = thisTab->GetTagByName(EC_TAG_CONN_UL_CAP)) != NULL) { thePrefs::SetMaxGraphUploadRate(oneTag->GetInt()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_CONN_DL_CAP)) != NULL) { thePrefs::SetMaxGraphDownloadRate(oneTag->GetInt()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_CONN_MAX_UL)) != NULL) { thePrefs::SetMaxUpload(oneTag->GetInt()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_CONN_MAX_DL)) != NULL) { thePrefs::SetMaxDownload(oneTag->GetInt()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_CONN_SLOT_ALLOCATION)) != NULL) { thePrefs::SetSlotAllocation(oneTag->GetInt()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_CONN_TCP_PORT)) != NULL) { thePrefs::SetPort(oneTag->GetInt()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_CONN_UDP_PORT)) != NULL) { thePrefs::SetUDPPort(oneTag->GetInt()); } ApplyBoolean(use_tag, thisTab, thePrefs::SetUDPDisable, EC_TAG_CONN_UDP_DISABLE); if ((oneTag = thisTab->GetTagByName(EC_TAG_CONN_MAX_FILE_SOURCES)) != NULL) { thePrefs::SetMaxSourcesPerFile(oneTag->GetInt()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_CONN_MAX_CONN)) != NULL) { thePrefs::SetMaxConnections(oneTag->GetInt()); } ApplyBoolean(use_tag, thisTab, thePrefs::SetAutoConnect, EC_TAG_CONN_AUTOCONNECT); ApplyBoolean(use_tag, thisTab, thePrefs::SetReconnect, EC_TAG_CONN_RECONNECT); ApplyBoolean(use_tag, thisTab, thePrefs::SetNetworkED2K, EC_TAG_NETWORK_ED2K); ApplyBoolean(use_tag, thisTab, thePrefs::SetNetworkKademlia, EC_TAG_NETWORK_KADEMLIA); } if ((thisTab = GetTagByName(EC_TAG_PREFS_MESSAGEFILTER)) != NULL) { ApplyBoolean(use_tag, thisTab, thePrefs::SetMustFilterMessages, EC_TAG_MSGFILTER_ENABLED); ApplyBoolean(use_tag, thisTab, thePrefs::SetFilterAllMessages, EC_TAG_MSGFILTER_ALL); ApplyBoolean(use_tag, thisTab, thePrefs::SetMsgOnlyFriends, EC_TAG_MSGFILTER_FRIENDS); ApplyBoolean(use_tag, thisTab, thePrefs::SetMsgOnlySecure, EC_TAG_MSGFILTER_SECURE); ApplyBoolean(use_tag, thisTab, thePrefs::SetFilterByKeywords, EC_TAG_MSGFILTER_BY_KEYWORD); if ((oneTag = thisTab->GetTagByName(EC_TAG_MSGFILTER_KEYWORDS)) != NULL) { thePrefs::SetMessageFilterString(oneTag->GetStringData()); } } if ((thisTab = GetTagByName(EC_TAG_PREFS_REMOTECTRL)) != NULL) { ApplyBoolean(use_tag, thisTab, thePrefs::SetWSIsEnabled, EC_TAG_WEBSERVER_AUTORUN); if ((oneTag = thisTab->GetTagByName(EC_TAG_WEBSERVER_PORT)) != NULL) { thePrefs::SetWSPort(oneTag->GetInt()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_PASSWD_HASH)) != NULL) { thePrefs::SetWSPass(oneTag->GetMD4Data().Encode()); } ApplyBoolean(use_tag, thisTab, thePrefs::SetWSIsLowUserEnabled, EC_TAG_WEBSERVER_GUEST); if ((oneTag = thisTab->GetTagByName(EC_TAG_WEBSERVER_GUEST)) != NULL) { if ((oneTag->GetTagByName(EC_TAG_PASSWD_HASH)) != NULL) { thePrefs::SetWSLowPass(oneTag->GetTagByName(EC_TAG_PASSWD_HASH)->GetMD4Data().Encode()); } } ApplyBoolean(use_tag, thisTab, thePrefs::SetWebUseGzip, EC_TAG_WEBSERVER_USEGZIP); if ((oneTag = thisTab->GetTagByName(EC_TAG_WEBSERVER_REFRESH)) != NULL) { thePrefs::SetWebPageRefresh(oneTag->GetInt()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_WEBSERVER_TEMPLATE)) != NULL) { thePrefs::SetWebTemplate(oneTag->GetStringData()); } } if ((thisTab = GetTagByName(EC_TAG_PREFS_ONLINESIG)) != NULL) { ApplyBoolean(use_tag, thisTab, thePrefs::SetOnlineSignatureEnabled, EC_TAG_ONLINESIG_ENABLED); } if ((thisTab = GetTagByName(EC_TAG_PREFS_SERVERS)) != NULL) { ApplyBoolean(use_tag, thisTab, thePrefs::SetDeadServer, EC_TAG_SERVERS_REMOVE_DEAD); if ((oneTag = thisTab->GetTagByName(EC_TAG_SERVERS_DEAD_SERVER_RETRIES)) != NULL) { thePrefs::SetDeadserverRetries(oneTag->GetInt()); } ApplyBoolean(use_tag, thisTab, thePrefs::SetAutoServerlist, EC_TAG_SERVERS_AUTO_UPDATE); // Here should come the URL list... ApplyBoolean(use_tag, thisTab, thePrefs::SetAddServersFromServer, EC_TAG_SERVERS_ADD_FROM_SERVER); ApplyBoolean(use_tag, thisTab, thePrefs::SetAddServersFromClient, EC_TAG_SERVERS_ADD_FROM_CLIENT); ApplyBoolean(use_tag, thisTab, thePrefs::SetScoreSystem, EC_TAG_SERVERS_USE_SCORE_SYSTEM); ApplyBoolean(use_tag, thisTab, thePrefs::SetSmartIdCheck, EC_TAG_SERVERS_SMART_ID_CHECK); ApplyBoolean(use_tag, thisTab, thePrefs::SetSafeServerConnectEnabled, EC_TAG_SERVERS_SAFE_SERVER_CONNECT); ApplyBoolean(use_tag, thisTab, thePrefs::SetAutoConnectStaticOnly, EC_TAG_SERVERS_AUTOCONN_STATIC_ONLY); ApplyBoolean(use_tag, thisTab, thePrefs::SetManualHighPrio, EC_TAG_SERVERS_MANUAL_HIGH_PRIO); if ((oneTag = thisTab->GetTagByName(EC_TAG_SERVERS_UPDATE_URL)) != NULL) { thePrefs::SetEd2kServersUrl(oneTag->GetStringData()); } } if ((thisTab = GetTagByName(EC_TAG_PREFS_FILES)) != NULL) { ApplyBoolean(use_tag, thisTab, thePrefs::SetICHEnabled, EC_TAG_FILES_ICH_ENABLED); ApplyBoolean(use_tag, thisTab, thePrefs::SetTrustingEveryHash, EC_TAG_FILES_AICH_TRUST); ApplyBoolean(use_tag, thisTab, thePrefs::SetAddNewFilesPaused, EC_TAG_FILES_NEW_PAUSED); ApplyBoolean(use_tag, thisTab, thePrefs::SetNewAutoDown, EC_TAG_FILES_NEW_AUTO_DL_PRIO); ApplyBoolean(use_tag, thisTab, thePrefs::SetPreviewPrio, EC_TAG_FILES_PREVIEW_PRIO); ApplyBoolean(use_tag, thisTab, thePrefs::SetNewAutoUp, EC_TAG_FILES_NEW_AUTO_UL_PRIO); ApplyBoolean(use_tag, thisTab, thePrefs::SetStartNextFile, EC_TAG_FILES_START_NEXT_PAUSED); ApplyBoolean(use_tag, thisTab, thePrefs::SetStartNextFileSame, EC_TAG_FILES_RESUME_SAME_CAT); ApplyBoolean(use_tag, thisTab, thePrefs::SetSrcSeedsOn, EC_TAG_FILES_SAVE_SOURCES); ApplyBoolean(use_tag, thisTab, thePrefs::SetExtractMetaData, EC_TAG_FILES_EXTRACT_METADATA); ApplyBoolean(use_tag, thisTab, thePrefs::SetAllocFullFile, EC_TAG_FILES_ALLOC_FULL_SIZE); ApplyBoolean(use_tag, thisTab, thePrefs::SetCheckDiskspaceEnabled, EC_TAG_FILES_CHECK_FREE_SPACE); if ((oneTag = thisTab->GetTagByName(EC_TAG_FILES_MIN_FREE_SPACE)) != NULL) { thePrefs::SetMinFreeDiskSpaceMB(oneTag->GetInt()); } } if ((thisTab = GetTagByName(EC_TAG_PREFS_DIRECTORIES)) != NULL) { if ((oneTag = thisTab->GetTagByName(EC_TAG_DIRECTORIES_INCOMING)) != NULL) { thePrefs::SetIncomingDir(CPath(oneTag->GetStringData())); } if ((oneTag = thisTab->GetTagByName(EC_TAG_DIRECTORIES_TEMP)) != NULL) { thePrefs::SetTempDir(CPath(oneTag->GetStringData())); } if ((oneTag = thisTab->GetTagByName(EC_TAG_DIRECTORIES_SHARED)) != NULL) { theApp->glob_prefs->shareddir_list.clear(); for (CECTag::const_iterator it = oneTag->begin(); it != oneTag->end(); ++it) { theApp->glob_prefs->shareddir_list.push_back(CPath(it->GetStringData())); } } ApplyBoolean(use_tag, thisTab, thePrefs::SetShareHiddenFiles, EC_TAG_DIRECTORIES_SHARE_HIDDEN); } if ((thisTab = GetTagByName(EC_TAG_PREFS_STATISTICS)) != NULL) { //#warning TODO } if ((thisTab = GetTagByName(EC_TAG_PREFS_SECURITY)) != NULL) { if ((oneTag = thisTab->GetTagByName(EC_TAG_SECURITY_CAN_SEE_SHARES)) != NULL) { thePrefs::SetCanSeeShares(oneTag->GetInt()); } ApplyBoolean(use_tag, thisTab, thePrefs::SetFilteringClients, EC_TAG_IPFILTER_CLIENTS); ApplyBoolean(use_tag, thisTab, thePrefs::SetFilteringServers, EC_TAG_IPFILTER_SERVERS); ApplyBoolean(use_tag, thisTab, thePrefs::SetIPFilterAutoLoad, EC_TAG_IPFILTER_AUTO_UPDATE); if ((oneTag = thisTab->GetTagByName(EC_TAG_IPFILTER_UPDATE_URL)) != NULL) { thePrefs::SetIPFilterURL(oneTag->GetStringData()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_IPFILTER_LEVEL)) != NULL) { thePrefs::SetIPFilterLevel(oneTag->GetInt()); } ApplyBoolean(use_tag, thisTab, thePrefs::SetFilterLanIPs, EC_TAG_IPFILTER_FILTER_LAN); ApplyBoolean(use_tag, thisTab, thePrefs::SetSecureIdentEnabled, EC_TAG_SECURITY_USE_SECIDENT); ApplyBoolean(use_tag, thisTab, thePrefs::SetClientCryptLayerSupported, EC_TAG_SECURITY_OBFUSCATION_SUPPORTED); ApplyBoolean(use_tag, thisTab, thePrefs::SetClientCryptLayerRequested, EC_TAG_SECURITY_OBFUSCATION_REQUESTED); ApplyBoolean(use_tag, thisTab, thePrefs::SetClientCryptLayerRequired, EC_TAG_SECURITY_OBFUSCATION_REQUIRED); } if ((thisTab = GetTagByName(EC_TAG_PREFS_CORETWEAKS)) != NULL) { if ((oneTag = thisTab->GetTagByName(EC_TAG_CORETW_MAX_CONN_PER_FIVE)) != NULL) { thePrefs::SetMaxConsPerFive(oneTag->GetInt()); } ApplyBoolean(use_tag, thisTab, thePrefs::SetVerbose, EC_TAG_CORETW_VERBOSE); if ((oneTag = thisTab->GetTagByName(EC_TAG_CORETW_FILEBUFFER)) != NULL) { thePrefs::SetFileBufferSize(oneTag->GetInt()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_CORETW_UL_QUEUE)) != NULL) { thePrefs::SetQueueSize(oneTag->GetInt()); } if ((oneTag = thisTab->GetTagByName(EC_TAG_CORETW_SRV_KEEPALIVE_TIMEOUT)) != NULL) { thePrefs::SetServerKeepAliveTimeout(oneTag->GetInt()); } } if ((thisTab = GetTagByName(EC_TAG_PREFS_KADEMLIA)) != NULL) { if ((oneTag = thisTab->GetTagByName(EC_TAG_KADEMLIA_UPDATE_URL)) != NULL) { thePrefs::SetKadNodesUrl(oneTag->GetStringData()); } } theApp->glob_prefs->Save(); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ED2KLink.cpp0000644000175000017500000002021412611472361020300 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include "ED2KLink.h" // Interface declarations. #include #include // Needed for wxRegEx #include // Needed for wxStringTokenizer #include #include "MemFile.h" // Needed for CMemFile #include "NetworkFunctions.h" // Needed for Uint32toStringIP #include // Needed for CFormat CED2KLink::CED2KLink( LinkType type ) : m_type( type ) { } CED2KLink::~CED2KLink() { } CED2KLink::LinkType CED2KLink::GetKind() const { return m_type; } CED2KLink* CED2KLink::CreateLinkFromUrl(const wxString& link) { wxRegEx re_type(wxT("ed2k://\\|(file|server|serverlist)\\|.*/"), wxRE_ICASE | wxRE_DEFAULT); { wxCHECK(re_type.IsValid(), NULL); } if (!re_type.Matches(link)) { throw wxString(wxT("Not a valid ed2k-URI")); } wxString type = re_type.GetMatch(link, 1).MakeLower(); { wxCHECK(type.Length(), NULL); } if (type == wxT("file")) { return new CED2KFileLink(link); } else if (type == wxT("server")) { return new CED2KServerLink(link); } else if (type == wxT("serverlist")) { return new CED2KServerListLink(link); } else { wxCHECK(false, NULL); } } ///////////////////////////////////////////// // CED2KServerListLink implementation ///////////////////////////////////////////// CED2KServerListLink::CED2KServerListLink(const wxString& link) : CED2KLink( kServerList ) { wxRegEx re(wxT("ed2k://\\|serverlist\\|(.*)\\|/"), wxRE_ICASE | wxRE_DEFAULT); if (!re.Matches(link)) { throw wxString(wxT("Not a valid server-list link.")); } m_address = UnescapeHTML(re.GetMatch(link, 1)); } wxString CED2KServerListLink::GetLink() const { return wxT("ed2k://|serverlist|") + m_address + wxT("|/"); } const wxString& CED2KServerListLink::GetAddress() const { return m_address; } ///////////////////////////////////////////// // CED2KServerLink implementation ///////////////////////////////////////////// CED2KServerLink::CED2KServerLink(const wxString& link) : CED2KLink( kServer ) { wxRegEx re(wxT("ed2k://\\|server\\|([^\\|]+)\\|([0-9]+)\\|/"), wxRE_ICASE | wxRE_DEFAULT); if (!re.Matches(link)) { throw wxString(wxT("Not a valid server link.")); } wxString ip = UnescapeHTML(re.GetMatch(link, 1)); wxString port = re.GetMatch(link, 2); unsigned long ul = StrToULong(port); if (ul > 0xFFFF || ul == 0) { throw wxString( wxT("Bad port number") ); } m_port = static_cast(ul); m_ip = StringIPtoUint32(ip); } wxString CED2KServerLink::GetLink() const { return wxString(wxT("ed2k://|server|")) << Uint32toStringIP(m_ip) << wxT("|") << m_port << wxT("|/"); } uint32 CED2KServerLink::GetIP() const { return m_ip; } uint16 CED2KServerLink::GetPort() const { return m_port; } ///////////////////////////////////////////// // CED2KFileLink implementation ///////////////////////////////////////////// CED2KFileLink::CED2KFileLink(const wxString& link) : CED2KLink( kFile ), m_hashset(NULL), m_size(0), m_bAICHHashValid(false) { // Start tokenizing after the "ed2k:://|file|" part of the link wxStringTokenizer tokens(link, wxT("|"), wxTOKEN_RET_EMPTY_ALL); // Must at least be ed2k://|file|NAME|SIZE|HASH|/ if (tokens.CountTokens() < 5 || tokens.GetNextToken() != wxT("ed2k://") || tokens.GetNextToken() != wxT("file")) { throw wxString(wxT("Not a valid file link")); } m_name = UnescapeHTML(tokens.GetNextToken().Strip(wxString::both)); // We don't want a path in the name. m_name.Replace(wxT("/"), wxT("_")); // Note that StrToULong returns ULONG_MAX if the value is // too large to be contained in a unsigned long, which means // that this check is valid, as odd as it seems wxString size = tokens.GetNextToken().Strip(wxString::both); m_size = StrToULongLong(size); if ((m_size == 0) || (m_size > MAX_FILE_SIZE)) { throw wxString(CFormat(wxT("Invalid file size %i")) % m_size); } if (!m_hash.Decode(tokens.GetNextToken().Strip(wxString::both))) { throw wxString(wxT("Invalid hash")); } // Check extra fields (sources, parthashes, masterhashes) while (tokens.HasMoreTokens()) { wxString field = tokens.GetNextToken().MakeLower().Strip(wxString::both); if (field.StartsWith(wxT("sources,"))) { wxStringTokenizer srcTokens(field, wxT(",")); // Skipping the first token ("sources"). wxString token = srcTokens.GetNextToken(); while (srcTokens.HasMoreTokens()) { token = srcTokens.GetNextToken().Strip(wxString::both); wxStringTokenizer sourceTokens(token, wxT(":")); wxString addr = sourceTokens.GetNextToken(); if (addr.IsEmpty()) { throw wxString( wxT("Empty address" ) ); } wxString strport = sourceTokens.GetNextToken(); if (strport.IsEmpty()) { throw wxString( wxT("Empty port" ) ); } unsigned port = StrToULong(strport); // Sanity checking if ((port == 0) || (port > 0xFFFF)) { throw wxString( wxT("Invalid Port" ) ); } wxString sourcehash; uint8 cryptoptions =0; wxString strcryptoptions = sourceTokens.GetNextToken(); if (!strcryptoptions.IsEmpty()) { cryptoptions = (uint8) StrToULong(strcryptoptions); if ((cryptoptions & 0x80) > 0) { // Source ready for encryption, hash included. sourcehash = sourceTokens.GetNextToken(); if (sourcehash.IsEmpty()) { throw wxString( wxT("Empty sourcehash conflicts with cryptoptions flag 0x80" ) ); } } } SED2KLinkSource entry = { addr, (uint16) port, sourcehash, cryptoptions }; m_sources.push_back(entry); } } else if (field.StartsWith(wxT("p="))) { wxStringTokenizer hashTokens(field.AfterFirst(wxT('=')), wxT(":"), wxTOKEN_RET_EMPTY_ALL); m_hashset = new CMemFile(); m_hashset->WriteHash(m_hash); m_hashset->WriteUInt16(0); while (hashTokens.HasMoreTokens()) { CMD4Hash hash; if (!hash.Decode(hashTokens.GetNextToken().Strip(wxString::both))) { throw wxString(wxT("Invalid hash in part-hashes list")); } m_hashset->WriteHash(hash); } unsigned count = m_hashset->GetLength() / 16u - 1u; if (count) { m_hashset->Seek( 16, wxFromStart); m_hashset->WriteUInt16( count ); m_hashset->Seek( 0, wxFromStart); } else { delete m_hashset; m_hashset = NULL; } } else if (field.StartsWith(wxT("h="))) { wxString hash = field.AfterFirst(wxT('=')).MakeUpper(); size_t decodedSize = DecodeBase32(hash, CAICHHash::GetHashSize(), m_AICHHash.GetRawHash()); if ((decodedSize != CAICHHash::GetHashSize()) || m_AICHHash.GetString() != hash) { throw wxString(wxT("Invalid master-hash")); } m_bAICHHashValid = true; } } } CED2KFileLink::~CED2KFileLink() { delete m_hashset; m_hashset = NULL; } wxString CED2KFileLink::GetLink() const { return CFormat(wxT("ed2k://|file|%s|%u|%s|/")) % m_name % m_size % m_hash.Encode(); } wxString CED2KFileLink::GetName() const { return m_name; } uint64 CED2KFileLink::GetSize() const { return m_size; } const CMD4Hash& CED2KFileLink::GetHashKey() const { return m_hash; } bool CED2KFileLink::HasValidAICHHash() const { return m_bAICHHashValid; } const CAICHHash& CED2KFileLink::GetAICHHash() const { return m_AICHHash; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ED2KLink.h0000644000175000017500000000660112611472361017751 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef ED2KLINK_H #define ED2KLINK_H #include "MD4Hash.h" // Needed for CMD4Hash #include "SHAHashSet.h" // Needed for CAICHHash class CMemFile; class CED2KLink { public: typedef enum { kServerList, kServer , kFile , kInvalid } LinkType; static CED2KLink* CreateLinkFromUrl(const wxString& link); LinkType GetKind() const; virtual wxString GetLink() const = 0; virtual ~CED2KLink(); protected: CED2KLink( LinkType type ); private: LinkType m_type; }; class CED2KFileLink : public CED2KLink { friend class CED2KLink; CED2KFileLink(const wxString& link); public: virtual ~CED2KFileLink(); virtual wxString GetLink() const; wxString GetName() const; uint64 GetSize() const; const CMD4Hash& GetHashKey() const; // AICH data bool HasValidAICHHash() const; const CAICHHash& GetAICHHash() const; CMemFile* m_hashset; /** * Structure used to store sources found in file links. */ struct SED2KLinkSource { //! Hostname or dot-address. wxString addr; //! The source's TCP-port. uint16 port; //! Client hash for encryption wxString hash; //! Client cryptoptions uint8 cryptoptions; }; typedef std::deque CED2KLinkSourceList; CED2KLinkSourceList m_sources; private: CED2KFileLink(); // Not defined CED2KFileLink(const CED2KFileLink&); // Not defined CED2KFileLink& operator=(const CED2KFileLink&); // Not defined wxString m_name; uint64 m_size; CMD4Hash m_hash; bool m_bAICHHashValid; CAICHHash m_AICHHash; }; class CED2KServerLink : public CED2KLink { friend class CED2KLink; CED2KServerLink(const wxString& link); public: virtual wxString GetLink() const; uint32 GetIP() const; uint16 GetPort() const; private: CED2KServerLink(); // Not defined CED2KServerLink(const CED2KServerLink&); // Not defined CED2KServerLink& operator=(const CED2KServerLink&); // Not defined uint32 m_ip; uint16 m_port; }; class CED2KServerListLink : public CED2KLink { friend class CED2KLink; CED2KServerListLink(const wxString& link); public: virtual wxString GetLink() const; const wxString& GetAddress() const; private: CED2KServerListLink(); // Not defined CED2KServerListLink(const CED2KFileLink&); // Not defined CED2KServerListLink& operator=(const CED2KFileLink&); // Not defined wxString m_address; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ED2KLinkParser.cpp0000644000175000017500000003121612611472361021461 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2003-2011 Alo Sarv ( madcat_@users.sourceforge.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // const int versionMajor = 1; const int versionMinor = 5; const int versionRevision = 1; #include #include #include #include #ifdef __APPLE__ #include #elif defined(_WIN32) #include #include #include #endif #include "FileLock.h" #include "MagnetURI.h" #include "MuleCollection.h" using std::string; string GetLinksFilePath(const string& configDir) { if (!configDir.empty()) { #ifdef _WIN32 char buffer[MAX_PATH + 1]; configDir.copy(buffer, MAX_PATH); if (PathAppendA(buffer, "ED2KLinks")) { string strDir; strDir.assign(buffer); return strDir; } #else string strDir = configDir; if (strDir.at(strDir.length() - 1) != '/') { strDir += '/'; } return strDir + "ED2KLinks"; #endif } #ifdef __APPLE__ std::string strDir; FSRef fsRef; if (FSFindFolder(kUserDomain, kApplicationSupportFolderType, kCreateFolder, &fsRef) == noErr) { CFURLRef urlRef = CFURLCreateFromFSRef(NULL, &fsRef); if (urlRef != NULL) { UInt8 buffer[PATH_MAX + 1]; if (CFURLGetFileSystemRepresentation(urlRef, true, buffer, sizeof(buffer))) { strDir.assign((char*) buffer); } CFRelease(urlRef) ; } } return strDir + "/aMule/ED2KLinks"; #elif defined(_WIN32) std::string strDir; LPITEMIDLIST pidl; char buffer[MAX_PATH + 1]; HRESULT hr = SHGetSpecialFolderLocation(NULL, CSIDL_APPDATA, &pidl); if (SUCCEEDED(hr)) { if (SHGetPathFromIDListA(pidl, buffer)) { if (PathAppendA(buffer, "aMule\\ED2KLinks")) { strDir.assign(buffer); } } } if (pidl) { LPMALLOC pMalloc; SHGetMalloc(&pMalloc); if (pMalloc) { pMalloc->Free(pidl); pMalloc->Release(); } } return strDir; #else return string( getenv("HOME") ) + "/.aMule/ED2KLinks"; #endif } /** * Converts a hexadecimal number to a char. * * @param hex The hex-number, must be at most 2 digits long. * @return The resulting char or \0 if conversion failed. */ char HexToDec( const string& hex ) { char result = 0; for ( size_t i = 0; i < hex.length(); ++i ) { char cur = toupper( hex.at(i) ); result *= 16; if ( isdigit( cur ) ) { result += cur - '0'; } else if ( cur >= 'A' && cur <= 'F' ) { result += cur - 'A' + 10; } else { return '\0'; } } return result; } /** * This function converts all valid HTML escape-codes to their corresponding chars. * * @param str The string to unescape. * @return The unescaped version of the input string. */ string Unescape( const string& str ) { string result; result.reserve( str.length() ); for ( size_t i = 0; i < str.length(); ++i ) { if ( str.at(i) == '%' && ( i + 2 < str.length() ) ) { char unesc = HexToDec( str.substr( i + 1, 2 ) ); if ( unesc ) { i += 2; result += unesc; } else { // If conversion failed, then we just add the escape-code // and continue past it like nothing happened. result += str.at(i); } } else { result += str.at(i); } } return result; } /** * Returns the string with whitespace stripped from both ends. */ string strip( const string& str ) { size_t first = 0; size_t last = str.length() - 1; // A simple but no very optimized way to narrow down the // usable text within the string. while ( first <= last ) { if ( isspace( str.at(first) ) ) { first++; } else if ( isspace( str.at(last) ) ) { last--; } else { break; } }; return str.substr( first, 1 + last - first ); } /** * Returns true if the string is a valid number. */ bool isNumber( const string& str ) { for ( size_t i = 0; i < str.length(); i++ ) { if ( !isdigit( str.at(i) ) ) { return false; } } return str.length() > 0; } /** * Returns true if the string is a valid Base16 representation of a MD4 Hash. */ bool isMD4Hash( const string& str ) { for ( size_t i = 0; i < str.length(); i++ ) { const char c = toupper( str.at(i) ); if ( !isdigit( c ) && ( c < 'A' || c > 'F' ) ) { return false; } } return str.length() == 32; } /** * Returns a description of the current version of "ed2k". */ string getVersion() { std::ostringstream v; v << "aMule ED2k link parser v" << versionMajor << "." << versionMinor << "." << versionRevision; return v.str(); } /** * Helper-function for printing link-errors. */ void badLink( const string& type, const string& err, const string& uri ) { std::cout << "Invalid " << type << "-link, " + err << ":\n" << "\t" << uri << std::endl; } /** * Writes a string to the ED2KLinks file. * * If errors are detected, it will terminate the program. */ void writeLink( const string& uri, const string& config_dir ) { // Attempt to lock the ED2KLinks file static CFileLock lock(GetLinksFilePath(config_dir)); static std::ofstream file; if (!file.is_open()) { string path = GetLinksFilePath(config_dir); file.open( path.c_str(), std::ofstream::out | std::ofstream::app ); if (!file.is_open()) { std::cout << "ERROR! Failed to open " << path << " for writing!" << std::endl; exit(1); } } file << uri << std::endl; std::cout << "Link successfully queued." << std::endl; } /** * Writes the the specified URI to the ED2KLinks file if it is a valid file-link. * * @param uri The URI to check. * @return True if the URI was written, false otherwise. */ bool checkFileLink( const string& uri ) { if ( uri.substr( 0, 13 ) == "ed2k://|file|" ) { size_t base_off = 12; size_t name_off = uri.find( '|', base_off + 1 ); size_t size_off = uri.find( '|', name_off + 1 ); size_t hash_off = uri.find( '|', size_off + 1 ); bool valid = true; valid &= ( base_off < name_off ); valid &= ( name_off < size_off ); valid &= ( size_off < hash_off ); valid &= ( hash_off != string::npos ); if ( !valid ) { badLink( "file", "invalid link format", uri ); return false; } string name = uri.substr( base_off + 1, name_off - base_off - 1 ); string size = uri.substr( name_off + 1, size_off - name_off - 1 ); string hash = uri.substr( size_off + 1, hash_off - size_off - 1 ); if ( name.empty() ) { badLink( "file", "no name specified", uri ); return false; } if ( !isNumber( size ) ) { badLink( "file", "invalid size", uri ); return false; } if ( !isMD4Hash( hash ) ) { badLink( "file", "invalid MD4 hash", uri ); return false; } return true; } return false; } /** * Writes the the specified URI to the ED2KLinks file if it is a valid server-link. * * @param uri The URI to check. * @return True if the URI was written, false otherwise. */ bool checkServerLink( const string& uri ) { if ( uri.substr( 0, 15 ) == "ed2k://|server|" ) { size_t base_off = 14; size_t host_off = uri.find( '|', base_off + 1 ); size_t port_off = uri.find( '|', host_off + 1 ); bool valid = true; valid &= ( base_off < host_off ); valid &= ( host_off < port_off ); valid &= ( port_off != string::npos ); if ( !valid || uri.at( port_off + 1 ) != '/' ) { badLink( "server", "invalid link format", uri ); return false; } string host = uri.substr( base_off + 1, host_off - base_off - 1 ); string port = uri.substr( host_off + 1, port_off - host_off - 1 ); if ( host.empty() ) { badLink( "server", "no hostname specified", uri ); return false; } if ( !isNumber( port ) ) { badLink( "server", "invalid port", uri ); return false; } return true; } return false; } /** * Writes the the specified URI to the ED2KLinks file if it is a valid serverlist-link. * * @param uri The URI to check. * @return True if the URI was written, false otherwise. */ bool checkServerListLink( const string& uri ) { if ( uri.substr( 0, 19 ) == "ed2k://|serverlist|" ) { size_t base_off = 19; size_t path_off = uri.find( '|', base_off + 1 ); bool valid = true; valid &= ( base_off < path_off ); valid &= ( path_off != string::npos ); if ( !valid ) { badLink( "serverlist", "invalid link format", uri ); return false; } string path = uri.substr( base_off + 1, path_off - base_off - 1 ); if ( path.empty() ) { badLink( "serverlist", "no hostname specified", uri ); return false; } return true; } return false; } int main(int argc, char *argv[]) { bool errors = false; string config_path; string category = ""; for ( int i = 1; i < argc; i++ ) { string arg = strip( Unescape( string( argv[i] ) ) ); if ( arg.compare(0, 7, "magnet:" ) == 0 ) { string ed2k = CMagnetED2KConverter(arg); if ( ed2k.empty() ) { std::cerr << "Cannot convert magnet URI to ed2k:\n\t" << arg << std::endl; errors = true; continue; } else { arg = ed2k; } } if ( arg.substr( 0, 8 ) == "ed2k://|" ) { // Ensure the URI is valid if ( arg.at( arg.length() - 1 ) != '/' ) { arg += '/'; } string type = arg.substr( 8, arg.find( '|', 9 ) - 8 ); if ( (type == "file") && checkFileLink( arg ) ) { arg += category; writeLink( arg, config_path ); } else if ( (type == "server") && checkServerLink( arg ) ) { writeLink( arg, config_path ); } else if ( (type == "serverlist") && checkServerListLink( arg ) ) { writeLink( arg, config_path ); } else { std::cout << "Unknown or invalid link-type:\n\t" << arg << std::endl; errors = true; } } else if (arg == "-c" || arg == "--config-dir") { if (i < argc - 1) { config_path = argv[++i]; } else { std::cerr << "Missing mandatory argument for " << arg << std::endl; errors = true; } } else if (arg.substr(0, 2) == "-c") { config_path = arg.substr(2); } else if (arg.substr(0, 13) == "--config-dir=") { config_path = arg.substr(13); } else if (arg == "-h" || arg == "--help") { std::cout << getVersion() << "\n\n" << "Usage:\n" << " --help, -h Prints this help.\n" << " --config-dir, -c Specifies the aMule configuration directory.\n" << " --version, -v Displays version info.\n\n" << " --category, -t Add Link to category number.\n" << " magnet:? Causes the file to be queued for download.\n" << " ed2k://|file| Causes the file to be queued for download.\n" << " ed2k://|server| Causes the server to be listed or updated.\n" << " ed2k://|serverlist| Causes aMule to update the current serverlist.\n\n" << " --list, -l Show all links of an emulecollection\n" << " --emulecollection, -e Loads all links of an emulecollection\n\n" << "*** NOTE: Option order is important! ***\n" << std::endl; } else if (arg == "-v" || arg == "--version") { std::cout << getVersion() << std::endl; } else if (arg == "-t" || arg == "--category") { if (i < argc - 1) { if ((category == "" ) && (0 != atoi(argv[++i]))) { category = ':'; category += argv[i]; } } else { std::cerr << "Missing mandatory argument for " << arg << std::endl; errors = true; } } else if (arg == "-e" || arg == "--emulecollection" || arg == "-l" || arg == "--list") { bool listOnly = (arg == "-l" || arg == "--list"); if (i < argc - 1) { CMuleCollection my_collection; if (my_collection.Open( /* emulecollection file */ argv[++i] )) { for(size_t e = 0; e < my_collection.size(); e++) if (listOnly) std::cout << my_collection[e] << std::endl; else writeLink( my_collection[e], config_path ); } else { std::cerr << "Invalid emulecollection file: " << argv[i] << std::endl; errors = true; } } else { std::cerr << "Missing mandatory argument for " << arg << std::endl; errors = true; } } else { std::cerr << "Bad parameter value:\n\t" << arg << "\n" << std::endl; errors = true; } } return ( errors ? 1 : 0 ); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/EMSocket.cpp0000644000175000017500000005633412611472361020463 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "EMSocket.h" // Interface declarations. #include #include #include "Packet.h" // Needed for CPacket #include "amule.h" #include "GetTickCount.h" #include "UploadBandwidthThrottler.h" #include "Logger.h" #include "Preferences.h" #include "ScopedPtr.h" const uint32 MAX_PACKET_SIZE = 2000000; // cppcheck-suppress uninitMemberVar CEMSocket::pendingHeader CEMSocket::CEMSocket(const CProxyData *ProxyData) : CEncryptedStreamSocket(MULE_SOCKET_NOWAIT, ProxyData) { // If an interface has been specified, // then we need to bind to it. if (!thePrefs::GetAddress().IsEmpty()) { amuleIPV4Address host; // No need to warn here, in case of failure to // assign the hostname. That is already done // in amule.cpp when starting ... if (host.Hostname(thePrefs::GetAddress())) { SetLocal(host); } } byConnected = ES_NOTCONNECTED; m_uTimeOut = CONNECTION_TIMEOUT; // default timeout for ed2k sockets // Download (pseudo) rate control downloadLimit = 0; downloadLimitEnable = false; pendingOnReceive = false; // Download partial header pendingHeaderSize = 0; // Download partial packet pendingPacket = NULL; pendingPacketSize = 0; // Upload control sendbuffer = NULL; sendblen = 0; sent = 0; m_currentPacket_is_controlpacket = false; m_currentPackageIsFromPartFile = false; m_numberOfSentBytesCompleteFile = 0; m_numberOfSentBytesPartFile = 0; m_numberOfSentBytesControlPacket = 0; lastCalledSend = ::GetTickCount(); lastSent = ::GetTickCount()-1000; m_bAccelerateUpload = false; m_actualPayloadSize = 0; m_actualPayloadSizeSent = 0; m_bBusy = false; m_hasSent = false; lastFinishedStandard = 0; } CEMSocket::~CEMSocket() { // need to be locked here to know that the other methods // won't be in the middle of things { wxMutexLocker lock(m_sendLocker); byConnected = ES_DISCONNECTED; } // now that we know no other method will keep adding to the queue // we can remove ourself from the queue if (theApp->uploadBandwidthThrottler) { theApp->uploadBandwidthThrottler->RemoveFromAllQueues(this); } ClearQueues(); SetNotify(0); // this is already done in Destroy() Notify(FALSE); } void CEMSocket::ClearQueues() { wxMutexLocker lock(m_sendLocker); DeleteContents(m_control_queue); { CStdPacketQueue::iterator it = m_standard_queue.begin(); for (; it != m_standard_queue.end(); ++it) { delete it->packet; } m_standard_queue.clear(); } // Download (pseudo) rate control downloadLimit = 0; downloadLimitEnable = false; pendingOnReceive = false; // Download partial header pendingHeaderSize = 0; // Download partial packet delete[] pendingPacket; pendingPacket = NULL; pendingPacketSize = 0; // Upload control delete[] sendbuffer; sendbuffer = NULL; sendblen = 0; sent = 0; } void CEMSocket::OnClose(int WXUNUSED(nErrorCode)) { // need to be locked here to know that the other methods // won't be in the middle of things { wxMutexLocker lock(m_sendLocker); byConnected = ES_DISCONNECTED; } // now that we know no other method will keep adding to the queue // we can remove ourself from the queue theApp->uploadBandwidthThrottler->RemoveFromAllQueues(this); ClearQueues(); } void CEMSocket::OnReceive(int nErrorCode) { if(nErrorCode) { if (LastError()) { OnError(nErrorCode); return; } } // Check current connection state if (byConnected == ES_DISCONNECTED) { return; } else { byConnected = ES_CONNECTED; // ES_DISCONNECTED, ES_NOTCONNECTED, ES_CONNECTED } uint32 ret; do { // CPU load improvement if (downloadLimitEnable && downloadLimit == 0){ pendingOnReceive = true; return; } uint32 readMax; byte *buf; if (pendingHeaderSize < PACKET_HEADER_SIZE) { delete[] pendingPacket; pendingPacket = NULL; buf = pendingHeader + pendingHeaderSize; readMax = PACKET_HEADER_SIZE - pendingHeaderSize; } else if (pendingPacket == NULL) { pendingPacketSize = 0; readMax = CPacket::GetPacketSizeFromHeader(pendingHeader); if (readMax > MAX_PACKET_SIZE) { pendingHeaderSize = 0; OnError(ERR_TOOBIG); return; } pendingPacket = new byte[readMax + 1]; buf = pendingPacket; } else { buf = pendingPacket + pendingPacketSize; readMax = CPacket::GetPacketSizeFromHeader(pendingHeader) - pendingPacketSize; } if (downloadLimitEnable && readMax > downloadLimit) { readMax = downloadLimit; } ret = 0; if (readMax) { wxMutexLocker lock(m_sendLocker); ret = Read(buf, readMax); if (BlocksRead()) { pendingOnReceive = true; return; } if (LastError() || ret == 0) { return; } } // Bandwidth control if (downloadLimitEnable) { // Update limit if (ret >= downloadLimit) { downloadLimit = 0; } else { downloadLimit -= ret; } } // CPU load improvement // Detect if the socket's buffer is empty (or the size did match...) pendingOnReceive = (ret == readMax); if (pendingHeaderSize >= PACKET_HEADER_SIZE) { pendingPacketSize += ret; if (pendingPacketSize >= CPacket::GetPacketSizeFromHeader(pendingHeader)) { CScopedPtr packet(new CPacket(pendingHeader, pendingPacket)); pendingPacket = NULL; pendingPacketSize = 0; pendingHeaderSize = 0; // Bugfix We still need to check for a valid protocol // Remark: the default eMule v0.26b had removed this test...... switch (packet->GetProtocol()){ case OP_EDONKEYPROT: case OP_PACKEDPROT: case OP_EMULEPROT: case OP_ED2KV2HEADER: case OP_ED2KV2PACKEDPROT: break; default: OnError(ERR_WRONGHEADER); return; } // Process packet PacketReceived(packet.get()); } } else { pendingHeaderSize += ret; } } while (ret && pendingHeaderSize >= PACKET_HEADER_SIZE); } void CEMSocket::SetDownloadLimit(uint32 limit) { downloadLimit = limit; downloadLimitEnable = true; // CPU load improvement if(limit > 0 && pendingOnReceive == true){ OnReceive(0); } } void CEMSocket::DisableDownloadLimit() { downloadLimitEnable = false; // CPU load improvement if (pendingOnReceive == true){ OnReceive(0); } } /** * Queues up the packet to be sent. Another thread will actually send the packet. * * If the packet is not a control packet, and if the socket decides that its queue is * full and forceAdd is false, then the socket is allowed to refuse to add the packet * to its queue. It will then return false and it is up to the calling thread to try * to call SendPacket for that packet again at a later time. * * @param packet address to the packet that should be added to the queue * * @param delpacket if true, the responsibility for deleting the packet after it has been sent * has been transferred to this object. If false, don't delete the packet after it * has been sent. * * @param controlpacket the packet is a controlpacket * * @param forceAdd this packet must be added to the queue, even if it is full. If this flag is true * then the method can not refuse to add the packet, and therefore not return false. * * @return true if the packet was added to the queue, false otherwise */ void CEMSocket::SendPacket(CPacket* packet, bool delpacket, bool controlpacket, uint32 actualPayloadSize) { //printf("* SendPacket called on socket %p\n", this); wxMutexLocker lock(m_sendLocker); if (byConnected == ES_DISCONNECTED) { //printf("* Disconnected, drop packet\n"); if(delpacket) { delete packet; } } else { if (!delpacket){ packet = new CPacket(*packet); } if (controlpacket) { //printf("* Adding a control packet\n"); m_control_queue.push_back(packet); // queue up for controlpacket theApp->uploadBandwidthThrottler->QueueForSendingControlPacket(this, HasSent()); } else { //printf("* Adding a normal packet to the queue\n"); bool first = !((sendbuffer && !m_currentPacket_is_controlpacket) || !m_standard_queue.empty()); StandardPacketQueueEntry queueEntry = { actualPayloadSize, packet }; m_standard_queue.push_back(queueEntry); // reset timeout for the first time if (first) { lastFinishedStandard = ::GetTickCount(); m_bAccelerateUpload = true; // Always accelerate first packet in a block } } } } uint64 CEMSocket::GetSentBytesCompleteFileSinceLastCallAndReset() { wxMutexLocker lock( m_sendLocker ); uint64 sentBytes = m_numberOfSentBytesCompleteFile; m_numberOfSentBytesCompleteFile = 0; return sentBytes; } uint64 CEMSocket::GetSentBytesPartFileSinceLastCallAndReset() { wxMutexLocker lock( m_sendLocker ); uint64 sentBytes = m_numberOfSentBytesPartFile; m_numberOfSentBytesPartFile = 0; return sentBytes; } uint64 CEMSocket::GetSentBytesControlPacketSinceLastCallAndReset() { wxMutexLocker lock( m_sendLocker ); uint64 sentBytes = m_numberOfSentBytesControlPacket; m_numberOfSentBytesControlPacket = 0; return sentBytes; } uint64 CEMSocket::GetSentPayloadSinceLastCallAndReset() { wxMutexLocker lock( m_sendLocker ); uint64 sentBytes = m_actualPayloadSizeSent; m_actualPayloadSizeSent = 0; return sentBytes; } void CEMSocket::OnSend(int nErrorCode) { if (nErrorCode){ OnError(nErrorCode); return; } CEncryptedStreamSocket::OnSend(0); wxMutexLocker lock( m_sendLocker ); m_bBusy = false; if (byConnected != ES_DISCONNECTED) { byConnected = ES_CONNECTED; if (m_currentPacket_is_controlpacket) { // queue up for control packet theApp->uploadBandwidthThrottler->QueueForSendingControlPacket(this, HasSent()); } } } /** * Try to put queued up data on the socket. * * Control packets have higher priority, and will be sent first, if possible. * Standard packets can be split up in several package containers. In that case * all the parts of a split package must be sent in a row, without any control packet * in between. * * @param maxNumberOfBytesToSend This is the maximum number of bytes that is allowed to be put on the socket * this call. The actual number of sent bytes will be returned from the method. * * @param onlyAllowedToSendControlPacket This call we only try to put control packets on the sockets. * If there's a standard packet "in the way", and we think that this socket * is no longer an upload slot, then it is ok to send the standard packet to * get it out of the way. But it is not allowed to pick a new standard packet * from the queue during this call. Several split packets are counted as one * standard packet though, so it is ok to finish them all off if necessary. * * @return the actual number of bytes that were put on the socket. */ SocketSentBytes CEMSocket::Send(uint32 maxNumberOfBytesToSend, uint32 minFragSize, bool onlyAllowedToSendControlPacket) { wxMutexLocker lock(m_sendLocker); //printf("* Attempt to send a packet on socket %p\n", this); if (byConnected == ES_DISCONNECTED) { //printf("* Disconnected socket %p\n", this); SocketSentBytes returnVal = { false, 0, 0 }; return returnVal; } else if (m_bBusy && onlyAllowedToSendControlPacket) { //printf("* Busy socket %p\n", this); SocketSentBytes returnVal = { true, 0, 0 }; return returnVal; } bool anErrorHasOccured = false; uint32 sentStandardPacketBytesThisCall = 0; uint32 sentControlPacketBytesThisCall = 0; if (byConnected == ES_CONNECTED && IsEncryptionLayerReady() && (!m_bBusy || onlyAllowedToSendControlPacket)) { //printf("* Internal attemptto send on %p\n", this); if(minFragSize < 1) { minFragSize = 1; } maxNumberOfBytesToSend = GetNextFragSize(maxNumberOfBytesToSend, minFragSize); bool bWasLongTimeSinceSend = (::GetTickCount() - lastSent) > 1000; lastCalledSend = ::GetTickCount(); while(sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall < maxNumberOfBytesToSend && anErrorHasOccured == false && // don't send more than allowed. Also, there should have been no error in earlier loop (!m_control_queue.empty() || !m_standard_queue.empty() || sendbuffer != NULL) && // there must exist something to send (onlyAllowedToSendControlPacket == false || // this means we are allowed to send both types of packets, so proceed (sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall > 0 && (sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall) % minFragSize != 0) || (sendbuffer == NULL && !m_control_queue.empty()) || // There's a control packet in queue, and we are not currently sending anything, so we will handle the control packet next (sendbuffer != NULL && m_currentPacket_is_controlpacket == true) || // We are in the progress of sending a control packet. We are always allowed to send those (sendbuffer != NULL && m_currentPacket_is_controlpacket == false && bWasLongTimeSinceSend && !m_control_queue.empty() && m_standard_queue.empty() && (sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall) < minFragSize) // We have waited to long to clean the current packet (which may be a standard packet that is in the way). Proceed no matter what the value of onlyAllowedToSendControlPacket. ) ) { // If we are currently not in the progress of sending a packet, we will need to find the next one to send if(sendbuffer == NULL) { CPacket* curPacket = NULL; if(!m_control_queue.empty()) { // There's a control packet to send m_currentPacket_is_controlpacket = true; curPacket = m_control_queue.front(); m_control_queue.pop_front(); } else if(!m_standard_queue.empty() /*&& onlyAllowedToSendControlPacket == false*/) { // There's a standard packet to send m_currentPacket_is_controlpacket = false; StandardPacketQueueEntry queueEntry = m_standard_queue.front(); m_standard_queue.pop_front(); curPacket = queueEntry.packet; m_actualPayloadSize = queueEntry.actualPayloadSize; // remember this for statistics purposes. m_currentPackageIsFromPartFile = curPacket->IsFromPF(); } else { // Just to be safe. Shouldn't happen? // if we reach this point, then there's something wrong with the while condition above! wxFAIL; AddDebugLogLineC(logGeneral, wxT("EMSocket: Couldn't get a new packet! There's an error in the first while condition in EMSocket::Send()")); SocketSentBytes returnVal = { true, sentStandardPacketBytesThisCall, sentControlPacketBytesThisCall }; return returnVal; } // We found a packet to send. Get the data to send from the // package container and dispose of the container. sendblen = curPacket->GetRealPacketSize(); sendbuffer = curPacket->DetachPacket(); sent = 0; delete curPacket; CryptPrepareSendData((byte*)sendbuffer, sendblen); } // At this point we've got a packet to send in sendbuffer. Try to send it. Loop until entire packet // is sent, or until we reach maximum bytes to send for this call, or until we get an error. // NOTE! If send would block (returns WOULDBLOCK), we will return from this method INSIDE this loop. while (sent < sendblen && sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall < maxNumberOfBytesToSend && ( onlyAllowedToSendControlPacket == false || // this means we are allowed to send both types of packets, so proceed m_currentPacket_is_controlpacket || (bWasLongTimeSinceSend && (sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall) < minFragSize) || (sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall) % minFragSize != 0 ) && anErrorHasOccured == false) { uint32 tosend = sendblen-sent; if(!onlyAllowedToSendControlPacket || m_currentPacket_is_controlpacket) { if (maxNumberOfBytesToSend >= sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall && tosend > maxNumberOfBytesToSend-(sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall)) tosend = maxNumberOfBytesToSend-(sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall); } else if(bWasLongTimeSinceSend && (sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall) < minFragSize) { if (minFragSize >= sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall && tosend > minFragSize-(sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall)) tosend = minFragSize-(sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall); } else { uint32 nextFragMaxBytesToSent = GetNextFragSize(sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall, minFragSize); if (nextFragMaxBytesToSent >= sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall && tosend > nextFragMaxBytesToSent-(sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall)) tosend = nextFragMaxBytesToSent-(sentStandardPacketBytesThisCall + sentControlPacketBytesThisCall); } wxASSERT(tosend != 0 && tosend <= sendblen-sent); //DWORD tempStartSendTick = ::GetTickCount(); lastSent = ::GetTickCount(); uint32 result = CEncryptedStreamSocket::Write(sendbuffer+sent,tosend); if (BlocksWrite()) { m_bBusy = true; SocketSentBytes returnVal = { true, sentStandardPacketBytesThisCall, sentControlPacketBytesThisCall }; return returnVal; // Send() blocked, onsend will be called when ready to send again } else if (LastError()) { // Send() gave an error anErrorHasOccured = true; } else { // we managed to send some bytes. Perform bookkeeping. m_bBusy = false; m_hasSent = true; sent += result; // Log send bytes in correct class if(m_currentPacket_is_controlpacket == false) { sentStandardPacketBytesThisCall += result; if(m_currentPackageIsFromPartFile == true) { m_numberOfSentBytesPartFile += result; } else { m_numberOfSentBytesCompleteFile += result; } } else { sentControlPacketBytesThisCall += result; m_numberOfSentBytesControlPacket += result; } } } if (sent == sendblen){ // we are done sending the current packet. Delete it and set // sendbuffer to NULL so a new packet can be fetched. delete[] sendbuffer; sendbuffer = NULL; sendblen = 0; if(!m_currentPacket_is_controlpacket) { m_actualPayloadSizeSent += m_actualPayloadSize; m_actualPayloadSize = 0; lastFinishedStandard = ::GetTickCount(); // reset timeout m_bAccelerateUpload = false; // Safe until told otherwise } sent = 0; } } } if(onlyAllowedToSendControlPacket && (!m_control_queue.empty() || (sendbuffer != NULL && m_currentPacket_is_controlpacket))) { // enter control packet send queue // we might enter control packet queue several times for the same package, // but that costs very little overhead. Less overhead than trying to make sure // that we only enter the queue once. //printf("* Requeueing control packet on %p\n", this); theApp->uploadBandwidthThrottler->QueueForSendingControlPacket(this, HasSent()); } //printf("* Finishing send debug on %p\n",this); SocketSentBytes returnVal = { !anErrorHasOccured, sentStandardPacketBytesThisCall, sentControlPacketBytesThisCall }; return returnVal; } uint32 CEMSocket::GetNextFragSize(uint32 current, uint32 minFragSize) { if(current % minFragSize == 0) { return current; } else { return minFragSize*(current/minFragSize+1); } } /** * Decides the (minimum) amount the socket needs to send to prevent timeout. * * @author SlugFiller */ uint32 CEMSocket::GetNeededBytes() { uint32 sendgap; uint64 timetotal; uint64 timeleft; uint64 sizeleft, sizetotal; { wxMutexLocker lock(m_sendLocker); if (byConnected == ES_DISCONNECTED) { return 0; } if (!((sendbuffer && !m_currentPacket_is_controlpacket) || !m_standard_queue.empty())) { // No standard packet to send. Even if data needs to be sent to prevent timout, there's nothing to send. return 0; } if (((sendbuffer && !m_currentPacket_is_controlpacket)) && !m_control_queue.empty()) m_bAccelerateUpload = true; // We might be trying to send a block request, accelerate packet sendgap = ::GetTickCount() - lastCalledSend; timetotal = m_bAccelerateUpload?45000:90000; timeleft = ::GetTickCount() - lastFinishedStandard; if (sendbuffer && !m_currentPacket_is_controlpacket) { sizeleft = sendblen-sent; sizetotal = sendblen; } else { sizeleft = sizetotal = m_standard_queue.front().packet->GetRealPacketSize(); } } if (timeleft >= timetotal) return sizeleft; timeleft = timetotal-timeleft; if (timeleft*sizetotal >= timetotal*sizeleft) { // don't use 'GetTimeOut' here in case the timeout value is high, if (sendgap > SEC2MS(20)) return 1; // Don't let the socket itself time out - Might happen when switching from spread(non-focus) slot to trickle slot return 0; } uint64 decval = timeleft*sizetotal/timetotal; if (!decval) return sizeleft; if (decval < sizeleft) return sizeleft-decval+1; // Round up else return 1; } /** * Removes all packets from the standard queue that don't have to be sent for the socket to be able to send a control packet. * * Before a socket can send a new packet, the current packet has to be finished. If the current packet is part of * a split packet, then all parts of that split packet must be sent before the socket can send a control packet. * * This method keeps in standard queue only those packets that must be sent (rest of split packet), and removes everything * after it. The method doesn't touch the control packet queue. */ void CEMSocket::TruncateQueues() { wxMutexLocker lock(m_sendLocker); // Clear the standard queue totally // Please note! There may still be a standardpacket in the sendbuffer variable! CStdPacketQueue::iterator it = m_standard_queue.begin(); for (; it != m_standard_queue.end(); ++it) { delete it->packet; } m_standard_queue.clear(); } uint32 CEMSocket::GetTimeOut() const { return m_uTimeOut; } void CEMSocket::SetTimeOut(uint32 uTimeOut) { m_uTimeOut = uTimeOut; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/EMSocket.h0000644000175000017500000001064112611472361020117 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef EMSOCKET_H #define EMSOCKET_H #include "EncryptedStreamSocket.h" // Needed for CEncryptedStreamSocket #include "ThrottledSocket.h" // Needed for ThrottledFileSocket class CPacket; #define ERR_WRONGHEADER 0x01 #define ERR_TOOBIG 0x02 #define ES_DISCONNECTED 0xFF #define ES_NOTCONNECTED 0x00 #define ES_CONNECTED 0x01 const uint32 PACKET_HEADER_SIZE = 6; class CEMSocket : public CEncryptedStreamSocket, public ThrottledFileSocket { public: CEMSocket(const CProxyData *ProxyData = NULL); virtual ~CEMSocket(); virtual void SendPacket(CPacket* packet, bool delpacket = true, bool controlpacket = true, uint32 actualPayloadSize = 0); bool IsConnected() { return byConnected==ES_CONNECTED;}; uint8 GetConState() {return byConnected;} void SetDownloadLimit(uint32 limit); void DisableDownloadLimit(); virtual uint32 GetTimeOut() const; virtual void SetTimeOut(uint32 uTimeOut); uint32 GetLastCalledSend() { return lastCalledSend; } uint64 GetSentBytesCompleteFileSinceLastCallAndReset(); uint64 GetSentBytesPartFileSinceLastCallAndReset(); uint64 GetSentBytesControlPacketSinceLastCallAndReset(); uint64 GetSentPayloadSinceLastCallAndReset(); void TruncateQueues(); virtual SocketSentBytes SendControlData(uint32 maxNumberOfBytesToSend, uint32 minFragSize) { return Send(maxNumberOfBytesToSend, minFragSize, true); }; virtual SocketSentBytes SendFileAndControlData(uint32 maxNumberOfBytesToSend, uint32 minFragSize) { return Send(maxNumberOfBytesToSend, minFragSize, false); }; uint32 GetNeededBytes(); //protected: // these functions are public on our code because of the amuleDlg::socketHandler virtual void OnError(int WXUNUSED(nErrorCode)) { }; virtual void OnSend(int nErrorCode); virtual void OnReceive(int nErrorCode); virtual void OnConnect(int nErrorCode) = 0; protected: virtual bool PacketReceived(CPacket* WXUNUSED(packet)) { return false; }; virtual void OnClose(int nErrorCode); uint8 byConnected; uint32 m_uTimeOut; private: virtual SocketSentBytes Send(uint32 maxNumberOfBytesToSend, uint32 minFragSize, bool onlyAllowedToSendControlPacket); void ClearQueues(); uint32 GetNextFragSize(uint32 current, uint32 minFragSize); bool HasSent() { return m_hasSent; } // Download (pseudo) rate control uint32 downloadLimit; bool downloadLimitEnable; bool pendingOnReceive; // Download partial header byte pendingHeader[PACKET_HEADER_SIZE]; uint32 pendingHeaderSize; // Download partial packet byte* pendingPacket; uint32 pendingPacketSize; // Upload control byte* sendbuffer; uint32 sendblen; uint32 sent; typedef std::list CPacketQueue; CPacketQueue m_control_queue; struct StandardPacketQueueEntry { uint32 actualPayloadSize; CPacket* packet; }; typedef std::list CStdPacketQueue; CStdPacketQueue m_standard_queue; bool m_currentPacket_is_controlpacket; wxMutex m_sendLocker; uint64 m_numberOfSentBytesCompleteFile; uint64 m_numberOfSentBytesPartFile; uint64 m_numberOfSentBytesControlPacket; bool m_currentPackageIsFromPartFile; bool m_bAccelerateUpload; uint32 lastCalledSend; uint32 lastSent; uint32 lastFinishedStandard; uint32 m_actualPayloadSize; uint32 m_actualPayloadSizeSent; bool m_bBusy; bool m_hasSent; }; #endif // EMSOCKET_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/EditServerListDlg.cpp0000644000175000017500000000523612611472361022343 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Drager // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include // Needed for wxDialog // Do_not_auto_remove #include // Needed for wxBoxSizer #include // Needed for wxFile #include // Needed for wxLogSysError #include #include "EditServerListDlg.h" // Interface declarations BEGIN_EVENT_TABLE(EditServerListDlg, wxDialog) EVT_BUTTON(wxID_OK, EditServerListDlg::OnOK) END_EVENT_TABLE() EditServerListDlg::EditServerListDlg(wxWindow *parent, const wxString& caption, const wxString& message, const wxString& filename) : wxDialog(parent, -1, caption, wxDefaultPosition, wxSize(400,200), wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) { m_file = filename; wxBeginBusyCursor(); wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL ); topsizer->Add( CreateTextSizer( message ), 0, wxALL, 10 ); m_textctrl = new wxTextCtrl(this, -1, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE); topsizer->Add( m_textctrl, 1, wxEXPAND | wxLEFT|wxRIGHT, 15 ); topsizer->Add( CreateButtonSizer( wxOK | wxCANCEL ), 0, wxCENTRE | wxALL, 10 ); SetAutoLayout( TRUE ); SetSizer( topsizer ); Centre( wxBOTH ); if (wxFile::Exists(filename)) m_textctrl->LoadFile(filename); m_textctrl->SetFocus(); wxEndBusyCursor(); } EditServerListDlg::~EditServerListDlg() { } void EditServerListDlg::OnOK(wxCommandEvent& WXUNUSED(event) ) { if (m_textctrl->SaveFile(m_file)) EndModal(1); else wxLogSysError(wxT("Can't write to file '") + m_file + wxT("'")); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/EditServerListDlg.h0000644000175000017500000000310512611472361022001 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Drager // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef EDITSERVERLISTDLG_H #define EDITSERVERLISTDLG_H class wxTextCtrl; class EditServerListDlg : public wxDialog { public: EditServerListDlg(wxWindow *parent, const wxString& caption, const wxString& message, const wxString& filename); virtual ~EditServerListDlg(); void OnOK(wxCommandEvent& event); protected: wxTextCtrl* m_textctrl; wxString m_file; private: DECLARE_EVENT_TABLE() }; #endif // EDITSERVERLISTDLG_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/EncryptedDatagramSocket.cpp0000644000175000017500000004600312611472361023550 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // /* Basic Obfuscated Handshake Protocol UDP: see EncryptedStreamSocket.h ****************************** ED2K Packets - Keycreation Client <-> Client: - Client A (Outgoing connection): Sendkey: Md5() 23 - Client B (Incoming connection): Receivekey: Md5() 23 - Note: The first 1024 Bytes will be _NOT_ discarded for UDP keys to save CPU time - Handshake -> The handshake is encrypted - except otherwise noted - by the Keys created above -> Padding is currently not used for UDP meaning that PaddingLen will be 0, using PaddingLens up to 16 Bytes is acceptable however Client A: - Additional Comments: - For obvious reasons the UDP handshake is actually no handshake. If a different Encryption method (or better a different Key) is to be used this has to be negotiated in a TCP connection - SemiRandomNotProtocolMarker is a Byte which has a value unequal any Protocol header byte. This is a compromise, turning in complete randomness (and nice design) but gaining a lower CPU usage - Kad/Ed2k Marker are only indicators, which possibility could be tried first, and should not be trusted ****************************** Server Packets - Keycreation Client <-> Server: - Client A (Outgoing connection client -> server): Sendkey: Md5() 7 - Client B (Incoming connection): Receivekey: Md5() 7 - Note: The first 1024 Bytes will be _NOT_ discarded for UDP keys to save CPU time - Handshake -> The handshake is encrypted - except otherwise noted - by the Keys created above -> Padding is currently not used for UDP meaning that PaddingLen will be 0, using PaddingLens up to 16 Bytes is acceptable however Client A: - Overhead: 8 Bytes per UDP Packet - Security for Basic Obfuscation: - Random looking packets, very limited protection against passive eavesdropping single packets - Additional Comments: - For obvious reasons the UDP handshake is actually no handshake. If a different Encryption method (or better a different Key) is to be used this has to be negotiated in a TCP connection - SemiRandomNotProtocolMarker is a Byte which has a value unequal any Protocol header byte. This is a compromise, turning in complete randomness (and nice design) but gaining a lower CPU usage ****************************** KAD Packets - Keycreation Client <-> Client: - Client A (Outgoing connection): Sendkey: Md5() 18 - Client B (Incoming connection): Receivekey: Md5() 18 - Note: The first 1024 Bytes will be _NOT_ discarded for UDP keys to save CPU time - Handshake -> The handshake is encrypted - except otherwise noted - by the Keys created above -> Padding is currently not used for UDP meaning that PaddingLen will be 0, using PaddingLens up to 16 Bytes is acceptable however Client A: - Overhead: 12 Bytes per UDP Packet - Additional Comments: - For obvious reasons the UDP handshake is actually no handshake. If a different Encryption method (or better a different Key) is to be used this has to be negotiated in a TCP connection - SemiRandomNotProtocolMarker is a Byte which has a value unequal any Protocol header byte. This is a compromise, turning in complete randomness (and nice design) but gaining a lower CPU usage - Kad/Ed2k Marker are only indicators, which possibility could be tried first, and should not be trusted */ #include "EncryptedDatagramSocket.h" #include "amule.h" #include "Logger.h" #include "Preferences.h" #include "RC4Encrypt.h" #include "./kademlia/kademlia/Prefs.h" #include "./kademlia/kademlia/Kademlia.h" #include "RandomFunctions.h" #include "Statistics.h" #include #include // random generator #include "CryptoPP_Inc.h" // Needed for Crypto functions #define CRYPT_HEADER_WITHOUTPADDING 8 #define MAGICVALUE_UDP 91 #define MAGICVALUE_UDP_SYNC_CLIENT 0x395F2EC1 #define MAGICVALUE_UDP_SYNC_SERVER 0x13EF24D5 #define MAGICVALUE_UDP_SERVERCLIENT 0xA5 #define MAGICVALUE_UDP_CLIENTSERVER 0x6B CEncryptedDatagramSocket::CEncryptedDatagramSocket(amuleIPV4Address &address, muleSocketFlags flags, const CProxyData *proxyData) : CDatagramSocketProxy(address, flags, proxyData) {} CEncryptedDatagramSocket::~CEncryptedDatagramSocket() {} int CEncryptedDatagramSocket::DecryptReceivedClient(uint8_t *bufIn, int bufLen, uint8_t **bufOut, uint32_t ip, uint32_t *receiverVerifyKey, uint32_t *senderVerifyKey) { int result = bufLen; *bufOut = bufIn; if (receiverVerifyKey == NULL || senderVerifyKey == NULL) { wxFAIL; return result; } *receiverVerifyKey = 0; *senderVerifyKey = 0; if (result <= CRYPT_HEADER_WITHOUTPADDING /*|| !thePrefs.IsClientCryptLayerSupported()*/) { return result; } switch (bufIn[0]) { case OP_EMULEPROT: case OP_KADEMLIAPACKEDPROT: case OP_KADEMLIAHEADER: case OP_UDPRESERVEDPROT1: case OP_UDPRESERVEDPROT2: case OP_PACKEDPROT: return result; // no encrypted packet (see description on top) default: ; } // might be an encrypted packet, try to decrypt CRC4EncryptableBuffer receivebuffer; uint32_t value = 0; // check the marker bit which type this packet could be and which key to test first, this is only an indicator since old clients have it set random // see the header for marker bits explanation uint8_t currentTry = ((bufIn[0] & 0x03) == 3) ? 1 : (bufIn[0] & 0x03); uint8_t tries; if (Kademlia::CKademlia::GetPrefs() == NULL) { // if kad never run, no point in checking anything except for ed2k encryption tries = 1; currentTry = 1; } else { tries = 3; } bool kad = false; do { receivebuffer.FullReset(); tries--; MD5Sum md5; if (currentTry == 0) { // kad packet with NodeID as key kad = true; if (Kademlia::CKademlia::GetPrefs()) { uint8_t keyData[18]; Kademlia::CKademlia::GetPrefs()->GetKadID().StoreCryptValue((uint8_t *)&keyData); memcpy(keyData + 16, bufIn + 1, 2); // random key part sent from remote client md5.Calculate(keyData, sizeof(keyData)); } } else if (currentTry == 1) { // ed2k packet kad = false; uint8_t keyData[23]; md4cpy(keyData, thePrefs::GetUserHash().GetHash()); keyData[20] = MAGICVALUE_UDP; PokeUInt32(keyData + 16, ip); memcpy(keyData + 21, bufIn + 1, 2); // random key part sent from remote client md5.Calculate(keyData, sizeof(keyData)); } else if (currentTry == 2) { // kad packet with ReceiverKey as key kad = true; if (Kademlia::CKademlia::GetPrefs()) { uint8_t keyData[6]; PokeUInt32(keyData, Kademlia::CPrefs::GetUDPVerifyKey(ip)); memcpy(keyData + 4, bufIn + 1, 2); // random key part sent from remote client md5.Calculate(keyData, sizeof(keyData)); } } else { wxFAIL; } receivebuffer.SetKey(md5, true); receivebuffer.RC4Crypt(bufIn + 3, (uint8_t*)&value, sizeof(value)); ENDIAN_SWAP_I_32(value); currentTry = (currentTry + 1) % 3; } while (value != MAGICVALUE_UDP_SYNC_CLIENT && tries > 0); // try to decrypt as ed2k as well as kad packet if needed (max 3 rounds) if (value == MAGICVALUE_UDP_SYNC_CLIENT) { // yup this is an encrypted packet // // debugoutput notices // // the following cases are "allowed" but shouldn't happen given that there is only our implementation yet // if (bKad && (pbyBufIn[0] & 0x01) != 0) // DebugLog(_T("Received obfuscated UDP packet from clientIP: %s with wrong key marker bits (kad packet, ed2k bit)"), ipstr(dwIP)); // else if (bKad && !bKadRecvKeyUsed && (pbyBufIn[0] & 0x02) != 0) // DebugLog(_T("Received obfuscated UDP packet from clientIP: %s with wrong key marker bits (kad packet, nodeid key, recvkey bit)"), ipstr(dwIP)); // else if (bKad && bKadRecvKeyUsed && (pbyBufIn[0] & 0x02) == 0) // DebugLog(_T("Received obfuscated UDP packet from clientIP: %s with wrong key marker bits (kad packet, recvkey key, nodeid bit)"), ipstr(dwIP)); uint8_t padLen; receivebuffer.RC4Crypt(bufIn + 7, (uint8_t*)&padLen, 1); result -= CRYPT_HEADER_WITHOUTPADDING; if (result <= padLen) { //DebugLogError(_T("Invalid obfuscated UDP packet from clientIP: %s, Paddingsize (%u) larger than received bytes"), ipstr(dwIP), byPadLen); return bufLen; // pass through, let the Receivefunction do the errorhandling on this junk } if (padLen > 0) { receivebuffer.RC4Crypt(NULL, NULL, padLen); } result -= padLen; if (kad) { if (result <= 8) { //DebugLogError(_T("Obfuscated Kad packet with mismatching size (verify keys missing) received from clientIP: %s"), ipstr(dwIP)); return bufLen; // pass through, let the Receivefunction do the errorhandling on this junk; } // read the verify keys receivebuffer.RC4Crypt(bufIn + CRYPT_HEADER_WITHOUTPADDING + padLen, (uint8_t*)receiverVerifyKey, 4); receivebuffer.RC4Crypt(bufIn + CRYPT_HEADER_WITHOUTPADDING + padLen + 4, (uint8_t*)senderVerifyKey, 4); ENDIAN_SWAP_I_32(*receiverVerifyKey); ENDIAN_SWAP_I_32(*senderVerifyKey); result -= 8; } *bufOut = bufIn + (bufLen - result); receivebuffer.RC4Crypt((uint8_t*)*bufOut, (uint8_t*)*bufOut, result); theStats::AddDownOverheadCrypt(bufLen - result); return result; // done } else { //DebugLogWarning(_T("Obfuscated packet expected but magicvalue mismatch on UDP packet from clientIP: %s"), ipstr(dwIP)); return bufLen; // pass through, let the Receivefunction do the errorhandling on this junk } } // Encrypt packet. Key used: // clientHashOrKadID != NULL -> clientHashOrKadID // clientHashOrKadID == NULL && kad && receiverVerifyKey != 0 -> receiverVerifyKey // else -> ASSERT int CEncryptedDatagramSocket::EncryptSendClient(uint8_t **buf, int bufLen, const uint8_t *clientHashOrKadID, bool kad, uint32_t receiverVerifyKey, uint32_t senderVerifyKey) { wxASSERT(theApp->GetPublicIP() != 0 || kad); wxASSERT(thePrefs::IsClientCryptLayerSupported()); wxASSERT(clientHashOrKadID != NULL || receiverVerifyKey != 0); wxASSERT((receiverVerifyKey == 0 && senderVerifyKey == 0) || kad); uint8_t padLen = 0; // padding disabled for UDP currently const uint32_t cryptHeaderLen = padLen + CRYPT_HEADER_WITHOUTPADDING + (kad ? 8 : 0); uint32_t cryptedLen = bufLen + cryptHeaderLen; uint8_t *cryptedBuffer = new uint8_t[cryptedLen]; bool kadRecvKeyUsed = false; uint16_t randomKeyPart = GetRandomUint16(); CRC4EncryptableBuffer sendbuffer; MD5Sum md5; if (kad) { if ((clientHashOrKadID == NULL || CMD4Hash(clientHashOrKadID).IsEmpty()) && receiverVerifyKey != 0) { kadRecvKeyUsed = true; uint8_t keyData[6]; PokeUInt32(keyData, receiverVerifyKey); PokeUInt16(keyData+4, randomKeyPart); md5.Calculate(keyData, sizeof(keyData)); //DEBUG_ONLY( DebugLog(_T("Creating obfuscated Kad packet encrypted by ReceiverKey (%u)"), nReceiverVerifyKey) ); } else if (clientHashOrKadID != NULL && !CMD4Hash(clientHashOrKadID).IsEmpty()) { uint8_t keyData[18]; md4cpy(keyData, clientHashOrKadID); PokeUInt16(keyData+16, randomKeyPart); md5.Calculate(keyData, sizeof(keyData)); //DEBUG_ONLY( DebugLog(_T("Creating obfuscated Kad packet encrypted by Hash/NodeID %s"), md4str(pachClientHashOrKadID)) ); } else { delete [] cryptedBuffer; wxFAIL; return bufLen; } } else { uint8_t keyData[23]; md4cpy(keyData, clientHashOrKadID); PokeUInt32(keyData+16, theApp->GetPublicIP()); PokeUInt16(keyData+21, randomKeyPart); keyData[20] = MAGICVALUE_UDP; md5.Calculate(keyData, sizeof(keyData)); } sendbuffer.SetKey(md5, true); // create the semi random byte encryption header uint8_t semiRandomNotProtocolMarker = 0; int i; for (i = 0; i < 128; i++) { semiRandomNotProtocolMarker = GetRandomUint8(); semiRandomNotProtocolMarker = kad ? (semiRandomNotProtocolMarker & 0xFE) : (semiRandomNotProtocolMarker | 0x01); // set the ed2k/kad marker bit if (kad) { // set the ed2k/kad and nodeid/recvkey markerbit semiRandomNotProtocolMarker = kadRecvKeyUsed ? ((semiRandomNotProtocolMarker & 0xFE) | 0x02) : (semiRandomNotProtocolMarker & 0xFC); } else { // set the ed2k/kad marker bit semiRandomNotProtocolMarker = (semiRandomNotProtocolMarker | 0x01); } bool bOk = false; switch (semiRandomNotProtocolMarker) { // not allowed values case OP_EMULEPROT: case OP_KADEMLIAPACKEDPROT: case OP_KADEMLIAHEADER: case OP_UDPRESERVEDPROT1: case OP_UDPRESERVEDPROT2: case OP_PACKEDPROT: break; default: bOk = true; } if (bOk) { break; } } if (i >= 128) { // either we have _real_ bad luck or the randomgenerator is a bit messed up wxFAIL; semiRandomNotProtocolMarker = 0x01; } cryptedBuffer[0] = semiRandomNotProtocolMarker; PokeUInt16(cryptedBuffer + 1, randomKeyPart); uint32_t magicValue = ENDIAN_SWAP_32(MAGICVALUE_UDP_SYNC_CLIENT); sendbuffer.RC4Crypt((uint8_t*)&magicValue, cryptedBuffer + 3, 4); sendbuffer.RC4Crypt((uint8_t*)&padLen, cryptedBuffer + 7, 1); for (int j = 0; j < padLen; j++) { uint8_t byRand = (uint8_t)rand(); // they actually don't really need to be random, but it doesn't hurt either sendbuffer.RC4Crypt((uint8_t*)&byRand, cryptedBuffer + CRYPT_HEADER_WITHOUTPADDING + j, 1); } if (kad) { ENDIAN_SWAP_I_32(receiverVerifyKey); ENDIAN_SWAP_I_32(senderVerifyKey); sendbuffer.RC4Crypt((uint8_t*)&receiverVerifyKey, cryptedBuffer + CRYPT_HEADER_WITHOUTPADDING + padLen, 4); sendbuffer.RC4Crypt((uint8_t*)&senderVerifyKey, cryptedBuffer + CRYPT_HEADER_WITHOUTPADDING + padLen + 4, 4); } sendbuffer.RC4Crypt(*buf, cryptedBuffer + cryptHeaderLen, bufLen); delete [] *buf; *buf = cryptedBuffer; theStats::AddUpOverheadCrypt(cryptedLen - bufLen); return cryptedLen; } int CEncryptedDatagramSocket::DecryptReceivedServer(uint8_t* pbyBufIn, int nBufLen, uint8_t **ppbyBufOut, uint32_t dwBaseKey, uint32_t /*dbgIP*/) { int nResult = nBufLen; *ppbyBufOut = pbyBufIn; if (nResult <= CRYPT_HEADER_WITHOUTPADDING || !thePrefs::IsServerCryptLayerUDPEnabled() || dwBaseKey == 0) { return nResult; } if(pbyBufIn[0] == OP_EDONKEYPROT) { return nResult; // no encrypted packet (see description on top) } // might be an encrypted packet, try to decrypt uint8_t achKeyData[7]; PokeUInt32(achKeyData, dwBaseKey); achKeyData[4] = MAGICVALUE_UDP_SERVERCLIENT; memcpy(achKeyData + 5, pbyBufIn + 1, 2); // random key part sent from remote server CRC4EncryptableBuffer receivebuffer; MD5Sum md5(achKeyData, sizeof(achKeyData)); receivebuffer.SetKey(md5,true); uint32_t dwValue; receivebuffer.RC4Crypt(pbyBufIn + 3, (uint8_t*)&dwValue, sizeof(dwValue)); ENDIAN_SWAP_I_32(dwValue); if (dwValue == MAGICVALUE_UDP_SYNC_SERVER) { // yup this is an encrypted packet //DEBUG_ONLY( DebugLog(_T("Received obfuscated UDP packet from ServerIP: %s"), ipstr(dbgIP)) ); uint8_t byPadLen; receivebuffer.RC4Crypt(pbyBufIn + 7, (uint8_t*)&byPadLen, 1); byPadLen &= 15; nResult -= CRYPT_HEADER_WITHOUTPADDING; if (nResult <= byPadLen) { //DebugLogError(_T("Invalid obfuscated UDP packet from ServerIP: %s, Paddingsize (%u) larger than received bytes"), ipstr(dbgIP), byPadLen); return nBufLen; // pass through, let the Receivefunction do the errorhandling on this junk } if (byPadLen > 0) { receivebuffer.RC4Crypt(NULL, NULL, byPadLen); } nResult -= byPadLen; *ppbyBufOut = pbyBufIn + (nBufLen - nResult); receivebuffer.RC4Crypt((uint8_t*)*ppbyBufOut, (uint8_t*)*ppbyBufOut, nResult); theStats::AddDownOverheadCrypt(nBufLen - nResult); return nResult; // done } else { //DebugLogWarning(_T("Obfuscated packet expected but magicvalue mismatch on UDP packet from ServerIP: %s"), ipstr(dbgIP)); return nBufLen; // pass through, let the Receivefunction do the errorhandling on this junk } } int CEncryptedDatagramSocket::EncryptSendServer(uint8_t** ppbyBuf, int nBufLen, uint32_t dwBaseKey) { wxASSERT( thePrefs::IsServerCryptLayerUDPEnabled() ); wxASSERT( dwBaseKey != 0 ); uint16_t nRandomKeyPart = GetRandomUint16(); uint8_t achKeyData[7]; PokeUInt32(achKeyData, dwBaseKey); achKeyData[4] = MAGICVALUE_UDP_CLIENTSERVER; PokeUInt16(achKeyData + 5, nRandomKeyPart); MD5Sum md5(achKeyData, sizeof(achKeyData)); CRC4EncryptableBuffer sendbuffer; sendbuffer.SetKey(md5, true); // create the semi random byte encryption header uint8_t bySemiRandomNotProtocolMarker = 0; int i; for (i = 0; i < 128; i++) { bySemiRandomNotProtocolMarker = GetRandomUint8(); if (bySemiRandomNotProtocolMarker != OP_EDONKEYPROT) { // not allowed values break; } } if (i >= 128) { // either we have _real_ bad luck or the randomgenerator is a bit messed up wxFAIL; bySemiRandomNotProtocolMarker = 0x01; } uint8_t byPadLen = 0; // padding disabled for UDP currently uint32_t nCryptedLen = nBufLen + byPadLen + CRYPT_HEADER_WITHOUTPADDING; uint8_t* pachCryptedBuffer = new uint8_t[nCryptedLen]; pachCryptedBuffer[0] = bySemiRandomNotProtocolMarker; PokeUInt16(pachCryptedBuffer + 1, nRandomKeyPart); uint32_t dwMagicValue = ENDIAN_SWAP_32(MAGICVALUE_UDP_SYNC_SERVER); sendbuffer.RC4Crypt((uint8_t*)&dwMagicValue, pachCryptedBuffer + 3, 4); sendbuffer.RC4Crypt((uint8_t*)&byPadLen, pachCryptedBuffer + 7, 1); for (int j = 0; j < byPadLen; j++){ uint8_t byRand = (uint8_t)rand(); // they actually don't really need to be random, but it doesn't hurt either sendbuffer.RC4Crypt((uint8_t*)&byRand, pachCryptedBuffer + CRYPT_HEADER_WITHOUTPADDING + j, 1); } sendbuffer.RC4Crypt(*ppbyBuf, pachCryptedBuffer + CRYPT_HEADER_WITHOUTPADDING + byPadLen, nBufLen); delete[] *ppbyBuf; *ppbyBuf = pachCryptedBuffer; theStats::AddUpOverheadCrypt(nCryptedLen - nBufLen); return nCryptedLen; } amule_2.3.1+git20151120.0023527bc2.orig/src/EncryptedDatagramSocket.h0000644000175000017500000000401412611472361023211 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef ENCRYPTEDDATAGRAMSOCKET_H #define ENCRYPTEDDATAGRAMSOCKET_H #include "Proxy.h" #include "Types.h" class CEncryptedDatagramSocket : public CDatagramSocketProxy { public: CEncryptedDatagramSocket(amuleIPV4Address &address, muleSocketFlags flags = MULE_SOCKET_NONE, const CProxyData *proxyData = NULL); virtual ~CEncryptedDatagramSocket(); // TODO: Make protected once the UDP socket is again its own class. static int DecryptReceivedClient(uint8_t *bufIn, int bufLen, uint8_t **bufOut, uint32_t ip, uint32_t *receiverVerifyKey, uint32_t *senderVerifyKey); static int EncryptSendClient(uint8_t **buf, int bufLen, const uint8_t *clientHashOrKadID, bool kad, uint32_t receiverVerifyKey, uint32_t senderVerifyKey); static int DecryptReceivedServer(uint8_t* pbyBufIn, int nBufLen, uint8_t** ppbyBufOut, uint32_t dwBaseKey, uint32_t dbgIP); static int EncryptSendServer(uint8_t** ppbyBuf, int nBufLen, uint32_t dwBaseKey); }; #endif amule_2.3.1+git20151120.0023527bc2.orig/src/EncryptedStreamSocket.cpp0000644000175000017500000010041512611472361023261 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // /* Basic Obfuscated Handshake Protocol Client <-> Client: - Keycreation: - Client A (Outgoing connection): Sendkey: Md5() 21 Receivekey: Md5() 21 - Client B (Incoming connection): Sendkey: Md5() 21 Receivekey: Md5() 21 NOTE: First 1024 bytes are discarded - Handshake -> The handshake is encrypted - except otherwise noted - by the Keys created above -> Handshake is blocking - do not start sending an answer before the request is completely received (this includes the random bytes) -> EncryptionMethod = 0 is Obfuscation and the only supported method right now Client A: Client B: -> The basic handshake is finished here, if an additional/different EncryptionMethod was selected it may continue negotiating details for this one - Overhead: 18-48 (~33) Bytes + 2 * IP/TCP Headers per Connection - Security for Basic Obfuscation: - Random looking stream, very limited protection against passive eavesdropping single connections - Additional Comments: - RandomKeyPart is needed to make multiple connections between two clients look different (but still random), since otherwise the same key would be used and RC4 would create the same output. Since the key is a MD5 hash it doesn't weaken the key if that part is known - Why DH-KeyAgreement isn't used as basic obfuscation key: It doesn't offer substantial more protection against passive connection based protocol identification, it has about 200 bytes more overhead, needs more CPU time, we cannot say if the received data is junk, unencrypted or part of the keyagreement before the handshake is finished without losing the complete randomness, it doesn't offer substantial protection against eavesdropping without added authentification Basic Obfuscated Handshake Protocol Client <-> Server: - RC4 Keycreation: - Client (Outgoing connection): Sendkey: Md5() 97 Receivekey: Md5() 97 - Server (Incoming connection): Sendkey: Md5() 97 Receivekey: Md5() 97 NOTE: First 1024 Bytes are discarded - Handshake -> The handshake is encrypted - except otherwise noted - by the Keys created above -> Handshake is blocking - do not start sending an answer before the request is completely received (this includes the random bytes) -> EncryptionMethod = 0 is Obfuscation and the only supported method right now Client: Server: Client: (Answer delayed till first payload to save a frame) -> The basic handshake is finished here, if an additional/different EncryptionMethod was selected it may continue negotiating details for this one - Overhead: 206-251 (~229) Bytes + 2 * IP/TCP Headers Headers per Connection - DH Agreement Specifics: sizeof(a) and sizeof(b) = 128 Bits, g = 2, p = dh768_p (see below), sizeof p, s, etc. = 768 bits */ #include "EncryptedStreamSocket.h" #include "amule.h" #include "Logger.h" #include "Preferences.h" #include "ServerConnect.h" #include "RC4Encrypt.h" #include "MemFile.h" #include "ClientList.h" #include "RandomFunctions.h" #include #include #include #define MAGICVALUE_REQUESTER 34 // modification of the requester-send and server-receive key #define MAGICVALUE_SERVER 203 // modification of the server-send and requester-send key #define MAGICVALUE_SYNC 0x835E6FC4 // value to check if we have a working encrypted stream #define DHAGREEMENT_A_BITS 128 #define PRIMESIZE_BYTES 96 static unsigned char dh768_p[] = { 0xF2, 0xBF, 0x52, 0xC5, 0x5F, 0x58, 0x7A, 0xDD, 0x53, 0x71, 0xA9, 0x36, 0xE8, 0x86, 0xEB, 0x3C, 0x62, 0x17, 0xA3, 0x3E, 0xC3, 0x4C, 0xB4, 0x0D, 0xC7, 0x3A, 0x41, 0xA6, 0x43, 0xAF, 0xFC, 0xE7, 0x21, 0xFC, 0x28, 0x63, 0x66, 0x53, 0x5B, 0xDB, 0xCE, 0x25, 0x9F, 0x22, 0x86, 0xDA, 0x4A, 0x91, 0xB2, 0x07, 0xCB, 0xAA, 0x52, 0x55, 0xD4, 0xF6, 0x1C, 0xCE, 0xAE, 0xD4, 0x5A, 0xD5, 0xE0, 0x74, 0x7D, 0xF7, 0x78, 0x18, 0x28, 0x10, 0x5F, 0x34, 0x0F, 0x76, 0x23, 0x87, 0xF8, 0x8B, 0x28, 0x91, 0x42, 0xFB, 0x42, 0x68, 0x8F, 0x05, 0x15, 0x0F, 0x54, 0x8B, 0x5F, 0x43, 0x6A, 0xF7, 0x0D, 0xF3 }; // winsock2.h already defines it #ifdef SOCKET_ERROR #undef SOCKET_ERROR #endif #define SOCKET_ERROR (-1) CEncryptedStreamSocket::CEncryptedStreamSocket(muleSocketFlags flags, const CProxyData *proxyData) : CSocketClientProxy(flags, proxyData) { m_StreamCryptState = thePrefs::IsClientCryptLayerSupported() ? ECS_UNKNOWN : ECS_NONE; m_NegotiatingState = ONS_NONE; m_nObfusicationBytesReceived = 0; m_bFullReceive = true; m_dbgbyEncryptionSupported = 0xFF; m_dbgbyEncryptionRequested = 0xFF; m_dbgbyEncryptionMethodSet = 0xFF; m_nReceiveBytesWanted = 0; m_EncryptionMethod = ENM_OBFUSCATION; m_nRandomKeyPart = 0; m_bServerCrypt = false; } CEncryptedStreamSocket::~CEncryptedStreamSocket() {} /* External interface */ void CEncryptedStreamSocket::SetConnectionEncryption(bool bEnabled, const uint8_t* pTargetClientHash, bool bServerConnection) { if (m_StreamCryptState != ECS_UNKNOWN && m_StreamCryptState != ECS_NONE) { if (bEnabled) { wxFAIL; } return; } if (bEnabled && pTargetClientHash != NULL && !bServerConnection) { m_StreamCryptState = ECS_PENDING; // create obfuscation keys, see on top for key format // use the crypt random generator m_nRandomKeyPart = GetRandomUint32(); uint8 achKeyData[21]; md4cpy(achKeyData, pTargetClientHash); PokeUInt32(achKeyData + 17, m_nRandomKeyPart); achKeyData[16] = MAGICVALUE_REQUESTER; MD5Sum md5(achKeyData, sizeof(achKeyData)); m_pfiSendBuffer.SetKey(md5); achKeyData[16] = MAGICVALUE_SERVER; md5.Calculate(achKeyData, sizeof(achKeyData)); m_pfiReceiveBuffer.SetKey(md5); } else if (bServerConnection && bEnabled) { //printf("->Server crypt\n"); m_bServerCrypt = true; m_StreamCryptState = ECS_PENDING_SERVER; } else { wxASSERT( !bEnabled ); m_StreamCryptState = ECS_NONE; } } /* Internals, common to base class */ // unfortunately sending cannot be made transparent for the derived class, because of WSA_WOULDBLOCK // together with the fact that each byte must pass the keystream only once int CEncryptedStreamSocket::Write(const void* lpBuf, uint32_t nBufLen) { //printf("Starting write for %s\n", (const char*) unicode2char(GetPeer())); if (!IsEncryptionLayerReady()) { wxFAIL; return 0; } else if (m_bServerCrypt && m_StreamCryptState == ECS_ENCRYPTING && !m_pfiSendBuffer.IsEmpty()) { wxASSERT( m_NegotiatingState == ONS_BASIC_SERVER_DELAYEDSENDING ); // handshakedata was delayed to put it into one frame with the first paypload to the server // do so now with the payload attached int nRes = SendNegotiatingData(lpBuf, nBufLen, nBufLen); wxASSERT( nRes != SOCKET_ERROR ); (void)nRes; return nBufLen; // report a full send, even if we didn't for some reason - the data is now in our buffer and will be handled later } else if (m_NegotiatingState == ONS_BASIC_SERVER_DELAYEDSENDING) { wxFAIL; } if (m_StreamCryptState == ECS_UNKNOWN) { //this happens when the encryption option was not set on an outgoing connection //or if we try to send before receiving on an incoming connection - both shouldn't happen m_StreamCryptState = ECS_NONE; //DebugLogError(_T("CEncryptedStreamSocket: Overwriting State ECS_UNKNOWN with ECS_NONE because of premature Send() (%s)"), GetPeer()); } //printf("Writing %i bytes of data\n", nBufLen); return CSocketClientProxy::Write(lpBuf, nBufLen); } int CEncryptedStreamSocket::Read(void* lpBuf, uint32_t nBufLen) { m_nObfusicationBytesReceived = CSocketClientProxy::Read(lpBuf, nBufLen); m_bFullReceive = m_nObfusicationBytesReceived == (uint32)nBufLen; //printf("Read %i bytes on %s, socket %p\n", m_nObfusicationBytesReceived, (const char*) unicode2char(GetPeer()), this); if (m_nObfusicationBytesReceived == (uint32_t)SOCKET_ERROR || m_nObfusicationBytesReceived <= 0) { return m_nObfusicationBytesReceived; } switch (m_StreamCryptState) { case ECS_NONE: // disabled, just pass it through return m_nObfusicationBytesReceived; case ECS_PENDING: case ECS_PENDING_SERVER: //printf("Received %i bytes before sending?\n", m_nObfusicationBytesReceived); wxFAIL; //DebugLogError(_T("CEncryptedStreamSocket Received data before sending on outgoing connection")); m_StreamCryptState = ECS_NONE; return m_nObfusicationBytesReceived; case ECS_UNKNOWN: { //printf("Receiving encrypted data on ECS_UNKNOWN\n"); uint32_t nRead = 1; bool bNormalHeader = false; switch (((uint8_t*)lpBuf)[0]) { case OP_EDONKEYPROT: case OP_PACKEDPROT: case OP_EMULEPROT: bNormalHeader = true; break; } if (!bNormalHeader) { //printf("Not a normal header, negotiating encryption\n"); StartNegotiation(false); const uint32 nNegRes = Negotiate((uint8_t*)lpBuf + nRead, m_nObfusicationBytesReceived - nRead); if (nNegRes == (uint32_t)(-1)) { return 0; } nRead += nNegRes; if (nRead != (uint32_t)m_nObfusicationBytesReceived) { // this means we have more data then the current negotiation step required (or there is a bug) and this should never happen // (note: even if it just finished the handshake here, there still can be no data left, since the other client didn't receive our response yet) //DebugLogError(_T("CEncryptedStreamSocket: Client %s sent more data then expected while negotiating, disconnecting (1)"), GetPeer()); //printf("On error: encryption\n"); OnError(ERR_ENCRYPTION); } return 0; } else { // doesn't seem to be encrypted //printf("Encrypted data doesn't seem to be encrypted\n"); m_StreamCryptState = ECS_NONE; // if we require an encrypted connection, cut the connection here. This shouldn't happen that often // at least with other up-to-date eMule clients because they check for incompability before connecting if possible if (thePrefs::IsClientCryptLayerRequired()) { // TODO: Remove me when I have been solved // Even if the Require option is enabled, we currently have to accept unencrypted connection which are made // for lowid/firewall checks from servers and other from us selected client. Otherwise, this option would // always result in a lowid/firewalled status. This is of course not nice, but we can't avoid this workaround // until servers and kad completely support encryption too, which will at least for kad take a bit // only exception is the .ini option ClientCryptLayerRequiredStrict which will even ignore test connections // Update: New server now support encrypted callbacks uint32_t ip = GetPeerInt(); if (thePrefs::IsClientCryptLayerRequiredStrict() || (!theApp->serverconnect->AwaitingTestFromIP(ip) && !theApp->clientlist->IsKadFirewallCheckIP(ip)) ) { OnError(ERR_ENCRYPTION_NOTALLOWED); return 0; } else { //AddDebugLogLine(DLP_DEFAULT, false, _T("Incoming unencrypted firewallcheck connection permitted despite RequireEncryption setting - %s"), GetPeer() ); } } return m_nObfusicationBytesReceived; // buffer was unchanged, we can just pass it through } } case ECS_ENCRYPTING: //printf("Encryption enabled on data receiving, decrypting and passing along\n"); // basic obfusication enabled and set, so decrypt and pass along m_pfiReceiveBuffer.RC4Crypt((uint8_t*)lpBuf, (uint8_t*)lpBuf, m_nObfusicationBytesReceived); //DumpMem(lpBuf, m_nObfusicationBytesReceived, wxT("Directly decrypted data:")); return m_nObfusicationBytesReceived; case ECS_NEGOTIATING:{ //printf("Negotiating on data receive\n"); const uint32_t nRead = Negotiate((uint8_t*)lpBuf, m_nObfusicationBytesReceived); if (nRead == (uint32_t)(-1)) { //printf("-> Encryption read error on negotiation\n"); return 0; } else if (nRead != (uint32_t)m_nObfusicationBytesReceived && m_StreamCryptState != ECS_ENCRYPTING) { //printf("-> Too much data, bailing out of negotiation step\n"); // this means we have more data then the current negotiation step required (or there is a bug) and this should never happen //DebugLogError(_T("CEncryptedStreamSocket: Client %s sent more data then expected while negotiating, disconnecting (2)"), GetPeer()); OnError(ERR_ENCRYPTION); return 0; } else if (nRead != (uint32_t)m_nObfusicationBytesReceived && m_StreamCryptState == ECS_ENCRYPTING) { //printf("-> Handshake negotiation finished\n"); // we finished the handshake and if we this was an outgoing connection it is allowed (but strange and unlikely) that the client sent payload //DebugLogWarning(_T("CEncryptedStreamSocket: Client %s has finished the handshake but also sent payload on a outgoing connection"), GetPeer()); memmove(lpBuf, (uint8_t*)lpBuf + nRead, m_nObfusicationBytesReceived - nRead); return m_nObfusicationBytesReceived - nRead; } else { //printf("-> Negotiation went probably ok\n"); return 0; } } default: wxFAIL; return m_nObfusicationBytesReceived; } } void CEncryptedStreamSocket::OnSend(int) { // if the socket just connected and this is outgoing, we might want to start the handshake here if (m_StreamCryptState == ECS_PENDING || m_StreamCryptState == ECS_PENDING_SERVER){ //printf("Starting connection negotiation on OnSend for %s\n", (const char*) unicode2char(GetPeer())); StartNegotiation(true); return; } // check if we have negotiating data pending if (!m_pfiSendBuffer.IsEmpty()) { wxASSERT( m_StreamCryptState >= ECS_NEGOTIATING ); SendNegotiatingData(NULL, 0); } } void CEncryptedStreamSocket::CryptPrepareSendData(uint8* pBuffer, uint32 nLen) { if (!IsEncryptionLayerReady()) { wxFAIL; // must be a bug return; } if (m_StreamCryptState == ECS_UNKNOWN) { //this happens when the encryption option was not set on an outgoing connection //or if we try to send before receiving on an incoming connection - both shouldn't happen m_StreamCryptState = ECS_NONE; //DebugLogError(_T("CEncryptedStreamSocket: Overwriting State ECS_UNKNOWN with ECS_NONE because of premature Send() (%s)"), GetPeer()); } if (m_StreamCryptState == ECS_ENCRYPTING) { //printf("Preparing crypt data on %s\n", (const char*) unicode2char(GetPeer())); //DumpMem(pBuffer, nLen, wxT("Before crypt prepare:\n")); m_pfiSendBuffer.RC4Crypt(pBuffer, pBuffer, nLen); //DumpMem(pBuffer, nLen, wxT("After crypt prepare:\n")); } } /* Internals, just for this class (can be raped) */ bool CEncryptedStreamSocket::IsEncryptionLayerReady() { return ( (m_StreamCryptState == ECS_NONE || m_StreamCryptState == ECS_ENCRYPTING || m_StreamCryptState == ECS_UNKNOWN ) && (m_pfiSendBuffer.IsEmpty() || (m_bServerCrypt && m_NegotiatingState == ONS_BASIC_SERVER_DELAYEDSENDING)) ); } void CEncryptedStreamSocket::StartNegotiation(bool bOutgoing) { //printf("Starting socket negotiation\n"); if (!bOutgoing) { //printf("Incoming connection negotiation on %s\n", (const char*) unicode2char(GetPeer())); m_NegotiatingState = ONS_BASIC_CLIENTA_RANDOMPART; m_StreamCryptState = ECS_NEGOTIATING; m_nReceiveBytesWanted = 4; } else if (m_StreamCryptState == ECS_PENDING) { //printf("Socket is client.pending on negotiation\n"); CMemFile fileRequest(29); const uint8_t bySemiRandomNotProtocolMarker = GetSemiRandomNotProtocolMarker(); fileRequest.WriteUInt8(bySemiRandomNotProtocolMarker); fileRequest.WriteUInt32(m_nRandomKeyPart); fileRequest.WriteUInt32(MAGICVALUE_SYNC); const uint8_t bySupportedEncryptionMethod = ENM_OBFUSCATION; // we do not support any further encryption in this version fileRequest.WriteUInt8(bySupportedEncryptionMethod); fileRequest.WriteUInt8(bySupportedEncryptionMethod); // so we also prefer this one uint8_t byPadding = (uint8_t)(GetRandomUint8() % (thePrefs::GetCryptTCPPaddingLength() + 1)); fileRequest.WriteUInt8(byPadding); for (int i = 0; i < byPadding; i++) { fileRequest.WriteUInt8(GetRandomUint8()); } m_NegotiatingState = ONS_BASIC_CLIENTB_MAGICVALUE; m_StreamCryptState = ECS_NEGOTIATING; m_nReceiveBytesWanted = 4; SendNegotiatingData(fileRequest.GetRawBuffer(), (uint32_t)fileRequest.GetLength(), 5); } else if (m_StreamCryptState == ECS_PENDING_SERVER) { //printf("Socket is server.pending on negotiation\n"); CMemFile fileRequest(113); const uint8_t bySemiRandomNotProtocolMarker = GetSemiRandomNotProtocolMarker(); fileRequest.WriteUInt8(bySemiRandomNotProtocolMarker); m_cryptDHA.Randomize((CryptoPP::AutoSeededRandomPool&)GetRandomPool(), DHAGREEMENT_A_BITS); // our random a wxASSERT( m_cryptDHA.MinEncodedSize() <= DHAGREEMENT_A_BITS / 8 ); CryptoPP::Integer cryptDHPrime((byte*)dh768_p, PRIMESIZE_BYTES); // our fixed prime // calculate g^a % p CryptoPP::Integer cryptDHGexpAmodP = a_exp_b_mod_c(CryptoPP::Integer(2), m_cryptDHA, cryptDHPrime); wxASSERT( m_cryptDHA.MinEncodedSize() <= PRIMESIZE_BYTES ); // put the result into a buffer uint8_t aBuffer[PRIMESIZE_BYTES]; cryptDHGexpAmodP.Encode(aBuffer, PRIMESIZE_BYTES); fileRequest.Write(aBuffer, PRIMESIZE_BYTES); uint8 byPadding = (uint8)(GetRandomUint8() % 16); // add random padding fileRequest.WriteUInt8(byPadding); for (int i = 0; i < byPadding; i++) { fileRequest.WriteUInt8(GetRandomUint8()); } m_NegotiatingState = ONS_BASIC_SERVER_DHANSWER; m_StreamCryptState = ECS_NEGOTIATING; m_nReceiveBytesWanted = 96; SendNegotiatingData(fileRequest.GetRawBuffer(), (uint32_t)fileRequest.GetLength(), (uint32_t)fileRequest.GetLength()); } else { wxFAIL; m_StreamCryptState = ECS_NONE; return; } } int CEncryptedStreamSocket::Negotiate(const uint8* pBuffer, uint32 nLen) { uint32_t nRead = 0; wxASSERT( m_nReceiveBytesWanted > 0 ); //DumpMem(pBuffer, nLen, wxT("Negotiate buffer: ")); try { while (m_NegotiatingState != ONS_COMPLETE && m_nReceiveBytesWanted > 0) { if (m_nReceiveBytesWanted > 512) { wxFAIL; return 0; } const uint32_t nToRead = std::min(nLen - nRead, m_nReceiveBytesWanted); //printf("Reading %i bytes, add from %i position on %i position\n",nToRead, nRead, (int)m_pfiReceiveBuffer.GetPosition()); //DumpMem(pBuffer + nRead, nToRead, wxT("Recv Buffer: ")); m_pfiReceiveBuffer.Write(pBuffer + nRead, nToRead); nRead += nToRead; m_nReceiveBytesWanted -= nToRead; if (m_nReceiveBytesWanted > 0) { return nRead; } if (m_NegotiatingState != ONS_BASIC_CLIENTA_RANDOMPART && m_NegotiatingState != ONS_BASIC_SERVER_DHANSWER) { // We have the keys, decrypt //printf("We have the keys, so decrypt away on %s\n", (const char*) unicode2char(GetPeer())); m_pfiReceiveBuffer.Encrypt(); } m_pfiReceiveBuffer.Seek(0); switch (m_NegotiatingState) { case ONS_NONE: // would be a bug wxFAIL; return 0; case ONS_BASIC_CLIENTA_RANDOMPART: { //printf("We are on ONS_BASIC_CLIENTA_RANDOMPART, create the keys on %s\n", (const char*) unicode2char(GetPeer())); // This creates the send/receive keys. uint8_t achKeyData[21]; md4cpy(achKeyData, thePrefs::GetUserHash().GetHash()); m_pfiReceiveBuffer.Read(achKeyData + 17, 4); achKeyData[16] = MAGICVALUE_REQUESTER; //DumpMem(achKeyData, sizeof(achKeyData), wxT("ach:")); MD5Sum md5(achKeyData, sizeof(achKeyData)); //DumpMem(md5.GetRawHash(), 16, wxT("Md5:")); m_pfiReceiveBuffer.SetKey(md5); achKeyData[16] = MAGICVALUE_SERVER; md5.Calculate(achKeyData, sizeof(achKeyData)); m_pfiSendBuffer.SetKey(md5); m_NegotiatingState = ONS_BASIC_CLIENTA_MAGICVALUE; m_nReceiveBytesWanted = 4; break; } case ONS_BASIC_CLIENTA_MAGICVALUE: { // Check the magic value to confirm encryption works. //printf("Creating magic value on negotiate on %s\n", (const char*) unicode2char(GetPeer())); uint32_t dwValue = m_pfiReceiveBuffer.ReadUInt32(); if (dwValue == MAGICVALUE_SYNC) { // yup, the one or the other way it worked, this is an encrypted stream //DEBUG_ONLY( DebugLog(_T("Received proper magic value, clientIP: %s"), GetPeer()) ); // set the receiver key //printf("Magic value works on %s\n", (const char*) unicode2char(GetPeer())); m_NegotiatingState = ONS_BASIC_CLIENTA_METHODTAGSPADLEN; m_nReceiveBytesWanted = 3; } else { //printf("Wrong magic value: 0x%x != 0x%x on %s\n",dwValue, MAGICVALUE_SYNC, (const char*)unicode2char(GetPeer())); //DebugLogError(_T("CEncryptedStreamSocket: Received wrong magic value from clientIP %s on a supposly encrytped stream / Wrong Header"), GetPeer()); OnError(ERR_ENCRYPTION); return (-1); } break; } case ONS_BASIC_CLIENTA_METHODTAGSPADLEN: { // Get encryption method and padding. // Might fall back to padding process, but the bytes will be ignored. //printf("Getting encryption method on negotiation\n"); m_dbgbyEncryptionSupported = m_pfiReceiveBuffer.ReadUInt8(); m_dbgbyEncryptionRequested = m_pfiReceiveBuffer.ReadUInt8(); if (m_dbgbyEncryptionRequested != ENM_OBFUSCATION) { //printf("Unsupported encryption method!\n"); // AddDebugLogLine(DLP_LOW, false, _T("CEncryptedStreamSocket: Client %s preffered unsupported encryption method (%i)"), GetPeer(), m_dbgbyEncryptionRequested); } m_nReceiveBytesWanted = m_pfiReceiveBuffer.ReadUInt8(); m_NegotiatingState = ONS_BASIC_CLIENTA_PADDING; if (m_nReceiveBytesWanted > 0) { // No padding break; } } case ONS_BASIC_CLIENTA_PADDING: { //printf("Negotiating on padding, completing\n"); // ignore the random bytes, send the response, set status complete CMemFile fileResponse(26); fileResponse.WriteUInt32(MAGICVALUE_SYNC); const uint8_t bySelectedEncryptionMethod = ENM_OBFUSCATION; // we do not support any further encryption in this version, so no need to look which the other client preferred fileResponse.WriteUInt8(bySelectedEncryptionMethod); const uint8_t byPaddingLen = theApp->serverconnect->AwaitingTestFromIP(GetPeerInt()) ? 16 : (thePrefs::GetCryptTCPPaddingLength() + 1); uint8_t byPadding = (uint8_t)(GetRandomUint8() % byPaddingLen); fileResponse.WriteUInt8(byPadding); for (int i = 0; i < byPadding; i++) { fileResponse.WriteUInt8((uint8_t)rand()); } SendNegotiatingData(fileResponse.GetRawBuffer(), (uint32_t)fileResponse.GetLength()); m_NegotiatingState = ONS_COMPLETE; m_StreamCryptState = ECS_ENCRYPTING; //DEBUG_ONLY( DebugLog(_T("CEncryptedStreamSocket: Finished Obufscation handshake with client %s (incoming)"), GetPeer()) ); break; } case ONS_BASIC_CLIENTB_MAGICVALUE: { //printf("Negotiating on magic value\n"); if (m_pfiReceiveBuffer.ReadUInt32() != MAGICVALUE_SYNC) { //DebugLogError(_T("CEncryptedStreamSocket: EncryptedstreamSyncError: Client sent wrong Magic Value as answer, cannot complete handshake (%s)"), GetPeer()); OnError(ERR_ENCRYPTION); return (-1); } m_NegotiatingState = ONS_BASIC_CLIENTB_METHODTAGSPADLEN; m_nReceiveBytesWanted = 2; break; } case ONS_BASIC_CLIENTB_METHODTAGSPADLEN: { //printf("Negotiating on client B pad length\n"); m_dbgbyEncryptionMethodSet = m_pfiReceiveBuffer.ReadUInt8(); if (m_dbgbyEncryptionMethodSet != ENM_OBFUSCATION) { //DebugLogError( _T("CEncryptedStreamSocket: Client %s set unsupported encryption method (%i), handshake failed"), GetPeer(), m_dbgbyEncryptionMethodSet); OnError(ERR_ENCRYPTION); return (-1); } m_nReceiveBytesWanted = m_pfiReceiveBuffer.ReadUInt8(); m_NegotiatingState = ONS_BASIC_CLIENTB_PADDING; if (m_nReceiveBytesWanted > 0) { break; } } case ONS_BASIC_CLIENTB_PADDING: //printf("Negotiating on client B padding, handshake complete\n"); // ignore the random bytes, the handshake is complete m_NegotiatingState = ONS_COMPLETE; m_StreamCryptState = ECS_ENCRYPTING; //DEBUG_ONLY( DebugLog(_T("CEncryptedStreamSocket: Finished Obufscation handshake with client %s (outgoing)"), GetPeer()) ); break; case ONS_BASIC_SERVER_DHANSWER: { wxASSERT( !m_cryptDHA.IsZero() ); uint8_t aBuffer[PRIMESIZE_BYTES + 1]; m_pfiReceiveBuffer.Read(aBuffer, PRIMESIZE_BYTES); CryptoPP::Integer cryptDHAnswer((byte*)aBuffer, PRIMESIZE_BYTES); CryptoPP::Integer cryptDHPrime((byte*)dh768_p, PRIMESIZE_BYTES); // our fixed prime CryptoPP::Integer cryptResult = a_exp_b_mod_c(cryptDHAnswer, m_cryptDHA, cryptDHPrime); m_cryptDHA = 0; //DEBUG_ONLY( ZeroMemory(aBuffer, sizeof(aBuffer)) ); wxASSERT( cryptResult.MinEncodedSize() <= PRIMESIZE_BYTES ); // create the keys cryptResult.Encode(aBuffer, PRIMESIZE_BYTES); aBuffer[PRIMESIZE_BYTES] = MAGICVALUE_REQUESTER; MD5Sum md5(aBuffer, sizeof(aBuffer)); m_pfiSendBuffer.SetKey(md5); aBuffer[PRIMESIZE_BYTES] = MAGICVALUE_SERVER; md5.Calculate(aBuffer, sizeof(aBuffer)); m_pfiReceiveBuffer.SetKey(md5); m_NegotiatingState = ONS_BASIC_SERVER_MAGICVALUE; m_nReceiveBytesWanted = 4; break; } case ONS_BASIC_SERVER_MAGICVALUE: { uint32_t dwValue = m_pfiReceiveBuffer.ReadUInt32(); if (dwValue == MAGICVALUE_SYNC) { // yup, the one or the other way it worked, this is an encrypted stream //DebugLog(_T("Received proper magic value after DH-Agreement from Serverconnection IP: %s"), GetPeer()); // set the receiver key m_NegotiatingState = ONS_BASIC_SERVER_METHODTAGSPADLEN; m_nReceiveBytesWanted = 3; } else { //DebugLogError(_T("CEncryptedStreamSocket: Received wrong magic value after DH-Agreement from Serverconnection"), GetPeer()); OnError(ERR_ENCRYPTION); return (-1); } break; } case ONS_BASIC_SERVER_METHODTAGSPADLEN: m_dbgbyEncryptionSupported = m_pfiReceiveBuffer.ReadUInt8(); m_dbgbyEncryptionRequested = m_pfiReceiveBuffer.ReadUInt8(); if (m_dbgbyEncryptionRequested != ENM_OBFUSCATION) { // AddDebugLogLine(DLP_LOW, false, _T("CEncryptedStreamSocket: Server %s preffered unsupported encryption method (%i)"), GetPeer(), m_dbgbyEncryptionRequested); } m_nReceiveBytesWanted = m_pfiReceiveBuffer.ReadUInt8(); m_NegotiatingState = ONS_BASIC_SERVER_PADDING; if (m_nReceiveBytesWanted > 0) { break; } case ONS_BASIC_SERVER_PADDING: { // ignore the random bytes (they are decrypted already), send the response, set status complete CMemFile fileResponse(26); fileResponse.WriteUInt32(MAGICVALUE_SYNC); const uint8_t bySelectedEncryptionMethod = ENM_OBFUSCATION; // we do not support any further encryption in this version, so no need to look which the other client preferred fileResponse.WriteUInt8(bySelectedEncryptionMethod); // Server callback connection only allows 16 bytes of padding. uint8_t byPadding = (uint8_t)(GetRandomUint8() % 16); fileResponse.WriteUInt8(byPadding); for (int i = 0; i < byPadding; i++) { fileResponse.WriteUInt8((uint8_t)rand()); } m_NegotiatingState = ONS_BASIC_SERVER_DELAYEDSENDING; SendNegotiatingData(fileResponse.GetRawBuffer(), (uint32_t)fileResponse.GetLength(), 0, true); // don't actually send it right now, store it in our sendbuffer m_StreamCryptState = ECS_ENCRYPTING; //DEBUG_ONLY( DebugLog(_T("CEncryptedStreamSocket: Finished DH Obufscation handshake with Server %s"), GetPeer()) ); break; } default: wxFAIL; } m_pfiReceiveBuffer.ResetData(); } return nRead; } catch(...) { // can only be caused by a bug in negationhandling, not by the datastream //error->Delete(); //printf("Bug on negotiation?\n"); wxFAIL; OnError(ERR_ENCRYPTION); m_pfiReceiveBuffer.ResetData(); return (-1); } } int CEncryptedStreamSocket::SendNegotiatingData(const void* lpBuf, uint32_t nBufLen, uint32_t nStartCryptFromByte, bool bDelaySend) { wxASSERT( m_StreamCryptState == ECS_NEGOTIATING || m_StreamCryptState == ECS_ENCRYPTING ); wxASSERT( nStartCryptFromByte <= nBufLen ); wxASSERT( m_NegotiatingState == ONS_BASIC_SERVER_DELAYEDSENDING || !bDelaySend ); //printf("Send negotiation data on %s\n", (const char*) unicode2char(GetPeer())); uint8_t* pBuffer = NULL; bool bProcess = false; if (lpBuf != NULL) { pBuffer = new uint8_t[nBufLen]; if (pBuffer == NULL) { throw CMuleException(wxT("Memory exception"), wxT("Memory exception on TCP encrypted socket")); } if (nStartCryptFromByte > 0) { memcpy(pBuffer, lpBuf, nStartCryptFromByte); } if (nBufLen - nStartCryptFromByte > 0) { //printf("Crypting negotiation data on %s starting on byte %i\n", (const char*) unicode2char(GetPeer()), nStartCryptFromByte); //DumpMem(lpBuf, nBufLen, wxT("Pre-encryption:")); m_pfiSendBuffer.RC4Crypt((uint8*)lpBuf + nStartCryptFromByte, pBuffer + nStartCryptFromByte, nBufLen - nStartCryptFromByte); //DumpMem(pBuffer, nBufLen, wxT("Post-encryption:")); } if (!m_pfiSendBuffer.IsEmpty()) { // we already have data pending. Attach it and try to send if (m_NegotiatingState == ONS_BASIC_SERVER_DELAYEDSENDING) { m_NegotiatingState = ONS_COMPLETE; } else { wxFAIL; } m_pfiSendBuffer.Append(pBuffer, nBufLen); delete[] pBuffer; pBuffer = NULL; nStartCryptFromByte = 0; bProcess = true; // we want to try to send it right now } } if (lpBuf == NULL || bProcess) { // this call is for processing pending data if (m_pfiSendBuffer.IsEmpty() || nStartCryptFromByte != 0) { wxFAIL; return 0; // or not } nBufLen = (uint32)m_pfiSendBuffer.GetLength(); pBuffer = m_pfiSendBuffer.Detach(); } wxASSERT( m_pfiSendBuffer.IsEmpty() ); uint32_t result = 0; if (!bDelaySend) { //printf("Writing negotiation data on %s: ", (const char*) unicode2char(GetPeer())); result = CSocketClientProxy::Write(pBuffer, nBufLen); //printf("Wrote %i bytes\n",result); } if (result == (uint32_t)SOCKET_ERROR || bDelaySend) { m_pfiSendBuffer.Write(pBuffer, nBufLen); delete[] pBuffer; return result; } else { if (result < nBufLen) { // Store the partial data pending //printf("Partial negotiation pending on %s\n", (const char*) unicode2char(GetPeer())); m_pfiSendBuffer.Write(pBuffer + result, nBufLen - result); } delete[] pBuffer; return result; } } uint8_t CEncryptedStreamSocket::GetSemiRandomNotProtocolMarker() const { uint8_t bySemiRandomNotProtocolMarker = 0; bool bOk = false; for (int i = 0; i < 128; i++) { bySemiRandomNotProtocolMarker = GetRandomUint8(); switch (bySemiRandomNotProtocolMarker) { // not allowed values case OP_EDONKEYPROT: case OP_PACKEDPROT: case OP_EMULEPROT: break; default: bOk = true; } if (bOk) { break; } } if (!bOk) { // either we have _real_ bad luck or the randomgenerator is a bit messed up wxFAIL; bySemiRandomNotProtocolMarker = 0x01; } return bySemiRandomNotProtocolMarker; } amule_2.3.1+git20151120.0023527bc2.orig/src/EncryptedStreamSocket.h0000644000175000017500000001113212611472361022723 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // /* This class supports obfuscation and encryption for a *Mule tcp connection. Right now only basic obfusication is supported, but this can be expanded, as their is a dedicated handshake to negotiate the encryption method used. Please note, even if obfuscation uses encryption methods, it does not fulfill cryptographic standards since it doesn't use secret (and for rc4 important: unique) keys */ #ifndef __ENCRYPTEDSTREAMSOCKET_H__ #define __ENCRYPTEDSTREAMSOCKET_H__ #include #include // cryptoPP used for DH integer calculations #include "CryptoPP_Inc.h" // Needed for Crypto functions #include "Proxy.h" #include "Types.h" #include "RC4Encrypt.h" #define ERR_WRONGHEADER 0x01 #define ERR_TOOBIG 0x02 #define ERR_ENCRYPTION 0x03 #define ERR_ENCRYPTION_NOTALLOWED 0x04 enum EStreamCryptState { ECS_NONE = 0, // Disabled or not available ECS_UNKNOWN, // Incoming connection, will test the first incoming data for encrypted protocol ECS_PENDING, // Outgoing connection, will start sending encryption protocol ECS_PENDING_SERVER, // Outgoing serverconnection, will start sending encryption protocol ECS_NEGOTIATING, // Encryption supported, handshake still uncompleted ECS_ENCRYPTING // Encryption enabled }; enum ENegotiatingState { ONS_NONE, ONS_BASIC_CLIENTA_RANDOMPART, ONS_BASIC_CLIENTA_MAGICVALUE, ONS_BASIC_CLIENTA_METHODTAGSPADLEN, ONS_BASIC_CLIENTA_PADDING, ONS_BASIC_CLIENTB_MAGICVALUE, ONS_BASIC_CLIENTB_METHODTAGSPADLEN, ONS_BASIC_CLIENTB_PADDING, ONS_BASIC_SERVER_DHANSWER, ONS_BASIC_SERVER_MAGICVALUE, ONS_BASIC_SERVER_METHODTAGSPADLEN, ONS_BASIC_SERVER_PADDING, ONS_BASIC_SERVER_DELAYEDSENDING, ONS_COMPLETE }; enum EEncryptionMethods { ENM_OBFUSCATION = 0x00 }; class CEncryptedStreamSocket : public CSocketClientProxy { public: CEncryptedStreamSocket(muleSocketFlags flags = MULE_SOCKET_NONE, const CProxyData *proxyData = NULL); virtual ~CEncryptedStreamSocket(); void SetConnectionEncryption(bool bEnabled, const uint8_t *pTargetClientHash, bool bServerConnection); //! Indicates how many bytes were received including obfuscation, //! so that the parent knows if the receive limit was reached uint32_t GetRealReceivedBytes() const { return m_nObfusicationBytesReceived; } bool IsObfusicating() const { return m_StreamCryptState == ECS_ENCRYPTING && m_EncryptionMethod == ENM_OBFUSCATION; } bool IsServerCryptEnabledConnection() const { return m_bServerCrypt; } uint8_t m_dbgbyEncryptionSupported; uint8_t m_dbgbyEncryptionRequested; uint8_t m_dbgbyEncryptionMethodSet; protected: int Write(const void* lpBuf, uint32_t nBufLen); int Read(void* lpBuf, uint32_t nBufLen); virtual void OnError(int /*nErrorCode*/) {}; virtual void OnSend(int nErrorCode); void CryptPrepareSendData(uint8_t* pBuffer, uint32_t nLen); bool IsEncryptionLayerReady(); uint8_t GetSemiRandomNotProtocolMarker() const; uint32_t m_nObfusicationBytesReceived; EStreamCryptState m_StreamCryptState; EEncryptionMethods m_EncryptionMethod; bool m_bFullReceive; bool m_bServerCrypt; private: int Negotiate(const uint8_t* pBuffer, uint32_t nLen); void StartNegotiation(bool bOutgoing); int SendNegotiatingData(const void *lpBuf, uint32_t nBufLen, uint32_t nStartCryptFromByte = 0, bool bDelaySend = false); ENegotiatingState m_NegotiatingState; CRC4EncryptableBuffer m_pfiReceiveBuffer; uint32_t m_nReceiveBytesWanted; CRC4EncryptableBuffer m_pfiSendBuffer; uint32_t m_nRandomKeyPart; CryptoPP::Integer m_cryptDHA; }; #endif // __ENCRYPTEDSTREAMSOCKET_H__ amule_2.3.1+git20151120.0023527bc2.orig/src/ExternalConn.cpp0000644000175000017500000021242712611472361021406 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 Kry ( elkry@sourceforge.net / http://www.amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2008-2011 Froenchenko Leonid (lfroen@gmail.com) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifdef HAVE_CONFIG_H #include "config.h" // Needed for VERSION #endif #include // Needed for CECSocket #include // Needed for CFormat #include #include #include "ExternalConn.h" // Interface declarations #include "updownclient.h" // Needed for CUpDownClient #include "Server.h" // Needed for CServer #include "ServerList.h" // Needed for CServerList #include "PartFile.h" // Needed for CPartFile #include "ServerConnect.h" // Needed for CServerConnect #include "UploadQueue.h" // Needed for CUploadQueue #include "amule.h" // Needed for theApp #include "SearchList.h" // Needed for GetSearchResults #include "ClientList.h" #include "Preferences.h" // Needed for CPreferences #include "Logger.h" #include "GuiEvents.h" // Needed for Notify_* macros #include "Statistics.h" // Needed for theStats #include "KnownFileList.h" // Needed for CKnownFileList #include "Friend.h" #include "FriendList.h" #include "RandomFunctions.h" #include "kademlia/kademlia/Kademlia.h" #include "kademlia/kademlia/UDPFirewallTester.h" #include "Statistics.h" //-------------------- File_Encoder -------------------- /* * Encode 'obtained parts' info to be sent to remote gui */ class CKnownFile_Encoder { // number of sources for each part for progress bar colouring RLE_Data m_enc_data; protected: const CKnownFile *m_file; public: CKnownFile_Encoder(const CKnownFile *file = 0) { m_file = file; } virtual ~CKnownFile_Encoder() {} virtual void Encode(CECTag *parent_tag); virtual void ResetEncoder() { m_enc_data.ResetEncoder(); } virtual void SetShared() { } virtual bool IsShared() { return true; } virtual bool IsPartFile_Encoder() { return false; } const CKnownFile * GetFile() { return m_file; } }; /*! * PartStatus strings and gap lists are quite long - RLE encoding will help. * * Instead of sending each time full part-status string, send * RLE encoded difference from previous one. * * PartFileEncoderData class is used for decode only, * while CPartFile_Encoder is used for encode only. */ class CPartFile_Encoder : public CKnownFile_Encoder { // blocks requested for download RLE_Data m_req_status; // gap list RLE_Data m_gap_status; // source names SourcenameItemMap m_sourcenameItemMap; // counter for unique source name ids int m_sourcenameID; // not all part files are shared (only when at least one part is complete) bool m_shared; // cast inherited member to CPartFile const CPartFile * m_PartFile() { wxCHECK(m_file->IsCPartFile(), NULL); return static_cast(m_file); } public: // encoder side CPartFile_Encoder(const CPartFile *file = 0) : CKnownFile_Encoder(file) { m_sourcenameID = 0; m_shared = false; } virtual ~CPartFile_Encoder() {} // encode - take data from m_file virtual void Encode(CECTag *parent_tag); // Encoder may reset history if full info requested virtual void ResetEncoder(); virtual void SetShared() { m_shared = true; } virtual bool IsShared() { return m_shared; } virtual bool IsPartFile_Encoder() { return true; } }; class CFileEncoderMap : public std::map { typedef std::set IDSet; public: ~CFileEncoderMap(); void UpdateEncoders(); }; CFileEncoderMap::~CFileEncoderMap() { // DeleteContents() causes infinite recursion here! for (iterator it = begin(); it != end(); ++it) { delete it->second; } } // Check if encoder contains files that are no longer used // or if we have new files without encoder yet. void CFileEncoderMap::UpdateEncoders() { IDSet curr_files, dead_files; // Downloads std::vector downloads; theApp->downloadqueue->CopyFileList(downloads, true); for (uint32 i = downloads.size(); i--;) { uint32 id = downloads[i]->ECID(); curr_files.insert(id); if (!count(id)) { (*this)[id] = new CPartFile_Encoder(downloads[i]); } } // Shares std::vector shares; theApp->sharedfiles->CopyFileList(shares); for (uint32 i = shares.size(); i--;) { uint32 id = shares[i]->ECID(); // Check if it is already there. // The curr_files.count(id) is enough, the IsCPartFile() is just a speedup. if (shares[i]->IsCPartFile() && curr_files.count(id)) { (*this)[id]->SetShared(); continue; } curr_files.insert(id); if (!count(id)) { (*this)[id] = new CKnownFile_Encoder(shares[i]); } } // Check for removed files, and store them in a set for deletion. // (std::map documentation is unclear if a construct like // iterator to_del = it++; erase(to_del) ; // works or invalidates it too.) for (iterator it = begin(); it != end(); ++it) { if (!curr_files.count(it->first)) { dead_files.insert(it->first); } } // then delete them for (IDSet::iterator it = dead_files.begin(); it != dead_files.end(); ++it) { iterator it2 = find(*it); delete it2->second; erase(it2); } } //-------------------- CECServerSocket -------------------- class CECServerSocket : public CECMuleSocket { public: CECServerSocket(ECNotifier *notifier); virtual ~CECServerSocket(); virtual const CECPacket *OnPacketReceived(const CECPacket *packet, uint32 trueSize); virtual void OnLost(); virtual void WriteDoneAndQueueEmpty(); void ResetLog() { m_LoggerAccess.Reset(); } private: ECNotifier *m_ec_notifier; const CECPacket *Authenticate(const CECPacket *); enum { CONN_INIT, CONN_SALT_SENT, CONN_ESTABLISHED, CONN_FAILED } m_conn_state; uint64_t m_passwd_salt; CLoggerAccess m_LoggerAccess; CFileEncoderMap m_FileEncoder; CObjTagMap m_obj_tagmap; CECPacket *ProcessRequest2(const CECPacket *request); virtual bool IsAuthorized() { return m_conn_state == CONN_ESTABLISHED; } }; CECServerSocket::CECServerSocket(ECNotifier *notifier) : CECMuleSocket(true), m_conn_state(CONN_INIT), m_passwd_salt(GetRandomUint64()) { wxASSERT(theApp->ECServerHandler); theApp->ECServerHandler->AddSocket(this); m_ec_notifier = notifier; } CECServerSocket::~CECServerSocket() { wxASSERT(theApp->ECServerHandler); theApp->ECServerHandler->RemoveSocket(this); } const CECPacket *CECServerSocket::OnPacketReceived(const CECPacket *packet, uint32 trueSize) { packet->DebugPrint(true, trueSize); const CECPacket *reply = NULL; if (m_conn_state == CONN_FAILED) { // Client didn't close the socket when authentication failed. AddLogLineN(_("Client sent packet after authentication failed.")); CloseSocket(); } if (m_conn_state != CONN_ESTABLISHED) { // This is called twice: // 1) send salt // 2) verify password reply = Authenticate(packet); } else { reply = ProcessRequest2(packet); } return reply; } void CECServerSocket::OnLost() { AddLogLineN(_("External connection closed.")); theApp->ECServerHandler->m_ec_notifier->Remove_EC_Client(this); DestroySocket(); } void CECServerSocket::WriteDoneAndQueueEmpty() { if ( HaveNotificationSupport() && (m_conn_state == CONN_ESTABLISHED) ) { CECPacket *packet = m_ec_notifier->GetNextPacket(this); if ( packet ) { SendPacket(packet); } } else { //printf("[EC] %p: WriteDoneAndQueueEmpty but notification disabled\n", this); } } //-------------------- ExternalConn -------------------- enum { // id for sockets SERVER_ID = 1000 }; BEGIN_EVENT_TABLE(ExternalConn, wxEvtHandler) EVT_SOCKET(SERVER_ID, ExternalConn::OnServerEvent) END_EVENT_TABLE() ExternalConn::ExternalConn(amuleIPV4Address addr, wxString *msg) { wxString msgLocal; m_ECServer = NULL; // Are we allowed to accept External Connections? if ( thePrefs::AcceptExternalConnections() ) { // We must have a valid password, otherwise we will not allow EC connections if (thePrefs::ECPassword().IsEmpty()) { *msg += wxT("External connections disabled due to empty password!\n"); AddLogLineC(_("External connections disabled due to empty password!")); return; } // Create the socket m_ECServer = new CExternalConnListener(addr, MULE_SOCKET_REUSEADDR, this); m_ECServer->SetEventHandler(*this, SERVER_ID); m_ECServer->SetNotify(wxSOCKET_CONNECTION_FLAG); m_ECServer->Notify(true); int port = addr.Service(); wxString ip = addr.IPAddress(); if (m_ECServer->IsOk()) { msgLocal = CFormat(wxT("*** TCP socket (ECServer) listening on %s:%d")) % ip % port; *msg += msgLocal + wxT("\n"); AddLogLineN(msgLocal); } else { msgLocal = CFormat(wxT("Could not listen for external connections at %s:%d!")) % ip % port; *msg += msgLocal + wxT("\n"); AddLogLineN(msgLocal); } } else { *msg += wxT("External connections disabled in config file\n"); AddLogLineN(_("External connections disabled in config file")); } m_ec_notifier = new ECNotifier(); } ExternalConn::~ExternalConn() { KillAllSockets(); delete m_ECServer; delete m_ec_notifier; } void ExternalConn::AddSocket(CECServerSocket *s) { wxASSERT(s); socket_list.insert(s); } void ExternalConn::RemoveSocket(CECServerSocket *s) { wxASSERT(s); socket_list.erase(s); } void ExternalConn::KillAllSockets() { AddDebugLogLineN(logGeneral, CFormat(wxT("ExternalConn::KillAllSockets(): %d sockets to destroy.")) % socket_list.size()); SocketSet::iterator it = socket_list.begin(); while (it != socket_list.end()) { CECServerSocket *s = *(it++); s->Close(); s->Destroy(); } socket_list.clear(); } void ExternalConn::ResetAllLogs() { SocketSet::iterator it = socket_list.begin(); while (it != socket_list.end()) { CECServerSocket *s = *(it++); s->ResetLog(); } } void ExternalConn::OnServerEvent(wxSocketEvent& WXUNUSED(event)) { m_ECServer->OnAccept(); } void CExternalConnListener::OnAccept() { CECServerSocket *sock = new CECServerSocket(m_conn->m_ec_notifier); // Accept new connection if there is one in the pending // connections queue, else exit. We use Accept(FALSE) for // non-blocking accept (although if we got here, there // should ALWAYS be a pending connection). if (AcceptWith(*sock, false)) { AddLogLineN(_("New external connection accepted")); } else { delete sock; AddLogLineN(_("ERROR: couldn't accept a new external connection")); } } // // Authentication // const CECPacket *CECServerSocket::Authenticate(const CECPacket *request) { CECPacket *response; if (request == NULL) { return new CECPacket(EC_OP_AUTH_FAIL); } // Password must be specified if we are to allow remote connections if ( thePrefs::ECPassword().IsEmpty() ) { AddLogLineC(_("External connection refused due to empty password in preferences!")); return new CECPacket(EC_OP_AUTH_FAIL); } if ((m_conn_state == CONN_INIT) && (request->GetOpCode() == EC_OP_AUTH_REQ) ) { // cppcheck-suppress unreadVariable const CECTag *clientName = request->GetTagByName(EC_TAG_CLIENT_NAME); // cppcheck-suppress unreadVariable const CECTag *clientVersion = request->GetTagByName(EC_TAG_CLIENT_VERSION); AddLogLineN(CFormat( _("Connecting client: %s %s") ) % ( clientName ? clientName->GetStringData() : wxString(_("Unknown")) ) % ( clientVersion ? clientVersion->GetStringData() : wxString(_("Unknown version")) ) ); const CECTag *protocol = request->GetTagByName(EC_TAG_PROTOCOL_VERSION); #ifdef EC_VERSION_ID // For SVN versions, both client and server must use SVNDATE, and they must be the same CMD4Hash vhash; if (!vhash.Decode(wxT(EC_VERSION_ID))) { response = new CECPacket(EC_OP_AUTH_FAIL); response->AddTag(CECTag(EC_TAG_STRING, wxT("Fatal error, version hash is not a valid MD4-hash."))); } else if (!request->GetTagByName(EC_TAG_VERSION_ID) || request->GetTagByNameSafe(EC_TAG_VERSION_ID)->GetMD4Data() != vhash) { response = new CECPacket(EC_OP_AUTH_FAIL); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Incorrect EC version ID, there might be binary incompatibility. Use core and remote from same snapshot."))); #else // For release versions, we don't want to allow connections from any arbitrary SVN client. if (request->GetTagByName(EC_TAG_VERSION_ID)) { response = new CECPacket(EC_OP_AUTH_FAIL); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("You cannot connect to a release version from an arbitrary development snapshot! *sigh* possible crash prevented"))); #endif } else if (protocol != NULL) { uint16 proto_version = protocol->GetInt(); if (proto_version == EC_CURRENT_PROTOCOL_VERSION) { response = new CECPacket(EC_OP_AUTH_SALT); response->AddTag(CECTag(EC_TAG_PASSWD_SALT, m_passwd_salt)); m_conn_state = CONN_SALT_SENT; // // So far ok, check capabilities of client // if (request->GetTagByName(EC_TAG_CAN_ZLIB)) { m_my_flags |= EC_FLAG_ZLIB; } if (request->GetTagByName(EC_TAG_CAN_UTF8_NUMBERS)) { m_my_flags |= EC_FLAG_UTF8_NUMBERS; } m_haveNotificationSupport = request->GetTagByName(EC_TAG_CAN_NOTIFY) != NULL; AddDebugLogLineN(logEC, CFormat(wxT("Client capabilities: ZLIB: %s UTF8 numbers: %s Push notification: %s") ) % ((m_my_flags & EC_FLAG_ZLIB) ? wxT("yes") : wxT("no")) % ((m_my_flags & EC_FLAG_UTF8_NUMBERS) ? wxT("yes") : wxT("no")) % (m_haveNotificationSupport ? wxT("yes") : wxT("no"))); } else { response = new CECPacket(EC_OP_AUTH_FAIL); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Invalid protocol version.") + CFormat(wxT("( %#.4x != %#.4x )")) % proto_version % (uint16_t)EC_CURRENT_PROTOCOL_VERSION)); } } else { response = new CECPacket(EC_OP_AUTH_FAIL); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Missing protocol version tag."))); } } else if ((m_conn_state == CONN_SALT_SENT) && (request->GetOpCode() == EC_OP_AUTH_PASSWD)) { const CECTag *passwd = request->GetTagByName(EC_TAG_PASSWD_HASH); CMD4Hash passh; if (!passh.Decode(thePrefs::ECPassword())) { wxString err = wxTRANSLATE("Authentication failed: invalid hash specified as EC password."); AddLogLineN(wxString(wxGetTranslation(err)) + wxT(" ") + thePrefs::ECPassword()); response = new CECPacket(EC_OP_AUTH_FAIL); response->AddTag(CECTag(EC_TAG_STRING, err)); } else { wxString saltHash = MD5Sum(CFormat(wxT("%lX")) % m_passwd_salt).GetHash(); wxString saltStr = CFormat(wxT("%lX")) % m_passwd_salt; passh.Decode(MD5Sum(thePrefs::ECPassword().Lower() + saltHash).GetHash()); if (passwd && passwd->GetMD4Data() == passh) { response = new CECPacket(EC_OP_AUTH_OK); response->AddTag(CECTag(EC_TAG_SERVER_VERSION, wxT(VERSION))); } else { wxString err; if (passwd) { err = wxTRANSLATE("Authentication failed: wrong password."); } else { err = wxTRANSLATE("Authentication failed: missing password."); } response = new CECPacket(EC_OP_AUTH_FAIL); response->AddTag(CECTag(EC_TAG_STRING, err)); AddLogLineN(wxGetTranslation(err)); } } } else { response = new CECPacket(EC_OP_AUTH_FAIL); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Invalid request, please authenticate first."))); } if (response->GetOpCode() == EC_OP_AUTH_OK) { m_conn_state = CONN_ESTABLISHED; AddLogLineN(_("Access granted.")); // Establish notification handler if client supports it if (HaveNotificationSupport()) { theApp->ECServerHandler->m_ec_notifier->Add_EC_Client(this); } } else if (response->GetOpCode() == EC_OP_AUTH_FAIL) { // Log message sent to client if (response->GetFirstTagSafe()->IsString()) { AddLogLineN(CFormat(_("Sent error message \"%s\" to client.")) % wxGetTranslation(response->GetFirstTagSafe()->GetStringData())); } // Access denied! AddLogLineN(CFormat(_("Unauthorized access attempt from %s. Connection closed.")) % GetPeer() ); m_conn_state = CONN_FAILED; } return response; } // Make a Logger tag (if there are any logging messages) and add it to the response static void AddLoggerTag(CECPacket *response, CLoggerAccess &LoggerAccess) { if (LoggerAccess.HasString()) { CECEmptyTag tag(EC_TAG_STATS_LOGGER_MESSAGE); // Tag structure is fix: tag carries nothing, inside are the strings // maximum of 200 log lines per message int entries = 0; wxString line; while (entries < 200 && LoggerAccess.GetString(line)) { tag.AddTag(CECTag(EC_TAG_STRING, line)); entries++; } response->AddTag(tag); //printf("send Log tag %d %d\n", FirstEntry, entries); } } static CECPacket *Get_EC_Response_StatRequest(const CECPacket *request, CLoggerAccess &LoggerAccess) { CECPacket *response = new CECPacket(EC_OP_STATS); switch (request->GetDetailLevel()) { case EC_DETAIL_FULL: // This is not an actual INC_UPDATE. // amulegui only sets the detail level of the stats package to EC_DETAIL_INC_UPDATE // so that the included conn state tag is created the way it is needed here. case EC_DETAIL_INC_UPDATE: response->AddTag(CECTag(EC_TAG_STATS_UP_OVERHEAD, (uint32)theStats::GetUpOverheadRate())); response->AddTag(CECTag(EC_TAG_STATS_DOWN_OVERHEAD, (uint32)theStats::GetDownOverheadRate())); response->AddTag(CECTag(EC_TAG_STATS_BANNED_COUNT, /*(uint32)*/theStats::GetBannedCount())); AddLoggerTag(response, LoggerAccess); // Needed only for the remote tray icon context menu response->AddTag(CECTag(EC_TAG_STATS_TOTAL_SENT_BYTES, theStats::GetTotalSentBytes())); response->AddTag(CECTag(EC_TAG_STATS_TOTAL_RECEIVED_BYTES, theStats::GetTotalReceivedBytes())); response->AddTag(CECTag(EC_TAG_STATS_SHARED_FILE_COUNT, theStats::GetSharedFileCount())); case EC_DETAIL_WEB: case EC_DETAIL_CMD: response->AddTag(CECTag(EC_TAG_STATS_UL_SPEED, (uint32)theStats::GetUploadRate())); response->AddTag(CECTag(EC_TAG_STATS_DL_SPEED, (uint32)(theStats::GetDownloadRate()))); response->AddTag(CECTag(EC_TAG_STATS_UL_SPEED_LIMIT, (uint32)(thePrefs::GetMaxUpload()*1024.0))); response->AddTag(CECTag(EC_TAG_STATS_DL_SPEED_LIMIT, (uint32)(thePrefs::GetMaxDownload()*1024.0))); response->AddTag(CECTag(EC_TAG_STATS_UL_QUEUE_LEN, /*(uint32)*/theStats::GetWaitingUserCount())); response->AddTag(CECTag(EC_TAG_STATS_TOTAL_SRC_COUNT, /*(uint32)*/theStats::GetFoundSources())); // User/Filecounts { uint32 totaluser = 0, totalfile = 0; theApp->serverlist->GetUserFileStatus( totaluser, totalfile ); response->AddTag(CECTag(EC_TAG_STATS_ED2K_USERS, totaluser)); response->AddTag(CECTag(EC_TAG_STATS_KAD_USERS, Kademlia::CKademlia::GetKademliaUsers())); response->AddTag(CECTag(EC_TAG_STATS_ED2K_FILES, totalfile)); response->AddTag(CECTag(EC_TAG_STATS_KAD_FILES, Kademlia::CKademlia::GetKademliaFiles())); response->AddTag(CECTag(EC_TAG_STATS_KAD_NODES, CStatistics::GetKadNodes())); } // Kad stats if (Kademlia::CKademlia::IsConnected()) { response->AddTag(CECTag(EC_TAG_STATS_KAD_FIREWALLED_UDP, Kademlia::CUDPFirewallTester::IsFirewalledUDP(true))); response->AddTag(CECTag(EC_TAG_STATS_KAD_INDEXED_SOURCES, Kademlia::CKademlia::GetIndexed()->m_totalIndexSource)); response->AddTag(CECTag(EC_TAG_STATS_KAD_INDEXED_KEYWORDS, Kademlia::CKademlia::GetIndexed()->m_totalIndexKeyword)); response->AddTag(CECTag(EC_TAG_STATS_KAD_INDEXED_NOTES, Kademlia::CKademlia::GetIndexed()->m_totalIndexNotes)); response->AddTag(CECTag(EC_TAG_STATS_KAD_INDEXED_LOAD, Kademlia::CKademlia::GetIndexed()->m_totalIndexLoad)); response->AddTag(CECTag(EC_TAG_STATS_KAD_IP_ADRESS, wxUINT32_SWAP_ALWAYS(Kademlia::CKademlia::GetPrefs()->GetIPAddress()))); response->AddTag(CECTag(EC_TAG_STATS_KAD_IN_LAN_MODE, Kademlia::CKademlia::IsRunningInLANMode())); response->AddTag(CECTag(EC_TAG_STATS_BUDDY_STATUS, theApp->clientlist->GetBuddyStatus())); uint32 BuddyIP = 0; uint16 BuddyPort = 0; CUpDownClient * Buddy = theApp->clientlist->GetBuddy(); if (Buddy) { BuddyIP = Buddy->GetIP(); BuddyPort = Buddy->GetUDPPort(); } response->AddTag(CECTag(EC_TAG_STATS_BUDDY_IP, BuddyIP)); response->AddTag(CECTag(EC_TAG_STATS_BUDDY_PORT, BuddyPort)); } case EC_DETAIL_UPDATE: break; }; return response; } static CECPacket *Get_EC_Response_GetSharedFiles(const CECPacket *request, CFileEncoderMap &encoders) { wxASSERT(request->GetOpCode() == EC_OP_GET_SHARED_FILES); CECPacket *response = new CECPacket(EC_OP_SHARED_FILES); EC_DETAIL_LEVEL detail_level = request->GetDetailLevel(); // // request can contain list of queried items CTagSet queryitems(request); encoders.UpdateEncoders(); for (uint32 i = 0; i < theApp->sharedfiles->GetFileCount(); ++i) { const CKnownFile *cur_file = theApp->sharedfiles->GetFileByIndex(i); if ( !cur_file || (!queryitems.empty() && !queryitems.count(cur_file->ECID())) ) { continue; } CEC_SharedFile_Tag filetag(cur_file, detail_level); CKnownFile_Encoder *enc = encoders[cur_file->ECID()]; if ( detail_level != EC_DETAIL_UPDATE ) { enc->ResetEncoder(); } enc->Encode(&filetag); response->AddTag(filetag); } return response; } static CECPacket *Get_EC_Response_GetUpdate(CFileEncoderMap &encoders, CObjTagMap &tagmap) { CECPacket *response = new CECPacket(EC_OP_SHARED_FILES); encoders.UpdateEncoders(); for (CFileEncoderMap::iterator it = encoders.begin(); it != encoders.end(); ++it) { const CKnownFile *cur_file = it->second->GetFile(); CValueMap &valuemap = tagmap.GetValueMap(cur_file->ECID()); // Completed cleared Partfiles are still stored as CPartfile, // but encoded as KnownFile, so we have to check the encoder type // instead of the file type. if (it->second->IsPartFile_Encoder()) { CEC_PartFile_Tag filetag(static_cast(cur_file), EC_DETAIL_INC_UPDATE, &valuemap); // Add information if partfile is shared filetag.AddTag(EC_TAG_PARTFILE_SHARED, it->second->IsShared(), &valuemap); CPartFile_Encoder * enc = static_cast(encoders[cur_file->ECID()]); enc->Encode(&filetag); response->AddTag(filetag); } else { CEC_SharedFile_Tag filetag(cur_file, EC_DETAIL_INC_UPDATE, &valuemap); CKnownFile_Encoder * enc = encoders[cur_file->ECID()]; enc->Encode(&filetag); response->AddTag(filetag); } } // Add clients CECEmptyTag clients(EC_TAG_CLIENT); const CClientList::IDMap& clientList = theApp->clientlist->GetClientList(); bool onlyTransmittingClients = thePrefs::IsTransmitOnlyUploadingClients(); for (CClientList::IDMap::const_iterator it = clientList.begin(); it != clientList.end(); ++it) { const CUpDownClient* cur_client = it->second.GetClient(); if (onlyTransmittingClients && !cur_client->IsDownloading()) { // For poor CPU cores only transmit uploading clients. This will save a lot of CPU. // Set ExternalConnect/TransmitOnlyUploadingClients to 1 for it. continue; } CValueMap &valuemap = tagmap.GetValueMap(cur_client->ECID()); clients.AddTag(CEC_UpDownClient_Tag(cur_client, EC_DETAIL_INC_UPDATE, &valuemap)); } response->AddTag(clients); // Add servers CECEmptyTag servers(EC_TAG_SERVER); std::vector serverlist = theApp->serverlist->CopySnapshot(); uint32 nrServers = serverlist.size(); for (uint32 i = 0; i < nrServers; i++) { const CServer* cur_server = serverlist[i]; CValueMap &valuemap = tagmap.GetValueMap(cur_server->ECID()); servers.AddTag(CEC_Server_Tag(cur_server, &valuemap)); } response->AddTag(servers); // Add friends CECEmptyTag friends(EC_TAG_FRIEND); for (CFriendList::const_iterator it = theApp->friendlist->begin(); it != theApp->friendlist->end(); ++it) { const CFriend* cur_friend = *it; CValueMap &valuemap = tagmap.GetValueMap(cur_friend->ECID()); friends.AddTag(CEC_Friend_Tag(cur_friend, &valuemap)); } response->AddTag(friends); return response; } static CECPacket *Get_EC_Response_GetClientQueue(const CECPacket *request, CObjTagMap &tagmap, int op) { CECPacket *response = new CECPacket(op); EC_DETAIL_LEVEL detail_level = request->GetDetailLevel(); // // request can contain list of queried items // (not for incremental update of course) CTagSet queryitems(request); const CClientRefList& clients = theApp->uploadqueue->GetUploadingList(); CClientRefList::const_iterator it = clients.begin(); for (; it != clients.end(); ++it) { CUpDownClient* cur_client = it->GetClient(); if (!cur_client) { // shouldn't happen continue; } if (!queryitems.empty() && !queryitems.count(cur_client->ECID())) { continue; } CValueMap *valuemap = NULL; if (detail_level == EC_DETAIL_INC_UPDATE) { valuemap = &tagmap.GetValueMap(cur_client->ECID()); } CEC_UpDownClient_Tag cli_tag(cur_client, detail_level, valuemap); response->AddTag(cli_tag); } return response; } static CECPacket *Get_EC_Response_GetDownloadQueue(const CECPacket *request, CFileEncoderMap &encoders) { CECPacket *response = new CECPacket(EC_OP_DLOAD_QUEUE); EC_DETAIL_LEVEL detail_level = request->GetDetailLevel(); // // request can contain list of queried items CTagSet queryitems(request); encoders.UpdateEncoders(); for (unsigned int i = 0; i < theApp->downloadqueue->GetFileCount(); i++) { CPartFile *cur_file = theApp->downloadqueue->GetFileByIndex(i); if ( !queryitems.empty() && !queryitems.count(cur_file->ECID()) ) { continue; } CEC_PartFile_Tag filetag(cur_file, detail_level); CPartFile_Encoder * enc = static_cast(encoders[cur_file->ECID()]); if ( detail_level != EC_DETAIL_UPDATE ) { enc->ResetEncoder(); } enc->Encode(&filetag); response->AddTag(filetag); } return response; } static CECPacket *Get_EC_Response_PartFile_Cmd(const CECPacket *request) { CECPacket *response = NULL; // request can contain multiple files. for (CECPacket::const_iterator it1 = request->begin(); it1 != request->end(); ++it1) { const CECTag &hashtag = *it1; wxASSERT(hashtag.GetTagName() == EC_TAG_PARTFILE); CMD4Hash hash = hashtag.GetMD4Data(); CPartFile *pfile = theApp->downloadqueue->GetFileByID( hash ); if ( !pfile ) { AddLogLineN(CFormat(_("Remote PartFile command failed: FileHash not found: %s")) % hash.Encode()); response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, CFormat(wxString(wxTRANSLATE("FileHash not found: %s"))) % hash.Encode())); //return response; break; } switch (request->GetOpCode()) { case EC_OP_PARTFILE_SWAP_A4AF_THIS: CoreNotify_PartFile_Swap_A4AF(pfile); break; case EC_OP_PARTFILE_SWAP_A4AF_THIS_AUTO: CoreNotify_PartFile_Swap_A4AF_Auto(pfile); break; case EC_OP_PARTFILE_SWAP_A4AF_OTHERS: CoreNotify_PartFile_Swap_A4AF_Others(pfile); break; case EC_OP_PARTFILE_PAUSE: pfile->PauseFile(); break; case EC_OP_PARTFILE_RESUME: pfile->ResumeFile(); pfile->SavePartFile(); break; case EC_OP_PARTFILE_STOP: pfile->StopFile(); break; case EC_OP_PARTFILE_PRIO_SET: { uint8 prio = hashtag.GetFirstTagSafe()->GetInt(); if ( prio == PR_AUTO ) { pfile->SetAutoDownPriority(1); } else { pfile->SetAutoDownPriority(0); pfile->SetDownPriority(prio); } } break; case EC_OP_PARTFILE_DELETE: if ( thePrefs::StartNextFile() && (pfile->GetStatus() != PS_PAUSED) ) { theApp->downloadqueue->StartNextFile(pfile); } pfile->Delete(); break; case EC_OP_PARTFILE_SET_CAT: pfile->SetCategory(hashtag.GetFirstTagSafe()->GetInt()); break; default: response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("OOPS! OpCode processing error!"))); break; } } if (!response) { response = new CECPacket(EC_OP_NOOP); } return response; } static CECPacket *Get_EC_Response_Server_Add(const CECPacket *request) { CECPacket *response = NULL; wxString full_addr = request->GetTagByNameSafe(EC_TAG_SERVER_ADDRESS)->GetStringData(); wxString name = request->GetTagByNameSafe(EC_TAG_SERVER_NAME)->GetStringData(); wxString s_ip = full_addr.Left(full_addr.Find(':')); wxString s_port = full_addr.Mid(full_addr.Find(':') + 1); long port = StrToULong(s_port); CServer* toadd = new CServer(port, s_ip); toadd->SetListName(name.IsEmpty() ? full_addr : name); if ( theApp->AddServer(toadd, true) ) { response = new CECPacket(EC_OP_NOOP); } else { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, _("Server not added"))); delete toadd; } return response; } static CECPacket *Get_EC_Response_Server(const CECPacket *request) { CECPacket *response = NULL; const CECTag *srv_tag = request->GetTagByName(EC_TAG_SERVER); CServer *srv = 0; if ( srv_tag ) { srv = theApp->serverlist->GetServerByIPTCP(srv_tag->GetIPv4Data().IP(), srv_tag->GetIPv4Data().m_port); // server tag passed, but server not found if ( !srv ) { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, CFormat(wxString(wxTRANSLATE("server not found: %s"))) % srv_tag->GetIPv4Data().StringIP())); return response; } } switch (request->GetOpCode()) { case EC_OP_SERVER_DISCONNECT: theApp->serverconnect->Disconnect(); response = new CECPacket(EC_OP_NOOP); break; case EC_OP_SERVER_REMOVE: if ( srv ) { theApp->serverlist->RemoveServer(srv); response = new CECPacket(EC_OP_NOOP); } else { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("need to define server to be removed"))); } break; case EC_OP_SERVER_CONNECT: if (thePrefs::GetNetworkED2K()) { if ( srv ) { theApp->serverconnect->ConnectToServer(srv); response = new CECPacket(EC_OP_NOOP); } else { theApp->serverconnect->ConnectToAnyServer(); response = new CECPacket(EC_OP_NOOP); } } else { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("eD2k is disabled in preferences."))); } break; } if (!response) { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("OOPS! OpCode processing error!"))); } return response; } static CECPacket *Get_EC_Response_Friend(const CECPacket *request) { CECPacket *response = NULL; const CECTag *tag = request->GetTagByName(EC_TAG_FRIEND_ADD); if (tag) { const CECTag *subtag = tag->GetTagByName(EC_TAG_CLIENT); if (subtag) { CUpDownClient * client = theApp->clientlist->FindClientByECID(subtag->GetInt()); if (client) { theApp->friendlist->AddFriend(CCLIENTREF(client, wxT("Get_EC_Response_Friend theApp->friendlist->AddFriend"))); response = new CECPacket(EC_OP_NOOP); } } else { const CECTag *hashtag = tag->GetTagByName(EC_TAG_FRIEND_HASH); const CECTag *iptag = tag->GetTagByName(EC_TAG_FRIEND_IP); const CECTag *porttag = tag->GetTagByName(EC_TAG_FRIEND_PORT); const CECTag *nametag = tag->GetTagByName(EC_TAG_FRIEND_NAME); if (hashtag && iptag && porttag && nametag) { theApp->friendlist->AddFriend(hashtag->GetMD4Data(), iptag->GetInt(), porttag->GetInt(), nametag->GetStringData()); response = new CECPacket(EC_OP_NOOP); } } } else if ((tag = request->GetTagByName(EC_TAG_FRIEND_REMOVE))) { const CECTag *subtag = tag->GetTagByName(EC_TAG_FRIEND); if (subtag) { CFriend * Friend = theApp->friendlist->FindFriend(subtag->GetInt()); if (Friend) { theApp->friendlist->RemoveFriend(Friend); response = new CECPacket(EC_OP_NOOP); } } } else if ((tag = request->GetTagByName(EC_TAG_FRIEND_FRIENDSLOT))) { const CECTag *subtag = tag->GetTagByName(EC_TAG_FRIEND); if (subtag) { CFriend * Friend = theApp->friendlist->FindFriend(subtag->GetInt()); if (Friend) { theApp->friendlist->SetFriendSlot(Friend, tag->GetInt() != 0); response = new CECPacket(EC_OP_NOOP); } } } else if ((tag = request->GetTagByName(EC_TAG_FRIEND_SHARED))) { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxT("Request shared files list not implemented yet."))); #if 0 // This works fine - but there is no way atm to transfer the results to amulegui, so disable it for now. const CECTag *subtag = tag->GetTagByName(EC_TAG_FRIEND); if (subtag) { CFriend * Friend = theApp->friendlist->FindFriend(subtag->GetInt()); if (Friend) { theApp->friendlist->RequestSharedFileList(Friend); response = new CECPacket(EC_OP_NOOP); } } else if ((subtag = tag->GetTagByName(EC_TAG_CLIENT))) { CUpDownClient * client = theApp->clientlist->FindClientByECID(subtag->GetInt()); if (client) { client->RequestSharedFileList(); response = new CECPacket(EC_OP_NOOP); } } #endif } if (!response) { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("OOPS! OpCode processing error!"))); } return response; } static CECPacket *Get_EC_Response_Search_Results(const CECPacket *request) { CECPacket *response = new CECPacket(EC_OP_SEARCH_RESULTS); EC_DETAIL_LEVEL detail_level = request->GetDetailLevel(); // // request can contain list of queried items CTagSet queryitems(request); const CSearchResultList& list = theApp->searchlist->GetSearchResults(0xffffffff); CSearchResultList::const_iterator it = list.begin(); while (it != list.end()) { CSearchFile* sf = *it++; if ( !queryitems.empty() && !queryitems.count(sf->ECID()) ) { continue; } response->AddTag(CEC_SearchFile_Tag(sf, detail_level)); } return response; } static CECPacket *Get_EC_Response_Search_Results(CObjTagMap &tagmap) { CECPacket *response = new CECPacket(EC_OP_SEARCH_RESULTS); const CSearchResultList& list = theApp->searchlist->GetSearchResults(0xffffffff); CSearchResultList::const_iterator it = list.begin(); while (it != list.end()) { CSearchFile* sf = *it++; CValueMap &valuemap = tagmap.GetValueMap(sf->ECID()); response->AddTag(CEC_SearchFile_Tag(sf, EC_DETAIL_INC_UPDATE, &valuemap)); // Add the children if (sf->HasChildren()) { const CSearchResultList& children = sf->GetChildren(); for (size_t i = 0; i < children.size(); ++i) { CSearchFile* sfc = children.at(i); CValueMap &valuemap1 = tagmap.GetValueMap(sfc->ECID()); response->AddTag(CEC_SearchFile_Tag(sfc, EC_DETAIL_INC_UPDATE, &valuemap1)); } } } return response; } static CECPacket *Get_EC_Response_Search_Results_Download(const CECPacket *request) { CECPacket *response = new CECPacket(EC_OP_STRINGS); for (CECPacket::const_iterator it = request->begin(); it != request->end(); ++it) { const CECTag &tag = *it; CMD4Hash hash = tag.GetMD4Data(); uint8 category = tag.GetFirstTagSafe()->GetInt(); theApp->searchlist->AddFileToDownloadByHash(hash, category); } return response; } static CECPacket *Get_EC_Response_Search_Stop(const CECPacket *WXUNUSED(request)) { CECPacket *reply = new CECPacket(EC_OP_MISC_DATA); theApp->searchlist->StopSearch(); return reply; } static CECPacket *Get_EC_Response_Search(const CECPacket *request) { wxString response; const CEC_Search_Tag *search_request = static_cast(request->GetFirstTagSafe()); theApp->searchlist->RemoveResults(0xffffffff); CSearchList::CSearchParams params; params.searchString = search_request->SearchText(); params.typeText = search_request->SearchFileType(); params.extension = search_request->SearchExt(); params.minSize = search_request->MinSize(); params.maxSize = search_request->MaxSize(); params.availability = search_request->Avail(); EC_SEARCH_TYPE search_type = search_request->SearchType(); SearchType core_search_type = LocalSearch; uint32 op = EC_OP_FAILED; switch (search_type) { case EC_SEARCH_GLOBAL: core_search_type = GlobalSearch; case EC_SEARCH_KAD: if (core_search_type != GlobalSearch) { // Not a global search obviously core_search_type = KadSearch; } case EC_SEARCH_LOCAL: { uint32 search_id = 0xffffffff; wxString error = theApp->searchlist->StartNewSearch(&search_id, core_search_type, params); if (!error.IsEmpty()) { response = error; } else { response = wxTRANSLATE("Search in progress. Refetch results in a moment!"); op = EC_OP_STRINGS; } break; } case EC_SEARCH_WEB: response = wxTRANSLATE("WebSearch from remote interface makes no sense."); break; } CECPacket *reply = new CECPacket(op); // error or search in progress reply->AddTag(CECTag(EC_TAG_STRING, response)); return reply; } static CECPacket *Get_EC_Response_Set_SharedFile_Prio(const CECPacket *request) { CECPacket *response = new CECPacket(EC_OP_NOOP); for (CECPacket::const_iterator it = request->begin(); it != request->end(); ++it) { const CECTag &tag = *it; CMD4Hash hash = tag.GetMD4Data(); uint8 prio = tag.GetFirstTagSafe()->GetInt(); CKnownFile* cur_file = theApp->sharedfiles->GetFileByID(hash); if ( !cur_file ) { continue; } if (prio == PR_AUTO) { cur_file->SetAutoUpPriority(1); cur_file->UpdateAutoUpPriority(); } else { cur_file->SetAutoUpPriority(0); cur_file->SetUpPriority(prio); } Notify_SharedFilesUpdateItem(cur_file); } return response; } void CPartFile_Encoder::Encode(CECTag *parent) { // // Source part frequencies // CKnownFile_Encoder::Encode(parent); // // Gaps // const CGapList& gaplist = m_PartFile()->GetGapList(); const size_t gap_list_size = gaplist.size(); ArrayOfUInts64 gaps; gaps.reserve(gap_list_size * 2); for (CGapList::const_iterator curr_pos = gaplist.begin(); curr_pos != gaplist.end(); ++curr_pos) { gaps.push_back(curr_pos.start()); gaps.push_back(curr_pos.end()); } int gap_enc_size = 0; bool changed; const uint8 *gap_enc_data = m_gap_status.Encode(gaps, gap_enc_size, changed); if (changed) { parent->AddTag(CECTag(EC_TAG_PARTFILE_GAP_STATUS, gap_enc_size, (void *)gap_enc_data)); } delete[] gap_enc_data; // // Requested blocks // ArrayOfUInts64 req_buffer; const CPartFile::CReqBlockPtrList& requestedblocks = m_PartFile()->GetRequestedBlockList(); CPartFile::CReqBlockPtrList::const_iterator curr_pos2 = requestedblocks.begin(); for ( ; curr_pos2 != requestedblocks.end(); ++curr_pos2 ) { Requested_Block_Struct* block = *curr_pos2; req_buffer.push_back(block->StartOffset); req_buffer.push_back(block->EndOffset); } int req_enc_size = 0; const uint8 *req_enc_data = m_req_status.Encode(req_buffer, req_enc_size, changed); if (changed) { parent->AddTag(CECTag(EC_TAG_PARTFILE_REQ_STATUS, req_enc_size, (void *)req_enc_data)); } delete[] req_enc_data; // // Source names // // First count occurrence of all source names // CECEmptyTag sourceNames(EC_TAG_PARTFILE_SOURCE_NAMES); typedef std::map strIntMap; strIntMap nameMap; const CPartFile::SourceSet &sources = m_PartFile()->GetSourceList(); for (CPartFile::SourceSet::const_iterator it = sources.begin(); it != sources.end(); ++it) { const CClientRef &cur_src = *it; if (cur_src.GetRequestFile() != m_file || cur_src.GetClientFilename().Length() == 0) { continue; } const wxString &name = cur_src.GetClientFilename(); strIntMap::iterator itm = nameMap.find(name); if (itm == nameMap.end()) { nameMap[name] = 1; } else { itm->second++; } } // // Go through our last list // for (SourcenameItemMap::iterator it1 = m_sourcenameItemMap.begin(); it1 != m_sourcenameItemMap.end();) { SourcenameItemMap::iterator it2 = it1++; strIntMap::iterator itm = nameMap.find(it2->second.name); if (itm == nameMap.end()) { // name doesn't exist anymore, tell client to forget it CECTag tag(EC_TAG_PARTFILE_SOURCE_NAMES, it2->first); tag.AddTag(CECIntTag(EC_TAG_PARTFILE_SOURCE_NAMES_COUNTS, 0)); sourceNames.AddTag(tag); // and forget it m_sourcenameItemMap.erase(it2); } else { // update count if it changed if (it2->second.count != itm->second) { CECTag tag(EC_TAG_PARTFILE_SOURCE_NAMES, it2->first); tag.AddTag(CECIntTag(EC_TAG_PARTFILE_SOURCE_NAMES_COUNTS, itm->second)); sourceNames.AddTag(tag); it2->second.count = itm->second; } // remove it from nameMap so that only new names are left there nameMap.erase(itm); } } // // Add new names // for (strIntMap::iterator it3 = nameMap.begin(); it3 != nameMap.end(); ++it3) { int id = ++m_sourcenameID; CECIntTag tag(EC_TAG_PARTFILE_SOURCE_NAMES, id); tag.AddTag(CECTag(EC_TAG_PARTFILE_SOURCE_NAMES, it3->first)); tag.AddTag(CECIntTag(EC_TAG_PARTFILE_SOURCE_NAMES_COUNTS, it3->second)); sourceNames.AddTag(tag); // remember it m_sourcenameItemMap[id] = SourcenameItem(it3->first, it3->second); } if (sourceNames.HasChildTags()) { parent->AddTag(sourceNames); } } void CPartFile_Encoder::ResetEncoder() { CKnownFile_Encoder::ResetEncoder(); m_gap_status.ResetEncoder(); m_req_status.ResetEncoder(); } void CKnownFile_Encoder::Encode(CECTag *parent) { // // Source part frequencies // // Reference to the availability list const ArrayOfUInts16& list = m_file->IsPartFile() ? static_cast(m_file)->m_SrcpartFrequency : m_file->m_AvailPartFrequency; // Don't add tag if available parts aren't populated yet. if (!list.empty()) { int part_enc_size; bool changed; const uint8 *part_enc_data = m_enc_data.Encode(list, part_enc_size, changed); if (changed) { parent->AddTag(CECTag(EC_TAG_PARTFILE_PART_STATUS, part_enc_size, part_enc_data)); } delete[] part_enc_data; } } static CECPacket *GetStatsGraphs(const CECPacket *request) { CECPacket *response = NULL; switch (request->GetDetailLevel()) { case EC_DETAIL_WEB: case EC_DETAIL_FULL: { double dTimestamp = 0.0; if (request->GetTagByName(EC_TAG_STATSGRAPH_LAST) != NULL) { dTimestamp = request->GetTagByName(EC_TAG_STATSGRAPH_LAST)->GetDoubleData(); } uint16 nScale = request->GetTagByNameSafe(EC_TAG_STATSGRAPH_SCALE)->GetInt(); uint16 nMaxPoints = request->GetTagByNameSafe(EC_TAG_STATSGRAPH_WIDTH)->GetInt(); uint32 *graphData; unsigned int numPoints = theApp->m_statistics->GetHistoryForWeb(nMaxPoints, (double)nScale, &dTimestamp, &graphData); if (numPoints) { response = new CECPacket(EC_OP_STATSGRAPHS); response->AddTag(CECTag(EC_TAG_STATSGRAPH_DATA, 4 * numPoints * sizeof(uint32), graphData)); delete [] graphData; response->AddTag(CECTag(EC_TAG_STATSGRAPH_LAST, dTimestamp)); } else { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("No points for graph."))); } break; } case EC_DETAIL_INC_UPDATE: case EC_DETAIL_UPDATE: case EC_DETAIL_CMD: // No graphs response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Your client is not configured for this detail level."))); break; } if (!response) { response = new CECPacket(EC_OP_FAILED); // Unknown reason } return response; } CECPacket *CECServerSocket::ProcessRequest2(const CECPacket *request) { if ( !request ) { return 0; } CECPacket *response = NULL; switch (request->GetOpCode()) { // // Misc commands // case EC_OP_SHUTDOWN: if (!theApp->IsOnShutDown()) { response = new CECPacket(EC_OP_NOOP); AddLogLineC(_("External Connection: shutdown requested")); #ifndef AMULE_DAEMON { wxCloseEvent evt; evt.SetCanVeto(false); theApp->ShutDown(evt); } #else theApp->ExitMainLoop(); #endif } else { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Already shutting down."))); } break; case EC_OP_ADD_LINK: for (CECPacket::const_iterator it = request->begin(); it != request->end(); ++it) { const CECTag &tag = *it; wxString link = tag.GetStringData(); int category = 0; const CECTag *cattag = tag.GetTagByName(EC_TAG_PARTFILE_CAT); if (cattag) { category = cattag->GetInt(); } AddLogLineC(CFormat(_("ExternalConn: adding link '%s'.")) % link); if ( theApp->downloadqueue->AddLink(link, category) ) { response = new CECPacket(EC_OP_NOOP); } else { // Error messages are printed by the add function. response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Invalid link or already on list."))); } } break; // // Status requests // case EC_OP_STAT_REQ: response = Get_EC_Response_StatRequest(request, m_LoggerAccess); response->AddTag(CEC_ConnState_Tag(request->GetDetailLevel())); break; case EC_OP_GET_CONNSTATE: response = new CECPacket(EC_OP_MISC_DATA); response->AddTag(CEC_ConnState_Tag(request->GetDetailLevel())); break; // // // case EC_OP_GET_SHARED_FILES: if ( request->GetDetailLevel() != EC_DETAIL_INC_UPDATE ) { response = Get_EC_Response_GetSharedFiles(request, m_FileEncoder); } break; case EC_OP_GET_DLOAD_QUEUE: if ( request->GetDetailLevel() != EC_DETAIL_INC_UPDATE ) { response = Get_EC_Response_GetDownloadQueue(request, m_FileEncoder); } break; // // This will evolve into an update-all for inc tags // case EC_OP_GET_UPDATE: if ( request->GetDetailLevel() == EC_DETAIL_INC_UPDATE ) { response = Get_EC_Response_GetUpdate(m_FileEncoder, m_obj_tagmap); } break; case EC_OP_GET_ULOAD_QUEUE: response = Get_EC_Response_GetClientQueue(request, m_obj_tagmap, EC_OP_ULOAD_QUEUE); break; case EC_OP_PARTFILE_SWAP_A4AF_THIS: case EC_OP_PARTFILE_SWAP_A4AF_THIS_AUTO: case EC_OP_PARTFILE_SWAP_A4AF_OTHERS: case EC_OP_PARTFILE_PAUSE: case EC_OP_PARTFILE_RESUME: case EC_OP_PARTFILE_STOP: case EC_OP_PARTFILE_PRIO_SET: case EC_OP_PARTFILE_DELETE: case EC_OP_PARTFILE_SET_CAT: response = Get_EC_Response_PartFile_Cmd(request); break; case EC_OP_SHAREDFILES_RELOAD: theApp->sharedfiles->Reload(); response = new CECPacket(EC_OP_NOOP); break; case EC_OP_SHARED_SET_PRIO: response = Get_EC_Response_Set_SharedFile_Prio(request); break; case EC_OP_RENAME_FILE: { CMD4Hash fileHash = request->GetTagByNameSafe(EC_TAG_KNOWNFILE)->GetMD4Data(); wxString newName = request->GetTagByNameSafe(EC_TAG_PARTFILE_NAME)->GetStringData(); // search first in downloadqueue - it might be in known files as well CKnownFile* file = theApp->downloadqueue->GetFileByID(fileHash); if (!file) { file = theApp->knownfiles->FindKnownFileByID(fileHash); } if (!file) { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("File not found."))); break; } if (newName.IsEmpty()) { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Invalid file name."))); break; } if (theApp->sharedfiles->RenameFile(file, CPath(newName))) { response = new CECPacket(EC_OP_NOOP); } else { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Unable to rename file."))); } break; } case EC_OP_CLEAR_COMPLETED: { ListOfUInts32 toClear; for (CECTag::const_iterator it = request->begin(); it != request->end(); ++it) { if (it->GetTagName() == EC_TAG_ECID) { toClear.push_back(it->GetInt()); } } theApp->downloadqueue->ClearCompleted(toClear); response = new CECPacket(EC_OP_NOOP); break; } case EC_OP_CLIENT_SWAP_TO_ANOTHER_FILE: { theApp->sharedfiles->Reload(); uint32 idClient = request->GetTagByNameSafe(EC_TAG_CLIENT)->GetInt(); CUpDownClient * client = theApp->clientlist->FindClientByECID(idClient); CMD4Hash idFile = request->GetTagByNameSafe(EC_TAG_PARTFILE)->GetMD4Data(); CPartFile * file = theApp->downloadqueue->GetFileByID(idFile); if (client && file) { client->SwapToAnotherFile( true, false, false, file); } response = new CECPacket(EC_OP_NOOP); break; } case EC_OP_SHARED_FILE_SET_COMMENT: { CMD4Hash hash = request->GetTagByNameSafe(EC_TAG_KNOWNFILE)->GetMD4Data(); CKnownFile * file = theApp->sharedfiles->GetFileByID(hash); if (file) { wxString newComment = request->GetTagByNameSafe(EC_TAG_KNOWNFILE_COMMENT)->GetStringData(); uint8 newRating = request->GetTagByNameSafe(EC_TAG_KNOWNFILE_RATING)->GetInt(); CoreNotify_KnownFile_Comment_Set(file, newComment, newRating); } response = new CECPacket(EC_OP_NOOP); break; } // // Server commands // case EC_OP_SERVER_ADD: response = Get_EC_Response_Server_Add(request); break; case EC_OP_SERVER_DISCONNECT: case EC_OP_SERVER_CONNECT: case EC_OP_SERVER_REMOVE: response = Get_EC_Response_Server(request); break; case EC_OP_GET_SERVER_LIST: { response = new CECPacket(EC_OP_SERVER_LIST); if (!thePrefs::GetNetworkED2K()) { // Kad only: just send an empty list break; } EC_DETAIL_LEVEL detail_level = request->GetDetailLevel(); std::vector servers = theApp->serverlist->CopySnapshot(); for ( std::vector::const_iterator it = servers.begin(); it != servers.end(); ++it ) { response->AddTag(CEC_Server_Tag(*it, detail_level)); } } break; case EC_OP_SERVER_UPDATE_FROM_URL: { wxString url = request->GetFirstTagSafe()->GetStringData(); // Save the new url, and update the UI (if not amuled). Notify_ServersURLChanged(url); thePrefs::SetEd2kServersUrl(url); theApp->serverlist->UpdateServerMetFromURL(url); response = new CECPacket(EC_OP_NOOP); break; } case EC_OP_SERVER_SET_STATIC_PRIO: { uint32 ecid = request->GetTagByNameSafe(EC_TAG_SERVER)->GetInt(); CServer * server = theApp->serverlist->GetServerByECID(ecid); if (server) { const CECTag * staticTag = request->GetTagByName(EC_TAG_SERVER_STATIC); if (staticTag) { theApp->serverlist->SetStaticServer(server, staticTag->GetInt() > 0); } const CECTag * prioTag = request->GetTagByName(EC_TAG_SERVER_PRIO); if (prioTag) { theApp->serverlist->SetServerPrio(server, prioTag->GetInt()); } } response = new CECPacket(EC_OP_NOOP); break; } // // Friends // case EC_OP_FRIEND: response = Get_EC_Response_Friend(request); break; // // IPFilter // case EC_OP_IPFILTER_RELOAD: NotifyAlways_IPFilter_Reload(); response = new CECPacket(EC_OP_NOOP); break; case EC_OP_IPFILTER_UPDATE: { wxString url = request->GetFirstTagSafe()->GetStringData(); if (url.IsEmpty()) { url = thePrefs::IPFilterURL(); } NotifyAlways_IPFilter_Update(url); response = new CECPacket(EC_OP_NOOP); break; } // // Search // case EC_OP_SEARCH_START: response = Get_EC_Response_Search(request); break; case EC_OP_SEARCH_STOP: response = Get_EC_Response_Search_Stop(request); break; case EC_OP_SEARCH_RESULTS: if ( request->GetDetailLevel() == EC_DETAIL_INC_UPDATE ) { response = Get_EC_Response_Search_Results(m_obj_tagmap); } else { response = Get_EC_Response_Search_Results(request); } break; case EC_OP_SEARCH_PROGRESS: response = new CECPacket(EC_OP_SEARCH_PROGRESS); response->AddTag(CECTag(EC_TAG_SEARCH_STATUS, theApp->searchlist->GetSearchProgress())); break; case EC_OP_DOWNLOAD_SEARCH_RESULT: response = Get_EC_Response_Search_Results_Download(request); break; // // Preferences // case EC_OP_GET_PREFERENCES: response = new CEC_Prefs_Packet(request->GetTagByNameSafe(EC_TAG_SELECT_PREFS)->GetInt(), request->GetDetailLevel()); break; case EC_OP_SET_PREFERENCES: static_cast(request)->Apply(); theApp->glob_prefs->Save(); if (thePrefs::IsFilteringClients()) { theApp->clientlist->FilterQueues(); } if (thePrefs::IsFilteringServers()) { theApp->serverlist->FilterServers(); } if (!thePrefs::GetNetworkED2K() && theApp->IsConnectedED2K()) { theApp->DisconnectED2K(); } if (!thePrefs::GetNetworkKademlia() && theApp->IsConnectedKad()) { theApp->StopKad(); } response = new CECPacket(EC_OP_NOOP); break; case EC_OP_CREATE_CATEGORY: if ( request->GetTagCount() == 1 ) { CEC_Category_Tag tag(*static_cast(request->GetFirstTagSafe())); if (tag.Create()) { response = new CECPacket(EC_OP_NOOP); } else { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_CATEGORY, theApp->glob_prefs->GetCatCount() - 1)); response->AddTag(CECTag(EC_TAG_CATEGORY_PATH, tag.Path())); } Notify_CategoryAdded(); } else { response = new CECPacket(EC_OP_NOOP); } break; case EC_OP_UPDATE_CATEGORY: if ( request->GetTagCount() == 1 ) { CEC_Category_Tag tag(*static_cast(request->GetFirstTagSafe())); if (tag.Apply()) { response = new CECPacket(EC_OP_NOOP); } else { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_CATEGORY, tag.GetInt())); response->AddTag(CECTag(EC_TAG_CATEGORY_PATH, tag.Path())); } Notify_CategoryUpdate(tag.GetInt()); } else { response = new CECPacket(EC_OP_NOOP); } break; case EC_OP_DELETE_CATEGORY: if ( request->GetTagCount() == 1 ) { uint32 cat = request->GetFirstTagSafe()->GetInt(); // this noes not only update the gui, but actually deletes the cat Notify_CategoryDelete(cat); } response = new CECPacket(EC_OP_NOOP); break; // // Logging // case EC_OP_ADDLOGLINE: // cppcheck-suppress duplicateBranch if (request->GetTagByName(EC_TAG_LOG_TO_STATUS) != NULL) { AddLogLineC(request->GetTagByNameSafe(EC_TAG_STRING)->GetStringData()); } else { AddLogLineN(request->GetTagByNameSafe(EC_TAG_STRING)->GetStringData()); } response = new CECPacket(EC_OP_NOOP); break; case EC_OP_ADDDEBUGLOGLINE: // cppcheck-suppress duplicateBranch if (request->GetTagByName(EC_TAG_LOG_TO_STATUS) != NULL) { AddDebugLogLineC(logGeneral, request->GetTagByNameSafe(EC_TAG_STRING)->GetStringData()); } else { AddDebugLogLineN(logGeneral, request->GetTagByNameSafe(EC_TAG_STRING)->GetStringData()); } response = new CECPacket(EC_OP_NOOP); break; case EC_OP_GET_LOG: response = new CECPacket(EC_OP_LOG); response->AddTag(CECTag(EC_TAG_STRING, theApp->GetLog(false))); break; case EC_OP_GET_DEBUGLOG: response = new CECPacket(EC_OP_DEBUGLOG); response->AddTag(CECTag(EC_TAG_STRING, theApp->GetDebugLog(false))); break; case EC_OP_RESET_LOG: theApp->GetLog(true); response = new CECPacket(EC_OP_NOOP); break; case EC_OP_RESET_DEBUGLOG: theApp->GetDebugLog(true); response = new CECPacket(EC_OP_NOOP); break; case EC_OP_GET_LAST_LOG_ENTRY: { wxString tmp = theApp->GetLog(false); if (tmp.Last() == '\n') { tmp.RemoveLast(); } response = new CECPacket(EC_OP_LOG); response->AddTag(CECTag(EC_TAG_STRING, tmp.AfterLast('\n'))); } break; case EC_OP_GET_SERVERINFO: response = new CECPacket(EC_OP_SERVERINFO); response->AddTag(CECTag(EC_TAG_STRING, theApp->GetServerLog(false))); break; case EC_OP_CLEAR_SERVERINFO: theApp->GetServerLog(true); response = new CECPacket(EC_OP_NOOP); break; // // Statistics // case EC_OP_GET_STATSGRAPHS: response = GetStatsGraphs(request); break; case EC_OP_GET_STATSTREE: { theApp->m_statistics->UpdateStatsTree(); response = new CECPacket(EC_OP_STATSTREE); CECTag* tree = theStats::GetECStatTree(request->GetTagByNameSafe(EC_TAG_STATTREE_CAPPING)->GetInt()); if (tree) { response->AddTag(*tree); delete tree; } if (request->GetDetailLevel() == EC_DETAIL_WEB) { response->AddTag(CECTag(EC_TAG_SERVER_VERSION, wxT(VERSION))); response->AddTag(CECTag(EC_TAG_USER_NICK, thePrefs::GetUserNick())); } break; } // // Kad // case EC_OP_KAD_START: if (thePrefs::GetNetworkKademlia()) { response = new CECPacket(EC_OP_NOOP); if ( !Kademlia::CKademlia::IsRunning() ) { Kademlia::CKademlia::Start(); theApp->ShowConnectionState(); } } else { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Kad is disabled in preferences."))); } break; case EC_OP_KAD_STOP: theApp->StopKad(); theApp->ShowConnectionState(); response = new CECPacket(EC_OP_NOOP); break; case EC_OP_KAD_UPDATE_FROM_URL: { wxString url = request->GetFirstTagSafe()->GetStringData(); // Save the new url, and update the UI (if not amuled). Notify_NodesURLChanged(url); thePrefs::SetKadNodesUrl(url); theApp->UpdateNotesDat(url); response = new CECPacket(EC_OP_NOOP); break; } case EC_OP_KAD_BOOTSTRAP_FROM_IP: if (thePrefs::GetNetworkKademlia()) { theApp->BootstrapKad(request->GetTagByNameSafe(EC_TAG_BOOTSTRAP_IP)->GetInt(), request->GetTagByNameSafe(EC_TAG_BOOTSTRAP_PORT)->GetInt()); theApp->ShowConnectionState(); response = new CECPacket(EC_OP_NOOP); } else { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Kad is disabled in preferences."))); } break; // // Networks // These requests are currently used only in the text client // case EC_OP_CONNECT: if (thePrefs::GetNetworkED2K()) { response = new CECPacket(EC_OP_STRINGS); if (theApp->IsConnectedED2K()) { response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Already connected to eD2k."))); } else { theApp->serverconnect->ConnectToAnyServer(); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Connecting to eD2k..."))); } } if (thePrefs::GetNetworkKademlia()) { if (!response) { response = new CECPacket(EC_OP_STRINGS); } if (theApp->IsConnectedKad()) { response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Already connected to Kad."))); } else { theApp->StartKad(); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Connecting to Kad..."))); } } if (response) { theApp->ShowConnectionState(); } else { response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("All networks are disabled."))); } break; case EC_OP_DISCONNECT: if (theApp->IsConnected()) { response = new CECPacket(EC_OP_STRINGS); if (theApp->IsConnectedED2K()) { theApp->serverconnect->Disconnect(); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Disconnected from eD2k."))); } if (theApp->IsConnectedKad()) { theApp->StopKad(); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Disconnected from Kad."))); } theApp->ShowConnectionState(); } else { response = new CECPacket(EC_OP_NOOP); } break; } if (!response) { AddLogLineN(CFormat(_("External Connection: invalid opcode received: %#x")) % request->GetOpCode()); wxFAIL; response = new CECPacket(EC_OP_FAILED); response->AddTag(CECTag(EC_TAG_STRING, wxTRANSLATE("Invalid opcode (wrong protocol version?)"))); } return response; } /* * Here notification-based EC. Notification will be sorted by priority for possible throttling. */ /* * Core general status */ ECStatusMsgSource::ECStatusMsgSource() { m_last_ed2k_status_sent = 0xffffffff; m_last_kad_status_sent = 0xffffffff; m_server = (void *)0xffffffff; } uint32 ECStatusMsgSource::GetEd2kStatus() { if ( theApp->IsConnectedED2K() ) { return theApp->GetED2KID(); } else if ( theApp->serverconnect->IsConnecting() ) { return 1; } else { return 0; } } uint32 ECStatusMsgSource::GetKadStatus() { if ( theApp->IsConnectedKad() ) { return 1; } else if ( Kademlia::CKademlia::IsFirewalled() ) { return 2; } else if ( Kademlia::CKademlia::IsRunning() ) { return 3; } return 0; } CECPacket *ECStatusMsgSource::GetNextPacket() { if ( (m_last_ed2k_status_sent != GetEd2kStatus()) || (m_last_kad_status_sent != GetKadStatus()) || (m_server != theApp->serverconnect->GetCurrentServer()) ) { m_last_ed2k_status_sent = GetEd2kStatus(); m_last_kad_status_sent = GetKadStatus(); m_server = theApp->serverconnect->GetCurrentServer(); CECPacket *response = new CECPacket(EC_OP_STATS); response->AddTag(CEC_ConnState_Tag(EC_DETAIL_UPDATE)); return response; } return 0; } /* * Downloading files */ ECPartFileMsgSource::ECPartFileMsgSource() { for (unsigned int i = 0; i < theApp->downloadqueue->GetFileCount(); i++) { CPartFile *cur_file = theApp->downloadqueue->GetFileByIndex(i); PARTFILE_STATUS status = { true, false, false, false, true, cur_file }; m_dirty_status[cur_file->GetFileHash()] = status; } } void ECPartFileMsgSource::SetDirty(const CPartFile *file) { CMD4Hash filehash = file->GetFileHash(); if ( m_dirty_status.find(filehash) != m_dirty_status.end() ) { m_dirty_status[filehash].m_dirty = true;; } } void ECPartFileMsgSource::SetNew(const CPartFile *file) { CMD4Hash filehash = file->GetFileHash(); wxASSERT ( m_dirty_status.find(filehash) == m_dirty_status.end() ); PARTFILE_STATUS status = { true, false, false, false, true, file }; m_dirty_status[filehash] = status; } void ECPartFileMsgSource::SetCompleted(const CPartFile *file) { CMD4Hash filehash = file->GetFileHash(); wxASSERT ( m_dirty_status.find(filehash) != m_dirty_status.end() ); m_dirty_status[filehash].m_finished = true; } void ECPartFileMsgSource::SetRemoved(const CPartFile *file) { CMD4Hash filehash = file->GetFileHash(); wxASSERT ( m_dirty_status.find(filehash) != m_dirty_status.end() ); m_dirty_status[filehash].m_removed = true; } CECPacket *ECPartFileMsgSource::GetNextPacket() { for(std::map::iterator it = m_dirty_status.begin(); it != m_dirty_status.end(); it++) { if ( it->second.m_new || it->second.m_dirty || it->second.m_removed) { CMD4Hash filehash = it->first; const CPartFile *partfile = it->second.m_file; CECPacket *packet = new CECPacket(EC_OP_DLOAD_QUEUE); if ( it->second.m_removed ) { CECTag tag(EC_TAG_PARTFILE, filehash); packet->AddTag(tag); m_dirty_status.erase(it); } else { CEC_PartFile_Tag tag(partfile, it->second.m_new ? EC_DETAIL_FULL : EC_DETAIL_UPDATE); packet->AddTag(tag); } m_dirty_status[filehash].m_new = false; m_dirty_status[filehash].m_dirty = false; return packet; } } return 0; } /* * Shared files - similar to downloading */ ECKnownFileMsgSource::ECKnownFileMsgSource() { for (unsigned int i = 0; i < theApp->sharedfiles->GetFileCount(); i++) { const CKnownFile *cur_file = theApp->sharedfiles->GetFileByIndex(i); KNOWNFILE_STATUS status = { true, false, false, true, cur_file }; m_dirty_status[cur_file->GetFileHash()] = status; } } void ECKnownFileMsgSource::SetDirty(const CKnownFile *file) { CMD4Hash filehash = file->GetFileHash(); if ( m_dirty_status.find(filehash) != m_dirty_status.end() ) { m_dirty_status[filehash].m_dirty = true;; } } void ECKnownFileMsgSource::SetNew(const CKnownFile *file) { CMD4Hash filehash = file->GetFileHash(); wxASSERT ( m_dirty_status.find(filehash) == m_dirty_status.end() ); KNOWNFILE_STATUS status = { true, false, false, true, file }; m_dirty_status[filehash] = status; } void ECKnownFileMsgSource::SetRemoved(const CKnownFile *file) { CMD4Hash filehash = file->GetFileHash(); wxASSERT ( m_dirty_status.find(filehash) != m_dirty_status.end() ); m_dirty_status[filehash].m_removed = true; } CECPacket *ECKnownFileMsgSource::GetNextPacket() { for(std::map::iterator it = m_dirty_status.begin(); it != m_dirty_status.end(); it++) { if ( it->second.m_new || it->second.m_dirty || it->second.m_removed) { CMD4Hash filehash = it->first; const CKnownFile *partfile = it->second.m_file; CECPacket *packet = new CECPacket(EC_OP_SHARED_FILES); if ( it->second.m_removed ) { CECTag tag(EC_TAG_PARTFILE, filehash); packet->AddTag(tag); m_dirty_status.erase(it); } else { CEC_SharedFile_Tag tag(partfile, it->second.m_new ? EC_DETAIL_FULL : EC_DETAIL_UPDATE); packet->AddTag(tag); } m_dirty_status[filehash].m_new = false; m_dirty_status[filehash].m_dirty = false; return packet; } } return 0; } /* * Notification about search status */ ECSearchMsgSource::ECSearchMsgSource() { } CECPacket *ECSearchMsgSource::GetNextPacket() { if ( m_dirty_status.empty() ) { return 0; } CECPacket *response = new CECPacket(EC_OP_SEARCH_RESULTS); for(std::map::iterator it = m_dirty_status.begin(); it != m_dirty_status.end(); it++) { if ( it->second.m_new ) { response->AddTag(CEC_SearchFile_Tag(it->second.m_file, EC_DETAIL_FULL)); it->second.m_new = false; } else if ( it->second.m_dirty ) { response->AddTag(CEC_SearchFile_Tag(it->second.m_file, EC_DETAIL_UPDATE)); } } return response; } void ECSearchMsgSource::FlushStatus() { m_dirty_status.clear(); } void ECSearchMsgSource::SetDirty(const CSearchFile *file) { if ( m_dirty_status.count(file->GetFileHash()) ) { m_dirty_status[file->GetFileHash()].m_dirty = true; } else { m_dirty_status[file->GetFileHash()].m_new = true; m_dirty_status[file->GetFileHash()].m_dirty = true; m_dirty_status[file->GetFileHash()].m_child_dirty = true; m_dirty_status[file->GetFileHash()].m_file = file; } } void ECSearchMsgSource::SetChildDirty(const CSearchFile *file) { m_dirty_status[file->GetFileHash()].m_child_dirty = true; } /* * Notification about uploading clients */ CECPacket *ECClientMsgSource::GetNextPacket() { return 0; } // // Notification iface per-client // ECNotifier::ECNotifier() { } ECNotifier::~ECNotifier() { while (m_msg_source.begin() != m_msg_source.end()) Remove_EC_Client(m_msg_source.begin()->first); } CECPacket *ECNotifier::GetNextPacket(ECUpdateMsgSource *msg_source_array[]) { CECPacket *packet = 0; // // priority 0 is highest // for(int i = 0; i < EC_STATUS_LAST_PRIO; i++) { if ( (packet = msg_source_array[i]->GetNextPacket()) != 0 ) { break; } } return packet; } CECPacket *ECNotifier::GetNextPacket(CECServerSocket *sock) { // // OnOutput is called for a first time before // socket is registered // if ( m_msg_source.count(sock) ) { ECUpdateMsgSource **notifier_array = m_msg_source[sock]; if ( !notifier_array ) { return 0; } CECPacket *packet = GetNextPacket(notifier_array); //printf("[EC] next update packet; opcode=%x\n",packet ? packet->GetOpCode() : 0xff); return packet; } else { return 0; } } // // Interface to notification macros // void ECNotifier::DownloadFile_SetDirty(const CPartFile *file) { for(std::map::iterator i = m_msg_source.begin(); i != m_msg_source.end(); ++i) { CECServerSocket *sock = i->first; if ( sock->HaveNotificationSupport() ) { ECUpdateMsgSource **notifier_array = i->second; static_cast(notifier_array[EC_PARTFILE])->SetDirty(file); } } NextPacketToSocket(); } void ECNotifier::DownloadFile_RemoveFile(const CPartFile *file) { for(std::map::iterator i = m_msg_source.begin(); i != m_msg_source.end(); ++i) { ECUpdateMsgSource **notifier_array = i->second; static_cast(notifier_array[EC_PARTFILE])->SetRemoved(file); } NextPacketToSocket(); } void ECNotifier::DownloadFile_RemoveSource(const CPartFile *) { // per-partfile source list is not supported (yet), and IMHO quite useless } void ECNotifier::DownloadFile_AddFile(const CPartFile *file) { for(std::map::iterator i = m_msg_source.begin(); i != m_msg_source.end(); ++i) { ECUpdateMsgSource **notifier_array = i->second; static_cast(notifier_array[EC_PARTFILE])->SetNew(file); } NextPacketToSocket(); } void ECNotifier::DownloadFile_AddSource(const CPartFile *) { // per-partfile source list is not supported (yet), and IMHO quite useless } void ECNotifier::SharedFile_AddFile(const CKnownFile *file) { for(std::map::iterator i = m_msg_source.begin(); i != m_msg_source.end(); ++i) { ECUpdateMsgSource **notifier_array = i->second; static_cast(notifier_array[EC_KNOWN])->SetNew(file); } NextPacketToSocket(); } void ECNotifier::SharedFile_RemoveFile(const CKnownFile *file) { for(std::map::iterator i = m_msg_source.begin(); i != m_msg_source.end(); ++i) { ECUpdateMsgSource **notifier_array = i->second; static_cast(notifier_array[EC_KNOWN])->SetRemoved(file); } NextPacketToSocket(); } void ECNotifier::SharedFile_RemoveAllFiles() { // need to figure out what to do here } void ECNotifier::Add_EC_Client(CECServerSocket *sock) { ECUpdateMsgSource **notifier_array = new ECUpdateMsgSource *[EC_STATUS_LAST_PRIO]; notifier_array[EC_STATUS] = new ECStatusMsgSource(); notifier_array[EC_SEARCH] = new ECSearchMsgSource(); notifier_array[EC_PARTFILE] = new ECPartFileMsgSource(); notifier_array[EC_CLIENT] = new ECClientMsgSource(); notifier_array[EC_KNOWN] = new ECKnownFileMsgSource(); m_msg_source[sock] = notifier_array; } void ECNotifier::Remove_EC_Client(CECServerSocket *sock) { if (m_msg_source.count(sock)) { ECUpdateMsgSource **notifier_array = m_msg_source[sock]; m_msg_source.erase(sock); for(int i = 0; i < EC_STATUS_LAST_PRIO; i++) { delete notifier_array[i]; } delete [] notifier_array; } } void ECNotifier::NextPacketToSocket() { for(std::map::iterator i = m_msg_source.begin(); i != m_msg_source.end(); ++i) { CECServerSocket *sock = i->first; if ( sock->HaveNotificationSupport() && !sock->DataPending() ) { ECUpdateMsgSource **notifier_array = i->second; CECPacket *packet = GetNextPacket(notifier_array); if ( packet ) { //printf("[EC] sending update packet; opcode=%x\n",packet->GetOpCode()); sock->SendPacket(packet); } } } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ExternalConn.h0000644000175000017500000001406512611472361021051 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 Kry ( elkry@users.sourceforge.net / http://www.amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2008-2011 Froenchenko Leonid (lfroen@gmail.com) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef EXTERNALCONN_H #define EXTERNALCONN_H #include #include "amuleIPV4Address.h" // for amuleIPV4Address #include "RLE.h" // for RLE #include "DownloadQueue.h" #include "PartFile.h" // for SourcenameItemMap class wxSocketServer; class wxSocketEvent; template class CTagSet : public std::set { void InSet(const CECTag *tag, uint32) { this->insert(tag->GetInt()); // don't remove this-> } void InSet(const CECTag *tag, const CMD4Hash&) { this->insert(tag->GetMD4Data()); // don't remove this-> } public: CTagSet(const CECPacket *request) : std::set() { for (CECPacket::const_iterator it = request->begin(); it != request->end(); ++it) { const CECTag *tag = & *it; if ( tag->GetTagName() == OP ) { InSet(tag, T()); } } } }; class CObjTagMap { std::map m_obj_map; public: CValueMap &GetValueMap(uint32 ECID) { return m_obj_map[ECID]; } size_t size() { return m_obj_map.size(); } }; class CECServerSocket; class ECNotifier; class ExternalConn; class CExternalConnListener : public CLibSocketServer { public: CExternalConnListener(const amuleIPV4Address& adr, int flags, ExternalConn * conn) : CLibSocketServer(adr, flags), m_conn(conn) {} void OnAccept(); private: ExternalConn * m_conn; }; class ExternalConn : public wxEvtHandler { private: typedef std::set SocketSet; SocketSet socket_list; public: ExternalConn(amuleIPV4Address addr, wxString *msg); ~ExternalConn(); CExternalConnListener *m_ECServer; ECNotifier *m_ec_notifier; void AddSocket(CECServerSocket *s); void RemoveSocket(CECServerSocket *s); void KillAllSockets(); void ResetAllLogs(); private: // event handlers (these functions should _not_ be virtual) void OnServerEvent(wxSocketEvent& event); DECLARE_EVENT_TABLE() }; class ECUpdateMsgSource { public: virtual ~ECUpdateMsgSource() { } virtual CECPacket *GetNextPacket() = 0; }; class ECPartFileMsgSource : public ECUpdateMsgSource { typedef struct { bool m_new; bool m_comment_changed; bool m_removed; bool m_finished; bool m_dirty; const CPartFile *m_file; } PARTFILE_STATUS; std::map m_dirty_status; public: ECPartFileMsgSource(); void SetDirty(const CPartFile *file); void SetNew(const CPartFile *file); void SetCompleted(const CPartFile *file); void SetRemoved(const CPartFile *file); virtual CECPacket *GetNextPacket(); }; class ECKnownFileMsgSource : public ECUpdateMsgSource { typedef struct { bool m_new; bool m_comment_changed; bool m_removed; bool m_dirty; const CKnownFile *m_file; } KNOWNFILE_STATUS; std::map m_dirty_status; public: ECKnownFileMsgSource(); void SetDirty(const CKnownFile *file); void SetNew(const CKnownFile *file); void SetRemoved(const CKnownFile *file); virtual CECPacket *GetNextPacket(); }; class ECClientMsgSource : public ECUpdateMsgSource { public: virtual CECPacket *GetNextPacket(); }; class ECStatusMsgSource : public ECUpdateMsgSource { uint32 m_last_ed2k_status_sent; uint32 m_last_kad_status_sent; void *m_server; uint32 GetEd2kStatus(); uint32 GetKadStatus(); public: ECStatusMsgSource(); virtual CECPacket *GetNextPacket(); }; class ECSearchMsgSource : public ECUpdateMsgSource { typedef struct { bool m_new; bool m_child_dirty; bool m_dirty; const CSearchFile *m_file; } SEARCHFILE_STATUS; std::map m_dirty_status; public: ECSearchMsgSource(); void SetDirty(const CSearchFile *file); void SetChildDirty(const CSearchFile *file); void FlushStatus(); virtual CECPacket *GetNextPacket(); }; class ECNotifier { // // designated priority for each type of update // enum EC_SOURCE_PRIO { EC_PARTFILE = 0, EC_SEARCH, EC_CLIENT, EC_STATUS, EC_KNOWN, EC_STATUS_LAST_PRIO }; //ECUpdateMsgSource *m_msg_source[EC_STATUS_LAST_PRIO]; std::map m_msg_source; void NextPacketToSocket(); CECPacket *GetNextPacket(ECUpdateMsgSource *msg_source_array[]); // Make class non assignable void operator=(const ECNotifier&); ECNotifier(const ECNotifier&); public: ECNotifier(); ~ECNotifier(); void Add_EC_Client(CECServerSocket *sock); void Remove_EC_Client(CECServerSocket *sock); CECPacket *GetNextPacket(CECServerSocket *sock); // // Interface to notification macros // void DownloadFile_SetDirty(const CPartFile *file); void DownloadFile_RemoveFile(const CPartFile *file); void DownloadFile_RemoveSource(const CPartFile *file); void DownloadFile_AddFile(const CPartFile *file); void DownloadFile_AddSource(const CPartFile *file); void SharedFile_AddFile(const CKnownFile *file); void SharedFile_RemoveFile(const CKnownFile *file); void SharedFile_RemoveAllFiles(); }; #endif // EXTERNALCONN_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ExternalConnector.cpp0000644000175000017500000004730412611472361022443 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ExternalConnector.h" #ifdef HAVE_CONFIG_H #include "config.h" // Needed for VERSION and readline detection #endif #include #include // Needed for CFormat #include // For wxStringTokenizer // For readline #ifdef HAVE_LIBREADLINE #if defined(HAVE_READLINE_READLINE_H) #include // Do_not_auto_remove #elif defined(HAVE_READLINE_H) #include // Do_not_auto_remove #else /* !defined(HAVE_READLINE_H) */ extern "C" char *readline (const char*); #endif /* !defined(HAVE_READLINE_H) */ #else /* !defined(HAVE_READLINE_READLINE_H) */ /* no readline */ #endif /* HAVE_LIBREADLINE */ // For history #ifdef HAVE_READLINE_HISTORY #if defined(HAVE_READLINE_HISTORY_H) #include // Do_not_auto_remove #elif defined(HAVE_HISTORY_H) #include // Do_not_auto_remove #else /* !defined(HAVE_HISTORY_H) */ extern "C" void add_history (const char*); #endif /* defined(HAVE_READLINE_HISTORY_H) */ #else /* no history */ #endif /* HAVE_READLINE_HISTORY */ #include // Needed for CECFileConfig #include #include "OtherFunctions.h" // Needed for GetPassword() #ifdef _MSC_VER // silly warnings about deprecated functions #pragma warning(disable:4996) #endif //------------------------------------------------------------------- CCommandTree::~CCommandTree() { DeleteContents(m_subcommands); } CCommandTree* CCommandTree::AddCommand(CCommandTree* command) { command->m_parent = this; const wxString& cmd = command->m_command; CmdPos_t it; for (it = m_subcommands.begin(); it != m_subcommands.end(); ++it) { if ((*it)->m_command > cmd) { break; } } m_subcommands.insert(it, command); return command; } int CCommandTree::FindCommandId(const wxString& command, wxString& args, wxString& cmdstr) const { wxString cmd = command.BeforeFirst(wxT(' ')).Lower(); for (CmdPosConst_t it = m_subcommands.begin(); it != m_subcommands.end(); ++it) { if ((*it)->m_command.Lower() == cmd) { args = command.AfterFirst(wxT(' ')).Trim(false); return (*it)->FindCommandId(args, args, cmdstr); } } cmdstr = GetFullCommand().Lower(); if (m_params == CMD_PARAM_ALWAYS && args.IsEmpty()) { return CMD_ERR_MUST_HAVE_PARAM; } else if (m_params == CMD_PARAM_NEVER && !args.IsEmpty()) { return CMD_ERR_NO_PARAM; } else { if ((m_cmd_id >= 0) && (m_cmd_id & CMD_DEPRECATED)) { m_app.Show(wxT('\n') + m_verbose + wxT('\n')); return m_cmd_id & ~CMD_DEPRECATED; } else { return m_cmd_id; } } } wxString CCommandTree::GetFullCommand() const { wxString cmd = m_command; const CCommandTree *parent = m_parent; while (parent && parent->m_parent) { cmd = parent->m_command + wxT(" ") + cmd; parent = parent->m_parent; } return cmd; } void CCommandTree::PrintHelpFor(const wxString& command) const { wxString cmd = command.BeforeFirst(wxT(' ')).Lower(); if (!cmd.IsEmpty()) { for (CmdPosConst_t it = m_subcommands.begin(); it != m_subcommands.end(); ++it) { if ((*it)->m_command.Lower() == cmd) { (*it)->PrintHelpFor(command.AfterFirst(wxT(' ')).Trim(false)); return; } } if (m_parent) { m_app.Show(CFormat(_("Unknown extension '%s' for the '%s' command.\n")) % command % GetFullCommand()); } else { m_app.Show(CFormat(_("Unknown command '%s'.\n")) % command); } } else { wxString fullcmd = GetFullCommand(); if (!fullcmd.IsEmpty()) { m_app.Show(fullcmd.Upper() + wxT(": ") + wxGetTranslation(m_short) + wxT("\n")); if (!m_verbose.IsEmpty()) { m_app.Show(wxT("\n")); m_app.Show(wxGetTranslation(m_verbose)); } } if (m_params == CMD_PARAM_NEVER) { m_app.Show(_("\nThis command cannot have an argument.\n")); } else if (m_params == CMD_PARAM_ALWAYS) { m_app.Show(_("\nThis command must have an argument.\n")); } if (m_cmd_id == CMD_ERR_INCOMPLETE) { m_app.Show(_("\nThis command is incomplete, you must use one of the extensions below.\n")); } if (!m_subcommands.empty()) { CmdPosConst_t it; int maxlen = 0; if (m_parent) { m_app.Show(_("\nAvailable extensions:\n")); } else { m_app.Show(_("Available commands:\n")); } for (it = m_subcommands.begin(); it != m_subcommands.end(); ++it) { if (!((*it)->m_cmd_id >= 0 && (*it)->m_cmd_id & CMD_DEPRECATED) || m_parent) { int len = (*it)->m_command.Length(); if (len > maxlen) { maxlen = len; } } } maxlen += 4; for (it = m_subcommands.begin(); it != m_subcommands.end(); ++it) { if (!((*it)->m_cmd_id >= 0 && (*it)->m_cmd_id & CMD_DEPRECATED) || m_parent) { m_app.Show((*it)->m_command + wxString(wxT(' '), maxlen - (*it)->m_command.Length()) + wxGetTranslation((*it)->m_short) + wxT("\n")); } } if (!m_parent) { m_app.Show(CFormat(_("\nAll commands are case insensitive.\nType '%s ' to get detailed info on .\n")) % wxT("help")); } } } m_app.Show(wxT("\n")); } //------------------------------------------------------------------- CaMuleExternalConnector::CaMuleExternalConnector() : m_configFile(NULL), m_port(-1), m_ZLIB(false), m_KeepQuiet(false), m_Verbose(false), m_interactive(false), m_commands(*this), m_appname(NULL), m_ECClient(NULL), m_InputLine(NULL), m_NeedsConfigSave(false), m_locale(NULL), m_strFullVersion(NULL), m_strOSDescription(NULL) { SetAppName(wxT("aMule")); // Do not change! } CaMuleExternalConnector::~CaMuleExternalConnector() { delete m_configFile; delete m_locale; free(m_strFullVersion); free(m_strOSDescription); } void CaMuleExternalConnector::OnInitCommandSet() { m_commands.AddCommand(wxT("Quit"), CMD_ID_QUIT, wxTRANSLATE("Exits from the application."), wxEmptyString); m_commands.AddCommand(wxT("Exit"), CMD_ID_QUIT, wxTRANSLATE("Exits from the application."), wxEmptyString); m_commands.AddCommand(wxT("Help"), CMD_ID_HELP, wxTRANSLATE("Show help."), /* TRANSLATORS: Do not translate the word 'help', it is a command to the program! */ wxTRANSLATE("To get help on a command, type 'help '.\nTo get the full command list type 'help'.\n")); } void CaMuleExternalConnector::Show(const wxString &s) { if( !m_KeepQuiet ) { printf("%s", (const char *)unicode2char(s)); #ifdef __WINDOWS__ fflush(stdout); #endif } } void CaMuleExternalConnector::ShowGreet() { wxString text = GetGreetingTitle(); int len = text.Length(); Show(wxT('\n') + wxString(wxT('-'), 22 + len) + wxT('\n')); Show(wxT('|') + wxString(wxT(' '), 10) + text + wxString(wxT(' '), 10) + wxT('|') + wxT('\n')); Show(wxString(wxT('-'), 22 + len) + wxT('\n')); // Do not merge the line below, or translators could translate "Help" Show(CFormat(_("\nUse '%s' for command list\n\n")) % wxT("Help")); } void CaMuleExternalConnector::Process_Answer(const wxString& answer) { wxStringTokenizer tokens(answer, wxT("\n")); while ( tokens.HasMoreTokens() ) { Show(wxT(" > ") + tokens.GetNextToken() + wxT("\n")); } } bool CaMuleExternalConnector::Parse_Command(const wxString& buffer) { wxString cmd; wxStringTokenizer tokens(buffer); while (tokens.HasMoreTokens()) { cmd += tokens.GetNextToken() + wxT(' '); } cmd.Trim(false); cmd.Trim(true); int cmd_ID = GetIDFromString(cmd); if ( cmd_ID >= 0 ) { cmd_ID = ProcessCommand(cmd_ID); } wxString error; switch (cmd_ID) { case CMD_ID_HELP: m_commands.PrintHelpFor(GetCmdArgs()); break; case CMD_ERR_SYNTAX: error = _("Syntax error!"); break; case CMD_ERR_PROCESS_CMD: Show(_("Error processing command - should never happen! Report bug, please\n")); break; case CMD_ERR_NO_PARAM: error = _("This command should not have any parameters."); break; case CMD_ERR_MUST_HAVE_PARAM: error = _("This command must have a parameter."); break; case CMD_ERR_INVALID_ARG: error = _("Invalid argument."); break; case CMD_ERR_INCOMPLETE: error = _("This is an incomplete command."); break; } if (!error.IsEmpty()) { Show(error + wxT('\n')); wxString helpStr(wxT("help")); if (!GetLastCmdStr().IsEmpty()) { helpStr << wxT(' ') << GetLastCmdStr(); } Show(CFormat(_("Type '%s' to get more help.\n")) % helpStr); } return cmd_ID == CMD_ID_QUIT; } void CaMuleExternalConnector::GetCommand(const wxString &prompt, char* buffer, size_t buffer_size) { #ifdef HAVE_LIBREADLINE char *text = readline(unicode2char(prompt + wxT("$ "))); if (text && *text && (m_InputLine == 0 || strcmp(text,m_InputLine) != 0)) { add_history (text); } if (m_InputLine) free(m_InputLine); m_InputLine = text; #else Show(prompt + wxT("$ ")); const char *text = fgets(buffer, buffer_size, stdin); // == buffer if ok, NULL if eof #endif /* HAVE_LIBREADLINE */ if ( text ) { size_t len = strlen(text); if (len > buffer_size - 1) { len = buffer_size - 1; } if (buffer != text) { strncpy(buffer, text, len); } buffer[len] = 0; } else { strncpy(buffer, "quit", buffer_size); } } void CaMuleExternalConnector::TextShell(const wxString &prompt) { char buffer[2048]; wxString buf; bool The_End = false; do { GetCommand(prompt, buffer, sizeof buffer); buf = char2unicode(buffer); The_End = Parse_Command(buf); } while ((!The_End) && (m_ECClient->IsSocketConnected())); } void CaMuleExternalConnector::ConnectAndRun(const wxString &ProgName, const wxString& ProgVersion) { if (m_NeedsConfigSave) { SaveConfigFile(); return; } #ifdef SVNDATE Show(CFormat(_("This is %s %s %s\n")) % wxString::FromAscii(m_appname) % wxT(VERSION) % wxT(SVNDATE)); #else Show(CFormat(_("This is %s %s\n")) % wxString::FromAscii(m_appname) % wxT(VERSION)); #endif // HostName, Port and Password if ( m_password.IsEmpty() ) { m_password = GetPassword(true); // MD5 hash for an empty string, according to rfc1321. if (m_password.Encode() == wxT("D41D8CD98F00B204E9800998ECF8427E")) { m_password.Clear(); } } if (!m_password.IsEmpty()) { // Create the socket Show(_("\nCreating client...\n")); m_ECClient = new CRemoteConnect(NULL); m_ECClient->SetCapabilities(m_ZLIB, true, false); // ZLIB, UTF8 numbers, notification // ConnectToCore is blocking since m_ECClient was initialized with NULL if (!m_ECClient->ConnectToCore(m_host, m_port, wxT("foobar"), m_password.Encode(), ProgName, ProgVersion)) { // no connection => close gracefully if (!m_ECClient->GetServerReply().IsEmpty()) { Show(CFormat(wxT("%s\n")) % m_ECClient->GetServerReply()); } Show(CFormat(_("Connection Failed. Unable to connect to %s:%d\n")) % m_host % m_port); } else { // Authenticate ourselves // ConnectToCore() already authenticated for us. //m_ECClient->ConnectionEstablished(); Show(m_ECClient->GetServerReply()+wxT("\n")); if (m_ECClient->IsSocketConnected()) { if (m_interactive) { ShowGreet(); } Pre_Shell(); TextShell(ProgName); Post_Shell(); if (m_interactive) { Show(CFormat(_("\nOk, exiting %s...\n")) % ProgName); } } } m_ECClient->DestroySocket(); } else { Show(_("Cannot connect with an empty password.\nYou must specify a password either in config file\nor on command-line, or enter one when asked.\n\nExiting...\n")); } } void CaMuleExternalConnector::OnInitCmdLine(wxCmdLineParser& parser, const char* appname) { m_appname = appname; parser.AddSwitch(wxEmptyString, wxT("help"), _("Show this help text."), wxCMD_LINE_PARAM_OPTIONAL); parser.AddOption(wxT("h"), wxT("host"), _("Host where aMule is running. (default: localhost)"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL); parser.AddOption(wxT("p"), wxT("port"), _("aMule's port for External Connection. (default: 4712)"), wxCMD_LINE_VAL_NUMBER, wxCMD_LINE_PARAM_OPTIONAL); parser.AddOption(wxT("P"), wxT("password"), _("External Connection password."), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL); parser.AddOption(wxT("f"), wxT("config-file"), _("Read configuration from file."), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL); parser.AddSwitch(wxT("q"), wxT("quiet"), _("Do not print any output to stdout."), wxCMD_LINE_PARAM_OPTIONAL); parser.AddSwitch(wxT("v"), wxT("verbose"), _("Be verbose - show also debug messages."), wxCMD_LINE_PARAM_OPTIONAL); parser.AddOption(wxT("l"), wxT("locale"), _("Sets program locale (language)."), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL); parser.AddSwitch(wxT("w"), wxT("write-config"), _("Write command line options to config file."), wxCMD_LINE_PARAM_OPTIONAL); parser.AddOption(wxEmptyString, wxT("create-config-from"), _("Creates config file based on aMule's config file."), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL); parser.AddSwitch(wxEmptyString, wxT("version"), _("Print program version."), wxCMD_LINE_PARAM_OPTIONAL); } bool CaMuleExternalConnector::OnCmdLineParsed(wxCmdLineParser& parser) { if (parser.Found(wxT("version"))) { printf("%s %s\n", m_appname, (const char *)unicode2char(GetMuleVersion())); return false; } if (!parser.Found(wxT("config-file"), &m_configFileName)) { m_configFileName = GetConfigDir() + wxT("remote.conf"); } wxString aMuleConfigFile; if (parser.Found(wxT("create-config-from"), &aMuleConfigFile)) { aMuleConfigFile = FinalizeFilename(aMuleConfigFile); if (!::wxFileExists(aMuleConfigFile)) { fprintf(stderr, "%s\n", (const char *)unicode2char(wxT("FATAL ERROR: File does not exist: ") + aMuleConfigFile)); exit(1); } CECFileConfig aMuleConfig(aMuleConfigFile); LoadAmuleConfig(aMuleConfig); SaveConfigFile(); m_configFile->Flush(); exit(0); } LoadConfigFile(); if ( !parser.Found(wxT("host"), &m_host) ) { if ( m_host.IsEmpty() ) { m_host = wxT("localhost"); } } long port; if (parser.Found(wxT("port"), &port)) { m_port = port; } wxString pass_plain; if (parser.Found(wxT("password"), &pass_plain)) { if (!pass_plain.IsEmpty()) { m_password.Decode(MD5Sum(pass_plain).GetHash()); } else { m_password.Clear(); } } if (parser.Found(wxT("write-config"))) { m_NeedsConfigSave = true; } parser.Found(wxT("locale"), &m_language); if (parser.Found(wxT("help"))) { parser.Usage(); return false; } m_KeepQuiet = parser.Found(wxT("quiet")); m_Verbose = parser.Found(wxT("verbose")); return true; } void CaMuleExternalConnector::LoadAmuleConfig(CECFileConfig& cfg) { m_host = wxT("localhost"); m_port = cfg.Read(wxT("/ExternalConnect/ECPort"), 4712l); cfg.ReadHash(wxT("/ExternalConnect/ECPassword"), &m_password); m_language = cfg.Read(wxT("/eMule/Language"), wxEmptyString); } void CaMuleExternalConnector::LoadConfigFile() { if (!m_configFile) { m_configFile = new CECFileConfig(m_configFileName); } if (m_configFile) { m_language = m_configFile->Read(wxT("/Locale"), wxEmptyString); m_host = m_configFile->Read(wxT("/EC/Host"), wxEmptyString); m_port = m_configFile->Read(wxT("/EC/Port"), 4712l); m_configFile->ReadHash(wxT("/EC/Password"), &m_password); m_ZLIB = m_configFile->Read(wxT("/EC/ZLIB"), 1l) != 0; } } void CaMuleExternalConnector::SaveConfigFile() { if (!wxFileName::DirExists(GetConfigDir())) { wxFileName::Mkdir(GetConfigDir()); } if (!m_configFile) { m_configFile = new CECFileConfig(m_configFileName); } if (m_configFile) { m_configFile->Write(wxT("/Locale"), m_language); m_configFile->Write(wxT("/EC/Host"), m_host); m_configFile->Write(wxT("/EC/Port"), m_port); m_configFile->WriteHash(wxT("/EC/Password"), m_password); } } bool CaMuleExternalConnector::OnInit() { #ifndef __WINDOWS__ #if wxUSE_ON_FATAL_EXCEPTION // catch fatal exceptions wxHandleFatalExceptions(true); #endif #endif // If we didn't know that OnInit is called only once when creating the // object, it could cause a memory leak. The two pointers below should // be free()'d before assigning the new value. // cppcheck-suppress publicAllocationError m_strFullVersion = strdup((const char *)unicode2char(GetMuleVersion())); m_strOSDescription = strdup((const char *)unicode2char(wxGetOsDescription())); // Handle uncaught exceptions InstallMuleExceptionHandler(); bool retval = wxApp::OnInit(); OnInitCommandSet(); InitCustomLanguages(); SetLocale(m_language); return retval; } wxString CaMuleExternalConnector::SetLocale(const wxString& language) { if (!language.IsEmpty()) { m_language = language; if (m_locale) { delete m_locale; } m_locale = new wxLocale; InitLocale(*m_locale, StrLang2wx(language)); } return m_locale == NULL ? wxString() : m_locale->GetCanonicalName(); } #if !wxUSE_GUI && defined(__WXMAC__) && !wxCHECK_VERSION(2, 9, 0) #include // Do_not_auto_remove #include // Do_not_auto_remove class CaMuleExternalConnectorTraits : public wxConsoleAppTraits { public: virtual wxStandardPathsBase& GetStandardPaths() { return s_stdPaths; } private: static wxStandardPathsCF s_stdPaths; }; wxStandardPathsCF CaMuleExternalConnectorTraits::s_stdPaths; wxAppTraits* CaMuleExternalConnector::CreateTraits() { return new CaMuleExternalConnectorTraits; } #endif #if wxUSE_ON_FATAL_EXCEPTION // Gracefully handle fatal exceptions and print backtrace if possible void CaMuleExternalConnector::OnFatalException() { /* Print the backtrace */ fprintf(stderr, "\n--------------------------------------------------------------------------------\n"); fprintf(stderr, "A fatal error has occurred and %s has crashed.\n", m_appname); fprintf(stderr, "Please assist us in fixing this problem by posting the backtrace below in our\n"); fprintf(stderr, "'aMule Crashes' forum and include as much information as possible regarding the\n"); fprintf(stderr, "circumstances of this crash. The forum is located here:\n"); fprintf(stderr, " http://forum.amule.org/index.php?board=67.0\n"); fprintf(stderr, "If possible, please try to generate a real backtrace of this crash:\n"); fprintf(stderr, " http://wiki.amule.org/wiki/Backtraces\n\n"); fprintf(stderr, "----------------------------=| BACKTRACE FOLLOWS: |=----------------------------\n"); fprintf(stderr, "Current version is: %s %s\n", m_appname, m_strFullVersion); fprintf(stderr, "Running on: %s\n\n", m_strOSDescription); print_backtrace(1); // 1 == skip this function. fprintf(stderr, "\n--------------------------------------------------------------------------------\n"); } #endif #ifdef __WXDEBUG__ void CaMuleExternalConnector::OnAssertFailure(const wxChar *file, int line, const wxChar *func, const wxChar *cond, const wxChar *msg) { #if !defined wxUSE_STACKWALKER || !wxUSE_STACKWALKER wxString errmsg = CFormat( wxT("%s:%s:%d: Assertion '%s' failed. %s") ) % file % func % line % cond % ( msg ? msg : wxT("") ); fprintf(stderr, "Assertion failed: %s\n", (const char*)unicode2char(errmsg)); // Skip the function-calls directly related to the assert call. fprintf(stderr, "\nBacktrace follows:\n"); print_backtrace(3); fprintf(stderr, "\n"); #else wxApp::OnAssertFailure(file, line, func, cond, msg); #endif } #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ExternalConnector.h0000644000175000017500000001341212611472361022101 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // /* * This file must be included with wxUSE_GUI defined to zero or one. * Usually on console applications, this will be taken care of in * configure time. This is because wx classes will be compiled * differently in each case. * */ #ifndef __EXTERNALCONNECTOR_H__ #define __EXTERNALCONNECTOR_H__ #include // For wxApp #include // For wxCmdLineEntryDesc #include #include #define CMD_DEPRECATED 0x1000 #define CMD_OK 0 #define CMD_ID_QUIT -1 #define CMD_ID_HELP -2 #define CMD_ERR_SYNTAX -3 #define CMD_ERR_PROCESS_CMD -4 #define CMD_ERR_NO_PARAM -5 #define CMD_ERR_MUST_HAVE_PARAM -6 #define CMD_ERR_INVALID_ARG -7 #define CMD_ERR_INCOMPLETE -8 enum Params { CMD_PARAM_NEVER, CMD_PARAM_OPTIONAL, CMD_PARAM_ALWAYS }; class CCommandTree; typedef std::list CmdList_t; typedef std::list::iterator CmdPos_t; typedef std::list::const_iterator CmdPosConst_t; class CaMuleExternalConnector; class CCommandTree { public: CCommandTree(CaMuleExternalConnector& app) : m_command(wxEmptyString), m_cmd_id(CMD_ERR_SYNTAX), m_short(wxEmptyString), m_verbose(wxEmptyString), m_params(CMD_PARAM_OPTIONAL), m_parent(NULL), m_app(app) {} ~CCommandTree(); CCommandTree* AddCommand(const wxString& command, int cmd_id, const wxString& shortDesc, const wxString& longDesc, enum Params params = CMD_PARAM_OPTIONAL) { return AddCommand(new CCommandTree(m_app, command, cmd_id, shortDesc, longDesc, params)); } int FindCommandId(const wxString& command, wxString& args, wxString& cmdstr) const; wxString GetFullCommand() const; void PrintHelpFor(const wxString& command) const; private: CCommandTree(CaMuleExternalConnector& app, const wxString& command, int cmd_id, const wxString& shortDesc, const wxString& longDesc, enum Params params) : m_command(command), m_cmd_id(cmd_id), m_short(shortDesc), m_verbose(longDesc), m_params(params), m_parent(NULL), m_app(app) {} CCommandTree* AddCommand(CCommandTree* cmdTree); wxString m_command; int m_cmd_id; wxString m_short; wxString m_verbose; enum Params m_params; const CCommandTree* m_parent; CaMuleExternalConnector& m_app; CmdList_t m_subcommands; }; class CECFileConfig; class CaMuleExternalConnector : public wxApp { public: // // Constructor & Destructor // CaMuleExternalConnector(); ~CaMuleExternalConnector(); // // Virtual functions // virtual void Pre_Shell() {} virtual void Post_Shell() {} virtual int ProcessCommand(int) { return -1; } virtual void TextShell(const wxString &prompt); virtual void LoadConfigFile(); virtual void SaveConfigFile(); virtual void LoadAmuleConfig(CECFileConfig& cfg); virtual void OnInitCommandSet(); virtual bool OnInit(); virtual const wxString GetGreetingTitle() = 0; // // Other functions // void Show(const wxString &s); void DebugShow(const wxString &s) { if (m_Verbose) Show(s); } const wxString& GetCmdArgs() const { return m_cmdargs; } const wxString& GetLastCmdStr() const { return m_lastcmdstr; } int GetIDFromString(const wxString& buffer) { return m_commands.FindCommandId(buffer, m_cmdargs, m_lastcmdstr); } void Process_Answer(const wxString& answer); bool Parse_Command(const wxString& buffer); void GetCommand(const wxString &prompt, char* buffer, size_t buffer_size); const CECPacket *SendRecvMsg_v2(const CECPacket *request) { return m_ECClient->SendRecvPacket(request); } void SendPacket(const CECPacket *request) { m_ECClient->SendPacket(request); } void ConnectAndRun(const wxString &ProgName, const wxString& ProgVersion); void ShowGreet(); // // Command line processing // void OnInitCmdLine(wxCmdLineParser& amuleweb_parser, const char* appname); bool OnCmdLineParsed(wxCmdLineParser& parser); #if wxUSE_ON_FATAL_EXCEPTION // Exception and assert handling void OnFatalException(); #endif #ifdef __WXDEBUG__ void OnAssertFailure(const wxChar *file, int line, const wxChar *func, const wxChar *cond, const wxChar *msg); #endif CECFileConfig* m_configFile; wxString m_configFileName; protected: // Set current locale, if language is not empty. // returns canonical name of set (current) locale virtual wxString SetLocale(const wxString& language); long m_port; wxString m_host; CMD4Hash m_password; bool m_ZLIB; bool m_KeepQuiet; bool m_Verbose; bool m_interactive; CCommandTree m_commands; const char * m_appname; #if !wxUSE_GUI && defined(__WXMAC__) && !wxCHECK_VERSION(2, 9, 0) virtual wxAppTraits* CreateTraits(); #endif private: wxString m_cmdargs; wxString m_lastcmdstr; CRemoteConnect* m_ECClient; char * m_InputLine; bool m_NeedsConfigSave; wxString m_language; wxLocale * m_locale; char * m_strFullVersion; char * m_strOSDescription; }; #endif // __EXTERNALCONNECTOR_H__ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/FileArea.cpp0000644000175000017500000001642312611472361020454 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 1998 Vadim Zeitlin ( zeitlin@dptmaths.ens-cachan.fr ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifdef HAVE_CONFIG_H #include "config.h" #endif #ifdef HAVE_ERRNO_H #include #endif #ifdef HAVE_SIGNAL_H #include #endif #include "FileArea.h" // Interface declarations. #include "FileAutoClose.h" // Needed for CFileAutoClose #ifndef ENABLE_MMAP # define ENABLE_MMAP 0 #endif #define USE_MMAP (ENABLE_MMAP && defined(HAVE_MMAP) && defined(HAVE_SYSCONF) && (defined(HAVE__SC_PAGESIZE) || defined(HAVE__SC_PAGE_SIZE))) #if USE_MMAP #include #if defined(HAVE_SYSCONF) && defined(HAVE__SC_PAGESIZE) static const long gs_pageSize = sysconf(_SC_PAGESIZE); #elif defined(HAVE_SYSCONF) && defined(HAVE__SC_PAGE_SIZE) static const long gs_pageSize = sysconf(_SC_PAGE_SIZE); #endif #endif /* USE_MMAP */ #if !defined(HAVE_SIGACTION) || !defined(SA_SIGINFO) || !USE_MMAP || defined(__UCLIBC__) class CFileAreaSigHandler { public: static void Init() {}; static void Add(CFileArea&) {}; static void Remove(CFileArea&) {}; private: CFileAreaSigHandler() {}; }; #else class CFileAreaSigHandler { public: static void Init(); static void Add(CFileArea& area); static void Remove(CFileArea& area); private: CFileAreaSigHandler() {}; static wxMutex mutex; static CFileArea *first; static bool initialized; static struct sigaction old_segv, old_bus; static void Handler(int sig, siginfo_t *info, void *ctx); }; wxMutex CFileAreaSigHandler::mutex; CFileArea * CFileAreaSigHandler::first; bool CFileAreaSigHandler::initialized = false; struct sigaction CFileAreaSigHandler::old_segv; struct sigaction CFileAreaSigHandler::old_bus; /* define MAP_ANONYMOUS for Mac OS X */ #if defined(MAP_ANON) && !defined(MAP_ANONYMOUS) #define MAP_ANONYMOUS MAP_ANON #endif // Handle signals. // The idea is to replace faulted memory with zeroes and mark // the error in proper CFileArea void CFileAreaSigHandler::Handler(int sig, siginfo_t *info, void *ctx) { CFileArea *cur; // find the mapped section where violation occurred (if any) { wxMutexLocker lock(mutex); cur = first; while (cur) { if (cur->m_mmap_buffer && info->si_addr >= cur->m_mmap_buffer && info->si_addr < cur->m_mmap_buffer + cur->m_length) break; cur = cur->m_next; } } // mark error if found if (cur && gs_pageSize > 0) { cur->m_error = true; char *start_addr = ((char *) info->si_addr) - (((unsigned long) info->si_addr) % gs_pageSize); if (mmap(start_addr, gs_pageSize, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) != MAP_FAILED) return; } // call old handler struct sigaction* sa = (sig == SIGSEGV) ? &old_segv : &old_bus; if (sa->sa_flags & SA_SIGINFO) sa->sa_sigaction(sig, info, ctx); else if (sa->sa_handler == SIG_DFL || sa->sa_handler == SIG_IGN) abort(); else sa->sa_handler(sig); } void CFileAreaSigHandler::Init() { // init error handler if needed wxMutexLocker lock(mutex); if (initialized) return; // Set our new signal handler. // Note that we safe old handlers (propably wx ones) in order // to be able to call them if signal not handled as desired. // These handler will be removed by wx code when wx will restore // old ones struct sigaction sa; memset(&sa, 0, sizeof(sa)); sigemptyset(&sa.sa_mask); sa.sa_sigaction = Handler; sa.sa_flags = SA_NODEFER|SA_SIGINFO; if (sigaction(SIGSEGV, &sa, &old_segv)) return; if (sigaction(SIGBUS, &sa, &old_bus)) { sigaction(SIGSEGV, &old_segv, NULL); return; } initialized = true; } void CFileAreaSigHandler::Add(CFileArea& area) { wxMutexLocker lock(mutex); area.m_next = first; first = &area; } void CFileAreaSigHandler::Remove(CFileArea& area) { wxMutexLocker lock(mutex); CFileArea **cur = &first; while (*cur) { if (*cur == &area) { *cur = area.m_next; area.m_next = NULL; break; } cur = &(*cur)->m_next; } } #endif CFileArea::CFileArea() : m_buffer(NULL), m_mmap_buffer(NULL), m_length(0), m_next(NULL), m_file(NULL), m_error(false) { CFileAreaSigHandler::Init(); } CFileArea::~CFileArea() { Close(); CheckError(); } bool CFileArea::Close() { if (m_buffer != NULL && m_mmap_buffer == NULL) { delete[] m_buffer; m_buffer = NULL; } #if USE_MMAP if (m_mmap_buffer) { munmap(m_mmap_buffer, m_length); // remove from list CFileAreaSigHandler::Remove(*this); m_buffer = NULL; m_mmap_buffer = NULL; if (m_file) { m_file->Unlock(); m_file = NULL; } } #endif return true; } void CFileArea::ReadAt(CFileAutoClose& file, uint64 offset, size_t count) { Close(); #if USE_MMAP uint64 offEnd = offset + count; if (gs_pageSize > 0 && offEnd < 0x100000000ull) { uint64 offStart = offset & (~((uint64)gs_pageSize-1)); m_length = offEnd - offStart; void *p = mmap(NULL, m_length, PROT_READ, MAP_SHARED, file.fd(), offStart); if (p != MAP_FAILED) { m_file = &file; m_mmap_buffer = (byte*) p; m_buffer = m_mmap_buffer + (offset - offStart); // add to list to catch errors correctly CFileAreaSigHandler::Add(*this); return; } } file.Unlock(); #endif m_buffer = new byte[count]; file.ReadAt(m_buffer, offset, count); } #if USE_MMAP void CFileArea::StartWriteAt(CFileAutoClose& file, uint64 offset, size_t count) { Close(); uint64 offEnd = offset + count; if (file.GetLength() >= offEnd && gs_pageSize > 0 && offEnd < 0x100000000ull) { uint64 offStart = offset & (~((uint64)gs_pageSize-1)); m_length = offEnd - offStart; void *p = mmap(NULL, m_length, PROT_READ|PROT_WRITE, MAP_SHARED, file.fd(), offStart); if (p != MAP_FAILED) { m_file = &file; m_mmap_buffer = (byte*) p; m_buffer = m_mmap_buffer + (offset - offStart); // add to list to catch errors correctly CFileAreaSigHandler::Add(*this); return; } file.Unlock(); } m_buffer = new byte[count]; } #else void CFileArea::StartWriteAt(CFileAutoClose&, uint64, size_t count) { Close(); m_buffer = new byte[count]; } #endif bool CFileArea::FlushAt(CFileAutoClose& file, uint64 offset, size_t count) { if (!m_buffer) return false; #if USE_MMAP if (m_mmap_buffer) { if (msync(m_mmap_buffer, m_length, MS_SYNC)) return false; Close(); return true; } #endif file.WriteAt(m_buffer, offset, count); Close(); return true; } void CFileArea::CheckError() { bool err = m_error; m_error = false; if (err) throw CIOFailureException(wxT("Read error, failed to read from file.")); } amule_2.3.1+git20151120.0023527bc2.orig/src/FileArea.h0000644000175000017500000000564512611472361020125 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2009-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2009-2011 Frediano Ziglio (freddy77@gamilc.com) // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef FILEAREA_H #define FILEAREA_H #include "Types.h" // Needed for byte class CFileAreaSigHandler; class CFileAutoClose; /** * This class is used to optimize file read/write using mapped memory * if supported. */ class CFileArea { friend class CFileAreaSigHandler; public: /** * Creates a uninitialized file area. */ CFileArea(); /** * Destructor, closes the file if opened. */ virtual ~CFileArea(); /** * Closes the file. */ bool Close(); /** * Init area with a given piece of file. * * @param file file to read. * @param offset seek address in file. * @param count bytes to read. * * Initialize buffer. Buffer will contain data from current file * position for count length. Buffer will be a memory mapped area * or a allocated buffer depending on systems. */ void ReadAt(CFileAutoClose& file, uint64 offset, size_t count); /** * Start a new write */ void StartWriteAt(CFileAutoClose& file, uint64 offset, size_t count); /** * Flushes data not yet written. */ bool FlushAt(CFileAutoClose& file, uint64 offset, size_t count); /** * Get buffer that contains data readed or to write. * @return allocated buffer or NULL if not initialized */ byte *GetBuffer() const { return m_buffer; }; /** * Report error pending */ void CheckError(); private: //! A CFileArea is neither copyable nor assignable. //@{ CFileArea(const CFileArea&); CFileArea& operator=(const CFileArea&); //@} /** * Pointer to buffer used for read/write operations. * If mapped points inside m_mmap_buffer area otherwise * point to an allocated buffer to be freed. */ byte *m_buffer; /** * Pointer to memory mapped area or NULL if not mapped. */ byte *m_mmap_buffer; /** * Length of the mapped region, currently used only for munmap. */ size_t m_length; /** * Global chain */ CFileArea* m_next; /** * File handle to release */ CFileAutoClose * m_file; /** * true if error detected */ bool m_error; }; #endif // FILEAREA_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/FileAutoClose.cpp0000644000175000017500000000724512611472361021504 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2008-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2008-2011 Stu Redman ( sturedman@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "FileAutoClose.h" #include "GetTickCount.h" // for TheTime #include "Logger.h" // Needed for AddDebugLogLineN static const uint32 ReleaseTime = 600; // close file after 10 minutes of not being used CFileAutoClose::CFileAutoClose() : m_mode(CFile::read), m_autoClosed(false), m_locked(0), m_size(0), m_lastAccess(TheTime) {} CFileAutoClose::CFileAutoClose(const CPath& path, CFile::OpenMode mode) { Open(path, mode); } bool CFileAutoClose::Open(const CPath& path, CFile::OpenMode mode) { m_mode = mode; m_autoClosed = false; m_locked = 0; m_size = 0; m_lastAccess = TheTime; return m_file.Open(path, mode); } bool CFileAutoClose::Create(const CPath& path, bool overwrite) { m_mode = CFile::write; m_autoClosed = false; m_lastAccess = TheTime; return m_file.Create(path, overwrite); } bool CFileAutoClose::Close() { bool state = m_autoClosed ? true : m_file.Close(); m_autoClosed = false; return state; } uint64 CFileAutoClose::GetLength() const { return m_autoClosed ? m_size : m_file.GetLength(); } bool CFileAutoClose::SetLength(uint64 newLength) { Reopen(); return m_file.SetLength(newLength); } const CPath& CFileAutoClose::GetFilePath() const { return m_file.GetFilePath(); } bool CFileAutoClose::IsOpened() const { return m_autoClosed || m_file.IsOpened(); } void CFileAutoClose::ReadAt(void* buffer, uint64 offset, size_t count) { Reopen(); m_file.Seek(offset); m_file.Read(buffer, count); } void CFileAutoClose::WriteAt(const void* buffer, uint64 offset, size_t count) { Reopen(); m_file.Seek(offset); m_file.Write(buffer, count); } bool CFileAutoClose::Eof() { Reopen(); return m_file.Eof(); } int CFileAutoClose::fd() { Reopen(); m_locked++; return m_file.fd(); } void CFileAutoClose::Unlock() { if (m_locked) { m_locked--; } } void CFileAutoClose::Reopen() { if (m_autoClosed) { AddDebugLogLineN(logCFile, wxT("Reopen AutoClosed file ") + GetFilePath().GetPrintable()); m_file.Reopen(m_mode); // throws on failure // On open error m_autoClosed stays true, so if the app tries again // it opens and throws again. // Otherwise it would assert on an operation on a closed file and probably die. m_autoClosed = false; } m_lastAccess = TheTime; } bool CFileAutoClose::Release(bool now) { if (!m_autoClosed && (now || TheTime - m_lastAccess >= ReleaseTime) && !m_locked && m_file.IsOpened()) { m_autoClosed = true; m_size = m_file.GetLength(); m_file.Close(); AddDebugLogLineN(logCFile, wxT("AutoClosed file ") + GetFilePath().GetPrintable() + (now ? wxT("(immediately)") : wxT("(timed)"))); } return m_autoClosed; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/FileAutoClose.h0000644000175000017500000001124612611472361021145 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2008-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2008-2011 Stu Redman ( sturedman@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef FILEAUTOCLOSE_H #define FILEAUTOCLOSE_H #include "CFile.h" // Needed for CFile /** * This class encapsulates the CFile class. * * It allows to close the used file handle and reopen * it on usage to minimize the number of used file handles. * */ class CFileAutoClose { public: /** * Creates a closed file. */ CFileAutoClose(); /** * Constructor, calls Open on the specified file. * * To check if the file was successfully opened, a * call to IsOpened() is required. */ CFileAutoClose(const CPath& path, CFile::OpenMode mode = CFile::read); /** * Request auto closing of the file handle. * * @param now true: close immediately false: close when timeout has expired * @return True if the file has been (or has already been) autoclosed. */ bool Release(bool now = false); /** * Opens a file. * * @param path The full or relative path to the file. * @param mode The opening mode (see CFile). * @return True if the file was opened, false otherwise. */ bool Open(const CPath& path, CFile::OpenMode mode = CFile::read); /** * Calling Create is equivilant of calling open with OpenMode 'write'. * * @param overwrite Specifies if the target file should be overwritten, * in case that it already exists. * * @see CFile::Open */ bool Create(const CPath& path, bool overwrite = false); /** * Closes the file. * * Note that calling Close on an closed file * is an illegal operation. */ bool Close(); /** * @see CSafeFileIO::GetLength * * Note that calling GetLength on a closed file * is an illegal operation. */ uint64 GetLength() const; /** * Resizes the file to the specified length. * */ bool SetLength(uint64 newLength); /** * Returns the path of the currently opened file. * */ const CPath& GetFilePath() const; /** * Returns true if the file is opened, false otherwise. */ bool IsOpened() const; /** * Reads 'count' bytes into 'buffer'. * * @param buffer The target buffer. * @param offset The seek address in the file. * @param count The number of bytes to read. * * See CFileDataIO::Read */ void ReadAt(void* buffer, uint64 offset, size_t count); /** * Write 'count' bytes from 'buffer' into the file. * * @param buffer The source-data buffer. * @param offset The seek address in the file. * @param count The number of bytes to write. * * See CFileDataIO::Write */ void WriteAt(const void* buffer, uint64 offset, size_t count); /** * Returns true when the file-position is past or at the end of the file. */ bool Eof(); /** * Returns the file descriptior assosiated with the file. * * This breaks the purpose of this class of course. * Therefore the AutoClose mechanism is disabled when fd() is called. * It's required for FileArea's mmap stuff. * Currently FileArea objects are shortlived enough for this not being * a problem anyway, but that might change in the future. */ int fd(); /** * Reenables AutoClose disabled by fd() before. */ void Unlock(); private: //! A CFileAutoClose is neither copyable nor assignable. //@{ CFileAutoClose(const CFileAutoClose&); CFileAutoClose& operator=(const CFileAutoClose&); //@} /** * Check if file was autoclosed, and reopen if needed. */ void Reopen(); //! The wrapped CFile. CFile m_file; //! The mode used to open it. CFile::OpenMode m_mode; //! Is it temporarily closed? bool m_autoClosed; //! Autoclosing is disabled if != 0 uint16 m_locked; //! Size before it was closed. uint64 m_size; //! Last access time (s) uint32 m_lastAccess; }; #endif // FILEAUTOCLOSE_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/FileDetailDialog.cpp0000644000175000017500000003547412611472361022135 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "muuli_wdr.h" // Needed for ID_CLOSEWNDFD,...,IDC_APPLY #include "FileDetailDialog.h" // Interface declarations #include "FileDetailListCtrl.h" // Needed for CFileDetailListCtrl #include "CommentDialogLst.h" // Needed for CCommentDialogLst #include "PartFile.h" // Needed for CPartFile #include "amule.h" // Needed for theApp #include "SharedFileList.h" // Needed for CSharedFileList #include "OtherFunctions.h" #include "MuleColour.h" #define ID_MY_TIMER 1652 //IMPLEMENT_DYNAMIC(CFileDetailDialog, CDialog) BEGIN_EVENT_TABLE(CFileDetailDialog,wxDialog) EVT_BUTTON(ID_CLOSEWNDFD, CFileDetailDialog::OnClosewnd) EVT_BUTTON(IDC_BUTTONSTRIP, CFileDetailDialog::OnBnClickedButtonStrip) EVT_BUTTON(IDC_TAKEOVER, CFileDetailDialog::OnBnClickedTakeOver) EVT_LIST_ITEM_ACTIVATED(IDC_LISTCTRLFILENAMES, CFileDetailDialog::OnListClickedTakeOver) EVT_BUTTON(IDC_CMTBT, CFileDetailDialog::OnBnClickedShowComment) EVT_TEXT(IDC_FILENAME, CFileDetailDialog::OnTextFileNameChange) EVT_BUTTON(IDC_APPLY_AND_CLOSE, CFileDetailDialog::OnBnClickedOk) EVT_BUTTON(IDC_APPLY, CFileDetailDialog::OnBnClickedApply) EVT_BUTTON(IDC_PREVFILE, CFileDetailDialog::OnBnClickedPrevFile) EVT_BUTTON(IDC_NEXTFILE, CFileDetailDialog::OnBnClickedNextFile) EVT_TIMER(ID_MY_TIMER,CFileDetailDialog::OnTimer) END_EVENT_TABLE() CFileDetailDialog::CFileDetailDialog(wxWindow *parent, std::vector & files, int index) : wxDialog(parent, -1, _("File Details"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMAXIMIZE_BOX | wxMINIMIZE_BOX), m_files(files), m_index(index), m_filenameChanged(false) { theApp->m_FileDetailDialogActive++; m_timer.SetOwner(this, ID_MY_TIMER); m_timer.Start(5000); wxSizer *content = fileDetails(this, true); m_file = m_files[m_index]; UpdateData(true); content->SetSizeHints(this); content->Show(this, true); } CFileDetailDialog::~CFileDetailDialog() { theApp->m_FileDetailDialogActive = 0; m_timer.Stop(); } void CFileDetailDialog::OnTimer(wxTimerEvent& WXUNUSED(evt)) { UpdateData(false); } void CFileDetailDialog::OnClosewnd(wxCommandEvent& WXUNUSED(evt)) { EndModal(0); } void CFileDetailDialog::UpdateData(bool resetFilename) { wxString bufferS; CastChild(IDC_FNAME, wxStaticText)->SetLabel(MakeStringEscaped(m_file->GetFileName().TruncatePath(60))); CastChild(IDC_METFILE, wxStaticText)->SetLabel(MakeStringEscaped(m_file->GetFullName().TruncatePath(60, true))); if (resetFilename) { resetValueForFilenameTextEdit(); } CastChild(IDC_FHASH,wxStaticText)->SetLabel(m_file->GetFileHash().Encode()); bufferS = CFormat(wxT("%u bytes (%s)")) % m_file->GetFileSize() % CastItoXBytes(m_file->GetFileSize()); CastChild(IDC_FSIZE,wxControl)->SetLabel(bufferS); CastChild(IDC_PFSTATUS,wxControl)->SetLabel(m_file->getPartfileStatus()); bufferS = CFormat(wxT("%i (%i)")) % m_file->GetPartCount() % m_file->GetHashCount(); CastChild(IDC_PARTCOUNT,wxControl)->SetLabel(bufferS); CastChild(IDC_TRANSFERRED,wxControl)->SetLabel(CastItoXBytes(m_file->GetTransferred())); CastChild(IDC_FD_STATS1,wxControl)->SetLabel(CastItoXBytes(m_file->GetLostDueToCorruption())); CastChild(IDC_FD_STATS2,wxControl)->SetLabel(CastItoXBytes(m_file->GetGainDueToCompression())); CastChild(IDC_FD_STATS3,wxControl)->SetLabel(CastItoIShort(m_file->TotalPacketsSavedDueToICH())); CastChild(IDC_COMPLSIZE,wxControl)->SetLabel(CastItoXBytes(m_file->GetCompletedSize())); bufferS = CFormat(_("%.1f%% done")) % m_file->GetPercentCompleted(); CastChild(IDC_PROCCOMPL,wxControl)->SetLabel(bufferS); bufferS = CFormat(_("%.2f kB/s")) % m_file->GetKBpsDown(); CastChild(IDC_DATARATE,wxControl)->SetLabel(bufferS); bufferS = CFormat(wxT("%i")) % m_file->GetSourceCount(); CastChild(IDC_SOURCECOUNT,wxControl)->SetLabel(bufferS); bufferS = CFormat(wxT("%i")) % m_file->GetTransferingSrcCount(); CastChild(IDC_SOURCECOUNT2,wxControl)->SetLabel(bufferS); bufferS = CFormat(wxT("%i (%.1f%%)")) % m_file->GetAvailablePartCount() % ((m_file->GetAvailablePartCount() * 100.0)/ m_file->GetPartCount()); CastChild(IDC_PARTAVAILABLE,wxControl)->SetLabel(bufferS); bufferS = CastSecondsToHM(m_file->GetDlActiveTime()); CastChild(IDC_DLACTIVETIME, wxControl)->SetLabel(bufferS); if (m_file->lastseencomplete==0) { bufferS = wxString(_("Unknown")).MakeLower(); } else { wxDateTime last_seen(m_file->lastseencomplete); bufferS = last_seen.FormatISODate() + wxT(" ") + last_seen.FormatISOTime(); } CastChild(IDC_LASTSEENCOMPL,wxControl)->SetLabel(bufferS); setEnableForApplyButton(); // disable "Show all comments" button if there are no comments FileRatingList list; m_file->GetRatingAndComments(list); CastChild(IDC_CMTBT, wxControl)->Enable(!list.empty()); FillSourcenameList(); Layout(); } // CFileDetailDialog message handlers void CFileDetailDialog::FillSourcenameList() { CFileDetailListCtrl* pmyListCtrl; int itempos; int inserted = 0; pmyListCtrl = CastChild(IDC_LISTCTRLFILENAMES, CFileDetailListCtrl ); // reset for (int i=0;iGetItemCount();i++){ SourcenameItem *item = reinterpret_cast(pmyListCtrl->GetItemData(i)); item->count = 0; } // update #ifdef CLIENT_GUI const SourcenameItemMap &sources = m_file->GetSourcenameItemMap(); for (SourcenameItemMap::const_iterator it = sources.begin(); it != sources.end(); ++it) { const SourcenameItem &cur_src = it->second; itempos = pmyListCtrl->FindItem(-1,cur_src.name); if (itempos == -1) { int itemid = pmyListCtrl->InsertItem(0, cur_src.name); SourcenameItem *item = new SourcenameItem(cur_src.name, cur_src.count); pmyListCtrl->SetItemPtrData(0, reinterpret_cast(item)); // background.. argh -- PA: was in old version - do we still need this? wxListItem tmpitem; tmpitem.m_itemId = itemid; tmpitem.SetBackgroundColour(CMuleColour(wxSYS_COLOUR_LISTBOX)); pmyListCtrl->SetItem(tmpitem); inserted++; } else { SourcenameItem *item = reinterpret_cast(pmyListCtrl->GetItemData(itempos)); item->count = cur_src.count; } } #else // CLIENT_GUI const CKnownFile::SourceSet& sources = m_file->GetSourceList(); CKnownFile::SourceSet::const_iterator it = sources.begin(); for ( ; it != sources.end(); ++it ) { const CClientRef &cur_src = *it; if (cur_src.GetRequestFile() != m_file || cur_src.GetClientFilename().Length() == 0) { continue; } itempos = pmyListCtrl->FindItem(-1,cur_src.GetClientFilename()); if (itempos == -1) { int itemid = pmyListCtrl->InsertItem(0, cur_src.GetClientFilename()); SourcenameItem *item = new SourcenameItem(cur_src.GetClientFilename(), 1); pmyListCtrl->SetItemPtrData(0, reinterpret_cast(item)); // background.. argh -- PA: was in old version - do we still need this? wxListItem tmpitem; tmpitem.m_itemId=itemid; tmpitem.SetBackgroundColour(CMuleColour(wxSYS_COLOUR_LISTBOX)); pmyListCtrl->SetItem(tmpitem); inserted++; } else { SourcenameItem *item = reinterpret_cast(pmyListCtrl->GetItemData(itempos)); item->count++; } } #endif // CLIENT_GUI // remove 0'er and update counts for (int i = 0; i < pmyListCtrl->GetItemCount(); ++i) { SourcenameItem *item = reinterpret_cast(pmyListCtrl->GetItemData(i)); if (item->count == 0) { delete item; pmyListCtrl->DeleteItem(i); i--; // PA: one step back is enough, no need to go back to 0 } else { pmyListCtrl->SetItem(i, 1, CFormat(wxT("%i")) % item->count); } } if (inserted) { pmyListCtrl->SortList(); } // no need to call Layout() here, it's called in UpdateData() } void CFileDetailDialog::OnBnClickedShowComment(wxCommandEvent& WXUNUSED(evt)) { CCommentDialogLst(this,m_file).ShowModal(); } void CFileDetailDialog::resetValueForFilenameTextEdit() { CastChild(IDC_FILENAME, wxTextCtrl)->SetValue(m_file->GetFileName().GetPrintable()); m_filenameChanged = false; setEnableForApplyButton(); } void CFileDetailDialog::setValueForFilenameTextEdit(const wxString &s) { CastChild(IDC_FILENAME, wxTextCtrl)->SetValue(s); m_filenameChanged = true; setEnableForApplyButton(); } void CFileDetailDialog::setEnableForApplyButton() { bool enabled = m_file->GetStatus() != PS_COMPLETE && m_file->GetStatus() != PS_COMPLETING && m_filenameChanged; CastChild(IDC_APPLY, wxControl)->Enable(enabled); // Make OK button default so Text can be applied by hitting return CastChild(enabled ? IDC_APPLY_AND_CLOSE : ID_CLOSEWNDFD, wxButton)->SetDefault(); } void CFileDetailDialog::OnTextFileNameChange(wxCommandEvent& WXUNUSED(evt)) { m_filenameChanged = true; setEnableForApplyButton(); } void CFileDetailDialog::OnBnClickedOk(wxCommandEvent& evt) { OnBnClickedApply(evt); OnClosewnd(evt); } void CFileDetailDialog::OnBnClickedApply(wxCommandEvent& WXUNUSED(evt)) { CPath fileName = CPath(CastChild(IDC_FILENAME, wxTextCtrl)->GetValue()); if (fileName.IsOk() && (fileName != m_file->GetFileName())) { if (theApp->sharedfiles->RenameFile(m_file, fileName)) { FindWindow(IDC_FNAME)->SetLabel(MakeStringEscaped(m_file->GetFileName().GetPrintable())); FindWindow(IDC_METFILE)->SetLabel(m_file->GetFullName().GetPrintable()); resetValueForFilenameTextEdit(); Layout(); } } } void CFileDetailDialog::OnBnClickedPrevFile(wxCommandEvent&) { if (--m_index < 0) { m_index = m_files.size() - 1; } m_file = m_files[m_index]; UpdateData(true); } void CFileDetailDialog::OnBnClickedNextFile(wxCommandEvent&) { if (++m_index == (int) m_files.size()) { m_index = 0; } m_file = m_files[m_index]; UpdateData(true); } bool IsDigit(const wxChar ch) { switch (ch) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': return true; } return false; } bool IsWordSeparator(const wxChar ch) { switch (ch) { case '.': case ',': case '(': case ')': case '[': case ']': case '{': case '}': case '-': case '"': case ' ': return true; } return false; } void ReplaceWord(wxString& str, const wxString& replaceFrom, const wxString& replaceTo, bool numbers = false) { unsigned int i = 0; unsigned int l = replaceFrom.Length(); while (i < str.Length()) { if (str.Mid(i, l) == replaceFrom) { if ((i == 0 || IsWordSeparator(str.GetChar(i-1))) && ((i == str.Length() - l || IsWordSeparator(str.GetChar(i+l))) || (numbers && IsDigit(str.GetChar(i+l))))) { str.replace(i, l, replaceTo); } i += replaceTo.Length() - 1; } i++; } } void CFileDetailDialog::OnBnClickedButtonStrip(wxCommandEvent& WXUNUSED(evt)) { wxString filename; filename = CastChild(IDC_FILENAME, wxTextCtrl)->GetValue(); int extpos = filename.Find('.', true); wxString ext; if (extpos > 0) { // get the extension - we do not modify it except make it lowercase ext = filename.Mid(extpos); ext.MakeLower(); // get rid of extension and replace . with space filename.Truncate(extpos); filename.Replace(wxT("."),wxT(" ")); } // Replace Space-holders with Spaces filename.Replace(wxT("_"),wxT(" ")); filename.Replace(wxT("%20"),wxT(" ")); // Some additional formatting filename.Replace(wxT("hYPNOTiC"), wxEmptyString); filename.MakeLower(); filename.Replace(wxT("xxx"), wxT("XXX")); // filename.Replace(wxT("xdmnx"), wxEmptyString); // filename.Replace(wxT("pmp"), wxEmptyString); // filename.Replace(wxT("dws"), wxEmptyString); filename.Replace(wxT("www pornreactor com"), wxEmptyString); filename.Replace(wxT("sharereactor"), wxEmptyString); filename.Replace(wxT("found via www filedonkey com"), wxEmptyString); filename.Replace(wxT("deviance"), wxEmptyString); filename.Replace(wxT("adunanza"), wxEmptyString); filename.Replace(wxT("-ftv"), wxEmptyString); filename.Replace(wxT("flt"), wxEmptyString); filename.Replace(wxT("[]"), wxEmptyString); filename.Replace(wxT("()"), wxEmptyString); // Change CD, CD#, VCD{,#}, DVD{,#}, ISO, PC to uppercase ReplaceWord(filename, wxT("cd"), wxT("CD"), true); ReplaceWord(filename, wxT("vcd"), wxT("VCD"), true); ReplaceWord(filename, wxT("dvd"), wxT("DVD"), true); ReplaceWord(filename, wxT("iso"), wxT("ISO"), false); ReplaceWord(filename, wxT("pc"), wxT("PC"), false); // Make leading Caps // and delete 1+ spaces if (filename.Length()>1) { bool last_char_space = true; bool last_char_wordseparator = true; unsigned int i = 0; do { wxChar c = filename.GetChar(i); if (c == ' ') { if (last_char_space) { filename.Remove(i, 1); i--; } else { last_char_space = true; } } else if (c == '.') { if (last_char_space && i > 0) { i--; filename.Remove(i, 1); } last_char_space = false; } else { if (last_char_wordseparator) { wxString tempStr(c); tempStr.MakeUpper(); filename.SetChar(i, tempStr.GetChar(0)); last_char_space = false; } } last_char_wordseparator = IsWordSeparator(c); i++; } while (i < filename.Length()); if (last_char_space && i > 0) { filename.Remove(i-1, 1); } } // should stay lowercase ReplaceWord(filename, wxT("By"), wxT("by")); // re-add extension filename += ext; setValueForFilenameTextEdit(filename); } void CFileDetailDialog::OnBnClickedTakeOver(wxCommandEvent& WXUNUSED(evt)) { CFileDetailListCtrl* pmyListCtrl; pmyListCtrl = CastChild( IDC_LISTCTRLFILENAMES, CFileDetailListCtrl ); if (pmyListCtrl->GetSelectedItemCount() > 0) { // get first selected item (there is only one) long pos = pmyListCtrl->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (pos != -1) { // shouldn't happen, we checked if something is selected setValueForFilenameTextEdit(pmyListCtrl->GetItemText(pos)); } } } void CFileDetailDialog::OnListClickedTakeOver(wxListEvent& WXUNUSED(evt)) { wxCommandEvent ev; OnBnClickedTakeOver(ev); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/FileDetailDialog.h0000644000175000017500000000441612611472361021572 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef FILEDETAILDIALOG_H #define FILEDETAILDIALOG_H #include class CPartFile; // CFileDetailDialog dialog class CFileDetailDialog : public wxDialog { public: CFileDetailDialog(wxWindow *parent, std::vector & files, int index); virtual ~CFileDetailDialog(); protected: void OnTimer(wxTimerEvent& evt); DECLARE_EVENT_TABLE() private: void UpdateData(bool resetFilename); std::vector & m_files; CPartFile* m_file; int m_index; wxTimer m_timer; bool m_filenameChanged; void OnClosewnd(wxCommandEvent& evt); void FillSourcenameList(); void setEnableForApplyButton(); void setValueForFilenameTextEdit(const wxString &s); void resetValueForFilenameTextEdit(); void OnBnClickedButtonStrip(wxCommandEvent& evt); void OnBnClickedShowComment(wxCommandEvent& evt); void OnBnClickedTakeOver(wxCommandEvent& evt); void OnListClickedTakeOver(wxListEvent& evt); void OnTextFileNameChange(wxCommandEvent& evt); void OnBnClickedOk(wxCommandEvent& evt); void OnBnClickedApply(wxCommandEvent& evt); void OnBnClickedPrevFile(wxCommandEvent& evt); void OnBnClickedNextFile(wxCommandEvent& evt); }; #endif // FILEDETAILDIALOG_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/FileDetailListCtrl.cpp0000644000175000017500000000563212611472361022467 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "muuli_wdr.h" // Needed for ID_CLOSEWNDFD #include "FileDetailListCtrl.h" // Interface declarations #define wxLIST_STATE_DESELECTED 0x0000 BEGIN_EVENT_TABLE(CFileDetailListCtrl, CMuleListCtrl) EVT_LIST_ITEM_SELECTED(IDC_LISTCTRLFILENAMES, CFileDetailListCtrl::OnSelect) // Care for single selection END_EVENT_TABLE() CFileDetailListCtrl::CFileDetailListCtrl(wxWindow * &parent, int id, const wxPoint & pos, wxSize siz, int flags):CMuleListCtrl(parent, id, pos, siz, flags) { // Set sorter function SetSortFunc(SortProc); // Initial sorting: Sources descending InsertColumn(0, _("File Name"), wxLIST_FORMAT_LEFT, 370); InsertColumn(1, _("Sources"), wxLIST_FORMAT_LEFT, 70); SetSorting(1, CMuleListCtrl::SORT_DES); SortList(); } int CFileDetailListCtrl::SortProc(wxUIntPtr param1, wxUIntPtr param2, long sortData) { // Comparison for different sortings SourcenameItem *item1 = reinterpret_cast(param1); SourcenameItem *item2 = reinterpret_cast(param2); int mod = (sortData & CMuleListCtrl::SORT_DES) ? -1 : 1; switch (sortData & CMuleListCtrl::COLUMN_MASK) { case 1: return mod * (item1->count - item2->count); // Sources descending case 0: return mod * item1->name.CmpNoCase(item2->name); // Name descending default: return 0; } } void CFileDetailListCtrl::OnSelect(wxListEvent& event) { // Damn wxLC_SINGLE_SEL does not work! So we have to care for single selection ourselfs: long realpos = event.m_itemIndex; long pos = -1; do { // Loop through all selected items pos = GetNextItem(pos, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (pos != realpos && pos != -1) { // Deselect all items except the one we have just clicked SetItemState(pos, wxLIST_STATE_DESELECTED, wxLIST_STATE_SELECTED); } } while (pos != -1); event.Skip(); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/FileDetailListCtrl.h0000644000175000017500000000317312611472361022132 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef FILEDETAILLISTCTRL_H #define FILEDETAILLISTCTRL_H #include "MuleListCtrl.h" // Needed for CMuleListCtrl class CFileDetailListCtrl : public CMuleListCtrl { public: CFileDetailListCtrl(wxWindow * &parent, int id, const wxPoint & pos, wxSize siz, int flags); private: struct SourcenameItem { wxString name; long count; }; static int wxCALLBACK SortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData); void OnSelect(wxListEvent& event); DECLARE_EVENT_TABLE() }; #endif // FILEDETAILLISTCTRL_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/FileLock.h0000644000175000017500000001044112611472361020133 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2006-2011 Mikkel Schubert ( xaignar@users.sourceforge.net ) // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef FILELOCK_H #define FILELOCK_H #include #include #ifndef _MSC_VER #include // Do_not_auto_remove (Needed for OpenBSD) #endif #include // Do_not_auto_remove (g++-4.0.1 except win32) /** * This class provides an easy way to lock non-critical * files used by multiple applications. However, since * the implementation relies on fcntl, it may not work * on all filesystems (NFS) and thus locking is not * certain. * * Currently, this lock holds an exclusive lock on the * file in question. It is assumed that the file will * be read/written by all users. * */ class CFileLock { public: /** * Locks the lock-file for the specified file. * * The lock-file is a file named file + "_lock", and * will be created if it does not already exist. This * file is not removed afterwards. */ CFileLock(const std::string& file) #ifdef _WIN32 : m_ok(false) { hd = CreateFileA((file + "_lock").c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, // share - shareable NULL, // security - not inheritable CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL); if (hd != INVALID_HANDLE_VALUE) { m_ok = SetLock(true); } } /** Releases the lock, if any is held. */ ~CFileLock() { if (m_ok) { SetLock(false); } if (hd != INVALID_HANDLE_VALUE) { CloseHandle(hd); } } private: //! Not copyable. CFileLock(const CFileLock&); //! Not assignable. CFileLock& operator=(const CFileLock&); /** Locks or unlocks the lock-file, returning true on success. */ bool SetLock(bool doLock) { // lock/unlock first byte in the file OVERLAPPED ov; ov.Offset = ov.OffsetHigh = 0; BOOL ret; if (doLock) { // http://msdn.microsoft.com/en-us/library/ms891385.aspx ret = LockFileEx(hd, LOCKFILE_EXCLUSIVE_LOCK, 0, 1, 0, &ov); } else { // http://msdn.microsoft.com/en-us/library/ms892364.aspx ret = UnlockFileEx(hd, 0, 1, 0, &ov); } return ret != 0; } //! Desriptor of the file being locked. HANDLE hd; //! Specifies if the file-lock was aquired. bool m_ok; #else : m_fd(-1), m_ok(false) { // File must be open with O_WRONLY to be able to set write-locks. m_fd = ::open((file + "_lock").c_str(), O_CREAT | O_WRONLY, 0600); if (m_fd != -1) { m_ok = SetLock(true); } } /** Releases the lock, if any is held. */ ~CFileLock() { if (m_ok) { SetLock(false); } if (m_fd != -1) { close(m_fd); } } private: //! Not copyable. CFileLock(const CFileLock&); //! Not assignable. CFileLock& operator=(const CFileLock&); /** Locks or unlocks the lock-file, returning true on success. */ bool SetLock(bool doLock) { struct flock lock; lock.l_type = (doLock ? F_WRLCK : F_UNLCK); // Lock the entire file lock.l_whence = SEEK_SET; lock.l_start = 0; lock.l_len = 0; // Keep trying if interrupted by a signal. while (true) { if (fcntl(m_fd, F_SETLKW, &lock) == 0) { return true; } else if ((errno != EACCES) && (errno != EAGAIN) && (errno != EINTR)) { // Not an error we can recover from. break; } } return false; } //! Desribtor of the file being locked. int m_fd; //! Specifies if the file-lock was aquired. bool m_ok; #endif }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Friend.cpp0000644000175000017500000001052612611472361020211 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "Friend.h" // Interface declarations. #include "SafeFile.h" // Needed for CFileDataIO #include "GuiEvents.h" // Needed for Notify_* void CFriend::Init() { m_dwLastSeen = 0; m_dwLastUsedIP = 0; m_nLastUsedPort = 0; m_dwLastChatted = 0; } CFriend::CFriend( const CMD4Hash& userhash, uint32 tm_dwLastSeen, uint32 tm_dwLastUsedIP, uint32 tm_nLastUsedPort, uint32 tm_dwLastChatted, const wxString& tm_strName) { m_dwLastSeen = tm_dwLastSeen; m_dwLastUsedIP = tm_dwLastUsedIP; m_nLastUsedPort = tm_nLastUsedPort; m_dwLastChatted = tm_dwLastChatted; m_UserHash = userhash; if (tm_strName.IsEmpty()) { m_strName = wxT("?"); } else { m_strName = tm_strName; } } CFriend::CFriend(CClientRef client) { LinkClient(client); m_dwLastChatted = 0; } void CFriend::LinkClient(CClientRef client) { wxASSERT(client.IsLinked()); // Link the friend to that client if (m_LinkedClient != client) { // do nothing if already linked to this client bool hadFriendslot = false; if (m_LinkedClient.IsLinked()) { // What, is already linked? hadFriendslot = m_LinkedClient.GetFriendSlot(); UnLinkClient(false); } m_LinkedClient = client; m_LinkedClient.SetFriend(this); if (hadFriendslot) { // move an assigned friend slot between different client instances which are/were also friends m_LinkedClient.SetFriendSlot(true); } } // always update (even if client stays the same) if ( !client.GetUserName().IsEmpty() ) { m_strName = client.GetUserName(); } else if (m_strName.IsEmpty()) { m_strName = wxT("?"); } m_UserHash = client.GetUserHash(); m_dwLastUsedIP = client.GetIP(); m_nLastUsedPort = client.GetUserPort(); m_dwLastSeen = time(NULL); // This will update the Link status also on GUI. Notify_ChatUpdateFriend(this); } void CFriend::UnLinkClient(bool notify) { if (m_LinkedClient.IsLinked()) { // avoid that an unwanted client instance keeps a friend slot if (m_LinkedClient.GetFriendSlot()) { m_LinkedClient.SetFriendSlot(false); CoreNotify_Upload_Resort_Queue(); } m_LinkedClient.SetFriend(NULL); m_LinkedClient.Unlink(); if (notify) { Notify_ChatUpdateFriend(this); } } } void CFriend::LoadFromFile(CFileDataIO* file) { wxASSERT( file ); m_UserHash = file->ReadHash(); m_dwLastUsedIP = file->ReadUInt32(); m_nLastUsedPort = file->ReadUInt16(); m_dwLastSeen = file->ReadUInt32(); m_dwLastChatted = file->ReadUInt32(); uint32 tagcount = file->ReadUInt32(); for ( uint32 j = 0; j != tagcount; j++) { CTag newtag(*file, true); switch ( newtag.GetNameID() ) { case FF_NAME: if (m_strName.IsEmpty()) { m_strName = newtag.GetStr(); } break; } } } void CFriend::WriteToFile(CFileDataIO* file) { wxASSERT( file ); file->WriteHash(m_UserHash); file->WriteUInt32(m_dwLastUsedIP); file->WriteUInt16(m_nLastUsedPort); file->WriteUInt32(m_dwLastSeen); file->WriteUInt32(m_dwLastChatted); uint32 tagcount = ( m_strName.IsEmpty() ? 0 : 2 ); file->WriteUInt32(tagcount); if ( !m_strName.IsEmpty() ) { CTagString nametag(FF_NAME, m_strName); nametag.WriteTagToFile(file, utf8strOptBOM); nametag.WriteTagToFile(file); } } bool CFriend::HasFriendSlot() { if (m_LinkedClient.IsLinked()) { return m_LinkedClient.GetFriendSlot(); } else { return false; } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Friend.h0000644000175000017500000000512112611472361017651 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef FRIEND_H #define FRIEND_H #include // Needed for CECID #include "MD4Hash.h" #include "ClientRef.h" // Needed for CClientRef class CFile; class CFileDataIO; #define FF_NAME 0x01 class CFriend : public CECID { friend class CFriendListRem; public: CFriend() { Init(); } ~CFriend() {}; CFriend(CClientRef client); CFriend( const CMD4Hash& userhash, uint32 tm_dwLastSeen, uint32 tm_dwLastUsedIP, uint32 tm_nLastUsedPort, uint32 tm_dwLastChatted, const wxString& tm_strName); CFriend(uint32 ecid) : CECID(ecid) { Init(); } void SetUserHash(const CMD4Hash& userhash) { m_UserHash = userhash;} bool HasHash() const { return !m_UserHash.IsEmpty(); } const CMD4Hash& GetUserHash() const { return m_UserHash; } void SetName(const wxString& name) { m_strName = name; } void LinkClient(CClientRef client); const CClientRef& GetLinkedClient() const { return m_LinkedClient; } void UnLinkClient(bool notify = true); bool HasFriendSlot(); const wxString& GetName() const { return m_strName; } uint16 GetPort() const { return m_nLastUsedPort; } uint32 GetIP() const { return m_dwLastUsedIP; } void LoadFromFile(CFileDataIO* file); void WriteToFile(CFileDataIO* file); private: void Init(); CClientRef m_LinkedClient; CMD4Hash m_UserHash; uint32 m_dwLastUsedIP; uint16 m_nLastUsedPort; wxString m_strName; // write-only info, never used (kept in order not to break the save file) uint32 m_dwLastSeen; uint32 m_dwLastChatted; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/FriendList.cpp0000644000175000017500000001553112611472361021046 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "FriendList.h" // Interface #include #include "amule.h" // Needed for theApp: let it first or fail under win32 #include "ClientList.h" // Needed for CClientList #include "updownclient.h" // Needed for CUpDownClient #include "Friend.h" // Needed for CFriend #include "CFile.h" #include "Logger.h" #include "GuiEvents.h" #include "Preferences.h" // Needed for thePrefs CFriendList::CFriendList() { } CFriendList::~CFriendList() { SaveList(); DeleteContents(m_FriendList); } void CFriendList::AddFriend(CFriend* toadd, bool notify) { m_FriendList.push_back(toadd); SaveList(); if (notify) { Notify_ChatUpdateFriend(toadd); } } void CFriendList::AddFriend(const CMD4Hash& userhash, uint32 lastUsedIP, uint32 lastUsedPort, const wxString& name, uint32 lastSeen, uint32 lastChatted) { CFriend* NewFriend = new CFriend( userhash, lastSeen, lastUsedIP, lastUsedPort, lastChatted, name); AddFriend( NewFriend ); } void CFriendList::AddFriend(const CClientRef& toadd) { if ( toadd.IsFriend() ) { return; } CFriend* NewFriend = new CFriend( toadd ); toadd.SetFriend(NewFriend); AddFriend(NewFriend, false); // has already notified } void CFriendList::RemoveFriend(CFriend* toremove) { if (toremove) { CClientRef client = toremove->GetLinkedClient(); if (client.IsLinked()) { client.SetFriendSlot(false); client.SetFriend(NULL); toremove->UnLinkClient(); } m_FriendList.remove(toremove); SaveList(); Notify_ChatRemoveFriend(toremove); // this deletes the friend } } void CFriendList::LoadList() { CPath metfile = CPath(thePrefs::GetConfigDir() + wxT("emfriends.met")); if (!metfile.FileExists()) { return; } CFile file; try { if ( file.Open(metfile) ) { if ( file.ReadUInt8() /*header*/ == MET_HEADER ) { uint32 nRecordsNumber = file.ReadUInt32(); for (uint32 i = 0; i < nRecordsNumber; i++) { CFriend* Record = new CFriend(); Record->LoadFromFile(&file); m_FriendList.push_back(Record); Notify_ChatUpdateFriend(Record); } } } else { AddLogLineN(_("Failed to open friend list file 'emfriends.met' for reading!")); } } catch (const CInvalidPacket& e) { AddDebugLogLineC(logGeneral, wxT("Invalid entry in friend list, file may be corrupt: ") + e.what()); } catch (const CSafeIOException& e) { AddDebugLogLineC(logGeneral, wxT("IO error while reading 'emfriends.met': ") + e.what()); } } void CFriendList::SaveList() { CFile file; if (file.Create(thePrefs::GetConfigDir() + wxT("emfriends.met"), true)) { try { file.WriteUInt8(MET_HEADER); file.WriteUInt32(m_FriendList.size()); for (FriendList::iterator it = m_FriendList.begin(); it != m_FriendList.end(); ++it) { (*it)->WriteToFile(&file); } } catch (const CIOFailureException& e) { AddDebugLogLineC(logGeneral, wxT("IO failure while saving 'emfriends.met': ") + e.what()); } } else { AddLogLineN(_("Failed to open friend list file 'emfriends.met' for writing!")); } } CFriend* CFriendList::FindFriend(const CMD4Hash& userhash, uint32 dwIP, uint16 nPort) { for(FriendList::iterator it = m_FriendList.begin(); it != m_FriendList.end(); ++it) { CFriend* cur_friend = *it; // to avoid that unwanted clients become a friend, we have to distinguish between friends with // a userhash and of friends which are identified by IP+port only. if ( !userhash.IsEmpty() && cur_friend->HasHash() ) { // check for a friend which has the same userhash as the specified one if (cur_friend->GetUserHash() == userhash) { return cur_friend; } } else if (cur_friend->GetIP() == dwIP && cur_friend->GetPort() == nPort) { if (!userhash.IsEmpty() && !cur_friend->HasHash() ) { // Friend without hash (probably IP entered through dialog) // -> save the hash cur_friend->SetUserHash(userhash); SaveList(); } return cur_friend; } } return NULL; } CFriend* CFriendList::FindFriend(uint32 ecid) { for (FriendList::iterator it = m_FriendList.begin(); it != m_FriendList.end(); ++it) { CFriend* cur_friend = *it; if (cur_friend->ECID() == ecid) { return cur_friend; } } return NULL; } bool CFriendList::IsAlreadyFriend( uint32 dwLastUsedIP, uint32 nLastUsedPort ) { return (FindFriend( CMD4Hash(), dwLastUsedIP, nLastUsedPort ) != NULL); } void CFriendList::RemoveAllFriendSlots() { for(FriendList::iterator it = m_FriendList.begin(); it != m_FriendList.end(); ++it) { CFriend* cur_friend = *it; if (cur_friend->GetLinkedClient().IsLinked()) { cur_friend->GetLinkedClient().SetFriendSlot(false); } } } void CFriendList::RequestSharedFileList(CFriend* cur_friend) { if (cur_friend) { CUpDownClient* client = cur_friend->GetLinkedClient().GetClient(); if (!client) { client = new CUpDownClient(cur_friend->GetPort(), cur_friend->GetIP(), 0, 0, 0, true, true); client->SetUserName(cur_friend->GetName()); theApp->clientlist->AddClient(client); cur_friend->LinkClient(CCLIENTREF(client, wxT("CFriendList::RequestSharedFileList"))); } client->RequestSharedFileList(); } } void CFriendList::SetFriendSlot(CFriend* Friend, bool new_state) { if (Friend && Friend->GetLinkedClient().IsLinked()) { RemoveAllFriendSlots(); Friend->GetLinkedClient().SetFriendSlot(new_state); CoreNotify_Upload_Resort_Queue(); } } void CFriendList::StartChatSession(CFriend* Friend) { if (Friend) { CUpDownClient* client = Friend->GetLinkedClient().GetClient(); if (!client) { client = new CUpDownClient(Friend->GetPort(), Friend->GetIP(), 0, 0, 0, true, true); client->SetIP(Friend->GetIP()); client->SetUserName(Friend->GetName()); theApp->clientlist->AddClient(client); Friend->LinkClient(CCLIENTREF(client, wxT("CFriendList::StartChatSession"))); } } else { AddLogLineC(_("CRITICAL - no client on StartChatSession")); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/FriendList.h0000644000175000017500000000543712611472361020517 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef FRIENDLIST_H #define FRIENDLIST_H #include "Types.h" // Needed for uint32 class wxString; class CFriend; class CMD4Hash; class CClientRef; class CFriendList { typedef std::list FriendList; public: CFriendList(); ~CFriendList(); bool IsAlreadyFriend(uint32 dwLastUsedIP, uint32 nLastUsedPort); void SaveList(); void LoadList(); CFriend* FindFriend(const CMD4Hash& userhash, uint32 dwIP, uint16 nPort); CFriend* FindFriend(uint32 ecid); void AddFriend(CFriend* toadd, bool notify = true); void AddFriend(const CClientRef& toadd); void AddFriend(const CMD4Hash& userhash, uint32 lastUsedIP, uint32 lastUsedPort, const wxString& name, uint32 lastSeen = 0, uint32 lastChatted = 0); void RemoveFriend(CFriend* toremove); void RequestSharedFileList(CFriend* Friend); void SetFriendSlot(CFriend* Friend, bool new_state); void StartChatSession(CFriend* Friend); void RemoveAllFriendSlots(); // Iterator class class const_iterator { // iterator for internal list FriendList::const_iterator m_it; public: // constructs const_iterator() {}; const_iterator(const FriendList::const_iterator& it) { m_it = it; }; // operators bool operator != (const const_iterator& it) const { return m_it != it.m_it; } const_iterator& operator ++ () { ++ m_it; return *this; } // prefix (assignable) void operator ++ (int) { ++ m_it; } // postfix (not assignable) const CFriend* operator * () { return *m_it; } }; // begin/end iterators for looping const_iterator begin() const { return const_iterator(m_FriendList.begin()); } const_iterator end() const { return const_iterator(m_FriendList.end()); } private: FriendList m_FriendList; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/FriendListCtrl.cpp0000644000175000017500000001645412611472361021700 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "FriendListCtrl.h" // Interface declarations #include #include #include "amule.h" // Needed for theApp #include "amuleDlg.h" // Needed for CamuleDlg #include "ClientDetailDialog.h" // Needed for CClientDetailDialog #include "AddFriend.h" // Needed for CAddFriend #include "ChatWnd.h" // Needed for CChatWnd #include "Friend.h" // Needed for CFriend #include "muuli_wdr.h" #include "SafeFile.h" #include "FriendList.h" // Needed for the friends list BEGIN_EVENT_TABLE(CFriendListCtrl, CMuleListCtrl) EVT_RIGHT_DOWN(CFriendListCtrl::OnRightClick) EVT_LIST_ITEM_ACTIVATED(ID_FRIENDLIST, CFriendListCtrl::OnItemActivated) EVT_MENU(MP_MESSAGE, CFriendListCtrl::OnSendMessage) EVT_MENU(MP_REMOVEFRIEND, CFriendListCtrl::OnRemoveFriend) EVT_MENU(MP_ADDFRIEND, CFriendListCtrl::OnAddFriend) EVT_MENU(MP_DETAIL, CFriendListCtrl::OnShowDetails) EVT_MENU(MP_SHOWLIST, CFriendListCtrl::OnViewFiles) EVT_MENU(MP_FRIENDSLOT, CFriendListCtrl::OnSetFriendslot) EVT_CHAR(CFriendListCtrl::OnKeyPressed) END_EVENT_TABLE() CFriendListCtrl::CFriendListCtrl(wxWindow* parent, int id, const wxPoint& pos, wxSize siz, int flags) : CMuleListCtrl(parent, id, pos, siz, flags) { InsertColumn(0, _("Username"), wxLIST_FORMAT_LEFT, siz.GetWidth() - 4); } CFriendListCtrl::~CFriendListCtrl() { } void CFriendListCtrl::RemoveFriend(CFriend* toremove) { if (!toremove) { return; } sint32 itemnr = FindItem(-1, reinterpret_cast(toremove)); if ( itemnr == -1 ) return; DeleteItem(itemnr); } void CFriendListCtrl::UpdateFriend(CFriend* toupdate) { if (!toupdate) { return; } sint32 itemnr = FindItem(-1, reinterpret_cast(toupdate)); if (itemnr == -1) { itemnr = InsertItem(GetItemCount(), wxEmptyString); SetItemPtrData(itemnr, reinterpret_cast(toupdate)); } SetItem(itemnr, 0, toupdate->GetName()); SetItemTextColour(itemnr, toupdate->GetLinkedClient().IsLinked() ? *wxBLUE : *wxBLACK); } void CFriendListCtrl::OnItemActivated(wxListEvent& WXUNUSED(event)) { int cursel = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); CFriend* cur_friend = reinterpret_cast(GetItemData(cursel)); /* ignore this one, it is not activated anymore :) */ if (cur_friend == NULL) { return; } theApp->amuledlg->m_chatwnd->StartSession(cur_friend); } void CFriendListCtrl::OnRightClick(wxMouseEvent& event) { int cursel = CheckSelection(event); CFriend* cur_friend = NULL; wxMenu* menu = new wxMenu(_("Friends")); if ( cursel != -1 ) { cur_friend = reinterpret_cast(GetItemData(cursel)); menu->Append(MP_DETAIL, _("Show &Details")); menu->Enable(MP_DETAIL, cur_friend->GetLinkedClient().IsLinked()); } menu->Append(MP_ADDFRIEND, _("Add a friend")); if (cursel != (-1)) { menu->Append(MP_REMOVEFRIEND, _("Remove Friend")); menu->Append(MP_MESSAGE, _("Send &Message")); menu->Append(MP_SHOWLIST, _("View Files")); menu->AppendCheckItem(MP_FRIENDSLOT, _("Establish Friend Slot")); if (cur_friend->GetLinkedClient().IsLinked()) { menu->Enable(MP_FRIENDSLOT, true); menu->Check(MP_FRIENDSLOT, cur_friend->HasFriendSlot()); } else { menu->Enable(MP_FRIENDSLOT, false); } } PopupMenu(menu, event.GetPosition()); delete menu; } void CFriendListCtrl::OnSendMessage(wxCommandEvent& WXUNUSED(event)) { long index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while( index != -1 ) { CFriend* cur_friend = reinterpret_cast(GetItemData(index)); theApp->amuledlg->m_chatwnd->StartSession(cur_friend); //#warning CORE/GUI! #ifndef CLIENT_GUI theApp->friendlist->StartChatSession(cur_friend); #endif index = GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } } void CFriendListCtrl::OnRemoveFriend(wxCommandEvent& WXUNUSED(event)) { wxString question; if (GetSelectedItemCount() == 1) { question = _("Are you sure that you wish to delete the selected friend?"); } else { question = _("Are you sure that you wish to delete the selected friends?"); } if ( wxMessageBox( question, _("Cancel"), wxICON_QUESTION | wxYES_NO, this) == wxYES ) { long index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while( index != -1 ) { CFriend* cur_friend = reinterpret_cast(GetItemData(index)); theApp->friendlist->RemoveFriend(cur_friend); // -1 because we changed the list and removed that item. index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } } } void CFriendListCtrl::OnAddFriend(wxCommandEvent& WXUNUSED(event)) { CAddFriend(this).ShowModal(); } void CFriendListCtrl::OnShowDetails(wxCommandEvent& WXUNUSED(event)) { long index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while( index != -1 ) { CFriend* cur_friend = reinterpret_cast(GetItemData(index)); if (cur_friend->GetLinkedClient().IsLinked()) { CClientDetailDialog(this, cur_friend->GetLinkedClient()).ShowModal(); } index = GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } } void CFriendListCtrl::OnViewFiles(wxCommandEvent& WXUNUSED(event)) { long index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while( index != -1 ) { CFriend* cur_friend = reinterpret_cast(GetItemData(index)); theApp->friendlist->RequestSharedFileList(cur_friend); index = GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } } void CFriendListCtrl::OnSetFriendslot(wxCommandEvent& event) { // Get item long index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); CFriend* cur_friend = reinterpret_cast(GetItemData(index)); theApp->friendlist->SetFriendSlot(cur_friend, event.IsChecked()); index = GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); if (index != -1) { wxMessageBox(_("You are not allowed to set more than one friendslot.\n Only one slot was assigned."), _("Multiple selection"), wxOK | wxICON_ERROR, this); } } void CFriendListCtrl::OnKeyPressed(wxKeyEvent& event) { // Check if delete was pressed if ((event.GetKeyCode() == WXK_DELETE) || (event.GetKeyCode() == WXK_NUMPAD_DELETE)) { if (GetItemCount()) { wxCommandEvent evt; evt.SetId( MP_REMOVEFRIEND ); OnRemoveFriend( evt ); } } else { event.Skip(); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/FriendListCtrl.h0000644000175000017500000000366612611472361021346 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef FRIENDLISTCTRL_H #define FRIENDLISTCTRL_H #include "MuleListCtrl.h" #include "MD4Hash.h" class wxString; class CFriend; class CFriendListCtrl : public CMuleListCtrl { public: CFriendListCtrl(wxWindow* parent, int id, const wxPoint& pos, wxSize siz, int flags); ~CFriendListCtrl(); void UpdateFriend(CFriend* toupdate); void RemoveFriend(CFriend* todel); protected: DECLARE_EVENT_TABLE() void OnRightClick(wxMouseEvent& event); private: void OnItemActivated(wxListEvent& event); // Menu Items void OnShowDetails(wxCommandEvent& event); void OnSendMessage(wxCommandEvent& event); void OnRemoveFriend(wxCommandEvent& event); void OnSetFriendslot(wxCommandEvent& event); void OnAddFriend(wxCommandEvent& event); void OnViewFiles(wxCommandEvent& event); void OnKeyPressed(wxKeyEvent& event); }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/GapList.cpp0000644000175000017500000002216612611472361020350 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2008-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "Types.h" #include // for PARTSIZE #include "GapList.h" #include "Logger.h" #include void CGapList::Init(uint64 fileSize, bool isEmpty) { m_filesize = fileSize; m_iPartCount = fileSize / PARTSIZE + 1; m_sizeLastPart = fileSize % PARTSIZE; // file with size of n * PARTSIZE if (m_sizeLastPart == 0 && fileSize) { // that's only for pre-init in ctor m_sizeLastPart = PARTSIZE; m_iPartCount--; } m_gaplist.clear(); m_partsComplete.clear(); if (isEmpty) { m_partsComplete.resize(m_iPartCount, incomplete); AddGap(0, fileSize - 1); m_totalGapSize = fileSize; } else { m_partsComplete.resize(m_iPartCount, complete); m_totalGapSize = 0; } m_totalGapSizeValid = true; } void CGapList::AddGap(uint64 gapstart, uint64 gapend) { if (!ArgCheck(gapstart, gapend)) { return; } // AddDebugLogLineN(logPartFile, CFormat(wxT(" AddGap: %5d - %5d")) % gapstart % gapend); // mark involved part(s) as incomplete uint16 partlast = gapend / PARTSIZE; for (uint16 part = gapstart / PARTSIZE; part <= partlast; part++) { m_partsComplete[part] = incomplete; } // total gap size has to be recalculated m_totalGapSizeValid = false; // find a place to start: // first gap which ends >= our gap start - 1 // (-1 so we can join adjacent gaps) iterator it = m_gaplist.lower_bound(gapstart > 0 ? gapstart - 1 : 0); while (it != m_gaplist.end()) { iterator it2 = it++; uint64 curGapStart = it2->second; uint64 curGapEnd = it2->first; if (curGapStart >= gapstart && curGapEnd <= gapend) { // this gap is inside the new gap - delete m_gaplist.erase(it2); } else if (curGapStart >= gapstart && curGapStart <= gapend + 1) { // head of this gap is in the new gap, or this gap is // directly behind the new gap - extend limit and delete gapend = curGapEnd; m_gaplist.erase(it2); } else if (curGapEnd <= gapend && curGapEnd >= gapstart - 1) { // tail of this gap is in the new gap, or this gap is // directly before the new gap - extend limit and delete gapstart = curGapStart; m_gaplist.erase(it2); } else if (curGapStart <= gapstart && curGapEnd >= gapend) { // new gap is already inside this gap - return return; // now all cases of overlap are ruled out } else if (curGapStart > gapstart) { // this gap is the first behind the new gap -> insert before it it = it2; break; } } // for fastest insertion point to the element AFTER which we want to insert if (it != m_gaplist.begin()) { --it; } m_gaplist.insert(it, std::pair(gapend, gapstart)); } void CGapList::AddGap(uint16 part) { if (part >= m_iPartCount) { wxFAIL; return; } uint64 gapstart = part * PARTSIZE; uint64 gapend = gapstart + GetPartSize(part) - 1; AddGap(gapstart, gapend); m_partsComplete[part] = incomplete; } void CGapList::FillGap(uint64 partstart, uint64 partend) { if (!ArgCheck(partstart, partend)) { return; } // AddDebugLogLineN(logPartFile, CFormat(wxT(" FillGap: %5d - %5d")) % partstart % partend); // mark involved part(s) to be reexamined for completeness uint16 partlast = partend / PARTSIZE; for (uint16 part = partstart / PARTSIZE; part <= partlast; part++) { m_partsComplete[part] = unknown; } // also total gap size m_totalGapSizeValid = false; // find a place to start: // first gap which ends >= our part start iterator it = m_gaplist.lower_bound(partstart); while (it != m_gaplist.end()) { iterator it2 = it++; uint64 curGapStart = it2->second; uint64 curGapEnd = it2->first; if (curGapStart >= partstart) { if (curGapEnd <= partend) { // our part fills this gap completly m_gaplist.erase(it2); } else if (curGapStart <= partend) { // lower part of this gap is in the part - shrink gap: // (this is the most common case: curGapStart == partstart && curGapEnd > partend) it2->second = partend + 1; // end of our part was in the gap: we're done break; } else { // gap starts behind our part end: we're done break; } } else { // curGapStart < partstart if (curGapEnd > partend) { // our part is completely enclosed by the gap // cut it in two, leaving our part out: // shrink the gap so it becomes the second gap it2->second = partend + 1; // insert new first gap iterator it3(it2); if (it3 != m_gaplist.begin()) { --it3; } m_gaplist.insert(it3, std::pair(partstart - 1, curGapStart)); // we're done break; } else if (curGapEnd >= partstart) { // upper part of this gap is in the part - shrink gap: // insert shorter gap iterator it3(it2); if (it3 != m_gaplist.begin()) { --it3; } m_gaplist.insert(it3, std::pair(partstart - 1, curGapStart)); // and delete the old one m_gaplist.erase(it2); } // else: gap is before our part start (should not happen) } } } void CGapList::FillGap(uint16 part) { if (part >= m_iPartCount) { wxFAIL; return; } uint64 gapstart = part * PARTSIZE; uint64 gapend = gapstart + GetPartSize(part) - 1; FillGap(gapstart, gapend); m_partsComplete[part] = complete; } uint64 CGapList::GetGapSize() { if (!m_totalGapSizeValid) { m_totalGapSizeValid = true; m_totalGapSize = 0; ListType::const_iterator it = m_gaplist.begin(); for (; it != m_gaplist.end(); ++it) { m_totalGapSize += it->first - it->second + 1; } } return m_totalGapSize; } uint32 CGapList::GetGapSize(uint16 part) const { uint64 uRangeStart = part * PARTSIZE; uint64 uRangeEnd = uRangeStart + GetPartSize(part) - 1; uint64 uTotalGapSize = 0; // find a place to start: // first gap which ends >= our gap start ListType::const_iterator it = m_gaplist.lower_bound(uRangeStart); for (; it != m_gaplist.end(); ++it) { uint64 curGapStart = it->second; uint64 curGapEnd = it->first; if (curGapStart <= uRangeStart && curGapEnd >= uRangeEnd) { // total range is in this gap uTotalGapSize += uRangeEnd - uRangeStart + 1; break; } else if (curGapStart >= uRangeStart) { if (curGapStart <= uRangeEnd) { // start of this gap is in our range uTotalGapSize += std::min(curGapEnd, uRangeEnd) - curGapStart + 1; } else { // this gap starts behind our range break; } } else if (curGapEnd >= uRangeStart && curGapEnd <= uRangeEnd) { // end of this gap is in our range uTotalGapSize += curGapEnd - uRangeStart + 1; } } wxASSERT( uTotalGapSize <= uRangeEnd - uRangeStart + 1 ); return uTotalGapSize; } bool CGapList::IsComplete(uint64 gapstart, uint64 gapend) const { if (!ArgCheck(gapstart, gapend)) { return false; } // find a place to start: // first gap which ends >= our gap start ListType::const_iterator it = m_gaplist.lower_bound(gapstart); for (; it != m_gaplist.end(); ++it) { uint64 curGapStart = it->second; uint64 curGapEnd = it->first; if ( (curGapStart >= gapstart && curGapEnd <= gapend) ||(curGapStart >= gapstart && curGapStart <= gapend) ||(curGapEnd <= gapend && curGapEnd >= gapstart) ||(gapstart >= curGapStart && gapend <= curGapEnd)) { return false; } if (curGapStart > gapend) { break; } } return true; } bool CGapList::IsComplete(uint16 part) { // There is a bug in the ED2K protocol: // For files of size n * PARTSIZE one part too much is transmitted in the availability bitfield. // Allow completion detection of this dummy part, and always report it as complete // (so it doesn't get asked for). if (part == m_iPartCount && m_sizeLastPart == PARTSIZE) { return true; } // Remaining error check if (part >= m_iPartCount) { wxFAIL; return false; } ePartComplete status = (ePartComplete) m_partsComplete[part]; if (status == unknown) { uint64 partstart = part * PARTSIZE; uint64 partend = partstart + GetPartSize(part) - 1; status = IsComplete(partstart, partend) ? complete : incomplete; m_partsComplete[part] = status; } return status == complete; } inline bool CGapList::ArgCheck(uint64 gapstart, uint64 &gapend) const { // end < start: serious error if (gapend < gapstart) { wxFAIL; return false; } // gaps shouldn't go past file anymore either if (gapend >= m_filesize) { wxFAIL; gapend = m_filesize - 1; // fix it } return true; } amule_2.3.1+git20151120.0023527bc2.orig/src/GapList.h0000644000175000017500000000725412611472361020016 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2008-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef GAPLIST_H #define GAPLIST_H #include class CGapList { private: // The internal gap list: // Each gap is stored as a map entry. // The first (key) is the end, the second (value) the start. typedef std::map ListType; typedef ListType::iterator iterator; ListType m_gaplist; // size of the part file the list belongs to uint64 m_filesize; // number of parts uint16 m_iPartCount; // size of the last part uint32 m_sizeLastPart; // total gapsize uint64 m_totalGapSize; // flag if it's valid bool m_totalGapSizeValid; // cache completeness of parts enum ePartComplete { complete, incomplete, unknown }; std::vector m_partsComplete; // get size of any part uint32 GetPartSize(uint16 part) const { return part == m_iPartCount - 1 ? m_sizeLastPart : PARTSIZE; } // check arguments, clip end, false: error inline bool ArgCheck(uint64 gapstart, uint64 &gapend) const; public: // construct CGapList() { Init(0, false); } // NO MORE uninitialized variables >:( // setup (and eventually clear) list, optionally as empty (one large gap) void Init(uint64 fileSize, bool empty); // add a gap for a range void AddGap(uint64 gapstart, uint64 gapend); // add a gap for a part void AddGap(uint16 part); // fill a gap for a range void FillGap(uint64 gapstart, uint64 gapend); // fill a gap for a part void FillGap(uint16 part); // Is this range complete ? bool IsComplete(uint64 gapstart, uint64 gapend) const; // Is this part complete ? bool IsComplete(uint16 part); // Is the whole file complete ? bool IsComplete() const { return m_gaplist.empty(); } // number of gaps uint32 size() const { return m_gaplist.size(); } // no gaps ? bool empty() const { return m_gaplist.empty(); } // size of all gaps uint64 GetGapSize(); // size of gaps inside one part uint32 GetGapSize(uint16 part) const; // Iterator class to loop through the gaps read-only // Gaps are returned just as start/end value class const_iterator { // iterator for internal list ListType::const_iterator m_it; public: // constructs const_iterator() {}; const_iterator(const ListType::const_iterator& it) { m_it = it; }; // operators bool operator != (const const_iterator& it) const { return m_it != it.m_it; } const_iterator& operator ++ () { ++ m_it; return *this; } // get start of gap pointed to uint64 start() const { return (* m_it).second; } // get end of gap pointed to uint64 end() const { return (* m_it).first; } }; // begin/end iterators for looping const_iterator begin() const { return const_iterator(m_gaplist.begin()); } const_iterator end() const { return const_iterator(m_gaplist.end()); } }; #endif // GAPLIST_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/GenericClientListCtrl.cpp0000644000175000017500000012132212611472361023173 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "GenericClientListCtrl.h" #include #include #include // Needed for CFormat #include "amule.h" // Needed for theApp #include "amuleDlg.h" // Needed for CamuleDlg #include "BarShader.h" // Needed for CBarShader #include "BitVector.h" #include "ClientDetailDialog.h" // Needed for CClientDetailDialog #include "ChatWnd.h" // Needed for CChatWnd #include "CommentDialogLst.h" // Needed for CCommentDialogLst #include "DataToText.h" // Needed for PriorityToStr #include "FileDetailDialog.h" // Needed for CFileDetailDialog #include "GetTickCount.h" // Needed for GetTickCount #include "GuiEvents.h" // Needed for CoreNotify_* #ifdef ENABLE_IP2COUNTRY #include "IP2Country.h" // Needed for IP2Country #endif #include "Logger.h" #include "muuli_wdr.h" // Needed for ID_DLOADLIST #include "PartFile.h" // Needed for CPartFile #include "Preferences.h" #include "SharedFileList.h" // Needed for CSharedFileList #include "TerminationProcess.h" // Needed for CTerminationProcess #include "ClientRef.h" // Needed for CClientRef #include "FriendList.h" struct ClientCtrlItem_Struct { ClientCtrlItem_Struct() : dwUpdated(0), status(NULL), m_owner(NULL), m_type(UNAVAILABLE_SOURCE) { } ~ClientCtrlItem_Struct() { delete status; } SourceItemType GetType() const { return m_type; } CKnownFile* GetOwner() const { return m_owner; } CClientRef& GetSource() { return m_sourceValue; } void SetContents(CKnownFile* owner, const CClientRef& source, SourceItemType type) { m_owner = owner; m_sourceValue = source; m_type = type; } void SetType(SourceItemType type) { m_type = type; } uint32 dwUpdated; wxBitmap* status; private: CKnownFile* m_owner; CClientRef m_sourceValue; SourceItemType m_type; }; #define m_ImageList theApp->amuledlg->m_imagelist BEGIN_EVENT_TABLE(CGenericClientListCtrl, CMuleListCtrl) EVT_LIST_ITEM_ACTIVATED(wxID_ANY, CGenericClientListCtrl::OnItemActivated) EVT_LIST_ITEM_RIGHT_CLICK(wxID_ANY, CGenericClientListCtrl::OnMouseRightClick) EVT_LIST_ITEM_MIDDLE_CLICK(wxID_ANY, CGenericClientListCtrl::OnMouseMiddleClick) EVT_CHAR( CGenericClientListCtrl::OnKeyPressed ) EVT_MENU( MP_CHANGE2FILE, CGenericClientListCtrl::OnSwapSource ) EVT_MENU( MP_SHOWLIST, CGenericClientListCtrl::OnViewFiles ) EVT_MENU( MP_ADDFRIEND, CGenericClientListCtrl::OnAddFriend ) EVT_MENU( MP_FRIENDSLOT, CGenericClientListCtrl::OnSetFriendslot ) EVT_MENU( MP_SENDMESSAGE, CGenericClientListCtrl::OnSendMessage ) EVT_MENU( MP_DETAIL, CGenericClientListCtrl::OnViewClientInfo ) END_EVENT_TABLE() //! This listtype is used when gathering the selected items. typedef std::list ItemList; CGenericClientListCtrl::CGenericClientListCtrl( const wxString& tablename, wxWindow *parent, wxWindowID winid, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name ) : CMuleListCtrl( parent, winid, pos, size, style | wxLC_OWNERDRAW | wxLC_VRULES | wxLC_HRULES, validator, name ), m_columndata(0, NULL) { // Setting the sorter function must be done in the derived class, to use the translation function correctly. // SetSortFunc( SortProc ); // Set the table-name (for loading and saving preferences). SetTableName( tablename ); m_menu = NULL; m_showing = false; m_hilightBrush = CMuleColour(wxSYS_COLOUR_HIGHLIGHT).Blend(125).GetBrush(); m_hilightUnfocusBrush = CMuleColour(wxSYS_COLOUR_BTNSHADOW).Blend(125).GetBrush(); m_clientcount = 0; } wxString CGenericClientListCtrl::TranslateCIDToName(GenericColumnEnum cid) { wxString name; switch (cid) { case ColumnUserName: name = wxT("N"); break; case ColumnUserDownloaded: name = wxT("D"); break; case ColumnUserUploaded: name = wxT("U"); break; case ColumnUserSpeedDown: name = wxT("S"); break; case ColumnUserSpeedUp: name = wxT("s"); break; case ColumnUserProgress: name = wxT("P"); break; case ColumnUserAvailable: name = wxT("A"); break; case ColumnUserVersion: name = wxT("V"); break; case ColumnUserQueueRankLocal: name = wxT("Q"); break; case ColumnUserQueueRankRemote: name = wxT("q"); break; case ColumnUserOrigin: name = wxT("O"); break; case ColumnUserFileNameDownload: name = wxT("F"); break; case ColumnUserFileNameUpload: name = wxT("f"); break; case ColumnUserFileNameDownloadRemote: name = wxT("R"); break; case ColumnUserSharedFiles: name = wxT("m"); break; case ColumnInvalid: default: wxFAIL; break; } return name; } void CGenericClientListCtrl::InitColumnData() { if (!m_columndata.n_columns) { throw wxString(wxT("CRITICAL: Initialization of the column data lacks subclass information")); } for (int i = 0; i < m_columndata.n_columns; ++i) { InsertColumn( i, wxGetTranslation(m_columndata.columns[i].title), wxLIST_FORMAT_LEFT, m_columndata.columns[i].width, TranslateCIDToName(m_columndata.columns[i].cid)); } LoadSettings(); } CGenericClientListCtrl::~CGenericClientListCtrl() { while ( !m_ListItems.empty() ) { delete m_ListItems.begin()->second; m_ListItems.erase( m_ListItems.begin() ); } } void CGenericClientListCtrl::RawAddSource(CKnownFile* owner, CClientRef source, SourceItemType type) { ClientCtrlItem_Struct* newitem = new ClientCtrlItem_Struct; newitem->SetContents(owner, source, type); m_ListItems.insert( ListItemsPair(source.ECID(), newitem) ); long item = InsertItem( GetItemCount(), wxEmptyString ); SetItemPtrData( item, reinterpret_cast(newitem) ); SetItemBackgroundColour( item, GetBackgroundColour() ); } void CGenericClientListCtrl::AddSource(CKnownFile* owner, const CClientRef& source, SourceItemType type) { wxCHECK_RET(owner, wxT("NULL owner in CGenericClientListCtrl::AddSource")); wxCHECK_RET(source.IsLinked(), wxT("Unlinked source in CGenericClientListCtrl::AddSource")); // Update the other instances of this source bool bFound = false; ListIteratorPair rangeIt = m_ListItems.equal_range(source.ECID()); for ( ListItems::iterator it = rangeIt.first; it != rangeIt.second; ++it ) { ClientCtrlItem_Struct* cur_item = it->second; // Check if this source has been already added to this file => to be sure if ( cur_item->GetOwner() == owner ) { // Update this instance with its new setting if ((type == A4AF_SOURCE) && cur_item->GetSource().GetRequestFile() && std::binary_search(m_knownfiles.begin(), m_knownfiles.end(), cur_item->GetSource().GetRequestFile())) { cur_item->SetContents(owner, source, AVAILABLE_SOURCE); } else { cur_item->SetContents(owner, source, type); } cur_item->dwUpdated = 0; bFound = true; } else if ( type == AVAILABLE_SOURCE ) { // The state 'Available' is exclusive cur_item->SetContents(cur_item->GetOwner(), source, A4AF_SOURCE); cur_item->dwUpdated = 0; } } if ( bFound ) { return; } if ( std::binary_search(m_knownfiles.begin(), m_knownfiles.end(), owner) ) { RawAddSource(owner, source, type); ShowSourcesCount( 1 ); } } void CGenericClientListCtrl::RawRemoveSource( ListItems::iterator& it) { ClientCtrlItem_Struct* item = it->second; long index = FindItem( -1, reinterpret_cast(item) ); if ( index > -1 ) { DeleteItem( index ); } delete item; // Remove it from the m_ListItems m_ListItems.erase( it ); } void CGenericClientListCtrl::RemoveSource(uint32 source, const CKnownFile* owner) { // A NULL owner means remove it no matter what. wxCHECK_RET(source, wxT("NULL source in CGenericClientListCtrl::RemoveSource")); // Retrieve all entries matching the source ListIteratorPair rangeIt = m_ListItems.equal_range(source); int removedItems = 0; for ( ListItems::iterator it = rangeIt.first; it != rangeIt.second; /* no ++, it happens later */) { ListItems::iterator tmp = it++; if ( owner == NULL || owner == tmp->second->GetOwner() ) { RawRemoveSource(tmp); ++removedItems; } } ShowSourcesCount((-1) * removedItems); } void CGenericClientListCtrl::UpdateItem(uint32 toupdate, SourceItemType type) { // Retrieve all entries matching the source ListIteratorPair rangeIt = m_ListItems.equal_range( toupdate ); if ( rangeIt.first != rangeIt.second ) { // Visible lines, default to all because not all platforms // support the GetVisibleLines function long first = 0, last = GetItemCount(); #ifndef __WINDOWS__ // Get visible lines if we need them GetVisibleLines( &first, &last ); #endif for ( ListItems::iterator it = rangeIt.first; it != rangeIt.second; ++it ) { ClientCtrlItem_Struct* item = it->second; long index = FindItem( -1, reinterpret_cast(item) ); if ((type == A4AF_SOURCE) && item->GetSource().GetRequestFile() && std::binary_search(m_knownfiles.begin(), m_knownfiles.end(), item->GetSource().GetRequestFile())) { item->SetType(AVAILABLE_SOURCE); } else { item->SetType(type); } item->dwUpdated = 0; // Only update visible lines if ( index >= first && index <= last) { RefreshItem( index ); } } } } void CGenericClientListCtrl::ShowSources( const CKnownFileVector& files ) { Freeze(); // The stored vector is sorted, as is the received one, so we can use binary_search for (unsigned i = 0; i < m_knownfiles.size(); ++i) { // Files that are not in the new list must have show set to false. if (!std::binary_search(files.begin(), files.end(), m_knownfiles[i])) { SetShowSources(m_knownfiles[i], false); } } // This will call again SetShowSources in files that were in both vectors. Right now // that function is just a inline setter, so any way to prevent it would be wasteful, // but this must be reviewed if that fact changes. for (unsigned i = 0; i < files.size(); ++i) { SetShowSources(files[i], true); } // We must cleanup sources that are not in the received files. int itemDiff = 0; for (ListItems::iterator it = m_ListItems.begin(); it != m_ListItems.end(); /* no ++, it happens later */) { ListItems::iterator tmp = it++; ClientCtrlItem_Struct* item = tmp->second; if (!std::binary_search(files.begin(), files.end(), item->GetOwner())) { // Remove it from the m_ListItems RawRemoveSource(tmp); --itemDiff; } } for (unsigned i = 0; i < files.size(); ++i) { // Only those that weren't showing already if (!std::binary_search(m_knownfiles.begin(), m_knownfiles.end(), files[i])) { CKnownFile* file = files[i]; wxASSERT_MSG(file, wxT("NULL file in CGenericClientListCtrl::ShowSources")); if (file) { CKnownFile::SourceSet::const_iterator it; if (IsShowingDownloadSources()) { const CKnownFile::SourceSet& normSources = (dynamic_cast( file ))->GetSourceList(); const CKnownFile::SourceSet& a4afSources = (dynamic_cast( file ))->GetA4AFList(); // Adding normal sources for ( it = normSources.begin(); it != normSources.end(); ++it ) { switch (it->GetDownloadState()) { case DS_DOWNLOADING: case DS_ONQUEUE: RawAddSource( file, *it, AVAILABLE_SOURCE ); ++itemDiff; break; default: // Any other state RawAddSource( file, *it, UNAVAILABLE_SOURCE ); ++itemDiff; } } // Adding A4AF sources for ( it = a4afSources.begin(); it != a4afSources.end(); ++it ) { // Only add if the A4AF file is not in the shown list. if (!std::binary_search(files.begin(), files.end(), it->GetRequestFile())) { RawAddSource( file, *it, A4AF_SOURCE ); ++itemDiff; } } } else { // Known file const CKnownFile::SourceSet& sources = file->m_ClientUploadList; for ( it = sources.begin(); it != sources.end(); ++it ) { switch (it->GetUploadState()) { case US_UPLOADING: case US_ONUPLOADQUEUE: RawAddSource( file, *it, AVAILABLE_SOURCE ); ++itemDiff; break; default: // Any other state RawAddSource( file, *it, UNAVAILABLE_SOURCE ); ++itemDiff; } } } } } } m_knownfiles = files; ShowSourcesCount( itemDiff ); SortList(); Thaw(); } /** * Helper-function: This function is used to gather selected items. * * @param list A pointer to the list to gather items from. * @return A list containing the selected items of the choosen types. */ ItemList GetSelectedItems( CGenericClientListCtrl* list ) { ItemList results; long index = list->GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while ( index > -1 ) { ClientCtrlItem_Struct* item = reinterpret_cast(list->GetItemData( index )); results.push_back( item ); index = list->GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } return results; } void CGenericClientListCtrl::OnSwapSource( wxCommandEvent& WXUNUSED(event) ) { ItemList sources = ::GetSelectedItems( this ); for ( ItemList::iterator it = sources.begin(); it != sources.end(); ++it ) { CKnownFile * kf = (*it)->GetOwner(); if (!kf->IsPartFile()) { wxFAIL_MSG(wxT("File is not a partfile when swapping sources")); continue; } (*it)->GetSource().SwapToAnotherFile( true, false, false, dynamic_cast(kf)); } } void CGenericClientListCtrl::OnViewFiles( wxCommandEvent& WXUNUSED(event) ) { ItemList sources = ::GetSelectedItems( this ); if ( sources.size() == 1 ) { sources.front()->GetSource().RequestSharedFileList(); } } void CGenericClientListCtrl::OnAddFriend( wxCommandEvent& WXUNUSED(event) ) { ItemList sources = ::GetSelectedItems( this ); for ( ItemList::iterator it = sources.begin(); it != sources.end(); ++it ) { CClientRef &client = (*it)->GetSource(); if (client.IsFriend()) { theApp->friendlist->RemoveFriend(client.GetFriend()); } else { theApp->friendlist->AddFriend(client); } } } void CGenericClientListCtrl::OnSetFriendslot(wxCommandEvent& evt) { ItemList sources = ::GetSelectedItems( this ); ItemList::iterator it = sources.begin(); if (it != sources.end()) { CClientRef &client = (*it)->GetSource(); theApp->friendlist->SetFriendSlot(client.GetFriend(), evt.IsChecked()); ++it; } if (it != sources.end()) { wxMessageBox(_("You are not allowed to set more than one friendslot.\n Only one slot was assigned."), _("Multiple selection"), wxOK | wxICON_ERROR, this); } } void CGenericClientListCtrl::OnSendMessage( wxCommandEvent& WXUNUSED(event) ) { ItemList sources = ::GetSelectedItems( this ); if ( sources.size() == 1 ) { CClientRef & source = (sources.front())->GetSource(); // These values are cached, since calling wxGetTextFromUser will // start an event-loop, in which the client may be deleted. wxString userName = source.GetUserName(); uint64 userID = GUI_ID(source.GetIP(), source.GetUserPort()); wxString message = ::wxGetTextFromUser(_("Send message to user"), _("Message to send:")); if ( !message.IsEmpty() ) { theApp->amuledlg->m_chatwnd->SendMessage(message, userName, userID); } } } void CGenericClientListCtrl::OnViewClientInfo( wxCommandEvent& WXUNUSED(event) ) { ItemList sources = ::GetSelectedItems( this ); if ( sources.size() == 1 ) { CClientDetailDialog( this, sources.front()->GetSource() ).ShowModal(); } } void CGenericClientListCtrl::OnItemActivated( wxListEvent& evt ) { CClientDetailDialog( this, reinterpret_cast(GetItemData( evt.GetIndex()))->GetSource() ).ShowModal(); } void CGenericClientListCtrl::OnMouseRightClick(wxListEvent& evt) { long index = CheckSelection(evt); if (index < 0) { return; } delete m_menu; m_menu = NULL; ClientCtrlItem_Struct* item = reinterpret_cast(GetItemData( index )); CClientRef& client = item->GetSource(); m_menu = new wxMenu(wxT("Clients")); m_menu->Append(MP_DETAIL, _("Show &Details")); m_menu->Append(MP_ADDFRIEND, client.IsFriend() ? _("Remove from friends") : _("Add to Friends")); m_menu->AppendCheckItem(MP_FRIENDSLOT, _("Establish Friend Slot")); if (client.IsFriend()) { m_menu->Enable(MP_FRIENDSLOT, true); m_menu->Check(MP_FRIENDSLOT, client.GetFriendSlot()); } else { m_menu->Enable(MP_FRIENDSLOT, false); } m_menu->Append(MP_SHOWLIST, _("View Files")); m_menu->Append(MP_SENDMESSAGE, _("Send message")); m_menu->Append(MP_CHANGE2FILE, _("Swap to this file")); // Only enable the Swap option for A4AF sources m_menu->Enable(MP_CHANGE2FILE, (item->GetType() == A4AF_SOURCE)); // We need a valid IP if we are to message the client m_menu->Enable(MP_SENDMESSAGE, (client.GetIP() != 0)); m_menu->Enable(MP_SHOWLIST, !client.HasDisabledSharedFiles()); PopupMenu(m_menu, evt.GetPoint()); delete m_menu; m_menu = NULL; } void CGenericClientListCtrl::OnMouseMiddleClick(wxListEvent& evt) { // Check if clicked item is selected. If not, unselect all and select it. long index = CheckSelection(evt); if ( index < 0 ) { return; } CClientDetailDialog(this, reinterpret_cast(GetItemData( index ))->GetSource()).ShowModal(); } void CGenericClientListCtrl::OnKeyPressed( wxKeyEvent& event ) { // No actions right now. //switch (event.GetKeyCode()) { // default: event.Skip(); //} } void CGenericClientListCtrl::OnDrawItem( int item, wxDC* dc, const wxRect& rect, const wxRect& rectHL, bool highlighted) { // Don't do any drawing if there's nobody to see it. if ( !theApp->amuledlg->IsDialogVisible( GetParentDialog() ) ) { return; } ClientCtrlItem_Struct* content = reinterpret_cast(GetItemData(item)); // Define text-color and background // and the border of the drawn area if (highlighted) { CMuleColour colour; if (GetFocus()) { dc->SetBackground(m_hilightBrush); colour = m_hilightBrush.GetColour(); } else { dc->SetBackground(m_hilightUnfocusBrush); colour = m_hilightUnfocusBrush.GetColour(); } dc->SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT)); dc->SetPen( colour.Blend(65).GetPen() ); } else { dc->SetBackground(*(wxTheBrushList->FindOrCreateBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOX), wxSOLID))); dc->SetTextForeground(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); dc->SetPen(*wxTRANSPARENT_PEN); } dc->SetBrush( dc->GetBackground() ); dc->DrawRectangle( rectHL.x, rectHL.y, rectHL.width, rectHL.height ); dc->SetPen(*wxTRANSPARENT_PEN); // Various constant values we use const int iTextOffset = (( rect.GetHeight() - dc->GetCharHeight() ) / 2) + 1 /* Fixes rounding in the centering math, much easier than floor() */; const int iOffset = 2; wxASSERT(m_ImageList.GetImageCount() > 0); int imageListBitmapYOffset = 0; int imageListBitmapXSize = 0; if (m_ImageList.GetSize(0, imageListBitmapXSize, imageListBitmapYOffset)) { imageListBitmapXSize += 2; // Padding. imageListBitmapYOffset = ((rect.GetHeight() - imageListBitmapYOffset) / 2) + 1 /* Fixes rounding like above */; } else { wxFAIL; } wxRect cur_rec( iOffset, rect.y, 0, rect.height ); for (int i = 0; i < GetColumnCount(); ++i) { int columnwidth = GetColumnWidth(i); if (columnwidth > 2*iOffset) { // Make a copy of the current rectangle so we can apply specific tweaks wxRect target_rec = cur_rec; target_rec.width = columnwidth - 2*iOffset; GenericColumnEnum cid = m_columndata.columns[i].cid; // Draw the item DrawClientItem(dc, cid, target_rec, content, iTextOffset, imageListBitmapYOffset, imageListBitmapXSize); } // Increment to the next column cur_rec.x += columnwidth; } } void CGenericClientListCtrl::DrawClientItem(wxDC* dc, int nColumn, const wxRect& rect, ClientCtrlItem_Struct* item, int iTextOffset, int iBitmapOffset, int iBitmapXSize ) const { wxDCClipper clipper( *dc, rect.GetX(), rect.GetY(), rect.GetWidth(), rect.GetHeight() ); wxString buffer; const CClientRef& client = item->GetSource(); switch (nColumn) { // Client name + various icons case ColumnUserName: { // Point will get shifted per drawing. wxPoint point( rect.GetX(), rect.GetY() ); uint8 image = Client_Grey_Smiley; if (item->GetType() != A4AF_SOURCE) { switch (client.GetDownloadState()) { case DS_CONNECTING: case DS_CONNECTED: case DS_WAITCALLBACK: case DS_TOOMANYCONNS: image = Client_Red_Smiley; break; case DS_ONQUEUE: if (client.IsRemoteQueueFull()) { image = Client_Grey_Smiley; } else { image = Client_Yellow_Smiley; } break; case DS_DOWNLOADING: case DS_REQHASHSET: image = Client_Green_Smiley; break; case DS_NONEEDEDPARTS: case DS_LOWTOLOWIP: image = Client_Grey_Smiley; // Redundant break; default: // DS_NONE i.e. image = Client_White_Smiley; } } else { // Default (Client_Grey_Smiley) } m_ImageList.Draw(image, *dc, point.x, point.y + iBitmapOffset, wxIMAGELIST_DRAW_TRANSPARENT); // Next point.x += iBitmapXSize; uint8 clientImage = Client_Unknown; if ( client.IsFriend() ) { clientImage = Client_Friend_Smiley; } else { switch ( client.GetClientSoft() ) { case SO_AMULE: clientImage = Client_aMule_Smiley; break; case SO_MLDONKEY: case SO_NEW_MLDONKEY: case SO_NEW2_MLDONKEY: clientImage = Client_mlDonkey_Smiley; break; case SO_EDONKEY: case SO_EDONKEYHYBRID: clientImage = Client_eDonkeyHybrid_Smiley; break; case SO_EMULE: clientImage = Client_eMule_Smiley; break; case SO_LPHANT: clientImage = Client_lphant_Smiley; break; case SO_SHAREAZA: case SO_NEW_SHAREAZA: case SO_NEW2_SHAREAZA: clientImage = Client_Shareaza_Smiley; break; case SO_LXMULE: clientImage = Client_xMule_Smiley; break; default: // cDonkey, Compatible, Unknown // No icon for those yet. // Using the eMule one + '?' // Which is a faillback to the default (Client_Unknown) break; } } int realY = point.y + iBitmapOffset; m_ImageList.Draw(clientImage, *dc, point.x, realY, wxIMAGELIST_DRAW_TRANSPARENT); if (client.GetScoreRatio() > 1) { // Has credits, draw the gold star m_ImageList.Draw(Client_CreditsYellow_Smiley, *dc, point.x, realY, wxIMAGELIST_DRAW_TRANSPARENT ); } else if ( !client.ExtProtocolAvailable() ) { // No Ext protocol -> Draw the '-' m_ImageList.Draw(Client_ExtendedProtocol_Smiley, *dc, point.x, realY, wxIMAGELIST_DRAW_TRANSPARENT); } if (client.IsIdentified()) { // the 'v' m_ImageList.Draw(Client_SecIdent_Smiley, *dc, point.x, realY, wxIMAGELIST_DRAW_TRANSPARENT); } else if (client.IsBadGuy()) { // the 'X' m_ImageList.Draw(Client_BadGuy_Smiley, *dc, point.x, realY, wxIMAGELIST_DRAW_TRANSPARENT); } if (client.GetObfuscationStatus() == OBST_ENABLED) { // the "¿" except it's a key m_ImageList.Draw(Client_Encryption_Smiley, *dc, point.x, realY, wxIMAGELIST_DRAW_TRANSPARENT); } // Next point.x += iBitmapXSize; wxString userName; #ifdef ENABLE_IP2COUNTRY if (theApp->amuledlg->m_IP2Country->IsEnabled() && thePrefs::IsGeoIPEnabled()) { // Draw the flag. Size can't be precached. const CountryData& countrydata = theApp->amuledlg->m_IP2Country->GetCountryData(client.GetFullIP()); realY = point.y + (rect.GetHeight() - countrydata.Flag.GetHeight())/2 + 1 /* floor() */; dc->DrawBitmap(countrydata.Flag, point.x, realY, true); userName << countrydata.Name; userName << wxT(" - "); point.x += countrydata.Flag.GetWidth() + 2 /*Padding*/; } #endif // ENABLE_IP2COUNTRY if (client.GetUserName().IsEmpty()) { userName << wxT("?"); } else { userName << client.GetUserName(); } dc->DrawText(userName, point.x, rect.GetY() + iTextOffset); } break; case ColumnUserDownloaded: if (item->GetType() != A4AF_SOURCE && client.GetTransferredDown()) { buffer = CastItoXBytes(client.GetTransferredDown()); dc->DrawText(buffer, rect.GetX(), rect.GetY() + iTextOffset); } break; case ColumnUserUploaded: if (item->GetType() != A4AF_SOURCE && client.GetTransferredUp()) { buffer = CastItoXBytes(client.GetTransferredUp()); dc->DrawText(buffer, rect.GetX(), rect.GetY() + iTextOffset); } break; case ColumnUserSpeedDown: if (item->GetType() != A4AF_SOURCE && client.GetKBpsDown() > 0.001) { buffer = CFormat(_("%.1f kB/s")) % client.GetKBpsDown(); dc->DrawText(buffer, rect.GetX(), rect.GetY() + iTextOffset); } break; case ColumnUserSpeedUp: // Datarate is in bytes. if (item->GetType() != A4AF_SOURCE && client.GetUploadDatarate() > 1024) { buffer = CFormat(_("%.1f kB/s")) % (client.GetUploadDatarate() / 1024.0); dc->DrawText(buffer, rect.GetX(), rect.GetY() + iTextOffset); } break; case ColumnUserProgress: if ( thePrefs::ShowProgBar() ) { int iWidth = rect.GetWidth() - 2; int iHeight = rect.GetHeight() - 2; // don't draw Text beyond the bar dc->SetClippingRegion(rect.GetX(), rect.GetY() + 1, iWidth, iHeight); if ( item->GetType() != A4AF_SOURCE ) { uint32 dwTicks = GetTickCount(); wxMemoryDC cdcStatus; if ( item->dwUpdated < dwTicks || !item->status || iWidth != item->status->GetWidth() ) { if (item->status == NULL) { item->status = new wxBitmap(iWidth, iHeight); } else if ( item->status->GetWidth() != iWidth ) { // Only recreate if size has changed item->status->Create(iWidth, iHeight); } cdcStatus.SelectObject(*(item->status)); if ( thePrefs::UseFlatBar() ) { DrawSourceStatusBar( client, &cdcStatus, wxRect(0, 0, iWidth, iHeight), true); } else { DrawSourceStatusBar( client, &cdcStatus, wxRect(1, 1, iWidth - 2, iHeight - 2), false); // Draw black border cdcStatus.SetPen( *wxBLACK_PEN ); cdcStatus.SetBrush( *wxTRANSPARENT_BRUSH ); cdcStatus.DrawRectangle( 0, 0, iWidth, iHeight ); } // Plus ten seconds item->dwUpdated = dwTicks + 10000; } else { cdcStatus.SelectObject(*(item->status)); } dc->Blit(rect.GetX(), rect.GetY() + 1, iWidth, iHeight, &cdcStatus, 0, 0); } else { wxString a4af; CPartFile* p = client.GetRequestFile(); if (p) { a4af = p->GetFileName().GetPrintable(); } else { a4af = wxT("?"); } buffer = CFormat(wxT("%s: %s")) % _("A4AF") % a4af; int midx = (2*rect.GetX() + rect.GetWidth()) >> 1; int midy = (2*rect.GetY() + rect.GetHeight()) >> 1; wxCoord txtwidth, txtheight; dc->GetTextExtent(buffer, &txtwidth, &txtheight); dc->SetTextForeground(*wxBLACK); dc->DrawText(buffer, wxMax(rect.GetX() + 2, midx - (txtwidth >> 1)), midy - (txtheight >> 1)); // Draw black border dc->SetPen( *wxBLACK_PEN ); dc->SetBrush( *wxTRANSPARENT_BRUSH ); dc->DrawRectangle( rect.GetX(), rect.GetY() + 1, iWidth, iHeight ); } } break; case ColumnUserAvailable: { if ( client.GetUpPartCount() ) { DrawStatusBar( client, dc, rect ); } break; } case ColumnUserVersion: { dc->DrawText(client.GetClientVerString(), rect.GetX(), rect.GetY() + iTextOffset); break; } case ColumnUserQueueRankRemote: { sint16 qrDiff = 0; wxColour savedColour = dc->GetTextForeground(); // We only show the queue rank for sources actually queued for that file if ( item->GetType() != A4AF_SOURCE && client.GetDownloadState() == DS_ONQUEUE ) { if (client.IsRemoteQueueFull()) { buffer = _("Queue Full"); } else { uint16 rank = client.GetRemoteQueueRank(); if (rank) { qrDiff = rank - client.GetOldRemoteQueueRank(); if (qrDiff == rank) { qrDiff = 0; } if ( qrDiff < 0 ) { dc->SetTextForeground(*wxBLUE); } if ( qrDiff > 0 ) { dc->SetTextForeground(*wxRED); } buffer = CFormat(_("On Queue: %u (%i)")) % rank % qrDiff; } else { buffer = _("On Queue"); } } } else { if (item->GetType() != A4AF_SOURCE) { buffer = DownloadStateToStr( client.GetDownloadState(), client.IsRemoteQueueFull() ); } else { buffer = _("Asked for another file"); if ( client.GetRequestFile() && client.GetRequestFile()->GetFileName().IsOk()) { buffer += CFormat(wxT(" (%s)")) % client.GetRequestFile()->GetFileName(); } } } dc->DrawText(buffer, rect.GetX(), rect.GetY() + iTextOffset); if (qrDiff) { dc->SetTextForeground(savedColour); } break; } case ColumnUserQueueRankLocal: if (item->GetType() != A4AF_SOURCE) { if (client.GetUploadState() == US_ONUPLOADQUEUE ) { uint16 nRank = client.GetUploadQueueWaitingPosition(); if (nRank == 0) { buffer = _("Waiting for upload slot"); } else { buffer = CFormat(_("On Queue: %u")) % nRank; } } else if (client.GetUploadState() == US_UPLOADING) { buffer = _("Uploading"); } else { buffer = _("None"); } } else { buffer = _("Asked for another file"); } dc->DrawText(buffer, rect.GetX(), rect.GetY() + iTextOffset); break; // Source comes from? case ColumnUserOrigin: { buffer = wxGetTranslation(OriginToText(client.GetSourceFrom())); dc->DrawText(buffer, rect.GetX(), rect.GetY() + iTextOffset); break; } // Local file name to identify on multi select case ColumnUserFileNameDownload: { const CPartFile * pf = client.GetRequestFile(); if (pf) { buffer = pf->GetFileName().GetPrintable(); } else { buffer = _("Unknown"); buffer = wxT("[") + buffer + wxT("]"); } dc->DrawText(buffer, rect.GetX(), rect.GetY() + iTextOffset); break; } case ColumnUserFileNameUpload: { const CKnownFile * kf = client.GetUploadFile(); if (kf) { buffer = kf->GetFileName().GetPrintable(); } else { buffer = _("Unknown"); buffer = wxT("[") + buffer + wxT("]"); } dc->DrawText(buffer, rect.GetX(), rect.GetY() + iTextOffset); break; } case ColumnUserFileNameDownloadRemote: { bool nameMissmatch = false; wxColour savedColour = dc->GetTextForeground(); if (client.GetClientFilename().IsEmpty() || item->GetType() == A4AF_SOURCE) { buffer = _("Unknown"); buffer = wxT("[") + buffer + wxT("]"); } else { buffer = client.GetClientFilename(); const CPartFile * pf = client.GetRequestFile(); if (pf && (pf->GetFileName().GetPrintable().CmpNoCase(buffer) != 0)) { nameMissmatch = true; dc->SetTextForeground(*wxRED); } } dc->DrawText(buffer, rect.GetX(), rect.GetY() + iTextOffset); if (nameMissmatch) { dc->SetTextForeground(savedColour); } break; } case ColumnUserSharedFiles: { if(client.HasDisabledSharedFiles()) { buffer = _("No"); } else { buffer = _("Yes"); } dc->DrawText(buffer, rect.GetX(), rect.GetY() + iTextOffset); break; } } } int CGenericClientListCtrl::SortProc(wxUIntPtr param1, wxUIntPtr param2, long sortData) { ClientCtrlItem_Struct* item1 = reinterpret_cast(param1); ClientCtrlItem_Struct* item2 = reinterpret_cast(param2); int sortMod = (sortData & CMuleListCtrl::SORT_DES) ? -1 : 1; sortData &= CMuleListCtrl::COLUMN_MASK; int comp = 0; // Two sources, some different possibilites // Avilable sources first, if we have both an // available and an unavailable comp = ( item2->GetType() - item1->GetType() ); if (comp) { // unavailable and available. The order is fixed regardless of sort-order. return comp; } else { comp = Compare(item1->GetSource(), item2->GetSource(), sortData); } // We modify the result so that it matches with ascending or decending return sortMod * comp; } int CGenericClientListCtrl::Compare( const CClientRef& client1, const CClientRef& client2, long lParamSort) { switch (lParamSort) { // Sort by name case ColumnUserName: return CmpAny( client1.GetUserName(), client2.GetUserName() ); // Sort by transferred in the following fields case ColumnUserDownloaded: return CmpAny( client1.GetTransferredDown(), client2.GetTransferredDown() ); // Sort by transferred in the following fields case ColumnUserUploaded: return CmpAny( client1.GetTransferredUp(), client2.GetTransferredUp() ); // Sort by speed case ColumnUserSpeedDown: return CmpAny( client1.GetKBpsDown(), client2.GetKBpsDown() ); // Sort by speed case ColumnUserSpeedUp: return CmpAny( client1.GetUploadDatarate(), client2.GetUploadDatarate() ); // Sort by parts offered case ColumnUserProgress: return CmpAny( client1.GetAvailablePartCount(), client2.GetAvailablePartCount() ); // Sort by client version case ColumnUserVersion: { int cmp = client1.GetSoftStr().Cmp(client2.GetSoftStr()); if (cmp == 0) { cmp = CmpAny(client1.GetVersion(), client2.GetVersion()); } if (cmp == 0) { cmp = client1.GetClientModString().Cmp(client2.GetClientModString()); } return cmp; } // Sort by Queue-Rank case ColumnUserQueueRankRemote: { // This will sort by download state: Downloading, OnQueue, Connecting ... // However, Asked For Another will always be placed last, due to // sorting in SortProc if ( client1.GetDownloadState() != client2.GetDownloadState() ) { return client1.GetDownloadState() - client2.GetDownloadState(); } // Placing items on queue before items on full queues if ( client1.IsRemoteQueueFull() ) { if ( client2.IsRemoteQueueFull() ) { return 0; } else { return 1; } } else if ( client2.IsRemoteQueueFull() ) { return -1; } else { if ( client1.GetRemoteQueueRank() ) { if ( client2.GetRemoteQueueRank() ) { return CmpAny( client1.GetRemoteQueueRank(), client2.GetRemoteQueueRank() ); } else { return -1; } } else { if ( client2.GetRemoteQueueRank() ) { return 1; } else { return 0; } } } } // Sort by Queue-Rank case ColumnUserQueueRankLocal: { // This will sort by download state: Downloading, OnQueue, Connecting ... // However, Asked For Another will always be placed last, due to // sorting in SortProc if ( client1.GetUploadState() != client2.GetUploadState() ) { return client1.GetUploadState() - client2.GetUploadState(); } uint16 rank1 = client1.GetUploadQueueWaitingPosition(); uint16 rank2 = client2.GetUploadQueueWaitingPosition(); // Placing items on queue before items on full queues if ( !rank1 ) { if ( !rank2 ) { return 0; } else { return 1; } } else if ( !rank2 ) { return -1; } else { if ( rank1 ) { if ( rank2 ) { return CmpAny( rank1, rank2 ); } else { return -1; } } else { if ( rank2 ) { return 1; } else { return 0; } } } } // Source of source ;) case ColumnUserOrigin: return CmpAny(client1.GetSourceFrom(), client2.GetSourceFrom()); // Sort by local filename (download) case ColumnUserFileNameDownload: { wxString buffer1, buffer2; const CPartFile * pf1 = client1.GetRequestFile(); if (pf1) { buffer1 = pf1->GetFileName().GetPrintable(); } const CPartFile * pf2 = client2.GetRequestFile(); if (pf2) { buffer2 = pf2->GetFileName().GetPrintable(); } return CmpAny(buffer1, buffer2); } // Sort by local filename (upload) case ColumnUserFileNameUpload: { wxString buffer1, buffer2; const CKnownFile * kf1 = client1.GetUploadFile(); if (kf1) { buffer1 = kf1->GetFileName().GetPrintable(); } const CKnownFile * kf2 = client2.GetUploadFile(); if (kf2) { buffer2 = kf2->GetFileName().GetPrintable(); } return CmpAny(buffer1, buffer2); } case ColumnUserFileNameDownloadRemote: { return CmpAny(client1.GetClientFilename(), client2.GetClientFilename()); } case ColumnUserSharedFiles: { return CmpAny(client1.HasDisabledSharedFiles(), client2.HasDisabledSharedFiles()); } default: return 0; } } void CGenericClientListCtrl::ShowSourcesCount( int diff ) { m_clientcount += diff; wxStaticText* label = CastByID( ID_CLIENTCOUNT, GetParent(), wxStaticText ); if (label) { label->SetLabel(CFormat(wxT("%i")) % m_clientcount); label->GetParent()->Layout(); } } static const CMuleColour crBoth(0, 192, 0); static const CMuleColour crFlatBoth(0, 150, 0); static const CMuleColour crNeither(240, 240, 240); static const CMuleColour crFlatNeither(224, 224, 224); static const CMuleColour crClientOnly(104, 104, 104); static const CMuleColour crFlatClientOnly(0, 0, 0); static const CMuleColour crPending(255, 208, 0); static const CMuleColour crNextPending(255, 255, 100); void CGenericClientListCtrl::DrawSourceStatusBar( const CClientRef& source, wxDC* dc, const wxRect& rect, bool bFlat) const { static CBarShader s_StatusBar(16); CPartFile* reqfile = source.GetRequestFile(); s_StatusBar.SetHeight(rect.height); s_StatusBar.SetWidth(rect.width); s_StatusBar.Set3dDepth( thePrefs::Get3DDepth() ); const BitVector& partStatus = source.GetPartStatus(); if (reqfile && reqfile->GetPartCount() == partStatus.size()) { s_StatusBar.SetFileSize(reqfile->GetFileSize()); uint16 lastDownloadingPart = source.GetDownloadState() == DS_DOWNLOADING ? source.GetLastDownloadingPart() : 0xffff; uint16 nextRequestedPart = source.GetNextRequestedPart(); for ( uint16 i = 0; i < partStatus.size(); i++ ) { uint64 uStart = PARTSIZE * i; uint64 uEnd = uStart + reqfile->GetPartSize(i) - 1; CMuleColour colour; if (!partStatus.get(i)) { // client does not have this part // light grey colour = bFlat ? crFlatNeither : crNeither; } else if ( reqfile->IsComplete(i)) { // completed part // green colour = bFlat ? crFlatBoth : crBoth; } else if (lastDownloadingPart == i) { // downloading part // yellow colour = crPending; } else if (nextRequestedPart == i) { // requested part // light yellow colour = crNextPending; } else { // client has this part, we need it // black colour = bFlat ? crFlatClientOnly : crClientOnly; } if ( source.GetRequestFile()->IsStopped() ) { colour.Blend(50); } s_StatusBar.FillRange(uStart, uEnd, colour); } } else { s_StatusBar.SetFileSize(1); s_StatusBar.FillRange(0, 1, bFlat ? crFlatNeither : crNeither); } s_StatusBar.Draw(dc, rect.x, rect.y, bFlat); } static const CMuleColour crUnavailable(240, 240, 240); static const CMuleColour crFlatUnavailable(224, 224, 224); static const CMuleColour crAvailable(104, 104, 104); static const CMuleColour crFlatAvailable(0, 0, 0); void CGenericClientListCtrl::DrawStatusBar( const CClientRef& client, wxDC* dc, const wxRect& rect1 ) const { wxRect rect = rect1; rect.y += 1; rect.height -= 2; wxPen old_pen = dc->GetPen(); wxBrush old_brush = dc->GetBrush(); bool bFlat = thePrefs::UseFlatBar(); wxRect barRect = rect; if (!bFlat) { // round bar has a black border, the bar itself is 1 pixel less on each border barRect.x ++; barRect.y ++; barRect.height -= 2; barRect.width -= 2; } static CBarShader s_StatusBar(16); uint32 partCount = client.GetUpPartCount(); // Seems the partfile in the client object is not necessarily valid when bar is drawn for the first time. // Keep it simple and make all parts same size. s_StatusBar.SetFileSize(partCount * PARTSIZE); s_StatusBar.SetHeight(barRect.height); s_StatusBar.SetWidth(barRect.width); s_StatusBar.Set3dDepth( thePrefs::Get3DDepth() ); uint64 uEnd = 0; for ( uint64 i = 0; i < partCount; i++ ) { uint64 uStart = PARTSIZE * i; uEnd = uStart + PARTSIZE - 1; s_StatusBar.FillRange(uStart, uEnd, client.IsUpPartAvailable(i) ? (bFlat ? crFlatAvailable : crAvailable) : (bFlat ? crFlatUnavailable : crUnavailable)); } // fill the rest (if partStatus is empty) s_StatusBar.FillRange(uEnd + 1, partCount * PARTSIZE - 1, bFlat ? crFlatUnavailable : crUnavailable); s_StatusBar.Draw(dc, barRect.x, barRect.y, bFlat); if (!bFlat) { // Draw black border dc->SetPen( *wxBLACK_PEN ); dc->SetBrush( *wxTRANSPARENT_BRUSH ); dc->DrawRectangle(rect); } dc->SetPen( old_pen ); dc->SetBrush( old_brush ); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/GenericClientListCtrl.h0000644000175000017500000001725712611472361022653 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef GENERICCLIENTLISTCTRL_H #define GENERICCLIENTLISTCTRL_H #include // Needed for std::multimap #include // Needed for std::vector #include #include "Types.h" // Needed for uint8 #include "Constants.h" // Needed for DownloadItemType #include "MuleListCtrl.h" // Needed for CMuleListCtrl #include "amuleDlg.h" // Needed for CamuleDlg::DialogType class CPartFile; class CClientRef; class wxBitmap; class wxRect; class wxDC; struct ClientCtrlItem_Struct; enum GenericColumnEnum { ColumnUserName = 0, ColumnUserDownloaded, ColumnUserUploaded, ColumnUserSpeedDown, ColumnUserSpeedUp, ColumnUserProgress, ColumnUserAvailable, ColumnUserVersion, ColumnUserQueueRankLocal, ColumnUserQueueRankRemote, ColumnUserOrigin, ColumnUserFileNameDownload, ColumnUserFileNameUpload, ColumnUserFileNameDownloadRemote, ColumnUserSharedFiles, ColumnInvalid }; struct CGenericClientListCtrlColumn { GenericColumnEnum cid; wxString title; int width; }; struct GenericColumnInfo { GenericColumnInfo(int n, CGenericClientListCtrlColumn* col) : n_columns(n), columns(col) { }; int n_columns; CGenericClientListCtrlColumn* columns; }; typedef std::vector CKnownFileVector; /** * This class is responsible for representing clients in a generic way. */ class CGenericClientListCtrl : public CMuleListCtrl { public: /** * Constructor. * * @see CMuleListCtrl::CMuleListCtrl for documentation of parameters. */ CGenericClientListCtrl( const wxString& tablename, wxWindow *parent, wxWindowID winid, const wxPoint &pos, const wxSize &size, long style, const wxValidator& validator, const wxString &name); /** * Destructor. */ virtual ~CGenericClientListCtrl(); /** * Initializes the control. We need a 2-stage initialization so the derived class members can be called. */ void InitColumnData(); /** * Adds a source belonging to the specified file. * * @param owner The owner of this specific source-entry, must be a valid pointer. * @param source The client object to be added, must be a valid pointer. * @param type If the source is a current source, or a A4AF source. * * Please note that the specified client will only be added to the list if it's * owner is shown, otherwise the source will simply be ignored. * Duplicates wont be added. */ void AddSource( CKnownFile* owner, const CClientRef& source, SourceItemType type ); /** * Removes a source from the list. * * @param source ID of the source to be removed. * @param owner Either a specific file, or NULL to remove the source from all files. */ void RemoveSource( uint32 source, const CKnownFile* owner ); /** * Shows the clients of specific files. * * @param file A valid, sorted vector of files whose clients will be shown. * * WARNING: The received vector *MUST* be odered with std::sort. * */ void ShowSources( const CKnownFileVector& files ); /** * Updates the state of the specified item, possibly causing a redrawing. * * @param toupdate ID of the client to be updated. * @param type If the source is a current source, or a A4AF source. * */ void UpdateItem(uint32 toupdate, SourceItemType type); void SetShowing( bool status ) { m_showing = status; } bool GetShowing() const { return m_showing; } protected: // The columns with their attributes; MUST be defined by the derived class. GenericColumnInfo m_columndata; static int wxCALLBACK SortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData); private: /** * * Must be overriden by the derived class and return the dialog where this list is. * @see CamuleDlg::DialogType * */ virtual CamuleDlg::DialogType GetParentDialog() = 0; /** * Updates the displayed number representing the amount of clients currently shown. */ void ShowSourcesCount( int diff ); /** * Overloaded function needed for custom drawing of items. */ virtual void OnDrawItem( int item, wxDC* dc, const wxRect& rect, const wxRect& rectHL, bool highlighted ); /** * Draws a client item. */ void DrawClientItem( wxDC* dc, int nColumn, const wxRect& rect, ClientCtrlItem_Struct* item, int iTextOffset, int iBitmapOffset, int iBitmapXSize ) const; /** * Draws the download status (chunk) bar for a client. */ void DrawSourceStatusBar( const CClientRef& source, wxDC* dc, const wxRect& rect, bool bFlat) const; /** * Draaws the file parts bar for a client. */ void DrawStatusBar( const CClientRef& client, wxDC* dc, const wxRect& rect1 ) const; /** * @see CMuleListCtrl::GetTTSText * Just a dummy */ virtual wxString GetTTSText(unsigned) const { return wxEmptyString; } /** * Set "show sources" or "show peers" flag in Known File */ virtual void SetShowSources(CKnownFile *, bool) const = 0; /** * Translate the CID to a unique string for saving column sizes * @see CMuleListCtrl::InsertColumn */ wxString TranslateCIDToName(GenericColumnEnum cid); static int Compare( const CClientRef& client1, const CClientRef& client2, long lParamColumnSort); // Event-handlers for clients. void OnSwapSource( wxCommandEvent& event ); void OnViewFiles( wxCommandEvent& event ); void OnAddFriend( wxCommandEvent& event ); void OnSetFriendslot( wxCommandEvent& event ); void OnSendMessage( wxCommandEvent& event ); void OnViewClientInfo( wxCommandEvent& event ); // Misc event-handlers void OnItemActivated( wxListEvent& event ); void OnMouseRightClick( wxListEvent& event ); void OnMouseMiddleClick( wxListEvent& event ); void OnKeyPressed( wxKeyEvent& event ); //! The type of list used to store items on the listctrl. We use the unique ECID as key. typedef std::multimap ListItems; //! Shortcut to the pair-type used on the list. typedef ListItems::value_type ListItemsPair; //! This pair is used when searching for equal-ranges. typedef std::pair< ListItems::iterator, ListItems::iterator > ListIteratorPair; //! This list contains everything shown on the list. Sources are only to //! be found on this list if they are being displayed ListItems m_ListItems; //! Pointer to the current menu object, used to avoid multiple menus. wxMenu* m_menu; //! Cached brush object. wxBrush m_hilightBrush; //! Cached brush object. wxBrush m_hilightUnfocusBrush; //! The number of displayed sources int m_clientcount; //! The files being shown, if any. CKnownFileVector m_knownfiles; DECLARE_EVENT_TABLE() bool m_showing; void RawAddSource(CKnownFile* owner, CClientRef source, SourceItemType type); void RawRemoveSource( ListItems::iterator& it ); virtual bool IsShowingDownloadSources() const = 0; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/GetTickCount.cpp0000644000175000017500000001073212611472361021344 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 Alo Sarv ( madcat_@users.sourceforge.net ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Timo Kujala ( tiku@users.sourceforge.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "GetTickCount.h" // Interface uint32 TheTime = 0; #ifdef __WINDOWS__ void StartTickTimer(){}; void StopTickTimer(){}; /** * Returns the tickcount in full resolution using the highres timer. * This function replaces calls to the low res system function GetTickCOunt * (which can also be messed up when an app changes the system timer resolution) */ uint32 GetTickCountFullRes() { return GetTickCount_64(); } /** * Returns the tickcount in 64bits. */ uint64 GetTickCount_64() { // Use highres timer for all operations on Windows // The Timer starts at system boot and runs (on a Intel Quad core) // with 14 million ticks per second. So it won't overflow for // 35000 years. // Convert hires ticks to milliseconds static double tickFactor; _LARGE_INTEGER li; static bool first = true; if (first) { // calculate the conversion factor for the highres timer QueryPerformanceFrequency(&li); tickFactor = 1000.0 / li.QuadPart; first = false; } QueryPerformanceCounter(&li); return li.QuadPart * tickFactor; } #else #include // Needed for gettimeofday uint32 GetTickCountFullRes(void) { struct timeval aika; gettimeofday(&aika,NULL); unsigned long msecs = aika.tv_sec * 1000; msecs += (aika.tv_usec / 1000); return msecs; } #if wxUSE_GUI && wxUSE_TIMER && !defined(AMULE_DAEMON) /** * Copyright (c) 2003-2011 Alo Sarv ( madcat_@users.sourceforge.net ) * wxTimer based implementation. wxGetLocalTimeMillis() is called every 2 * milliseconds and values stored in local variables. Upon requests for current * time, values of those variables are returned. This means wxGetLocalTimeMillis * is being called exactly 50 times per second at any case, no more no less. */ #include class MyTimer : public wxTimer { public: MyTimer() { tic32 = tic64 = wxGetLocalTimeMillis().GetValue(); Start(20); } static uint32 GetTickCountNow() { return tic32; } static uint64 GetTickCountNow64() { return tic64; } private: void Notify() { tic32 = tic64 = wxGetLocalTimeMillis().GetValue(); } static uint32 tic32; static uint64 tic64; }; static class MyTimer* mytimer; // Initialization of the static MyTimer member variables. uint32 MyTimer::tic32 = 0; uint64 MyTimer::tic64 = 0; void StartTickTimer() { wxASSERT(mytimer == NULL); mytimer = new MyTimer(); } void StopTickTimer() { wxASSERT(mytimer != NULL); delete mytimer; mytimer = NULL; } uint32 GetTickCount(){ wxASSERT(mytimer != NULL); return MyTimer::GetTickCountNow(); } uint64 GetTickCount64(){ wxASSERT(mytimer != NULL); return MyTimer::GetTickCountNow64(); } #else /** * Copyright (c) 2002-2011 Timo Kujala ( tiku@users.sourceforge.net ) * gettimeofday() syscall based implementation. Upon request to GetTickCount(), * gettimeofday syscall is being used to retrieve system time and returned. This * means EACH GetTickCount() call will produce a new syscall, thus becoming * increasingly heavy on CPU as the program uptime increases and more things * need to be done. */ void StartTickTimer() {} void StopTickTimer() {} uint32 GetTickCount() { return GetTickCountFullRes(); } // avoids 32bit rollover error for differences above 50days uint64 GetTickCount64() { struct timeval aika; gettimeofday(&aika,NULL); return aika.tv_sec * (uint64)1000 + aika.tv_usec / 1000; } #endif #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/GetTickCount.h0000644000175000017500000000363112611472361021011 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 Alo Sarv ( madcat_@users.sourceforge.net ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Timo Kujala ( tiku@users.sourceforge.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef GETTICKCOUNT_H #define GETTICKCOUNT_H #include "Types.h" // Needed for uint32 #ifndef _WIN32 uint32 GetTickCount(); #else // System GetTickcount is lowres, so use fullres #define GetTickCount GetTickCountFullRes // GetTickCount64 is a system function in Vista so rename it #define GetTickCount64 GetTickCount_64 #endif // Ideally, same than GetTickCount. // However, on GUI, GetTickCount does only work in // 20 msecs increment, and some classes need better. uint32 GetTickCountFullRes(); uint64 GetTickCount64(); // Functions used to init the timer on GUI void StartTickTimer(); void StopTickTimer(); // A cheap global time (in s) without any function calls updated in OnCoreTimer extern uint32 TheTime; #endif // GETTICKCOUNT_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/GuiEvents.cpp0000644000175000017500000004517012611472361020716 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "GuiEvents.h" #include "amule.h" #include "PartFile.h" #include "DownloadQueue.h" #include "ServerList.h" #include "Preferences.h" #include "ExternalConn.h" #include "SearchFile.h" #include "SearchList.h" #include "IPFilter.h" #include "Friend.h" #include "Logger.h" #ifndef AMULE_DAEMON # include "ChatWnd.h" # include "amuleDlg.h" # include "ServerWnd.h" # include "SearchDlg.h" # include "TransferWnd.h" # include "SharedFilesWnd.h" # include "ServerListCtrl.h" # include "SourceListCtrl.h" # include "SharedFilesCtrl.h" # include "DownloadListCtrl.h" # include "muuli_wdr.h" # include "SharedFilePeersListCtrl.h" # ifndef CLIENT_GUI # include "PartFileConvertDlg.h" # include "PartFileConvert.h" # endif #endif #ifndef CLIENT_GUI # include "UploadQueue.h" # include "EMSocket.h" # include "ListenSocket.h" # include "MuleUDPSocket.h" #endif #include DEFINE_LOCAL_EVENT_TYPE(MULE_EVT_NOTIFY) namespace MuleNotify { void HandleNotification(const CMuleNotiferBase& ntf) { if (wxThread::IsMain()) { #ifdef AMULE_DAEMON ntf.Notify(); #else if (theApp->amuledlg) { ntf.Notify(); } #endif } else { CMuleGUIEvent evt(ntf.Clone()); wxPostEvent(wxTheApp, evt); } } void HandleNotificationAlways(const CMuleNotiferBase& ntf) { CMuleGUIEvent evt(ntf.Clone()); wxPostEvent(wxTheApp, evt); } void Search_Add_Download(CSearchFile* file, uint8 category) { theApp->downloadqueue->AddSearchToDownload(file, category); } void ShowUserCount(wxString NOT_ON_DAEMON(str)) { #ifndef AMULE_DAEMON theApp->amuledlg->ShowUserCount(str); #endif } void Search_Update_Progress(uint32 NOT_ON_DAEMON(val)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_searchwnd) { if (val == 0xffff) { // Global search ended theApp->amuledlg->m_searchwnd->ResetControls(); } else if (val == 0xfffe) { // Kad search ended theApp->amuledlg->m_searchwnd->KadSearchEnd(0); } else { theApp->amuledlg->m_searchwnd->UpdateProgress(val); } } #endif } void DownloadCtrlUpdateItem(const void* item) { #ifndef CLIENT_GUI theApp->ECServerHandler->m_ec_notifier->DownloadFile_SetDirty(static_cast(item)); #endif #ifndef AMULE_DAEMON if (theApp->amuledlg->m_transferwnd && theApp->amuledlg->m_transferwnd->downloadlistctrl) { theApp->amuledlg->m_transferwnd->downloadlistctrl->UpdateItem(item); } #endif } void DownloadCtrlDoItemSelectionChanged() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_transferwnd && theApp->amuledlg->m_transferwnd->downloadlistctrl) { theApp->amuledlg->m_transferwnd->downloadlistctrl->DoItemSelectionChanged(); } #endif } void NodesURLChanged(wxString NOT_ON_DAEMON(url)) { #ifndef AMULE_DAEMON CastByID(IDC_NODESLISTURL, NULL, wxTextCtrl)->SetValue(url); #endif } void ServersURLChanged(wxString NOT_ON_DAEMON(url)) { #ifndef AMULE_DAEMON CastByID(IDC_SERVERLISTURL, NULL, wxTextCtrl)->SetValue(url); #endif } void ShowGUI() { #ifndef AMULE_DAEMON theApp->amuledlg->Iconize(false); #endif } void SourceCtrlUpdateSource(uint32 NOT_ON_DAEMON(source), SourceItemType NOT_ON_DAEMON(type)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_transferwnd && theApp->amuledlg->m_transferwnd->clientlistctrl) { theApp->amuledlg->m_transferwnd->clientlistctrl->UpdateItem(source, type); } #endif } void SourceCtrlAddSource(CPartFile* NOT_ON_DAEMON(owner), CClientRef NOT_ON_DAEMON(source), SourceItemType NOT_ON_DAEMON(type)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_transferwnd && theApp->amuledlg->m_transferwnd->clientlistctrl) { theApp->amuledlg->m_transferwnd->clientlistctrl->AddSource(owner, source, type); } #endif } void SourceCtrlRemoveSource(uint32 NOT_ON_DAEMON(source), const CPartFile* NOT_ON_DAEMON(owner)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_transferwnd && theApp->amuledlg->m_transferwnd->clientlistctrl) { theApp->amuledlg->m_transferwnd->clientlistctrl->RemoveSource(source, owner); } #endif } void SharedCtrlAddClient(CKnownFile* NOT_ON_DAEMON(owner), CClientRef NOT_ON_DAEMON(source), SourceItemType NOT_ON_DAEMON(type)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_sharedfileswnd && theApp->amuledlg->m_sharedfileswnd->peerslistctrl) { theApp->amuledlg->m_sharedfileswnd->peerslistctrl->AddSource(owner, source, type); } #endif } void SharedCtrlRefreshClient(uint32 NOT_ON_DAEMON(client), SourceItemType NOT_ON_DAEMON(type)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_sharedfileswnd && theApp->amuledlg->m_sharedfileswnd->peerslistctrl) { theApp->amuledlg->m_sharedfileswnd->peerslistctrl->UpdateItem(client, type); } #endif } void SharedCtrlRemoveClient(uint32 NOT_ON_DAEMON(source), const CKnownFile* NOT_ON_DAEMON(owner)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_sharedfileswnd && theApp->amuledlg->m_sharedfileswnd->peerslistctrl) { theApp->amuledlg->m_sharedfileswnd->peerslistctrl->RemoveSource(source, owner); } #endif } void ServerRefresh(CServer* NOT_ON_DAEMON(server)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_serverwnd && theApp->amuledlg->m_serverwnd->serverlistctrl) { theApp->amuledlg->m_serverwnd->serverlistctrl->RefreshServer(server); } #endif } void ChatUpdateFriend(CFriend * NOT_ON_DAEMON(toupdate)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_chatwnd) { theApp->amuledlg->m_chatwnd->UpdateFriend(toupdate); } #endif } void ChatRemoveFriend(CFriend * toremove) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_chatwnd) { theApp->amuledlg->m_chatwnd->RemoveFriend(toremove); } #endif delete toremove; } #ifdef CLIENT_GUI void PartFile_Swap_A4AF(CPartFile* file) { theApp->downloadqueue->SendFileCommand(file, EC_OP_PARTFILE_SWAP_A4AF_THIS); } void PartFile_Swap_A4AF_Auto(CPartFile* file) { theApp->downloadqueue->SendFileCommand(file, EC_OP_PARTFILE_SWAP_A4AF_THIS_AUTO); } void PartFile_Swap_A4AF_Others(CPartFile* file) { theApp->downloadqueue->SendFileCommand(file, EC_OP_PARTFILE_SWAP_A4AF_OTHERS); } void PartFile_Pause(CPartFile* file) { theApp->downloadqueue->SendFileCommand(file, EC_OP_PARTFILE_PAUSE); } void PartFile_Resume(CPartFile* file) { theApp->downloadqueue->SendFileCommand(file, EC_OP_PARTFILE_RESUME); } void PartFile_Stop(CPartFile* file) { theApp->downloadqueue->SendFileCommand(file, EC_OP_PARTFILE_STOP); } void PartFile_PrioAuto(CPartFile* file, bool val) { theApp->downloadqueue->AutoPrio(file, val); } void PartFile_PrioSet(CPartFile* file, uint8 newDownPriority, bool) { theApp->downloadqueue->Prio(file, newDownPriority); } void PartFile_Delete(CPartFile* file) { theApp->downloadqueue->SendFileCommand(file, EC_OP_PARTFILE_DELETE); } void PartFile_SetCat(CPartFile* file, uint32 val) { theApp->downloadqueue->Category(file, val); } void KnownFile_Up_Prio_Set(CKnownFile* file, uint8 val) { theApp->sharedfiles->SetFilePrio(file, val); } void KnownFile_Up_Prio_Auto(CKnownFile* file) { theApp->sharedfiles->SetFilePrio(file, PR_AUTO); } void KnownFile_Comment_Set(CKnownFile* file, wxString comment, int8 rating) { theApp->sharedfiles->SetFileCommentRating(file, comment, rating); } void Download_Set_Cat_Prio(uint8, uint8) { } void Download_Set_Cat_Status(uint8, int) { } void Upload_Resort_Queue() { } #else void SharedFilesShowFile(CKnownFile* NOT_ON_DAEMON(file)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_sharedfileswnd && theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl) { theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl->ShowFile(file); } #endif } void SharedFilesRemoveFile(CKnownFile* NOT_ON_DAEMON(file)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_sharedfileswnd && theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl) { theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl->RemoveFile(file); } #endif } void SharedFilesRemoveAllFiles() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_sharedfileswnd) { theApp->amuledlg->m_sharedfileswnd->RemoveAllSharedFiles(); } #endif } void SharedFilesShowFileList() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_sharedfileswnd && theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl) { theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl->ShowFileList(); } #endif } void SharedFilesUpdateItem(CKnownFile* NOT_ON_DAEMON(file)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_sharedfileswnd && theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl) { theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl->UpdateItem(file); } #endif } void DownloadCtrlAddFile(CPartFile* file) { theApp->ECServerHandler->m_ec_notifier->DownloadFile_AddFile(file); #ifndef AMULE_DAEMON if (theApp->amuledlg->m_transferwnd && theApp->amuledlg->m_transferwnd->downloadlistctrl ) { theApp->amuledlg->m_transferwnd->downloadlistctrl->AddFile(file); } #endif } void DownloadCtrlRemoveFile(CPartFile* file) { theApp->ECServerHandler->m_ec_notifier->DownloadFile_RemoveFile(file); #ifndef AMULE_DAEMON if (theApp->amuledlg->m_transferwnd && theApp->amuledlg->m_transferwnd->downloadlistctrl) { theApp->amuledlg->m_transferwnd->downloadlistctrl->RemoveFile(file); } #endif } void DownloadCtrlSort() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_transferwnd && theApp->amuledlg->m_transferwnd->downloadlistctrl) { theApp->amuledlg->m_transferwnd->downloadlistctrl->SortList(); } #endif } void ServerAdd(CServer* NOT_ON_DAEMON(server)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_serverwnd && theApp->amuledlg->m_serverwnd->serverlistctrl) { theApp->amuledlg->m_serverwnd->serverlistctrl->AddServer(server); } #endif } void ServerRemove(CServer* NOT_ON_DAEMON(server)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_serverwnd && theApp->amuledlg->m_serverwnd->serverlistctrl) { theApp->amuledlg->m_serverwnd->serverlistctrl->RemoveServer(server); } #endif } void ServerRemoveDead() { if (theApp->serverlist) { theApp->serverlist->RemoveDeadServers(); } } void ServerRemoveAll() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_serverwnd && theApp->amuledlg->m_serverwnd->serverlistctrl) { theApp->amuledlg->m_serverwnd->serverlistctrl->DeleteAllItems(); } #endif } void ServerHighlight(CServer* NOT_ON_DAEMON(server), bool NOT_ON_DAEMON(highlight)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_serverwnd && theApp->amuledlg->m_serverwnd->serverlistctrl) { theApp->amuledlg->m_serverwnd->serverlistctrl->HighlightServer(server, highlight); } #endif } void ServerFreeze() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_serverwnd && theApp->amuledlg->m_serverwnd->serverlistctrl) { theApp->amuledlg->m_serverwnd->serverlistctrl->Freeze(); } #endif } void ServerThaw() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_serverwnd && theApp->amuledlg->m_serverwnd->serverlistctrl) { theApp->amuledlg->m_serverwnd->serverlistctrl->Thaw(); } #endif } void ServerUpdateED2KInfo() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_serverwnd) { theApp->amuledlg->m_serverwnd->UpdateED2KInfo(); } #endif } void ServerUpdateKadKInfo() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_serverwnd) { theApp->amuledlg->m_serverwnd->UpdateKadInfo(); } #endif } void SearchCancel() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_searchwnd) { theApp->amuledlg->m_searchwnd->ResetControls(); } #endif } void SearchLocalEnd() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_searchwnd) { theApp->amuledlg->m_searchwnd->LocalSearchEnd(); } #endif } void KadSearchEnd(uint32 NOT_ON_DAEMON(id)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_searchwnd) { theApp->amuledlg->m_searchwnd->KadSearchEnd(id); } #endif theApp->searchlist->SetKadSearchFinished(); } void Search_Update_Sources(CSearchFile* result) { result->SetDownloadStatus(); #ifndef AMULE_DAEMON if (theApp->amuledlg && theApp->amuledlg->m_searchwnd) { theApp->amuledlg->m_searchwnd->UpdateResult(result); } #endif } void Search_Add_Result(CSearchFile* NOT_ON_DAEMON(result)) { #ifndef AMULE_DAEMON if (theApp->amuledlg && theApp->amuledlg->m_searchwnd) { theApp->amuledlg->m_searchwnd->AddResult(result); } #endif } void ChatConnResult(bool NOT_ON_DAEMON(success), uint64 NOT_ON_DAEMON(id), wxString NOT_ON_DAEMON(message)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_chatwnd) { theApp->amuledlg->m_chatwnd->ConnectionResult(success, message, id); } #endif } void ChatProcessMsg(uint64 NOT_ON_DAEMON(sender), wxString NOT_ON_DAEMON(message)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_chatwnd) { theApp->amuledlg->m_chatwnd->ProcessMessage(sender, message); } #endif } void ChatSendCaptcha(wxString NOT_ON_DAEMON(captcha), uint64 NOT_ON_DAEMON(to_id)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_chatwnd) { theApp->amuledlg->m_chatwnd->SendMessage(captcha, wxEmptyString, to_id); } #endif } void ShowConnState(long NOT_ON_DAEMON(forceUpdate)) { #ifndef AMULE_DAEMON theApp->amuledlg->ShowConnectionState(forceUpdate != 0); #endif } void ShowUpdateCatTabTitles() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_transferwnd) { theApp->amuledlg->m_transferwnd->UpdateCatTabTitles(); } #endif } void CategoryAdded() { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_transferwnd) { theApp->amuledlg->m_transferwnd-> AddCategory(theApp->glob_prefs->GetCategory( theApp->glob_prefs->GetCatCount()-1)); } #endif } void CategoryUpdate(uint32 NOT_ON_DAEMON(cat)) { #ifndef AMULE_DAEMON if (theApp->amuledlg->m_transferwnd) { theApp->amuledlg->m_transferwnd->UpdateCategory(cat); theApp->amuledlg->m_transferwnd->downloadlistctrl->Refresh(); theApp->amuledlg->m_searchwnd->UpdateCatChoice(); } #endif } void CategoryDelete(uint32 cat) { #ifdef AMULE_DAEMON if (cat > 0) { theApp->downloadqueue->ResetCatParts(cat); theApp->glob_prefs->RemoveCat(cat); if ( theApp->glob_prefs->GetCatCount() == 1 ) { thePrefs::SetAllcatFilter( acfAll ); } theApp->glob_prefs->SaveCats(); } #else if (theApp->amuledlg->m_transferwnd) { theApp->amuledlg->m_transferwnd->RemoveCategory(cat); } #endif } void PartFile_Swap_A4AF(CPartFile* file) { if ((file->GetStatus(false) == PS_READY || file->GetStatus(false) == PS_EMPTY)) { CPartFile::SourceSet::const_iterator it = file->GetA4AFList().begin(); for ( ; it != file->GetA4AFList().end(); ) { it++->SwapToAnotherFile(true, false, false, file); } } } void PartFile_Swap_A4AF_Auto(CPartFile* file) { file->SetA4AFAuto(!file->IsA4AFAuto()); } void PartFile_Swap_A4AF_Others(CPartFile* file) { if ((file->GetStatus(false) == PS_READY) || (file->GetStatus(false) == PS_EMPTY)) { CPartFile::SourceSet::const_iterator it = file->GetSourceList().begin(); for( ; it != file->GetSourceList().end(); ) { it++->SwapToAnotherFile(false, false, false, NULL); } } } void PartFile_Pause(CPartFile* file) { file->PauseFile(); file->SavePartFile(); } void PartFile_Resume(CPartFile* file) { file->ResumeFile(); file->SavePartFile(); } void PartFile_Stop(CPartFile* file) { file->StopFile(); file->SavePartFile(); } void PartFile_PrioAuto(CPartFile* file, bool val) { file->SetAutoDownPriority(val); } void PartFile_PrioSet(CPartFile* file, uint8 newDownPriority, bool bSave) { file->SetDownPriority(newDownPriority, bSave); } void PartFile_Delete(CPartFile* file) { file->Delete(); } void PartFile_SetCat(CPartFile* file, uint32 val) { file->SetCategory(val); } void KnownFile_Up_Prio_Set(CKnownFile* file, uint8 val) { file->SetAutoUpPriority(false); file->SetUpPriority(val); } void KnownFile_Up_Prio_Auto(CKnownFile* file) { file->SetAutoUpPriority(true); file->UpdateAutoUpPriority(); } void KnownFile_Comment_Set(CKnownFile* file, wxString comment, int8 rating) { file->SetFileCommentRating(comment, rating); SharedFilesUpdateItem(file); } void Download_Set_Cat_Prio(uint8 cat, uint8 newprio) { theApp->downloadqueue->SetCatPrio(cat, newprio); } void Download_Set_Cat_Status(uint8 cat, int newstatus) { theApp->downloadqueue->SetCatStatus(cat, newstatus); } void Upload_Resort_Queue() { theApp->uploadqueue->ResortQueue(); } void IPFilter_Reload() { theApp->ipfilter->Reload(); } void IPFilter_Update(wxString url) { theApp->ipfilter->Update(url); } void Client_Delete(CClientRef client) { client.Safe_Delete(); } #ifndef AMULE_DAEMON void ConvertUpdateProgress(float percent, wxString text, wxString header) { CPartFileConvertDlg::UpdateProgress(percent, text, header); } void ConvertUpdateJobInfo(ConvertInfo info) { CPartFileConvertDlg::UpdateJobInfo(info); } void ConvertRemoveJobInfo(unsigned id) { CPartFileConvertDlg::RemoveJobInfo(id); } void ConvertClearInfos() { CPartFileConvertDlg::ClearInfo(); } void ConvertRemoveJob(unsigned id) { CPartFileConvert::RemoveJob(id); } void ConvertRetryJob(unsigned id) { CPartFileConvert::RetryJob(id); } void ConvertReaddAllJobs() { CPartFileConvert::ReaddAllJobs(); } #endif // #ifndef AMULE_DAEMON #endif // #ifndef CLIENT_GUI void FixAmuleGuiLinkage() { // HACK: LibSocketWX is needed in libec, but discarded from libmuleappcommon before, // unless we use something from it in a non-lib module. // I could have done LOTS of full-non-lib builds in the time required to track // this down. >:( // Function is never called of course. amuleIPV4Address dummy; } void UDPSocketSend(CMuleUDPSocket * NOT_ON_REMOTEGUI(socket)) { #ifndef CLIENT_GUI AddDebugLogLineF(logAsio, wxT("UDPSocketSend")); socket->OnSend(0); #endif } void UDPSocketReceive(CMuleUDPSocket * NOT_ON_REMOTEGUI(socket)) { #ifndef CLIENT_GUI AddDebugLogLineF(logAsio, wxT("UDPSocketReceive")); socket->OnReceive(0); #endif } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/GuiEvents.h0000644000175000017500000005467712611472361020377 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2004-2011 Froenchenko Leonid (lfroen@users.sourceforge.net) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef GUIEVENTS_H #define GUIEVENTS_H #include #include "Types.h" #include "Constants.h" #define __need_convertinfo // We need only the ConvertInfo struct from PartFileConvert.h #include "PartFileConvert.h" class CKnownFile; class CSearchFile; class CPartFile; class CServer; class CFriend; class CClientRef; class CLibSocket; class CLibSocketServer; class CMuleUDPSocket; DECLARE_LOCAL_EVENT_TYPE(MULE_EVT_NOTIFY, -1) /** * This namespaces contains a number of functions and classes * related to defered function calls, allowing a notification * call to be delayed till it can be initiated from the main * thread. */ namespace MuleNotify { /** * Creates a deep copy of the object passed. * * Note that this function should be overwritten as * needed. See the wxString version below. */ template inline ValueType DeepCopy(const ValueType& value) { return ValueType(value); } /** Special DeepCopy for wxString, which uses reference counting. */ inline wxString DeepCopy(const wxString& value) { return wxString(value.c_str(), value.Length()); } //////////////////////////////////////////////////////////// // Notification handlers // // These functions should not be called directly, but // through the Notify_*, etc. macros. // void SharedFilesShowFile(CKnownFile* file); void SharedFilesRemoveFile(CKnownFile* file); void SharedFilesRemoveAllFiles(); void SharedFilesShowFileList(); void SharedFilesUpdateItem(CKnownFile* file); void DownloadCtrlUpdateItem(const void* item); void SourceCtrlUpdateSource(uint32 source, SourceItemType type); void DownloadCtrlAddFile(CPartFile* file); void SourceCtrlAddSource(CPartFile* owner, CClientRef source, SourceItemType type); void DownloadCtrlRemoveFile(CPartFile* file); void SourceCtrlRemoveSource(uint32 source, const CPartFile* owner); void DownloadCtrlHideSource(CPartFile* file); void DownloadCtrlSort(); void DownloadCtrlDoItemSelectionChanged(); void SharedCtrlAddClient(CKnownFile* owner, CClientRef client, SourceItemType type); void SharedCtrlRefreshClient(uint32 client, SourceItemType type); void SharedCtrlRemoveClient(uint32 client, const CKnownFile* owner); void ServerAdd(CServer* server); void ServerRemove(CServer* server); void ServerRemoveDead(); void ServerRemoveAll(); void ServerHighlight(CServer* server, bool highlight); void ServerRefresh(CServer* server); void ServerFreeze(); void ServerThaw(); void ServerUpdateED2KInfo(); void ServerUpdateKadKInfo(); void SearchCancel(); void SearchLocalEnd(); void KadSearchEnd(uint32 id); void Search_Update_Sources(CSearchFile* result); void Search_Add_Result(CSearchFile* result); void ChatUpdateFriend(CFriend* Friend); void ChatRemoveFriend(CFriend* Friend); void ChatConnResult(bool success, uint64 id, wxString message); void ChatProcessMsg(uint64 sender, wxString message); void ChatSendCaptcha(wxString captcha, uint64 to_id); void ShowConnState(long state); void ShowUserCount(wxString str); void ShowUpdateCatTabTitles(); void ShowGUI(); void CategoryAdded(); void CategoryUpdate(uint32 cat); void CategoryDelete(uint32 cat); void NodesURLChanged(wxString url); void ServersURLChanged(wxString url); // Partfile conversion: Core -> GUI void ConvertUpdateProgress(float percent, wxString label, wxString header); void ConvertUpdateJobInfo(ConvertInfo info); void ConvertRemoveJobInfo(unsigned id); void ConvertClearInfos(); // Partfile conversion: GUI -> Core void ConvertRemoveJob(unsigned id); void ConvertRetryJob(unsigned id); void ConvertReaddAllJobs(); // // GUI -> core notification // void PartFile_Swap_A4AF(CPartFile* file); void PartFile_Swap_A4AF_Auto(CPartFile* file); void PartFile_Swap_A4AF_Others(CPartFile* file); void PartFile_Pause(CPartFile* file); void PartFile_Resume(CPartFile* file); void PartFile_Stop(CPartFile* file); void PartFile_PrioAuto(CPartFile* file, bool val); void PartFile_PrioSet(CPartFile* file, uint8 newDownPriority, bool bSave); void PartFile_Delete(CPartFile* file); void PartFile_SetCat(CPartFile* file, uint32 val); void KnownFile_Up_Prio_Set(CKnownFile* file, uint8 val); void KnownFile_Up_Prio_Auto(CKnownFile* file); void KnownFile_Comment_Set(CKnownFile* file, wxString comment, int8 rating); void Search_Add_Download(CSearchFile* result, uint8 category); void Search_Update_Progress(uint32 value); void Download_Set_Cat_Prio(uint8 cat, uint8 newprio); void Download_Set_Cat_Status(uint8 cat, int newstatus); void Upload_Resort_Queue(); void Client_Delete(CClientRef client); // // core internal notifications // // ASIO sockets void LibSocketConnect(CLibSocket * socket, int error); void LibSocketSend(CLibSocket * socket, int error); void LibSocketReceive(CLibSocket * socket, int error); void LibSocketLost(CLibSocket * socket); void LibSocketDestroy(CLibSocket * socket); void ProxySocketEvent(CLibSocket * socket, int evt); void ServerTCPAccept(CLibSocketServer * socketServer); void UDPSocketSend(CMuleUDPSocket * socket); void UDPSocketReceive(CMuleUDPSocket * socket); // // Notifications that always create an event // void IPFilter_Reload(); void IPFilter_Update(wxString url); //////////////////////////////////////////////////////////// // Notification utilities /** * The base class of the functions. * * This class allows the the notification call to be executed * without knowing the exact specifics of a given functor. */ class CMuleNotiferBase { public: /** The constructor does nothing. */ CMuleNotiferBase() {}; /** The destructor is virtual since we will be deleting pointers to this type. */ virtual ~CMuleNotiferBase() {}; /** Executes the actual notification call. */ virtual void Notify() const = 0; /** Returns a copy of the functor (function + arguments). */ virtual CMuleNotiferBase* Clone() const = 0; }; /** Notification functor for functions taking no arguments. */ class CMuleNotifier0 : public CMuleNotiferBase { public: typedef void (*FuncType)(); /** Creates a functor from the given function. */ CMuleNotifier0(FuncType func) : m_func(func) {} /** @see CMuleNotifierBase::Notify */ virtual void Notify() const { m_func(); } /** @see CMuleNotifierBase::Clone */ virtual CMuleNotiferBase* Clone() const { return new CMuleNotifier0(m_func); } private: FuncType m_func; }; /** Notification functor for functions taking 1 arguments. */ template class CMuleNotifier1 : public CMuleNotiferBase { public: typedef void (*FuncType)(ARG); /** Creates a functor from the given function and arguments. */ CMuleNotifier1(FuncType func, ARG arg) : m_func(func), m_arg(DeepCopy(arg)) {} /** @see CMuleNotifierBase::Notify */ virtual void Notify() const { m_func(m_arg); } /** @see CMuleNotifierBase::Clone */ virtual CMuleNotiferBase* Clone() const { return new CMuleNotifier1(m_func, m_arg); } private: FuncType m_func; ARG m_arg; }; /** Notification functor for functions taking 2 arguments. */ template class CMuleNotifier2 : public CMuleNotiferBase { public: typedef void (*FuncType)(ARG_1, ARG_2); /** Creates a functor from the given function and arguments. */ CMuleNotifier2(FuncType func, ARG_1 arg1, ARG_2 arg2) : m_func(func), m_arg1(DeepCopy(arg1)), m_arg2(DeepCopy(arg2)) {} /** @see CMuleNotifierBase:: Notify */ virtual void Notify() const { m_func(m_arg1, m_arg2); } /** @see CMuleNotifierBase::Clone */ virtual CMuleNotiferBase* Clone() const { return new CMuleNotifier2(m_func, m_arg1, m_arg2); } private: FuncType m_func; ARG_1 m_arg1; ARG_2 m_arg2; }; /** Notification functor for functions taking 3 arguments. */ template class CMuleNotifier3 : public CMuleNotiferBase { public: typedef void (*FuncType)(ARG_1, ARG_2, ARG_3); /** Creates a functor from the given function and arguments. */ CMuleNotifier3(FuncType func, ARG_1 arg1, ARG_2 arg2, ARG_3 arg3) : m_func(func), m_arg1(DeepCopy(arg1)), m_arg2(DeepCopy(arg2)), m_arg3(DeepCopy(arg3)) {} /** @see CMuleNotifierBase:: Notify */ virtual void Notify() const { m_func(m_arg1, m_arg2, m_arg3); } /** @see CMuleNotifierBase::Clone */ virtual CMuleNotiferBase* Clone() const { return new CMuleNotifier3(m_func, m_arg1, m_arg2, m_arg3); } private: FuncType m_func; ARG_1 m_arg1; ARG_2 m_arg2; ARG_3 m_arg3; }; /** * This event is sent when a worker-thread makes use of a notify-macro. * * This insures that all notifications are executed on the main thread, * thereby improving overall threadsafety. The events are currently * sent to wxTheApp. */ class CMuleGUIEvent : public wxEvent { public: /** Takes ownership a notifier functor. */ CMuleGUIEvent(CMuleNotiferBase* ntf) : wxEvent(-1, MULE_EVT_NOTIFY) , m_functor(ntf) { wxASSERT(m_functor); } /** Destructor, frees the functor object. */ virtual ~CMuleGUIEvent() { delete m_functor; } /** Executes the notification. */ void Notify() const { m_functor->Notify(); } /** @see wxEvent::Clone */ virtual wxEvent* Clone() const { return new CMuleGUIEvent(m_functor->Clone()); } private: /** Not copyable. */ CMuleGUIEvent(const CMuleGUIEvent&); /** Not assignable. */ CMuleGUIEvent& operator=(const CMuleGUIEvent&); //! The actual functor object, CMuleNotiferBase* m_functor; }; /** * This function will execute or queue a given notification functor. * * If the caller is the main thread, the functor is executed immediatly, * thus acting like a regular function call. OTOH, if the caller is a * worker thread, the functor is cloned and sent via an event to * wxTheApp. */ void HandleNotification(const CMuleNotiferBase& ntf); /** * These functions take a function pointer and a set of arguments, * matching those of the function-pointer. A functor is created * from these and either executed immediatly, or sent as an event * in the case of non-main threads calling the functions. * * Note that the return-value of the function must be void. * * IMPORTANT: Note that the functions passed to DoNotify must not * take arguments via references, since this causes the functors * to store references to the arguments, rather than a copy and * thus ends up with dangling references. */ //@{ inline void DoNotify(void (*func)()) { HandleNotification(CMuleNotifier0(func)); } template inline void DoNotify(void (*func)(A1A), A1B arg1) { HandleNotification(CMuleNotifier1(func, arg1)); } template inline void DoNotify(void (*func)(A1A, A2A), A1B arg1, A2B arg2) { HandleNotification(CMuleNotifier2(func, arg1, arg2)); } template inline void DoNotify(void (*func)(A1A, A2A, A3A), A1B arg1, A2B arg2, A3B arg3) { HandleNotification(CMuleNotifier3(func, arg1, arg2, arg3)); } //@} /** * The same as above, but these functions will always send an event, * even from the main thread. */ void HandleNotificationAlways(const CMuleNotiferBase& ntf); inline void DoNotifyAlways(void (*func)()) { HandleNotificationAlways(CMuleNotifier0(func)); } template inline void DoNotifyAlways(void (*func)(A1A), A1B arg1) { HandleNotificationAlways(CMuleNotifier1(func, arg1)); } template inline void DoNotifyAlways(void (*func)(A1A, A2A), A1B arg1, A2B arg2) { HandleNotificationAlways(CMuleNotifier2(func, arg1, arg2)); } template inline void DoNotifyAlways(void (*func)(A1A, A2A, A3A), A1B arg1, A2B arg2, A3B arg3) { HandleNotificationAlways(CMuleNotifier3(func, arg1, arg2, arg3)); } } //! Placing CMuleGUIEvent in the global namespace. using MuleNotify::CMuleGUIEvent; //! The event-handler type that takes a CMuleGUIEvent. typedef void (wxEvtHandler::*MuleNotifyEventFunction)(CMuleGUIEvent&); //! Event-handler for completed hashings of new shared files and partfiles. #define EVT_MULE_NOTIFY(func) \ DECLARE_EVENT_TABLE_ENTRY(MULE_EVT_NOTIFY, -1, -1, \ (wxObjectEventFunction) (wxEventFunction) \ wxStaticCastEvent(MuleNotifyEventFunction, &func), (wxObject*) NULL), // SharedFilesCtrl #define Notify_SharedFilesShowFile(file) MuleNotify::DoNotify(&MuleNotify::SharedFilesShowFile, file) #define Notify_SharedFilesRemoveFile(file) MuleNotify::DoNotify(&MuleNotify::SharedFilesRemoveFile, file) #define Notify_SharedFilesRemoveAllItems() MuleNotify::DoNotify(&MuleNotify::SharedFilesRemoveAllFiles) #define Notify_SharedFilesShowFileList() MuleNotify::DoNotify(&MuleNotify::SharedFilesShowFileList) #define Notify_SharedFilesSort() MuleNotify::DoNotify(&MuleNotify::SharedFilesSort) #define Notify_SharedFilesUpdateItem(file) MuleNotify::DoNotify(&MuleNotify::SharedFilesUpdateItem, file) // download ctrl #define Notify_DownloadCtrlUpdateItem(ptr) MuleNotify::DoNotify(&MuleNotify::DownloadCtrlUpdateItem, ptr) #define Notify_DownloadCtrlAddFile(file) MuleNotify::DoNotify(&MuleNotify::DownloadCtrlAddFile, file) #define Notify_DownloadCtrlRemoveFile(file) MuleNotify::DoNotify(&MuleNotify::DownloadCtrlRemoveFile, file) #define Notify_DownloadCtrlSort() MuleNotify::DoNotify(&MuleNotify::DownloadCtrlSort) #define Notify_DownloadCtrlDoItemSelectionChanged() MuleNotify::DoNotifyAlways(&MuleNotify::DownloadCtrlDoItemSelectionChanged) // source ctrl #define Notify_SourceCtrlUpdateSource(ptr, val) MuleNotify::DoNotify(&MuleNotify::SourceCtrlUpdateSource, ptr, val) #define Notify_SourceCtrlAddSource(p0, p1, val) MuleNotify::DoNotify(&MuleNotify::SourceCtrlAddSource, p0, p1, val) #define Notify_SourceCtrlRemoveSource(ptr0, ptr1) MuleNotify::DoNotify(&MuleNotify::SourceCtrlRemoveSource, ptr0, ptr1) // upload ctrl #define Notify_SharedCtrlAddClient(p0, p1, val) MuleNotify::DoNotify(&MuleNotify::SharedCtrlAddClient, p0, p1, val) #define Notify_SharedCtrlRefreshClient(ptr, val) MuleNotify::DoNotify(&MuleNotify::SharedCtrlRefreshClient, ptr, val) #define Notify_SharedCtrlRemoveClient(p0, p1) MuleNotify::DoNotify(&MuleNotify::SharedCtrlRemoveClient, p0, p1) // server #define Notify_ServerAdd(ptr) MuleNotify::DoNotify(&MuleNotify::ServerAdd, ptr) #define Notify_ServerRemove(ptr) MuleNotify::DoNotify(&MuleNotify::ServerRemove, ptr) #define Notify_ServerRemoveDead() MuleNotify::DoNotify(&MuleNotify::ServerRemoveDead) #define Notify_ServerRemoveAll() MuleNotify::DoNotify(&MuleNotify::ServerRemoveAll) #define Notify_ServerHighlight(ptr, val) MuleNotify::DoNotify(&MuleNotify::ServerHighlight, ptr, val) #define Notify_ServerRefresh(ptr) MuleNotify::DoNotify(&MuleNotify::ServerRefresh, ptr) #define Notify_ServerFreeze() MuleNotify::DoNotify(&MuleNotify::ServerFreeze) #define Notify_ServerThaw() MuleNotify::DoNotify(&MuleNotify::ServerThaw) #define Notify_ServerUpdateED2KInfo() MuleNotify::DoNotify(&MuleNotify::ServerUpdateED2KInfo) #define Notify_ServerUpdateKadKInfo() MuleNotify::DoNotify(&MuleNotify::ServerUpdateKadKInfo) // search #define Notify_SearchCancel() MuleNotify::DoNotify(&MuleNotify::SearchCancel) #define Notify_SearchLocalEnd() MuleNotify::DoNotify(&MuleNotify::SearchLocalEnd) #define Notify_KadSearchEnd(val) MuleNotify::DoNotify(&MuleNotify::KadSearchEnd, val) #define Notify_Search_Update_Sources(ptr) MuleNotify::DoNotify(&MuleNotify::Search_Update_Sources, ptr) #define Notify_Search_Add_Result(s) MuleNotify::DoNotify(&MuleNotify::Search_Add_Result, s) // chat #define Notify_ChatUpdateFriend(ptr) MuleNotify::DoNotify(&MuleNotify::ChatUpdateFriend, ptr) #define Notify_ChatRemoveFriend(ptr) MuleNotify::DoNotify(&MuleNotify::ChatRemoveFriend, ptr) #define Notify_ChatConnResult(val0, val1, s) MuleNotify::DoNotify(&MuleNotify::ChatConnResult, val0, val1, s) #define Notify_ChatProcessMsg(val0, s) MuleNotify::DoNotify(&MuleNotify::ChatProcessMsg, val0, s) #define Notify_ChatSendCaptcha(val0, s) MuleNotify::DoNotify(&MuleNotify::ChatSendCaptcha, val0, s) // misc #define Notify_ShowConnState(val) MuleNotify::DoNotify(&MuleNotify::ShowConnState, val) #define Notify_ShowUserCount(str) MuleNotify::DoNotify(&MuleNotify::ShowUserCount, str) #define Notify_ShowUpdateCatTabTitles() MuleNotify::DoNotify(&MuleNotify::ShowUpdateCatTabTitles) #define Notify_ShowGUI() MuleNotify::DoNotify(&MuleNotify::ShowGUI) // categories #define Notify_CategoryAdded() MuleNotify::DoNotify(&MuleNotify::CategoryAdded) #define Notify_CategoryUpdate(cat) MuleNotify::DoNotify(&MuleNotify::CategoryUpdate, cat) #define Notify_CategoryDelete(cat) MuleNotify::DoNotify(&MuleNotify::CategoryDelete, cat) // server.met/nodes.dat default urls #define Notify_NodesURLChanged(url) MuleNotify::DoNotify(&MuleNotify::NodesURLChanged, url) #define Notify_ServersURLChanged(url) MuleNotify::DoNotify(&MuleNotify::ServersURLChanged, url) // Partfile conversion: Core -> GUI #define Notify_ConvertUpdateProgress(val, text) Notify_ConvertUpdateProgressFull(val, text, wxEmptyString) #define Notify_ConvertUpdateProgressFull(val, text, hdr) MuleNotify::DoNotify(&MuleNotify::ConvertUpdateProgress, val, text, hdr) #define Notify_ConvertUpdateJobInfo(info) MuleNotify::DoNotify(&MuleNotify::ConvertUpdateJobInfo, info) #define Notify_ConvertRemoveJobInfo(id) MuleNotify::DoNotify(&MuleNotify::ConvertRemoveJobInfo, id) #define Notify_ConvertClearInfos() MuleNotify::DoNotify(&MuleNotify::ConvertClearInfos) // Partfile conversion: GUI -> Core #define Notify_ConvertRemoveJob(id) MuleNotify::DoNotify(&MuleNotify::ConvertRemoveJob, id) #define Notify_ConvertRetryJob(id) MuleNotify::DoNotify(&MuleNotify::ConvertRetryJob, id) #define Notify_ConvertReaddAllJobs() MuleNotify::DoNotify(&MuleNotify::ConvertReaddAllJobs) // // GUI -> core notification // // PartFile #define CoreNotify_PartFile_Swap_A4AF(ptr) MuleNotify::DoNotify(&MuleNotify::PartFile_Swap_A4AF, ptr) #define CoreNotify_PartFile_Swap_A4AF_Auto(ptr) MuleNotify::DoNotify(&MuleNotify::PartFile_Swap_A4AF_Auto, ptr) #define CoreNotify_PartFile_Swap_A4AF_Others(ptr) MuleNotify::DoNotify(&MuleNotify::PartFile_Swap_A4AF_Others, ptr) #define CoreNotify_PartFile_Pause(ptr) MuleNotify::DoNotify(&MuleNotify::PartFile_Pause, ptr) #define CoreNotify_PartFile_Resume(ptr) MuleNotify::DoNotify(&MuleNotify::PartFile_Resume, ptr) #define CoreNotify_PartFile_Stop(ptr) MuleNotify::DoNotify(&MuleNotify::PartFile_Stop, ptr) #define CoreNotify_PartFile_PrioAuto(ptr, val) MuleNotify::DoNotify(&MuleNotify::PartFile_PrioAuto, ptr, val) #define CoreNotify_PartFile_PrioSet(p, v0, v1) MuleNotify::DoNotify(&MuleNotify::PartFile_PrioSet, p, v0, v1) #define CoreNotify_PartFile_Delete(ptr) MuleNotify::DoNotify(&MuleNotify::PartFile_Delete, ptr) #define CoreNotify_PartFile_SetCat(ptr, val) MuleNotify::DoNotify(&MuleNotify::PartFile_SetCat, ptr, val) // KnownFile #define CoreNotify_KnownFile_Up_Prio_Set(ptr, val) MuleNotify::DoNotify(&MuleNotify::KnownFile_Up_Prio_Set, ptr, val) #define CoreNotify_KnownFile_Up_Prio_Auto(ptr) MuleNotify::DoNotify(&MuleNotify::KnownFile_Up_Prio_Auto, ptr) #define CoreNotify_KnownFile_Comment_Set(ptr, v0, v1) MuleNotify::DoNotify(&MuleNotify::KnownFile_Comment_Set, ptr, v0, v1) // Search #define CoreNotify_Search_Add_Download(ptr, val) MuleNotify::DoNotify(&MuleNotify::Search_Add_Download, ptr, val) #define CoreNotify_Search_Update_Progress(val) MuleNotify::DoNotify(&MuleNotify::Search_Update_Progress, val) // download queue #define CoreNotify_Download_Set_Cat_Prio(cat, pri) MuleNotify::DoNotify(&MuleNotify::Download_Set_Cat_Prio, cat, pri) #define CoreNotify_Download_Set_Cat_Status(cat, st) MuleNotify::DoNotify(&MuleNotify::Download_Set_Cat_Status, cat, st) // upload queue #define CoreNotify_Upload_Resort_Queue() MuleNotify::DoNotify(&MuleNotify::Upload_Resort_Queue) // client #define CoreNotify_Client_Delete(client) MuleNotify::DoNotify(&MuleNotify::Client_Delete, client) // // core internal notifications // // ASIO sockets #define CoreNotify_LibSocketConnect(ptr, val) MuleNotify::DoNotifyAlways(&MuleNotify::LibSocketConnect, ptr, val) #define CoreNotify_LibSocketSend(ptr, val) MuleNotify::DoNotifyAlways(&MuleNotify::LibSocketSend, ptr, val) #define CoreNotify_LibSocketReceive(ptr, val) MuleNotify::DoNotifyAlways(&MuleNotify::LibSocketReceive, ptr, val) #define CoreNotify_LibSocketLost(ptr) MuleNotify::DoNotifyAlways(&MuleNotify::LibSocketLost, ptr) #define CoreNotify_LibSocketDestroy(ptr) MuleNotify::DoNotifyAlways(&MuleNotify::LibSocketDestroy, ptr) #define CoreNotify_ServerTCPAccept(ptr) MuleNotify::DoNotifyAlways(&MuleNotify::ServerTCPAccept, ptr) #define CoreNotify_UDPSocketSend(ptr) MuleNotify::DoNotifyAlways(&MuleNotify::UDPSocketSend, ptr) #define CoreNotify_UDPSocketReceive(ptr) MuleNotify::DoNotifyAlways(&MuleNotify::UDPSocketReceive, ptr) #define CoreNotify_ProxySocketEvent(ptr, val) MuleNotify::DoNotifyAlways(&MuleNotify::ProxySocketEvent, ptr, val) // // Notifications that always create an event // // IP filter #define NotifyAlways_IPFilter_Reload() MuleNotify::DoNotifyAlways(&MuleNotify::IPFilter_Reload) #define NotifyAlways_IPFilter_Update(url) MuleNotify::DoNotifyAlways(&MuleNotify::IPFilter_Update, url) #endif // __GUIEVENTS_H__ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/HTTPDownload.cpp0000644000175000017500000003336112611472361021253 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Timo Kujala ( tiku@users.sourceforge.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include #include "HTTPDownload.h" // Interface declarations #include // Needed for unicode2char #include "OtherFunctions.h" // Needed for CastChild #include "Logger.h" // Needed for AddLogLine* #include // Needed for CFormat #include "InternalEvents.h" // Needed for CMuleInternalEvent #include "Preferences.h" #include "ScopedPtr.h" #include // Needed for wxFileName #ifndef AMULE_DAEMON #include "inetdownload.h" // Needed for inetDownload #include "muuli_wdr.h" // Needed for ID_CANCEL: Let it here or will fail on win32 #include "MuleGifCtrl.h" typedef wxGauge wxGaugeControl; DECLARE_LOCAL_EVENT_TYPE(wxEVT_HTTP_PROGRESS, wxANY_ID) DECLARE_LOCAL_EVENT_TYPE(wxEVT_HTTP_SHUTDOWN, wxANY_ID) class CHTTPDownloadDialog : public wxDialog { public: CHTTPDownloadDialog(CHTTPDownloadThread* thread) : wxDialog(wxTheApp->GetTopWindow(), -1, _("Downloading..."), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxSYSTEM_MENU) { downloadDlg(this, true)->Show(this, true); m_progressbar = CastChild(ID_HTTPDOWNLOADPROGRESS, wxGaugeControl); m_progressbar->SetRange(100); m_ani = CastChild(ID_ANIMATE, MuleGifCtrl); m_ani->LoadData((const char*)inetDownload, sizeof(inetDownload)); m_ani->Start(); m_thread = thread; } ~CHTTPDownloadDialog() { StopThread(); } void UpdateGauge(int total, int current) { CFormat label( wxT("( %s / %s )") ); label % CastItoXBytes(current); if (total > 0) { label % CastItoXBytes(total); } else { label % _("Unknown"); } CastChild(IDC_DOWNLOADSIZE, wxStaticText)->SetLabel(label.GetString()); if (total && (total != m_progressbar->GetRange())) { m_progressbar->SetRange(total); } if (current && (current <= total)) { m_progressbar->SetValue(current); } Layout(); } private: void StopThread() { if (m_thread) { m_thread->Stop(); delete m_thread; m_thread = NULL; } } void OnBtnCancel(wxCommandEvent& WXUNUSED(evt)) { AddLogLineN(_("HTTP download cancelled")); Show(false); StopThread(); } void OnProgress(CMuleInternalEvent& evt) { UpdateGauge(evt.GetExtraLong(), evt.GetInt()); } void OnShutdown(CMuleInternalEvent& WXUNUSED(evt)) { Show(false); Destroy(); } CMuleThread* m_thread; MuleGifCtrl* m_ani; wxGaugeControl* m_progressbar; DECLARE_EVENT_TABLE() }; BEGIN_EVENT_TABLE(CHTTPDownloadDialog, wxDialog) EVT_BUTTON(ID_HTTPCANCEL, CHTTPDownloadDialog::OnBtnCancel) EVT_MULE_INTERNAL(wxEVT_HTTP_PROGRESS, -1, CHTTPDownloadDialog::OnProgress) EVT_MULE_INTERNAL(wxEVT_HTTP_SHUTDOWN, -1, CHTTPDownloadDialog::OnShutdown) END_EVENT_TABLE() DEFINE_LOCAL_EVENT_TYPE(wxEVT_HTTP_PROGRESS) DEFINE_LOCAL_EVENT_TYPE(wxEVT_HTTP_SHUTDOWN) #endif CHTTPDownloadThread::CHTTPDownloadThread(const wxString& url, const wxString& filename, const wxString& oldfilename, HTTP_Download_File file_id, bool showDialog, bool checkDownloadNewer) #ifdef AMULE_DAEMON : CMuleThread(wxTHREAD_DETACHED), #else : CMuleThread(showDialog ? wxTHREAD_JOINABLE : wxTHREAD_DETACHED), #endif m_url(url), m_tempfile(filename), m_result(-1), m_file_id(file_id), m_companion(NULL) { if (showDialog) { #ifndef AMULE_DAEMON CHTTPDownloadDialog* dialog = new CHTTPDownloadDialog(this); dialog->Show(true); m_companion = dialog; #endif } // Get the date on which the original file was last modified // Only if it's the same URL we used for the last download and if the file exists. if (checkDownloadNewer && thePrefs::GetLastHTTPDownloadURL(file_id) == url) { wxFileName origFile = wxFileName(oldfilename); if (origFile.FileExists()) { AddDebugLogLineN(logHTTP, CFormat(wxT("URL %s matches and file %s exists, only download if newer")) % url % oldfilename); m_lastmodified = origFile.GetModificationTime(); } } wxMutexLocker lock(s_allThreadsMutex); s_allThreads.insert(this); } // Format the given date to a RFC-2616 compliant HTTP date // Example: Thu, 14 Jan 2010 15:40:23 GMT wxString CHTTPDownloadThread::FormatDateHTTP(const wxDateTime& date) { static const wxChar* s_months[] = { wxT("Jan"), wxT("Feb"), wxT("Mar"), wxT("Apr"), wxT("May"), wxT("Jun"), wxT("Jul"), wxT("Aug"), wxT("Sep"), wxT("Oct"), wxT("Nov"), wxT("Dec") }; static const wxChar* s_dow[] = { wxT("Sun"), wxT("Mon"), wxT("Tue"), wxT("Wed"), wxT("Thu"), wxT("Fri"), wxT("Sat") }; return CFormat(wxT("%s, %02d %s %d %02d:%02d:%02d GMT")) % s_dow[date.GetWeekDay(wxDateTime::UTC)] % date.GetDay(wxDateTime::UTC) % s_months[date.GetMonth(wxDateTime::UTC)] % date.GetYear(wxDateTime::UTC) % date.GetHour(wxDateTime::UTC) % date.GetMinute(wxDateTime::UTC) % date.GetSecond(wxDateTime::UTC); } CMuleThread::ExitCode CHTTPDownloadThread::Entry() { if (TestDestroy()) { return NULL; } wxHTTP* url_handler = NULL; AddDebugLogLineN(logHTTP, wxT("HTTP download thread started")); const CProxyData* proxy_data = thePrefs::GetProxyData(); bool use_proxy = proxy_data != NULL && proxy_data->m_proxyEnable; try { wxFFileOutputStream outfile(m_tempfile); if (!outfile.Ok()) { throw wxString(CFormat(_("Unable to create destination file %s for download!")) % m_tempfile); } if (m_url.IsEmpty()) { // Nowhere to download from! throw wxString(_("The URL to download can't be empty")); } url_handler = new wxHTTP; url_handler->SetProxyMode(use_proxy); // Build a conditional get request if the last modified date of the file being updated is known if (m_lastmodified.IsValid()) { // Set a flag in the HTTP header that we only download if the file is newer. // see: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.25 AddDebugLogLineN(logHTTP, wxT("If-Modified-Since: ") + FormatDateHTTP(m_lastmodified)); url_handler->SetHeader(wxT("If-Modified-Since"), FormatDateHTTP(m_lastmodified)); } CScopedPtr url_read_stream(GetInputStream(url_handler, m_url, use_proxy)); if (!url_read_stream.get()) { if (m_response == 304) { m_result = HTTP_Skipped; AddDebugLogLineN(logHTTP, wxT("Skipped download because requested file is not newer.")); throw wxString(wxEmptyString); } else { m_result = HTTP_Error; throw wxString(CFormat(_("The URL %s returned: %i - Error (%i)!")) % m_url % m_response % m_error); } } int download_size = url_read_stream->GetSize(); #ifdef __DEBUG__ if (download_size == -1) { AddDebugLogLineN(logHTTP, wxT("Download size not received, downloading until connection is closed")); } else { AddDebugLogLineN(logHTTP, CFormat(wxT("Download size: %i")) % download_size); } #endif // Here is our read buffer // Still, I'm sure 4092 is probably a better size. // MP: Most people can download at least at 32kb/s from http... const unsigned MAX_HTTP_READ = 32768; char buffer[MAX_HTTP_READ]; int current_read = 0; int total_read = 0; do { url_read_stream->Read(buffer, MAX_HTTP_READ); current_read = url_read_stream->LastRead(); if (current_read) { total_read += current_read; outfile.Write(buffer,current_read); int current_write = outfile.LastWrite(); if (current_read != current_write) { throw wxString(_("Critical error while writing downloaded file")); } else if (m_companion) { #ifndef AMULE_DAEMON CMuleInternalEvent evt(wxEVT_HTTP_PROGRESS); evt.SetInt(total_read); evt.SetExtraLong(download_size); wxPostEvent(m_companion, evt); #endif } } } while (current_read && !TestDestroy()); if (current_read == 0) { if (download_size == -1) { // Download was probably succesful. AddLogLineN(CFormat(_("Downloaded %d bytes")) % total_read); m_result = HTTP_Success; } else if (total_read != download_size) { m_result = HTTP_Error; throw wxString(CFormat(_("Expected %d bytes, but downloaded %d bytes")) % download_size % total_read); } else { // Download was succesful. m_result = HTTP_Success; } } } catch (const wxString& error) { if (wxFileExists(m_tempfile)) { wxRemoveFile(m_tempfile); } if (!error.IsEmpty()) { AddLogLineC(error); } } if (m_result == HTTP_Success) { thePrefs::SetLastHTTPDownloadURL(m_file_id, m_url); } if (url_handler) { url_handler->Destroy(); } AddDebugLogLineN(logHTTP, wxT("HTTP download thread ended")); return 0; } void CHTTPDownloadThread::OnExit() { #ifndef AMULE_DAEMON if (m_companion) { CMuleInternalEvent termEvent(wxEVT_HTTP_SHUTDOWN); wxPostEvent(m_companion, termEvent); } #endif // Notice the app that the file finished download CMuleInternalEvent evt(wxEVT_CORE_FINISHED_HTTP_DOWNLOAD); evt.SetInt((int)m_file_id); evt.SetExtraLong((long)m_result); wxPostEvent(wxTheApp, evt); wxMutexLocker lock(s_allThreadsMutex); s_allThreads.erase(this); } //! This function's purpose is to handle redirections in a proper way. wxInputStream* CHTTPDownloadThread::GetInputStream(wxHTTP * & url_handler, const wxString& location, bool proxy) { if (TestDestroy()) { return NULL; } if (!location.StartsWith(wxT("http://"))) { // This is not a http url throw wxString(_("Invalid URL for HTTP download or HTTP redirection (did you forget 'http://' ?)")); } // Get the host // Remove the "http://" wxString host = location.Right(location.Len() - 7); // strlen("http://") -> 7 // I belive this is a bug... // Sometimes "Location" header looks like this: // "http://www.whatever.com:8080http://www.whatever.com/downloads/something.zip" // So let's clean it... int bad_url_pos = host.Find(wxT("http://")); wxString location_url; if (bad_url_pos != -1) { // Malformed Location field on header (bug above?) location_url = host.Mid(bad_url_pos); host = host.Left(bad_url_pos); // After the first '/' non-http-related, it's the location part of the URL location_url = location_url.Right(location_url.Len() - 7).AfterFirst(wxT('/')); } else { // Regular Location field // After the first '/', it's the location part of the URL location_url = host.AfterFirst(wxT('/')); // The host is everything till the first "/" host = host.BeforeFirst(wxT('/')); } // Build the cleaned url now wxString url = wxT("http://") + host + wxT("/") + location_url; int port = 80; if (host.Find(wxT(':')) != -1) { // This http url has a port port = wxAtoi(host.AfterFirst(wxT(':'))); host = host.BeforeFirst(wxT(':')); } wxIPV4address addr; addr.Hostname(host); addr.Service(port); if (!url_handler->Connect(addr, true)) { throw wxString(_("Unable to connect to HTTP download server")); } wxInputStream* url_read_stream = url_handler->GetInputStream(url); /* store the HTTP response code */ m_response = url_handler->GetResponse(); /* store the HTTP error code */ m_error = url_handler->GetError(); AddDebugLogLineN(logHTTP, CFormat(wxT("Host: %s:%i\n")) % host % port); AddDebugLogLineN(logHTTP, CFormat(wxT("URL: %s\n")) % url); AddDebugLogLineN(logHTTP, CFormat(wxT("Response: %i (Error: %i)")) % m_response % m_error); if (!m_response) { AddDebugLogLineC(logHTTP, wxT("WARNING: Void response on stream creation")); // WTF? Why does this happen? // This is probably produced by an already existing connection, because // the input stream is created nevertheless. However, data is not the same. delete url_read_stream; throw wxString(_("Invalid response from HTTP download server")); } if (m_response == 301 // Moved permanently || m_response == 302 // Moved temporarily // What about 300 (multiple choices)? Do we have to handle it? ) { // We have to remove the current stream. delete url_read_stream; wxString new_location = url_handler->GetHeader(wxT("Location")); url_handler->Destroy(); if (!new_location.IsEmpty()) { url_handler = new wxHTTP; url_handler->SetProxyMode(proxy); if (m_lastmodified.IsValid()) { // Set a flag in the HTTP header that we only download if the file is newer. // see: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.25 url_handler->SetHeader(wxT("If-Modified-Since"), FormatDateHTTP(m_lastmodified)); } url_read_stream = GetInputStream(url_handler, new_location, proxy); } else { AddDebugLogLineC(logHTTP, wxT("ERROR: Redirection code received with no URL")); url_handler = NULL; url_read_stream = NULL; } } else if (m_response == 304) { // "Not Modified" delete url_read_stream; url_handler->Destroy(); url_read_stream = NULL; url_handler = NULL; } return url_read_stream; } void CHTTPDownloadThread::StopAll() { ThreadSet allThreads; { wxMutexLocker lock(s_allThreadsMutex); std::swap(allThreads, s_allThreads); } for (ThreadSet::iterator it = allThreads.begin(); it != allThreads.end(); ++it) { (*it)->Stop(); } } CHTTPDownloadThread::ThreadSet CHTTPDownloadThread::s_allThreads; wxMutex CHTTPDownloadThread::s_allThreadsMutex; // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/HTTPDownload.h0000644000175000017500000000501012611472361020706 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Timo Kujala ( tiku@users.sourceforge.net ) // Copyright (c) 2002-2011 Patrizio Bassi ( hetfield@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef HTTPDOWNLOAD_H #define HTTPDOWNLOAD_H #include "GuiEvents.h" // Needed for HTTP_Download_File #include "MuleThread.h" // Needed for CMuleThread #include // Needed for wxDateTime #include class wxEvtHandler; class wxHTTP; class wxInputStream; enum HTTPDownloadResult { HTTP_Success = 0, HTTP_Error, HTTP_Skipped }; class CHTTPDownloadThread : public CMuleThread { public: /** Note: wxChar* is used to circumvent the thread-unsafe wxString reference counting. */ CHTTPDownloadThread(const wxString& url, const wxString& filename, const wxString& oldfilename, HTTP_Download_File file_id, bool showDialog, bool checkDownloadNewer); static void StopAll(); private: ExitCode Entry(); virtual void OnExit(); wxString m_url; wxString m_tempfile; wxDateTime m_lastmodified; //! Date on which the file being updated was last modified. int m_result; int m_response; //! HTTP response code (e.g. 200) int m_error; //! Additional error code (@see wxProtocol class) HTTP_Download_File m_file_id; wxEvtHandler* m_companion; typedef std::set ThreadSet; static ThreadSet s_allThreads; static wxMutex s_allThreadsMutex; wxInputStream* GetInputStream(wxHTTP * & url_handler, const wxString& location, bool proxy); static wxString FormatDateHTTP(const wxDateTime& date); }; #endif // HTTPDOWNLOAD_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/IP2Country.cpp0000644000175000017500000001536112611472361020762 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // // Country flags are from FAMFAMFAM (http://www.famfamfam.com) // // Flag icons - http://www.famfamfam.com // // These icons are public domain, and as such are free for any use (attribution appreciated but not required). // // Note that these flags are named using the ISO3166-1 alpha-2 country codes where appropriate. // A list of codes can be found at http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 // // If you find these icons useful, please donate via paypal to mjames@gmail.com // (or click the donate button available at http://www.famfamfam.com/lab/icons/silk) // // Contact: mjames@gmail.com // #ifdef HAVE_CONFIG_H # include "config.h" // Needed for ENABLE_IP2COUNTRY #endif #ifdef _MSC_VER // For MSVC we need to check here if geoip is available at all. MinGW needs the include below however. // Block unnecessary includes from GeoIP.h #define _WINDOWS_ #define _WINSOCK2API_ #define _WS2TCPIP_H_ #define _WSPIAPI_H_ #include #endif #ifdef ENABLE_IP2COUNTRY #include "Preferences.h" // For thePrefs #include "CFile.h" // For CPath #include "HTTPDownload.h" #include "Logger.h" // For AddLogLineM() #include // For CFormat() #include "common/FileFunctions.h" // For UnpackArchive #include // For unicode2char() #include "pixmaps/flags_xpm/CountryFlags.h" #include #include #include #include "IP2Country.h" CIP2Country::CIP2Country(const wxString& configDir) { m_geoip = NULL; m_DataBaseName = wxT("GeoIP.dat"); m_DataBasePath = configDir + m_DataBaseName; } void CIP2Country::Enable() { Disable(); if (m_CountryDataMap.empty()) { LoadFlags(); } if (!CPath::FileExists(m_DataBasePath)) { Update(); return; } m_geoip = GeoIP_open(unicode2char(m_DataBasePath), GEOIP_STANDARD); } void CIP2Country::Update() { AddLogLineN(CFormat(_("Download new GeoIP.dat from %s")) % thePrefs::GetGeoIPUpdateUrl()); CHTTPDownloadThread *downloader = new CHTTPDownloadThread(thePrefs::GetGeoIPUpdateUrl(), m_DataBasePath + wxT(".download"), m_DataBasePath, HTTP_GeoIP, true, true); downloader->Create(); downloader->Run(); } void CIP2Country::Disable() { if (m_geoip) { GeoIP_delete(m_geoip); m_geoip = NULL; } } void CIP2Country::DownloadFinished(uint32 result) { if (result == HTTP_Success) { Disable(); // download succeeded. Switch over to new database. wxString newDat = m_DataBasePath + wxT(".download"); // Try to unpack the file, might be an archive wxWCharBuffer dataBaseName = m_DataBaseName.wc_str(); const wxChar* geoip_files[] = { dataBaseName, NULL }; if (UnpackArchive(CPath(newDat), geoip_files).second == EFT_Error) { AddLogLineC(_("Download of GeoIP.dat file failed, aborting update.")); return; } if (wxFileExists(m_DataBasePath)) { if (!wxRemoveFile(m_DataBasePath)) { AddLogLineC(CFormat(_("Failed to remove %s file, aborting update.")) % m_DataBaseName); return; } } if (!wxRenameFile(newDat, m_DataBasePath)) { AddLogLineC(CFormat(_("Failed to rename %s file, aborting update.")) % m_DataBaseName); return; } Enable(); if (m_geoip) { AddLogLineN(CFormat(_("Successfully updated %s")) % m_DataBaseName); } else { AddLogLineC(_("Error updating GeoIP.dat")); } } else if (result == HTTP_Skipped) { AddLogLineN(CFormat(_("Skipped download of %s, because requested file is not newer.")) % m_DataBaseName); } else { AddLogLineC(CFormat(_("Failed to download %s from %s")) % m_DataBaseName % thePrefs::GetGeoIPUpdateUrl()); // if it failed and there is no database, turn it off if (!wxFileExists(m_DataBasePath)) { thePrefs::SetGeoIPEnabled(false); } } } void CIP2Country::LoadFlags() { // Load data from xpm files for (int i = 0; i < flags::FLAGS_XPM_SIZE; ++i) { CountryData countrydata; countrydata.Name = wxString(flags::flagXPMCodeVector[i].code, wxConvISO8859_1); countrydata.Flag = wxImage(flags::flagXPMCodeVector[i].xpm); if (countrydata.Flag.IsOk()) { m_CountryDataMap[countrydata.Name] = countrydata; } else { AddLogLineC(CFormat(_("Failed to load country data for '%s'.")) % countrydata.Name); continue; } } AddDebugLogLineN(logGeneral, CFormat(wxT("Loaded %d flag bitmaps.")) % m_CountryDataMap.size()); // there's never just one - no plural needed } CIP2Country::~CIP2Country() { Disable(); } const CountryData& CIP2Country::GetCountryData(const wxString &ip) { // Should prevent the crash if the GeoIP database does not exists if (m_geoip == NULL) { CountryDataMap::iterator it = m_CountryDataMap.find(wxString(wxT("unknown"))); it->second.Name = wxT("?"); return it->second; } // wxString::MakeLower() fails miserably in Turkish localization with their dotted/non-dotted 'i's // So fall back to some good ole C string processing. std::string strCode; const char * c = GeoIP_country_code_by_addr(m_geoip, unicode2char(ip)); if (!c) { c = "unknown"; } for ( ; *c; c++) { strCode += ((*c >= 'A' && *c <= 'Z') ? *c + 'a' - 'A' : *c); } const wxString CCode(strCode.c_str(), wxConvISO8859_1); CountryDataMap::iterator it = m_CountryDataMap.find(CCode); if (it == m_CountryDataMap.end()) { // Show the code and ?? flag it = m_CountryDataMap.find(wxString(wxT("unknown"))); wxASSERT(it != m_CountryDataMap.end()); if (CCode.IsEmpty()) { it->second.Name = wxT("?"); } else{ it->second.Name = CCode; } } return it->second; } #else #include "IP2Country.h" CIP2Country::CIP2Country(const wxString&) { m_geoip = NULL; } CIP2Country::~CIP2Country() {} void CIP2Country::Enable() {} void CIP2Country::DownloadFinished(uint32) {} const CountryData& CIP2Country::GetCountryData(const wxString &) { static CountryData dummy; return dummy; } #endif // ENABLE_IP2COUNTRY amule_2.3.1+git20151120.0023527bc2.orig/src/IP2Country.h0000644000175000017500000000461212611472361020424 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // // Country flags are from FAMFAMFAM (http://www.famfamfam.com) // // Flag icons - http://www.famfamfam.com // // These icons are public domain, and as such are free for any use (attribution appreciated but not required). // // Note that these flags are named using the ISO3166-1 alpha-2 country codes where appropriate. // A list of codes can be found at http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 // // If you find these icons useful, please donate via paypal to mjames@gmail.com // (or click the donate button available at http://www.famfamfam.com/lab/icons/silk) // // Contact: mjames@gmail.com // #ifndef IP2COUNTRY_H #define IP2COUNTRY_H #include "Types.h" // Needed for uint8, uint16 and uint32 #include #include #include typedef struct { wxString Name; wxImage Flag; } CountryData; typedef std::map CountryDataMap; class CIP2Country { public: CIP2Country(const wxString& configDir); ~CIP2Country(); const CountryData& GetCountryData(const wxString& ip); void Enable(); void Disable(); void Update(); bool IsEnabled() { return m_geoip != NULL; } void DownloadFinished(uint32 result); private: struct GeoIPTag *m_geoip; CountryDataMap m_CountryDataMap; wxString m_DataBaseName; wxString m_DataBasePath; void LoadFlags(); }; #endif // IP2COUNTRY_H amule_2.3.1+git20151120.0023527bc2.orig/src/IPFilter.cpp0000644000175000017500000004157712611472361020472 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include // Needed for GetDataDir #include #include "IPFilter.h" // Interface declarations. #include "IPFilterScanner.h" // Interface for flexer #include "Preferences.h" // Needed for thePrefs #include "amule.h" // Needed for theApp #include "Statistics.h" // Needed for theStats #include "HTTPDownload.h" // Needed for CHTTPDownloadThread #include "Logger.h" // Needed for AddDebugLogLine{C,N} #include // Needed for CFormat #include // Needed for CSimpleTokenizer #include // Needed for UnpackArchive #include // Needed for CTextFile #include "ThreadScheduler.h" // Needed for CThreadScheduler and CThreadTask #include "ClientList.h" // Needed for CClientList #include "ServerList.h" // Needed for CServerList #include // Needed for DEBUG_ONLY() #include "RangeMap.h" // Needed for CRangeMap #include "ServerConnect.h" // Needed for ConnectToAnyServer() #include "DownloadQueue.h" // Needed for theApp->downloadqueue //////////////////////////////////////////////////////////// // CIPFilterEvent BEGIN_DECLARE_EVENT_TYPES() DECLARE_EVENT_TYPE(MULE_EVT_IPFILTER_LOADED, -1) END_DECLARE_EVENT_TYPES() DEFINE_EVENT_TYPE(MULE_EVT_IPFILTER_LOADED) class CIPFilterEvent : public wxEvent { public: CIPFilterEvent(CIPFilter::RangeIPs rangeIPs, CIPFilter::RangeLengths rangeLengths, CIPFilter::RangeNames rangeNames) : wxEvent(-1, MULE_EVT_IPFILTER_LOADED) { // Physically copy the vectors, this will hopefully resize them back to their needed capacity. m_rangeIPs = rangeIPs; m_rangeLengths = rangeLengths; // This one is usually empty, and should always be swapped, not copied. std::swap(m_rangeNames, rangeNames); } /** @see wxEvent::Clone */ virtual wxEvent* Clone() const { return new CIPFilterEvent(*this); } CIPFilter::RangeIPs m_rangeIPs; CIPFilter::RangeLengths m_rangeLengths; CIPFilter::RangeNames m_rangeNames; }; typedef void (wxEvtHandler::*MuleIPFilterEventFunction)(CIPFilterEvent&); //! Event-handler for completed hashings of new shared files and partfiles. #define EVT_MULE_IPFILTER_LOADED(func) \ DECLARE_EVENT_TABLE_ENTRY(MULE_EVT_IPFILTER_LOADED, -1, -1, \ (wxObjectEventFunction) (wxEventFunction) \ wxStaticCastEvent(MuleIPFilterEventFunction, &func), (wxObject*) NULL), //////////////////////////////////////////////////////////// // Thread task for loading the ipfilter.dat files. /** * This task loads the two ipfilter.dat files, a task that * can take quite a while on a slow system with a large dat- * file. */ class CIPFilterTask : public CThreadTask { public: CIPFilterTask(wxEvtHandler* owner) : CThreadTask(wxT("Load IPFilter"), wxEmptyString, ETP_Critical), m_storeDescriptions(false), m_owner(owner) { } private: void Entry() { AddLogLineN(_("Loading IP filters 'ipfilter.dat' and 'ipfilter_static.dat'.")); if ( !LoadFromFile(thePrefs::GetConfigDir() + wxT("ipfilter.dat")) && thePrefs::UseIPFilterSystem() ) { // Load from system wide IP filter file wxStandardPathsBase &spb(wxStandardPaths::Get()); #ifdef __WINDOWS__ wxString dataDir(spb.GetPluginsDir()); #elif defined(__WXMAC__) wxString dataDir(spb.GetDataDir()); #else wxString dataDir(spb.GetDataDir().BeforeLast(wxT('/')) + wxT("/amule")); #endif wxString systemwideFile(JoinPaths(dataDir,wxT("ipfilter.dat"))); LoadFromFile(systemwideFile); } LoadFromFile(thePrefs::GetConfigDir() + wxT("ipfilter_static.dat")); uint8 accessLevel = thePrefs::GetIPFilterLevel(); uint32 size = m_result.size(); // Reserve a little more so we don't have to resize the vector later. // (Map ranges can exist that have to be stored in several parts.) // Extra memory will be freed in the end. m_rangeIPs.reserve(size + 1000); m_rangeLengths.reserve(size + 1000); if (m_storeDescriptions) { m_rangeNames.reserve(size + 1000); } for (IPMap::iterator it = m_result.begin(); it != m_result.end(); ++it) { if (it->AccessLevel < accessLevel) { // Calculate range "length" // (which is included-end - start and thus length - 1) // Encoding: // 0 - 0x7fff same // 0x8000 - 0xffff 0xfff - 0x07ffffff // that means: remove msb, shift left by 12 bit, add 0xfff // so it can cover 8 consecutive class A nets // larger ranges (or theoretical ranges with uneven ends) have to be split uint32 startIP = it.keyStart(); uint32 realLength = it.keyEnd() - it.keyStart() + 1; #ifdef __DEBUG__ std::string * descp = 0; #endif while (realLength) { m_rangeIPs.push_back(startIP); uint32 curLength = realLength; uint16 pushLength; if (realLength <= 0x8000) { pushLength = realLength - 1; } else { if (curLength >= 0x08000000) { // range to big, limit curLength = 0x08000000; } else { // cut off LSBs curLength &= 0x07FFF000; } pushLength = ((curLength - 1) >> 12) | 0x8000; } m_rangeLengths.push_back(pushLength); #ifdef __DEBUG__ if (m_storeDescriptions) { // std::string has no ref counting, so swap it // (it's used so we need half the space than wxString with wide chars) if (descp) { // we split the range so we have to duplicate it m_rangeNames.push_back(*descp); } else { // push back empty string and swap m_rangeNames.push_back(std::string()); descp = & * m_rangeNames.rbegin(); std::swap(*descp, it->Description); } } #endif realLength -= curLength; startIP += curLength; } } } // Numbers are probably different: // - ranges from map that are not blocked because of their level are not added to the table // - some ranges from the map have to be split for the table AddDebugLogLineN(logIPFilter, CFormat(wxT("Ranges in map: %d blocked ranges in table: %d")) % size % m_rangeIPs.size()); CIPFilterEvent evt(m_rangeIPs, m_rangeLengths, m_rangeNames); wxPostEvent(m_owner, evt); } /** * This structure is used to contain the range-data in the rangemap. */ struct rangeObject { bool operator==( const rangeObject& other ) const { return AccessLevel == other.AccessLevel; } // Since descriptions are only used for debugging messages, there // is no need to keep them in memory when running a non-debug build. #ifdef __DEBUG__ //! Contains the user-description of the range. std::string Description; #endif //! The AccessLevel for this filter. uint8 AccessLevel; }; //! The is the type of map used to store the IPs. typedef CRangeMap IPMap; bool m_storeDescriptions; // the generated filter CIPFilter::RangeIPs m_rangeIPs; CIPFilter::RangeLengths m_rangeLengths; CIPFilter::RangeNames m_rangeNames; wxEvtHandler* m_owner; // temporary map for filter generation IPMap m_result; /** * Helper function. * * @param IPstart The start of the IP-range. * @param IPend The end of the IP-range, must be less than or equal to IPstart. * @param AccessLevel The AccessLevel of this range. * @param Description The assosiated description of this range. * @return true if the range was added, false if it was discarded. * * This function inserts the specified range into the IPMap. Invalid * ranges where the AccessLevel is not within the range 0..255, or * where IPEnd < IPstart not inserted. */ bool AddIPRange(uint32 IPStart, uint32 IPEnd, uint16 AccessLevel, const char* DEBUG_ONLY(Description)) { if (AccessLevel < 256) { if (IPStart <= IPEnd) { rangeObject item; item.AccessLevel = AccessLevel; #ifdef __DEBUG__ if (m_storeDescriptions) { item.Description = Description; } #endif m_result.insert(IPStart, IPEnd, item); return true; } } return false; } /** * Loads a IP-list from the specified file, can be text or zip. * * @return True if the file was loaded, false otherwise. **/ int LoadFromFile(const wxString& file) { const CPath path = CPath(file); if (!path.FileExists() || TestDestroy()) { return 0; } #ifdef __DEBUG__ m_storeDescriptions = theLogger.IsEnabled(logIPFilter); #endif const wxChar* ipfilter_files[] = { wxT("ipfilter.dat"), wxT("guardian.p2p"), wxT("guarding.p2p"), NULL }; // Try to unpack the file, might be an archive if (UnpackArchive(path, ipfilter_files).second != EFT_Text) { AddLogLineC(CFormat(_("Failed to load ipfilter.dat file '%s', unknown format encountered.")) % file); return 0; } int filtercount = 0; yyip_Bad = 0; wxFFile readFile; if (readFile.Open(path.GetRaw())) { yyip_Line = 1; yyiprestart(readFile.fp()); uint32 IPStart = 0; uint32 IPEnd = 0; uint32 IPAccessLevel = 0; char * IPDescription; #ifdef __DEBUG__ uint32 time1 = GetTickCountFullRes(); #endif while (yyiplex(IPStart, IPEnd, IPAccessLevel, IPDescription)) { AddIPRange(IPStart, IPEnd, IPAccessLevel, IPDescription); filtercount++; } #ifdef __DEBUG__ uint32 time2 = GetTickCountFullRes(); AddDebugLogLineN(logIPFilter, CFormat(wxT("time for lexer: %.3f")) % ((time2-time1) / 1000.0)); #endif } else { AddLogLineC(CFormat(_("Failed to load ipfilter.dat file '%s', could not open file.")) % file); return 0; } wxString msg = CFormat(wxPLURAL("Loaded %u IP-range from '%s'.", "Loaded %u IP-ranges from '%s'.", filtercount)) % filtercount % file; if (yyip_Bad) { msg << wxT(" ") << ( CFormat(wxPLURAL("%u malformed line was discarded.", "%u malformed lines were discarded.", yyip_Bad)) % yyip_Bad ); } AddLogLineN(msg); return filtercount; } }; //////////////////////////////////////////////////////////// // CIPFilter BEGIN_EVENT_TABLE(CIPFilter, wxEvtHandler) EVT_MULE_IPFILTER_LOADED(CIPFilter::OnIPFilterEvent) END_EVENT_TABLE() /** * This function creates a text-file containing the specified text, * but only if the file does not already exist. */ static bool CreateDummyFile(const wxString& filename, const wxString& text) { // Create template files if (!wxFileExists(filename)) { CTextFile file; if (file.Open(filename, CTextFile::write)) { file.WriteLine(text); return true; } } return false; } CIPFilter::CIPFilter() : m_ready(false), m_startKADWhenReady(false), m_connectToAnyServerWhenReady(false) { // Setup dummy files for the curious user. const wxString normalDat = thePrefs::GetConfigDir() + wxT("ipfilter.dat"); const wxString normalMsg = wxString() << wxT("# This file is used by aMule to store ipfilter lists downloaded\n") << wxT("# through the auto-update functionality. Do not save ipfilter-\n") << wxT("# ranges here that should not be overwritten by aMule.\n"); if (CreateDummyFile(normalDat, normalMsg)) { // redownload if user deleted file thePrefs::SetLastHTTPDownloadURL(HTTP_IPFilter, wxEmptyString); } const wxString staticDat = thePrefs::GetConfigDir() + wxT("ipfilter_static.dat"); const wxString staticMsg = wxString() << wxT("# This file is used to store ipfilter-ranges that should\n") << wxT("# not be overwritten by aMule. If you wish to keep a custom\n") << wxT("# set of ipfilter-ranges that take precedence over ipfilter-\n") << wxT("# ranges aquired through the auto-update functionality, then\n") << wxT("# place them in this file. aMule will not change this file."); CreateDummyFile(staticDat, staticMsg); // First load currently available filter, so network connect is possible right after // (in case filter download takes some time). Reload(); // Check if update should be done only after that. m_updateAfterLoading = thePrefs::IPFilterAutoLoad() && !thePrefs::IPFilterURL().IsEmpty(); } void CIPFilter::Reload() { // We keep the current filter till the new one has been loaded. CThreadScheduler::AddTask(new CIPFilterTask(this)); } uint32 CIPFilter::BanCount() const { wxMutexLocker lock(m_mutex); return m_rangeIPs.size(); } bool CIPFilter::IsFiltered(uint32 IPTest, bool isServer) { if ((!thePrefs::IsFilteringClients() && !isServer) || (!thePrefs::IsFilteringServers() && isServer)) { return false; } if (!m_ready) { // Somebody connected before we even started the networks. // Filter is not up yet, so block him. AddDebugLogLineN(logIPFilter, CFormat(wxT("Filtered IP %s because filter isn't ready yet.")) % Uint32toStringIP(IPTest)); if (isServer) { theStats::AddFilteredServer(); } else { theStats::AddFilteredClient(); } return true; } wxMutexLocker lock(m_mutex); // The IP needs to be in host order uint32 ip = wxUINT32_SWAP_ALWAYS(IPTest); int imin = 0; int imax = m_rangeIPs.size() - 1; int i; bool found = false; while (imin <= imax) { i = (imin + imax) / 2; uint32 curIP = m_rangeIPs[i]; if (curIP <= ip) { uint32 curLength = m_rangeLengths[i]; if (curLength >= 0x8000) { curLength = ((curLength & 0x7fff) << 12) + 0xfff; } if (curIP + curLength >= ip) { found = true; break; } } if (curIP > ip) { imax = i - 1; } else { imin = i + 1; } } if (found) { AddDebugLogLineN(logIPFilter, CFormat(wxT("Filtered IP %s%s")) % Uint32toStringIP(IPTest) % (i < (int)m_rangeNames.size() ? (wxT(" (") + wxString(char2unicode(m_rangeNames[i].c_str())) + wxT(")")) : wxString(wxEmptyString))); if (isServer) { theStats::AddFilteredServer(); } else { theStats::AddFilteredClient(); } return true; } return false; } void CIPFilter::Update(const wxString& strURL) { if (!strURL.IsEmpty()) { m_URL = strURL; wxString filename = thePrefs::GetConfigDir() + wxT("ipfilter.download"); wxString oldfilename = thePrefs::GetConfigDir() + wxT("ipfilter.dat"); CHTTPDownloadThread *downloader = new CHTTPDownloadThread(m_URL, filename, oldfilename, HTTP_IPFilter, true, true); downloader->Create(); downloader->Run(); } } void CIPFilter::DownloadFinished(uint32 result) { wxString datName = wxT("ipfilter.dat"); if (result == HTTP_Success) { // download succeeded. proceed with ipfilter loading wxString newDat = thePrefs::GetConfigDir() + wxT("ipfilter.download"); wxString oldDat = thePrefs::GetConfigDir() + datName; if (wxFileExists(oldDat) && !wxRemoveFile(oldDat)) { AddLogLineC(CFormat(_("Failed to remove %s file, aborting update.")) % datName); result = HTTP_Error; } else if (!wxRenameFile(newDat, oldDat)) { AddLogLineC(CFormat(_("Failed to rename new %s file, aborting update.")) % datName); result = HTTP_Error; } else { AddLogLineN(CFormat(_("Successfully updated %s")) % datName); } // cppcheck-suppress duplicateBranch } else if (result == HTTP_Skipped) { AddLogLineN(CFormat(_("Skipped download of %s, because requested file is not newer.")) % datName); } else { AddLogLineC(CFormat(_("Failed to download %s from %s")) % datName % m_URL); } if (result == HTTP_Success) { // Reload both ipfilter files on success Reload(); } } void CIPFilter::OnIPFilterEvent(CIPFilterEvent& evt) { { wxMutexLocker lock(m_mutex); std::swap(m_rangeIPs, evt.m_rangeIPs); std::swap(m_rangeLengths, evt.m_rangeLengths); std::swap(m_rangeNames, evt.m_rangeNames); m_ready = true; } if (theApp->IsOnShutDown()) { return; } AddLogLineN(_("IP filter is ready")); if (thePrefs::IsFilteringClients()) { theApp->clientlist->FilterQueues(); } if (thePrefs::IsFilteringServers()) { theApp->serverlist->FilterServers(); } // Now start networks we didn't start earlier if (m_connectToAnyServerWhenReady || m_startKADWhenReady) { AddLogLineC(_("Connecting")); } if (m_connectToAnyServerWhenReady) { m_connectToAnyServerWhenReady = false; theApp->serverconnect->ConnectToAnyServer(); } if (m_startKADWhenReady) { m_startKADWhenReady = false; theApp->StartKad(); } theApp->ShowConnectionState(true); // update connect button if (thePrefs::GetSrcSeedsOn()) { theApp->downloadqueue->LoadSourceSeeds(); } // Trigger filter update if configured if (m_updateAfterLoading) { m_updateAfterLoading = false; Update(thePrefs::IPFilterURL()); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/IPFilter.h0000644000175000017500000001005712611472361020124 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef IPFILTER_H #define IPFILTER_H #include // Needed for wxEvent #include "Types.h" // Needed for uint8, uint16 and uint32 class CIPFilterEvent; /** * This class represents a list of IPs that should not be accepted * as valid connection destinations nor sources. It provides an * interface to query whether or not a specific IP is filtered. * * Currently this class can handle IPRange files in the Peer-Guardian * format and the AntiP2P format, read from either text files or text * files compressed with the zip compression format. * * This class is thread-safe. */ class CIPFilter : public wxEvtHandler { public: /** * Constructor. */ CIPFilter(); /** * Checks if a IP is filtered with the current list and AccessLevel. * * @param IP2test The IP-Address to test for. * @param isServer Whether this IP belongs to a server or a client. Needed for statistical purposes only. * @return True if it is filtered, false otherwise. * * Note: IP2Test must be in anti-host order (BE on LE platform, LE on BE platform). */ bool IsFiltered( uint32 IP2test, bool isServer = false ); /** * Returns the number of banned ranges. */ uint32 BanCount() const; /** * Reloads the ipfilter files, discarding the current list of ranges. */ void Reload(); /** * Starts a download of the ipfilter-list at the specified URL. * * @param A valid URL. * * Once the file has been downloaded, the ipfilter.dat file * will be replaced with the new file and Reload will be called. */ void Update(const wxString& strURL); /** * This function is called when a download is completed. */ void DownloadFinished(uint32 result); /** * True once initial startup has finished (stays true while reloading later). */ bool IsReady() const { return m_ready; } /** * These functions are called to tell the filter to start networks once it * has finished loading. */ void StartKADWhenReady() { m_startKADWhenReady = true; } void ConnectToAnyServerWhenReady() { m_connectToAnyServerWhenReady = true; } private: /** Handles the result of loading the dat-files. */ void OnIPFilterEvent(CIPFilterEvent&); //! The URL from which the IP filter was downloaded wxString m_URL; // The IP ranges typedef std::vector RangeIPs; RangeIPs m_rangeIPs; typedef std::vector RangeLengths; RangeLengths m_rangeLengths; // Name for each range. This usually stays empty for memory reasons, // except if IP-Filter debugging is active. typedef std::vector RangeNames; RangeNames m_rangeNames; //! Mutex used to ensure thread-safety of this class mutable wxMutex m_mutex; // false if loading (on startup only) bool m_ready; // flags to start networks after loading bool m_startKADWhenReady; bool m_connectToAnyServerWhenReady; // should update be performed after filter is loaded ? bool m_updateAfterLoading; friend class CIPFilterEvent; friend class CIPFilterTask; DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/IPFilterScanner.cpp0000644000175000017500000015343112611472361021775 0ustar morphmorph#line 2 "IPFilterScanner.cpp" #line 4 "IPFilterScanner.cpp" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define yy_create_buffer yyip_create_buffer #define yy_delete_buffer yyip_delete_buffer #define yy_flex_debug yyip_flex_debug #define yy_init_buffer yyip_init_buffer #define yy_flush_buffer yyip_flush_buffer #define yy_load_buffer_state yyip_load_buffer_state #define yy_switch_to_buffer yyip_switch_to_buffer #define yyin yyipin #define yyleng yyipleng #define yylex yyiplex #define yylineno yyiplineno #define yyout yyipout #define yyrestart yyiprestart #define yytext yyiptext #define yywrap yyipwrap #define yyalloc yyipalloc #define yyrealloc yyiprealloc #define yyfree yyipfree #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyiprestart(yyipin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif extern int yyipleng; extern FILE *yyipin, *yyipout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yyiptext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yyiptext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyiprestart()), so that the user can continue scanning by * just pointing yyipin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when yyiptext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int yyipleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yyipwrap()'s to do buffer switches * instead of setting up a fresh yyipin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyiprestart (FILE *input_file ); void yyip_switch_to_buffer (YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yyip_create_buffer (FILE *file,int size ); void yyip_delete_buffer (YY_BUFFER_STATE b ); void yyip_flush_buffer (YY_BUFFER_STATE b ); void yyippush_buffer_state (YY_BUFFER_STATE new_buffer ); void yyippop_buffer_state (void ); static void yyipensure_buffer_stack (void ); static void yyip_load_buffer_state (void ); static void yyip_init_buffer (YY_BUFFER_STATE b,FILE *file ); #define YY_FLUSH_BUFFER yyip_flush_buffer(YY_CURRENT_BUFFER ) YY_BUFFER_STATE yyip_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yyip_scan_string (yyconst char *yy_str ); YY_BUFFER_STATE yyip_scan_bytes (yyconst char *bytes,int len ); void *yyipalloc (yy_size_t ); void *yyiprealloc (void *,yy_size_t ); void yyipfree (void * ); #define yy_new_buffer yyip_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyipensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yyip_create_buffer(yyipin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyipensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yyip_create_buffer(yyipin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define yyipwrap(n) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; FILE *yyipin = (FILE *) 0, *yyipout = (FILE *) 0; typedef int yy_state_type; extern int yyiplineno; int yyiplineno = 1; extern char *yyiptext; #define yytext_ptr yyiptext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yyiptext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ yyipleng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 6 #define YY_END_OF_BUFFER 7 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[169] = { 0, 0, 0, 7, 6, 6, 4, 5, 5, 2, 5, 5, 0, 4, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 3, 0, 2, 2, 0, 0, 0, 3, 3, 2, 2, 0, 1, 0, 3, 2, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int32_t yy_meta[10] = { 0, 1, 1, 2, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int16_t yy_base[173] = { 0, 0, 3, 231, 232, 11, 232, 221, 14, 220, 17, 25, 0, 232, 219, 0, 0, 218, 0, 217, 33, 36, 217, 0, 38, 0, 45, 47, 216, 215, 211, 54, 210, 209, 208, 56, 207, 58, 198, 60, 197, 196, 195, 194, 191, 189, 188, 62, 187, 64, 180, 71, 179, 178, 177, 176, 172, 171, 78, 170, 85, 169, 92, 165, 0, 94, 164, 163, 101, 162, 161, 108, 158, 157, 155, 0, 110, 154, 0, 112, 151, 114, 150, 149, 148, 147, 144, 143, 142, 116, 141, 118, 140, 120, 137, 136, 135, 134, 133, 130, 129, 122, 127, 124, 126, 131, 107, 106, 105, 104, 103, 100, 138, 99, 145, 98, 152, 97, 0, 159, 96, 91, 89, 88, 87, 84, 81, 81, 80, 77, 75, 166, 75, 0, 174, 181, 74, 183, 73, 70, 68, 185, 67, 66, 53, 192, 52, 51, 199, 50, 0, 201, 49, 43, 42, 203, 41, 40, 32, 205, 31, 30, 29, 212, 28, 24, 23, 22, 232, 220, 28, 27, 0 } ; static yyconst flex_int16_t yy_def[173] = { 0, 169, 168, 168, 168, 168, 168, 170, 168, 171, 170, 170, 5, 168, 170, 11, 8, 171, 10, 171, 171, 10, 10, 11, 10, 20, 20, 10, 10, 21, 24, 20, 26, 21, 27, 27, 24, 26, 26, 24, 27, 21, 35, 31, 37, 21, 39, 39, 35, 37, 37, 21, 39, 21, 47, 31, 49, 51, 21, 51, 51, 47, 31, 49, 58, 47, 51, 60, 58, 60, 62, 31, 62, 21, 65, 68, 65, 60, 71, 31, 62, 65, 65, 21, 76, 31, 79, 21, 81, 81, 76, 79, 79, 76, 81, 21, 89, 31, 91, 21, 93, 93, 89, 91, 91, 21, 93, 21, 101, 31, 103, 105, 21, 105, 21, 101, 31, 103, 112, 112, 105, 114, 114, 116, 116, 119, 172, 119, 114, 116, 172, 172, 119, 131, 131, 131, 134, 134, 134, 135, 137, 137, 137, 135, 141, 135, 141, 145, 135, 145, 148, 135, 145, 135, 151, 151, 151, 135, 155, 155, 155, 135, 159, 135, 159, 163, 163, 163, 0, 168, 168, 168, 168 } ; static yyconst flex_int16_t yy_nxt[242] = { 0, 130, 5, 6, 7, 8, 6, 9, 7, 7, 7, 10, 11, 12, 13, 14, 16, 13, 17, 14, 14, 14, 18, 15, 21, 22, 15, 23, 19, 14, 130, 167, 130, 24, 15, 25, 130, 164, 163, 130, 160, 26, 20, 14, 27, 29, 30, 19, 159, 130, 156, 155, 31, 32, 33, 34, 19, 130, 152, 130, 130, 146, 37, 41, 42, 43, 44, 45, 46, 53, 54, 55, 56, 57, 145, 130, 142, 58, 141, 59, 64, 130, 138, 14, 131, 19, 65, 67, 14, 132, 131, 68, 14, 69, 70, 129, 19, 128, 71, 14, 72, 73, 74, 75, 14, 19, 14, 120, 14, 76, 78, 117, 116, 115, 114, 14, 79, 83, 84, 85, 86, 87, 88, 95, 96, 97, 98, 99, 100, 107, 108, 109, 110, 111, 19, 14, 112, 106, 105, 113, 118, 104, 103, 102, 101, 14, 119, 121, 19, 14, 94, 93, 92, 122, 123, 91, 90, 89, 14, 19, 124, 125, 14, 82, 126, 81, 80, 127, 133, 19, 77, 14, 14, 19, 134, 131, 130, 14, 66, 14, 63, 135, 136, 130, 62, 61, 60, 14, 19, 137, 139, 140, 143, 144, 147, 14, 52, 51, 148, 50, 149, 150, 49, 48, 47, 14, 19, 151, 153, 154, 157, 158, 161, 162, 165, 14, 40, 39, 38, 36, 166, 4, 4, 35, 14, 28, 20, 20, 15, 20, 15, 168, 3, 168, 168, 168, 168, 168, 168, 168, 168, 168 } ; static yyconst flex_int16_t yy_chk[242] = { 0, 172, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 5, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 10, 10, 10, 11, 171, 170, 167, 166, 165, 11, 11, 20, 164, 162, 161, 160, 158, 20, 20, 21, 21, 24, 24, 26, 157, 156, 154, 153, 26, 26, 27, 27, 31, 152, 149, 147, 146, 144, 31, 35, 35, 37, 37, 39, 39, 47, 47, 49, 49, 51, 143, 142, 140, 51, 139, 51, 58, 138, 136, 132, 130, 129, 58, 60, 128, 127, 126, 60, 125, 60, 62, 124, 123, 122, 62, 121, 62, 65, 65, 68, 120, 117, 115, 113, 111, 68, 71, 110, 109, 108, 107, 106, 71, 76, 76, 79, 79, 81, 81, 89, 89, 91, 91, 93, 93, 101, 101, 103, 103, 105, 104, 102, 105, 100, 99, 105, 112, 98, 97, 96, 95, 94, 112, 114, 92, 90, 88, 87, 86, 114, 116, 85, 84, 83, 82, 80, 116, 119, 77, 74, 119, 73, 72, 119, 131, 70, 69, 67, 66, 63, 131, 131, 134, 61, 59, 57, 56, 134, 134, 135, 55, 54, 53, 52, 50, 135, 137, 137, 141, 141, 145, 48, 46, 45, 145, 44, 145, 148, 43, 42, 41, 40, 38, 148, 151, 151, 155, 155, 159, 159, 163, 36, 34, 33, 32, 30, 163, 169, 169, 29, 28, 22, 19, 17, 14, 9, 7, 3, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int yyip_flex_debug; int yyip_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yyiptext; #line 1 "./IPFilterScanner.l" #line 2 "./IPFilterScanner.l" // // This file is part of the aMule Project. // // Copyright (c) 2009-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2009-2011 Stu Redman ( sturedman@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // // Read IP filters // // These have a silly "grammar". For example: // 1.2.3.4-1.2.3.5,100,Duh:2.3.4.5-2.3.4.6 // Now - which format is it, and what range should it take? // // So just use the lexer to read the file and assure the line format. // The actual IP reading is done with the ScanIP() function. // #include #include "Types.h" #include "Logger.h" #define IPFS_EXTERN #include "IPFilterScanner.h" #include #include #ifdef _MSC_VER #define isatty(DUMMY) 0 #define YY_NO_UNISTD_H #pragma warning(disable:4003) #endif #define YY_NEVER_INTERACTIVE 1 // When we get here the IP has been lexed nicely, // so we can blaze through without any checks. // The total lexing time is more than twice as fast // with this than when using sscanf. static bool ScanIP(const char * buf, uint32 & ip) { while (*buf < '0') { buf++; // skip whitespace } ip = 0; int a = 0; for (int i = 0; i < 4; buf++) { if (*buf < '0' || *buf > '9') { // finished a number, check it and add to the ip if (a > 255) { return false; } ip = (ip << 8) | a; a = 0; i++; } else { // build number a = a * 10 + *buf - '0'; } } return true; } static bool ScanInt(const char * buf, uint32 & a) { while (*buf < '0') { buf++; // skip whitespace } a = 0; while (*buf >= '0' && *buf <= '9') { a = a * 10 + *buf - '0'; if (a > 255) { return false; } buf++; } return true; } #line 674 "IPFilterScanner.cpp" #define INITIAL 0 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals (void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yyiplex_destroy (void ); int yyipget_debug (void ); void yyipset_debug (int debug_flag ); YY_EXTRA_TYPE yyipget_extra (void ); void yyipset_extra (YY_EXTRA_TYPE user_defined ); FILE *yyipget_in (void ); void yyipset_in (FILE * in_str ); FILE *yyipget_out (void ); void yyipset_out (FILE * out_str ); int yyipget_leng (void ); char *yyipget_text (void ); int yyipget_lineno (void ); void yyipset_lineno (int line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yyipwrap (void ); #else extern int yyipwrap (void ); #endif #endif static void yyunput (int c,char *buf_ptr ); #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void ); #else static int input (void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 8192 #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO fwrite( yyiptext, yyipleng, 1, yyipout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ int n; \ for ( n = 0; n < max_size && \ (c = getc( yyipin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyipin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyipin))==0 && ferror(yyipin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyipin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yyiplex (void); #define YY_DECL int yyiplex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yyiptext and yyipleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ if ( yyipleng > 0 ) \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \ (yyiptext[yyipleng - 1] == '\n'); \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; #line 106 "./IPFilterScanner.l" #line 862 "IPFilterScanner.cpp" if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyipin ) yyipin = stdin; if ( ! yyipout ) yyipout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyipensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yyip_create_buffer(yyipin,YY_BUF_SIZE ); } yyip_load_buffer_state( ); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of yyiptext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_current_state += YY_AT_BOL(); yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 169 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 232 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: YY_RULE_SETUP #line 108 "./IPFilterScanner.l" { /* PeerGuardian filter line - , , */ char * ip1 = yyiptext; char * ip2 = strchr(ip1 + 7, '-') + 1; char * acc = strchr(ip2 + 7, ',') + 1; char * dsc = strchr(acc + 1, ',') + 1; if (!ScanIP(ip1, IPStart) || !ScanIP(ip2, IPEnd) || !ScanInt(acc, IPLevel)) { yyip_Bad++; } else { IPDescription = dsc; return 1; } } YY_BREAK case 2: YY_RULE_SETUP #line 125 "./IPFilterScanner.l" { /* Comment */ } YY_BREAK case 3: YY_RULE_SETUP #line 129 "./IPFilterScanner.l" { /* AntiP2P filter line : - */ char * ip1 = strrchr(yyiptext, ':'); *ip1++ = 0; // remove : and terminate comment char * ip2 = strchr(ip1 + 7, '-') + 1; if (!ScanIP(ip1, IPStart) || !ScanIP(ip2, IPEnd)) { yyip_Bad++; } else { IPLevel = 0; IPDescription = yyiptext; return 1; } } YY_BREAK case 4: /* rule 4 can match eol */ YY_RULE_SETUP #line 145 "./IPFilterScanner.l" { yyip_Line++; } YY_BREAK case 5: YY_RULE_SETUP #line 149 "./IPFilterScanner.l" { /* Bad line */ yyip_Bad++; AddDebugLogLineN(logIPFilter, CFormat(wxT("error in line %d: %s")) % yyip_Line % wxString(char2unicode(yyiptext))); } YY_BREAK case 6: YY_RULE_SETUP #line 155 "./IPFilterScanner.l" ECHO; YY_BREAK #line 1014 "IPFilterScanner.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyipin at a new source and called * yyiplex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyipin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_c_buf_p); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( yyipwrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yyiptext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of yyiplex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = (yytext_ptr); register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyiprealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), (size_t) num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyiprestart(yyipin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyiprealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { register yy_state_type yy_current_state; register char *yy_cp; yy_current_state = (yy_start); yy_current_state += YY_AT_BOL(); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 169 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { register int yy_is_jam; register char *yy_cp = (yy_c_buf_p); register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 169 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 168); return yy_is_jam ? 0 : yy_current_state; } static void yyunput (int c, register char * yy_bp ) { register char *yy_cp; yy_cp = (yy_c_buf_p); /* undo effects of setting up yyiptext */ *yy_cp = (yy_hold_char); if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ register int number_to_move = (yy_n_chars) + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; (yytext_ptr) = yy_bp; (yy_hold_char) = *yy_cp; (yy_c_buf_p) = yy_cp; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyiprestart(yyipin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yyipwrap( ) ) return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve yyiptext */ (yy_hold_char) = *++(yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n'); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void yyiprestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ yyipensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yyip_create_buffer(yyipin,YY_BUF_SIZE ); } yyip_init_buffer(YY_CURRENT_BUFFER,input_file ); yyip_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void yyip_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * yyippop_buffer_state(); * yyippush_buffer_state(new_buffer); */ yyipensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; yyip_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yyipwrap()) processing, but the only time this flag * is looked at is after yyipwrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void yyip_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyipin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE yyip_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyipalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yyip_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyipalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yyip_create_buffer()" ); b->yy_is_our_buffer = 1; yyip_init_buffer(b,file ); return b; } /** Destroy the buffer. * @param b a buffer created with yyip_create_buffer() * */ void yyip_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyipfree((void *) b->yy_ch_buf ); yyipfree((void *) b ); } #ifndef __cplusplus extern int isatty (int ); #endif /* __cplusplus */ /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyiprestart() or at EOF. */ static void yyip_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; yyip_flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yyip_init_buffer was _probably_ * called from yyiprestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void yyip_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yyip_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void yyippush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; yyipensure_buffer_stack(); /* This block is copied from yyip_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yyip_switch_to_buffer. */ yyip_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void yyippop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; yyip_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yyip_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyipensure_buffer_stack (void) { int num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; (yy_buffer_stack) = (struct yy_buffer_state**)yyipalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyipensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyiprealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyipensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yyip_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) yyipalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yyip_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yyip_switch_to_buffer(b ); return b; } /** Setup the input buffer state to scan a string. The next call to yyiplex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yyip_scan_bytes() instead. */ YY_BUFFER_STATE yyip_scan_string (yyconst char * yystr ) { return yyip_scan_bytes(yystr,strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yyiplex() will * scan from a @e copy of @a bytes. * @param bytes the byte buffer to scan * @param len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yyip_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) yyipalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yyip_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yyip_scan_buffer(buf,n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yyip_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yyiptext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yyiptext[yyipleng] = (yy_hold_char); \ (yy_c_buf_p) = yyiptext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyipleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int yyipget_lineno (void) { return yyiplineno; } /** Get the input stream. * */ FILE *yyipget_in (void) { return yyipin; } /** Get the output stream. * */ FILE *yyipget_out (void) { return yyipout; } /** Get the length of the current token. * */ int yyipget_leng (void) { return yyipleng; } /** Get the current token. * */ char *yyipget_text (void) { return yyiptext; } /** Set the current line number. * @param line_number * */ void yyipset_lineno (int line_number ) { yyiplineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * * @see yyip_switch_to_buffer */ void yyipset_in (FILE * in_str ) { yyipin = in_str ; } void yyipset_out (FILE * out_str ) { yyipout = out_str ; } int yyipget_debug (void) { return yyip_flex_debug; } void yyipset_debug (int bdebug ) { yyip_flex_debug = bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from yyiplex_destroy(), so don't allocate here. */ (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyipin = stdin; yyipout = stdout; #else yyipin = (FILE *) 0; yyipout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * yyiplex_init() */ return 0; } /* yyiplex_destroy is for both reentrant and non-reentrant scanners. */ int yyiplex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yyip_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yyippop_buffer_state(); } /* Destroy the stack itself. */ yyipfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yyiplex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyipalloc (yy_size_t size ) { return (void *) malloc( size ); } void *yyiprealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void yyipfree (void * ptr ) { free( (char *) ptr ); /* see yyiprealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 155 "./IPFilterScanner.l" amule_2.3.1+git20151120.0023527bc2.orig/src/IPFilterScanner.h0000644000175000017500000000257212611472361021441 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2009-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2009-2011 Stu Redman ( sturedman@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef IPFILTERSCANNER_H #define IPFILTERSCANNER_H #ifndef IPFS_EXTERN #define IPFS_EXTERN extern #endif #define YY_DECL int yyiplex(uint32 & IPStart, uint32 & IPEnd, uint32 & IPLevel, char * & IPDescription) YY_DECL; void yyiprestart(FILE *new_file); IPFS_EXTERN int yyip_Bad; IPFS_EXTERN int yyip_Line; #endif amule_2.3.1+git20151120.0023527bc2.orig/src/IPFilterScanner.l0000644000175000017500000000712012611472361021437 0ustar morphmorph%{ // // This file is part of the aMule Project. // // Copyright (c) 2009-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2009-2011 Stu Redman ( sturedman@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // // Read IP filters // // These have a silly "grammar". For example: // 1.2.3.4-1.2.3.5,100,Duh:2.3.4.5-2.3.4.6 // Now - which format is it, and what range should it take? // // So just use the lexer to read the file and assure the line format. // The actual IP reading is done with the ScanIP() function. // #include #include "Types.h" #include "Logger.h" #define IPFS_EXTERN #include "IPFilterScanner.h" #include #include #ifdef _MSC_VER #define isatty(DUMMY) 0 #define YY_NO_UNISTD_H #pragma warning(disable:4003) #endif #define YY_NEVER_INTERACTIVE 1 // When we get here the IP has been lexed nicely, // so we can blaze through without any checks. // The total lexing time is more than twice as fast // with this than when using sscanf. static bool ScanIP(const char * buf, uint32 & ip) { while (*buf < '0') { buf++; // skip whitespace } ip = 0; int a = 0; for (int i = 0; i < 4; buf++) { if (*buf < '0' || *buf > '9') { // finished a number, check it and add to the ip if (a > 255) { return false; } ip = (ip << 8) | a; a = 0; i++; } else { // build number a = a * 10 + *buf - '0'; } } return true; } static bool ScanInt(const char * buf, uint32 & a) { while (*buf < '0') { buf++; // skip whitespace } a = 0; while (*buf >= '0' && *buf <= '9') { a = a * 10 + *buf - '0'; if (a > 255) { return false; } buf++; } return true; } %} %option noyywrap NO [0-9]{1,3} IP {NO}"."{NO}"."{NO}"."{NO} WS [ \t\r]* %% ^{WS}{IP}{WS}-{WS}{IP}{WS},{WS}{NO}{WS},.* { /* PeerGuardian filter line - , , */ char * ip1 = yytext; char * ip2 = strchr(ip1 + 7, '-') + 1; char * acc = strchr(ip2 + 7, ',') + 1; char * dsc = strchr(acc + 1, ',') + 1; if (!ScanIP(ip1, IPStart) || !ScanIP(ip2, IPEnd) || !ScanInt(acc, IPLevel)) { yyip_Bad++; } else { IPDescription = dsc; return 1; } } ^{WS}#.* { /* Comment */ } ^.*:{WS}{IP}{WS}-{WS}{IP}{WS} { /* AntiP2P filter line : - */ char * ip1 = strrchr(yytext, ':'); *ip1++ = 0; // remove : and terminate comment char * ip2 = strchr(ip1 + 7, '-') + 1; if (!ScanIP(ip1, IPStart) || !ScanIP(ip2, IPEnd)) { yyip_Bad++; } else { IPLevel = 0; IPDescription = yytext; return 1; } } {WS}"\n" { yyip_Line++; } ^. { /* Bad line */ yyip_Bad++; AddDebugLogLineN(logIPFilter, CFormat(wxT("error in line %d: %s")) % yyip_Line % wxString(char2unicode(yytext))); } %% amule_2.3.1+git20151120.0023527bc2.orig/src/InternalEvents.h0000644000175000017500000000472712611472361021416 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef INTERNALEVENTS_H #define INTERNALEVENTS_H #include // Needed for wxEvent DECLARE_LOCAL_EVENT_TYPE(wxEVT_CORE_FINISHED_HTTP_DOWNLOAD, wxEVT_USER_FIRST+HTTP_DOWNLOAD_FINISHED) DECLARE_LOCAL_EVENT_TYPE(wxEVT_CORE_SOURCE_DNS_DONE, wxEVT_USER_FIRST+SOURCE_DNS_DONE) DECLARE_LOCAL_EVENT_TYPE(wxEVT_CORE_UDP_DNS_DONE, wxEVT_USER_FIRST+UDP_DNS_DONE) DECLARE_LOCAL_EVENT_TYPE(wxEVT_CORE_SERVER_DNS_DONE, wxEVT_USER_FIRST+SERVER_DNS_DONE) class CMuleInternalEvent : public wxEvent { public: CMuleInternalEvent(int event, int id = wxID_ANY) : wxEvent(id, event), m_ptr(NULL), m_value(0), m_commandInt(0) { } wxEvent* Clone(void) const { return new CMuleInternalEvent(*this); } void SetExtraLong(long value) { m_value = value; } long GetExtraLong() { return m_value; } void SetInt(int i) { m_commandInt = i; } long GetInt() const { return m_commandInt; } void SetClientData(void *ptr) { m_ptr = ptr; } void *GetClientData() { return m_ptr; } private: void* m_ptr; long m_value; int m_commandInt; }; typedef void (wxEvtHandler::*MuleInternalEventFunction)(CMuleInternalEvent&); //! Event-handler for completed hashings of new shared files and partfiles. #define EVT_MULE_INTERNAL(event, id, func) \ DECLARE_EVENT_TABLE_ENTRY(event, id, -1, \ (wxObjectEventFunction) (wxEventFunction) \ wxStaticCastEvent(MuleInternalEventFunction, &func), (wxObject*) NULL), #endif /* INTERNALEVENTS_H */ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/KadDlg.cpp0000644000175000017500000001605712611472361020135 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2004-2011 Angel Vidal (Kry) ( kry@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "KadDlg.h" #include "muuli_wdr.h" #include "OScopeCtrl.h" #include "OtherFunctions.h" #include "HTTPDownload.h" #include "Logger.h" #include "amule.h" #include "Preferences.h" #include "StatisticsDlg.h" #include "ColorFrameCtrl.h" #include "amuleDlg.h" #include "MuleColour.h" #include "Statistics.h" #ifndef CLIENT_GUI #include "kademlia/kademlia/Kademlia.h" #endif BEGIN_EVENT_TABLE(CKadDlg, wxPanel) EVT_TEXT(ID_NODE_IP1, CKadDlg::OnFieldsChange) EVT_TEXT(ID_NODE_IP2, CKadDlg::OnFieldsChange) EVT_TEXT(ID_NODE_IP3, CKadDlg::OnFieldsChange) EVT_TEXT(ID_NODE_IP4, CKadDlg::OnFieldsChange) EVT_TEXT(ID_NODE_PORT, CKadDlg::OnFieldsChange) EVT_TEXT_ENTER(IDC_NODESLISTURL ,CKadDlg::OnBnClickedUpdateNodeList) EVT_BUTTON(ID_NODECONNECT, CKadDlg::OnBnClickedBootstrapClient) EVT_BUTTON(ID_KNOWNNODECONNECT, CKadDlg::OnBnClickedBootstrapKnown) EVT_BUTTON(ID_KADDISCONNECT, CKadDlg::OnBnClickedDisconnectKad) EVT_BUTTON(ID_UPDATEKADLIST, CKadDlg::OnBnClickedUpdateNodeList) END_EVENT_TABLE() CKadDlg::CKadDlg(wxWindow* pParent) : wxPanel(pParent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, wxT("kadwnd") ) { m_kad_scope = NULL; } void CKadDlg::Init() { m_kad_scope = CastChild( wxT("kadScope"), COScopeCtrl ); m_kad_scope->SetRanges(0.0, thePrefs::GetStatsMax()); m_kad_scope->SetYUnits(wxT("Nodes")); #ifndef __WINDOWS__ // // Get label with line breaks out of muuli.wdr, because generated code fails // to compile in Windows. // // In Windows, setting a button label with a newline fails (the newline is ignored). // Creating a button with such a label works however. :-/ // So leave the label from the muuli (without line breaks) here, // so it can still be fixed in the translation. // wxButton* bootstrap = CastChild(ID_KNOWNNODECONNECT, wxButton); bootstrap->SetLabel(_("Bootstrap from \nknown clients")); #endif SetUpdatePeriod(thePrefs::GetTrafficOMeterInterval()); SetGraphColors(); } void CKadDlg::SetUpdatePeriod(int step) { // this gets called after the value in Preferences/Statistics/Update delay has been changed if (step == 0) { m_kad_scope->Stop(); } else { m_kad_scope->Reset(step); } } void CKadDlg::SetGraphColors() { static const char aTrend[] = { 2, 1, 0 }; static const int aRes[] = { IDC_C0, IDC_C0_3, IDC_C0_2 }; m_kad_scope->SetBackgroundColor(CStatisticsDlg::getColors(0)); m_kad_scope->SetGridColor(CStatisticsDlg::getColors(1)); for (size_t i = 0; i < 3; ++i) { m_kad_scope->SetPlotColor(CStatisticsDlg::getColors(12 + i), aTrend[i]); CColorFrameCtrl* ctrl = CastChild(aRes[i], CColorFrameCtrl); ctrl->SetBackgroundBrushColour(CMuleColour(CStatisticsDlg::getColors(12 + i))); ctrl->SetFrameBrushColour(*wxBLACK); } } void CKadDlg::UpdateGraph(const GraphUpdateInfo& update) { std::vector v(3); v[0] = const_cast(&update.kadnodes[0]); v[1] = const_cast(&update.kadnodes[1]); v[2] = const_cast(&update.kadnodes[2]); const std::vector &apfKad(v); unsigned nodeCount = static_cast(update.kadnodes[2]); if (!IsShownOnScreen()) { m_kad_scope->DelayPoints(); } else { // Check the current node-count to see if we should increase the graph height if (m_kad_scope->GetUpperLimit() < update.kadnodes[2]) { // Grow the limit by 50 sized increments. m_kad_scope->SetRanges(0.0, ((nodeCount + 49) / 50) * 50); } m_kad_scope->AppendPoints(update.timestamp, apfKad); } } void CKadDlg::UpdateNodeCount(unsigned nodeCount) { wxStaticText* label = CastChild( wxT("nodesListLabel"), wxStaticText ); wxCHECK_RET(label, wxT("Failed to find kad-nodes label")); label->SetLabel(CFormat(_("Nodes (%u)")) % nodeCount); label->GetParent()->Layout(); } // Enables or disables the node connect button depending on the conents of the text fields void CKadDlg::OnFieldsChange(wxCommandEvent& WXUNUSED(evt)) { // These are the IDs of the search-fields int textfields[] = { ID_NODE_IP1, ID_NODE_IP2, ID_NODE_IP3, ID_NODE_IP4, ID_NODE_PORT}; bool enable = true; for ( uint16 i = 0; i < itemsof(textfields); i++ ) { enable &= !CastChild(textfields[i], wxTextCtrl)->GetValue().IsEmpty(); } // Enable the node connect button if all fields contain text FindWindowById(ID_NODECONNECT)->Enable( enable ); } void CKadDlg::OnBnClickedBootstrapClient(wxCommandEvent& WXUNUSED(evt)) { if (FindWindowById(ID_NODECONNECT)->IsEnabled()) { // Ip is reversed since StringIPtoUint32 returns anti-host and kad expects host order uint32 ip = StringIPtoUint32( dynamic_cast(FindWindowById(ID_NODE_IP4))->GetValue() + wxT(".") + dynamic_cast(FindWindowById(ID_NODE_IP3))->GetValue() + wxT(".") + dynamic_cast(FindWindowById(ID_NODE_IP2))->GetValue() + wxT(".") + dynamic_cast(FindWindowById(ID_NODE_IP1))->GetValue() ); if (ip == 0) { wxMessageBox(_("Invalid ip to bootstrap"), _("WARNING"), wxOK | wxICON_EXCLAMATION, this); } else { unsigned long port; if (dynamic_cast(FindWindowById(ID_NODE_PORT))->GetValue().ToULong(&port)) { theApp->BootstrapKad(ip, port); } else { wxMessageBox(_("Invalid port to bootstrap"), _("WARNING"), wxOK | wxICON_EXCLAMATION, this); } } } else { wxMessageBox(_("Please fill all fields required"), _("Message"), wxOK | wxICON_INFORMATION, this); } } void CKadDlg::OnBnClickedBootstrapKnown(wxCommandEvent& WXUNUSED(evt)) { theApp->StartKad(); } void CKadDlg::OnBnClickedDisconnectKad(wxCommandEvent& WXUNUSED(evt)) { theApp->StopKad(); } void CKadDlg::OnBnClickedUpdateNodeList(wxCommandEvent& WXUNUSED(evt)) { if ( wxMessageBox( wxString(_("Are you sure you want to download a new nodes.dat file?\n")) + _("Doing so will remove your current nodes and restart Kademlia connection.") , _("Continue?"), wxICON_EXCLAMATION | wxYES_NO, this) == wxYES ) { wxString strURL = dynamic_cast(FindWindowById(IDC_NODESLISTURL))->GetValue(); thePrefs::SetKadNodesUrl(strURL); theApp->UpdateNotesDat(strURL); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/KadDlg.h0000644000175000017500000000364612611472361017602 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2004-2011 Angel Vidal (Kry) ( kry@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef KADDLG_H #define KADDLG_H #include // Needed for wxPanel class COScopeCtrl; class wxListEvent; class wxCommandEvent; class wxMouseEvent; typedef struct UpdateInfo GraphUpdateInfo; class CKadDlg : public wxPanel { public: CKadDlg(wxWindow* pParent); ~CKadDlg() {}; void Init(); void SetUpdatePeriod(int step); void SetGraphColors(); void UpdateGraph(const GraphUpdateInfo& update); void UpdateNodeCount(unsigned nodes); private: COScopeCtrl* m_kad_scope; // Event handlers void OnBnClickedBootstrapClient(wxCommandEvent& evt); void OnBnClickedBootstrapKnown(wxCommandEvent& evt); void OnBnClickedDisconnectKad(wxCommandEvent& evt); void OnBnClickedUpdateNodeList(wxCommandEvent& evt); void OnFieldsChange(wxCommandEvent& evt); DECLARE_EVENT_TABLE() }; #endif // KADDLG_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/KnownFile.cpp0000644000175000017500000012433612611472361020703 0ustar morphmorph// // This file is part of the aMule Project. // // Parts of this file are based on work from pan One (http://home-3.tiscali.nl/~meost/pms/) // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "KnownFile.h" // Do_not_auto_remove #include #include #include #include #include #include #ifdef CLIENT_GUI #include "UpDownClientEC.h" // Needed for CUpDownClient #else #include "updownclient.h" // Needed for CUpDownClient #endif #include "MemFile.h" // Needed for CMemFile #include "Packet.h" // Needed for CPacket #include "Preferences.h" // Needed for CPreferences #include "KnownFileList.h" // Needed for CKnownFileList #include "amule.h" // Needed for theApp #include "PartFile.h" // Needed for SavePartFile #include "ClientList.h" // Needed for clientlist (buddy support) #include "Logger.h" #include "ScopedPtr.h" // Needed for CScopedArray and CScopedPtr #include "GuiEvents.h" // Needed for Notify_* #include "SearchFile.h" // Needed for CSearchFile #include "FileArea.h" // Needed for CFileArea #include "FileAutoClose.h" // Needed for CFileAutoClose #include "Server.h" // Needed for CServer #include "CryptoPP_Inc.h" // Needed for MD4 #include CFileStatistic::CFileStatistic(CKnownFile *parent) : fileParent(parent), requested(0), transferred(0), accepted(0), alltimerequested(0), alltimetransferred(0), alltimeaccepted(0) {} #ifndef CLIENT_GUI void CFileStatistic::AddRequest() { requested++; alltimerequested++; theApp->knownfiles->requested++; theApp->sharedfiles->UpdateItem(fileParent); } void CFileStatistic::AddAccepted() { accepted++; alltimeaccepted++; theApp->knownfiles->accepted++; theApp->sharedfiles->UpdateItem(fileParent); } void CFileStatistic::AddTransferred(uint64 bytes) { transferred += bytes; alltimetransferred += bytes; theApp->knownfiles->transferred += bytes; theApp->sharedfiles->UpdateItem(fileParent); } #endif // CLIENT_GUI /* Abstract File (base class)*/ CAbstractFile::CAbstractFile() : m_iRating(0), m_hasComment(false), m_iUserRating(0), m_nFileSize(0) {} CAbstractFile::CAbstractFile(const CAbstractFile& other) : m_abyFileHash(other.m_abyFileHash), m_strComment(other.m_strComment), m_iRating(other.m_iRating), m_hasComment(other.m_hasComment), m_iUserRating(other.m_iUserRating), m_taglist(other.m_taglist), m_kadNotes(), m_nFileSize(other.m_nFileSize), m_fileName(other.m_fileName) { /* // TODO: Currently it's not safe to duplicate the entries, but isn't needed either. CKadEntryPtrList::const_iterator it = other.m_kadNotes.begin(); for (; it != other.m_kadNotes.end(); ++it) { m_kadNotes.push_back(new Kademlia::CEntry(**it)); } */ } void CAbstractFile::SetFileName(const CPath& fileName) { m_fileName = fileName; } uint32 CAbstractFile::GetIntTagValue(uint8 tagname) const { ArrayOfCTag::const_iterator it = m_taglist.begin(); for (; it != m_taglist.end(); ++it){ if (((*it).GetNameID() == tagname) && (*it).IsInt()) { return (*it).GetInt(); } } return 0; } bool CAbstractFile::GetIntTagValue(uint8 tagname, uint32& ruValue) const { ArrayOfCTag::const_iterator it = m_taglist.begin(); for (; it != m_taglist.end(); ++it){ if (((*it).GetNameID() == tagname) && (*it).IsInt()){ ruValue = (*it).GetInt(); return true; } } return false; } uint32 CAbstractFile::GetIntTagValue(const wxString& tagname) const { ArrayOfCTag::const_iterator it = m_taglist.begin(); for (; it != m_taglist.end(); ++it){ if ((*it).IsInt() && ((*it).GetName() == tagname)) { return (*it).GetInt(); } } return 0; } const wxString& CAbstractFile::GetStrTagValue(uint8 tagname) const { ArrayOfCTag::const_iterator it = m_taglist.begin(); for (; it != m_taglist.end(); ++it){ if ((*it).GetNameID() == tagname && (*it).IsStr()) { return (*it).GetStr(); } } return EmptyString; } const wxString& CAbstractFile::GetStrTagValue(const wxString& tagname) const { ArrayOfCTag::const_iterator it = m_taglist.begin(); for (; it != m_taglist.end(); ++it){ if ((*it).IsStr() && ((*it).GetName() == tagname)) { return (*it).GetStr(); } } return EmptyString; } const CTag *CAbstractFile::GetTag(uint8 tagname, uint8 tagtype) const { ArrayOfCTag::const_iterator it = m_taglist.begin(); for (; it != m_taglist.end(); ++it){ if ((*it).GetNameID() == tagname && (*it).GetType() == tagtype) { return &(*it); } } return NULL; } const CTag *CAbstractFile::GetTag(const wxString& tagname, uint8 tagtype) const { ArrayOfCTag::const_iterator it = m_taglist.begin(); for (; it != m_taglist.end(); ++it){ if ((*it).GetType() == tagtype && (*it).GetName() == tagname) { return &(*it); } } return NULL; } const CTag *CAbstractFile::GetTag(uint8 tagname) const { ArrayOfCTag::const_iterator it = m_taglist.begin(); for (; it != m_taglist.end(); ++it){ if ((*it).GetNameID() == tagname) { return &(*it); } } return NULL; } const CTag *CAbstractFile::GetTag(const wxString& tagname) const { ArrayOfCTag::const_iterator it = m_taglist.begin(); for (; it != m_taglist.end(); ++it){ if ((*it).GetName() == tagname) { return &(*it); } } return NULL; } void CAbstractFile::AddTagUnique(const CTag &rTag) { ArrayOfCTag::iterator it = m_taglist.begin(); for (; it != m_taglist.end(); ++it) { if ( ( ((*it).GetNameID() != 0 && (*it).GetNameID() == rTag.GetNameID()) || (!(*it).GetName().IsEmpty() && !rTag.GetName().IsEmpty() && (*it).GetName() == rTag.GetName()) ) && (*it).GetType() == rTag.GetType()) { it = m_taglist.erase(it); m_taglist.insert(it, rTag); return; } } m_taglist.push_back(rTag); } #ifndef CLIENT_GUI void CAbstractFile::AddNote(Kademlia::CEntry *pEntry) { CKadEntryPtrList::iterator it = m_kadNotes.begin(); for (; it != m_kadNotes.end(); ++it) { Kademlia::CEntry* entry = *it; if(entry->m_uIP == pEntry->m_uIP || entry->m_uSourceID == pEntry->m_uSourceID) { delete pEntry; return; } } m_kadNotes.push_front(pEntry); } #else void CAbstractFile::AddNote(Kademlia::CEntry *) { } #endif /* Known File */ CKnownFile::CKnownFile() : statistic(this) { Init(); } CKnownFile::CKnownFile(uint32 ecid) : CECID(ecid), statistic(this) { Init(); } //#warning Experimental: Construct a CKnownFile from a CSearchFile CKnownFile::CKnownFile(const CSearchFile &searchFile) : // This will copy the file hash CAbstractFile(static_cast(searchFile)), statistic(this) { Init(); // Use CKnownFile::SetFileName() SetFileName(searchFile.GetFileName()); // Use CKnownFile::SetFileSize() SetFileSize(searchFile.GetFileSize()); } void CKnownFile::Init() { m_showSources = false; m_showPeers = false; m_nCompleteSourcesTime = time(NULL); m_nCompleteSourcesCount = 0; m_nCompleteSourcesCountLo = 0; m_nCompleteSourcesCountHi = 0; m_bCommentLoaded = false; m_iPartCount = 0; m_iED2KPartCount = 0; m_iED2KPartHashCount = 0; m_PublishedED2K = false; kadFileSearchID = 0; m_lastPublishTimeKadSrc = 0; m_lastPublishTimeKadNotes = 0; m_lastBuddyIP = 0; m_lastDateChanged = 0; m_bAutoUpPriority = thePrefs::GetNewAutoUp(); m_iUpPriority = ( m_bAutoUpPriority ) ? PR_HIGH : PR_NORMAL; m_hashingProgress = 0; #ifndef CLIENT_GUI m_pAICHHashSet = new CAICHHashSet(this); #endif } void CKnownFile::SetFileSize(uint64 nFileSize) { CAbstractFile::SetFileSize(nFileSize); #ifndef CLIENT_GUI m_pAICHHashSet->SetFileSize(nFileSize); #endif // Examples of parthashs, hashsets and filehashs for different filesizes // according the ed2k protocol //---------------------------------------------------------------------- // //File size: 3 bytes //File hash: 2D55E87D0E21F49B9AD25F98531F3724 //Nr. hashs: 0 // // //File size: 1*PARTSIZE //File hash: A72CA8DF7F07154E217C236C89C17619 //Nr. hashs: 2 //Hash[ 0]: 4891ED2E5C9C49F442145A3A5F608299 //Hash[ 1]: 31D6CFE0D16AE931B73C59D7E0C089C0 *special part hash* // // //File size: 1*PARTSIZE + 1 byte //File hash: 2F620AE9D462CBB6A59FE8401D2B3D23 //Nr. hashs: 2 //Hash[ 0]: 121795F0BEDE02DDC7C5426D0995F53F //Hash[ 1]: C329E527945B8FE75B3C5E8826755747 // // //File size: 2*PARTSIZE //File hash: A54C5E562D5E03CA7D77961EB9A745A4 //Nr. hashs: 3 //Hash[ 0]: B3F5CE2A06BF403BFB9BFFF68BDDC4D9 //Hash[ 1]: 509AA30C9EA8FC136B1159DF2F35B8A9 //Hash[ 2]: 31D6CFE0D16AE931B73C59D7E0C089C0 *special part hash* // // //File size: 3*PARTSIZE //File hash: 5E249B96F9A46A18FC2489B005BF2667 //Nr. hashs: 4 //Hash[ 0]: 5319896A2ECAD43BF17E2E3575278E72 //Hash[ 1]: D86EF157D5E49C5ED502EDC15BB5F82B //Hash[ 2]: 10F2D5B1FCB95C0840519C58D708480F //Hash[ 3]: 31D6CFE0D16AE931B73C59D7E0C089C0 *special part hash* // // //File size: 3*PARTSIZE + 1 byte //File hash: 797ED552F34380CAFF8C958207E40355 //Nr. hashs: 4 //Hash[ 0]: FC7FD02CCD6987DCF1421F4C0AF94FB8 //Hash[ 1]: 2FE466AF8A7C06DA3365317B75A5ACFE //Hash[ 2]: 873D3BF52629F7C1527C6E8E473C1C30 //Hash[ 3]: BCE50BEE7877BB07BB6FDA56BFE142FB // // File size Data parts ED2K parts ED2K part hashs // --------------------------------------------------------------- // 1..PARTSIZE-1 1 1 0(!) // PARTSIZE 1 2(!) 2(!) // PARTSIZE+1 2 2 2 // PARTSIZE*2 2 3(!) 3(!) // PARTSIZE*2+1 3 3 3 if (nFileSize == 0){ //wxFAIL; // Kry - Why commented out by lemonfan? it can never be 0 m_iPartCount = 0; m_iED2KPartCount = 0; m_iED2KPartHashCount = 0; m_sizeLastPart = 0; return; } // nr. of data parts m_iPartCount = nFileSize / PARTSIZE + 1; // size of last part m_sizeLastPart = nFileSize % PARTSIZE; // file with size of n * PARTSIZE if (m_sizeLastPart == 0) { m_sizeLastPart = PARTSIZE; m_iPartCount--; } // nr. of parts to be used with OP_FILESTATUS m_iED2KPartCount = nFileSize / PARTSIZE + 1; // nr. of parts to be used with OP_HASHSETANSWER m_iED2KPartHashCount = nFileSize / PARTSIZE; if (m_iED2KPartHashCount != 0) { m_iED2KPartHashCount += 1; } } void CKnownFile::AddUploadingClient(CUpDownClient* client) { m_ClientUploadList.insert(CCLIENTREF(client, wxT("CKnownFile::AddUploadingClient m_ClientUploadList"))); SourceItemType type = UNAVAILABLE_SOURCE; switch (client->GetUploadState()) { case US_UPLOADING: case US_ONUPLOADQUEUE: type = AVAILABLE_SOURCE; break; default: { // Any other state is UNAVAILABLE_SOURCE by default. } } Notify_SharedCtrlAddClient(this, CCLIENTREF(client, wxT("CKnownFile::AddUploadingClient Notify_SharedCtrlAddClient")), type); UpdateAutoUpPriority(); } void CKnownFile::RemoveUploadingClient(CUpDownClient* client) { if (m_ClientUploadList.erase(CCLIENTREF(client, wxEmptyString))) { Notify_SharedCtrlRemoveClient(client->ECID(), this); UpdateAutoUpPriority(); } } #ifdef CLIENT_GUI CKnownFile::CKnownFile(const CEC_SharedFile_Tag *tag) : CECID(tag->ID()), statistic(this) { Init(); m_abyFileHash = tag->FileHash(); SetFileSize(tag->SizeFull()); m_AvailPartFrequency.insert(m_AvailPartFrequency.end(), m_iPartCount, 0); m_queuedCount = 0; } CKnownFile::~CKnownFile() {} void CKnownFile::UpdateAutoUpPriority() {} #else // ! CLIENT_GUI CKnownFile::~CKnownFile() { SourceSet::iterator it = m_ClientUploadList.begin(); for ( ; it != m_ClientUploadList.end(); ++it ) { it->ClearUploadFileID(); } delete m_pAICHHashSet; } void CKnownFile::SetFilePath(const CPath& filePath) { m_filePath = filePath; } // needed for memfiles. its probably better to switch everything to CFile... bool CKnownFile::LoadHashsetFromFile(const CFileDataIO* file, bool checkhash) { CMD4Hash checkid = file->ReadHash(); uint16 parts = file->ReadUInt16(); m_hashlist.clear(); for (uint16 i = 0; i < parts; ++i){ CMD4Hash cur_hash = file->ReadHash(); m_hashlist.push_back(cur_hash); } // SLUGFILLER: SafeHash - always check for valid m_hashlist if (!checkhash){ m_abyFileHash = checkid; if (parts <= 1) { // nothing to check return true; } } else { if ( m_abyFileHash != checkid ) { return false; // wrong file? } else { if (parts != GetED2KPartHashCount()) { return false; } } } // SLUGFILLER: SafeHash // trust noone ;-) // lol, useless comment but made me lmao // wtf you guys are weird. if (!m_hashlist.empty()) { CreateHashFromHashlist(m_hashlist, &checkid); } if ( m_abyFileHash == checkid ) { return true; } else { m_hashlist.clear(); return false; } } bool CKnownFile::LoadTagsFromFile(const CFileDataIO* file) { uint32 tagcount = file->ReadUInt32(); m_taglist.clear(); for (uint32 j = 0; j != tagcount; ++j) { CTag newtag(*file, true); switch(newtag.GetNameID()){ case FT_FILENAME: if (GetFileName().IsOk()) { // Unlike eMule, we actually prefer the second // filename tag, since we use it to specify the // 'universial' filename (see CPath::ToUniv). CPath path = CPath::FromUniv(newtag.GetStr()); // May be invalid, if from older versions where // unicoded filenames be saved as empty-strings. if (path.IsOk()) { SetFileName(path); } } else { SetFileName(CPath(newtag.GetStr())); } break; case FT_FILESIZE: SetFileSize(newtag.GetInt()); m_AvailPartFrequency.clear(); m_AvailPartFrequency.insert( m_AvailPartFrequency.begin(), GetPartCount(), 0); break; case FT_ATTRANSFERRED: statistic.SetAllTimeTransferred(statistic.GetAllTimeTransferred() + newtag.GetInt()); break; case FT_ATTRANSFERREDHI: statistic.SetAllTimeTransferred(statistic.GetAllTimeTransferred() + (((uint64)newtag.GetInt()) << 32)); break; case FT_ATREQUESTED: statistic.SetAllTimeRequests(newtag.GetInt()); break; case FT_ATACCEPTED: statistic.SetAllTimeAccepts(newtag.GetInt()); break; case FT_ULPRIORITY: m_iUpPriority = newtag.GetInt(); if( m_iUpPriority == PR_AUTO ){ m_iUpPriority = PR_HIGH; m_bAutoUpPriority = true; } else { if ( m_iUpPriority != PR_VERYLOW && m_iUpPriority != PR_LOW && m_iUpPriority != PR_NORMAL && m_iUpPriority != PR_HIGH && m_iUpPriority != PR_VERYHIGH && m_iUpPriority != PR_POWERSHARE) { m_iUpPriority = PR_NORMAL; } m_bAutoUpPriority = false; } break; case FT_PERMISSIONS: case FT_KADLASTPUBLISHKEY: case FT_PARTFILENAME: // Old tags, not used anymore. Just purge them. break; case FT_AICH_HASH: { CAICHHash hash; bool hashSizeOk = hash.DecodeBase32(newtag.GetStr()) == CAICHHash::GetHashSize(); wxASSERT(hashSizeOk); if (hashSizeOk) { m_pAICHHashSet->SetMasterHash(hash, AICH_HASHSETCOMPLETE); } break; } case FT_KADLASTPUBLISHSRC: SetLastPublishTimeKadSrc( newtag.GetInt(), 0 ); if(GetLastPublishTimeKadSrc() > (uint32)time(NULL)+KADEMLIAREPUBLISHTIMES) { //There may be a posibility of an older client that saved a random number here.. This will check for that.. SetLastPublishTimeKadSrc(0, 0); } break; case FT_KADLASTPUBLISHNOTES: SetLastPublishTimeKadNotes( newtag.GetInt() ); break; default: // Store them here and write them back on saving. m_taglist.push_back(newtag); } } return true; } bool CKnownFile::LoadDateFromFile(const CFileDataIO* file) { m_lastDateChanged = file->ReadUInt32(); return true; } bool CKnownFile::LoadFromFile(const CFileDataIO* file) { // SLUGFILLER: SafeHash - load first, verify later bool ret1 = LoadDateFromFile(file); bool ret2 = LoadHashsetFromFile(file,false); bool ret3 = LoadTagsFromFile(file); UpdatePartsInfo(); // Final hash-count verification, needs to be done after the tags are loaded. return ret1 && ret2 && ret3 && GetED2KPartHashCount()==GetHashCount(); // SLUGFILLER: SafeHash } bool CKnownFile::WriteToFile(CFileDataIO* file) { wxCHECK(!IsPartFile(), false); // date file->WriteUInt32(m_lastDateChanged); // hashset file->WriteHash(m_abyFileHash); uint16 parts = m_hashlist.size(); file->WriteUInt16(parts); for (int i = 0; i < parts; ++i) file->WriteHash(m_hashlist[i]); //tags const int iFixedTags = 8; uint32 tagcount = iFixedTags; if (HasProperAICHHashSet()) { tagcount++; } // Float meta tags are currently not written. All older eMule versions < 0.28a have // a bug in the meta tag reading+writing code. To achive maximum backward // compatibility for met files with older eMule versions we just don't write float // tags. This is OK, because we (eMule) do not use float tags. The only float tags // we may have to handle is the '# Sent' tag from the Hybrid, which is pretty // useless but may be received from us via the servers. // // The code for writing the float tags SHOULD BE ENABLED in SOME MONTHS (after most // people are using the newer eMule versions which do not write broken float tags). for (size_t j = 0; j < m_taglist.size(); ++j){ if (m_taglist[j].IsInt() || m_taglist[j].IsStr()) { ++tagcount; } } if (m_lastPublishTimeKadSrc) { ++tagcount; } if (m_lastPublishTimeKadNotes){ ++tagcount; } // standard tags file->WriteUInt32(tagcount); // We still save the unicoded filename, for backwards // compatibility with pre-2.2 and other clients. CTagString nametag_unicode(FT_FILENAME, GetFileName().GetRaw()); // We write it with BOM to keep eMule compatibility nametag_unicode.WriteTagToFile(file,utf8strOptBOM); // The non-unicoded filename is written in an 'universial' // format, which allows us to identify files, even if the // system locale changes. CTagString nametag(FT_FILENAME, CPath::ToUniv(GetFileName())); nametag.WriteTagToFile(file); CTagIntSized sizetag(FT_FILESIZE, GetFileSize(), IsLargeFile() ? 64 : 32); sizetag.WriteTagToFile(file); // statistic uint32 tran; tran = statistic.GetAllTimeTransferred() & 0xFFFFFFFF; CTagInt32 attag1(FT_ATTRANSFERRED, tran); attag1.WriteTagToFile(file); tran = statistic.GetAllTimeTransferred() >> 32; CTagInt32 attag4(FT_ATTRANSFERREDHI, tran); attag4.WriteTagToFile(file); CTagInt32 attag2(FT_ATREQUESTED, statistic.GetAllTimeRequests()); attag2.WriteTagToFile(file); CTagInt32 attag3(FT_ATACCEPTED, statistic.GetAllTimeAccepts()); attag3.WriteTagToFile(file); // priority N permission CTagInt32 priotag(FT_ULPRIORITY, IsAutoUpPriority() ? PR_AUTO : m_iUpPriority); priotag.WriteTagToFile(file); //AICH Filehash if (HasProperAICHHashSet()) { CTagString aichtag(FT_AICH_HASH, m_pAICHHashSet->GetMasterHash().GetString()); aichtag.WriteTagToFile(file); } // Kad sources if (m_lastPublishTimeKadSrc){ CTagInt32 kadLastPubSrc(FT_KADLASTPUBLISHSRC, m_lastPublishTimeKadSrc); kadLastPubSrc.WriteTagToFile(file); } // Kad notes if (m_lastPublishTimeKadNotes){ CTagInt32 kadLastPubNotes(FT_KADLASTPUBLISHNOTES, m_lastPublishTimeKadNotes); kadLastPubNotes.WriteTagToFile(file); } //other tags for (size_t j = 0; j < m_taglist.size(); ++j){ if (m_taglist[j].IsInt() || m_taglist[j].IsStr()) { m_taglist[j].WriteTagToFile(file); } } return true; } void CKnownFile::CreateHashFromHashlist(const ArrayOfCMD4Hash& hashes, CMD4Hash* Output) { wxCHECK_RET(hashes.size(), wxT("No input to hash from in CreateHashFromHashlist")); std::vector buffer(hashes.size() * MD4HASH_LENGTH); std::vector::iterator it = buffer.begin(); for (size_t i = 0; i < hashes.size(); ++i) { it = STLCopy_n(hashes[i].GetHash(), MD4HASH_LENGTH, it); } CreateHashFromInput(&buffer[0], buffer.size(), Output, NULL); } void CKnownFile::CreateHashFromFile(CFileAutoClose& file, uint64 offset, uint32 Length, CMD4Hash* Output, CAICHHashTree* pShaHashOut) { wxCHECK_RET(Length, wxT("No input to hash from in CreateHashFromFile")); CFileArea area; area.ReadAt(file, offset, Length); CreateHashFromInput(area.GetBuffer(), Length, Output, pShaHashOut); area.CheckError(); } void CKnownFile::CreateHashFromInput(const byte* input, uint32 Length, CMD4Hash* Output, CAICHHashTree* pShaHashOut ) { wxASSERT_MSG(Output || pShaHashOut, wxT("Nothing to do in CreateHashFromInput")); { wxCHECK_RET(input, wxT("No input to hash from in CreateHashFromInput")); } wxASSERT(Length <= PARTSIZE); // We never hash more than one PARTSIZE CMemFile data(input, Length); uint32 Required = Length; byte X[64*128]; uint32 posCurrentEMBlock = 0; uint32 nIACHPos = 0; CScopedPtr pHashAlg(CAICHHashSet::GetNewHashAlgo()); // This is all AICH. while (Required >= 64) { uint32 len = Required / 64; if (len > sizeof(X)/(64 * sizeof(X[0]))) { len = sizeof(X)/(64 * sizeof(X[0])); } data.Read(&X, len * 64); // SHA hash needs 180KB blocks if (pShaHashOut) { if (nIACHPos + len*64 >= EMBLOCKSIZE) { uint32 nToComplete = EMBLOCKSIZE - nIACHPos; pHashAlg->Add(X, nToComplete); wxASSERT( nIACHPos + nToComplete == EMBLOCKSIZE ); pShaHashOut->SetBlockHash(EMBLOCKSIZE, posCurrentEMBlock, pHashAlg.get()); posCurrentEMBlock += EMBLOCKSIZE; pHashAlg->Reset(); pHashAlg->Add(X+nToComplete,(len*64) - nToComplete); nIACHPos = (len*64) - nToComplete; } else{ pHashAlg->Add(X, len*64); nIACHPos += len*64; } } Required -= len*64; } // bytes to read Required = Length % 64; if (Required != 0){ data.Read(&X,Required); if (pShaHashOut != NULL){ if (nIACHPos + Required >= EMBLOCKSIZE){ uint32 nToComplete = EMBLOCKSIZE - nIACHPos; pHashAlg->Add(X, nToComplete); wxASSERT( nIACHPos + nToComplete == EMBLOCKSIZE ); pShaHashOut->SetBlockHash(EMBLOCKSIZE, posCurrentEMBlock, pHashAlg.get()); posCurrentEMBlock += EMBLOCKSIZE; pHashAlg->Reset(); pHashAlg->Add(X+nToComplete, Required - nToComplete); nIACHPos = Required - nToComplete; } else{ pHashAlg->Add(X, Required); nIACHPos += Required; } } } if (pShaHashOut != NULL){ if(nIACHPos > 0){ pShaHashOut->SetBlockHash(nIACHPos, posCurrentEMBlock, pHashAlg.get()); posCurrentEMBlock += nIACHPos; } wxASSERT( posCurrentEMBlock == Length ); wxCHECK2( pShaHashOut->ReCalculateHash(pHashAlg.get(), false), ); } if (Output != NULL){ #ifdef __WEAK_CRYPTO__ CryptoPP::Weak::MD4 md4_hasher; #else CryptoPP::MD4 md4_hasher; #endif md4_hasher.CalculateDigest(Output->GetHash(), input, Length); } } const CMD4Hash& CKnownFile::GetPartHash(uint16 part) const { wxASSERT( part < m_hashlist.size() ); return m_hashlist[part]; } CPacket* CKnownFile::CreateSrcInfoPacket(const CUpDownClient* forClient, uint8 byRequestedVersion, uint16 nRequestedOptions) { // Kad reviewed if (m_ClientUploadList.empty()) { return NULL; } if (((static_cast(forClient->GetRequestFile()) != this) && (forClient->GetUploadFile() != this)) || forClient->GetUploadFileID() != GetFileHash()) { wxString file1 = _("Unknown"); if (forClient->GetRequestFile() && forClient->GetRequestFile()->GetFileName().IsOk()) { file1 = forClient->GetRequestFile()->GetFileName().GetPrintable(); } else if (forClient->GetUploadFile() && forClient->GetUploadFile()->GetFileName().IsOk()) { file1 = forClient->GetUploadFile()->GetFileName().GetPrintable(); } wxString file2 = _("Unknown"); if (GetFileName().IsOk()) { file2 = GetFileName().GetPrintable(); } AddDebugLogLineN(logKnownFiles, wxT("File mismatch on source packet (K) Sending: ") + file1 + wxT(" From: ") + file2); return NULL; } const BitVector& rcvstatus = forClient->GetUpPartStatus(); bool SupportsUploadChunksState = !rcvstatus.empty(); //wxASSERT(rcvstatus.size() == GetPartCount()); // Obviously! if (rcvstatus.size() != GetPartCount()) { // Yuck. Same file but different part count? Seriously fucked up. AddDebugLogLineN(logKnownFiles, CFormat(wxT("Impossible situation: different partcounts for the same known file: %i (client) and %i (file)")) % rcvstatus.size() % GetPartCount()); return NULL; } CMemFile data(1024); uint8 byUsedVersion; bool bIsSX2Packet; if (forClient->SupportsSourceExchange2() && byRequestedVersion > 0){ // the client uses SourceExchange2 and requested the highest version he knows // and we send the highest version we know, but of course not higher than his request byUsedVersion = std::min(byRequestedVersion, (uint8)SOURCEEXCHANGE2_VERSION); bIsSX2Packet = true; data.WriteUInt8(byUsedVersion); // we don't support any special SX2 options yet, reserved for later use if (nRequestedOptions != 0) { AddDebugLogLineN(logKnownFiles, CFormat(wxT("Client requested unknown options for SourceExchange2: %u")) % nRequestedOptions); } } else { byUsedVersion = forClient->GetSourceExchange1Version(); bIsSX2Packet = false; if (forClient->SupportsSourceExchange2()) { AddDebugLogLineN(logKnownFiles, wxT("Client which announced to support SX2 sent SX1 packet instead")); } } uint16 nCount = 0; data.WriteHash(forClient->GetUploadFileID()); data.WriteUInt16(nCount); uint32 cDbgNoSrc = 0; SourceSet::iterator it = m_ClientUploadList.begin(); for ( ; it != m_ClientUploadList.end(); ++it ) { const CUpDownClient *cur_src = it->GetClient(); if ( cur_src->HasLowID() || cur_src == forClient || !( cur_src->GetUploadState() == US_UPLOADING || cur_src->GetUploadState() == US_ONUPLOADQUEUE)) { continue; } bool bNeeded = false; if ( SupportsUploadChunksState ) { const BitVector& srcstatus = cur_src->GetUpPartStatus(); if ( !srcstatus.empty() ) { //wxASSERT(srcstatus.size() == GetPartCount()); // Obviously! if (srcstatus.size() != GetPartCount()) { continue; } if ( cur_src->GetUpPartCount() == forClient->GetUpPartCount() ) { for (int x = 0; x < GetPartCount(); x++ ) { if ( srcstatus.get(x) && !rcvstatus.get(x) ) { // We know the receiving client needs // a chunk from this client. bNeeded = true; break; } } } } else { cDbgNoSrc++; // This client doesn't support upload chunk status. // So just send it and hope for the best. bNeeded = true; } } else { // remote client does not support upload chunk status, // search sources which have at least one complete part // we could even sort the list of sources by available // chunks to return as much sources as possible which // have the most available chunks. but this could be // a noticeable performance problem. const BitVector& srcstatus = cur_src->GetUpPartStatus(); if ( !srcstatus.empty() ) { //wxASSERT(srcstatus.size() == GetPartCount()); if (srcstatus.size() != GetPartCount()) { continue; } for (int x = 0; x < GetPartCount(); x++ ) { if ( srcstatus.get(x) ) { // this client has at least one chunk bNeeded = true; break; } } } else { // This client doesn't support upload chunk status. // So just send it and hope for the best. bNeeded = true; } } if ( bNeeded ) { nCount++; uint32 dwID; if(byUsedVersion >= 3) { dwID = cur_src->GetUserIDHybrid(); } else { dwID = cur_src->GetIP(); } data.WriteUInt32(dwID); data.WriteUInt16(cur_src->GetUserPort()); data.WriteUInt32(cur_src->GetServerIP()); data.WriteUInt16(cur_src->GetServerPort()); if (byUsedVersion >= 2) { data.WriteHash(cur_src->GetUserHash()); } if (byUsedVersion >= 4){ // CryptSettings - SourceExchange V4 // 5 Reserved (!) // 1 CryptLayer Required // 1 CryptLayer Requested // 1 CryptLayer Supported const uint8 uSupportsCryptLayer = cur_src->SupportsCryptLayer() ? 1 : 0; const uint8 uRequestsCryptLayer = cur_src->RequestsCryptLayer() ? 1 : 0; const uint8 uRequiresCryptLayer = cur_src->RequiresCryptLayer() ? 1 : 0; const uint8 byCryptOptions = (uRequiresCryptLayer << 2) | (uRequestsCryptLayer << 1) | (uSupportsCryptLayer << 0); data.WriteUInt8(byCryptOptions); } if (nCount > 500) { break; } } } if (!nCount) { return 0; } data.Seek(bIsSX2Packet ? 17 : 16, wxFromStart); data.WriteUInt16(nCount); CPacket* result = new CPacket(data, OP_EMULEPROT, bIsSX2Packet ? OP_ANSWERSOURCES2 : OP_ANSWERSOURCES); if ( result->GetPacketSize() > 354 ) { result->PackPacket(); } return result; } void CKnownFile::CreateOfferedFilePacket( CMemFile *files, CServer *pServer, CUpDownClient *pClient) { // This function is used for offering files to the local server and for sending // shared files to some other client. In each case we send our IP+Port only, if // we have a HighID. wxASSERT(!(pClient && pServer)); SetPublishedED2K(true); files->WriteHash(GetFileHash()); uint32 nClientID = 0; uint16 nClientPort = 0; if (pServer) { if (pServer->GetTCPFlags() & SRV_TCPFLG_COMPRESSION) { #define FILE_COMPLETE_ID 0xfbfbfbfb #define FILE_COMPLETE_PORT 0xfbfb #define FILE_INCOMPLETE_ID 0xfcfcfcfc #define FILE_INCOMPLETE_PORT 0xfcfc // complete file: ip 251.251.251 (0xfbfbfbfb) port 0xfbfb // incomplete file: op 252.252.252 (0xfcfcfcfc) port 0xfcfc if (GetStatus() == PS_COMPLETE) { nClientID = FILE_COMPLETE_ID; nClientPort = FILE_COMPLETE_PORT; } else { nClientID = FILE_INCOMPLETE_ID; nClientPort = FILE_INCOMPLETE_PORT; } } else { if (theApp->IsConnectedED2K() && !::IsLowID(theApp->GetED2KID())){ nClientID = theApp->GetID(); nClientPort = thePrefs::GetPort(); } } } else { // Do not merge this with the above case - this one // also checks Kad status. if (theApp->IsConnected() && !theApp->IsFirewalled()) { nClientID = theApp->GetID(); nClientPort = thePrefs::GetPort(); } } files->WriteUInt32(nClientID); files->WriteUInt16(nClientPort); TagPtrList tags; // The printable filename is used because it's destined for another user. tags.push_back(new CTagString(FT_FILENAME, GetFileName().GetPrintable())); if (pClient && pClient->GetVBTTags()) { tags.push_back(new CTagVarInt(FT_FILESIZE, GetFileSize())); } else { if (!IsLargeFile()){ tags.push_back(new CTagInt32(FT_FILESIZE, GetFileSize())); } else { // Large file // we send 2*32 bit tags to servers, but a real 64 bit tag to other clients. if (pServer) { if (!pServer->SupportsLargeFilesTCP()){ wxFAIL; tags.push_back(new CTagInt32(FT_FILESIZE, 0)); } else { tags.push_back(new CTagInt32(FT_FILESIZE, (uint32)GetFileSize())); tags.push_back(new CTagInt32(FT_FILESIZE_HI, (uint32)(GetFileSize() >> 32))); } } else { if (!pClient->SupportsLargeFiles()) { wxFAIL; tags.push_back(new CTagInt32(FT_FILESIZE, 0)); } else { tags.push_back(new CTagInt64(FT_FILESIZE, GetFileSize())); } } } } if (GetFileRating()) { tags.push_back(new CTagVarInt(FT_FILERATING, GetFileRating(), (pClient && pClient->GetVBTTags()) ? 0 : 32)); } // NOTE: Archives and CD-Images are published+searched with file type "Pro" bool bAddedFileType = false; if (pServer && (pServer->GetTCPFlags() & SRV_TCPFLG_TYPETAGINTEGER)) { // Send integer file type tags to newer servers EED2KFileType eFileType = GetED2KFileTypeSearchID(GetED2KFileTypeID(GetFileName())); if (eFileType >= ED2KFT_AUDIO && eFileType <= ED2KFT_CDIMAGE) { tags.push_back(new CTagInt32(FT_FILETYPE, eFileType)); bAddedFileType = true; } } if (!bAddedFileType) { // Send string file type tags to: // - newer servers, in case there is no integer type available for the file type (e.g. emulecollection) // - older servers // - all clients wxString strED2KFileType(GetED2KFileTypeSearchTerm(GetED2KFileTypeID(GetFileName()))); if (!strED2KFileType.IsEmpty()) { tags.push_back(new CTagString(FT_FILETYPE, strED2KFileType)); } } // There, we could add MetaData info, if we ever get to have that. EUtf8Str eStrEncode; bool unicode_support = // eservers that support UNICODE. (pServer && (pServer->GetUnicodeSupport())) || // clients that support unicode (pClient && pClient->GetUnicodeSupport()); eStrEncode = unicode_support ? utf8strRaw : utf8strNone; files->WriteUInt32(tags.size()); // Sadly, eMule doesn't use a MISCOPTIONS flag on hello packet for this, so we // have to identify the support for new tags by version. bool new_ed2k = // eMule client > 0.42f (pClient && pClient->IsEmuleClient() && pClient->GetVersion() >= MAKE_CLIENT_VERSION(0,42,7)) || // aMule >= 2.0.0rc8. Sadly, there's no way to check the rcN number, so I checked // the rc8 changelog. On rc8 OSInfo was introduced, so... (pClient && pClient->GetClientSoft() == SO_AMULE && !pClient->GetClientOSInfo().IsEmpty()) || // eservers use a flag for this, at least. (pServer && (pServer->GetTCPFlags() & SRV_TCPFLG_NEWTAGS)); for (TagPtrList::iterator it = tags.begin(); it != tags.end(); ++it ) { CTag* pTag = *it; if (new_ed2k) { pTag->WriteNewEd2kTag(files, eStrEncode); } else { pTag->WriteTagToFile(files, eStrEncode); } delete pTag; } } // Updates priority of file if autopriority is activated void CKnownFile::UpdateAutoUpPriority() { if (IsAutoUpPriority()) { uint32 queued = GetQueuedCount(); uint8 priority = PR_NORMAL; if (queued > 20) { priority = PR_LOW; } else if (queued > 1) { priority = PR_NORMAL; } else { priority = PR_HIGH; } if (GetUpPriority() != priority) { SetUpPriority(priority, false); Notify_SharedFilesUpdateItem(this); } } } void CKnownFile::SetFileCommentRating(const wxString& strNewComment, int8 iNewRating) { if (m_strComment != strNewComment || m_iRating != iNewRating) { SetLastPublishTimeKadNotes(0); wxString strCfgPath = wxT("/") + m_abyFileHash.Encode() + wxT("/"); wxConfigBase* cfg = wxConfigBase::Get(); if (strNewComment.IsEmpty() && iNewRating == 0) { cfg->DeleteGroup(strCfgPath); } else { cfg->Write( strCfgPath + wxT("Comment"), strNewComment); cfg->Write( strCfgPath + wxT("Rate"), (int)iNewRating); } m_strComment = strNewComment; m_iRating = iNewRating; SourceSet::iterator it = m_ClientUploadList.begin(); for ( ; it != m_ClientUploadList.end(); ++it ) { it->SetCommentDirty(); } } } void CKnownFile::SetUpPriority(uint8 iNewUpPriority, bool m_bsave){ m_iUpPriority = iNewUpPriority; if( IsPartFile() && m_bsave ) { static_cast(this)->SavePartFile(); } } void CKnownFile::SetPublishedED2K(bool val){ m_PublishedED2K = val; Notify_SharedFilesUpdateItem(this); } bool CKnownFile::PublishNotes() { if(m_lastPublishTimeKadNotes > (uint32)time(NULL)) { return false; } if(!GetFileComment().IsEmpty()) { m_lastPublishTimeKadNotes = (uint32)time(NULL)+KADEMLIAREPUBLISHTIMEN; return true; } if(GetFileRating() != 0) { m_lastPublishTimeKadNotes = (uint32)time(NULL)+KADEMLIAREPUBLISHTIMEN; return true; } return false; } bool CKnownFile::PublishSrc() { uint32 lastBuddyIP = 0; if( theApp->IsFirewalled() ) { CUpDownClient* buddy = theApp->clientlist->GetBuddy(); if( buddy ) { lastBuddyIP = theApp->clientlist->GetBuddy()->GetIP(); if( lastBuddyIP != m_lastBuddyIP ) { SetLastPublishTimeKadSrc( (uint32)time(NULL)+KADEMLIAREPUBLISHTIMES, lastBuddyIP ); return true; } } else { return false; } } if(m_lastPublishTimeKadSrc > (uint32)time(NULL)) { return false; } SetLastPublishTimeKadSrc((uint32)time(NULL)+KADEMLIAREPUBLISHTIMES,lastBuddyIP); return true; } void CKnownFile::UpdatePartsInfo() { // Cache part count uint16 partcount = GetPartCount(); bool flag = (time(NULL) - m_nCompleteSourcesTime > 0); // Ensure the frequency-list is ready if ( m_AvailPartFrequency.size() != GetPartCount() ) { m_AvailPartFrequency.clear(); m_AvailPartFrequency.insert(m_AvailPartFrequency.begin(), GetPartCount(), 0); } if (flag) { ArrayOfUInts16 count; count.reserve(m_ClientUploadList.size()); SourceSet::iterator it = m_ClientUploadList.begin(); for ( ; it != m_ClientUploadList.end(); ++it ) { CUpDownClient* client = it->GetClient(); if ( !client->GetUpPartStatus().empty() && client->GetUpPartCount() == partcount ) { count.push_back(client->GetUpCompleteSourcesCount()); } } m_nCompleteSourcesCount = m_nCompleteSourcesCountLo = m_nCompleteSourcesCountHi = 0; if( partcount > 0) { m_nCompleteSourcesCount = m_AvailPartFrequency[0]; } for (uint16 i = 1; i < partcount; ++i) { if( m_nCompleteSourcesCount > m_AvailPartFrequency[i]) { m_nCompleteSourcesCount = m_AvailPartFrequency[i]; } } count.push_back(m_nCompleteSourcesCount); int32 n = count.size(); if (n > 0) { std::sort(count.begin(), count.end(), std::less()); // calculate range int i = n >> 1; // (n / 2) int j = (n * 3) >> 2; // (n * 3) / 4 int k = (n * 7) >> 3; // (n * 7) / 8 // For complete files, trust the people your uploading to more... // For low guess and normal guess count // - If we see more sources then the guessed low and // normal, use what we see. // - If we see less sources then the guessed low, // adjust network accounts for 100%, we account for // 0% with what we see and make sure we are still // above the normal. // For high guess // Adjust 100% network and 0% what we see. if (n < 20) { if ( count[i] < m_nCompleteSourcesCount ) { m_nCompleteSourcesCountLo = m_nCompleteSourcesCount; } else { m_nCompleteSourcesCountLo = count[i]; } m_nCompleteSourcesCount= m_nCompleteSourcesCountLo; m_nCompleteSourcesCountHi = count[j]; if( m_nCompleteSourcesCountHi < m_nCompleteSourcesCount ) { m_nCompleteSourcesCountHi = m_nCompleteSourcesCount; } } else { // Many sources.. // For low guess // Use what we see. // For normal guess // Adjust network accounts for 100%, we account for // 0% with what we see and make sure we are still above the low. // For high guess // Adjust network accounts for 100%, we account for 0% // with what we see and make sure we are still above the normal. m_nCompleteSourcesCountLo = m_nCompleteSourcesCount; m_nCompleteSourcesCount = count[j]; if( m_nCompleteSourcesCount < m_nCompleteSourcesCountLo ) { m_nCompleteSourcesCount = m_nCompleteSourcesCountLo; } m_nCompleteSourcesCountHi= count[k]; if( m_nCompleteSourcesCountHi < m_nCompleteSourcesCount ) { m_nCompleteSourcesCountHi = m_nCompleteSourcesCount; } } } m_nCompleteSourcesTime = time(NULL) + (60); } Notify_SharedFilesUpdateItem(this); } void CKnownFile::UpdateUpPartsFrequency( CUpDownClient* client, bool increment ) { if ( m_AvailPartFrequency.size() != GetPartCount() ) { m_AvailPartFrequency.clear(); m_AvailPartFrequency.insert(m_AvailPartFrequency.begin(), GetPartCount(), 0); if ( !increment ) { return; } } const BitVector& freq = client->GetUpPartStatus(); unsigned int size = freq.size(); if ( size != m_AvailPartFrequency.size() ) { return; } if ( increment ) { for ( unsigned int i = 0; i < size; ++i ) { if ( freq.get(i) ) { m_AvailPartFrequency[i]++; } } } else { for ( unsigned int i = 0; i < size; ++i ) { if ( freq.get(i) ) { m_AvailPartFrequency[i]--; } } } } void CKnownFile::ClearPriority() { if ( !m_bAutoUpPriority ) return; m_iUpPriority = ( m_bAutoUpPriority ) ? PR_HIGH : PR_NORMAL; UpdateAutoUpPriority(); } void GuessAndRemoveExt(CPath& name) { wxString ext = name.GetExt(); // Remove common two-part extensions, such as "tar.gz" if (ext == wxT("gz") || ext == wxT("bz2")) { name = name.RemoveExt(); if (name.GetExt() == wxT("tar")) { name = name.RemoveExt(); } // might be an extension if length == 3 // and also remove some common non-three-character extensions } else if (ext.Length() == 3 || ext == wxT("7z") || ext == wxT("rm") || ext == wxT("jpeg") || ext == wxT("mpeg") ) { name = name.RemoveExt(); } } void CKnownFile::SetFileName(const CPath& filename) { CAbstractFile::SetFileName(filename); wordlist.clear(); // Don't publish extension. That'd kill the node indexing e.g. "avi". CPath tmpName = GetFileName(); GuessAndRemoveExt(tmpName); Kademlia::CSearchManager::GetWords(tmpName.GetPrintable(), &wordlist); } #endif // CLIENT_GUI //For File Comment // void CKnownFile::LoadComment() const { #ifndef CLIENT_GUI wxString strCfgPath = wxT("/") + m_abyFileHash.Encode() + wxT("/"); wxConfigBase* cfg = wxConfigBase::Get(); m_strComment = cfg->Read( strCfgPath + wxT("Comment"), wxEmptyString); m_iRating = cfg->Read( strCfgPath + wxT("Rate"), 0l); #endif m_bCommentLoaded = true; } wxString CKnownFile::GetAICHMasterHash() const { #ifdef CLIENT_GUI return m_AICHMasterHash; #else if (HasProperAICHHashSet()) { return m_pAICHHashSet->GetMasterHash().GetString(); } return wxEmptyString; #endif } bool CKnownFile::HasProperAICHHashSet() const { #ifdef CLIENT_GUI return m_AICHMasterHash.Length() != 0; #else return m_pAICHHashSet->HasValidMasterHash() && (m_pAICHHashSet->GetStatus() == AICH_HASHSETCOMPLETE || m_pAICHHashSet->GetStatus() == AICH_VERIFIED); #endif } wxString CKnownFile::GetFeedback() const { return wxString(_("File name")) + wxT(": ") + GetFileName().GetPrintable() + wxT("\n") + _("File size") + wxT(": ") + CastItoXBytes(GetFileSize()) + wxT("\n") + _("Share ratio") + CFormat(wxT(": %.2f%%\n")) % (((double)statistic.GetAllTimeTransferred() / (double)GetFileSize()) * 100.0) + _("Uploaded") + wxT(": ") + CastItoXBytes(statistic.GetTransferred()) + wxT(" (") + CastItoXBytes(statistic.GetAllTimeTransferred()) + wxT(")\n") + _("Requested") + CFormat(wxT(": %u (%u)\n")) % statistic.GetRequests() % statistic.GetAllTimeRequests() + _("Accepted") + CFormat(wxT(": %u (%u)\n")) % statistic.GetAccepts() % statistic.GetAllTimeAccepts() + _("On Queue") + CFormat(wxT(": %u\n")) % GetQueuedCount() + _("Complete sources") + CFormat(wxT(": %u\n")) % m_nCompleteSourcesCount; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/KnownFile.h0000644000175000017500000003023012611472361020335 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef KNOWNFILE_H #define KNOWNFILE_H #include "MD4Hash.h" #include "SHAHashSet.h" #include #include #include "kademlia/kademlia/Indexed.h" #include // Needed for CECID #ifdef CLIENT_GUI #include #include "RLE.h" // Needed for RLE_Data, PartFileEncoderData #endif #include "Constants.h" // Needed for PS_*, PR_* #include "ClientRef.h" // Needed for CClientRef class CFileDataIO; class CPacket; class CTag; namespace Kademlia { class CEntry; } typedef vector ArrayOfCMD4Hash; typedef vector ArrayOfCTag; class CFileStatistic { friend class CKnownFilesRem; public: CFileStatistic(CKnownFile *parent); void AddRequest(); void AddAccepted(); void AddTransferred(uint64 bytes); uint16 GetRequests() const {return requested;} uint16 GetAccepts() const {return accepted;} uint64 GetTransferred() const {return transferred;} uint32 GetAllTimeRequests() const {return alltimerequested;} void SetAllTimeRequests(uint32 new_value) { alltimerequested = new_value; }; uint32 GetAllTimeAccepts() const {return alltimeaccepted;} void SetAllTimeAccepts(uint32 new_value) { alltimeaccepted = new_value; }; uint64 GetAllTimeTransferred() const {return alltimetransferred;} void SetAllTimeTransferred(uint64 new_value) { alltimetransferred = new_value; }; private: CKnownFile* fileParent; uint16 requested; uint64 transferred; uint16 accepted; uint32 alltimerequested; uint64 alltimetransferred; uint32 alltimeaccepted; }; /* CPartFile / CKnownFile / CAbstractFile \ CSearchFile */ class CAbstractFile { public: CAbstractFile(); explicit CAbstractFile(const CAbstractFile& other); virtual ~CAbstractFile() {} const CPath& GetFileName() const { return m_fileName; } const CMD4Hash& GetFileHash() const { return m_abyFileHash; } uint64 GetFileSize() const { return m_nFileSize;} bool IsLargeFile() const { return m_nFileSize > (uint64)OLD_MAX_FILE_SIZE; } virtual void SetFileSize(uint64 nFileSize) { m_nFileSize = nFileSize; } virtual void SetFileName(const CPath& filename); /* Tags and Notes handling */ uint32 GetIntTagValue(uint8 tagname) const; uint32 GetIntTagValue(const wxString& tagname) const; bool GetIntTagValue(uint8 tagname, uint32& ruValue) const; const wxString& GetStrTagValue(uint8 tagname) const; const wxString& GetStrTagValue(const wxString& tagname) const; const CTag *GetTag(const wxString& tagname) const; const CTag *GetTag(const wxString& tagname, uint8 tagtype) const; const CTag *GetTag(uint8 tagname) const; const CTag *GetTag(uint8 tagname, uint8 tagtype) const; void AddTagUnique(const CTag &pTag); const ArrayOfCTag& GetTags() const { return m_taglist; } void AddNote(Kademlia::CEntry* pEntry); const CKadEntryPtrList& getNotes() const { return m_kadNotes; } /* Comment and rating */ virtual const wxString& GetFileComment() const { return m_strComment; } virtual int8 GetFileRating() const { return m_iRating; } bool HasComment() const { return m_hasComment; } bool HasRating() const { return (m_iUserRating != 0); } int8 UserRating() const { return m_iUserRating; } protected: //! CAbstractFile is not assignable. CAbstractFile& operator=(const CAbstractFile); CMD4Hash m_abyFileHash; // comment/rating are read from the config and cached in these variables, // so make them mutable to allow GetFileComment() to be a const method mutable wxString m_strComment; mutable int8 m_iRating; bool m_hasComment; int8 m_iUserRating; ArrayOfCTag m_taglist; CKadEntryPtrList m_kadNotes; private: uint64 m_nFileSize; CPath m_fileName; }; class CSearchFile; class CFile; class CKnownFile : public CAbstractFile, public CECID { friend class CHashingTask; public: CKnownFile(); CKnownFile(uint32 ecid); explicit CKnownFile(const CSearchFile &searchFile); virtual ~CKnownFile(); void SetFilePath(const CPath& filePath); const CPath& GetFilePath() const { return m_filePath; } // virtual functions for CKnownFile and CPartFile: virtual bool IsPartFile() const {return false;} // true if not completed virtual bool IsCompleted() const { return true; } // true if completed virtual bool IsCPartFile() const { return false; } // true if it's a CPartFile virtual bool LoadFromFile(const CFileDataIO* file); //load date, hashset and tags from a .met file virtual uint8 GetStatus(bool WXUNUSED(ignorepause) = false) const { return PS_COMPLETE; } bool WriteToFile(CFileDataIO* file); time_t GetLastChangeDatetime() const { return m_lastDateChanged; } void SetLastChangeDatetime(time_t t) { m_lastDateChanged = t; } virtual void SetFileSize(uint64 nFileSize); // local available part hashs size_t GetHashCount() const {return m_hashlist.size();} const CMD4Hash& GetPartHash(uint16 part) const; // nr. of part hashs according the file size wrt ED2K protocol uint32 GetED2KPartHashCount() const { return m_iED2KPartHashCount; } // nr. of 9MB parts (file data) inline uint16 GetPartCount() const { return m_iPartCount; } // nr. of 9MB parts according the file size wrt ED2K protocol (OP_FILESTATUS) inline uint16 GetED2KPartCount() const { return m_iED2KPartCount; } // size of a certain part, last is different, all others are PARTSIZE uint32 GetPartSize(uint16 part) const { return part == m_iPartCount - 1 ? m_sizeLastPart : PARTSIZE; } // file upload priority uint8 GetUpPriority() const {return m_iUpPriority;} void SetUpPriority(uint8 newUpPriority, bool bSave=true); bool IsAutoUpPriority() const {return m_bAutoUpPriority;} void SetAutoUpPriority(bool flag) {m_bAutoUpPriority = flag;} void UpdateAutoUpPriority(); #ifdef CLIENT_GUI uint16 GetQueuedCount() const { return m_queuedCount; } #else uint16 GetQueuedCount() const { return (uint16) m_ClientUploadList.size(); } #endif bool LoadHashsetFromFile(const CFileDataIO* file, bool checkhash); void AddUploadingClient(CUpDownClient* client); void RemoveUploadingClient(CUpDownClient* client); // comment const wxString& GetFileComment() const { if (!m_bCommentLoaded) LoadComment(); return m_strComment; } int8 GetFileRating() const { if (!m_bCommentLoaded) LoadComment(); return m_iRating; } void SetFileCommentRating(const wxString& strNewComment, int8 iNewRating); void SetPublishedED2K( bool val ); bool GetPublishedED2K() const {return m_PublishedED2K;} /* Kad stuff */ uint32 GetKadFileSearchID() const { return kadFileSearchID; } // KAD TODO: This must be used on KadSearchListCtrl too once imported void SetKadFileSearchID(uint32 id) { kadFileSearchID = id; } // John - Don't use this unless you know what your are DOING!! (Hopefully I do.. :) const Kademlia::WordList& GetKadKeywords() const { return wordlist; } // KAD TODO: If we add the proper column to SharedFilesCtrl, this is the funtion. uint32 GetLastPublishTimeKadSrc() const { return m_lastPublishTimeKadSrc; } void SetLastPublishTimeKadSrc(uint32 time, uint32 buddyip) { m_lastPublishTimeKadSrc = time; m_lastBuddyIP = buddyip;} // Another unused function, useful for the shared files control column uint32 GetLastPublishBuddy() const { return m_lastBuddyIP; } void SetLastPublishTimeKadNotes(uint32 time) {m_lastPublishTimeKadNotes = time;} uint32 GetLastPublishTimeKadNotes() const { return m_lastPublishTimeKadNotes; } bool PublishSrc(); bool PublishNotes(); // TODO: This must be implemented if we ever want to have metadata. uint32 GetMetaDataVer() const { return /*m_uMetaDataVer*/ 0; } // file sharing virtual CPacket* CreateSrcInfoPacket(const CUpDownClient* forClient, uint8 byRequestedVersion, uint16 nRequestedOptions); void CreateOfferedFilePacket(CMemFile* files, class CServer* pServer, CUpDownClient* pClient); virtual void UpdatePartsInfo(); CFileStatistic statistic; time_t m_nCompleteSourcesTime; uint16 m_nCompleteSourcesCount; uint16 m_nCompleteSourcesCountLo; uint16 m_nCompleteSourcesCountHi; // Common for part and known files. typedef std::set SourceSet; SourceSet m_ClientUploadList; ArrayOfUInts16 m_AvailPartFrequency; /** * Returns a base-16 encoding of the master hash, or * an empty string if no such hash exists. */ wxString GetAICHMasterHash() const; /** Returns true if the AICH-Hashset is valid, and verified or complete. */ bool HasProperAICHHashSet() const; /** * Updates the requency of uploading parts from with the data the client provides. * * @param client The clients whoose uploading parts should be considered. * @param increment If true, the counts are incremented, otherwise they are decremented. * * This functions updates the frequency list of file-upparts, using the clients * upparts-status. This function should be called by clients every time they update their * upparts-status, or when they are added or removed from the file. */ void UpdateUpPartsFrequency( CUpDownClient* client, bool increment ); static void CreateHashFromHashlist(const ArrayOfCMD4Hash& hashes, CMD4Hash* Output); void ClearPriority(); time_t m_lastDateChanged; virtual wxString GetFeedback() const; void SetShowSources( bool val ) { m_showSources = val; } bool ShowSources() const { return m_showSources; } void SetShowPeers( bool val ) { m_showPeers = val; } bool ShowPeers() const { return m_showPeers; } virtual void SetHashingProgress(uint16) const {} // does something for CPartFile only uint16 GetHashingProgress() const { return m_hashingProgress; } #ifdef CLIENT_GUI CKnownFile(const CEC_SharedFile_Tag *); friend class CKnownFilesRem; RLE_Data m_partStatus; private: uint8 m_iUpPriorityEC; uint16 m_queuedCount; protected: //! The AICH master-hash, if it is known. wxString m_AICHMasterHash; #else virtual void SetFileName(const CPath& filename); // AICH CAICHHashSet* GetAICHHashset() const { return m_pAICHHashSet; } void SetAICHHashset(CAICHHashSet* val) { m_pAICHHashSet = val; } protected: CAICHHashSet* m_pAICHHashSet; #endif bool LoadTagsFromFile(const CFileDataIO* file); bool LoadDateFromFile(const CFileDataIO* file); void LoadComment() const; ArrayOfCMD4Hash m_hashlist; CPath m_filePath; static void CreateHashFromFile(class CFileAutoClose& file, uint64 offset, uint32 Length, CMD4Hash* Output, CAICHHashTree* pShaHashOut); static void CreateHashFromInput(const byte* input, uint32 Length, CMD4Hash* Output, CAICHHashTree* pShaHashOut); mutable bool m_bCommentLoaded; uint16 m_iPartCount; uint16 m_iED2KPartCount; uint16 m_iED2KPartHashCount; uint32 m_sizeLastPart; // size of the last part uint8 m_iUpPriority; bool m_bAutoUpPriority; bool m_PublishedED2K; // Index of part being hashed, 0: no hashing in progress. // The known file is const in the hashing thread, so rather drill this little hole by making it mutable // than opening it all up. mutable uint16 m_hashingProgress; /* Kad stuff */ Kademlia::WordList wordlist; uint32 kadFileSearchID; uint32 m_lastPublishTimeKadSrc; uint32 m_lastPublishTimeKadNotes; uint32 m_lastBuddyIP; bool m_showSources; bool m_showPeers; private: /** Common initializations for constructors. */ void Init(); }; #endif // KNOWNFILE_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/KnownFileList.cpp0000644000175000017500000002605412611472361021535 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "KnownFileList.h" // Interface declarations #include #include // Do_not_auto_remove (lionel's Mac, 10.3) #include "PartFile.h" // Needed for CPartFile #include "amule.h" #include "Logger.h" #include "MemFile.h" #include "ScopedPtr.h" #include "SearchList.h" // Needed for UpdateSearchFileByHash #include #include "Preferences.h" // Needed for thePrefs // This function is inlined for performance inline bool CKnownFileList::KnownFileMatches( CKnownFile *knownFile, const CPath& filename, uint32 in_date, uint64 in_size) const { return (knownFile->GetLastChangeDatetime() == (time_t)in_date) && (knownFile->GetFileSize() == in_size) && (knownFile->GetFileName() == filename); } CKnownFileList::CKnownFileList() { accepted = 0; requested = 0; transferred = 0; m_filename = wxT("known.met"); m_knownSizeMap = NULL; m_duplicateSizeMap = NULL; Init(); } CKnownFileList::~CKnownFileList() { Clear(); } bool CKnownFileList::Init() { CFile file; CPath fullpath = CPath(thePrefs::GetConfigDir() + m_filename); if (!fullpath.FileExists()) { // This is perfectly normal. The file was probably either // deleted, or this is the first time running aMule. return false; } if (!file.Open(fullpath)) { AddLogLineC(CFormat(_("WARNING: %s cannot be opened.")) % m_filename); return false; } try { uint8 version = file.ReadUInt8(); if ((version != MET_HEADER) && (version != MET_HEADER_WITH_LARGEFILES)) { AddLogLineC(_("WARNING: Known file list corrupted, contains invalid header.")); return false; } wxMutexLocker sLock(list_mut); uint32 RecordsNumber = file.ReadUInt32(); AddDebugLogLineN(logKnownFiles, CFormat(wxT("Reading %i known files from file format 0x%2.2x.")) % RecordsNumber % version); for (uint32 i = 0; i < RecordsNumber; i++) { CScopedPtr record; if (record->LoadFromFile(&file)) { AddDebugLogLineN(logKnownFiles, CFormat(wxT("Known file read: %s")) % record->GetFileName()); Append(record.release()); } else { AddLogLineC(_("Failed to load entry in known file list, file may be corrupt")); } } AddDebugLogLineN(logKnownFiles, wxT("Finished reading known files")); return true; } catch (const CInvalidPacket& e) { AddLogLineC(_("Invalid entry in known file list, file may be corrupt: ") + e.what()); } catch (const CSafeIOException& e) { AddLogLineC(CFormat(_("IO error while reading %s file: %s")) % m_filename % e.what()); } return false; } void CKnownFileList::Save() { CFile file(thePrefs::GetConfigDir() + m_filename, CFile::write_safe); if (!file.IsOpened()) { return; } wxMutexLocker sLock(list_mut); AddDebugLogLineN(logKnownFiles, CFormat(wxT("start saving %s")) % m_filename); try { // Kry - This is the version, but we don't know it till // we know if any largefile is saved. This allows the list // to be compatible with previous versions. bool bContainsAnyLargeFiles = false; file.WriteUInt8(0); file.WriteUInt32(m_knownFileMap.size() + m_duplicateFileList.size()); // Duplicates handling. Duplicates needs to be saved first, // since it is the last entry that gets used. KnownFileList::iterator itDup = m_duplicateFileList.begin(); for ( ; itDup != m_duplicateFileList.end(); ++itDup ) { (*itDup)->WriteToFile(&file); if ((*itDup)->IsLargeFile()) { bContainsAnyLargeFiles = true; } } CKnownFileMap::iterator it = m_knownFileMap.begin(); for (; it != m_knownFileMap.end(); ++it) { it->second->WriteToFile(&file); if (it->second->IsLargeFile()) { bContainsAnyLargeFiles = true; } } file.Seek(0); file.WriteUInt8(bContainsAnyLargeFiles ? MET_HEADER_WITH_LARGEFILES : MET_HEADER); file.Close(); } catch (const CIOFailureException& e) { AddLogLineC(CFormat(_("Error while saving %s file: %s")) % m_filename % e.what()); } AddDebugLogLineN(logKnownFiles, CFormat(wxT("finished saving %s")) % m_filename); } void CKnownFileList::Clear() { wxMutexLocker sLock(list_mut); DeleteContents(m_knownFileMap); DeleteContents(m_duplicateFileList); ReleaseIndex(); } CKnownFile* CKnownFileList::FindKnownFile( const CPath& filename, time_t in_date, uint64 in_size) { wxMutexLocker sLock(list_mut); if (m_knownSizeMap) { std::pair p; p = m_knownSizeMap->equal_range((uint32) in_size); for (KnownFileSizeMap::const_iterator it = p.first; it != p.second; ++it) { CKnownFile *cur_file = it->second; if (KnownFileMatches(cur_file, filename, in_date, in_size)) { return cur_file; } } } else { for (CKnownFileMap::const_iterator it = m_knownFileMap.begin(); it != m_knownFileMap.end(); ++it) { CKnownFile *cur_file = it->second; if (KnownFileMatches(cur_file, filename, in_date, in_size)) { return cur_file; } } } return IsOnDuplicates(filename, in_date, in_size); } CKnownFile *CKnownFileList::IsOnDuplicates( const CPath& filename, uint32 in_date, uint64 in_size) const { if (m_duplicateSizeMap) { std::pair p; p = m_duplicateSizeMap->equal_range((uint32) in_size); for (KnownFileSizeMap::const_iterator it = p.first; it != p.second; ++it) { CKnownFile *cur_file = it->second; if (KnownFileMatches(cur_file, filename, in_date, in_size)) { return cur_file; } } } else { for (KnownFileList::const_iterator it = m_duplicateFileList.begin(); it != m_duplicateFileList.end(); ++it) { CKnownFile *cur_file = *it; if (KnownFileMatches(cur_file, filename, in_date, in_size)) { return cur_file; } } } return NULL; } CKnownFile* CKnownFileList::FindKnownFileByID(const CMD4Hash& hash) { wxMutexLocker sLock(list_mut); if (!hash.IsEmpty()) { if (m_knownFileMap.find(hash) != m_knownFileMap.end()) { return m_knownFileMap[hash]; } else { return NULL; } } return NULL; } bool CKnownFileList::SafeAddKFile(CKnownFile* toadd, bool afterHashing) { bool ret; { wxMutexLocker sLock(list_mut); ret = Append(toadd, afterHashing); } if (ret) { theApp->searchlist->UpdateSearchFileByHash(toadd->GetFileHash()); } return ret; } bool CKnownFileList::Append(CKnownFile *Record, bool afterHashing) { if (Record->GetFileSize() > 0) { // sanity check if the number of part hashes is correct here if (Record->GetHashCount() != Record->GetED2KPartHashCount()) { AddDebugLogLineC(logKnownFiles, CFormat(wxT("%s with size %d should have %d part hashes, but only %d are available")) % Record->GetFileName().GetPrintable() % Record->GetFileSize() % Record->GetED2KPartHashCount() % Record->GetHashCount()); return false; } const CMD4Hash& tkey = Record->GetFileHash(); CKnownFileMap::iterator it = m_knownFileMap.find(tkey); if (it == m_knownFileMap.end()) { m_knownFileMap[tkey] = Record; return true; } else { CKnownFile *existing = it->second; if (KnownFileMatches(Record, existing->GetFileName(), existing->GetLastChangeDatetime(), existing->GetFileSize())) { // The file is already on the list, ignore it. AddDebugLogLineN(logKnownFiles, CFormat(wxT("%s is already on the list")) % Record->GetFileName().GetPrintable()); return false; } else if (IsOnDuplicates(Record->GetFileName(), Record->GetLastChangeDatetime(), Record->GetFileSize())) { // The file is on the duplicates list, ignore it. // Should not happen, at least not after hashing. Or why did it get hashed in the first place then? AddDebugLogLineN(logKnownFiles, CFormat(wxT("%s is on the duplicates list")) % Record->GetFileName().GetPrintable()); return false; } else { if (afterHashing && existing->GetFileSize() == Record->GetFileSize()) { // We just hashed a "new" shared file and find it's already known under a different name or date. // Guess what - it was probably renamed or touched. // So copy over all properties from the existing known file and just keep name/date. time_t newDate = Record->GetLastChangeDatetime(); CPath newName = Record->GetFileName(); CMemFile f; existing->WriteToFile(&f); f.Reset(); if (!Record->LoadFromFile(&f)) { // this also shouldn't happen AddDebugLogLineC(logKnownFiles, CFormat(wxT("error copying known file: existing: %s %d %d %d Record: %s %d %d %d")) % existing->GetFileName().GetPrintable() % existing->GetFileSize() % existing->GetED2KPartHashCount() % existing->GetHashCount() % Record->GetFileName().GetPrintable() % Record->GetFileSize() % Record->GetED2KPartHashCount() % Record->GetHashCount()); return false; } Record->SetLastChangeDatetime(newDate); Record->SetFileName(newName); } // The file is a duplicated hash. Add THE OLD ONE to the duplicates list. // (This is used when reading the known file list where the duplicates are stored in front.) m_duplicateFileList.push_back(existing); if (theApp->sharedfiles) { // Removing the old kad keywords created with the old filename theApp->sharedfiles->RemoveKeywords(existing); } m_knownFileMap[tkey] = Record; return true; } } } else { AddDebugLogLineN(logGeneral, CFormat(wxT("%s is 0-size, not added")) % Record->GetFileName()); return false; } } // Make an index by size to speed up FindKnownFile // Size modulo 2^32 is enough here void CKnownFileList::PrepareIndex() { ReleaseIndex(); m_knownSizeMap = new KnownFileSizeMap; for (CKnownFileMap::const_iterator it = m_knownFileMap.begin(); it != m_knownFileMap.end(); ++it) { m_knownSizeMap->insert(std::pair((uint32) it->second->GetFileSize(), it->second)); } m_duplicateSizeMap = new KnownFileSizeMap; for (KnownFileList::const_iterator it = m_duplicateFileList.begin(); it != m_duplicateFileList.end(); ++it) { m_duplicateSizeMap->insert(std::pair((uint32) (*it)->GetFileSize(), *it)); } } void CKnownFileList::ReleaseIndex() { delete m_knownSizeMap; delete m_duplicateSizeMap; m_knownSizeMap = NULL; m_duplicateSizeMap = NULL; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/KnownFileList.h0000644000175000017500000000447512611472361021205 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef KNOWNFILELIST_H #define KNOWNFILELIST_H #include "SharedFileList.h" // CKnownFileMap class CKnownFile; class CPath; class CKnownFileList { public: CKnownFileList(); ~CKnownFileList(); bool SafeAddKFile(CKnownFile* toadd, bool afterHashing = false); bool Init(); void Save(); void Clear(); CKnownFile* FindKnownFile( const CPath& filename, time_t in_date, uint64 in_size); CKnownFile* FindKnownFileByID(const CMD4Hash& hash); void PrepareIndex(); void ReleaseIndex(); uint16 requested; uint32 transferred; uint16 accepted; private: wxMutex list_mut; bool Append(CKnownFile*, bool afterHashing = false); CKnownFile *IsOnDuplicates( const CPath& filename, uint32 in_date, uint64 in_size) const; bool KnownFileMatches( CKnownFile *knownFile, const CPath& filename, uint32 in_date, uint64 in_size) const; typedef std::list KnownFileList; KnownFileList m_duplicateFileList; CKnownFileMap m_knownFileMap; // The filename "known.met" wxString m_filename; // Speed up shared files reload typedef std::multimap KnownFileSizeMap; KnownFileSizeMap * m_knownSizeMap; KnownFileSizeMap * m_duplicateSizeMap; }; #endif // KNOWNFILELIST_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/LibSocket.cpp0000644000175000017500000000233712611472361020662 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2011 Dévai Tamás ( gonosztopi@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifdef HAVE_CONFIG_H # include "config.h" // Needed for ASIO_SOCKETS #endif #ifdef ASIO_SOCKETS # include "LibSocketAsio.cpp" #else # include "LibSocketWX.cpp" #endif amule_2.3.1+git20151120.0023527bc2.orig/src/LibSocket.h0000644000175000017500000002350512611472361020327 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2011-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2011-2011 Stu Redman ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef __LIBSOCKET_H__ #define __LIBSOCKET_H__ #ifdef HAVE_CONFIG_H # include "config.h" // Needed for ASIO_SOCKETS #endif #ifdef ASIO_SOCKETS #include #include #include "Types.h" class amuleIPV4Address; // Socket flags (unused in ASIO implementation, just provide the names) enum { MULE_SOCKET_NONE, MULE_SOCKET_NOWAIT_READ, MULE_SOCKET_NOWAIT_WRITE, MULE_SOCKET_NOWAIT, MULE_SOCKET_WAITALL_READ, MULE_SOCKET_WAITALL_WRITE, MULE_SOCKET_WAITALL, MULE_SOCKET_BLOCK, MULE_SOCKET_REUSEADDR, MULE_SOCKET_BROADCAST, MULE_SOCKET_NOBIND }; typedef int muleSocketFlags; // Socket events (used for proxy notification) enum { MULE_SOCKET_CONNECTION, MULE_SOCKET_INPUT, MULE_SOCKET_OUTPUT, MULE_SOCKET_LOST }; // // Abstraction class for library TCP socket // Can be a wxSocket or an ASIO socket // // // Client TCP socket // class CLibSocket { friend class CAsioSocketImpl; friend class CAsioSocketServerImpl; public: CLibSocket(int flags = 0); virtual ~CLibSocket(); // wx Stuff void Notify(bool); bool Connect(const amuleIPV4Address& adr, bool wait); bool IsConnected() const; bool IsOk() const; void SetLocal(const amuleIPV4Address& local); uint32 Read(void * buffer, uint32 nbytes); uint32 Write(const void * buffer, uint32 nbytes); void Close(); void Destroy(); // Not needed here, we always notify the same way void SetNotify(int) {} void SetEventHandler(wxEvtHandler&, int) {} // Get last error, 0 == no error int LastError() const; // not supported void SetFlags(int) {} void Discard() {} bool WaitOnConnect(long, long) { return true; } bool WaitForWrite(long, long) { return true; } bool WaitForRead(long, long) { return true; } // new Stuff // Check if socket is currently blocking for read or write bool BlocksRead() const; bool BlocksWrite() const; // Show we're ready for another event void EventProcessed(); // Get IP of client const wxChar * GetIP() const; // True if Destroy() has been called for socket bool IsDestroying() const; // Get/set proxy state bool GetProxyState() const; void SetProxyState(bool state, const amuleIPV4Address * adr = 0); // Get peer address (better API than wx) wxString GetPeer(); uint32 GetPeerInt(); // Handlers virtual void OnConnect(int) {} virtual void OnSend(int) {} virtual void OnReceive(int) {} virtual void OnLost() {} virtual void OnProxyEvent(int) {} private: // Replace the internal socket void LinkSocketImpl(class CAsioSocketImpl *); class CAsioSocketImpl * m_aSocket; void LastCount(); // No. We don't have this. We return it directly with Read() and Write() bool Error() const; // Only use LastError }; // // TCP socket server // class CLibSocketServer { public: CLibSocketServer(const amuleIPV4Address& adr, int flags); virtual ~CLibSocketServer(); // Accepts an incoming connection request, and creates a new CLibSocket object which represents the server-side of the connection. CLibSocket * Accept(bool wait = true); // Accept an incoming connection using the specified socket object. bool AcceptWith(CLibSocket & socket, bool wait); virtual void OnAccept() {} bool IsOk() const; void Close(); // Not needed here void Discard() {} void SetEventHandler(wxEvtHandler& , int ) {} void SetNotify(int) {} bool Notify(bool) { return true; } // new Stuff // Do we have a socket available if AcceptWith() is called ? bool SocketAvailable(); private: class CAsioSocketServerImpl * m_aServer; }; // // UDP socket // class CLibUDPSocket { friend class CAsioUDPSocketImpl; public: CLibUDPSocket(amuleIPV4Address &address, int flags); virtual ~CLibUDPSocket(); // wx Stuff bool IsOk() const; virtual uint32 RecvFrom(amuleIPV4Address& addr, void* buf, uint32 nBytes); virtual uint32 SendTo(const amuleIPV4Address& addr, const void* buf, uint32 nBytes); int LastError() const; void Close(); void Destroy(); void SetClientData(class CMuleUDPSocket *); // Not needed here void SetEventHandler(wxEvtHandler&, int) {} void SetNotify(int) {} bool Notify(bool) { return true; } // Check if socket is currently blocking for write // Well - we apparently have block in wx. At least we handle it in MuleUDPSocket. // But this makes no sense. We send a packet to an IP in background. // Either this works after some time, or not. But there is no block. bool BlocksWrite() const { return false; } private: class CAsioUDPSocketImpl * m_aSocket; void LastCount(); // block this bool Error() const; // Only use LastError }; // // ASIO event loop // class CAsioService { public: CAsioService(); ~CAsioService(); void Stop(); private: static const int m_numberOfThreads; class CAsioServiceThread * m_threads; }; #else /* ASIO_SOCKETS */ // use wx sockets #include #include "amuleIPV4Address.h" typedef wxSocketFlags muleSocketFlags; // Socket flags #define MULE_SOCKET_NONE wxSOCKET_NONE #define MULE_SOCKET_NOWAIT_READ wxSOCKET_NOWAIT_READ #define MULE_SOCKET_NOWAIT_WRITE wxSOCKET_NOWAIT_WRITE #define MULE_SOCKET_NOWAIT wxSOCKET_NOWAIT #define MULE_SOCKET_WAITALL_READ wxSOCKET_WAITALL_READ #define MULE_SOCKET_WAITALL_WRITE wxSOCKET_WAITALL_WRITE #define MULE_SOCKET_WAITALL wxSOCKET_WAITALL #define MULE_SOCKET_BLOCK wxSOCKET_BLOCK #define MULE_SOCKET_REUSEADDR wxSOCKET_REUSEADDR #define MULE_SOCKET_BROADCAST wxSOCKET_BROADCAST #define MULE_SOCKET_NOBIND wxSOCKET_NOBIND // Socket events #define MULE_SOCKET_CONNECTION wxSOCKET_CONNECTION #define MULE_SOCKET_INPUT wxSOCKET_INPUT #define MULE_SOCKET_OUTPUT wxSOCKET_OUTPUT #define MULE_SOCKET_LOST wxSOCKET_LOST class CLibSocket : public wxSocketClient { public: CLibSocket(wxSocketFlags flags = 0) : wxSocketClient(flags), m_isDestroying(false) {} // not actually called const wxChar * GetIP() const { return wxEmptyString; } void EventProcessed() {} bool GetProxyState() const { return false; } // unused Handlers virtual void OnConnect(int) {} virtual void OnSend(int) {} virtual void OnReceive(int) {} virtual void OnLost() {} virtual void OnProxyEvent(int) {} // methods using amuleIPV4Address bool Connect(amuleIPV4Address& adr, bool wait); // Yes. adr is not const. bool GetPeer(amuleIPV4Address& adr); void SetLocal(amuleIPV4Address& local); // Same here. // Get last error, 0 == no error // BLOCK is also not an error! int LastError() const { int ret = 0; if (wxSocketClient::Error()) { ret = wxSocketClient::LastError(); if (ret == wxSOCKET_WOULDBLOCK) { ret = 0; } } return ret; } // Check if socket is currently blocking for read or write bool BlocksRead() const { return wxSocketClient::Error() && wxSocketClient::LastError() == wxSOCKET_WOULDBLOCK; } bool BlocksWrite() const { return BlocksRead(); } // no difference here uint32 Read(void *buffer, wxUint32 nbytes) { wxSocketClient::Read(buffer, nbytes); return wxSocketClient::LastCount(); } uint32 Write(const void *buffer, wxUint32 nbytes) { wxSocketClient::Write(buffer, nbytes); return wxSocketClient::LastCount(); } void Destroy() { if (!m_isDestroying) { m_isDestroying = true; SetNotify(0); Notify(false); Close(); // Destroy is suposed to call Close(), but.. it doesn't hurt. wxSocketClient::Destroy(); } } bool IsDestroying() const { return m_isDestroying; } // Get peer address (better API than wx) wxString GetPeer() { wxIPV4address adr; wxSocketClient::GetPeer(adr); return adr.IPAddress(); } uint32 GetPeerInt() { return StringIPtoUint32(GetPeer()); } private: bool m_isDestroying; // true if Destroy() was called void LastCount(); // block this bool Error() const; // Only use LastError }; class CLibSocketServer : public wxSocketServer { public: CLibSocketServer(const amuleIPV4Address &address, wxSocketFlags flags); CLibSocket * Accept(bool wait) { return static_cast(wxSocketServer::Accept(wait)); } bool SocketAvailable() { return true; } virtual void OnAccept() {} }; class CLibUDPSocket : public wxDatagramSocket { public: CLibUDPSocket(amuleIPV4Address &address, wxSocketFlags flags); virtual uint32 RecvFrom(amuleIPV4Address& addr, void* buf, uint32 nBytes); virtual uint32 SendTo(const amuleIPV4Address& addr, const void* buf, uint32 nBytes); // Get last error, 0 == no error int LastError() const { int ret = 0; if (wxDatagramSocket::Error()) { ret = wxDatagramSocket::LastError(); if (ret == wxSOCKET_WOULDBLOCK) { ret = 0; } } return ret; } // Check if socket is currently blocking for write // I wonder if this EVER returns true (see Asio) bool BlocksWrite() const { return wxDatagramSocket::Error() && wxDatagramSocket::LastError() == wxSOCKET_WOULDBLOCK; } private: void LastCount(); // block this bool Error() const; // Only use LastError }; class CAsioService { public: void Wait() {} void Stop() {} }; #endif /* ASIO_SOCKETS */ #endif /* __LIBSOCKET_H__ */ amule_2.3.1+git20151120.0023527bc2.orig/src/LibSocketAsio.cpp0000644000175000017500000011217612611472361021501 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2011-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2011-2011 Stu Redman ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifdef HAVE_CONFIG_H # include "config.h" // Needed for HAVE_BOOST_SOURCES #endif #ifdef _MSC_VER #define _WIN32_WINNT 0x0501 // Boost complains otherwise #endif // Windows requires that Boost headers are included before wx headers. // This works if precompiled headers are disabled for this file. #define BOOST_ALL_NO_LIB // Suppress warning caused by faulty boost/preprocessor/config/config.hpp in Boost 1.49 #if defined __GNUC__ && ! defined __GXX_EXPERIMENTAL_CXX0X__ && __cplusplus < 201103L #define BOOST_PP_VARIADICS 0 #endif #include // Needed for std::min - Boost up to 1.54 fails to compile with MSVC 2013 otherwise #include #include #include // // Do away with building Boost.System, adding lib paths... // Just include the single file and be done. // #ifdef HAVE_BOOST_SOURCES # include #else # include #endif #include "LibSocket.h" #include // wxMutex #include // _() #include // Needed for CFormat #include "Logger.h" #include "GuiEvents.h" #include "amuleIPV4Address.h" #include "MuleUDPSocket.h" #include "OtherFunctions.h" // DeleteContents, MuleBoostVersion #include "ScopedPtr.h" using namespace boost::asio; using namespace boost::system; // for error_code static io_service s_io_service; // Number of threads in the Asio thread pool const int CAsioService::m_numberOfThreads = 4; /** * ASIO Client TCP socket implementation */ class CamuleIPV4Endpoint : public ip::tcp::endpoint { public: CamuleIPV4Endpoint() {} CamuleIPV4Endpoint(const CamuleIPV4Endpoint & impl) : ip::tcp::endpoint(impl) {} CamuleIPV4Endpoint(const ip::tcp::endpoint & ep) { * this = ep; } CamuleIPV4Endpoint(const ip::udp::endpoint & ep) { address(ep.address()); port(ep.port()); } const CamuleIPV4Endpoint& operator = (const ip::tcp::endpoint & ep) { * (ip::tcp::endpoint *) this = ep; return *this; } }; class CAsioSocketImpl { public: // cppcheck-suppress uninitMemberVar m_readBufferPtr CAsioSocketImpl(CLibSocket * libSocket) : m_libSocket(libSocket), m_strand(s_io_service), m_timer(s_io_service) { m_OK = false; m_blocksRead = false; m_blocksWrite = false; m_ErrorCode = 0; m_readBuffer = NULL; m_readBufferSize = 0; m_readPending = false; m_readBufferContent = 0; m_eventPending = false; m_port = 0; m_sendBuffer = NULL; m_connected = false; m_closed = false; m_isDestroying = false; m_proxyState = false; m_notify = true; m_sync = false; m_IP = wxT("?"); m_IPint = 0; m_socket = new ip::tcp::socket(s_io_service); // Set socket to non blocking m_socket->non_blocking(); } ~CAsioSocketImpl() { delete[] m_readBuffer; delete[] m_sendBuffer; } void Notify(bool notify) { m_notify = notify; } bool Connect(const amuleIPV4Address& adr, bool wait) { if (!m_proxyState) { SetIp(adr); } m_port = adr.Service(); m_closed = false; m_OK = false; m_sync = !m_notify; // set this once for the whole lifetime of the socket AddDebugLogLineF(logAsio, CFormat(wxT("Connect %s %p")) % m_IP % this); if (wait || m_sync) { error_code ec; m_socket->connect(adr.GetEndpoint(), ec); m_OK = !ec; m_connected = m_OK; return m_OK; } else { m_socket->async_connect(adr.GetEndpoint(), m_strand.wrap(boost::bind(& CAsioSocketImpl::HandleConnect, this, placeholders::error))); // m_OK and return are false because we are not connected yet return false; } } bool IsConnected() const { return m_connected; } // For wxSocketClient, Ok won't return true unless the client is connected to a server. bool IsOk() const { return m_OK; } bool IsDestroying() const { return m_isDestroying; } // Returns the actual error code int LastError() const { return m_ErrorCode; } // Is reading blocked? bool BlocksRead() const { return m_blocksRead; } // Is writing blocked? bool BlocksWrite() const { return m_blocksWrite; } // Problem: wx sends an event when data gets available, so first there is an event, then Read() is called // Asio can read async with callback, so you first read, then you get an event. // Strategy: // - Read some data in background into a buffer // - Callback posts event when something is there // - Read data from buffer // - If data is exhausted, start reading more in background // - If not, post another event (making sure events don't pile up though) uint32 Read(char * buf, uint32 bytesToRead) { if (bytesToRead == 0) { // huh? return 0; } if (m_sync) { return ReadSync(buf, bytesToRead); } if (m_ErrorCode) { AddDebugLogLineF(logAsio, CFormat(wxT("Read1 %s %d - Error")) % m_IP % bytesToRead); return 0; } if (m_readPending // Background read hasn't completed. || m_readBufferContent == 0) { // shouldn't be if it's not pending m_blocksRead = true; AddDebugLogLineF(logAsio, CFormat(wxT("Read1 %s %d - Block")) % m_IP % bytesToRead); return 0; } m_blocksRead = false; // shouldn't be needed // Read from our buffer uint32 readCache = std::min(m_readBufferContent, bytesToRead); memcpy(buf, m_readBufferPtr, readCache); m_readBufferContent -= readCache; m_readBufferPtr += readCache; AddDebugLogLineF(logAsio, CFormat(wxT("Read2 %s %d - %d")) % m_IP % bytesToRead % readCache); if (m_readBufferContent) { // Data left, post another event PostReadEvent(1); } else { // Nothing left, read more StartBackgroundRead(); } return readCache; } // Make a copy of the data and send it in background // - unless a background send is already going on uint32 Write(const void * buf, uint32 nbytes) { if (m_sync) { return WriteSync(buf, nbytes); } if (m_sendBuffer) { m_blocksWrite = true; AddDebugLogLineF(logAsio, CFormat(wxT("Write blocks %d %p %s")) % nbytes % m_sendBuffer % m_IP); return 0; } AddDebugLogLineF(logAsio, CFormat(wxT("Write %d %s")) % nbytes % m_IP); m_sendBuffer = new char[nbytes]; memcpy(m_sendBuffer, buf, nbytes); m_strand.dispatch(boost::bind(& CAsioSocketImpl::DispatchWrite, this, nbytes)); m_ErrorCode = 0; return nbytes; } void Close() { if (!m_closed) { m_closed = true; m_connected = false; if (m_sync || s_io_service.stopped()) { DispatchClose(); } else { m_strand.dispatch(boost::bind(& CAsioSocketImpl::DispatchClose, this)); } } } void Destroy() { if (m_isDestroying) { AddDebugLogLineC(logAsio, CFormat(wxT("Destroy() already dying socket %p %p %s")) % m_libSocket % this % m_IP); return; } m_isDestroying = true; AddDebugLogLineF(logAsio, CFormat(wxT("Destroy() %p %p %s")) % m_libSocket % this % m_IP); Close(); if (m_sync || s_io_service.stopped()) { HandleDestroy(); } else { // Close prevents creation of any more callbacks, but does not clear any callbacks already // sitting in Asio's event queue (I have seen such a crash). // So create a delay timer so they can be called until core is notified. m_timer.expires_from_now(boost::posix_time::seconds(1)); m_timer.async_wait(m_strand.wrap(boost::bind(& CAsioSocketImpl::HandleDestroy, this))); } } wxString GetPeer() { return m_IP; } uint32 GetPeerInt() { return m_IPint; } // // Bind socket to local endpoint if user wants to choose the local address // void SetLocal(const amuleIPV4Address& local) { error_code ec; if (!m_socket->is_open()) { // Socket is usually still closed when this is called m_socket->open(boost::asio::ip::tcp::v4(), ec); if (ec) { AddDebugLogLineC(logAsio, CFormat(wxT("Can't open socket : %s")) % ec.message()); } } // // We are using random (OS-defined) local ports. // To set a constant output port, first call // m_socket->set_option(socket_base::reuse_address(true)); // and then set the endpoint's port to it. // CamuleIPV4Endpoint endpoint(local.GetEndpoint()); endpoint.port(0); m_socket->bind(endpoint, ec); if (ec) { AddDebugLogLineC(logAsio, CFormat(wxT("Can't bind socket to local endpoint %s : %s")) % local.IPAddress() % ec.message()); } else { AddDebugLogLineF(logAsio, CFormat(wxT("Bound socket to local endpoint %s")) % local.IPAddress()); } } void EventProcessed() { m_eventPending = false; } void SetWrapSocket(CLibSocket * socket) { m_libSocket = socket; // Also do some setting up m_OK = true; m_connected = true; // Start reading StartBackgroundRead(); } bool UpdateIP() { error_code ec; amuleIPV4Address addr = CamuleIPV4Endpoint(m_socket->remote_endpoint(ec)); if (SetError(ec)) { AddDebugLogLineN(logAsio, CFormat(wxT("UpdateIP failed %p %s")) % this % ec.message()); return false; } SetIp(addr); m_port = addr.Service(); AddDebugLogLineF(logAsio, CFormat(wxT("UpdateIP %s %d %p")) % m_IP % m_port % this); return true; } const wxChar * GetIP() const { return m_IP; } uint16 GetPort() const { return m_port; } ip::tcp::socket & GetAsioSocket() { return * m_socket; } bool GetProxyState() const { return m_proxyState; } void SetProxyState(bool state, const amuleIPV4Address * adr) { m_proxyState = state; if (state) { // Start. Get the true IP for logging. wxASSERT(adr); SetIp(*adr); AddDebugLogLineF(logAsio, CFormat(wxT("SetProxyState to proxy %s")) % m_IP); } else { // Transition from proxy to normal mode AddDebugLogLineF(logAsio, CFormat(wxT("SetProxyState to normal %s")) % m_IP); m_ErrorCode = 0; } } private: // // Dispatch handlers // Access to m_socket is all bundled in the thread running s_io_service to avoid // concurrent access to the socket from several threads. // So once things are running (after connect), all access goes through one of these handlers. // void DispatchClose() { error_code ec; m_socket->close(ec); if (ec) { AddDebugLogLineC(logAsio, CFormat(wxT("Close error %s %s")) % m_IP % ec.message()); } else { AddDebugLogLineF(logAsio, CFormat(wxT("Closed %s")) % m_IP); } } void DispatchBackgroundRead() { AddDebugLogLineF(logAsio, CFormat(wxT("DispatchBackgroundRead %s")) % m_IP); m_socket->async_read_some(null_buffers(), m_strand.wrap(boost::bind(& CAsioSocketImpl::HandleRead, this, placeholders::error))); } void DispatchWrite(uint32 nbytes) { async_write(*m_socket, buffer(m_sendBuffer, nbytes), m_strand.wrap(boost::bind(& CAsioSocketImpl::HandleSend, this, placeholders::error, placeholders::bytes_transferred))); } // // Completion handlers for async requests // void HandleConnect(const error_code& err) { m_OK = !err; AddDebugLogLineF(logAsio, CFormat(wxT("HandleConnect %d %s")) % m_OK % m_IP); if (m_isDestroying) { AddDebugLogLineF(logAsio, CFormat(wxT("HandleConnect: socket pending for deletion %s")) % m_IP); } else { CoreNotify_LibSocketConnect(m_libSocket, err.value()); if (m_OK) { // After connect also send a OUTPUT event to show data is available CoreNotify_LibSocketSend(m_libSocket, 0); // Start reading StartBackgroundRead(); m_connected = true; } } } void HandleSend(const error_code& err, size_t bytes_transferred) { delete[] m_sendBuffer; m_sendBuffer = NULL; if (m_isDestroying) { AddDebugLogLineF(logAsio, CFormat(wxT("HandleSend: socket pending for deletion %s")) % m_IP); } else { if (SetError(err)) { AddDebugLogLineN(logAsio, CFormat(wxT("HandleSend Error %d %s")) % bytes_transferred % m_IP); PostLostEvent(); } else { AddDebugLogLineF(logAsio, CFormat(wxT("HandleSend %d %s")) % bytes_transferred % m_IP); m_blocksWrite = false; CoreNotify_LibSocketSend(m_libSocket, m_ErrorCode); } } } void HandleRead(const error_code & ec) { if (m_isDestroying) { AddDebugLogLineF(logAsio, CFormat(wxT("HandleRead: socket pending for deletion %s")) % m_IP); } if (SetError(ec)) { // This is what we get in Windows when a connection gets closed from remote. AddDebugLogLineN(logAsio, CFormat(wxT("HandleReadError %s %s")) % m_IP % ec.message()); PostLostEvent(); return; } error_code ec2; uint32 avail = m_socket->available(ec2); if (SetError(ec2)) { AddDebugLogLineN(logAsio, CFormat(wxT("HandleReadError available %d %s %s")) % avail % m_IP % ec2.message()); PostLostEvent(); return; } if (avail == 0) { // This is what we get in Linux when a connection gets closed from remote. AddDebugLogLineF(logAsio, CFormat(wxT("HandleReadError nothing available %s")) % m_IP); SetError(); PostLostEvent(); return; } AddDebugLogLineF(logAsio, CFormat(wxT("HandleRead %d %s")) % avail % m_IP); // adjust (or create) our read buffer if (m_readBufferSize < avail) { delete[] m_readBuffer; m_readBuffer = new char[avail]; m_readBufferSize = avail; } m_readBufferPtr = m_readBuffer; // read available data m_readBufferContent = m_socket->read_some(buffer(m_readBuffer, avail), ec2); if (SetError(ec2) || m_readBufferContent == 0) { AddDebugLogLineN(logAsio, CFormat(wxT("HandleReadError read %d %s %s")) % m_readBufferContent % m_IP % ec2.message()); PostLostEvent(); return; } m_readPending = false; m_blocksRead = false; PostReadEvent(2); } void HandleDestroy() { AddDebugLogLineF(logAsio, CFormat(wxT("HandleDestroy() %p %p %s")) % m_libSocket % this % m_IP); CoreNotify_LibSocketDestroy(m_libSocket); } // // Other functions // void StartBackgroundRead() { m_readPending = true; m_readBufferContent = 0; m_strand.dispatch(boost::bind(& CAsioSocketImpl::DispatchBackgroundRead, this)); } void PostReadEvent(int from) { if (!m_eventPending) { AddDebugLogLineF(logAsio, CFormat(wxT("Post read event %d %s")) % from % m_IP); m_eventPending = true; CoreNotify_LibSocketReceive(m_libSocket, m_ErrorCode); } } void PostLostEvent() { if (!m_isDestroying && !m_closed) { CoreNotify_LibSocketLost(m_libSocket); } } void SetError() { m_ErrorCode = 2; } bool SetError(const error_code & err) { m_ErrorCode = err.value(); return m_ErrorCode != errc::success; } // // Synchronous sockets (amulecmd) // uint32 ReadSync(char * buf, uint32 bytesToRead) { error_code ec; uint32 received = read(*m_socket, buffer(buf, bytesToRead), ec); SetError(ec); return received; } uint32 WriteSync(const void * buf, uint32 nbytes) { error_code ec; uint32 sent = write(*m_socket, buffer(buf, nbytes), ec); SetError(ec); return sent; } // // Access to even const & wxString is apparently not thread-safe. // Locks are set/removed in wx and reference counts can go astray. // So store our IP string in a wxString which is used nowhere. // Store a pointer to its string buffer as well and use THAT everywhere. // void SetIp(const amuleIPV4Address& adr) { m_IPstring = adr.IPAddress(); m_IP = m_IPstring.c_str(); m_IPint = StringIPtoUint32(m_IPstring); } CLibSocket * m_libSocket; ip::tcp::socket * m_socket; // remote IP wxString m_IPstring; // as String (use nowhere because of threading!) const wxChar * m_IP; // as char* (use in debug logs) uint32 m_IPint; // as int uint16 m_port; // remote port bool m_OK; int m_ErrorCode; bool m_blocksRead; bool m_blocksWrite; char * m_readBuffer; uint32 m_readBufferSize; char * m_readBufferPtr; bool m_readPending; uint32 m_readBufferContent; bool m_eventPending; char * m_sendBuffer; io_service::strand m_strand; // handle synchronisation in io_service thread pool deadline_timer m_timer; bool m_connected; bool m_closed; bool m_isDestroying; // true if Destroy() was called bool m_proxyState; bool m_notify; // set by Notify() bool m_sync; // copied from !m_notify on Connect() }; /** * Library socket wrapper */ CLibSocket::CLibSocket(int /* flags */) { m_aSocket = new CAsioSocketImpl(this); } CLibSocket::~CLibSocket() { AddDebugLogLineF(logAsio, CFormat(wxT("~CLibSocket() %p %p %s")) % this % m_aSocket % m_aSocket->GetIP()); delete m_aSocket; } bool CLibSocket::Connect(const amuleIPV4Address& adr, bool wait) { return m_aSocket->Connect(adr, wait); } bool CLibSocket::IsConnected() const { return m_aSocket->IsConnected(); } bool CLibSocket::IsOk() const { return m_aSocket->IsOk(); } wxString CLibSocket::GetPeer() { return m_aSocket->GetPeer(); } uint32 CLibSocket::GetPeerInt() { return m_aSocket->GetPeerInt(); } void CLibSocket::Destroy() { m_aSocket->Destroy(); } bool CLibSocket::IsDestroying() const { return m_aSocket->IsDestroying(); } void CLibSocket::Notify(bool notify) { m_aSocket->Notify(notify); } uint32 CLibSocket::Read(void * buffer, uint32 nbytes) { return m_aSocket->Read((char *) buffer, nbytes); } uint32 CLibSocket::Write(const void * buffer, uint32 nbytes) { return m_aSocket->Write(buffer, nbytes); } void CLibSocket::Close() { m_aSocket->Close(); } int CLibSocket::LastError() const { return m_aSocket->LastError(); } void CLibSocket::SetLocal(const amuleIPV4Address& local) { m_aSocket->SetLocal(local); } // new Stuff bool CLibSocket::BlocksRead() const { return m_aSocket->BlocksRead(); } bool CLibSocket::BlocksWrite() const { return m_aSocket->BlocksWrite(); } void CLibSocket::EventProcessed() { m_aSocket->EventProcessed(); } void CLibSocket::LinkSocketImpl(class CAsioSocketImpl * socket) { delete m_aSocket; m_aSocket = socket; m_aSocket->SetWrapSocket(this); } const wxChar * CLibSocket::GetIP() const { return m_aSocket->GetIP(); } bool CLibSocket::GetProxyState() const { return m_aSocket->GetProxyState(); } void CLibSocket::SetProxyState(bool state, const amuleIPV4Address * adr) { m_aSocket->SetProxyState(state, adr); } /** * ASIO TCP socket server */ class CAsioSocketServerImpl : public ip::tcp::acceptor { public: CAsioSocketServerImpl(const amuleIPV4Address & adr, CLibSocketServer * libSocketServer) : ip::tcp::acceptor(s_io_service), m_libSocketServer(libSocketServer), m_currentSocket(NULL), m_strand(s_io_service) { m_ok = false; m_socketAvailable = false; try { open(adr.GetEndpoint().protocol()); set_option(ip::tcp::acceptor::reuse_address(true)); bind(adr.GetEndpoint()); listen(); StartAccept(); m_ok = true; AddDebugLogLineN(logAsio, CFormat(wxT("CAsioSocketServerImpl bind to %s %d")) % adr.IPAddress() % adr.Service()); } catch (const system_error& err) { AddDebugLogLineC(logAsio, CFormat(wxT("CAsioSocketServerImpl bind to %s %d failed - %s")) % adr.IPAddress() % adr.Service() % err.code().message()); } } ~CAsioSocketServerImpl() { } // For wxSocketServer, Ok will return true if the server could bind to the specified address and is already listening for new connections. bool IsOk() const { return m_ok; } void Close() { close(); } bool AcceptWith(CLibSocket & socket) { if (!m_socketAvailable) { AddDebugLogLineF(logAsio, wxT("AcceptWith: nothing there")); return false; } // return the socket we received socket.LinkSocketImpl(m_currentSocket.release()); // check if we have another socket ready for reception m_currentSocket.reset(new CAsioSocketImpl(NULL)); error_code ec; // async_accept does not work if server is non-blocking // temporarily switch it to non-blocking non_blocking(true); // we are set to non-blocking, so this returns right away accept(m_currentSocket->GetAsioSocket(), ec); // back to blocking non_blocking(false); if (ec || !m_currentSocket->UpdateIP()) { // nothing there m_socketAvailable = false; // start getting another one StartAccept(); AddDebugLogLineF(logAsio, wxT("AcceptWith: ok, getting another socket in background")); } else { // we got another socket right away m_socketAvailable = true; // it is already true, but this improves readability AddDebugLogLineF(logAsio, wxT("AcceptWith: ok, another socket is available")); // aMule actually doesn't need a notification as it polls the listen socket. // amuleweb does need it though CoreNotify_ServerTCPAccept(m_libSocketServer); } return true; } bool SocketAvailable() const { return m_socketAvailable; } private: void StartAccept() { m_currentSocket.reset(new CAsioSocketImpl(NULL)); async_accept(m_currentSocket->GetAsioSocket(), m_strand.wrap(boost::bind(& CAsioSocketServerImpl::HandleAccept, this, placeholders::error))); } void HandleAccept(const error_code& error) { if (error) { AddDebugLogLineC(logAsio, CFormat(wxT("Error in HandleAccept: %s")) % error.message()); } else { if (m_currentSocket->UpdateIP()) { AddDebugLogLineN(logAsio, CFormat(wxT("HandleAccept received a connection from %s:%d")) % m_currentSocket->GetIP() % m_currentSocket->GetPort()); m_socketAvailable = true; CoreNotify_ServerTCPAccept(m_libSocketServer); return; } else { AddDebugLogLineN(logAsio, wxT("Error in HandleAccept: invalid socket")); } } // We were not successful. Try again. // Post the request to the event queue to make sure it doesn't get called immediately. m_strand.post(boost::bind(& CAsioSocketServerImpl::StartAccept, this)); } // The wrapper object CLibSocketServer * m_libSocketServer; // Startup ok bool m_ok; // The last socket that connected to us CScopedPtr m_currentSocket; // Is there a socket available? bool m_socketAvailable; io_service::strand m_strand; // handle synchronisation in io_service thread pool }; CLibSocketServer::CLibSocketServer(const amuleIPV4Address& adr, int /* flags */) { m_aServer = new CAsioSocketServerImpl(adr, this); } CLibSocketServer::~CLibSocketServer() { delete m_aServer; } // Accepts an incoming connection request, and creates a new CLibSocket object which represents the server-side of the connection. // Only used in CamuleApp::ListenSocketHandler() and we don't get there. CLibSocket * CLibSocketServer::Accept(bool /* wait */) { wxFAIL; return NULL; } // Accept an incoming connection using the specified socket object. bool CLibSocketServer::AcceptWith(CLibSocket & socket, bool wait) { wxASSERT(!wait); return m_aServer->AcceptWith(socket); } bool CLibSocketServer::IsOk() const { return m_aServer->IsOk(); } void CLibSocketServer::Close() { m_aServer->Close(); } bool CLibSocketServer::SocketAvailable() { return m_aServer->SocketAvailable(); } /** * ASIO UDP socket implementation */ class CAsioUDPSocketImpl { private: // UDP data block class CUDPData { public: char * buffer; uint32 size; amuleIPV4Address ipadr; CUDPData(const void * src, uint32 _size, amuleIPV4Address adr) : size(_size), ipadr(adr) { buffer = new char[size]; memcpy(buffer, src, size); } ~CUDPData() { delete[] buffer; } }; public: CAsioUDPSocketImpl(const amuleIPV4Address &address, int /* flags */, CLibUDPSocket * libSocket) : m_libSocket(libSocket), m_strand(s_io_service), m_timer(s_io_service), m_address(address) { m_muleSocket = NULL; m_socket = NULL; m_readBuffer = new char[CMuleUDPSocket::UDP_BUFFER_SIZE]; m_OK = true; CreateSocket(); } ~CAsioUDPSocketImpl() { AddDebugLogLineF(logAsio, wxT("UDP ~CAsioUDPSocketImpl")); delete m_socket; delete[] m_readBuffer; DeleteContents(m_receiveBuffers); } void SetClientData(CMuleUDPSocket * muleSocket) { AddDebugLogLineF(logAsio, wxT("UDP SetClientData")); m_muleSocket = muleSocket; } uint32 RecvFrom(amuleIPV4Address& addr, void* buf, uint32 nBytes) { CUDPData * recdata; { wxMutexLocker lock(m_receiveBuffersLock); if (m_receiveBuffers.empty()) { AddDebugLogLineN(logAsio, wxT("UDP RecvFromError no data")); return 0; } recdata = * m_receiveBuffers.begin(); m_receiveBuffers.pop_front(); } uint32 read = recdata->size; if (read > nBytes) { // should not happen AddDebugLogLineN(logAsio, CFormat(wxT("UDP RecvFromError too much data %d")) % read); read = nBytes; } memcpy(buf, recdata->buffer, read); addr = recdata->ipadr; delete recdata; return read; } uint32 SendTo(const amuleIPV4Address& addr, const void* buf, uint32 nBytes) { // Collect data, make a copy of the buffer's content CUDPData * recdata = new CUDPData(buf, nBytes, addr); AddDebugLogLineF(logAsio, CFormat(wxT("UDP SendTo %d to %s")) % nBytes % addr.IPAddress()); m_strand.dispatch(boost::bind(& CAsioUDPSocketImpl::DispatchSendTo, this, recdata)); return nBytes; } bool IsOk() const { return m_OK; } void Close() { if (s_io_service.stopped()) { DispatchClose(); } else { m_strand.dispatch(boost::bind(& CAsioUDPSocketImpl::DispatchClose, this)); } } void Destroy() { AddDebugLogLineF(logAsio, CFormat(wxT("Destroy() %p %p")) % m_libSocket % this); Close(); if (s_io_service.stopped()) { HandleDestroy(); } else { // Close prevents creation of any more callbacks, but does not clear any callbacks already // sitting in Asio's event queue (I have seen such a crash). // So create a delay timer so they can be called until core is notified. m_timer.expires_from_now(boost::posix_time::seconds(1)); m_timer.async_wait(m_strand.wrap(boost::bind(& CAsioUDPSocketImpl::HandleDestroy, this))); } } private: // // Dispatch handlers // Access to m_socket is all bundled in the thread running s_io_service to avoid // concurrent access to the socket from several threads. // So once things are running (after connect), all access goes through one of these handlers. // void DispatchClose() { error_code ec; m_socket->close(ec); if (ec) { AddDebugLogLineC(logAsio, CFormat(wxT("UDP Close error %s")) % ec.message()); } else { AddDebugLogLineF(logAsio, wxT("UDP Closed")); } } void DispatchSendTo(CUDPData * recdata) { ip::udp::endpoint endpoint(recdata->ipadr.GetEndpoint().address(), recdata->ipadr.Service()); AddDebugLogLineF(logAsio, CFormat(wxT("UDP DispatchSendTo %d to %s:%d")) % recdata->size % endpoint.address().to_string() % endpoint.port()); m_socket->async_send_to(buffer(recdata->buffer, recdata->size), endpoint, m_strand.wrap(boost::bind(& CAsioUDPSocketImpl::HandleSendTo, this, placeholders::error, placeholders::bytes_transferred, recdata))); } // // Completion handlers for async requests // void HandleRead(const error_code & ec, size_t received) { if (ec) { AddDebugLogLineN(logAsio, CFormat(wxT("UDP HandleReadError %s")) % ec.message()); } else if (received == 0) { AddDebugLogLineF(logAsio, wxT("UDP HandleReadError nothing available")); } else if (m_muleSocket == NULL) { AddDebugLogLineN(logAsio, wxT("UDP HandleReadError no handler")); } else { amuleIPV4Address ipadr = amuleIPV4Address(CamuleIPV4Endpoint(m_receiveEndpoint)); AddDebugLogLineF(logAsio, CFormat(wxT("UDP HandleRead %d %s:%d")) % received % ipadr.IPAddress() % ipadr.Service()); // create our read buffer CUDPData * recdata = new CUDPData(m_readBuffer, received, ipadr); { wxMutexLocker lock(m_receiveBuffersLock); m_receiveBuffers.push_back(recdata); } CoreNotify_UDPSocketReceive(m_muleSocket); } StartBackgroundRead(); } void HandleSendTo(const error_code & ec, size_t sent, CUDPData * recdata) { if (ec) { AddDebugLogLineN(logAsio, CFormat(wxT("UDP HandleSendToError %s")) % ec.message()); } else if (sent != recdata->size) { AddDebugLogLineN(logAsio, CFormat(wxT("UDP HandleSendToError tosend: %d sent %d")) % recdata->size % sent); } if (m_muleSocket == NULL) { AddDebugLogLineN(logAsio, wxT("UDP HandleSendToError no handler")); } else { AddDebugLogLineF(logAsio, CFormat(wxT("UDP HandleSendTo %d to %s")) % sent % recdata->ipadr.IPAddress()); CoreNotify_UDPSocketSend(m_muleSocket); } delete recdata; } void HandleDestroy() { AddDebugLogLineF(logAsio, CFormat(wxT("HandleDestroy() %p %p")) % m_libSocket % this); delete m_libSocket; } // // Other functions // void CreateSocket() { try { delete m_socket; ip::udp::endpoint endpoint(m_address.GetEndpoint().address(), m_address.Service()); m_socket = new ip::udp::socket(s_io_service, endpoint); AddDebugLogLineN(logAsio, CFormat(wxT("Created UDP socket %s %d")) % m_address.IPAddress() % m_address.Service()); StartBackgroundRead(); } catch (const system_error& err) { AddLogLineC(CFormat(wxT("Error creating UDP socket %s %d : %s")) % m_address.IPAddress() % m_address.Service() % err.code().message()); m_socket = NULL; m_OK = false; } } void StartBackgroundRead() { m_socket->async_receive_from(buffer(m_readBuffer, CMuleUDPSocket::UDP_BUFFER_SIZE), m_receiveEndpoint, m_strand.wrap(boost::bind(& CAsioUDPSocketImpl::HandleRead, this, placeholders::error, placeholders::bytes_transferred))); } CLibUDPSocket * m_libSocket; ip::udp::socket * m_socket; CMuleUDPSocket * m_muleSocket; bool m_OK; io_service::strand m_strand; // handle synchronisation in io_service thread pool deadline_timer m_timer; amuleIPV4Address m_address; // One fix receive buffer char * m_readBuffer; // and a list of dynamic buffers. UDP data may be coming in faster // than the main loop can handle it. std::list m_receiveBuffers; wxMutex m_receiveBuffersLock; // Address of last reception ip::udp::endpoint m_receiveEndpoint; }; /** * Library UDP socket wrapper */ CLibUDPSocket::CLibUDPSocket(amuleIPV4Address &address, int flags) { m_aSocket = new CAsioUDPSocketImpl(address, flags, this); } CLibUDPSocket::~CLibUDPSocket() { AddDebugLogLineF(logAsio, CFormat(wxT("~CLibUDPSocket() %p %p")) % this % m_aSocket); delete m_aSocket; } bool CLibUDPSocket::IsOk() const { return m_aSocket->IsOk(); } uint32 CLibUDPSocket::RecvFrom(amuleIPV4Address& addr, void* buf, uint32 nBytes) { return m_aSocket->RecvFrom(addr, buf, nBytes); } uint32 CLibUDPSocket::SendTo(const amuleIPV4Address& addr, const void* buf, uint32 nBytes) { return m_aSocket->SendTo(addr, buf, nBytes); } void CLibUDPSocket::SetClientData(CMuleUDPSocket * muleSocket) { m_aSocket->SetClientData(muleSocket); } int CLibUDPSocket::LastError() const { return !IsOk(); } void CLibUDPSocket::Close() { m_aSocket->Close(); } void CLibUDPSocket::Destroy() { m_aSocket->Destroy(); } /** * CAsioService - ASIO event loop thread */ class CAsioServiceThread : public wxThread { public: CAsioServiceThread() : wxThread(wxTHREAD_JOINABLE) { static int count = 0; m_threadNumber = ++count; Create(); Run(); } void * Entry() { AddLogLineNS(CFormat(_("Asio thread %d started")) % m_threadNumber); io_service::work worker(s_io_service); // keep io_service running s_io_service.run(); AddDebugLogLineN(logAsio, CFormat(wxT("Asio thread %d stopped")) % m_threadNumber); return NULL; } private: int m_threadNumber; }; /** * The constructor starts the thread. */ CAsioService::CAsioService() { m_threads = new CAsioServiceThread[m_numberOfThreads]; } CAsioService::~CAsioService() { } void CAsioService::Stop() { if (!m_threads) { return; } s_io_service.stop(); // Wait for threads to exit for (int i = 0; i < m_numberOfThreads; i++) { CAsioServiceThread * t = m_threads + i; t->Wait(); } delete[] m_threads; m_threads = 0; } /** * amuleIPV4Address */ amuleIPV4Address::amuleIPV4Address() { m_endpoint = new CamuleIPV4Endpoint(); } amuleIPV4Address::amuleIPV4Address(const amuleIPV4Address &a) { *this = a; } amuleIPV4Address::amuleIPV4Address(const CamuleIPV4Endpoint &ep) { *this = ep; } amuleIPV4Address::~amuleIPV4Address() { delete m_endpoint; } amuleIPV4Address& amuleIPV4Address::operator=(const amuleIPV4Address &a) { m_endpoint = new CamuleIPV4Endpoint(* a.m_endpoint); return *this; } amuleIPV4Address& amuleIPV4Address::operator=(const CamuleIPV4Endpoint &ep) { m_endpoint = new CamuleIPV4Endpoint(ep); return *this; } bool amuleIPV4Address::Hostname(const wxString& name) { if (name.IsEmpty()) { return false; } // This is usually just an IP. std::string sname(unicode2char(name)); error_code ec; ip::address_v4 adr = ip::address_v4::from_string(sname, ec); if (!ec) { m_endpoint->address(adr); return true; } AddDebugLogLineN(logAsio, CFormat(wxT("Hostname(\"%s\") failed, not an IP address %s")) % name % ec.message()); // Try to resolve (sync). Normally not required. Unless you type in your hostname as "local IP address" or something. error_code ec2; ip::tcp::resolver res(s_io_service); // We only want to get IPV4 addresses. ip::tcp::resolver::query query(ip::tcp::v4(), sname, ""); ip::tcp::resolver::iterator endpoint_iterator = res.resolve(query, ec2); if (ec2) { AddDebugLogLineN(logAsio, CFormat(wxT("Hostname(\"%s\") resolve failed: %s")) % name % ec2.message()); return false; } if (endpoint_iterator == ip::tcp::resolver::iterator()) { AddDebugLogLineN(logAsio, CFormat(wxT("Hostname(\"%s\") resolve failed: no address found")) % name); return false; } m_endpoint->address(endpoint_iterator->endpoint().address()); AddDebugLogLineN(logAsio, CFormat(wxT("Hostname(\"%s\") resolved to %s")) % name % IPAddress()); return true; } bool amuleIPV4Address::Service(uint16 service) { if (service == 0) { return false; } m_endpoint->port(service); return true; } uint16 amuleIPV4Address::Service() const { return m_endpoint->port(); } bool amuleIPV4Address::IsLocalHost() const { return m_endpoint->address().is_loopback(); } wxString amuleIPV4Address::IPAddress() const { return CFormat(wxT("%s")) % m_endpoint->address().to_string(); } // "Set address to any of the addresses of the current machine." // This just sets the address to 0.0.0.0 . // wx does the same. bool amuleIPV4Address::AnyAddress() { m_endpoint->address(ip::address_v4::any()); AddDebugLogLineN(logAsio, CFormat(wxT("AnyAddress: set to %s")) % IPAddress()); return true; } const CamuleIPV4Endpoint & amuleIPV4Address::GetEndpoint() const { return * m_endpoint; } CamuleIPV4Endpoint & amuleIPV4Address::GetEndpoint() { return * m_endpoint; } // // Notification stuff // namespace MuleNotify { void LibSocketConnect(CLibSocket * socket, int error) { if (socket->IsDestroying()) { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocketConnect Destroying %s %d")) % socket->GetIP() % error); } else if (socket->GetProxyState()) { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocketConnect Proxy %s %d")) % socket->GetIP() % error); socket->OnProxyEvent(MULE_SOCKET_CONNECTION); } else { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocketConnect %s %d")) %socket->GetIP() % error); socket->OnConnect(error); } } void LibSocketSend(CLibSocket * socket, int error) { if (socket->IsDestroying()) { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocketSend Destroying %s %d")) % socket->GetIP() % error); } else if (socket->GetProxyState()) { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocketSend Proxy %s %d")) % socket->GetIP() % error); socket->OnProxyEvent(MULE_SOCKET_OUTPUT); } else { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocketSend %s %d")) % socket->GetIP() % error); socket->OnSend(error); } } void LibSocketReceive(CLibSocket * socket, int error) { socket->EventProcessed(); if (socket->IsDestroying()) { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocketReceive Destroying %s %d")) % socket->GetIP() % error); } else if (socket->GetProxyState()) { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocketReceive Proxy %s %d")) % socket->GetIP() % error); socket->OnProxyEvent(MULE_SOCKET_INPUT); } else { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocketReceive %s %d")) % socket->GetIP() % error); socket->OnReceive(error); } } void LibSocketLost(CLibSocket * socket) { if (socket->IsDestroying()) { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocketLost Destroying %s")) % socket->GetIP()); } else if (socket->GetProxyState()) { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocketLost Proxy %s")) % socket->GetIP()); socket->OnProxyEvent(MULE_SOCKET_LOST); } else { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocketLost %s")) % socket->GetIP()); socket->OnLost(); } } void LibSocketDestroy(CLibSocket * socket) { AddDebugLogLineF(logAsio, CFormat(wxT("LibSocket_Destroy %s")) % socket->GetIP()); delete socket; } void ProxySocketEvent(CLibSocket * socket, int evt) { AddDebugLogLineF(logAsio, CFormat(wxT("ProxySocketEvent %s %d")) % socket->GetIP() % evt); socket->OnProxyEvent(evt); } void ServerTCPAccept(CLibSocketServer * socketServer) { AddDebugLogLineF(logAsio, wxT("ServerTCP_Accept")); socketServer->OnAccept(); } } // namespace MuleNotify // // Initialize MuleBoostVersion // wxString MuleBoostVersion = CFormat(wxT("%d.%d")) % (BOOST_VERSION / 100000) % (BOOST_VERSION / 100 % 1000); amule_2.3.1+git20151120.0023527bc2.orig/src/LibSocketWX.cpp0000644000175000017500000000730112611472361021135 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Stu Redman ( sturedman@amule.org ) // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // // Implementation of amuleIPV4Address for wxWidgets sockets // (Implementation for Asio is in LibSocketAsio.cpp // #include "LibSocket.h" #include "Logger.h" class CamuleIPV4Endpoint : public wxIPV4address { public: CamuleIPV4Endpoint() {} CamuleIPV4Endpoint(const CamuleIPV4Endpoint & impl) : wxIPV4address(impl) {} /// operator wxSockAddress& () { return * this; } }; bool CLibSocket::Connect(amuleIPV4Address& adr, bool wait) { return wxSocketClient::Connect(adr.GetEndpoint(), wait); } bool CLibSocket::GetPeer(amuleIPV4Address& adr) { return wxSocketClient::GetPeer(adr.GetEndpoint()); } void CLibSocket::SetLocal(amuleIPV4Address& local) { wxSocketClient::SetLocal(local.GetEndpoint()); } CLibSocketServer::CLibSocketServer(const amuleIPV4Address &address, wxSocketFlags flags) : wxSocketServer(address.GetEndpoint(), flags) { } CLibUDPSocket::CLibUDPSocket(amuleIPV4Address &address, wxSocketFlags flags) : wxDatagramSocket(address.GetEndpoint(), flags) { } uint32 CLibUDPSocket::RecvFrom(amuleIPV4Address& addr, void* buf, uint32 nBytes) { wxDatagramSocket::RecvFrom(addr.GetEndpoint(), buf, nBytes); return wxDatagramSocket::LastCount(); } uint32 CLibUDPSocket::SendTo(const amuleIPV4Address& addr, const void* buf, uint32 nBytes) { wxDatagramSocket::SendTo(addr.GetEndpoint(), buf, nBytes); return wxDatagramSocket::LastCount(); } amuleIPV4Address::amuleIPV4Address() { m_endpoint = new CamuleIPV4Endpoint(); } amuleIPV4Address::amuleIPV4Address(const amuleIPV4Address &a) { *this = a; } amuleIPV4Address::~amuleIPV4Address() { delete m_endpoint; } amuleIPV4Address& amuleIPV4Address::operator=(const amuleIPV4Address &a) { m_endpoint = new CamuleIPV4Endpoint(* a.m_endpoint); return *this; } bool amuleIPV4Address::Hostname(const wxString& name) { if (name.IsEmpty()) { return false; } return m_endpoint->Hostname(name); } bool amuleIPV4Address::Service(uint16 service) { if (service == 0) { return false; } return m_endpoint->Service(service); } uint16 amuleIPV4Address::Service() const { return m_endpoint->Service(); } bool amuleIPV4Address::IsLocalHost() const { return m_endpoint->IsLocalHost(); } wxString amuleIPV4Address::IPAddress() const { return m_endpoint->IPAddress(); } // Set address to any of the addresses of the current machine. bool amuleIPV4Address::AnyAddress() { bool ret = m_endpoint->AnyAddress(); AddDebugLogLineN(logGeneral, CFormat(wxT("AnyAddress() returned %s")) % IPAddress()); return ret; } const CamuleIPV4Endpoint & amuleIPV4Address::GetEndpoint() const { return * m_endpoint; } CamuleIPV4Endpoint & amuleIPV4Address::GetEndpoint() { return * m_endpoint; } wxString MuleBoostVersion; amule_2.3.1+git20151120.0023527bc2.orig/src/ListenSocket.cpp0000644000175000017500000001515312611472361021412 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ListenSocket.h" // Interface declarations #include #include "ClientTCPSocket.h" // Needed for CClientRequestSocket #include "Logger.h" // Needed for AddLogLineM #include "Statistics.h" // Needed for theStats #include "Preferences.h" // Needed for CPreferences #include "amule.h" // Needed for theApp #include "ServerConnect.h" // Needed for CServerConnect //----------------------------------------------------------------------------- // CListenSocket //----------------------------------------------------------------------------- // // This is the socket that listens to incoming connections in aMule's TCP port // As soon as a connection is detected, it creates a new socket of type // CClientTCPSocket to handle (accept) the connection. // CListenSocket::CListenSocket(amuleIPV4Address &addr, const CProxyData *ProxyData) : // wxSOCKET_NOWAIT - means non-blocking i/o // wxSOCKET_REUSEADDR - means we can reuse the socket immediately (wx-2.5.3) CSocketServerProxy(addr, MULE_SOCKET_NOWAIT|MULE_SOCKET_REUSEADDR, ProxyData) { // 0.42e - vars not used by us m_pending = false; shutdown = false; m_OpenSocketsInterval = 0; totalconnectionchecks = 0; averageconnections = 0.0; memset(m_ConnectionStates, 0, 3 * sizeof(m_ConnectionStates[0])); // Set the listen socket event handler -- The handler is written in amule.cpp if (IsOk()) { SetEventHandler(*theApp, ID_LISTENSOCKET_EVENT); SetNotify(wxSOCKET_CONNECTION_FLAG); Notify(true); AddLogLineNS(_("ListenSocket: Ok.")); } else { AddLogLineCS(_("ERROR: Could not listen to TCP port.") ); } } CListenSocket::~CListenSocket() { shutdown = true; Discard(); Close(); #ifdef __DEBUG__ // No new sockets should have been opened by now for (SocketSet::iterator it = socket_list.begin(); it != socket_list.end(); ++it) { wxASSERT((*it)->IsDestroying()); } #endif KillAllSockets(); } void CListenSocket::OnAccept() { m_pending = theApp->IsRunning(); // just do nothing if we are shutting down // If the client is still at maxconnections, // this will allow it to go above it ... // But if you don't, you will get a lowID on all servers. while (m_pending && (theApp->serverconnect->IsConnecting() || !TooManySockets())) { if (!SocketAvailable()) { m_pending = false; } else { // Create a new socket to deal with the connection CClientTCPSocket* newclient = new CClientTCPSocket(); // Accept the connection and give it to the newly created socket if (!AcceptWith(*newclient, false)) { newclient->Safe_Delete(); m_pending = false; } else { if (!newclient->InitNetworkData()) { // IP or port were not returned correctly // from the accepted address, or filtered. newclient->Safe_Delete(); } } } } if (m_pending) { theStats::AddMaxConnectionLimitReached(); } } void CListenSocket::AddConnection() { m_OpenSocketsInterval++; } void CListenSocket::Process() { // 042e + Kry changes for Destroy m_OpenSocketsInterval = 0; SocketSet::iterator it = socket_list.begin(); while ( it != socket_list.end() ) { CClientTCPSocket* cur_socket = *it++; if (!cur_socket->IsDestroying()) { cur_socket->CheckTimeOut(); } } if (m_pending) { OnAccept(); } } void CListenSocket::RecalculateStats() { // 0.42e memset(m_ConnectionStates, 0, 3 * sizeof(m_ConnectionStates[0])); for (SocketSet::iterator it = socket_list.begin(); it != socket_list.end(); ) { CClientTCPSocket* cur_socket = *it++; switch (cur_socket->GetConState()) { case ES_DISCONNECTED: m_ConnectionStates[0]++; break; case ES_NOTCONNECTED: m_ConnectionStates[1]++; break; case ES_CONNECTED: m_ConnectionStates[2]++; break; } } } void CListenSocket::AddSocket(CClientTCPSocket* toadd) { wxASSERT(toadd); socket_list.insert(toadd); theStats::AddActiveConnection(); } void CListenSocket::RemoveSocket(CClientTCPSocket* todel) { wxASSERT(todel); socket_list.erase(todel); theStats::RemoveActiveConnection(); } void CListenSocket::KillAllSockets() { // 0.42e reviewed - they use delete, but our safer is Destroy... // But I bet it would be better to call Safe_Delete on the socket. // Update: no... Safe_Delete MARKS for deletion. We need to delete it. for (SocketSet::iterator it = socket_list.begin(); it != socket_list.end(); ) { CClientTCPSocket* cur_socket = *it++; if (cur_socket->GetClient()) { cur_socket->Safe_Delete_Client(); } else { cur_socket->Safe_Delete(); cur_socket->Destroy(); } } } bool CListenSocket::TooManySockets(bool bIgnoreInterval) { if (GetOpenSockets() > thePrefs::GetMaxConnections() || (!bIgnoreInterval && m_OpenSocketsInterval > (thePrefs::GetMaxConperFive() * GetMaxConperFiveModifier()))) { return true; } else { return false; } } bool CListenSocket::IsValidSocket(CClientTCPSocket* totest) { // 0.42e return socket_list.find(totest) != socket_list.end(); } void CListenSocket::UpdateConnectionsStatus() { // 0.42e xcept for the khaos stats if( theApp->IsConnected() ) { totalconnectionchecks++; float percent; percent = (float)(totalconnectionchecks-1)/(float)totalconnectionchecks; if( percent > .99f ) { percent = .99f; } averageconnections = (averageconnections*percent) + (float)GetOpenSockets()*(1.0f-percent); } } float CListenSocket::GetMaxConperFiveModifier() { float SpikeSize = GetOpenSockets() - averageconnections; if ( SpikeSize < 1 ) { return 1; } float SpikeTolerance = 2.5f * thePrefs::GetMaxConperFive(); if ( SpikeSize > SpikeTolerance ) { return 0; } return 1.0f - (SpikeSize/SpikeTolerance); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ListenSocket.h0000644000175000017500000000455112611472361021057 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // // Handling incoming connections (up or downloadrequests) // #ifndef LISTENSOCKET_H #define LISTENSOCKET_H #include "Proxy.h" // Needed fot CProxyData, CSocketServerProxy #include class CClientTCPSocket; // CListenSocket command target class CListenSocket : public CSocketServerProxy { public: CListenSocket(amuleIPV4Address &addr, const CProxyData *ProxyData = NULL); ~CListenSocket(); void OnAccept(); void Process(); void RemoveSocket(CClientTCPSocket* todel); void AddSocket(CClientTCPSocket* toadd); uint32 GetOpenSockets() {return socket_list.size();} void KillAllSockets(); bool TooManySockets(bool bIgnoreInterval = false); bool IsValidSocket(CClientTCPSocket* totest); void AddConnection(); void RecalculateStats(); void UpdateConnectionsStatus(); float GetMaxConperFiveModifier(); uint32 GetTotalConnectionChecks() { return totalconnectionchecks; } float GetAverageConnections() { return averageconnections; } bool OnShutdown() { return shutdown;} private: typedef std::set SocketSet; SocketSet socket_list; bool shutdown; bool m_pending; uint16 m_OpenSocketsInterval; uint16 m_ConnectionStates[3]; uint32 totalconnectionchecks; float averageconnections; }; #endif // LISTENSOCKET_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Logger.cpp0000644000175000017500000002442212611472361020221 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "Logger.h" #include "amule.h" #include "Preferences.h" #include #include #include #include #include #include #include DEFINE_LOCAL_EVENT_TYPE(MULE_EVT_LOGLINE) CDebugCategory g_debugcats[] = { CDebugCategory( logGeneral, wxT("General") ), CDebugCategory( logHasher, wxT("Hasher") ), CDebugCategory( logClient, wxT("ED2k Client") ), CDebugCategory( logLocalClient, wxT("Local Client Protocol") ), CDebugCategory( logRemoteClient, wxT("Remote Client Protocol") ), CDebugCategory( logPacketErrors, wxT("Packet Parsing Errors") ), CDebugCategory( logCFile, wxT("CFile") ), CDebugCategory( logFileIO, wxT("FileIO") ), CDebugCategory( logZLib, wxT("ZLib") ), CDebugCategory( logAICHThread, wxT("AICH-Hasher") ), CDebugCategory( logAICHTransfer, wxT("AICH-Transfer") ), CDebugCategory( logAICHRecovery, wxT("AICH-Recovery") ), CDebugCategory( logListenSocket, wxT("ListenSocket") ), CDebugCategory( logCredits, wxT("Credits") ), CDebugCategory( logClientUDP, wxT("ClientUDPSocket") ), CDebugCategory( logDownloadQueue, wxT("DownloadQueue") ), CDebugCategory( logIPFilter, wxT("IPFilter") ), CDebugCategory( logKnownFiles, wxT("KnownFileList") ), CDebugCategory( logPartFile, wxT("PartFiles") ), CDebugCategory( logSHAHashSet, wxT("SHAHashSet") ), CDebugCategory( logServer, wxT("Servers") ), CDebugCategory( logProxy, wxT("Proxy") ), CDebugCategory( logSearch, wxT("Searching") ), CDebugCategory( logServerUDP, wxT("ServerUDP") ), CDebugCategory( logClientKadUDP, wxT("Client Kademlia UDP") ), CDebugCategory( logKadSearch, wxT("Kademlia Search") ), CDebugCategory( logKadRouting, wxT("Kademlia Routing") ), CDebugCategory( logKadIndex, wxT("Kademlia Indexing") ), CDebugCategory( logKadMain, wxT("Kademlia Main Thread") ), CDebugCategory( logKadPrefs, wxT("Kademlia Preferences") ), CDebugCategory( logPfConvert, wxT("PartFileConvert") ), CDebugCategory( logMuleUDP, wxT("MuleUDPSocket" ) ), CDebugCategory( logThreads, wxT("ThreadScheduler" ) ), CDebugCategory( logUPnP, wxT("Universal Plug and Play" ) ), CDebugCategory( logKadUdpFwTester, wxT("Kademlia UDP Firewall Tester") ), CDebugCategory( logKadPacketTracking, wxT("Kademlia Packet Tracking") ), CDebugCategory( logKadEntryTracking, wxT("Kademlia Entry Tracking") ), CDebugCategory( logEC, wxT("External Connect") ), CDebugCategory( logHTTP, wxT("HTTP") ), CDebugCategory( logAsio, wxT("Asio Sockets") ) }; const int categoryCount = itemsof(g_debugcats); #ifdef __DEBUG__ bool CLogger::IsEnabled( DebugType type ) const { int index = (int)type; if ( index >= 0 && index < categoryCount ) { const CDebugCategory& cat = g_debugcats[ index ]; wxASSERT( type == cat.GetType() ); return ( cat.IsEnabled() && thePrefs::GetVerbose() ); } wxFAIL; return false; } #endif void CLogger::SetEnabled( DebugType type, bool enabled ) { int index = (int)type; if ( index >= 0 && index < categoryCount ) { CDebugCategory& cat = g_debugcats[ index ]; wxASSERT( type == cat.GetType() ); cat.SetEnabled( enabled ); } else { wxFAIL; } } void CLogger::AddLogLine( const wxString& DEBUG_ONLY(file), int DEBUG_ONLY(line), bool critical, DebugType type, const wxString &str, bool toStdout, bool toGUI) { wxString msg(str); // handle Debug messages if (type != logStandard) { if (!critical && !IsEnabled(type)) { return; } if (!critical && thePrefs::GetVerboseLogfile()) { // print non critical debug messages only to the logfile toGUI = false; } int index = (int)type; if ( index >= 0 && index < categoryCount ) { const CDebugCategory& cat = g_debugcats[ index ]; wxASSERT(type == cat.GetType()); msg = cat.GetName() + wxT(": ") + msg; } else { wxFAIL; } } #ifdef __DEBUG__ if (line) { msg = file.AfterLast(wxFileName::GetPathSeparator()).AfterLast(wxT('/')) << wxT("(") << line << wxT("): ") + msg; } #endif if (toGUI && !wxThread::IsMain()) { // put to background CLoggingEvent Event(critical, toStdout, toGUI, msg); AddPendingEvent(Event); } else { // Try to handle events immediatly when possible (to save to file). DoLines(msg, critical, toStdout, toGUI); } } void CLogger::AddLogLine( const wxString &file, int line, bool critical, DebugType type, const std::ostringstream &msg) { AddLogLine(file, line, critical, type, wxString(char2unicode(msg.str().c_str()))); } const CDebugCategory& CLogger::GetDebugCategory( int index ) { wxASSERT( index >= 0 && index < categoryCount ); return g_debugcats[ index ]; } unsigned int CLogger::GetDebugCategoryCount() { return categoryCount; } bool CLogger::OpenLogfile(const wxString & name) { applog = new wxFFileOutputStream(name); bool ret = applog->Ok(); if (ret) { FlushApplog(); m_LogfileName = name; } else { CloseLogfile(); } return ret; } void CLogger::CloseLogfile() { delete applog; applog = NULL; m_LogfileName.Clear(); } void CLogger::OnLoggingEvent(class CLoggingEvent& evt) { DoLines(evt.Message(), evt.IsCritical(), evt.ToStdout(), evt.ToGUI()); } void CLogger::DoLines(const wxString & lines, bool critical, bool toStdout, bool toGUI) { // Remove newspace at end wxString bufferline = lines.Strip(wxString::trailing); // Create the timestamp wxString stamp = wxDateTime::Now().FormatISODate() + wxT(" ") + wxDateTime::Now().FormatISOTime() #ifdef CLIENT_GUI + wxT(" (remote-GUI): "); #else + wxT(": "); #endif // critical lines get a ! prepended, ordinary lines a blank // logfile-only lines get a . to prevent transmission on EC wxString prefix = !toGUI ? wxT(".") : (critical ? wxT("!") : wxT(" ")); if ( bufferline.IsEmpty() ) { // If it's empty we just write a blank line with no timestamp. DoLine(wxT(" \n"), toStdout, toGUI); } else { // Split multi-line messages into individual lines wxStringTokenizer tokens( bufferline, wxT("\n") ); while ( tokens.HasMoreTokens() ) { wxString fullline = prefix + stamp + tokens.GetNextToken() + wxT("\n"); DoLine(fullline, toStdout, toGUI); } } } void CLogger::DoLine(const wxString & line, bool toStdout, bool GUI_ONLY(toGUI)) { { wxMutexLocker lock(m_lineLock); ++m_count; // write to logfile m_ApplogBuf += line; FlushApplog(); // write to Stdout if (m_StdoutLog || toStdout) { printf("%s", (const char*)unicode2char(line)); } } #ifndef AMULE_DAEMON // write to Listcontrol if (toGUI) { theApp->AddGuiLogLine(line); } #endif } void CLogger::EmergencyLog(const wxString &message, bool closeLog) { fprintf(stderr, "%s", (const char*)unicode2char(message)); m_ApplogBuf += message; FlushApplog(); if (closeLog && applog) { applog->Close(); applog = NULL; } } void CLogger::FlushApplog() { if (applog) { // Wait with output until logfile is actually opened wxStringInputStream stream(m_ApplogBuf); (*applog) << stream; applog->Sync(); m_ApplogBuf.Clear(); } } CLogger theLogger; BEGIN_EVENT_TABLE(CLogger, wxEvtHandler) EVT_MULE_LOGGING(CLogger::OnLoggingEvent) END_EVENT_TABLE() CLoggerTarget::CLoggerTarget() { } #if wxCHECK_VERSION(2, 9, 0) void CLoggerTarget::DoLogText(const wxString &msg) { // prevent infinite recursion static bool recursion = false; if (recursion) { return; } recursion = true; // This is much simpler than manually handling all wx log-types. if (msg.StartsWith(_("ERROR: ")) || msg.StartsWith(_("WARNING: "))) { AddLogLineC(msg); } else { AddLogLineN(msg); } recursion = false; } #else void CLoggerTarget::DoLogString(const wxChar* msg, time_t) { // prevent infinite recursion static bool recursion = false; if (recursion) { return; } recursion = true; wxCHECK_RET(msg, wxT("Log message is NULL in DoLogString!")); wxString str(msg); // This is much simpler than manually handling all wx log-types. // cppcheck-suppress duplicateBranch if (str.StartsWith(_("ERROR: ")) || str.StartsWith(_("WARNING: "))) { AddLogLineC(str); } else { AddLogLineN(str); } recursion = false; } #endif CLoggerAccess::CLoggerAccess() { m_bufferlen = 4096; m_buffer = new wxCharBuffer(m_bufferlen); m_logfile = NULL; Reset(); } void CLoggerAccess::Reset() { delete m_logfile; m_logfile = new wxFFileInputStream(theLogger.GetLogfileName()); m_pos = 0; m_ready = false; } CLoggerAccess::~CLoggerAccess() { delete m_buffer; delete m_logfile; } // // read a line of text from the logfile if available // (can't believe there's no library function for this >:( ) // bool CLoggerAccess::HasString() { while (!m_ready) { int c = m_logfile->GetC(); if (c == wxEOF) { break; } // check for buffer overrun if (m_pos == m_bufferlen) { m_bufferlen += 1024; m_buffer->extend(m_bufferlen); } m_buffer->data()[m_pos++] = c; if (c == '\n') { if (m_buffer->data()[0] == '.') { // Log-only line, skip m_pos = 0; } else { m_ready = true; } } } return m_ready; } bool CLoggerAccess::GetString(wxString & s) { if (!HasString()) { return false; } s = wxString(m_buffer->data(), wxConvUTF8, m_pos); m_pos = 0; m_ready = false; return true; } // Functions for EC logging bool ECLogIsEnabled() { return theLogger.IsEnabled(logEC); } void DoECLogLine(const wxString &line) { // without file/line theLogger.AddLogLine(wxEmptyString, 0, false, logStandard, line, false, false); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Logger.h0000644000175000017500000002627312611472361017674 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef LOGGER_H #define LOGGER_H #include #include #include enum DebugType { //! Standard warning, not debug logStandard = -1, //! General warnings/errors. logGeneral = 0, //! Warnings/Errors for the main hashing thread. logHasher, //! Warnings/Errors for client-objects. logClient, //! Warnings/Errors for the local client protocol. logLocalClient, //! Warnings/Errors for the remote client protocol. logRemoteClient, //! Warnings/Errors when parsing packets. logPacketErrors, //! Warnings/Errors for the CFile class. logCFile, //! Warnings/Errors related to reading/writing files. logFileIO, //! Warnings/Errors when using the zLib library. logZLib, //! Warnings/Errors for the AICH-syncronization thread. logAICHThread, //! Warnings/Errors for transfering AICH hash-sets. logAICHTransfer, //! Warnings/Errors when recovering with AICH. logAICHRecovery, //! Warnings/Errors for the CListenSocket class. logListenSocket, //! Warnings/Errors for Client-Credits. logCredits, //! Warnings/Errors for the client UDP socket. logClientUDP, //! Warnings/Errors for the download-queue. logDownloadQueue, //! Warnings/Errors for the IP-Filter. logIPFilter, //! Warnings/Errors for known-files. logKnownFiles, //! Warnings/Errors for part-files. logPartFile, //! Warnings/Errors for SHA-hashset creation. logSHAHashSet, //! Warnings/Errors for servers, server connections. logServer, //! Warnings/Errors for proxy. logProxy, //! Warnings/Errors related to searching. logSearch, //! Warnings/Errors related to the server UDP socket. logServerUDP, //! Warning/Errors related to Kademlia UDP comunication on client logClientKadUDP, //! Warning/Errors related to Kademlia Search logKadSearch, //! Warning/Errors related to Kademlia Routing logKadRouting, //! Warning/Errors related to Kademlia Indexing logKadIndex, //! Warning/Errors related to Kademlia Main Thread logKadMain, //! Warning/Errors related to Kademlia Preferences logKadPrefs, //! Warnings/Errors related to partfile importer logPfConvert, //! Warnings/Errors related to the basic UDP socket-class. logMuleUDP, //! Warnings/Errors related to the thread-scheduler. logThreads, //! Warnings/Errors related to the Universal Plug and Play subsystem. logUPnP, //! Warnings/Errors related to the UDP Firewall Tester logKadUdpFwTester, //! Warnings/Errors related to Kad packet tracking. logKadPacketTracking, //! Warnings/Errors related to Kad entry tracking. logKadEntryTracking, //! Full log of external connection packets logEC, //! Warnings/Errors related to HTTP traffic logHTTP, //! Warnings/Errors related to Boost Asio networking logAsio // IMPORTANT NOTE: when you add values to this enum, update the g_debugcats // array in Logger.cpp! }; /** * Container-class for the debugging categories. */ class CDebugCategory { public: /** * Constructor. * * @param type The actual debug-category type. * @param name The user-readable name. */ CDebugCategory( DebugType type, const wxString& name ) : m_name(name), m_type(type), m_enabled(false) {} /** * Returns true if the category is enabled. */ bool IsEnabled() const { return m_enabled; } /** * Enables/Disables the category. */ void SetEnabled( bool enabled ) { m_enabled = enabled; } /** * Returns the user-readable name. */ const wxString& GetName() const { return m_name; } /** * Returns the actual type. */ DebugType GetType() const { return m_type; } private: //! The user-readable name. wxString m_name; //! The actual type. DebugType m_type; //! Whenever or not the category is enabled. bool m_enabled; }; /** * Functions for logging operations. */ class CLogger: public wxEvtHandler { public: /** * Returns true if debug-messages should be generated for a specific category. */ #ifdef __DEBUG__ bool IsEnabled( DebugType ) const; #else bool IsEnabled( DebugType ) const { return false; } #endif /** * Enables or disables debug-messages for a specific category. */ void SetEnabled( DebugType type, bool enabled ); /** * Returns true if logging to stdout is enabled */ bool IsEnabledStdoutLog() const { return m_StdoutLog; } /** * Enables or disables logging to stdout. */ void SetEnabledStdoutLog(bool enabled) { m_StdoutLog = enabled; } /** * Logs the specified line of text, prefixed with the name of the DebugType. * (except for logStandard) * * @param file * @param line * @param critical If true, then the message will be made visible directly to the user. * @param type The debug-category, the name of which will be prepended to the line. * @param str The actual line of text. * * This function is thread-safe. If it is called by the main thread, the * event will be sent directly to the application, otherwise it will be * queued in the event-loop. */ void AddLogLine( const wxString &file, int line, bool critical, DebugType type, const wxString &str, bool toStdout = false, bool toGUI = true); // for UPnP void AddLogLine( const wxString &file, int line, bool critical, DebugType type, const std::ostringstream &msg); void AddLogLine( const wxString &file, int line, bool critical, const std::ostringstream &msg); /** * Emergency log for crashes. */ void EmergencyLog(const wxString &message, bool closeLog = true); /** * Returns a category specified by index. */ const CDebugCategory& GetDebugCategory( int index ); /** * Returns the number of debug-categories. */ unsigned int GetDebugCategoryCount(); /** * Open Logfile, true on success */ bool OpenLogfile(const wxString & name); /** * Close Logfile */ void CloseLogfile(); /** * Get name of Logfile */ const wxString & GetLogfileName() const { return m_LogfileName; } /** * Event handler */ void OnLoggingEvent(class CLoggingEvent& evt); /** * Construct */ CLogger() { applog = NULL; m_StdoutLog = false; m_count = 0; } private: class wxFFileOutputStream* applog; // the logfile wxString m_LogfileName; wxString m_ApplogBuf; bool m_StdoutLog; int m_count; // output line counter wxMutex m_lineLock; /** * Write all waiting log info to the logfile */ void FlushApplog(); /** * Really output a single line */ void DoLine(const wxString & line, bool toStdout, bool toGUI); /** * Really output several lines */ void DoLines(const wxString & lines, bool critical, bool toStdout, bool toGUI); DECLARE_EVENT_TABLE() }; extern CLogger theLogger; /** * This class forwards log-lines from wxWidgets to CLogger. */ class CLoggerTarget : public wxLog { public: CLoggerTarget(); /** * @see wxLog::DoLogString */ #if wxCHECK_VERSION(2, 9, 0) void DoLogText(const wxString &msg); #else void DoLogString(const wxChar *msg, time_t); #endif }; DECLARE_LOCAL_EVENT_TYPE(MULE_EVT_LOGLINE, -1) /** This event is sent when a log-line is queued. */ class CLoggingEvent : public wxEvent { public: CLoggingEvent(bool critical, bool toStdout, bool toGUI, const wxString& msg) : wxEvent(-1, MULE_EVT_LOGLINE) , m_critical(critical) , m_stdout(toStdout) , m_GUI(toGUI) // Deep copy, to avoid thread-unsafe reference counting. */ , m_msg(msg.c_str(), msg.Length()) { } const wxString& Message() const { return m_msg; } bool IsCritical() const { return m_critical; } bool ToStdout() const { return m_stdout; } bool ToGUI() const { return m_GUI; } wxEvent* Clone() const { return new CLoggingEvent(m_critical, m_stdout, m_GUI, m_msg); } private: bool m_critical; bool m_stdout; bool m_GUI; wxString m_msg; }; typedef void (wxEvtHandler::*MuleLogEventFunction)(CLoggingEvent&); //! Event-handler for completed hashings of new shared files and partfiles. #define EVT_MULE_LOGGING(func) \ DECLARE_EVENT_TABLE_ENTRY(MULE_EVT_LOGLINE, -1, -1, \ (wxObjectEventFunction) (wxEventFunction) \ wxStaticCastEvent(MuleLogEventFunction, &func), (wxObject*) NULL), // access the logfile for EC class CLoggerAccess { private: class wxFFileInputStream * m_logfile; class wxCharBuffer * m_buffer; size_t m_bufferlen; size_t m_pos; bool m_ready; public: // // construct/destruct // CLoggerAccess(); ~CLoggerAccess(); // // Reset (used when logfile is cleared) // void Reset(); // // get a String (if there is one) // bool GetString(wxString & s); // // is a String available ? // bool HasString(); }; /** * These macros should be used when logging. The * AddLogLineM macro will simply call one of the * two CLogger::AddLogLine functions depending on * parameters, but AddDebugLogLine* will only log * a message if the message is either critical or * the specified debug-type is enabled in the * preferences. * AddLogLineMS will also always print to stdout. */ #ifdef MULEUNIT #define AddDebugLogLineN(...) do {} while (false) #define AddLogLineN(...) do {} while (false) #define AddLogLineNS(...) do {} while (false) #define AddDebugLogLineC(...) do {} while (false) #define AddLogLineC(...) do {} while (false) #define AddLogLineCS(...) do {} while (false) #else // Macros for 'N'on critical logging #ifdef __DEBUG__ #define AddDebugLogLineN(type, string) if (theLogger.IsEnabled(type)) theLogger.AddLogLine(__TFILE__, __LINE__, false, type, string) #else #define AddDebugLogLineN(type, string) do {} while (false) #endif #define AddLogLineN(string) theLogger.AddLogLine(__TFILE__, __LINE__, false, logStandard, string) #define AddLogLineNS(string) theLogger.AddLogLine(__TFILE__, __LINE__, false, logStandard, string, true) // Macros for 'C'ritical logging #define AddDebugLogLineC(type, string) theLogger.AddLogLine(__TFILE__, __LINE__, true, type, string) #define AddLogLineC(string) theLogger.AddLogLine(__TFILE__, __LINE__, true, logStandard, string) #define AddLogLineCS(string) theLogger.AddLogLine(__TFILE__, __LINE__, true, logStandard, string, true) // Macros for logging to logfile only #ifdef __DEBUG__ #define AddDebugLogLineF(type, string) if (theLogger.IsEnabled(type)) theLogger.AddLogLine(__TFILE__, __LINE__, false, type, string, false, false) #else #define AddDebugLogLineF(type, string) do {} while (false) #endif #define AddLogLineF(string) theLogger.AddLogLine(__TFILE__, __LINE__, false, logStandard, string, false, false) #endif #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/LoggerConsole.cpp0000644000175000017500000000426512611472361021547 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include // for char2unicode() #include "Logger.h" // for Add(Debug)LogLineM() #ifdef __DEBUG__ bool CLogger::IsEnabled(DebugType /*type*/) const { return true; } #endif void CLogger::AddLogLine( const wxString &file, int line, bool critical, const std::ostringstream &msg) { AddLogLine(file, line, critical, static_cast(0), msg); } void CLogger::AddLogLine( const wxString &file, int line, bool critical, DebugType /* type */, const wxString &str, bool /* toStdout */, bool /* toGUI */) { std::string s; if (critical) { s = "Critical message: "; } printf("%s(%d): %s%s\n", (const char *)unicode2char(file), line, s.c_str(), (const char *)unicode2char(str)); } void CLogger::AddLogLine( const wxString &file, int line, bool critical, DebugType /*type*/, const std::ostringstream &msg) { std::string s; if (critical) { s = "Critical message: "; } printf("%s(%d): %s%s\n", (const char *)unicode2char(file), line, s.c_str(), msg.str().c_str()); } CLogger theLogger; BEGIN_EVENT_TABLE(CLogger, wxEvtHandler) END_EVENT_TABLE() amule_2.3.1+git20151120.0023527bc2.orig/src/MD4Hash.h0000644000175000017500000001557512611472361017650 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CMD4HASH_H #define CMD4HASH_H #include "ArchSpecific.h" // Needed for Raw{Peek,Poke}UInt64() #include // Needed for MULE_VALIDATE_PARAMS #ifdef USE_WX_EXTENSIONS #include #endif #include const size_t MD4HASH_LENGTH = 16; /** * Container-class for the MD4 hashes used in aMule. * * This is a safe representation of the MD4 hashes used in aMule. By transparently * wrapping the char array used to store the hash, we get the advantages of * assigment, equality and non-equality operators, plus other nifty features. * * Please remember that the hashes are arrays with length 16 WITHOUT a zero-terminator! */ class CMD4Hash { public: /** * Default constructor. * * The default constructor creates an empty hash of length 16. * Each field of the char array has an initial value of zero. */ CMD4Hash() { Clear(); } ~CMD4Hash() { } /** * Cast a unsigned char array to a CMD4Hash. * * @param hash The array to be cast. * * Please note that the array must either be a NULL pointer or be at least * 16 chars long, not including any possible zero-terminator! */ explicit CMD4Hash(const unsigned char hash[]) { SetHash(hash); } /** * Equality operator. * * Returns true if all fields of both hashes are the same. */ bool operator == (const CMD4Hash& other_hash) const { return ( ( RawPeekUInt64( m_hash ) == RawPeekUInt64( other_hash.m_hash ) ) && ( RawPeekUInt64( m_hash + 8 ) == RawPeekUInt64( other_hash.m_hash + 8 ) ) ); } /** * Non-equality operator * * Returns true if there is any difference between the two hashes. */ bool operator != (const CMD4Hash& other_hash) const { return !(*this == other_hash); } /** * Less than operator. * * @return True if the hash is less than other_hash, false otherwise. * * The purpose of this function is to enable the usage of CMD4Hashes in * sorted STL containers like std::map. */ bool operator < (const CMD4Hash& other_hash) const { for ( size_t i = 0; i < MD4HASH_LENGTH; ++i ) { if ( m_hash[i] < other_hash.m_hash[i] ) { return true; } else if ( other_hash.m_hash[i] < m_hash[i] ) { return false; } } return false; } /** * Returns true if the hash is empty. * * @return True if all fields are zero, false otherwise. * * This functions checks the contents of the hash and returns true * only if each field of the array contains the value zero. * To achive an empty hash, the function Clear() can be used. */ bool IsEmpty() const { return ( !RawPeekUInt64( m_hash ) && !RawPeekUInt64( m_hash + 8 ) ); } /** * Resets the contents of the hash. * * This functions sets the value of each field of the hash to zero. * IsEmpty() will return true after a call to this function. */ void Clear() { RawPokeUInt64( m_hash, 0 ); RawPokeUInt64( m_hash + 8, 0 ); } /** * Decodes a 32 char long hexadecimal representation of a MD4 hash. * * @param hash The hash representation to be converted. Length must be 32. * @return Return value specifies if the hash was succesfully decoded. * * This function converts a hexadecimal representation of a MD4 * hash and stores it in the m_hash data-member. */ bool Decode(const std::string& hash) { if (hash.length() != MD4HASH_LENGTH * 2) { return false; } for ( size_t i = 0; i < MD4HASH_LENGTH * 2; i++ ) { unsigned char word = toupper(hash[i]); if ((word >= '0') && (word <= '9')) { word -= '0'; } else if ((word >= 'A') && (word <= 'F')) { word -= 'A' - 10; } else { // Invalid chars return false; } if (i % 2 == 0) { m_hash[i/2] = word << 4; } else { m_hash[i/2] += word; } } return true; } #ifdef USE_WX_EXTENSIONS bool Decode(const wxString& hash) { return Decode(std::string(unicode2char(hash))); } #endif /** * Creates a 32 char long hexadecimal representation of a MD4 hash. * * @return Hexadecimal representation of the m_hash data-member. * * This function creates a hexadecimal representation of the MD4 * hash stored in the m_hash data-member and returns it. */ std::string EncodeSTL() const { std::string Base16Buff; for ( size_t i = 0; i < MD4HASH_LENGTH*2; i++ ) { size_t x = ( i % 2 == 0 ) ? ( m_hash[i/2] >> 4 ) : ( m_hash[i/2] & 0xf ); if ( x < 10 ) { Base16Buff += (char)( x + '0' ); } else { Base16Buff += (char)( x + ( 'A' - 10 )); } } return Base16Buff; } #ifdef USE_WX_EXTENSIONS wxString Encode() const { return char2unicode(EncodeSTL().c_str()); } #endif /** * Explicitly set the hash-array to the contents of a unsigned char array. * * @param hash The array to be assigned. * * The hash must either be a NULL pointer or be of length 16. */ void SetHash(const unsigned char hash[]) { if ( hash ) { RawPokeUInt64( m_hash, RawPeekUInt64( hash ) ); RawPokeUInt64( m_hash + 8, RawPeekUInt64( hash + 8 ) ); } else { Clear(); } } /** * Explicit access to the hash-array. * * @return Pointer to the hash array. */ unsigned char* GetHash() { return m_hash; } const unsigned char* GetHash() const { return m_hash; } /** * Explic access to values in the hash-array. * * @param i An index less than the length of an MD4 hash. * @return The value (or its reference) at the given index. */ unsigned char operator[](size_t i) const { MULE_VALIDATE_PARAMS(i < MD4HASH_LENGTH, wxT("Invalid index in CMD4Hash::operator[]")); return m_hash[i]; } unsigned char& operator[](size_t i) { MULE_VALIDATE_PARAMS(i < MD4HASH_LENGTH, wxT("Invalid index in CMD4Hash::operator[]")); return m_hash[i]; } private: //! The raw MD4-hash. //! //! The raw representation of the MD4-hash. In most cases, you should //! try to avoid direct access and instead use the member functions. unsigned char m_hash[MD4HASH_LENGTH]; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MagnetURI.cpp0000644000175000017500000000775012611472361020602 0ustar morphmorph// -*- C++ -*- // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2007-2011 Dévai Tamás ( gonosztopi@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "MagnetURI.h" #ifdef USE_STD_STRING # ifdef _T # undef _T # endif # ifdef _C # undef _C # endif # define _T(str) str # define _C(ch) ch #else // wx/chartype.h defines _T # define _C(ch) wxChar(ch) #endif CMagnetURI::CMagnetURI(const STRING& uri) { if (uri.compare(0, 7, _T("magnet:")) == 0) { size_t start = uri.find(_C('?')); if (start == STRING::npos) start = uri.length(); while (start < uri.length() - 1) { size_t end = uri.find(_C('&'), start + 1); if (end == STRING::npos) end = uri.length(); size_t pos = uri.find(_C('='), start + 1); if (pos == STRING::npos) pos = uri.length(); if (pos < end) { m_fields.push_back(Field_Type(uri.substr(start + 1, pos - start - 1), uri.substr(pos + 1, end - pos - 1))); } start = end; } } } STRING CMagnetURI::GetLink() const { STRING retval(_T("magnet:")); for (List_Type::const_iterator it = m_fields.begin(); it != m_fields.end(); ++it) { if (it == m_fields.begin()) { retval.append(1, _C('?')); } else { retval.append(1, _C('&')); } retval.append(it->first); retval.append(1, _C('=')); retval.append(it->second); } return retval; } CMagnetURI::Value_List CMagnetURI::GetField(const STRING& name) const { Value_List retval; for (List_Type::const_iterator it = m_fields.begin(); it != m_fields.end(); ++it) { if (it->first.compare(name) == 0) { retval.push_back(it->second); } } return retval; } bool CMagnetED2KConverter::CanConvertToED2K() const { bool has_urn = false; bool has_xl = false; for (List_Type::const_iterator it = m_fields.begin(); it != m_fields.end(); ++it) { if (it->first.compare(_T("xl")) == 0) { has_xl = true; continue; } if (it->first.compare(_T("xt")) == 0) { if ((it->second.compare(0, 9, _T("urn:ed2k:")) == 0) || (it->second.compare(0, 13, _T("urn:ed2khash:")) == 0)) { has_urn = true; continue; } } if (has_urn && has_xl) break; } return has_urn && has_xl; } STRING CMagnetED2KConverter::GetED2KLink() const { if (CanConvertToED2K()) { STRING dn; STRING hash; STRING len(GetField(_T("xl")).front()); Value_List dn_val = GetField(_T("dn")); if (!dn_val.empty()) { dn = dn_val.front(); } else { // This should never happen. Has anyone seen a link without a file name? // Just in case, assign a reasonable(?) name to that unnamed file. dn = _T("FileName.ext"); } Value_List urn_list = GetField(_T("xt")); // Use the first ed2k-hash found. for (Value_List::iterator it = urn_list.begin(); it != urn_list.end(); ++it) { if (it->compare(0, 9, _T("urn:ed2k:")) == 0) { hash = it->substr(9); break; } else if (it->compare(0, 13, _T("urn:ed2khash:")) == 0) { hash = it->substr(13); break; } } return STRING(_T("ed2k://|file|")).append(dn).append(1, _C('|')).append(len).append(1, _C('|')).append(hash).append(_T("|/")); } else { return STRING(); } } amule_2.3.1+git20151120.0023527bc2.orig/src/MagnetURI.h0000644000175000017500000000425412611472361020243 0ustar morphmorph// -*- C++ -*- // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2007-2011 Dévai Tamás ( gonosztopi@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef MAGNETURI_H #define MAGNETURI_H #ifdef USE_STD_STRING # include # define STRING std::string #else # include # define STRING wxString #endif #include // Needed for std::list #include // Needed for std::pair class CMagnetURI { public: typedef std::list Value_List; CMagnetURI() {} CMagnetURI(const STRING& uri); void AddField(const STRING& name, const STRING& value) { m_fields.push_back(Field_Type(name, value)); } Value_List GetField(const STRING& name) const; void Clear() { m_fields.clear(); } STRING GetLink() const; operator STRING() const { return GetLink(); } protected: typedef std::pair Field_Type; typedef std::list List_Type; List_Type m_fields; }; class CMagnetED2KConverter : private CMagnetURI { public: CMagnetED2KConverter(const STRING& uri) : CMagnetURI(uri) {} bool CanConvertToED2K() const; STRING GetED2KLink() const; operator STRING() const { return GetED2KLink(); } }; #endif /* MAGNETURI_H */ amule_2.3.1+git20151120.0023527bc2.orig/src/Makefile.am0000644000175000017500000003125512611472361020334 0ustar morphmorphAM_CPPFLAGS = $(MULECPPFLAGS) AM_CFLAGS = $(MULECFLAGS) AM_CXXFLAGS = $(MULECXXFLAGS) AM_LDFLAGS = $(MULELDFLAGS) SUBDIRS = libs utils pixmaps if WEB # build webserver after current SUBDIRS += . webserver endif if INSTALL_SKINS SUBDIRS += skins endif EXTRA_DIST = \ aMule.xpm \ LibSocketAsio.cpp \ LibSocketWX.cpp \ Parser.y \ Scanner.h.in \ Scanner.l \ IPFilterScanner.l \ muuli.wdr bin_PROGRAMS = if MONOLITHIC bin_PROGRAMS += amule endif if COMPILE_CMD bin_PROGRAMS += amulecmd endif if ED2K bin_PROGRAMS += ed2k endif if AMULE_GUI bin_PROGRAMS += amulegui endif if AMULE_DAEMON bin_PROGRAMS += amuled endif # Sources noinst_LIBRARIES = libmulesocket.a if MONOLITHIC noinst_LIBRARIES += libmuleappcore.a libmuleappgui.a libmuleappcommon.a else if AMULE_DAEMON noinst_LIBRARIES += libmuleappcore.a libmuleappcommon.a else if AMULE_GUI noinst_LIBRARIES += libmuleappgui.a libmuleappcommon.a endif endif endif # Socket lib (WX or Asio) libmulesocket_a_SOURCES = LibSocket.cpp libmulesocket_a_CPPFLAGS = $(AM_CPPFLAGS) $(WXBASE_CPPFLAGS) $(BOOST_CPPFLAGS) -I$(srcdir)/libs -I$(srcdir)/include # Common to core/gui/monolithic libmuleappcommon_a_SOURCES = \ CFile.cpp \ ClientCredits.cpp \ DataToText.cpp \ ED2KLink.cpp \ Friend.cpp \ GapList.cpp \ MagnetURI.cpp \ MemFile.cpp \ NetworkFunctions.cpp \ OtherFunctions.cpp \ Packet.cpp \ RLE.cpp \ SafeFile.cpp \ SHA.cpp \ Tag.cpp \ TerminationProcess.cpp \ Timer.cpp libmuleappcommon_a_CPPFLAGS = $(AM_CPPFLAGS) $(WXBASE_CPPFLAGS) -I$(srcdir)/libs -I$(srcdir)/include $(CRYPTOPP_CPPFLAGS) $(LIBUPNP_CPPFLAGS) # Common to core/monolithic libmuleappcore_a_SOURCES = \ AsyncDNS.cpp \ CanceledFileList.cpp \ DeadSourceList.cpp \ FileArea.cpp \ FileAutoClose.cpp \ IPFilterScanner.cpp \ Scanner.cpp \ Parser.cpp \ PlatformSpecific.cpp \ RandomFunctions.cpp \ RC4Encrypt.cpp \ StateMachine.cpp \ TerminationProcessAmuleweb.cpp \ ThreadScheduler.cpp \ UPnPBase.cpp \ kademlia/kademlia/Entry.cpp \ kademlia/kademlia/Indexed.cpp \ kademlia/kademlia/SearchManager.cpp \ kademlia/routing/RoutingBin.cpp \ kademlia/utils/UInt128.cpp libmuleappcore_a_CPPFLAGS = $(AM_CPPFLAGS) $(WXBASE_CPPFLAGS) -I$(srcdir)/libs -I$(srcdir)/include $(CRYPTOPP_CPPFLAGS) $(LIBUPNP_CPPFLAGS) # Common to gui/monolithic libmuleappgui_a_SOURCES = \ BarShader.cpp \ ColorFrameCtrl.cpp \ EditServerListDlg.cpp \ extern/wxWidgets/listctrl.cpp \ FileDetailListCtrl.cpp \ IP2Country.cpp \ MuleColour.cpp \ MuleGifCtrl.cpp \ MuleListCtrl.cpp \ MuleNotebook.cpp \ MuleTextCtrl.cpp \ MuleCollection.cpp \ muuli_wdr.cpp libmuleappgui_a_CPPFLAGS = $(AM_CPPFLAGS) $(WX_CPPFLAGS) -I$(srcdir)/libs -I$(srcdir)/include $(LIBUPNP_CPPFLAGS) $(GEOIP_CPPFLAGS) core_sources = \ amule.cpp \ BaseClient.cpp \ ClientList.cpp \ ClientCreditsList.cpp \ ClientTCPSocket.cpp \ ClientUDPSocket.cpp \ CorruptionBlackBox.cpp \ DownloadClient.cpp \ DownloadQueue.cpp \ ECSpecialCoreTags.cpp \ EMSocket.cpp \ EncryptedStreamSocket.cpp \ EncryptedDatagramSocket.cpp \ ExternalConn.cpp \ FriendList.cpp \ IPFilter.cpp \ KnownFileList.cpp \ ListenSocket.cpp \ MuleUDPSocket.cpp \ SearchFile.cpp \ SearchList.cpp \ ServerConnect.cpp \ ServerList.cpp \ ServerSocket.cpp \ ServerUDPSocket.cpp \ SHAHashSet.cpp \ SharedFileList.cpp \ ThreadTasks.cpp \ UploadBandwidthThrottler.cpp \ UploadClient.cpp \ UploadQueue.cpp \ kademlia/kademlia/Kademlia.cpp \ kademlia/kademlia/Prefs.cpp \ kademlia/kademlia/Search.cpp \ kademlia/kademlia/UDPFirewallTester.cpp \ kademlia/net/KademliaUDPListener.cpp \ kademlia/net/PacketTracking.cpp \ kademlia/routing/Contact.cpp \ kademlia/routing/RoutingZone.cpp gui_sources = \ amule-gui.cpp \ amuleDlg.cpp \ AddFriend.cpp \ CatDialog.cpp \ ChatSelector.cpp \ ChatWnd.cpp \ CommentDialog.cpp \ CommentDialogLst.cpp \ GenericClientListCtrl.cpp \ ClientDetailDialog.cpp \ DirectoryTreeCtrl.cpp \ FileDetailDialog.cpp \ KadDlg.cpp \ OScopeCtrl.cpp \ PrefsUnifiedDlg.cpp \ SearchDlg.cpp \ ServerWnd.cpp \ SharedFilesWnd.cpp \ StatisticsDlg.cpp \ SearchListCtrl.cpp \ DownloadListCtrl.cpp \ SourceListCtrl.cpp \ SharedFilePeersListCtrl.cpp \ FriendListCtrl.cpp \ ServerListCtrl.cpp \ SharedFilesCtrl.cpp \ MuleTrayIcon.cpp \ TransferWnd.cpp common_sources = \ amuleAppCommon.cpp \ ClientRef.cpp \ ECSpecialMuleTags.cpp \ KnownFile.cpp \ GetTickCount.cpp \ GuiEvents.cpp \ HTTPDownload.cpp \ Logger.cpp \ PartFile.cpp \ Preferences.cpp \ Proxy.cpp \ Server.cpp \ Statistics.cpp \ StatTree.cpp \ UserEvents.cpp # Libs core_libs = -L. -lmuleappcore $(LIBUPNP_LDFLAGS) $(LIBUPNP_LIBS) gui_libs = -L. -lmuleappgui $(WX_LIBS) $(GEOIP_LDFLAGS) $(GEOIP_LIBS) remote_common_libs = -Llibs/common -Llibs/ec/cpp -lmulecommon -lec $(BFD_LIBS) $(ZLIB_LDFLAGS) $(ZLIB_LIBS) $(RESOLV_LIB) common_libs = -L. -lmuleappcommon $(remote_common_libs) -lmulesocket $(BOOST_SYSTEM_LDFLAGS) $(BOOST_SYSTEM_LIBS) $(CRYPTOPP_LDFLAGS) $(CRYPTOPP_LIBS) core_deps = libmuleappcore.a gui_deps = libmuleappgui.a remote_common_deps = libs/common/libmulecommon.a libs/ec/cpp/libec.a common_deps = libmuleappcommon.a $(remote_common_deps) libmulesocket.a if SYS_WIN32 core_libs += -lshlwapi endif # # Flags # core_flags = $(BOOST_CPPFLAGS) $(LIBUPNP_CPPFLAGS) $(LIBUPNP_CFLAGS) gui_flags = $(WX_CPPFLAGS) $(GEOIP_CPPFLAGS) common_flags = -I$(srcdir)/libs -Ilibs -I$(srcdir)/include $(CRYPTOPP_CPPFLAGS) # --------- Apps --------- amulegui_SOURCES = \ amule-remote-gui.cpp \ $(gui_sources) \ $(ec_sources) \ $(common_sources) amule_SOURCES = \ CaptchaDialog.cpp \ CaptchaGenerator.cpp \ PartFileConvert.cpp \ PartFileConvertDlg.cpp \ $(core_sources) \ $(gui_sources) \ $(ec_sources) \ $(common_sources) amuled_SOURCES = \ amuled.cpp \ $(core_sources) \ $(ec_sources) \ $(common_sources) amule_DEPENDENCIES = $(common_deps) $(core_deps) $(gui_deps) amule_CPPFLAGS = $(AM_CPPFLAGS) $(core_flags) $(gui_flags) $(common_flags) amule_CXXFLAGS = $(AM_CXXFLAGS) $(WX_CFLAGS_ONLY) $(WX_CPPFLAGS_ONLY) amule_LDADD = $(common_libs) $(core_libs) $(gui_libs) amulegui_DEPENDENCIES = $(common_deps) $(gui_deps) amulegui_CPPFLAGS = $(AM_CPPFLAGS) $(gui_flags) $(common_flags) -DCLIENT_GUI amulegui_CXXFLAGS = $(AM_CXXFLAGS) $(WX_CFLAGS_ONLY) $(WX_CXXFLAGS_ONLY) amulegui_LDADD = $(common_libs) $(gui_libs) amuled_DEPENDENCIES = $(core_deps) $(common_deps) amuled_CPPFLAGS = $(AM_CPPFLAGS) $(WXBASE_CPPFLAGS) $(core_flags) $(common_flags) -DAMULE_DAEMON amuled_CXXFLAGS = $(AM_CXXFLAGS) $(WX_CFLAGS_ONLY) $(WX_CXXFLAGS_ONLY) amuled_LDADD = $(common_libs) $(core_libs) $(WXBASE_LIBS) ed2k_SOURCES = \ ED2KLinkParser.cpp \ MagnetURI.cpp \ MuleCollection.cpp ed2k_CPPFLAGS = $(AM_CPPFLAGS) -DUSE_STD_STRING # on Win32 if SYS_WIN32 ed2k_LDADD = -lshlwapi endif # on Mac if NEED_CORESERVICES ed2k_LDFLAGS = $(AM_LDFLAGS) -framework CoreServices endif amulecmd_SOURCES = \ TextClient.cpp \ DataToText.cpp \ ExternalConnector.cpp \ LoggerConsole.cpp \ OtherFunctions.cpp \ NetworkFunctions.cpp amulecmd_DEPENDENCIES = $(remote_common_deps) libmulesocket.a amulecmd_CPPFLAGS = $(AM_CPPFLAGS) $(WXBASE_CPPFLAGS) $(common_flags) amulecmd_CXXFLAGS = $(AM_CXXFLAGS) $(WX_CFLAGS_ONLY) $(WX_CXXFLAGS_ONLY) #amulecmd_LDADD = $(WXBASE_LIBS) $(READLINE_LIBS) $(remote_common_libs) amulecmd_LDADD = -Llibs/common -Llibs/ec/cpp -L. -lmulecommon -lec -lmulesocket \ $(WXBASE_LIBS) $(READLINE_LIBS) $(BFD_LIBS) $(ZLIB_LDFLAGS) $(ZLIB_LIBS) $(RESOLV_LIB) $(BOOST_SYSTEM_LDFLAGS) $(BOOST_SYSTEM_LIBS) noinst_HEADERS = \ AddFriend.h \ AsyncDNS.h \ amule-remote-gui.h \ amuleDlg.h \ amule.h \ amuleIPV4Address.h \ ArchSpecific.h \ BarShader.h \ BitVector.h \ CanceledFileList.h \ CaptchaDialog.h \ CaptchaGenerator.h \ CatDialog.h \ CFile.h \ ChatSelector.h \ ChatWnd.h \ ClientCredits.h \ ClientCreditsList.h \ ClientDetailDialog.h \ SharedFilePeersListCtrl.h \ ClientList.h \ ClientRef.h \ ClientTCPSocket.h \ ClientUDPSocket.h \ ColorFrameCtrl.h \ CommentDialog.h \ CommentDialogLst.h \ Constants.h \ CorruptionBlackBox.h \ CryptoPP_Inc.h \ DataToText.h \ DeadSourceList.h \ DirectoryTreeCtrl.h \ DownloadListCtrl.h \ DownloadQueue.h \ ED2KLink.h \ EditServerListDlg.h \ EMSocket.h \ EncryptedDatagramSocket.h \ EncryptedStreamSocket.h \ ExternalConnector.h \ ExternalConn.h \ FileArea.h \ FileAutoClose.h \ FileDetailDialog.h \ FileDetailListCtrl.h \ FileLock.h \ Friend.h \ FriendListCtrl.h \ FriendList.h \ GapList.h \ GetTickCount.h \ GenericClientListCtrl.h \ GuiEvents.h \ HTTPDownload.h \ inetdownload.h \ InternalEvents.h \ IP2Country.h \ IPFilter.h \ IPFilterScanner.h \ KadDlg.h \ KnownFile.h \ KnownFileList.h \ LibSocket.h \ ListenSocket.h \ Logger.h \ MagnetURI.h \ MD4Hash.h \ MemFile.h \ MuleCollection.h \ MuleColour.h \ MuleGifCtrl.h \ MuleListCtrl.h \ MuleNotebook.h \ MuleTextCtrl.h \ MuleThread.h \ MuleTrayIcon.h \ MuleUDPSocket.h \ muuli_wdr.h \ NetworkFunctions.h \ OScopeCtrl.h \ Observable.h \ ObservableQueue.h \ OtherFunctions.h \ OtherStructs.h \ Packet.h \ Parser.hpp \ PartFileConvert.h \ PartFileConvertDlg.h \ PartFile.h \ PlatformSpecific.h \ Preferences.h \ PrefsUnifiedDlg.h \ Proxy.h \ RangeMap.h \ RC4Encrypt.h \ RLE.h \ RandomFunctions.h \ SafeFile.h \ Scanner.h \ ScopedPtr.h \ SearchDlg.h \ SearchExpr.h \ SearchFile.h \ SearchListCtrl.h \ SearchList.h \ ServerConnect.h \ Server.h \ ServerListCtrl.h \ ServerList.h \ ServerSocket.h \ ServerUDPSocket.h \ ServerWnd.h \ SHA.h \ SHAHashSet.h \ SharedFileList.h \ SharedFilesCtrl.h \ SharedFilesWnd.h \ SourceListCtrl.h \ StateMachine.h \ StatisticsDlg.h \ Statistics.h \ StatTree.h \ Tag.h \ TerminationProcess.h \ TerminationProcessAmuleweb.h \ TextClient.h \ ThreadScheduler.h \ ThreadTasks.h \ ThrottledSocket.h \ Timer.h \ TransferWnd.h \ Types.h \ updownclient.h \ UpDownClientEC.h \ UploadBandwidthThrottler.h \ UploadQueue.h \ UPnPBase.h \ UPnPCompatibility.h \ UserEvents.h \ extern/wxWidgets/listctrl.h MAINTAINERCLEANFILES = Makefile.in $(srcdir)/Parser.cpp: Parser.y bison --debug -t -d -v -o $@ $(srcdir)/Parser.y if GENERATE_FLEX_HEADER $(srcdir)/Scanner.cpp: Scanner.l Parser.cpp $(LEX) --header-file=$(srcdir)/Scanner.h -o $@ $(srcdir)/Scanner.l else $(srcdir)/Scanner.cpp: Scanner.l Parser.cpp $(LEX) -o $@ $(srcdir)/Scanner.l; \ echo "// Empty file generated by a flex version unable to create headers" > $(srcdir)/Scanner.h endif $(srcdir)/IPFilterScanner.cpp: IPFilterScanner.l $(LEX) -Pyyip -o $@ $(srcdir)/IPFilterScanner.l; # Resources if NEED_RC SUFFIXES = .rc .rc.$(OBJEXT): $(RC) $(MULERCFLAGS) -I$(top_srcdir) $(RCFLAGS) -O COFF -i "$<" -o "$@" nodist_amuled_SOURCES = amuled-version.rc nodist_amulecmd_SOURCES = amulecmd-version.rc nodist_ed2k_SOURCES = ed2k-version.rc amule_LDADD += amulerc.$(OBJEXT) amule_DEPENDENCIES += amulerc.$(OBJEXT) amulegui_LDADD += amuleguirc.$(OBJEXT) amulegui_DEPENDENCIES += amuleguirc.$(OBJEXT) amulerc.$(OBJEXT): $(srcdir)/../amule.rc amule-version.rc cat $^ | \ ( \ abs_builddir=`pwd` ; \ abs_top_srcdir=`cd $(top_srcdir) ; pwd` ; \ cd $( "$@" amuled-version.rc: $(top_builddir)/version.rc @sed -e 's/VER_FILEDESCRIPTION_STR/"aMule Daemon"/' \ -e 's/VER_INTERNALNAME_STR/"amuled"/' \ -e 's/VER_ORIGINALFILENAME_STR/"amuled$(EXEEXT)"/' "$<" > "$@" amulecmd-version.rc: $(top_builddir)/version.rc @sed -e 's/VER_FILEDESCRIPTION_STR/"aMule Text Client"/' \ -e 's/VER_INTERNALNAME_STR/"amulecmd"/' \ -e 's/VER_ORIGINALFILENAME_STR/"amulecmd$(EXEEXT)"/' "$<" > "$@" amulegui-version.rc: $(top_builddir)/version.rc @sed -e 's/VER_FILEDESCRIPTION_STR/"aMule Remote GUI (Experimental)"/' \ -e 's/VER_INTERNALNAME_STR/"amulegui"/' \ -e 's/VER_ORIGINALFILENAME_STR/"amulegui$(EXEEXT)"/' "$<" > "$@" ed2k-version.rc: $(top_builddir)/version.rc @sed -e 's/VER_FILEDESCRIPTION_STR/"ED2K Links Handler"/' \ -e 's/VER_INTERNALNAME_STR/"ed2k"/' \ -e 's/VER_ORIGINALFILENAME_STR/"ed2k$(EXEEXT)"/' "$<" > "$@" CLEANFILES = *-version.rc endif EXTRA__DIST__SUBDIRS = include kademlia include $(top_srcdir)/automake/dist-hook.am amule_2.3.1+git20151120.0023527bc2.orig/src/MemFile.cpp0000644000175000017500000001074512611472361020323 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "MemFile.h" // Interface declarations CMemFile::CMemFile(unsigned int growthRate) { m_buffer = NULL; m_BufferSize = 0; m_fileSize = 0; m_growthRate = growthRate; m_position = 0; m_delete = true; m_readonly = false; } CMemFile::CMemFile(byte* buffer, size_t bufferSize) { MULE_VALIDATE_PARAMS(buffer, wxT("CMemFile: Attempted to attach invalid buffer.")); m_buffer = buffer; m_BufferSize = bufferSize; m_fileSize = bufferSize; m_growthRate = 0; m_position = 0; m_delete = false; m_readonly = false; } CMemFile::CMemFile(const byte* buffer, size_t bufferSize) { MULE_VALIDATE_PARAMS(buffer, wxT("CMemFile: Attempted to attach invalid buffer.")); m_buffer = const_cast(buffer); m_BufferSize = bufferSize; m_fileSize = bufferSize; m_growthRate = 0; m_position = 0; m_delete = false; m_readonly = true; } CMemFile::~CMemFile() { if (m_delete) { free(m_buffer); } } uint64 CMemFile::GetPosition() const { return m_position; } void CMemFile::SetLength(size_t newLen) { MULE_VALIDATE_STATE(!m_readonly, wxT("CMemFile: Attempted to change length on a read-only buffer.")); if (newLen > m_BufferSize) { enlargeBuffer(newLen); } if (newLen < m_position) { m_position = newLen; } m_fileSize = newLen; } uint64 CMemFile::GetLength() const { return m_fileSize; } void CMemFile::enlargeBuffer(size_t size) { MULE_VALIDATE_PARAMS(size >= m_BufferSize, wxT("CMemFile: Attempted to shrink buffer.")); MULE_VALIDATE_STATE(m_delete, wxT("CMemFile: Attempted to grow an attached buffer.")); MULE_VALIDATE_STATE(!m_readonly, wxT("CMemFile: Attempted to grow a read-only buffer.")); size_t newsize = m_BufferSize; if (m_growthRate) { newsize = ((size + m_growthRate - 1) / m_growthRate) * m_growthRate; } else { // No growth-rate specified. Change to exactly the size specified. newsize = size; } byte *tmp = (byte*)realloc(m_buffer, newsize); if (tmp) { m_buffer = tmp; m_BufferSize = newsize; } MULE_VALIDATE_STATE(tmp, wxT("CMemFile: Failed to (re)allocate buffer")); } sint64 CMemFile::doRead(void* buffer, size_t count) const { MULE_VALIDATE_PARAMS(buffer, wxT("CMemFile: Attempting to read to invalid buffer")); // Handle reads past EOF if (m_position > m_fileSize) { return 0; } else if (m_position + count > m_fileSize) { count = m_fileSize - m_position; } if (count) { memcpy(buffer, m_buffer + m_position, count); m_position += count; } return count; } sint64 CMemFile::doWrite(const void* buffer, size_t count) { MULE_VALIDATE_PARAMS(buffer, wxT("CMemFile: Attempting to write to invalid buffer")); MULE_VALIDATE_STATE(!m_readonly, wxT("CMemFile: Attempted to write to a read-only buffer.")); // Needs more space? if (m_position + count > m_BufferSize) { enlargeBuffer(m_position + count); } MULE_VALIDATE_STATE(m_position + count <= m_BufferSize, wxT("CMemFile: Buffer not resized to needed size.")); memcpy(m_buffer + m_position, buffer, count); m_position += count; if (m_position > m_fileSize) { m_fileSize = m_position; } return count; } sint64 CMemFile::doSeek(sint64 offset) const { MULE_VALIDATE_PARAMS(offset >= 0, wxT("CMemFile: Invalid seek, position, must be positive.")); return m_position = offset; } void CMemFile::ResetData() { wxCHECK_RET(!m_readonly, wxT("Trying to reset read-only buffer")); memset(m_buffer, 0, m_BufferSize); m_fileSize = 0; m_position = 0; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MemFile.h0000644000175000017500000001254012611472361017763 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef MEMFILE_H #define MEMFILE_H #include "SafeFile.h" // Needed for CFileDataIO /** * CMemFile handles virtual files stored in memory. * * This class allows for manipulation of binary data in memory such * as data sent over networks. Using this class rather than writing * the stream onto a struct confers the following advantages: * - Contents may be read dynamically in case of various versions * of the same packet. * - Endian correction is handled transparently. When reading and * writing values, CMemFile converts to and from little-endian, * so that no explicit endian convertions are nescesarry. * - Strings of dynamic length can be read. * * Most of these advantages also hold for writing packets. * * @see CFileDataIO */ class CMemFile : public CFileDataIO { public: /** * Creates a dynamic file object. * * @param growthRate The growth-rate of the buffer. * * The growth-rate specified by how much the buffer-size will * be increased when the memfile runs out of space. Normally * this means that the amount of re-allocations is cut down * at the expence of slightly higher mem-usage. * * If the size of the entire file to be written is known * in advance, one can avoid needless re-allocations by * specifying the exact length as the growth-rate. * * If the growth-rate is set to zero, the memfile will allocate * exactly the needed amount of memory and no more when resizing. */ CMemFile(unsigned int growthRate = 1024); /** * Creates a mem-file attached to an already existing buffer. * * @param buffer A pre-existing buffer. * @param bufferSize The size of the buffer. * * A buffer attached to a memfile is assumed to already contain * data and therefore the file-size is set to match the size of * of the buffer. * * Note that while it is valid to resize the buffer to a length * between zero and 'bufferSize', it is not valid to resize it * to a length greater than the length specified in the * constructor. This also holds for writes that would increase * the length. * * The buffer is _not_ freed by CMemFile upon destruction. * * If the buffer is a const byte*, the memfile is read-only. */ CMemFile(byte* buffer, size_t bufferSize); CMemFile(const byte* buffer, size_t bufferSize); /** Destructor. */ virtual ~CMemFile(); /** @see CFileDataIO::GetPosition */ virtual uint64 GetPosition() const; /** @see CFileDataIO::GetLength */ virtual uint64 GetLength() const; /** * Changes the length of the file, possibly resizing the buffer. * * @param newLen The new length of the file. * * If the current position is greater than the new length, it * will be set to the end of the file. * * Note that changing the lenght of a file with an attached buffer * to a value greater than the actual buffer size is an illegal * operation. */ virtual void SetLength(size_t newLen); /** * Resets the memfile to the start. */ virtual void Reset() const { doSeek(0); } /** * Returns the bytes available to read before EOF */ virtual sint64 GetAvailable() const { return GetLength() - GetPosition(); } /** * Resets the memfile to the starting values. */ virtual void ResetData(); // Sometimes it's useful to get the buffer and do stuff with it. byte* GetRawBuffer() const { return m_buffer; } protected: /** @see CFileDataIO::doRead */ virtual sint64 doRead(void* buffer, size_t count) const; /** @see CFileDataIO::doWrite */ virtual sint64 doWrite(const void* buffer, size_t count); /** @see CFileDataIO::doSeek */ virtual sint64 doSeek(sint64 offset) const; private: //! A CMemFile is neither copyable nor assignable. //@{ CMemFile(const CMemFile&); CMemFile& operator=(const CMemFile&); //@} /** Enlarges the buffer to at least 'size' length. */ void enlargeBuffer(size_t size); //! The growth-rate for the buffer. unsigned int m_growthRate; //! The current position in the file. mutable size_t m_position; //! The actual size of the buffer. size_t m_BufferSize; //! The size of the virtual file, may be less than the buffer-size. size_t m_fileSize; //! If true, the buffer will be freed upon termination. bool m_delete; //! read-only mark. bool m_readonly; //! The actual buffer. byte* m_buffer; }; #endif // MEMFILE_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MuleCollection.cpp0000644000175000017500000001572312611472361021724 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2007-2011 Johannes Krampf ( wuischke@amule.org ) // // Other code by: // // Angel Vidal Veiga aka Kry // * changed class names // // Marcelo Malheiros // * fixed error with FT_FILEHASH // * added inital 5 tag/file support // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "MuleCollection.h" #include #include #include bool CMuleCollection::Open(const std::string &File) { return OpenBinary(File) || OpenText(File); } template intType CMuleCollection::ReadInt(std::ifstream& infile) { intType integer = 0; infile.read(reinterpret_cast(&integer),sizeof(intType)); // TODO: byte-sex return integer; } std::string CMuleCollection::ReadString(std::ifstream& infile, int TagType = 0x02) { if (TagType >= 0x11 && TagType <= 0x20) { std::vector buffer(TagType - 0x10); infile.read(&buffer[0], TagType - 0x10); return buffer.empty() ? std::string() : std::string (buffer.begin(), buffer.end()); } if (TagType == 0x02) { uint16_t TagStringSize = ReadInt(infile); std::vector buffer (TagStringSize); infile.read(&buffer[0], TagStringSize); return buffer.empty() ? std::string() : std::string (buffer.begin(), buffer.end()); } return std::string(); } bool CMuleCollection::OpenBinary(const std::string &File) { std::ifstream infile; infile.open(File.c_str(), std::ifstream::in|std::ifstream::binary); if(!infile.is_open()) { return false; } uint32_t cVersion = ReadInt(infile); if (!infile.good() || ( cVersion != 0x01 && cVersion != 0x02)) { infile.close(); return false; } uint32_t hTagCount = ReadInt(infile); if (!infile.good() || hTagCount > 3) { infile.close(); return false; } for (size_t hTi = 0; hTi < hTagCount;hTi++) { int hTagType = infile.get(); // hTagFormat == 1 -> FT-value is given uint16_t hTagFormat = ReadInt(infile); if (hTagFormat != 0x0001) { infile.close(); return false; } int hTag = infile.get(); if (!infile.good()) { infile.close(); return false; } switch (hTag) { // FT_FILENAME case 0x01: { /*std::string fileName =*/ ReadString(infile, hTagType); break; } // FT_COLLECTIONAUTHOR case 0x31: { /*std::string CollectionAuthor =*/ ReadString(infile, hTagType); break; } // FT_COLLECTIONAUTHORKEY case 0x32: { uint32_t hTagBlobSize = ReadInt(infile); if (!infile.good()) { infile.close(); return false; } std::vector CollectionAuthorKey(hTagBlobSize); infile.read(&CollectionAuthorKey[0], hTagBlobSize); break; } // UNDEFINED TAG default: if (!infile.good()) { infile.close(); return false; } break; } } uint32_t cFileCount = ReadInt(infile); /* softlimit is set to 1024 to avoid problems with big uint32_t values I don't believe anyone would want to use an emulecollection file to store more than 1024 files, but just raise below value in case you know someone who does. */ if(!infile.good() || cFileCount > 1024) { infile.close(); return false; } vCollection.reserve(cFileCount); for (size_t cFi = 0; cFi < cFileCount; ++cFi) { uint32_t fTagCount = ReadInt(infile); if (!infile.good() || fTagCount > 6) { infile.close(); return false; } std::string fileHash = std::string(32, '0'); uint64_t fileSize = 0; std::string fileName; std::string rootHash; for(size_t fTi = 0; fTi < fTagCount; ++fTi) { int fTagType = infile.get(); if (!infile.good()) { infile.close(); return false; } int fTag = infile.get(); if (!infile.good()) { infile.close(); return false; } switch (fTag) { // FT_FILEHASH case 0x28: { std::vector bFileHash(16); infile.read(&bFileHash[0], 16); std::string hex = "0123456789abcdef"; for (int pos = 0; pos < 16; pos++) { fileHash[pos*2] = hex[((bFileHash[pos] >> 4) & 0xF)]; fileHash[(pos*2) + 1] = hex[(bFileHash[pos]) & 0x0F]; } break; } // FT_AICH_FILEHASH case 0x27: { rootHash = ReadString(infile, 0x02); break; } // FT_FILESIZE case 0x02: { switch(fTagType) { case 0x83: { fileSize = ReadInt(infile); break; } case 0x88: { fileSize = ReadInt(infile); break; } case 0x89: { fileSize = infile.get(); break; } case 0x8b: { fileSize = ReadInt(infile); break; } default: // Invalid file structure infile.close(); return false; break; } break; } // FT_FILENAME case 0x01: { fileName = ReadString(infile, fTagType^0x80); break; } // FT_FILECOMMENT case 0xF6: { /* std::string FileComment =*/ ReadString(infile, fTagType^0x80); break; } // FT_FILERATING case 0xF7: { if (fTagType == 0x89) { // TAGTYPE_UINT8 // uint8_t FileRating = infile.get(); } else { infile.close(); return false; } break; } // UNDEFINED TAG default: infile.close(); return false; break; } if( !infile.good() ) { infile.close(); return false; } } if (!fileName.empty() && fileSize > 0) { std::stringstream link; // ed2k://|file|fileName|fileSize|fileHash|/ link << "ed2k://|file|" << fileName << "|" << fileSize << "|" << fileHash; if (!rootHash.empty()) { link << "|h=" << rootHash; } link << "|/"; vCollection.push_back(link.str()); } } infile.close(); return true; } bool CMuleCollection::OpenText(const std::string &File) { std::string line; std::ifstream infile; infile.open(File.c_str(), std::ifstream::in|std::ifstream::binary); if (!infile.is_open()) { return false; } while (getline(infile, line, (char)10 /* LF */)) { size_t last = line.size()-1; if ((1 < last) && ((char)13 /* CR */ == line.at(last))) { line.erase(last); } if (line.size() > 50 && line.substr(0, 13) == "ed2k://|file|" && line.substr(line.size() - 2) == "|/") { vCollection.push_back(line); } } infile.close(); return !vCollection.empty(); } amule_2.3.1+git20151120.0023527bc2.orig/src/MuleCollection.h0000644000175000017500000000347012611472361021365 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2007-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2007-2011 Johannes Krampf ( wuischke@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef __MULECOLLECTION_H__ #define __MULECOLLECTION_H__ #include #include #include "Types.h" class CMuleCollection { private: std::vector vCollection; public: CMuleCollection() {}; ~CMuleCollection() {}; bool Open(const std::string &File); size_t size() const { return vCollection.size(); } std::string& operator[](size_t index) { return vCollection[index]; } const std::string& operator[](size_t index) const { return vCollection[index]; } private: bool OpenBinary(const std::string &File); bool OpenText(const std::string &File); template intType ReadInt(std::ifstream& infile); std::string ReadString(std::ifstream& infile, int TagType); }; #endif // __MULECOLLECTION_H__ amule_2.3.1+git20151120.0023527bc2.orig/src/MuleColour.cpp0000644000175000017500000000537312611472361021074 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "MuleColour.h" #include #include #include #define USE_MULE_PEN_CACHE 1 #define USE_MULE_BRUSH_CACHE 1 std::map wxPenCache; std::map wxBrushCache; const wxPen& CMuleColour::GetPen(int width, int style) const { #if USE_MULE_PEN_CACHE wxPen* result = NULL; if (m_cachedpen && (m_cachedpen->GetWidth() == width) && (m_cachedpen->GetStyle() == style)) { result = m_cachedpen; } else { const uint32_t hash = ((width & 0xF) << 28) | ((style & 0xF) << 24) | (GetULong() & 0xFFFFFF); std::map::iterator it = wxPenCache.find(hash); if (it != wxPenCache.end()) { result = it->second; m_cachedpen = result; } else { result = wxThePenList->FindOrCreatePen(wxColour(m_red, m_green, m_blue), width, style); m_cachedpen = result; wxPenCache.insert(std::pair(hash, result)); } } return *result; #else return *wxThePenList->FindOrCreatePen(wxColour(m_red, m_green, m_blue), width, style); #endif } const wxBrush& CMuleColour::GetBrush(int style) const { #if USE_MULE_BRUSH_CACHE wxBrush* result = NULL; if (m_cachedbrush && (m_cachedbrush->GetStyle() == style)) { result = m_cachedbrush; } else { const uint32_t hash = ((style & 0xF) << 24) | (GetULong() & 0xFFFFFF); std::map::iterator it = wxBrushCache.find(hash); if (it != wxBrushCache.end()) { result = it->second; m_cachedbrush = result; } else { result = wxTheBrushList->FindOrCreateBrush(wxColour(m_red, m_green, m_blue), style); m_cachedbrush = result; wxBrushCache.insert(std::pair(hash, result)); } } return *result; #else return *wxTheBrushList->FindOrCreateBrush(wxColour(m_red, m_green, m_blue), style); #endif } amule_2.3.1+git20151120.0023527bc2.orig/src/MuleColour.h0000644000175000017500000000712112611472361020532 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef MULECOLOR_H #define MULECOLOR_H #include #include #include "Types.h" class wxPen; class wxBrush; class CMuleColour { public: enum ColourComponent { COLOUR_R = 1, COLOUR_G = 2, COLOUR_B = 4 }; CMuleColour() { Init(); Set(0,0,0); } CMuleColour(const wxColour& colour) { Init(); Set(colour.Red(), colour.Green(), colour.Blue()); } CMuleColour(byte r, byte g, byte b) { Init(); Set(r,g,b); } CMuleColour(unsigned long rgb) { Init(); Set((rgb & 0xFF), (rgb >> 8) & 0xFF, (rgb >> 16) & 0xFF); } CMuleColour(wxSystemColour colour) { Init(); const wxColour& wxcolour = wxSystemSettings::GetColour(colour); Set(wxcolour.Red(), wxcolour.Green(), wxcolour.Blue()); } void Init() { m_cachedpen = NULL; m_cachedbrush = NULL; } ~CMuleColour() { } void Set(byte red, byte green, byte blue) { m_red = red; m_green = green; m_blue = blue; } inline byte Red() const { return m_red; } inline byte Green() const { return m_green; } inline byte Blue() const { return m_blue; } const CMuleColour& Blend(byte percentage, ColourComponent flags = (ColourComponent)(COLOUR_R | COLOUR_G | COLOUR_B) ) { unsigned int red = (unsigned int)(Red() * ((flags & COLOUR_R) ? ((float)percentage/(float)100) : (float)1)); unsigned int green = (unsigned int)(Green() * ((flags & COLOUR_G) ? ((float)percentage/(float)100) : (float)1)); unsigned int blue = (unsigned int)(Blue() * ((flags & COLOUR_B) ? ((float)percentage/(float)100) : (float)1)); Set((red < 255) ? red : 255, (green < 255) ? green : 255, (blue < 255) ? blue : 255); return *this; } const CMuleColour& BlendWith(const CMuleColour& colour, double covered) { unsigned int red = (unsigned int)(Red() + (colour.Red() * covered) + 0.5); unsigned int green = (unsigned int)(Green() + (colour.Green() * covered) + 0.5); unsigned int blue = (unsigned int)(Blue() + (colour.Blue() * covered) + 0.5); Set((red < 255) ? red : 255, (green < 255) ? green : 255, (blue < 255) ? blue : 255); return *this; } unsigned long GetULong() const { return (Blue() << 16) | (Green() << 8) | Red(); } bool IsBlack() const { return !Red() && !Blue() && !Green(); } bool IsSameAs(const CMuleColour& colour) const { return (Red() == colour.Red()) && (Green() == colour.Green()) && (Blue() == colour.Blue()); } operator wxColour() const { return wxColor(m_red, m_green, m_blue); } const wxPen& GetPen(int width = 1, int style = wxSOLID) const; const wxBrush& GetBrush(int style = wxSOLID) const; private: byte m_red; byte m_green; byte m_blue; mutable wxPen* m_cachedpen; mutable wxBrush* m_cachedbrush; }; #endif amule_2.3.1+git20151120.0023527bc2.orig/src/MuleGifCtrl.cpp0000644000175000017500000000734412611472361021163 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include #include #include "MuleGifCtrl.h" #include "Types.h" BEGIN_EVENT_TABLE(MuleGifCtrl, wxControl) EVT_TIMER(GIFTIMERID, MuleGifCtrl::OnTimer) EVT_PAINT(MuleGifCtrl::OnPaint) EVT_ERASE_BACKGROUND(MuleGifCtrl::OnErase) END_EVENT_TABLE() class MuleGIFDecoder : public wxGIFDecoder { public: MuleGIFDecoder() { m_nframe = 0; } ~MuleGIFDecoder() { } void GoFirstFrame() { m_nframe = 0; } void GoNextFrame() { (m_nframe < GetFrameCount() - 1) ? m_nframe++ : m_nframe = 0; } void GoLastFrame() { m_nframe = GetFrameCount() - 1; } void ConvertToImage(wxImage* image) { wxGIFDecoder::ConvertToImage(m_nframe, image); } long GetDelay() { return wxGIFDecoder::GetDelay(m_nframe); } private: uint32_t m_nframe; }; MuleGifCtrl::MuleGifCtrl( wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) : wxControl(parent, id, pos, size, style, validator, name), m_decoder(NULL), m_timer(this, GIFTIMERID) { } MuleGifCtrl::~MuleGifCtrl() { m_timer.Stop(); if (m_decoder) { delete m_decoder; m_decoder = NULL; } } bool MuleGifCtrl::LoadData(const char* data, int size) { if (m_decoder) { m_timer.Stop(); delete m_decoder; m_decoder = NULL; } wxMemoryInputStream stream(data, size); m_decoder = new MuleGIFDecoder(); if ( m_decoder->LoadGIF(stream) != wxGIF_OK ) { delete m_decoder; m_decoder = NULL; return false; } m_decoder->GoFirstFrame(); wxImage frame; m_decoder->ConvertToImage( &frame ); m_frame = wxBitmap(frame); return true; } void MuleGifCtrl::Start() { if (m_decoder && m_decoder->IsAnimation()) { m_timer.Stop(); m_decoder->GoLastFrame(); #if wxCHECK_VERSION(2, 9, 0) wxTimerEvent evt(m_timer); #else wxTimerEvent evt; #endif OnTimer(evt); } } void MuleGifCtrl::Stop() { m_timer.Stop(); } wxSize MuleGifCtrl::GetBestSize() { return m_decoder->GetAnimationSize(); } void MuleGifCtrl::OnTimer(wxTimerEvent& WXUNUSED(event)) { if (m_decoder) { if (m_decoder->IsAnimation()) { m_decoder->GoNextFrame(); } wxImage frame; m_decoder->ConvertToImage(&frame); m_frame = wxBitmap(frame); Refresh(); if (m_decoder->IsAnimation()) { m_timer.Start(m_decoder->GetDelay(), true); } } } void MuleGifCtrl::OnPaint(wxPaintEvent& WXUNUSED(event)) { wxBufferedPaintDC dc(this); wxSize clientsize = GetClientSize(); wxSize gifsize = m_decoder->GetAnimationSize(); int x = (clientsize.GetWidth()-gifsize.GetWidth())/2; int y = (clientsize.GetHeight()-gifsize.GetHeight())/2; dc.SetBackground(*(wxTheBrushList->FindOrCreateBrush(GetBackgroundColour(), wxSOLID))); dc.Clear(); dc.DrawBitmap(m_frame, x, y, true); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MuleGifCtrl.h0000644000175000017500000000770112611472361020625 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef MULEGIFCTRL_H #define MULEGIFCTRL_H #include #include const int GIFTIMERID = 271283; class MuleGIFDecoder; class wxBitmap; /** * MuleGifCtrl is a simple widget for displaying a gif animation. * It is based on the animation classes by Julian Smart and * Guillermo Rodriguez Garcia, but is specialized for the reduced * requirements of the aMule project. It provides flicker-free * redrawing using wxBufferedPaintDC. * * To reduce complexity, several things have been hardcoded, though * they can easily be changed: * - The animation will continue to loop until Stop() is called. * - The gif image is assumed to be transparent. * - Start will start the animation from the first frame and wont * continue a stopped animation. */ class MuleGifCtrl : public wxControl { private: //! A pointer to the current gif-animation. MuleGIFDecoder *m_decoder; //! Timer used for the delay between each frame. wxTimer m_timer; //! Current frame. wxBitmap m_frame; public: /** * Contructor. See wxWindow class documentation for more information. */ MuleGifCtrl( wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxControlNameStr); /** * Destructor */ virtual ~MuleGifCtrl(); /** * This loads the gif image from a char-array with a specific size. * * @param data The array containing the image. * @param size The size of the array. * @return Returns true if the data was loaded, false otherwise. * * This sets the current animation and displays the first frame. If another * animation was loaded, it will be unloaded and the animation stopped. * * To convert a image to a format readable by this function, you can * use the utility hexdump. Look at inetdownload.h for how to format * the output. */ bool LoadData(const char* data, int size); /** * This function starts playing the animation provided that a animation is * set and it's not a static image. */ void Start(); /** * Stops the animation. */ void Stop(); /** * Returns the prefered size of the widget. * * @return Prefered size, which is the size of the animation. */ virtual wxSize GetBestSize(); private: /** * Timer function that selects the next frame in an animation. */ void OnTimer( wxTimerEvent& event ); /** * Function for drawing the animation. * * This functions draws the current frame, which is changed in OnTimer(), * using a wxBufferedPaintDC. By doing so and also catching the * ERASE_BACKGROUND events we avoid flickering on redraws. */ void OnPaint( wxPaintEvent& event ); /** * This function is used to avoid flicker when redrawing. */ void OnErase( wxEraseEvent& WXUNUSED(event) ) {} //! Enables the event functions OnErase(), OnTimer() and OnPaint(). DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MuleListCtrl.cpp0000644000175000017500000005331112611472361021364 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include // Needed for wxMenu #include // Needed for wxConfig #include // Needed for wxStringTokenizer #include // Needed for wxImageList #include // Needed for MULE_VALIDATE_ #include // Needed for StrToLong #include #include "MuleListCtrl.h" // Interface declarations #include "GetTickCount.h" // Needed for GetTickCount() #include "OtherFunctions.h" // For arrow-pixmaps #include "pixmaps/sort_dn.xpm" #include "pixmaps/sort_up.xpm" #include "pixmaps/sort_dnx2.xpm" #include "pixmaps/sort_upx2.xpm" // Global constants #ifdef __WXGTK__ const int COL_SIZE_MIN = 10; #elif defined(__WINDOWS__ ) || defined(__WXMAC__) || defined(__WXCOCOA__) const int COL_SIZE_MIN = 0; #else #error Need to define COL_SIZE_MIN for your OS #endif BEGIN_EVENT_TABLE(CMuleListCtrl, MuleExtern::wxGenericListCtrl) EVT_LIST_COL_CLICK( -1, CMuleListCtrl::OnColumnLClick) EVT_LIST_COL_RIGHT_CLICK( -1, CMuleListCtrl::OnColumnRClick) EVT_LIST_ITEM_SELECTED(-1, CMuleListCtrl::OnItemSelected) EVT_LIST_ITEM_DESELECTED(-1, CMuleListCtrl::OnItemSelected) EVT_LIST_DELETE_ITEM(-1, CMuleListCtrl::OnItemDeleted) EVT_LIST_DELETE_ALL_ITEMS(-1, CMuleListCtrl::OnAllItemsDeleted) EVT_CHAR( CMuleListCtrl::OnChar) EVT_MENU_RANGE(MP_LISTCOL_1, MP_LISTCOL_15, CMuleListCtrl::OnMenuSelected) EVT_MOUSEWHEEL(CMuleListCtrl::OnMouseWheel) END_EVENT_TABLE() //! Shared list of arrow-pixmaps static wxImageList imgList(16, 16, true, 0); CMuleListCtrl::CMuleListCtrl(wxWindow *parent, wxWindowID winid, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) : MuleExtern::wxGenericListCtrl(parent, winid, pos, size, style, validator, name) { m_sort_func = NULL; m_tts_time = 0; m_tts_item = -1; m_isSorting = false; if (imgList.GetImageCount() == 0) { imgList.Add(wxBitmap(sort_dn_xpm)); imgList.Add(wxBitmap(sort_up_xpm)); imgList.Add(wxBitmap(sort_dnx2_xpm)); imgList.Add(wxBitmap(sort_upx2_xpm)); } // Default sort-order is to sort by the first column (asc). m_sort_orders.push_back(CColPair(0, 0)); SetImageList(&imgList, wxIMAGE_LIST_SMALL); } CMuleListCtrl::~CMuleListCtrl() { if (!m_name.IsEmpty()) { SaveSettings(); } } long CMuleListCtrl::InsertColumn(long col, const wxString& heading, int format, int width, const wxString& name) { if (!name.IsEmpty()) { #ifdef __DEBUG__ // Check for valid names wxASSERT_MSG(name.Find(wxT(':')) == wxNOT_FOUND, wxT("Column name \"") + name + wxT("\" contains invalid characters!")); wxASSERT_MSG(name.Find(wxT(',')) == wxNOT_FOUND, wxT("Column name \"") + name + wxT("\" contains invalid characters!")); // Check for uniqueness of names. for (ColNameList::const_iterator it = m_column_names.begin(); it != m_column_names.end(); ++it) { if (name == it->name) { wxFAIL_MSG(wxT("Column name \"") + name + wxT("\" is not unique!")); } } #endif // Insert name at position col. ColNameList::iterator it = m_column_names.begin(); while (it != m_column_names.end() && it->index < col) { ++it; } m_column_names.insert(it, ColNameEntry(col, width, name)); while (it != m_column_names.end()) { ++it; ++(it->index); } } return MuleExtern::wxGenericListCtrl::InsertColumn(col, heading, format, width); } void CMuleListCtrl::SaveSettings() { wxCHECK_RET(!m_name.IsEmpty(), wxT("Cannot save settings for unnamed list")); wxConfigBase* cfg = wxConfigBase::Get(); // Save sorting, column and order wxString sortOrder; for (CSortingList::iterator it = m_sort_orders.begin(); it != m_sort_orders.end();) { wxString columnName = GetColumnName(it->first); if (!columnName.IsEmpty()) { sortOrder += columnName; sortOrder += wxT(":"); sortOrder += it->second & SORT_DES ? wxT("1") : wxT("0"); sortOrder += wxT(":"); sortOrder += it->second & SORT_ALT ? wxT("1") : wxT("0"); if (++it != m_sort_orders.end()) { sortOrder += wxT(","); } } else { ++it; } } cfg->Write(wxT("/eMule/TableOrdering") + m_name, sortOrder); // Save column widths. ATM this is also used to signify hidden columns. wxString buffer; for (int i = 0; i < GetColumnCount(); ++i) { wxString columnName = GetColumnName(i); if (!columnName.IsEmpty()) { if (!buffer.IsEmpty()) { buffer << wxT(","); } int currentwidth = GetColumnWidth(i); int savedsize = (m_column_sizes.size() && (i < (int) m_column_sizes.size())) ? m_column_sizes[i] : 0; buffer << columnName << wxT(":") << ((currentwidth > 0) ? currentwidth : (-1 * savedsize)); } } cfg->Write(wxT("/eMule/TableWidths") + m_name, buffer); } void CMuleListCtrl::ParseOldConfigEntries(const wxString& sortOrders, const wxString& columnWidths) { // Set sort order (including sort column) wxStringTokenizer tokens(sortOrders, wxT(",")); while (tokens.HasMoreTokens()) { wxString token = tokens.GetNextToken(); long column = 0; unsigned long order = 0; if (token.BeforeFirst(wxT(' ')).Strip(wxString::both).ToLong(&column)) { if (token.AfterFirst(wxT(' ')).Strip(wxString::both).ToULong(&order)) { column = GetNewColumnIndex(column); // Sanity checking, to avoid asserting if column count changes. if (column >= 0 && column < GetColumnCount()) { // Sanity checking, to avoid asserting if data-format changes. if ((order & ~SORTING_MASK) == 0) { // SetSorting will take care of duplicate entries SetSorting(column, order); } } } } } // Set column widths int counter = 0; wxStringTokenizer tokenizer(columnWidths, wxT(",")); while (tokenizer.HasMoreTokens()) { long idx = GetNewColumnIndex(counter++); long width = StrToLong(tokenizer.GetNextToken()); if (idx >= 0) { SetColumnWidth(idx, width); } } } void CMuleListCtrl::LoadSettings() { wxCHECK_RET(!m_name.IsEmpty(), wxT("Cannot load settings for unnamed list")); wxConfigBase* cfg = wxConfigBase::Get(); // Load sort order (including sort-column) m_sort_orders.clear(); wxString sortOrders = cfg->Read(wxT("/eMule/TableOrdering") + m_name, wxEmptyString); wxString columnWidths = cfg->Read(wxT("/eMule/TableWidths") + m_name, wxEmptyString); // Prevent sorting from occuring when calling SetSorting MuleListCtrlCompare sortFunc = m_sort_func; m_sort_func = NULL; if (columnWidths.Find(wxT(':')) == wxNOT_FOUND) { // Old-style config entries... ParseOldConfigEntries(sortOrders, columnWidths); } else { // Sort orders wxStringTokenizer tokens(sortOrders, wxT(",")); // Sort orders are stored in order primary, secondary, ... // We want to apply them with SetSorting(), so we have to apply them in reverse order, // so that the primary order is applied last and wins. // Read them with tokenizer and store them in a list in reverse order. CStringList tokenList; while (tokens.HasMoreTokens()) { tokenList.push_front(tokens.GetNextToken()); } for (CStringList::iterator it = tokenList.begin(); it != tokenList.end(); ++it) { wxString token = *it; wxString name = token.BeforeFirst(wxT(':')); long order = StrToLong(token.AfterFirst(wxT(':')).BeforeLast(wxT(':'))); long alt = StrToLong(token.AfterLast(wxT(':'))); int col = GetColumnIndex(name); if (col >= 0) { SetSorting(col, (order ? SORT_DES : 0) | (alt ? SORT_ALT : 0)); } } // Column widths wxStringTokenizer tkz(columnWidths, wxT(",")); while (tkz.HasMoreTokens()) { wxString token = tkz.GetNextToken(); wxString name = token.BeforeFirst(wxT(':')); long width = StrToLong(token.AfterFirst(wxT(':'))); int col = GetColumnIndex(name); if (col >= 0) { if (col >= (int) m_column_sizes.size()) { m_column_sizes.resize(col + 1, 0); } m_column_sizes[col] = abs(width); SetColumnWidth(col, (width > 0) ? width : 0); } } } // Must have at least one sort-order specified if (m_sort_orders.empty()) { m_sort_orders.push_back(CColPair(0, 0)); } // Re-enable sorting and resort the contents (if any). m_sort_func = sortFunc; SortList(); } const wxString& CMuleListCtrl::GetColumnName(int index) const { for (ColNameList::const_iterator it = m_column_names.begin(); it != m_column_names.end(); ++it) { if (it->index == index) { return it->name; } } return EmptyString; } int CMuleListCtrl::GetColumnDefaultWidth(int index) const { for (ColNameList::const_iterator it = m_column_names.begin(); it != m_column_names.end(); ++it) { if (it->index == index) { return it->defaultWidth; } } return wxLIST_AUTOSIZE; } int CMuleListCtrl::GetColumnIndex(const wxString& name) const { for (ColNameList::const_iterator it = m_column_names.begin(); it != m_column_names.end(); ++it) { if (it->name == name) { return it->index; } } return -1; } int CMuleListCtrl::GetNewColumnIndex(int oldindex) const { wxStringTokenizer oldcolumns(GetOldColumnOrder(), wxT(","), wxTOKEN_RET_EMPTY_ALL); while (oldcolumns.HasMoreTokens()) { wxString name = oldcolumns.GetNextToken(); if (oldindex == 0) { return GetColumnIndex(name); } --oldindex; } return -1; } long CMuleListCtrl::GetInsertPos(wxUIntPtr data) { // Find the best place to position the item through a binary search int Min = 0; int Max = GetItemCount(); // Only do this if there are any items and a sorter function. // Otherwise insert at end. if (Max && m_sort_func) { // This search will find the place to position the new item // so it matches current sorting. // The result will be the position the new item will have // after insertion, which is the format expected by the InsertItem function. // If the item equals another item it will be inserted after it. do { int cur_pos = ( Max - Min ) / 2 + Min; int cmp = CompareItems(data, GetItemData(cur_pos)); // Value is less than the one at the current pos if ( cmp < 0 ) { Max = cur_pos; } else { Min = cur_pos + 1; } } while ((Min != Max)); } return Max; } int CMuleListCtrl::CompareItems(wxUIntPtr item1, wxUIntPtr item2) { CSortingList::const_iterator it = m_sort_orders.begin(); for (; it != m_sort_orders.end(); ++it) { int result = m_sort_func(item1, item2, it->first | it->second); if (result != 0) { return result; } } // Ensure that different items are never considered equal. return CmpAny(item1, item2); } int CMuleListCtrl::SortProc(wxUIntPtr item1, wxUIntPtr item2, long data) { MuleSortData* sortdata = reinterpret_cast(data); const CSortingList& orders = sortdata->m_sort_orders; CSortingList::const_iterator it = orders.begin(); for (; it != orders.end(); ++it) { int result = sortdata->m_sort_func(item1, item2, it->first | it->second); if (result != 0) { return result; } } // Ensure that different items are never considered equal. return CmpAny(item1, item2); } void CMuleListCtrl::SortList() { if (!IsSorting() && (m_sort_func && GetColumnCount())) { m_isSorting = true; MuleSortData sortdata(m_sort_orders, m_sort_func); // In many cases control already has correct order, and sorting causes nasty flickering. // Make one pass through it to check if sorting is necessary at all. int nrItems = GetItemCount(); bool clean = true; long lastItemdata = 0; if (nrItems > 1) { lastItemdata = GetItemData(0); } for (int i = 1; i < nrItems; i++) { long nextItemdata = GetItemData(i); if (SortProc(lastItemdata, nextItemdata, (long int)&sortdata) > 0) { // ok - we need to sort clean = false; break; } lastItemdata = nextItemdata; } if (clean) { // no need to sort m_isSorting = false; return; } // Positions are likely to be invalid after sorting. ResetTTS(); // Store the current selected items ItemDataList selectedItems = GetSelectedItems(); // Store the focused item long pos = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_FOCUSED ); wxUIntPtr focused = (pos == -1) ? 0 : GetItemData(pos); SortItems(SortProc, (long int)&sortdata); // Re-select the selected items. for (unsigned i = 0; i < selectedItems.size(); ++i) { long it_pos = FindItem(-1, selectedItems[i]); if (it_pos != -1) { SetItemState(it_pos, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); } } // Set focus on item if any was focused if (focused) { long it_pos = FindItem(-1, focused); if (it_pos != -1) { SetItemState(it_pos, wxLIST_STATE_FOCUSED, wxLIST_STATE_FOCUSED); } } m_isSorting = false; } } CMuleListCtrl::ItemDataList CMuleListCtrl::GetSelectedItems() const { // Create the initial vector with as many items as are selected ItemDataList list( GetSelectedItemCount() ); // Current item being located unsigned int current = 0; long pos = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while ( pos != -1 ) { wxASSERT( current < list.size() ); list[ current++ ] = GetItemData( pos ); pos = GetNextItem( pos, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } return list; } void CMuleListCtrl::OnColumnRClick(wxListEvent& evt) { wxMenu menu; wxListItem item; for ( int i = 0; i < GetColumnCount() && i < 15; ++i) { GetColumn(i, item); menu.AppendCheckItem(i + MP_LISTCOL_1, item.GetText() ); menu.Check( i + MP_LISTCOL_1, GetColumnWidth(i) > COL_SIZE_MIN ); } PopupMenu(&menu, evt.GetPoint()); } void CMuleListCtrl::OnMenuSelected( wxCommandEvent& evt ) { unsigned int col = evt.GetId() - MP_LISTCOL_1; if (col >= m_column_sizes.size()) { m_column_sizes.resize(col + 1, 0); } if (GetColumnWidth(col) > COL_SIZE_MIN) { m_column_sizes[col] = GetColumnWidth(col); SetColumnWidth(col, 0); } else { int oldsize = m_column_sizes[col]; SetColumnWidth(col, (oldsize > 0) ? oldsize : GetColumnDefaultWidth(col)); } } void CMuleListCtrl::OnColumnLClick(wxListEvent& evt) { // Stop if no sorter-function has been defined if (!m_sort_func) { return; } else if (evt.GetColumn() == -1) { // This happens if a user clicks past the last column header. return; } unsigned sort_order = 0; if (m_sort_orders.front().first == (unsigned)evt.GetColumn()) { // Same column as before, flip the sort-order sort_order = m_sort_orders.front().second; if (sort_order & SORT_DES) { if (AltSortAllowed(evt.GetColumn())) { sort_order = (~sort_order) & SORT_ALT; } else { sort_order = 0; } } else { sort_order = SORT_DES | (sort_order & SORT_ALT); } m_sort_orders.pop_front(); } else { // Check if the column has already been set CSortingList::iterator it = m_sort_orders.begin(); for (; it != m_sort_orders.end(); ++it) { if ((unsigned)evt.GetColumn() == it->first) { sort_order = it->second; break; } } } SetSorting(evt.GetColumn(), sort_order); } void CMuleListCtrl::ClearSelection() { if (GetSelectedItemCount()) { long index = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); while (index != -1) { SetItemState(index, 0, wxLIST_STATE_SELECTED); index = GetNextItem(index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); } } } bool CMuleListCtrl::AltSortAllowed(unsigned WXUNUSED(column)) const { return false; } void CMuleListCtrl::SetSorting(unsigned column, unsigned order) { MULE_VALIDATE_PARAMS(column < (unsigned)GetColumnCount(), wxT("Invalid column to sort by.")); MULE_VALIDATE_PARAMS(!(order & ~SORTING_MASK), wxT("Sorting order contains invalid data.")); if (!m_sort_orders.empty()) { SetColumnImage(m_sort_orders.front().first, -1); CSortingList::iterator it = m_sort_orders.begin(); for (; it != m_sort_orders.end(); ++it) { if (it->first == column) { m_sort_orders.erase(it); break; } } } m_sort_orders.push_front(CColPair(column, order)); if (order & SORT_DES) { SetColumnImage(column, (order & SORT_ALT) ? 2 : 0); } else { SetColumnImage(column, (order & SORT_ALT) ? 3 : 1); } SortList(); } bool CMuleListCtrl::IsItemSorted(long item) { wxCHECK_MSG(m_sort_func, true, wxT("No sort function specified!")); wxCHECK_MSG((item >= 0) && (item < GetItemCount()), true, wxT("Invalid item")); bool sorted = true; wxUIntPtr data = GetItemData(item); // Check that the item before the current item is smaller (or equal) if (item > 0) { sorted &= (CompareItems(GetItemData(item - 1), data) <= 0); } // Check that the item after the current item is greater (or equal) if (sorted && (item < GetItemCount() - 1)) { sorted &= (CompareItems(GetItemData(item + 1), data) >= 0); } return sorted; } void CMuleListCtrl::OnMouseWheel(wxMouseEvent &event) { // This enables scrolling with the mouse wheel event.Skip(); } void CMuleListCtrl::SetColumnImage(unsigned col, int image) { wxListItem item; item.SetMask(wxLIST_MASK_IMAGE); item.SetImage(image); SetColumn(col, item); } long CMuleListCtrl::CheckSelection(wxMouseEvent& event) { int flags = 0; wxListEvent evt; evt.m_itemIndex = HitTest(event.GetPosition(), flags); return CheckSelection(evt); } long CMuleListCtrl::CheckSelection(wxListEvent& event) { long item = event.GetIndex(); // Check if clicked item is selected. If not, unselect all and select it. if ((item != -1) && !GetItemState(item, wxLIST_STATE_SELECTED)) { ClearSelection(); SetItemState(item, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); } return item; } wxString CMuleListCtrl::GetTTSText(unsigned item) const { MULE_VALIDATE_PARAMS(item < (unsigned)GetItemCount(), wxT("Invalid row.")); MULE_VALIDATE_STATE((GetWindowStyle() & wxLC_OWNERDRAW) == 0, wxT("GetTTSText must be overwritten for owner-drawn lists.")); return GetItemText(item); } void CMuleListCtrl::OnChar(wxKeyEvent& evt) { int key = evt.GetKeyCode(); if (key == 0) { // We prefer GetKeyCode() to GetUnicodeKey(), in order to work // around a bug in the GetUnicodeKey(), that causes values to // be returned untranslated. This means for instance, that if // shift and '1' is pressed, the result is '1' rather than '!' // (as it should be on my keyboard). This has been reported: // http://sourceforge.net/tracker/index.php?func=detail&aid=1864810&group_id=9863&atid=109863 key = evt.GetUnicodeKey(); } else if (key >= WXK_START) { // wxKeycodes are ignored, as they signify events such as the 'home' // button. Unicoded chars are not checked as there is an overlap valid // chars and the wx keycodes. evt.Skip(); return; } // We wish to avoid handling shortcuts, with the exception of 'select-all'. if (evt.AltDown() || evt.ControlDown() || evt.MetaDown()) { if (evt.CmdDown() && (evt.GetKeyCode() == 0x01)) { // Ctrl+a (Command+a on Mac) was pressed, select all items for (int i = 0; i < GetItemCount(); ++i) { SetItemState(i, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); } } evt.Skip(); return; } else if (m_tts_time + 1500u < GetTickCount()) { m_tts_text.Clear(); } m_tts_time = GetTickCount(); m_tts_text.Append(wxTolower(key)); // May happen if the subclass does not forward deletion events. // Or rather when single-char-repeated (see below) wraps around, so don't assert. if (m_tts_item >= GetItemCount()) { m_tts_item = -1; } unsigned next = (m_tts_item == -1) ? 0 : m_tts_item; for (unsigned i = 0, count = GetItemCount(); i < count; ++i) { wxString text = GetTTSText((next + i) % count).MakeLower(); if (text.StartsWith(m_tts_text)) { ClearSelection(); m_tts_item = (next + i) % count; SetItemState(m_tts_item, wxLIST_STATE_FOCUSED | wxLIST_STATE_SELECTED, wxLIST_STATE_FOCUSED | wxLIST_STATE_SELECTED); EnsureVisible(m_tts_item); return; } } if (m_tts_item != -1) { // Crop the string so that it matches the old item (avoid typos). wxString text = GetTTSText(m_tts_item).MakeLower(); // If the last key didn't result in a hit, then we skip the event. if (!text.StartsWith(m_tts_text)) { if ((m_tts_text.Length() == 2) && (m_tts_text[0] == m_tts_text[1])) { // Special case, single-char, repeated. This allows toggeling // between items starting with a specific letter. m_tts_text.Clear(); // Increment, so the next will be selected (or wrap around). m_tts_item++; OnChar(evt); } else { m_tts_text.RemoveLast(); evt.Skip(true); } } } else { evt.Skip(true); } } void CMuleListCtrl::OnItemSelected(wxListEvent& evt) { if (IsSorting()) { // Selection/Deselection that happened while sorting. evt.Veto(); } else { // We reset the current TTS session if the user manually changes the selection if (m_tts_item != evt.GetIndex()) { ResetTTS(); // The item is changed so that the next TTS starts from the selected item. m_tts_item = evt.GetIndex(); } evt.Skip(); } } void CMuleListCtrl::OnItemDeleted(wxListEvent& evt) { if (evt.GetIndex() <= m_tts_item) { m_tts_item--; } evt.Skip(); } void CMuleListCtrl::OnAllItemsDeleted(wxListEvent& evt) { ResetTTS(); evt.Skip(); } void CMuleListCtrl::ResetTTS() { m_tts_item = -1; m_tts_time = 0; } wxString CMuleListCtrl::GetOldColumnOrder() const { return wxEmptyString; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MuleListCtrl.h0000644000175000017500000003436512611472361021041 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef MULELISTCTRL_H #define MULELISTCTRL_H #ifdef _WIN32 #include #endif #include // Do_not_auto_remove (Mac, Win32, and just good practice) #include "extern/wxWidgets/listctrl.h" #include #include /** * Enhanced wxListCtrl provided custom-drawing among other things. * * This class provides these features which the original wxListCtrl lacks: * - Automatic sort arrows upon clicks on the column headers * - Custom drawing of items. * - Hiding of columns through auto-generated popup-menu. * - Helper function for inserting items pre-sorted. * - Loading and saving of column properties. * - Selection of items by typing an initial part of the text (TTS). */ class CMuleListCtrl : public MuleExtern::wxGenericListCtrl { public: /** * The various ways in which a column can be sorted. * * If SORT_DES is not set, sorting is taken to be * ascending. If SORT_ALT is not set, sorting is * taken to be normal. */ enum MLOrder { //! If set, sorting is to be in descending order. SORT_DES = 0x1000, //! If sorting should use alternate method. //! Is specified in with or without DEC. SORT_ALT = 0x2000 }; //! Mask which covers the column part of the sort-data. static const unsigned COLUMN_MASK = 0xfff; //! Mask which covers the sorting part of the sort-data. static const unsigned SORTING_MASK = 0x3000; /** * Constructor. * * @see wxGenericListCtrl::wxGenericListCtrl for documentation of parameters. */ CMuleListCtrl( wxWindow *parent, wxWindowID winid = -1, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, const wxString &name = wxT("mulelistctrl") ); /** * Destructor. * * If a name for the table has been specified with SetTableName, then * column settings will be saved automatically. */ virtual ~CMuleListCtrl(); /** * Saves column settings. * * Currently saves the width of all columns, hidden columns, the column * to sort by and in which direction to sort. */ virtual void SaveSettings(); /** * Loads column settings. * * Currently loads the width of all columns, hidden columns, the column * to sort by and in which direction to sort. This function also ensures * that the items are sorted after the settings have been read. */ virtual void LoadSettings(); /** * This function tries to locate the best place to insert an item. * * @param The userdata of the new item. * * This function does a binary type search to locate the best place to * insert the new item with the specified userdata. It then returns the * item after this position. To do this, the sorter-function must be set * through the SetSortFunc function, otherwise it will just return the * position after the last item. */ long GetInsertPos( wxUIntPtr data ); /** * Sorts the list. * * Before you can use this function, you will need to specify a sorter * function using SetSortFunc. wxListCtrl needs such a function to * perform the sort. */ virtual void SortList(); //! The type of the list of item specific data typedef std::vector ItemDataList; /** * Returns a list the user-data of all selected items. * * @return A list of data associated with the selected items. * * This function will return the user-data for each selected item in a * vector, which can then be manipulated with regards to changes made * in the current order of the listctrl items. */ ItemDataList GetSelectedItems() const; /** * Sets the sorter function. * * @param func * * See the documentation on wxListCtrl::SortItems for more information * about the expected function type. */ void SetSortFunc(MuleListCtrlCompare func) { m_sort_func = func; } /** * Deselects all selected items, but does not change focus. */ void ClearSelection(); /** * Insert a new column. * * @param[in] col Column will be inserted at this position. * @param[in] heading Heading text for the column. * @param[in] format Format (alignment) of the column. * @param[in] width The column width. * @param[in] name Internal name of the column. * * We override this method to allow a name to be specified for each * column. The name is used for saving/loading column settings * independently of their index. It is necessary to set a unique name * for each column, to let column settings be saved/loaded. If you * don't set a name for a column, settings for that column won't be * saved. * * Requirements about column names: * - they must not contain the ':' (colon) and ',' (comma) characters, * - they should be at least one character long. * * @note Changing the internal name of one column results in width of * that column being reset to default, and if sorting was done by that * column, sorting being forgotten. If you change the name of a column, * don't forget to update the list GetOldColumnOrder() returns, if * necessary. * * For more information refer to the wxWidgets documentation of * wxListCtrl::InsertColumn() */ long InsertColumn( long col, const wxString& heading, int format = wxLIST_FORMAT_LEFT, int width = -1, const wxString& name = wxEmptyString ); /** * Clears all items and all columns. * * Intercepted to clear column name list. * * For more information see the wxWidgets documentation of * wxListCtrl::ClearAll() */ void ClearAll() { m_column_names.clear(); MuleExtern::wxGenericListCtrl::ClearAll(); } /** * Delete one column from the list. * * Not implemented yet, intercepted here just as a sanity check. */ bool DeleteColumn(int WXUNUSED(col)) { wxFAIL; return false; } /** * Indicates if we're in the process of sorting. */ bool IsSorting() const { return m_isSorting; } protected: /** * Must be overwritten to enable alternate sorting. * * @param The column being sorted. * * Subclasses of CMuleListCtrl can allow alternative sorting * of columns. This is done by overriding this function and * returning true for the columns where alternative sorting * is desired. */ virtual bool AltSortAllowed(unsigned column) const; /** * Returns the string used when selecting rows via Type-To-Select. * * @param item The index of the item being examined. * * By default, this function simply returns the text in the first * column for the given item. However, when owner-drawing is * enabled, this function _must_ be overriden. */ virtual wxString GetTTSText(unsigned item) const; /** * Sets the internally used table-name. * * @param name The new name or an empty string to disable. * * You need to call this function with a unique name before you can * make use of the LoadSettings/SaveSettings functions. CMuleListCtrl * uses the name specified in this command to create unique keynames. */ void SetTableName(const wxString& name) { m_name = name; } /** * Return old column order. * * @return The pre-2.2.2 column order. * * This function should be overridden in descendant classes to return a * comma-separated list of the old column order, when column data was * saved/loaded by index. The default implementation returns an empty * string, meaning that old settings (if any) should be discarded. * * @note When you add or remove columns from the list control, DO NOT * change this list. This list may only be updated if you changed a * column name that is already in this list, to reflect the name * change. List order also must be preserved. */ virtual wxString GetOldColumnOrder() const; /** * Returns the column which is currently used to sort the list. */ unsigned GetSortColumn() const { return m_sort_orders.front().first; } /** * Returns the current sorting order, a combination of the DES and ALT flags. */ unsigned GetSortOrder() const { return m_sort_orders.front().second; } /** * Set the sort column * * @param column The column with which the list should be sorted. * @param order The order in which to sort the column. * * Note that attempting to sort a column in an unsupported order * is an illegal operation. */ virtual void SetSorting(unsigned column, unsigned order); /** * Returns true if the item is sorted compared to its neighbours. */ bool IsItemSorted(long item); /** * Check and fix selection state. * * @param event The event which triggered the selection. * @return The index of the item selected or -1 if none. * * This function checks if the clicked item is selected. * If not, then the item is selected and all other items * are deselected. */ //@{ long CheckSelection(wxListEvent& event); long CheckSelection(wxMouseEvent& event); //@} /** * Event handler for right-clicks on the column headers. */ void OnColumnRClick(wxListEvent& evt); /** * Event handler for left-clicks on the column headers. */ void OnColumnLClick(wxListEvent& evt); /** * Event handler for the hide/show menu items. */ void OnMenuSelected(wxCommandEvent& evt); /** * Event handler for the mouse wheel. */ void OnMouseWheel(wxMouseEvent &event); /** * Event handler for key-presses, needed by TTS. */ void OnChar(wxKeyEvent& evt); /** * Event handler for item selection/deletion, needed by TTS. */ void OnItemSelected(wxListEvent& evt); void OnItemDeleted(wxListEvent& evt); void OnAllItemsDeleted(wxListEvent& evt); private: /** * Resets the current TTS session. */ void ResetTTS(); /** * Sets the image of a specific column. * * @param col The column to change. * @param order The sorting order to represent. Zero unsets the image. */ void SetColumnImage(unsigned col, int image); //! The name of the table. Used to load/save settings. wxString m_name; //! The sorter function needed by wxListCtrl. MuleListCtrlCompare m_sort_func; //! Contains the current search string. wxString m_tts_text; //! Timestamp for the last TTS event. unsigned m_tts_time; //! The index of the last item selected via TTS. int m_tts_item; /** * Wrapper around the user-provided sorter function. * * This function ensures that items are sorted in the order * specified by clicking on column-headers, and also enforces * that different entries are never considered equal. This is * required for lists that make use of child-items, since * otherwise, parents may not end up properly located in * relation to child-items. */ static int wxCALLBACK SortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData); /** Compares two items in the list, using the current sort sequence. */ int CompareItems(wxUIntPtr item1, wxUIntPtr item2); //! This pair contains a column number and its sorting order. typedef std::pair CColPair; typedef std::list CSortingList; class MuleSortData { public: MuleSortData(CSortingList sort_orders, MuleListCtrlCompare sort_func) : m_sort_orders(sort_orders), m_sort_func(sort_func) { }; CSortingList m_sort_orders; MuleListCtrlCompare m_sort_func; }; //! This list contains in order the columns sequence to sort by. CSortingList m_sort_orders; /** * Get the column name by index. * * @param[in] column Index of the column whose name we're looking for. * * @return The column name or an empty string if index is invalid * (out of range), or the column name hasn't been set. */ const wxString& GetColumnName(int column) const; /** * Get the column default width by index. * * @param[in] column Index of the column whose name we're looking for. * * @return The column default width or wx default width if index is invalid * (out of range), or the column name hasn't been set. */ int GetColumnDefaultWidth(int column) const; /** * Get column index by name. * * @param[in] name Internal name of the colunm whose index is needed. * * @return The column index, or -1 in case the name was invalid. */ int GetColumnIndex(const wxString& name) const; /** * Find out the new index of the column by the old index. * * @param[in] oldindex Old column index which we want to turn into a * new index. * * @return The new index of the column, or -1 if an error occured. */ int GetNewColumnIndex(int oldindex) const; /** * Parses old config entries. * * @param[in] sortOrders Old sort orders line. * @param[in] columnWidths Old column widths line. */ void ParseOldConfigEntries(const wxString& sortOrders, const wxString& columnWidths); /// This class contains a column index, its default width and its name. class ColNameEntry { public: int index; int defaultWidth; wxString name; ColNameEntry(int _index, int _defaultWidth, const wxString& _name) : index(_index), defaultWidth(_defaultWidth), name(_name) {} }; /// This list contains the columns' names. typedef std::list ColNameList; /// Container for column names, sorted by column index. ColNameList m_column_names; /// This vector contains a cache of the columns' sizes. typedef std::vector ColSizeVector; /// Container for column sizes cache. ColSizeVector m_column_sizes; // True while sorting. bool m_isSorting; DECLARE_EVENT_TABLE() }; #endif // MULELISTCTRL_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MuleNotebook.cpp0000644000175000017500000001445312611472361021410 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include #include "MuleNotebook.h" // Interface declarations #include DEFINE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_MULENOTEBOOK_PAGE_CLOSING) DEFINE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_MULENOTEBOOK_ALL_PAGES_CLOSED) BEGIN_EVENT_TABLE(CMuleNotebook, wxNotebook) EVT_RIGHT_DOWN(CMuleNotebook::OnRMButton) EVT_MENU(MP_CLOSE_TAB, CMuleNotebook::OnPopupClose) EVT_MENU(MP_CLOSE_ALL_TABS, CMuleNotebook::OnPopupCloseAll) EVT_MENU(MP_CLOSE_OTHER_TABS, CMuleNotebook::OnPopupCloseOthers) // Madcat - tab closing engine EVT_LEFT_UP(CMuleNotebook::OnMouseLeftRelease) EVT_MOTION(CMuleNotebook::OnMouseMotion) END_EVENT_TABLE() CMuleNotebook::CMuleNotebook( wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) : wxNotebook(parent, id, pos, size, style, name) { m_popup_enable = true; m_popup_widget = NULL; } CMuleNotebook::~CMuleNotebook() { // Ensure that all notifications gets sent DeleteAllPages(); } bool CMuleNotebook::DeletePage(int nPage) { wxCHECK_MSG((nPage >= 0) && (nPage < (int)GetPageCount()), false, wxT("Trying to delete invalid page-index in CMuleNotebook::DeletePage")); // Send out close event wxNotebookEvent evt( wxEVT_COMMAND_MULENOTEBOOK_PAGE_CLOSING, GetId(), nPage ); evt.SetEventObject(this); ProcessEvent( evt ); // and finally remove the actual page bool result = wxNotebook::DeletePage( nPage ); // Ensure a valid selection if ( GetPageCount() && (int)GetSelection() >= (int)GetPageCount() ) { SetSelection( GetPageCount() - 1 ); } // Send a page change event to work around wx problem when newly selected page // is identical with deleted page (wx sends a page change event during deletion, // but the control is still the one to be deleted at that moment). if (GetPageCount()) { // Select the tab that took the place of the one we just deleted. size_t page = nPage; // Except if we deleted the last one - then select the one that is last now. if (page == GetPageCount()) { page--; } wxNotebookEvent event( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, GetId(), page ); event.SetEventObject(this); ProcessEvent( event ); } else { // Send an event when no pages are left open wxNotebookEvent event( wxEVT_COMMAND_MULENOTEBOOK_ALL_PAGES_CLOSED, GetId() ); event.SetEventObject(this); ProcessEvent( event ); } return result; } bool CMuleNotebook::DeleteAllPages() { Freeze(); bool result = true; while ( GetPageCount() ) { result &= DeletePage( 0 ); } Thaw(); return result; } void CMuleNotebook::EnablePopup( bool enable ) { m_popup_enable = enable; } void CMuleNotebook::SetPopupHandler( wxWindow* widget ) { m_popup_widget = widget; } //#warning wxMac does not support selection by right-clicking on tabs! void CMuleNotebook::OnRMButton(wxMouseEvent& event) { // Cases where we shouldn't be showing a popup-menu. if ( !GetPageCount() || !m_popup_enable ) { event.Skip(); return; } // For some reason, gtk1 does a rather poor job when using the HitTest wxPoint eventPoint = event.GetPosition(); int tab = HitTest(eventPoint); if (tab != wxNOT_FOUND) { SetSelection(tab); } else { event.Skip(); return; } // Should we send the event to a specific widget? if ( m_popup_widget ) { wxMouseEvent evt = event; // Map the coordinates onto the parent wxPoint point = evt.GetPosition(); point = ClientToScreen( point ); point = m_popup_widget->ScreenToClient( point ); evt.m_x = point.x; evt.m_y = point.y; m_popup_widget->GetEventHandler()->AddPendingEvent( evt ); } else { wxMenu menu(_("Close")); menu.Append(MP_CLOSE_TAB, wxString(_("Close tab"))); menu.Append(MP_CLOSE_ALL_TABS, wxString(_("Close all tabs"))); menu.Append(MP_CLOSE_OTHER_TABS, wxString(_("Close other tabs"))); PopupMenu( &menu, event.GetPosition() ); } } void CMuleNotebook::OnPopupClose(wxCommandEvent& WXUNUSED(evt)) { DeletePage( GetSelection() ); } void CMuleNotebook::OnPopupCloseAll(wxCommandEvent& WXUNUSED(evt)) { DeleteAllPages(); } void CMuleNotebook::OnPopupCloseOthers(wxCommandEvent& WXUNUSED(evt)) { wxNotebookPage* current = GetPage( GetSelection() ); for ( int i = GetPageCount() - 1; i >= 0; i-- ) { if ( current != GetPage( i ) ) DeletePage( i ); } } void CMuleNotebook::OnMouseLeftRelease(wxMouseEvent &event) { if (GetImageList() == NULL) { // This Mulenotebook has no images on tabs, so nothing to do. event.Skip(); return; } long xpos, ypos; event.GetPosition(&xpos, &ypos); long flags = 0; int tab = HitTest(wxPoint(xpos,ypos),&flags); if ((tab != -1) && (flags == wxNB_HITTEST_ONICON)) { // User did click on a 'x' DeletePage(tab); } else { // Is not a 'x'. Send this event up. event.Skip(); } } void CMuleNotebook::OnMouseMotion(wxMouseEvent &event) { if (GetImageList() == NULL) { // This Mulenotebook has no images on tabs, so nothing to do. event.Skip(); return; } long flags = 0; int tab = HitTest(wxPoint(event.m_x,event.m_y),&flags); // Clear the highlight for all tabs. for (int i=0;i<(int)GetPageCount();++i) { SetPageImage(i, 0); } if ((tab != -1) && (flags == wxNB_HITTEST_ONICON)) { // Mouse is over a 'x' SetPageImage(tab, 1); } else { // Is not a 'x'. Send this event up. event.Skip(); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MuleNotebook.h0000644000175000017500000001066712611472361021060 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef MULENOTEBOOK_H #define MULENOTEBOOK_H #include DECLARE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_MULENOTEBOOK_PAGE_CLOSING, -1) DECLARE_LOCAL_EVENT_TYPE(wxEVT_COMMAND_MULENOTEBOOK_ALL_PAGES_CLOSED, -1) #define EVT_MULENOTEBOOK_PAGE_CLOSING(id, fn) \ DECLARE_EVENT_TABLE_ENTRY( \ wxEVT_COMMAND_MULENOTEBOOK_PAGE_CLOSING, \ id, \ -1, \ (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ NULL \ ), #define EVT_MULENOTEBOOK_ALL_PAGES_CLOSED(id, fn) \ DECLARE_EVENT_TABLE_ENTRY( \ wxEVT_COMMAND_MULENOTEBOOK_ALL_PAGES_CLOSED, \ id, \ -1, \ (wxObjectEventFunction)(wxEventFunction)(wxNotebookEventFunction) &fn, \ NULL \ ), class wxWindow; /** * This is an NoteBook control which adds additional features above what is * provided by the wxNoteBook widget. Currently it includes: * - Use of images on the tabs for closing the pages. * - A popup-menu for closing one or more pages. * - Events triggered when pages are closed. */ class CMuleNotebook : public wxNotebook { public: /** * Constructor. * * @see wxNotebook::wxNotebook */ CMuleNotebook( wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxT("notebook") ); /** * Destructor. */ virtual ~CMuleNotebook(); /** * Deletes the page and triggers an event. * * @param nPage The page to be removed. */ virtual bool DeletePage(int nPage); /** * Deletes and triggers and event for every page. */ virtual bool DeleteAllPages(); /** * Enables or disables the displaying of a popup-menu. * * @param enabled The new setting. */ void EnablePopup( bool enable ); /** * Sets an external widget to handle the popup-event. * * @param widget The widget which would recieve the event or NULL to disable. * * Setting the handler to a non-NULL pointer means that upon right-clicks, a * right click event will be sent to that widget, so that it can create a * popup-menu. The coordinates will be fixed to fit onto the specified widget, * so no mapping is needed. */ void SetPopupHandler( wxWindow* widget ); protected: /** * Event handler for left mouse button release (for closing pages) */ void OnMouseLeftRelease(wxMouseEvent &event); /** * Event handler for mouse motion (for highlighting the 'x') */ void OnMouseMotion(wxMouseEvent &event); /** * Event-handler for right-clicks that takes care of displaying the popup-menu. */ void OnRMButton(wxMouseEvent& event); /** * Event-handler fo the Close item on the popup-menu. */ void OnPopupClose(wxCommandEvent& evt); /** * Event-handler fo the CloseAll item on the popup-menu. */ void OnPopupCloseAll(wxCommandEvent& evt); /** * Event-handler fo the CloseOthers item on the popup-menu. */ void OnPopupCloseOthers(wxCommandEvent& evt); //! Keeps track of the popup-menu being enabled or not. bool m_popup_enable; //! The pointer to the widget which would recieve right-click events or NULL. wxWindow* m_popup_widget; DECLARE_EVENT_TABLE() }; #ifdef __WINDOWS__ #define MULE_NOTEBOOK_TAB_HEIGHT 26 #else #define MULE_NOTEBOOK_TAB_HEIGHT 40 #endif #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MuleTextCtrl.cpp0000644000175000017500000001012112611472361021365 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "MuleTextCtrl.h" #include #include #include #include /** * These are the IDs used to identify the different menu-items. * * Please note that I make use of predefined wxIDs for the first two, but not * for Paste. This is because wxMenu poses some restrictions on what can be * done with items using those IDs, and by default, Paste is enabled even if * there's nothing to paste! */ enum CMTC_Events { //! Cut text, uses provided ID CMTCE_Cut = wxID_CUT, //! Copy text, uses privided ID CMTCE_Copy = wxID_COPY, //! Paste text, uses custom ID CMTCE_Paste = wxID_HIGHEST + 666, // Random satanic ID //! Clear text, uses custom ID CMTCE_Clear, //! Select All text, uses custom ID CMTCE_SelAll }; BEGIN_EVENT_TABLE(CMuleTextCtrl, wxTextCtrl) #ifndef __WXGTK__ EVT_RIGHT_DOWN (CMuleTextCtrl::OnRightDown) EVT_MENU (CMTCE_Paste, CMuleTextCtrl::OnPaste) EVT_MENU (CMTCE_Clear, CMuleTextCtrl::OnClear) EVT_MENU (CMTCE_SelAll, CMuleTextCtrl::OnSelAll) #endif END_EVENT_TABLE() CMuleTextCtrl::CMuleTextCtrl(wxWindow* parent, wxWindowID id, const wxString& value, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name) : wxTextCtrl( parent, id, value, pos, size, style, validator, name) { } void CMuleTextCtrl::OnRightDown( wxMouseEvent& evt ) { // If this control doesn't have focus, then set it if ( FindFocus() != this ) SetFocus(); wxMenu popup_menu; popup_menu.Append( CMTCE_Cut, _("Cut") ); popup_menu.Append( CMTCE_Copy, _("Copy") ); popup_menu.Append( CMTCE_Paste, _("Paste") ); popup_menu.Append( CMTCE_Clear, _("Clear") ); popup_menu.AppendSeparator(); popup_menu.Append( CMTCE_SelAll, _("Select All") ); // wxMenu will automatically enable/disable the Cut and Copy items, // however, were are a little more pricky about the Paste item than they // are, so we enable/disable it on our own, depending on whenever or not // there's actually something to paste bool canpaste = false; if ( CanPaste() ) { if ( wxTheClipboard->Open() ) { if ( wxTheClipboard->IsSupported( wxDF_TEXT ) ) { wxTextDataObject data; wxTheClipboard->GetData( data ); canpaste = (data.GetTextLength() > 0); } wxTheClipboard->Close(); } } popup_menu.Enable( CMTCE_Paste, canpaste ); popup_menu.Enable( CMTCE_Clear, IsEditable() && !GetValue().IsEmpty() ); PopupMenu( &popup_menu, evt.GetX(), evt.GetY() ); } void CMuleTextCtrl::OnPaste( wxCommandEvent& WXUNUSED(evt) ) { Paste(); } void CMuleTextCtrl::OnSelAll( wxCommandEvent& WXUNUSED(evt) ) { // Move the pointer to the front SetInsertionPoint( 0 ); // Selects everything SetSelection( -1, -1 ); } void CMuleTextCtrl::OnClear( wxCommandEvent& WXUNUSED(evt) ) { Clear(); } #ifdef __WXMAC__ //#warning Remove this when wxMAC has been fixed. // https://sourceforge.net/tracker/?func=detail&atid=109863&aid=1189859&group_id=9863 void CMuleTextCtrl::Clear() { if (IsMultiLine()) { wxFont font = GetFont(); wxTextCtrl::Clear(); SetFont(font); } else { wxTextCtrl::Clear(); } } #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MuleTextCtrl.h0000644000175000017500000000575212611472361021050 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef MULETEXTCTRL_H #define MULETEXTCTRL_H #include class wxCommandEvent; class wxMouseEvent; /** * This class is a slightly improved wxTextCtrl that supports the traditional * popup-menu usually provided by text-ctrls. It provides the following options: * - Cut * - Copy * - Paste * - Clear * - Select All * * Other than that, it acts exactly like an ordinary wxTextCtrl. */ class CMuleTextCtrl : public wxTextCtrl { public: /** * Constructor is identical to the wxTextCtrl one. */ CMuleTextCtrl(wxWindow* parent, wxWindowID id, const wxString& value = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxTextCtrlNameStr); /** * Destructor, which currently does nothing. */ virtual ~CMuleTextCtrl() {}; #ifdef __WXMAC__ /** * Hack to fix fonts getting reset when Clear() is called. */ virtual void Clear(); #endif protected: /** * This function takes care of creating the popup-menu. * * Please note that by using the RIGHT_DOWN event, I'm disabling the second * type of selection that the wxTextCtrl supports. However, I frankly only * noticed that second selection type while implementing this, so I doubth * that anyone will be missing it ... */ void OnRightDown( wxMouseEvent& evt ); /** * This function takes care of pasting text. * * Pleaes note that it is only needed because wxMenu disallows enabling and * disabling of items that use the predefined wxID_PASTE id. This is the * only one of the already provided commands we need to override, since the * others already work just fine. */ void OnPaste( wxCommandEvent& evt ); /** * This functions takes care of selecting all text. */ void OnSelAll( wxCommandEvent& evt ); /** * This functions takes care of clearing the text. */ void OnClear( wxCommandEvent& evt ); DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MuleThread.h0000644000175000017500000000375312611472361020505 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2008-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef MULETHREAD_H #define MULETHREAD_H #include class CMuleThread : public wxThread { public: //! @see wxThread::wxThread CMuleThread(wxThreadKind kind = wxTHREAD_DETACHED) : wxThread(kind), m_stop(false) {} /** * Stops the thread. * * For detached threads, this function is equivalent * to Delete, but is also useable for joinable threads, * where Delete should not be used, due to crashes * experienced in that case. In the case of joinable * threads, Wait is called rather than Delete. * * @see wxThread::Delete */ void Stop() { m_stop = true; if (IsDetached()) { Delete(); } else { Wait(); } } //! Returns true if Delete or Stop has been called. virtual bool TestDestroy() { // m_stop is checked last, because some functionality is // dependant upon wxThread::TestDestroy() being called, // for instance Pause(). return wxThread::TestDestroy() || m_stop; } private: //! Is set if Stop is called. bool m_stop; }; #endif amule_2.3.1+git20151120.0023527bc2.orig/src/MuleTrayIcon.cpp0000644000175000017500000003415312611472361021357 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 Patrizio Bassi ( hetfield@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include "MuleTrayIcon.h" #include #include #include "pixmaps/mule_TrayIcon_big.ico.xpm" #include "pixmaps/mule_Tr_yellow_big.ico.xpm" #include "pixmaps/mule_Tr_grey_big.ico.xpm" #include #include "amule.h" // Needed for theApp #include "amuleDlg.h" // Needed for IsShown #include "Preferences.h" // Needed for thePrefs #include "ServerConnect.h" // Needed for CServerConnect #include "Server.h" // Needed for CServer #include "StatisticsDlg.h" // Needed for CStatisticsDlg::getColors() #include "Statistics.h" // Needed for theStats #include // Needed for CFormat #include "Logger.h" #include // Needed to access menu item constants /****************************************************/ /******************* Event Table ********************/ /****************************************************/ BEGIN_EVENT_TABLE(CMuleTrayIcon, wxTaskBarIcon) EVT_TASKBAR_LEFT_DCLICK(CMuleTrayIcon::SwitchShow) EVT_MENU( TRAY_MENU_EXIT, CMuleTrayIcon::Close) EVT_MENU( TRAY_MENU_CONNECT, CMuleTrayIcon::ServerConnection) EVT_MENU( TRAY_MENU_DISCONNECT, CMuleTrayIcon::ServerConnection) EVT_MENU( TRAY_MENU_HIDE, CMuleTrayIcon::ShowHide) EVT_MENU( TRAY_MENU_SHOW, CMuleTrayIcon::ShowHide) EVT_MENU( UPLOAD_ITEM1, CMuleTrayIcon::SetUploadSpeed) EVT_MENU( UPLOAD_ITEM2, CMuleTrayIcon::SetUploadSpeed) EVT_MENU( UPLOAD_ITEM3, CMuleTrayIcon::SetUploadSpeed) EVT_MENU( UPLOAD_ITEM4, CMuleTrayIcon::SetUploadSpeed) EVT_MENU( UPLOAD_ITEM5, CMuleTrayIcon::SetUploadSpeed) EVT_MENU( UPLOAD_ITEM6, CMuleTrayIcon::SetUploadSpeed) EVT_MENU( DOWNLOAD_ITEM1, CMuleTrayIcon::SetDownloadSpeed) EVT_MENU( DOWNLOAD_ITEM2, CMuleTrayIcon::SetDownloadSpeed) EVT_MENU( DOWNLOAD_ITEM3, CMuleTrayIcon::SetDownloadSpeed) EVT_MENU( DOWNLOAD_ITEM4, CMuleTrayIcon::SetDownloadSpeed) EVT_MENU( DOWNLOAD_ITEM5, CMuleTrayIcon::SetDownloadSpeed) EVT_MENU( DOWNLOAD_ITEM6, CMuleTrayIcon::SetDownloadSpeed) END_EVENT_TABLE() /****************************************************/ /************ Constructor / Destructor **************/ /****************************************************/ long GetSpeedFromString(wxString label){ long temp; label.Replace(_("kB/s"),wxT(""),TRUE); label.Trim(FALSE); label.Trim(TRUE); label.ToLong(&temp); return temp; } void CMuleTrayIcon::SetUploadSpeed(wxCommandEvent& event){ wxObject* obj=event.GetEventObject(); if (obj!=NULL) { wxMenu *menu = dynamic_cast(obj); if (menu) { wxMenuItem* item=menu->FindItem(event.GetId()); if (item!=NULL) { long temp; if (item->GetItemLabelText()==(_("Unlimited"))) { temp=UNLIMITED; } else { temp=GetSpeedFromString(item->GetItemLabelText()); } thePrefs::SetMaxUpload(temp); #ifdef CLIENT_GUI // Send preferences to core. theApp->glob_prefs->SendToRemote(); #endif } } } } void CMuleTrayIcon::SetDownloadSpeed(wxCommandEvent& event){ wxObject* obj=event.GetEventObject(); if (obj!=NULL) { wxMenu *menu = dynamic_cast(obj); if (menu) { wxMenuItem* item=menu->FindItem(event.GetId()); if (item!=NULL) { long temp; if (item->GetItemLabelText()==(_("Unlimited"))) { temp=UNLIMITED; } else { temp=GetSpeedFromString(item->GetItemLabelText()); } thePrefs::SetMaxDownload(temp); #ifdef CLIENT_GUI // Send preferences to core. theApp->glob_prefs->SendToRemote(); #endif } } } } void CMuleTrayIcon::ServerConnection(wxCommandEvent& WXUNUSED(event)) { wxCommandEvent evt; theApp->amuledlg->OnBnConnect(evt); } void CMuleTrayIcon::ShowHide(wxCommandEvent& WXUNUSED(event)) { theApp->amuledlg->DoIconize(theApp->amuledlg->IsShown()); } void CMuleTrayIcon::Close(wxCommandEvent& WXUNUSED(event)) { if (theApp->amuledlg->IsEnabled()) { theApp->amuledlg->Close(); } } CMuleTrayIcon::CMuleTrayIcon() { Old_Icon = -1; Old_SpeedSize = 0xFFFF; // must be > any possible one. // Create the background icons (speed improvement) HighId_Icon_size = wxIcon(mule_TrayIcon_big_ico_xpm).GetHeight(); LowId_Icon_size = wxIcon(mule_Tr_yellow_big_ico_xpm).GetHeight(); Disconnected_Icon_size = wxIcon(mule_Tr_grey_big_ico_xpm).GetHeight(); } CMuleTrayIcon::~CMuleTrayIcon() { } /****************************************************/ /***************** Public Functions *****************/ /****************************************************/ void CMuleTrayIcon::SetTrayIcon(int Icon, uint32 percent) { int Bar_ySize = 0; switch (Icon) { case TRAY_ICON_HIGHID: // Most likely case, test first Bar_ySize = HighId_Icon_size; break; case TRAY_ICON_LOWID: Bar_ySize = LowId_Icon_size; break; case TRAY_ICON_DISCONNECTED: Bar_ySize = Disconnected_Icon_size; break; default: wxFAIL; } // Lookup this values for speed improvement: don't draw if not needed int NewSize = (Bar_ySize * percent) / 100; if ((Old_Icon != Icon) || (Old_SpeedSize != NewSize)) { if ((Old_SpeedSize > NewSize) || (Old_Icon != Icon)) { // We have to rebuild the icon, because bar is lower now. switch (Icon) { case TRAY_ICON_HIGHID: // Most likely case, test first CurrentIcon = wxIcon(mule_TrayIcon_big_ico_xpm); break; case TRAY_ICON_LOWID: CurrentIcon = wxIcon(mule_Tr_yellow_big_ico_xpm); break; case TRAY_ICON_DISCONNECTED: CurrentIcon = wxIcon(mule_Tr_grey_big_ico_xpm); break; default: wxFAIL; } } Old_Icon = Icon; Old_SpeedSize = NewSize; // Do whatever to the icon before drawing it (percent) wxBitmap TempBMP; TempBMP.CopyFromIcon(CurrentIcon); TempBMP.SetMask(NULL); IconWithSpeed.SelectObject(TempBMP); // Speed bar is: centered, taking 80% of the icon heigh, and // right-justified taking a 10% of the icon width. // X int Bar_xSize = 4; int Bar_xPos = CurrentIcon.GetWidth() - 5; IconWithSpeed.SetBrush(*(wxTheBrushList->FindOrCreateBrush(CStatisticsDlg::getColors(11)))); IconWithSpeed.SetPen(*wxTRANSPARENT_PEN); IconWithSpeed.DrawRectangle(Bar_xPos + 1, Bar_ySize - NewSize, Bar_xSize -2 , NewSize); // Unselect the icon. IconWithSpeed.SelectObject(wxNullBitmap); // Do transparency // Set a new mask with transparency set to red. wxMask* new_mask = new wxMask(TempBMP, wxColour(0xFF, 0x00, 0x00)); TempBMP.SetMask(new_mask); CurrentIcon.CopyFromBitmap(TempBMP); UpdateTray(); } } void CMuleTrayIcon::SetTrayToolTip(const wxString& Tip) { CurrentTip = Tip; UpdateTray(); } /****************************************************/ /**************** Private Functions *****************/ /****************************************************/ void CMuleTrayIcon::UpdateTray() { // Icon update and Tip update #ifndef __WXCOCOA__ if (IsOk()) #endif { SetIcon(CurrentIcon, CurrentTip); } } wxMenu* CMuleTrayIcon::CreatePopupMenu() { // Creates dinamically the menu to show the user. wxMenu *traymenu = new wxMenu(); traymenu->SetTitle(_("aMule Tray Menu")); // Build the Top string name wxString label = MOD_VERSION_LONG; traymenu->Append(TRAY_MENU_INFO, label); traymenu->AppendSeparator(); label = wxString(_("Speed limits:")) + wxT(" "); // Check for upload limits unsigned int max_upload = thePrefs::GetMaxUpload(); if ( max_upload == UNLIMITED ) { label += _("UL: None"); } else { label += CFormat(_("UL: %u")) % max_upload; } label += wxT(", "); // Check for download limits unsigned int max_download = thePrefs::GetMaxDownload(); if ( max_download == UNLIMITED ) { label += _("DL: None"); } else { label += CFormat(_("DL: %u")) % max_download; } traymenu->Append(TRAY_MENU_INFO, label); label = CFormat(_("Download speed: %.1f")) % (theStats::GetDownloadRate() / 1024.0); traymenu->Append(TRAY_MENU_INFO, label); label = CFormat(_("Upload speed: %.1f")) % (theStats::GetUploadRate() / 1024.0); traymenu->Append(TRAY_MENU_INFO, label); traymenu->AppendSeparator(); // Client Info wxMenu* ClientInfoMenu = new wxMenu(); ClientInfoMenu->SetTitle(_("Client Information")); // User nick-name { wxString temp = CFormat(_("Nickname: %s")) % ( thePrefs::GetUserNick().IsEmpty() ? wxString(_("No Nickname Selected!")) : thePrefs::GetUserNick() ); ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp); } // Client ID { wxString temp = _("ClientID: "); if (theApp->IsConnectedED2K()) { temp += CFormat(wxT("%u")) % theApp->GetED2KID(); } else { temp += _("Not connected"); } ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp); } // Current Server and Server IP { wxString temp_name = _("ServerName: "); wxString temp_ip = _("ServerIP: "); if ( theApp->serverconnect->GetCurrentServer() ) { temp_name += theApp->serverconnect->GetCurrentServer()->GetListName(); temp_ip += theApp->serverconnect->GetCurrentServer()->GetFullIP(); } else { temp_name += _("Not connected"); temp_ip += _("Not Connected"); } ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp_name); ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp_ip); } // IP Address { wxString temp = CFormat(_("IP: %s")) % ( (theApp->GetPublicIP()) ? Uint32toStringIP(theApp->GetPublicIP()) : wxString(_("Unknown")) ); ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp); } // TCP PORT { wxString temp; if (thePrefs::GetPort()) { temp = CFormat(_("TCP port: %d")) % thePrefs::GetPort(); } else { temp=_("TCP port: Not ready"); } ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp); } // UDP PORT { wxString temp; if (thePrefs::GetEffectiveUDPPort()) { temp = CFormat(_("UDP port: %d")) % thePrefs::GetEffectiveUDPPort(); } else { temp=_("UDP port: Not ready"); } ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp); } // Online Signature { wxString temp; if (thePrefs::IsOnlineSignatureEnabled()) { temp=_("Online Signature: Enabled"); } else { temp=_("Online Signature: Disabled"); } ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp); } // Uptime { wxString temp = CFormat(_("Uptime: %s")) % CastSecondsToHM(theStats::GetUptimeSeconds()); ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp); } // Number of shared files { wxString temp = CFormat(_("Shared files: %d")) % theStats::GetSharedFileCount(); ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp); } // Number of queued clients { wxString temp = CFormat(_("Queued clients: %d")) % theStats::GetWaitingUserCount(); ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp); } // Total Downloaded { wxString temp = CastItoXBytes(theStats::GetTotalReceivedBytes()); temp = CFormat(_("Total DL: %s")) % temp; ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp); } // Total Uploaded { wxString temp = CastItoXBytes(theStats::GetTotalSentBytes()); temp = CFormat(_("Total UL: %s")) % temp; ClientInfoMenu->Append(TRAY_MENU_CLIENTINFO_ITEM,temp); } traymenu->Append(TRAY_MENU_CLIENTINFO,ClientInfoMenu->GetTitle(),ClientInfoMenu); // Separator traymenu->AppendSeparator(); // Upload Speed sub-menu wxMenu* UploadSpeedMenu = new wxMenu(); UploadSpeedMenu->SetTitle(_("Upload limit")); // Download Speed sub-menu wxMenu* DownloadSpeedMenu = new wxMenu(); DownloadSpeedMenu->SetTitle(_("Download limit")); // Upload Speed sub-menu { UploadSpeedMenu->Append(UPLOAD_ITEM1, _("Unlimited")); uint32 max_ul_speed = thePrefs::GetMaxGraphUploadRate(); if ( max_ul_speed == UNLIMITED ) { max_ul_speed = 100; } else if ( max_ul_speed < 10 ) { max_ul_speed = 10; } for ( int i = 0; i < 5; i++ ) { unsigned int tempspeed = (unsigned int)((double)max_ul_speed / 5) * (5 - i); wxString temp = CFormat(wxT("%u %s")) % tempspeed % _("kB/s"); UploadSpeedMenu->Append((int)UPLOAD_ITEM1+i+1,temp); } } traymenu->Append(0,UploadSpeedMenu->GetTitle(),UploadSpeedMenu); // Download Speed sub-menu { DownloadSpeedMenu->Append(DOWNLOAD_ITEM1, _("Unlimited")); uint32 max_dl_speed = thePrefs::GetMaxGraphDownloadRate(); if ( max_dl_speed == UNLIMITED ) { max_dl_speed = 100; } else if ( max_dl_speed < 10 ) { max_dl_speed = 10; } for ( int i = 0; i < 5; i++ ) { unsigned int tempspeed = (unsigned int)((double)max_dl_speed / 5) * (5 - i); wxString temp = CFormat(wxT("%d %s")) % tempspeed % _("kB/s"); DownloadSpeedMenu->Append((int)DOWNLOAD_ITEM1+i+1,temp); } } traymenu->Append(0,DownloadSpeedMenu->GetTitle(),DownloadSpeedMenu); // Separator traymenu->AppendSeparator(); if (theApp->IsConnected()) { //Disconnection Speed item traymenu->Append(TRAY_MENU_DISCONNECT, _("Disconnect")); } else { //Connect item traymenu->Append(TRAY_MENU_CONNECT, _("Connect")); } // Separator traymenu->AppendSeparator(); if (theApp->amuledlg->IsShown()) { //hide item traymenu->Append(TRAY_MENU_HIDE, _("Hide aMule")); } else { //show item traymenu->Append(TRAY_MENU_SHOW, _("Show aMule")); } // Separator traymenu->AppendSeparator(); // Exit item traymenu->Append(TRAY_MENU_EXIT, _("Exit")); return traymenu; } void CMuleTrayIcon::SwitchShow(wxTaskBarIconEvent&) { theApp->amuledlg->DoIconize(theApp->amuledlg->IsShown()); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MuleTrayIcon.h0000644000175000017500000000504312611472361021020 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef MULETRAYICON_H #define MULETRAYICON_H #ifndef AMULE_DAEMON enum TaskbarNotifier { TBN_NULL = 0, TBN_CHAT, TBN_DLOAD, TBN_LOG, TBN_IMPORTANTEVENT, TBN_NEWVERSION }; #include #include #include #include "Types.h" // Needed for uint32 class wxString; class wxMenu; enum { TRAY_ICON_DISCONNECTED, TRAY_ICON_LOWID, TRAY_ICON_HIGHID }; /** * The mule tray icon class is responsible for drawing the mule systray icon * and reacting to the user input on it. */ class CMuleTrayIcon : public wxTaskBarIcon { public: /** * Contructor. */ CMuleTrayIcon(); /** * Destructor. */ ~CMuleTrayIcon(); /** * Set the Tray icon. * @param Icon The wxIcon object with the new tray icon */ void SetTrayIcon(int Icon, uint32 percent); /** * Set the Tray tooltip * @param Tip The wxString object with the new tray tooltip */ void SetTrayToolTip(const wxString& Tip); private: virtual wxMenu* CreatePopupMenu(); void UpdateTray(); void SwitchShow(wxTaskBarIconEvent&); void SetUploadSpeed(wxCommandEvent&); void SetDownloadSpeed(wxCommandEvent&); void ServerConnection(wxCommandEvent&); void ShowHide(wxCommandEvent&); void Close(wxCommandEvent&); int Old_Icon; int Old_SpeedSize; int Disconnected_Icon_size; int LowId_Icon_size; int HighId_Icon_size; wxIcon CurrentIcon; wxMemoryDC IconWithSpeed; wxString CurrentTip; DECLARE_EVENT_TABLE() }; #endif // DAEMON #endif //MULETRAYICON_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MuleUDPSocket.cpp0000644000175000017500000002316712611472361021433 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include #include "MuleUDPSocket.h" // Interface declarations #include #include "amule.h" // Needed for theApp #include "GetTickCount.h" // Needed for GetTickCount() #include "Packet.h" // Needed for CPacket #include // Needed for unicode2char #include "Proxy.h" // Needed for CDatagramSocketProxy #include "Logger.h" // Needed for AddDebugLogLine{C,N} #include "UploadBandwidthThrottler.h" #include "EncryptedDatagramSocket.h" #include "OtherFunctions.h" #include "kademlia/kademlia/Prefs.h" #include "ClientList.h" #include "Preferences.h" CMuleUDPSocket::CMuleUDPSocket(const wxString& name, int id, const amuleIPV4Address& address, const CProxyData* ProxyData) : m_busy(false), m_name(name), m_id(id), m_addr(address), m_proxy(ProxyData), m_socket(NULL) { } CMuleUDPSocket::~CMuleUDPSocket() { theApp->uploadBandwidthThrottler->RemoveFromAllQueues(this); wxMutexLocker lock(m_mutex); DestroySocket(); } void CMuleUDPSocket::CreateSocket() { wxCHECK_RET(!m_socket, wxT("Socket already opened.")); m_socket = new CEncryptedDatagramSocket(m_addr, MULE_SOCKET_NOWAIT, m_proxy); m_socket->SetClientData(this); m_socket->SetEventHandler(*theApp, m_id); m_socket->SetNotify(wxSOCKET_INPUT_FLAG | wxSOCKET_OUTPUT_FLAG | wxSOCKET_LOST_FLAG); m_socket->Notify(true); if (!m_socket->IsOk()) { AddDebugLogLineC(logMuleUDP, wxT("Failed to create valid ") + m_name); DestroySocket(); } else { AddLogLineN(wxString(wxT("Created ")) << m_name << wxT(" at port ") << m_addr.Service()); } } void CMuleUDPSocket::DestroySocket() { if (m_socket) { AddDebugLogLineN(logMuleUDP, wxT("Shutting down ") + m_name); m_socket->SetNotify(0); m_socket->Notify(false); m_socket->Close(); m_socket->Destroy(); m_socket = NULL; } } void CMuleUDPSocket::Open() { wxMutexLocker lock(m_mutex); CreateSocket(); } void CMuleUDPSocket::Close() { wxMutexLocker lock(m_mutex); DestroySocket(); } void CMuleUDPSocket::OnSend(int errorCode) { if (errorCode) { return; } { wxMutexLocker lock(m_mutex); m_busy = false; if (m_queue.empty()) { return; } } theApp->uploadBandwidthThrottler->QueueForSendingControlPacket(this); } void CMuleUDPSocket::OnReceive(int errorCode) { AddDebugLogLineN(logMuleUDP, CFormat(wxT("Got UDP callback for read: Error %i Socket state %i")) % errorCode % Ok()); char buffer[UDP_BUFFER_SIZE]; amuleIPV4Address addr; unsigned length = 0; bool error = false; int lastError = 0; { wxMutexLocker lock(m_mutex); if (errorCode || (m_socket == NULL) || !m_socket->IsOk()) { DestroySocket(); CreateSocket(); return; } length = m_socket->RecvFrom(addr, buffer, UDP_BUFFER_SIZE); lastError = m_socket->LastError(); error = lastError != 0; } const uint32 ip = StringIPtoUint32(addr.IPAddress()); const uint16 port = addr.Service(); if (error) { OnReceiveError(lastError, ip, port); } else if (length < 2) { // 2 bytes (protocol and opcode) is the smallets possible packet. AddDebugLogLineN(logMuleUDP, m_name + wxT(": Invalid Packet received")); } else if (!ip) { // wxFAIL; AddLogLineNS(wxT("Unknown ip receiving a UDP packet! Ignoring: '") + addr.IPAddress() + wxT("'")); } else if (!port) { // wxFAIL; AddLogLineNS(wxT("Unknown port receiving a UDP packet! Ignoring")); } else if (theApp->clientlist->IsBannedClient(ip)) { AddDebugLogLineN(logMuleUDP, m_name + wxT(": Dropped packet from banned IP ") + addr.IPAddress()); } else { AddDebugLogLineN(logMuleUDP, (m_name + wxT(": Packet received (")) << addr.IPAddress() << wxT(":") << port << wxT("): ") << length << wxT("b")); OnPacketReceived(ip, port, (byte*)buffer, length); } } void CMuleUDPSocket::OnReceiveError(int DEBUG_ONLY(errorCode), uint32 WXUNUSED(ip), uint16 WXUNUSED(port)) { AddDebugLogLineN(logMuleUDP, (m_name + wxT(": Error while reading: ")) << errorCode); } void CMuleUDPSocket::OnDisconnected(int WXUNUSED(errorCode)) { /* Due to bugs in wxWidgets, UDP sockets will sometimes * be closed. This is caused by the fact that wx treats * zero-length datagrams as EOF, which is only the case * when dealing with streaming sockets. * * This has been reported as patch #1885472: * http://sourceforge.net/tracker/index.php?func=detail&aid=1885472&group_id=9863&atid=309863 */ AddDebugLogLineC(logMuleUDP, m_name + wxT("Socket died, recreating.")); DestroySocket(); CreateSocket(); } void CMuleUDPSocket::SendPacket(CPacket* packet, uint32 IP, uint16 port, bool bEncrypt, const uint8* pachTargetClientHashORKadID, bool bKad, uint32 nReceiverVerifyKey) { wxCHECK_RET(packet, wxT("Invalid packet.")); /*wxCHECK_RET(port, wxT("Invalid port.")); wxCHECK_RET(IP, wxT("Invalid IP.")); */ if (!port || !IP) { return; } if (!Ok()) { AddDebugLogLineN(logMuleUDP, (m_name + wxT(": Packet discarded, socket not Ok (")) << Uint32_16toStringIP_Port(IP, port) << wxT("): ") << packet->GetPacketSize() << wxT("b")); delete packet; return; } AddDebugLogLineN(logMuleUDP, (m_name + wxT(": Packet queued (")) << Uint32_16toStringIP_Port(IP, port) << wxT("): ") << packet->GetPacketSize() << wxT("b")); UDPPack newpending; newpending.IP = IP; newpending.port = port; newpending.packet = packet; newpending.time = GetTickCount(); newpending.bEncrypt = bEncrypt && (pachTargetClientHashORKadID != NULL || (bKad && nReceiverVerifyKey != 0)) && thePrefs::IsClientCryptLayerSupported(); newpending.bKad = bKad; newpending.nReceiverVerifyKey = nReceiverVerifyKey; if (newpending.bEncrypt && pachTargetClientHashORKadID != NULL) { md4cpy(newpending.pachTargetClientHashORKadID, pachTargetClientHashORKadID); } else { md4clr(newpending.pachTargetClientHashORKadID); } { wxMutexLocker lock(m_mutex); m_queue.push_back(newpending); } theApp->uploadBandwidthThrottler->QueueForSendingControlPacket(this); } bool CMuleUDPSocket::Ok() { wxMutexLocker lock(m_mutex); return m_socket && m_socket->IsOk(); } SocketSentBytes CMuleUDPSocket::SendControlData(uint32 maxNumberOfBytesToSend, uint32 WXUNUSED(minFragSize)) { wxMutexLocker lock(m_mutex); uint32 sentBytes = 0; while (!m_queue.empty() && !m_busy && (sentBytes < maxNumberOfBytesToSend)) { UDPPack item = m_queue.front(); CPacket* packet = item.packet; if (GetTickCount() - item.time < UDPMAXQUEUETIME) { uint32_t len = packet->GetPacketSize() + 2; uint8_t *sendbuffer = new uint8_t [len]; memcpy(sendbuffer, packet->GetUDPHeader(), 2); memcpy(sendbuffer + 2, packet->GetDataBuffer(), packet->GetPacketSize()); if (item.bEncrypt && (theApp->GetPublicIP() > 0 || item.bKad)) { len = CEncryptedDatagramSocket::EncryptSendClient(&sendbuffer, len, item.pachTargetClientHashORKadID, item.bKad, item.nReceiverVerifyKey, (item.bKad ? Kademlia::CPrefs::GetUDPVerifyKey(item.IP) : 0)); } if (SendTo(sendbuffer, len, item.IP, item.port)) { sentBytes += len; m_queue.pop_front(); delete packet; delete [] sendbuffer; } else { // TODO: Needs better error handling, see SentTo delete [] sendbuffer; break; } } else { m_queue.pop_front(); delete packet; } } if (!m_busy && !m_queue.empty()) { theApp->uploadBandwidthThrottler->QueueForSendingControlPacket(this); } SocketSentBytes returnVal = { true, 0, sentBytes }; return returnVal; } bool CMuleUDPSocket::SendTo(uint8_t *buffer, uint32_t length, uint32_t ip, uint16_t port) { // Just pretend that we sent the packet in order to avoid infinite loops. if (!(m_socket && m_socket->IsOk())) { return true; } amuleIPV4Address addr; addr.Hostname(ip); addr.Service(port); // We better clear this flag here, status might have been changed // between the U.B.T. addition and the real sending happening later m_busy = false; bool sent = false; m_socket->SendTo(addr, buffer, length); if (m_socket->BlocksWrite()) { // Socket is busy and can't send this data right now, // so we just return not sent and set the wouldblock // flag so it gets resent when socket is ready. m_busy = true; } else if (uint32 error = m_socket->LastError()) { // An error which we can't handle happended, so we drop // the packet rather than risk entering an infinite loop. AddLogLineN((wxT("WARNING! ") + m_name + wxT(": Packet to ")) << Uint32_16toStringIP_Port(ip, port) << wxT(" discarded due to error (") << error << wxT(") while sending.")); sent = true; } else { AddDebugLogLineN(logMuleUDP, (m_name + wxT(": Packet sent (")) << Uint32_16toStringIP_Port(ip, port) << wxT("): ") << length << wxT("b")); sent = true; } return sent; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/MuleUDPSocket.h0000644000175000017500000001365612611472361021102 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef MULEUDPSOCKET_H #define MULEUDPSOCKET_H #include "Types.h" // Needed for uint16 and uint32 #include "ThrottledSocket.h" // Needed for ThrottledControlSocket #include "amuleIPV4Address.h" // Needed for amuleIPV4Address class CEncryptedDatagramSocket; class CProxyData; class CPacket; /*** * This class provides a UBT governed UDP-socket. * * The CMuleUDPSocket are created with the NOWAIT option and * handle both INPUT and OUTPUT events. * * The following additional features are provided compared to CDatagramSocketProxy: * - Goverened by the UBT. * - Automatic sending/receiving of packets. * - Fallover recovery for when a socket becomes invalid (error 4). * * @see ThrottledControlSocket * @see CEncryptedDatagramSocket */ class CMuleUDPSocket : public ThrottledControlSocket { public: /** * Opens a UDP socket at the specified address. * * @param name Name used when logging events. * @param id The ID used for events. * @param address The address where the socket will listen. * @param ProxyData ProxyData assosiated with the socket. */ CMuleUDPSocket(const wxString& name, int id, const amuleIPV4Address& address, const CProxyData* ProxyData = NULL); /** * Destructor, safely closes the socket if opened. */ virtual ~CMuleUDPSocket(); /** * Opens the socket. * * The socket is bound to the address specified in * the constructor. */ void Open(); /** * Closes the socket. * * The socket can be reopened by calling Open. Closing a * already closed socket is an illegal operation. */ void Close(); /** This function is called by aMule when the socket may send. */ virtual void OnSend(int errorCode); /** This function is called by aMule when there are data to be received. */ virtual void OnReceive(int errorCode); /** This function is called by aMule when there is an error while receiving. */ virtual void OnReceiveError(int errorCode, uint32 ip, uint16 port); /** This function is called when the socket is lost (see comments in func.) */ virtual void OnDisconnected(int errorCode); /** * Queues a packet for sending. * * @param packet The packet to send. * @param IP The target IP address. * @param port The target port. * @param bEncrypt If the packet must be encrypted * @param port The target port. * @param pachTargetClientHashORKadID The client hash or Kad ID * @param bKad * @param nReceiverVerifyKey * * Note that CMuleUDPSocket takes ownership of the packet. */ void SendPacket(CPacket* packet, uint32 IP, uint16 port, bool bEncrypt, const uint8* pachTargetClientHashORKadID, bool bKad, uint32 nReceiverVerifyKey); /** * Returns true if the socket is Ok, false otherwise. * * @see wxSocketBase::Ok */ bool Ok(); /** Read buffer size */ static const unsigned UDP_BUFFER_SIZE = 16384; protected: /** * This function is called when a packet has been received. * * @param addr The address from where data was received. * @param buffer The data that has been received. * @param length The length of the data buffer. */ virtual void OnPacketReceived(uint32 ip, uint16 port, byte* buffer, size_t length) = 0; /** See ThrottledControlSocket::SendControlData */ SocketSentBytes SendControlData(uint32 maxNumberOfBytesToSend, uint32 minFragSize); private: /** * Sends a packet to the specified address. * * @param buffer The data to be sent. * @param length the length of the data buffer. * @param ip The target ip address. * @param port The target port. */ bool SendTo(uint8_t *buffer, uint32_t length, uint32_t ip, uint16_t port); /** * Creates a new socket. * * Calling this function when a socket already exists * is an illegal operation. */ void CreateSocket(); /** * Destroys the current socket, if any. */ void DestroySocket(); //! Specifies if the last write attempt would cause the socket to block. bool m_busy; //! The name of the socket, used for debugging messages. wxString m_name; //! The socket-ID, used for event-handling. int m_id; //! The address at which the socket is currently bound. amuleIPV4Address m_addr; //! Proxy settings used by the socket ... const CProxyData* m_proxy; //! Mutex needed due to the use of the UBT. wxMutex m_mutex; //! The currently opened socket, if any. CEncryptedDatagramSocket* m_socket; //! Storage struct used for queueing packets. struct UDPPack { //! The packet, which at this point is owned by CMuleUDPSocket. CPacket* packet; //! The timestamp of when the packet was queued. uint32 time; //! Target IP address. uint32 IP; //! Target port. uint16 port; //! If the packet is encrypted. bool bEncrypt; //! Is it a kad packet? bool bKad; // The verification key for RC4 encryption. uint32 nReceiverVerifyKey; // Client hash or kad ID. uint8 pachTargetClientHashORKadID[16]; } ; //! The queue of packets waiting to be sent. std::list m_queue; }; #endif // CLIENTUDPSOCKET_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/NetworkFunctions.cpp0000644000175000017500000001405512611472361022325 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "NetworkFunctions.h" // Interface declaration #include "amuleIPV4Address.h" bool StringIPtoUint32(const wxString &strIP, uint32& Ip) { // The current position in the current field, used to detect malformed fields (x.y..z). unsigned digit = 0; // The current field, used to ensure only IPs that looks like a.b.c.d are supported unsigned field = 0; // The value of the current field unsigned value = 0; // Stores the work-value of the IP, reference is not changed unless the str was valid uint32 tmp_ip = 0; wxString str = strIP.Strip( wxString::both ); for (size_t i = 0; i < str.Length(); i++) { wxChar c = str.GetChar( i ); if ( c >= wxT('0') && c <= wxT('9') && (value >> 8) == 0) { value = ( value * 10 ) + ( c - wxT('0') ); ++digit; } else if ( c == wxT('.') ) { if ( digit && (value >> 8) == 0) { tmp_ip = tmp_ip | value << ( field * 8 ); // Rest the current field values value = digit = 0; ++field; } else { return false; } } else { return false; } } // Only set the referenced value if it was a valid IP if ( field == 3 && digit && (value >> 8) == 0) { Ip = tmp_ip | value << 24; return true; } return false; } uint32 StringHosttoUint32(const wxString &Host) { if (Host.IsEmpty()) { return 0; } amuleIPV4Address solver; if (solver.Hostname(Host)) { uint32 result = StringIPtoUint32(solver.IPAddress()); if (result != (uint32)-1) { // should not happen return result; } } // This actually happens on wrong hostname return 0; } /** * Used to store the ranges. */ struct IPRange { const wxChar *addr; unsigned int mask; bool isLAN; }; const IPRange ranges[] = { // Here is reserved blocks from RFC 3330 at http://www.rfc-editor.org/rfc/rfc3330.txt // //Address Block Present Use Reference //---------------------------------------------------------------------------------- { wxT("0.0.0.0"), 8, false }, // "This" Network [RFC1700, page 4] { wxT("10.0.0.0"), 8, true }, // Private-Use Networks [RFC1918] // Acording to RFC3330, 24.* and 14.* must be parsed as normal ips. //{ wxT("14.0.0.0"), 8, false }, // Public-Data Networks [RFC1700, page 181] //{ wxT("24.0.0.0"), 8, false }, // Cable Television Networks -- { wxT("39.0.0.0"), 8, false }, // Reserved but subject // to allocation [RFC1797] { wxT("127.0.0.0"), 8, false }, // Loopback [RFC1700, page 5] { wxT("128.0.0.0"), 16, false }, // Reserved but subject // to allocation -- { wxT("169.254.0.0"), 16, false }, // Link Local -- { wxT("172.16.0.0"), 12, true }, // Private-Use Networks [RFC1918] { wxT("191.255.0.0"), 16, false }, // Reserved but subject // to allocation -- { wxT("192.0.0.0"), 24, false }, // Reserved but subject // to allocation -- { wxT("192.0.2.0"), 24, false }, // Test-Net { wxT("192.88.99.0"), 24, false }, // 6to4 Relay Anycast [RFC3068] { wxT("192.168.0.0"), 16, true }, // Private-Use Networks [RFC1918] { wxT("198.18.0.0"), 15, false }, // Network Interconnect // Device Benchmark Testing [RFC2544] { wxT("223.255.255.0"), 24, false }, // Reserved but subject // to allocation -- { wxT("224.0.0.0"), 4, false }, // Multicast [RFC3171] { wxT("240.0.0.0"), 4, false } // Reserved for Future Use [RFC1700, page 4] }; struct filter_st { uint32 addr; // Address and mask in anti-host order. uint32 mask; }; const unsigned int number_of_ranges = sizeof(ranges) / sizeof(IPRange); static filter_st filters[number_of_ranges]; // This function is used to initialize the IP filter bool SetupFilter() { for (unsigned int i = 0; i < number_of_ranges; ++i) { filters[i].addr = StringIPtoUint32( ranges[i].addr ); filters[i].mask = ~wxUINT32_SWAP_ALWAYS((1 << (32 - ranges[i].mask)) - 1); } return true; } // This is a little trick to ensure that the filter-list is initialized before // it gets used, while not risking threading problems. static bool filterSetup = SetupFilter(); bool IsGoodIP(uint32 IP, bool filterLAN) { for (unsigned int i = 0; i < number_of_ranges; ++i) { if (((IP ^ filters[i].addr) & filters[i].mask) == 0) { if ( filterLAN || !ranges[i].isLAN ) { return false; } } } return true; } bool IsLanIP(uint32_t ip) throw() { for (unsigned int i = 0; i < number_of_ranges; i++) { if (((ip ^ filters[i].addr) & filters[i].mask) == 0) { return ranges[i].isLAN; } } return false; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/NetworkFunctions.h0000644000175000017500000001037512611472361021773 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef NETWORK_FUNCTIONS_H #define NETWORK_FUNCTIONS_H #include "Types.h" // Needed for uint16 and uint32 #include // Needed for CFormat #include // Network ip/host handling functions // These functions take IPs in anti-host order inline wxString Uint32toStringIP(uint32 ip) { return CFormat(wxT("%u.%u.%u.%u")) % (uint8)ip % (uint8)(ip>>8) % (uint8)(ip>>16) % (uint8)(ip>>24); } inline wxString Uint32_16toStringIP_Port(uint32 ip, uint16 port) { return CFormat(wxT("%u.%u.%u.%u:%u")) % (uint8)ip % (uint8)(ip>>8) % (uint8)(ip>>16) % (uint8)(ip>>24) % port; } // These functions take IPs in host-order inline wxString KadIPToString(uint32_t ip) { return CFormat(wxT("%u.%u.%u.%u")) % (uint8_t)(ip >> 24) % (uint8_t)(ip >> 16) % (uint8_t)(ip >> 8) % (uint8_t)ip; } inline wxString KadIPPortToString(uint32_t ip, uint16_t port) { return CFormat(wxT("%u.%u.%u.%u:%u")) % (uint8_t)(ip >> 24) % (uint8_t)(ip >> 16) % (uint8_t)(ip >> 8) % (uint8_t)ip % port; } /** * Parses a String-IP and saves the IP in the referenced variable. * * @param strIP A string-ip in the format "a.b.c.d". * @param Ip The value to save the result in. * @return True if the string was parsed, false otherwise. * * When parsing the IP address, whitespace before or after the * ip-address is ignored and the resulting IP is saved in * anti-host order. * * The reason for the existance of this function is the fact that * the standard inet_aton function treats numbers with 0 prefixed * as octals, which is desirable. * * Note: The reference value will not be changed unless the string * contains a valid IP adress. */ bool StringIPtoUint32(const wxString &strIP, uint32& Ip); /** * Parses a String-IP and returns the IP or 0 if it was invalid. * * @param strIP A string-ip in the format "a.b.c.d". * @return The resulting IP-address or zero if invalid (or 0.0.0.0). * * The IP will be saved in anti-host order. */ inline uint32 StringIPtoUint32(const wxString &strIP) { uint32 ip = 0; StringIPtoUint32( strIP, ip ); return ip; } /** * Parses a String-IHost and returns the IP or 0 if it was invalid. * * @param Host A string with the Host to convert. * @return The resulting IP-address or zero if invalid (or 0.0.0.0). * * The IP will be saved in anti-host order. */ uint32 StringHosttoUint32(const wxString &Host); /** * Checks for invalid IP-values. * * @param IP the IP-address to check. * @param filterLAN Specifies if LAN IP-ranges should be filtered. * @return True if it was valid, false otherwise. * * Note: IP must be in anti-host order (BE on LE platform, LE on BE platform). */ bool IsGoodIP( uint32 IP, bool filterLAN ); inline bool IsGoodIPPort(uint32 nIP, uint16 nPort) { return IsGoodIP(nIP, true) && nPort!=0; } #define HIGHEST_LOWID_ED2K_KAD 16777216 inline bool IsLowID(uint32 id) { return (id < HIGHEST_LOWID_ED2K_KAD); } /** * Checks for LAN IPs. * * @param ip The IP-address to check. * @return True if it was a LAN IP, false otherwise. * * @note IP must be in anti-host order. */ bool IsLanIP(uint32_t ip) throw(); #endif // NETWORK_FUNCTIONS_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/OScopeCtrl.cpp0000644000175000017500000004054212611472361021020 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include #include #include #include #include "amule.h" // Needed for theApp #include "amuleDlg.h" // Needed for CamuleDlg #include "Logger.h" // Needed for AddLogLineM #include "OScopeCtrl.h" // Interface declarations #include "OtherFunctions.h" // Needed for CastSecondsToHM #include "Statistics.h" BEGIN_EVENT_TABLE(COScopeCtrl,wxControl) EVT_PAINT(COScopeCtrl::OnPaint) EVT_SIZE(COScopeCtrl::OnSize) END_EVENT_TABLE() const wxColour crPreset [ 16 ] = { wxColour( 0xFF, 0x00, 0x00 ), wxColour( 0xFF, 0xC0, 0xC0 ), wxColour( 0xFF, 0xFF, 0x00 ), wxColour( 0xFF, 0xA0, 0x00 ), wxColour( 0xA0, 0x60, 0x00 ), wxColour( 0x00, 0xFF, 0x00 ), wxColour( 0x00, 0xA0, 0x00 ), wxColour( 0x00, 0x00, 0xFF ), wxColour( 0x00, 0xA0, 0xFF ), wxColour( 0x00, 0xFF, 0xFF ), wxColour( 0x00, 0xA0, 0xA0 ), wxColour( 0xC0, 0xC0, 0xFF ), wxColour( 0xFF, 0x00, 0xFF ), wxColour( 0xA0, 0x00, 0xA0 ), wxColour( 0xFF, 0xFF, 0xFF ), wxColour( 0x80, 0x80, 0x80 ) }; COScopeCtrl::COScopeCtrl(int cntTrends, int nDecimals, StatsGraphType type, wxWindow* parent) : wxControl(parent, -1, wxDefaultPosition, wxDefaultSize) , timerRedraw(this) { // since plotting is based on a LineTo for each new point // we need a starting point (i.e. a "previous" point) // use 0.0 as the default first point. // these are public member variables, and can be changed outside // (after construction). // G.Hayduk: NTrends is the number of trends that will be drawn on // the plot. First 15 plots have predefined colors, but others will // be drawn with white, unless you call SetPlotColor nTrends = cntTrends; pdsTrends = new PlotData_t[nTrends]; PlotData_t* ppds = pdsTrends; for(unsigned i=0; icrPlot = (i<15 ? crPreset[i] : *wxWHITE); ppds->penPlot=*(wxThePenList->FindOrCreatePen(ppds->crPlot, 1, wxSOLID)); ppds->fPrev = ppds->fLowerLimit = ppds->fUpperLimit = 0.0; } bRecreateGraph = bRecreateGrid = bRecreateAll = bStopped = false; m_onPaint = false; nDelayedPoints = 0; sLastTimestamp = 0.0; sLastPeriod = 1.0; nShiftPixels = 1; nYDecimals = nDecimals; m_bgColour = wxColour( 0, 0, 0) ; // see also SetBackgroundColor m_gridColour = wxColour( 0, 255, 255) ; // see also SetGridColor brushBack = *wxBLACK_BRUSH; strXUnits = wxT("X"); // can also be set with SetXUnits strYUnits = wxT("Y"); // can also be set with SetYUnits nXGrids = 6; nYGrids = 5; graph_type = type; // Connect the timer (dynamically, so the Controls don't have to share a common timer id) Connect(timerRedraw.GetId(), wxEVT_TIMER, (wxObjectEventFunction) &COScopeCtrl::OnTimer); // Don't draw background (avoid ugly flickering on wxMSW on resize) SetBackgroundStyle(wxBG_STYLE_CUSTOM); // Ensure that various size-constraints are calculated (via OnSize). SetClientSize(GetClientSize()); } COScopeCtrl::~COScopeCtrl() { delete [] pdsTrends; } void COScopeCtrl::SetRange(float fLower, float fUpper, unsigned iTrend) { PlotData_t* ppds = pdsTrends+iTrend; if ((ppds->fLowerLimit == fLower) && (ppds->fUpperLimit == fUpper)) return; ppds->fLowerLimit = fLower; ppds->fUpperLimit = fUpper; ppds->fVertScale = (float)m_rectPlot.GetHeight() / (fUpper-fLower); ppds->yPrev = GetPlotY(ppds->fPrev, ppds); if (iTrend == 0) { InvalidateCtrl(); } else { InvalidateGraph(); } } void COScopeCtrl::SetRanges(float fLower, float fUpper) { for (unsigned iTrend = 0; iTrend < nTrends; ++iTrend) { SetRange(fLower, fUpper, iTrend); } } void COScopeCtrl::SetYUnits(const wxString& strUnits, const wxString& strMin, const wxString& strMax) { strYUnits = strUnits; strYMin = strMin; strYMax = strMax; InvalidateGrid(); } void COScopeCtrl::SetGridColor(const wxColour& cr) { if (cr == m_gridColour) { return; } m_gridColour = cr; InvalidateGrid() ; } void COScopeCtrl::SetPlotColor(const wxColour& cr, unsigned iTrend) { PlotData_t* ppds = pdsTrends+iTrend; if (ppds->crPlot == cr) return; ppds->crPlot = cr; ppds->penPlot=*(wxThePenList->FindOrCreatePen(ppds->crPlot, 1, wxSOLID)); InvalidateGraph(); } void COScopeCtrl::SetBackgroundColor(const wxColour& cr) { if (m_bgColour == cr) { return; } m_bgColour = cr; brushBack= *(wxTheBrushList->FindOrCreateBrush(cr, wxSOLID)); InvalidateCtrl() ; } void COScopeCtrl::RecreateGrid() { // There is a lot of drawing going on here - particularly in terms of // drawing the grid. Don't panic, this is all being drawn (only once) // to a bitmap. The result is then BitBlt'd to the control whenever needed. bRecreateGrid = false; if (m_rectClient.GetWidth() == 0 || m_rectClient.GetHeight() == 0) { return; } wxMemoryDC dcGrid(m_bmapGrid); wxPen solidPen = *(wxThePenList->FindOrCreatePen(m_gridColour, 1, wxSOLID)); wxString strTemp; // fill the grid background dcGrid.SetBrush(brushBack); dcGrid.SetPen(*wxTRANSPARENT_PEN); dcGrid.DrawRectangle(m_rectClient); // adjust the plot rectangle dimensions // assume 6 pixels per character (this may need to be adjusted) m_rectPlot.x = m_rectClient.GetLeft() + 6*7+4; // draw the plot rectangle dcGrid.SetPen(solidPen); dcGrid.DrawRectangle(m_rectPlot.x - 1, m_rectPlot.y - 1, m_rectPlot.GetWidth() + 2, m_rectPlot.GetHeight() + 2); dcGrid.SetPen(wxNullPen); // create some fonts (horizontal and vertical) wxFont axisFont(10, wxSWISS, wxNORMAL, wxNORMAL, false); dcGrid.SetFont(axisFont); // y max dcGrid.SetTextForeground(m_gridColour); if( strYMax.IsEmpty() ) { strTemp = wxString::Format(wxT("%.*f"), nYDecimals, pdsTrends[ 0 ].fUpperLimit); } else { strTemp = strYMax; } wxCoord sizX,sizY; dcGrid.GetTextExtent(strTemp,&sizX,&sizY); dcGrid.DrawText(strTemp,m_rectPlot.GetLeft()-4-sizX,m_rectPlot.GetTop()-7); // y min if( strYMin.IsEmpty() ) { strTemp = wxString::Format(wxT("%.*f"), nYDecimals, pdsTrends[ 0 ].fLowerLimit) ; } else { strTemp = strYMin; } dcGrid.GetTextExtent(strTemp,&sizX,&sizY); dcGrid.DrawText(strTemp,m_rectPlot.GetLeft()-4-sizX, m_rectPlot.GetBottom()); // x units strTemp = CastSecondsToHM((m_rectPlot.GetWidth()/nShiftPixels) * (int)floor(sLastPeriod+0.5)); // floor(x + 0.5) is a way of doing round(x) that works with gcc < 3 ... if (bStopped) { strXUnits = CFormat( _("Disabled [%s]") ) % strTemp; } else { strXUnits = strTemp; } dcGrid.GetTextExtent(strXUnits,&sizX,&sizY); dcGrid.DrawText(strXUnits,(m_rectPlot.GetLeft() + m_rectPlot.GetRight())/2-sizX/2,m_rectPlot.GetBottom()+4); // y units if (!strYUnits.IsEmpty()) { dcGrid.GetTextExtent(strYUnits,&sizX,&sizY); dcGrid.DrawText(strYUnits, m_rectPlot.GetLeft()-4-sizX, (m_rectPlot.GetTop()+m_rectPlot.GetBottom())/2-sizY/2); } // no more drawing to this bitmap is needed until the setting are changed if (bRecreateGraph) { RecreateGraph(false); } // finally, force the plot area to redraw Refresh(false); } void COScopeCtrl::AppendPoints(double sTimestamp, const std::vector &apf) { sLastTimestamp = sTimestamp; if (nDelayedPoints) { // Ensures that delayed points get added before the new point. // We do this by simply drawing the history up to and including // the new point. int n = std::min(m_rectPlot.GetWidth(), nDelayedPoints + 1); nDelayedPoints = 0; PlotHistory(n, true, false); } else { ShiftGraph(1); DrawPoints(apf, 1); } Refresh(false); } void COScopeCtrl::OnPaint(wxPaintEvent& WXUNUSED(evt)) { m_onPaint = true; // no real plotting work is performed here unless we are coming out of a hidden state; // normally, just putting the existing bitmaps on the client to avoid flicker, // establish a memory dc and then BitBlt it to the client wxBufferedPaintDC dc(this); if (bRecreateAll) { return; } if (bRecreateGrid) { RecreateGrid(); // this will also recreate the graph if that flag is set } else if (bRecreateGraph) { RecreateGraph(true); } if (nDelayedPoints) { // we've just come out of hiding, so catch up int n = std::min(m_rectPlot.GetWidth(), nDelayedPoints); nDelayedPoints = 0; // (this is more efficient than plotting in the PlotHistory(n, true, false); // background because the bitmap is shifted only } // once for all delayed points together) // We have assured that we have a valid and resized if needed // wxDc and bitmap. Proceed to blit. dc.DrawBitmap(m_bmapGrid, 0, 0, false); // Overwrites the plot section of the image dc.DrawBitmap(m_bmapPlot, m_rectPlot.x, m_rectPlot.y, false); // draw the dotted lines. // This is done last because wxMAC does't support the wxOR logical // operation, preventing us from simply blitting the plot on top of // the grid bitmap. dc.SetPen(*(wxThePenList->FindOrCreatePen(m_gridColour, 1, wxLONG_DASH))); for (unsigned j = 1; j < (nYGrids + 1); ++j) { unsigned GridPos = (m_rectPlot.GetHeight())*j/( nYGrids + 1 ) + m_rectPlot.GetTop(); dc.DrawLine(m_rectPlot.GetLeft(), GridPos, m_rectPlot.GetRight(), GridPos); } } void COScopeCtrl::OnSize(wxSizeEvent& WXUNUSED(evt)) { // This gets called repeatedly as the user resizes the app; // we use the timer mechanism through InvalidateCtrl to avoid unnecessary redrawing // NOTE: OnSize automatically gets called during the setup of the control if(GetClientRect() == m_rectClient) { return; } m_rectClient = GetClientRect(); if (m_rectClient.GetWidth() < 1 || m_rectClient.GetHeight() < 1) { return; } // the "left" coordinate and "width" will be modified in // InvalidateCtrl to be based on the y axis scaling m_rectPlot.SetLeft(20); m_rectPlot.SetTop(10); m_rectPlot.SetRight(std::max(m_rectPlot.GetLeft() + 1, m_rectClient.GetRight() - 40)); m_rectPlot.SetBottom(std::max(m_rectPlot.GetTop() + 1, m_rectClient.GetBottom() - 25)); PlotData_t* ppds = pdsTrends; for(unsigned iTrend=0; iTrendfVertScale = (float)m_rectPlot.GetHeight() / (ppds->fUpperLimit-ppds->fLowerLimit); ppds->yPrev = GetPlotY(ppds->fPrev, ppds); } if (!m_bmapGrid.IsOk() || (m_rectClient != wxSize(m_bmapGrid.GetWidth(), m_bmapGrid.GetHeight()))) { m_bmapGrid.Create(m_rectClient.GetWidth(), m_rectClient.GetHeight()); } if (!m_bmapPlot.IsOk() || (m_rectPlot != wxSize(m_bmapPlot.GetWidth(), m_bmapPlot.GetHeight()))) { m_bmapPlot.Create(m_rectPlot.GetWidth(), m_rectPlot.GetHeight()); } InvalidateCtrl(); } void COScopeCtrl::ShiftGraph(unsigned cntPoints) { wxMemoryDC dcPlot(m_bmapPlot); unsigned cntPixelOffset = cntPoints*nShiftPixels; if (cntPixelOffset >= (unsigned)m_rectPlot.GetWidth()) { cntPixelOffset = m_rectPlot.GetWidth(); } else { dcPlot.Blit(0, 0, m_rectPlot.GetWidth(), m_rectPlot.GetHeight(), &dcPlot, cntPixelOffset, 0); // scroll graph to the left } // clear a rectangle over the right side of plot prior to adding the new points dcPlot.SetPen(*wxTRANSPARENT_PEN); dcPlot.SetBrush(brushBack); // fill with background color dcPlot.DrawRectangle(m_rectPlot.GetWidth()-cntPixelOffset, 0, cntPixelOffset, m_rectPlot.GetHeight()); } unsigned COScopeCtrl::GetPlotY(float fPlot, PlotData_t* ppds) { if (fPlot <= ppds->fLowerLimit) { return m_rectPlot.GetBottom(); } else if (fPlot >= ppds->fUpperLimit) { return m_rectPlot.GetTop() + 1; } else { return m_rectPlot.GetBottom() - (unsigned)((fPlot - ppds->fLowerLimit) * ppds->fVertScale); } } void COScopeCtrl::DrawPoints(const std::vector &apf, unsigned cntPoints) { // this appends a new set of data points to a graph; all of the plotting is // directed to the memory based bitmap associated with dcPlot // the will subsequently be BitBlt'd to the client in OnPaint // draw the next line segement unsigned y, yPrev; unsigned cntPixelOffset = std::min((unsigned)(m_rectPlot.GetWidth()-1), (cntPoints-1)*nShiftPixels); PlotData_t* ppds = pdsTrends; wxMemoryDC dcPlot(m_bmapPlot); for (unsigned iTrend=0; iTrendyPrev; dcPlot.SetPen(ppds->penPlot); for (int x = m_rectPlot.GetRight() - cntPixelOffset; x <= m_rectPlot.GetRight(); x+=nShiftPixels) { y = GetPlotY(*pf--, ppds); // Map onto the smaller bitmap dcPlot.DrawLine(x - nShiftPixels - m_rectPlot.GetX(), yPrev - m_rectPlot.GetY(), x - m_rectPlot.GetX(), y - m_rectPlot.GetY()); yPrev = y; } ppds->fPrev = *(pf+1); ppds->yPrev = yPrev; } } #ifndef CLIENT_GUI void COScopeCtrl::PlotHistory(unsigned cntPoints, bool bShiftGraph, bool bRefresh) { wxASSERT(graph_type != GRAPH_INVALID); if (graph_type != GRAPH_INVALID) { unsigned i; unsigned cntFilled; std::vector apf(nTrends); try { for (i = 0; i < nTrends; ++i) { apf[i] = new float[cntPoints]; } double sFinal = (bStopped ? sLastTimestamp : -1.0); cntFilled = theApp->m_statistics->GetHistory(cntPoints, sLastPeriod, sFinal, apf, graph_type); if (cntFilled >1 || (bShiftGraph && cntFilled!=0)) { if (bShiftGraph) { // delayed points - we have an fPrev ShiftGraph(cntFilled); } else { // fresh graph, we need to preset fPrev, yPrev PlotData_t* ppds = pdsTrends; for(i=0; iyPrev = GetPlotY(ppds->fPrev = *(apf[i] + cntFilled - 1), ppds); cntFilled--; } DrawPoints(apf, cntFilled); if (bRefresh) Refresh(false); } for (i = 0; i < nTrends; ++i) { delete [] apf[i]; } } catch(std::bad_alloc) { // Failed memory allocation AddLogLineC(wxString( wxT("Error: COScopeCtrl::PlotHistory: Insuficient memory, cntPoints == ")) << cntPoints << wxT(".")); for (i = 0; i < nTrends; ++i) { delete [] apf[i]; } } } else { // No history (yet) for Kad. } } #else //#warning CORE/GUI -- EC needed void COScopeCtrl::PlotHistory(unsigned, bool, bool) { } #endif void COScopeCtrl::RecreateGraph(bool bRefresh) { bRecreateGraph = false; nDelayedPoints = 0; wxMemoryDC dcPlot(m_bmapPlot); dcPlot.SetBackground(brushBack); dcPlot.Clear(); PlotHistory(m_rectPlot.GetWidth(), false, bRefresh); } void COScopeCtrl::Reset(double sNewPeriod) { bool bStoppedPrev = bStopped; bStopped = false; if (sLastPeriod != sNewPeriod || bStoppedPrev) { sLastPeriod = sNewPeriod; InvalidateCtrl(); } } void COScopeCtrl::Stop() { bStopped = true; bRecreateGraph = false; RecreateGrid(); } void COScopeCtrl::InvalidateCtrl(bool bInvalidateGraph, bool bInvalidateGrid) { bRecreateGraph |= bInvalidateGraph; bRecreateGrid |= bInvalidateGrid; // It appears the timerRedraw logic screws up Mac, disable it there #ifndef __WXMAC__ // To prevent startup problems don't start timer logic until // a native OnPaint event has been generated. if (m_onPaint) { bRecreateAll |= bInvalidateGraph && bInvalidateGrid; timerRedraw.Start(100, true); // One-shot timer } #endif } void COScopeCtrl::OnTimer(wxTimerEvent& WXUNUSED(evt)) /* The timer is used to consolidate redrawing of the graphs: when the user resizes the application, we get multiple calls to OnSize. If he changes several parameters in the Preferences, we get several individual SetXYZ calls. If we were to try to recreate the graphs for each such event, performance would be sluggish, but with the timer, each event (if they come in quick succession) simply restarts the timer until there is a little pause and OnTimer actually gets called and does its work. */ { if( !theApp->amuledlg || !theApp->amuledlg->SafeState()) { return; } bRecreateAll = false; wxPaintEvent paint; ProcessEvent(paint); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/OScopeCtrl.h0000644000175000017500000000744612611472361020473 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef OSCOPECTRL_H #define OSCOPECTRL_H #ifndef NULL #define NULL 0 #endif #include #include // Needed for wxControl #include // Needed for wxTimer #include #include #include #include "Constants.h" // Needed for StatsGraphType class wxMemoryDC; ///////////////////////////////////////////////////////////////////////////// // COScopeCtrl window class COScopeCtrl : public wxControl { friend class CStatisticsDlg; public: COScopeCtrl(int NTrends, int nDecimals, StatsGraphType type, wxWindow* parent = NULL); ~COScopeCtrl(); void SetRange(float dLower, float dUpper, unsigned iTrend = 0); void SetRanges(float dLower, float dUpper); void SetYUnits(const wxString& string, const wxString& YMin = wxEmptyString, const wxString& YMax = wxEmptyString); void SetBackgroundColor(const wxColour& color); void SetGridColor(const wxColour& color); void SetPlotColor(const wxColour& color, unsigned iTrend = 0); float GetUpperLimit() { return pdsTrends[0].fUpperLimit; } void Reset(double sNewPeriod); void Stop(); void RecreateGraph(bool bRefresh=true); void RecreateGrid(); void AppendPoints(double sTimestamp, const std::vector &apf); void DelayPoints() { nDelayedPoints++; } StatsGraphType graph_type; public: unsigned nTrends; unsigned nXGrids; unsigned nYGrids; unsigned nShiftPixels; // amount to shift with each new point unsigned nYDecimals; wxString strXUnits; wxString strYUnits, strYMin, strYMax; wxColour m_bgColour; wxColour m_gridColour; typedef struct PlotDataStruct { wxColour crPlot; // data plot color wxPen penPlot; unsigned yPrev; float fPrev; float fLowerLimit; // lower bounds float fUpperLimit; // upper bounds float fVertScale; } PlotData_t ; protected: DECLARE_EVENT_TABLE() PlotData_t *pdsTrends; wxRect m_rectClient; wxRect m_rectPlot; wxBrush brushBack; wxBitmap m_bmapGrid; wxBitmap m_bmapPlot; void InvalidateGraph() { InvalidateCtrl(true, false); } void InvalidateGrid() { InvalidateCtrl(false, true); } private: bool bRecreateGrid, bRecreateGraph, bRecreateAll, bStopped; int nDelayedPoints; double sLastTimestamp; double sLastPeriod; wxTimer timerRedraw; bool m_onPaint; void OnTimer(wxTimerEvent& evt); void OnPaint(wxPaintEvent& evt); void OnSize(wxSizeEvent& evt); void ShiftGraph(unsigned cntPoints); void PlotHistory(unsigned cntPoints, bool bShiftGraph, bool bRefresh); void DrawPoints(const std::vector &apf, unsigned cntPoints); unsigned GetPlotY(float fPlot, PlotData_t* ppds); void InvalidateCtrl(bool bInvalidateGraph = true, bool bInvalidateGrid = true); }; #endif // OSCOPECTRL_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Observable.h0000644000175000017500000001603312611472361020532 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 Mikkel Schubert ( xaignar@users.sourceforge.net ) // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef OBSERVABLE_H #define OBSERVABLE_H #include #include "OtherFunctions.h" // Needed for CMutexUnlocker template class CObservable; /** * This class implements the observable part of an Observer/Observable pattern. * * The EventType paramter is used to specify a protocol for the event-type used * by a particular Observer/Observable set and allows for any level of * information passing to be used, depending on the context. * * In order to simplify matters for subclasses, both the Observer and the * Observable class keep track of which objects are observing what, so that * instances can safely be created and destroyed without having to manually * keep the observers and observables in sync. */ template class CObserver { friend class CObservable; public: typedef CObservable ObservableType; /** * Destructor. * * All observables which has this object registered are notified * as to avoid dangling pointers. This will not result in actual * events. */ virtual ~CObserver(); protected: /** * This function is called when an observed subject publishes an event. * * @param o The publisher of the event. * @param e The actual event. */ virtual void ReceiveNotification( const ObservableType* o, const EventType& e ) = 0; private: //! Mutex used to make access to the list of observed objects thread safe. wxMutex m_mutex; typedef std::set ObservableSetType; //! List of objects being observed. ObservableSetType m_list; }; /** * This class implements the Observable part of the Observer/Observable pattern. */ template class CObservable { friend class CObserver; public: //! The observer-type accepted by this class typedef CObserver ObserverType; /** * Destructor. */ virtual ~CObservable(); /** * This function subscribes an observer to events from this observable. * * @param o The observer that wishes to observe this object. * @return True if it succesfully subscribed, false otherwise. * * If the subscription was succesful, ObserverAdded() will be called * on "o", allowing the subclass to initialize the the observer's state. */ bool AddObserver( ObserverType* o ); /** * This function removes an observer from the list of subscribers. * * @param o The observer to unsubscribe from this observable. * @return True if the observer was removed, false otherwise. * * ObserverRemoved() will be called for the observer "o", allowing * the subclass to take steps to avoid outdated data being kept. */ bool RemoveObserver( ObserverType* o ); protected: /** * This function notifies all or an specific observer of an event. * * @param e The event to be published. * @param o A specific subscribing observer or NULL for all subscribers. * * The purpose of the second parameter is to allow notifications of * specific observers when the ObserverAdded() or ObserverRemoved() * functions are called and it should not be used outside of these * functions. */ void NotifyObservers( const EventType& e, ObserverType* o = NULL ); /** * This function removes all observers from this object. * * ObserverRemoved is called on each observer. */ void RemoveAllObservers(); /** * This function is called when an observer has been added to the observable. */ virtual void ObserverAdded( ObserverType* ) {}; /** * This function is called when observers are removed from the observable. * * Exceptions to this are: * - When the Observable is being destroyed. * - When the Observer is being destroyed. */ virtual void ObserverRemoved( ObserverType* ) {}; private: //! Mutex used to ensure thread-safety of the basic operations. wxMutex m_mutex; typedef std::set ObserverSetType; typedef typename ObserverSetType::iterator myIteratorType; //! Set of all observers subscribing to this observable. ObserverSetType m_list; }; /////////////////////////////////////////////////////////////////////////////// template CObserver::~CObserver() { wxMutexLocker lock( m_mutex ); while ( !m_list.empty() ) { ObservableType* o = *m_list.begin(); { wxMutexLocker oLock(o->m_mutex); o->m_list.erase( this ); } m_list.erase( m_list.begin() ); } } template CObservable::~CObservable() { wxMutexLocker lock( m_mutex ); while ( !m_list.empty() ) { ObserverType* o = *m_list.begin(); { wxMutexLocker oLock(o->m_mutex); o->m_list.erase( this ); } m_list.erase( m_list.begin() ); } } template bool CObservable::AddObserver( CObserver* o ) { wxASSERT( o ); { wxMutexLocker lock(m_mutex); if ( !m_list.insert( o ).second ) { return false; } } { wxMutexLocker oLock(o->m_mutex); o->m_list.insert( this ); } ObserverAdded( o ); return true; } template bool CObservable::RemoveObserver( CObserver* o ) { wxASSERT( o ); { wxMutexLocker lock(m_mutex); if ( !m_list.erase( o ) ) { return false; } } { wxMutexLocker oLock(o->m_mutex); o->m_list.erase( this ); } ObserverRemoved( o ); return true; } template void CObservable::NotifyObservers( const EventType& e, ObserverType* o ) { wxMutexLocker lock(m_mutex); if ( o ) { o->ReceiveNotification( this, e ); } else { myIteratorType it = m_list.begin(); for ( ; it != m_list.end(); ) { CMutexUnlocker unlocker(m_mutex); (*it++)->ReceiveNotification( this, e ); } } } template void CObservable::RemoveAllObservers() { wxMutexLocker lock(m_mutex); while ( !m_list.empty() ) { ObserverType* o = *m_list.begin(); m_list.erase( m_list.begin() ); CMutexUnlocker unlocker(m_mutex); { wxMutexLocker oLock(o->m_mutex); o->m_list.erase( this ); } ObserverRemoved( o ); } } #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ObservableQueue.h0000644000175000017500000002523012611472361021536 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 Mikkel Schubert ( xaignar@users.sourceforge.net ) // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef OBSERVABLEQUEUE_H #define OBSERVABLEQUEUE_H #include "Observable.h" template class CQueueObserver; /** * This class defines the protocol used by the CObservableQueue class. * * This specific protocol can be used by a class to make changes to its * contents visible, assuming that said contents does not rely on being * in a specific order, as insertions commands do not specify positions. * * The class CQueueObserver implements a queue that will always be kept * in sync with the class observed, so that it is possible to handle all * elements in a container object over a longer period of time, which * would normally result in problems with changes accomulating in the list. */ template class CQueueEvent { public: //! The type of list used by this protocol to store values. typedef std::vector ValueList; //! The events used by this observable type. //! Note: If more than one instance of a value has been added, removed or //! updated, then the resulting events should reflect this fact by //! including the same of instances as has been changed. enum Type { //! Signals a QueueObserver that it has been added to a queue. STARTING, //! Signals a QueueObserver that it has been removed from a queue. STOPPING, //! Signals that one or more values have been added. INSERTED, //! Signals that one or more values have been removed. REMOVED, //! Signals that the following values have been updated. CHANGED, //! Signals that all values have been removed. CLEARED, //! Contains the contents of the queue at subscription time. INITIAL }; /** * Constructor for misc events. */ CQueueEvent( Type event ); /** * Constructor for events regarding multiple values. * * Note: CQueueEvent does not take ownership of the specified list. */ CQueueEvent( Type event, const ValueList* list ); /** * Constructor for events regarding a single value */ CQueueEvent( Type event, const ValueType& value ); /** * Returns the event-type. */ Type GetEvent() const { return m_type; } /** * Returns the number of available values passed with the event. */ size_t GetCount() const; /** * Returns a copy of the ith value. */ ValueType GetValue( size_t i ) const; private: //! Pointer to a list of values. May be NULL. const ValueList* m_list; //! Pointer to a single value. May be NULL. const ValueType* m_value; //! The actual event-type. Type m_type; }; /** * This class forms the superclass for observable queues or lists. * * The protocol defined above is used (CQueueEvent). * * By subclassing this class, a container object can ensure that classes * observing it are able to keep in sync with the changes made to the * contents, with a few limits. * * For one thing, the value is assumed to be both key and value, so * multimaps cannot be used with this class, since it will only pass * the key. Nor can lists that rely on a specific order be used, since * neither insertion nor deletion operations specify a specific * object or position, instead just a "add/remove one of these" rule. * * The main purpose of this class is to allow another class to follow * a list or queue, regardles of changes in actual order of the items * and regardles of changes to the contents. */ template class CObservableQueue : public CObservable< CQueueEvent > { public: /** * Destructor. * * Sends STOPPING to all observers. */ virtual ~CObservableQueue(); protected: typedef CQueueEvent< ValueType > EventType; typedef CObserver< EventType > ObserverType; typedef typename EventType::ValueList ValueList; /** * Sends a STARTING event to new observers. */ virtual void ObserverAdded( ObserverType* ); /** * Sends a STOPPING event to removed observers. */ virtual void ObserverRemoved( ObserverType* ); }; /** * This class is an automatically synchronized queue connected with an ObservableQueue. * * Note that this observer can only be assigned to ONE observable at a time! * * This class implements a queue (out-order not specified) that allows an * ObservableQueue object to be object to be used as a queue without making * by another object in a safe manner. Changes to the contents of the original * queue are propagated to this queue, such that it will never contain values * not found in the original queue and such that it will add new values added * to the original queue. * * This allows the contents to be accessed safely, when for instance it is * needed to iterate over the contents over a period of time, where one * cannot be certain of the current state of the actual contents of the * original lists. * * This class supersedes such broken solutions such as remembering the last * used position in the original list, since no changes made to the original * list will result in items being skipped or treated twice*. * * * With the exception of the same item being removed and then re-added, in * which case the CQueueObserver class will consider it a new item. */ template class CQueueObserver : public CObserver< CQueueEvent > { public: typedef CQueueEvent EventType; typedef typename CObserver< EventType >::ObservableType ObservableType; typedef typename EventType::ValueList ValueList; /** * Constructor. */ CQueueObserver(); /** * Overloaded notification function. */ virtual void ReceiveNotification( const ObservableType*, const EventType& e ); /** * Returns the next element from the queue. * * Note: Objects will not be returned in the same order as * they were found in the original observable. Also, note * that calling GetNext() on an empty queue should only be * done if the default contructed value does not match a * valid object and can be used to check for End of Queue. */ ValueType GetNext(); /** * Returns the number of remaining elements in the queue. */ size_t GetRemaining() const; /** * Returns true if the observer is currently assigned to an observable-queue. */ bool IsActive() const; /** * Clears the queue and readds itself to the current object being observed. */ void Reset(); private: //! Lock used to ensure the threadsafety of the class mutable wxMutex m_mutex; typedef std::multiset Queue; typedef typename Queue::iterator QueueIterator; //! The remaining items. Queue m_queue; //! Used to check that we are only subscribed to one queue at a time const ObservableType* m_owner; }; /////////////////////////////////////////////////// template CQueueEvent::CQueueEvent( Type event ) : m_list( NULL ), m_value( NULL ), m_type( event ) { } template CQueueEvent::CQueueEvent( Type event, const ValueList* list ) : m_list( list ), m_value( NULL ), m_type( event ) { wxASSERT( list ); } template CQueueEvent::CQueueEvent( Type event, const ValueType& value ) : m_list( NULL ), m_value( &value ), m_type( event ) { } template size_t CQueueEvent::GetCount() const { if ( m_list ) { return m_list->size(); } else if ( m_value ) { return 1; } else { return 0; } } template ValueType CQueueEvent::GetValue( size_t i ) const { if ( m_list ) { return (*m_list).at( i ); } else if ( m_value && i == 0 ) { return *m_value; } else { wxFAIL; return ValueType(); } } template CObservableQueue::~CObservableQueue() { this->RemoveAllObservers(); } template void CObservableQueue::ObserverAdded( ObserverType* o ) { this->NotifyObservers( EventType( EventType::STARTING ), o ); } template void CObservableQueue::ObserverRemoved( ObserverType* o ) { this->NotifyObservers( EventType( EventType::STOPPING ), o ); } template CQueueObserver::CQueueObserver() { m_owner = NULL; } template void CQueueObserver::ReceiveNotification( const ObservableType* o, const EventType& e ) { wxMutexLocker lock( m_mutex ); if ( e.GetEvent() == EventType::INSERTED || e.GetEvent() == EventType::INITIAL ) { for ( size_t i = 0; i < e.GetCount(); i++ ) { m_queue.insert( e.GetValue( i ) ); } } else if ( e.GetEvent() == EventType::REMOVED ) { for ( size_t i = 0; i < e.GetCount(); i++ ) { QueueIterator it = m_queue.find( e.GetValue( i ) ); if ( it != m_queue.end() ) { m_queue.erase( it ); } } } else if ( e.GetEvent() == EventType::CLEARED ) { m_queue.clear(); } else if ( e.GetEvent() == EventType::STOPPING ) { m_queue.clear(); m_owner = NULL; } else if ( e.GetEvent() == EventType::STARTING ) { wxASSERT(m_owner == NULL); m_owner = o; } else { wxFAIL; } } template ValueType CQueueObserver::GetNext() { wxMutexLocker lock( m_mutex ); if (!m_queue.empty()) { ValueType v = *m_queue.begin(); m_queue.erase( m_queue.begin() ); return v; } return ValueType(); } template size_t CQueueObserver::GetRemaining() const { wxMutexLocker lock( m_mutex ); return m_queue.size(); } template bool CQueueObserver::IsActive() const { return (m_owner != NULL); } template void CQueueObserver::Reset() { ObservableType* owner; { wxMutexLocker lock(m_mutex); m_queue.clear(); owner = const_cast( m_owner ); } owner->RemoveObserver( this ); owner->AddObserver( this ); } #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/OtherFunctions.cpp0000644000175000017500000014320112611472361021751 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // The backtrace functions contain modified code from libYaMa, (c) Venkatesha Murthy G. // You can check libYaMa at http://personal.pavanashree.org/libyama/ #include #include // Needed for wxFileName #include // Needed for wxLogNull #ifdef HAVE_CONFIG_H #include "config.h" // Needed for a number of defines #endif #include // Do_not_auto_remove #include #include #include #include #include "Logger.h" #include "BitVector.h" // Needed for BitVector #include "OtherFunctions.h" // Interface declarations #include #ifdef __WXBASE__ #include #else #include #endif wxString GetMuleVersion() { wxString ver(wxT(VERSION)); ver += wxT(" compiled with "); // Figure out the wx build-type #if defined(__WXGTK20__) ver += wxT("wxGTK2"); #elif defined(__WXGTK__) ver += wxT("wxGTK1"); // 2.9 has different builds for OSX: Carbon and Cocoa #elif defined(__WXOSX_CARBON__) ver += wxT("wxOSX Carbon"); #elif defined(__WXOSX_COCOA__) ver += wxT("wxOSX Cocoa"); // different Cocoa port, "not been updated very actively since beginning 2008" #elif defined(__WXCOCOA__) ver += wxT("wxCocoa"); // 2.8 Mac #elif defined(__WXMAC__) ver += wxT("wxMac"); #elif defined(__WXBASE__) ver += wxT("wxBase"); #elif defined(__WINDOWS__) && defined(__VISUALC__) ver += wxT("wxMSW VC"); #elif defined(__WINDOWS__) ver += wxT("wxMSW"); #endif ver += CFormat(wxT(" v%d.%d.%d")) % wxMAJOR_VERSION % wxMINOR_VERSION % wxRELEASE_NUMBER; if (!MuleBoostVersion.IsEmpty()) { ver += wxT(" and Boost ") + MuleBoostVersion; } #ifdef __DEBUG__ ver += wxT(" (Debugging)"); #endif #ifdef SVNDATE ver += CFormat(wxT(" (Snapshot: %s)")) % wxT(SVNDATE); #endif return ver; } // Formats a filesize in bytes to make it suitable for displaying wxString CastItoXBytes( uint64 count ) { if (count < 1024) return CFormat(wxT("%u ")) % count + wxPLURAL("byte", "bytes", count) ; else if (count < 1048576) return CFormat(wxT("%u ")) % (count >> 10) + _("kB") ; else if (count < 1073741824) return CFormat(wxT("%.2f ")) % ((float)(uint32)count/1048576) + _("MB") ; else if (count < 1099511627776LL) return CFormat(wxT("%.3f ")) % ((float)((uint32)(count/1024))/1048576) + _("GB") ; else return CFormat(wxT("%.3f ")) % ((float)count/1099511627776LL) + _("TB") ; } wxString CastItoIShort(uint64 count) { if (count < 1000) return CFormat(wxT("%u")) % count; else if (count < 1000000) return CFormat(wxT("%.0f")) % ((float)(uint32)count/1000) + _("k") ; else if (count < 1000000000) return CFormat(wxT("%.2f")) % ((float)(uint32)count/1000000) + _("M") ; else if (count < 1000000000000LL) return CFormat(wxT("%.2f")) % ((float)((uint32)(count/1000))/1000000) + _("G") ; else return CFormat(wxT("%.2f")) % ((float)count/1000000000000LL) + _("T"); } wxString CastItoSpeed(uint32 bytes) { if (bytes < 1024) return CFormat(wxT("%u ")) % bytes + wxPLURAL("byte/sec", "bytes/sec", bytes); else if (bytes < 1048576) return CFormat(wxT("%.2f ")) % (bytes / 1024.0) + _("kB/s"); else return CFormat(wxT("%.2f ")) % (bytes / 1048576.0) + _("MB/s"); } // Make a time value in seconds suitable for displaying wxString CastSecondsToHM(uint32 count, uint16 msecs) { if (count < 60) { if (!msecs) { return CFormat(wxT("%02u %s")) % count % _("secs"); } else { return CFormat(wxT("%.3f %s")) % (count + ((float)msecs/1000)) % _("secs"); } } else if (count < 3600) { return CFormat(wxT("%u:%02u %s")) % (count/60) % (count % 60) % _("mins"); } else if (count < 86400) { return CFormat(wxT("%u:%02u %s")) % (count/3600) % ((count % 3600)/60) % _("hours"); } else { return CFormat(wxT("%u %s %02u:%02u %s")) % (count/86400) % _("Days") % ((count % 86400)/3600) % ((count % 3600)/60) % _("hours"); } } // Examines a filename and determines the filetype FileType GetFiletype(const CPath& filename) { // FIXME: WTF do we have two such functions in the first place? switch (GetED2KFileTypeID(filename)) { case ED2KFT_AUDIO: return ftAudio; case ED2KFT_VIDEO: return ftVideo; case ED2KFT_IMAGE: return ftPicture; case ED2KFT_PROGRAM: return ftProgram; case ED2KFT_DOCUMENT: return ftText; case ED2KFT_ARCHIVE: return ftArchive; case ED2KFT_CDIMAGE: return ftCDImage; default: return ftAny; } } // Returns the (translated) description assosiated with a FileType wxString GetFiletypeDesc(FileType type, bool translated) { switch ( type ) { case ftVideo: if (translated) { return _("Videos"); } else { return wxT("Videos"); } break; case ftAudio: if (translated) { return _("Audio"); } else { return wxT("Audio"); } break; case ftArchive: if (translated) { return _("Archives"); } else { return wxT("Archives"); } break; case ftCDImage: if (translated) { return _("CD-Images"); } else { return wxT("CD-Images"); } break; case ftPicture: if (translated) { return _("Pictures"); } else { return wxT("Pictures"); } break; case ftText: if (translated) { return _("Texts"); } else { return wxT("Texts"); } break; case ftProgram: if (translated) { return _("Programs"); } else { return wxT("Programs"); } break; default: if (translated) { return _("Any"); } else { return wxT("Any"); } break; } } // Returns the Typename, examining the extention of the given filename wxString GetFiletypeByName(const CPath& filename, bool translated) { return GetFiletypeDesc(GetFiletype(filename), translated); } // Return the text associated with a rating of a file wxString GetRateString(uint16 rate) { switch ( rate ) { case 0: return _("Not rated"); case 1: return _("Invalid / Corrupt / Fake"); case 2: return _("Poor"); case 3: return _("Fair"); case 4: return _("Good"); case 5: return _("Excellent"); default: return _("Not rated"); } } /** * Return the size in bytes of the given size-type * * @param type The type (as an int) where: 0 = Byte, 1 = KB, 2 = MB, 3 = GB * * @return The amount of Bytes the provided size-type represents * * Values over GB aren't handled since the amount of Bytes 1TB represents * is over the uint32 capacity */ uint32 GetTypeSize(uint8 type) { enum {Bytes, KB, MB, GB}; int size; switch(type) { case Bytes: size = 1; break; case KB: size = 1024; break; case MB: size = 1048576; break; case GB: size = 1073741824; break; default: size = -1; break; } return size; } // Base16 chars for encode an decode functions static wxChar base16Chars[17] = wxT("0123456789ABCDEF"); static wxChar base32Chars[33] = wxT("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"); #define BASE16_LOOKUP_MAX 23 static wxChar base16Lookup[BASE16_LOOKUP_MAX][2] = { { wxT('0'), 0x0 }, { wxT('1'), 0x1 }, { wxT('2'), 0x2 }, { wxT('3'), 0x3 }, { wxT('4'), 0x4 }, { wxT('5'), 0x5 }, { wxT('6'), 0x6 }, { wxT('7'), 0x7 }, { wxT('8'), 0x8 }, { wxT('9'), 0x9 }, { wxT(':'), 0x9 }, { wxT(';'), 0x9 }, { wxT('<'), 0x9 }, { wxT('='), 0x9 }, { wxT('>'), 0x9 }, { wxT('?'), 0x9 }, { wxT('@'), 0x9 }, { wxT('A'), 0xA }, { wxT('B'), 0xB }, { wxT('C'), 0xC }, { wxT('D'), 0xD }, { wxT('E'), 0xE }, { wxT('F'), 0xF } }; // Returns a BASE16 encoded byte array // // [In] // buffer: Pointer to byte array // bufLen: Lenght of buffer array // // [Return] // wxString object with BASE16 encoded byte array wxString EncodeBase16(const unsigned char* buffer, unsigned int bufLen) { wxString Base16Buff; for(unsigned int i = 0; i < bufLen; ++i) { Base16Buff += base16Chars[buffer[i] >> 4]; Base16Buff += base16Chars[buffer[i] & 0xf]; } return Base16Buff; } // Decodes a BASE16 string into a byte array // // [In] // base16Buffer: String containing BASE16 // base16BufLen: Lenght BASE16 coded string's length // // [Out] // buffer: byte array containing decoded string unsigned int DecodeBase16(const wxString &base16Buffer, unsigned int base16BufLen, byte *buffer) { if (base16BufLen & 1) { return 0; } unsigned int ret = base16BufLen >> 1; memset( buffer, 0, ret); for(unsigned int i = 0; i < base16BufLen; ++i) { int lookup = toupper(base16Buffer[i]) - wxT('0'); // Check to make sure that the given word falls inside a valid range byte word = (lookup < 0 || lookup >= BASE16_LOOKUP_MAX) ? 0xFF : base16Lookup[lookup][1]; unsigned idx = i >> 1; buffer[idx] = (i & 1) ? // odd or even? (buffer[idx] | word) : (word << 4); } return ret; } // Returns a BASE32 encoded byte array // // [In] // buffer: Pointer to byte array // bufLen: Lenght of buffer array // // [Return] // wxString object with BASE32 encoded byte array wxString EncodeBase32(const unsigned char* buffer, unsigned int bufLen) { wxString Base32Buff; unsigned int i, index; unsigned char word; for(i = 0, index = 0; i < bufLen;) { // Is the current word going to span a byte boundary? if (index > 3) { word = (buffer[i] & (0xFF >> index)); index = (index + 5) % 8; word <<= index; if (i < bufLen - 1) { word |= buffer[i + 1] >> (8 - index); } ++i; } else { word = (buffer[i] >> (8 - (index + 5))) & 0x1F; index = (index + 5) % 8; if (index == 0) { ++i; } } Base32Buff += (char) base32Chars[word]; } return Base32Buff; } // Decodes a BASE32 string into a byte array // // [In] // base32Buffer: String containing BASE32 // base32BufLen: Lenght BASE32 coded string's length // // [Out] // buffer: byte array containing decoded string // [Return] // nDecodeLen: unsigned int DecodeBase32(const wxString &base32Buffer, unsigned int base32BufLen, unsigned char *buffer) { size_t nInputLen = base32Buffer.Length(); uint32 nDecodeLen = (nInputLen * 5) / 8; if ((nInputLen * 5) % 8 > 0) { ++nDecodeLen; } if (base32BufLen == 0) { return nDecodeLen; } if (nDecodeLen > base32BufLen) { return 0; } uint32 nBits = 0; int nCount = 0; for (size_t i = 0; i < nInputLen; ++i) { if (base32Buffer[i] >= wxT('A') && base32Buffer[i] <= wxT('Z')) { nBits |= ( base32Buffer[i] - wxT('A') ); } else if (base32Buffer[i] >= wxT('a') && base32Buffer[i] <= wxT('z')) { nBits |= ( base32Buffer[i] - wxT('a') ); } else if (base32Buffer[i] >= wxT('2') && base32Buffer[i] <= wxT('7')) { nBits |= ( base32Buffer[i] - wxT('2') + 26 ); } else { return 0; } nCount += 5; if (nCount >= 8) { *buffer++ = (byte)( nBits >> (nCount - 8) ); nCount -= 8; } nBits <<= 5; } return nDecodeLen; } /* * base64.c * * Base64 encoding/decoding command line filter * * Copyright (c) 2002-2011 Matthias Gaertner * Adapted to use wxWidgets by * Copyright (c) 2005-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) * */ static const wxString to_b64( /* 0000000000111111111122222222223333333333444444444455555555556666 */ /* 0123456789012345678901234567890123456789012345678901234567890123 */ wxT("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")); /* Option variables */ static bool g_fUseCRLF = false; static unsigned int g_nCharsPerLine = 72; static wxString strHeaderLine; wxString EncodeBase64(const char *pbBufferIn, unsigned int bufLen) { wxString pbBufferOut; wxString strHeader; if( !strHeaderLine.IsEmpty() ) { strHeader = wxT("-----BEGIN ") + strHeaderLine + wxT("-----"); if( g_fUseCRLF ) { strHeader += wxT("\r"); } strHeader += wxT("\n"); } unsigned long nDiv = ((unsigned long)bufLen) / 3; unsigned long nRem = ((unsigned long)bufLen) % 3; unsigned int NewLineSize = g_fUseCRLF ? 2 : 1; // Allocate enough space in the output buffer to speed up things pbBufferOut.Alloc( strHeader.Len() * 2 + // header/footer (bufLen * 4) / 3 + 1 + // Number of codes nDiv * NewLineSize + // Number of new lines (nRem ? 1 : 0) * NewLineSize ); // Last line pbBufferOut = strHeader; unsigned long nChars = 0; const unsigned char *pIn = (unsigned char*)pbBufferIn; while( nDiv > 0 ) { pbBufferOut += to_b64[ (pIn[0] >> 2) & 0x3f]; pbBufferOut += to_b64[((pIn[0] << 4) & 0x30) | ((pIn[1] >> 4) & 0xf)]; pbBufferOut += to_b64[((pIn[1] << 2) & 0x3c) | ((pIn[2] >> 6) & 0x3)]; pbBufferOut += to_b64[ pIn[2] & 0x3f]; pIn += 3; nDiv--; nChars += 4; if( nChars >= g_nCharsPerLine && g_nCharsPerLine != 0 ) { nChars = 0; if( g_fUseCRLF ) { pbBufferOut += wxT("\r"); } pbBufferOut += wxT("\n"); } } switch( nRem ) { case 2: pbBufferOut += to_b64[ (pIn[0] >> 2) & 0x3f]; pbBufferOut += to_b64[((pIn[0] << 4) & 0x30) | ((pIn[1] >> 4) & 0xf)]; pbBufferOut += to_b64[ (pIn[1] << 2) & 0x3c]; pbBufferOut += wxT("="); nChars += 4; if( nChars >= g_nCharsPerLine && g_nCharsPerLine != 0 ) { nChars = 0; if( g_fUseCRLF ) { pbBufferOut += wxT("\r"); } pbBufferOut += wxT("\n"); } break; case 1: pbBufferOut += to_b64[ (pIn[0] >> 2) & 0x3f]; pbBufferOut += to_b64[ (pIn[0] << 4) & 0x30]; pbBufferOut += wxT("="); pbBufferOut += wxT("="); nChars += 4; if( nChars >= g_nCharsPerLine && g_nCharsPerLine != 0 ) { nChars = 0; if( g_fUseCRLF ) { pbBufferOut += wxT("\r"); } pbBufferOut += wxT("\n"); } break; } if( nRem > 0 ) { if( nChars > 0 ) { if( g_fUseCRLF ) { pbBufferOut += wxT("\r"); } pbBufferOut += wxT("\n"); } } if( !strHeaderLine.IsEmpty() ) { pbBufferOut = wxT("-----END ") + strHeaderLine + wxT("-----"); if( g_fUseCRLF ) { pbBufferOut += wxT("\r"); } pbBufferOut += wxT("\n"); } return pbBufferOut; } unsigned int DecodeBase64(const wxString &base64Buffer, unsigned int base64BufLen, unsigned char *buffer) { int z = 0; // 0 Normal, 1 skip MIME separator (---) to end of line unsigned int nData = 0; unsigned int i = 0; if (base64BufLen == 0) { *buffer = 0; nData = 1; } for(unsigned int j = 0; j < base64BufLen; ++j) { wxChar c = base64Buffer[j]; wxChar bits = wxT('z'); if( z > 0 ) { if(c == wxT('\n')) { z = 0; } } else if(c >= wxT('A') && c <= wxT('Z')) { bits = c - wxT('A'); } else if(c >= wxT('a') && c <= wxT('z')) { bits = c - wxT('a') + (wxChar)26; } else if(c >= wxT('0') && c <= wxT('9')) { bits = c - wxT('0') + (wxChar)52; } else if(c == wxT('+')) { bits = (wxChar)62; } else if(c == wxT('/')) { bits = (wxChar)63; } else if(c == wxT('-')) { z = 1; } else if(c == wxT('=')) { break; } else { bits = wxT('y'); } // Skips anything that was not recognized // as a base64 valid char ('y' or 'z') if (bits < (wxChar)64) { switch (nData++) { case 0: buffer[i+0] = (bits << 2) & 0xfc; break; case 1: buffer[i+0] |= (bits >> 4) & 0x03; buffer[i+1] = (bits << 4) & 0xf0; break; case 2: buffer[i+1] |= (bits >> 2) & 0x0f; buffer[i+2] = (bits << 6) & 0xc0; break; case 3: buffer[i+2] |= bits & 0x3f; break; } if (nData == 4) { nData = 0; i += 3; } } } if (nData == 1) { // Syntax error or buffer was empty *buffer = 0; nData = 0; i = 0; } else { buffer[i+nData] = 0; } return i + nData; } // Returns the text assosiated with a category type wxString GetCatTitle(AllCategoryFilter cat) { switch (cat) { case acfAll: return _("all"); case acfAllOthers: return _("all others"); case acfIncomplete: return _("Incomplete"); case acfCompleted: return _("Completed"); case acfWaiting: return _("Waiting"); case acfDownloading: return _("Downloading"); case acfErroneous: return _("Erroneous"); case acfPaused: return _("Paused"); case acfStopped: return _("Stopped"); case acfVideo: return _("Video"); case acfAudio: return _("Audio"); case acfArchive: return _("Archive"); case acfCDImages: return _("CD-Images"); case acfPictures: return _("Pictures"); case acfText: return _("Text"); case acfActive: return _("Active"); default: return wxT("?"); } } typedef std::map SED2KFileTypeMap; typedef SED2KFileTypeMap::value_type SED2KFileTypeMapElement; static SED2KFileTypeMap ED2KFileTypesMap; class CED2KFileTypes{ public: CED2KFileTypes() { ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".669"), ED2KFT_AUDIO)); // 8 channel tracker module ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".aac"), ED2KFT_AUDIO)); // Advanced Audio Coding File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ac3"), ED2KFT_AUDIO)); // Audio Codec 3 File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".aif"), ED2KFT_AUDIO)); // Audio Interchange File Format ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".aifc"), ED2KFT_AUDIO)); // Audio Interchange File Format ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".aiff"), ED2KFT_AUDIO)); // Audio Interchange File Format ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".amf"), ED2KFT_AUDIO)); // DSMI Advanced Module Format ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".amr"), ED2KFT_AUDIO)); // Adaptive Multi-Rate Codec File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ams"), ED2KFT_AUDIO)); // Extreme Tracker Module ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ape"), ED2KFT_AUDIO)); // Monkey's Audio Lossless Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".au"), ED2KFT_AUDIO)); // Audio File (Sun, Unix) ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".aud"), ED2KFT_AUDIO)); // General Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".audio"), ED2KFT_AUDIO)); // General Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".cda"), ED2KFT_AUDIO)); // CD Audio Track ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".dbm"), ED2KFT_AUDIO)); ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".dmf"), ED2KFT_AUDIO)); // Delusion Digital Music File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".dsm"), ED2KFT_AUDIO)); // Digital Sound Module ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".dts"), ED2KFT_AUDIO)); // DTS Encoded Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".far"), ED2KFT_AUDIO)); // Farandole Composer Module ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".flac"), ED2KFT_AUDIO)); // Free Lossless Audio Codec File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".it"), ED2KFT_AUDIO)); // Impulse Tracker Module ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".m1a"), ED2KFT_AUDIO)); // MPEG-1 Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".m2a"), ED2KFT_AUDIO)); // MPEG-2 Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".m4a"), ED2KFT_AUDIO)); // MPEG-4 Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mdl"), ED2KFT_AUDIO)); // DigiTrakker Module ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".med"), ED2KFT_AUDIO)); // Amiga MED Sound File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mid"), ED2KFT_AUDIO)); // MIDI File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".midi"), ED2KFT_AUDIO)); // MIDI File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mka"), ED2KFT_AUDIO)); // Matroska Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mod"), ED2KFT_AUDIO)); // Amiga Music Module File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mol"), ED2KFT_AUDIO)); ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mp1"), ED2KFT_AUDIO)); // MPEG-1 Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mp2"), ED2KFT_AUDIO)); // MPEG-2 Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mp3"), ED2KFT_AUDIO)); // MPEG-3 Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mpa"), ED2KFT_AUDIO)); // MPEG Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mpc"), ED2KFT_AUDIO)); // Musepack Compressed Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mpp"), ED2KFT_AUDIO)); ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mtm"), ED2KFT_AUDIO)); // MultiTracker Module ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".nst"), ED2KFT_AUDIO)); // NoiseTracker ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ogg"), ED2KFT_AUDIO)); // Ogg Vorbis Compressed Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".okt"), ED2KFT_AUDIO)); // Oktalyzer Module (Amiga) ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".psm"), ED2KFT_AUDIO)); // Protracker Studio Module ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ptm"), ED2KFT_AUDIO)); // PolyTracker Module ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ra"), ED2KFT_AUDIO)); // Real Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".rmi"), ED2KFT_AUDIO)); // MIDI File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".s3m"), ED2KFT_AUDIO)); // Scream Tracker 3 Module ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".snd"), ED2KFT_AUDIO)); // Audio File (Sun, Unix) ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".stm"), ED2KFT_AUDIO)); // Scream Tracker 2 Module ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ult"), ED2KFT_AUDIO)); // UltraTracker ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".umx"), ED2KFT_AUDIO)); // Unreal Music Package ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".wav"), ED2KFT_AUDIO)); // WAVE Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".wma"), ED2KFT_AUDIO)); // Windows Media Audio File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".wow"), ED2KFT_AUDIO)); // Grave Composer audio tracker ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".xm"), ED2KFT_AUDIO)); // Fasttracker 2 Extended Module ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".3g2"), ED2KFT_VIDEO)); // 3GPP Multimedia File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".3gp"), ED2KFT_VIDEO)); // 3GPP Multimedia File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".3gp2"), ED2KFT_VIDEO)); // 3GPP Multimedia File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".3gpp"), ED2KFT_VIDEO)); // 3GPP Multimedia File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".asf"), ED2KFT_VIDEO)); // Advanced Systems Format (MS) ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".amv"), ED2KFT_VIDEO)); // Anime Music Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".asf"), ED2KFT_VIDEO)); // Advanced Systems Format File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".avi"), ED2KFT_VIDEO)); // Audio Video Interleave File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".bik"), ED2KFT_VIDEO)); // BINK Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".divx"), ED2KFT_VIDEO)); // DivX-Encoded Movie File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".dvr-ms"),ED2KFT_VIDEO)); // Microsoft Digital Video Recording ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".flc"), ED2KFT_VIDEO)); // FLIC Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".fli"), ED2KFT_VIDEO)); // FLIC Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".flic"), ED2KFT_VIDEO)); // FLIC Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".flv"), ED2KFT_VIDEO)); // Flash Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".hdmov"), ED2KFT_VIDEO)); // High-Definition QuickTime Movie ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ifo"), ED2KFT_VIDEO)); // DVD-Video Disc Information File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".m1v"), ED2KFT_VIDEO)); // MPEG-1 Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".m2t"), ED2KFT_VIDEO)); // MPEG-2 Video Transport Stream ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".m2ts"), ED2KFT_VIDEO)); // MPEG-2 Video Transport Stream ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".m2v"), ED2KFT_VIDEO)); // MPEG-2 Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".m4b"), ED2KFT_VIDEO)); // MPEG-4 Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".m4v"), ED2KFT_VIDEO)); // MPEG-4 Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mkv"), ED2KFT_VIDEO)); // Matroska Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mov"), ED2KFT_VIDEO)); // QuickTime Movie File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".movie"), ED2KFT_VIDEO)); // QuickTime Movie File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mp1v"), ED2KFT_VIDEO)); // QuickTime Movie File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mp2v"), ED2KFT_VIDEO)); // MPEG-1 Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mp4"), ED2KFT_VIDEO)); // MPEG-2 Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mpe"), ED2KFT_VIDEO)); // MPEG-4 Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mpeg"), ED2KFT_VIDEO)); // MPEG Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mpg"), ED2KFT_VIDEO)); // MPEG Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mps"), ED2KFT_VIDEO)); // MPEG Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mpv"), ED2KFT_VIDEO)); // MPEG Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mpv1"), ED2KFT_VIDEO)); // MPEG-1 Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mpv2"), ED2KFT_VIDEO)); // MPEG-2 Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ogm"), ED2KFT_VIDEO)); // Ogg Media File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ogv"), ED2KFT_VIDEO)); // Ogg Theora Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".pva"), ED2KFT_VIDEO)); // MPEG Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".qt"), ED2KFT_VIDEO)); // QuickTime Movie ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ram"), ED2KFT_VIDEO)); // Real Audio Media ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ratdvd"),ED2KFT_VIDEO)); // RatDVD Disk Image ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".rm"), ED2KFT_VIDEO)); // Real Media File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".rmm"), ED2KFT_VIDEO)); // Real Media File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".rmvb"), ED2KFT_VIDEO)); // Real Video Variable Bit Rate File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".rv"), ED2KFT_VIDEO)); // Real Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".rv9"), ED2KFT_VIDEO)); ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".smil"), ED2KFT_VIDEO)); // SMIL Presentation File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".smk"), ED2KFT_VIDEO)); // Smacker Compressed Movie File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".swf"), ED2KFT_VIDEO)); // Macromedia Flash Movie ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".tp"), ED2KFT_VIDEO)); // Video Transport Stream File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ts"), ED2KFT_VIDEO)); // Video Transport Stream File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".vid"), ED2KFT_VIDEO)); // General Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".video"), ED2KFT_VIDEO)); // General Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".vivo"), ED2KFT_VIDEO)); // VivoActive Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".vob"), ED2KFT_VIDEO)); // DVD Video Object File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".vp6"), ED2KFT_VIDEO)); // TrueMotion VP6 Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".webm"), ED2KFT_VIDEO)); // WebM Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".wm"), ED2KFT_VIDEO)); // Windows Media Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".wmv"), ED2KFT_VIDEO)); // Windows Media Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".xvid"), ED2KFT_VIDEO)); // Xvid-Encoded Video File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".bmp"), ED2KFT_IMAGE)); // Bitmap Image File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".dcx"), ED2KFT_IMAGE)); // FAXserve Fax Document ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".emf"), ED2KFT_IMAGE)); // Enhanced Windows Metafile ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".gif"), ED2KFT_IMAGE)); // Graphical Interchange Format File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ico"), ED2KFT_IMAGE)); // Icon File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".jfif"), ED2KFT_IMAGE)); // JPEG File Interchange Format ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".jpe"), ED2KFT_IMAGE)); // JPEG Image File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".jpeg"), ED2KFT_IMAGE)); // JPEG Image File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".jpg"), ED2KFT_IMAGE)); // JPEG Image File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".pct"), ED2KFT_IMAGE)); // PICT Picture File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".pcx"), ED2KFT_IMAGE)); // Paintbrush Bitmap Image File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".pic"), ED2KFT_IMAGE)); // PICT Picture File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".pict"), ED2KFT_IMAGE)); // PICT Picture File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".png"), ED2KFT_IMAGE)); // Portable Network Graphic ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".psd"), ED2KFT_IMAGE)); // Photoshop Document ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".psp"), ED2KFT_IMAGE)); // Paint Shop Pro Image File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".tga"), ED2KFT_IMAGE)); // Targa Graphic ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".tif"), ED2KFT_IMAGE)); // Tagged Image File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".tiff"), ED2KFT_IMAGE)); // Tagged Image File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".wbmp"), ED2KFT_IMAGE)); // Wireless Application Protocol Bitmap Format ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".webp"), ED2KFT_IMAGE)); // Weppy Photo File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".wmf"), ED2KFT_IMAGE)); // Windows Metafile ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".wmp"), ED2KFT_IMAGE)); // Windows Media Photo File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".xif"), ED2KFT_IMAGE)); // ScanSoft Pagis Extended Image Format File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".xpm"), ED2KFT_IMAGE)); // X-Windows Pixmap ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".7z"), ED2KFT_ARCHIVE)); // 7-Zip Compressed File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ace"), ED2KFT_ARCHIVE)); // WinAce Compressed File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".alz"), ED2KFT_ARCHIVE)); // ALZip Archive ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".arc"), ED2KFT_ARCHIVE)); // Compressed File Archive ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".arj"), ED2KFT_ARCHIVE)); // ARJ Compressed File Archive ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".bz2"), ED2KFT_ARCHIVE)); // Bzip Compressed File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".cab"), ED2KFT_ARCHIVE)); // Cabinet File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".cbr"), ED2KFT_ARCHIVE)); // Comic Book RAR Archive ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".cbt"), ED2KFT_ARCHIVE)); // Comic Book Tarball ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".cbz"), ED2KFT_ARCHIVE)); // Comic Book ZIP Archive ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".gz"), ED2KFT_ARCHIVE)); // Gnu Zipped File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".hqx"), ED2KFT_ARCHIVE)); // BinHex 4.0 Encoded File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".lha"), ED2KFT_ARCHIVE)); // LHARC Compressed Archive ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".lzh"), ED2KFT_ARCHIVE)); // LZH Compressed File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".msi"), ED2KFT_ARCHIVE)); // Microsoft Installer File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".pak"), ED2KFT_ARCHIVE)); // PAK (Packed) File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".par"), ED2KFT_ARCHIVE)); // Parchive Index File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".par2"), ED2KFT_ARCHIVE)); // Parchive 2 Index File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".rar"), ED2KFT_ARCHIVE)); // WinRAR Compressed Archive ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".sea"), ED2KFT_ARCHIVE)); // Self-Extracting Archive (Mac) ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".sit"), ED2KFT_ARCHIVE)); // Stuffit Archive ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".sitx"), ED2KFT_ARCHIVE)); // Stuffit X Archive ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".tar"), ED2KFT_ARCHIVE)); // Consolidated Unix File Archive ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".tbz2"), ED2KFT_ARCHIVE)); // Tar BZip 2 Compressed File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".tgz"), ED2KFT_ARCHIVE)); // Gzipped Tar File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".uc2"), ED2KFT_ARCHIVE)); // UltraCompressor 2 Archive ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".xpi"), ED2KFT_ARCHIVE)); // Mozilla Installer Package ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".z"), ED2KFT_ARCHIVE)); // Unix Compressed File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".zip"), ED2KFT_ARCHIVE)); // Zipped File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".zoo"), ED2KFT_ARCHIVE)); // Zoo Archive ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".bat"), ED2KFT_PROGRAM)); // Batch File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".cmd"), ED2KFT_PROGRAM)); // Command File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".com"), ED2KFT_PROGRAM)); // COM File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".exe"), ED2KFT_PROGRAM)); // Executable File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".hta"), ED2KFT_PROGRAM)); // HTML Application ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".js"), ED2KFT_PROGRAM)); // Java Script ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".jse"), ED2KFT_PROGRAM)); // Encoded Java Script ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".msc"), ED2KFT_PROGRAM)); // Microsoft Common Console File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".vbe"), ED2KFT_PROGRAM)); // Encoded Visual Basic Script File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".vbs"), ED2KFT_PROGRAM)); // Visual Basic Script File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".wsf"), ED2KFT_PROGRAM)); // Windows Script File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".wsh"), ED2KFT_PROGRAM)); // Windows Scripting Host File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".bin"), ED2KFT_CDIMAGE)); // CD Image ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".bwa"), ED2KFT_CDIMAGE)); // BlindWrite Disk Information File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".bwi"), ED2KFT_CDIMAGE)); // BlindWrite CD/DVD Disc Image ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".bws"), ED2KFT_CDIMAGE)); // BlindWrite Sub Code File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".bwt"), ED2KFT_CDIMAGE)); // BlindWrite 4 Disk Image ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ccd"), ED2KFT_CDIMAGE)); // CloneCD Disk Image ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".cue"), ED2KFT_CDIMAGE)); // Cue Sheet File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".dmg"), ED2KFT_CDIMAGE)); // Mac OS X Disk Image ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".dmz"), ED2KFT_CDIMAGE)); ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".img"), ED2KFT_CDIMAGE)); // Disk Image Data File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".iso"), ED2KFT_CDIMAGE)); // Disc Image File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mdf"), ED2KFT_CDIMAGE)); // Media Disc Image File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mds"), ED2KFT_CDIMAGE)); // Media Descriptor File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".nrg"), ED2KFT_CDIMAGE)); // Nero CD/DVD Image File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".sub"), ED2KFT_CDIMAGE)); // Subtitle File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".toast"), ED2KFT_CDIMAGE)); // Toast Disc Image ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".azw"), ED2KFT_DOCUMENT)); // EBook File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".chm"), ED2KFT_DOCUMENT)); // Compiled HTML Help File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".css"), ED2KFT_DOCUMENT)); // Cascading Style Sheet ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".diz"), ED2KFT_DOCUMENT)); // Description in Zip File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".doc"), ED2KFT_DOCUMENT)); // Document File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".dot"), ED2KFT_DOCUMENT)); // Document Template File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".epub"), ED2KFT_DOCUMENT)); // EBook File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".hlp"), ED2KFT_DOCUMENT)); // Help File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".htm"), ED2KFT_DOCUMENT)); // HTML File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".html"), ED2KFT_DOCUMENT)); // HTML File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".mobi"), ED2KFT_DOCUMENT)); // EBook File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".nfo"), ED2KFT_DOCUMENT)); // Warez Information File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".odp"), ED2KFT_DOCUMENT)); // OpenDocument Presentation ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ods"), ED2KFT_DOCUMENT)); // OpenDocument Spreadsheet ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".odt"), ED2KFT_DOCUMENT)); // OpenDocument File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".otp"), ED2KFT_DOCUMENT)); // OpenDocument Presentation Template ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ott"), ED2KFT_DOCUMENT)); // OpenDocument Template File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ots"), ED2KFT_DOCUMENT)); // OpenDocument Spreadsheet Template ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".pdf"), ED2KFT_DOCUMENT)); // Portable Document Format File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".pps"), ED2KFT_DOCUMENT)); // PowerPoint Slide Show ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ppt"), ED2KFT_DOCUMENT)); // PowerPoint Presentation ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".ps"), ED2KFT_DOCUMENT)); // PostScript File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".rtf"), ED2KFT_DOCUMENT)); // Rich Text Format File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".stc"), ED2KFT_DOCUMENT)); // OpenOffice.org 1.0 Spreadsheet Template ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".sti"), ED2KFT_DOCUMENT)); // OpenOffice.org 1.0 Presentation Template ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".stw"), ED2KFT_DOCUMENT)); // OpenOffice.org 1.0 Document Template File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".sxc"), ED2KFT_DOCUMENT)); // OpenOffice.org 1.0 Spreadsheet ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".sxi"), ED2KFT_DOCUMENT)); // OpenOffice.org 1.0 Presentation ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".sxw"), ED2KFT_DOCUMENT)); // OpenOffice.org 1.0 Document File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".text"), ED2KFT_DOCUMENT)); // General Text File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".txt"), ED2KFT_DOCUMENT)); // Text File ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".wri"), ED2KFT_DOCUMENT)); // Windows Write Document ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".xls"), ED2KFT_DOCUMENT)); // Microsoft Excel Spreadsheet ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".xlt"), ED2KFT_DOCUMENT)); // Microsoft Excel Template ED2KFileTypesMap.insert(SED2KFileTypeMapElement(wxT(".xml"), ED2KFT_DOCUMENT)); // XML File } }; // get the list initialized *before* any code is accessing it CED2KFileTypes theED2KFileTypes; EED2KFileType GetED2KFileTypeID(const CPath& fileName) { const wxString ext = fileName.GetExt().Lower(); if (ext.IsEmpty()) { return ED2KFT_ANY; } SED2KFileTypeMap::iterator it = ED2KFileTypesMap.find(wxT(".") + ext); if (it != ED2KFileTypesMap.end()) { return it->second.GetType(); } else { return ED2KFT_ANY; } } // Retuns the ed2k file type term which is to be used in server searches wxString GetED2KFileTypeSearchTerm(EED2KFileType iFileID) { if (iFileID == ED2KFT_AUDIO) return ED2KFTSTR_AUDIO; if (iFileID == ED2KFT_VIDEO) return ED2KFTSTR_VIDEO; if (iFileID == ED2KFT_IMAGE) return ED2KFTSTR_IMAGE; if (iFileID == ED2KFT_DOCUMENT) return ED2KFTSTR_DOCUMENT; if (iFileID == ED2KFT_PROGRAM) return ED2KFTSTR_PROGRAM; // NOTE: Archives and CD-Images are published with file type "Pro" if (iFileID == ED2KFT_ARCHIVE) return ED2KFTSTR_PROGRAM; if (iFileID == ED2KFT_CDIMAGE) return ED2KFTSTR_PROGRAM; return wxEmptyString; } // Returns a file type which is used eMule internally only, examining the extention of the given filename wxString GetFileTypeByName(const CPath& fileName) { EED2KFileType iFileType = GetED2KFileTypeID(fileName); switch (iFileType) { case ED2KFT_AUDIO: return ED2KFTSTR_AUDIO; case ED2KFT_VIDEO: return ED2KFTSTR_VIDEO; case ED2KFT_IMAGE: return ED2KFTSTR_IMAGE; case ED2KFT_DOCUMENT: return ED2KFTSTR_DOCUMENT; case ED2KFT_PROGRAM: return ED2KFTSTR_PROGRAM; case ED2KFT_ARCHIVE: return ED2KFTSTR_ARCHIVE; case ED2KFT_CDIMAGE: return ED2KFTSTR_CDIMAGE; default: return wxEmptyString; } } // Retuns the ed2k file type integer ID which is to be used for publishing+searching EED2KFileType GetED2KFileTypeSearchID(EED2KFileType iFileID) { switch (iFileID) { case ED2KFT_AUDIO: return ED2KFT_AUDIO; case ED2KFT_VIDEO: return ED2KFT_VIDEO; case ED2KFT_IMAGE: return ED2KFT_IMAGE; case ED2KFT_DOCUMENT: return ED2KFT_DOCUMENT; case ED2KFT_PROGRAM: return ED2KFT_PROGRAM; // NOTE: Archives and CD-Images are published+searched with file type "Pro" // NOTE: If this gets changed, the function 'GetED2KFileTypeSearchTerm' also needs to get updated! case ED2KFT_ARCHIVE: return ED2KFT_PROGRAM; case ED2KFT_CDIMAGE: return ED2KFT_PROGRAM; default: return ED2KFT_ANY; } } /** * Dumps a buffer to a wxString */ wxString DumpMemToStr(const void *buff, int n, const wxString& msg, bool ok) { const unsigned char *p = (const unsigned char *)buff; int lines = (n + 15)/ 16; wxString result; // Allocate aproximetly what is needed result.Alloc( ( lines + 1 ) * 80 ); if ( !msg.IsEmpty() ) { result += msg + wxT(" - ok=") + ( ok ? wxT("true, ") : wxT("false, ") ); } result += CFormat(wxT("%d bytes\n")) % n; for ( int i = 0; i < lines; ++i) { // Show address result += CFormat(wxT("%08x ")) % (i * 16); // Show two columns of hex-values for ( int j = 0; j < 2; ++j) { for ( int k = 0; k < 8; ++k) { int pos = 16 * i + 8 * j + k; if ( pos < n ) { result += CFormat(wxT("%02x ")) % p[pos]; } else { result += wxT(" "); } } result += wxT(" "); } result += wxT("|"); // Show a column of ascii-values for ( int k = 0; k < 16; ++k) { int pos = 16 * i + k; if ( pos < n ) { if ( isspace( p[pos] ) ) { result += wxT(" "); } else if ( !isgraph( p[pos] ) ) { result += wxT("."); } else { result += (wxChar)p[pos]; } } else { result += wxT(" "); } } result += wxT("|\n"); } result.Shrink(); return result; } /** * Dumps a buffer to stdout */ void DumpMem(const void *buff, int n, const wxString& msg, bool ok) { printf("%s\n", (const char*)unicode2char(DumpMemToStr( buff, n, msg, ok )) ); } // // Dump mem in dword format void DumpMem_DW(const uint32 *ptr, int count) { for(int i = 0; i < count; i++) { printf("%08x ", ptr[i]); if ( (i % 4) == 3) printf("\n"); } printf("\n"); } wxString GetConfigDir(const wxString &configFileBase) { // Cache the path. static wxString configPath; if (configPath.IsEmpty()) { // "Portable aMule" - Use aMule from an external USB drive // Check for ./config/amule.conf (or whatever gets passed as configFile) // and use this configuration if found const wxString configDir = JoinPaths(wxFileName::GetCwd(), wxT("config")); const wxString configFile = JoinPaths(configDir, configFileBase); if (CPath::DirExists(configDir) && CPath::FileExists(configFile)) { AddLogLineN(CFormat(_("Using config dir: %s")) % configDir); configPath = configDir; } else { configPath = wxStandardPaths::Get().GetUserDataDir(); } configPath += wxFileName::GetPathSeparator(); } return configPath; } /*************************** Locale specific stuff ***************************/ #ifndef __WINDOWS__ # define SETWINLANG(LANG, SUBLANG) #else # define SETWINLANG(LANG, SUBLANG) \ info.WinLang = LANG; \ info.WinSublang = SUBLANG; #endif #define CUSTOMLANGUAGE(wxid, iso, winlang, winsublang, dir, desc) \ info.Language = wxid; \ info.CanonicalName = wxT(iso); \ info.LayoutDirection = dir; \ info.Description = wxT(desc); \ SETWINLANG(winlang, winsublang) \ wxLocale::AddLanguage(info); void InitCustomLanguages() { wxLanguageInfo info; #if !wxCHECK_VERSION(2, 9, 0) CUSTOMLANGUAGE(wxLANGUAGE_ASTURIAN, "ast", 0, 0, wxLayout_LeftToRight, "Asturian"); #endif } void InitLocale(wxLocale& locale, int language) { locale.Init(language, wxLOCALE_LOAD_DEFAULT); #if defined(__WXMAC__) || defined(__WINDOWS__ ) locale.AddCatalogLookupPathPrefix(JoinPaths(wxStandardPaths::Get().GetDataDir(), wxT("locale"))); #endif locale.AddCatalog(wxT(PACKAGE)); } int StrLang2wx(const wxString& language) { // get rid of possible encoding and modifier wxString lang(language.BeforeFirst('.').BeforeFirst('@')); if (!lang.IsEmpty()) { const wxLanguageInfo *lng = wxLocale::FindLanguageInfo(lang); if (lng) { int langID = lng->Language; // Traditional Chinese: original Chinese, used in Taiwan, Hong Kong and Macau. // Simplified Chinese: simplified Chinese characters used in Mainland China since 1950s, and in some other places such as Singapore and Malaysia. // // Chinese (Traditional) contains zh_TW, zh_HK and zh_MO (but there are differences in some words). // Because of most Traditional Chinese user are in Taiwan, zh_TW becomes the representation of Traditional Chinese. // Chinese (Simplified) contains zh_CN, zh_SG and zh_MY. In the same reason, zh_CN becomes the representation of Simplified Chinese. // (see http://forum.amule.org/index.php?topic=13208.msg98043#msg98043 ) // // wx maps "Traditional Chinese" to "Chinese" however. This must me corrected: if (langID == wxLANGUAGE_CHINESE) { langID = wxLANGUAGE_CHINESE_TRADITIONAL; } return langID; } else { return wxLANGUAGE_DEFAULT; } } else { return wxLANGUAGE_DEFAULT; } } wxString wxLang2Str(const int lang) { if (lang != wxLANGUAGE_DEFAULT) { const wxLanguageInfo *lng = wxLocale::GetLanguageInfo(lang); if (lng) { return lng->CanonicalName; } else { return wxEmptyString; } } else { return wxEmptyString; } } /*****************************************************************************/ CMD4Hash GetPassword(bool allowEmptyPassword) { wxString pass_plain; CMD4Hash password; #ifndef __WINDOWS__ pass_plain = char2unicode(getpass("Enter password for mule connection: ")); #else //#warning This way, pass enter is not hidden on windows. Bad thing. char temp_str[512]; // Though fflush() on an input stream is undefined behaviour by the standard, // the MSVCRT version does seem to clear the input buffers. // cppcheck-suppress fflushOnInputStream fflush(stdin); printf("Enter password for mule connection: \n"); fflush(stdout); fgets(temp_str, 512, stdin); temp_str[strlen(temp_str)-1] = '\0'; pass_plain = char2unicode(temp_str); #endif wxCHECK2(password.Decode(MD5Sum(pass_plain).GetHash()), /* Do nothing. */ ); if (!allowEmptyPassword) { // MD5 hash for an empty string, according to rfc1321. if (password.Encode() == wxT("D41D8CD98F00B204E9800998ECF8427E")) { printf("No empty password allowed.\n"); return GetPassword(false); } } return password; } const uint8 BitVector::s_posMask[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80}; const uint8 BitVector::s_negMask[] = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F}; // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/OtherFunctions.h0000644000175000017500000003016712611472361021424 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef OTHERFUNCTIONS_H #define OTHERFUNCTIONS_H #include // Needed for wxLANGUAGE_ constants #include "Types.h" // Needed for uint16, uint32 and uint64 #include "Preferences.h" // Needed for AllCategoryFilter enumeration #include "MD4Hash.h" // Needed for CMD4Hash #include // Needed for std::for_each // Do_not_auto_remove (mingw-gcc-3.4.5) class CPath; /** * Helper function. * * @param ArgA The base value. * @param ArgB The value to compare ArgA against. * @return See below. * * Use this function to safely compare two arguments of a type that supports * the "<" operator. It works like strcmp and returns a negative value if ArgA * is less than ArgB, zero if ArgA is equal to ArgB and a positive value if * ArgA is greater than ArgB. */ template int CmpAny(const TYPE& ArgA, const TYPE& ArgB) { if ( ArgA < ArgB ) { return -1; } else if ( ArgB < ArgA ) { return 1; } else { return 0; } } //! Overloaded version of CmpAny for use with wxStrings. inline int CmpAny(const wxString& ArgA, const wxString& ArgB) { if (ArgA.IsEmpty() && !ArgB.IsEmpty()) { return -1; } else if (!ArgA.IsEmpty() && ArgB.IsEmpty()) { return 1; } else if (ArgA.IsEmpty() && ArgB.IsEmpty()) { return 0; } else { return ArgA.CmpNoCase( ArgB ); } } //! Overloaded version of CmpAny for use with C-Strings (Unicoded). inline int CmpAny(const wxChar* ArgA, const wxChar* ArgB) { return CmpAny(wxString( ArgA ), wxString( ArgB )); } /** * Removes the first instance of a value from a STL-like list: list, vector or deque. * * @param list The list to manipulate. * @param item The value to search for and remove. * @return The number of instances removed. */ template unsigned int EraseFirstValue( LIST& list, const ITEM& item ) { typename LIST::iterator it = list.begin(); for (; it != list.end(); ++it) { if (*it == item) { list.erase(it); return true; } } return false; } /** * Removes all instances of a value from a STL-like list: list, vector or deque. * * @param list The list to manipulate. * @param item The value to search for and remove. * @return The number of instances removed. */ template unsigned int EraseValue( LIST& list, const ITEM& item ) { typename LIST::iterator it = list.begin(); unsigned int count = 0; for ( ; it != list.end(); ) { if ( *it == item ) { it = list.erase( it ); count++; } else { ++it; } } return count; } //! Used by DeleteContents struct SDoDelete { // Used for lists, vectors, deques, etc. template void operator()(TYPE* ptr) { delete ptr; } // Used for maps, hashmaps, rangemaps, etc. template void operator()(const std::pair& pair) { delete pair.second; } }; /** Frees the contents of a list or map like stl container, clearing it afterwards. */ template void DeleteContents(STL_CONTAINER& container) { // Ensure that the actual container wont contain dangling pointers during // this operation, to ensure that the destructors cant access them. STL_CONTAINER copy; std::swap(copy, container); std::for_each(copy.begin(), copy.end(), SDoDelete()); } /** * Copies elements from the range [first, first + n) to the range [result, result + n). */ template OutputIterator STLCopy_n(InputIterator first, size_t n, OutputIterator result) { return std::copy(first, first + n, result); } /** * Returns a description of the version of aMule being used. * * @return A detailed description of the aMule version, including wx information. * * Use this rather than just using the VERSION or CURRENT_VERSION_LONG * constants, when displaying information to the user. The purpose is to * help with debugging. */ wxString GetMuleVersion(); extern wxString MuleBoostVersion; /** * Helperfunction for accessing a child of the calling widget. * * @param IdOrName The ID or the Name of the widget to find. * @param type The widget-type to cast the found widget to. * * Use this function as a replacement for the following constructs: * - wxStaticCast( FindWindow( ), ) * - (*)FindWindow( ) * * It has the advantage of validating the cast in debug builds and being much * shorter than than manually typing wxStaticCast + FindWindow. This mean that * we will be alerted in case of widget changing type, instead of getting just * getting bad mojo due to casting a pointer to the wrong type. */ #define CastChild( IdOrName, type ) dynamic_cast( FindWindow( IdOrName ) ) /** * Helperfunction for accessing the child of a any widget by ID. * * @param ID The ID of the widget to find. * @param parent The parent of the widget to find, or NULL to search from the top. * @param type The type to cast the widget to. * * @see CastChild() */ #define CastByID( ID, parent, type ) dynamic_cast( wxWindow::FindWindowById( (ID), (parent) ) ) /** * Helperfunction for accessing the child of a any widget by Name. * * @param Name The Name of the widget to find. * @param parent The parent of the widget to find, or NULL to search from the top. * @param type The type to cast the widget to. * * @see CastChild() */ #define CastByName( Name, parent, type ) dynamic_cast( wxWindow::FindWindowByName( (Name), (parent) ) ) // From Gnucleus project [found by Tarod] // Base16/Base32/Base64 Encode/Decode functions wxString EncodeBase16(const unsigned char* buffer, unsigned int bufLen); unsigned int DecodeBase16(const wxString &base16Buffer, unsigned int base16BufLen, unsigned char *buffer); wxString EncodeBase32(const unsigned char* buffer, unsigned int bufLen); unsigned int DecodeBase32(const wxString &base32Buffer, unsigned int base32BufLen, unsigned char *buffer); wxString EncodeBase64(const char* buffer, unsigned int bufLen); unsigned int DecodeBase64(const wxString &base64Buffer, unsigned int base64BufLen, unsigned char *buffer); // Converts the number of bytes to human readable form. wxString CastItoXBytes(uint64 count); // Converts the number to human readable form, abbreviating when nessecary. wxString CastItoIShort(uint64 number); // Converts a number of bytes to a human readable speed value. wxString CastItoSpeed(uint32 bytes); // Converts an amount of seconds to human readable time. wxString CastSecondsToHM(uint32 seconds, uint16 msecs = 0); // Returns the amount of Bytes the provided size-type represents uint32 GetTypeSize(uint8 type); // Returns the string associated with a file-rating value. wxString GetRateString(uint16 rate); // The following functions are used to identify and/or name the type of a file enum FileType { ftAny, ftVideo, ftAudio, ftArchive, ftCDImage, ftPicture, ftText, ftProgram }; // Examins a filename and returns the enumerated value assosiated with it, or ftAny if unknown extension FileType GetFiletype(const CPath& filename); // Returns the description of a filetype: Movies, Audio, Pictures and so on... wxString GetFiletypeDesc(FileType type, bool translated = true); // Shorthand for GetFiletypeDesc(GetFiletype(filename)) wxString GetFiletypeByName(const CPath& filename, bool translated = true); // Returns the name associated with a category value. wxString GetCatTitle(AllCategoryFilter cat); /////////////////////////////////////////////////////////////////////////////// // ED2K File Type // enum EED2KFileType { ED2KFT_ANY, ED2KFT_AUDIO, ED2KFT_VIDEO, ED2KFT_IMAGE, ED2KFT_PROGRAM, ED2KFT_DOCUMENT, ED2KFT_ARCHIVE, ED2KFT_CDIMAGE }; class EED2KFileTypeClass { public: EED2KFileTypeClass() { s_t = ED2KFT_ANY; } EED2KFileTypeClass(EED2KFileType t) { s_t = t; } EED2KFileType GetType() const { return s_t; } private: EED2KFileType s_t; }; EED2KFileType GetED2KFileTypeID(const CPath& fileName); wxString GetED2KFileTypeSearchTerm(EED2KFileType iFileID); wxString GetFileTypeByName(const CPath& fileName); EED2KFileType GetED2KFileTypeSearchID(EED2KFileType iFileID); /////////////////////////////////////////////////////////////////////////////// // md4cmp -- replacement for memcmp(hash1,hash2,16) // Like 'memcmp' this function returns 0, if hash1==hash2, and !0, if hash1!=hash2. // NOTE: Do *NOT* use that function for determining if hash1hash2. inline int md4cmp(const void* hash1, const void* hash2) { return memcmp(hash1, hash2, 16); } // md4clr -- replacement for memset(hash,0,16) inline void md4clr(void* hash) { memset(hash, 0, 16); } // md4cpy -- replacement for memcpy(dst,src,16) inline void md4cpy(void* dst, const void* src) { memcpy(dst, src, 16); } // DumpMem ... Dumps mem ;) wxString DumpMemToStr(const void *buff, int n, const wxString& msg = wxEmptyString, bool ok = true); void DumpMem(const void *buff, int n, const wxString& msg = wxEmptyString, bool ok = true); void DumpMem_DW(const uint32 *ptr, int count); // Returns special source ID for GUI. // It's actually IP<<16+Port #define GUI_ID(x,y) (uint64)((((uint64)x)<<16) + (uint64)y) // And so... #define PORT_FROM_GUI_ID(x) (x & 0xFFFF) #define IP_FROM_GUI_ID(x) (x >> 16) inline long int make_full_ed2k_version(int a, int b, int c) { return ((a << 17) | (b << 10) | (c << 7)); } wxString GetConfigDir(const wxString &configFile = wxT("amule.conf")); #if !wxCHECK_VERSION(2, 9, 0) enum { wxLANGUAGE_ASTURIAN = wxLANGUAGE_USER_DEFINED + 1 }; #endif /** * Adds aMule's custom languages to db. */ void InitCustomLanguages(); /** * Initializes locale */ void InitLocale(wxLocale& locale, int language); /** * Converts a string locale definition to a wxLANGUAGE id. */ int StrLang2wx(const wxString& language); /** * Converts a wxLANGUAGE id to a string locale name. */ wxString wxLang2Str(const int lang); /** * Generate MD5Hash of prompt input */ CMD4Hash GetPassword(bool allowEmptyPassword = false); #if wxUSE_THREADS #include /** * Automatically unlocks a mutex on construction and locks it on destruction. * * This class is the complement of wxMutexLocker. It is intended to be used * when a mutex, which is locked for a period of time, needs to be * temporarily unlocked for a bit. For example: * * wxMutexLocker lock(mutex); * * // ... do stuff that requires that the mutex is locked ... * * { * CMutexUnlocker unlocker(mutex); * // ... do stuff that requires that the mutex is unlocked ... * } * * // ... do more stuff that requires that the mutex is locked ... * */ class CMutexUnlocker { public: // unlock the mutex in the ctor CMutexUnlocker(wxMutex& mutex) : m_isOk(false), m_mutex(mutex) { m_isOk = ( m_mutex.Unlock() == wxMUTEX_NO_ERROR ); } // returns true if mutex was successfully unlocked in ctor bool IsOk() const { return m_isOk; } // lock the mutex in dtor ~CMutexUnlocker() { if ( IsOk() ) m_mutex.Lock(); } private: // no assignment operator nor copy ctor CMutexUnlocker(const CMutexUnlocker&); CMutexUnlocker& operator=(const CMutexUnlocker&); bool m_isOk; wxMutex& m_mutex; }; #endif /* wxUSE_THREADS */ #endif // OTHERFUNCTIONS_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/OtherStructs.h0000644000175000017500000000645012611472361021121 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef OTHERSTRUCTS_H #define OTHERSTRUCTS_H #include // Defined in struct z_stream_s; // SERVER TO CLIENT #if defined(_MSC_VER) || defined(__SUNPRO_CC) #pragma pack(1) #endif struct Header_Struct{ int8 eDonkeyID; int32 packetlength; int8 command; } #if defined(_MSC_VER) || defined(__SUNPRO_CC) ; #pragma pack() #else __attribute__((__packed__)); #endif #if defined(_MSC_VER) || defined(__SUNPRO_CC) #pragma pack(1) #endif struct UDP_Header_Struct { int8 eDonkeyID; int8 command; } #if defined(_MSC_VER) || defined(__SUNPRO_CC) ; #pragma pack() #else __attribute__((__packed__)); #endif #if defined(_MSC_VER) || defined(__SUNPRO_CC) ; #pragma pack(1) #endif struct Requested_Block_Struct{ uint64 StartOffset; uint64 EndOffset; uint32 packedsize; unsigned char FileID[16]; uint32 transferred; // Barry - This counts bytes completed } #if defined(_MSC_VER) || defined(__SUNPRO_CC) ; #pragma pack() #else __attribute__((__packed__)); #endif struct Pending_Block_Struct{ Requested_Block_Struct* block; struct z_stream_s* zStream; // Barry - Used to unzip packets uint32 totalUnzipped; // Barry - This holds the total unzipped bytes for all packets so far uint32 fZStreamError : 1, fRecovered : 1; }; struct Gap_Struct{ uint64 start; uint64 end; }; #if defined(_MSC_VER) || defined(__SUNPRO_CC) #pragma pack(1) #endif struct ServerMet_Struct { uint32 ip; uint16 port; uint32 tagcount; } #if defined(_MSC_VER) || defined(__SUNPRO_CC) ; #pragma pack() #else __attribute__((__packed__)); #endif struct TransferredData { uint32 datalen; uint32 timestamp; }; //Kry import of 0.30d // Maella -Enhanced Chunk Selection- (based on jicxicmic) #if defined(_MSC_VER) || defined(__SUNPRO_CC) #pragma pack(1) #endif struct Chunk { uint16 part; // Index of the chunk union { uint16 frequency; // Availability of the chunk uint16 rank; // Download priority factor (highest = 0, lowest = 0xffff) }; } #if defined(_MSC_VER) || defined(__SUNPRO_CC) ; #pragma pack() #else __attribute__((__packed__)); #endif struct Category_Struct { CPath path; wxString title; wxString comment; uint32 color; uint8 prio; }; #endif // OTHERSTRUCTS_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Packet.cpp0000644000175000017500000001777612611472361020227 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include // Needed for uLongf #include "Packet.h" // Interface declarations #include #include "Logger.h" // Neeed for AddDebugLogLineN #include "MemFile.h" // Needed for CMemFile #include "OtherStructs.h" // Needed for Header_Struct #include "ArchSpecific.h" // Needed for ENDIAN_* // Copy constructor CPacket::CPacket(CPacket &p) { size = p.size; opcode = p.opcode; prot = p.prot; m_bSplitted = p.m_bSplitted; m_bLastSplitted = p.m_bLastSplitted; m_bPacked = p.m_bPacked; m_bFromPF = p.m_bFromPF; memcpy(head, p.head, sizeof head); tempbuffer = NULL; if (p.completebuffer) { completebuffer = new byte[size + 10];; pBuffer = completebuffer + sizeof(Header_Struct); } else { completebuffer = NULL; if (p.pBuffer) { pBuffer = new byte[size]; } else { pBuffer = NULL; } } if (pBuffer) memcpy( pBuffer, p.pBuffer, size ); } CPacket::CPacket(uint8 protocol) { size = 0; opcode = 0; prot = protocol; m_bSplitted = false; m_bLastSplitted = false; m_bPacked = false; m_bFromPF = false; memset(head, 0, sizeof head); tempbuffer = NULL; completebuffer = NULL; pBuffer = NULL; } // only used for receiving packets CPacket::CPacket(byte* rawHeader, byte *buf) { memset(head, 0, sizeof head); Header_Struct* header = reinterpret_cast(rawHeader); size = ENDIAN_SWAP_32(header->packetlength) - 1; opcode = header->command; prot = header->eDonkeyID; m_bSplitted = false; m_bLastSplitted = false; m_bPacked = false; m_bFromPF = false; tempbuffer = NULL; completebuffer = NULL; pBuffer = buf; } CPacket::CPacket(const CMemFile& datafile, uint8 protocol, uint8 ucOpcode) { size = datafile.GetLength(); opcode = ucOpcode; prot = protocol; m_bSplitted = false; m_bLastSplitted = false; m_bPacked = false; m_bFromPF = false; memset(head, 0, sizeof head); tempbuffer = NULL; completebuffer = new byte[size + sizeof(Header_Struct)/*Why this 4?*/]; pBuffer = completebuffer + sizeof(Header_Struct); // Write contents of MemFile to buffer (while keeping original position in file) off_t position = datafile.GetPosition(); datafile.Seek(0, wxFromStart); datafile.Read(pBuffer, size); datafile.Seek(position, wxFromStart); } CPacket::CPacket(int8 in_opcode, uint32 in_size, uint8 protocol, bool bFromPF) { size = in_size; opcode = in_opcode; prot = protocol; m_bSplitted = false; m_bLastSplitted = false; m_bPacked = false; m_bFromPF = bFromPF; memset(head, 0, sizeof head); tempbuffer = NULL; if (in_size) { completebuffer = new byte[in_size + sizeof(Header_Struct) + 4 /*Why this 4?*/]; pBuffer = completebuffer + sizeof(Header_Struct); memset(completebuffer, 0, in_size + sizeof(Header_Struct) + 4 /*Why this 4?*/); } else { completebuffer = NULL; pBuffer = NULL; } } // only used for splitted packets! CPacket::CPacket(byte* pPacketPart, uint32 nSize, bool bLast, bool bFromPF) { size = nSize - sizeof(Header_Struct); opcode = 0; prot = 0; m_bSplitted = true; m_bLastSplitted = bLast; m_bPacked = false; m_bFromPF = bFromPF; memset(head, 0, sizeof head); tempbuffer = NULL; completebuffer = pPacketPart; pBuffer = NULL; } CPacket::~CPacket() { // Never deletes pBuffer when completebuffer is not NULL if (completebuffer) { delete [] completebuffer; } else if (pBuffer) { // On the other hand, if completebuffer is NULL and pBuffer is not NULL delete [] pBuffer; } if (tempbuffer) { delete [] tempbuffer; } } uint32 CPacket::GetPacketSizeFromHeader(const byte* rawHeader) { const Header_Struct* header = reinterpret_cast(rawHeader); uint32 size = ENDIAN_SWAP_32(header->packetlength); if (size < 1 || size >= 0x7ffffff0u) return 0; return size - 1; } void CPacket::CopyToDataBuffer(unsigned int offset, const byte* data, unsigned int n) { wxASSERT(offset + n <= size + 1); memcpy(pBuffer + offset, data, n); } byte* CPacket::GetPacket() { if (completebuffer) { if (!m_bSplitted) { memcpy(completebuffer, GetHeader(), sizeof(Header_Struct)); } return completebuffer; } else { if (tempbuffer){ delete [] tempbuffer; tempbuffer = NULL; } tempbuffer = new byte[size + sizeof(Header_Struct) + 4 /* why this 4?*/]; memcpy(tempbuffer , GetHeader(), sizeof(Header_Struct)); memcpy(tempbuffer + sizeof(Header_Struct), pBuffer , size); return tempbuffer; } } byte* CPacket::DetachPacket() { if (completebuffer) { if (!m_bSplitted) { memcpy(completebuffer, GetHeader(), sizeof(Header_Struct)); } byte* result = completebuffer; completebuffer = pBuffer = NULL; return result; } else{ if (tempbuffer){ delete[] tempbuffer; tempbuffer = NULL; } tempbuffer = new byte[size+sizeof(Header_Struct)+4 /* Why this 4?*/]; memcpy(tempbuffer,GetHeader(),sizeof(Header_Struct)); memcpy(tempbuffer+sizeof(Header_Struct),pBuffer,size); byte* result = tempbuffer; tempbuffer = 0; return result; } } byte* CPacket::GetHeader() { wxASSERT( !m_bSplitted ); Header_Struct* header = reinterpret_cast(head); header->command = opcode; header->eDonkeyID = prot; header->packetlength = ENDIAN_SWAP_32(size + 1); return head; } byte* CPacket::GetUDPHeader() { wxASSERT( !m_bSplitted ); memset(head, 0, 6); UDP_Header_Struct* header = reinterpret_cast(head); header->eDonkeyID = prot; header->command = opcode; return head; } void CPacket::PackPacket() { wxASSERT(!m_bSplitted); uLongf newsize = size + 300; byte* output = new byte[newsize]; uint16 result = compress2(output, &newsize, pBuffer, size, Z_BEST_COMPRESSION); if (result != Z_OK || size <= newsize) { delete[] output; return; } if (prot == OP_KADEMLIAHEADER) { prot = OP_KADEMLIAPACKEDPROT; } else { prot = OP_PACKEDPROT; } memcpy(pBuffer, output, newsize); delete[] output; m_bPacked = true; size = newsize; } bool CPacket::UnPackPacket(uint32 uMaxDecompressedSize) { wxASSERT( prot == OP_PACKEDPROT || prot == OP_ED2KV2PACKEDPROT); // OP_ED2KV2PACKEDPROT is experimental aMule test code, // this should not happen yet. Leave a warining in the log. if (prot == OP_ED2KV2PACKEDPROT) { AddDebugLogLineN(logPacketErrors, wxT("Received OP_ED2KV2PACKEDPROT.")); } uint32 nNewSize = size * 10 + 300; if (nNewSize > uMaxDecompressedSize){ nNewSize = uMaxDecompressedSize; } byte* unpack = new byte[nNewSize]; uLongf unpackedsize = nNewSize; uint16 result = uncompress(unpack, &unpackedsize, pBuffer, size); if (result == Z_OK) { wxASSERT( completebuffer == NULL ); wxASSERT( pBuffer != NULL ); size = unpackedsize; delete[] pBuffer; pBuffer = unpack; prot = OP_EMULEPROT; return true; } delete[] unpack; return false; } void CPacket::Copy16ToDataBuffer(const void* data) { md4cpy(pBuffer, data); } void CPacket::CopyUInt32ToDataBuffer(uint32 data, unsigned int offset) { wxCHECK_RET(offset <= size - sizeof(uint32), wxT("Bad offset in CopyUInt32ToDataBuffer.")); PokeUInt32( pBuffer + offset, data ); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Packet.h0000644000175000017500000000607312611472361017660 0ustar morphmorph // // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef PACKET_H #define PACKET_H #include "Types.h" // Needed for int8, int32, uint8 and uint32 class CMemFile; class wxString; // CLIENT TO SERVER // PACKET CLASS // TODO some parts could need some work to make it more efficient class CPacket { public: CPacket(CPacket &p); CPacket(uint8 protocol); CPacket(byte* header, byte *buf); // only used for receiving packets CPacket(const CMemFile& datafile, uint8 protocol, uint8 ucOpcode); CPacket(int8 in_opcode, uint32 in_size, uint8 protocol, bool bFromPF = true); CPacket(byte* pPacketPart, uint32 nSize, bool bLast, bool bFromPF = true); // only used for splitted packets! ~CPacket(); byte* GetHeader(); byte* GetUDPHeader(); byte* GetPacket(); byte* DetachPacket(); uint32 GetRealPacketSize() const { return size + 6; } static uint32 GetPacketSizeFromHeader(const byte* rawHeader); bool IsSplitted() { return m_bSplitted; } bool IsLastSplitted() { return m_bLastSplitted; } void PackPacket(); bool UnPackPacket(uint32 uMaxDecompressedSize = 50000); // -khaos--+++> Returns either -1, 0 or 1. -1 is unset, 0 is from complete file, 1 is from part file bool IsFromPF() { return m_bFromPF; } uint8 GetOpCode() const { return opcode; } void SetOpCode(uint8 oc) { opcode = oc; } uint32 GetPacketSize() const { return size; } uint8 GetProtocol() const { return prot; } void SetProtocol(uint8 p) { prot = p; } const byte* GetDataBuffer(void) const { return pBuffer; } void Copy16ToDataBuffer(const void* data); void CopyToDataBuffer(unsigned int offset, const byte* data, unsigned int n); void CopyUInt32ToDataBuffer(uint32 data, unsigned int offset = 0); private: //! CPacket is not assignable. CPacket& operator=(const CPacket&); uint32 size; uint8 opcode; uint8 prot; bool m_bSplitted; bool m_bLastSplitted; bool m_bPacked; bool m_bFromPF; byte head[6]; byte* tempbuffer; byte* completebuffer; byte* pBuffer; }; #endif // PACKET_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Parser.cpp0000644000175000017500000013422212611472361020236 0ustar morphmorph/* A Bison parser, made by GNU Bison 2.4.2. */ /* Skeleton implementation for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software Foundation, Inc. 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 3 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 . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. There are some unavoidable exceptions within include files to define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ #define YYBISON_VERSION "2.4.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ #define YYPURE 0 /* Push parsers. */ #define YYPUSH 0 /* Pull parsers. */ #define YYPULL 1 /* Using locations. */ #define YYLSP_NEEDED 0 /* Copy the first part of user declarations. */ /* Line 189 of yacc.c */ #line 1 "./Parser.y" #include "SearchExpr.h" #include "Scanner.h.in" #include "Scanner.h" #include "OtherFunctions.h" #include "libs/common/StringFunctions.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern wxArrayString _astrParserErrors; void ParsedSearchExpression(const CSearchExpr* pexpr); int yyerror(const char* errstr); int yyerror(wxString errstr); /* Line 189 of yacc.c */ #line 94 "Parser.cpp" /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 1 #endif /* Enabling verbose error messages. */ #ifdef YYERROR_VERBOSE # undef YYERROR_VERBOSE # define YYERROR_VERBOSE 1 #else # define YYERROR_VERBOSE 0 #endif /* Enabling the token table. */ #ifndef YYTOKEN_TABLE # define YYTOKEN_TABLE 0 #endif /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { TOK_STRING = 258, TOK_AND = 259, TOK_OR = 260, TOK_NOT = 261, TOK_ED2K_LINK = 262 }; #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 214 of yacc.c */ #line 22 "./Parser.y" wxString* pstr; CSearchExpr* pexpr; /* Line 214 of yacc.c */ #line 144 "Parser.cpp" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ #line 156 "Parser.cpp" #ifdef short # undef short #endif #ifdef YYTYPE_UINT8 typedef YYTYPE_UINT8 yytype_uint8; #else typedef unsigned char yytype_uint8; #endif #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; #elif (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; #else typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else typedef short int yytype_int16; #endif #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else # define YYSIZE_T unsigned int # endif #endif #define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS # if ENABLE_NLS # include /* INFRINGES ON USER NAME SPACE */ # define YY_(msgid) dgettext ("bison-runtime", msgid) # endif # endif # ifndef YY_ # define YY_(msgid) msgid # endif #endif /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(e) ((void) (e)) #else # define YYUSE(e) /* empty */ #endif /* Identity function, used to suppress warnings about constant conditions. */ #ifndef lint # define YYID(n) (n) #else #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int YYID (int yyi) #else static int YYID (yyi) int yyi; #endif { return yyi; } #endif #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ # ifdef YYSTACK_USE_ALLOCA # if YYSTACK_USE_ALLOCA # ifdef __GNUC__ # define YYSTACK_ALLOC __builtin_alloca # elif defined __BUILTIN_VA_ARG_INCR # include /* INFRINGES ON USER NAME SPACE */ # elif defined _AIX # define YYSTACK_ALLOC __alloca # elif defined _MSC_VER # include /* INFRINGES ON USER NAME SPACE */ # define alloca _alloca # else # define YYSTACK_ALLOC alloca # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # endif # endif # endif # ifdef YYSTACK_ALLOC /* Pacify GCC's `empty if-body' warning. */ # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely invoke alloca (N) if N exceeds 4096. Use a slightly smaller number to allow for a few compiler-allocated temporary stack slots. */ # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ # endif # else # define YYSTACK_ALLOC YYMALLOC # define YYSTACK_FREE YYFREE # ifndef YYSTACK_ALLOC_MAXIMUM # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM # endif # if (defined __cplusplus && ! defined _STDLIB_H \ && ! ((defined YYMALLOC || defined malloc) \ && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef _STDLIB_H # define _STDLIB_H 1 # endif # endif # ifndef YYMALLOC # define YYMALLOC malloc # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif #endif /* ! defined yyoverflow || YYERROR_VERBOSE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc { yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) /* Copy COUNT objects from FROM to TO. The source and destination do not overlap. */ # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(To, From, Count) \ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) # else # define YYCOPY(To, From, Count) \ do \ { \ YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (To)[yyi] = (From)[yyi]; \ } \ while (YYID (0)) # endif # endif /* Relocate STACK from its old location to the new one. The local variables YYSIZE and YYSTACKSIZE give the old and new number of elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (YYID (0)) #endif /* YYFINAL -- State number of the termination state. */ #define YYFINAL 15 /* YYLAST -- Last index in YYTABLE. */ #define YYLAST 52 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 10 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 4 /* YYNRULES -- Number of rules. */ #define YYNRULES 18 /* YYNRULES -- Number of states. */ #define YYNSTATES 28 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 262 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 8, 9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7 }; #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ static const yytype_uint8 yyprhs[] = { 0, 0, 3, 5, 7, 10, 12, 16, 20, 24, 28, 32, 36, 39, 43, 46, 49, 52, 54 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { 11, 0, -1, 12, -1, 7, -1, 12, 1, -1, 13, -1, 12, 4, 12, -1, 12, 5, 12, -1, 12, 6, 12, -1, 8, 12, 9, -1, 12, 5, 1, -1, 12, 6, 1, -1, 8, 1, -1, 8, 12, 1, -1, 4, 1, -1, 5, 1, -1, 6, 1, -1, 3, -1, 13, 3, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint8 yyrline[] = { 0, 41, 41, 47, 56, 65, 66, 76, 86, 96, 101, 107, 113, 118, 124, 129, 134, 141, 146 }; #endif #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { "$end", "error", "$undefined", "TOK_STRING", "TOK_AND", "TOK_OR", "TOK_NOT", "TOK_ED2K_LINK", "'('", "')'", "$accept", "action", "searchexpr", "and_strings", 0 }; #endif # ifdef YYPRINT /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 40, 41 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { 0, 10, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 1, 1, 2, 1, 3, 3, 3, 3, 3, 3, 2, 3, 2, 2, 2, 1, 2 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state STATE-NUM when YYTABLE doesn't specify something else to do. Zero means the default is an error. */ static const yytype_uint8 yydefact[] = { 0, 17, 0, 0, 0, 3, 0, 0, 0, 5, 14, 15, 16, 12, 0, 1, 4, 0, 0, 0, 18, 13, 9, 6, 10, 7, 11, 8 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int8 yydefgoto[] = { -1, 7, 8, 9 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ #define YYPACT_NINF -7 static const yytype_int8 yypact[] = { 38, -7, 1, 2, 6, -7, 13, 15, 34, 29, -7, -7, -7, -7, 0, -7, -7, 44, 19, 25, -7, -7, -7, 30, -7, 4, -7, -7 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int8 yypgoto[] = { -7, -7, -6, -7 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -3 static const yytype_int8 yytable[] = { 14, 21, 10, 11, 17, 18, 19, 12, 17, 22, 19, 23, 25, 27, 13, 15, 1, 2, 3, 4, 24, 6, 1, 2, 3, 4, 26, 6, 1, 2, 3, 4, 20, 6, -2, 16, 19, 0, 17, 18, 19, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 0, 6 }; static const yytype_int8 yycheck[] = { 6, 1, 1, 1, 4, 5, 6, 1, 4, 9, 6, 17, 18, 19, 1, 0, 3, 4, 5, 6, 1, 8, 3, 4, 5, 6, 1, 8, 3, 4, 5, 6, 3, 8, 0, 1, 6, -1, 4, 5, 6, 3, 4, 5, 6, 7, 8, 3, 4, 5, 6, -1, 8 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 11, 12, 13, 1, 1, 1, 1, 12, 0, 1, 4, 5, 6, 3, 1, 9, 12, 1, 12, 1, 12 }; #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) #define YYEMPTY (-2) #define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. However, YYFAIL appears to be in use. Nevertheless, it is formally deprecated in Bison 2.4.2's NEWS entry, where a plan to phase it out is discussed. */ #define YYFAIL goto yyerrlab #if defined YYFAIL /* This is here to suppress warnings from the GCC cpp's -Wunused-macros. Normally we don't worry about that warning, but some users do, and we want to make it easy for users to remove YYFAIL uses, which will produce warnings from Bison 2.5. */ #endif #define YYRECOVERING() (!!yyerrstatus) #define YYBACKUP(Token, Value) \ do \ if (yychar == YYEMPTY && yylen == 1) \ { \ yychar = (Token); \ yylval = (Value); \ yytoken = YYTRANSLATE (yychar); \ YYPOPSTACK (1); \ goto yybackup; \ } \ else \ { \ yyerror (YY_("syntax error: cannot back up")); \ YYERROR; \ } \ while (YYID (0)) #define YYTERROR 1 #define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. If N is 0, then set CURRENT to the empty location which ends the previous symbol: RHS[0] (always defined). */ #define YYRHSLOC(Rhs, K) ((Rhs)[K]) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ } \ else \ { \ (Current).first_line = (Current).last_line = \ YYRHSLOC (Rhs, 0).last_line; \ (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ while (YYID (0)) #endif /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL # define YY_LOCATION_PRINT(File, Loc) \ fprintf (File, "%d.%d-%d.%d", \ (Loc).first_line, (Loc).first_column, \ (Loc).last_line, (Loc).last_column) # else # define YY_LOCATION_PRINT(File, Loc) ((void) 0) # endif #endif /* YYLEX -- calling `yylex' with the right arguments. */ #ifdef YYLEX_PARAM # define YYLEX yylex (YYLEX_PARAM) #else # define YYLEX yylex () #endif /* Enable debugging if requested. */ #if YYDEBUG # ifndef YYFPRINTF # include /* INFRINGES ON USER NAME SPACE */ # define YYFPRINTF fprintf # endif # define YYDPRINTF(Args) \ do { \ if (yydebug) \ YYFPRINTF Args; \ } while (YYID (0)) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (YYID (0)) /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_value_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # else YYUSE (yyoutput); # endif switch (yytype) { default: break; } } /*--------------------------------. | Print this symbol on YYOUTPUT. | `--------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) #else static void yy_symbol_print (yyoutput, yytype, yyvaluep) FILE *yyoutput; int yytype; YYSTYPE const * const yyvaluep; #endif { if (yytype < YYNTOKENS) YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); else YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); yy_symbol_value_print (yyoutput, yytype, yyvaluep); YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. | yy_stack_print -- Print the state stack from its BOTTOM up to its | | TOP (included). | `------------------------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void yy_stack_print (yybottom, yytop) yytype_int16 *yybottom; yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) { int yybot = *yybottom; YYFPRINTF (stderr, " %d", yybot); } YYFPRINTF (stderr, "\n"); } # define YY_STACK_PRINT(Bottom, Top) \ do { \ if (yydebug) \ yy_stack_print ((Bottom), (Top)); \ } while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yy_reduce_print (YYSTYPE *yyvsp, int yyrule) #else static void yy_reduce_print (yyvsp, yyrule) YYSTYPE *yyvsp; int yyrule; #endif { int yynrhs = yyr2[yyrule]; int yyi; unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } # define YY_REDUCE_PRINT(Rule) \ do { \ if (yydebug) \ yy_reduce_print (yyvsp, Rule); \ } while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ # define YYDPRINTF(Args) # define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ /* YYINITDEPTH -- initial size of the parser's stacks. */ #ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only if the built-in stack extension method is used). Do not make this value too large; the results are undefined if YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) evaluated with infinite-precision integer arithmetic. */ #ifndef YYMAXDEPTH # define YYMAXDEPTH 10000 #endif #if YYERROR_VERBOSE # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H # define yystrlen strlen # else /* Return the length of YYSTR. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) #else static YYSIZE_T yystrlen (yystr) const char *yystr; #endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; } # endif # endif # ifndef yystpcpy # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE # define yystpcpy stpcpy # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) #else static char * yystpcpy (yydest, yysrc) char *yydest; const char *yysrc; #endif { char *yyd = yydest; const char *yys = yysrc; while ((*yyd++ = *yys++) != '\0') continue; return yyd - 1; } # endif # endif # ifndef yytnamerr /* Copy to YYRES the contents of YYSTR after stripping away unnecessary quotes and backslashes, so that it's suitable for yyerror. The heuristic is that double-quoting is unnecessary unless the string contains an apostrophe, a comma, or backslash (other than backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) switch (*++yyp) { case '\'': case ',': goto do_not_strip_quotes; case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; yyn++; break; case '"': if (yyres) yyres[yyn] = '\0'; return yyn; } do_not_strip_quotes: ; } if (! yyres) return yystrlen (yystr); return yystpcpy (yyres, yystr) - yyres; } # endif /* Copy into YYRESULT an error message about the unexpected token YYCHAR while in state YYSTATE. Return the number of bytes copied, including the terminating null byte. If YYRESULT is null, do not copy anything; just return the number of bytes that would be copied. As a special case, return 0 if an ordinary "syntax error" message will do. Return YYSIZE_MAXIMUM if overflow occurs during size calculation. */ static YYSIZE_T yysyntax_error (char *yyresult, int yystate, int yychar) { int yyn = yypact[yystate]; if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) return 0; else { int yytype = YYTRANSLATE (yychar); YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); YYSIZE_T yysize = yysize0; YYSIZE_T yysize1; int yysize_overflow = 0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; int yyx; # if 0 /* This is so xgettext sees the translatable formats that are constructed on the fly. */ YY_("syntax error, unexpected %s"); YY_("syntax error, unexpected %s, expecting %s"); YY_("syntax error, unexpected %s, expecting %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s"); YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); # endif char *yyfmt; char const *yyf; static char const yyunexpected[] = "syntax error, unexpected %s"; static char const yyexpecting[] = ", expecting %s"; static char const yyor[] = " or %s"; char yyformat[sizeof yyunexpected + sizeof yyexpecting - 1 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) * (sizeof yyor - 1))]; char const *yyprefix = yyexpecting; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ int yyxbegin = yyn < 0 ? -yyn : 0; /* Stay within bounds of both yycheck and yytname. */ int yychecklim = YYLAST - yyn + 1; int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; int yycount = 1; yyarg[0] = yytname[yytype]; yyfmt = yystpcpy (yyformat, yyunexpected); for (yyx = yyxbegin; yyx < yyxend; ++yyx) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) { yycount = 1; yysize = yysize0; yyformat[sizeof yyunexpected - 1] = '\0'; break; } yyarg[yycount++] = yytname[yyx]; yysize1 = yysize + yytnamerr (0, yytname[yyx]); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; yyfmt = yystpcpy (yyfmt, yyprefix); yyprefix = yyor; } yyf = YY_(yyformat); yysize1 = yysize + yystrlen (yyf); yysize_overflow |= (yysize1 < yysize); yysize = yysize1; if (yysize_overflow) return YYSIZE_MAXIMUM; if (yyresult) { /* Avoid sprintf, as that infringes on the user's name space. Don't have undefined behavior even if the translation produced a string with the wrong number of "%s"s. */ char *yyp = yyresult; int yyi = 0; while ((*yyp = *yyf) != '\0') { if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) { yyp += yytnamerr (yyp, yyarg[yyi++]); yyf += 2; } else { yyp++; yyf++; } } } return yysize; } } #endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ /*ARGSUSED*/ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) #else static void yydestruct (yymsg, yytype, yyvaluep) const char *yymsg; int yytype; YYSTYPE *yyvaluep; #endif { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); switch (yytype) { default: break; } } /* Prevent warnings from -Wmissing-prototypes. */ #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); #else int yyparse (); #endif #else /* ! YYPARSE_PARAM */ #if defined __STDC__ || defined __cplusplus int yyparse (void); #else int yyparse (); #endif #endif /* ! YYPARSE_PARAM */ /* The lookahead symbol. */ int yychar; /* The semantic value of the lookahead symbol. */ YYSTYPE yylval; /* Number of syntax errors so far. */ int yynerrs; /*-------------------------. | yyparse or yypush_parse. | `-------------------------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void *YYPARSE_PARAM) #else int yyparse (YYPARSE_PARAM) void *YYPARSE_PARAM; #endif #else /* ! YYPARSE_PARAM */ #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) int yyparse (void) #else int yyparse () #endif #endif { int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; /* The stacks and their tools: `yyss': related to states. `yyvs': related to semantic values. Refer to the stacks thru separate pointers, to allow yyoverflow to reallocate them elsewhere. */ /* The state stack. */ yytype_int16 yyssa[YYINITDEPTH]; yytype_int16 *yyss; yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; YYSIZE_T yystacksize; int yyn; int yyresult; /* Lookahead token as an internal (translated) token number. */ int yytoken; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; yytoken = 0; yyss = yyssa; yyvs = yyvsa; yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ yyssp = yyss; yyvsp = yyvs; goto yysetstate; /*------------------------------------------------------------. | yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; yysetstate: *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) { /* Get the current used size of the three stacks, in elements. */ YYSIZE_T yysize = yyssp - yyss + 1; #ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ YYSTYPE *yyvs1 = yyvs; yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE goto yyexhaustedlab; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; { yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; /*-----------. | yybackup. | `-----------*/ yybackup: /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; /* Not known => get a lookahead token if don't already have one. */ /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); yychar = YYLEX; } if (yychar <= YYEOF) { yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } else { yytoken = YYTRANSLATE (yychar); YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); } /* If the proper action on seeing token YYTOKEN is to reduce or to detect an error, take that action. */ yyn += yytoken; if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) goto yydefault; yyn = yytable[yyn]; if (yyn <= 0) { if (yyn == 0 || yyn == YYTABLE_NINF) goto yyerrlab; yyn = -yyn; goto yyreduce; } /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); /* Discard the shifted token. */ yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; goto yynewstate; /*-----------------------------------------------------------. | yydefault -- do the default action for the current state. | `-----------------------------------------------------------*/ yydefault: yyn = yydefact[yystate]; if (yyn == 0) goto yyerrlab; goto yyreduce; /*-----------------------------. | yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison users should not rely upon it. Assigning to YYVAL unconditionally makes the parser a bit smaller, and it avoids a GCC warning that YYVAL may be used uninitialized. */ yyval = yyvsp[1-yylen]; YY_REDUCE_PRINT (yyn); switch (yyn) { case 2: /* Line 1464 of yacc.c */ #line 42 "./Parser.y" { ParsedSearchExpression((yyvsp[(1) - (1)].pexpr)); delete (yyvsp[(1) - (1)].pexpr); return 0; ;} break; case 3: /* Line 1464 of yacc.c */ #line 48 "./Parser.y" { CSearchExpr* pexpr = new CSearchExpr(*(yyvsp[(1) - (1)].pstr)); ParsedSearchExpression(pexpr); delete pexpr; delete (yyvsp[(1) - (1)].pstr); return 0; ;} break; case 4: /* Line 1464 of yacc.c */ #line 57 "./Parser.y" { yyerror(wxT("Undefined search expression error")); delete (yyvsp[(1) - (2)].pexpr); return 1; ;} break; case 6: /* Line 1464 of yacc.c */ #line 67 "./Parser.y" { CSearchExpr* pexpr = new CSearchExpr; pexpr->Add(SEARCHOP_AND); pexpr->Add((yyvsp[(1) - (3)].pexpr)); pexpr->Add((yyvsp[(3) - (3)].pexpr)); (yyval.pexpr) = pexpr; delete (yyvsp[(1) - (3)].pexpr); delete (yyvsp[(3) - (3)].pexpr); ;} break; case 7: /* Line 1464 of yacc.c */ #line 77 "./Parser.y" { CSearchExpr* pexpr = new CSearchExpr; pexpr->Add(SEARCHOP_OR); pexpr->Add((yyvsp[(1) - (3)].pexpr)); pexpr->Add((yyvsp[(3) - (3)].pexpr)); (yyval.pexpr) = pexpr; delete (yyvsp[(1) - (3)].pexpr); delete (yyvsp[(3) - (3)].pexpr); ;} break; case 8: /* Line 1464 of yacc.c */ #line 87 "./Parser.y" { CSearchExpr* pexpr = new CSearchExpr; pexpr->Add(SEARCHOP_NOT); pexpr->Add((yyvsp[(1) - (3)].pexpr)); pexpr->Add((yyvsp[(3) - (3)].pexpr)); (yyval.pexpr) = pexpr; delete (yyvsp[(1) - (3)].pexpr); delete (yyvsp[(3) - (3)].pexpr); ;} break; case 9: /* Line 1464 of yacc.c */ #line 97 "./Parser.y" { (yyval.pexpr) = (yyvsp[(2) - (3)].pexpr); ;} break; case 10: /* Line 1464 of yacc.c */ #line 102 "./Parser.y" { yyerror(wxT("Missing right operand for OR on search expression")); delete (yyvsp[(1) - (3)].pexpr); return 1; ;} break; case 11: /* Line 1464 of yacc.c */ #line 108 "./Parser.y" { yyerror(wxT("Missing operand for NOT on search expression")); delete (yyvsp[(1) - (3)].pexpr); return 1; ;} break; case 12: /* Line 1464 of yacc.c */ #line 114 "./Parser.y" { yyerror(wxT("Missing left parenthesis on search expression")); return 1; ;} break; case 13: /* Line 1464 of yacc.c */ #line 119 "./Parser.y" { yyerror(wxT("Missing closing parenthesis on search expression")); delete (yyvsp[(2) - (3)].pexpr); return 1; ;} break; case 14: /* Line 1464 of yacc.c */ #line 125 "./Parser.y" { yyerror(wxT("Missing left operand for AND on search expression")); return 1; ;} break; case 15: /* Line 1464 of yacc.c */ #line 130 "./Parser.y" { yyerror(wxT("Missing left operand for OR on search expression")); return 1; ;} break; case 16: /* Line 1464 of yacc.c */ #line 135 "./Parser.y" { yyerror(wxT("Missing left operand for NOT on search expression (?)")); return 1; ;} break; case 17: /* Line 1464 of yacc.c */ #line 142 "./Parser.y" { (yyval.pexpr) = new CSearchExpr(*(yyvsp[(1) - (1)].pstr)); delete (yyvsp[(1) - (1)].pstr); ;} break; case 18: /* Line 1464 of yacc.c */ #line 147 "./Parser.y" { /*$1->Concatenate($2); delete $2;*/ CSearchExpr* pexpr = new CSearchExpr; pexpr->Add(SEARCHOP_AND); pexpr->Add((yyvsp[(1) - (2)].pexpr)); pexpr->Add(*(yyvsp[(2) - (2)].pstr)); (yyval.pexpr) = pexpr; delete (yyvsp[(1) - (2)].pexpr); delete (yyvsp[(2) - (2)].pstr); ;} break; /* Line 1464 of yacc.c */ #line 1558 "Parser.cpp" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ yyn = yyr1[yyn]; yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) yystate = yytable[yystate]; else yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; /*------------------------------------. | yyerrlab -- here on detecting error | `------------------------------------*/ yyerrlab: /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; #if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); #else { YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) { YYSIZE_T yyalloc = 2 * yysize; if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) yyalloc = YYSTACK_ALLOC_MAXIMUM; if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); yymsg = (char *) YYSTACK_ALLOC (yyalloc); if (yymsg) yymsg_alloc = yyalloc; else { yymsg = yymsgbuf; yymsg_alloc = sizeof yymsgbuf; } } if (0 < yysize && yysize <= yymsg_alloc) { (void) yysyntax_error (yymsg, yystate, yychar); yyerror (yymsg); } else { yyerror (YY_("syntax error")); if (yysize != 0) goto yyexhaustedlab; } } #endif } if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) { /* Return failure if at end of input. */ if (yychar == YYEOF) YYABORT; } else { yydestruct ("Error: discarding", yytoken, &yylval); yychar = YYEMPTY; } } /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; /*---------------------------------------------------. | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: /* Pacify compilers like GCC when the user code never invokes YYERROR and the label yyerrorlab therefore never appears in user code. */ if (/*CONSTCOND*/ 0) goto yyerrorlab; /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; YY_STACK_PRINT (yyss, yyssp); yystate = *yyssp; goto yyerrlab1; /*-------------------------------------------------------------. | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (yyn != YYPACT_NINF) { yyn += YYTERROR; if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) break; } } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) YYABORT; yydestruct ("Error: popping", yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); } *++yyvsp = yylval; /* Shift the error token. */ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; /*-------------------------------------. | yyacceptlab -- YYACCEPT comes here. | `-------------------------------------*/ yyacceptlab: yyresult = 0; goto yyreturn; /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ yyabortlab: yyresult = 1; goto yyreturn; #if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif yyreturn: if (yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval); /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif #if YYERROR_VERBOSE if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif /* Make sure YYID is used. */ return YYID (yyresult); } /* Line 1684 of yacc.c */ #line 160 "./Parser.y" int yyerror(const char* errstr) { // Errors created by yacc generated code //yyerror ("syntax error: cannot back up"); //yyerror ("syntax error; also virtual memory exhausted"); //yyerror ("syntax error"); //yyerror ("parser stack overflow"); _astrParserErrors.Add(char2unicode(errstr)); return EXIT_FAILURE; } int yyerror(wxString errstr) { _astrParserErrors.Add(errstr); return EXIT_FAILURE; } amule_2.3.1+git20151120.0023527bc2.orig/src/Parser.hpp0000644000175000017500000000431212611472361020237 0ustar morphmorph/* A Bison parser, made by GNU Bison 2.4.2. */ /* Skeleton interface for Bison's Yacc-like parsers in C Copyright (C) 1984, 1989-1990, 2000-2006, 2009-2010 Free Software Foundation, Inc. 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 3 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 . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work under terms of your choice, so long as that work isn't itself a parser generator using the skeleton or a modified version thereof as a parser skeleton. Alternatively, if you modify or redistribute the parser skeleton itself, you may (at your option) remove this special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE /* Put the tokens into the symbol table, so that GDB and other debuggers know about them. */ enum yytokentype { TOK_STRING = 258, TOK_AND = 259, TOK_OR = 260, TOK_NOT = 261, TOK_ED2K_LINK = 262 }; #endif #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE { /* Line 1685 of yacc.c */ #line 22 "./Parser.y" wxString* pstr; CSearchExpr* pexpr; /* Line 1685 of yacc.c */ #line 65 "Parser.hpp" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif extern YYSTYPE yylval; amule_2.3.1+git20151120.0023527bc2.orig/src/Parser.y0000644000175000017500000000710112611472361017717 0ustar morphmorph%{ #include "SearchExpr.h" #include "Scanner.h.in" #include "Scanner.h" #include "OtherFunctions.h" #include "libs/common/StringFunctions.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern wxArrayString _astrParserErrors; void ParsedSearchExpression(const CSearchExpr* pexpr); int yyerror(const char* errstr); int yyerror(wxString errstr); %} %union { wxString* pstr; CSearchExpr* pexpr; } %token TOK_STRING %token TOK_AND TOK_OR TOK_NOT %token TOK_ED2K_LINK %type searchexpr and_strings %type TOK_STRING TOK_ED2K_LINK %left TOK_OR %left TOK_AND %left TOK_NOT %% /*-------------------------------------------------------------------*/ action : searchexpr { ParsedSearchExpression($1); delete $1; return 0; } | TOK_ED2K_LINK { CSearchExpr* pexpr = new CSearchExpr(*$1); ParsedSearchExpression(pexpr); delete pexpr; delete $1; return 0; } /* --------- Error Handling --------- */ | searchexpr error { yyerror(wxT("Undefined search expression error")); delete $1; return 1; } ; searchexpr : and_strings | searchexpr TOK_AND searchexpr { CSearchExpr* pexpr = new CSearchExpr; pexpr->Add(SEARCHOP_AND); pexpr->Add($1); pexpr->Add($3); $$ = pexpr; delete $1; delete $3; } | searchexpr TOK_OR searchexpr { CSearchExpr* pexpr = new CSearchExpr; pexpr->Add(SEARCHOP_OR); pexpr->Add($1); pexpr->Add($3); $$ = pexpr; delete $1; delete $3; } | searchexpr TOK_NOT searchexpr { CSearchExpr* pexpr = new CSearchExpr; pexpr->Add(SEARCHOP_NOT); pexpr->Add($1); pexpr->Add($3); $$ = pexpr; delete $1; delete $3; } | '(' searchexpr ')' { $$ = $2; } /* --------- Error Handling --------- */ | searchexpr TOK_OR error { yyerror(wxT("Missing right operand for OR on search expression")); delete $1; return 1; } | searchexpr TOK_NOT error { yyerror(wxT("Missing operand for NOT on search expression")); delete $1; return 1; } | '(' error { yyerror(wxT("Missing left parenthesis on search expression")); return 1; } | '(' searchexpr error { yyerror(wxT("Missing closing parenthesis on search expression")); delete $2; return 1; } | TOK_AND error { yyerror(wxT("Missing left operand for AND on search expression")); return 1; } | TOK_OR error { yyerror(wxT("Missing left operand for OR on search expression")); return 1; } | TOK_NOT error { yyerror(wxT("Missing left operand for NOT on search expression (?)")); return 1; } ; and_strings : TOK_STRING { $$ = new CSearchExpr(*$1); delete $1; } | and_strings TOK_STRING { /*$1->Concatenate($2); delete $2;*/ CSearchExpr* pexpr = new CSearchExpr; pexpr->Add(SEARCHOP_AND); pexpr->Add($1); pexpr->Add(*$2); $$ = pexpr; delete $1; delete $2; } ; %% int yyerror(const char* errstr) { // Errors created by yacc generated code //yyerror ("syntax error: cannot back up"); //yyerror ("syntax error; also virtual memory exhausted"); //yyerror ("syntax error"); //yyerror ("parser stack overflow"); _astrParserErrors.Add(char2unicode(errstr)); return EXIT_FAILURE; } int yyerror(wxString errstr) { _astrParserErrors.Add(errstr); return EXIT_FAILURE; } amule_2.3.1+git20151120.0023527bc2.orig/src/PartFile.cpp0000644000175000017500000035157712611472361020526 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include "PartFile.h" // Interface declarations. #ifdef HAVE_CONFIG_H #include "config.h" // Needed for VERSION #endif #include #include #include #include #include #include #include #include // Needed for wxStringTokenizer #include "KnownFileList.h" // Needed for CKnownFileList #include "CanceledFileList.h" #include "UploadQueue.h" // Needed for CFileHash #include "IPFilter.h" // Needed for CIPFilter #include "Server.h" // Needed for CServer #include "ServerConnect.h" // Needed for CServerConnect #ifdef CLIENT_GUI #include "UpDownClientEC.h" // Needed for CUpDownClient #else #include "updownclient.h" // Needed for CUpDownClient #endif #include "MemFile.h" // Needed for CMemFile #include "Preferences.h" // Needed for CPreferences #include "DownloadQueue.h" // Needed for CDownloadQueue #include "amule.h" // Needed for theApp #include "ED2KLink.h" // Needed for CED2KLink #include "Packet.h" // Needed for CTag #include "SearchList.h" // Needed for CSearchFile #include "ClientList.h" // Needed for clientlist #include "Statistics.h" // Needed for theStats #include "Logger.h" #include // Needed for CFormat #include // Needed for GetLastModificationTime #include "ThreadTasks.h" // Needed for CHashingTask/CCompletionTask/CAllocateFileTask #include "GuiEvents.h" // Needed for Notify_* #include "DataToText.h" // Needed for OriginToText() #include "PlatformSpecific.h" // Needed for CreateSparseFile() #include "FileArea.h" // Needed for CFileArea #include "ScopedPtr.h" // Needed for CScopedArray #include "CorruptionBlackBox.h" #include "kademlia/kademlia/Kademlia.h" #include "kademlia/kademlia/Search.h" SFileRating::SFileRating(const wxString &u, const wxString &f, sint16 r, const wxString &c) : UserName(u), FileName(f), Rating(r), Comment(c) { } SFileRating::SFileRating(const SFileRating &fr) : UserName(fr.UserName), FileName(fr.FileName), Rating(fr.Rating), Comment(fr.Comment) { } #ifndef CLIENT_GUI SFileRating::SFileRating(const CUpDownClient &client) : UserName(client.GetUserName()), FileName(client.GetClientFilename()), Rating(client.GetFileRating()), Comment(client.GetFileComment()) { } #endif SFileRating::~SFileRating() { } class PartFileBufferedData { public: CFileArea area; // File area to be written uint64 start; // This is the start offset of the data uint64 end; // This is the end offset of the data Requested_Block_Struct *block; // This is the requested block that this data relates to PartFileBufferedData(CFileAutoClose& file, byte * data, uint64 _start, uint64 _end, Requested_Block_Struct *_block) : start(_start), end(_end), block(_block) { area.StartWriteAt(file, start, end-start+1); memcpy(area.GetBuffer(), data, end-start+1); } }; typedef std::list ChunkList; #ifndef CLIENT_GUI CPartFile::CPartFile() { Init(); } CPartFile::CPartFile(CSearchFile* searchresult) { Init(); m_abyFileHash = searchresult->GetFileHash(); SetFileName(searchresult->GetFileName()); SetFileSize(searchresult->GetFileSize()); for (unsigned int i = 0; i < searchresult->m_taglist.size(); ++i){ const CTag& pTag = searchresult->m_taglist[i]; bool bTagAdded = false; if (pTag.GetNameID() == 0 && !pTag.GetName().IsEmpty() && (pTag.IsStr() || pTag.IsInt())) { static const struct { wxString pszName; uint8 nType; } _aMetaTags[] = { { wxT(FT_ED2K_MEDIA_ARTIST), 2 }, { wxT(FT_ED2K_MEDIA_ALBUM), 2 }, { wxT(FT_ED2K_MEDIA_TITLE), 2 }, { wxT(FT_ED2K_MEDIA_LENGTH), 2 }, { wxT(FT_ED2K_MEDIA_BITRATE), 3 }, { wxT(FT_ED2K_MEDIA_CODEC), 2 } }; for (unsigned int t = 0; t < itemsof(_aMetaTags); ++t) { if ( pTag.GetType() == _aMetaTags[t].nType && (pTag.GetName() == _aMetaTags[t].pszName)) { // skip string tags with empty string values if (pTag.IsStr() && pTag.GetStr().IsEmpty()) { break; } // skip "length" tags with "0: 0" values if (pTag.GetName() == wxT(FT_ED2K_MEDIA_LENGTH)) { if (pTag.GetStr().IsSameAs(wxT("0: 0")) || pTag.GetStr().IsSameAs(wxT("0:0"))) { break; } } // skip "bitrate" tags with '0' values if ((pTag.GetName() == wxT(FT_ED2K_MEDIA_BITRATE)) && !pTag.GetInt()) { break; } AddDebugLogLineN( logPartFile, wxT("CPartFile::CPartFile(CSearchFile*): added tag ") + pTag.GetFullInfo() ); m_taglist.push_back(pTag); bTagAdded = true; break; } } } else if (pTag.GetNameID() != 0 && pTag.GetName().IsEmpty() && (pTag.IsStr() || pTag.IsInt())) { static const struct { uint8 nID; uint8 nType; } _aMetaTags[] = { { FT_FILETYPE, 2 }, { FT_FILEFORMAT, 2 } }; for (unsigned int t = 0; t < itemsof(_aMetaTags); ++t) { if (pTag.GetType() == _aMetaTags[t].nType && pTag.GetNameID() == _aMetaTags[t].nID) { // skip string tags with empty string values if (pTag.IsStr() && pTag.GetStr().IsEmpty()) { break; } AddDebugLogLineN( logPartFile, wxT("CPartFile::CPartFile(CSearchFile*): added tag ") + pTag.GetFullInfo() ); m_taglist.push_back(pTag); bTagAdded = true; break; } } } if (!bTagAdded) { AddDebugLogLineN( logPartFile, wxT("CPartFile::CPartFile(CSearchFile*): ignored tag ") + pTag.GetFullInfo() ); } } CreatePartFile(); } CPartFile::CPartFile(const CED2KFileLink* fileLink) { Init(); SetFileName(CPath(fileLink->GetName())); SetFileSize(fileLink->GetSize()); m_abyFileHash = fileLink->GetHashKey(); CreatePartFile(); if (fileLink->m_hashset) { if (!LoadHashsetFromFile(fileLink->m_hashset, true)) { AddDebugLogLineC(logPartFile, wxT("eD2K link contained invalid hashset: ") + fileLink->GetLink()); } } } CPartFile::~CPartFile() { // if it's not opened, it was completed or deleted if (m_hpartfile.IsOpened()) { FlushBuffer(); m_hpartfile.Close(); // Update met file (with current directory entry) SavePartFile(); } DeleteContents(m_BufferedData_list); delete m_CorruptionBlackBox; wxASSERT(m_SrcList.empty()); wxASSERT(m_A4AFsrclist.empty()); } void CPartFile::CreatePartFile() { // use lowest free partfilenumber for free file (InterCeptor) int i = 0; do { ++i; m_partmetfilename = CPath(CFormat(wxT("%03i.part.met")) % i); m_fullname = thePrefs::GetTempDir().JoinPaths(m_partmetfilename); } while (m_fullname.FileExists()); m_CorruptionBlackBox->SetPartFileInfo(GetFileName().GetPrintable(), m_partmetfilename.RemoveAllExt().GetPrintable()); m_gaplist.Init(GetFileSize(), true); // Init empty m_PartPath = m_fullname.RemoveExt(); bool fileCreated; if (thePrefs::GetAllocFullFile()) { fileCreated = m_hpartfile.Create(m_PartPath, true); m_hpartfile.Close(); } else { fileCreated = PlatformSpecific::CreateSparseFile(m_PartPath, GetFileSize()); } if (!fileCreated) { AddLogLineN(_("ERROR: Failed to create partfile")); SetStatus(PS_ERROR); } SetFilePath(thePrefs::GetTempDir()); if (thePrefs::GetAllocFullFile()) { SetStatus(PS_ALLOCATING); CThreadScheduler::AddTask(new CAllocateFileTask(this, thePrefs::AddNewFilesPaused())); } else { AllocationFinished(); } m_hashsetneeded = (GetED2KPartHashCount() > 0); SavePartFile(true); SetActive(theApp->IsConnected()); } uint8 CPartFile::LoadPartFile(const CPath& in_directory, const CPath& filename, bool from_backup, bool getsizeonly) { bool isnewstyle = false; uint8 version,partmettype=PMT_UNKNOWN; std::map gap_map; // Slugfiller transferred = 0; m_partmetfilename = filename; m_CorruptionBlackBox->SetPartFileInfo(GetFileName().GetPrintable(), m_partmetfilename.RemoveAllExt().GetPrintable()); m_filePath = in_directory; m_fullname = m_filePath.JoinPaths(m_partmetfilename); m_PartPath = m_fullname.RemoveExt(); // readfile data form part.met file CPath curMetFilename = m_fullname; if (from_backup) { curMetFilename = curMetFilename.AppendExt(PARTMET_BAK_EXT); AddLogLineN(CFormat( _("Trying to load backup of met-file from %s") ) % curMetFilename ); } try { CFile metFile(curMetFilename, CFile::read); if (!metFile.IsOpened()) { AddLogLineN(CFormat( _("ERROR: Failed to open part.met file: %s ==> %s") ) % curMetFilename % GetFileName() ); return false; } else if (metFile.GetLength() == 0) { AddLogLineN(CFormat( _("ERROR: part.met file is 0 size: %s ==> %s") ) % m_partmetfilename % GetFileName() ); return false; } version = metFile.ReadUInt8(); if (version != PARTFILE_VERSION && version != PARTFILE_SPLITTEDVERSION && version != PARTFILE_VERSION_LARGEFILE){ metFile.Close(); //if (version == 83) return ImportShareazaTempFile(...) AddLogLineN(CFormat( _("ERROR: Invalid part.met file version: %s ==> %s") ) % m_partmetfilename % GetFileName() ); return false; } isnewstyle = (version == PARTFILE_SPLITTEDVERSION); partmettype = isnewstyle ? PMT_SPLITTED : PMT_DEFAULTOLD; if (version == PARTFILE_VERSION) {// Do we still need this check ? uint8 test[4]; // It will fail for certain files. metFile.Seek(24, wxFromStart); metFile.Read(test,4); metFile.Seek(1, wxFromStart); if (test[0]==0 && test[1]==0 && test[2]==2 && test[3]==1) { isnewstyle=true; // edonkeys so called "old part style" partmettype=PMT_NEWOLD; } } if (isnewstyle) { uint32 temp = metFile.ReadUInt32(); if (temp==0) { // 0.48 partmets - different again LoadHashsetFromFile(&metFile, false); } else { metFile.Seek(2, wxFromStart); LoadDateFromFile(&metFile); m_abyFileHash = metFile.ReadHash(); } } else { LoadDateFromFile(&metFile); LoadHashsetFromFile(&metFile, false); } uint32 tagcount = metFile.ReadUInt32(); for (uint32 j = 0; j < tagcount; ++j) { CTag newtag(metFile,true); if ( !getsizeonly || (getsizeonly && (newtag.GetNameID() == FT_FILESIZE || newtag.GetNameID() == FT_FILENAME))) { switch(newtag.GetNameID()) { case FT_FILENAME: { if (!GetFileName().IsOk()) { // If it's not empty, we already loaded the unicoded one SetFileName(CPath(newtag.GetStr())); } break; } case FT_LASTSEENCOMPLETE: { lastseencomplete = newtag.GetInt(); break; } case FT_FILESIZE: { SetFileSize(newtag.GetInt()); break; } case FT_TRANSFERRED: { transferred = newtag.GetInt(); break; } case FT_FILETYPE:{ //#warning needs setfiletype string //SetFileType(newtag.GetStr()); break; } case FT_CATEGORY: { m_category = newtag.GetInt(); if (m_category > theApp->glob_prefs->GetCatCount() - 1 ) { m_category = 0; } break; } case FT_OLDDLPRIORITY: case FT_DLPRIORITY: { if (!isnewstyle){ m_iDownPriority = newtag.GetInt(); if( m_iDownPriority == PR_AUTO ){ m_iDownPriority = PR_HIGH; SetAutoDownPriority(true); } else{ if ( m_iDownPriority != PR_LOW && m_iDownPriority != PR_NORMAL && m_iDownPriority != PR_HIGH) m_iDownPriority = PR_NORMAL; SetAutoDownPriority(false); } } break; } case FT_STATUS: { m_paused = (newtag.GetInt() == 1); m_stopped = m_paused; break; } case FT_OLDULPRIORITY: case FT_ULPRIORITY: { if (!isnewstyle){ SetUpPriority(newtag.GetInt(), false); if( GetUpPriority() == PR_AUTO ){ SetUpPriority(PR_HIGH, false); SetAutoUpPriority(true); } else { SetAutoUpPriority(false); } } break; } case FT_KADLASTPUBLISHSRC:{ SetLastPublishTimeKadSrc(newtag.GetInt(), 0); if(GetLastPublishTimeKadSrc() > (uint32)time(NULL)+KADEMLIAREPUBLISHTIMES) { //There may be a posibility of an older client that saved a random number here.. This will check for that.. SetLastPublishTimeKadSrc(0,0); } break; } case FT_KADLASTPUBLISHNOTES:{ SetLastPublishTimeKadNotes(newtag.GetInt()); break; } // old tags: as long as they are not needed, take the chance to purge them case FT_PERMISSIONS: case FT_KADLASTPUBLISHKEY: case FT_PARTFILENAME: break; case FT_DL_ACTIVE_TIME: if (newtag.IsInt()) { m_nDlActiveTime = newtag.GetInt(); } break; case FT_CORRUPTEDPARTS: { wxASSERT(m_corrupted_list.empty()); wxString strCorruptedParts(newtag.GetStr()); wxStringTokenizer tokenizer(strCorruptedParts, wxT(",")); while ( tokenizer.HasMoreTokens() ) { wxString token = tokenizer.GetNextToken(); unsigned long uPart; if (token.ToULong(&uPart)) { if (uPart < GetPartCount() && !IsCorruptedPart(uPart)) { m_corrupted_list.push_back(uPart); } } } break; } case FT_AICH_HASH:{ CAICHHash hash; bool hashSizeOk = hash.DecodeBase32(newtag.GetStr()) == CAICHHash::GetHashSize(); wxASSERT(hashSizeOk); if (hashSizeOk) { m_pAICHHashSet->SetMasterHash(hash, AICH_VERIFIED); } break; } case FT_ATTRANSFERRED:{ statistic.SetAllTimeTransferred(statistic.GetAllTimeTransferred() + (uint64)newtag.GetInt()); break; } case FT_ATTRANSFERREDHI:{ statistic.SetAllTimeTransferred(statistic.GetAllTimeTransferred() + (((uint64)newtag.GetInt()) << 32)); break; } case FT_ATREQUESTED:{ statistic.SetAllTimeRequests(newtag.GetInt()); break; } case FT_ATACCEPTED:{ statistic.SetAllTimeAccepts(newtag.GetInt()); break; } default: { // Start Changes by Slugfiller for better exception handling wxCharBuffer tag_ansi_name = newtag.GetName().ToAscii(); char gap_mark = tag_ansi_name ? tag_ansi_name[0u] : 0; if ( newtag.IsInt() && (newtag.GetName().Length() > 1) && ((gap_mark == FT_GAPSTART) || (gap_mark == FT_GAPEND))) { Gap_Struct *gap = NULL; unsigned long int gapkey; if (newtag.GetName().Mid(1).ToULong(&gapkey)) { if ( gap_map.find( gapkey ) == gap_map.end() ) { gap = new Gap_Struct; gap_map[gapkey] = gap; gap->start = (uint64)-1; gap->end = (uint64)-1; } else { gap = gap_map[ gapkey ]; } if (gap_mark == FT_GAPSTART) { gap->start = newtag.GetInt(); } if (gap_mark == FT_GAPEND) { gap->end = newtag.GetInt()-1; } } else { AddDebugLogLineN(logPartFile, wxT("Wrong gap map key while reading met file!")); wxFAIL; } // End Changes by Slugfiller for better exception handling } else { m_taglist.push_back(newtag); } } } } else { // Nothing. Else, nothing. } } // load the hashsets from the hybridstylepartmet if (isnewstyle && !getsizeonly && (metFile.GetPosition()::iterator it = gap_map.begin(); for ( ; it != gap_map.end(); ++it ) { Gap_Struct* gap = it->second; // SLUGFILLER: SafeHash - revised code, and extra safety if ( (gap->start != (uint64)-1) && (gap->end != (uint64)-1) && gap->start <= gap->end && gap->start < GetFileSize()) { if (gap->end >= GetFileSize()) { gap->end = GetFileSize()-1; // Clipping } m_gaplist.AddGap(gap->start, gap->end); // All tags accounted for, use safe adding } delete gap; // SLUGFILLER: SafeHash } //check if this is a backup if ( m_fullname.GetExt().MakeLower() == wxT("backup" )) { m_fullname = m_fullname.RemoveExt(); } // open permanent handle if ( !m_hpartfile.Open(m_PartPath, CFile::read_write)) { AddLogLineN(CFormat( _("Failed to open %s (%s)") ) % m_fullname % GetFileName() ); return false; } SetStatus(PS_EMPTY); try { // SLUGFILLER: SafeHash - final safety, make sure any missing part of the file is gap if (m_hpartfile.GetLength() < GetFileSize()) AddGap(m_hpartfile.GetLength(), GetFileSize()-1); // Goes both ways - Partfile should never be too large if (m_hpartfile.GetLength() > GetFileSize()) { AddDebugLogLineC(logPartFile, CFormat( wxT("Partfile \"%s\" is too large! Truncating %llu bytes.") ) % GetFileName() % (m_hpartfile.GetLength() - GetFileSize())); m_hpartfile.SetLength(GetFileSize()); } // SLUGFILLER: SafeHash } catch (const CIOFailureException& e) { AddDebugLogLineC(logPartFile, CFormat( wxT("Error while accessing partfile \"%s\": %s") ) % GetFileName() % e.what()); SetStatus(PS_ERROR); } // now close the file again until needed m_hpartfile.Release(true); // check hashcount, file status etc if (GetHashCount() != GetED2KPartHashCount()){ m_hashsetneeded = true; return true; } else { m_hashsetneeded = false; for (size_t i = 0; i < m_hashlist.size(); ++i) { if (IsComplete(i)) { SetStatus(PS_READY); } } } if (m_gaplist.IsComplete()) { // is this file complete already? CompleteFile(false); return true; } if (!isnewstyle) { // not for importing const time_t file_date = CPath::GetModificationTime(m_PartPath); if (m_lastDateChanged != file_date) { // It's pointless to rehash an empty file, since the case // where a user has zero'd a file is handled above ... if (m_hpartfile.GetLength()) { AddLogLineN(CFormat( _("WARNING: %s might be corrupted (%i)") ) % m_PartPath % (m_lastDateChanged - file_date) ); // rehash SetStatus(PS_WAITINGFORHASH); CPath partFileName = m_partmetfilename.RemoveExt(); CThreadScheduler::AddTask(new CHashingTask(m_filePath, partFileName, this)); } } } UpdateCompletedInfos(); if (completedsize > transferred) { m_iGainDueToCompression = completedsize - transferred; } else if (completedsize != transferred) { m_iLostDueToCorruption = transferred - completedsize; } return true; } bool CPartFile::SavePartFile(bool Initial) { switch (status) { case PS_WAITINGFORHASH: case PS_HASHING: case PS_COMPLETE: return false; } /* Don't write anything to disk if less than 100 KB of free space is left. */ sint64 free = CPath::GetFreeSpaceAt(GetFilePath()); if ((free != wxInvalidOffset) && (free < (100 * 1024))) { return false; } CFile file; try { if (!m_PartPath.FileExists()) { throw wxString(wxT(".part file not found")); } uint32 lsc = lastseencomplete; if (!Initial) { CPath::BackupFile(m_fullname, wxT(".backup")); CPath::RemoveFile(m_fullname); } file.Open(m_fullname, CFile::write); if (!file.IsOpened()) { throw wxString(wxT("Failed to open part.met file")); } // version file.WriteUInt8(IsLargeFile() ? PARTFILE_VERSION_LARGEFILE : PARTFILE_VERSION); file.WriteUInt32(CPath::GetModificationTime(m_PartPath)); // hash file.WriteHash(m_abyFileHash); uint16 parts = m_hashlist.size(); file.WriteUInt16(parts); for (int x = 0; x < parts; ++x) { file.WriteHash(m_hashlist[x]); } // tags #define FIXED_TAGS 15 uint32 tagcount = m_taglist.size() + FIXED_TAGS + (m_gaplist.size()*2); if (!m_corrupted_list.empty()) { ++tagcount; } if (m_pAICHHashSet->HasValidMasterHash() && (m_pAICHHashSet->GetStatus() == AICH_VERIFIED)){ ++tagcount; } if (GetLastPublishTimeKadSrc()){ ++tagcount; } if (GetLastPublishTimeKadNotes()){ ++tagcount; } if (GetDlActiveTime()){ ++tagcount; } file.WriteUInt32(tagcount); //#warning Kry - Where are lost by coruption and gained by compression? // 0 (unicoded part file name) // We write it with BOM to keep eMule compatibility. Note that the 'printable' filename is saved, // as presently the filename does not represent an actual file. CTagString( FT_FILENAME, GetFileName().GetPrintable()).WriteTagToFile( &file, utf8strOptBOM ); CTagString( FT_FILENAME, GetFileName().GetPrintable()).WriteTagToFile( &file ); // 1 CTagIntSized( FT_FILESIZE, GetFileSize(), IsLargeFile() ? 64 : 32).WriteTagToFile( &file );// 2 CTagIntSized( FT_TRANSFERRED, transferred, IsLargeFile() ? 64 : 32).WriteTagToFile( &file ); // 3 CTagInt32( FT_STATUS, (m_paused?1:0)).WriteTagToFile( &file ); // 4 if ( IsAutoDownPriority() ) { CTagInt32( FT_DLPRIORITY, (uint8)PR_AUTO ).WriteTagToFile( &file ); // 5 CTagInt32( FT_OLDDLPRIORITY, (uint8)PR_AUTO ).WriteTagToFile( &file ); // 6 } else { CTagInt32( FT_DLPRIORITY, m_iDownPriority ).WriteTagToFile( &file ); // 5 CTagInt32( FT_OLDDLPRIORITY, m_iDownPriority ).WriteTagToFile( &file ); // 6 } CTagInt32( FT_LASTSEENCOMPLETE, lsc ).WriteTagToFile( &file ); // 7 if ( IsAutoUpPriority() ) { CTagInt32( FT_ULPRIORITY, (uint8)PR_AUTO ).WriteTagToFile( &file ); // 8 CTagInt32( FT_OLDULPRIORITY, (uint8)PR_AUTO ).WriteTagToFile( &file ); // 9 } else { CTagInt32( FT_ULPRIORITY, GetUpPriority() ).WriteTagToFile( &file ); // 8 CTagInt32( FT_OLDULPRIORITY, GetUpPriority() ).WriteTagToFile( &file ); // 9 } CTagInt32(FT_CATEGORY, m_category).WriteTagToFile( &file ); // 10 CTagInt32(FT_ATTRANSFERRED, statistic.GetAllTimeTransferred() & 0xFFFFFFFF).WriteTagToFile( &file );// 11 CTagInt32(FT_ATTRANSFERREDHI, statistic.GetAllTimeTransferred() >>32).WriteTagToFile( &file );// 12 CTagInt32(FT_ATREQUESTED, statistic.GetAllTimeRequests()).WriteTagToFile( &file ); // 13 CTagInt32(FT_ATACCEPTED, statistic.GetAllTimeAccepts()).WriteTagToFile( &file ); // 14 // currupt part infos if (!m_corrupted_list.empty()) { wxString strCorruptedParts; std::list::iterator it = m_corrupted_list.begin(); for (; it != m_corrupted_list.end(); ++it) { uint16 uCorruptedPart = *it; if (!strCorruptedParts.IsEmpty()) { strCorruptedParts += wxT(","); } strCorruptedParts += CFormat(wxT("%u")) % uCorruptedPart; } wxASSERT( !strCorruptedParts.IsEmpty() ); CTagString( FT_CORRUPTEDPARTS, strCorruptedParts ).WriteTagToFile( &file); // 11? } //AICH Filehash if (m_pAICHHashSet->HasValidMasterHash() && (m_pAICHHashSet->GetStatus() == AICH_VERIFIED)){ CTagString aichtag(FT_AICH_HASH, m_pAICHHashSet->GetMasterHash().GetString() ); aichtag.WriteTagToFile(&file); // 12? } if (GetLastPublishTimeKadSrc()){ CTagInt32(FT_KADLASTPUBLISHSRC, GetLastPublishTimeKadSrc()).WriteTagToFile(&file); // 15? } if (GetLastPublishTimeKadNotes()){ CTagInt32(FT_KADLASTPUBLISHNOTES, GetLastPublishTimeKadNotes()).WriteTagToFile(&file); // 16? } if (GetDlActiveTime()){ CTagInt32(FT_DL_ACTIVE_TIME, GetDlActiveTime()).WriteTagToFile(&file); // 17 } for (uint32 j = 0; j < (uint32)m_taglist.size();++j) { m_taglist[j].WriteTagToFile(&file); } // gaps unsigned i_pos = 0; for (CGapList::const_iterator it = m_gaplist.begin(); it != m_gaplist.end(); ++it) { wxString tagName = CFormat(wxT(" %u")) % i_pos; // gap start = first missing byte but gap ends = first non-missing byte // in edonkey but I think its easier to user the real limits tagName[0] = FT_GAPSTART; CTagIntSized(tagName, it.start(), IsLargeFile() ? 64 : 32).WriteTagToFile( &file ); tagName[0] = FT_GAPEND; CTagIntSized(tagName, it.end() + 1, IsLargeFile() ? 64 : 32).WriteTagToFile( &file ); ++i_pos; } } catch (const wxString& error) { AddLogLineNS(CFormat( _("ERROR while saving partfile: %s (%s ==> %s)") ) % error % m_partmetfilename % GetFileName() ); return false; } catch (const CIOFailureException& e) { AddLogLineCS(_("IO failure while saving partfile: ") + e.what()); return false; } file.Close(); if (!Initial) { CPath::RemoveFile(m_fullname.AppendExt(wxT(".backup"))); } sint64 metLength = m_fullname.GetFileSize(); if (metLength == wxInvalidOffset) { theApp->ShowAlert( CFormat( _("Could not retrieve length of '%s' - using %s file.") ) % m_fullname % PARTMET_BAK_EXT, _("Message"), wxOK); CPath::CloneFile(m_fullname.AppendExt(PARTMET_BAK_EXT), m_fullname, true); } else if (metLength == 0) { // Don't backup if it's 0 size but raise a warning!!! theApp->ShowAlert( CFormat( _("'%s' is 0 size somehow - using %s file.") ) % m_fullname % PARTMET_BAK_EXT, _("Message"), wxOK); CPath::CloneFile(m_fullname.AppendExt(PARTMET_BAK_EXT), m_fullname, true); } else { // no error, just backup CPath::BackupFile(m_fullname, PARTMET_BAK_EXT); } return true; } void CPartFile::SaveSourceSeeds() { #define MAX_SAVED_SOURCES 10 // Kry - Sources seeds // Based on a Feature request, this saves the last MAX_SAVED_SOURCES // sources of the file, giving a 'seed' for the next run. // We save the last sources because: // 1 - They could be the hardest to get // 2 - They will more probably be available // However, if we have downloading sources, they have preference because // we probably have more credits on them. // Anyway, source exchange will get us the rest of the sources // This feature is currently used only on rare files (< 20 sources) // if (GetSourceCount()>20) { return; } CClientRefList source_seeds; int n_sources = 0; CClientRefList::iterator it = m_downloadingSourcesList.begin(); for( ; it != m_downloadingSourcesList.end() && n_sources < MAX_SAVED_SOURCES; ++it) { if (!it->HasLowID()) { source_seeds.push_back(*it); ++n_sources; } } if (n_sources < MAX_SAVED_SOURCES) { // Not enough downloading sources to fill the list, going to sources list if (GetSourceCount() > 0) { SourceSet::reverse_iterator rit = m_SrcList.rbegin(); for ( ; ((rit != m_SrcList.rend()) && (n_sourcesHasLowID()) { source_seeds.push_back(*rit); ++n_sources; } } } } // Write the file if (!n_sources) { return; } const CPath seedsPath = m_fullname.AppendExt(wxT(".seeds")); CFile file; file.Create(seedsPath, true); if (!file.IsOpened()) { AddLogLineN(CFormat( _("Failed to save part.met.seeds file for %s") ) % m_fullname); return; } try { file.WriteUInt8(0); // v3, to avoid v2 clients choking on it. file.WriteUInt8(source_seeds.size()); CClientRefList::iterator it2 = source_seeds.begin(); for (; it2 != source_seeds.end(); ++it2) { CUpDownClient* cur_src = it2->GetClient(); file.WriteUInt32(cur_src->GetUserIDHybrid()); file.WriteUInt16(cur_src->GetUserPort()); file.WriteHash(cur_src->GetUserHash()); // CryptSettings - See SourceExchange V4 const uint8 uSupportsCryptLayer = cur_src->SupportsCryptLayer() ? 1 : 0; const uint8 uRequestsCryptLayer = cur_src->RequestsCryptLayer() ? 1 : 0; const uint8 uRequiresCryptLayer = cur_src->RequiresCryptLayer() ? 1 : 0; const uint8 byCryptOptions = (uRequiresCryptLayer << 2) | (uRequestsCryptLayer << 1) | (uSupportsCryptLayer << 0); file.WriteUInt8(byCryptOptions); } /* v2: Added to keep track of too old seeds */ file.WriteUInt32(wxDateTime::Now().GetTicks()); AddLogLineN(CFormat( wxPLURAL("Saved %i source seed for partfile: %s (%s)", "Saved %i source seeds for partfile: %s (%s)", n_sources) ) % n_sources % m_fullname % GetFileName()); } catch (const CIOFailureException& e) { AddDebugLogLineC( logPartFile, CFormat( wxT("Error saving partfile's seeds file (%s - %s): %s") ) % m_partmetfilename % GetFileName() % e.what() ); n_sources = 0; file.Close(); CPath::RemoveFile(seedsPath); } } void CPartFile::LoadSourceSeeds() { CMemFile sources_data; bool valid_sources = false; const CPath seedsPath = m_fullname.AppendExt(wxT(".seeds")); if (!seedsPath.FileExists()) { return; } CFile file(seedsPath, CFile::read); if (!file.IsOpened()) { // Exists but can't be opened. Should not happen. Probably permission problem, try to remove it. AddLogLineN(CFormat( _("Can't read seeds file for Partfile %s (%s)") ) % m_partmetfilename % GetFileName() ); CPath::RemoveFile(seedsPath); return; } bool badSeedsFile = false; try { uint8 src_count = file.ReadUInt8(); bool bUseSX2Format = (src_count == 0); if (bUseSX2Format) { // v3 sources seeds src_count = file.ReadUInt8(); } sources_data.WriteUInt16(src_count); for (int i = 0; i< src_count; ++i) { uint32 dwID = file.ReadUInt32(); uint16 nPort = file.ReadUInt16(); sources_data.WriteUInt32(bUseSX2Format ? dwID : wxUINT32_SWAP_ALWAYS(dwID)); sources_data.WriteUInt16(nPort); sources_data.WriteUInt32(0); sources_data.WriteUInt16(0); if (bUseSX2Format) { sources_data.WriteHash(file.ReadHash()); sources_data.WriteUInt8(file.ReadUInt8()); } } if (!file.Eof()) { // v2: Added to keep track of too old seeds time_t time = (time_t)file.ReadUInt32(); // Time frame is 2 hours. More than enough to compile // your new aMule version!. if ((time + MIN2S(120)) >= wxDateTime::Now().GetTicks()) { valid_sources = true; } } else { // v1 has no time data. We can safely use // the sources, next time will be saved. valid_sources = true; } if (valid_sources) { sources_data.Seek(0); AddClientSources(&sources_data, SF_SOURCE_SEEDS, bUseSX2Format ? 4 : 1, bUseSX2Format); } } catch (const CSafeIOException& e) { AddLogLineN(CFormat( _("Error reading partfile's seeds file (%s - %s): %s") ) % m_partmetfilename % GetFileName() % e.what() ); badSeedsFile = true; } file.Close(); if (badSeedsFile) { // If we got an exception reading it remove it. CPath::RemoveFile(seedsPath); } } void CPartFile::PartFileHashFinished(CKnownFile* result) { m_lastDateChanged = result->m_lastDateChanged; bool errorfound = false; if (GetED2KPartHashCount() == 0){ if (IsComplete(0, GetFileSize()-1)){ if (result->GetFileHash() != GetFileHash()){ // cppcheck-suppress zerodiv AddLogLineN(CFormat(wxPLURAL( "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |%s|", "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash |%s|", 0) ) % 1 % 0 % GetFileName() % result->GetFileHash().Encode() % GetFileHash().Encode() ); AddGap(0, GetFileSize()-1); errorfound = true; } } } else{ for (size_t i = 0; i < m_hashlist.size(); ++i){ // Kry - trel_ar's completed parts check on rehashing. // Very nice feature, if a file is completed but .part.met don't believe it, // update it. if (!( i < result->GetHashCount() && (result->GetPartHash(i) == GetPartHash(i)))){ if (IsComplete(i)) { CMD4Hash wronghash; if ( i < result->GetHashCount() ) wronghash = result->GetPartHash(i); AddLogLineN(CFormat(wxPLURAL( "Found corrupted part (%d) in %d part file %s - FileResultHash |%s| FileHash |%s|", "Found corrupted part (%d) in %d parts file %s - FileResultHash |%s| FileHash |%s|", GetED2KPartHashCount()) ) % ( i + 1 ) % GetED2KPartHashCount() % GetFileName() % wronghash.Encode() % GetPartHash(i).Encode() ); AddGap(i); errorfound = true; } } else { if (!IsComplete(i)){ AddLogLineN(CFormat( _("Found completed part (%i) in %s") ) % ( i + 1 ) % GetFileName() ); FillGap(i); uint64 partStart = i * PARTSIZE; uint64 partEnd = partStart + GetPartSize(i) - 1; RemoveBlockFromList(partStart, partEnd); } } } } if ( !errorfound && result->GetAICHHashset()->GetStatus() == AICH_HASHSETCOMPLETE && status == PS_COMPLETING) { delete m_pAICHHashSet; m_pAICHHashSet = result->GetAICHHashset(); result->SetAICHHashset(NULL); m_pAICHHashSet->SetOwner(this); } else if (status == PS_COMPLETING) { AddDebugLogLineN(logPartFile, CFormat(wxT("Failed to store new AICH Hashset for completed file: %s")) % GetFileName()); } delete result; if (!errorfound){ if (status == PS_COMPLETING){ CompleteFile(true); return; } else { AddLogLineN(CFormat( _("Finished rehashing %s") ) % GetFileName()); } } else{ SetStatus(PS_READY); SavePartFile(); return; } SetStatus(PS_READY); SavePartFile(); theApp->sharedfiles->SafeAddKFile(this); } void CPartFile::AddGap(uint64 start, uint64 end) { m_gaplist.AddGap(start, end); UpdateDisplayedInfo(); } void CPartFile::AddGap(uint16 part) { m_gaplist.AddGap(part); UpdateDisplayedInfo(); } bool CPartFile::IsAlreadyRequested(uint64 start, uint64 end) { std::list::iterator it = m_requestedblocks_list.begin(); for (; it != m_requestedblocks_list.end(); ++it) { Requested_Block_Struct* cur_block = *it; if ((start <= cur_block->EndOffset) && (end >= cur_block->StartOffset)) { return true; } } return false; } bool CPartFile::GetNextEmptyBlockInPart(uint16 partNumber, Requested_Block_Struct *result) { // Find start of this part uint64 partStart = (PARTSIZE * partNumber); uint64 start = partStart; // What is the end limit of this block, i.e. can't go outside part (or filesize) uint64 partEnd = partStart + GetPartSize(partNumber) - 1; // Loop until find a suitable gap and return true, or no more gaps and return false CGapList::const_iterator it = m_gaplist.begin(); while (true) { bool noGap = true; uint64 gapStart, end; // Find the first gap from the start position for (; it != m_gaplist.end(); ++it) { gapStart = it.start(); end = it.end(); // Want gaps that overlap start<->partEnd if (gapStart <= partEnd && end >= start) { noGap = false; break; } else if (gapStart > partEnd) { break; } } // If no gaps after start, exit if (noGap) { return false; } // Update start position if gap starts after current pos if (start < gapStart) { start = gapStart; } // Find end, keeping within the max block size and the part limit uint64 blockLimit = partStart + (BLOCKSIZE * (((start - partStart) / BLOCKSIZE) + 1)) - 1; if (end > blockLimit) { end = blockLimit; } if (end > partEnd) { end = partEnd; } // If this gap has not already been requested, we have found a valid entry if (!IsAlreadyRequested(start, end)) { // Was this block to be returned if (result != NULL) { result->StartOffset = start; result->EndOffset = end; md4cpy(result->FileID, GetFileHash().GetHash()); result->transferred = 0; } return true; } else { // Reposition to end of that gap start = end + 1; } // If tried all gaps then break out of the loop if (end == partEnd) { break; } } // No suitable gap found return false; } void CPartFile::FillGap(uint64 start, uint64 end) { m_gaplist.FillGap(start, end); UpdateCompletedInfos(); UpdateDisplayedInfo(); } void CPartFile::FillGap(uint16 part) { m_gaplist.FillGap(part); UpdateCompletedInfos(); UpdateDisplayedInfo(); } void CPartFile::UpdateCompletedInfos() { uint64 allgaps = m_gaplist.GetGapSize(); percentcompleted = (1.0 - (double)allgaps/GetFileSize()) * 100.0; completedsize = GetFileSize() - allgaps; } void CPartFile::WritePartStatus(CMemFile* file) { uint16 parts = GetED2KPartCount(); file->WriteUInt16(parts); uint16 done = 0; while (done != parts){ uint8 towrite = 0; for (uint32 i = 0;i != 8;++i) { if (IsComplete(done)) { towrite |= (1<WriteUInt8(towrite); } } void CPartFile::WriteCompleteSourcesCount(CMemFile* file) { file->WriteUInt16(m_nCompleteSourcesCount); } uint32 CPartFile::Process(uint32 reducedownload/*in percent*/,uint8 m_icounter) { uint16 old_trans; uint32 dwCurTick = ::GetTickCount(); // If buffer size exceeds limit, or if not written within time limit, flush data if ( (m_nTotalBufferData > thePrefs::GetFileBufferSize()) || (dwCurTick > (m_nLastBufferFlushTime + BUFFER_TIME_LIMIT))) { FlushBuffer(); } // check if we want new sources from server --> MOVED for 16.40 version old_trans=transferingsrc; transferingsrc = 0; kBpsDown = 0.0; if (m_icounter < 10) { // Update only downloading sources. CClientRefList::iterator it = m_downloadingSourcesList.begin(); for( ; it != m_downloadingSourcesList.end(); ) { CUpDownClient *cur_src = it++->GetClient(); if(cur_src->GetDownloadState() == DS_DOWNLOADING) { ++transferingsrc; kBpsDown += cur_src->SetDownloadLimit(reducedownload); } } } else { // Update all sources (including downloading sources) for ( SourceSet::iterator it = m_SrcList.begin(); it != m_SrcList.end(); ) { CUpDownClient* cur_src = it++->GetClient(); switch (cur_src->GetDownloadState()) { case DS_DOWNLOADING: { ++transferingsrc; kBpsDown += cur_src->SetDownloadLimit(reducedownload); break; } case DS_BANNED: { break; } case DS_ERROR: { break; } case DS_LOWTOLOWIP: { if (cur_src->HasLowID() && !theApp->CanDoCallback(cur_src->GetServerIP(), cur_src->GetServerPort())) { // If we are almost maxed on sources, // slowly remove these client to see // if we can find a better source. if (((dwCurTick - lastpurgetime) > 30000) && (GetSourceCount() >= (thePrefs::GetMaxSourcePerFile()*.8))) { RemoveSource(cur_src); lastpurgetime = dwCurTick; break; } } else { cur_src->SetDownloadState(DS_ONQUEUE); } break; } case DS_NONEEDEDPARTS: { // we try to purge noneeded source, even without reaching the limit if((dwCurTick - lastpurgetime) > 40000) { if(!cur_src->SwapToAnotherFile(false , false, false , NULL)) { //however we only delete them if reaching the limit if (GetSourceCount() >= (thePrefs::GetMaxSourcePerFile()*.8 )) { RemoveSource(cur_src); lastpurgetime = dwCurTick; break; //Johnny-B - nothing more to do here (good eye!) } } else { lastpurgetime = dwCurTick; break; } } // doubled reasktime for no needed parts - save connections and traffic if ( !((!cur_src->GetLastAskedTime()) || (dwCurTick - cur_src->GetLastAskedTime()) > FILEREASKTIME*2)) { break; } // Recheck this client to see if still NNP.. // Set to DS_NONE so that we force a TCP reask next time.. cur_src->SetDownloadState(DS_NONE); break; } case DS_ONQUEUE: { if( cur_src->IsRemoteQueueFull()) { if( ((dwCurTick - lastpurgetime) > 60000) && (GetSourceCount() >= (thePrefs::GetMaxSourcePerFile()*.8 )) ) { RemoveSource( cur_src ); lastpurgetime = dwCurTick; break; //Johnny-B - nothing more to do here (good eye!) } } // Give up to 1 min for UDP to respond.. // If we are within on min on TCP, do not try.. if ( theApp->IsConnected() && ( (!cur_src->GetLastAskedTime()) || (dwCurTick - cur_src->GetLastAskedTime()) > FILEREASKTIME-20000)) { cur_src->UDPReaskForDownload(); } // No break here, since the next case takes care of asking for downloads. } case DS_CONNECTING: case DS_TOOMANYCONNS: case DS_NONE: case DS_WAITCALLBACK: case DS_WAITCALLBACKKAD: { if ( theApp->IsConnected() && ( (!cur_src->GetLastAskedTime()) || (dwCurTick - cur_src->GetLastAskedTime()) > FILEREASKTIME)) { if (!cur_src->AskForDownload()) { // I left this break here just as a reminder // just in case re rearange things.. break; } } break; } } } /* eMule 0.30c implementation, i give it a try (Creteil) BEGIN ... */ if (IsA4AFAuto() && ((!m_LastNoNeededCheck) || (dwCurTick - m_LastNoNeededCheck > 900000))) { m_LastNoNeededCheck = dwCurTick; for ( SourceSet::iterator it = m_A4AFsrclist.begin(); it != m_A4AFsrclist.end(); ) { CUpDownClient *cur_source = it++->GetClient(); uint8 download_state=cur_source->GetDownloadState(); if( download_state != DS_DOWNLOADING && cur_source->GetRequestFile() && ((!cur_source->GetRequestFile()->IsA4AFAuto()) || download_state == DS_NONEEDEDPARTS)) { cur_source->SwapToAnotherFile(false, false, false, this); } } } /* eMule 0.30c implementation, i give it a try (Creteil) END ... */ // swap No needed partfiles if possible if (((old_trans==0) && (transferingsrc>0)) || ((old_trans>0) && (transferingsrc==0))) { SetStatus(status); } // Kad source search if( GetMaxSourcePerFileUDP() > GetSourceCount()){ //Once we can handle lowID users in Kad, we remove the second IsConnected if (theApp->downloadqueue->DoKademliaFileRequest() && (Kademlia::CKademlia::GetTotalFile() < KADEMLIATOTALFILE) && (dwCurTick > m_LastSearchTimeKad) && Kademlia::CKademlia::IsConnected() && theApp->IsConnected() && !IsStopped()){ //Kademlia theApp->downloadqueue->SetLastKademliaFileRequest(); if (GetKadFileSearchID()) { /* This will never happen anyway. We're talking a 1h timespan and searches are at max 45secs */ Kademlia::CSearchManager::StopSearch(GetKadFileSearchID(), false); } Kademlia::CUInt128 kadFileID(GetFileHash().GetHash()); Kademlia::CSearch* pSearch = Kademlia::CSearchManager::PrepareLookup(Kademlia::CSearch::FILE, true, kadFileID); AddDebugLogLineN(logKadSearch, CFormat(wxT("Preparing a Kad Search for '%s'")) % GetFileName()); if (pSearch) { AddDebugLogLineN(logKadSearch, CFormat(wxT("Kad lookup started for '%s'")) % GetFileName()); if(m_TotalSearchesKad < 7) { m_TotalSearchesKad++; } m_LastSearchTimeKad = dwCurTick + (KADEMLIAREASKTIME*m_TotalSearchesKad); SetKadFileSearchID(pSearch->GetSearchID()); } } } else { if(GetKadFileSearchID()) { Kademlia::CSearchManager::StopSearch(GetKadFileSearchID(), true); } } // check if we want new sources from server if ( !m_localSrcReqQueued && ( (!m_lastsearchtime) || (dwCurTick - m_lastsearchtime) > SERVERREASKTIME) && theApp->IsConnectedED2K() && thePrefs::GetMaxSourcePerFileSoft() > GetSourceCount() && !m_stopped ) { m_localSrcReqQueued = true; theApp->downloadqueue->SendLocalSrcRequest(this); } // calculate datarate, set limit etc. } ++m_count; // Kry - does the 3 / 30 difference produce too much flickering or CPU? if (m_count >= 30) { m_count = 0; UpdateAutoDownPriority(); UpdateDisplayedInfo(); if(m_bPercentUpdated == false) { UpdateCompletedInfos(); } m_bPercentUpdated = false; } // release file handle if unused for some time m_hpartfile.Release(); return (uint32)(kBpsDown*1024.0); } bool CPartFile::CanAddSource(uint32 userid, uint16 port, uint32 serverip, uint16 serverport, uint8* pdebug_lowiddropped, bool ed2kID) { //The incoming ID could have the userid in the Hybrid format.. uint32 hybridID = 0; if( ed2kID ) { if (IsLowID(userid)) { hybridID = userid; } else { hybridID = wxUINT32_SWAP_ALWAYS(userid); } } else { hybridID = userid; if (!IsLowID(userid)) { userid = wxUINT32_SWAP_ALWAYS(userid); } } // MOD Note: Do not change this part - Merkur if (theApp->IsConnectedED2K()) { if(::IsLowID(theApp->GetED2KID())) { if(theApp->GetED2KID() == userid && theApp->serverconnect->GetCurrentServer()->GetIP() == serverip && theApp->serverconnect->GetCurrentServer()->GetPort() == serverport ) { return false; } if(theApp->GetPublicIP() == userid) { return false; } } else { if(theApp->GetED2KID() == userid && thePrefs::GetPort() == port) { return false; } } } if (Kademlia::CKademlia::IsConnected()) { if(!Kademlia::CKademlia::IsFirewalled()) { if(Kademlia::CKademlia::GetIPAddress() == hybridID && thePrefs::GetPort() == port) { return false; } } } //This allows *.*.*.0 clients to not be removed if Ed2kID == false if ( IsLowID(hybridID) && theApp->IsFirewalled()) { if (pdebug_lowiddropped) { (*pdebug_lowiddropped)++; } return false; } // MOD Note - end return true; } void CPartFile::AddSources(CMemFile& sources,uint32 serverip, uint16 serverport, unsigned origin, bool bWithObfuscationAndHash) { uint8 count = sources.ReadUInt8(); uint8 debug_lowiddropped = 0; uint8 debug_possiblesources = 0; CMD4Hash achUserHash; if (m_stopped) { // since we may received multiple search source UDP results we have to "consume" all data of that packet AddDebugLogLineN(logPartFile, wxT("Trying to add sources for a stopped file")); sources.Seek(count*(4+2), wxFromCurrent); return; } for (int i = 0;i != count;++i) { uint32 userid = sources.ReadUInt32(); uint16 port = sources.ReadUInt16(); uint8 byCryptOptions = 0; if (bWithObfuscationAndHash){ byCryptOptions = sources.ReadUInt8(); if ((byCryptOptions & 0x80) > 0) { achUserHash = sources.ReadHash(); } if ((thePrefs::IsClientCryptLayerRequested() && (byCryptOptions & 0x01/*supported*/) > 0 && (byCryptOptions & 0x80) == 0) || (thePrefs::IsClientCryptLayerSupported() && (byCryptOptions & 0x02/*requested*/) > 0 && (byCryptOptions & 0x80) == 0)) { AddDebugLogLineN(logPartFile, CFormat(wxT("Server didn't provide UserHash for source %u, even if it was expected to (or local obfuscationsettings changed during serverconnect")) % userid); } else if (!thePrefs::IsClientCryptLayerRequested() && (byCryptOptions & 0x02/*requested*/) == 0 && (byCryptOptions & 0x80) != 0) { AddDebugLogLineN(logPartFile, CFormat(wxT("Server provided UserHash for source %u, even if it wasn't expected to (or local obfuscationsettings changed during serverconnect")) % userid); } } // "Filter LAN IPs" and "IPfilter" the received sources IP addresses if (!IsLowID(userid)) { // check for 0-IP, localhost and optionally for LAN addresses if ( !IsGoodIP(userid, thePrefs::FilterLanIPs()) ) { continue; } if (theApp->ipfilter->IsFiltered(userid)) { continue; } } if (!CanAddSource(userid, port, serverip, serverport, &debug_lowiddropped)) { continue; } if(thePrefs::GetMaxSourcePerFile() > GetSourceCount()) { ++debug_possiblesources; CUpDownClient* newsource = new CUpDownClient(port,userid,serverip,serverport,this, true, true); newsource->SetSourceFrom((ESourceFrom)origin); newsource->SetConnectOptions(byCryptOptions, true, false); if ((byCryptOptions & 0x80) != 0) { newsource->SetUserHash(achUserHash); } theApp->downloadqueue->CheckAndAddSource(this,newsource); } else { AddDebugLogLineN(logPartFile, wxT("Consuming a packet because of max sources reached")); // Since we may receive multiple search source UDP results we have to "consume" all data of that packet // This '+1' is added because 'i' counts from 0. sources.Seek((count-(i+1))*(4+2), wxFromCurrent); if (GetKadFileSearchID()) { Kademlia::CSearchManager::StopSearch(GetKadFileSearchID(), false); } break; } } } void CPartFile::UpdatePartsInfo() { if( !IsPartFile() ) { CKnownFile::UpdatePartsInfo(); return; } // Cache part count uint16 partcount = GetPartCount(); bool flag = (time(NULL) - m_nCompleteSourcesTime > 0); // Ensure the frequency-list is ready if ( m_SrcpartFrequency.size() != GetPartCount() ) { m_SrcpartFrequency.clear(); m_SrcpartFrequency.insert(m_SrcpartFrequency.begin(), GetPartCount(), 0); } // Find number of available parts uint16 availablecounter = 0; for ( uint16 i = 0; i < partcount; ++i ) { if ( m_SrcpartFrequency[i] ) ++availablecounter; } if ( ( availablecounter == partcount ) && ( m_availablePartsCount < partcount ) ) { lastseencomplete = time(NULL); } m_availablePartsCount = availablecounter; if ( flag ) { ArrayOfUInts16 count; count.reserve(GetSourceCount()); for ( SourceSet::iterator it = m_SrcList.begin(); it != m_SrcList.end(); ++it ) { CUpDownClient* client = it->GetClient(); if ( !client->GetUpPartStatus().empty() && client->GetUpPartCount() == partcount ) { count.push_back(client->GetUpCompleteSourcesCount()); } } m_nCompleteSourcesCount = m_nCompleteSourcesCountLo = m_nCompleteSourcesCountHi = 0; for (uint16 i = 0; i < partcount; ++i) { if( !i ) { m_nCompleteSourcesCount = m_SrcpartFrequency[i]; } else if( m_nCompleteSourcesCount > m_SrcpartFrequency[i]) { m_nCompleteSourcesCount = m_SrcpartFrequency[i]; } } count.push_back(m_nCompleteSourcesCount); int32 n = count.size(); if (n > 0) { std::sort(count.begin(), count.end(), std::less()); // calculate range int32 i= n >> 1; // (n / 2) int32 j= (n * 3) >> 2; // (n * 3) / 4 int32 k= (n * 7) >> 3; // (n * 7) / 8 //When still a part file, adjust your guesses by 20% to what you see.. if (n < 5) { //Not many sources, so just use what you see.. // welcome to 'plain stupid code' // m_nCompleteSourcesCount; m_nCompleteSourcesCountLo= m_nCompleteSourcesCount; m_nCompleteSourcesCountHi= m_nCompleteSourcesCount; } else if (n < 20) { // For low guess and normal guess count // If we see more sources then the guessed low and normal, use what we see. // If we see less sources then the guessed low, adjust network accounts for 80%, // we account for 20% with what we see and make sure we are still above the normal. // For high guess // Adjust 80% network and 20% what we see. if ( count[i] < m_nCompleteSourcesCount ) { m_nCompleteSourcesCountLo = m_nCompleteSourcesCount; } else { m_nCompleteSourcesCountLo = (uint16)((float)(count[i]*.8) + (float)(m_nCompleteSourcesCount*.2)); } m_nCompleteSourcesCount = m_nCompleteSourcesCountLo; m_nCompleteSourcesCountHi = (uint16)((float)(count[j]*.8) + (float)(m_nCompleteSourcesCount*.2)); if( m_nCompleteSourcesCountHi < m_nCompleteSourcesCount ) { m_nCompleteSourcesCountHi = m_nCompleteSourcesCount; } } else { // Many sources // ------------ // For low guess // Use what we see. // For normal guess // Adjust network accounts for 80%, we account for 20% with what // we see and make sure we are still above the low. // For high guess // Adjust network accounts for 80%, we account for 20% with what // we see and make sure we are still above the normal. m_nCompleteSourcesCountLo= m_nCompleteSourcesCount; m_nCompleteSourcesCount= (uint16)((float)(count[j]*.8)+(float)(m_nCompleteSourcesCount*.2)); if( m_nCompleteSourcesCount < m_nCompleteSourcesCountLo ) { m_nCompleteSourcesCount = m_nCompleteSourcesCountLo; } m_nCompleteSourcesCountHi= (uint16)((float)(count[k]*.8)+(float)(m_nCompleteSourcesCount*.2)); if( m_nCompleteSourcesCountHi < m_nCompleteSourcesCount ) { m_nCompleteSourcesCountHi = m_nCompleteSourcesCount; } } } m_nCompleteSourcesTime = time(NULL) + (60); } UpdateDisplayedInfo(); } // [Maella -Enhanced Chunk Selection- (based on jicxicmic)] bool CPartFile::GetNextRequestedBlock(CUpDownClient* sender, std::vector& toadd, uint16& count) { // The purpose of this function is to return a list of blocks (~180KB) to // download. To avoid a prematurely stop of the downloading, all blocks that // are requested from the same source must be located within the same // chunk (=> part ~9MB). // // The selection of the chunk to download is one of the CRITICAL parts of the // edonkey network. The selection algorithm must insure the best spreading // of files. // // The selection is based on 4 criteria: // 1. Frequency of the chunk (availability), very rare chunks must be downloaded // as quickly as possible to become a new available source. // 2. Parts used for preview (first + last chunk), preview or check a // file (e.g. movie, mp3) // 3. Request state (downloading in process), try to ask each source for another // chunk. Spread the requests between all sources. // 4. Completion (shortest-to-complete), partially retrieved chunks should be // completed before starting to download other one. // // The frequency criterion defines three zones: very rare (<10%), rare (<50%) // and common (>30%). Inside each zone, the criteria have a specific weight, used // to calculate the priority of chunks. The chunk(s) with the highest // priority (highest=0, lowest=0xffff) is/are selected first. // // very rare (preview) rare common // 0% <---- +0 pt ----> 10% <----- +10000 pt -----> 50% <---- +20000 pt ----> 100% // 1. <------- frequency: +25*frequency pt -----------> // 2. <- preview: +1 pt --><-------------- preview: set to 10000 pt -------------> // 3. <------ request: download in progress +20000 pt ------> // 4a. <- completion: 0% +100, 25% +75 .. 100% +0 pt --><-- !req => completion ---> // 4b. <--- req => !completion --> // // Unrolled, the priority scale is: // // 0..xxxx unrequested and requested very rare chunks // 10000..1xxxx unrequested rare chunks + unrequested preview chunks // 20000..2xxxx unrequested common chunks (priority to the most complete) // 30000..3xxxx requested rare chunks + requested preview chunks // 40000..4xxxx requested common chunks (priority to the least complete) // // This algorithm usually selects first the rarest chunk(s). However, partially // complete chunk(s) that is/are close to completion may overtake the priority // (priority inversion). // For the common chuncks, the algorithm tries to spread the dowload between // the sources // // Check input parameters if ( sender->GetPartStatus().empty() ) { return false; } // Define and create the list of the chunks to download const uint16 partCount = GetPartCount(); ChunkList chunksList; // Main loop uint16 newBlockCount = 0; while(newBlockCount != count) { // Create a request block stucture if a chunk has been previously selected if(sender->GetLastPartAsked() != 0xffff) { Requested_Block_Struct* pBlock = new Requested_Block_Struct; if(GetNextEmptyBlockInPart(sender->GetLastPartAsked(), pBlock) == true) { // Keep a track of all pending requested blocks m_requestedblocks_list.push_back(pBlock); // Update list of blocks to return toadd.push_back(pBlock); newBlockCount++; // Skip end of loop (=> CPU load) continue; } else { // All blocks for this chunk have been already requested delete pBlock; // => Try to select another chunk sender->SetLastPartAsked(0xffff); } } // Check if a new chunk must be selected (e.g. download starting, previous chunk complete) if(sender->GetLastPartAsked() == 0xffff) { // Quantify all chunks (create list of chunks to download) // This is done only one time and only if it is necessary (=> CPU load) if(chunksList.empty()) { // Indentify the locally missing part(s) that this source has for(uint16 i=0; i < partCount; ++i) { if(sender->IsPartAvailable(i) == true && GetNextEmptyBlockInPart(i, NULL) == true) { // Create a new entry for this chunk and add it to the list Chunk newEntry; newEntry.part = i; newEntry.frequency = m_SrcpartFrequency[i]; chunksList.push_back(newEntry); } } // Check if any bloks(s) could be downloaded if(chunksList.empty()) { break; // Exit main loop while() } // Define the bounds of the three zones (very rare, rare) // more depending on available sources uint8 modif=10; if (GetSourceCount()>800) { modif=2; } else if (GetSourceCount()>200) { modif=5; } uint16 limit= modif*GetSourceCount()/ 100; if (limit==0) { limit=1; } const uint16 veryRareBound = limit; const uint16 rareBound = 2*limit; // Cache Preview state (Criterion 2) FileType type = GetFiletype(GetFileName()); const bool isPreviewEnable = thePrefs::GetPreviewPrio() && (type == ftArchive || type == ftVideo); // Collect and calculate criteria for all chunks for (ChunkList::iterator it = chunksList.begin(); it != chunksList.end(); ++it) { Chunk& cur_chunk = *it; // Offsets of chunk const uint64 uStart = cur_chunk.part * PARTSIZE; const uint64 uEnd = uStart + GetPartSize(cur_chunk.part) - 1; // Criterion 2. Parts used for preview // Remark: - We need to download the first part and the last part(s). // - When the last part is very small, it's necessary to // download the two last parts. bool critPreview = false; if(isPreviewEnable == true) { if(cur_chunk.part == 0) { critPreview = true; // First chunk } else if(cur_chunk.part == partCount-1) { critPreview = true; // Last chunk } else if(cur_chunk.part == partCount-2) { // Last chunk - 1 (only if last chunk is too small) const uint32 sizeOfLastChunk = GetFileSize() - uEnd; if(sizeOfLastChunk < PARTSIZE/3) { critPreview = true; // Last chunk - 1 } } } // Criterion 3. Request state (downloading in process from other source(s)) // => CPU load const bool critRequested = cur_chunk.frequency > veryRareBound && IsAlreadyRequested(uStart, uEnd); // Criterion 4. Completion // PARTSIZE instead of GetPartSize() favours the last chunk - but that may be intentional uint32 partSize = PARTSIZE - m_gaplist.GetGapSize(cur_chunk.part); const uint16 critCompletion = (uint16)(partSize/(PARTSIZE/100)); // in [%] // Calculate priority with all criteria if(cur_chunk.frequency <= veryRareBound) { // 0..xxxx unrequested + requested very rare chunks cur_chunk.rank = (25 * cur_chunk.frequency) + // Criterion 1 ((critPreview == true) ? 0 : 1) + // Criterion 2 (100 - critCompletion); // Criterion 4 } else if(critPreview == true) { // 10000..10100 unrequested preview chunks // 30000..30100 requested preview chunks cur_chunk.rank = ((critRequested == false) ? 10000 : 30000) + // Criterion 3 (100 - critCompletion); // Criterion 4 } else if(cur_chunk.frequency <= rareBound) { // 10101..1xxxx unrequested rare chunks // 30101..3xxxx requested rare chunks cur_chunk.rank = (25 * cur_chunk.frequency) + // Criterion 1 ((critRequested == false) ? 10101 : 30101) + // Criterion 3 (100 - critCompletion); // Criterion 4 } else { // common chunk if(critRequested == false) { // Criterion 3 // 20000..2xxxx unrequested common chunks cur_chunk.rank = 20000 + // Criterion 3 (100 - critCompletion); // Criterion 4 } else { // 40000..4xxxx requested common chunks // Remark: The weight of the completion criterion is inversed // to spead the requests over the completing chunks. // Without this, the chunk closest to completion will // received every new sources. cur_chunk.rank = 40000 + // Criterion 3 (critCompletion); // Criterion 4 } } } } // Select the next chunk to download if(!chunksList.empty()) { // Find and count the chunck(s) with the highest priority uint16 chunkCount = 0; // Number of found chunks with same priority uint16 rank = 0xffff; // Highest priority found // Collect and calculate criteria for all chunks for (ChunkList::iterator it = chunksList.begin(); it != chunksList.end(); ++it) { const Chunk& cur_chunk = *it; if(cur_chunk.rank < rank) { chunkCount = 1; rank = cur_chunk.rank; } else if(cur_chunk.rank == rank) { ++chunkCount; } } // Use a random access to avoid that everybody tries to download the // same chunks at the same time (=> spread the selected chunk among clients) uint16 randomness = 1 + (int) (((float)(chunkCount-1))*rand()/(RAND_MAX+1.0)); for (ChunkList::iterator it = chunksList.begin(); it != chunksList.end(); ++it) { const Chunk& cur_chunk = *it; if(cur_chunk.rank == rank) { randomness--; if(randomness == 0) { // Selection process is over sender->SetLastPartAsked(cur_chunk.part); // Remark: this list might be reused up to *count times chunksList.erase(it); break; // exit loop for() } } } } else { // There is no remaining chunk to download break; // Exit main loop while() } } } // Return the number of the blocks count = newBlockCount; // Return return (newBlockCount > 0); } // Maella end void CPartFile::RemoveBlockFromList(uint64 start,uint64 end) { std::list::iterator it = m_requestedblocks_list.begin(); while (it != m_requestedblocks_list.end()) { std::list::iterator it2 = it++; if ((*it2)->StartOffset <= start && (*it2)->EndOffset >= end) { m_requestedblocks_list.erase(it2); } } } void CPartFile::RemoveAllRequestedBlocks(void) { m_requestedblocks_list.clear(); } void CPartFile::CompleteFile(bool bIsHashingDone) { if (GetKadFileSearchID()) { Kademlia::CSearchManager::StopSearch(GetKadFileSearchID(), false); } theApp->downloadqueue->RemoveLocalServerRequest(this); AddDebugLogLineN( logPartFile, wxString( wxT("CPartFile::CompleteFile: Hash ") ) + ( bIsHashingDone ? wxT("done") : wxT("not done") ) ); if (!bIsHashingDone) { SetStatus(PS_COMPLETING); kBpsDown = 0.0; CPath partFile = m_partmetfilename.RemoveExt(); CThreadScheduler::AddTask(new CHashingTask(GetFilePath(), partFile, this)); return; } else { StopFile(); m_is_A4AF_auto=false; SetStatus(PS_COMPLETING); // guess I was wrong about not need to spaw a thread ... // It is if the temp and incoming dirs are on different // partitions/drives and the file is large...[oz] // PerformFileComplete(); } if (thePrefs::ShowCatTabInfos()) { Notify_ShowUpdateCatTabTitles(); } UpdateDisplayedInfo(true); } void CPartFile::CompleteFileEnded(bool errorOccured, const CPath& newname) { if (errorOccured) { m_paused = true; SetStatus(PS_ERROR); AddLogLineC(CFormat( _("Unexpected error while completing %s. File paused") )% GetFileName() ); } else { m_fullname = newname; SetFilePath(m_fullname.GetPath()); SetFileName(m_fullname.GetFullName()); m_lastDateChanged = CPath::GetModificationTime(m_fullname); SetStatus(PS_COMPLETE); m_paused = false; ClearPriority(); // Remove from list of canceled files in case it was canceled once upon a time if (theApp->canceledfiles->Remove(GetFileHash())) { theApp->canceledfiles->Save(); } // Mark as known (checks if it's already known), // also updates search files theApp->knownfiles->SafeAddKFile(this); // remove the file from the suspended uploads list theApp->uploadqueue->ResumeUpload(GetFileHash()); theApp->downloadqueue->RemoveFile(this, true); theApp->sharedfiles->SafeAddKFile(this); UpdateDisplayedInfo(true); // republish that file to the ed2k-server to update the 'FT_COMPLETE_SOURCES' counter on the server. theApp->sharedfiles->RepublishFile(this); // Ensure that completed shows the correct value completedsize = GetFileSize(); // clear the blackbox to free up memory m_CorruptionBlackBox->Free(); AddLogLineC(CFormat( _("Finished downloading: %s") ) % GetFileName() ); } theApp->downloadqueue->StartNextFile(this); } void CPartFile::PerformFileComplete() { // add this file to the suspended uploads list theApp->uploadqueue->SuspendUpload(GetFileHash(), false); FlushBuffer(); // close permanent handle if (m_hpartfile.IsOpened()) { m_hpartfile.Close(); } // Schedule task for completion of the file CThreadScheduler::AddTask(new CCompletionTask(this)); } void CPartFile::RemoveAllSources(bool bTryToSwap) { for( SourceSet::iterator it = m_SrcList.begin(); it != m_SrcList.end();) { CUpDownClient* cur_src = it++->GetClient(); if (bTryToSwap) { if (!cur_src->SwapToAnotherFile(true, true, true, NULL)) { RemoveSource(cur_src,true,false); // If it was not swapped, it's not on any file anymore, and should die } } else { RemoveSource(cur_src,true,false); } } UpdatePartsInfo(); /* eMule 0.30c implementation, i give it a try (Creteil) BEGIN ... */ // remove all links A4AF in sources to this file if(!m_A4AFsrclist.empty()) { for( SourceSet::iterator it = m_A4AFsrclist.begin(); it != m_A4AFsrclist.end(); ) { CUpDownClient* cur_src = it++->GetClient(); if ( cur_src->DeleteFileRequest( this ) ) { Notify_SourceCtrlRemoveSource(cur_src->ECID(), this); } } m_A4AFsrclist.clear(); } /* eMule 0.30c implementation, i give it a try (Creteil) END ... */ UpdateFileRatingCommentAvail(); } void CPartFile::Delete() { AddLogLineN(CFormat(_("Deleting file: %s")) % GetFileName()); // Barry - Need to tell any connected clients to stop sending the file StopFile(true); AddDebugLogLineN(logPartFile, wxT("\tStopped")); #ifdef __DEBUG__ uint16 removed = #endif theApp->uploadqueue->SuspendUpload(GetFileHash(), true); AddDebugLogLineN(logPartFile, CFormat(wxT("\tSuspended upload to %d clients")) % removed); theApp->sharedfiles->RemoveFile(this); AddDebugLogLineN(logPartFile, wxT("\tRemoved from shared")); theApp->downloadqueue->RemoveFile(this); AddDebugLogLineN(logPartFile, wxT("\tRemoved from download queue")); Notify_DownloadCtrlRemoveFile(this); AddDebugLogLineN(logPartFile, wxT("\tRemoved from transferwnd")); if (theApp->canceledfiles->Add(GetFileHash())) { theApp->canceledfiles->Save(); } AddDebugLogLineN(logPartFile, wxT("\tAdded to canceled file list")); theApp->searchlist->UpdateSearchFileByHash(GetFileHash()); // Update file in the search dialog if it's still open if (m_hpartfile.IsOpened()) { m_hpartfile.Close(); } AddDebugLogLineN(logPartFile, wxT("\tClosed")); // cppcheck-suppress duplicateBranch if (!CPath::RemoveFile(m_fullname)) { AddDebugLogLineC(logPartFile, CFormat(wxT("\tFailed to delete '%s'")) % m_fullname); } else { AddDebugLogLineN(logPartFile, wxT("\tRemoved .part.met")); } // cppcheck-suppress duplicateBranch if (!CPath::RemoveFile(m_PartPath)) { AddDebugLogLineC(logPartFile, CFormat(wxT("Failed to delete '%s'")) % m_PartPath); } else { AddDebugLogLineN(logPartFile, wxT("\tRemoved .part")); } CPath BAKName = m_fullname.AppendExt(PARTMET_BAK_EXT); // cppcheck-suppress duplicateBranch if (!CPath::RemoveFile(BAKName)) { AddDebugLogLineC(logPartFile, CFormat(wxT("Failed to delete '%s'")) % BAKName); } else { AddDebugLogLineN(logPartFile, wxT("\tRemoved .bak")); } CPath SEEDSName = m_fullname.AppendExt(wxT(".seeds")); if (SEEDSName.FileExists()) { // cppcheck-suppress duplicateBranch if (CPath::RemoveFile(SEEDSName)) { AddDebugLogLineN(logPartFile, wxT("\tRemoved .seeds")); } else { AddDebugLogLineC(logPartFile, CFormat(wxT("Failed to delete '%s'")) % SEEDSName); } } AddDebugLogLineN(logPartFile, wxT("Done")); delete this; } bool CPartFile::HashSinglePart(uint16 partnumber) { if ((GetHashCount() <= partnumber) && (GetPartCount() > 1)) { AddLogLineC(CFormat( _("WARNING: Unable to hash downloaded part - hashset incomplete for '%s'") ) % GetFileName() ); m_hashsetneeded = true; return true; } else if ((GetHashCount() <= partnumber) && GetPartCount() != 1) { AddLogLineC(CFormat( _("ERROR: Unable to hash downloaded part - hashset incomplete (%s). This should never happen")) % GetFileName() ); m_hashsetneeded = true; return true; } else { CMD4Hash hashresult; uint64 offset = PARTSIZE * partnumber; uint32 length = GetPartSize(partnumber); try { CreateHashFromFile(m_hpartfile, offset, length, &hashresult, NULL); } catch (const CIOFailureException& e) { AddLogLineC(CFormat( _("EOF while hashing downloaded part %u with length %u (max %u) of partfile '%s' with length %u: %s")) % partnumber % length % (offset+length) % GetFileName() % GetFileSize() % e.what()); SetStatus(PS_ERROR); return false; } catch (const CEOFException& e) { AddLogLineC(CFormat( _("EOF while hashing downloaded part %u with length %u (max %u) of partfile '%s' with length %u: %s")) % partnumber % length % (offset+length) % GetFileName() % GetFileSize() % e.what()); SetStatus(PS_ERROR); return false; } if (GetPartCount() > 1) { if (hashresult != GetPartHash(partnumber)) { AddDebugLogLineN(logPartFile, CFormat( wxT("%s: Expected hash of part %d: %s")) % GetFileName() % partnumber % GetPartHash(partnumber).Encode() ); AddDebugLogLineN(logPartFile, CFormat( wxT("%s: Actual hash of part %d: %s")) % GetFileName() % partnumber % hashresult.Encode() ); return false; } else { return true; } } else { if (hashresult != m_abyFileHash) { return false; } else { return true; } } } } bool CPartFile::IsCorruptedPart(uint16 partnumber) { return std::find(m_corrupted_list.begin(), m_corrupted_list.end(), partnumber) != m_corrupted_list.end(); } void CPartFile::SetDownPriority(uint8 np, bool bSave, bool bRefresh ) { if ( m_iDownPriority != np ) { m_iDownPriority = np; if ( bRefresh ) UpdateDisplayedInfo(true); if ( bSave ) SavePartFile(); } } void CPartFile::StopFile(bool bCancel) { // Kry - Need to set it here to get into SetStatus(status) correctly m_stopped = true; // Barry - Need to tell any connected clients to stop sending the file PauseFile(); m_LastSearchTimeKad = 0; m_TotalSearchesKad = 0; RemoveAllSources(true); kBpsDown = 0.0; transferingsrc = 0; if (!bCancel) { FlushBuffer(); } UpdateDisplayedInfo(true); } void CPartFile::StopPausedFile() { if (!IsStopped()) { // Once an hour, remove any sources for files which are no longer active downloads switch (GetStatus()) { case PS_PAUSED: case PS_INSUFFICIENT: case PS_ERROR: if (time(NULL) - m_iLastPausePurge > (60*60)) { m_iLastPausePurge = time(NULL); StopFile(); } kBpsDown = 0.0; } } // release file handle if unused for some time m_hpartfile.Release(); } void CPartFile::PauseFile(bool bInsufficient) { SetActive(false); if ( status == PS_COMPLETE || status == PS_COMPLETING ) { return; } if (GetKadFileSearchID()) { Kademlia::CSearchManager::StopSearch(GetKadFileSearchID(), true); // If we were in the middle of searching, reset timer so they can resume searching. m_LastSearchTimeKad = 0; } m_iLastPausePurge = time(NULL); theApp->downloadqueue->RemoveLocalServerRequest(this); CPacket packet( OP_CANCELTRANSFER, 0, OP_EDONKEYPROT ); for( SourceSet::iterator it = m_SrcList.begin(); it != m_SrcList.end(); ) { CUpDownClient* cur_src = it++->GetClient(); if (cur_src->GetDownloadState() == DS_DOWNLOADING) { if (!cur_src->GetSentCancelTransfer()) { theStats::AddUpOverheadOther( packet.GetPacketSize() ); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_CANCELTRANSFER to ") + cur_src->GetFullIP() ); cur_src->SendPacket( &packet, false, true ); cur_src->SetSentCancelTransfer( true ); } cur_src->SetDownloadState(DS_ONQUEUE); // Allow immediate reconnect on resume cur_src->ResetLastAskedTime(); } } m_insufficient = bInsufficient; m_paused = true; kBpsDown = 0.0; transferingsrc = 0; SetStatus(status); } void CPartFile::ResumeFile() { if ( status == PS_COMPLETE || status == PS_COMPLETING ) { return; } if ( m_insufficient && !CheckFreeDiskSpace() ) { // Still not enough free discspace return; } m_paused = false; m_stopped = false; m_insufficient = false; m_lastsearchtime = 0; SetStatus(status); SetActive(theApp->IsConnected()); if (m_gaplist.IsComplete() && (GetStatus() == PS_ERROR)) { // The file has already been hashed at this point CompleteFile(true); } UpdateDisplayedInfo(true); } bool CPartFile::CheckFreeDiskSpace( uint64 neededSpace ) { uint64 free = CPath::GetFreeSpaceAt(GetFilePath()); if (free == static_cast(wxInvalidOffset)) { // If GetFreeSpaceAt() fails, then the path probably does not exist. return false; } // The very least acceptable diskspace is a single PART if ( free < PARTSIZE ) { // Always fail in this case, since we risk losing data if we try to // write on a full partition. return false; } // All other checks are only made if the user has enabled them if ( thePrefs::IsCheckDiskspaceEnabled() ) { neededSpace += thePrefs::GetMinFreeDiskSpace(); // Due to the the existance of sparse files, we cannot assume that // writes within the file doesn't cause new blocks to be allocated. // Therefore, we have to simply stop writing the moment the limit has // been exceeded. return free >= neededSpace; } return true; } void CPartFile::SetLastAnsweredTime() { m_ClientSrcAnswered = ::GetTickCount(); } void CPartFile::SetLastAnsweredTimeTimeout() { m_ClientSrcAnswered = 2 * CONNECTION_LATENCY + ::GetTickCount() - SOURCECLIENTREASKS; } CPacket *CPartFile::CreateSrcInfoPacket(const CUpDownClient* forClient, uint8 byRequestedVersion, uint16 nRequestedOptions) { if ( m_SrcList.empty() ) { return NULL; } if(!IsPartFile()) { return CKnownFile::CreateSrcInfoPacket(forClient, byRequestedVersion, nRequestedOptions); } if (((forClient->GetRequestFile() != this) && (forClient->GetUploadFile() != this)) || forClient->GetUploadFileID() != GetFileHash()) { wxString file1 = _("Unknown"); if (forClient->GetRequestFile() && forClient->GetRequestFile()->GetFileName().IsOk()) { file1 = forClient->GetRequestFile()->GetFileName().GetPrintable(); } else if (forClient->GetUploadFile() && forClient->GetUploadFile()->GetFileName().IsOk()) { file1 = forClient->GetUploadFile()->GetFileName().GetPrintable(); } wxString file2 = _("Unknown"); if (GetFileName().IsOk()) { file2 = GetFileName().GetPrintable(); } AddDebugLogLineN(logPartFile, wxT("File mismatch on source packet (P) Sending: ") + file1 + wxT(" From: ") + file2); return NULL; } if ( !(GetStatus() == PS_READY || GetStatus() == PS_EMPTY)) { return NULL; } const BitVector& reqstatus = forClient->GetPartStatus(); bool KnowNeededParts = !reqstatus.empty(); //wxASSERT(rcvstatus.size() == GetPartCount()); // Obviously! if (KnowNeededParts && (reqstatus.size() != GetPartCount())) { // Yuck. Same file but different part count? Seriously fucked up. // This happens rather often with reqstatus.size() == 0. Don't log then. if (reqstatus.size()) { AddDebugLogLineN(logKnownFiles, CFormat(wxT("Impossible situation: different partcounts: %i (client) and %i (file) for %s")) % reqstatus.size() % GetPartCount() % GetFileName()); } return NULL; } CMemFile data(1024); uint8 byUsedVersion; bool bIsSX2Packet; if (forClient->SupportsSourceExchange2() && byRequestedVersion > 0){ // the client uses SourceExchange2 and requested the highest version he knows // and we send the highest version we know, but of course not higher than his request byUsedVersion = std::min(byRequestedVersion, (uint8)SOURCEEXCHANGE2_VERSION); bIsSX2Packet = true; data.WriteUInt8(byUsedVersion); // we don't support any special SX2 options yet, reserved for later use if (nRequestedOptions != 0) { AddDebugLogLineN(logKnownFiles, CFormat(wxT("Client requested unknown options for SourceExchange2: %u")) % nRequestedOptions); } } else { byUsedVersion = forClient->GetSourceExchange1Version(); bIsSX2Packet = false; if (forClient->SupportsSourceExchange2()) { AddDebugLogLineN(logKnownFiles, wxT("Client which announced to support SX2 sent SX1 packet instead")); } } uint16 nCount = 0; data.WriteHash(m_abyFileHash); data.WriteUInt16(nCount); bool bNeeded; for (SourceSet::iterator it = m_SrcList.begin(); it != m_SrcList.end(); ++it ) { bNeeded = false; CUpDownClient* cur_src = it->GetClient(); int state = cur_src->GetDownloadState(); int valid = ( state == DS_DOWNLOADING ) || ( state == DS_ONQUEUE && !cur_src->IsRemoteQueueFull() ); if ( cur_src->HasLowID() || !valid ) { continue; } // only send source which have needed parts for this client if possible const BitVector& srcstatus = cur_src->GetPartStatus(); if ( !srcstatus.empty() ) { //wxASSERT(srcstatus.size() == GetPartCount()); // Obviously! if (srcstatus.size() != GetPartCount()) { continue; } if ( KnowNeededParts ) { // only send sources which have needed parts for this client for (int x = 0; x < GetPartCount(); ++x) { if (srcstatus.get(x) && !reqstatus.get(x)) { bNeeded = true; break; } } } else { // if we don't know the need parts for this client, // return any source currently a client sends it's // file status only after it has at least one complete part if (srcstatus.size() != GetPartCount()) { continue; } for (int x = 0; x < GetPartCount(); ++x){ if (srcstatus.get(x)) { bNeeded = true; break; } } } } if(bNeeded) { ++nCount; uint32 dwID; if(forClient->GetSourceExchange1Version() > 2) { dwID = cur_src->GetUserIDHybrid(); } else { dwID = wxUINT32_SWAP_ALWAYS(cur_src->GetUserIDHybrid()); } data.WriteUInt32(dwID); data.WriteUInt16(cur_src->GetUserPort()); data.WriteUInt32(cur_src->GetServerIP()); data.WriteUInt16(cur_src->GetServerPort()); if (byUsedVersion >= 2) { data.WriteHash(cur_src->GetUserHash()); } if (byUsedVersion >= 4){ // CryptSettings - SourceExchange V4 // 5 Reserved (!) // 1 CryptLayer Required // 1 CryptLayer Requested // 1 CryptLayer Supported const uint8 uSupportsCryptLayer = cur_src->SupportsCryptLayer() ? 1 : 0; const uint8 uRequestsCryptLayer = cur_src->RequestsCryptLayer() ? 1 : 0; const uint8 uRequiresCryptLayer = cur_src->RequiresCryptLayer() ? 1 : 0; const uint8 byCryptOptions = (uRequiresCryptLayer << 2) | (uRequestsCryptLayer << 1) | (uSupportsCryptLayer << 0); data.WriteUInt8(byCryptOptions); } if (nCount > 500) { break; } } } if (!nCount) { return 0; } data.Seek(bIsSX2Packet ? 17 : 16, wxFromStart); data.WriteUInt16(nCount); CPacket* result = new CPacket(data, OP_EMULEPROT, bIsSX2Packet ? OP_ANSWERSOURCES2 : OP_ANSWERSOURCES); // 16+2+501*(4+2+4+2+16) = 14046 bytes max. if (result->GetPacketSize() > 354) { result->PackPacket(); } return result; } void CPartFile::AddClientSources(CMemFile* sources, unsigned nSourceFrom, uint8 uClientSXVersion, bool bSourceExchange2, const CUpDownClient* /*pClient*/) { // Kad reviewed if (m_stopped) { return; } uint32 nCount = 0; uint8 uPacketSXVersion = 0; if (!bSourceExchange2) { nCount = sources->ReadUInt16(); // Check if the data size matches the 'nCount' for v1 or v2 and eventually correct the source // exchange version while reading the packet data. Otherwise we could experience a higher // chance in dealing with wrong source data, userhashs and finally duplicate sources. uint32 uDataSize = sources->GetLength() - sources->GetPosition(); if ((uint32)(nCount*(4+2+4+2)) == uDataSize) { //Checks if version 1 packet is correct size if(uClientSXVersion != 1) { return; } uPacketSXVersion = 1; } else if ((uint32)(nCount*(4+2+4+2+16)) == uDataSize) { // Checks if version 2&3 packet is correct size if (uClientSXVersion == 2) { uPacketSXVersion = 2; } else if (uClientSXVersion > 2) { uPacketSXVersion = 3; } else { return; } } else if (nCount*(4+2+4+2+16+1) == uDataSize) { if (uClientSXVersion != 4 ) { return; } uPacketSXVersion = 4; } else { // If v5 inserts additional data (like v2), the above code will correctly filter those packets. // If v5 appends additional data after ()[count], we are in trouble with the // above code. Though a client which does not understand v5+ should never receive such a packet. AddDebugLogLineN(logClient, CFormat(wxT("Received invalid source exchange packet (v%u) of data size %u for %s")) % uClientSXVersion % uDataSize % GetFileName()); return; } } else { // for SX2: // We only check if the version is known by us and do a quick sanitize check on known version // other then SX1, the packet will be ignored if any error appears, sicne it can't be a "misunderstanding" anymore if (uClientSXVersion > SOURCEEXCHANGE2_VERSION || uClientSXVersion == 0 ){ AddDebugLogLineN(logPartFile, CFormat(wxT("Invalid source exchange type version: %i")) % uClientSXVersion); return; } // all known versions use the first 2 bytes as count and unknown version are already filtered above nCount = sources->ReadUInt16(); uint32 uDataSize = (uint32)(sources->GetLength() - sources->GetPosition()); bool bError = false; switch (uClientSXVersion){ case 1: bError = nCount*(4+2+4+2) != uDataSize; break; case 2: case 3: bError = nCount*(4+2+4+2+16) != uDataSize; break; case 4: bError = nCount*(4+2+4+2+16+1) != uDataSize; break; default: wxFAIL; } if (bError){ wxFAIL; AddDebugLogLineN(logPartFile, wxT("Invalid source exchange data size.")); return; } uPacketSXVersion = uClientSXVersion; } for (uint16 i = 0;i != nCount;++i) { uint32 dwID = sources->ReadUInt32(); uint16 nPort = sources->ReadUInt16(); uint32 dwServerIP = sources->ReadUInt32(); uint16 nServerPort = sources->ReadUInt16(); CMD4Hash userHash; if (uPacketSXVersion > 1) { userHash = sources->ReadHash(); } uint8 byCryptOptions = 0; if (uPacketSXVersion >= 4) { byCryptOptions = sources->ReadUInt8(); } //Clients send ID's the the Hyrbid format so highID clients with *.*.*.0 won't be falsely switched to a lowID.. uint32 dwIDED2K; if (uPacketSXVersion >= 3) { dwIDED2K = wxUINT32_SWAP_ALWAYS(dwID); } else { dwIDED2K = dwID; } // check the HighID(IP) - "Filter LAN IPs" and "IPfilter" the received sources IP addresses if (!IsLowID(dwID)) { if (!IsGoodIP(dwIDED2K, thePrefs::FilterLanIPs())) { // check for 0-IP, localhost and optionally for LAN addresses AddDebugLogLineN(logIPFilter, CFormat(wxT("Ignored source (IP=%s) received via %s - bad IP")) % Uint32toStringIP(dwIDED2K) % OriginToText(nSourceFrom)); continue; } if (theApp->ipfilter->IsFiltered(dwIDED2K)) { AddDebugLogLineN(logIPFilter, CFormat(wxT("Ignored source (IP=%s) received via %s - IPFilter")) % Uint32toStringIP(dwIDED2K) % OriginToText(nSourceFrom)); continue; } if (theApp->clientlist->IsBannedClient(dwIDED2K)){ continue; } } // additionally check for LowID and own IP if (!CanAddSource(dwID, nPort, dwServerIP, nServerPort, NULL, false)) { AddDebugLogLineN(logIPFilter, CFormat(wxT("Ignored source (IP=%s) received via source exchange")) % Uint32toStringIP(dwIDED2K)); continue; } if(thePrefs::GetMaxSourcePerFile() > GetSourceCount()) { CUpDownClient* newsource = new CUpDownClient(nPort,dwID,dwServerIP,nServerPort,this, (uPacketSXVersion < 3), true); if (uPacketSXVersion > 1) { newsource->SetUserHash(userHash); } if (uPacketSXVersion >= 4) { newsource->SetConnectOptions(byCryptOptions, true, false); } newsource->SetSourceFrom((ESourceFrom)nSourceFrom); theApp->downloadqueue->CheckAndAddSource(this,newsource); } else { break; } } } void CPartFile::UpdateAutoDownPriority() { if (!IsAutoDownPriority()) { return; } if (GetSourceCount() <= theApp->downloadqueue->GetRareFileThreshold()) { if ( GetDownPriority() != PR_HIGH ) SetDownPriority(PR_HIGH, false, false); } else if (GetSourceCount() < theApp->downloadqueue->GetCommonFileThreshold()) { if ( GetDownPriority() != PR_NORMAL ) SetDownPriority(PR_NORMAL, false, false); } else { if ( GetDownPriority() != PR_LOW ) SetDownPriority(PR_LOW, false, false); } } // making this function return a higher when more sources have the extended // protocol will force you to ask a larger variety of people for sources int CPartFile::GetCommonFilePenalty() { //TODO: implement, but never return less than MINCOMMONPENALTY! return MINCOMMONPENALTY; } /* Barry - Replaces BlockReceived() Originally this only wrote to disk when a full 180k block had been received from a client, and only asked for data in 180k blocks. This meant that on average 90k was lost for every connection to a client data source. That is a lot of wasted data. To reduce the lost data, packets are now written to a buffer and flushed to disk regularly regardless of size downloaded. This includes compressed packets. Data is also requested only where gaps are, not in 180k blocks. The requests will still not exceed 180k, but may be smaller to fill a gap. */ // Kry - transize is 32bits, no packet can be more than that (this is // compressed size). Even 32bits is too much imho.As for the return size, // look at the lenData below. uint32 CPartFile::WriteToBuffer(uint32 transize, byte* data, uint64 start, uint64 end, Requested_Block_Struct *block, const CUpDownClient* client) { // Increment transferred bytes counter for this file transferred += transize; // This is needed a few times // Kry - should not need a uint64 here - no block is larger than // 2GB even after uncompressed. uint32 lenData = (uint32) (end - start + 1); if(lenData > transize) { m_iGainDueToCompression += lenData-transize; } // Occasionally packets are duplicated, no point writing it twice if (IsComplete(start, end)) { AddDebugLogLineN(logPartFile, CFormat(wxT("File '%s' has already been written from %u to %u")) % GetFileName() % start % end); return 0; } // security sanitize check to make sure we do not write anything into an already hashed complete chunk const uint64 nStartChunk = start / PARTSIZE; const uint64 nEndChunk = end / PARTSIZE; if (IsComplete(nStartChunk)) { AddDebugLogLineN(logPartFile, CFormat(wxT("Received data touches already hashed chunk - ignored (start): %u-%u; File=%s")) % start % end % GetFileName()); return 0; } else if (nStartChunk != nEndChunk) { if (IsComplete(nEndChunk)) { AddDebugLogLineN(logPartFile, CFormat(wxT("Received data touches already hashed chunk - ignored (end): %u-%u; File=%s")) % start % end % GetFileName()); return 0; } else { AddDebugLogLineN(logPartFile, CFormat(wxT("Received data crosses chunk boundaries: %u-%u; File=%s")) % start % end % GetFileName()); } } // log transferinformation in our "blackbox" m_CorruptionBlackBox->TransferredData(start, end, client->GetIP()); // Create a new buffered queue entry PartFileBufferedData *item = new PartFileBufferedData(m_hpartfile, data, start, end, block); // Add to the queue in the correct position (most likely the end) bool added = false; std::list::iterator it = m_BufferedData_list.begin(); for (; it != m_BufferedData_list.end(); ++it) { PartFileBufferedData* queueItem = *it; if (item->end <= queueItem->end) { if (it != m_BufferedData_list.begin()) { added = true; m_BufferedData_list.insert(--it, item); } break; } } if (!added) { m_BufferedData_list.push_front(item); } // Increment buffer size marker m_nTotalBufferData += lenData; // Mark this small section of the file as filled FillGap(item->start, item->end); // Update the flushed mark on the requested block // The loop here is unfortunate but necessary to detect deleted blocks. std::list::iterator it2 = m_requestedblocks_list.begin(); for (; it2 != m_requestedblocks_list.end(); ++it2) { if (*it2 == item->block) { item->block->transferred += lenData; } } if (m_gaplist.IsComplete()) { FlushBuffer(); } // Return the length of data written to the buffer return lenData; } void CPartFile::FlushBuffer(bool fromAICHRecoveryDataAvailable) { m_nLastBufferFlushTime = GetTickCount(); if (m_BufferedData_list.empty()) { return; } uint32 partCount = GetPartCount(); // Remember which parts need to be checked at the end of the flush std::vector changedPart(partCount, false); // Ensure file is big enough to write data to (the last item will be the furthest from the start) if (!CheckFreeDiskSpace(m_nTotalBufferData)) { // Not enough free space to write the last item, bail AddLogLineC(CFormat( _("WARNING: Not enough free disk-space! Pausing file: %s") ) % GetFileName()); PauseFile( true ); return; } // Loop through queue while ( !m_BufferedData_list.empty() ) { // Get top item and remove it from the queue CScopedPtr item(m_BufferedData_list.front()); m_BufferedData_list.pop_front(); // This is needed a few times wxASSERT((item->end - item->start) < 0xFFFFFFFF); uint32 lenData = (uint32)(item->end - item->start + 1); // SLUGFILLER: SafeHash - could be more than one part for (uint32 curpart = (item->start/PARTSIZE); curpart <= (item->end/PARTSIZE); ++curpart) { wxASSERT(curpart < partCount); changedPart[curpart] = true; } // SLUGFILLER: SafeHash // Go to the correct position in file and write block of data try { item->area.FlushAt(m_hpartfile, item->start, lenData); // Decrease buffer size m_nTotalBufferData -= lenData; } catch (const CIOFailureException& e) { AddDebugLogLineC(logPartFile, wxT("Error while saving part-file: ") + e.what()); SetStatus(PS_ERROR); // No need to bang your head against it again and again if it has already failed. DeleteContents(m_BufferedData_list); m_nTotalBufferData = 0; return; } } // Update last-changed date m_lastDateChanged = wxDateTime::GetTimeNow(); try { // Partfile should never be too large if (m_hpartfile.GetLength() > GetFileSize()) { // it's "last chance" correction. the real bugfix has to be applied 'somewhere' else m_hpartfile.SetLength(GetFileSize()); } } catch (const CIOFailureException& e) { AddDebugLogLineC(logPartFile, CFormat(wxT("Error while truncating part-file (%s): %s")) % m_PartPath % e.what()); SetStatus(PS_ERROR); } // Check each part of the file for (uint16 partNumber = 0; partNumber < partCount; ++partNumber) { if (changedPart[partNumber] == false) { continue; } uint32 partRange = GetPartSize(partNumber) - 1; // Is this 9MB part complete if (IsComplete(partNumber)) { // Is part corrupt if (!HashSinglePart(partNumber)) { AddLogLineC(CFormat( _("Downloaded part %i is corrupt in file: %s") ) % partNumber % GetFileName() ); AddGap(partNumber); // add part to corrupted list, if not already there if (!IsCorruptedPart(partNumber)) { m_corrupted_list.push_back(partNumber); } // request AICH recovery data // Don't if called from the AICHRecovery. It's already there and would lead to an infinite recursion. if (!fromAICHRecoveryDataAvailable) { RequestAICHRecovery(partNumber); } // Reduce transferred amount by corrupt amount m_iLostDueToCorruption += (partRange + 1); } else { if (!m_hashsetneeded) { AddDebugLogLineN(logPartFile, CFormat( wxT("Finished part %u of '%s'")) % partNumber % GetFileName()); } // tell the blackbox about the verified data m_CorruptionBlackBox->VerifiedData(true, partNumber, 0, partRange); // if this part was successfully completed (although ICH is active), remove from corrupted list EraseFirstValue(m_corrupted_list, partNumber); if (status == PS_EMPTY) { if (theApp->IsRunning()) { // may be called during shutdown! if (GetHashCount() == GetED2KPartHashCount() && !m_hashsetneeded) { // Successfully completed part, make it available for sharing SetStatus(PS_READY); theApp->sharedfiles->SafeAddKFile(this); } } } } } else if ( IsCorruptedPart(partNumber) && // corrupted part: (thePrefs::IsICHEnabled() // old ICH: rehash whenever we have new data hoping it will be good now || fromAICHRecoveryDataAvailable)) {// new AICH: one rehash right before performing it (maybe it's already good) // Try to recover with minimal loss if (HashSinglePart(partNumber)) { ++m_iTotalPacketsSavedDueToICH; uint64 uMissingInPart = m_gaplist.GetGapSize(partNumber); FillGap(partNumber); RemoveBlockFromList(PARTSIZE*partNumber,(PARTSIZE*partNumber + partRange)); // tell the blackbox about the verified data m_CorruptionBlackBox->VerifiedData(true, partNumber, 0, partRange); // remove from corrupted list EraseFirstValue(m_corrupted_list, partNumber); AddLogLineC(CFormat( _("ICH: Recovered corrupted part %i for %s -> Saved bytes: %s") ) % partNumber % GetFileName() % CastItoXBytes(uMissingInPart)); if (GetHashCount() == GetED2KPartHashCount() && !m_hashsetneeded) { if (status == PS_EMPTY) { // Successfully recovered part, make it available for sharing SetStatus(PS_READY); if (theApp->IsRunning()) // may be called during shutdown! theApp->sharedfiles->SafeAddKFile(this); } } } } } // Update met file SavePartFile(); if (theApp->IsRunning()) { // may be called during shutdown! // Is this file finished ? if (m_gaplist.IsComplete()) { CompleteFile(false); } } } // read data for upload, return false on error bool CPartFile::ReadData(CFileArea & area, uint64 offset, uint32 toread) { // Sanity check if (offset + toread > GetFileSize()) { AddDebugLogLineN(logPartFile, CFormat(wxT("tried to read %d bytes past eof of %s")) % (offset + toread - GetFileSize()) % GetFileName()); wxFAIL; return false; } area.ReadAt(m_hpartfile, offset, toread); // if it fails it throws (which the caller should catch) return true; } void CPartFile::UpdateFileRatingCommentAvail() { bool prevComment = m_hasComment; int prevRating = m_iUserRating; m_hasComment = false; m_iUserRating = 0; int ratingCount = 0; SourceSet::iterator it = m_SrcList.begin(); for (; it != m_SrcList.end(); ++it) { CUpDownClient* cur_src = it->GetClient(); if (!cur_src->GetFileComment().IsEmpty()) { if (thePrefs::IsCommentFiltered(cur_src->GetFileComment())) { continue; } m_hasComment = true; } uint8 rating = cur_src->GetFileRating(); if (rating) { wxASSERT(rating <= 5); ratingCount++; m_iUserRating += rating; } } if (ratingCount) { m_iUserRating /= ratingCount; wxASSERT(m_iUserRating > 0 && m_iUserRating <= 5); } if ((prevComment != m_hasComment) || (prevRating != m_iUserRating)) { UpdateDisplayedInfo(); } } void CPartFile::SetCategory(uint8 cat) { wxASSERT( cat < theApp->glob_prefs->GetCatCount() ); m_category = cat; SavePartFile(); } bool CPartFile::RemoveSource(CUpDownClient* toremove, bool updatewindow, bool bDoStatsUpdate) { wxASSERT( toremove ); bool result = theApp->downloadqueue->RemoveSource( toremove, updatewindow, bDoStatsUpdate ); // Check if the client should be deleted, but not if the client is already dying if ( !toremove->GetSocket() && !toremove->HasBeenDeleted() ) { if ( toremove->Disconnected(wxT("RemoveSource - purged")) ) { toremove->Safe_Delete(); } } return result; } void CPartFile::AddDownloadingSource(CUpDownClient* client) { CClientRefList::iterator it = std::find(m_downloadingSourcesList.begin(), m_downloadingSourcesList.end(), CCLIENTREF(client, wxEmptyString)); if (it == m_downloadingSourcesList.end()) { m_downloadingSourcesList.push_back(CCLIENTREF(client, wxT("CPartFile::AddDownloadingSource"))); } } void CPartFile::RemoveDownloadingSource(CUpDownClient* client) { CClientRefList::iterator it = std::find(m_downloadingSourcesList.begin(), m_downloadingSourcesList.end(), CCLIENTREF(client, wxEmptyString)); if (it != m_downloadingSourcesList.end()) { m_downloadingSourcesList.erase(it); } } uint64 CPartFile::GetNeededSpace() { try { uint64 length = m_hpartfile.GetLength(); if (length > GetFileSize()) { return 0; // Shouldn't happen, but just in case } return GetFileSize() - length; } catch (const CIOFailureException& e) { AddDebugLogLineC(logPartFile, CFormat(wxT("Error while retrieving file-length (%s): %s")) % m_PartPath % e.what()); SetStatus(PS_ERROR); return 0; } } void CPartFile::SetStatus(uint8 in) { // PAUSED and INSUFFICIENT have extra flag variables m_paused and m_insufficient // - they are never to be stored in status wxASSERT( in != PS_PAUSED && in != PS_INSUFFICIENT ); status = in; if (theApp->IsRunning()) { UpdateDisplayedInfo( true ); if ( thePrefs::ShowCatTabInfos() ) { Notify_ShowUpdateCatTabTitles(); } Notify_DownloadCtrlSort(); } } void CPartFile::RequestAICHRecovery(uint16 nPart) { if ( !m_pAICHHashSet->HasValidMasterHash() || (m_pAICHHashSet->GetStatus() != AICH_TRUSTED && m_pAICHHashSet->GetStatus() != AICH_VERIFIED)){ AddDebugLogLineN( logAICHRecovery, wxT("Unable to request AICH Recoverydata because we have no trusted Masterhash") ); return; } if (GetPartSize(nPart) <= EMBLOCKSIZE) return; if (CAICHHashSet::IsClientRequestPending(this, nPart)){ AddDebugLogLineN( logAICHRecovery, wxT("RequestAICHRecovery: Already a request for this part pending")); return; } // first check if we have already the recoverydata, no need to rerequest it then if (m_pAICHHashSet->IsPartDataAvailable(nPart*PARTSIZE)){ AddDebugLogLineN( logAICHRecovery, wxT("Found PartRecoveryData in memory")); AICHRecoveryDataAvailable(nPart); return; } wxASSERT( nPart < GetPartCount() ); // find some random client which support AICH to ask for the blocks // first lets see how many we have at all, we prefer high id very much uint32 cAICHClients = 0; uint32 cAICHLowIDClients = 0; for ( SourceSet::iterator it = m_SrcList.begin(); it != m_SrcList.end(); ++it) { CUpDownClient* pCurClient = it->GetClient(); if ( pCurClient->IsSupportingAICH() && pCurClient->GetReqFileAICHHash() != NULL && !pCurClient->IsAICHReqPending() && (*pCurClient->GetReqFileAICHHash()) == m_pAICHHashSet->GetMasterHash()) { if (pCurClient->HasLowID()) { ++cAICHLowIDClients; } else { ++cAICHClients; } } } if ((cAICHClients | cAICHLowIDClients) == 0){ AddDebugLogLineN( logAICHRecovery, wxT("Unable to request AICH Recoverydata because found no client who supports it and has the same hash as the trusted one")); return; } uint32 nSeclectedClient; if (cAICHClients > 0) { nSeclectedClient = (rand() % cAICHClients) + 1; } else { nSeclectedClient = (rand() % cAICHLowIDClients) + 1; } CUpDownClient* pClient = NULL; for ( SourceSet::iterator it = m_SrcList.begin(); it != m_SrcList.end(); ++it) { CUpDownClient* pCurClient = it->GetClient(); if (pCurClient->IsSupportingAICH() && pCurClient->GetReqFileAICHHash() != NULL && !pCurClient->IsAICHReqPending() && (*pCurClient->GetReqFileAICHHash()) == m_pAICHHashSet->GetMasterHash()) { if (cAICHClients > 0){ if (!pCurClient->HasLowID()) nSeclectedClient--; } else{ wxASSERT( pCurClient->HasLowID()); nSeclectedClient--; } if (nSeclectedClient == 0){ pClient = pCurClient; break; } } } if (pClient == NULL){ wxFAIL; return; } AddDebugLogLineN( logAICHRecovery, CFormat( wxT("Requesting AICH Hash (%s) form client %s") ) % ( cAICHClients ? wxT("HighId") : wxT("LowID") ) % pClient->GetClientFullInfo() ); pClient->SendAICHRequest(this, nPart); } void CPartFile::AICHRecoveryDataAvailable(uint16 nPart) { if (GetPartCount() < nPart){ wxFAIL; return; } FlushBuffer(true); uint32 length = GetPartSize(nPart); // if the part was already ok, it would now be complete if (IsComplete(nPart)) { AddDebugLogLineN(logAICHRecovery, CFormat(wxT("Processing AICH Recovery data: The part (%u) is already complete, canceling")) % nPart); return; } CAICHHashTree* pVerifiedHash = m_pAICHHashSet->m_pHashTree.FindHash(nPart*PARTSIZE, length); if (pVerifiedHash == NULL || !pVerifiedHash->GetHashValid()){ AddDebugLogLineC( logAICHRecovery, wxT("Processing AICH Recovery data: Unable to get verified hash from hashset (should never happen)") ); wxFAIL; return; } CAICHHashTree htOurHash(pVerifiedHash->GetNDataSize(), pVerifiedHash->GetIsLeftBranch(), pVerifiedHash->GetNBaseSize()); try { CreateHashFromFile(m_hpartfile, PARTSIZE * nPart, length, NULL, &htOurHash); } catch (const CIOFailureException& e) { AddDebugLogLineC(logAICHRecovery, CFormat(wxT("IO failure while hashing part-file '%s': %s")) % m_hpartfile.GetFilePath() % e.what()); SetStatus(PS_ERROR); return; } if (!htOurHash.GetHashValid()){ AddDebugLogLineN( logAICHRecovery, wxT("Processing AICH Recovery data: Failed to retrieve AICH Hashset of corrupt part") ); wxFAIL; return; } // now compare the hash we just did, to the verified hash and readd all blocks which are ok uint32 nRecovered = 0; for (uint32 pos = 0; pos < length; pos += EMBLOCKSIZE){ const uint32 nBlockSize = min(EMBLOCKSIZE, length - pos); CAICHHashTree* pVerifiedBlock = pVerifiedHash->FindHash(pos, nBlockSize); CAICHHashTree* pOurBlock = htOurHash.FindHash(pos, nBlockSize); if ( pVerifiedBlock == NULL || pOurBlock == NULL || !pVerifiedBlock->GetHashValid() || !pOurBlock->GetHashValid()){ wxFAIL; continue; } if (pOurBlock->GetHash() == pVerifiedBlock->GetHash()){ FillGap(PARTSIZE*nPart+pos, PARTSIZE*nPart + pos + (nBlockSize-1)); RemoveBlockFromList(PARTSIZE*nPart, PARTSIZE*nPart + (nBlockSize-1)); nRecovered += nBlockSize; // tell the blackbox about the verified data m_CorruptionBlackBox->VerifiedData(true, nPart, pos, pos + nBlockSize - 1); } else { // inform our "blackbox" about the corrupted block which may ban clients who sent it m_CorruptionBlackBox->VerifiedData(false, nPart, pos, pos + nBlockSize - 1); } } m_CorruptionBlackBox->EvaluateData(); // ok now some sanity checks if (IsComplete(nPart)) { // this is bad, but it could probably happen under some rare circumstances // make sure that MD4 agrees to this fact too if (!HashSinglePart(nPart)) { AddDebugLogLineN(logAICHRecovery, CFormat(wxT("Processing AICH Recovery data: The part (%u) got completed while recovering - but MD4 says it corrupt! Setting hashset to error state, deleting part")) % nPart); // now we are fu... unhappy m_pAICHHashSet->SetStatus(AICH_ERROR); AddGap(nPart); wxFAIL; return; } else { AddDebugLogLineN(logAICHRecovery, CFormat(wxT("Processing AICH Recovery data: The part (%u) got completed while recovering and MD4 agrees")) % nPart); if (status == PS_EMPTY && theApp->IsRunning()) { if (GetHashCount() == GetED2KPartHashCount() && !m_hashsetneeded) { // Successfully recovered part, make it available for sharing SetStatus(PS_READY); theApp->sharedfiles->SafeAddKFile(this); } } if (theApp->IsRunning()) { // Is this file finished? if (m_gaplist.IsComplete()) { CompleteFile(false); } } } } // end sanity check // We did the best we could. If it's still incomplete, then no need to keep // bashing it with ICH. So remove it from the list of corrupted parts. EraseFirstValue(m_corrupted_list, nPart); // Update met file SavePartFile(); // make sure the user appreciates our great recovering work :P AddDebugLogLineC( logAICHRecovery, CFormat( wxT("AICH successfully recovered %s of %s from part %u for %s") ) % CastItoXBytes(nRecovered) % CastItoXBytes(length) % nPart % GetFileName() ); } void CPartFile::ClientStateChanged( int oldState, int newState ) { if ( oldState == newState ) return; // If the state is -1, then it's an entirely new item if ( oldState != -1 ) { // Was the old state a valid state? if ( oldState == DS_ONQUEUE || oldState == DS_DOWNLOADING ) { m_validSources--; } else { if ( oldState == DS_CONNECTED /* || oldState == DS_REMOTEQUEUEFULL */ ) { m_validSources--; } m_notCurrentSources--; } } // If the state is -1, then the source is being removed if ( newState != -1 ) { // Was the old state a valid state? if ( newState == DS_ONQUEUE || newState == DS_DOWNLOADING ) { ++m_validSources; } else { if ( newState == DS_CONNECTED /* || newState == DS_REMOTEQUEUEFULL */ ) { ++m_validSources; } ++m_notCurrentSources; } } } bool CPartFile::AddSource( CUpDownClient* client ) { if (m_SrcList.insert(CCLIENTREF(client, wxT("CPartFile::AddSource"))).second) { theStats::AddFoundSource(); theStats::AddSourceOrigin(client->GetSourceFrom()); return true; } else { return false; } } bool CPartFile::DelSource( CUpDownClient* client ) { if (m_SrcList.erase(CCLIENTREF(client, wxEmptyString))) { theStats::RemoveSourceOrigin(client->GetSourceFrom()); theStats::RemoveFoundSource(); return true; } else { return false; } } void CPartFile::UpdatePartsFrequency( CUpDownClient* client, bool increment ) { const BitVector& freq = client->GetPartStatus(); if ( m_SrcpartFrequency.size() != GetPartCount() ) { m_SrcpartFrequency.clear(); m_SrcpartFrequency.insert(m_SrcpartFrequency.begin(), GetPartCount(), 0); if ( !increment ) { return; } } unsigned int size = freq.size(); if ( size != m_SrcpartFrequency.size() ) { return; } if ( increment ) { for ( unsigned int i = 0; i < size; i++ ) { if ( freq.get(i) ) { m_SrcpartFrequency[i]++; } } } else { for ( unsigned int i = 0; i < size; i++ ) { if ( freq.get(i) ) { m_SrcpartFrequency[i]--; } } } } void CPartFile::GetRatingAndComments(FileRatingList & list) const { list.clear(); // This can be pre-processed, but is it worth the CPU? CPartFile::SourceSet::const_iterator it = m_SrcList.begin(); for ( ; it != m_SrcList.end(); ++it ) { CUpDownClient *cur_src = it->GetClient(); if (cur_src->GetFileComment().Length()>0 || cur_src->GetFileRating()>0) { // AddDebugLogLineN(logPartFile, wxString(wxT("found a comment for ")) << GetFileName()); list.push_back(SFileRating(*cur_src)); } } } #else // CLIENT_GUI CPartFile::CPartFile(const CEC_PartFile_Tag *tag) : CKnownFile(tag) { Init(); SetFileName(CPath(tag->FileName())); m_abyFileHash = tag->FileHash(); SetFileSize(tag->SizeFull()); m_gaplist.Init(GetFileSize(), true); // Init empty m_partmetfilename = CPath(tag->PartMetName()); m_fullname = m_partmetfilename; // We have only the met number, so show it without path in the detail dialog. m_SrcpartFrequency.insert(m_SrcpartFrequency.end(), GetPartCount(), 0); // these are only in CLIENT_GUI and not covered by Init() m_source_count = 0; m_kbpsDown = 0; m_iDownPriorityEC = 0; m_a4af_source_count = 0; m_isShared = false; } /* * Remote gui specific code */ CPartFile::~CPartFile() { } void CPartFile::GetRatingAndComments(FileRatingList & list) const { list = m_FileRatingList; } void CPartFile::SetCategory(uint8 cat) { m_category = cat; } bool CPartFile::AddSource(CUpDownClient* client) { return m_SrcList.insert(CCLIENTREF(client, wxT("CPartFile::AddSource"))).second != 0; } bool CPartFile::DelSource(CUpDownClient* client) { return m_SrcList.erase(CCLIENTREF(client, wxEmptyString)) != 0; } #endif // !CLIENT_GUI void CPartFile::UpdateDisplayedInfo(bool force) { uint32 curTick = ::GetTickCount(); // Wait 1.5s between each redraw if (force || curTick-m_lastRefreshedDLDisplay > MINWAIT_BEFORE_DLDISPLAY_WINDOWUPDATE) { Notify_DownloadCtrlUpdateItem(this); m_lastRefreshedDLDisplay = curTick; } } void CPartFile::Init() { m_lastsearchtime = 0; lastpurgetime = ::GetTickCount(); m_paused = false; m_stopped = false; m_insufficient = false; status = PS_EMPTY; transferred = 0; m_iLastPausePurge = time(NULL); if(thePrefs::GetNewAutoDown()) { m_iDownPriority = PR_HIGH; m_bAutoDownPriority = true; } else { m_iDownPriority = PR_NORMAL; m_bAutoDownPriority = false; } transferingsrc = 0; // new kBpsDown = 0.0; m_hashsetneeded = true; m_count = 0; percentcompleted = 0; completedsize=0; lastseencomplete = 0; m_availablePartsCount=0; m_ClientSrcAnswered = 0; m_LastNoNeededCheck = 0; m_iRating = 0; m_nTotalBufferData = 0; m_nLastBufferFlushTime = 0; m_bPercentUpdated = false; m_iGainDueToCompression = 0; m_iLostDueToCorruption = 0; m_iTotalPacketsSavedDueToICH = 0; m_category = 0; m_lastRefreshedDLDisplay = 0; m_nDlActiveTime = 0; m_tActivated = 0; m_is_A4AF_auto = false; m_localSrcReqQueued = false; m_nCompleteSourcesTime = time(NULL); m_nCompleteSourcesCount = 0; m_nCompleteSourcesCountLo = 0; m_nCompleteSourcesCountHi = 0; m_validSources = 0; m_notCurrentSources = 0; // Kad m_LastSearchTimeKad = 0; m_TotalSearchesKad = 0; #ifndef CLIENT_GUI m_CorruptionBlackBox = new CCorruptionBlackBox(); #endif } wxString CPartFile::getPartfileStatus() const { wxString mybuffer; if ((status == PS_HASHING) || (status == PS_WAITINGFORHASH)) { mybuffer=_("Hashing"); } else if (status == PS_ALLOCATING) { mybuffer = _("Allocating"); } else { switch (GetStatus()) { case PS_COMPLETING: mybuffer=_("Completing"); break; case PS_COMPLETE: mybuffer=_("Complete"); break; case PS_PAUSED: mybuffer=_("Paused"); break; case PS_ERROR: mybuffer=_("Erroneous"); break; case PS_INSUFFICIENT: mybuffer = _("Insufficient disk space"); break; default: if (GetTransferingSrcCount()>0) { mybuffer=_("Downloading"); } else { mybuffer=_("Waiting"); } break; } if (m_stopped && (GetStatus()!=PS_COMPLETE)) { mybuffer=_("Stopped"); } } return mybuffer; } int CPartFile::getPartfileStatusRang() const { int tempstatus=0; if (GetTransferingSrcCount()==0) tempstatus=1; switch (GetStatus()) { case PS_HASHING: case PS_WAITINGFORHASH: tempstatus=3; break; case PS_COMPLETING: tempstatus=4; break; case PS_COMPLETE: tempstatus=5; break; case PS_PAUSED: tempstatus=2; break; case PS_ERROR: tempstatus=6; break; } return tempstatus; } wxString CPartFile::GetFeedback() const { wxString retval = CKnownFile::GetFeedback(); if (GetStatus() != PS_COMPLETE) { retval += CFormat(wxT("%s: %s (%.2f%%)\n%s: %u\n")) % _("Downloaded") % CastItoXBytes(GetCompletedSize()) % GetPercentCompleted() % _("Sources") % GetSourceCount(); } return retval + _("Status") + wxT(": ") + getPartfileStatus() + wxT("\n"); } sint32 CPartFile::getTimeRemaining() const { if (GetKBpsDown() < 0.001) return -1; else return((GetFileSize()-GetCompletedSize()) / ((int)(GetKBpsDown()*1024.0))); } bool CPartFile::PreviewAvailable() { const uint64 minSizeForPreview = 256 * 1024; FileType type = GetFiletype(GetFileName()); return (type == ftVideo || type == ftAudio) && GetFileSize() >= minSizeForPreview && IsComplete(0, minSizeForPreview); } bool CPartFile::CheckShowItemInGivenCat(int inCategory) { // first check if item belongs in this cat in principle if (inCategory > 0 && inCategory != GetCategory()) { return false; } // if yes apply filter bool show = true; switch (thePrefs::GetAllcatFilter()) { case acfAllOthers: show = GetCategory() == 0 || inCategory > 0; break; case acfIncomplete: show = IsPartFile(); break; case acfCompleted: show = !IsPartFile(); break; case acfWaiting: show = (GetStatus() == PS_READY || GetStatus() == PS_EMPTY) && GetTransferingSrcCount() == 0; break; case acfDownloading: show = (GetStatus() == PS_READY || GetStatus() == PS_EMPTY) && GetTransferingSrcCount() > 0; break; case acfErroneous: show = GetStatus() == PS_ERROR; break; case acfPaused: show = GetStatus() == PS_PAUSED && !IsStopped(); break; case acfStopped: show = IsStopped(); break; case acfVideo: show = GetFiletype(GetFileName()) == ftVideo; break; case acfAudio: show = GetFiletype(GetFileName()) == ftAudio; break; case acfArchive: show = GetFiletype(GetFileName()) == ftArchive; break; case acfCDImages: show = GetFiletype(GetFileName()) == ftCDImage; break; case acfPictures: show = GetFiletype(GetFileName()) == ftPicture; break; case acfText: show = GetFiletype(GetFileName()) == ftText; break; case acfActive: show = !IsStopped() && GetStatus() != PS_PAUSED; break; default: show = true; break; } return show; } void CPartFile::RemoveCategory(uint8 cat) { if (m_category == cat) { // Reset the category m_category = 0; } else if (m_category > cat) { // Set to the new position of the original category m_category--; } } void CPartFile::SetActive(bool bActive) { time_t tNow = time(NULL); if (bActive) { if (theApp->IsConnected()) { if (m_tActivated == 0) { m_tActivated = tNow; } } } else { if (m_tActivated != 0) { m_nDlActiveTime += tNow - m_tActivated; m_tActivated = 0; } } } uint32 CPartFile::GetDlActiveTime() const { uint32 nDlActiveTime = m_nDlActiveTime; if (m_tActivated != 0) { nDlActiveTime += time(NULL) - m_tActivated; } return nDlActiveTime; } uint16 CPartFile::GetPartMetNumber() const { long nr; return m_partmetfilename.RemoveAllExt().GetRaw().ToLong(&nr) ? nr : 0; } void CPartFile::SetHashingProgress(uint16 part) const { m_hashingProgress = part; Notify_DownloadCtrlUpdateItem(this); } #ifndef CLIENT_GUI uint8 CPartFile::GetStatus(bool ignorepause) const { if ( (!m_paused && !m_insufficient) || status == PS_ERROR || status == PS_COMPLETING || status == PS_COMPLETE || ignorepause) { return status; } else if ( m_insufficient ) { return PS_INSUFFICIENT; } else { return PS_PAUSED; } } void CPartFile::AddDeadSource(const CUpDownClient* client) { m_deadSources.AddDeadSource( client ); } bool CPartFile::IsDeadSource(const CUpDownClient* client) { return m_deadSources.IsDeadSource( client ); } void CPartFile::SetFileName(const CPath& fileName) { CKnownFile* pFile = theApp->sharedfiles->GetFileByID(GetFileHash()); bool is_shared = (pFile && pFile == this); if (is_shared) { // The file is shared, we must clear the search keywords so we don't // publish the old name anymore. theApp->sharedfiles->RemoveKeywords(this); } CKnownFile::SetFileName(fileName); if (is_shared) { // And of course, we must advertise the new name if the file is shared. theApp->sharedfiles->AddKeywords(this); } UpdateDisplayedInfo(true); } uint16 CPartFile::GetMaxSources() const { // This is just like this, while we don't import the private max sources per file return thePrefs::GetMaxSourcePerFile(); } uint16 CPartFile::GetMaxSourcePerFileSoft() const { unsigned int temp = ((unsigned int)GetMaxSources() * 9L) / 10; if (temp > MAX_SOURCES_FILE_SOFT) { return MAX_SOURCES_FILE_SOFT; } return temp; } uint16 CPartFile::GetMaxSourcePerFileUDP() const { unsigned int temp = ((unsigned int)GetMaxSources() * 3L) / 4; if (temp > MAX_SOURCES_FILE_UDP) { return MAX_SOURCES_FILE_UDP; } return temp; } #define DROP_FACTOR 2 CUpDownClient* CPartFile::GetSlowerDownloadingClient(uint32 speed, CUpDownClient* caller) { // printf("Start slower source calculation\n"); for( SourceSet::iterator it = m_SrcList.begin(); it != m_SrcList.end(); ) { CUpDownClient* cur_src = it++->GetClient(); if ((cur_src->GetDownloadState() == DS_DOWNLOADING) && (cur_src != caller)) { uint32 factored_bytes_per_second = static_cast( (cur_src->GetKBpsDown() * 1024) * DROP_FACTOR); if ( factored_bytes_per_second< speed) { // printf("Selecting source %p to drop: %d < %d\n", cur_src, factored_bytes_per_second, speed); // printf("End slower source calculation\n"); return cur_src; } else { // printf("Not selecting source %p to drop: %d > %d\n", cur_src, factored_bytes_per_second, speed); } } } // printf("End slower source calculation\n"); return NULL; } void CPartFile::AllocationFinished() { // see if it can be opened if (!m_hpartfile.Open(m_PartPath, CFile::read_write)) { AddLogLineN(CFormat(_("ERROR: Failed to open partfile '%s'")) % GetFullName()); SetStatus(PS_ERROR); } // then close the handle again m_hpartfile.Release(true); } #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/PartFile.h0000644000175000017500000003526612611472361020165 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef PARTFILE_H #define PARTFILE_H #include "KnownFile.h" // Needed for CKnownFile #include "FileAutoClose.h" // Needed for CFileAutoClose #include "OtherStructs.h" // Needed for Requested_Block_Struct #include "DeadSourceList.h" // Needed for CDeadSourceList #include "GapList.h" class CSearchFile; class CMemFile; class CFileDataIO; class CED2KFileLink; //#define BUFFER_SIZE_LIMIT 500000 // Max bytes before forcing a flush #define BUFFER_TIME_LIMIT 60000 // Max milliseconds before forcing a flush // Ok, eMule and aMule are building incompatible backup files because // of the different name. aMule was using ".BAK" and eMule ".bak". // This should fix it. #define PARTMET_BAK_EXT wxT(".bak") enum EPartFileFormat { PMT_UNKNOWN = 0, PMT_DEFAULTOLD, PMT_SPLITTED, PMT_NEWOLD, PMT_SHAREAZA, PMT_BADFORMAT }; class SFileRating { public: wxString UserName; wxString FileName; sint16 Rating; wxString Comment; public: SFileRating(const wxString &u, const wxString &f, sint16 r, const wxString &c); SFileRating(const SFileRating &fr); SFileRating(const CUpDownClient &client); ~SFileRating(); }; typedef std::list FileRatingList; class SourcenameItem { public: wxString name; int count; public: SourcenameItem(const wxString &n = EmptyString, int c = 0) : name(n), count(c) {} }; typedef std::map SourcenameItemMap; class CPartFile : public CKnownFile { public: typedef std::list CReqBlockPtrList; CPartFile(); #ifdef CLIENT_GUI CPartFile(const CEC_PartFile_Tag *tag); #else virtual void SetFileName(const CPath& filename); #endif CPartFile(CSearchFile* searchresult); //used when downloading a new file CPartFile(const CED2KFileLink* fileLink); virtual ~CPartFile(); virtual bool LoadFromFile(const CFileDataIO* WXUNUSED(file)) { return false; } bool WriteToFile(CFileDataIO* WXUNUSED(file)) { return false; } // virtual functions for CKnownFile and CPartFile: bool IsPartFile() const { return status != PS_COMPLETE; } // true if not completed bool IsCompleted() const { return status == PS_COMPLETE; } // true if completed bool IsCPartFile() const { return true; } // true if it's a CPartFile uint32 Process(uint32 reducedownload, uint8 m_icounter); uint8 LoadPartFile(const CPath& in_directory, const CPath& filename, bool from_backup = false, bool getsizeonly = false); bool SavePartFile(bool Initial = false); void PartFileHashFinished(CKnownFile* result); bool HashSinglePart(uint16 partnumber); // true = ok , false = corrupted bool CheckShowItemInGivenCat(int inCategory); bool IsComplete(uint64 start, uint64 end) { return m_gaplist.IsComplete(start, end); } bool IsComplete(uint16 part) { return m_gaplist.IsComplete(part); } void UpdateCompletedInfos(); bool GetNextRequestedBlock(CUpDownClient* sender, std::vector& toadd, uint16& count); void WritePartStatus(CMemFile* file); void WriteCompleteSourcesCount(CMemFile* file); static bool CanAddSource(uint32 userid, uint16 port, uint32 serverip, uint16 serverport, uint8* pdebug_lowiddropped = NULL, bool ed2kID = true); void AddSources(CMemFile& sources, uint32 serverip, uint16 serverport, unsigned origin, bool bWithObfuscationAndHash); #ifdef CLIENT_GUI uint8 GetStatus() const { return status; } uint8 GetStatus(bool /*ignorepause = false*/) const { return status; } #else uint8 GetStatus(bool ignorepause = false) const; #endif virtual void UpdatePartsInfo(); const CPath& GetPartMetFileName() const { return m_partmetfilename; } uint16 GetPartMetNumber() const; uint64 GetTransferred() const { return transferred; } const CPath& GetFullName() const { return m_fullname; } float GetKBpsDown() const { return kBpsDown; } double GetPercentCompleted() const { return percentcompleted; } #ifndef CLIENT_GUI uint16 GetSourceCount() const { return (uint16)m_SrcList.size(); } uint16 GetSrcA4AFCount() const { return (uint16)m_A4AFsrclist.size(); } #else uint16 m_source_count, m_a4af_source_count; uint16 GetSourceCount() const { return m_source_count; } uint16 GetSrcA4AFCount() const { return m_a4af_source_count; } #endif uint16 GetTransferingSrcCount() const { return transferingsrc; } uint16 GetNotCurrentSourcesCount() const { return m_notCurrentSources; }; uint16 GetValidSourcesCount() const { return m_validSources; }; uint64 GetNeededSpace(); virtual wxString GetFeedback() const; wxString getPartfileStatus() const; //<<--9/21/02 sint32 getTimeRemaining() const; //<<--9/21/02 time_t lastseencomplete; int getPartfileStatusRang() const; // Barry - Added as replacement for BlockReceived to buffer data before writing to disk uint32 WriteToBuffer(uint32 transize, byte *data, uint64 start, uint64 end, Requested_Block_Struct *block, const CUpDownClient* client); void FlushBuffer(bool fromAICHRecoveryDataAvailable = false); // Barry - Added to prevent list containing deleted blocks on shutdown void RemoveAllRequestedBlocks(void); void RemoveBlockFromList(uint64 start,uint64 end); void RemoveAllSources(bool bTryToSwap); void Delete(); void StopFile(bool bCancel = false); void PauseFile(bool bInsufficient = false); void ResumeFile(); virtual CPacket* CreateSrcInfoPacket(const CUpDownClient* forClient, uint8 byRequestedVersion, uint16 nRequestedOptions); void AddClientSources(CMemFile* sources, unsigned nSourceFrom, uint8 uClientSXVersion, bool bSourceExchange2, const CUpDownClient* pClient = NULL); bool PreviewAvailable(); uint16 GetAvailablePartCount() const { return m_availablePartsCount; } uint32 GetLastAnsweredTime() const { return m_ClientSrcAnswered; } void SetLastAnsweredTime(); void SetLastAnsweredTimeTimeout(); uint64 GetLostDueToCorruption() const { return m_iLostDueToCorruption; } uint64 GetGainDueToCompression() const { return m_iGainDueToCompression; } uint32 TotalPacketsSavedDueToICH()const{ return m_iTotalPacketsSavedDueToICH; } bool IsStopped() const { return this ? m_stopped : true; } bool IsPaused() const { return m_paused; } void UpdateFileRatingCommentAvail(); int GetCommonFilePenalty(); void UpdateDisplayedInfo(bool force = false); uint8 GetCategory() const { return m_category; } void SetCategory(uint8 cat); void RemoveCategory(uint8 cat); void SetDownPriority(uint8 newDownPriority, bool bSave = true, bool bRefresh = true); bool IsAutoDownPriority() const { return m_bAutoDownPriority; } void SetAutoDownPriority(bool flag) { m_bAutoDownPriority = flag; } void UpdateAutoDownPriority(); uint8 GetDownPriority() const { return m_iDownPriority; } void SetActive(bool bActive); uint32 GetDlActiveTime() const; bool GetInsufficient() const { return m_insufficient; } void CompleteFileEnded(bool errorOccured, const CPath& newname); bool RemoveSource(CUpDownClient* toremove, bool updatewindow = true, bool bDoStatsUpdate = true); void RequestAICHRecovery(uint16 nPart); void AICHRecoveryDataAvailable(uint16 nPart); /** * This function is used to update source-counts. * * @param oldState The old state of the client, or -1 to ignore. * @param newState The new state of the client, or -1 to ignore. * * Call this function for a client belonging to this file, which has changed * its state. The value -1 can be used to make the function ignore one of * the two states. * * AddSource and DelSource takes care of calling this function when a source is * removed, so there's no need to call this function when calling either of those. */ void ClientStateChanged( int oldState, int newState ); bool AddSource( CUpDownClient* client ); bool DelSource( CUpDownClient* client ); /** * Updates the requency of avilable parts from with the data the client provides. * * @param client The clients whoose available parts should be considered. * @param increment If true, the counts are incremented, otherwise they are decremented. * * This functions updates the frequency list of file-parts, using the clients * parts-status. This function should be called by clients every time they update their * parts-status, or when they are added or removed from the file. */ void UpdatePartsFrequency( CUpDownClient* client, bool increment ); ArrayOfUInts16 m_SrcpartFrequency; const SourceSet& GetSourceList() const { return m_SrcList; } const SourceSet& GetA4AFList() const { return m_A4AFsrclist; } void ClearA4AFList() { m_A4AFsrclist.clear(); } const CReqBlockPtrList GetRequestedBlockList() const { return m_requestedblocks_list; } const CGapList& GetGapList() const { return m_gaplist; } /** * Adds a source to the list of dead sources. * * @param client The source to be recorded as dead for this file. */ void AddDeadSource(const CUpDownClient* client); /** * Set the current progress of hashing and display it in the download list control. * * @param part Number of part currently being hashed. 0 for no hashing in progress. */ virtual void SetHashingProgress(uint16 part) const; /** * Checks if a source is recorded as being dead for this file. * * @param client The client to evaluate. * @return True if dead, false otherwise. * * Sources that are dead are not to be considered valid * sources and should not be added to the partfile. */ bool IsDeadSource(const CUpDownClient* client); /* Kad Stuff */ uint16 GetMaxSources() const; uint16 GetMaxSourcePerFileSoft() const; uint16 GetMaxSourcePerFileUDP() const; void GetRatingAndComments(FileRatingList & list) const; void AllocationFinished(); private: #ifndef CLIENT_GUI // partfile handle (opened on demand) CFileAutoClose m_hpartfile; //! A local list of sources that are invalid for this file. CDeadSourceList m_deadSources; class CCorruptionBlackBox* m_CorruptionBlackBox; #endif uint16 m_notCurrentSources; uint32 m_validSources; void AddGap(uint64 start, uint64 end); void AddGap(uint16 part); void FillGap(uint64 start, uint64 end); void FillGap(uint16 part); bool GetNextEmptyBlockInPart(uint16 partnumber,Requested_Block_Struct* result); bool IsAlreadyRequested(uint64 start, uint64 end); void CompleteFile(bool hashingdone); void CreatePartFile(); void Init(); bool CheckFreeDiskSpace( uint64 neededSpace = 0 ); bool IsCorruptedPart(uint16 partnumber); uint32 m_iLastPausePurge; uint16 m_count; uint16 transferingsrc; uint64 completedsize; uint64 transferred; uint64 m_iLostDueToCorruption; uint64 m_iGainDueToCompression; uint32 m_iTotalPacketsSavedDueToICH; float kBpsDown; CPath m_fullname; // path/name of the met file CPath m_partmetfilename; // name of the met file CPath m_PartPath; // path/name of the partfile bool m_paused; bool m_stopped; bool m_insufficient; uint8 m_iDownPriority; bool m_bAutoDownPriority; uint8 status; uint32 lastpurgetime; uint32 m_LastNoNeededCheck; CGapList m_gaplist; CReqBlockPtrList m_requestedblocks_list; double percentcompleted; std::list m_corrupted_list; uint16 m_availablePartsCount; uint32 m_ClientSrcAnswered; bool m_bPercentUpdated; void PerformFileComplete(); uint32 m_lastRefreshedDLDisplay; // Buffered data to be written std::list m_BufferedData_list; uint32 m_nTotalBufferData; uint32 m_nLastBufferFlushTime; uint8 m_category; uint32 m_nDlActiveTime; time_t m_tActivated; bool m_is_A4AF_auto; SourceSet m_SrcList; SourceSet m_A4AFsrclist; bool m_hashsetneeded; uint32 m_lastsearchtime; bool m_localSrcReqQueued; #ifdef CLIENT_GUI FileRatingList m_FileRatingList; const FileRatingList &GetFileRatingList() { return m_FileRatingList; } void ClearFileRatingList() { m_FileRatingList.clear(); } void AddFileRatingList(const wxString & u, const wxString & f, sint16 r, const wxString & c) { m_FileRatingList.push_back(SFileRating(u, f, r, c)); } uint32 m_kbpsDown; uint8 m_iDownPriorityEC; bool m_isShared; SourcenameItemMap m_SourcenameItemMap; ListOfUInts32 m_A4AFClientIDs; ListOfUInts32 & GetA4AFClientIDs() { return m_A4AFClientIDs; } public: bool IsShared() const { return m_isShared; } SourcenameItemMap &GetSourcenameItemMap() { return m_SourcenameItemMap; } PartFileEncoderData m_PartFileEncoderData; #endif public: bool IsHashSetNeeded() const { return m_hashsetneeded; } void SetHashSetNeeded(bool value) { m_hashsetneeded = value; } uint64 GetCompletedSize() const { return completedsize; } void SetCompletedSize(uint64 size) { completedsize = size; } bool IsLocalSrcRequestQueued() const { return m_localSrcReqQueued; } void SetLocalSrcRequestQueued(bool value) { m_localSrcReqQueued = value; } void AddA4AFSource(CUpDownClient* src) { m_A4AFsrclist.insert(CCLIENTREF(src, wxT("A4AFSource"))); } bool RemoveA4AFSource(CUpDownClient* src) { return (m_A4AFsrclist.erase(CCLIENTREF(src, wxEmptyString)) > 0); } uint32 GetLastSearchTime() const { return m_lastsearchtime; } void SetLastSearchTime(uint32 time) { m_lastsearchtime = time; } void AddDownloadingSource(CUpDownClient* client); void RemoveDownloadingSource(CUpDownClient* client); void SetStatus(uint8 in); void StopPausedFile(); // [sivka / Tarod] Imported from eMule 0.30c (Creteil) ... void SetA4AFAuto(bool in) { m_is_A4AF_auto = in; } bool IsA4AFAuto() const { return m_is_A4AF_auto; } // Kry -Sources seeds void SaveSourceSeeds(); void LoadSourceSeeds(); // Dropping slow sources CUpDownClient* GetSlowerDownloadingClient(uint32 speed, CUpDownClient* caller); // Read data for sharing bool ReadData(class CFileArea & area, uint64 offset, uint32 toread); private: /* downloading sources list */ CClientRefList m_downloadingSourcesList; /* Kad Stuff */ uint32 m_LastSearchTimeKad; uint8 m_TotalSearchesKad; friend class CKnownFilesRem; friend class CPartFileConvert; }; #endif // PARTFILE_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/PartFileConvert.cpp0000644000175000017500000003166212611472361022055 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include "PartFileConvert.h" #include "amule.h" #include "DownloadQueue.h" #include #include "Logger.h" #include "PartFile.h" #include "Preferences.h" #include "SharedFileList.h" #include #include "OtherFunctions.h" #include "GuiEvents.h" #include "DataToText.h" static unsigned s_nextJobId = 0; struct ConvertJob { unsigned id; CPath folder; CPath filename; wxString filehash; ConvStatus state; uint32_t size; uint32_t spaceneeded; uint8 partmettype; bool removeSource; ConvertJob(const CPath& file, bool deleteSource, ConvStatus status) : id(s_nextJobId++), folder(file), state(status), size(0), spaceneeded(0), partmettype(PMT_UNKNOWN), removeSource(deleteSource) {} }; ConvertInfo::ConvertInfo(ConvertJob *job) : id(job->id), folder(job->folder), filename(job->filename), filehash(job->filehash), state(job->state), size(job->size), spaceneeded(job->spaceneeded) {} wxThread* CPartFileConvert::s_convertPfThread = NULL; std::list CPartFileConvert::s_jobs; ConvertJob* CPartFileConvert::s_pfconverting = NULL; wxMutex CPartFileConvert::s_mutex; int CPartFileConvert::ScanFolderToAdd(const CPath& folder, bool deletesource) { int count = 0; CDirIterator finder(folder); CPath file = finder.GetFirstFile(CDirIterator::File, wxT("*.part.met")); while (file.IsOk()) { ConvertToeMule(folder.JoinPaths(file), deletesource); file = finder.GetNextFile(); count++; } /* Shareaza file = finder.GetFirstFile(CDirIterator::File, wxT("*.sd")); while (!file.IsEmpty()) { ConvertToeMule(file, deletesource); file = finder.GetNextFile(); count++; } */ file = finder.GetFirstFile(CDirIterator::Dir, wxT("*.*")); while (file.IsOk()) { ScanFolderToAdd(folder.JoinPaths(file), deletesource); file = finder.GetNextFile(); } return count; } void CPartFileConvert::ConvertToeMule(const CPath& file, bool deletesource) { if (!file.FileExists()) { return; } ConvertJob* newjob = new ConvertJob(file, deletesource, CONV_QUEUE); wxMutexLocker lock(s_mutex); s_jobs.push_back(newjob); Notify_ConvertUpdateJobInfo(newjob); StartThread(); } void CPartFileConvert::StartThread() { if (!s_convertPfThread) { s_convertPfThread = new CPartFileConvert(); switch ( s_convertPfThread->Create() ) { case wxTHREAD_NO_ERROR: AddDebugLogLineN( logPfConvert, wxT("A new thread has been created.") ); break; case wxTHREAD_RUNNING: AddDebugLogLineC( logPfConvert, wxT("Error, attempt to create an already running thread!") ); break; case wxTHREAD_NO_RESOURCE: AddDebugLogLineC( logPfConvert, wxT("Error, attempt to create a thread without resources!") ); break; default: AddDebugLogLineC( logPfConvert, wxT("Error, unknown error attempting to create a thread!") ); } // The thread shouldn't hog the CPU, as it will already be hogging the HD s_convertPfThread->SetPriority(WXTHREAD_MIN_PRIORITY); s_convertPfThread->Run(); } } void CPartFileConvert::StopThread() { if (s_convertPfThread) { s_convertPfThread->Delete(); } else { return; } AddLogLineNS(_("Waiting for partfile convert thread to die...")); while (s_convertPfThread) { wxSleep(1); } } wxThread::ExitCode CPartFileConvert::Entry() { int imported = 0; for (;;) { // search next queued job and start it { wxMutexLocker lock(s_mutex); s_pfconverting = NULL; for (std::list::iterator it = s_jobs.begin(); it != s_jobs.end(); ++it) { if ((*it)->state == CONV_QUEUE) { s_pfconverting = *it; break; } } } if (s_pfconverting) { { wxMutexLocker lock(s_mutex); s_pfconverting->state = CONV_INPROGRESS; } Notify_ConvertUpdateJobInfo(s_pfconverting); ConvStatus convertResult = performConvertToeMule(s_pfconverting->folder); { wxMutexLocker lock(s_mutex); s_pfconverting->state = convertResult; } if (s_pfconverting->state == CONV_OK) { ++imported; } Notify_ConvertUpdateJobInfo(s_pfconverting); AddLogLineC(CFormat(_("Importing %s: %s")) % s_pfconverting->folder % GetConversionState(s_pfconverting->state)); if (TestDestroy()) { wxMutexLocker lock(s_mutex); DeleteContents(s_jobs); break; } } else { break; // nothing more to do now } } // clean up Notify_ConvertClearInfos(); if (imported) { theApp->sharedfiles->PublishNextTurn(); } AddDebugLogLineN(logPfConvert, wxT("No more jobs on queue, exiting from thread.")); s_convertPfThread = NULL; return NULL; } ConvStatus CPartFileConvert::performConvertToeMule(const CPath& fileName) { wxString filepartindex; CPath folder = fileName.GetPath(); CPath partfile = fileName.GetFullName(); CPath newfilename; CDirIterator finder(folder); Notify_ConvertUpdateProgressFull(0, _("Reading temp folder"), s_pfconverting->folder.GetPrintable()); filepartindex = partfile.RemoveAllExt().GetRaw(); Notify_ConvertUpdateProgress(4, _("Retrieving basic information from download info file")); CPartFile* file = new CPartFile(); s_pfconverting->partmettype = file->LoadPartFile(folder, partfile, false, true); switch (s_pfconverting->partmettype) { case PMT_UNKNOWN: case PMT_BADFORMAT: delete file; return CONV_BADFORMAT; } CPath oldfile = folder.JoinPaths(partfile.RemoveExt()); { wxMutexLocker lock(s_mutex); s_pfconverting->size = file->GetFileSize(); s_pfconverting->filename = file->GetFileName(); s_pfconverting->filehash = file->GetFileHash().Encode(); } Notify_ConvertUpdateJobInfo(s_pfconverting); if (theApp->downloadqueue->GetFileByID(file->GetFileHash())) { delete file; return CONV_ALREADYEXISTS; } if (s_pfconverting->partmettype == PMT_SPLITTED) { unsigned fileindex; char *ba = new char [PARTSIZE]; try { CFile inputfile; // just count unsigned maxindex = 0; unsigned partfilecount = 0; CPath filePath = finder.GetFirstFile(CDirIterator::File, filepartindex + wxT(".*.part")); while (filePath.IsOk()) { long l; ++partfilecount; filePath.GetFullName().RemoveExt().GetExt().ToLong(&l); fileindex = (unsigned)l; filePath = finder.GetNextFile(); if (fileindex > maxindex) maxindex = fileindex; } float stepperpart; { wxMutexLocker lock(s_mutex); if (partfilecount > 0) { stepperpart = (80.0f / partfilecount); if (maxindex * PARTSIZE <= s_pfconverting->size) { s_pfconverting->spaceneeded = maxindex * PARTSIZE; } else { s_pfconverting->spaceneeded = s_pfconverting->size; } } else { stepperpart = 80.0f; s_pfconverting->spaceneeded = 0; } } Notify_ConvertUpdateJobInfo(s_pfconverting); sint64 freespace = CPath::GetFreeSpaceAt(thePrefs::GetTempDir()); if (freespace != wxInvalidOffset) { if (static_cast(freespace) < maxindex * PARTSIZE) { delete file; delete [] ba; return CONV_OUTOFDISKSPACE; } } // create new partmetfile, and remember the new name file->CreatePartFile(); newfilename = file->GetFullName(); Notify_ConvertUpdateProgress(8, _("Creating destination file")); file->m_hpartfile.SetLength( s_pfconverting->spaceneeded ); unsigned curindex = 0; CPath filename = finder.GetFirstFile(CDirIterator::File, filepartindex + wxT(".*.part")); while (filename.IsOk()) { // stats ++curindex; Notify_ConvertUpdateProgress(10 + (curindex * stepperpart), CFormat(_("Loading data from old download file (%u of %u)")) % curindex % partfilecount); long l; filename.GetFullName().RemoveExt().GetExt().ToLong(&l); fileindex = (unsigned)l; if (fileindex == 0) { filename = finder.GetNextFile(); continue; } uint32 chunkstart = (fileindex - 1) * PARTSIZE; // open, read data of the part-part-file into buffer, close file inputfile.Open(filename, CFile::read); uint64 toReadWrite = std::min(PARTSIZE, inputfile.GetLength()); inputfile.Read(ba, toReadWrite); inputfile.Close(); Notify_ConvertUpdateProgress(10 + (curindex * stepperpart), CFormat(_("Saving data block into new single download file (%u of %u)")) % curindex % partfilecount); // write the buffered data file->m_hpartfile.WriteAt(ba, chunkstart, toReadWrite); filename = finder.GetNextFile(); } delete[] ba; } catch (const CSafeIOException& e) { AddDebugLogLineC(logPfConvert, wxT("IO error while converting partfiles: ") + e.what()); delete[] ba; file->Delete(); return CONV_IOERROR; } file->m_hpartfile.Close(); } // import an external common format partdownload else //if (pfconverting->partmettype==PMT_DEFAULTOLD || pfconverting->partmettype==PMT_NEWOLD || Shareaza ) { if (!s_pfconverting->removeSource) { wxMutexLocker lock(s_mutex); s_pfconverting->spaceneeded = oldfile.GetFileSize(); } Notify_ConvertUpdateJobInfo(s_pfconverting); sint64 freespace = CPath::GetFreeSpaceAt(thePrefs::GetTempDir()); if (freespace == wxInvalidOffset) { delete file; return CONV_IOERROR; } else if (freespace < s_pfconverting->spaceneeded) { delete file; return CONV_OUTOFDISKSPACE; } file->CreatePartFile(); newfilename = file->GetFullName(); file->m_hpartfile.Close(); bool ret = false; Notify_ConvertUpdateProgress(92, _("Copy")); CPath::RemoveFile(newfilename.RemoveExt()); if (!oldfile.FileExists()) { // data file does not exist. well, then create a 0 byte big one CFile datafile; ret = datafile.Create(newfilename.RemoveExt()); } else if (s_pfconverting->removeSource) { ret = CPath::RenameFile(oldfile, newfilename.RemoveExt()); } else { ret = CPath::CloneFile(oldfile, newfilename.RemoveExt(), false); } if (!ret) { file->Delete(); //delete file; return CONV_FAILED; } } Notify_ConvertUpdateProgress(94, _("Retrieving source downloadfile information")); CPath::RemoveFile(newfilename); if (s_pfconverting->removeSource) { CPath::RenameFile(folder.JoinPaths(partfile), newfilename); } else { CPath::CloneFile(folder.JoinPaths(partfile), newfilename, false); } file->m_hashlist.clear(); if (!file->LoadPartFile(thePrefs::GetTempDir(), file->GetPartMetFileName(), false)) { //delete file; file->Delete(); return CONV_BADFORMAT; } if (s_pfconverting->partmettype == PMT_NEWOLD || s_pfconverting->partmettype == PMT_SPLITTED) { file->SetCompletedSize(file->transferred); file->m_iGainDueToCompression = 0; file->m_iLostDueToCorruption = 0; } Notify_ConvertUpdateProgress(100, _("Adding download and saving new partfile")); theApp->downloadqueue->AddDownload(file, thePrefs::AddNewFilesPaused(), 0); file->SavePartFile(); if (file->GetStatus(true) == PS_READY) { theApp->sharedfiles->SafeAddKFile(file); // part files are always shared files } if (s_pfconverting->removeSource) { CPath oldFile = finder.GetFirstFile(CDirIterator::File, filepartindex + wxT(".*")); while (oldFile.IsOk()) { CPath::RemoveFile(folder.JoinPaths(oldFile)); oldFile = finder.GetNextFile(); } if (s_pfconverting->partmettype == PMT_SPLITTED) { CPath::RemoveDir(folder); } } return CONV_OK; } // Notification handlers void CPartFileConvert::RemoveJob(unsigned id) { wxMutexLocker lock(s_mutex); for (std::list::iterator it = s_jobs.begin(); it != s_jobs.end(); ++it) { if ((*it)->id == id && (*it)->state != CONV_INPROGRESS) { ConvertJob *job = *it; s_jobs.erase(it); Notify_ConvertRemoveJobInfo(id); delete job; break; } } } void CPartFileConvert::RetryJob(unsigned id) { wxMutexLocker lock(s_mutex); for (std::list::iterator it = s_jobs.begin(); it != s_jobs.end(); ++it) { if ((*it)->id == id && (*it)->state != CONV_INPROGRESS && (*it)->state != CONV_OK) { (*it)->state = CONV_QUEUE; Notify_ConvertUpdateJobInfo(*it); StartThread(); break; } } } void CPartFileConvert::ReaddAllJobs() { wxMutexLocker lock(s_mutex); for (std::list::iterator it = s_jobs.begin(); it != s_jobs.end(); ++it) { Notify_ConvertUpdateJobInfo(*it); } } amule_2.3.1+git20151120.0023527bc2.orig/src/PartFileConvert.h0000644000175000017500000000453512611472361021521 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef PARTFILECONVERT_H #if !defined __need_convertinfo # define PARTFILECONVERT_H #endif #if !defined __have_convertinfo && (defined __need_convertinfo || defined PARTFILECONVERT_H) #define __have_convertinfo #include "Constants.h" #include "Types.h" #include struct ConvertJob; struct ConvertInfo { unsigned id; CPath folder; CPath filename; wxString filehash; ConvStatus state; uint32_t size; uint32_t spaceneeded; ConvertInfo(ConvertJob *); }; #endif /* convertinfo */ #undef __need_convertinfo #ifdef PARTFILECONVERT_H #include class CPartFileConvert : private wxThread { public: static int ScanFolderToAdd(const CPath& folder, bool deletesource = false); static void ConvertToeMule(const CPath& file, bool deletesource = false); static void StartThread(); static void StopThread(); static void RemoveJob(unsigned id); static void RetryJob(unsigned id); static void ReaddAllJobs(); private: CPartFileConvert() : wxThread(wxTHREAD_DETACHED) {} static ConvStatus performConvertToeMule(const CPath& file); virtual ExitCode Entry(); static wxMutex s_mutex; static wxThread* s_convertPfThread; static std::list s_jobs; static ConvertJob* s_pfconverting; }; #endif #endif /* PARTFILECONVERT_H */ amule_2.3.1+git20151120.0023527bc2.orig/src/PartFileConvertDlg.cpp0000644000175000017500000001670412611472361022504 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "PartFileConvertDlg.h" #include #include #include "DataToText.h" #include "OtherFunctions.h" #include "PartFileConvert.h" #include "GuiEvents.h" #include #include "muuli_wdr.h" CPartFileConvertDlg* CPartFileConvertDlg::s_convertgui = NULL; #ifndef __WINDOWS__ /* XPM */ static const char * convert_xpm[] = { "16 16 9 1", " c None", ". c #B20000", "+ c #FF0000", "@ c #FF7F7F", "# c #008000", "$ c #33B200", "% c #10E500", "& c #59FE4C", "* c #FFB2B2", " . ", " .+. ", " .+@+. ", " .+@+. ", ". .+@+.#######", ".. .+@+. #$%%&#", ".+.+@+. #$%%#", ".@+@+. #$%$%#", ".@@+. #$%$#$#", ".*@@+. #$%$# ##", ".......#$%$# #", " #$%$# ", " #$%$# ", " #$%$# ", " #$# ", " # "}; #endif /* ! __WINDOWS__ */ // Modeless Dialog Implementation // CPartFileConvertDlg dialog BEGIN_EVENT_TABLE(CPartFileConvertDlg, wxDialog) EVT_BUTTON(IDC_ADDITEM, CPartFileConvertDlg::OnAddFolder) EVT_BUTTON(IDC_RETRY, CPartFileConvertDlg::RetrySel) EVT_BUTTON(IDC_CONVREMOVE, CPartFileConvertDlg::RemoveSel) EVT_BUTTON(wxID_CANCEL, CPartFileConvertDlg::OnCloseButton) EVT_CLOSE(CPartFileConvertDlg::OnClose) END_EVENT_TABLE() CPartFileConvertDlg::CPartFileConvertDlg(wxWindow* parent) : wxDialog(parent, -1, _("Import partfiles"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER) { convertDlg(this, true, true); m_joblist = CastChild(IDC_JOBLIST, wxListCtrl); m_pb_current = CastChild(IDC_CONV_PB_CURRENT, wxGauge); m_joblist->InsertColumn(0, _("File name"), wxLIST_FORMAT_LEFT, 200); m_joblist->InsertColumn(1, _("State"), wxLIST_FORMAT_LEFT, 100); m_joblist->InsertColumn(2, _("Size"), wxLIST_FORMAT_LEFT, 100); m_joblist->InsertColumn(3, _("Filehash"), wxLIST_FORMAT_LEFT, 100); SetIcon(wxICON(convert)); #ifdef CLIENT_GUI // There's no remote directory browser (yet), thus disable the // directory selector unless we're using a localhost connection if (!theApp->m_connect->IsConnectedToLocalHost()) { CastChild(IDC_ADDITEM, wxButton)->Enable(false); } #endif } // Static methods void CPartFileConvertDlg::ShowGUI(wxWindow* parent) { if (s_convertgui) { s_convertgui->Show(true); s_convertgui->Raise(); } else { s_convertgui = new CPartFileConvertDlg(parent); s_convertgui->Show(true); Notify_ConvertReaddAllJobs(); } } void CPartFileConvertDlg::CloseGUI() { if (s_convertgui) { s_convertgui->Show(false); s_convertgui->Destroy(); s_convertgui = NULL; } } void CPartFileConvertDlg::UpdateProgress(float percent, wxString text, wxString header) { if (s_convertgui) { s_convertgui->m_pb_current->SetValue((int)percent); wxString buffer = CFormat(wxT("%.2f %%")) % percent; wxStaticText* percentlabel = dynamic_cast(s_convertgui->FindWindow(IDC_CONV_PROZENT)); percentlabel->SetLabel(buffer); if (!text.IsEmpty()) { dynamic_cast(s_convertgui->FindWindow(IDC_CONV_PB_LABEL))->SetLabel(text); } percentlabel->GetParent()->Layout(); if (!header.IsEmpty()) { dynamic_cast(IDC_CURJOB)->GetStaticBox()->SetLabel(header); } } } void CPartFileConvertDlg::ClearInfo() { if (s_convertgui) { dynamic_cast(IDC_CURJOB)->GetStaticBox()->SetLabel(_("Waiting...")); dynamic_cast(s_convertgui->FindWindow(IDC_CONV_PROZENT))->SetLabel(wxEmptyString); s_convertgui->m_pb_current->SetValue(0); dynamic_cast(s_convertgui->FindWindow(IDC_CONV_PB_LABEL))->SetLabel(wxEmptyString); } } void CPartFileConvertDlg::UpdateJobInfo(ConvertInfo& info) { if (s_convertgui) { // search jobitem in listctrl long itemnr = s_convertgui->m_joblist->FindItem(-1, info.id); // if it does not exist, add it if (itemnr == -1) { itemnr = s_convertgui->m_joblist->InsertItem(s_convertgui->m_joblist->GetItemCount(), info.folder.GetPrintable()); if (itemnr != -1) { s_convertgui->m_joblist->SetItemData(itemnr, info.id); } } // update columns if (itemnr != -1) { s_convertgui->m_joblist->SetItem(itemnr, 0, info.filename.IsOk() ? info.folder.GetPrintable() : info.filename.GetPrintable() ); s_convertgui->m_joblist->SetItem(itemnr, 1, GetConversionState(info.state) ); if (info.size > 0) { s_convertgui->m_joblist->SetItem(itemnr, 2, CFormat(_("%s (Disk: %s)")) % CastItoXBytes(info.size) % CastItoXBytes(info.spaceneeded)); } else { s_convertgui->m_joblist->SetItem(itemnr, 2, wxEmptyString); } s_convertgui->m_joblist->SetItem(itemnr, 3, info.filehash); } } } void CPartFileConvertDlg::RemoveJobInfo(unsigned id) { if (s_convertgui) { long itemnr = s_convertgui->m_joblist->FindItem(-1, id); if (itemnr != -1) { s_convertgui->m_joblist->DeleteItem(itemnr); } } } // CPartFileConvertDlg message handlers void CPartFileConvertDlg::OnAddFolder(wxCommandEvent& WXUNUSED(event)) { // TODO: use MuleRemoteDirSelector wxString folder = ::wxDirSelector( _("Please choose a folder to search for temporary downloads! (subfolders will be included)"), wxStandardPaths::Get().GetDocumentsDir(), wxDD_DEFAULT_STYLE, wxDefaultPosition, this); if (!folder.IsEmpty()) { int reply = wxMessageBox(_("Do you want the source files of succesfully imported downloads be deleted?"), _("Remove sources?"), wxYES_NO | wxCANCEL | wxICON_QUESTION, this); if (reply != wxCANCEL) { // TODO: use notification CPartFileConvert::ScanFolderToAdd(CPath(folder), (reply == wxYES)); } } } void CPartFileConvertDlg::OnClose(wxCloseEvent& WXUNUSED(event)) { CloseGUI(); } void CPartFileConvertDlg::OnCloseButton(wxCommandEvent& WXUNUSED(event)) { CloseGUI(); } void CPartFileConvertDlg::RemoveSel(wxCommandEvent& WXUNUSED(event)) { if (m_joblist->GetSelectedItemCount() == 0) return; long itemnr = m_joblist->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); while (itemnr != -1) { Notify_ConvertRemoveJob(m_joblist->GetItemData(itemnr)); itemnr = m_joblist->GetNextItem(itemnr, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); } } void CPartFileConvertDlg::RetrySel(wxCommandEvent& WXUNUSED(event)) { if (m_joblist->GetSelectedItemCount() == 0) return; long itemnr = m_joblist->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); while (itemnr != -1) { Notify_ConvertRetryJob(m_joblist->GetItemData(itemnr)); itemnr = m_joblist->GetNextItem(itemnr, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); } } amule_2.3.1+git20151120.0023527bc2.orig/src/PartFileConvertDlg.h0000644000175000017500000000373312611472361022147 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef PARTFILECONVERTDLG_H #define PARTFILECONVERTDLG_H #include #include #include struct ConvertInfo; class CPartFileConvertDlg : public wxDialog { public: CPartFileConvertDlg(wxWindow *parent); static void ShowGUI(wxWindow *parent); static void UpdateProgress(float percent, wxString text = wxEmptyString, wxString header = wxEmptyString); static void UpdateJobInfo(ConvertInfo& info); static void RemoveJobInfo(unsigned id); static void ClearInfo(); static void CloseGUI(); protected: wxGauge* m_pb_current; wxListCtrl* m_joblist; void OnAddFolder(wxCommandEvent& event); void OnClose(wxCloseEvent& event); void OnCloseButton(wxCommandEvent& event); void RetrySel(wxCommandEvent& event); void RemoveSel(wxCommandEvent& event); DECLARE_EVENT_TABLE() static CPartFileConvertDlg* s_convertgui; }; #endif /* PARTFILECONVERTDLG_H */ amule_2.3.1+git20151120.0023527bc2.orig/src/PlatformSpecific.cpp0000644000175000017500000002570212611472361022236 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2008-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "PlatformSpecific.h" #ifdef HAVE_CONFIG_H # include "config.h" #endif // NTFS Sparse Files (only for MSW) #ifdef __WINDOWS__ #include "common/Format.h" #include "Logger.h" #include #include #ifndef FSCTL_SET_SPARSE # define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) #endif #ifndef FSCTL_SET_ZERO_DATA # define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 50, METHOD_BUFFERED, FILE_WRITE_DATA) #endif // Create a message from a Windows error code static wxString SystemError() { WCHAR * lpMsgBuf = NULL; FormatMessageW( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), 0, // Default language (LPWSTR) &lpMsgBuf, 0, NULL ); wxString ret(lpMsgBuf); LocalFree(lpMsgBuf); return ret; } // Create a file in sparse mode bool PlatformSpecific::CreateSparseFile(const CPath& name, uint64_t size) { DWORD dwReturnedBytes=0; HANDLE hd = CreateFileW(name.GetRaw().c_str(), GENERIC_READ | GENERIC_WRITE, 0, // share - not shareable NULL, // security - not inheritable CREATE_ALWAYS, FILE_ATTRIBUTE_ARCHIVE, NULL); if (hd == INVALID_HANDLE_VALUE) { AddDebugLogLineC(logPartFile, CFormat(wxT("converting %s to sparse failed (OPEN): %s ")) % name % SystemError()); return false; } if (!DeviceIoControl(hd, FSCTL_SET_SPARSE, NULL, 0, NULL, 0, &dwReturnedBytes, NULL)) { AddDebugLogLineC(logPartFile, CFormat(wxT("converting %s to sparse failed (SET_SPARSE): %s ")) % name % SystemError()); } else { // FILE_ZERO_DATA_INFORMATION is not defined here struct { uint64 FileOffset; uint64 BeyondFinalZero; } fzdi; fzdi.FileOffset = 0; fzdi.BeyondFinalZero = size; LARGE_INTEGER largo; largo.QuadPart = size; // zero the data if (!DeviceIoControl(hd, FSCTL_SET_ZERO_DATA, (LPVOID) &fzdi, sizeof(fzdi), NULL, 0, &dwReturnedBytes, NULL)) { AddDebugLogLineC(logPartFile, CFormat(wxT("converting %s to sparse failed (ZERO): %s")) % name % SystemError()); } else if (!SetFilePointerEx(hd, largo, NULL, FILE_BEGIN) || !SetEndOfFile(hd)) { AddDebugLogLineC(logPartFile, CFormat(wxT("converting %s to sparse failed (SEEK): %s")) % name % SystemError()); } } CloseHandle(hd); return true; } #else // non Windows systems don't need all this #include "CFile.h" bool PlatformSpecific::CreateSparseFile(const CPath& name, uint64_t WXUNUSED(size)) { CFile f; return f.Create(name.GetRaw(), true) && f.Close(); } #endif #ifdef __WINDOWS__ #include #include // Get the max number of connections that the OS supports, or -1 for default int PlatformSpecific::GetMaxConnections() { int maxconn = -1; // Try to get the max connection value in the registry wxRegKey key( wxT("HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\VxD\\MSTCP\\MaxConnections") ); wxString value; if ( key.Exists() ) { value = key.QueryDefaultValue(); } if ( !value.IsEmpty() && value.IsNumber() ) { long mc; value.ToLong(&mc); maxconn = (int)mc; } else { switch (wxGetOsVersion()) { case wxOS_WINDOWS_9X: // This includes all Win9x versions maxconn = 50; break; case wxOS_WINDOWS_NT: // This includes NT based windows maxconn = 500; break; default: // Anything else. Let aMule decide... break; } } return maxconn; } #endif #ifdef __WINDOWS__ #include #include static PlatformSpecific::EFSType doGetFilesystemType(const CPath& path) { wxWritableWCharBuffer pathRaw(path.GetRaw().wchar_str()); LPWSTR volume = pathRaw; if (!PathStripToRootW(volume)) { return PlatformSpecific::fsOther; } PathAddBackslashW(volume); DWORD maximumComponentLength = 0; DWORD filesystemFlags = 0; WCHAR filesystemNameBuffer[128]; if (!GetVolumeInformationW(volume, NULL, 0, NULL, &maximumComponentLength, &filesystemFlags, filesystemNameBuffer, 128)) { return PlatformSpecific::fsOther; } if (wxStrnicmp(filesystemNameBuffer, wxT("FAT"), 3) == 0) { return PlatformSpecific::fsFAT; } else if (wxStrcmp(filesystemNameBuffer, wxT("NTFS")) == 0) { return PlatformSpecific::fsNTFS; } return PlatformSpecific::fsOther; }; #elif defined(HAVE_GETMNTENT) && defined(HAVE_MNTENT_H) #include #include #include #ifndef _PATH_MOUNTED # define _PATH_MOUNTED "/etc/mtab" #endif #include static PlatformSpecific::EFSType doGetFilesystemType(const CPath& path) { struct mntent *entry = NULL; PlatformSpecific::EFSType retval = PlatformSpecific::fsOther; FILE *mnttab = fopen(_PATH_MOUNTED, "r"); unsigned bestPrefixLen = 0; if (mnttab == NULL) { return PlatformSpecific::fsOther; } while ((entry = getmntent(mnttab)) != NULL) { if (entry->mnt_dir) { wxString dir = char2unicode(entry->mnt_dir); if (dir == path.GetRaw().Mid(0, dir.Length())) { if (dir.Length() >= bestPrefixLen) { if (entry->mnt_type == NULL) { break; } else if (!strcmp(entry->mnt_type, "ntfs")) { retval = PlatformSpecific::fsNTFS; } else if (!strcmp(entry->mnt_type, "msdos") || !strcmp(entry->mnt_type, "umsdos") || !strcmp(entry->mnt_type, "vfat") || !strncmp(entry->mnt_type, "fat", 3)) { retval = PlatformSpecific::fsFAT; } else if (!strcmp(entry->mnt_type, "hfs")) { retval = PlatformSpecific::fsHFS; } else if (!strcmp(entry->mnt_type, "hpfs")) { retval = PlatformSpecific::fsHPFS; } else if (!strcmp(entry->mnt_type, "minix")) { retval = PlatformSpecific::fsMINIX; } /* Add more filesystem types here */ else if (dir.Length() > bestPrefixLen) { retval = PlatformSpecific::fsOther; } bestPrefixLen = dir.Length(); } } } } fclose(mnttab); return retval; } #elif defined(HAVE_GETMNTENT) && defined(HAVE_SYS_MNTENT_H) && defined(HAVE_SYS_MNTTAB_H) #include #include #include #include #ifndef MNTTAB # define MNTTAB "/etc/mnttab" #endif #include static PlatformSpecific::EFSType doGetFilesystemType(const CPath& path) { struct mnttab entryStatic; struct mnttab *entry = &entryStatic; PlatformSpecific::EFSType retval = PlatformSpecific::fsOther; FILE *fmnttab = fopen(MNTTAB, "r"); unsigned bestPrefixLen = 0; if (fmnttab == NULL) { return PlatformSpecific::fsOther; } while (getmntent(fmnttab, entry) == 0) { if (entry->mnt_mountp) { wxString dir = char2unicode(entry->mnt_mountp); if (dir == path.GetRaw().Mid(0, dir.Length())) { if (dir.Length() >= bestPrefixLen) { if (entry->mnt_fstype == NULL) { break; } else if (!strcmp(entry->mnt_fstype, MNTTYPE_PCFS)) { retval = PlatformSpecific::fsFAT; } else if (hasmntopt(entry, MNTOPT_NOLARGEFILES)) { // MINIX is a file system that can handle special chars but has no large files. retval = PlatformSpecific::fsMINIX; } else if (dir.Length() > bestPrefixLen) { retval = PlatformSpecific::fsOther; } bestPrefixLen = dir.Length(); } } } } fclose(fmnttab); return retval; } #else // No way to determine filesystem type, no restrictions apply. static inline PlatformSpecific::EFSType doGetFilesystemType(const CPath& WXUNUSED(path)) { return PlatformSpecific::fsOther; } #endif #include #include PlatformSpecific::EFSType PlatformSpecific::GetFilesystemType(const CPath& path) { typedef std::map FSMap; // Caching previous results, to speed up further checks. static FSMap s_fscache; // Lock used to ensure the integrity of the cache. static wxMutex s_lock; wxCHECK_MSG(path.IsOk(), fsOther, wxT("Invalid path in GetFilesystemType()")); wxMutexLocker locker(s_lock); FSMap::iterator it = s_fscache.find(path.GetRaw()); if (it != s_fscache.end()) { return it->second; } return s_fscache[path.GetRaw()] = doGetFilesystemType(path); } // Power event vetoing static bool m_preventingSleepMode = false; #if defined(__WXMAC__) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 // 10.5 only #include static IOPMAssertionID assertionID; #endif void PlatformSpecific::PreventSleepMode() { if (!m_preventingSleepMode) { #ifdef _MSC_VER SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED); m_preventingSleepMode = true; // IOPMAssertionCreate has been introduced in Leopard (10.5) but deprecated starting from Snow Leopard(10.6) // For more details see: // - http://developer.apple.com/library/mac/#qa/qa1340/_index.html // - http://www.cimgf.com/2009/10/14/the-journey-to-disabling-sleep-with-iokit/ #elif defined(__WXMAC__) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1060 // 10.6 only CFStringRef reasonForActivity= CFSTR("Prevent Display Sleep"); IOReturn success = IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, reasonForActivity, &assertionID); if (success == kIOReturnSuccess) { // Correctly vetoed, flag so we don't do it again. m_preventingSleepMode = true; } else { // May be should be better to trace in log? } #elif defined(__WXMAC__) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 // 10.5 only IOReturn success = IOPMAssertionCreate(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, &assertionID); if (success == kIOReturnSuccess) { // Correctly vetoed, flag so we don't do it again. m_preventingSleepMode = true; } else { // ?? } #else //#warning Power event vetoing not implemented. // Not implemented #endif } } void PlatformSpecific::AllowSleepMode() { if (m_preventingSleepMode) { #ifdef _MSC_VER SetThreadExecutionState(ES_CONTINUOUS); // Clear the system request flag. m_preventingSleepMode = false; #elif defined(__WXMAC__) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1050 // 10.5 only IOReturn success = IOPMAssertionRelease(assertionID); if (success == kIOReturnSuccess) { // Correctly restored, flag so we don't do it again. m_preventingSleepMode = false; } else { // ?? } #else // Not implemented #endif } } amule_2.3.1+git20151120.0023527bc2.orig/src/PlatformSpecific.h0000644000175000017500000001011112611472361021667 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2008-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef PLATFORMSPECIFIC_H #define PLATFORMSPECIFIC_H #include #include "Types.h" namespace PlatformSpecific { /** * Create sparse file. * * This function will create the named file sparse if possible. * * @param name The file to be created (sparse if possible). * @param size The desired size of the file. * @return true, if creating the file succeeded, false otherwise. */ bool CreateSparseFile(const CPath& name, uint64_t size); /** * Returns the max number of connections the current OS can handle. * * Currently anything but windows will return the default value (-1); */ #ifdef __WINDOWS__ int GetMaxConnections(); #else inline int GetMaxConnections() { return -1; } #endif /** * File system types returned by GetFilesystemType */ enum EFSType { fsFAT, //! File Allocation Table fsNTFS, //! New Technology File System fsHFS, //! Hierarchical File System fsHPFS, //! High Performace File System fsMINIX, //! Minix file system fsOther //! Unknown, other }; /** * Find out the filesystem type of the given path. * * @param path The path for which the filesystem type should be checked. * @return The filesystem type of the given path. * * This function returns fsOther on unknown or network file systems (because the * real filesystem type cannot be determined). */ EFSType GetFilesystemType(const CPath& path); /** * Checks if the filesystem can handle special chars. * * @param path The path for which the file system should be checked. * @return true if the underlying filesystem can handle special chars. * * This function checks if the file system of the given path can handle * special chars e.g. ':' in file names. This function will always return * false on MSW, since Windows cannot handle those characters on any file system. * * Based on http://en.wikipedia.org/wiki/Comparison_of_file_systems */ #ifdef __WINDOWS__ inline bool CanFSHandleSpecialChars(const CPath& WXUNUSED(path)) { return false; } #else // Other filesystem types may be added inline bool CanFSHandleSpecialChars(const CPath& path) { switch (GetFilesystemType(path)) { case fsFAT: case fsNTFS: case fsHFS: return false; default: return true; } } #endif /** * Check if the filesystem can handle large files. * * @param path The path for which the filesystem should be checked. * @return true if the underlying filesystem can handle large files. * * This function checks if the file system of the given path can handle * large files (>4GB). * * Based on http://en.wikipedia.org/wiki/Comparison_of_file_systems */ inline bool CanFSHandleLargeFiles(const CPath& path) { switch (GetFilesystemType(path)) { case fsFAT: case fsHFS: case fsHPFS: case fsMINIX: return false; default: return true; } } /** * Disable / enable computer's energy saving "standby" mode. * */ #if defined __WINDOWS__ || defined __WXMAC__ #define PLATFORMSPECIFIC_CAN_PREVENT_SLEEP_MODE 1 #else #define PLATFORMSPECIFIC_CAN_PREVENT_SLEEP_MODE 0 #endif void PreventSleepMode(); void AllowSleepMode(); }; /* namespace PlatformSpecific */ #endif /* PLATFORMSPECIFIC_H */ amule_2.3.1+git20151120.0023527bc2.orig/src/Preferences.cpp0000644000175000017500000016525212611472361021252 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include "Preferences.h" #include #include #include #include #include #include #include #include #include // Needed for wxBusyCursor #include "amule.h" #ifdef HAVE_CONFIG_H #include "config.h" // Needed for PACKAGE_STRING #endif #include "CFile.h" #include #include "Logger.h" #include // Needed for CFormat #include // Needed for CTextFile #include #include "UserEvents.h" #ifndef AMULE_DAEMON #include #include "muuli_wdr.h" #include "StatisticsDlg.h" #include "MuleColour.h" #endif #ifndef CLIENT_GUI #include "RandomFunctions.h" #include "PlatformSpecific.h" // Needed for PlatformSpecific::GetMaxConnections() #include "SharedFileList.h" // Needed for theApp->sharedfiles->Reload() #endif // Needed for IP filtering prefs #include "ClientList.h" #include "ServerList.h" #include "GuiEvents.h" #define DEFAULT_TCP_PORT 4662 #define DEFAULT_UDP_PORT 4672 // Static variables unsigned long CPreferences::s_colors[cntStatColors]; unsigned long CPreferences::s_colors_ref[cntStatColors]; CPreferences::CFGMap CPreferences::s_CfgList; CPreferences::CFGList CPreferences::s_MiscList; wxString CPreferences::s_configDir; /* Proxy */ CProxyData CPreferences::s_ProxyData; /* The rest, organize it! */ wxString CPreferences::s_nick; Cfg_Lang_Base * CPreferences::s_cfgLang; uint16 CPreferences::s_maxupload; uint16 CPreferences::s_maxdownload; uint16 CPreferences::s_slotallocation; wxString CPreferences::s_Addr; uint16 CPreferences::s_port; uint16 CPreferences::s_udpport; bool CPreferences::s_UDPEnable; uint16 CPreferences::s_maxconnections; bool CPreferences::s_reconnect; bool CPreferences::s_autoconnect; bool CPreferences::s_autoconnectstaticonly; bool CPreferences::s_UPnPEnabled; bool CPreferences::s_UPnPECEnabled; bool CPreferences::s_UPnPWebServerEnabled; uint16 CPreferences::s_UPnPTCPPort; bool CPreferences::s_autoserverlist; bool CPreferences::s_deadserver; CPath CPreferences::s_incomingdir; CPath CPreferences::s_tempdir; bool CPreferences::s_ICH; uint8 CPreferences::s_depth3D; bool CPreferences::s_scorsystem; bool CPreferences::s_hideonclose; bool CPreferences::s_mintotray; bool CPreferences::s_trayiconenabled; bool CPreferences::s_addnewfilespaused; bool CPreferences::s_addserversfromserver; bool CPreferences::s_addserversfromclient; uint16 CPreferences::s_maxsourceperfile; uint16 CPreferences::s_trafficOMeterInterval; uint16 CPreferences::s_statsInterval; uint32 CPreferences::s_maxGraphDownloadRate; uint32 CPreferences::s_maxGraphUploadRate; bool CPreferences::s_confirmExit; bool CPreferences::s_filterLanIP; bool CPreferences::s_paranoidfilter; bool CPreferences::s_IPFilterSys; bool CPreferences::s_onlineSig; uint16 CPreferences::s_OSUpdate; wxString CPreferences::s_languageID; uint8 CPreferences::s_iSeeShares; uint8 CPreferences::s_iToolDelayTime; uint8 CPreferences::s_splitterbarPosition; uint16 CPreferences::s_deadserverretries; uint32 CPreferences::s_dwServerKeepAliveTimeoutMins; uint8 CPreferences::s_statsMax; uint8 CPreferences::s_statsAverageMinutes; bool CPreferences::s_bpreviewprio; bool CPreferences::s_smartidcheck; uint8 CPreferences::s_smartidstate; bool CPreferences::s_safeServerConnect; bool CPreferences::s_startMinimized; uint16 CPreferences::s_MaxConperFive; bool CPreferences::s_checkDiskspace; uint32 CPreferences::s_uMinFreeDiskSpace; wxString CPreferences::s_yourHostname; bool CPreferences::s_bVerbose; bool CPreferences::s_bVerboseLogfile; bool CPreferences::s_bmanualhighprio; bool CPreferences::s_bstartnextfile; bool CPreferences::s_bstartnextfilesame; bool CPreferences::s_bstartnextfilealpha; bool CPreferences::s_bshowoverhead; bool CPreferences::s_bDAP; bool CPreferences::s_bUAP; #ifndef __SVN__ bool CPreferences::s_showVersionOnTitle; #endif uint8_t CPreferences::s_showRatesOnTitle; wxString CPreferences::s_VideoPlayer; bool CPreferences::s_showAllNotCats; bool CPreferences::s_msgonlyfriends; bool CPreferences::s_msgsecure; uint8 CPreferences::s_filterlevel; uint8 CPreferences::s_iFileBufferSize; uint8 CPreferences::s_iQueueSize; wxString CPreferences::s_datetimeformat; wxString CPreferences::s_sWebPath; wxString CPreferences::s_sWebPassword; wxString CPreferences::s_sWebLowPassword; uint16 CPreferences::s_nWebPort; uint16 CPreferences::s_nWebUPnPTCPPort; bool CPreferences::s_bWebEnabled; bool CPreferences::s_bWebUseGzip; uint32 CPreferences::s_nWebPageRefresh; bool CPreferences::s_bWebLowEnabled; wxString CPreferences::s_WebTemplate; bool CPreferences::s_showCatTabInfos; AllCategoryFilter CPreferences::s_allcatFilter; bool CPreferences::s_AcceptExternalConnections; wxString CPreferences::s_ECAddr; uint32 CPreferences::s_ECPort; wxString CPreferences::s_ECPassword; bool CPreferences::s_TransmitOnlyUploadingClients; bool CPreferences::s_IPFilterClients; bool CPreferences::s_IPFilterServers; bool CPreferences::s_UseSrcSeeds; bool CPreferences::s_ProgBar; bool CPreferences::s_Percent; bool CPreferences::s_SecIdent; bool CPreferences::s_ExtractMetaData; bool CPreferences::s_allocFullFile; wxString CPreferences::s_CustomBrowser; bool CPreferences::s_BrowserTab; CPath CPreferences::s_OSDirectory; wxString CPreferences::s_Skin; bool CPreferences::s_FastED2KLinksHandler; bool CPreferences::s_ToolbarOrientation; bool CPreferences::s_AICHTrustEveryHash; wxString CPreferences::s_CommentFilterString; bool CPreferences::s_IPFilterAutoLoad; wxString CPreferences::s_IPFilterURL; CMD4Hash CPreferences::s_userhash; bool CPreferences::s_MustFilterMessages; wxString CPreferences::s_MessageFilterString; bool CPreferences::s_FilterAllMessages; bool CPreferences::s_FilterComments; bool CPreferences::s_FilterSomeMessages; bool CPreferences::s_ShowMessagesInLog; bool CPreferences::s_IsAdvancedSpamfilterEnabled; bool CPreferences::s_IsChatCaptchaEnabled; bool CPreferences::s_ShareHiddenFiles; bool CPreferences::s_AutoSortDownload; bool CPreferences::s_NewVersionCheck; bool CPreferences::s_ConnectToKad; bool CPreferences::s_ConnectToED2K; unsigned CPreferences::s_maxClientVersions; bool CPreferences::s_DropSlowSources; bool CPreferences::s_IsClientCryptLayerSupported; bool CPreferences::s_bCryptLayerRequested; bool CPreferences::s_IsClientCryptLayerRequired; uint32 CPreferences::s_dwKadUDPKey; uint8 CPreferences::s_byCryptTCPPaddingLength; wxString CPreferences::s_Ed2kURL; wxString CPreferences::s_KadURL; bool CPreferences::s_GeoIPEnabled; wxString CPreferences::s_GeoIPUpdateUrl; bool CPreferences::s_preventSleepWhileDownloading; wxString CPreferences::s_StatsServerName; wxString CPreferences::s_StatsServerURL; /** * Template Cfg class for connecting with widgets. * * This template provides the base functionionality needed to syncronize a * variable with a widget. However, please note that wxGenericValidator only * supports a few types (int, wxString, bool and wxArrayInt), so this template * can't always be used directly. * * Cfg_Str and Cfg_Bool are able to use this template directly, whereas Cfg_Int * makes use of serveral workaround to enable it to be used with integers other * than int. */ template class Cfg_Tmpl : public Cfg_Base { public: /** * Constructor. * * @param keyname * @param value * @param defaultVal */ Cfg_Tmpl( const wxString& keyname, TYPE& value, const TYPE& defaultVal ) : Cfg_Base( keyname ), m_value( value ), m_default( defaultVal ), m_widget( NULL ) {} #ifndef AMULE_DAEMON /** * Connects the Cfg to a widget. * * @param id The ID of the widget to be connected. * @param parent The parent of the widget. Use this to speed up searches. * * This function works by setting the wxValidator of the class. This however * poses some restrictions on which variable types can be used for this * template, as noted above. It also poses some limits on the widget types, * refer to the wx documentation for those. */ virtual bool ConnectToWidget( int id, wxWindow* parent = NULL ) { if ( id ) { m_widget = wxWindow::FindWindowById( id, parent ); if ( m_widget ) { wxGenericValidator validator( &m_value ); m_widget->SetValidator( validator ); return true; } } else { m_widget = NULL; } return false; } /** Updates the assosiated variable, returning true on success. */ virtual bool TransferFromWindow() { if ( m_widget ) { wxValidator* validator = m_widget->GetValidator(); if ( validator ) { TYPE temp = m_value; if ( validator->TransferFromWindow() ) { SetChanged( temp != m_value ); return true; } } } return false; } /** Updates the assosiated widget, returning true on success. */ virtual bool TransferToWindow() { if ( m_widget ) { wxValidator* validator = m_widget->GetValidator(); if ( validator ) return validator->TransferToWindow(); } return false; } #endif /** Sets the default value. */ void SetDefault(const TYPE& defaultVal) { m_default = defaultVal; } protected: //! Reference to the associated variable TYPE& m_value; //! Default variable value TYPE m_default; //! Pointer to the widget assigned to the Cfg instance wxWindow* m_widget; }; /** Cfg class for wxStrings. */ class Cfg_Str : public Cfg_Tmpl { public: /** Constructor. */ Cfg_Str( const wxString& keyname, wxString& value, const wxString& defaultVal = EmptyString ) : Cfg_Tmpl( keyname, value, defaultVal ) {} /** Loads the string, using the specified default value. */ virtual void LoadFromFile(wxConfigBase* cfg) { cfg->Read( GetKey(), &m_value, m_default ); } /** Saves the string to the specified wxConfig object. */ virtual void SaveToFile(wxConfigBase* cfg) { cfg->Write( GetKey(), m_value ); } }; /** * Cfg-class for encrypting strings, for example for passwords. */ class Cfg_Str_Encrypted : public Cfg_Str { public: Cfg_Str_Encrypted( const wxString& keyname, wxString& value, const wxString& defaultVal = EmptyString ) : Cfg_Str( keyname, value, defaultVal ) {} #ifndef AMULE_DAEMON virtual bool TransferFromWindow() { // Shakraw: when storing value, store it encrypted here (only if changed in prefs) if ( Cfg_Str::TransferFromWindow() ) { // Only recalucate the hash for new, non-empty passwords if ( HasChanged() && !m_value.IsEmpty() ) { m_value = MD5Sum( m_value ).GetHash(); } return true; } return false; } #endif }; /** Cfg class for CPath. */ class Cfg_Path : public Cfg_Str { public: /** Constructor. */ Cfg_Path(const wxString& keyname, CPath& value, const wxString& defaultVal = EmptyString ) : Cfg_Str(keyname, m_temp_path, defaultVal) , m_real_path(value) {} /** @see Cfg_Str::LoadFromFile. */ virtual void LoadFromFile(wxConfigBase* cfg) { Cfg_Str::LoadFromFile(cfg); m_real_path = CPath::FromUniv(m_temp_path); } /** @see Cfg_Str::SaveToFile. */ virtual void SaveToFile(wxConfigBase* cfg) { m_temp_path = CPath::ToUniv(m_real_path); Cfg_Str::SaveToFile(cfg); } /** @see Cfg_Tmpl::TransferToWindow. */ virtual bool TransferToWindow() { m_temp_path = m_real_path.GetRaw(); return Cfg_Str::TransferToWindow(); } /** @see Cfg_Tmpl::TransferFromWindow. */ virtual bool TransferFromWindow() { if (Cfg_Str::TransferFromWindow()) { m_real_path = CPath(m_temp_path); return true; } return false; } private: wxString m_temp_path; CPath& m_real_path; }; /** * Cfg class that takes care of integer types. * * This template is needed since wxValidator only supports normals ints, and * wxConfig for the matter only supports longs, thus some worksarounds are * needed. * * There are two work-arounds: * 1) wxValidator only supports int*, so we need a immediate variable to act * as a storage. Thus we use Cfg_Tmpl as base class. Thus this class * contains a integer which we use to pass the value back and forth * between the widgets. * * 2) wxConfig uses longs to save and read values, thus we need an immediate * stage when loading and saving the value. */ template class Cfg_Int : public Cfg_Tmpl { public: Cfg_Int( const wxString& keyname, TYPE& value, int defaultVal = 0 ) : Cfg_Tmpl( keyname, m_temp_value, defaultVal ), m_real_value( value ), m_temp_value( value ) {} virtual void LoadFromFile(wxConfigBase* cfg) { long tmp = 0; cfg->Read( GetKey(), &tmp, m_default ); // Set the temp value m_temp_value = (int)tmp; // Set the actual value m_real_value = (TYPE)tmp; } virtual void SaveToFile(wxConfigBase* cfg) { cfg->Write( GetKey(), (long)m_real_value ); } #ifndef AMULE_DAEMON virtual bool TransferFromWindow() { if ( Cfg_Tmpl::TransferFromWindow() ) { m_real_value = (TYPE)m_temp_value; return true; } return false; } virtual bool TransferToWindow() { m_temp_value = (int)m_real_value; if ( Cfg_Tmpl::TransferToWindow() ) { // In order to let us update labels on slider-changes, we trigger a event wxSlider *slider = dynamic_cast(m_widget); if (slider) { int id = m_widget->GetId(); int pos = slider->GetValue(); wxScrollEvent evt( wxEVT_SCROLL_THUMBRELEASE, id, pos ); m_widget->GetEventHandler()->ProcessEvent( evt ); } return true; } return false; } #endif protected: TYPE& m_real_value; int m_temp_value; }; /** * Helper function for creating new Cfg_Ints. * * @param keyname The cfg-key under which the item should be saved. * @param value The variable to syncronize. The type of this variable defines the type used to create the Cfg_Int. * @param defaultVal The default value if the key isn't found when loading the value. * @return A pointer to the new Cfg_Int object. The caller is responsible for deleting it. * * This template-function returns a Cfg_Int of the appropriate type for the * variable used as argument and should be used to avoid having to specify * the integer type when adding a new Cfg_Int, since that's just increases * the maintainence burden. */ template Cfg_Base* MkCfg_Int( const wxString& keyname, TYPE& value, int defaultVal ) { return new Cfg_Int( keyname, value, defaultVal ); } /** * Cfg-class for bools. */ class Cfg_Bool : public Cfg_Tmpl { public: Cfg_Bool( const wxString& keyname, bool& value, bool defaultVal ) : Cfg_Tmpl( keyname, value, defaultVal ) {} virtual void LoadFromFile(wxConfigBase* cfg) { cfg->Read( GetKey(), &m_value, m_default ); } virtual void SaveToFile(wxConfigBase* cfg) { cfg->Write( GetKey(), m_value ); } }; #ifndef AMULE_DAEMON class Cfg_Colour : public Cfg_Base { public: Cfg_Colour(const wxString& key, wxColour& colour) : Cfg_Base(key), m_colour(colour), m_default(CMuleColour(colour).GetULong()) {} virtual void LoadFromFile(wxConfigBase* cfg) { long int rgb; cfg->Read(GetKey(), &rgb, m_default); m_colour.Set(rgb); } virtual void SaveToFile(wxConfigBase* cfg) { cfg->Write(GetKey(), static_cast(CMuleColour(m_colour).GetULong())); } private: wxColour& m_colour; long int m_default; }; typedef struct { int id; bool available; wxString displayname; wxString name; } LangInfo; /** * The languages aMule has translation for. * * Add new languages here. * Then activate the test code in Cfg_Lang::UpdateChoice below! */ static LangInfo aMuleLanguages[] = { { wxLANGUAGE_DEFAULT, true, wxEmptyString, wxTRANSLATE("System default") }, { wxLANGUAGE_ALBANIAN, false, wxEmptyString, wxTRANSLATE("Albanian") }, { wxLANGUAGE_ARABIC, false, wxEmptyString, wxTRANSLATE("Arabic") }, { wxLANGUAGE_ASTURIAN, false, wxEmptyString, wxTRANSLATE("Asturian") }, { wxLANGUAGE_BASQUE, false, wxEmptyString, wxTRANSLATE("Basque") }, { wxLANGUAGE_BULGARIAN, false, wxEmptyString, wxTRANSLATE("Bulgarian") }, { wxLANGUAGE_CATALAN, false, wxEmptyString, wxTRANSLATE("Catalan") }, { wxLANGUAGE_CHINESE_SIMPLIFIED, false, wxEmptyString, wxTRANSLATE("Chinese (Simplified)") }, { wxLANGUAGE_CHINESE_TRADITIONAL, false, wxEmptyString, wxTRANSLATE("Chinese (Traditional)") }, { wxLANGUAGE_CROATIAN, false, wxEmptyString, wxTRANSLATE("Croatian") }, { wxLANGUAGE_CZECH, false, wxEmptyString, wxTRANSLATE("Czech") }, { wxLANGUAGE_DANISH, false, wxEmptyString, wxTRANSLATE("Danish") }, { wxLANGUAGE_DUTCH, false, wxEmptyString, wxTRANSLATE("Dutch") }, { wxLANGUAGE_ENGLISH, false, wxEmptyString, wxTRANSLATE("English (U.K.)") }, { wxLANGUAGE_ESTONIAN, false, wxEmptyString, wxTRANSLATE("Estonian") }, { wxLANGUAGE_FINNISH, false, wxEmptyString, wxTRANSLATE("Finnish") }, { wxLANGUAGE_FRENCH, false, wxEmptyString, wxTRANSLATE("French") }, { wxLANGUAGE_GALICIAN, false, wxEmptyString, wxTRANSLATE("Galician") }, { wxLANGUAGE_GERMAN, false, wxEmptyString, wxTRANSLATE("German") }, { wxLANGUAGE_GREEK, false, wxEmptyString, wxTRANSLATE("Greek") }, { wxLANGUAGE_HEBREW, false, wxEmptyString, wxTRANSLATE("Hebrew") }, { wxLANGUAGE_HUNGARIAN, false, wxEmptyString, wxTRANSLATE("Hungarian") }, { wxLANGUAGE_ITALIAN, false, wxEmptyString, wxTRANSLATE("Italian") }, { wxLANGUAGE_ITALIAN_SWISS, false, wxEmptyString, wxTRANSLATE("Italian (Swiss)") }, { wxLANGUAGE_JAPANESE, false, wxEmptyString, wxTRANSLATE("Japanese") }, { wxLANGUAGE_KOREAN, false, wxEmptyString, wxTRANSLATE("Korean") }, { wxLANGUAGE_LITHUANIAN, false, wxEmptyString, wxTRANSLATE("Lithuanian") }, { wxLANGUAGE_NORWEGIAN_NYNORSK, false, wxEmptyString, wxTRANSLATE("Norwegian (Nynorsk)") }, { wxLANGUAGE_POLISH, false, wxEmptyString, wxTRANSLATE("Polish") }, { wxLANGUAGE_PORTUGUESE, false, wxEmptyString, wxTRANSLATE("Portuguese") }, { wxLANGUAGE_PORTUGUESE_BRAZILIAN, false, wxEmptyString, wxTRANSLATE("Portuguese (Brazilian)") }, { wxLANGUAGE_ROMANIAN, false, wxEmptyString, wxTRANSLATE("Romanian") }, { wxLANGUAGE_RUSSIAN, false, wxEmptyString, wxTRANSLATE("Russian") }, { wxLANGUAGE_SLOVENIAN, false, wxEmptyString, wxTRANSLATE("Slovenian") }, { wxLANGUAGE_SPANISH, false, wxEmptyString, wxTRANSLATE("Spanish") }, { wxLANGUAGE_SWEDISH, false, wxEmptyString, wxTRANSLATE("Swedish") }, { wxLANGUAGE_TURKISH, false, wxEmptyString, wxTRANSLATE("Turkish") }, { wxLANGUAGE_UKRAINIAN, false, wxEmptyString, wxTRANSLATE("Ukrainian") }, }; typedef Cfg_Int Cfg_PureInt; class Cfg_Lang : public Cfg_PureInt, public Cfg_Lang_Base { public: // cppcheck-suppress uninitMemberVar m_selection, m_langSelector Cfg_Lang() : Cfg_PureInt( wxEmptyString, m_selection, 0 ) { m_languagesReady = false; m_changePos = 0; } virtual void LoadFromFile(wxConfigBase* WXUNUSED(cfg)) {} virtual void SaveToFile(wxConfigBase* WXUNUSED(cfg)) {} virtual bool TransferFromWindow() { if (!m_languagesReady) { return true; // nothing changed, no problem } if ( Cfg_PureInt::TransferFromWindow() ) { // find wx ID of selected language int i = 0; while (m_selection > 0) { i++; if (aMuleLanguages[i].available) { m_selection--; } } int id = aMuleLanguages[i].id; // save language selection thePrefs::SetLanguageID(wxLang2Str(id)); return true; } return false; } virtual bool TransferToWindow() { m_langSelector = dynamic_cast(m_widget); // doesn't work in ctor! if (m_languagesReady) { FillChoice(); } else { int wxId = StrLang2wx(thePrefs::GetLanguageID()); m_langSelector->Clear(); m_selection = 0; for (uint32 i = 0; i < itemsof(aMuleLanguages); i++) { if ( aMuleLanguages[i].id == wxId ) { m_langSelector->Append(wxString(wxGetTranslation(aMuleLanguages[i].name)) + wxT(" [") + aMuleLanguages[i].name + wxT("]")); break; } } m_langSelector->Append(_("Change Language")); m_changePos = m_langSelector->GetCount() - 1; } return Cfg_PureInt::TransferToWindow(); } virtual void UpdateChoice(int pos) { if (!m_languagesReady && pos == m_changePos) { // Find available languages and translate them. // This is only done when the user selects "Change Language" // Language is changed rarely, and the go-through-all locales takes a considerable // time when the settings dialog is opened for the first time. wxBusyCursor busyCursor; aMuleLanguages[0].displayname = wxGetTranslation(aMuleLanguages[0].name); // This supresses error-messages about invalid locales for (unsigned int i = 1; i < itemsof(aMuleLanguages); ++i) { if ((aMuleLanguages[i].id > wxLANGUAGE_USER_DEFINED) || wxLocale::IsAvailable(aMuleLanguages[i].id)) { wxLogNull logTarget; wxLocale locale_to_check; InitLocale(locale_to_check, aMuleLanguages[i].id); if (locale_to_check.IsOk() && locale_to_check.IsLoaded(wxT(PACKAGE))) { aMuleLanguages[i].displayname = wxString(wxGetTranslation(aMuleLanguages[i].name)) + wxT(" [") + aMuleLanguages[i].name + wxT("]"); aMuleLanguages[i].available = true; #if 0 // Check for language problems // Activate this code temporarily after messing with the languages! int wxid = StrLang2wx(wxLang2Str(aMuleLanguages[i].id)); if (wxid != aMuleLanguages[i].id) { AddDebugLogLineN(logGeneral, CFormat(wxT("Language problem for %s : aMule id %d != wx id %d")) % aMuleLanguages[i].name % aMuleLanguages[i].id % wxid); } #endif } } } // Restore original locale wxLocale tmpLocale; InitLocale(tmpLocale, theApp->m_locale.GetLanguage()); FillChoice(); if (m_langSelector->GetCount() == 1) { wxMessageBox(_("There are no translations installed for aMule"), _("No languages available"), wxICON_INFORMATION | wxOK); } m_langSelector->SetSelection(m_selection); m_languagesReady = true; } } protected: int m_selection; private: void FillChoice() { int wxId = StrLang2wx(thePrefs::GetLanguageID()); m_langSelector->Clear(); // Add all available languages and find the index of the selected language. for ( unsigned int i = 0, j = 0; i < itemsof(aMuleLanguages); i++) { if (aMuleLanguages[i].available) { m_langSelector->Append(aMuleLanguages[i].displayname); if ( aMuleLanguages[i].id == wxId ) { m_selection = j; } j++; } } } bool m_languagesReady; // true: all translations calculated int m_changePos; wxChoice * m_langSelector; }; #endif /* ! AMULE_DAEMON */ void Cfg_Lang_Base::UpdateChoice(int) {} // dummy class Cfg_Skin : public Cfg_Str { public: Cfg_Skin( const wxString& keyname, wxString& value, const wxString& defaultVal = EmptyString ) : Cfg_Str( keyname, value, defaultVal ), m_is_skin(false) {} #ifndef AMULE_DAEMON virtual bool TransferFromWindow() { if ( Cfg_Str::TransferFromWindow() ) { if (m_is_skin) { wxChoice *skinSelector = dynamic_cast(m_widget); // "- default -" is always the first if (skinSelector->GetSelection() == 0) { m_value.Clear(); } } return true; } return false; } virtual bool TransferToWindow() { wxChoice *skinSelector = dynamic_cast(m_widget); skinSelector->Clear(); wxString folder; int flags = wxDIR_DIRS; wxString filespec; wxString defaultSelection = _("- default -"); //#warning there has to be a better way... if ( GetKey() == wxT("/SkinGUIOptions/Skin") ) { folder = wxT("skins"); m_is_skin = true; flags = wxDIR_FILES; filespec = wxT("*.zip"); skinSelector->Append(defaultSelection); } else { folder = wxT("webserver"); } wxString dirName(JoinPaths(GetConfigDir(theApp->m_configFile), folder)); wxString Filename; wxDir d; if (wxDir::Exists(dirName) && d.Open(dirName) && d.GetFirst(& Filename, filespec, flags) ) { do { if (m_is_skin) { Filename = wxT("User:") + Filename; } skinSelector->Append(Filename); } while (d.GetNext(&Filename)); } wxString dataDir; if (m_is_skin) { dataDir = wxStandardPaths::Get().GetDataDir(); } else { dataDir = wxStandardPaths::Get().GetResourcesDir(); } #if !defined(__WINDOWS__ ) && !defined(__WXMAC__) dataDir = dataDir.BeforeLast(wxT('/')) + wxT("/amule"); #endif wxString systemDir(JoinPaths(dataDir,folder)); if (wxDir::Exists(systemDir) && d.Open(systemDir) && d.GetFirst(& Filename, filespec, flags) ) { do { if (m_is_skin) { Filename = wxT("System:") + Filename; } // avoid duplicates for webserver templates if (skinSelector->FindString(Filename) == wxNOT_FOUND) { skinSelector->Append(Filename); } } while (d.GetNext(&Filename)); } if ( skinSelector->GetCount() == 0 ) { skinSelector->Append(_("no options available")); } int id = skinSelector->FindString(m_value); if ( id == wxNOT_FOUND ) { id = 0; if (m_is_skin) { m_value = defaultSelection; } } skinSelector->SetSelection(id); return Cfg_Str::TransferToWindow(); } #endif /* ! AMULE_DAEMON */ protected: bool m_is_skin; }; /// new implementation CPreferences::CPreferences() { srand( wxGetLocalTimeMillis().GetLo() ); // we need random numbers sometimes // load preferences.dat or set standard values wxString fullpath(s_configDir + wxT("preferences.dat")); CFile preffile; if (wxFileExists(fullpath)) { if (preffile.Open(fullpath, CFile::read)) { try { preffile.ReadUInt8(); // Version. Value is not used. s_userhash = preffile.ReadHash(); } catch (const CSafeIOException& e) { AddDebugLogLineC(logGeneral, wxT("Error while reading userhash: ") + e.what()); } } } if (s_userhash.IsEmpty()) { for (int i = 0; i < 8; i++) { RawPokeUInt16(s_userhash.GetHash() + (i * 2), rand()); } Save(); } // Mark hash as an eMule-type hash // See also CUpDownClient::GetHashType s_userhash[5] = 14; s_userhash[14] = 111; #ifndef CLIENT_GUI LoadPreferences(); ReloadSharedFolders(); // serverlist adresses CTextFile slistfile; if (slistfile.Open(s_configDir + wxT("addresses.dat"), CTextFile::read)) { adresses_list = slistfile.ReadLines(); } #endif } // // Gets called at init time // void CPreferences::BuildItemList( const wxString& appdir ) { #ifndef AMULE_DAEMON #define NewCfgItem(ID, COMMAND) s_CfgList[ID] = COMMAND #else int current_id = 0; #define NewCfgItem(ID, COMMAND) s_CfgList[++current_id] = COMMAND #endif /* AMULE_DAEMON */ /** * User settings **/ NewCfgItem(IDC_NICK, (new Cfg_Str( wxT("/eMule/Nick"), s_nick, wxT("http://www.aMule.org") ))); #ifndef AMULE_DAEMON Cfg_Lang * cfgLang = new Cfg_Lang(); s_cfgLang = cfgLang; NewCfgItem(IDC_LANGUAGE, cfgLang); #endif /** * Browser options **/ #ifdef __WXMAC__ wxString customBrowser = wxT("/usr/bin/open"); #else wxString customBrowser; // left empty #endif NewCfgItem(IDC_BROWSERTABS, (new Cfg_Bool( wxT("/Browser/OpenPageInTab"), s_BrowserTab, true ))); NewCfgItem(IDC_BROWSERSELF, (new Cfg_Str( wxT("/Browser/CustomBrowserString"), s_CustomBrowser, customBrowser ))); /** * Misc **/ NewCfgItem(IDC_QUEUESIZE, (MkCfg_Int( wxT("/eMule/QueueSizePref"), s_iQueueSize, 50 ))); #ifdef __DEBUG__ /** * Debugging **/ NewCfgItem(ID_VERBOSEDEBUG, (new Cfg_Bool( wxT("/eMule/VerboseDebug"), s_bVerbose, false ))); NewCfgItem(ID_VERBOSEDEBUGLOGFILE, (new Cfg_Bool( wxT("/eMule/VerboseDebugLogfile"), s_bVerboseLogfile, false ))); #endif /** * Connection settings **/ NewCfgItem(IDC_MAXUP, (MkCfg_Int( wxT("/eMule/MaxUpload"), s_maxupload, 0 ))); NewCfgItem(IDC_MAXDOWN, (MkCfg_Int( wxT("/eMule/MaxDownload"), s_maxdownload, 0 ))); NewCfgItem(IDC_SLOTALLOC, (MkCfg_Int( wxT("/eMule/SlotAllocation"), s_slotallocation, 2 ))); NewCfgItem(IDC_PORT, (MkCfg_Int( wxT("/eMule/Port"), s_port, DEFAULT_TCP_PORT ))); NewCfgItem(IDC_UDPPORT, (MkCfg_Int( wxT("/eMule/UDPPort"), s_udpport, DEFAULT_UDP_PORT ))); NewCfgItem(IDC_UDPENABLE, (new Cfg_Bool( wxT("/eMule/UDPEnable"), s_UDPEnable, true ))); NewCfgItem(IDC_ADDRESS, (new Cfg_Str( wxT("/eMule/Address"), s_Addr, wxEmptyString))); NewCfgItem(IDC_AUTOCONNECT, (new Cfg_Bool( wxT("/eMule/Autoconnect"), s_autoconnect, true ))); NewCfgItem(IDC_MAXSOURCEPERFILE, (MkCfg_Int( wxT("/eMule/MaxSourcesPerFile"), s_maxsourceperfile, 300 ))); NewCfgItem(IDC_MAXCON, (MkCfg_Int( wxT("/eMule/MaxConnections"), s_maxconnections, GetRecommendedMaxConnections() ))); NewCfgItem(IDC_MAXCON5SEC, (MkCfg_Int( wxT("/eMule/MaxConnectionsPerFiveSeconds"), s_MaxConperFive, 20 ))); /** * Proxy **/ NewCfgItem(ID_PROXY_ENABLE_PROXY, (new Cfg_Bool( wxT("/Proxy/ProxyEnableProxy"), s_ProxyData.m_proxyEnable, false ))); NewCfgItem(ID_PROXY_TYPE, (MkCfg_Int( wxT("/Proxy/ProxyType"), s_ProxyData.m_proxyType, 0 ))); NewCfgItem(ID_PROXY_NAME, (new Cfg_Str( wxT("/Proxy/ProxyName"), s_ProxyData.m_proxyHostName, wxEmptyString ))); NewCfgItem(ID_PROXY_PORT, (MkCfg_Int( wxT("/Proxy/ProxyPort"), s_ProxyData.m_proxyPort, 1080 ))); NewCfgItem(ID_PROXY_ENABLE_PASSWORD, (new Cfg_Bool( wxT("/Proxy/ProxyEnablePassword"), s_ProxyData.m_enablePassword, false ))); NewCfgItem(ID_PROXY_USER, (new Cfg_Str( wxT("/Proxy/ProxyUser"), s_ProxyData.m_userName, wxEmptyString ))); NewCfgItem(ID_PROXY_PASSWORD, (new Cfg_Str( wxT("/Proxy/ProxyPassword"), s_ProxyData.m_password, wxEmptyString ))); // These were copied from eMule config file, maybe someone with windows can complete this? // NewCfgItem(ID_PROXY_AUTO_SERVER_CONNECT_WITHOUT_PROXY, (new Cfg_Bool( wxT("/Proxy/Proxy????"), s_Proxy????, false ))); /** * Servers **/ NewCfgItem(IDC_REMOVEDEAD, (new Cfg_Bool( wxT("/eMule/RemoveDeadServer"), s_deadserver, 1 ))); NewCfgItem(IDC_SERVERRETRIES, (MkCfg_Int( wxT("/eMule/DeadServerRetry"), s_deadserverretries, 3 ))); NewCfgItem(IDC_SERVERKEEPALIVE, (MkCfg_Int( wxT("/eMule/ServerKeepAliveTimeout"), s_dwServerKeepAliveTimeoutMins, 0 ))); NewCfgItem(IDC_RECONN, (new Cfg_Bool( wxT("/eMule/Reconnect"), s_reconnect, true ))); NewCfgItem(IDC_SCORE, (new Cfg_Bool( wxT("/eMule/Scoresystem"), s_scorsystem, true ))); NewCfgItem(IDC_AUTOSERVER, (new Cfg_Bool( wxT("/eMule/Serverlist"), s_autoserverlist, false ))); NewCfgItem(IDC_UPDATESERVERCONNECT, (new Cfg_Bool( wxT("/eMule/AddServerListFromServer"), s_addserversfromserver, false))); NewCfgItem(IDC_UPDATESERVERCLIENT, (new Cfg_Bool( wxT("/eMule/AddServerListFromClient"), s_addserversfromclient, false ))); NewCfgItem(IDC_SAFESERVERCONNECT, (new Cfg_Bool( wxT("/eMule/SafeServerConnect"), s_safeServerConnect, false ))); NewCfgItem(IDC_AUTOCONNECTSTATICONLY, (new Cfg_Bool( wxT("/eMule/AutoConnectStaticOnly"), s_autoconnectstaticonly, false ))); NewCfgItem(IDC_UPNP_ENABLED, (new Cfg_Bool( wxT("/eMule/UPnPEnabled"), s_UPnPEnabled, false ))); NewCfgItem(IDC_UPNPTCPPORT, (MkCfg_Int( wxT("/eMule/UPnPTCPPort"), s_UPnPTCPPort, 50000 ))); NewCfgItem(IDC_SMARTIDCHECK, (new Cfg_Bool( wxT("/eMule/SmartIdCheck"), s_smartidcheck, true ))); // Enabled networks NewCfgItem( IDC_NETWORKKAD, (new Cfg_Bool( wxT("/eMule/ConnectToKad"), s_ConnectToKad, true )) ); NewCfgItem( IDC_NETWORKED2K, ( new Cfg_Bool( wxT("/eMule/ConnectToED2K"), s_ConnectToED2K, true ) )); /** * Files **/ NewCfgItem(IDC_TEMPFILES, (new Cfg_Path( wxT("/eMule/TempDir"), s_tempdir, appdir + wxT("Temp") ))); #if defined(__WXMAC__) || defined(__WINDOWS__ ) wxString incpath = wxStandardPaths::Get().GetDocumentsDir(); if (incpath.IsEmpty()) { // There is a built-in possibility for this call to fail, though I can't imagine a reason for that. incpath = appdir + wxT("Incoming"); } else { incpath = JoinPaths(incpath, wxT("aMule Downloads")); } #else wxString incpath = appdir + wxT("Incoming"); #endif NewCfgItem(IDC_INCFILES, (new Cfg_Path( wxT("/eMule/IncomingDir"), s_incomingdir, incpath ))); NewCfgItem(IDC_ICH, (new Cfg_Bool( wxT("/eMule/ICH"), s_ICH, true ))); NewCfgItem(IDC_AICHTRUST, (new Cfg_Bool( wxT("/eMule/AICHTrust"), s_AICHTrustEveryHash, false ))); NewCfgItem(IDC_CHECKDISKSPACE, (new Cfg_Bool( wxT("/eMule/CheckDiskspace"), s_checkDiskspace, true ))); NewCfgItem(IDC_MINDISKSPACE, (MkCfg_Int( wxT("/eMule/MinFreeDiskSpace"), s_uMinFreeDiskSpace, 1 ))); NewCfgItem(IDC_ADDNEWFILESPAUSED, (new Cfg_Bool( wxT("/eMule/AddNewFilesPaused"), s_addnewfilespaused, false ))); NewCfgItem(IDC_PREVIEWPRIO, (new Cfg_Bool( wxT("/eMule/PreviewPrio"), s_bpreviewprio, false ))); NewCfgItem(IDC_MANUALSERVERHIGHPRIO, (new Cfg_Bool( wxT("/eMule/ManualHighPrio"), s_bmanualhighprio, false ))); NewCfgItem(IDC_STARTNEXTFILE, (new Cfg_Bool( wxT("/eMule/StartNextFile"), s_bstartnextfile, false ))); NewCfgItem(IDC_STARTNEXTFILE_SAME, (new Cfg_Bool( wxT("/eMule/StartNextFileSameCat"), s_bstartnextfilesame, false ))); NewCfgItem(IDC_STARTNEXTFILE_ALPHA, (new Cfg_Bool( wxT("/eMule/StartNextFileAlpha"), s_bstartnextfilealpha, false ))); NewCfgItem(IDC_SRCSEEDS, (new Cfg_Bool( wxT("/ExternalConnect/UseSrcSeeds"), s_UseSrcSeeds, false ))); NewCfgItem(IDC_FILEBUFFERSIZE, (MkCfg_Int( wxT("/eMule/FileBufferSizePref"), s_iFileBufferSize, 16 ))); NewCfgItem(IDC_DAP, (new Cfg_Bool( wxT("/eMule/DAPPref"), s_bDAP, true ))); NewCfgItem(IDC_UAP, (new Cfg_Bool( wxT("/eMule/UAPPref"), s_bUAP, true ))); NewCfgItem(IDC_ALLOCFULLFILE, (new Cfg_Bool( wxT("/eMule/AllocateFullFile"), s_allocFullFile, false ))); /** * Web Server */ NewCfgItem(IDC_OSDIR, (new Cfg_Path( wxT("/eMule/OSDirectory"), s_OSDirectory, appdir ))); NewCfgItem(IDC_ONLINESIG, (new Cfg_Bool( wxT("/eMule/OnlineSignature"), s_onlineSig, false ))); NewCfgItem(IDC_OSUPDATE, (MkCfg_Int( wxT("/eMule/OnlineSignatureUpdate"), s_OSUpdate, 5 ))); NewCfgItem(IDC_ENABLE_WEB, (new Cfg_Bool( wxT("/WebServer/Enabled"), s_bWebEnabled, false ))); NewCfgItem(IDC_WEB_PASSWD, (new Cfg_Str_Encrypted( wxT("/WebServer/Password"), s_sWebPassword ))); NewCfgItem(IDC_WEB_PASSWD_LOW, (new Cfg_Str_Encrypted( wxT("/WebServer/PasswordLow"), s_sWebLowPassword ))); NewCfgItem(IDC_WEB_PORT, (MkCfg_Int( wxT("/WebServer/Port"), s_nWebPort, 4711 ))); NewCfgItem(IDC_WEBUPNPTCPPORT, (MkCfg_Int( wxT("/WebServer/WebUPnPTCPPort"), s_nWebUPnPTCPPort, 50001 ))); NewCfgItem(IDC_UPNP_WEBSERVER_ENABLED, (new Cfg_Bool( wxT("/WebServer/UPnPWebServerEnabled"), s_UPnPWebServerEnabled, false ))); NewCfgItem(IDC_WEB_GZIP, (new Cfg_Bool( wxT("/WebServer/UseGzip"), s_bWebUseGzip, true ))); NewCfgItem(IDC_ENABLE_WEB_LOW, (new Cfg_Bool( wxT("/WebServer/UseLowRightsUser"), s_bWebLowEnabled, false ))); NewCfgItem(IDC_WEB_REFRESH_TIMEOUT, (MkCfg_Int( wxT("/WebServer/PageRefreshTime"), s_nWebPageRefresh, 120 ))); NewCfgItem(IDC_WEBTEMPLATE, (new Cfg_Skin( wxT("/WebServer/Template"), s_WebTemplate, wxEmptyString ))); /** * External Connections */ NewCfgItem(IDC_EXT_CONN_ACCEPT, (new Cfg_Bool( wxT("/ExternalConnect/AcceptExternalConnections"), s_AcceptExternalConnections, false ))); NewCfgItem(IDC_EXT_CONN_IP, (new Cfg_Str( wxT("/ExternalConnect/ECAddress"), s_ECAddr, wxEmptyString ))); NewCfgItem(IDC_EXT_CONN_TCP_PORT, (MkCfg_Int( wxT("/ExternalConnect/ECPort"), s_ECPort, 4712 ))); NewCfgItem(IDC_EXT_CONN_PASSWD, (new Cfg_Str_Encrypted( wxT("/ExternalConnect/ECPassword"), s_ECPassword, wxEmptyString ))); NewCfgItem(IDC_UPNP_EC_ENABLED, (new Cfg_Bool( wxT("/ExternalConnect/UPnPECEnabled"), s_UPnPECEnabled, false ))); /** * GUI behavior **/ NewCfgItem(IDC_MACHIDEONCLOSE, (new Cfg_Bool( wxT("/GUI/HideOnClose"), s_hideonclose, false ))); NewCfgItem(IDC_ENABLETRAYICON, (new Cfg_Bool( wxT("/eMule/EnableTrayIcon"), s_trayiconenabled, false ))); NewCfgItem(IDC_MINTRAY, (new Cfg_Bool( wxT("/eMule/MinToTray"), s_mintotray, false ))); NewCfgItem(IDC_EXIT, (new Cfg_Bool( wxT("/eMule/ConfirmExit"), s_confirmExit, true ))); NewCfgItem(IDC_STARTMIN, (new Cfg_Bool( wxT("/eMule/StartupMinimized"), s_startMinimized, false ))); /** * GUI appearence **/ NewCfgItem(IDC_3DDEPTH, (MkCfg_Int( wxT("/eMule/3DDepth"), s_depth3D, 10 ))); NewCfgItem(IDC_TOOLTIPDELAY, (MkCfg_Int( wxT("/eMule/ToolTipDelay"), s_iToolDelayTime, 1 ))); NewCfgItem(IDC_SHOWOVERHEAD, (new Cfg_Bool( wxT("/eMule/ShowOverhead"), s_bshowoverhead, false ))); NewCfgItem(IDC_EXTCATINFO, (new Cfg_Bool( wxT("/eMule/ShowInfoOnCatTabs"), s_showCatTabInfos, true ))); NewCfgItem(IDC_FED2KLH, (new Cfg_Bool( wxT("/Razor_Preferences/FastED2KLinksHandler"), s_FastED2KLinksHandler, true ))); NewCfgItem(IDC_PROGBAR, (new Cfg_Bool( wxT("/ExternalConnect/ShowProgressBar"), s_ProgBar, true ))); NewCfgItem(IDC_PERCENT, (new Cfg_Bool( wxT("/ExternalConnect/ShowPercent"), s_Percent, true ))); NewCfgItem(IDC_SKIN, (new Cfg_Skin( wxT("/SkinGUIOptions/Skin"), s_Skin, wxEmptyString ))); NewCfgItem(IDC_VERTTOOLBAR, (new Cfg_Bool( wxT("/eMule/VerticalToolbar"), s_ToolbarOrientation, false ))); NewCfgItem(IDC_SHOW_COUNTRY_FLAGS, (new Cfg_Bool( wxT("/eMule/GeoIPEnabled"), s_GeoIPEnabled, true ))); #ifndef __SVN__ NewCfgItem(IDC_SHOWVERSIONONTITLE, (new Cfg_Bool( wxT("/eMule/ShowVersionOnTitle"), s_showVersionOnTitle, false ))); #endif /** * External Apps */ NewCfgItem(IDC_VIDEOPLAYER, (new Cfg_Str( wxT("/eMule/VideoPlayer"), s_VideoPlayer, wxEmptyString ))); /** * Statistics **/ NewCfgItem(IDC_SLIDER, (MkCfg_Int( wxT("/eMule/StatGraphsInterval"), s_trafficOMeterInterval, 3 ))); NewCfgItem(IDC_SLIDER2, (MkCfg_Int( wxT("/eMule/statsInterval"), s_statsInterval, 30 ))); NewCfgItem(IDC_DOWNLOAD_CAP, (MkCfg_Int( wxT("/eMule/DownloadCapacity"), s_maxGraphDownloadRate, 300 ))); NewCfgItem(IDC_UPLOAD_CAP, (MkCfg_Int( wxT("/eMule/UploadCapacity"), s_maxGraphUploadRate, 100 ))); NewCfgItem(IDC_SLIDER3, (MkCfg_Int( wxT("/eMule/StatsAverageMinutes"), s_statsAverageMinutes, 5 ))); NewCfgItem(IDC_SLIDER4, (MkCfg_Int( wxT("/eMule/VariousStatisticsMaxValue"), s_statsMax, 100 ))); NewCfgItem(IDC_CLIENTVERSIONS, (MkCfg_Int( wxT("/Statistics/MaxClientVersions"), s_maxClientVersions, 0 ))); /** * Security **/ NewCfgItem(IDC_SEESHARES, (MkCfg_Int( wxT("/eMule/SeeShare"), s_iSeeShares, 2 ))); NewCfgItem(IDC_SECIDENT, (new Cfg_Bool( wxT("/ExternalConnect/UseSecIdent"), s_SecIdent, true ))); NewCfgItem(IDC_IPFCLIENTS, (new Cfg_Bool( wxT("/ExternalConnect/IpFilterClients"), s_IPFilterClients, true ))); NewCfgItem(IDC_IPFSERVERS, (new Cfg_Bool( wxT("/ExternalConnect/IpFilterServers"), s_IPFilterServers, true ))); NewCfgItem(IDC_FILTERLAN, (new Cfg_Bool( wxT("/eMule/FilterLanIPs"), s_filterLanIP, true ))); NewCfgItem(IDC_PARANOID, (new Cfg_Bool( wxT("/eMule/ParanoidFiltering"), s_paranoidfilter, true ))); NewCfgItem(IDC_AUTOIPFILTER, (new Cfg_Bool( wxT("/eMule/IPFilterAutoLoad"), s_IPFilterAutoLoad, true ))); NewCfgItem(IDC_IPFILTERURL, (new Cfg_Str( wxT("/eMule/IPFilterURL"), s_IPFilterURL, wxEmptyString ))); NewCfgItem(ID_IPFILTERLEVEL, (MkCfg_Int( wxT("/eMule/FilterLevel"), s_filterlevel, 127 ))); NewCfgItem(IDC_IPFILTERSYS, (new Cfg_Bool( wxT("/eMule/IPFilterSystem"), s_IPFilterSys, false ))); /** * Message Filter **/ NewCfgItem(IDC_MSGFILTER, (new Cfg_Bool( wxT("/eMule/FilterMessages"), s_MustFilterMessages, true ))); NewCfgItem(IDC_MSGFILTER_ALL, (new Cfg_Bool( wxT("/eMule/FilterAllMessages"), s_FilterAllMessages, false ))); NewCfgItem(IDC_MSGFILTER_NONFRIENDS, (new Cfg_Bool( wxT("/eMule/MessagesFromFriendsOnly"), s_msgonlyfriends, false ))); NewCfgItem(IDC_MSGFILTER_NONSECURE, (new Cfg_Bool( wxT("/eMule/MessageFromValidSourcesOnly"), s_msgsecure, true ))); NewCfgItem(IDC_MSGFILTER_WORD, (new Cfg_Bool( wxT("/eMule/FilterWordMessages"), s_FilterSomeMessages, false ))); NewCfgItem(IDC_MSGWORD, (new Cfg_Str( wxT("/eMule/MessageFilter"), s_MessageFilterString, wxEmptyString ))); NewCfgItem(IDC_MSGLOG, (new Cfg_Bool( wxT("/eMule/ShowMessagesInLog"), s_ShowMessagesInLog, true ))); //Todo NewCfgItem(IDC_MSGADVSPAM, (new Cfg_Bool( wxT("/eMule/AdvancedSpamFilter"), s_IsAdvancedSpamfilterEnabled, true ))); //Todo NewCfgItem(IDC_MSGCAPTCHA, (new Cfg_Bool( wxT("/eMule/MessageUseCaptchas"), s_IsChatCaptchaEnabled, true ))); s_MiscList.push_back( new Cfg_Bool( wxT("/eMule/AdvancedSpamFilter"), s_IsAdvancedSpamfilterEnabled, true ) ); s_MiscList.push_back( new Cfg_Bool( wxT("/eMule/MessageUseCaptchas"), s_IsChatCaptchaEnabled, true ) ); NewCfgItem(IDC_FILTERCOMMENTS, (new Cfg_Bool( wxT("/eMule/FilterComments"), s_FilterComments, false ))); NewCfgItem(IDC_COMMENTWORD, (new Cfg_Str( wxT("/eMule/CommentFilter"), s_CommentFilterString, wxEmptyString ))); /** * Hidden files sharing **/ NewCfgItem(IDC_SHAREHIDDENFILES, (new Cfg_Bool( wxT("/eMule/ShareHiddenFiles"), s_ShareHiddenFiles, false ))); /** * Auto-Sorting of downloads **/ NewCfgItem(IDC_AUTOSORT, (new Cfg_Bool( wxT("/eMule/AutoSortDownloads"), s_AutoSortDownload, false ))); /** * Version check **/ NewCfgItem(IDC_NEWVERSION, (new Cfg_Bool( wxT("/eMule/NewVersionCheck"), s_NewVersionCheck, true ))); /** * Obfuscation **/ NewCfgItem( IDC_SUPPORT_PO, ( new Cfg_Bool( wxT("/Obfuscation/IsClientCryptLayerSupported"), s_IsClientCryptLayerSupported, true ))); NewCfgItem( IDC_ENABLE_PO_OUTGOING, ( new Cfg_Bool( wxT("/Obfuscation/IsCryptLayerRequested"), s_bCryptLayerRequested, true ))); NewCfgItem( IDC_ENFORCE_PO_INCOMING, ( new Cfg_Bool( wxT("/Obfuscation/IsClientCryptLayerRequired"), s_IsClientCryptLayerRequired, false ))); #ifndef CLIENT_GUI // There is no need for GUI items for this two. s_MiscList.push_back( MkCfg_Int( wxT("/Obfuscation/CryptoPaddingLenght"), s_byCryptTCPPaddingLength, 254 ) ); s_MiscList.push_back( MkCfg_Int( wxT("/Obfuscation/CryptoKadUDPKey"), s_dwKadUDPKey, GetRandomUint32() ) ); #endif /** * Power management **/ NewCfgItem( IDC_PREVENT_SLEEP, ( new Cfg_Bool( wxT("/PowerManagement/PreventSleepWhileDownloading"), s_preventSleepWhileDownloading, false ))); /** * The following doesn't have an associated widget or section **/ s_MiscList.push_back( new Cfg_Str( wxT("/eMule/Language"), s_languageID ) ); s_MiscList.push_back( MkCfg_Int( wxT("/eMule/SplitterbarPosition"), s_splitterbarPosition, 75 ) ); s_MiscList.push_back( new Cfg_Str( wxT("/eMule/YourHostname"), s_yourHostname, wxEmptyString ) ); s_MiscList.push_back( new Cfg_Str( wxT("/eMule/DateTimeFormat"), s_datetimeformat, wxT("%A, %x, %X") ) ); s_MiscList.push_back( MkCfg_Int( wxT("/eMule/AllcatType"), s_allcatFilter, 0 ) ); s_MiscList.push_back( new Cfg_Bool( wxT("/eMule/ShowAllNotCats"), s_showAllNotCats, false ) ); s_MiscList.push_back( MkCfg_Int( wxT("/eMule/SmartIdState"), s_smartidstate, 0 ) ); s_MiscList.push_back( new Cfg_Bool( wxT("/eMule/DropSlowSources"), s_DropSlowSources, false ) ); s_MiscList.push_back( new Cfg_Str( wxT("/eMule/KadNodesUrl"), s_KadURL, wxT("http://upd.emule-security.org/nodes.dat") ) ); s_MiscList.push_back( new Cfg_Str( wxT("/eMule/Ed2kServersUrl"), s_Ed2kURL, wxT("http://upd.emule-security.org/server.met") ) ); s_MiscList.push_back( MkCfg_Int( wxT("/eMule/ShowRatesOnTitle"), s_showRatesOnTitle, 0 )); s_MiscList.push_back( new Cfg_Str( wxT("/eMule/GeoLiteCountryUpdateUrl"), s_GeoIPUpdateUrl, wxT("http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz") ) ); wxConfigBase::Get()->DeleteEntry(wxT("/eMule/GeoIPUpdateUrl")); // get rid of the old one for a while s_MiscList.push_back( new Cfg_Str( wxT("/WebServer/Path"), s_sWebPath, wxT("amuleweb") ) ); s_MiscList.push_back( new Cfg_Str( wxT("/eMule/StatsServerName"), s_StatsServerName, wxT("Shorty's ED2K stats") ) ); s_MiscList.push_back( new Cfg_Str( wxT("/eMule/StatsServerURL"), s_StatsServerURL, wxT("http://ed2k.shortypower.dyndns.org/?hash=") ) ); s_MiscList.push_back( new Cfg_Bool( wxT("/ExternalConnect/TransmitOnlyUploadingClients"), s_TransmitOnlyUploadingClients, false ) ); #ifndef AMULE_DAEMON // Colors have been moved from global prefs to CStatisticsDlg for ( int i = 0; i < cntStatColors; i++ ) { wxString str = CFormat(wxT("/eMule/StatColor%i")) % i; s_MiscList.push_back( new Cfg_Colour( str, CStatisticsDlg::acrStat[i] ) ); } #endif // User events for (unsigned int i = 0; i < CUserEvents::GetCount(); ++i) { // We can't use NewCfgItem here, because we need to find these items // later, which would be impossible in amuled with NewCfgItem. // The IDs we assign here are high enough to not cause any collision // even on the daemon. s_CfgList[USEREVENTS_FIRST_ID + i * USEREVENTS_IDS_PER_EVENT + 1] = new Cfg_Bool(wxT("/UserEvents/") + CUserEvents::GetKey(i) + wxT("/CoreEnabled"), CUserEvents::GetCoreEnableVar(i), false); s_CfgList[USEREVENTS_FIRST_ID + i * USEREVENTS_IDS_PER_EVENT + 2] = new Cfg_Str(wxT("/UserEvents/") + CUserEvents::GetKey(i) + wxT("/CoreCommand"), CUserEvents::GetCoreCommandVar(i), wxEmptyString); s_CfgList[USEREVENTS_FIRST_ID + i * USEREVENTS_IDS_PER_EVENT + 3] = new Cfg_Bool(wxT("/UserEvents/") + CUserEvents::GetKey(i) + wxT("/GUIEnabled"), CUserEvents::GetGUIEnableVar(i), false); s_CfgList[USEREVENTS_FIRST_ID + i * USEREVENTS_IDS_PER_EVENT + 4] = new Cfg_Str(wxT("/UserEvents/") + CUserEvents::GetKey(i) + wxT("/GUICommand"), CUserEvents::GetGUICommandVar(i), wxEmptyString); } } void CPreferences::EraseItemList() { while ( s_CfgList.begin() != s_CfgList.end() ) { delete s_CfgList.begin()->second; s_CfgList.erase( s_CfgList.begin() ); } CFGList::iterator it = s_MiscList.begin(); for ( ; it != s_MiscList.end(); ) { delete *it; it = s_MiscList.erase( it ); } } void CPreferences::LoadAllItems(wxConfigBase* cfg) { #ifndef CLIENT_GUI // Preserve values from old config. The global config object may not be set yet // when BuildItemList() is called, so we need to provide defaults later - here. if (cfg->HasEntry(wxT("/eMule/ExecOnCompletion"))) { bool ExecOnCompletion; cfg->Read(wxT("/eMule/ExecOnCompletion"), &ExecOnCompletion, false); // Assign to core command, that's the most likely it was. static_cast(s_CfgList[USEREVENTS_FIRST_ID + CUserEvents::DownloadCompleted * USEREVENTS_IDS_PER_EVENT + 1])->SetDefault(ExecOnCompletion); cfg->DeleteEntry(wxT("/eMule/ExecOnCompletion")); } if (cfg->HasEntry(wxT("/eMule/ExecOnCompletionCommand"))) { wxString ExecOnCompletionCommand; cfg->Read(wxT("/eMule/ExecOnCompletionCommand"), &ExecOnCompletionCommand, wxEmptyString); static_cast(s_CfgList[USEREVENTS_FIRST_ID + CUserEvents::DownloadCompleted * USEREVENTS_IDS_PER_EVENT + 2])->SetDefault(ExecOnCompletionCommand); cfg->DeleteEntry(wxT("/eMule/ExecOnCompletionCommand")); } #endif CFGMap::iterator it_a = s_CfgList.begin(); for ( ; it_a != s_CfgList.end(); ++it_a ) { it_a->second->LoadFromFile( cfg ); } CFGList::iterator it_b = s_MiscList.begin(); for ( ; it_b != s_MiscList.end(); ++it_b ) { (*it_b)->LoadFromFile( cfg ); } // Preserve old value of UDPDisable if (cfg->HasEntry(wxT("/eMule/UDPDisable"))) { bool UDPDisable; cfg->Read(wxT("/eMule/UDPDisable"), &UDPDisable, false); SetUDPDisable(UDPDisable); cfg->DeleteEntry(wxT("/eMule/UDPDisable")); } // Preserve old value of UseSkinFiles if (cfg->HasEntry(wxT("/SkinGUIOptions/UseSkinFiles"))) { bool UseSkinFiles; cfg->Read(wxT("/SkinGUIOptions/UseSkinFiles"), &UseSkinFiles, false); if (!UseSkinFiles) { s_Skin.Clear(); } cfg->DeleteEntry(wxT("/SkinGUIOptions/UseSkinFiles")); } #ifdef __DEBUG__ // Load debug-categories int count = theLogger.GetDebugCategoryCount(); for ( int i = 0; i < count; i++ ) { const CDebugCategory& cat = theLogger.GetDebugCategory( i ); bool enabled = false; cfg->Read( wxT("/Debug/Cat_") + cat.GetName(), &enabled ); theLogger.SetEnabled( cat.GetType(), enabled ); } #endif // Now do some post-processing / sanity checking on the values we just loaded #ifndef CLIENT_GUI CheckUlDlRatio(); SetPort(s_port); if (s_byCryptTCPPaddingLength > 254) { s_byCryptTCPPaddingLength = GetRandomUint8() % 254; } SetSlotAllocation(s_slotallocation); #endif } void CPreferences::SaveAllItems(wxConfigBase* cfg) { // Save the Cfg values CFGMap::iterator it_a = s_CfgList.begin(); for ( ; it_a != s_CfgList.end(); ++it_a ) it_a->second->SaveToFile( cfg ); CFGList::iterator it_b = s_MiscList.begin(); for ( ; it_b != s_MiscList.end(); ++it_b ) (*it_b)->SaveToFile( cfg ); // Save debug-categories #ifdef __DEBUG__ int count = theLogger.GetDebugCategoryCount(); for ( int i = 0; i < count; i++ ) { const CDebugCategory& cat = theLogger.GetDebugCategory( i ); cfg->Write( wxT("/Debug/Cat_") + cat.GetName(), cat.IsEnabled() ); } #endif } void CPreferences::SetMaxUpload(uint16 in) { if ( s_maxupload != in ) { s_maxupload = in; // Ensure that the ratio is upheld CheckUlDlRatio(); } } void CPreferences::SetMaxDownload(uint16 in) { if ( s_maxdownload != in ) { s_maxdownload = in; // Ensure that the ratio is upheld CheckUlDlRatio(); } } void CPreferences::UnsetAutoServerStart() { s_autoserverlist = false; } // Here we slightly limit the users' ability to be a bad citizen: for very low upload rates // we force a low download rate, so as to discourage this type of leeching. // We're Open Source, and whoever wants it can do his own mod to get around this, but the // packaged product will try to enforce good behavior. // // Kry note: of course, any leecher mod will be banned asap. void CPreferences::CheckUlDlRatio() { // Backwards compatibility if ( s_maxupload == 0xFFFF ) s_maxupload = UNLIMITED; // Backwards compatibility if ( s_maxdownload == 0xFFFF ) s_maxdownload = UNLIMITED; if ( s_maxupload == UNLIMITED ) return; // Enforce the limits if ( s_maxupload < 4 ) { if ( ( s_maxupload * 3 < s_maxdownload ) || ( s_maxdownload == 0 ) ) s_maxdownload = s_maxupload * 3 ; } else if ( s_maxupload < 10 ) { if ( ( s_maxupload * 4 < s_maxdownload ) || ( s_maxdownload == 0 ) ) s_maxdownload = s_maxupload * 4; } } void CPreferences::Save() { wxString fullpath(s_configDir + wxT("preferences.dat")); CFile preffile; if (!wxFileExists(fullpath)) { preffile.Create(fullpath); } if (preffile.Open(fullpath, CFile::read_write)) { try { preffile.WriteUInt8(PREFFILE_VERSION); preffile.WriteHash(s_userhash); } catch (const CIOFailureException& e) { AddDebugLogLineC(logGeneral, wxT("IO failure while saving user-hash: ") + e.what()); } } SavePreferences(); #ifndef CLIENT_GUI CTextFile sdirfile; if (sdirfile.Open(s_configDir + wxT("shareddir.dat"), CTextFile::write)) { for (size_t i = 0; i < shareddir_list.size(); ++i) { sdirfile.WriteLine(CPath::ToUniv(shareddir_list[i]), wxConvUTF8); } } #endif } CPreferences::~CPreferences() { DeleteContents(m_CatList); } int32 CPreferences::GetRecommendedMaxConnections() { #ifndef CLIENT_GUI int iRealMax = PlatformSpecific::GetMaxConnections(); if(iRealMax == -1 || iRealMax > 520) { return 500; } if(iRealMax < 20) { return iRealMax; } if(iRealMax <= 256) { return iRealMax - 10; } return iRealMax - 20; #else return 500; #endif } void CPreferences::SavePreferences() { wxConfigBase* cfg = wxConfigBase::Get(); cfg->Write( wxT("/eMule/AppVersion"), wxT(VERSION) ); // Save the options SaveAllItems( cfg ); // Ensure that the changes are saved to disk. cfg->Flush(); } void CPreferences::SaveCats() { if ( GetCatCount() ) { wxConfigBase* cfg = wxConfigBase::Get(); // Save the main cat. cfg->Write( wxT("/eMule/AllcatType"), (int)s_allcatFilter); // The first category is the default one and should not be counted cfg->Write( wxT("/General/Count"), (long)(m_CatList.size() - 1) ); uint32 maxcat = m_CatList.size(); for (uint32 i = 1; i < maxcat; i++) { cfg->SetPath(CFormat(wxT("/Cat#%i")) % i); cfg->Write( wxT("Title"), m_CatList[i]->title ); cfg->Write( wxT("Incoming"), CPath::ToUniv(m_CatList[i]->path) ); cfg->Write( wxT("Comment"), m_CatList[i]->comment ); cfg->Write( wxT("Color"), wxString(CFormat(wxT("%u")) % m_CatList[i]->color)); cfg->Write( wxT("Priority"), (int)m_CatList[i]->prio ); } // remove deleted cats from config while (cfg->DeleteGroup(CFormat(wxT("/Cat#%i")) % maxcat++)) {} cfg->Flush(); } } void CPreferences::LoadPreferences() { LoadCats(); } void CPreferences::LoadCats() { // default cat ... Meow! =(^.^)= Category_Struct* defaultcat = new Category_Struct; defaultcat->prio = 0; defaultcat->color = 0; AddCat( defaultcat ); wxConfigBase* cfg = wxConfigBase::Get(); long max = cfg->Read( wxT("/General/Count"), 0l ); for ( int i = 1; i <= max ; i++ ) { cfg->SetPath(CFormat(wxT("/Cat#%i")) % i); Category_Struct* newcat = new Category_Struct; newcat->title = cfg->Read( wxT("Title"), wxEmptyString ); newcat->path = CPath::FromUniv(cfg->Read(wxT("Incoming"), wxEmptyString)); // Some sanity checking if ( newcat->title.IsEmpty() || !newcat->path.IsOk() ) { AddLogLineN(_("Invalid category found, skipping")); delete newcat; continue; } newcat->comment = cfg->Read( wxT("Comment"), wxEmptyString ); newcat->prio = cfg->Read( wxT("Priority"), 0l ); newcat->color = StrToULong(cfg->Read(wxT("Color"), wxT("0"))); AddCat(newcat); if (!newcat->path.DirExists()) { CPath::MakeDir(newcat->path); } } } uint16 CPreferences::GetDefaultMaxConperFive() { return MAXCONPER5SEC; } uint32 CPreferences::AddCat(Category_Struct* cat) { m_CatList.push_back( cat ); return m_CatList.size() - 1; } void CPreferences::RemoveCat(size_t index) { if ( index < m_CatList.size() ) { CatList::iterator it = m_CatList.begin() + index; delete *it; m_CatList.erase( it ); // remove cat directory from shares theApp->sharedfiles->Reload(); } } uint32 CPreferences::GetCatCount() { return m_CatList.size(); } Category_Struct* CPreferences::GetCategory(size_t index) { wxASSERT( index < m_CatList.size() ); return m_CatList[index]; } const CPath& CPreferences::GetCatPath(uint8 index) { wxASSERT( index < m_CatList.size() ); return m_CatList[index]->path; } uint32 CPreferences::GetCatColor(size_t index) { wxASSERT( index < m_CatList.size() ); return m_CatList[index]->color; } bool CPreferences::CreateCategory( Category_Struct *& category, const wxString& name, const CPath& path, const wxString& comment, uint32 color, uint8 prio) { category = new Category_Struct(); category->path = thePrefs::GetIncomingDir(); // set a default in case path is invalid uint32 cat = AddCat(category); return UpdateCategory(cat, name, path, comment, color, prio); } bool CPreferences::UpdateCategory( uint8 cat, const wxString& name, const CPath& path, const wxString& comment, uint32 color, uint8 prio) { Category_Struct *category = m_CatList[cat]; // return true if path is ok, false if not bool ret = true; if (!path.IsOk() || (!path.DirExists() && !CPath::MakeDir(path))) { ret = false; // keep path as it was } else if (category->path != path) { // path changed: reload shared files, adding files in the new path and removing those from the old path category->path = path; theApp->sharedfiles->Reload(); } category->title = name; category->comment = comment; category->color = color; category->prio = prio; SaveCats(); return ret; } wxString CPreferences::GetBrowser() { wxString cmd(s_CustomBrowser); #ifndef __WINDOWS__ if( s_BrowserTab ) { // This is certainly not the best way to do it, but I'm lazy if ((wxT("mozilla") == cmd.Right(7)) || (wxT("firefox") == cmd.Right(7)) || (wxT("MozillaFirebird") == cmd.Right(15))) { cmd += wxT(" -remote 'openURL(%s, new-tab)'"); } if ((wxT("galeon") == cmd.Right(6)) || (wxT("epiphany") == cmd.Right(8))) { cmd += wxT(" -n '%s'"); } if (wxT("opera") == cmd.Right(5)) { cmd += wxT(" --newpage '%s'"); } if (wxT("netscape") == cmd.Right(8)) { cmd += wxT(" -remote 'openURLs(%s,new-tab)'"); } } #endif /* !__WINDOWS__ */ return cmd; } void CPreferences::SetFilteringClients(bool val) { if (val != s_IPFilterClients) { s_IPFilterClients = val; if (val) { theApp->clientlist->FilterQueues(); } } } void CPreferences::SetFilteringServers(bool val) { if (val != s_IPFilterServers) { s_IPFilterServers = val; if (val) { theApp->serverlist->FilterServers(); } } } void CPreferences::SetIPFilterLevel(uint8 level) { if (level != s_filterlevel) { // Set the new access-level s_filterlevel = level; #ifndef CLIENT_GUI // and reload the filter NotifyAlways_IPFilter_Reload(); #endif } } void CPreferences::SetPort(uint16 val) { // Warning: Check for +3, because server UDP is TCP+3 if (val +3 > 65535) { AddLogLineC(_("TCP port can't be higher than 65532 due to server UDP socket being TCP+3")); AddLogLineN(CFormat(_("Default port will be used (%d)")) % DEFAULT_TCP_PORT); s_port = DEFAULT_TCP_PORT; } else { s_port = val; } } void CPreferences::ReloadSharedFolders() { #ifndef CLIENT_GUI shareddir_list.clear(); CTextFile file; if (file.Open(s_configDir + wxT("shareddir.dat"), CTextFile::read)) { wxArrayString lines = file.ReadLines(txtReadDefault, wxConvUTF8); for (size_t i = 0; i < lines.size(); ++i) { CPath path = CPath::FromUniv(lines[i]); if (path.DirExists()) { shareddir_list.push_back(path); } else { AddLogLineN(CFormat(_("Dropping non-existing shared directory: %s")) % path.GetRaw()); } } } #endif } bool CPreferences::IsMessageFiltered(const wxString& message) { if (s_FilterAllMessages) { return true; } else { if (s_FilterSomeMessages) { if (s_MessageFilterString.IsSameAs(wxT("*"))){ // Filter anything return true; } else { wxStringTokenizer tokenizer( s_MessageFilterString, wxT(",") ); while (tokenizer.HasMoreTokens()) { if ( message.Lower().Trim(false).Trim(true).Contains( tokenizer.GetNextToken().Lower().Trim(false).Trim(true))) { return true; } } return false; } } else { return false; } } } bool CPreferences::IsCommentFiltered(const wxString& comment) { if (s_FilterComments) { wxStringTokenizer tokenizer( s_CommentFilterString, wxT(",") ); while (tokenizer.HasMoreTokens()) { if ( comment.Lower().Trim(false).Trim(true).Contains( tokenizer.GetNextToken().Lower().Trim(false).Trim(true))) { return true; } } } return false; } wxString CPreferences::GetLastHTTPDownloadURL(uint8 t) { wxConfigBase* cfg = wxConfigBase::Get(); wxString key = CFormat(wxT("/HTTPDownload/URL_%d")) % t; return cfg->Read(key, wxEmptyString); } void CPreferences::SetLastHTTPDownloadURL(uint8 t, const wxString& val) { wxConfigBase* cfg = wxConfigBase::Get(); wxString key = CFormat(wxT("/HTTPDownload/URL_%d")) % t; cfg->Write(key, val); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Preferences.h0000644000175000017500000007327512611472361020722 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef PREFERENCES_H #define PREFERENCES_H #include "MD4Hash.h" // Needed for CMD4Hash #include // Needed for wxArrayString #include #include "Proxy.h" #include "OtherStructs.h" #include // Needed for __SVN__ class CPreferences; class wxConfigBase; class wxWindow; enum EViewSharedFilesAccess { vsfaEverybody = 0, vsfaFriends = 1, vsfaNobody = 2 }; enum AllCategoryFilter { acfAll = 0, acfAllOthers, acfIncomplete, acfCompleted, acfWaiting, acfDownloading, acfErroneous, acfPaused, acfStopped, acfVideo, acfAudio, acfArchive, acfCDImages, acfPictures, acfText, acfActive }; /** * Base-class for automatically loading and saving of preferences. * * The purpose of this class is to perform two tasks: * 1) To load and save a variable using wxConfig * 2) If nescecarry, to syncronize it with a widget * * This pure-virtual class servers as the base of all the Cfg types * defined below, and exposes the entire interface. * * Please note that for reasons of simplicity these classes dont provide * direct access to the variables they maintain, as there is no real need * for this. * * To create a sub-class you need only provide the Load/Save functionality, * as it is given that not all variables have a widget assosiated. */ class Cfg_Base { public: /** * Constructor. * * @param keyname This is the keyname under which the variable is to be saved. */ Cfg_Base( const wxString& keyname ) : m_key( keyname ), m_changed( false ) {} /** * Destructor. */ virtual ~Cfg_Base() {} /** * This function loads the assosiated variable from the provided config object. */ virtual void LoadFromFile(wxConfigBase* cfg) = 0; /** * This function saves the assosiated variable to the provided config object. */ virtual void SaveToFile(wxConfigBase* cfg) = 0; /** * Syncs the variable with the contents of the widget. * * @return True of success, false otherwise. */ virtual bool TransferFromWindow() { return false; } /** * Syncs the widget with the contents of the variable. * * @return True of success, false otherwise. */ virtual bool TransferToWindow() { return false; } /** * Connects a widget with the specified ID to the Cfg object. * * @param id The ID of the widget. * @param parent A pointer to the widgets parent, to speed up searches. * @return True on success, false otherwise. * * This function only makes sense for Cfg-classes that have the capability * to interact with a widget, see Cfg_Tmpl::ConnectToWidget(). */ virtual bool ConnectToWidget( int WXUNUSED(id), wxWindow* WXUNUSED(parent) = NULL ) { return false; } /** * Gets the key assosiated with Cfg object. * * @return The config-key of this object. */ virtual const wxString& GetKey() { return m_key; } /** * Specifies if the variable has changed since the TransferFromWindow() call. * * @return True if the variable has changed, false otherwise. */ virtual bool HasChanged() { return m_changed; } protected: /** * Sets the changed status. * * @param changed The new status. */ virtual void SetChanged( bool changed ) { m_changed = changed; }; private: //! The Config-key under which to save the variable wxString m_key; //! The changed-status of the variable bool m_changed; }; class Cfg_Lang_Base { public: virtual void UpdateChoice(int pos); }; const int cntStatColors = 15; //! This typedef is a shortcut similar to the theApp shortcut, but uses :: instead of . //! It only allows access to static preference functions, however this is to be desired anyway. typedef CPreferences thePrefs; class CPreferences { public: friend class PrefsUnifiedDlg; CPreferences(); ~CPreferences(); void Save(); void SaveCats(); void ReloadSharedFolders(); static const wxString& GetConfigDir() { return s_configDir; } static void SetConfigDir(const wxString& dir) { s_configDir = dir; } static bool Score() { return s_scorsystem; } static void SetScoreSystem(bool val) { s_scorsystem = val; } static bool Reconnect() { return s_reconnect; } static void SetReconnect(bool val) { s_reconnect = val; } static bool DeadServer() { return s_deadserver; } static void SetDeadServer(bool val) { s_deadserver = val; } static const wxString& GetUserNick() { return s_nick; } static void SetUserNick(const wxString& nick) { s_nick = nick; } static Cfg_Lang_Base * GetCfgLang() { return s_cfgLang; } static const wxString& GetAddress() { return s_Addr; } static uint16 GetPort() { return s_port; } static void SetPort(uint16 val); static uint16 GetUDPPort() { return s_udpport; } static uint16 GetEffectiveUDPPort() { return s_UDPEnable ? s_udpport : 0; } static void SetUDPPort(uint16 val) { s_udpport = val; } static bool IsUDPDisabled() { return !s_UDPEnable; } static void SetUDPDisable(bool val) { s_UDPEnable = !val; } static const CPath& GetIncomingDir() { return s_incomingdir; } static void SetIncomingDir(const CPath& dir){ s_incomingdir = dir; } static const CPath& GetTempDir() { return s_tempdir; } static void SetTempDir(const CPath& dir) { s_tempdir = dir; } static const CMD4Hash& GetUserHash() { return s_userhash; } static void SetUserHash(const CMD4Hash& h) { s_userhash = h; } static uint16 GetMaxUpload() { return s_maxupload; } static uint16 GetSlotAllocation() { return s_slotallocation; } static bool IsICHEnabled() { return s_ICH; } static void SetICHEnabled(bool val) { s_ICH = val; } static bool IsTrustingEveryHash() { return s_AICHTrustEveryHash; } static void SetTrustingEveryHash(bool val) { s_AICHTrustEveryHash = val; } static bool AutoServerlist() { return s_autoserverlist; } static void SetAutoServerlist(bool val) { s_autoserverlist = val; } static bool DoMinToTray() { return s_mintotray; } static void SetMinToTray(bool val) { s_mintotray = val; } static bool UseTrayIcon() { return s_trayiconenabled; } static void SetUseTrayIcon(bool val) { s_trayiconenabled = val; } static bool HideOnClose() { return s_hideonclose; } static void SetHideOnClose(bool val) { s_hideonclose = val; } static bool DoAutoConnect() { return s_autoconnect; } static void SetAutoConnect(bool inautoconnect) {s_autoconnect = inautoconnect; } static bool AddServersFromServer() { return s_addserversfromserver; } static void SetAddServersFromServer(bool val) { s_addserversfromserver = val; } static bool AddServersFromClient() { return s_addserversfromclient; } static void SetAddServersFromClient(bool val) { s_addserversfromclient = val; } static uint16 GetTrafficOMeterInterval() { return s_trafficOMeterInterval; } static void SetTrafficOMeterInterval(uint16 in) { s_trafficOMeterInterval = in; } static uint16 GetStatsInterval() { return s_statsInterval;} static void SetStatsInterval(uint16 in) { s_statsInterval = in; } static bool IsConfirmExitEnabled() { return s_confirmExit; } static bool FilterLanIPs() { return s_filterLanIP; } static void SetFilterLanIPs(bool val) { s_filterLanIP = val; } static bool ParanoidFilter() { return s_paranoidfilter; } static void SetParanoidFilter(bool val) { s_paranoidfilter = val; } static bool IsOnlineSignatureEnabled() { return s_onlineSig; } static void SetOnlineSignatureEnabled(bool val) { s_onlineSig = val; } static uint32 GetMaxGraphUploadRate() { return s_maxGraphUploadRate; } static uint32 GetMaxGraphDownloadRate() { return s_maxGraphDownloadRate; } static void SetMaxGraphUploadRate(uint32 in){ s_maxGraphUploadRate=in; } static void SetMaxGraphDownloadRate(uint32 in) { s_maxGraphDownloadRate = in; } static uint16 GetMaxDownload() { return s_maxdownload; } static uint16 GetMaxConnections() { return s_maxconnections; } static uint16 GetMaxSourcePerFile() { return s_maxsourceperfile; } static uint16 GetMaxSourcePerFileSoft() { uint16 temp = (uint16)(s_maxsourceperfile*0.9); if( temp > 1000 ) return 1000; return temp; } static uint16 GetMaxSourcePerFileUDP() { uint16 temp = (uint16)(s_maxsourceperfile*0.75); if( temp > 100 ) return 100; return temp; } static uint16 GetDeadserverRetries() { return s_deadserverretries; } static void SetDeadserverRetries(uint16 val) { s_deadserverretries = val; } static uint32 GetServerKeepAliveTimeout() { return s_dwServerKeepAliveTimeoutMins*60000; } static void SetServerKeepAliveTimeout(uint32 val) { s_dwServerKeepAliveTimeoutMins = val/60000; } static const wxString& GetLanguageID() { return s_languageID; } static void SetLanguageID(const wxString& new_id) { s_languageID = new_id; } static uint8 CanSeeShares() { return s_iSeeShares; } static void SetCanSeeShares(uint8 val) { s_iSeeShares = val; } static uint8 GetStatsMax() { return s_statsMax; } static bool UseFlatBar() { return (s_depth3D==0); } static uint8 GetStatsAverageMinutes() { return s_statsAverageMinutes; } static void SetStatsAverageMinutes(uint8 in){ s_statsAverageMinutes = in; } static bool GetStartMinimized() { return s_startMinimized; } static void SetStartMinimized(bool instartMinimized) { s_startMinimized = instartMinimized;} static bool GetSmartIdCheck() { return s_smartidcheck; } static void SetSmartIdCheck( bool in_smartidcheck ) { s_smartidcheck = in_smartidcheck; } static uint8 GetSmartIdState() { return s_smartidstate; } static void SetSmartIdState( uint8 in_smartidstate ) { s_smartidstate = in_smartidstate; } static bool GetVerbose() { return s_bVerbose; } static void SetVerbose(bool val) { s_bVerbose = val; } static bool GetVerboseLogfile() { return s_bVerboseLogfile; } static void SetVerboseLogfile(bool val) { s_bVerboseLogfile = val; } static bool GetPreviewPrio() { return s_bpreviewprio; } static void SetPreviewPrio(bool in) { s_bpreviewprio = in; } static bool StartNextFile() { return s_bstartnextfile; } static bool StartNextFileSame() { return s_bstartnextfilesame; } static bool StartNextFileAlpha() { return s_bstartnextfilealpha; } static void SetStartNextFile(bool val) { s_bstartnextfile = val; } static void SetStartNextFileSame(bool val) { s_bstartnextfilesame = val; } static void SetStartNextFileAlpha(bool val) { s_bstartnextfilealpha = val; } static bool ShowOverhead() { return s_bshowoverhead; } static void SetNewAutoUp(bool m_bInUAP) { s_bUAP = m_bInUAP; } static bool GetNewAutoUp() { return s_bUAP; } static void SetNewAutoDown(bool m_bInDAP) { s_bDAP = m_bInDAP; } static bool GetNewAutoDown() { return s_bDAP; } static const wxString& GetVideoPlayer() { return s_VideoPlayer; } static uint32 GetFileBufferSize() { return s_iFileBufferSize*15000; } static void SetFileBufferSize(uint32 val) { s_iFileBufferSize = val/15000; } static uint32 GetQueueSize() { return s_iQueueSize*100; } static void SetQueueSize(uint32 val) { s_iQueueSize = val/100; } static uint8 Get3DDepth() { return s_depth3D;} static bool AddNewFilesPaused() { return s_addnewfilespaused; } static void SetAddNewFilesPaused(bool val) { s_addnewfilespaused = val; } static void SetMaxConsPerFive(int in) { s_MaxConperFive=in; } static uint16 GetMaxConperFive() { return s_MaxConperFive; } static uint16 GetDefaultMaxConperFive(); static bool IsSafeServerConnectEnabled() { return s_safeServerConnect; } static void SetSafeServerConnectEnabled(bool val) { s_safeServerConnect = val; } static bool IsCheckDiskspaceEnabled() { return s_checkDiskspace; } static void SetCheckDiskspaceEnabled(bool val) { s_checkDiskspace = val; } static uint32 GetMinFreeDiskSpaceMB() { return s_uMinFreeDiskSpace; } static uint64 GetMinFreeDiskSpace() { return s_uMinFreeDiskSpace * 1048576ull; } static void SetMinFreeDiskSpaceMB(uint32 val) { s_uMinFreeDiskSpace = val; } static const wxString& GetYourHostname() { return s_yourHostname; } static void SetYourHostname(const wxString& s) { s_yourHostname = s; } static void SetMaxUpload(uint16 in); static void SetMaxDownload(uint16 in); static void SetSlotAllocation(uint16 in) { s_slotallocation = (in >= 1) ? in : 1; }; typedef std::vector PathList; PathList shareddir_list; wxArrayString adresses_list; static bool AutoConnectStaticOnly() { return s_autoconnectstaticonly; } static void SetAutoConnectStaticOnly(bool val) { s_autoconnectstaticonly = val; } static bool GetUPnPEnabled() { return s_UPnPEnabled; } static void SetUPnPEnabled(bool val) { s_UPnPEnabled = val; } static bool GetUPnPECEnabled() { return s_UPnPECEnabled; } static void SetUPnPECEnabled(bool val) { s_UPnPECEnabled = val; } static bool GetUPnPWebServerEnabled() { return s_UPnPWebServerEnabled; } static void SetUPnPWebServerEnabled(bool val){ s_UPnPWebServerEnabled = val; } static uint16 GetUPnPTCPPort() { return s_UPnPTCPPort; } static void SetUPnPTCPPort(uint16 val) { s_UPnPTCPPort = val; } static bool IsManualHighPrio() { return s_bmanualhighprio; } static void SetManualHighPrio(bool val) { s_bmanualhighprio = val; } void LoadCats(); static const wxString& GetDateTimeFormat() { return s_datetimeformat; } // Download Categories uint32 AddCat(Category_Struct* cat); void RemoveCat(size_t index); uint32 GetCatCount(); Category_Struct* GetCategory(size_t index); const CPath& GetCatPath(uint8 index); uint32 GetCatColor(size_t index); bool CreateCategory(Category_Struct *& category, const wxString& name, const CPath& path, const wxString& comment, uint32 color, uint8 prio); bool UpdateCategory(uint8 cat, const wxString& name, const CPath& path, const wxString& comment, uint32 color, uint8 prio); static AllCategoryFilter GetAllcatFilter() { return s_allcatFilter; } static void SetAllcatFilter(AllCategoryFilter in) { s_allcatFilter = in; } static bool ShowAllNotCats() { return s_showAllNotCats; } // WebServer static uint16 GetWSPort() { return s_nWebPort; } static void SetWSPort(uint16 uPort) { s_nWebPort=uPort; } static uint16 GetWebUPnPTCPPort() { return s_nWebUPnPTCPPort; } static void SetWebUPnPTCPPort(uint16 val) { s_nWebUPnPTCPPort = val; } static const wxString& GetWSPass() { return s_sWebPassword; } static void SetWSPass(const wxString& pass) { s_sWebPassword = pass; } static const wxString& GetWSPath() { return s_sWebPath; } static void SetWSPath(const wxString& path) { s_sWebPath = path; } static bool GetWSIsEnabled() { return s_bWebEnabled; } static void SetWSIsEnabled(bool bEnable) { s_bWebEnabled=bEnable; } static bool GetWebUseGzip() { return s_bWebUseGzip; } static void SetWebUseGzip(bool bUse) { s_bWebUseGzip=bUse; } static uint32 GetWebPageRefresh() { return s_nWebPageRefresh; } static void SetWebPageRefresh(uint32 nRefresh) { s_nWebPageRefresh=nRefresh; } static bool GetWSIsLowUserEnabled() { return s_bWebLowEnabled; } static void SetWSIsLowUserEnabled(bool in) { s_bWebLowEnabled=in; } static const wxString& GetWSLowPass() { return s_sWebLowPassword; } static void SetWSLowPass(const wxString& pass) { s_sWebLowPassword = pass; } static const wxString& GetWebTemplate() { return s_WebTemplate; } static void SetWebTemplate(const wxString& val) { s_WebTemplate = val; } static void SetMaxSourcesPerFile(uint16 in) { s_maxsourceperfile=in;} static void SetMaxConnections(uint16 in) { s_maxconnections =in;} static bool ShowCatTabInfos() { return s_showCatTabInfos; } static void ShowCatTabInfos(bool in) { s_showCatTabInfos=in; } // External Connections static bool AcceptExternalConnections() { return s_AcceptExternalConnections; } static void EnableExternalConnections( bool val ) { s_AcceptExternalConnections = val; } static const wxString& GetECAddress() { return s_ECAddr; } static uint32 ECPort() { return s_ECPort; } static void SetECPort(uint32 val) { s_ECPort = val; } static const wxString& ECPassword() { return s_ECPassword; } static void SetECPass(const wxString& pass) { s_ECPassword = pass; } static bool IsTransmitOnlyUploadingClients() { return s_TransmitOnlyUploadingClients; } // Fast ED2K Links Handler Toggling static bool GetFED2KLH() { return s_FastED2KLinksHandler; } // Ip filter static bool IsFilteringClients() { return s_IPFilterClients; } static void SetFilteringClients(bool val); static bool IsFilteringServers() { return s_IPFilterServers; } static void SetFilteringServers(bool val); static uint8 GetIPFilterLevel() { return s_filterlevel;} static void SetIPFilterLevel(uint8 level); static bool IPFilterAutoLoad() { return s_IPFilterAutoLoad; } static void SetIPFilterAutoLoad(bool val) { s_IPFilterAutoLoad = val; } static const wxString& IPFilterURL() { return s_IPFilterURL; } static void SetIPFilterURL(const wxString& url) { s_IPFilterURL = url; } static bool UseIPFilterSystem() { return s_IPFilterSys; } static void SetIPFilterSystem(bool val) { s_IPFilterSys = val; } // Source seeds On/Off static bool GetSrcSeedsOn() { return s_UseSrcSeeds; } static void SetSrcSeedsOn(bool val) { s_UseSrcSeeds = val; } static bool IsSecureIdentEnabled() { return s_SecIdent; } static void SetSecureIdentEnabled(bool val) { s_SecIdent = val; } static bool GetExtractMetaData() { return s_ExtractMetaData; } static void SetExtractMetaData(bool val) { s_ExtractMetaData = val; } static bool ShowProgBar() { return s_ProgBar; } static bool ShowPercent() { return s_Percent; } static bool GetAllocFullFile() { return s_allocFullFile; }; static void SetAllocFullFile(bool val) { s_allocFullFile = val; } static wxString GetBrowser(); static const wxString& GetSkin() { return s_Skin; } static bool VerticalToolbar() { return s_ToolbarOrientation; } static const CPath& GetOSDir() { return s_OSDirectory; } static uint16 GetOSUpdate() { return s_OSUpdate; } static uint8 GetToolTipDelay() { return s_iToolDelayTime; } static void UnsetAutoServerStart(); static void CheckUlDlRatio(); static void BuildItemList( const wxString& appdir ); static void EraseItemList(); static void LoadAllItems(wxConfigBase* cfg); static void SaveAllItems(wxConfigBase* cfg); #ifndef __SVN__ static bool ShowVersionOnTitle() { return s_showVersionOnTitle; } #else static bool ShowVersionOnTitle() { return true; } #endif static uint8_t GetShowRatesOnTitle() { return s_showRatesOnTitle; } static void SetShowRatesOnTitle(uint8_t val) { s_showRatesOnTitle = val; } // Message Filters static bool MustFilterMessages() { return s_MustFilterMessages; } static void SetMustFilterMessages(bool val) { s_MustFilterMessages = val; } static bool IsFilterAllMessages() { return s_FilterAllMessages; } static void SetFilterAllMessages(bool val) { s_FilterAllMessages = val; } static bool MsgOnlyFriends() { return s_msgonlyfriends;} static void SetMsgOnlyFriends(bool val) { s_msgonlyfriends = val; } static bool MsgOnlySecure() { return s_msgsecure;} static void SetMsgOnlySecure(bool val) { s_msgsecure = val; } static bool IsFilterByKeywords() { return s_FilterSomeMessages; } static void SetFilterByKeywords(bool val) { s_FilterSomeMessages = val; } static const wxString& GetMessageFilterString() { return s_MessageFilterString; } static void SetMessageFilterString(const wxString& val) { s_MessageFilterString = val; } static bool IsMessageFiltered(const wxString& message); static bool ShowMessagesInLog() { return s_ShowMessagesInLog; } static bool IsAdvancedSpamfilterEnabled() { return s_IsAdvancedSpamfilterEnabled;} static bool IsChatCaptchaEnabled() { return IsAdvancedSpamfilterEnabled() && s_IsChatCaptchaEnabled; } static bool FilterComments() { return s_FilterComments; } static void SetFilterComments(bool val) { s_FilterComments = val; } static const wxString& GetCommentFilterString() { return s_CommentFilterString; } static void SetCommentFilterString(const wxString& val) { s_CommentFilterString = val; } static bool IsCommentFiltered(const wxString& comment); // Can't have it return a reference, will need a pointer later. static const CProxyData *GetProxyData() { return &s_ProxyData; } // Hidden files static bool ShareHiddenFiles() { return s_ShareHiddenFiles; } static void SetShareHiddenFiles(bool val) { s_ShareHiddenFiles = val; } static bool AutoSortDownload() { return s_AutoSortDownload; } static bool AutoSortDownload(bool val) { bool tmp = s_AutoSortDownload; s_AutoSortDownload = val; return tmp; } // Version check static bool GetCheckNewVersion() { return s_NewVersionCheck; } static void SetCheckNewVersion(bool val) { s_NewVersionCheck = val; } // Networks static bool GetNetworkKademlia() { return s_ConnectToKad; } static void SetNetworkKademlia(bool val) { s_ConnectToKad = val; } static bool GetNetworkED2K() { return s_ConnectToED2K; } static void SetNetworkED2K(bool val) { s_ConnectToED2K = val; } // Statistics static unsigned GetMaxClientVersions() { return s_maxClientVersions; } // Dropping slow sources static bool GetDropSlowSources() { return s_DropSlowSources; } // server.met and nodes.dat urls static const wxString& GetKadNodesUrl() { return s_KadURL; } static void SetKadNodesUrl(const wxString& url) { s_KadURL = url; } static const wxString& GetEd2kServersUrl() { return s_Ed2kURL; } static void SetEd2kServersUrl(const wxString& url) { s_Ed2kURL = url; } // Crypt static bool IsClientCryptLayerSupported() {return s_IsClientCryptLayerSupported;} static bool IsClientCryptLayerRequested() {return IsClientCryptLayerSupported() && s_bCryptLayerRequested;} static bool IsClientCryptLayerRequired() {return IsClientCryptLayerRequested() && s_IsClientCryptLayerRequired;} static bool IsClientCryptLayerRequiredStrict() {return false;} // not even incoming test connections will be answered static bool IsServerCryptLayerUDPEnabled() {return IsClientCryptLayerSupported();} static bool IsServerCryptLayerTCPRequested() {return IsClientCryptLayerRequested();} static bool IsServerCryptLayerTCPRequired() {return IsClientCryptLayerRequired();} static uint32 GetKadUDPKey() {return s_dwKadUDPKey;} static uint8 GetCryptTCPPaddingLength() {return s_byCryptTCPPaddingLength;} static void SetClientCryptLayerSupported(bool v) {s_IsClientCryptLayerSupported = v;} static void SetClientCryptLayerRequested(bool v) {s_bCryptLayerRequested = v; } static void SetClientCryptLayerRequired(bool v) {s_IsClientCryptLayerRequired = v;} // GeoIP static bool IsGeoIPEnabled() {return s_GeoIPEnabled;} static void SetGeoIPEnabled(bool v) {s_GeoIPEnabled = v;} static const wxString& GetGeoIPUpdateUrl() {return s_GeoIPUpdateUrl;} // Stats server static const wxString& GetStatsServerName() {return s_StatsServerName;} static const wxString& GetStatsServerURL() {return s_StatsServerURL;} // HTTP download static wxString GetLastHTTPDownloadURL(uint8 t); static void SetLastHTTPDownloadURL(uint8 t, const wxString& val); // Sleep static bool GetPreventSleepWhileDownloading() { return s_preventSleepWhileDownloading; } static void SetPreventSleepWhileDownloading(bool status) { s_preventSleepWhileDownloading = status; } protected: static int32 GetRecommendedMaxConnections(); //! Temporary storage for statistic-colors. static unsigned long s_colors[cntStatColors]; //! Reference for checking if the colors has changed. static unsigned long s_colors_ref[cntStatColors]; typedef std::vector CFGList; typedef std::map CFGMap; typedef std::vector CatList; static CFGMap s_CfgList; static CFGList s_MiscList; CatList m_CatList; private: void LoadPreferences(); void SavePreferences(); protected: static wxString s_configDir; ////////////// USER static wxString s_nick; static CMD4Hash s_userhash; static Cfg_Lang_Base * s_cfgLang; ////////////// CONNECTION static uint16 s_maxupload; static uint16 s_maxdownload; static uint16 s_slotallocation; static wxString s_Addr; static uint16 s_port; static uint16 s_udpport; static bool s_UDPEnable; static uint16 s_maxconnections; static bool s_reconnect; static bool s_autoconnect; static bool s_autoconnectstaticonly; static bool s_UPnPEnabled; static bool s_UPnPECEnabled; static bool s_UPnPWebServerEnabled; static uint16 s_UPnPTCPPort; ////////////// PROXY static CProxyData s_ProxyData; ////////////// SERVERS static bool s_autoserverlist; static bool s_deadserver; ////////////// FILES static CPath s_incomingdir; static CPath s_tempdir; static bool s_ICH; static bool s_AICHTrustEveryHash; ////////////// GUI static uint8 s_depth3D; static bool s_scorsystem; static bool s_hideonclose; static bool s_mintotray; static bool s_trayiconenabled; static bool s_addnewfilespaused; static bool s_addserversfromserver; static bool s_addserversfromclient; static uint16 s_maxsourceperfile; static uint16 s_trafficOMeterInterval; static uint16 s_statsInterval; static uint32 s_maxGraphDownloadRate; static uint32 s_maxGraphUploadRate; static bool s_confirmExit; static bool s_filterLanIP; static bool s_paranoidfilter; static bool s_onlineSig; static wxString s_languageID; static uint8 s_iSeeShares; // 0=everybody 1=friends only 2=noone static uint8 s_iToolDelayTime; // tooltip delay time in seconds static uint8 s_splitterbarPosition; static uint16 s_deadserverretries; static uint32 s_dwServerKeepAliveTimeoutMins; static uint8 s_statsMax; static uint8 s_statsAverageMinutes; static bool s_bpreviewprio; static bool s_smartidcheck; static uint8 s_smartidstate; static bool s_safeServerConnect; static bool s_startMinimized; static uint16 s_MaxConperFive; static bool s_checkDiskspace; static uint32 s_uMinFreeDiskSpace; static wxString s_yourHostname; static bool s_bVerbose; static bool s_bVerboseLogfile; static bool s_bmanualhighprio; static bool s_bstartnextfile; static bool s_bstartnextfilesame; static bool s_bstartnextfilealpha; static bool s_bshowoverhead; static bool s_bDAP; static bool s_bUAP; #ifndef __SVN__ static bool s_showVersionOnTitle; #endif static uint8_t s_showRatesOnTitle; // 0=no, 1=after app name, 2=before app name static wxString s_VideoPlayer; static bool s_showAllNotCats; static bool s_msgonlyfriends; static bool s_msgsecure; static uint8 s_iFileBufferSize; static uint8 s_iQueueSize; static wxString s_datetimeformat; static bool s_ToolbarOrientation; // Web Server [kuchin] static wxString s_sWebPassword; static wxString s_sWebPath; static wxString s_sWebLowPassword; static uint16 s_nWebPort; static uint16 s_nWebUPnPTCPPort; static bool s_bWebEnabled; static bool s_bWebUseGzip; static uint32 s_nWebPageRefresh; static bool s_bWebLowEnabled; static wxString s_WebTemplate; static bool s_showCatTabInfos; static AllCategoryFilter s_allcatFilter; // Kry - external connections static bool s_AcceptExternalConnections; static wxString s_ECAddr; static uint32 s_ECPort; static wxString s_ECPassword; static bool s_TransmitOnlyUploadingClients; // Kry - IPFilter static bool s_IPFilterClients; static bool s_IPFilterServers; static uint8 s_filterlevel; static bool s_IPFilterAutoLoad; static wxString s_IPFilterURL; static bool s_IPFilterSys; // Kry - Source seeds on/off static bool s_UseSrcSeeds; static bool s_ProgBar; static bool s_Percent; static bool s_SecIdent; static bool s_ExtractMetaData; static bool s_allocFullFile; static wxString s_CustomBrowser; static bool s_BrowserTab; // Jacobo221 - Open in tabs if possible static CPath s_OSDirectory; static uint16 s_OSUpdate; static wxString s_Skin; static bool s_FastED2KLinksHandler; // Madcat - Toggle Fast ED2K Links Handler // Message Filtering static bool s_MustFilterMessages; static wxString s_MessageFilterString; static bool s_FilterAllMessages; static bool s_FilterSomeMessages; static bool s_ShowMessagesInLog; static bool s_IsAdvancedSpamfilterEnabled; static bool s_IsChatCaptchaEnabled; static bool s_FilterComments; static wxString s_CommentFilterString; // Hidden files sharing static bool s_ShareHiddenFiles; static bool s_AutoSortDownload; // Version check static bool s_NewVersionCheck; // Kad static bool s_ConnectToKad; static bool s_ConnectToED2K; // Statistics static unsigned s_maxClientVersions; // 0 = unlimited // Drop slow sources if needed static bool s_DropSlowSources; static wxString s_Ed2kURL; static wxString s_KadURL; // Crypt static bool s_IsClientCryptLayerSupported; static bool s_IsClientCryptLayerRequired; static bool s_bCryptLayerRequested; static uint32 s_dwKadUDPKey; static uint8 s_byCryptTCPPaddingLength; // GeoIP static bool s_GeoIPEnabled; static wxString s_GeoIPUpdateUrl; // Sleep vetoing static bool s_preventSleepWhileDownloading; // Stats server static wxString s_StatsServerName; static wxString s_StatsServerURL; }; #endif // PREFERENCES_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/PrefsUnifiedDlg.cpp0000644000175000017500000012225712611472361022021 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Original author: Emilio Sandoz // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "PrefsUnifiedDlg.h" #include #include // Needed for itemsof() #include #include #include "amule.h" // Needed for theApp #include "amuleDlg.h" #include "MuleColour.h" #include "EditServerListDlg.h" #include "SharedFileList.h" // Needed for CSharedFileList #include "StatisticsDlg.h" // Needed for graph parameters, colors #include "IPFilter.h" // Needed for CIPFilter #include "ClientList.h" #include "DirectoryTreeCtrl.h" // Needed for CDirectoryTreeCtrl #include "Preferences.h" #include "muuli_wdr.h" #include "Logger.h" #include // Needed for CFormat #include "TransferWnd.h" // Needed for CTransferWnd::UpdateCatTabTitles() #include "KadDlg.h" // Needed for CKadDlg #include "OScopeCtrl.h" // Needed for OScopeCtrl #include "ServerList.h" #include "Statistics.h" #include "UserEvents.h" #include "PlatformSpecific.h" // Needed for PLATFORMSPECIFIC_CAN_PREVENT_SLEEP_MODE BEGIN_EVENT_TABLE(PrefsUnifiedDlg,wxDialog) // Events #define USEREVENTS_EVENT(ID, NAME, VARS) \ EVT_CHECKBOX(USEREVENTS_FIRST_ID + CUserEvents::ID * USEREVENTS_IDS_PER_EVENT + 1, PrefsUnifiedDlg::OnCheckBoxChange) \ EVT_CHECKBOX(USEREVENTS_FIRST_ID + CUserEvents::ID * USEREVENTS_IDS_PER_EVENT + 3, PrefsUnifiedDlg::OnCheckBoxChange) USEREVENTS_EVENTLIST() #undef USEREVENTS_EVENT // Proxy EVT_CHECKBOX(ID_PROXY_ENABLE_PROXY, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(ID_PROXY_ENABLE_PASSWORD, PrefsUnifiedDlg::OnCheckBoxChange) // EVT_CHECKBOX(ID_PROXY_AUTO_SERVER_CONNECT_WITHOUT_PROXY, PrefsUnifiedDlg::OnCheckBoxChange) // Connection EVT_SPINCTRL(IDC_PORT, PrefsUnifiedDlg::OnTCPClientPortChange) // The rest. Organize it! EVT_CHECKBOX(IDC_UDPENABLE, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_CHECKDISKSPACE, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_ONLINESIG, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_REMOVEDEAD, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_AUTOSERVER, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_AUTOIPFILTER, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_MSGFILTER, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_MSGFILTER_ALL, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_MSGFILTER_WORD, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_FILTERCOMMENTS, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_STARTNEXTFILE, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_ENABLETRAYICON, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_MACHIDEONCLOSE, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_VERTTOOLBAR, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_SUPPORT_PO, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_ENABLE_PO_OUTGOING, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_ENFORCE_PO_INCOMING, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_SHOWRATEONTITLE, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_NETWORKED2K, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_NETWORKKAD, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_UPNP_ENABLED, PrefsUnifiedDlg::OnCheckBoxChange) EVT_CHECKBOX(IDC_UPNP_WEBSERVER_ENABLED,PrefsUnifiedDlg::OnCheckBoxChange) EVT_BUTTON(ID_PREFS_OK_TOP, PrefsUnifiedDlg::OnOk) EVT_BUTTON(ID_PREFS_CANCEL_TOP, PrefsUnifiedDlg::OnCancel) // Browse buttons // EVT_BUTTON(IDC_SELSKIN, PrefsUnifiedDlg::OnButtonDir) EVT_BUTTON(IDC_BROWSEV, PrefsUnifiedDlg::OnButtonBrowseApplication) EVT_BUTTON(IDC_SELTEMPDIR, PrefsUnifiedDlg::OnButtonDir) EVT_BUTTON(IDC_SELINCDIR, PrefsUnifiedDlg::OnButtonDir) EVT_BUTTON(IDC_SELOSDIR, PrefsUnifiedDlg::OnButtonDir) EVT_BUTTON(IDC_SELBROWSER, PrefsUnifiedDlg::OnButtonBrowseApplication) EVT_SPINCTRL(IDC_TOOLTIPDELAY, PrefsUnifiedDlg::OnToolTipDelayChange) EVT_BUTTON(IDC_EDITADR, PrefsUnifiedDlg::OnButtonEditAddr) EVT_BUTTON(IDC_IPFRELOAD, PrefsUnifiedDlg::OnButtonIPFilterReload) EVT_BUTTON(IDC_COLOR_BUTTON, PrefsUnifiedDlg::OnButtonColorChange) EVT_BUTTON(IDC_IPFILTERUPDATE, PrefsUnifiedDlg::OnButtonIPFilterUpdate) EVT_CHOICE(IDC_COLORSELECTOR, PrefsUnifiedDlg::OnColorCategorySelected) EVT_LIST_ITEM_SELECTED(ID_PREFSLISTCTRL,PrefsUnifiedDlg::OnPrefsPageChange) EVT_INIT_DIALOG(PrefsUnifiedDlg::OnInitDialog) EVT_COMMAND_SCROLL(IDC_SLIDER, PrefsUnifiedDlg::OnScrollBarChange) EVT_COMMAND_SCROLL(IDC_SLIDER3, PrefsUnifiedDlg::OnScrollBarChange) EVT_COMMAND_SCROLL(IDC_SLIDER4, PrefsUnifiedDlg::OnScrollBarChange) EVT_COMMAND_SCROLL(IDC_SLIDER2, PrefsUnifiedDlg::OnScrollBarChange) EVT_COMMAND_SCROLL(IDC_FILEBUFFERSIZE, PrefsUnifiedDlg::OnScrollBarChange) EVT_COMMAND_SCROLL(IDC_QUEUESIZE, PrefsUnifiedDlg::OnScrollBarChange) EVT_COMMAND_SCROLL(IDC_SERVERKEEPALIVE, PrefsUnifiedDlg::OnScrollBarChange) EVT_SPINCTRL(IDC_MAXUP, PrefsUnifiedDlg::OnRateLimitChanged) EVT_LIST_ITEM_SELECTED(IDC_EVENTLIST, PrefsUnifiedDlg::OnUserEventSelected) EVT_CHOICE(IDC_LANGUAGE, PrefsUnifiedDlg::OnLanguageChoice) EVT_CLOSE(PrefsUnifiedDlg::OnClose) END_EVENT_TABLE() /** * Creates an command-event for the given checkbox. * * This can be used enforce logical constraints by passing by * sending a check-box event for each checkbox, when transfering * to the UI. However, it should also be used for checkboxes that * have no side-effects other than enabling/disabling other * widgets in the preferences dialogs. */ void SendCheckBoxEvent(wxWindow* parent, int id) { wxCheckBox* widget = CastByID(id, parent, wxCheckBox); wxCHECK_RET(widget, wxT("Invalid widget in CreateEvent")); wxCommandEvent evt(wxEVT_COMMAND_CHECKBOX_CLICKED, id); evt.SetInt(widget->IsChecked() ? 1 : 0); parent->GetEventHandler()->ProcessEvent(evt); } /** * This struct provides a general way to represent config-tabs. */ struct PrefsPage { //! The title of the page, used on the listctrl. wxString m_title; //! Function pointer to the wxDesigner function creating the dialog. wxSizer* (*m_function)(wxWindow*, bool, bool ); //! The index of the image used on the list. int m_imageidx; }; PrefsPage pages[] = { { wxTRANSLATE("General"), PreferencesGeneralTab, 13 }, { wxTRANSLATE("Connection"), PreferencesConnectionTab, 14 }, { wxTRANSLATE("Directories"), PreferencesDirectoriesTab, 17 }, { wxTRANSLATE("Servers"), PreferencesServerTab, 15 }, { wxTRANSLATE("Files"), PreferencesFilesTab, 16 }, { wxTRANSLATE("Security"), PreferencesSecurityTab, 22 }, { wxTRANSLATE("Interface"), PreferencesGuiTweaksTab, 19 }, { wxTRANSLATE("Statistics"), PreferencesStatisticsTab, 10 }, { wxTRANSLATE("Proxy"), PreferencesProxyTab, 24 }, { wxTRANSLATE("Filters"), PreferencesFilteringTab, 23 }, { wxTRANSLATE("Remote Controls"), PreferencesRemoteControlsTab, 11 }, { wxTRANSLATE("Online Signature"), PreferencesOnlineSigTab, 21 }, { wxTRANSLATE("Advanced"), PreferencesaMuleTweaksTab, 12 }, { wxTRANSLATE("Events"), PreferencesEventsTab, 5 } #ifdef __DEBUG__ ,{ wxTRANSLATE("Debugging"), PreferencesDebug, 25 } #endif }; PrefsUnifiedDlg::PrefsUnifiedDlg(wxWindow *parent) : wxDialog(parent, -1, _("Preferences"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER) { preferencesDlgTop(this, false); m_PrefsIcons = CastChild(ID_PREFSLISTCTRL, wxListCtrl); wxImageList *icon_list = new wxImageList(16, 16); m_PrefsIcons->AssignImageList(icon_list, wxIMAGE_LIST_SMALL); // Add the single column used m_PrefsIcons->InsertColumn( 0, wxEmptyString, wxLIST_FORMAT_LEFT, m_PrefsIcons->GetSize().GetWidth()-5); // Temp variables for finding the smallest height and width needed int width = 0; int height = 0; // Add each page to the page-list for (unsigned int i = 0; i < itemsof(pages); ++i) { // Add the icon and label associated with the page icon_list->Add(amuleSpecial(pages[i].m_imageidx)); m_PrefsIcons->InsertItem(i, wxGetTranslation(pages[i].m_title), i); } // Set list-width so that there aren't any scrollers m_PrefsIcons->SetColumnWidth(0, wxLIST_AUTOSIZE); m_PrefsIcons->SetMinSize(wxSize(m_PrefsIcons->GetColumnWidth(0) + 10, -1)); m_PrefsIcons->SetMaxSize(wxSize(m_PrefsIcons->GetColumnWidth(0) + 10, -1)); // Now add the pages and calculate the minimum size wxPanel * DefaultWidget = NULL; for (unsigned int i = 0; i < itemsof(pages); ++i) { // Create a container widget and the contents of the page wxPanel * Widget = new wxPanel(this, -1); // Widget is stored as user data in the list control m_PrefsIcons->SetItemPtrData(i, (wxUIntPtr) Widget); pages[i].m_function(Widget, true, true); if (i == 0) { DefaultWidget = Widget; } // Add it to the sizer prefs_sizer->Add(Widget, 0, wxGROW|wxEXPAND); if (pages[i].m_function == PreferencesGeneralTab) { // This must be done now or pages won't Fit(); #ifdef __WINDOWS__ CastChild(IDC_BROWSERTABS, wxCheckBox)->Enable(false); #endif /* __WINDOWS__ */ CastChild(IDC_PREVIEW_NOTE, wxStaticText)->SetLabel(_("The following variables will be substituted:\n %PARTFILE - full path to the file\n %PARTNAME - file name only")); #ifdef __WXMAC__ FindWindow(IDC_ENABLETRAYICON)->Show(false); FindWindow(IDC_MINTRAY)->Show(false); #else FindWindow(IDC_MACHIDEONCLOSE)->Show(false); thePrefs::SetHideOnClose(false); #endif } else if (pages[i].m_function == PreferencesEventsTab) { #define USEREVENTS_REPLACE_VAR(VAR, DESC, CODE) + wxString(wxT("\n %") VAR wxT(" - ")) + wxGetTranslation(DESC) #define USEREVENTS_EVENT(ID, NAME, VARS) case CUserEvents::ID: CreateEventPanels(idx, wxEmptyString VARS, Widget); break; wxListCtrl *list = CastChild(IDC_EVENTLIST, wxListCtrl); list->InsertColumn(0, wxEmptyString); for (unsigned int idx = 0; idx < CUserEvents::GetCount(); ++idx) { long lidx = list->InsertItem(idx, wxGetTranslation(CUserEvents::GetDisplayName( static_cast(idx)))); if (lidx != -1) { list->SetItemData(lidx, USEREVENTS_FIRST_ID + idx * USEREVENTS_IDS_PER_EVENT); switch (idx) { USEREVENTS_EVENTLIST() /* This macro expands to handle all user event types. Here is an example: case CUserEvents::NewChatSession: { CreateEventPanels(idx, wxString(wxT("\n %SENDER - ")) + wxTRANSLATE("Message sender."), Widget); break; } */ } } } list->SetColumnWidth(0, wxLIST_AUTOSIZE); } else if (pages[i].m_function == PreferencesServerTab) { m_IndexServerTab = i; m_ServerWidget = Widget; } else if (pages[i].m_function == PreferencesaMuleTweaksTab) { wxStaticText *txt = CastChild(IDC_AMULE_TWEAKS_WARNING, wxStaticText); // Do not wrap this line, Windows _() can't handle wrapped strings txt->SetLabel(_("Do not change these setting unless you know\nwhat you are doing, otherwise you can easily\nmake things worse for yourself.\n\naMule will run fine without adjusting any of\nthese settings.")); #if defined CLIENT_GUI || !PLATFORMSPECIFIC_CAN_PREVENT_SLEEP_MODE CastChild(IDC_PREVENT_SLEEP, wxCheckBox)->Enable(false); thePrefs::SetPreventSleepWhileDownloading(false); #endif } #ifdef __DEBUG__ else if (pages[i].m_function == PreferencesDebug) { int count = theLogger.GetDebugCategoryCount(); wxCheckListBox* list = CastChild( ID_DEBUGCATS, wxCheckListBox ); for ( int j = 0; j < count; j++ ) { list->Append( theLogger.GetDebugCategory( j ).GetName() ); } } #endif // Align and resize the page Fit(); Layout(); // Find the greatest sizes wxSize size = prefs_sizer->GetSize(); if (size.GetWidth() > width) { width = size.GetWidth(); } if (size.GetHeight() > height) { height = size.GetHeight(); } // Hide it for now prefs_sizer->Detach(Widget); Widget->Show(false); } // Default to the General tab m_CurrentPanel = DefaultWidget; prefs_sizer->Add(DefaultWidget, 0, wxGROW|wxEXPAND); m_CurrentPanel->Show( true ); // Select the first item m_PrefsIcons->SetItemState(0, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); // We now have the needed minimum height and width prefs_sizer->SetMinSize(width, height); // Don't show server prefs if ED2K is disabled m_ServerTabVisible = true; EnableServerTab(thePrefs::GetNetworkED2K()); // Store some often used pointers m_ShareSelector = CastChild(IDC_SHARESELECTOR, CDirectoryTreeCtrl); m_buttonColor = CastChild(IDC_COLOR_BUTTON, wxButton); m_choiceColor = CastChild(IDC_COLORSELECTOR, wxChoice); // Connect the Cfgs with their widgets thePrefs::CFGMap::iterator it = thePrefs::s_CfgList.begin(); for ( ; it != thePrefs::s_CfgList.end(); ++it ) { // Checking for failures if ( !it->second->ConnectToWidget(it->first, this) ) { AddLogLineNS(CFormat(_("Failed to connect Cfg to widget with the ID %d and key %s")) % it->first % it->second->GetKey()); } } Fit(); // It must not be resized to something smaller than what it currently is wxSize size = GetClientSize(); SetSizeHints(size.GetWidth(), size.GetHeight()); // Position the dialog. Center(); } void PrefsUnifiedDlg::EnableServerTab(bool enable) { if (enable && !m_ServerTabVisible) { // turn server widget on m_PrefsIcons->InsertItem(m_IndexServerTab, wxGetTranslation(pages[m_IndexServerTab].m_title), m_IndexServerTab); m_PrefsIcons->SetItemPtrData(m_IndexServerTab, (wxUIntPtr) m_ServerWidget); m_ServerTabVisible = true; } else if (!enable && m_ServerTabVisible) { // turn server widget off m_PrefsIcons->DeleteItem(m_IndexServerTab); m_ServerTabVisible = false; } } Cfg_Base* PrefsUnifiedDlg::GetCfg(int id) { thePrefs::CFGMap::iterator it = thePrefs::s_CfgList.find( id ); if ( it != thePrefs::s_CfgList.end() ) { return it->second; } return NULL; } bool PrefsUnifiedDlg::TransferToWindow() { // Connect the Cfgs with their widgets thePrefs::CFGMap::iterator it = thePrefs::s_CfgList.begin(); for ( ; it != thePrefs::s_CfgList.end(); ++it ) { // Checking for failures if ( !it->second->TransferToWindow() ) { AddLogLineNS(CFormat(_("Failed to transfer data from Cfg to Widget with the ID %d and key %s")) % it->first % it->second->GetKey()); } } m_ShareSelector->SetSharedDirectories(&theApp->glob_prefs->shareddir_list); for ( int i = 0; i < cntStatColors; i++ ) { thePrefs::s_colors[i] = CMuleColour(CStatisticsDlg::acrStat[i]).GetULong(); thePrefs::s_colors_ref[i] = CMuleColour(CStatisticsDlg::acrStat[i]).GetULong(); } // Connection tab wxSpinEvent e; OnTCPClientPortChange(e); // Proxy tab initialization FindWindow(ID_PROXY_TYPE)->SetToolTip(_("The type of proxy you are connecting to")); if (!CastChild(ID_PROXY_ENABLE_PROXY, wxCheckBox)->IsChecked()) { FindWindow(ID_PROXY_TYPE)->Enable(false); FindWindow(ID_PROXY_NAME)->Enable(false); FindWindow(ID_PROXY_PORT)->Enable(false); } if (!CastChild(ID_PROXY_ENABLE_PASSWORD, wxCheckBox)->IsChecked()) { FindWindow(ID_PROXY_USER)->Enable(false); FindWindow(ID_PROXY_PASSWORD)->Enable(false); } // This option from the proxy tab is currently unused FindWindow(ID_PROXY_AUTO_SERVER_CONNECT_WITHOUT_PROXY)->Enable(false); // Enable/Disable some controls FindWindow( IDC_MINDISKSPACE )->Enable( thePrefs::IsCheckDiskspaceEnabled() ); FindWindow( IDC_OSDIR )->Enable( thePrefs::IsOnlineSignatureEnabled() ); FindWindow( IDC_OSUPDATE )->Enable( thePrefs::IsOnlineSignatureEnabled() ); FindWindow( IDC_UDPENABLE )->Enable( !thePrefs::GetNetworkKademlia()); FindWindow( IDC_UDPPORT )->Enable( thePrefs::s_UDPEnable ); FindWindow( IDC_SERVERRETRIES )->Enable( thePrefs::DeadServer() ); FindWindow( IDC_STARTNEXTFILE_SAME )->Enable(thePrefs::StartNextFile()); FindWindow( IDC_STARTNEXTFILE_ALPHA )->Enable(thePrefs::StartNextFile()); FindWindow(IDC_MACHIDEONCLOSE)->Enable(true); FindWindow(IDC_EXIT)->Enable(!thePrefs::HideOnClose()); if (thePrefs::HideOnClose()) { CastChild(IDC_EXIT, wxCheckBox)->SetValue(false); } FindWindow(IDC_MINTRAY)->Enable(thePrefs::UseTrayIcon()); if (!CastChild(IDC_MSGFILTER, wxCheckBox)->IsChecked()) { FindWindow(IDC_MSGFILTER_ALL)->Enable(false); FindWindow(IDC_MSGFILTER_NONSECURE)->Enable(false); FindWindow(IDC_MSGFILTER_NONFRIENDS)->Enable(false); FindWindow(IDC_MSGFILTER_WORD)->Enable(false); FindWindow(IDC_MSGWORD)->Enable(false); } else if (CastChild(IDC_MSGFILTER_ALL, wxCheckBox)->IsChecked()) { FindWindow(IDC_MSGFILTER_NONSECURE)->Enable(false); FindWindow(IDC_MSGFILTER_NONFRIENDS)->Enable(false); FindWindow(IDC_MSGFILTER_WORD)->Enable(false); FindWindow(IDC_MSGWORD)->Enable(false); } FindWindow(IDC_MSGWORD)->Enable(CastChild(IDC_MSGFILTER_WORD, wxCheckBox)->IsChecked()); FindWindow(IDC_COMMENTWORD)->Enable(CastChild(IDC_FILTERCOMMENTS, wxCheckBox)->IsChecked()); #ifdef CLIENT_GUI // Disable dirpickers unless it's a localhost connection if (!theApp->m_connect->IsConnectedToLocalHost()) { FindWindow(IDC_SELINCDIR)->Enable(false); FindWindow(IDC_SELTEMPDIR)->Enable(false); } #endif // Protocol obfuscation ::SendCheckBoxEvent(this, IDC_SUPPORT_PO); ::SendCheckBoxEvent(this, IDC_ENABLE_PO_OUTGOING); ::SendCheckBoxEvent(this, IDC_ENFORCE_PO_INCOMING); #ifndef ENABLE_IP2COUNTRY CastChild(IDC_SHOW_COUNTRY_FLAGS, wxCheckBox)->Enable(false); thePrefs::SetGeoIPEnabled(false); #endif #ifdef __SVN__ // Version is always shown on the title in development versions CastChild(IDC_SHOWVERSIONONTITLE, wxCheckBox)->SetValue(true); CastChild(IDC_SHOWVERSIONONTITLE, wxCheckBox)->Enable(false); #endif // Show rates on title FindWindow(IDC_RATESBEFORETITLE)->Enable(thePrefs::GetShowRatesOnTitle() != 0); FindWindow(IDC_RATESAFTERTITLE)->Enable(thePrefs::GetShowRatesOnTitle() != 0); CastChild(IDC_SHOWRATEONTITLE, wxCheckBox)->SetValue(thePrefs::GetShowRatesOnTitle() != 0); CastChild(IDC_RATESBEFORETITLE, wxRadioButton)->SetValue(thePrefs::GetShowRatesOnTitle() == 2); CastChild(IDC_RATESAFTERTITLE, wxRadioButton)->SetValue(thePrefs::GetShowRatesOnTitle() != 2); // UPNP #ifndef ENABLE_UPNP FindWindow(IDC_UPNP_ENABLED)->Enable(false); FindWindow(IDC_UPNPTCPPORT)->Enable(false); FindWindow(IDC_UPNPTCPPORTTEXT)->Enable(false); thePrefs::SetUPnPEnabled(false); FindWindow(IDC_UPNP_WEBSERVER_ENABLED)->Enable(false); FindWindow(IDC_WEBUPNPTCPPORT)->Enable(false); FindWindow(IDC_WEBUPNPTCPPORTTEXT)->Enable(false); thePrefs::SetUPnPWebServerEnabled(false); FindWindow(IDC_UPNP_EC_ENABLED)->Enable(false); thePrefs::SetUPnPECEnabled(false); #else FindWindow(IDC_UPNPTCPPORT)->Enable(thePrefs::GetUPnPEnabled()); FindWindow(IDC_UPNPTCPPORTTEXT)->Enable(thePrefs::GetUPnPEnabled()); FindWindow(IDC_WEBUPNPTCPPORT)->Enable(thePrefs::GetUPnPWebServerEnabled()); FindWindow(IDC_WEBUPNPTCPPORTTEXT)->Enable(thePrefs::GetUPnPWebServerEnabled()); #endif #ifdef __DEBUG__ // Set debugging toggles int count = theLogger.GetDebugCategoryCount(); wxCheckListBox* list = CastChild( ID_DEBUGCATS, wxCheckListBox ); for ( int i = 0; i < count; i++ ) { list->Check( i, theLogger.GetDebugCategory( i ).IsEnabled() ); } #endif return true; } bool PrefsUnifiedDlg::TransferFromWindow() { // Connect the Cfgs with their widgets thePrefs::CFGMap::iterator it = thePrefs::s_CfgList.begin(); for ( ; it != thePrefs::s_CfgList.end(); ++it ) { // Checking for failures if ( !it->second->TransferFromWindow() ) { AddLogLineNS(CFormat(_("Failed to transfer data from Widget to Cfg with the ID %d and key %s")) % it->first % it->second->GetKey()); } } theApp->glob_prefs->shareddir_list.clear(); m_ShareSelector->GetSharedDirectories(&theApp->glob_prefs->shareddir_list); for ( int i = 0; i < cntStatColors; i++ ) { if ( thePrefs::s_colors[i] != thePrefs::s_colors_ref[i] ) { CStatisticsDlg::acrStat[i] = thePrefs::s_colors[i]; theApp->amuledlg->m_statisticswnd->ApplyStatsColor(i); } theApp->amuledlg->m_kademliawnd->SetGraphColors(); } #ifdef __DEBUG__ // Get debugging toggles int count = theLogger.GetDebugCategoryCount(); wxCheckListBox* list = CastChild( ID_DEBUGCATS, wxCheckListBox ); for ( int i = 0; i < count; i++ ) { theLogger.SetEnabled( theLogger.GetDebugCategory( i ).GetType(), list->IsChecked( i ) ); } #endif thePrefs::SetShowRatesOnTitle(CastChild(IDC_SHOWRATEONTITLE, wxCheckBox)->GetValue() ? (CastChild(IDC_RATESBEFORETITLE, wxRadioButton)->GetValue() ? 2 : 1) : 0); #ifdef CLIENT_GUI // Send preferences to core. theApp->glob_prefs->SendToRemote(); #endif return true; } bool PrefsUnifiedDlg::CfgChanged(int ID) { Cfg_Base* cfg = GetCfg(ID); if ( cfg ) { return cfg->HasChanged(); } return false; } void PrefsUnifiedDlg::OnOk(wxCommandEvent& WXUNUSED(event)) { TransferFromWindow(); bool restart_needed = false; wxString restart_needed_msg = _("aMule must be restarted to enable these changes:\n\n"); // do sanity checking, special processing, and user notifications here thePrefs::CheckUlDlRatio(); if (CfgChanged(IDC_PORT)) { restart_needed = true; restart_needed_msg += _("- TCP port changed.\n"); } if (CfgChanged(IDC_UDPPORT)) { restart_needed = true; restart_needed_msg += _("- UDP port changed.\n"); } if (CfgChanged(IDC_EXT_CONN_TCP_PORT)) { restart_needed = true; restart_needed_msg += _("- External connect port changed.\n"); } if (CfgChanged(IDC_EXT_CONN_ACCEPT)) { restart_needed = true; restart_needed_msg += _("- External connect acceptance changed.\n"); } if (CfgChanged(IDC_EXT_CONN_IP)) { restart_needed = true; restart_needed_msg += _("- External connect interface changed.\n"); } if (CfgChanged(IDC_SUPPORT_PO)) { restart_needed = true; restart_needed_msg += _("- Protocol obfuscation support changed.\n"); } // Force port checking thePrefs::SetPort(thePrefs::GetPort()); if ((CPath::GetFileSize(thePrefs::GetConfigDir() + wxT("addresses.dat")) == 0) && CastChild(IDC_AUTOSERVER, wxCheckBox)->IsChecked() ) { thePrefs::UnsetAutoServerStart(); wxMessageBox(_("Your Auto-update server list is empty.\n'Auto-update server list at startup' will be disabled."), _("Message"), wxOK | wxICON_INFORMATION, this); } if (thePrefs::AcceptExternalConnections() && thePrefs::ECPassword().IsEmpty()) { thePrefs::EnableExternalConnections( false ); wxMessageBox( _("You have enabled external connections but have not specified a password.\nExternal connections cannot be enabled unless a valid password is specified.")); } // save the preferences on ok theApp->glob_prefs->Save(); if (CfgChanged(IDC_FED2KLH) && theApp->amuledlg->GetActiveDialog() != CamuleDlg::DT_SEARCH_WND) { theApp->amuledlg->ShowED2KLinksHandler( thePrefs::GetFED2KLH() ); } if (CfgChanged(IDC_LANGUAGE)) { restart_needed = true; restart_needed_msg += _("- Language changed.\n"); } if (CfgChanged(IDC_TEMPFILES)) { restart_needed = true; restart_needed_msg += _("- Temp folder changed.\n"); } if (CfgChanged(IDC_NETWORKED2K) && thePrefs::GetNetworkED2K()) { restart_needed = true; restart_needed_msg += _("- ED2K network enabled.\n"); } if (CfgChanged(IDC_INCFILES) || CfgChanged(IDC_TEMPFILES) || m_ShareSelector->HasChanged ) { theApp->sharedfiles->Reload(); } if (CfgChanged(IDC_OSDIR) || CfgChanged(IDC_ONLINESIG)) { wxTextCtrl* widget = CastChild( IDC_OSDIR, wxTextCtrl ); // Build the filenames for the two OS files theApp->SetOSFiles( widget->GetValue() ); } if (CfgChanged(IDC_IPFCLIENTS) && thePrefs::IsFilteringClients()) { theApp->clientlist->FilterQueues(); } if (CfgChanged(IDC_IPFSERVERS) && thePrefs::IsFilteringServers()) { theApp->serverlist->FilterServers(); } if (CfgChanged(ID_IPFILTERLEVEL)) { theApp->ipfilter->Reload(); } theApp->ResetTitle(); if (thePrefs::GetShowRatesOnTitle()) { // This avoids a 5 seconds delay to show the title theApp->amuledlg->ShowTransferRate(); } else { // This resets the title theApp->amuledlg->SetTitle(theApp->m_FrameTitle); } if (CfgChanged(IDC_EXTCATINFO)) { theApp->amuledlg->m_transferwnd->UpdateCatTabTitles(); } // Changes related to the statistics-dlg if (CfgChanged(IDC_SLIDER)) { theApp->amuledlg->m_statisticswnd->SetUpdatePeriod(thePrefs::GetTrafficOMeterInterval()); theApp->amuledlg->m_kademliawnd->SetUpdatePeriod(thePrefs::GetTrafficOMeterInterval()); } if ( CfgChanged(IDC_SLIDER3) ) { theApp->amuledlg->m_statisticswnd->ResetAveragingTime(); } if (CfgChanged(IDC_DOWNLOAD_CAP)) { theApp->amuledlg->m_statisticswnd->SetARange( true, thePrefs::GetMaxGraphDownloadRate() ); } if (CfgChanged(IDC_UPLOAD_CAP)) { theApp->amuledlg->m_statisticswnd->SetARange( false, thePrefs::GetMaxGraphUploadRate() ); } if (CfgChanged(IDC_SKIN)) { theApp->amuledlg->Create_Toolbar(thePrefs::VerticalToolbar()); } if (!thePrefs::GetNetworkED2K() && theApp->IsConnectedED2K()) { theApp->DisconnectED2K(); } if (!thePrefs::GetNetworkKademlia() && theApp->IsConnectedKad()) { theApp->StopKad(); } if (!thePrefs::GetNetworkED2K() && !thePrefs::GetNetworkKademlia()) { wxMessageBox( _("Both eD2k and Kad network are disabled.\nYou won't be able to connect until you enable at least one of them.")); } if (thePrefs::GetNetworkKademlia() && thePrefs::IsUDPDisabled()) { wxMessageBox(_("Kad will not start if your UDP port is disabled.\nEnable UDP port or disable Kad."), _("Message"), wxOK | wxICON_INFORMATION, this); } if (CfgChanged(IDC_NETWORKKAD) || CfgChanged(IDC_NETWORKED2K)) { theApp->amuledlg->DoNetworkRearrange(); } if (CfgChanged(IDC_SHOW_COUNTRY_FLAGS)) { theApp->amuledlg->EnableIP2Country(); } if (restart_needed) { wxMessageBox(restart_needed_msg + _("\nYou MUST restart aMule now.\nIf you do not restart now, don't complain if anything bad happens.\n"), _("WARNING"), wxOK | wxICON_EXCLAMATION, this); } Show(false); } void PrefsUnifiedDlg::OnClose(wxCloseEvent& event) { Show(false); // Try to keep the window alive when possible if (event.CanVeto()) { event.Veto(); } else { if (theApp->amuledlg) { theApp->amuledlg->m_prefsDialog = NULL; } // Un-Connect the Cfgs thePrefs::CFGMap::iterator it = thePrefs::s_CfgList.begin(); for (; it != thePrefs::s_CfgList.end(); ++it) { // Checking for failures it->second->ConnectToWidget( 0 ); } Destroy(); } } void PrefsUnifiedDlg::OnCancel(wxCommandEvent& WXUNUSED(event)) { Show(false); // restore state of server tab if necessary EnableServerTab(thePrefs::GetNetworkED2K()); } void PrefsUnifiedDlg::OnCheckBoxChange(wxCommandEvent& event) { bool value = event.IsChecked(); int id = event.GetId(); // Check if this checkbox is one of the User Events checkboxes if (id >= USEREVENTS_FIRST_ID && id < USEREVENTS_FIRST_ID + (int)CUserEvents::GetCount() * USEREVENTS_IDS_PER_EVENT) { // The corresponding text control always has // an ID one greater than the checkbox FindWindow(id + 1)->Enable(value); return; } switch ( id ) { case IDC_UDPENABLE: FindWindow( IDC_UDPPORT )->Enable(value); break; case IDC_UPNP_ENABLED: FindWindow(IDC_UPNPTCPPORT)->Enable(value); FindWindow(IDC_UPNPTCPPORTTEXT)->Enable(value); break; case IDC_UPNP_WEBSERVER_ENABLED: FindWindow(IDC_WEBUPNPTCPPORT)->Enable(value); FindWindow(IDC_WEBUPNPTCPPORTTEXT)->Enable(value); break; case IDC_NETWORKKAD: { wxCheckBox * udpPort = (wxCheckBox *) FindWindow(IDC_UDPENABLE); if (value) { // Kad enabled: disable check box, turn UDP on, enable port spin control udpPort->Enable(false); udpPort->SetValue(true); FindWindow(IDC_UDPPORT)->Enable(true); } else { // Kad disabled: enable check box udpPort->Enable(true); } break; } case IDC_CHECKDISKSPACE: FindWindow( IDC_MINDISKSPACE )->Enable(value); break; case IDC_ONLINESIG: FindWindow( IDC_OSDIR )->Enable(value);; FindWindow(IDC_OSUPDATE)->Enable(value); break; case IDC_REMOVEDEAD: FindWindow( IDC_SERVERRETRIES )->Enable(value);; break; case IDC_AUTOSERVER: if ((CPath::GetFileSize(thePrefs::GetConfigDir() + wxT("addresses.dat")) == 0) && CastChild(event.GetId(), wxCheckBox)->IsChecked() ) { wxMessageBox(_("Your Auto-update servers list is in blank.\nPlease fill in at least one URL to point to a valid server.met file.\nClick on the button \"List\" by this checkbox to enter an URL."), _("Message"), wxOK | wxICON_INFORMATION); CastChild(event.GetId(), wxCheckBox)->SetValue(false); } break; case IDC_MSGFILTER: // Toogle All filter options FindWindow(IDC_MSGFILTER_ALL)->Enable(value); FindWindow(IDC_MSGFILTER_NONSECURE)->Enable(value); FindWindow(IDC_MSGFILTER_NONFRIENDS)->Enable(value); FindWindow(IDC_MSGFILTER_WORD)->Enable(value); if (value) { FindWindow(IDC_MSGWORD)->Enable( CastChild(IDC_MSGFILTER_WORD, wxCheckBox)->IsChecked()); } else { FindWindow(IDC_MSGWORD)->Enable(false); } break; case IDC_MSGFILTER_ALL: // Toogle filtering by data. FindWindow(IDC_MSGFILTER_NONSECURE)->Enable(!value); FindWindow(IDC_MSGFILTER_NONFRIENDS)->Enable(!value); FindWindow(IDC_MSGFILTER_WORD)->Enable(!value); if (!value) { FindWindow(IDC_MSGWORD)->Enable( CastChild(IDC_MSGFILTER_WORD, wxCheckBox)->IsChecked()); } else { FindWindow(IDC_MSGWORD)->Enable(false); } break; case IDC_MSGFILTER_WORD: // Toogle filter word list. FindWindow(IDC_MSGWORD)->Enable(value); break; case IDC_FILTERCOMMENTS: FindWindow(IDC_COMMENTWORD)->Enable(value); break; case ID_PROXY_ENABLE_PROXY: FindWindow(ID_PROXY_TYPE)->Enable(value); FindWindow(ID_PROXY_NAME)->Enable(value); FindWindow(ID_PROXY_PORT)->Enable(value); break; case ID_PROXY_ENABLE_PASSWORD: FindWindow(ID_PROXY_USER)->Enable(value); FindWindow(ID_PROXY_PASSWORD)->Enable(value); break; case IDC_STARTNEXTFILE: FindWindow(IDC_STARTNEXTFILE_SAME)->Enable(value); FindWindow(IDC_STARTNEXTFILE_ALPHA)->Enable(value); break; case IDC_MACHIDEONCLOSE: FindWindow(IDC_EXIT)->Enable(!value); CastChild(IDC_EXIT, wxCheckBox)->SetValue(!value && thePrefs::IsConfirmExitEnabled()); break; case IDC_ENABLETRAYICON: FindWindow(IDC_MINTRAY)->Enable(value); if (value) { theApp->amuledlg->CreateSystray(); } else { theApp->amuledlg->RemoveSystray(); } thePrefs::SetUseTrayIcon(value); break; case ID_PROXY_AUTO_SERVER_CONNECT_WITHOUT_PROXY: break; case IDC_VERTTOOLBAR: theApp->amuledlg->Create_Toolbar(value); // Update the first tool (conn button) theApp->amuledlg->ShowConnectionState(); theApp->amuledlg->Layout(); break; case IDC_ENFORCE_PO_INCOMING: FindWindow(IDC_ENABLE_PO_OUTGOING)->Enable(!value); break; case IDC_ENABLE_PO_OUTGOING: FindWindow(IDC_SUPPORT_PO)->Enable(!value); FindWindow(IDC_ENFORCE_PO_INCOMING)->Enable(value); break; case IDC_SUPPORT_PO: FindWindow(IDC_ENABLE_PO_OUTGOING)->Enable(value); break; case IDC_SHOWRATEONTITLE: FindWindow(IDC_RATESBEFORETITLE)->Enable(value); FindWindow(IDC_RATESAFTERTITLE)->Enable(value); break; case IDC_NETWORKED2K: { EnableServerTab(value); wxSpinEvent e; OnTCPClientPortChange(e); break; } default: break; } } void PrefsUnifiedDlg::OnButtonColorChange(wxCommandEvent& WXUNUSED(event)) { int index = m_choiceColor->GetSelection(); wxColour col = wxGetColourFromUser( this, CMuleColour(thePrefs::s_colors[index]) ); if ( col.Ok() ) { m_buttonColor->SetBackgroundColour( col ); thePrefs::s_colors[index] = CMuleColour(col).GetULong(); } } void PrefsUnifiedDlg::OnColorCategorySelected(wxCommandEvent& WXUNUSED(evt)) { m_buttonColor->SetBackgroundColour(CMuleColour(thePrefs::s_colors[ m_choiceColor->GetSelection() ] ) ); } void PrefsUnifiedDlg::OnButtonDir(wxCommandEvent& event) { wxString type; int id = 0; switch ( event.GetId() ) { case IDC_SELTEMPDIR: id = IDC_TEMPFILES; type = _("Temporary files"); break; case IDC_SELINCDIR: id = IDC_INCFILES; type = _("Incoming files"); break; case IDC_SELOSDIR: id = IDC_OSDIR; type = _("Online Signatures"); break; // case IDC_SELSKIN: // id = IDC_SKIN; // type = _("Skins directory"); // break; default: wxFAIL; return; } type = CFormat(_("Choose a folder for %s")) % type; wxTextCtrl* widget = CastChild( id, wxTextCtrl ); wxString dir = widget->GetValue(); wxString str = wxDirSelector( type, dir, wxDD_DEFAULT_STYLE, wxDefaultPosition, this); if (!str.IsEmpty()) { widget->SetValue(str); } } void PrefsUnifiedDlg::OnButtonBrowseApplication(wxCommandEvent& event) { wxString title; int id = 0; switch ( event.GetId() ) { case IDC_BROWSEV: id = IDC_VIDEOPLAYER; title = _("Browse for videoplayer"); break; case IDC_SELBROWSER: id = IDC_BROWSERSELF; title = _("Select browser"); break; default: wxFAIL; return; } wxString wildcard = CFormat(_("Executable%s")) #ifdef __WINDOWS__ % wxT(" (*.exe)|*.exe"); #else % wxT("|*"); #endif wxString str = wxFileSelector( title, wxEmptyString, wxEmptyString, wxEmptyString, wildcard, 0, this ); if ( !str.IsEmpty() ) { wxTextCtrl* widget = CastChild( id, wxTextCtrl ); widget->SetValue( str ); } } void PrefsUnifiedDlg::OnButtonEditAddr(wxCommandEvent& WXUNUSED(evt)) { wxString fullpath( thePrefs::GetConfigDir() + wxT("addresses.dat") ); EditServerListDlg* test = new EditServerListDlg(this, _("Edit server list"), _("Add here URL's to download server.met files.\nOnly one url on each line."), fullpath ); test->ShowModal(); delete test; } void PrefsUnifiedDlg::OnButtonIPFilterReload(wxCommandEvent& WXUNUSED(event)) { theApp->ipfilter->Reload(); } void PrefsUnifiedDlg::OnButtonIPFilterUpdate(wxCommandEvent& WXUNUSED(event)) { theApp->ipfilter->Update( CastChild( IDC_IPFILTERURL, wxTextCtrl )->GetValue() ); } void PrefsUnifiedDlg::OnPrefsPageChange(wxListEvent& event) { prefs_sizer->Detach( m_CurrentPanel ); m_CurrentPanel->Show( false ); m_CurrentPanel = reinterpret_cast(m_PrefsIcons->GetItemData(event.GetIndex())); if (pages[event.GetIndex()].m_function == PreferencesDirectoriesTab) { CastChild(IDC_SHARESELECTOR, CDirectoryTreeCtrl)->Init(); } prefs_sizer->Add( m_CurrentPanel, 0, wxGROW|wxEXPAND ); m_CurrentPanel->Show( true ); Layout(); event.Skip(); } void PrefsUnifiedDlg::OnToolTipDelayChange(wxSpinEvent& event) { wxToolTip::SetDelay( event.GetPosition() * 1000 ); } void PrefsUnifiedDlg::OnInitDialog( wxInitDialogEvent& WXUNUSED(evt) ) { // This function exists solely to avoid automatic transfer-to-widget calls } void PrefsUnifiedDlg::OnScrollBarChange( wxScrollEvent& event ) { int id = 0; wxString label; switch ( event.GetId() ) { case IDC_SLIDER: id = IDC_SLIDERINFO; label = CFormat(wxPLURAL("Update delay: %d second", "Update delay: %d seconds", event.GetPosition())) % event.GetPosition(); theApp->amuledlg->m_statisticswnd->SetUpdatePeriod(event.GetPosition()); theApp->amuledlg->m_kademliawnd->SetUpdatePeriod(event.GetPosition()); break; case IDC_SLIDER3: id = IDC_SLIDERINFO3; label = CFormat(wxPLURAL("Time for average graph: %d minute", "Time for average graph: %d minutes", event.GetPosition())) % event.GetPosition(); theApp->m_statistics->SetAverageMinutes(event.GetPosition()); break; case IDC_SLIDER4: id = IDC_SLIDERINFO4; label = CFormat(_("Connections Graph Scale: %d")) % event.GetPosition(); theApp->amuledlg->m_statisticswnd->GetConnScope()->SetRanges(0, event.GetPosition()); break; case IDC_SLIDER2: id = IDC_SLIDERINFO2; label = CFormat(wxPLURAL("Update delay: %d second", "Update delay: %d seconds", event.GetPosition())) % event.GetPosition(); break; case IDC_FILEBUFFERSIZE: id = IDC_FILEBUFFERSIZE_STATIC; // Yes, it seems odd to add the singular form here, but other languages might need to know the number to select the appropriate translation label = CFormat(wxPLURAL("File Buffer Size: %d byte", "File Buffer Size: %d bytes", event.GetPosition() * 15000)) % (event.GetPosition() * 15000); break; case IDC_QUEUESIZE: id = IDC_QUEUESIZE_STATIC; // Yes, it seems odd to add the singular form here, but other languages might need to know the number to select the appropriate translation label = CFormat(wxPLURAL("Upload Queue Size: %d client", "Upload Queue Size: %d clients", event.GetPosition() * 100)) % (event.GetPosition() * 100); break; case IDC_SERVERKEEPALIVE: id = IDC_SERVERKEEPALIVE_LABEL; if ( event.GetPosition() ) { label = CFormat(wxPLURAL("Server connection refresh interval: %d minute", "Server connection refresh interval: %d minutes", event.GetPosition())) % event.GetPosition(); } else { label = _("Server connection refresh interval: Disabled"); } break; default: return; } wxStaticText* widget = CastChild( id, wxStaticText ); if (widget) { widget->SetLabel( label ); widget->GetParent()->Layout(); } } void PrefsUnifiedDlg::OnRateLimitChanged( wxSpinEvent& event ) { // Here we do immediate sanity checking of the up/down ratio, // so that the user can see if his choice is illegal // We only do checks if the rate is limited if ( event.GetPosition() != (int)UNLIMITED ) { wxSpinCtrl* dlrate = CastChild( IDC_MAXDOWN, wxSpinCtrl ); if ( event.GetPosition() < 4 ) { if ( ( event.GetPosition() * 3 < dlrate->GetValue() ) || ( dlrate->GetValue() == (int)UNLIMITED ) ) { dlrate->SetValue( event.GetPosition() * 3 ); } } else if ( event.GetPosition() < 10 ) { if ( ( event.GetPosition() * 4 < dlrate->GetValue() ) || ( dlrate->GetValue() == (int)UNLIMITED ) ) { dlrate->SetValue( event.GetPosition() * 4 ); } } } } void PrefsUnifiedDlg::OnTCPClientPortChange(wxSpinEvent& WXUNUSED(event)) { CastChild(ID_TEXT_CLIENT_UDP_PORT, wxStaticText)->SetLabel( m_ServerTabVisible ? (wxString() << (CastChild(IDC_PORT, wxSpinCtrl)->GetValue() + 3)) : wxString(_("disabled"))); } void PrefsUnifiedDlg::OnUserEventSelected(wxListEvent& event) { for (unsigned int i = 0; i < CUserEvents::GetCount(); ++i) { IDC_PREFS_EVENTS_PAGE->Hide(i+1); } IDC_PREFS_EVENTS_PAGE->Show((event.GetData() - USEREVENTS_FIRST_ID) / USEREVENTS_IDS_PER_EVENT + 1, true); IDC_PREFS_EVENTS_PAGE->Layout(); event.Skip(); } void PrefsUnifiedDlg::OnLanguageChoice(wxCommandEvent &evt) { thePrefs::GetCfgLang()->UpdateChoice(evt.GetSelection()); } void PrefsUnifiedDlg::CreateEventPanels(const int idx, const wxString& vars, wxWindow* parent) { wxStaticBox *item8 = new wxStaticBox( parent, -1, CFormat(_("Execute command on '%s' event")) % wxGetTranslation(CUserEvents::GetDisplayName(static_cast(idx))) ); wxStaticBoxSizer *item7 = new wxStaticBoxSizer( item8, wxVERTICAL ); wxCheckBox *item9 = new wxCheckBox( parent, USEREVENTS_FIRST_ID + idx * USEREVENTS_IDS_PER_EVENT + 1, _("Enable command execution on core"), wxDefaultPosition, wxDefaultSize, 0 ); item7->Add( item9, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 ); wxFlexGridSizer *item10 = new wxFlexGridSizer( 3, 0, 0 ); item10->AddGrowableCol( 2 ); item10->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 0 ); wxStaticText *item11 = new wxStaticText( parent, -1, _("Core command:"), wxDefaultPosition, wxDefaultSize, 0 ); item10->Add( item11, 0, wxALIGN_CENTER|wxALL, 5 ); wxTextCtrl *item12 = new wxTextCtrl( parent, USEREVENTS_FIRST_ID + idx * USEREVENTS_IDS_PER_EVENT + 2, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); item12->Enable(CUserEvents::IsCoreCommandEnabled(static_cast(idx))); item10->Add( item12, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); item7->Add( item10, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 0 ); wxCheckBox *item14 = new wxCheckBox( parent, USEREVENTS_FIRST_ID + idx * USEREVENTS_IDS_PER_EVENT + 3, _("Enable command execution on GUI"), wxDefaultPosition, wxDefaultSize, 0 ); item7->Add( item14, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5 ); wxFlexGridSizer *item15 = new wxFlexGridSizer( 3, 0, 0 ); item15->AddGrowableCol( 2 ); item15->Add( 20, 20, 0, wxALIGN_CENTER|wxALL, 0 ); wxStaticText *item16 = new wxStaticText( parent, -1, _("GUI command:"), wxDefaultPosition, wxDefaultSize, 0 ); item15->Add( item16, 0, wxALIGN_CENTER|wxALL, 5 ); wxTextCtrl *item17 = new wxTextCtrl( parent, USEREVENTS_FIRST_ID + idx * USEREVENTS_IDS_PER_EVENT + 4, wxT(""), wxDefaultPosition, wxDefaultSize, 0 ); item17->Enable(CUserEvents::IsGUICommandEnabled(static_cast(idx))); item15->Add( item17, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); item7->Add( item15, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 0 ); wxStaticText *item13 = new wxStaticText( parent, -1, _("The following variables will be replaced:") + vars, wxDefaultPosition, wxDefaultSize, 0 ); item7->Add( item13, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5 ); IDC_PREFS_EVENTS_PAGE->Add(item7, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5); IDC_PREFS_EVENTS_PAGE->Layout(); IDC_PREFS_EVENTS_PAGE->Hide(idx + 1); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/PrefsUnifiedDlg.h0000644000175000017500000000734012611472361021461 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Original author: Emilio Sandoz // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef __PrefsUnifiedDlg_H__ #define __PrefsUnifiedDlg_H__ #include // Needed for wxDialog class Cfg_Base; class CDirectoryTreeCtrl; class wxWindow; class wxChoice; class wxButton; class wxPanel; class wxListCtrl; class wxCommandEvent; class wxListEvent; class wxSpinEvent; class wxScrollEvent; class wxInitDialogEvent; /** * This class represents a dialog used to display preferences. */ class PrefsUnifiedDlg : public wxDialog { public: /** * Constructor. * * @param parent The parent window. * * This constructor is a much more simple version of the wxDialog one, * which only needs to know the parent of the dialog. Please note that * it is private so that we can ensure that only one dialog has been * created at one time. */ PrefsUnifiedDlg(wxWindow* parent); /** * Updates the widgets with the values of the preference-variables. */ bool TransferFromWindow(); /** * Updates the prefernce-variables with the values of the widgets. */ bool TransferToWindow(); protected: /** * Helper functions which checks if a Cfg has has changed. */ bool CfgChanged(int id); /** * Helper functions which returns the Cfg assosiated with the specified id. */ Cfg_Base* GetCfg(int id); //! Pointer to the shared-files list CDirectoryTreeCtrl* m_ShareSelector; //! Pointer to the color-selector wxChoice* m_choiceColor; //! Pointer to the color-selection button wxButton* m_buttonColor; //! Pointer to the currently shown preference-page wxPanel* m_CurrentPanel; //! hide/show server tab int m_IndexServerTab; bool m_ServerTabVisible; wxPanel* m_ServerWidget; wxListCtrl* m_PrefsIcons; void EnableServerTab(bool enable); void OnOk(wxCommandEvent &event); void OnCancel(wxCommandEvent &event); void OnClose(wxCloseEvent &event); void OnButtonBrowseApplication(wxCommandEvent &event); void OnButtonDir(wxCommandEvent& event); void OnButtonEditAddr(wxCommandEvent& event); void OnButtonColorChange(wxCommandEvent &event); void OnButtonIPFilterReload(wxCommandEvent &event); void OnButtonIPFilterUpdate(wxCommandEvent &event); void OnColorCategorySelected(wxCommandEvent &event); void OnCheckBoxChange(wxCommandEvent &event); void OnPrefsPageChange(wxListEvent& event); void OnToolTipDelayChange(wxSpinEvent& event); void OnScrollBarChange( wxScrollEvent& event ); void OnRateLimitChanged( wxSpinEvent& event ); void OnTCPClientPortChange(wxSpinEvent& event); void OnUserEventSelected(wxListEvent& event); void OnLanguageChoice(wxCommandEvent &event); void CreateEventPanels(const int idx, const wxString& vars, wxWindow* parent); void OnInitDialog( wxInitDialogEvent& evt ); DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Proxy.cpp0000644000175000017500000012004312611472361020117 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "Proxy.h" /* for Interface */ #include #include "ArchSpecific.h" /* for ENDIAN_HTONS() */ #include "Logger.h" /* for AddDebugLogLineN */ #include "OtherFunctions.h" /* for EncodeBase64() */ #include /* for unicode2char */ #include "GuiEvents.h" //------------------------------------------------------------------------------ // CProxyData //------------------------------------------------------------------------------ CProxyData::CProxyData() { Clear(); } CProxyData::CProxyData( bool proxyEnable, CProxyType proxyType, const wxString &proxyHostName, unsigned short proxyPort, bool enablePassword, const wxString &userName, const wxString &password) : m_proxyEnable(proxyEnable), m_proxyType(proxyType), m_proxyHostName(proxyHostName), m_proxyPort(proxyPort), /* * The flag m_enablePassword is currently not used. The first * authentication method tryed is No-Authentication, the second * is username/password. If there is no username/password in * CProxyData, a NULL username/password is sent. That will probably * lead to a failure, but at least we tryed. Maybe this behaviour * could be altered later. */ m_enablePassword(enablePassword), m_userName(userName), m_password(password) { } void CProxyData::Clear() { m_proxyEnable = false; m_proxyType = PROXY_NONE; m_proxyHostName.Clear(); m_proxyPort = 0; m_enablePassword = false; m_userName.Clear(); m_password.Clear(); } #ifndef CLIENT_GUI #include // Do_not_auto_remove (NetBSD, older gccs) //------------------------------------------------------------------------------ // ProxyEventHandler //------------------------------------------------------------------------------ CProxyEventHandler::CProxyEventHandler() { } BEGIN_EVENT_TABLE(CProxyEventHandler, wxEvtHandler) EVT_SOCKET(ID_PROXY_SOCKET_EVENT, CProxyEventHandler::ProxySocketHandler) END_EVENT_TABLE() // // THE one and only Event Handler // static CProxyEventHandler g_proxyEventHandler; void CProxyEventHandler::ProxySocketHandler(wxSocketEvent& event) { CProxySocket *sock = dynamic_cast(event.GetSocket()); if (sock) { sock->m_proxyStateMachine->Schedule(event.GetSocketEvent()); sock->m_proxyStateMachine->Clock(); } else { // we're doomed :) } } // // In Asio mode the event handler is: // void CProxySocket::OnProxyEvent(int evt) { m_proxyStateMachine->Schedule(evt); m_proxyStateMachine->Clock(); } //------------------------------------------------------------------------------ // CProxyStateMachine //------------------------------------------------------------------------------ CProxyStateMachine::CProxyStateMachine( wxString name, const unsigned int max_states, const CProxyData &proxyData, CProxyCommand proxyCommand) : CStateMachine(NewName(name, proxyCommand), max_states, PROXY_STATE_START), m_proxyData(proxyData), m_proxyCommand(proxyCommand), m_isLost(false), m_isConnected(false), m_canReceive(false), m_canSend(false), m_ok(true), m_lastRead(0), // Will be initialized at Start() m_peerAddress(NULL), m_proxyClientSocket(NULL), m_proxyBoundAddress(NULL), // Temporary variables m_lastReply(0), m_packetLenght(0) { } CProxyStateMachine::~CProxyStateMachine() { delete m_peerAddress; } wxString &CProxyStateMachine::NewName(wxString &s, CProxyCommand proxyCommand) { switch (proxyCommand) { case PROXY_CMD_CONNECT: s += wxT("-CONNECT"); break; case PROXY_CMD_BIND: s += wxT("-BIND"); break; case PROXY_CMD_UDP_ASSOCIATE: s += wxT("-UDP"); break; } return s; } bool CProxyStateMachine::Start(const amuleIPV4Address &peerAddress, CLibSocket *proxyClientSocket) { m_proxyClientSocket = proxyClientSocket; m_peerAddress = new amuleIPV4Address(peerAddress); //try { // const wxIPV4address &peer = dynamic_cast(peerAddress); // m_peerAddress = new amuleIPV4Address(peer); //} catch (const std::bad_cast& WXUNUSED(e)) { // // Should process other types of wxIPAddres before quitting // AddDebugLogLineN(logProxy, wxT("(1)bad_cast exception!")); // wxFAIL; // return false; //} // To run the state machine, return and just let the events start to happen. return true; } static const int MULE_SOCKET_DUMMY_VALUE = MULE_SOCKET_INPUT + MULE_SOCKET_OUTPUT + MULE_SOCKET_CONNECTION + MULE_SOCKET_LOST; t_sm_state CProxyStateMachine::HandleEvent(t_sm_event event) { // Default is stay in current state t_sm_state ret = GetState(); switch(event) { case MULE_SOCKET_CONNECTION: AddDebugLogLineN(logProxy, wxT("Connection event")); m_isConnected = true; break; case MULE_SOCKET_INPUT: AddDebugLogLineN(logProxy, wxT("Input event")); m_canReceive = true; break; case MULE_SOCKET_OUTPUT: AddDebugLogLineN(logProxy, wxT("Output event")); m_canSend = true; break; case MULE_SOCKET_LOST: AddDebugLogLineN(logProxy, wxT("Lost connection event")); m_isLost = true; m_ok = false; break; case MULE_SOCKET_DUMMY_VALUE: AddDebugLogLineN(logProxy, wxT("Dummy event")); break; default: AddDebugLogLineN(logProxy, CFormat(wxT("Unknown event %d")) % event); break; } // Aborting conditions: // - MULE_SOCKET_LOST event // - More than 10 times on the same state if ( m_isLost || GetClocksInCurrentState() > 10) { ret = PROXY_STATE_END; } return ret; } void CProxyStateMachine::AddDummyEvent() { #ifdef ASIO_SOCKETS CProxySocket *s = dynamic_cast(m_proxyClientSocket); if (s) { // should always be CoreNotify_ProxySocketEvent(s, MULE_SOCKET_DUMMY_VALUE); } #else wxSocketEvent e(ID_PROXY_SOCKET_EVENT); // Make sure this is an unknown event :) e.m_event = (wxSocketNotify)(MULE_SOCKET_DUMMY_VALUE); e.SetEventObject(m_proxyClientSocket); g_proxyEventHandler.AddPendingEvent(e); #endif } void CProxyStateMachine::ReactivateSocket() { /* If proxy is beeing used, then the TCP socket handlers * (CServerSocketHandler and CClientTCPSocketHandler) will not * receive a wxSOCKET_CONNECTION event, because the connection has * already started with the proxy. So we must add a wxSOCKET_CONNECTION * event to make things go undetected. A wxSOCKET_OUTPUT event is also * necessary to start sending data to the server. */ CProxySocket *s = dynamic_cast(m_proxyClientSocket); // If that is not true, we are in serious trouble... wxASSERT(s); if (CDatagramSocketProxy *udp = s->GetUDPSocket()) { // The original socket was a UDP socket if(m_ok) { // From now on, the UDP socket can be used, // remove the protection. udp->SetUDPSocketOk(); } // No need to call RestoreState(), that socket will no longer // be used after proxy negotiation. } else { // The original socket was a TCP socket #ifdef ASIO_SOCKETS if (s->GetProxyState()) { // somehow this gets called twice ? s->SetProxyState(false); CoreNotify_LibSocketConnect(s, 0); if (m_ok) { CoreNotify_LibSocketSend(s, 0); } else { CoreNotify_LibSocketLost(s); } } #else s->RestoreEventHandler(); wxSocketEvent e(s->GetEventHandlerId()); e.m_event = wxSOCKET_CONNECTION; e.SetEventObject(s); wxEvtHandler *h(s->GetEventHandler()); h->AddPendingEvent(e); e.m_event = wxSOCKET_OUTPUT; h->AddPendingEvent(e); if (!m_ok) { e.m_event = wxSOCKET_LOST; h->AddPendingEvent(e); } s->RestoreState(); #endif } } uint32 CProxyStateMachine::ProxyWrite(CLibSocket &socket, const void *buffer, wxUint32 nbytes) { uint32 written = socket.Write(buffer, nbytes); /* Set the status of this operation */ m_ok = true; if (m_proxyClientSocket->BlocksWrite()) { m_lastError = 0; m_canSend = false; } else if ((m_lastError = m_proxyClientSocket->LastError()) != 0) { m_ok = false; } AddDebugLogLineN(logProxy, CFormat(wxT("ProxyWrite %d %d ok %d cansend %d")) % nbytes % written % m_ok % m_canSend); return written; } uint32 CProxyStateMachine::ProxyRead(CLibSocket &socket, void *buffer) { /* Always try to read the full buffer. That explicitly demands that * the socket has the flag wxSOCKET_NONE. */ m_lastRead = socket.Read(buffer, PROXY_BUFFER_SIZE); /* Set the status of this operation */ m_ok = true; if (m_proxyClientSocket->BlocksRead()) { m_lastError = 0; m_canReceive = false; } else if ((m_lastError = m_proxyClientSocket->LastError()) != 0) { m_ok = false; } #ifdef ASIO_SOCKETS // We will get a new event right away if data is left, or when new data gets available. // So block for now. m_canReceive = false; #endif AddDebugLogLineN(logProxy, CFormat(wxT("ProxyRead %d ok %d canrec %d")) % m_lastRead % m_ok % m_canReceive); return m_lastRead; } bool CProxyStateMachine::CanReceive() const { return m_canReceive; } bool CProxyStateMachine::CanSend() const { return m_canSend; } //------------------------------------------------------------------------------ // CSocks5StateMachine //------------------------------------------------------------------------------ /** * The state machine constructor must initialize the array of pointer to member * functions. Don't waste you time trying to statically initialize this, pointer * to member functions require an object to operate on, so this array must be * initialized at run time. */ CSocks5StateMachine::CSocks5StateMachine( const CProxyData &proxyData, CProxyCommand proxyCommand) : CProxyStateMachine( wxString(wxT("Socks5")), SOCKS5_MAX_STATES, proxyData, proxyCommand) { m_process_state[ 0] = &CSocks5StateMachine::process_start; m_state_name[ 0] = wxT("process_start"); m_process_state[ 1] = &CSocks5StateMachine::process_end; m_state_name[ 1] = wxT("process_end"); m_process_state[ 2] = &CSocks5StateMachine::process_send_query_authentication_method; m_state_name[ 2] = wxT("process_send_query_authentication_method"); m_process_state[ 3] = &CSocks5StateMachine::process_receive_authentication_method; m_state_name[ 3] = wxT("process_receive_authentication_method"); m_process_state[ 4] = &CSocks5StateMachine::process_process_authentication_method; m_state_name[ 4] = wxT("process_process_authentication_method"); m_process_state[ 5] = &CSocks5StateMachine::process_send_authentication_gssapi; m_state_name[ 5] = wxT("process_send_authentication_gssapi"); m_process_state[ 6] = &CSocks5StateMachine::process_receive_authentication_gssapi; m_state_name[ 6] = wxT("process_receive_authentication_gssapi"); m_process_state[ 7] = &CSocks5StateMachine::process_process_authentication_gssapi; m_state_name[ 7] = wxT("process_process_authentication_gssapi"); m_process_state[ 8] = &CSocks5StateMachine::process_send_authentication_username_password; m_state_name[ 8] = wxT("process_send_authentication_username_password"); m_process_state[ 9] = &CSocks5StateMachine::process_receive_authentication_username_password; m_state_name[ 9] = wxT("process_receive_authentication_username_password"); m_process_state[10] = &CSocks5StateMachine::process_process_authentication_username_password; m_state_name[10] = wxT("process_process_authentication_username_password"); m_process_state[11] = &CSocks5StateMachine::process_send_command_request; m_state_name[11] = wxT("process_send_command_request"); m_process_state[12] = &CSocks5StateMachine::process_receive_command_reply; m_state_name[12] = wxT("process_receive_command_reply"); m_process_state[13] = &CSocks5StateMachine::process_process_command_reply; m_state_name[13] = wxT("process_process_command_reply"); } void CSocks5StateMachine::process_state(t_sm_state state, bool entry) { /* Ok, the syntax is terrible, but this is correct. This is a * pointer to a member function. No C equivalent for that. */ (this->*m_process_state[state])(entry); #ifdef __DEBUG__ int n = 0; switch (state) { case SOCKS5_STATE_START: case SOCKS5_STATE_END: case SOCKS5_STATE_RECEIVE_AUTHENTICATION_METHOD: case SOCKS5_STATE_RECEIVE_AUTHENTICATION_GSSAPI: case SOCKS5_STATE_RECEIVE_AUTHENTICATION_USERNAME_PASSWORD: case SOCKS5_STATE_RECEIVE_COMMAND_REPLY: default: n = 0; break; case SOCKS5_STATE_SEND_QUERY_AUTHENTICATION_METHOD: case SOCKS5_STATE_SEND_AUTHENTICATION_GSSAPI: case SOCKS5_STATE_SEND_AUTHENTICATION_USERNAME_PASSWORD: case SOCKS5_STATE_SEND_COMMAND_REQUEST: n = m_packetLenght; break; case SOCKS5_STATE_PROCESS_AUTHENTICATION_METHOD: case SOCKS5_STATE_PROCESS_AUTHENTICATION_GSSAPI: case SOCKS5_STATE_PROCESS_AUTHENTICATION_USERNAME_PASSWORD: case SOCKS5_STATE_PROCESS_COMMAND_REPLY: n = m_lastRead; break; } if (entry) { DumpMem(m_buffer, n, m_state_name[state], m_ok); } else { AddDebugLogLineN(logProxy, wxString(wxT("wait state -- ")) << m_state_name[state]); } #endif // __DEBUG__ } /** * Code this such that the next state is only entered when it is able to * perform the operation (read or write). State processing will assume * that it can read or write upon entry of the state. This is done using * CanSend() and CanReceive(). */ t_sm_state CSocks5StateMachine::next_state(t_sm_event event) { // Default is stay in current state t_sm_state ret = HandleEvent(event); switch (GetState()) { case SOCKS5_STATE_START: if (m_isConnected && !m_isLost && CanSend()) { ret = SOCKS5_STATE_SEND_QUERY_AUTHENTICATION_METHOD; } break; case SOCKS5_STATE_SEND_QUERY_AUTHENTICATION_METHOD: if (CanReceive()) { ret = SOCKS5_STATE_RECEIVE_AUTHENTICATION_METHOD; } break; case SOCKS5_STATE_RECEIVE_AUTHENTICATION_METHOD: ret = SOCKS5_STATE_PROCESS_AUTHENTICATION_METHOD; break; case SOCKS5_STATE_PROCESS_AUTHENTICATION_METHOD: if (m_ok) { if (CanSend()) { switch (m_lastReply) { case SOCKS5_AUTH_METHOD_NO_AUTH_REQUIRED: ret = SOCKS5_STATE_SEND_COMMAND_REQUEST; break; case SOCKS5_AUTH_METHOD_GSSAPI: ret = SOCKS5_STATE_SEND_AUTHENTICATION_GSSAPI; break; case SOCKS5_AUTH_METHOD_USERNAME_PASSWORD: ret = SOCKS5_STATE_SEND_AUTHENTICATION_USERNAME_PASSWORD; break; case SOCKS5_AUTH_METHOD_NO_ACCEPTABLE_METHODS: default: ret = SOCKS5_STATE_END; break; } } else { AddDebugLogLineN(logProxy, wxT("Can't send")); } } else { ret = SOCKS5_STATE_END; } break; case SOCKS5_STATE_SEND_AUTHENTICATION_GSSAPI: if (m_ok) { if (CanReceive()) { ret = SOCKS5_STATE_RECEIVE_AUTHENTICATION_GSSAPI; } } else { ret = SOCKS5_STATE_END; } break; case SOCKS5_STATE_SEND_AUTHENTICATION_USERNAME_PASSWORD: if (m_ok) { if (CanReceive()) { ret = SOCKS5_STATE_RECEIVE_AUTHENTICATION_USERNAME_PASSWORD; } } else { ret = SOCKS5_STATE_END; } break; case SOCKS5_STATE_RECEIVE_AUTHENTICATION_GSSAPI: ret = SOCKS5_STATE_PROCESS_AUTHENTICATION_GSSAPI; break; case SOCKS5_STATE_RECEIVE_AUTHENTICATION_USERNAME_PASSWORD: ret = SOCKS5_STATE_PROCESS_AUTHENTICATION_USERNAME_PASSWORD; break; case SOCKS5_STATE_PROCESS_AUTHENTICATION_GSSAPI: case SOCKS5_STATE_PROCESS_AUTHENTICATION_USERNAME_PASSWORD: if (m_ok) { if (CanSend()) { ret = SOCKS5_STATE_SEND_COMMAND_REQUEST; } } else { ret = SOCKS5_STATE_END; } break; case SOCKS5_STATE_SEND_COMMAND_REQUEST: if (m_ok) { if (CanReceive()) { ret = SOCKS5_STATE_RECEIVE_COMMAND_REPLY; } } else { ret = SOCKS5_STATE_END; } break; case SOCKS5_STATE_RECEIVE_COMMAND_REPLY: ret = SOCKS5_STATE_PROCESS_COMMAND_REPLY; break; case SOCKS5_STATE_PROCESS_COMMAND_REPLY: ret = SOCKS5_STATE_END; break; case SOCKS5_STATE_END: default: break; } return ret; } /** * So, this is how you do it: the state machine is clocked by the events * that happen inside the event handler. You can add a dummy event whenever * you see that the system will not generate an event. But don't add dummy * events before reads, reads should only be performed after input events. * * Maybe it makes sense to add a dummy event before a read if there is no * state change (wait state). * * The event system will generate at least 2 events, one wxSOCKET_CONNECTION, * one wxSOCKET_OUTPUT, so we will have 2 clocks in our state machine. Plus, each * time there is unread data in the receive buffer of the socket, a wxSOCKET_INPUT * event will be generated. If you feel you will need more clocks than these, use * AddDummyEvent(), but I suggest you review your state machine design first. */ void CSocks5StateMachine::process_start(bool) {} void CSocks5StateMachine::process_end(bool) { ReactivateSocket(); } void CSocks5StateMachine::process_send_query_authentication_method(bool entry) { if (entry) { // Prepare the authentication method negotiation packet m_buffer[0] = SOCKS5_VERSION; m_buffer[1] = 2; // Number of supported methods //m_buffer[1] = 3; // Number of supported methods m_buffer[2] = SOCKS5_AUTH_METHOD_NO_AUTH_REQUIRED; m_buffer[3] = SOCKS5_AUTH_METHOD_USERNAME_PASSWORD; m_buffer[4] = SOCKS5_AUTH_METHOD_GSSAPI; m_packetLenght = 4; //m_packetLenght = 5; // Send the authentication method negotiation packet ProxyWrite(*m_proxyClientSocket, m_buffer, m_packetLenght); } } void CSocks5StateMachine::process_receive_authentication_method(bool entry) { if (entry) { // Receive the method selection message m_packetLenght = 2; ProxyRead(*m_proxyClientSocket, m_buffer); } /* This is added because there will be no more input events. If the * world was a nice place, we could think about joining the * process_receive and the process_process states here, but some day * we might have to deal with the fact that the i/o operation has been * incomplete, and that we must finish our job the next time we enter * this state. */ AddDummyEvent(); } void CSocks5StateMachine::process_process_authentication_method(bool entry) { if (entry) { m_lastReply = m_buffer[1]; m_ok = m_ok && m_buffer[0] == SOCKS5_VERSION; } /* Ok, this one is here because wxSOCKET_OUTPUT events only happen * once when you connect the socket, and after that, only after a * wxSOCKET_WOULDBLOCK error happens. */ AddDummyEvent(); } void CSocks5StateMachine::process_send_authentication_gssapi(bool) { // TODO or not TODO? That is the question... m_ok = false; } void CSocks5StateMachine::process_receive_authentication_gssapi(bool) { AddDummyEvent(); } void CSocks5StateMachine::process_process_authentication_gssapi(bool) { AddDummyEvent(); } void CSocks5StateMachine::process_send_authentication_username_password(bool entry) { if (entry) { unsigned char lenUser = m_proxyData.m_userName.Len(); unsigned char lenPassword = m_proxyData.m_password.Len(); m_packetLenght = 1 + 1 + lenUser + 1 + lenPassword; unsigned int offsetUser = 2; unsigned int offsetPassword = offsetUser + lenUser + 1; // Prepare username/password buffer m_buffer[0] = SOCKS5_AUTH_VERSION_USERNAME_PASSWORD; m_buffer[offsetUser-1] = lenUser; memcpy(m_buffer+offsetUser, unicode2char(m_proxyData.m_userName), lenUser); m_buffer[offsetPassword-1] = lenPassword; memcpy(m_buffer+offsetPassword, unicode2char(m_proxyData.m_password), lenPassword); // Send the username/password packet ProxyWrite(*m_proxyClientSocket, m_buffer, m_packetLenght); } } void CSocks5StateMachine::process_receive_authentication_username_password(bool entry) { if (entry) { // Receive the server's authentication response m_packetLenght = 2; ProxyRead(*m_proxyClientSocket, m_buffer); } AddDummyEvent(); } void CSocks5StateMachine::process_process_authentication_username_password(bool entry) { if (entry) { // Process the server's reply m_lastReply = m_buffer[1]; m_ok = m_ok && m_buffer[0] == SOCKS5_AUTH_VERSION_USERNAME_PASSWORD && m_buffer[1] == SOCKS5_REPLY_SUCCEED; } AddDummyEvent(); } void CSocks5StateMachine::process_send_command_request(bool entry) { if (entry) { // Prepare the request command buffer m_buffer[0] = SOCKS5_VERSION; switch (m_proxyCommand) { case PROXY_CMD_CONNECT: m_buffer[1] = SOCKS5_CMD_CONNECT; break; case PROXY_CMD_BIND: m_buffer[1] = SOCKS5_CMD_BIND; break; case PROXY_CMD_UDP_ASSOCIATE: m_buffer[1] = SOCKS5_CMD_UDP_ASSOCIATE; break; } m_buffer[2] = SOCKS5_RSV; m_buffer[3] = SOCKS5_ATYP_IPV4_ADDRESS; PokeUInt32( m_buffer+4, StringIPtoUint32(m_peerAddress->IPAddress()) ); RawPokeUInt16( m_buffer+8, ENDIAN_HTONS( m_peerAddress->Service() ) ); // Send the command packet m_packetLenght = 10; ProxyWrite(*m_proxyClientSocket, m_buffer, m_packetLenght); } } void CSocks5StateMachine::process_receive_command_reply(bool entry) { if (entry) { // The minimum number of bytes to read is 10 in the case of // ATYP == SOCKS5_ATYP_IPV4_ADDRESS m_packetLenght = 10; ProxyRead(*m_proxyClientSocket, m_buffer); } AddDummyEvent(); } void CSocks5StateMachine::process_process_command_reply(bool entry) { if (entry) { m_lastReply = m_buffer[1]; unsigned char addressType = m_buffer[3]; // Process the server's reply m_ok = m_ok && m_buffer[0] == SOCKS5_VERSION && m_buffer[1] == SOCKS5_REPLY_SUCCEED; if (m_ok) { // Read BND.ADDR unsigned int portOffset = 0; switch(addressType) { case SOCKS5_ATYP_IPV4_ADDRESS: { const unsigned int addrOffset = 4; portOffset = 8; m_proxyBoundAddressIPV4.Hostname( PeekUInt32( m_buffer+addrOffset) ); m_proxyBoundAddress = &m_proxyBoundAddressIPV4; break; } case SOCKS5_ATYP_DOMAINNAME: { // Read the domain name const unsigned int addrOffset = 5; portOffset = 10 + m_buffer[4]; char c = m_buffer[portOffset]; m_buffer[portOffset] = 0; m_proxyBoundAddressIPV4.Hostname( char2unicode(m_buffer+addrOffset)); m_proxyBoundAddress = &m_proxyBoundAddressIPV4; m_buffer[portOffset] = c; break; } case SOCKS5_ATYP_IPV6_ADDRESS: { portOffset = 20; // TODO // IPV6 not yet implemented in wx //m_proxyBoundAddress.Hostname(Uint128toStringIP( // *((uint128 *)(m_buffer+addrOffset)) )); //m_proxyBoundAddress = &m_proxyBoundAddressIPV6; m_ok = false; break; } } // Set the packet length at last m_packetLenght = portOffset + 2; // Read BND.PORT m_proxyBoundAddress->Service( ENDIAN_NTOHS( RawPeekUInt16( m_buffer+portOffset) ) ); } } AddDummyEvent(); } //------------------------------------------------------------------------------ // CSocks4StateMachine //------------------------------------------------------------------------------ CSocks4StateMachine::CSocks4StateMachine( const CProxyData &proxyData, CProxyCommand proxyCommand) : CProxyStateMachine( wxString(wxT("Socks4")), SOCKS4_MAX_STATES, proxyData, proxyCommand) { m_process_state[0] = &CSocks4StateMachine::process_start; m_state_name[0] = wxT("process_start"); m_process_state[1] = &CSocks4StateMachine::process_end; m_state_name[1] = wxT("process_end"); m_process_state[2] = &CSocks4StateMachine::process_send_command_request; m_state_name[2] = wxT("process_send_command_request"); m_process_state[3] = &CSocks4StateMachine::process_receive_command_reply; m_state_name[3] = wxT("process_receive_command_reply"); m_process_state[4] = &CSocks4StateMachine::process_process_command_reply; m_state_name[4] = wxT("process_process_command_reply"); } void CSocks4StateMachine::process_state(t_sm_state state, bool entry) { (this->*m_process_state[state])(entry); #ifdef __DEBUG__ int n = 0; switch (state) { case SOCKS4_STATE_START: case SOCKS4_STATE_END: case SOCKS4_STATE_RECEIVE_COMMAND_REPLY: default: n = 0; break; case SOCKS4_STATE_SEND_COMMAND_REQUEST: n = m_packetLenght; break; case SOCKS4_STATE_PROCESS_COMMAND_REPLY: n = m_lastRead; break; } if (entry) { DumpMem(m_buffer, n, m_state_name[state], m_ok); } else { AddDebugLogLineN(logProxy, wxString(wxT("wait state -- ")) << m_state_name[state]); } #endif // __DEBUG__ } t_sm_state CSocks4StateMachine::next_state(t_sm_event event) { // Default is stay in current state t_sm_state ret = HandleEvent(event); switch (GetState()) { case SOCKS4_STATE_START: if (m_isConnected && !m_isLost && CanSend()) { ret = SOCKS4_STATE_SEND_COMMAND_REQUEST; } break; case SOCKS4_STATE_SEND_COMMAND_REQUEST: if (m_ok) { if (CanReceive()) { ret = SOCKS4_STATE_RECEIVE_COMMAND_REPLY; } } else { ret = SOCKS4_STATE_END; } break; case SOCKS4_STATE_RECEIVE_COMMAND_REPLY: ret = SOCKS4_STATE_PROCESS_COMMAND_REPLY; break; case SOCKS4_STATE_PROCESS_COMMAND_REPLY: ret = SOCKS4_STATE_END; break; case SOCKS4_STATE_END: default: break; } return ret; } void CSocks4StateMachine::process_start(bool) {} void CSocks4StateMachine::process_end(bool) { ReactivateSocket(); } void CSocks4StateMachine::process_send_command_request(bool entry) { if (entry) { // Prepare the request command buffer m_buffer[0] = SOCKS4_VERSION; switch (m_proxyCommand) { case PROXY_CMD_CONNECT: m_buffer[1] = SOCKS4_CMD_CONNECT; break; case PROXY_CMD_BIND: m_buffer[1] = SOCKS4_CMD_BIND; break; case PROXY_CMD_UDP_ASSOCIATE: m_ok = false; return; break; } RawPokeUInt16(m_buffer+2, ENDIAN_HTONS(m_peerAddress->Service())); // Special processing for SOCKS4a switch (m_proxyData.m_proxyType) { case PROXY_SOCKS4a: PokeUInt32(m_buffer+4, StringIPtoUint32(wxT("0.0.0.1"))); break; case PROXY_SOCKS4: default: PokeUInt32(m_buffer+4, StringIPtoUint32(m_peerAddress->IPAddress())); break; } // Common processing for SOCKS4/SOCKS4a unsigned int offsetUser = 8; unsigned char lenUser = m_proxyData.m_userName.Len(); memcpy(m_buffer + offsetUser, unicode2char(m_proxyData.m_userName), lenUser); m_buffer[offsetUser + lenUser] = 0; // Special processing for SOCKS4a switch (m_proxyData.m_proxyType) { case PROXY_SOCKS4a: { unsigned int offsetDomain = offsetUser + lenUser + 1; // The Hostname() method was used here before, but I don't see why we can't use // the IP address which we actually know instead here. wxString hostname(m_peerAddress->IPAddress()); unsigned char lenDomain = hostname.Len(); memcpy(m_buffer + offsetDomain, unicode2char(hostname), lenDomain); m_buffer[offsetDomain + lenDomain] = 0; m_packetLenght = 1 + 1 + 2 + 4 + lenUser + 1 + lenDomain + 1; break; } case PROXY_SOCKS4: default: m_packetLenght = 1 + 1 + 2 + 4 + lenUser + 1; break; } // Send the command packet ProxyWrite(*m_proxyClientSocket, m_buffer, m_packetLenght); } } void CSocks4StateMachine::process_receive_command_reply(bool entry) { if (entry) { // Receive the server's reply m_packetLenght = 8; ProxyRead(*m_proxyClientSocket, m_buffer); } AddDummyEvent(); } void CSocks4StateMachine::process_process_command_reply(bool entry) { if (entry) { m_lastReply = m_buffer[1]; // Process the server's reply m_ok = m_ok && m_buffer[0] == SOCKS4_REPLY_CODE && m_buffer[1] == SOCKS4_REPLY_GRANTED; if (m_ok) { // Read BND.PORT const unsigned int portOffset = 2; m_ok = m_proxyBoundAddressIPV4.Service(ENDIAN_NTOHS( RawPeekUInt16( m_buffer+portOffset) ) ); // Read BND.ADDR const unsigned int addrOffset = 4; m_ok = m_ok && m_proxyBoundAddressIPV4.Hostname( PeekUInt32( m_buffer+addrOffset ) ); m_proxyBoundAddress = &m_proxyBoundAddressIPV4; } } AddDummyEvent(); } //------------------------------------------------------------------------------ // CHttpStateMachine //------------------------------------------------------------------------------ CHttpStateMachine::CHttpStateMachine( const CProxyData &proxyData, CProxyCommand proxyCommand) : CProxyStateMachine( wxString(wxT("Http")), HTTP_MAX_STATES, proxyData, proxyCommand) { m_process_state[0] = &CHttpStateMachine::process_start; m_state_name[0] = wxT("process_start"); m_process_state[1] = &CHttpStateMachine::process_end; m_state_name[1] = wxT("process_end"); m_process_state[2] = &CHttpStateMachine::process_send_command_request; m_state_name[2] = wxT("process_send_command_request"); m_process_state[3] = &CHttpStateMachine::process_receive_command_reply; m_state_name[3] = wxT("process_receive_command_reply"); m_process_state[4] = &CHttpStateMachine::process_process_command_reply; m_state_name[4] = wxT("process_process_command_reply"); } void CHttpStateMachine::process_state(t_sm_state state, bool entry) { (this->*m_process_state[state])(entry); #ifdef __DEBUG__ int n = 0; switch (state) { case HTTP_STATE_START: case HTTP_STATE_END: case HTTP_STATE_RECEIVE_COMMAND_REPLY: default: n = 0; break; case HTTP_STATE_SEND_COMMAND_REQUEST: n = m_packetLenght; break; case HTTP_STATE_PROCESS_COMMAND_REPLY: n = m_lastRead; break; } if (entry) { DumpMem(m_buffer, n, m_state_name[state], m_ok); } else { AddDebugLogLineN(logProxy, wxString(wxT("wait state -- ")) << m_state_name[state]); } #endif // __DEBUG__ } t_sm_state CHttpStateMachine::next_state(t_sm_event event) { // Default is stay in current state t_sm_state ret = HandleEvent(event); switch (GetState()) { case HTTP_STATE_START: if (m_isConnected && !m_isLost && CanSend()) { ret = HTTP_STATE_SEND_COMMAND_REQUEST; } break; case HTTP_STATE_SEND_COMMAND_REQUEST: if (m_ok) { if (CanReceive()) { ret = HTTP_STATE_RECEIVE_COMMAND_REPLY; } } else { ret = HTTP_STATE_END; } break; case HTTP_STATE_RECEIVE_COMMAND_REPLY: ret = HTTP_STATE_PROCESS_COMMAND_REPLY; break; case HTTP_STATE_PROCESS_COMMAND_REPLY: ret = HTTP_STATE_END; break; case HTTP_STATE_END: default: break; } return ret; } void CHttpStateMachine::process_start(bool) {} void CHttpStateMachine::process_end(bool) { ReactivateSocket(); } void CHttpStateMachine::process_send_command_request(bool entry) { if (entry) { // Prepare the request command buffer wxString ip = m_peerAddress->IPAddress(); uint16 port = m_peerAddress->Service(); wxString userPass; wxString userPassEncoded; if (m_proxyData.m_enablePassword) { userPass = m_proxyData.m_userName + wxT(":") + m_proxyData.m_password; userPassEncoded = EncodeBase64(unicode2char(userPass), userPass.Length()); } wxString msg; switch (m_proxyCommand) { case PROXY_CMD_CONNECT: msg << wxT("CONNECT ") << ip << wxT(":") << port << wxT(" HTTP/1.1\r\n") << wxT("Host: ") << ip << wxT(":") << port << wxT("\r\n"); if (m_proxyData.m_enablePassword) { msg << wxT("Authorization: Basic ") << userPassEncoded << wxT("\r\n") << wxT("Proxy-Authorization: Basic ") << userPassEncoded << wxT("\r\n"); } msg << wxT("\r\n"); break; case PROXY_CMD_BIND: m_ok = false; break; case PROXY_CMD_UDP_ASSOCIATE: m_ok = false; return; break; } // Send the command packet m_packetLenght = msg.Len(); memcpy(m_buffer, unicode2char(msg), m_packetLenght+1); ProxyWrite(*m_proxyClientSocket, m_buffer, m_packetLenght); } } void CHttpStateMachine::process_receive_command_reply(bool entry) { if (entry) { // Receive the server's reply -- Use a large number, but don't // Expect to get it all. HTTP protocol does not have a fixed length. m_packetLenght = PROXY_BUFFER_SIZE; ProxyRead(*m_proxyClientSocket, m_buffer); } AddDummyEvent(); } /* * HTTP Proxy server response should be something like: * "HTTP/1.1 200 Connection established\r\n\r\n" * but that may vary. The important thing is the "200" * code, that means success. */ static const char HTTP_AUTH_RESPONSE[] = "HTTP/"; static const int HTTP_AUTH_RESPONSE_LENGHT = strlen(HTTP_AUTH_RESPONSE); void CHttpStateMachine::process_process_command_reply(bool entry) { if (entry) { // The position of the first space in the buffer int i = 8; while (m_buffer[i] == ' ') { i++; } // Process the server's reply m_ok = !memcmp(m_buffer + 0, HTTP_AUTH_RESPONSE, HTTP_AUTH_RESPONSE_LENGHT) && !memcmp(m_buffer + i, "200", 3); } AddDummyEvent(); } //------------------------------------------------------------------------------ // CProxySocket //------------------------------------------------------------------------------ CProxySocket::CProxySocket( muleSocketFlags flags, const CProxyData *proxyData, CProxyCommand proxyCommand, CDatagramSocketProxy *udpSocket) : CLibSocket(flags), m_proxyStateMachine(NULL), m_udpSocket(udpSocket), m_socketEventHandler(NULL), m_socketEventHandlerId(0), m_savedSocketEventHandler(NULL), m_savedSocketEventHandlerId(0) { SetProxyData(proxyData); if (m_useProxy) { switch (m_proxyData.m_proxyType) { case PROXY_NONE: break; case PROXY_SOCKS5: m_proxyStateMachine = new CSocks5StateMachine(*proxyData, proxyCommand); break; case PROXY_SOCKS4: case PROXY_SOCKS4a: m_proxyStateMachine = new CSocks4StateMachine(*proxyData, proxyCommand); break; case PROXY_HTTP: m_proxyStateMachine = new CHttpStateMachine(*proxyData, proxyCommand); break; default: break; } } } CProxySocket::~CProxySocket() { delete m_proxyStateMachine; } void CProxySocket::SetProxyData(const CProxyData *proxyData) { m_useProxy = proxyData != NULL && proxyData->m_proxyEnable; if (proxyData) { m_proxyData = *proxyData; m_proxyAddress.Hostname(m_proxyData.m_proxyHostName); m_proxyAddress.Service(m_proxyData.m_proxyPort); } else { m_proxyData.Clear(); } } bool CProxySocket::Start(const amuleIPV4Address &peerAddress) { #ifdef ASIO_SOCKETS SetProxyState(true, &peerAddress); #else SaveState(); // Important note! SaveState()/RestoreState() DO NOT save/restore // the event handler. The method SaveEventHandler() has been created // for that. SaveEventHandler(); SetEventHandler(g_proxyEventHandler, ID_PROXY_SOCKET_EVENT); SetNotify( wxSOCKET_CONNECTION_FLAG | wxSOCKET_INPUT_FLAG | wxSOCKET_OUTPUT_FLAG | wxSOCKET_LOST_FLAG); Notify(true); #endif Connect(m_proxyAddress, false); SetFlags(MULE_SOCKET_NONE); return m_proxyStateMachine->Start(peerAddress, this); } bool CProxySocket::ProxyIsCapableOf(CProxyCommand proxyCommand) const { bool ret = false; switch (m_proxyData.m_proxyType) { case PROXY_NONE: ret = false; break; case PROXY_SOCKS5: ret = proxyCommand == PROXY_CMD_CONNECT || proxyCommand == PROXY_CMD_BIND || proxyCommand == PROXY_CMD_UDP_ASSOCIATE; break; case PROXY_SOCKS4: case PROXY_SOCKS4a: ret = proxyCommand == PROXY_CMD_CONNECT || proxyCommand == PROXY_CMD_BIND; break; case PROXY_HTTP: ret = proxyCommand == PROXY_CMD_CONNECT; break; } return ret; } //------------------------------------------------------------------------------ // CSocketClientProxy //------------------------------------------------------------------------------ CSocketClientProxy::CSocketClientProxy( muleSocketFlags flags, const CProxyData *proxyData) : CProxySocket(flags, proxyData, PROXY_CMD_CONNECT) { } bool CSocketClientProxy::Connect(amuleIPV4Address &address, bool wait) { wxMutexLocker lock(m_socketLocker); bool ok; if (GetUseProxy() && ProxyIsCapableOf(PROXY_CMD_CONNECT)) { ok = Start(address); } else { ok = CLibSocket::Connect(address, wait); } return ok; } uint32 CSocketClientProxy::Read(void *buffer, wxUint32 nbytes) { wxMutexLocker lock(m_socketLocker); return CProxySocket::Read(buffer, nbytes); } uint32 CSocketClientProxy::Write(const void *buffer, wxUint32 nbytes) { wxMutexLocker lock(m_socketLocker); return CProxySocket::Write(buffer, nbytes); } //------------------------------------------------------------------------------ // CSocketServerProxy //------------------------------------------------------------------------------ CSocketServerProxy::CSocketServerProxy( amuleIPV4Address &address, muleSocketFlags flags, const CProxyData *) : CLibSocketServer(address, flags) { /* Maybe some day when socks6 is out... :) */ } //------------------------------------------------------------------------------ // CDatagramSocketProxy //------------------------------------------------------------------------------ CDatagramSocketProxy::CDatagramSocketProxy( amuleIPV4Address &address, muleSocketFlags flags, const CProxyData *proxyData) : CLibUDPSocket(address, flags), m_proxyTCPSocket(MULE_SOCKET_NOWAIT, proxyData, PROXY_CMD_UDP_ASSOCIATE, this) { m_udpSocketOk = false; if ( m_proxyTCPSocket.GetUseProxy() && m_proxyTCPSocket.ProxyIsCapableOf(PROXY_CMD_UDP_ASSOCIATE)) { m_proxyTCPSocket.Start(address); } else { } m_lastUDPOperation = UDP_OPERATION_NONE; } CDatagramSocketProxy::~CDatagramSocketProxy() { // From RFC-1928: // "A UDP association terminates when the TCP connection that the // UDP ASSOCIATE request arrived terminates." } uint32 CDatagramSocketProxy::RecvFrom(amuleIPV4Address& addr, void* buf, uint32 nBytes) { uint32 read = 0; wxMutexLocker lock(m_socketLocker); m_lastUDPOperation = UDP_OPERATION_RECV_FROM; if (m_proxyTCPSocket.GetUseProxy()) { if (m_udpSocketOk) { char *bufUDP = NULL; if (nBytes + PROXY_UDP_MAXIMUM_OVERHEAD > PROXY_BUFFER_SIZE) { bufUDP = new char[nBytes + PROXY_UDP_MAXIMUM_OVERHEAD]; } else { bufUDP = m_proxyTCPSocket.GetBuffer(); } read = CLibUDPSocket::RecvFrom( m_proxyTCPSocket.GetProxyBoundAddress(), bufUDP, nBytes + PROXY_UDP_MAXIMUM_OVERHEAD); unsigned int offset; switch (m_proxyTCPSocket.GetBuffer()[3]) { case SOCKS5_ATYP_IPV4_ADDRESS: { offset = PROXY_UDP_OVERHEAD_IPV4; try { amuleIPV4Address &a = dynamic_cast(addr); a.Hostname( PeekUInt32( m_proxyTCPSocket.GetBuffer()+4 ) ); a.Service( ENDIAN_NTOHS( RawPeekUInt16( m_proxyTCPSocket.GetBuffer()+8) ) ); } catch (const std::bad_cast& WXUNUSED(e)) { AddDebugLogLineN(logProxy, wxT("(2)bad_cast exception!")); wxFAIL; } } break; case SOCKS5_ATYP_DOMAINNAME: offset = PROXY_UDP_OVERHEAD_DOMAIN_NAME; break; case SOCKS5_ATYP_IPV6_ADDRESS: offset = PROXY_UDP_OVERHEAD_IPV6; break; default: /* Error! */ offset = 0; break; } memcpy(buf, bufUDP + offset, nBytes); // Uncomment here to see the buffer contents on console // DumpMem(bufUDP, wxDatagramSocket::LastCount(), wxT("RecvFrom"), 3); /* Only delete buffer if it was dynamically created */ if (bufUDP != m_proxyTCPSocket.GetBuffer()) { /* We should use a fixed buffer to avoid * new/delete it all the time. * I need an upper bound */ delete [] bufUDP; } /* There is still one problem pending, fragmentation. * Either we support it or we have to drop fragmented * messages. I vote for drop :) */ } } else { read = CLibUDPSocket::RecvFrom(addr, buf, nBytes); } return read; } uint32 CDatagramSocketProxy::SendTo(const amuleIPV4Address& addr, const void* buf, uint32 nBytes) { uint32 sent = 0; wxMutexLocker lock(m_socketLocker); m_lastUDPOperation = UDP_OPERATION_SEND_TO; m_lastUDPOverhead = PROXY_UDP_OVERHEAD_IPV4; if (m_proxyTCPSocket.GetUseProxy()) { if (m_udpSocketOk) { m_proxyTCPSocket.GetBuffer()[0] = SOCKS5_RSV; // Reserved m_proxyTCPSocket.GetBuffer()[1] = SOCKS5_RSV; // Reserved m_proxyTCPSocket.GetBuffer()[2] = 0; // FRAG m_proxyTCPSocket.GetBuffer()[3] = SOCKS5_ATYP_IPV4_ADDRESS; PokeUInt32( m_proxyTCPSocket.GetBuffer()+4, StringIPtoUint32(addr.IPAddress())); RawPokeUInt16( m_proxyTCPSocket.GetBuffer()+8, ENDIAN_HTONS( addr.Service() ) ); memcpy(m_proxyTCPSocket.GetBuffer() + PROXY_UDP_OVERHEAD_IPV4, buf, nBytes); nBytes += PROXY_UDP_OVERHEAD_IPV4; sent = CLibUDPSocket::SendTo( m_proxyTCPSocket.GetProxyBoundAddress(), m_proxyTCPSocket.GetBuffer(), nBytes); // Uncomment here to see the buffer contents on console // DumpMem(m_proxyTCPSocket.GetBuffer(), nBytes, wxT("SendTo"), 3); } } else { sent = CLibUDPSocket::SendTo(addr, buf, nBytes); } return sent; } #endif // CLIENT_GUI /******************************************************************************/ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Proxy.h0000644000175000017500000004350412611472361017572 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef __PROXY_H__ #define __PROXY_H__ #include #include "amuleIPV4Address.h" // For amuleIPV4address #include "StateMachine.h" // For CStateMachine #include "LibSocket.h" /******************************************************************************/ /* * SOCKS4 protocol implementation according to: * - "SOCKS: A protocol for TCP proxy across firewalls": * amule-root/docs/socks4.protocol */ const unsigned char SOCKS4_VERSION = 0x04; const unsigned char SOCKS4_CMD_CONNECT = 0x01; const unsigned char SOCKS4_CMD_BIND = 0x02; const unsigned char SOCKS4_REPLY_CODE = 0; const unsigned char SOCKS4_REPLY_GRANTED = 90; const unsigned char SOCKS4_REPLY_FAILED = 91; const unsigned char SOCKS4_REPLY_FAILED_NO_IDENTD = 92; const unsigned char SOCKS4_REPLY_FAILED_DIFFERENT_USERIDS = 93; /* * SOCKS5 protocol implementation according to: * - RFC-1928: SOCKS Protocol Version 5 * - RFC-1929: username/password Authentication for SOCKS V5 * * Also, for the future :) : * - RFC-1961: GSS-API Authentication Method for SOCKS Version 5 * - RFC-1508: Generic Security Service Application Program Interface * - RFC-1509: Genecic Security Service API: C-bindings * */ const unsigned char SOCKS5_VERSION = 0x05; const unsigned char SOCKS5_AUTH_METHOD_NO_AUTH_REQUIRED = 0x00; const unsigned char SOCKS5_AUTH_METHOD_GSSAPI = 0x01; const unsigned char SOCKS5_AUTH_METHOD_USERNAME_PASSWORD = 0x02; const unsigned char SOCKS5_AUTH_METHOD_NO_ACCEPTABLE_METHODS = 0xFF; const unsigned char SOCKS5_AUTH_VERSION_USERNAME_PASSWORD = 0x01; const unsigned char SOCKS5_CMD_CONNECT = 0x01; const unsigned char SOCKS5_CMD_BIND = 0x02; const unsigned char SOCKS5_CMD_UDP_ASSOCIATE = 0x03; const unsigned char SOCKS5_RSV = 0x00; const unsigned char SOCKS5_ATYP_IPV4_ADDRESS = 0x01; const unsigned char SOCKS5_ATYP_DOMAINNAME = 0x03; const unsigned char SOCKS5_ATYP_IPV6_ADDRESS = 0x04; const unsigned char SOCKS5_REPLY_SUCCEED = 0x00; const unsigned char SOCKS5_REPLY_GENERAL_SERVER_FAILURE = 0x01; const unsigned char SOCKS5_REPLY_CONNECTION_NOT_ALLOWED = 0x02; const unsigned char SOCKS5_REPLY_NETWORK_UNREACHABLE = 0x03; const unsigned char SOCKS5_REPLY_HOST_UNREACHABLE = 0x04; const unsigned char SOCKS5_REPLY_CONNECTION_REFUSED = 0x05; const unsigned char SOCKS5_REPLY_TTL_EXPIRED = 0x06; const unsigned char SOCKS5_REPLY_COMMAND_NOT_SUPPORTED = 0x07; const unsigned char SOCKS5_REPLY_ATYP_NOT_SUPPORTED = 0x08; //------------------------------------------------------------------------------ // CProxyType //------------------------------------------------------------------------------ /* * These constants must match the integer values saved in the configuration file, * DO NOT CHANGE THIS ORDER!!! */ enum CProxyType { PROXY_NONE = -1, PROXY_SOCKS5, PROXY_SOCKS4, PROXY_HTTP, PROXY_SOCKS4a }; //------------------------------------------------------------------------------ // CProxyData //------------------------------------------------------------------------------ /** * The ProxyData class will hold information about the proxy server to be used. */ class CProxyData { public: /** * Default constructor. */ CProxyData(); /** * Constructor. * * @param proxyEnable Whether proxy is enabled or not. * @param proxyType The type of the proxy server. * @param proxyHostName The proxy host name or IP address. * @param proxyPort The proxy port number. * @param enablePassword Whether authentication should be performed. * @param userName The user name to authenticate to the server. * @param password The password to authenticate to the server. */ CProxyData( bool proxyEnable, CProxyType proxyType, const wxString &proxyHostName, unsigned short proxyPort, bool enablePassword, const wxString &userName, const wxString &password ); /** * Clears the object contents. */ void Clear(); public: //! Whether proxy is enabled or not. bool m_proxyEnable; //! The type of the proxy server. CProxyType m_proxyType; //! The proxy host name or IP address. wxString m_proxyHostName; //! The proxy port number. unsigned short m_proxyPort; //! Whether authentication should be performed. bool m_enablePassword; //! The user name to authenticate to the server. wxString m_userName; //! The password to authenticate to the server. wxString m_password; }; //------------------------------------------------------------------------------ // CProxyEventHandler //------------------------------------------------------------------------------ /** * Event handler object used during proxy negotiation. */ class CProxyEventHandler : public wxEvtHandler { public: /** * Constructor. */ CProxyEventHandler(); private: /** * Event handler function. */ void ProxySocketHandler(wxSocketEvent &event); DECLARE_EVENT_TABLE() }; //------------------------------------------------------------------------------ // CProxyStateMachine //------------------------------------------------------------------------------ /* This size is just to be a little bit greater than the UDP buffer used in aMule. * Proxy protocol needs much less than this. 1024 would be ok. Other options are * - Default ethernet MTU - Eth-II - IP - UDP: 1,514 - 14 - 20 - 8 = 1472 bytes; * - Default token ring MTU 4,202 - overheads = ??. * It would be really more efficient if the final object was less than * a page (4096 bytes) in size. */ //const unsigned int PROXY_BUFFER_SIZE = 1024; const unsigned int PROXY_BUFFER_SIZE = 5*1024; enum CProxyCommand { PROXY_CMD_CONNECT, PROXY_CMD_BIND, PROXY_CMD_UDP_ASSOCIATE }; enum CProxyState { PROXY_STATE_START = 0, PROXY_STATE_END = 1 }; /** * The ProxyStateMachine class is the ancestor of all proxy classes. * * CProxyStateMachine will do all the common work that a proxy class must do * and provide the necessary variables. */ class CProxyStateMachine : public CStateMachine { public: /** * Constructor. * * @param name The name of the state machine. For debug messages only. * @param max_states The maximum number of states that this machine will have. * @param proxyData The necessary proxy information. * @param cmd The type of proxy command to run. */ CProxyStateMachine( wxString name, const unsigned int max_states, const CProxyData &proxyData, CProxyCommand cmd); /** * Destructor. */ virtual ~CProxyStateMachine(); /** * Adds a small string to the state machine name, containing the proxy command. * * @param s The original state machine name. * @param cmd The proxy command. */ static wxString &NewName(wxString &s, CProxyCommand cmd); /* Interface */ bool Start(const amuleIPV4Address &peerAddress, CLibSocket *proxyClientSocket); t_sm_state HandleEvent(t_sm_event event); void AddDummyEvent(); void ReactivateSocket(); char *GetBuffer() { return m_buffer; } amuleIPV4Address &GetProxyBoundAddress(void) const { return *m_proxyBoundAddress; } unsigned char GetLastReply(void) const { return m_lastReply; } bool IsEndState() const { return GetState() == PROXY_STATE_END; } protected: uint32 ProxyWrite(CLibSocket &socket, const void *buffer, wxUint32 nbytes); uint32 ProxyRead(CLibSocket &socket, void *buffer); bool CanReceive() const; bool CanSend() const; // // Initialized at constructor // const CProxyData &m_proxyData; CProxyCommand m_proxyCommand; // // Member variables // char m_buffer[PROXY_BUFFER_SIZE]; bool m_isLost; bool m_isConnected; bool m_canReceive; bool m_canSend; bool m_ok; unsigned int m_lastRead; int m_lastError; // // Will be initialized at Start() // amuleIPV4Address *m_peerAddress; CLibSocket *m_proxyClientSocket; amuleIPV4Address *m_proxyBoundAddress; amuleIPV4Address m_proxyBoundAddressIPV4; //wxIPV6address m_proxyBoundAddressIPV6; // // Temporary variables // unsigned char m_lastReply; unsigned int m_packetLenght; }; //------------------------------------------------------------------------------ // CSocks5StateMachine //------------------------------------------------------------------------------ class CSocks5StateMachine; typedef void (CSocks5StateMachine::*Socks5StateProcessor)(bool entry); class CSocks5StateMachine : public CProxyStateMachine { private: static const unsigned int SOCKS5_MAX_STATES = 14; enum Socks5State { SOCKS5_STATE_START = PROXY_STATE_START, SOCKS5_STATE_END = PROXY_STATE_END, SOCKS5_STATE_SEND_QUERY_AUTHENTICATION_METHOD, SOCKS5_STATE_RECEIVE_AUTHENTICATION_METHOD, SOCKS5_STATE_PROCESS_AUTHENTICATION_METHOD, SOCKS5_STATE_SEND_AUTHENTICATION_GSSAPI, SOCKS5_STATE_RECEIVE_AUTHENTICATION_GSSAPI, SOCKS5_STATE_PROCESS_AUTHENTICATION_GSSAPI, SOCKS5_STATE_SEND_AUTHENTICATION_USERNAME_PASSWORD, SOCKS5_STATE_RECEIVE_AUTHENTICATION_USERNAME_PASSWORD, SOCKS5_STATE_PROCESS_AUTHENTICATION_USERNAME_PASSWORD, SOCKS5_STATE_SEND_COMMAND_REQUEST, SOCKS5_STATE_RECEIVE_COMMAND_REPLY, SOCKS5_STATE_PROCESS_COMMAND_REPLY }; public: /* Constructor */ CSocks5StateMachine( const CProxyData &proxyData, CProxyCommand proxyCommand); void process_state(t_sm_state state, bool entry); t_sm_state next_state(t_sm_event event); private: /* State Processors */ void process_start(bool entry); void process_send_query_authentication_method(bool entry); void process_receive_authentication_method(bool entry); void process_process_authentication_method(bool entry); void process_send_authentication_gssapi(bool entry); void process_receive_authentication_gssapi(bool entry); void process_process_authentication_gssapi(bool entry); void process_send_authentication_username_password(bool entry); void process_receive_authentication_username_password(bool entry); void process_process_authentication_username_password(bool entry); void process_send_command_request(bool entry); void process_receive_command_reply(bool entry); void process_process_command_reply(bool entry); void process_end(bool entry); /* Private Vars */ Socks5StateProcessor m_process_state[SOCKS5_MAX_STATES]; wxString m_state_name[SOCKS5_MAX_STATES]; }; //------------------------------------------------------------------------------ // CSocks4StateMachine //------------------------------------------------------------------------------ class CSocks4StateMachine; typedef void (CSocks4StateMachine::*Socks4StateProcessor)(bool entry); class CSocks4StateMachine : public CProxyStateMachine { private: static const unsigned int SOCKS4_MAX_STATES = 5; enum Socks4State { SOCKS4_STATE_START = PROXY_STATE_START, SOCKS4_STATE_END = PROXY_STATE_END, SOCKS4_STATE_SEND_COMMAND_REQUEST, SOCKS4_STATE_RECEIVE_COMMAND_REPLY, SOCKS4_STATE_PROCESS_COMMAND_REPLY }; public: /* Constructor */ CSocks4StateMachine( const CProxyData &proxyData, CProxyCommand proxyCommand); void process_state(t_sm_state state, bool entry); t_sm_state next_state(t_sm_event event); private: /* State Processors */ void process_start(bool entry); void process_send_command_request(bool entry); void process_receive_command_reply(bool entry); void process_process_command_reply(bool entry); void process_end(bool entry); /* Private Vars */ Socks4StateProcessor m_process_state[SOCKS4_MAX_STATES]; wxString m_state_name[SOCKS4_MAX_STATES]; }; //------------------------------------------------------------------------------ // CHttpStateMachine //------------------------------------------------------------------------------ class CHttpStateMachine; typedef void (CHttpStateMachine::*HttpStateProcessor)(bool entry); class CHttpStateMachine : public CProxyStateMachine { private: static const unsigned int HTTP_MAX_STATES = 5; enum HttpState { HTTP_STATE_START = PROXY_STATE_START, HTTP_STATE_END = PROXY_STATE_END, HTTP_STATE_SEND_COMMAND_REQUEST, HTTP_STATE_RECEIVE_COMMAND_REPLY, HTTP_STATE_PROCESS_COMMAND_REPLY }; public: /* Constructor */ CHttpStateMachine( const CProxyData &proxyData, CProxyCommand proxyCommand); void process_state(t_sm_state state, bool entry); t_sm_state next_state(t_sm_event event); private: /* State Processors */ void process_start(bool entry); void process_send_command_request(bool entry); void process_receive_command_reply(bool entry); void process_process_command_reply(bool entry); void process_end(bool entry); /* Private Vars */ HttpStateProcessor m_process_state[HTTP_MAX_STATES]; wxString m_state_name[HTTP_MAX_STATES]; }; //------------------------------------------------------------------------------ // CProxySocket //------------------------------------------------------------------------------ class CDatagramSocketProxy; class CProxySocket : public CLibSocket { friend class CProxyEventHandler; public: /* Constructor */ CProxySocket( muleSocketFlags flags = MULE_SOCKET_NONE, const CProxyData *proxyData = NULL, CProxyCommand proxyCommand = PROXY_CMD_CONNECT, CDatagramSocketProxy *udpSocket = NULL); /* Destructor */ ~CProxySocket(); #ifndef ASIO_SOCKETS /* I know, this is not very good, because SetEventHandler is not * virtual in wxSocketBase, but I need to GetEventHandler in Proxy.cpp, * so... */ void SetEventHandler(wxEvtHandler &handler, int id = wxID_ANY) { m_socketEventHandler = &handler; m_socketEventHandlerId = id; CLibSocket::SetEventHandler(handler, id); } wxEvtHandler *GetEventHandler(void) const { return m_socketEventHandler; } int GetEventHandlerId(void) const { return m_socketEventHandlerId; } void SaveEventHandler(void) { m_savedSocketEventHandler = m_socketEventHandler; m_savedSocketEventHandlerId = m_socketEventHandlerId; } void RestoreEventHandler(void) { m_socketEventHandler = m_savedSocketEventHandler; m_socketEventHandlerId = m_savedSocketEventHandlerId; SetEventHandler(*m_socketEventHandler, m_socketEventHandlerId); } #endif // Asio mode virtual void OnProxyEvent(int evt); /* Interface */ void SetProxyData(const CProxyData *proxyData); bool GetUseProxy() const { return m_useProxy; } char *GetBuffer() { return m_proxyStateMachine->GetBuffer(); } amuleIPV4Address &GetProxyBoundAddress(void) const { return m_proxyStateMachine->GetProxyBoundAddress(); } bool Start(const amuleIPV4Address &peerAddress); bool ProxyIsCapableOf(CProxyCommand proxyCommand) const; bool ProxyNegotiationIsOver() const { return m_proxyStateMachine->IsEndState(); } CDatagramSocketProxy *GetUDPSocket() const { return m_udpSocket; } private: bool m_useProxy; CProxyData m_proxyData; amuleIPV4Address m_proxyAddress; CProxyStateMachine *m_proxyStateMachine; CDatagramSocketProxy *m_udpSocket; wxEvtHandler *m_socketEventHandler; int m_socketEventHandlerId; wxEvtHandler *m_savedSocketEventHandler; int m_savedSocketEventHandlerId; }; //------------------------------------------------------------------------------ // CSocketClientProxy //------------------------------------------------------------------------------ class CSocketClientProxy : public CProxySocket { public: /* Constructor */ CSocketClientProxy( muleSocketFlags flags = MULE_SOCKET_NONE, const CProxyData *proxyData = NULL); /* Interface */ bool Connect(amuleIPV4Address &address, bool wait); uint32 Read(void *buffer, wxUint32 nbytes); uint32 Write(const void *buffer, wxUint32 nbytes); private: wxMutex m_socketLocker; }; //------------------------------------------------------------------------------ // CSocketServerProxy //------------------------------------------------------------------------------ class CSocketServerProxy : public CLibSocketServer { public: /* Constructor */ CSocketServerProxy( amuleIPV4Address &address, muleSocketFlags flags = MULE_SOCKET_NONE, const CProxyData *proxyData = NULL); private: wxMutex m_socketLocker; }; //------------------------------------------------------------------------------ // CDatagramSocketProxy //------------------------------------------------------------------------------ enum UDPOperation { UDP_OPERATION_NONE, UDP_OPERATION_RECV_FROM, UDP_OPERATION_SEND_TO }; const unsigned int PROXY_UDP_OVERHEAD_IPV4 = 10; const unsigned int PROXY_UDP_OVERHEAD_DOMAIN_NAME = 262; const unsigned int PROXY_UDP_OVERHEAD_IPV6 = 20; const unsigned int PROXY_UDP_MAXIMUM_OVERHEAD = PROXY_UDP_OVERHEAD_DOMAIN_NAME; class CDatagramSocketProxy : public CLibUDPSocket { public: /* Constructor */ CDatagramSocketProxy( amuleIPV4Address &address, muleSocketFlags flags = MULE_SOCKET_NONE, const CProxyData *proxyData = NULL); /* Destructor */ ~CDatagramSocketProxy(); /* Interface */ void SetUDPSocketOk() { m_udpSocketOk = true; } /* wxDatagramSocket Interface */ virtual uint32 RecvFrom(amuleIPV4Address& addr, void* buf, uint32 nBytes); virtual uint32 SendTo(const amuleIPV4Address& addr, const void* buf, uint32 nBytes); private: bool m_udpSocketOk; CProxySocket m_proxyTCPSocket; enum UDPOperation m_lastUDPOperation; unsigned int m_lastUDPOverhead; wxMutex m_socketLocker; }; /******************************************************************************/ #endif /* __PROXY_H__ */ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/RC4Encrypt.cpp0000644000175000017500000000732112611472361020736 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "RC4Encrypt.h" #include #include CRC4EncryptableBuffer::CRC4EncryptableBuffer() : m_encrypted(false), m_hasKey(false), m_key() { } CRC4EncryptableBuffer::~CRC4EncryptableBuffer() { } void CRC4EncryptableBuffer::Append(const uint8* buffer, int n) { wxASSERT(!m_encrypted); if (!m_encrypted) { CMemFile::Append(buffer, n); } else { throw std::runtime_error( "(CRC4EncryptableBuffer::Append): " "Tryed to append data to an encrypted buffer."); } } void CRC4EncryptableBuffer::Encrypt() { wxASSERT(!m_encrypted); RC4Crypt(GetRawBuffer(), GetRawBuffer(), GetLength()); m_encrypted = true; } void CRC4EncryptableBuffer::RC4Crypt( const uint8 *pachIn, uint8 *pachOut, uint32 nLen) { wxASSERT( m_hasKey && nLen > 0 ); if (m_hasKey) { uint8 byX = m_key.byX;; uint8 byY = m_key.byY; uint8* pabyState = &m_key.abyState[0];; uint8 byXorIndex; for (uint32 i = 0; i < nLen; ++i) { byX = (byX + 1) % 256; byY = (pabyState[byX] + byY) % 256; std::swap(pabyState[byX], pabyState[byY]); byXorIndex = (pabyState[byX] + pabyState[byY]) % 256; if (pachIn != NULL) { pachOut[i] = pachIn[i] ^ pabyState[byXorIndex]; } } m_key.byX = byX; m_key.byY = byY; } else { throw std::runtime_error( "(CRC4EncryptableBuffer::RC4Crypt): " "Encrypt() has been called without a previous call" "to SetKey()."); } } uint8 *CRC4EncryptableBuffer::Detach() { int n = GetLength(); uint8 *ret = new uint8[n]; memcpy(ret, GetRawBuffer(), n); ResetData(); m_encrypted = false; return ret; } void CRC4EncryptableBuffer::SetKey(const MD5Sum& keyhash, bool bSkipDiscard) { wxASSERT(!m_hasKey); if (!m_hasKey) { m_hasKey = true; RC4CreateKey( keyhash.GetRawHash(), 16, bSkipDiscard); } else { throw std::runtime_error( "(CRC4EncryptableBuffer::SetKey): SetKey() has been called twice."); } } void CRC4EncryptableBuffer::RC4CreateKey(const uint8* pachKeyData, uint32 nLen, bool bSkipDiscard) { uint8 index1; uint8 index2; uint8* pabyState; pabyState= &m_key.abyState[0]; for (int i = 0; i < 256; ++i) { pabyState[i] = (uint8)i; } m_key.byX = 0; m_key.byY = 0; index1 = 0; index2 = 0; for (int i = 0; i < 256; ++i) { index2 = (pachKeyData[index1] + pabyState[i] + index2) % 256; std::swap(pabyState[i], pabyState[index2]); index1 = (uint8)((index1 + 1) % nLen); } if (!bSkipDiscard) { RC4Crypt(NULL, NULL, 1024); } } void CRC4EncryptableBuffer::ResetData() { m_encrypted = false; // Not touching the keys. CMemFile::ResetData(); } void CRC4EncryptableBuffer::FullReset() { ResetData(); m_hasKey = false; memset(&m_key, 0, sizeof(RC4_Key_Struct)); } amule_2.3.1+git20151120.0023527bc2.orig/src/RC4Encrypt.h0000644000175000017500000000465512611472361020412 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef __RC4ENCRYPT_H__ #define __RC4ENCRYPT_H__ #include #include "Types.h" #include #include "MemFile.h" // Helper class class MD5Sum; struct RC4_Key_Struct { uint8 abyState[256]; uint8 byX; uint8 byY; }; class CRC4EncryptableBuffer : public CMemFile { public: // Create, empty CRC4EncryptableBuffer(); // Clear memory ~CRC4EncryptableBuffer(); // Appends to the end, checking encrypted state. void Append(const uint8* buffer, int n); // Sets the encryption key void SetKey(const MD5Sum& keyhash, bool bSkipDiscard = false); // RC4 encrypts the internal buffer. Marks it as encrypted, any other further call // to add data, as Append(), must assert if the inner data is encrypted. // Make sure to check SetKey has been called! void Encrypt(); // RC4 encrypts an external buffer with the current key. void RC4Crypt(const uint8 *pachIn, uint8 *pachOut, uint32 nLen); // Returns a uint8* buffer with a copy of the internal data, and clears the internal one. uint8* Detach(); // Also clears the encryption flag void ResetData(); // Resets everything, as if the object has just been created. void FullReset(); private: bool m_encrypted; bool m_hasKey; RC4_Key_Struct m_key; void RC4CreateKey(const uint8* pachKeyData, uint32 nLen, bool bSkipDiscard); }; #endif // __RC4ENCRYPT_H__ amule_2.3.1+git20151120.0023527bc2.orig/src/RLE.cpp0000644000175000017500000001551312611472361017425 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "RLE.h" #include "ArchSpecific.h" #include "ScopedPtr.h" #include // Needed for CECTag /* * RLE encoder implementation. This is RLE implementation for very specific * purpose: encode DIFFERENCE between subsequent states of status bar. * * This difference is calculated by xor-ing with previous data * * We can't use implementation with "control char" since this encoder * will process binary data - not ascii (or unicode) strings */ void RLE_Data::setup(int len, bool use_diff, uint8 * content) { m_len = len; m_use_diff = use_diff; if (m_len) { m_buff = new uint8[m_len]; if (content) { memcpy(m_buff, content, m_len); } else { memset(m_buff, 0, m_len); } // } else { m_buff = 0; } } RLE_Data &RLE_Data::operator=(const RLE_Data &obj) { if (this == &obj) return *this; delete [] m_buff; setup(obj.m_len, obj.m_use_diff, obj.m_buff); return *this; } RLE_Data::~RLE_Data() { delete [] m_buff; } void RLE_Data::ResetEncoder() { delete m_buff; m_len = 0; m_buff = 0; } bool RLE_Data::Realloc(int size) { if ( size == m_len ) { return false; } if (size == 0) { delete [] m_buff; m_buff = 0; m_len = 0; return true; } uint8 *buff = new uint8[size]; if (m_len == 0) { memset(buff, 0, size); } else if ( size > m_len ) { memset(buff + m_len, 0, size - m_len); memcpy(buff, m_buff, m_len); } else { memcpy(buff, m_buff, size); } delete [] m_buff; m_buff = buff; m_len = size; return true; } const uint8 *RLE_Data::Decode(const uint8 *buff, int len) { uint8 * decBuf = m_len ? new uint8[m_len] : 0; // If data exceeds the buffer, switch to counting only. // Then resize and make a second pass. for (bool overrun = true; overrun;) { overrun = false; int j = 0; for (int i = 0; i < len;) { if (i < len - 2 && buff[i+1] == buff[i]) { // This is a sequence. uint8 seqLen = buff[i + 2]; if (j + seqLen <= m_len) { memset(decBuf + j, buff[i], seqLen); } j += seqLen; i += 3; } else { // This is a single byte. if (j < m_len) { decBuf[j] = buff[i]; } j++; i++; } } if (j != m_len) { overrun = j > m_len; // overrun, make a second pass Realloc(j); // size has changed, adjust if (overrun) { delete[] decBuf; decBuf = new uint8[m_len]; } } } // // Recreate data from diff // if ( m_use_diff ) { for (int k = 0; k < m_len; k++) { m_buff[k] ^= decBuf[k]; } } else { memcpy(m_buff, decBuf, m_len); } delete[] decBuf; return m_buff; } const uint8 * RLE_Data::Encode(const uint8 *data, int inlen, int &outlen, bool &changed) { changed = Realloc(inlen); // adjust size if necessary if (m_len == 0) { outlen = 0; return NULL; } // // calculate difference from prev // if ( m_use_diff ) { for (int i = 0; i < m_len; i++) { m_buff[i] ^= data[i]; if (m_buff[i]) { changed = true; } } } else { memcpy(m_buff, data, m_len); changed = true; } // // now RLE // // In worst case 2-byte sequence is encoded as 3. So, data can grow by 50%. uint8 * enc_buff = new uint8[m_len * 3/2 + 1]; int i = 0, j = 0; while ( i != m_len ) { uint8 curr_val = m_buff[i]; int seq_start = i; while ( (i != m_len) && (curr_val == m_buff[i]) && ((i - seq_start) < 0xff)) { i++; } if (i - seq_start > 1) { // if there's 2 or more equal vals - put it twice in stream enc_buff[j++] = curr_val; enc_buff[j++] = curr_val; enc_buff[j++] = i - seq_start; } else { // single value - put it as is enc_buff[j++] = curr_val; } } outlen = j; // // If using differential encoder, remember current data for // later use if ( m_use_diff ) { memcpy(m_buff, data, m_len); } return enc_buff; } const uint8 * RLE_Data::Encode(const ArrayOfUInts16 &data, int &outlen, bool &changed) { // To encode, first copy the UInts16 to a uint8 array // and limit them to 0xff. // The encoded size is the size of data. int size = (int) data.size(); if (size == 0) { return Encode(0, 0, outlen, changed); } CScopedArray buf(size); uint8 * bufPtr = buf.get(); for (int i = 0; i < size; i++) { uint16 ui = data[i]; bufPtr[i] = (ui > 0xff) ? 0xff : (uint8) ui; } return Encode(bufPtr, size, outlen, changed); } const uint8 * RLE_Data::Encode(const ArrayOfUInts64 &data, int &outlen, bool &changed) { // uint64 is copied to a uint8 buffer // first all low bytes, then all second low bytes and so on // so inital RLE will benefit from high bytes being equal (zero) // 0x000003045A6A7A8A, 0x000003045B6B7B8B // 8A8B7A7B6A6B5A5B0404030300000000 int size = (int) data.size(); if (size == 0) { return Encode(0, 0, outlen, changed); } CScopedArray buf(size * 8); uint8 * bufPtr = buf.get(); for (int i = 0; i < size; i++) { uint64 u = data[i]; for (int j = 0; j < 8; j++) { bufPtr[i + j * size] = u & 0xff; u >>= 8; } } return Encode(bufPtr, size * 8, outlen, changed); } void RLE_Data::Decode(const uint8 *data, int len, ArrayOfUInts64 &outdata) { const uint8 * decoded = Decode(data, len); wxASSERT(m_len % 8 == 0); int size = m_len / 8; outdata.resize(size); for (int i = 0; i < size; i++) { uint64 u = 0; for (int j = 8; j--;) { u <<= 8; u |= decoded[i + j * size]; } outdata[i] = u; } } void PartFileEncoderData::DecodeParts(const CECTag * tag, ArrayOfUInts16 &outdata) { const uint8 * buf = m_part_status.Decode((uint8 *)tag->GetTagData(), tag->GetTagDataLen()); int size = m_part_status.Size(); outdata.resize(size); for (int i = 0; i < size; i++) { outdata[i] = buf[i]; } } void PartFileEncoderData::DecodeGaps(const CECTag * tag, ArrayOfUInts64 &outdata) { m_gap_status.Decode((uint8 *)tag->GetTagData(), tag->GetTagDataLen(), outdata); } void PartFileEncoderData::DecodeReqs(const CECTag * tag, ArrayOfUInts64 &outdata) { m_req_status.Decode((uint8 *)tag->GetTagData(), tag->GetTagDataLen(), outdata); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/RLE.h0000644000175000017500000000641212611472361017070 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef RLE_H #define RLE_H #include "Types.h" /*! * General purpose RLE implementation. Just encode or create * differential data with previous */ class RLE_Data { public: RLE_Data(int len = 0, bool use_diff = true) { setup(len, use_diff); } // those constructors are for stl containers RLE_Data(const RLE_Data & obj) { setup(obj.m_len, obj.m_use_diff, obj.m_buff); } RLE_Data &operator=(const RLE_Data &); ~RLE_Data(); const uint8 *Encode(const ArrayOfUInts16 &data, int &outlen, bool &changed); const uint8 *Encode(const ArrayOfUInts64 &data, int &outlen, bool &changed); const uint8 *Decode(const uint8 *data, int len); void Decode(const uint8 *data, int len, ArrayOfUInts64 &outdata); void ResetEncoder(); // decoder will need access to data const uint8 *Buffer() const { return m_buff; } int Size() const { return m_len; } private: void setup(int len, bool use_diff, uint8 * content = 0); // change size of internal buffers // returns true if size was changed bool Realloc(int size); // // Encode some raw data // // data: block to encode // inlen: number of bytes to encode. May be zero, then data can also be 0. // outlen: here the number of encoded bytes gets stored (0 if inlen is 0) // changed: becomes true if the size has changed or a change in the data occured, // so the differential data (before encoding) is not all zero // // return: new buffer with encoded data, must be deleted after use! // const uint8 *Encode(const uint8 *data, int inlen, int &outlen, bool &changed); // Encode: source data (original or diff in diff mode) // Decode: store decoded data uint8 *m_buff; // Unpacked size int m_len; // Use differential encoding bool m_use_diff; }; /*! * Data difference is different for each EC client */ class PartFileEncoderData { protected: // number of sources for each part for progress bar colouring RLE_Data m_part_status; // gap list RLE_Data m_gap_status; // blocks requested for download RLE_Data m_req_status; public: // // decoder side - can be used everywhere void DecodeParts(const class CECTag * tag, ArrayOfUInts16 &outdata); void DecodeGaps(const class CECTag * tag, ArrayOfUInts64 &outdata); void DecodeReqs(const class CECTag * tag, ArrayOfUInts64 &outdata); }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/RandomFunctions.cpp0000644000175000017500000000365212611472361022115 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // The backtrace functions contain modified code from libYaMa, (c) Venkatesha Murthy G. // You can check libYaMa at http://personal.pavanashree.org/libyama/ #include "RandomFunctions.h" // Interface declarations #include "CryptoPP_Inc.h" // Needed for Crypto functions static CryptoPP::AutoSeededRandomPool cryptRandomGen; const CryptoPP::AutoSeededRandomPool& GetRandomPool() { return cryptRandomGen; } uint8_t GetRandomUint8() { return cryptRandomGen.GenerateByte(); } uint16_t GetRandomUint16() { return (uint16_t)cryptRandomGen.GenerateWord32(0x0000, 0xFFFF); } uint32_t GetRandomUint32() { return cryptRandomGen.GenerateWord32(); } uint64_t GetRandomUint64() { return ((uint64_t)GetRandomUint32() << 32) + GetRandomUint32(); } namespace Kademlia { CUInt128 GetRandomUint128() { uint8_t randomBytes[16]; cryptRandomGen.GenerateBlock(randomBytes, 16); return CUInt128(randomBytes); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/RandomFunctions.h0000644000175000017500000000303212611472361021552 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef RANDOMFUNCTIONS_H #define RANDOMFUNCTIONS_H #include "Types.h" // Needed for uint16, uint32 and uint64 #include "kademlia/utils/UInt128.h" // Needed for CUInt128 namespace CryptoPP { class AutoSeededRandomPool; } const CryptoPP::AutoSeededRandomPool& GetRandomPool(); /* * Random numbers generation */ uint8_t GetRandomUint8(); uint16_t GetRandomUint16(); uint32_t GetRandomUint32(); uint64_t GetRandomUint64(); namespace Kademlia { CUInt128 GetRandomUint128(); } #endif // RANDOMFUNCTIONS_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/RangeMap.h0000644000175000017500000004030112611472361020133 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Mikkel Schubert ( xaignar@users.sourceforge.net ) // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef RANGEMAP_H #define RANGEMAP_H #include #include /** * Default helper structure for normal CRangeMap instantations. * * Specializations should must have the following properties. * - The four value typedefs (see comments for details). * - A template-defined member variable named 'first'. * - A comparison operator that doesn't consider the 'first' field. * * The typedefs are used to specify the return values of iterators. */ template struct CRangeMapHelper { //! Typedef specifying the type to use when a non-const pointer is expected. typedef VALUE* ValuePtr; //! Typedef specifying the type to use when a non-const referenecs is expected. typedef VALUE& ValueRef; //! Typedef specifying the type to use when a const referenecs is expected. typedef const VALUE& ConstValueRef; //! Typedef specifying the type to use when a const pointer is expected. typedef const VALUE* ConstValuePtr; //! Used internally by CRangeMap to specify the end of a range. KEYTYPE first; //! Contains the value of a given range. VALUE second; //! Compares the user-values of this range with another. bool operator==(const CRangeMapHelper& o) const { return second == o.second; } }; /** * Helper structure for CRangeSet (CRangeMap with void as value). */ template struct CRangeMapHelper { typedef void ValuePtr; typedef void ValueRef; typedef void ConstValueRef; typedef void ConstValuePtr; KEYTYPE first; bool operator==(const CRangeMapHelper&) const { return true; } }; /** * This class represents a map of non-overlapping ranges. * * Each range has a user-specified value associated. The map supports quick * lookup of which range covers a particular key-value, and will merge or * split existing ranges when new ranges are added. * * The decision on whenever to split/resize a range or to merge the two ranges * involved is based on equality of the user-specified value, using the * equality operator. Thus if two ranges with the same user-value are placed * adjacent to each other or partially overlapping each other, then they will * be merged into a single range. If the user-values of the two ranges are * different, then the old range will be either resized or split, based on the * position of the new range. * * In cases where ranges are split into two parts, copies will be made of the * user-specified value, such that each new part contains the same user-value. * * It is currently not possible to manipulate existing ranges by hand, other * than by erasing and then re-inserting them. * * A specialization of this class exists (typedef'd as CRangeSet), which does * not assosiate a value with each range. * * NOTE: KEYTYPE is assumed to be an unsigned integer type! */ template class CRangeMap { typedef CRangeMapHelper HELPER; private: //! The map uses the start-key as key and the User-value and end-key pair as value typedef std::map RangeMap; //! Shortcut for the pair used by the RangeMap. typedef std::pair RangePair; //! Typedefs used to distinguish between our custom iterator and the real ones. typedef typename RangeMap::iterator RangeIterator; typedef typename RangeMap::const_iterator ConstRangeIterator; //! The raw map of range values. RangeMap m_ranges; /** * This class provides a wrapper around the raw iterators used by CRangeMap. * * It will act as a normal iterator and also give access the the range values. * When used as a per normal, it will return the value specified by the user * for that range. * * Special member-functions are keyStart() and keyEnd(). */ template class iterator_base { friend class CRangeMap; public: iterator_base( const RealIterator& it ) : m_it( it ) { } //! Equality operator bool operator==( const iterator_base& other ) const { return m_it == other.m_it; } //! Non-equality operator bool operator!=( const iterator_base& other ) const { return m_it != other.m_it; } //! Returns the starting point of the range KEYTYPE keyStart() const { return m_it->first; } //! Returns the end-point of the range KEYTYPE keyEnd() const { return m_it->second.first; } //! Prefix increment. iterator_base& operator++() { ++m_it; return *this; } //! Postfix increment. iterator_base operator++(int) { return iterator_base( m_it++ ); } //! Prefix decrement. iterator_base& operator--() { --m_it; return *this; } //! Postfix decrement. iterator_base operator--(int) { return iterator_base( m_it-- ); } //! Deference operator, returning the user-specified value. ReturnTypeRef operator*() const { return m_it->second.second; } //! Member access operator, returning the user-specified value. ReturnTypePtr operator->() const { return &m_it->second.second; } protected: //! The raw iterator RealIterator m_it; }; typedef typename HELPER::ValueRef ValueRef; typedef typename HELPER::ValuePtr ValuePtr; typedef typename HELPER::ConstValueRef ConstValueRef; typedef typename HELPER::ConstValuePtr ConstValuePtr; public: typedef iterator_base iterator; typedef iterator_base const_iterator; //! The type used to specify size, ie size(). typedef typename RangeMap::size_type size_type; //! The type of user-data saved with each range. typedef VALUE value_type; /** * Default constructor. */ CRangeMap() { } /** * Copy-constructor. */ CRangeMap(const CRangeMap& other) : m_ranges( other.m_ranges ) { } /** * Assignment operator. */ CRangeMap& operator=(const CRangeMap& other) { m_ranges = other.m_ranges; return *this; } /** * Swaps the contents of the two rangemaps. */ void swap(CRangeMap& other) { std::swap(m_ranges, other.m_ranges); } /** * Equality operator for two ranges. * * @returns True if both ranges contain the same ranges and values. */ bool operator==( const CRangeMap& other ) const { // Check if we are comparing with ourselves if ( this == &other ) { return true; } // Check size, must be the same if ( size() != other.size() ) { return false; } return (m_ranges == other.m_ranges); } /** * Returns an iterator pointing to the first range. */ iterator begin() { return m_ranges.begin(); } /** * Returns an iterator pointing past the last range. */ iterator end() { return m_ranges.end(); } /** * Returns a const iterator pointing to the first range. */ const_iterator begin() const { return m_ranges.begin(); } /** * Returns a const iterator pointing past the last range. */ const_iterator end() const { return m_ranges.end(); } /** * Erases the specified range and returns the range next to it. * * @param pos The iterator of the range to be erased. * @return The iterator of the range after the erased range. * * Attempting to erase the end() iterator is an invalid operation. */ iterator erase(iterator pos) { MULE_VALIDATE_PARAMS(pos != end(), wxT("Cannot erase 'end'")); RangeIterator temp = pos.m_it++; m_ranges.erase(temp); return pos; } /** * Returns the number of ranges in the map. */ size_type size() const { return m_ranges.size(); } /** * Returns true if the map is empty. */ bool empty() const { return m_ranges.empty(); } /** * Removes all ranges from the map. */ void clear() { m_ranges.clear(); } /** * Returns the range covering the specified key-value. * * @param key A value that may or may not be covered by a range. * @return end() or the iterator of the range covering key. * * A range is considered to cover a value if the value is greather than or * equal to the start-key and less than or equal to the end-key. */ // Find the range which contains key (it->first <= key <= it->second->first) iterator find_range( KEYTYPE key ) { if ( !m_ranges.empty() ) { // Find first range whose start comes after key // Thus: key < it->first, but (--it)->first <= key RangeIterator it = m_ranges.upper_bound( key ); // Our target range must come before the one we found; does it exist? if ( it != m_ranges.begin() ) { // Go back to the last range which starts at or before key --it; // Check if this range covers the key if ( key <= it->second.first ) { return it; } } } return end(); } void erase_range(KEYTYPE startPos, KEYTYPE endPos) { // Create default initialized entry, which ensures that all fields are initialized. HELPER entry = HELPER(); // Need to set the 'end' field. entry.first = endPos; // Insert without merging, which forces the creation of an entry that // only covers the specified range, which will crop existing ranges. erase(do_insert(startPos, entry, false)); } /** * Inserts a new range into the map, potentially erasing/changing old ranges. * * @param startPos The start position of the range, also considered part of the range. * @param endPos The end position of the range, also considered part of the range. * @param object The user-data to be assosiated with the range. * @return An iterator pointing to the resulting range, covering at least the specified range. * * This function inserts the specified range into the map, while overwriting * or resizing existing ranges if there is any conflict. Ranges might also * be merged, if the object of each evaluates to being equal, in which case * the old range will be removed and the new extended to include the old * range. This also includes ranges placed directly after or in front of each * other, which will also be merged if their type is the same. * * This has the result that the iterator returned can point to a range quite * different from what was originally specified. If this is not desired, then * the VALUE type should simply be made to return false on all equality tests. * Otherwise, the only promise that is made is that the resulting range has * the same user-data (based on the equality operator) as the what was specified. * * Note that the start position must be smaller than or equal to the end-position. */ //@{ iterator insert(KEYTYPE startPos, KEYTYPE endPos) { HELPER entry = {endPos}; return do_insert(startPos, entry); } template iterator insert(KEYTYPE startPos, KEYTYPE endPos, const TYPE& value) { HELPER entry = {endPos, value}; return do_insert(startPos, entry); } //@} protected: /** * Inserts the specified range. * * @param start The starting position of the range. * @param entry A helper-struct, containing the end position and possibly user-data. * @param merge Specifies if ranges should be merged when possible. * @return An iterator pointing to the range covering at least the specified range. */ iterator do_insert(KEYTYPE start, HELPER entry, bool merge = true) { MULE_VALIDATE_PARAMS(start <= entry.first, wxT("Not a valid range.")); RangeIterator it = get_insert_it(start); while ( it != m_ranges.end() ) { // Begins before the current span if ( start <= it->first ) { // Never touches the current span, it follows that start < it->first // (it->first) is used to avoid checking against (uintXX)-1 by accident if ( entry.first < it->first - 1 && it->first ) { break; } // Stops just before the current span, it follows that start < it->first // (it->first) is used to avoid checking against (uintXX)-1 by accident else if ( entry.first == it->first - 1 && it->first ) { // If same type: Merge if (merge && (entry == it->second)) { entry.first = it->second.first; m_ranges.erase( it++ ); } break; } // Covers part of the span else if ( entry.first < it->second.first ) { // Same type, merge if (merge && (entry == it->second)) { entry.first = it->second.first; m_ranges.erase( it++ ); } else { // Resize the partially covered span and get the next one it = ++resize( entry.first + 1, it->second.first, it ); } break; } else { // It covers the entire span m_ranges.erase( it++ ); } } // Starts inside the current span or after the current span else { // Starts inside the current span if ( start <= it->second.first ) { // Ends inside the current span if ( entry.first < it->second.first ) { // Adding a span with same type inside a existing span is fruitless if (merge && (entry == it->second)) { return it; } // Insert the new span m_ranges.insert(it, RangePair(entry.first + 1, it->second)); // Resize the current span to fit before the new span it->second.first = start - 1; break; } else { // Ends past the current span, resize or merge if (merge && (entry == it->second)) { start = it->first; m_ranges.erase( it++ ); } else { // Resize the partially covered span and get the next one it = ++resize( it->first, start - 1, it ); } } } else { // Start past the current span if ( start == it->second.first + 1 ) { // Touches the current span if (merge && (entry == it->second)) { start = it->first; m_ranges.erase( it++ ); } else { ++it; } } else { // Starts after the current span, nothing to do ++it; } } } } return m_ranges.insert(it, RangePair(start, entry)); } /** * Finds the optimal location to start looking for insertion points. * * This is the first range whose start comes after the new start. We check * the last element first, since sequential insertions are commen. */ RangeIterator get_insert_it(KEYTYPE start) { if ( m_ranges.empty() ) { return m_ranges.end(); } // The start-key of the last element must be smaller than our start-key // Otherwise there is the possibility that we can merge with the one before that RangeIterator it = --m_ranges.end(); if ( start <= it->first ) { // If the two starts are equal, then we only need to go back another // step to see if the range prior to this one is mergeable if ( start != it->first ) { it = m_ranges.lower_bound( start ); } if ( it != m_ranges.begin() ) { // Go back to the last range which starts at or before key --it; } } return it; } //! Helper function that resizes an existing range to the specified size. RangeIterator resize( KEYTYPE startPos, KEYTYPE endPos, RangeIterator it ) { HELPER item = it->second; item.first = endPos; m_ranges.erase( it++ ); return m_ranges.insert(it, RangePair(startPos, item)); } }; //! CRangeSet is simply a partial specialization of CRangeMap typedef CRangeMap CRangeSet; namespace std { /** @see CRangeMap::swap */ template void swap(CRangeMap& a, CRangeMap& b) { a.swap(b); } } #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SHA.cpp0000644000175000017500000001775212611472361017425 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // Kry - Modified version of the original SHA.cpp to work on linux and // use wxWidgets. Original license follows. // /* --------------------------------------------------------------------------- Copyright (c) 2002-2011 Dr Brian Gladman ( brg@gladman.me.uk ) All rights reserved. LICENSE TERMS The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that: 1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer; 2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials; 3. the copyright holder's name is not used to endorse products built using this software without specific written permission. ALTERNATIVELY, provided that this notice is retained in full, this product may be distributed under the terms of the GNU General Public License (GPL), in which case the provisions of the GPL apply INSTEAD OF those given above. DISCLAIMER This software is provided 'as is' with no explicit or implied warranties in respect of its properties, including, but not limited to, correctness and/or fitness for purpose. --------------------------------------------------------------------------- Issue Date: 30/11/2002 This is a byte oriented version of SHA1 that operates on arrays of bytes stored in memory. It runs at 22 cycles per byte on a Pentium P4 processor */ #include "SHA.h" CSHA::CSHA() { Reset(); } /* To obtain the highest speed on processors with 32-bit words, this code needs to determine the order in which bytes are packed into such words. The following block of code is an attempt to capture the most obvious ways in which various environemnts specify their endian definitions. It may well fail, in which case the definitions will need to be set by editing at the points marked **** EDIT HERE IF NECESSARY **** below. */ #define SHA_LITTLE_ENDIAN 1234 /* byte 0 is least significant (i386) */ #define SHA_BIG_ENDIAN 4321 /* byte 0 is most significant (mc68k) */ #define rotl32(x,n) (((x) << n) | ((x) >> (32 - n))) #if (wxBYTE_ORDER == wxBIG_ENDIAN) #define swap_b32(x) (x) #elif defined(bswap_32) #define swap_b32(x) bswap_32(x) #else #define swap_b32(x) ((rotl32((x), 8) & 0x00ff00ff) | (rotl32((x), 24) & 0xff00ff00)) #endif #define SHA1_MASK (SHA1_BLOCK_SIZE - 1) /* reverse byte order in 32-bit words */ #define ch(x,y,z) (((x) & (y)) ^ (~(x) & (z))) #define parity(x,y,z) ((x) ^ (y) ^ (z)) #define maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) /* A normal version as set out in the FIPS. This version uses */ /* partial loop unrolling and is optimised for the Pentium 4 */ #define rnd(f,k) t = a; a = rotl32(a,5) + f(b,c,d) + e + k + w[i]; e = d; d = c; c = rotl32(b, 30); b = t void CSHA::Compile() { uint32 w[80], i, a, b, c, d, e, t; /* note that words are compiled from the buffer into 32-bit */ /* words in big-endian order so an order reversal is needed */ /* here on little endian machines */ for(i = 0; i < SHA1_BLOCK_SIZE / 4; ++i) w[i] = swap_b32(m_nBuffer[i]); for(i = SHA1_BLOCK_SIZE / 4; i < 80; ++i) w[i] = rotl32(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16], 1); a = m_nHash[0]; b = m_nHash[1]; c = m_nHash[2]; d = m_nHash[3]; e = m_nHash[4]; for(i = 0; i < 20; ++i) { rnd(ch, 0x5a827999); } for(i = 20; i < 40; ++i) { rnd(parity, 0x6ed9eba1); } for(i = 40; i < 60; ++i) { rnd(maj, 0x8f1bbcdc); } for(i = 60; i < 80; ++i) { rnd(parity, 0xca62c1d6); } m_nHash[0] += a; m_nHash[1] += b; m_nHash[2] += c; m_nHash[3] += d; m_nHash[4] += e; } void CSHA::Reset() { m_nCount[0] = m_nCount[1] = 0; m_nHash[0] = 0x67452301; m_nHash[1] = 0xefcdab89; m_nHash[2] = 0x98badcfe; m_nHash[3] = 0x10325476; m_nHash[4] = 0xc3d2e1f0; } void CSHA::GetHash(CAICHHash& Hash) { /* extract the hash value as bytes in case the hash buffer is */ /* misaligned for 32-bit words*/ wxASSERT( Hash.GetHashSize() == 20 ); for(int i = 0; i < SHA1_DIGEST_SIZE; ++i) Hash.GetRawHash()[i] = (unsigned char)(m_nHash[i >> 2] >> 8 * (~i & 3)); } /* SHA1 hash data in an array of bytes into hash buffer and call the */ /* hash_compile function as required. */ void CSHA::Add(const void* pData, uint32 nLength) { const unsigned char* data = (const unsigned char*)pData; uint32 pos = (uint32)(m_nCount[0] & SHA1_MASK), space = SHA1_BLOCK_SIZE - pos; const unsigned char *sp = data; if((m_nCount[0] += nLength) < nLength) ++(m_nCount[1]); while(nLength >= space) /* tranfer whole blocks while possible */ { memcpy(((unsigned char*)m_nBuffer) + pos, sp, space); sp += space; nLength -= space; space = SHA1_BLOCK_SIZE; pos = 0; Compile(); } memcpy(((unsigned char*)m_nBuffer) + pos, sp, nLength); } /* SHA1 final padding and digest calculation */ #if (wxBYTE_ORDER == wxLITTLE_ENDIAN) static uint32 mask[4] = { 0x00000000, 0x000000ff, 0x0000ffff, 0x00ffffff }; static uint32 bits[4] = { 0x00000080, 0x00008000, 0x00800000, 0x80000000 }; #else static uint32 mask[4] = { 0x00000000, 0xff000000, 0xffff0000, 0xffffff00 }; static uint32 bits[4] = { 0x80000000, 0x00800000, 0x00008000, 0x00000080 }; #endif void CSHA::Finish(CAICHHash& Hash) { uint32 i = (uint32)(m_nCount[0] & SHA1_MASK); /* mask out the rest of any partial 32-bit word and then set */ /* the next byte to 0x80. On big-endian machines any bytes in */ /* the buffer will be at the top end of 32 bit words, on little */ /* endian machines they will be at the bottom. Hence the AND */ /* and OR masks above are reversed for little endian systems */ /* Note that we can always add the first padding byte at this */ /* because the buffer always contains at least one empty slot */ m_nBuffer[i >> 2] = (m_nBuffer[i >> 2] & mask[i & 3]) | bits[i & 3]; /* we need 9 or more empty positions, one for the padding byte */ /* (above) and eight for the length count. If there is not */ /* enough space pad and empty the buffer */ if(i > SHA1_BLOCK_SIZE - 9) { if(i < 60) m_nBuffer[15] = 0; Compile(); i = 0; } else /* compute a word index for the empty buffer positions */ i = (i >> 2) + 1; while(i < 14) /* and zero pad all but last two positions */ m_nBuffer[i++] = 0; /* assemble the eight byte counter in in big-endian format */ m_nBuffer[14] = swap_b32((m_nCount[1] << 3) | (m_nCount[0] >> 29)); m_nBuffer[15] = swap_b32(m_nCount[0] << 3); Compile(); GetHash(Hash); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SHA.h0000644000175000017500000000617612611472361017070 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // Kry - Modified version of the original SHA.cpp to work on linux and // use wxWidgets. Original license follows. // /* --------------------------------------------------------------------------- Copyright (c) 2002-2011 Dr Brian Gladman ( brg@gladman.me.uk ) All rights reserved. LICENSE TERMS The free distribution and use of this software in both source and binary form is allowed (with or without changes) provided that: 1. distributions of this source code include the above copyright notice, this list of conditions and the following disclaimer; 2. distributions in binary form include the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other associated materials; 3. the copyright holder's name is not used to endorse products built using this software without specific written permission. ALTERNATIVELY, provided that this notice is retained in full, this product may be distributed under the terms of the GNU General Public License (GPL), in which case the provisions of the GPL apply INSTEAD OF those given above. DISCLAIMER This software is provided 'as is' with no explicit or implied warranties in respect of its properties, including, but not limited to, correctness and/or fitness for purpose. --------------------------------------------------------------------------- Issue Date: 30/11/2002 This is a byte oriented version of SHA1 that operates on arrays of bytes stored in memory. It runs at 22 cycles per byte on a Pentium P4 processor */ #ifndef __SHA_H__ #define __SHA_H__ #include "SHAHashSet.h" class CSHA : public CAICHHashAlgo { // Construction public: CSHA(); virtual ~CSHA() {}; // Operations public: virtual void Reset(); virtual void Add(const void* pData, uint32 nLength); virtual void Finish(CAICHHash& Hash); virtual void GetHash(CAICHHash& Hash); protected: void Compile(); private: uint32 m_nCount[2]; uint32 m_nHash[5]; uint32 m_nBuffer[16]; }; #define SHA1_BLOCK_SIZE 64 #define SHA1_DIGEST_SIZE 20 #endif // __SHA_H__ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SHAHashSet.cpp0000644000175000017500000010403612611472361020675 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include "SHAHashSet.h" #include "amule.h" #include "MemFile.h" #include "Preferences.h" #include "SHA.h" #include "updownclient.h" #include "DownloadQueue.h" #include "PartFile.h" #include "Logger.h" #include // for this version the limits are set very high, they might be lowered later // to make a hash trustworthy, at least 10 unique Ips (255.255.128.0) must have sent it // and if we have received more than one hash for the file, one hash has to be sent by more than 95% of all unique IPs #define MINUNIQUEIPS_TOTRUST 10 // how many unique IPs have to send us a hash to make it trustworthy #define MINPERCENTAGE_TOTRUST 92 // how many percentage of clients have to send the same hash to make it trustworthy CAICHRequestedDataList CAICHHashSet::m_liRequestedData; ///////////////////////////////////////////////////////////////////////////////////////// ///CAICHHash wxString CAICHHash::GetString() const { return EncodeBase32(m_abyBuffer, HASHSIZE); } void CAICHHash::Read(CFileDataIO* file) { file->Read(m_abyBuffer,HASHSIZE); } void CAICHHash::Write(CFileDataIO* file) const { file->Write(m_abyBuffer,HASHSIZE); } unsigned int CAICHHash::DecodeBase32(const wxString &base32) { return ::DecodeBase32(base32, HASHSIZE, m_abyBuffer); } ///////////////////////////////////////////////////////////////////////////////////////// ///CAICHHashTree CAICHHashTree::CAICHHashTree(uint64 nDataSize, bool bLeftBranch, uint64 nBaseSize) { m_nDataSize = nDataSize; m_nBaseSize = nBaseSize; m_bIsLeftBranch = bLeftBranch; m_pLeftTree = NULL; m_pRightTree = NULL; m_bHashValid = false; } CAICHHashTree::~CAICHHashTree() { delete m_pLeftTree; delete m_pRightTree; } // recursive CAICHHashTree* CAICHHashTree::FindHash(uint64 nStartPos, uint64 nSize, uint8* nLevel) { (*nLevel)++; wxCHECK(*nLevel <= 22, NULL); wxCHECK(nStartPos + nSize <= m_nDataSize, NULL); wxCHECK(nSize <= m_nDataSize, NULL); if (nStartPos == 0 && nSize == m_nDataSize) { // this is the searched hash return this; } else if (m_nDataSize <= m_nBaseSize) { // sanity // this is already the last level, cant go deeper wxFAIL; return NULL; } else { uint64 nBlocks = m_nDataSize / m_nBaseSize + ((m_nDataSize % m_nBaseSize != 0 )? 1:0); uint64 nLeft = (((m_bIsLeftBranch) ? nBlocks+1:nBlocks) / 2)* m_nBaseSize; uint64 nRight = m_nDataSize - nLeft; if (nStartPos < nLeft) { if (nStartPos + nSize > nLeft) { // sanity wxFAIL; return NULL; } if (m_pLeftTree == NULL) { m_pLeftTree = new CAICHHashTree(nLeft, true, (nLeft <= PARTSIZE) ? EMBLOCKSIZE : PARTSIZE); } else { wxASSERT( m_pLeftTree->m_nDataSize == nLeft ); } return m_pLeftTree->FindHash(nStartPos, nSize, nLevel); } else { nStartPos -= nLeft; if (nStartPos + nSize > nRight) { // sanity wxFAIL; return NULL; } if (m_pRightTree == NULL) { m_pRightTree = new CAICHHashTree(nRight, false, (nRight <= PARTSIZE) ? EMBLOCKSIZE : PARTSIZE); } else { wxASSERT( m_pRightTree->m_nDataSize == nRight ); } return m_pRightTree->FindHash(nStartPos, nSize, nLevel); } } } // recursive // calculates missing hash from the existing ones // overwrites existing hashs // fails if no hash is found for any branch bool CAICHHashTree::ReCalculateHash(CAICHHashAlgo* hashalg, bool bDontReplace) { if (m_pLeftTree && m_pRightTree) { if ( !m_pLeftTree->ReCalculateHash(hashalg, bDontReplace) || !m_pRightTree->ReCalculateHash(hashalg, bDontReplace) ) { return false; } if (bDontReplace && m_bHashValid) { return true; } if (m_pRightTree->m_bHashValid && m_pLeftTree->m_bHashValid) { hashalg->Reset(); hashalg->Add(m_pLeftTree->m_Hash.GetRawHash(), HASHSIZE); hashalg->Add(m_pRightTree->m_Hash.GetRawHash(), HASHSIZE); hashalg->Finish(m_Hash); m_bHashValid = true; return true; } else { return m_bHashValid; } } else if (m_pLeftTree == NULL && m_pRightTree == NULL) { return true; } else { AddDebugLogLineN(logSHAHashSet, wxT("ReCalculateHash failed - Hashtree incomplete")); return false; } } bool CAICHHashTree::VerifyHashTree(CAICHHashAlgo* hashalg, bool bDeleteBadTrees) { if (!m_bHashValid) { wxFAIL; if (bDeleteBadTrees) { if (m_pLeftTree) { delete m_pLeftTree; m_pLeftTree = NULL; } if (m_pRightTree) { delete m_pRightTree; m_pRightTree = NULL; } } AddDebugLogLineN(logSHAHashSet, wxT("VerifyHashTree - No masterhash available")); return false; } // calculated missing hashs without overwriting anything if (m_pLeftTree && !m_pLeftTree->m_bHashValid) { m_pLeftTree->ReCalculateHash(hashalg, true); } if (m_pRightTree && !m_pRightTree->m_bHashValid) { m_pRightTree->ReCalculateHash(hashalg, true); } if ((m_pRightTree && m_pRightTree->m_bHashValid) ^ (m_pLeftTree && m_pLeftTree->m_bHashValid)) { // one branch can never be verified if (bDeleteBadTrees) { if (m_pLeftTree) { delete m_pLeftTree; m_pLeftTree = NULL; } if (m_pRightTree) { delete m_pRightTree; m_pRightTree = NULL; } } AddDebugLogLineN(logSHAHashSet, wxT("VerifyHashSet failed - Hashtree incomplete")); return false; } if ((m_pRightTree && m_pRightTree->m_bHashValid) && (m_pLeftTree && m_pLeftTree->m_bHashValid)) { // check verify the hashs of both child nodes against my hash CAICHHash CmpHash; hashalg->Reset(); hashalg->Add(m_pLeftTree->m_Hash.GetRawHash(), HASHSIZE); hashalg->Add(m_pRightTree->m_Hash.GetRawHash(), HASHSIZE); hashalg->Finish(CmpHash); if (m_Hash != CmpHash) { if (bDeleteBadTrees) { if (m_pLeftTree) { delete m_pLeftTree; m_pLeftTree = NULL; } if (m_pRightTree) { delete m_pRightTree; m_pRightTree = NULL; } } return false; } return m_pLeftTree->VerifyHashTree(hashalg, bDeleteBadTrees) && m_pRightTree->VerifyHashTree(hashalg, bDeleteBadTrees); } else { // last hash in branch - nothing below to verify return true; } } void CAICHHashTree::SetBlockHash(uint64 nSize, uint64 nStartPos, CAICHHashAlgo* pHashAlg) { wxASSERT ( nSize <= EMBLOCKSIZE ); CAICHHashTree* pToInsert = FindHash(nStartPos, nSize); if (pToInsert == NULL) { // sanity wxFAIL; AddDebugLogLineN(logSHAHashSet, wxT("Critical Error: Failed to Insert SHA-HashBlock, FindHash() failed!")); return; } //sanity if (pToInsert->m_nBaseSize != EMBLOCKSIZE || pToInsert->m_nDataSize != nSize) { wxFAIL; AddDebugLogLineN(logSHAHashSet, wxT("Critical Error: Logical error on values in SetBlockHashFromData")); return; } pHashAlg->Finish(pToInsert->m_Hash); pToInsert->m_bHashValid = true; } bool CAICHHashTree::CreatePartRecoveryData(uint64 nStartPos, uint64 nSize, CFileDataIO* fileDataOut, uint32 wHashIdent, bool b32BitIdent) { wxCHECK(nStartPos + nSize <= m_nDataSize, false); wxCHECK(nSize <= m_nDataSize, false); if (nStartPos == 0 && nSize == m_nDataSize) { // this is the searched part, now write all blocks of this part // hashident for this level will be adjsuted by WriteLowestLevelHash return WriteLowestLevelHashs(fileDataOut, wHashIdent, false, b32BitIdent); } else if (m_nDataSize <= m_nBaseSize) { // sanity // this is already the last level, cant go deeper wxFAIL; return false; } else { wHashIdent <<= 1; wHashIdent |= (m_bIsLeftBranch) ? 1: 0; uint64 nBlocks = m_nDataSize / m_nBaseSize + ((m_nDataSize % m_nBaseSize != 0 )? 1:0); uint64 nLeft = ( ((m_bIsLeftBranch) ? nBlocks+1:nBlocks) / 2)* m_nBaseSize; uint64 nRight = m_nDataSize - nLeft; if (m_pLeftTree == NULL || m_pRightTree == NULL) { wxFAIL; return false; } if (nStartPos < nLeft) { if (nStartPos + nSize > nLeft || !m_pRightTree->m_bHashValid) { // sanity wxFAIL; return false; } m_pRightTree->WriteHash(fileDataOut, wHashIdent, b32BitIdent); return m_pLeftTree->CreatePartRecoveryData(nStartPos, nSize, fileDataOut, wHashIdent, b32BitIdent); } else { nStartPos -= nLeft; if (nStartPos + nSize > nRight || !m_pLeftTree->m_bHashValid) { // sanity wxFAIL; return false; } m_pLeftTree->WriteHash(fileDataOut, wHashIdent, b32BitIdent); return m_pRightTree->CreatePartRecoveryData(nStartPos, nSize, fileDataOut, wHashIdent, b32BitIdent); } } } void CAICHHashTree::WriteHash(CFileDataIO* fileDataOut, uint32 wHashIdent, bool b32BitIdent) const { wxASSERT( m_bHashValid ); wHashIdent <<= 1; wHashIdent |= (m_bIsLeftBranch) ? 1: 0; if (!b32BitIdent) { wxASSERT( wHashIdent <= 0xFFFF ); fileDataOut->WriteUInt16((uint16)wHashIdent); } else { fileDataOut->WriteUInt32(wHashIdent); } m_Hash.Write(fileDataOut); } // write lowest level hashs into file, ordered from left to right optional without identifier bool CAICHHashTree::WriteLowestLevelHashs(CFileDataIO* fileDataOut, uint32 wHashIdent, bool bNoIdent, bool b32BitIdent) const { wHashIdent <<= 1; wHashIdent |= (m_bIsLeftBranch) ? 1: 0; if (m_pLeftTree == NULL && m_pRightTree == NULL) { if (m_nDataSize <= m_nBaseSize && m_bHashValid ) { if (!bNoIdent && !b32BitIdent) { wxASSERT( wHashIdent <= 0xFFFF ); fileDataOut->WriteUInt16((uint16)wHashIdent); } else if (!bNoIdent && b32BitIdent) { fileDataOut->WriteUInt32(wHashIdent); } m_Hash.Write(fileDataOut); return true; } else { wxFAIL; return false; } } else if (m_pLeftTree == NULL || m_pRightTree == NULL) { wxFAIL; return false; } else { return m_pLeftTree->WriteLowestLevelHashs(fileDataOut, wHashIdent, bNoIdent, b32BitIdent) && m_pRightTree->WriteLowestLevelHashs(fileDataOut, wHashIdent, bNoIdent, b32BitIdent); } } // recover all low level hashs from given data. hashs are assumed to be ordered in left to right - no identifier used bool CAICHHashTree::LoadLowestLevelHashs(CFileDataIO* fileInput) { if (m_nDataSize <= m_nBaseSize) { // sanity // lowest level, read hash m_Hash.Read(fileInput); m_bHashValid = true; return true; } else { uint64 nBlocks = m_nDataSize / m_nBaseSize + ((m_nDataSize % m_nBaseSize != 0 )? 1:0); uint64 nLeft = ( ((m_bIsLeftBranch) ? nBlocks+1:nBlocks) / 2)* m_nBaseSize; uint64 nRight = m_nDataSize - nLeft; if (m_pLeftTree == NULL) { m_pLeftTree = new CAICHHashTree(nLeft, true, (nLeft <= PARTSIZE) ? EMBLOCKSIZE : PARTSIZE); } else { wxASSERT( m_pLeftTree->m_nDataSize == nLeft ); } if (m_pRightTree == NULL) { m_pRightTree = new CAICHHashTree(nRight, false, (nRight <= PARTSIZE) ? EMBLOCKSIZE : PARTSIZE); } else { wxASSERT( m_pRightTree->m_nDataSize == nRight ); } return m_pLeftTree->LoadLowestLevelHashs(fileInput) && m_pRightTree->LoadLowestLevelHashs(fileInput); } } // write the hash, specified by wHashIdent, with Data from fileInput. bool CAICHHashTree::SetHash(CFileDataIO* fileInput, uint32 wHashIdent, sint8 nLevel, bool bAllowOverwrite) { if (nLevel == (-1)) { // first call, check how many level we need to go uint8 i = 0; for (; i != 32 && (wHashIdent & 0x80000000) == 0; ++i) { wHashIdent <<= 1; } if (i > 31) { AddDebugLogLineN(logSHAHashSet, wxT("CAICHHashTree::SetHash - found invalid HashIdent (0)")); return false; } else { nLevel = 31 - i; } } if (nLevel == 0) { // this is the searched hash if (m_bHashValid && !bAllowOverwrite) { // not allowed to overwrite this hash, however move the filepointer as if we read a hash fileInput->Seek(HASHSIZE, wxFromCurrent); return true; } m_Hash.Read(fileInput); m_bHashValid = true; return true; } else if (m_nDataSize <= m_nBaseSize) { // sanity // this is already the last level, cant go deeper wxFAIL; return false; } else { // adjust ident to point the path to the next node wHashIdent <<= 1; nLevel--; uint64 nBlocks = m_nDataSize / m_nBaseSize + ((m_nDataSize % m_nBaseSize != 0 )? 1:0); uint64 nLeft = ( ((m_bIsLeftBranch) ? nBlocks+1:nBlocks) / 2)* m_nBaseSize; uint64 nRight = m_nDataSize - nLeft; if ((wHashIdent & 0x80000000) > 0) { if (m_pLeftTree == NULL) { m_pLeftTree = new CAICHHashTree(nLeft, true, (nLeft <= PARTSIZE) ? EMBLOCKSIZE : PARTSIZE); } else { wxASSERT( m_pLeftTree->m_nDataSize == nLeft ); } return m_pLeftTree->SetHash(fileInput, wHashIdent, nLevel); } else { if (m_pRightTree == NULL) { m_pRightTree = new CAICHHashTree(nRight, false, (nRight <= PARTSIZE) ? EMBLOCKSIZE : PARTSIZE); } else { wxASSERT( m_pRightTree->m_nDataSize == nRight ); } return m_pRightTree->SetHash(fileInput, wHashIdent, nLevel); } } } ///////////////////////////////////////////////////////////////////////////////////////// ///CAICHUntrustedHash bool CAICHUntrustedHash::AddSigningIP(uint32 dwIP) { dwIP &= 0x00F0FFFF; // we use only the 20 most significant bytes for unique IPs return m_adwIpsSigning.insert(dwIP).second; } ///////////////////////////////////////////////////////////////////////////////////////// ///CAICHHashSet CAICHHashSet::CAICHHashSet(CKnownFile* pOwner) : m_pHashTree(0, true, PARTSIZE) { m_eStatus = AICH_EMPTY; m_pOwner = pOwner; } CAICHHashSet::~CAICHHashSet(void) { FreeHashSet(); } bool CAICHHashSet::CreatePartRecoveryData(uint64 nPartStartPos, CFileDataIO* fileDataOut, bool bDbgDontLoad) { wxASSERT( m_pOwner ); if (m_pOwner->IsPartFile() || m_eStatus != AICH_HASHSETCOMPLETE) { wxFAIL; return false; } if (m_pHashTree.m_nDataSize <= EMBLOCKSIZE) { wxFAIL; return false; } if (!bDbgDontLoad) { if (!LoadHashSet()) { AddDebugLogLineN(logSHAHashSet, CFormat(wxT("Created RecoveryData error: failed to load hashset. File: %s")) % m_pOwner->GetFileName()); SetStatus(AICH_ERROR); return false; } } bool bResult; uint8 nLevel = 0; uint32 nPartSize = min(PARTSIZE, m_pOwner->GetFileSize()-nPartStartPos); m_pHashTree.FindHash(nPartStartPos, nPartSize,&nLevel); uint16 nHashsToWrite = (nLevel-1) + nPartSize/EMBLOCKSIZE + ((nPartSize % EMBLOCKSIZE != 0 )? 1:0); const bool bUse32BitIdentifier = m_pOwner->IsLargeFile(); if (bUse32BitIdentifier) { fileDataOut->WriteUInt16(0); // no 16bit hashs to write } fileDataOut->WriteUInt16(nHashsToWrite); uint64 nCheckFilePos = fileDataOut->GetPosition(); if (m_pHashTree.CreatePartRecoveryData(nPartStartPos, nPartSize, fileDataOut, 0, bUse32BitIdentifier)) { if (nHashsToWrite*(HASHSIZE+(bUse32BitIdentifier? 4u:2u)) != fileDataOut->GetPosition() - nCheckFilePos) { wxFAIL; AddDebugLogLineN( logSHAHashSet, CFormat(wxT("Created RecoveryData has wrong length. File: %s")) % m_pOwner->GetFileName() ); bResult = false; SetStatus(AICH_ERROR); } else { bResult = true; } } else { AddDebugLogLineN(logSHAHashSet, CFormat(wxT("Failed to create RecoveryData for '%s'")) % m_pOwner->GetFileName()); bResult = false; SetStatus(AICH_ERROR); } if (!bUse32BitIdentifier) { fileDataOut->WriteUInt16(0); // no 32bit hashs to write } if (!bDbgDontLoad) { FreeHashSet(); } return bResult; } bool CAICHHashSet::ReadRecoveryData(uint64 nPartStartPos, CMemFile* fileDataIn) { if (/*eMule TODO !m_pOwner->IsPartFile() ||*/ !(m_eStatus == AICH_VERIFIED || m_eStatus == AICH_TRUSTED) ) { wxFAIL; return false; } /* V2 AICH Hash Packet: 16bit-hashs-to-read ()[count1] AICH hashs 32bit-hashs-to-read ()[count2] AICH hashs */ // at this time we check the recoverydata for the correct ammounts of hashs only // all hash are then taken into the tree, depending on there hashidentifier (except the masterhash) uint8 nLevel = 0; uint32 nPartSize = min(PARTSIZE, m_pOwner->GetFileSize()-nPartStartPos); m_pHashTree.FindHash(nPartStartPos, nPartSize,&nLevel); uint16 nHashsToRead = (nLevel-1) + nPartSize/EMBLOCKSIZE + ((nPartSize % EMBLOCKSIZE != 0 )? 1:0); // read hashs with 16 bit identifier uint16 nHashsAvailable = fileDataIn->ReadUInt16(); if (fileDataIn->GetLength()-fileDataIn->GetPosition() < nHashsToRead*(HASHSIZE+2u) || (nHashsToRead != nHashsAvailable && nHashsAvailable != 0)) { // this check is redunant, CSafememfile would catch such an error too AddDebugLogLineN(logSHAHashSet, CFormat(wxT("Failed to read RecoveryData for '%s' - Received datasize/amounts of hashs was invalid")) % m_pOwner->GetFileName()); return false; } for (uint32 i = 0; i != nHashsAvailable; i++) { uint16 wHashIdent = fileDataIn->ReadUInt16(); if (wHashIdent == 1 /*never allow masterhash to be overwritten*/ || !m_pHashTree.SetHash(fileDataIn, wHashIdent,(-1), false)) { AddDebugLogLineN(logSHAHashSet, CFormat(wxT("Failed to read RecoveryData for '%s' - Error when trying to read hash into tree")) % m_pOwner->GetFileName()); VerifyHashTree(true); // remove invalid hashes which we have already written return false; } } // read hashs with 32bit identifier if (nHashsAvailable == 0 && fileDataIn->GetLength() - fileDataIn->GetPosition() >= 2) { nHashsAvailable = fileDataIn->ReadUInt16(); if (fileDataIn->GetLength()-fileDataIn->GetPosition() < nHashsToRead*(HASHSIZE+4u) || (nHashsToRead != nHashsAvailable && nHashsAvailable != 0)) { // this check is redunant, CSafememfile would catch such an error too // TODO: theApp->QueueDebugLogLine(/*DLP_VERYHIGH,*/ false, _T("Failed to read RecoveryData for %s - Received datasize/amounts of hashs was invalid (2)"), m_pOwner->GetFileName() ); return false; } // TODO: DEBUG_ONLY( theApp->QueueDebugLogLine(/*DLP_VERYHIGH,*/ false, _T("read RecoveryData for %s - Received packet with %u 32bit hash identifiers)"), m_pOwner->GetFileName(), nHashsAvailable ) ); for (uint32 i = 0; i != nHashsToRead; i++) { uint32 wHashIdent = fileDataIn->ReadUInt32(); if (wHashIdent == 1 /*never allow masterhash to be overwritten*/ || wHashIdent > 0x400000 || !m_pHashTree.SetHash(fileDataIn, wHashIdent,(-1), false)) { // TODO: theApp->QueueDebugLogLine(/*DLP_VERYHIGH,*/ false, _T("Failed to read RecoveryData for %s - Error when trying to read hash into tree (2)"), m_pOwner->GetFileName() ); VerifyHashTree(true); // remove invalid hashes which we have already written return false; } } } if (nHashsAvailable == 0) { // TODO: theApp->QueueDebugLogLine(/*DLP_VERYHIGH,*/ false, _T("Failed to read RecoveryData for %s - Packet didn't contained any hashs"), m_pOwner->GetFileName() ); return false; } if (VerifyHashTree(true)) { // some final check if all hashs we wanted are there for (uint32 nPartPos = 0; nPartPos < nPartSize; nPartPos += EMBLOCKSIZE) { CAICHHashTree* phtToCheck = m_pHashTree.FindHash(nPartStartPos+nPartPos, min(EMBLOCKSIZE, nPartSize-nPartPos)); if (phtToCheck == NULL || !phtToCheck->m_bHashValid) { AddDebugLogLineN(logSHAHashSet, CFormat(wxT("Failed to read RecoveryData for '%s' - Error while verifying presence of all lowest level hashes")) % m_pOwner->GetFileName()); return false; } } // all done return true; } else { AddDebugLogLineN(logSHAHashSet, CFormat(wxT("Failed to read RecoveryData for '%s' - Verifying received hashtree failed")) % m_pOwner->GetFileName()); return false; } } // this function is only allowed to be called right after successfully calculating the hashset (!) bool CAICHHashSet::SaveHashSet() { if (m_eStatus != AICH_HASHSETCOMPLETE) { wxFAIL; return false; } if ( !m_pHashTree.m_bHashValid || m_pHashTree.m_nDataSize != m_pOwner->GetFileSize()) { wxFAIL; return false; } try { const wxString fullpath = thePrefs::GetConfigDir() + KNOWN2_MET_FILENAME; const bool exists = wxFile::Exists(fullpath); CFile file(fullpath, exists ? CFile::read_write : CFile::write); if (!file.IsOpened()) { AddDebugLogLineC(logSHAHashSet, wxT("Failed to save HashSet: opening met file failed!")); return false; } uint64 nExistingSize = file.GetLength(); if (nExistingSize) { uint8 header = file.ReadUInt8(); if (header != KNOWN2_MET_VERSION) { AddDebugLogLineC(logSHAHashSet, wxT("Saving failed: Current file is not a met-file!")); return false; } AddDebugLogLineN(logSHAHashSet, CFormat(wxT("Met file is version 0x%2.2x.")) % header); } else { file.WriteUInt8(KNOWN2_MET_VERSION); // Update the recorded size, in order for the sanity check below to work. nExistingSize += 1; } // first we check if the hashset we want to write is already stored CAICHHash CurrentHash; while (file.GetPosition() < nExistingSize) { CurrentHash.Read(&file); if (m_pHashTree.m_Hash == CurrentHash) { // this hashset if already available, no need to save it again return true; } uint32 nHashCount = file.ReadUInt32(); if (file.GetPosition() + nHashCount*HASHSIZE > nExistingSize) { AddDebugLogLineC(logSHAHashSet, wxT("Saving failed: File contains fewer entries than specified!")); return false; } // skip the rest of this hashset file.Seek(nHashCount*HASHSIZE, wxFromCurrent); } // write hashset m_pHashTree.m_Hash.Write(&file); uint32 nHashCount = (PARTSIZE/EMBLOCKSIZE + ((PARTSIZE % EMBLOCKSIZE != 0)? 1 : 0)) * (m_pHashTree.m_nDataSize/PARTSIZE); if (m_pHashTree.m_nDataSize % PARTSIZE != 0) { nHashCount += (m_pHashTree.m_nDataSize % PARTSIZE)/EMBLOCKSIZE + (((m_pHashTree.m_nDataSize % PARTSIZE) % EMBLOCKSIZE != 0)? 1 : 0); } file.WriteUInt32(nHashCount); if (!m_pHashTree.WriteLowestLevelHashs(&file, 0, true, true)) { // thats bad... really file.SetLength(nExistingSize); AddDebugLogLineC(logSHAHashSet, wxT("Failed to save HashSet: WriteLowestLevelHashs() failed!")); return false; } if (file.GetLength() != nExistingSize + (nHashCount+1)*HASHSIZE + 4) { // thats even worse file.SetLength(nExistingSize); AddDebugLogLineC(logSHAHashSet, wxT("Failed to save HashSet: Calculated and real size of hashset differ!")); return false; } AddDebugLogLineN(logSHAHashSet, CFormat(wxT("Successfully saved eMuleAC Hashset, %u Hashs + 1 Masterhash written")) % nHashCount); } catch (const CSafeIOException& e) { AddDebugLogLineC(logSHAHashSet, wxT("IO error while saving AICH HashSet: ") + e.what()); return false; } return true; } bool CAICHHashSet::LoadHashSet() { if (m_eStatus != AICH_HASHSETCOMPLETE) { wxFAIL; return false; } if ( !m_pHashTree.m_bHashValid || m_pHashTree.m_nDataSize != m_pOwner->GetFileSize() || m_pHashTree.m_nDataSize == 0) { wxFAIL; return false; } wxString fullpath = thePrefs::GetConfigDir() + KNOWN2_MET_FILENAME; CFile file(fullpath, CFile::read); if (!file.IsOpened()) { if (wxFileExists(fullpath)) { wxString strError(wxT("Failed to load ") KNOWN2_MET_FILENAME wxT(" file")); AddDebugLogLineC(logSHAHashSet, strError); } return false; } try { uint8 header = file.ReadUInt8(); if (header != KNOWN2_MET_VERSION) { AddDebugLogLineC(logSHAHashSet, wxT("Loading failed: Current file is not a met-file!")); return false; } CAICHHash CurrentHash; uint64 nExistingSize = file.GetLength(); uint32 nHashCount; while (file.GetPosition() < nExistingSize) { CurrentHash.Read(&file); if (m_pHashTree.m_Hash == CurrentHash) { // found Hashset uint32 nExpectedCount = (PARTSIZE/EMBLOCKSIZE + ((PARTSIZE % EMBLOCKSIZE != 0)? 1 : 0)) * (m_pHashTree.m_nDataSize/PARTSIZE); if (m_pHashTree.m_nDataSize % PARTSIZE != 0) { nExpectedCount += (m_pHashTree.m_nDataSize % PARTSIZE)/EMBLOCKSIZE + (((m_pHashTree.m_nDataSize % PARTSIZE) % EMBLOCKSIZE != 0)? 1 : 0); } nHashCount = file.ReadUInt32(); if (nHashCount != nExpectedCount) { AddDebugLogLineC(logSHAHashSet, wxT("Failed to load HashSet: Available Hashs and expected hashcount differ!")); return false; } if (!m_pHashTree.LoadLowestLevelHashs(&file)) { AddDebugLogLineC(logSHAHashSet, wxT("Failed to load HashSet: LoadLowestLevelHashs failed!")); return false; } if (!ReCalculateHash(false)) { AddDebugLogLineC(logSHAHashSet, wxT("Failed to load HashSet: Calculating loaded hashs failed!")); return false; } if (CurrentHash != m_pHashTree.m_Hash) { AddDebugLogLineC(logSHAHashSet, wxT("Failed to load HashSet: Calculated Masterhash differs from given Masterhash - hashset corrupt!")); return false; } return true; } nHashCount = file.ReadUInt32(); if (file.GetPosition() + nHashCount*HASHSIZE > nExistingSize) { AddDebugLogLineC(logSHAHashSet, wxT("Saving failed: File contains fewer entries than specified!")); return false; } // skip the rest of this hashset file.Seek(nHashCount*HASHSIZE, wxFromCurrent); } AddDebugLogLineC(logSHAHashSet, wxT("Failed to load HashSet: HashSet not found!")); } catch (const CSafeIOException& e) { AddDebugLogLineC(logSHAHashSet, wxT("IO error while loading AICH HashSet: ") + e.what()); } return false; } // delete the hashset except the masterhash (we dont keep aich hashsets in memory to save ressources) void CAICHHashSet::FreeHashSet() { if (m_pHashTree.m_pLeftTree) { delete m_pHashTree.m_pLeftTree; m_pHashTree.m_pLeftTree = NULL; } if (m_pHashTree.m_pRightTree) { delete m_pHashTree.m_pRightTree; m_pHashTree.m_pRightTree = NULL; } } void CAICHHashSet::SetMasterHash(const CAICHHash& Hash, EAICHStatus eNewStatus) { m_pHashTree.m_Hash = Hash; m_pHashTree.m_bHashValid = true; SetStatus(eNewStatus); } CAICHHashAlgo* CAICHHashSet::GetNewHashAlgo() { return new CSHA(); } bool CAICHHashSet::ReCalculateHash(bool bDontReplace) { CAICHHashAlgo* hashalg = GetNewHashAlgo(); bool bResult = m_pHashTree.ReCalculateHash(hashalg, bDontReplace); delete hashalg; return bResult; } bool CAICHHashSet::VerifyHashTree(bool bDeleteBadTrees) { CAICHHashAlgo* hashalg = GetNewHashAlgo(); bool bResult = m_pHashTree.VerifyHashTree(hashalg, bDeleteBadTrees); delete hashalg; return bResult; } void CAICHHashSet::SetFileSize(uint64 nSize) { m_pHashTree.m_nDataSize = nSize; m_pHashTree.m_nBaseSize = (nSize <= PARTSIZE) ? EMBLOCKSIZE : PARTSIZE; } void CAICHHashSet::UntrustedHashReceived(const CAICHHash& Hash, uint32 dwFromIP) { switch(GetStatus()) { case AICH_EMPTY: case AICH_UNTRUSTED: case AICH_TRUSTED: break; default: return; } bool bFound = false; bool bAdded = false; for (uint32 i = 0; i < m_aUntrustedHashs.size(); ++i) { if (m_aUntrustedHashs[i].m_Hash == Hash) { bAdded = m_aUntrustedHashs[i].AddSigningIP(dwFromIP); bFound = true; break; } } if (!bFound) { bAdded = true; CAICHUntrustedHash uhToAdd; uhToAdd.m_Hash = Hash; uhToAdd.AddSigningIP(dwFromIP); m_aUntrustedHashs.push_back(uhToAdd); } uint32 nSigningIPsTotal = 0; // unique clients who send us a hash int nMostTrustedPos = (-1); // the hash which most clients send us uint32 nMostTrustedIPs = 0; for (uint32 i = 0; i < (uint32)m_aUntrustedHashs.size(); ++i) { nSigningIPsTotal += m_aUntrustedHashs[i].m_adwIpsSigning.size(); if ((uint32)m_aUntrustedHashs[i].m_adwIpsSigning.size() > nMostTrustedIPs) { nMostTrustedIPs = m_aUntrustedHashs[i].m_adwIpsSigning.size(); nMostTrustedPos = i; } } if (nMostTrustedPos == (-1) || nSigningIPsTotal == 0) { wxFAIL; return; } // the check if we trust any hash if ( thePrefs::IsTrustingEveryHash() || (nMostTrustedIPs >= MINUNIQUEIPS_TOTRUST && (100 * nMostTrustedIPs)/nSigningIPsTotal >= MINPERCENTAGE_TOTRUST)) { //trusted AddDebugLogLineN(logSHAHashSet, CFormat(wxT("AICH Hash received (%sadded), We have now %u hash(es) from %u unique IP(s). ") wxT("We trust the Hash %s from %u client(s) (%u%%). File: %s")) % (bAdded ? wxT("") : wxT("not ")) % m_aUntrustedHashs.size() % nSigningIPsTotal % m_aUntrustedHashs[nMostTrustedPos].m_Hash.GetString() % nMostTrustedIPs % ((100 * nMostTrustedIPs) / nSigningIPsTotal) % m_pOwner->GetFileName()); SetStatus(AICH_TRUSTED); if (!HasValidMasterHash() || GetMasterHash() != m_aUntrustedHashs[nMostTrustedPos].m_Hash) { SetMasterHash(m_aUntrustedHashs[nMostTrustedPos].m_Hash, AICH_TRUSTED); FreeHashSet(); } } else { // untrusted AddDebugLogLineN(logSHAHashSet, CFormat(wxT("AICH Hash received (%sadded), We have now %u hash(es) from %u unique IP(s). ") wxT("Best Hash %s from %u clients (%u%%) - but we don't trust it yet. File: %s")) % (bAdded ? wxT(""): wxT("not ")) % m_aUntrustedHashs.size() % nSigningIPsTotal % m_aUntrustedHashs[nMostTrustedPos].m_Hash.GetString() % nMostTrustedIPs % ((100 * nMostTrustedIPs) / nSigningIPsTotal) % m_pOwner->GetFileName()); SetStatus(AICH_UNTRUSTED); if (!HasValidMasterHash() || GetMasterHash() != m_aUntrustedHashs[nMostTrustedPos].m_Hash) { SetMasterHash(m_aUntrustedHashs[nMostTrustedPos].m_Hash, AICH_UNTRUSTED); FreeHashSet(); } } if (bAdded) {} // get rid of unused variable warning } void CAICHHashSet::ClientAICHRequestFailed(CUpDownClient* pClient) { pClient->SetReqFileAICHHash(NULL); CAICHRequestedData data = GetAICHReqDetails(pClient); RemoveClientAICHRequest(pClient); if (data.m_pClient.GetClient() != pClient) { return; } if( theApp->downloadqueue->IsPartFile(data.m_pPartFile)) { AddDebugLogLineN(logSHAHashSet, CFormat(wxT("AICH Request failed, Trying to ask another client (File: '%s', Part: %u, Client '%s'")) % data.m_pPartFile->GetFileName() % data.m_nPart % pClient->GetClientFullInfo()); data.m_pPartFile->RequestAICHRecovery(data.m_nPart); } } void CAICHHashSet::RemoveClientAICHRequest(const CUpDownClient* pClient) { for (CAICHRequestedDataList::iterator it = m_liRequestedData.begin();it != m_liRequestedData.end(); ++it) { if (it->m_pClient.GetClient() == pClient) { m_liRequestedData.erase(it); return; } } wxFAIL; } bool CAICHHashSet::IsClientRequestPending(const CPartFile* pForFile, uint16 nPart) { for (CAICHRequestedDataList::iterator it = m_liRequestedData.begin();it != m_liRequestedData.end(); ++it) { if (it->m_pPartFile == pForFile && it->m_nPart == nPart) { return true; } } return false; } CAICHRequestedData CAICHHashSet::GetAICHReqDetails(const CUpDownClient* pClient) { for (CAICHRequestedDataList::iterator it = m_liRequestedData.begin();it != m_liRequestedData.end(); ++it) { if (it->m_pClient.GetClient() == pClient) { return *(it); } } wxFAIL; CAICHRequestedData empty; return empty; } bool CAICHHashSet::IsPartDataAvailable(uint64 nPartStartPos) { if (!(m_eStatus == AICH_VERIFIED || m_eStatus == AICH_TRUSTED || m_eStatus == AICH_HASHSETCOMPLETE) ) { wxFAIL; return false; } uint64 nPartSize = min(PARTSIZE, m_pOwner->GetFileSize()-nPartStartPos); for (uint64 nPartPos = 0; nPartPos < nPartSize; nPartPos += EMBLOCKSIZE) { CAICHHashTree* phtToCheck = m_pHashTree.FindHash(nPartStartPos+nPartPos, min(EMBLOCKSIZE, nPartSize-nPartPos)); if (phtToCheck == NULL || !phtToCheck->m_bHashValid) { return false; } } return true; } // VC++ defines Assert as ASSERT. VC++ also defines VERIFY MACRO, which is the equivalent of ASSERT but also works in Released builds. #define VERIFY(x) wxASSERT(x) void CAICHHashSet::DbgTest() { #ifdef _DEBUG //define TESTSIZE 4294567295 uint8 maxLevel = 0; uint32 cHash = 1; uint8 curLevel = 0; //uint32 cParts = 0; maxLevel = 0; /* CAICHHashTree* pTest = new CAICHHashTree(TESTSIZE, true, 9728000); for (uint64 i = 0; i+9728000 < TESTSIZE; i += 9728000) { CAICHHashTree* pTest2 = new CAICHHashTree(9728000, true, EMBLOCKSIZE); pTest->ReplaceHashTree(i, 9728000, &pTest2); cParts++; } CAICHHashTree* pTest2 = new CAICHHashTree(TESTSIZE-i, true, EMBLOCKSIZE); pTest->ReplaceHashTree(i, (TESTSIZE-i), &pTest2); cParts++; */ #define TESTSIZE m_pHashTree.m_nDataSize if (m_pHashTree.m_nDataSize <= EMBLOCKSIZE) { return; } CAICHHashSet TestHashSet(m_pOwner); TestHashSet.SetFileSize(m_pOwner->GetFileSize()); TestHashSet.SetMasterHash(GetMasterHash(), AICH_VERIFIED); CMemFile file; uint64 i; for (i = 0; i+9728000 < TESTSIZE; i += 9728000) { VERIFY( CreatePartRecoveryData(i, &file) ); /*uint32 nRandomCorruption = (rand() * rand()) % (file.GetLength()-4); file.Seek(nRandomCorruption, CFile::begin); file.Write(&nRandomCorruption, 4);*/ file.Seek(0,wxFromStart); VERIFY( TestHashSet.ReadRecoveryData(i, &file) ); file.Seek(0,wxFromStart); TestHashSet.FreeHashSet(); uint32 j; for (j = 0; j+EMBLOCKSIZE < 9728000; j += EMBLOCKSIZE) { VERIFY( m_pHashTree.FindHash(i+j, EMBLOCKSIZE, &curLevel) ); //TRACE(wxT("%u - %s\r\n"), cHash, m_pHashTree.FindHash(i+j, EMBLOCKSIZE, &curLevel)->m_Hash.GetString()); maxLevel = max(curLevel, maxLevel); curLevel = 0; cHash++; } VERIFY( m_pHashTree.FindHash(i+j, 9728000-j, &curLevel) ); //TRACE(wxT("%u - %s\r\n"), cHash, m_pHashTree.FindHash(i+j, 9728000-j, &curLevel)->m_Hash.GetString()); maxLevel = max(curLevel, maxLevel); curLevel = 0; cHash++; } VERIFY( CreatePartRecoveryData(i, &file) ); file.Seek(0,wxFromStart); VERIFY( TestHashSet.ReadRecoveryData(i, &file) ); file.Seek(0,wxFromStart); TestHashSet.FreeHashSet(); for (uint64 j = 0; j+EMBLOCKSIZE < TESTSIZE-i; j += EMBLOCKSIZE) { VERIFY( m_pHashTree.FindHash(i+j, EMBLOCKSIZE, &curLevel) ); //TRACE(wxT("%u - %s\r\n"), cHash,m_pHashTree.FindHash(i+j, EMBLOCKSIZE, &curLevel)->m_Hash.GetString()); maxLevel = max(curLevel, maxLevel); curLevel = 0; cHash++; } //VERIFY( m_pHashTree.FindHash(i+j, (TESTSIZE-i)-j, &curLevel) ); //TRACE(wxT("%u - %s\r\n"), cHash,m_pHashTree.FindHash(i+j, (TESTSIZE-i)-j, &curLevel)->m_Hash.GetString()); maxLevel = max(curLevel, maxLevel); #endif } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SHAHashSet.h0000644000175000017500000002200112611472361020331 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // /* SHA hashset basically exists of 1 Tree for all Parts (9.28MB) + n Trees for all blocks (180KB) while n is the number of Parts. This means it is NOT a complete hashtree, since the 9.28MB is a given level, in order to be able to create a hashset format similar to the MD4 one. If the number of elements for the next level are odd (for example 21 blocks to spread into 2 hashs) the majority of elements will go into the left branch if the parent node was a left branch and into the right branch if the parent node was a right branch. The first node is always taken as a left branch. Example tree: FileSize: 19506000 Bytes = 18,6 MB X(18,6 MB) MasterHash / \ X(18,55) \ / \ \ X(9,28) X(9,28) X(0,05MB) PartHashs / \ / \ \ X(4,75) X(4,57) X(4,57) X(4,57) X(4,75) [...............] X(180KB) X(180KB) [...] X(140KB) | X(180KB) X(180KB) [...] BlockHashs v Border between first and second Part (9.28MB) HashsIdentifier: When sending hashes, they are sent with a 16bit identifier which specifies its position in the tree (so StartPosition + HashDataSize would lead to the same hash) The identifier basically describes the way from the top of the tree to the hash. a set bit (1) means follow the left branch, a 0 means follow the right. The highest bit which is set is seen as the start- position (since the first node is always seen as left). Example x 0000000000000001 / \ x \ 0000000000000011 / \ \ x _X_ x 0000000000000110 Version 2 of AICH also supports 32bit identifiers to support large files, check CAICHHashSet::CreatePartRecoveryData */ #ifndef __SHAHAHSET_H__ #define __SHAHAHSET_H__ #include #include #include "Types.h" #include "ClientRef.h" #define HASHSIZE 20 #define KNOWN2_MET_FILENAME wxT("known2_64.met") #define OLD_KNOWN2_MET_FILENAME wxT("known2.met") #define KNOWN2_MET_VERSION 0x02 enum EAICHStatus { AICH_ERROR = 0, AICH_EMPTY, AICH_UNTRUSTED, AICH_TRUSTED, AICH_VERIFIED, AICH_HASHSETCOMPLETE }; class CFileDataIO; class CKnownFile; class CMemFile; class CPartFile; class CUpDownClient; ///////////////////////////////////////////////////////////////////////////////////////// ///CAICHHash class CAICHHash { private: byte m_abyBuffer[HASHSIZE]; public: CAICHHash() { memset(m_abyBuffer, 0, HASHSIZE); } CAICHHash(CFileDataIO* file) { Read(file); } CAICHHash(byte* data) { Read(data); } CAICHHash(const CAICHHash& k1) { *this = k1; } ~CAICHHash() {} CAICHHash& operator=(const CAICHHash& k1) { memcpy(m_abyBuffer, k1.m_abyBuffer, HASHSIZE); return *this; } friend bool operator==(const CAICHHash& k1,const CAICHHash& k2) { return memcmp(k1.m_abyBuffer, k2.m_abyBuffer, HASHSIZE) == 0; } friend bool operator!=(const CAICHHash& k1,const CAICHHash& k2) { return !(k1 == k2); } void Read(CFileDataIO* file); void Write(CFileDataIO* file) const; void Read(byte* data) { memcpy(m_abyBuffer, data, HASHSIZE); } wxString GetString() const; byte* GetRawHash() { return m_abyBuffer; } static uint32 GetHashSize() { return HASHSIZE;} unsigned int DecodeBase32(const wxString &base32); }; ///////////////////////////////////////////////////////////////////////////////////////// ///CAICHHashAlgo class CAICHHashAlgo { public: virtual ~CAICHHashAlgo() {}; virtual void Reset() = 0; virtual void Add(const void* pData, uint32 nLength) = 0; virtual void Finish(CAICHHash& Hash) = 0; virtual void GetHash(CAICHHash& Hash) = 0; }; ///////////////////////////////////////////////////////////////////////////////////////// ///CAICHHashTree class CAICHHashTree { friend class CAICHHashSet; private: CAICHHash m_Hash; uint64 m_nDataSize; // size of data which is covered by this hash uint64 m_nBaseSize; // blocksize on which the lowest hash is based on bool m_bIsLeftBranch; // left or right branch of the tree bool m_bHashValid; // the hash is valid and not empty CAICHHashTree* m_pLeftTree; CAICHHashTree* m_pRightTree; public: CAICHHashTree(uint64 nDataSize, bool bLeftBranch, uint64 nBaseSize); ~CAICHHashTree(); const CAICHHash &GetHash() const { return m_Hash; } uint64 GetNDataSize() const { return m_nDataSize; } uint64 GetNBaseSize() const { return m_nBaseSize; } bool GetIsLeftBranch() const { return m_bIsLeftBranch; } bool GetHashValid() const { return m_bHashValid; } void SetBlockHash(uint64 nSize, uint64 nStartPos, CAICHHashAlgo* pHashAlg); bool ReCalculateHash(CAICHHashAlgo* hashalg, bool bDontReplace ); bool VerifyHashTree(CAICHHashAlgo* hashalg, bool bDeleteBadTrees); CAICHHashTree* FindHash(uint64 nStartPos, uint64 nSize) { uint8 buffer = 0; return FindHash(nStartPos, nSize, &buffer); } protected: CAICHHashTree* FindHash(uint64 nStartPos, uint64 nSize, uint8* nLevel); bool CreatePartRecoveryData(uint64 nStartPos, uint64 nSize, CFileDataIO* fileDataOut, uint32 wHashIdent, bool b32BitIdent); void WriteHash(CFileDataIO* fileDataOut, uint32 wHashIdent, bool b32BitIdent) const; bool WriteLowestLevelHashs(CFileDataIO* fileDataOut, uint32 wHashIdent, bool bNoIdent, bool b32BitIdent) const; bool LoadLowestLevelHashs(CFileDataIO* fileInput); bool SetHash(CFileDataIO* fileInput, uint32 wHashIdent, sint8 nLevel = (-1), bool bAllowOverwrite = true); }; ///////////////////////////////////////////////////////////////////////////////////////// ///CAICHUntrustedHashs class CAICHUntrustedHash { public: CAICHUntrustedHash& operator=(const CAICHUntrustedHash& k1) { m_adwIpsSigning = k1.m_adwIpsSigning; m_Hash = k1.m_Hash ; return *this; } bool AddSigningIP(uint32 dwIP); CAICHHash m_Hash; std::set m_adwIpsSigning; }; ///////////////////////////////////////////////////////////////////////////////////////// ///CAICHUntrustedHashs class CAICHRequestedData { public: CAICHRequestedData() { m_nPart = 0; m_pPartFile = NULL; } CAICHRequestedData& operator=(const CAICHRequestedData& k1) { m_nPart = k1.m_nPart; m_pPartFile = k1.m_pPartFile; m_pClient = k1.m_pClient; return *this; } uint16 m_nPart; CPartFile* m_pPartFile; CClientRef m_pClient; }; using namespace std; typedef std::list CAICHRequestedDataList; ///////////////////////////////////////////////////////////////////////////////////////// ///CAICHHashSet class CAICHHashSet { private: CKnownFile* m_pOwner; EAICHStatus m_eStatus; deque m_aUntrustedHashs; public: static CAICHRequestedDataList m_liRequestedData; CAICHHashTree m_pHashTree; CAICHHashSet(CKnownFile* pOwner); ~CAICHHashSet(void); bool CreatePartRecoveryData(uint64 nPartStartPos, CFileDataIO* fileDataOut, bool bDbgDontLoad = false); bool ReadRecoveryData(uint64 nPartStartPos, CMemFile* fileDataIn); bool ReCalculateHash(bool bDontReplace = false); bool VerifyHashTree(bool bDeleteBadTrees); void UntrustedHashReceived(const CAICHHash& Hash, uint32 dwFromIP); bool IsPartDataAvailable(uint64 nPartStartPos); void SetStatus(EAICHStatus bNewValue) { m_eStatus = bNewValue; } EAICHStatus GetStatus() const { return m_eStatus; } void FreeHashSet(); void SetFileSize(uint64 nSize); CAICHHash& GetMasterHash() { return m_pHashTree.m_Hash; } void SetMasterHash(const CAICHHash& Hash, EAICHStatus eNewStatus); bool HasValidMasterHash() { return m_pHashTree.m_bHashValid; } bool SaveHashSet(); bool LoadHashSet(); // only call directly when debugging static CAICHHashAlgo* GetNewHashAlgo(); static void ClientAICHRequestFailed(CUpDownClient* pClient); static void RemoveClientAICHRequest(const CUpDownClient* pClient); static bool IsClientRequestPending(const CPartFile* pForFile, uint16 nPart); static CAICHRequestedData GetAICHReqDetails(const CUpDownClient* pClient); void DbgTest(); void SetOwner(CKnownFile* owner) { m_pOwner = owner; } }; #endif //__SHAHAHSET_H__ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SafeFile.cpp0000644000175000017500000003346412611472361020466 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "SafeFile.h" // Interface declarations. #include "MD4Hash.h" // Needed for CMD4Hash #include "kademlia/utils/UInt128.h" // Needed for CUInt128 #include "ScopedPtr.h" // Needed for CScopedPtr and CScopedArray #include "Logger.h" #include // Needed for CFormat #include "CompilerSpecific.h" // Needed for __FUNCTION__ #define CHECK_BOM(size, x) ((size >= 3) && (x[0] == (char)0xEF) && (x[1] == (char)0xBB) && (x[2] == (char)0xBF)) const char BOMHeader[3] = { '\xEF', '\xBB', '\xBF'}; CSafeIOException::CSafeIOException(const wxString& type, const wxString& desc) : CMuleException(wxT("SafeIO::") + type, desc) {} CEOFException::CEOFException(const wxString& desc) : CSafeIOException(wxT("EOF"), desc) {} CIOFailureException::CIOFailureException(const wxString& desc) : CSafeIOException(wxT("IOFailure"), desc) {} CIOFailureException::CIOFailureException(const wxString& type, const wxString& desc) : CSafeIOException(wxT("IOFailure::") + type, desc) {} /////////////////////////////////////////////////////////////////////////////// // CFileDataIO CFileDataIO::~CFileDataIO() { } bool CFileDataIO::Eof() const { return GetPosition() >= GetLength(); } void CFileDataIO::Read(void *buffer, size_t count) const { MULE_VALIDATE_PARAMS(buffer, wxT("Attempting to write to NULL buffer.")); // Check that we read everything we wanted. if (doRead(buffer, count) == (signed)count) { return; } // To reduce potential system calls, we only do EOF checks when reads fail. if (Eof()) { throw CEOFException(wxT("Attempt to read past end of file.")); } else { throw CIOFailureException(wxT("Read error, failed to read from file.")); } } void CFileDataIO::Write(const void* buffer, size_t count) { MULE_VALIDATE_PARAMS(buffer, wxT("Attempting to read from NULL buffer.")); if (doWrite(buffer, count) != (signed)count) { throw CIOFailureException(wxT("Write error, failed to write to file.")); } } uint64 CFileDataIO::Seek(sint64 offset, wxSeekMode from) const { sint64 newpos = 0; switch (from) { case wxFromStart: newpos = offset; break; case wxFromCurrent: newpos = GetPosition() + offset; break; case wxFromEnd: newpos = GetLength() + offset; break; default: MULE_VALIDATE_PARAMS(false, wxT("Invalid seek-mode specified.")); } MULE_VALIDATE_PARAMS(newpos >= 0, wxT("Position after seeking would be less than zero!")); sint64 result = doSeek(newpos); MULE_VALIDATE_STATE(result >= 0, wxT("Seeking resulted in invalid offset.")); MULE_VALIDATE_STATE(result == newpos, wxT("Target position and actual position disagree.")); return result; } uint8 CFileDataIO::ReadUInt8() const { uint8 value = 0; Read(&value, sizeof(uint8)); return value; } uint16 CFileDataIO::ReadUInt16() const { uint16 value = 0; Read(&value, sizeof(uint16)); return ENDIAN_SWAP_16(value); } uint32 CFileDataIO::ReadUInt32() const { uint32 value = 0; Read(&value, sizeof(uint32)); return ENDIAN_SWAP_32(value); } uint64 CFileDataIO::ReadUInt64() const { uint64 value = 0; Read(&value, sizeof(uint64)); return ENDIAN_SWAP_64(value); } // UInt128 values are stored a little weird way... // Four little-endian 32-bit numbers, stored in // big-endian order CUInt128 CFileDataIO::ReadUInt128() const { CUInt128 value; for (int i = 0; i < 4; i++) { // Four 32bits chunks value.Set32BitChunk(i, ReadUInt32()); } return value; } CMD4Hash CFileDataIO::ReadHash() const { CMD4Hash value; Read(value.GetHash(), MD4HASH_LENGTH); return value; } float CFileDataIO::ReadFloat() const { float retVal; Read(&retVal, sizeof(float)); return retVal; } unsigned char* CFileDataIO::ReadBsob(uint8* puSize) const { MULE_VALIDATE_PARAMS(puSize, wxT("NULL pointer argument in ReadBsob")); *puSize = ReadUInt8(); CScopedArray bsob(*puSize); Read(bsob.get(), *puSize); return bsob.release(); } wxString CFileDataIO::ReadString(bool bOptUTF8, uint8 SizeLen, bool SafeRead) const { uint32 readLen; switch (SizeLen) { case sizeof(uint16): readLen = ReadUInt16(); break; case sizeof(uint32): readLen = ReadUInt32(); break; default: MULE_VALIDATE_PARAMS(false, wxT("Invalid SizeLen value in ReadString")); } if (SafeRead) { readLen = std::min(readLen, GetLength() - GetPosition()); } return ReadOnlyString(bOptUTF8, readLen); } wxString CFileDataIO::ReadOnlyString(bool bOptUTF8, uint16 raw_len) const { // We only need to set the the NULL terminator, since we know that // reads will either succeed or throw an exception, in which case // we wont be returning anything std::vector val_array(raw_len + 1); val_array[raw_len] = 0; char* val = &(val_array[0]); Read(val, raw_len); wxString str; if (CHECK_BOM(raw_len, val)) { // This is a UTF8 string with a BOM header, skip header. str = UTF82unicode(val + 3); } else if (bOptUTF8) { str = UTF82unicode(val); if (str.IsEmpty()) { // Fallback to Latin-1 str = wxString(val, wxConvISO8859_1, raw_len); } } else { // Raw strings are written as Latin-1 (see CFileDataIO::WriteStringCore) str = wxString(val, wxConvISO8859_1, raw_len); } return str; } void CFileDataIO::WriteUInt8(uint8 value) { Write(&value, sizeof(uint8)); } void CFileDataIO::WriteUInt16(uint16 value) { ENDIAN_SWAP_I_16(value); Write(&value, sizeof(uint16)); } void CFileDataIO::WriteUInt32(uint32 value) { ENDIAN_SWAP_I_32(value); Write(&value, sizeof(uint32)); } void CFileDataIO::WriteUInt64(uint64 value) { ENDIAN_SWAP_I_64(value); Write(&value, sizeof(uint64)); } // UInt128 values are stored a little weird way... // Four little-endian 32-bit numbers, stored in // big-endian order void CFileDataIO::WriteUInt128(const Kademlia::CUInt128& value) { for (int i = 0; i < 4; i++) { // Four 32bits chunks WriteUInt32(value.Get32BitChunk(i)); } } void CFileDataIO::WriteHash(const CMD4Hash& value) { Write(value.GetHash(), MD4HASH_LENGTH); } void CFileDataIO::WriteFloat(float value) { Write(&value, sizeof(float)); } void CFileDataIO::WriteBsob(const unsigned char* value, uint8 size) { WriteUInt8(size); Write(value, size); } void CFileDataIO::WriteString(const wxString& str, EUtf8Str eEncode, uint8 SizeLen) { switch (eEncode) { case utf8strRaw: case utf8strOptBOM: { Unicode2CharBuf s(unicode2UTF8(str)); if (s) { WriteStringCore(s, eEncode, SizeLen); break; } } default: { // Non UTF-8 strings are saved as Latin-1 wxCharBuffer s1 = str.mb_str(wxConvISO8859_1); WriteStringCore(s1, utf8strNone, SizeLen); } } } void CFileDataIO::WriteStringCore(const char *s, EUtf8Str eEncode, uint8 SizeLen) { uint32 sLength = s ? strlen(s) : 0; uint32 real_length = 0; if (eEncode == utf8strOptBOM) { real_length = sLength + 3; // For BOM header. } else { real_length = sLength; } switch (SizeLen) { case 0: // Don't write size. break; case sizeof(uint16): // We must not allow too long strings to be written, // as this would allow for a buggy clients to "poison" // us, by sending ISO8859-1 strings that expand to a // greater than 16b length when converted as UTF-8. if (real_length > 0xFFFF) { wxFAIL_MSG(wxT("String is too long to be saved")); real_length = std::min(real_length, 0xFFFF); if (eEncode == utf8strOptBOM) { sLength = real_length - 3; } else { sLength = real_length; } } WriteUInt16(real_length); break; case sizeof(uint32): WriteUInt32(real_length); break; default: MULE_VALIDATE_PARAMS(false, wxT("Invalid length for string-length field.")); } // The BOM header must be written even if the string is empty. if (eEncode == utf8strOptBOM) { Write(BOMHeader, 3); } // Only attempt to write non-NULL strings. if (sLength) { // No NULL terminator is written since we explicitly specify the length Write(s, sLength); } } CTag *CFileDataIO::ReadTag(bool bOptACP) const { CTag *retVal = NULL; wxString name; byte type = 0; try { type = ReadUInt8(); name = ReadString(false); switch (type) { // NOTE: This tag data type is accepted and stored only to give us the possibility to upgrade // the net in some months. // // And still.. it doesnt't work this way without breaking backward compatibility. To properly // do this without messing up the network the following would have to be done: // - those tag types have to be ignored by any client, otherwise those tags would also be sent (and // that's really the problem) // // - ignoring means, each client has to read and right throw away those tags, so those tags get // get never stored in any tag list which might be sent by that client to some other client. // // - all calling functions have to be changed to deal with the 'nr. of tags' attribute (which was // already parsed) correctly.. just ignoring those tags here is not enough, any taglists have to // be built with the knowledge that the 'nr. of tags' attribute may get decreased during the tag // reading.. // // If those new tags would just be stored and sent to remote clients, any malicious or just bugged // client could let send a lot of nodes "corrupted" packets... // case TAGTYPE_HASH16: { retVal = new CTagHash(name, ReadHash()); break; } case TAGTYPE_STRING: retVal = new CTagString(name, ReadString(bOptACP)); break; case TAGTYPE_UINT64: retVal = new CTagInt64(name, ReadUInt64()); break; case TAGTYPE_UINT32: retVal = new CTagInt32(name, ReadUInt32()); break; case TAGTYPE_UINT16: retVal = new CTagInt16(name, ReadUInt16()); break; case TAGTYPE_UINT8: retVal = new CTagInt8(name, ReadUInt8()); break; case TAGTYPE_FLOAT32: retVal = new CTagFloat(name, ReadFloat()); break; // NOTE: This tag data type is accepted and stored only to give us the possibility to upgrade // the net in some months. // // And still.. it doesnt't work this way without breaking backward compatibility case TAGTYPE_BSOB: { uint8 size = 0; CScopedArray value(ReadBsob(&size)); retVal = new CTagBsob(name, value.get(), size); break; } default: throw wxString(CFormat(wxT("Invalid Kad tag type; type=0x%02x name=%s\n")) % type % name); } } catch(const CMuleException& e) { AddLogLineN(e.what()); delete retVal; throw; } catch(const wxString& e) { AddLogLineN(e); throw; } return retVal; } void CFileDataIO::ReadTagPtrList(TagPtrList* taglist, bool bOptACP) const { MULE_VALIDATE_PARAMS(taglist, wxT("NULL pointer argument in ReadTagPtrList")); uint32 count = ReadUInt8(); for (uint32 i = 0; i < count; i++) { CTag* tag = ReadTag(bOptACP); taglist->push_back(tag); } } void CFileDataIO::WriteTag(const CTag& tag) { try { WriteUInt8(tag.GetType()); if (!tag.GetName().IsEmpty()) { WriteString(tag.GetName(),utf8strNone); } else { WriteUInt16(1); WriteUInt8(tag.GetNameID()); } switch (tag.GetType()) { case TAGTYPE_HASH16: // Do NOT use this to transfer any tags for at least half a year!! WriteHash(CMD4Hash(tag.GetHash())); break; case TAGTYPE_STRING: WriteString(tag.GetStr(), utf8strRaw); // Always UTF8 break; case TAGTYPE_UINT64: WriteUInt64(tag.GetInt()); break; case TAGTYPE_UINT32: WriteUInt32(tag.GetInt()); break; case TAGTYPE_FLOAT32: WriteFloat(tag.GetFloat()); break; case TAGTYPE_BSOB: WriteBsob(tag.GetBsob(), tag.GetBsobSize()); break; case TAGTYPE_UINT16: WriteUInt16(tag.GetInt()); break; case TAGTYPE_UINT8: WriteUInt8(tag.GetInt()); break; case TAGTYPE_BLOB: // NOTE: This will break backward compatibility with met files for eMule versions prior to 0.44a // and any aMule prior to SVN 26/02/2005 WriteUInt32(tag.GetBlobSize()); Write(tag.GetBlob(), tag.GetBlobSize()); break; default: //TODO: Support more tag types // With the if above, this should NEVER happen. AddLogLineNS(CFormat(wxT("CFileDataIO::WriteTag: Unknown tag: type=0x%02X")) % tag.GetType()); wxFAIL; break; } } catch (...) { AddLogLineNS(wxT("Exception in CDataIO:WriteTag")); throw; } } void CFileDataIO::WriteTagPtrList(const TagPtrList& tagList) { uint32 count = tagList.size(); wxASSERT( count <= 0xFF ); WriteUInt8(count); TagPtrList::const_iterator it; for (it = tagList.begin(); it != tagList.end(); ++it) { WriteTag(**it); } } uint64 CFileDataIO::GetIntTagValue() const { uint8 type = ReadUInt8(); ReadString(false); switch (type) { case TAGTYPE_UINT64: return ReadUInt64(); break; case TAGTYPE_UINT32: return ReadUInt32(); break; case TAGTYPE_UINT16: return ReadUInt16(); break; case TAGTYPE_UINT8: return ReadUInt8(); break; default: throw wxString(wxT("Wrong tag type reading int tag")); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SafeFile.h0000644000175000017500000002176712611472361020136 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SAFEFILE_H #define SAFEFILE_H #include // Needed for wxFileName #include // Needef for CMuleException #include "Tag.h" namespace Kademlia { class CUInt128; } using Kademlia::CUInt128; class CMD4Hash; /** * This class provides a interface for safe file IO. * * Basic IO operations will either succeed or throw an exception, * so that failure cannot be ignored. There are currently 3 types * of failures: Read past EOF, errors while reading, and errors * while writing. * * Beyond basic IO, the interface provides functions for reading * and writing a number of simple data-types. These are all written * and read as little-endian in order to allow for communication * across platforms. * * Note that when empty areas are created, for instance by seeking * past the end, then writing, the value of bytes where no data was * explicitly written is not specified. */ class CFileDataIO { public: /** * The Destructor does nothing, but is needed to allow * for safe deletion objects via CFileDataIO pointers. */ virtual ~CFileDataIO(); /** * Must return the current position in the file. */ virtual uint64 GetPosition() const = 0; /** * Must return the length of the file-object in bytes. */ virtual uint64 GetLength() const = 0; /** * Returns true when the file-position is past or at the end of the file. */ virtual bool Eof() const; /** * Changes the file position. * * Note that seeking to an negative position is an illegal operation. * * @see wxFile::Seek */ virtual uint64 Seek(sint64 offset, wxSeekMode from = wxFromStart) const; /** * Reads 'count' bytes into 'buffer'. * * @param buffer The target buffer. * @param count The number of bytes to read. * * Note that Read will read the specified number of * bytes unless this would read past the end of the * file. In that case, a CEOFException is thrown and * the position and target buffer is left unchanged. * * However, it is also possible that the read will * fail due to IO errors (bad hardware, ect), in which * case an CIOFailureException will be thrown. */ virtual void Read(void* buffer, size_t count) const; /** * Write 'count' bytes from 'buffer' into the file. * * @param buffer The source-data buffer. * @param count The number of bytes to write. * * Note that Write will throw a CIOFailureException * if it fails to write the specified number of bytes, * which can be caused by hardware failures, lack of * free space, etc. */ virtual void Write(const void* buffer, size_t count); /** * Reads the given type from the file, stored as little-endian. * * @see CSafeFileIO::Read */ //@{ virtual uint8 ReadUInt8() const; virtual uint16 ReadUInt16() const; virtual uint32 ReadUInt32() const; virtual uint64 ReadUInt64() const; virtual CUInt128 ReadUInt128() const; virtual CMD4Hash ReadHash() const; virtual float ReadFloat() const; virtual unsigned char* ReadBsob(uint8* size) const; //@} /** * Reads a string from the file. * * @param bOptUTF8 Specifies if the string is UTF8 encoded. * @param lenBytes The number of bytes used to store the string length. * @param SafeRead Avoids throwing CEOFException, see below. * @return The resulting text-string. * * Note that when SafeRead is set to true, CSafeFileIO will crop the length * read from the lenght-field (see lenBytes), so that at most GetLength() - * GetPosition() bytes are read. * * @see CSafeFileIO::Read */ virtual wxString ReadString(bool bOptUTF8, uint8 lenBytes = 2, bool SafeRead = false) const; /** * Reads a string from the file, where the length is specified directly. * * @param bOptUTF8 Specifies if the string is UTF8 encoded. * @param length The length of the string. * @return The resulting text-string. * * This function is typically used when the text-fields length is not stored * as an integer-field in front of the text-field. */ virtual wxString ReadOnlyString(bool bOptUTF8, uint16 length) const; /** * Writes a value of the given type to the file, storing it as little-endian. * * @see CSafeFileIO::Write */ //@{ virtual void WriteUInt8(uint8 value); virtual void WriteUInt16(uint16 value); virtual void WriteUInt32(uint32 value); virtual void WriteUInt64(uint64 value); virtual void WriteUInt128(const CUInt128& value); virtual void WriteHash(const CMD4Hash& value); virtual void WriteFloat(float value); virtual void WriteBsob( const unsigned char* val, uint8 size); //@} /** * Writes a text-string to the file. * * @param str The string to be written. * @param encoding The text-ecoding, see EUtf8Str. * @param lenBytes The number of bytes used to store the string length. * * Valid values for the 'lenBytes' parameters is 0 bytes (no length field), * 2 bytes and 4 bytes. * * @see CSafeFileIO::Write */ virtual void WriteString(const wxString& str, EUtf8Str encoding = utf8strNone, uint8 lenBytes = 2); /* Warning: Special Kad functions, needs documentation */ CTag* ReadTag(bool bOptACP = false) const; void ReadTagPtrList(TagPtrList* taglist, bool bOptACP = false) const; void WriteTag(const CTag& tag); void WriteTagPtrList(const TagPtrList& tagList); /* Special ED2Kv2 function */ uint64 GetIntTagValue() const; /* Some functions I added for simplicity */ // Very obvious bool IsEmpty() { return (GetLength() == 0); } // Appends to the end void Append(const uint8* buffer, int n) { Seek(0, wxFromEnd); Write(buffer, n); } protected: /** * The actual read / write function, as implemented by subclasses. * * @param buffer The buffer to read data into / write data from. * @param count The number of bytes to read / written. * @return The number of bytes read / written or -1 in case of errors. * * Note that the return value must be the actual number of bytes * read or written, with the exception that in case of errors, -1 * may be returned. This is because the return value is used to * detect if the operation succeded. * * This function should not throw Either of the CSafeIOExceptions, * this is done by the CSafeFileIO::Read and the CSafeFileIO::Write * functions. */ //@{ virtual sint64 doRead(void* buffer, size_t count) const = 0; virtual sint64 doWrite(const void* buffer, size_t count) = 0; //@} /** * The actual seek function, as implemented by subclasses. * * @param offset The absolute offset to seek to. * @return The resulting offset. * * This function should not throw of the CSafeIOExceptions, * this is handled by the CSafeFileIO::Seek. At the moment, * seeks that fail are considered a fatal error. */ virtual sint64 doSeek(sint64 offset) const = 0; private: /** * Helper-function that does the actual writing of the string. * * @param str The string to be written. * @param encoding The encoding of the string. * @param lenBytes The number of bytes used to store the string length. * */ void WriteStringCore(const char* str, EUtf8Str encoding, uint8 lenBytes); }; /** * The base class of IO exceptions used by * the CSafeFileIO interface and implementations * of the interface. */ struct CSafeIOException : public CMuleException { CSafeIOException(const wxString& type, const wxString& desc); }; /** * This exception is thrown when attempts are * made at reading past the end of the file. * * This typically happens when a invalid packet * is received that is shorter than expected and * is not fatal. */ struct CEOFException : public CSafeIOException { CEOFException(const wxString& desc); }; /** * This exception reflects a failure in performing * basic IO operations read and write. It will be * thrown in case a read or a write fails to read * or write the specified number of bytes. */ struct CIOFailureException : public CSafeIOException { CIOFailureException(const wxString& type, const wxString& desc); CIOFailureException(const wxString& desc); }; #endif // SAFEFILE_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Scanner.cpp0000644000175000017500000015250712611472361020401 0ustar morphmorph#line 2 "Scanner.cpp" #line 4 "Scanner.cpp" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Returned upon end-of-file. */ #define YY_NULL 0 /* Promotes a possibly negative, possibly signed char to an unsigned * integer for use as an array index. If the signed char is negative, * we want to instead treat it as an 8-bit unsigned char, hence the * double cast. */ #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) /* Enter a start condition. This macro really ought to take a parameter, * but we do it the disgusting crufty way forced on us by the ()-less * definition of BEGIN. */ #define BEGIN (yy_start) = 1 + 2 * /* Translate the current start state into a value that can be later handed * to BEGIN to return to the state. The YYSTATE alias is for lex * compatibility. */ #define YY_START (((yy_start) - 1) / 2) #define YYSTATE YY_START /* Action number for EOF rule of a given start state. */ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) /* Special action meaning "start processing a new file". */ #define YY_NEW_FILE yyrestart(yyin ) #define YY_END_OF_BUFFER_CHAR 0 /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 #endif /* The state buf must be large enough to hold one state per character in the main buffer. */ #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif extern int yyleng; extern FILE *yyin, *yyout; #define EOB_ACT_CONTINUE_SCAN 0 #define EOB_ACT_END_OF_FILE 1 #define EOB_ACT_LAST_MATCH 2 #define YY_LESS_LINENO(n) /* Return all but the first "n" matched characters back to the input stream. */ #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ *yy_cp = (yy_hold_char); \ YY_RESTORE_YY_MORE_OFFSET \ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ while ( 0 ) #define unput(c) yyunput( c, (yytext_ptr) ) #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; #define YY_BUFFER_NEW 0 #define YY_BUFFER_NORMAL 1 /* When an EOF's been seen but there's still some text to process * then we mark the buffer as YY_EOF_PENDING, to indicate that we * shouldn't try reading from the input source any more. We might * still have a bunch of tokens to match, though, because of * possible backing-up. * * When we actually see the EOF, we change the status to "new" * (via yyrestart()), so that the user can continue scanning by * just pointing yyin at a new input file. */ #define YY_BUFFER_EOF_PENDING 2 }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ /* Stack of input buffers. */ static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ /* We provide macros for accessing buffer states in case in the * future we want to put the buffer states in a more general * "scanner state". * * Returns the top of the stack, or NULL. */ #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ : NULL) /* Same as previous macro, but useful when we know that the buffer stack is not * NULL or when we need an lvalue. For internal use only. */ #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] /* yy_hold_char holds the character lost when yytext is formed. */ static char yy_hold_char; static int yy_n_chars; /* number of characters read into yy_ch_buf */ int yyleng; /* Points to current character in buffer. */ static char *yy_c_buf_p = (char *) 0; static int yy_init = 0; /* whether we need to initialize */ static int yy_start = 0; /* start state number */ /* Flag which is used to allow yywrap()'s to do buffer switches * instead of setting up a fresh yyin. A bit of a hack ... */ static int yy_did_buffer_switch_on_eof; void yyrestart (FILE *input_file ); void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); void yy_delete_buffer (YY_BUFFER_STATE b ); void yy_flush_buffer (YY_BUFFER_STATE b ); void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); void yypop_buffer_state (void ); static void yyensure_buffer_stack (void ); static void yy_load_buffer_state (void ); static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); void yyfree (void * ); #define yy_new_buffer yy_create_buffer #define yy_set_interactive(is_interactive) \ { \ if ( ! YY_CURRENT_BUFFER ){ \ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ } #define yy_set_bol(at_bol) \ { \ if ( ! YY_CURRENT_BUFFER ){\ yyensure_buffer_stack (); \ YY_CURRENT_BUFFER_LVALUE = \ yy_create_buffer(yyin,YY_BUF_SIZE ); \ } \ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ } #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) /* Begin user sect3 */ #define yywrap(n) 1 #define YY_SKIP_YYWRAP typedef unsigned char YY_CHAR; FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; typedef int yy_state_type; extern int yylineno; int yylineno = 1; extern char *yytext; #define yytext_ptr yytext static yy_state_type yy_get_previous_state (void ); static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); static int yy_get_next_buffer (void ); static void yy_fatal_error (yyconst char msg[] ); /* Done after the current pattern has been matched and before the * corresponding action - sets up yytext. */ #define YY_DO_BEFORE_ACTION \ (yytext_ptr) = yy_bp; \ yyleng = (size_t) (yy_cp - yy_bp); \ (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; #define YY_NUM_RULES 9 #define YY_END_OF_BUFFER 10 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info { flex_int32_t yy_verify; flex_int32_t yy_nxt; }; static yyconst flex_int16_t yy_accept[57] = { 0, 6, 6, 10, 6, 6, 1, 7, 8, 6, 6, 6, 6, 6, 6, 6, 2, 6, 3, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 0 } ; static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 4, 1, 1, 1, 1, 1, 5, 5, 1, 1, 1, 1, 1, 1, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 8, 1, 1, 1, 1, 1, 1, 9, 6, 6, 10, 6, 6, 1, 1, 1, 1, 1, 1, 1, 11, 12, 1, 1, 13, 1, 14, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 6, 6, 15, 16, 6, 1, 1, 1, 1, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int32_t yy_meta[18] = { 0, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; static yyconst flex_int16_t yy_base[58] = { 0, 0, 0, 45, 0, 0, 370, 370, 370, 31, 25, 23, 20, 0, 24, 17, 0, 19, 0, 0, 8, 16, 15, 12, 23, 34, 45, 56, 67, 78, 89, 100, 111, 122, 133, 144, 155, 166, 177, 188, 199, 210, 221, 232, 243, 254, 265, 276, 287, 298, 309, 320, 331, 342, 353, 0, 370, 19 } ; static yyconst flex_int16_t yy_def[58] = { 0, 56, 1, 56, 57, 57, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 0, 56 } ; static yyconst flex_int16_t yy_nxt[388] = { 0, 4, 5, 6, 7, 8, 4, 4, 4, 9, 4, 10, 11, 4, 4, 4, 12, 4, 24, 24, 13, 24, 24, 23, 22, 21, 20, 24, 24, 25, 25, 19, 25, 25, 18, 17, 16, 15, 25, 25, 26, 26, 14, 26, 26, 56, 56, 56, 56, 26, 26, 27, 27, 56, 27, 27, 56, 56, 56, 56, 27, 27, 28, 28, 56, 28, 28, 56, 56, 56, 56, 28, 28, 29, 29, 56, 29, 29, 56, 56, 56, 56, 29, 29, 30, 30, 56, 30, 30, 56, 56, 56, 56, 30, 30, 31, 31, 56, 31, 31, 56, 56, 56, 56, 31, 31, 32, 32, 56, 32, 32, 56, 56, 56, 56, 32, 32, 33, 33, 56, 33, 33, 56, 56, 56, 56, 33, 33, 34, 34, 56, 34, 34, 56, 56, 56, 56, 34, 34, 35, 35, 56, 35, 35, 56, 56, 56, 56, 35, 35, 36, 36, 56, 36, 36, 56, 56, 56, 56, 36, 36, 37, 37, 56, 37, 37, 56, 56, 56, 56, 37, 37, 38, 38, 56, 38, 38, 56, 56, 56, 56, 38, 38, 39, 39, 56, 39, 39, 56, 56, 56, 56, 39, 39, 40, 40, 56, 40, 40, 56, 56, 56, 56, 40, 40, 41, 41, 56, 41, 41, 56, 56, 56, 56, 41, 41, 42, 42, 56, 42, 42, 56, 56, 56, 56, 42, 42, 43, 43, 56, 43, 43, 56, 56, 56, 56, 43, 43, 44, 44, 56, 44, 44, 56, 56, 56, 56, 44, 44, 45, 45, 56, 45, 45, 56, 56, 56, 56, 45, 45, 46, 46, 56, 46, 46, 56, 56, 56, 56, 46, 46, 47, 47, 56, 47, 47, 56, 56, 56, 56, 47, 47, 48, 48, 56, 48, 48, 56, 56, 56, 56, 48, 48, 49, 49, 56, 49, 49, 56, 56, 56, 56, 49, 49, 50, 50, 56, 50, 50, 56, 56, 56, 56, 50, 50, 51, 51, 56, 51, 51, 56, 56, 56, 56, 51, 51, 52, 52, 56, 52, 52, 56, 56, 56, 56, 52, 52, 53, 53, 56, 53, 53, 56, 56, 56, 56, 53, 53, 54, 54, 56, 54, 54, 56, 56, 56, 56, 54, 54, 55, 55, 56, 55, 55, 56, 56, 56, 56, 55, 55, 3, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56 } ; static yyconst flex_int16_t yy_chk[388] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 23, 57, 23, 23, 22, 21, 20, 17, 23, 23, 24, 24, 15, 24, 24, 14, 12, 11, 10, 24, 24, 25, 25, 9, 25, 25, 3, 0, 0, 0, 25, 25, 26, 26, 0, 26, 26, 0, 0, 0, 0, 26, 26, 27, 27, 0, 27, 27, 0, 0, 0, 0, 27, 27, 28, 28, 0, 28, 28, 0, 0, 0, 0, 28, 28, 29, 29, 0, 29, 29, 0, 0, 0, 0, 29, 29, 30, 30, 0, 30, 30, 0, 0, 0, 0, 30, 30, 31, 31, 0, 31, 31, 0, 0, 0, 0, 31, 31, 32, 32, 0, 32, 32, 0, 0, 0, 0, 32, 32, 33, 33, 0, 33, 33, 0, 0, 0, 0, 33, 33, 34, 34, 0, 34, 34, 0, 0, 0, 0, 34, 34, 35, 35, 0, 35, 35, 0, 0, 0, 0, 35, 35, 36, 36, 0, 36, 36, 0, 0, 0, 0, 36, 36, 37, 37, 0, 37, 37, 0, 0, 0, 0, 37, 37, 38, 38, 0, 38, 38, 0, 0, 0, 0, 38, 38, 39, 39, 0, 39, 39, 0, 0, 0, 0, 39, 39, 40, 40, 0, 40, 40, 0, 0, 0, 0, 40, 40, 41, 41, 0, 41, 41, 0, 0, 0, 0, 41, 41, 42, 42, 0, 42, 42, 0, 0, 0, 0, 42, 42, 43, 43, 0, 43, 43, 0, 0, 0, 0, 43, 43, 44, 44, 0, 44, 44, 0, 0, 0, 0, 44, 44, 45, 45, 0, 45, 45, 0, 0, 0, 0, 45, 45, 46, 46, 0, 46, 46, 0, 0, 0, 0, 46, 46, 47, 47, 0, 47, 47, 0, 0, 0, 0, 47, 47, 48, 48, 0, 48, 48, 0, 0, 0, 0, 48, 48, 49, 49, 0, 49, 49, 0, 0, 0, 0, 49, 49, 50, 50, 0, 50, 50, 0, 0, 0, 0, 50, 50, 51, 51, 0, 51, 51, 0, 0, 0, 0, 51, 51, 52, 52, 0, 52, 52, 0, 0, 0, 0, 52, 52, 53, 53, 0, 53, 53, 0, 0, 0, 0, 53, 53, 54, 54, 0, 54, 54, 0, 0, 0, 0, 54, 54, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56 } ; static yy_state_type yy_last_accepting_state; static char *yy_last_accepting_cpos; extern int yy_flex_debug; int yy_flex_debug = 0; /* The intent behind this definition is that it'll catch * any uses of REJECT which flex missed. */ #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 #define YY_RESTORE_YY_MORE_OFFSET char *yytext; #line 1 "./Scanner.l" #line 2 "./Scanner.l" #include #include "SearchExpr.h" #include "Parser.hpp" #include "ED2KLink.h" #include #include "libs/common/StringFunctions.h" #ifdef _MSC_VER #define isatty(DUMMY) 0 #endif #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define YY_NEVER_INTERACTIVE 1 extern int yyerror(const char* errstr); extern int yyerror(wxString errstr); #define YY_INPUT ReadLexBuff #define YY_FATAL_ERROR FatalLexError static void ReadLexBuff(char* pcBuff, int& riResult, size_t uMaxSize); static void FatalLexError(yyconst char msg[]); static char* _pszLexBuff; static char* _pszLexStr; #line 584 "Scanner.cpp" #define INITIAL 0 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif static int yy_init_globals (void ); /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy (void ); int yyget_debug (void ); void yyset_debug (int debug_flag ); YY_EXTRA_TYPE yyget_extra (void ); void yyset_extra (YY_EXTRA_TYPE user_defined ); FILE *yyget_in (void ); void yyset_in (FILE * in_str ); FILE *yyget_out (void ); void yyset_out (FILE * out_str ); int yyget_leng (void ); char *yyget_text (void ); int yyget_lineno (void ); void yyset_lineno (int line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap (void ); #else extern int yywrap (void ); #endif #endif static void yyunput (int c,char *buf_ptr ); #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void ); #else static int input (void ); #endif #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 8192 #endif /* Copy whatever the last rule matched to the standard output. */ #ifndef ECHO /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ #define ECHO fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, * is returned in "result". */ #ifndef YY_INPUT #define YY_INPUT(buf,result,max_size) \ if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ int n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ if ( c == '\n' ) \ buf[n++] = (char) c; \ if ( c == EOF && ferror( yyin ) ) \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ result = n; \ } \ else \ { \ errno=0; \ while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ { \ if( errno != EINTR) \ { \ YY_FATAL_ERROR( "input in flex scanner failed" ); \ break; \ } \ errno=0; \ clearerr(yyin); \ } \ }\ \ #endif /* No semi-colon after return; correct usage is to write "yyterminate();" - * we don't want an extra ';' after the "return" because that will cause * some compilers to complain about unreachable statements. */ #ifndef yyterminate #define yyterminate() return YY_NULL #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Report a fatal error. */ #ifndef YY_FATAL_ERROR #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) #endif /* end tables serialization structures and prototypes */ /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (void); #define YY_DECL int yylex (void) #endif /* !YY_DECL */ /* Code executed at the beginning of each rule, after yytext and yyleng * have been set up. */ #ifndef YY_USER_ACTION #define YY_USER_ACTION #endif /* Code executed at the end of each rule. */ #ifndef YY_BREAK #define YY_BREAK break; #endif #define YY_RULE_SETUP \ YY_USER_ACTION /** The main scanner function which does all the work. */ YY_DECL { register yy_state_type yy_current_state; register char *yy_cp, *yy_bp; register int yy_act; #line 40 "./Scanner.l" #line 769 "Scanner.cpp" if ( !(yy_init) ) { (yy_init) = 1; #ifdef YY_USER_INIT YY_USER_INIT; #endif if ( ! (yy_start) ) (yy_start) = 1; /* first start state */ if ( ! yyin ) yyin = stdin; if ( ! yyout ) yyout = stdout; if ( ! YY_CURRENT_BUFFER ) { yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_load_buffer_state( ); } while ( 1 ) /* loops until end-of-file is reached */ { yy_cp = (yy_c_buf_p); /* Support of yytext. */ *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; yy_current_state = (yy_start); yy_match: do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 57 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } while ( yy_base[yy_current_state] != 370 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; do_action: /* This label is used only to access EOF actions. */ switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ *yy_cp = (yy_hold_char); yy_cp = (yy_last_accepting_cpos); yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: YY_RULE_SETUP #line 42 "./Scanner.l" { /* Skip blanks. */ } YY_BREAK case 2: YY_RULE_SETUP #line 43 "./Scanner.l" { return TOK_OR; } YY_BREAK case 3: YY_RULE_SETUP #line 44 "./Scanner.l" { return TOK_AND; } YY_BREAK case 4: YY_RULE_SETUP #line 45 "./Scanner.l" { return TOK_NOT; } YY_BREAK case 5: YY_RULE_SETUP #line 47 "./Scanner.l" { yylval.pstr = new wxString(UTF82unicode(yytext)); return TOK_ED2K_LINK; } YY_BREAK case 6: /* rule 6 can match eol */ YY_RULE_SETUP #line 52 "./Scanner.l" { yylval.pstr = new wxString(UTF82unicode(yytext)); return TOK_STRING; } YY_BREAK case 7: YY_RULE_SETUP #line 57 "./Scanner.l" { int l = 128; char* psz = (char*)malloc(l); int i = 0; int c; while ((c = yyinput()) != '\"') { if (c == EOF || c == '\n'){ unput(c); yyerror(wxT("Search expression error: unterminated string")); break; } if (c == '\\'){ /*Escape sequence*/ switch (c = yyinput()) { case '\n': continue; case 't': /*Tab*/ c = '\t'; break; case 'n': /*Linefeed*/ c = '\n'; break; case 'f': /*Formfeed*/ c = '\f'; break; case 'r': /*Carriage return*/ c = '\r'; break; case '\\': /*Backslash*/ c = '\\'; break; case '"': /*Double quotation mark*/ c = '\"'; break; case '\'': /*Single quotation mark*/ c = '\''; break; case '?': /*Question mark*/ c = '\?'; break; case 'v': /*Vertical Tab*/ c = '\v'; break; case 'a': /*Alert*/ c = '\a'; break; case 'b': /*Backspace*/ c = '\b'; break; case 'x': /*Hexadecimal number*/ { int n, octv; for (n = 1, octv = 0; n <= 3; n++) { if ((c = yyinput()) >= '0' && c <= '9') c -= '0'; else if (c >= 'a' && c <= 'f') c = (c - 'a') + 10; else if (c >= 'A' && c <= 'F') c = (c - 'A') + 10; else break; octv = octv * 16 + c; } unput(c); if (n == 1) c = 'x'; else c = octv; } break; } } else { if ((unsigned char)c >= 0x80/* && IsDBCSLeadByte(yytext[0]) */){ psz[i++] = (unsigned char)c; if (i >= l) { char *tmp = (char*)realloc(psz, l += 128); if (tmp == NULL){ yyerror("Less memory for string"); break; } else { psz = tmp; } } c = yyinput(); } } psz[i++] = (unsigned char)c; if (i >= l) { char *tmp = (char*)realloc(psz, l += 128); if (tmp == NULL){ yyerror("Less memory for string"); break; } else { psz = tmp; } } } psz[i] = '\0'; yylval.pstr = new wxString(UTF82unicode(psz)); free(psz); return TOK_STRING; } YY_BREAK case 8: YY_RULE_SETUP #line 162 "./Scanner.l" { return yytext[0]; } YY_BREAK case 9: YY_RULE_SETUP #line 164 "./Scanner.l" ECHO; YY_BREAK #line 1007 "Scanner.cpp" case YY_STATE_EOF(INITIAL): yyterminate(); case YY_END_OF_BUFFER: { /* Amount of text matched not including the EOB char. */ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = (yy_hold_char); YY_RESTORE_YY_MORE_OFFSET if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) { /* We're scanning a new file or input source. It's * possible that this happened because the user * just pointed yyin at a new source and called * yylex(). If so, then we have to assure * consistency between YY_CURRENT_BUFFER and our * globals. Here is the right place to do so, because * this is the first action (other than possibly a * back-up) that will match for the new input source. */ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; } /* Note that here we test for yy_c_buf_p "<=" to the position * of the first EOB in the buffer, since yy_c_buf_p will * already have been incremented past the NUL character * (since all states make transitions on EOB to the * end-of-buffer state). Contrast this with the test * in input(). */ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) { /* This was really a NUL. */ yy_state_type yy_next_state; (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); /* Okay, we're now positioned to make the NUL * transition. We couldn't have * yy_get_previous_state() go ahead and do it * for us because it doesn't know how to deal * with the possibility of jamming (and we don't * want to build jamming into it because then it * will run more slowly). */ yy_next_state = yy_try_NUL_trans( yy_current_state ); yy_bp = (yytext_ptr) + YY_MORE_ADJ; if ( yy_next_state ) { /* Consume the NUL. */ yy_cp = ++(yy_c_buf_p); yy_current_state = yy_next_state; goto yy_match; } else { yy_cp = (yy_c_buf_p); goto yy_find_action; } } else switch ( yy_get_next_buffer( ) ) { case EOB_ACT_END_OF_FILE: { (yy_did_buffer_switch_on_eof) = 0; if ( yywrap( ) ) { /* Note: because we've taken care in * yy_get_next_buffer() to have set up * yytext, we can now set up * yy_c_buf_p so that if some total * hoser (like flex itself) wants to * call the scanner after we return the * YY_NULL, it'll still work - another * YY_NULL will get returned. */ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; yy_act = YY_STATE_EOF(YY_START); goto do_action; } else { if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; } break; } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_match; case EOB_ACT_LAST_MATCH: (yy_c_buf_p) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; yy_current_state = yy_get_previous_state( ); yy_cp = (yy_c_buf_p); yy_bp = (yytext_ptr) + YY_MORE_ADJ; goto yy_find_action; } break; } default: YY_FATAL_ERROR( "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ } /* end of yylex */ /* yy_get_next_buffer - try to read in a new buffer * * Returns a code representing an action: * EOB_ACT_LAST_MATCH - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position * EOB_ACT_END_OF_FILE - end of file */ static int yy_get_next_buffer (void) { register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; register char *source = (yytext_ptr); register int number_to_move, i; int ret_val; if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) YY_FATAL_ERROR( "fatal flex scanner internal error--end of buffer missed" ); if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) { /* Don't try to fill the buffer, so this is an EOF. */ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) { /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; } else { /* We matched some text prior to the EOB, first * process it. */ return EOB_ACT_LAST_MATCH; } } /* Try to read more data. */ /* First move last chars to start of buffer. */ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; for ( i = 0; i < number_to_move; ++i ) *(dest++) = *(source++); if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; else { int num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; while ( num_to_read <= 0 ) { /* Not enough room in the buffer - grow it. */ /* just a shorter name for the current buffer */ YY_BUFFER_STATE b = YY_CURRENT_BUFFER; int yy_c_buf_p_offset = (int) ((yy_c_buf_p) - b->yy_ch_buf); if ( b->yy_is_our_buffer ) { int new_size = b->yy_buf_size * 2; if ( new_size <= 0 ) b->yy_buf_size += b->yy_buf_size / 8; else b->yy_buf_size *= 2; b->yy_ch_buf = (char *) /* Include room in for 2 EOB chars. */ yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); } else /* Can't grow it, we don't own it. */ b->yy_ch_buf = 0; if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "fatal error - scanner input buffer overflow" ); (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; } if ( num_to_read > YY_READ_BUF_SIZE ) num_to_read = YY_READ_BUF_SIZE; /* Read in more data. */ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), (yy_n_chars), (size_t) num_to_read ); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } if ( (yy_n_chars) == 0 ) { if ( number_to_move == YY_MORE_ADJ ) { ret_val = EOB_ACT_END_OF_FILE; yyrestart(yyin ); } else { ret_val = EOB_ACT_LAST_MATCH; YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_EOF_PENDING; } } else ret_val = EOB_ACT_CONTINUE_SCAN; if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { /* Extend the array by 50%, plus the number we really need. */ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); } (yy_n_chars) += number_to_move; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; return ret_val; } /* yy_get_previous_state - get the state just before the EOB char was reached */ static yy_state_type yy_get_previous_state (void) { register yy_state_type yy_current_state; register char *yy_cp; yy_current_state = (yy_start); for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) { register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 57 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; } return yy_current_state; } /* yy_try_NUL_trans - try to make a transition on the NUL character * * synopsis * next_state = yy_try_NUL_trans( current_state ); */ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) { register int yy_is_jam; register char *yy_cp = (yy_c_buf_p); register YY_CHAR yy_c = 1; if ( yy_accept[yy_current_state] ) { (yy_last_accepting_state) = yy_current_state; (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; if ( yy_current_state >= 57 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; yy_is_jam = (yy_current_state == 56); return yy_is_jam ? 0 : yy_current_state; } static void yyunput (int c, register char * yy_bp ) { register char *yy_cp; yy_cp = (yy_c_buf_p); /* undo effects of setting up yytext */ *yy_cp = (yy_hold_char); if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) { /* need to shift things up to make room */ /* +2 for EOB chars. */ register int number_to_move = (yy_n_chars) + 2; register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; register char *source = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) *--dest = *--source; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); } *--yy_cp = (char) c; (yytext_ptr) = yy_bp; (yy_hold_char) = *yy_cp; (yy_c_buf_p) = yy_cp; } #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput (void) #else static int input (void) #endif { int c; *(yy_c_buf_p) = (yy_hold_char); if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) { /* yy_c_buf_p now points to the character we want to return. * If this occurs *before* the EOB characters, then it's a * valid NUL; if not, then we've hit the end of the buffer. */ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) /* This was really a NUL. */ *(yy_c_buf_p) = '\0'; else { /* need more input */ int offset = (yy_c_buf_p) - (yytext_ptr); ++(yy_c_buf_p); switch ( yy_get_next_buffer( ) ) { case EOB_ACT_LAST_MATCH: /* This happens because yy_g_n_b() * sees that we've accumulated a * token and flags that we need to * try matching the token before * proceeding. But for input(), * there's no matching to consider. * So convert the EOB_ACT_LAST_MATCH * to EOB_ACT_END_OF_FILE. */ /* Reset buffer status. */ yyrestart(yyin ); /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: { if ( yywrap( ) ) return EOF; if ( ! (yy_did_buffer_switch_on_eof) ) YY_NEW_FILE; #ifdef __cplusplus return yyinput(); #else return input(); #endif } case EOB_ACT_CONTINUE_SCAN: (yy_c_buf_p) = (yytext_ptr) + offset; break; } } } c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ *(yy_c_buf_p) = '\0'; /* preserve yytext */ (yy_hold_char) = *++(yy_c_buf_p); return c; } #endif /* ifndef YY_NO_INPUT */ /** Immediately switch to a different input stream. * @param input_file A readable stream. * * @note This function does not reset the start condition to @c INITIAL . */ void yyrestart (FILE * input_file ) { if ( ! YY_CURRENT_BUFFER ){ yyensure_buffer_stack (); YY_CURRENT_BUFFER_LVALUE = yy_create_buffer(yyin,YY_BUF_SIZE ); } yy_init_buffer(YY_CURRENT_BUFFER,input_file ); yy_load_buffer_state( ); } /** Switch to a different input buffer. * @param new_buffer The new input buffer. * */ void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) { /* TODO. We should be able to replace this entire function body * with * yypop_buffer_state(); * yypush_buffer_state(new_buffer); */ yyensure_buffer_stack (); if ( YY_CURRENT_BUFFER == new_buffer ) return; if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } YY_CURRENT_BUFFER_LVALUE = new_buffer; yy_load_buffer_state( ); /* We don't actually know whether we did this switch during * EOF (yywrap()) processing, but the only time this flag * is looked at is after yywrap() is called, so it's safe * to go ahead and always set it. */ (yy_did_buffer_switch_on_eof) = 1; } static void yy_load_buffer_state (void) { (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; (yy_hold_char) = *(yy_c_buf_p); } /** Allocate and initialize an input buffer state. * @param file A readable stream. * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. * * @return the allocated buffer state. */ YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) { YY_BUFFER_STATE b; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_buf_size = size; /* yy_ch_buf has to be 2 characters longer than the size given because * we need to put in 2 end-of-buffer characters. */ b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); if ( ! b->yy_ch_buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); b->yy_is_our_buffer = 1; yy_init_buffer(b,file ); return b; } /** Destroy the buffer. * @param b a buffer created with yy_create_buffer() * */ void yy_delete_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; if ( b->yy_is_our_buffer ) yyfree((void *) b->yy_ch_buf ); yyfree((void *) b ); } #ifndef __cplusplus extern int isatty (int ); #endif /* __cplusplus */ /* Initializes or reinitializes a buffer. * This function is sometimes called more than once on the same buffer, * such as during a yyrestart() or at EOF. */ static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) { int oerrno = errno; yy_flush_buffer(b ); b->yy_input_file = file; b->yy_fill_buffer = 1; /* If b is the current buffer, then yy_init_buffer was _probably_ * called from yyrestart() or through yy_get_next_buffer. * In that case, we don't want to reset the lineno or column. */ if (b != YY_CURRENT_BUFFER){ b->yy_bs_lineno = 1; b->yy_bs_column = 0; } b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; errno = oerrno; } /** Discard all buffered characters. On the next scan, YY_INPUT will be called. * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. * */ void yy_flush_buffer (YY_BUFFER_STATE b ) { if ( ! b ) return; b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes * a transition to the end-of-buffer state. The second causes * a jam in that state. */ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; b->yy_buf_pos = &b->yy_ch_buf[0]; b->yy_at_bol = 1; b->yy_buffer_status = YY_BUFFER_NEW; if ( b == YY_CURRENT_BUFFER ) yy_load_buffer_state( ); } /** Pushes the new state onto the stack. The new state becomes * the current state. This function will allocate the stack * if necessary. * @param new_buffer The new state. * */ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) { if (new_buffer == NULL) return; yyensure_buffer_stack(); /* This block is copied from yy_switch_to_buffer. */ if ( YY_CURRENT_BUFFER ) { /* Flush out information for old buffer. */ *(yy_c_buf_p) = (yy_hold_char); YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); } /* Only push if top exists. Otherwise, replace top. */ if (YY_CURRENT_BUFFER) (yy_buffer_stack_top)++; YY_CURRENT_BUFFER_LVALUE = new_buffer; /* copied from yy_switch_to_buffer. */ yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } /** Removes and deletes the top of the stack, if present. * The next element becomes the new top. * */ void yypop_buffer_state (void) { if (!YY_CURRENT_BUFFER) return; yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; if ((yy_buffer_stack_top) > 0) --(yy_buffer_stack_top); if (YY_CURRENT_BUFFER) { yy_load_buffer_state( ); (yy_did_buffer_switch_on_eof) = 1; } } /* Allocates the stack if it does not exist. * Guarantees space for at least one push. */ static void yyensure_buffer_stack (void) { int num_to_alloc; if (!(yy_buffer_stack)) { /* First allocation is just for 2 elements, since we don't know if this * scanner will even need a stack. We use 2 instead of 1 to avoid an * immediate realloc on the next call. */ num_to_alloc = 1; (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc (num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; (yy_buffer_stack_top) = 0; return; } if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ /* Increase the buffer to prepare for a possible push. */ int grow_size = 8 /* arbitrary grow size */; num_to_alloc = (yy_buffer_stack_max) + grow_size; (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc ((yy_buffer_stack), num_to_alloc * sizeof(struct yy_buffer_state*) ); if ( ! (yy_buffer_stack) ) YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); /* zero only the new slots.*/ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); (yy_buffer_stack_max) = num_to_alloc; } } /** Setup the input buffer state to scan directly from a user-specified character buffer. * @param base the character buffer * @param size the size in bytes of the character buffer * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) { YY_BUFFER_STATE b; if ( size < 2 || base[size-2] != YY_END_OF_BUFFER_CHAR || base[size-1] != YY_END_OF_BUFFER_CHAR ) /* They forgot to leave room for the EOB's. */ return 0; b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); if ( ! b ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ b->yy_buf_pos = b->yy_ch_buf = base; b->yy_is_our_buffer = 0; b->yy_input_file = 0; b->yy_n_chars = b->yy_buf_size; b->yy_is_interactive = 0; b->yy_at_bol = 1; b->yy_fill_buffer = 0; b->yy_buffer_status = YY_BUFFER_NEW; yy_switch_to_buffer(b ); return b; } /** Setup the input buffer state to scan a string. The next call to yylex() will * scan from a @e copy of @a str. * @param yystr a NUL-terminated string to scan * * @return the newly allocated buffer state object. * @note If you want to scan bytes that may contain NUL values, then use * yy_scan_bytes() instead. */ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) { return yy_scan_bytes(yystr,strlen(yystr) ); } /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. * @param bytes the byte buffer to scan * @param len the number of bytes in the buffer pointed to by @a bytes. * * @return the newly allocated buffer state object. */ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len ) { YY_BUFFER_STATE b; char *buf; yy_size_t n; int i; /* Get memory for full buffer, including space for trailing EOB's. */ n = _yybytes_len + 2; buf = (char *) yyalloc(n ); if ( ! buf ) YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); for ( i = 0; i < _yybytes_len; ++i ) buf[i] = yybytes[i]; buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; b = yy_scan_buffer(buf,n ); if ( ! b ) YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); /* It's okay to grow etc. this buffer, and we should throw it * away when we're done. */ b->yy_is_our_buffer = 1; return b; } #ifndef YY_EXIT_FAILURE #define YY_EXIT_FAILURE 2 #endif static void yy_fatal_error (yyconst char* msg ) { (void) fprintf( stderr, "%s\n", msg ); exit( YY_EXIT_FAILURE ); } /* Redefine yyless() so it works in section 3 code. */ #undef yyless #define yyless(n) \ do \ { \ /* Undo effects of setting up yytext. */ \ int yyless_macro_arg = (n); \ YY_LESS_LINENO(yyless_macro_arg);\ yytext[yyleng] = (yy_hold_char); \ (yy_c_buf_p) = yytext + yyless_macro_arg; \ (yy_hold_char) = *(yy_c_buf_p); \ *(yy_c_buf_p) = '\0'; \ yyleng = yyless_macro_arg; \ } \ while ( 0 ) /* Accessor methods (get/set functions) to struct members. */ /** Get the current line number. * */ int yyget_lineno (void) { return yylineno; } /** Get the input stream. * */ FILE *yyget_in (void) { return yyin; } /** Get the output stream. * */ FILE *yyget_out (void) { return yyout; } /** Get the length of the current token. * */ int yyget_leng (void) { return yyleng; } /** Get the current token. * */ char *yyget_text (void) { return yytext; } /** Set the current line number. * @param line_number * */ void yyset_lineno (int line_number ) { yylineno = line_number; } /** Set the input stream. This does not discard the current * input buffer. * @param in_str A readable stream. * * @see yy_switch_to_buffer */ void yyset_in (FILE * in_str ) { yyin = in_str ; } void yyset_out (FILE * out_str ) { yyout = out_str ; } int yyget_debug (void) { return yy_flex_debug; } void yyset_debug (int bdebug ) { yy_flex_debug = bdebug ; } static int yy_init_globals (void) { /* Initialization is the same as for the non-reentrant scanner. * This function is called from yylex_destroy(), so don't allocate here. */ (yy_buffer_stack) = 0; (yy_buffer_stack_top) = 0; (yy_buffer_stack_max) = 0; (yy_c_buf_p) = (char *) 0; (yy_init) = 0; (yy_start) = 0; /* Defined in main.c */ #ifdef YY_STDINIT yyin = stdin; yyout = stdout; #else yyin = (FILE *) 0; yyout = (FILE *) 0; #endif /* For future reference: Set errno on error, since we are called by * yylex_init() */ return 0; } /* yylex_destroy is for both reentrant and non-reentrant scanners. */ int yylex_destroy (void) { /* Pop the buffer stack, destroying each element. */ while(YY_CURRENT_BUFFER){ yy_delete_buffer(YY_CURRENT_BUFFER ); YY_CURRENT_BUFFER_LVALUE = NULL; yypop_buffer_state(); } /* Destroy the stack itself. */ yyfree((yy_buffer_stack) ); (yy_buffer_stack) = NULL; /* Reset the globals. This is important in a non-reentrant scanner so the next time * yylex() is called, initialization will occur. */ yy_init_globals( ); return 0; } /* * Internal utility routines. */ #ifndef yytext_ptr static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) { register int i; for ( i = 0; i < n; ++i ) s1[i] = s2[i]; } #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * s ) { register int n; for ( n = 0; s[n]; ++n ) ; return n; } #endif void *yyalloc (yy_size_t size ) { return (void *) malloc( size ); } void *yyrealloc (void * ptr, yy_size_t size ) { /* The cast to (char *) in the following accommodates both * implementations that use char* generic pointers, and those * that use void* generic pointers. It works with the latter * because both ANSI C and C++ allow castless assignment from * any pointer type to void*, and deal with argument conversions * as though doing an assignment. */ return (void *) realloc( (char *) ptr, size ); } void yyfree (void * ptr ) { free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ } #define YYTABLES_NAME "yytables" #line 164 "./Scanner.l" static void ReadLexBuff(char* pcBuff, int& riResult, size_t uMaxSize) { wxASSERT( _pszLexBuff != NULL ); if (_pszLexBuff == NULL) { YY_FATAL_ERROR("Input in flex scanner failed"); } wxASSERT( sizeof(YY_CHAR) == sizeof(char) ); size_t uCharsInBuff = strlen(_pszLexBuff); size_t uCharsRead = min(uMaxSize, uCharsInBuff); riResult = uCharsRead; memcpy(pcBuff, _pszLexBuff, uCharsRead); _pszLexBuff += uCharsRead; } static void FatalLexError(yyconst char msg[]) { #ifdef _CONSOLE printf("Fatal error in flex scanner: %s\n", msg); #else printf("Fatal error in flex scanner: %s\n", msg); #endif } void LexInit(const wxString& pszInput) { _pszLexStr = strdup(unicode2UTF8(pszInput)); _pszLexBuff = _pszLexStr; } void LexFree() { yylex_destroy(); yyleng = 0; yytext = NULL; yyin = NULL; yyout = NULL; yy_hold_char = '\0'; yy_n_chars = 0; yy_c_buf_p = NULL; yy_start = 0; yy_did_buffer_switch_on_eof = 0; yy_last_accepting_state = 0; yy_last_accepting_cpos = NULL; #if YY_STACK_USED yy_start_stack_ptr = 0; yy_start_stack_depth = 0; yy_start_stack = NULL; #endif free(_pszLexStr); } amule_2.3.1+git20151120.0023527bc2.orig/src/Scanner.h0000644000175000017500000001544712611472361020047 0ustar morphmorph#ifndef yyHEADER_H #define yyHEADER_H 1 #define yyIN_HEADER 1 #line 6 "./Scanner.h" #line 8 "./Scanner.h" #define YY_INT_ALIGNED short int /* A lexical scanner generated by flex */ #define FLEX_SCANNER #define YY_FLEX_MAJOR_VERSION 2 #define YY_FLEX_MINOR_VERSION 5 #define YY_FLEX_SUBMINOR_VERSION 35 #if YY_FLEX_SUBMINOR_VERSION > 0 #define FLEX_BETA #endif /* First, we deal with platform-specific or compiler-specific issues. */ /* begin standard C headers. */ #include #include #include #include /* end standard C headers. */ /* flex integer type definitions */ #ifndef FLEXINT_H #define FLEXINT_H /* C99 systems have . Non-C99 systems may or may not. */ #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, * if you want the limit (max/min) macros for int types. */ #ifndef __STDC_LIMIT_MACROS #define __STDC_LIMIT_MACROS 1 #endif #include typedef int8_t flex_int8_t; typedef uint8_t flex_uint8_t; typedef int16_t flex_int16_t; typedef uint16_t flex_uint16_t; typedef int32_t flex_int32_t; typedef uint32_t flex_uint32_t; #else typedef signed char flex_int8_t; typedef short int flex_int16_t; typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; #endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN #define INT8_MIN (-128) #endif #ifndef INT16_MIN #define INT16_MIN (-32767-1) #endif #ifndef INT32_MIN #define INT32_MIN (-2147483647-1) #endif #ifndef INT8_MAX #define INT8_MAX (127) #endif #ifndef INT16_MAX #define INT16_MAX (32767) #endif #ifndef INT32_MAX #define INT32_MAX (2147483647) #endif #ifndef UINT8_MAX #define UINT8_MAX (255U) #endif #ifndef UINT16_MAX #define UINT16_MAX (65535U) #endif #ifndef UINT32_MAX #define UINT32_MAX (4294967295U) #endif #endif /* ! FLEXINT_H */ #ifdef __cplusplus /* The "const" storage-class-modifier is valid. */ #define YY_USE_CONST #else /* ! __cplusplus */ /* C99 requires __STDC__ to be defined as 1. */ #if defined (__STDC__) #define YY_USE_CONST #endif /* defined (__STDC__) */ #endif /* ! __cplusplus */ #ifdef YY_USE_CONST #define yyconst const #else #define yyconst #endif /* Size of default input buffer. */ #ifndef YY_BUF_SIZE #define YY_BUF_SIZE 16384 #endif #ifndef YY_TYPEDEF_YY_BUFFER_STATE #define YY_TYPEDEF_YY_BUFFER_STATE typedef struct yy_buffer_state *YY_BUFFER_STATE; #endif extern int yyleng; extern FILE *yyin, *yyout; #ifndef YY_TYPEDEF_YY_SIZE_T #define YY_TYPEDEF_YY_SIZE_T typedef size_t yy_size_t; #endif #ifndef YY_STRUCT_YY_BUFFER_STATE #define YY_STRUCT_YY_BUFFER_STATE struct yy_buffer_state { FILE *yy_input_file; char *yy_ch_buf; /* input buffer */ char *yy_buf_pos; /* current position in input buffer */ /* Size of input buffer in bytes, not including room for EOB * characters. */ yy_size_t yy_buf_size; /* Number of characters read into yy_ch_buf, not including EOB * characters. */ int yy_n_chars; /* Whether we "own" the buffer - i.e., we know we created it, * and can realloc() it to grow it, and should free() it to * delete it. */ int yy_is_our_buffer; /* Whether this is an "interactive" input source; if so, and * if we're using stdio for input, then we want to use getc() * instead of fread(), to make sure we stop fetching input after * each newline. */ int yy_is_interactive; /* Whether we're considered to be at the beginning of a line. * If so, '^' rules will be active on the next match, otherwise * not. */ int yy_at_bol; int yy_bs_lineno; /**< The line count. */ int yy_bs_column; /**< The column count. */ /* Whether to try to fill the input buffer when we reach the * end of it. */ int yy_fill_buffer; int yy_buffer_status; }; #endif /* !YY_STRUCT_YY_BUFFER_STATE */ void yyrestart (FILE *input_file ); void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); void yy_delete_buffer (YY_BUFFER_STATE b ); void yy_flush_buffer (YY_BUFFER_STATE b ); void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); void yypop_buffer_state (void ); YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len ); void *yyalloc (yy_size_t ); void *yyrealloc (void *,yy_size_t ); void yyfree (void * ); /* Begin user sect3 */ #define yywrap(n) 1 #define YY_SKIP_YYWRAP extern int yylineno; extern char *yytext; #define yytext_ptr yytext #ifdef YY_HEADER_EXPORT_START_CONDITIONS #define INITIAL 0 #endif #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way * down here because we want the user's section 1 to have been scanned first. * The user has a chance to override it with an option. */ #include #endif #ifndef YY_EXTRA_TYPE #define YY_EXTRA_TYPE void * #endif /* Accessor methods to globals. These are made visible to non-reentrant scanners for convenience. */ int yylex_destroy (void ); int yyget_debug (void ); void yyset_debug (int debug_flag ); YY_EXTRA_TYPE yyget_extra (void ); void yyset_extra (YY_EXTRA_TYPE user_defined ); FILE *yyget_in (void ); void yyset_in (FILE * in_str ); FILE *yyget_out (void ); void yyset_out (FILE * out_str ); int yyget_leng (void ); char *yyget_text (void ); int yyget_lineno (void ); void yyset_lineno (int line_number ); /* Macros after this point can all be overridden by user definitions in * section 1. */ #ifndef YY_SKIP_YYWRAP #ifdef __cplusplus extern "C" int yywrap (void ); #else extern int yywrap (void ); #endif #endif #ifndef yytext_ptr static void yy_flex_strncpy (char *,yyconst char *,int ); #endif #ifdef YY_NEED_STRLEN static int yy_flex_strlen (yyconst char * ); #endif #ifndef YY_NO_INPUT #endif /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE #define YY_READ_BUF_SIZE 8192 #endif /* Number of entries by which start-condition stack grows. */ #ifndef YY_START_STACK_INCR #define YY_START_STACK_INCR 25 #endif /* Default declaration of generated scanner - a define so the user can * easily add parameters. */ #ifndef YY_DECL #define YY_DECL_IS_OURS 1 extern int yylex (void); #define YY_DECL int yylex (void) #endif /* !YY_DECL */ /* yy_get_previous_state - get the state just before the EOB char was reached */ #undef YY_NEW_FILE #undef YY_FLUSH_BUFFER #undef yy_set_bol #undef yy_new_buffer #undef yy_set_interactive #undef YY_DO_BEFORE_ACTION #ifdef YY_DECL_IS_OURS #undef YY_DECL_IS_OURS #undef YY_DECL #endif #line 164 "./Scanner.l" #line 320 "./Scanner.h" #undef yyIN_HEADER #endif /* yyHEADER_H */ amule_2.3.1+git20151120.0023527bc2.orig/src/Scanner.h.in0000644000175000017500000000013212611472361020435 0ustar morphmorphint yylex(); int yylex_destroy(); void LexInit(const wxString& pszInput); void LexFree(); amule_2.3.1+git20151120.0023527bc2.orig/src/Scanner.l0000644000175000017500000001145012611472361020041 0ustar morphmorph%{ #include #include "SearchExpr.h" #include "Parser.hpp" #include "ED2KLink.h" #include #include "libs/common/StringFunctions.h" #ifdef _MSC_VER #define isatty(DUMMY) 0 #endif #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define YY_NEVER_INTERACTIVE 1 extern int yyerror(const char* errstr); extern int yyerror(wxString errstr); #define YY_INPUT ReadLexBuff #define YY_FATAL_ERROR FatalLexError static void ReadLexBuff(char* pcBuff, size_t& riResult, size_t uMaxSize); static void ReadLexBuff(char* pcBuff, int& riResult, size_t uMaxSize); static void FatalLexError(yyconst char msg[]); static char* _pszLexBuff; static char* _pszLexStr; %} %option noyywrap keywordchar [^ \"()] %% [ ] { /* Skip blanks. */ } "OR" { return TOK_OR; } "AND" { return TOK_AND; } "NOT" { return TOK_NOT; } "ed2k::"[a-fA-F0-9]{32} { yylval.pstr = new wxString(UTF82unicode(yytext)); return TOK_ED2K_LINK; } {keywordchar}* { yylval.pstr = new wxString(UTF82unicode(yytext)); return TOK_STRING; } "\"" { int l = 128; char* psz = (char*)malloc(l); int i = 0; int c; while ((c = yyinput()) != '\"') { if (c == EOF || c == '\n'){ unput(c); yyerror(wxT("Search expression error: unterminated string")); break; } if (c == '\\'){ /*Escape sequence*/ switch (c = yyinput()) { case '\n': continue; case 't': /*Tab*/ c = '\t'; break; case 'n': /*Linefeed*/ c = '\n'; break; case 'f': /*Formfeed*/ c = '\f'; break; case 'r': /*Carriage return*/ c = '\r'; break; case '\\': /*Backslash*/ c = '\\'; break; case '"': /*Double quotation mark*/ c = '\"'; break; case '\'': /*Single quotation mark*/ c = '\''; break; case '?': /*Question mark*/ c = '\?'; break; case 'v': /*Vertical Tab*/ c = '\v'; break; case 'a': /*Alert*/ c = '\a'; break; case 'b': /*Backspace*/ c = '\b'; break; case 'x': /*Hexadecimal number*/ { int n, octv; for (n = 1, octv = 0; n <= 3; n++) { if ((c = yyinput()) >= '0' && c <= '9') c -= '0'; else if (c >= 'a' && c <= 'f') c = (c - 'a') + 10; else if (c >= 'A' && c <= 'F') c = (c - 'A') + 10; else break; octv = octv * 16 + c; } unput(c); if (n == 1) c = 'x'; else c = octv; } break; } } else { if ((unsigned char)c >= 0x80/* && IsDBCSLeadByte(yytext[0]) */){ psz[i++] = (unsigned char)c; if (i >= l) { char *tmp = (char*)realloc(psz, l += 128); if (tmp == NULL){ yyerror("Less memory for string"); break; } else { psz = tmp; } } c = yyinput(); } } psz[i++] = (unsigned char)c; if (i >= l) { char *tmp = (char*)realloc(psz, l += 128); if (tmp == NULL){ yyerror("Less memory for string"); break; } else { psz = tmp; } } } psz[i] = '\0'; yylval.pstr = new wxString(UTF82unicode(psz)); free(psz); return TOK_STRING; } . { return yytext[0]; } %% static void ReadLexBuff(char* pcBuff, size_t& riResult, size_t uMaxSize) { wxASSERT( _pszLexBuff != NULL ); if (_pszLexBuff == NULL) { YY_FATAL_ERROR("Input in flex scanner failed"); } wxASSERT( sizeof(YY_CHAR) == sizeof(char) ); size_t uCharsInBuff = strlen(_pszLexBuff); size_t uCharsRead = min(uMaxSize, uCharsInBuff); riResult = uCharsRead; memcpy(pcBuff, _pszLexBuff, uCharsRead); _pszLexBuff += uCharsRead; } static void ReadLexBuff(char* pcBuff, int& riResult, size_t uMaxSize) { size_t st_result = static_cast(riResult); ReadLexBuff(pcBuff, st_result, uMaxSize); riResult = static_cast(st_result); } static void FatalLexError(yyconst char msg[]) { #ifdef _CONSOLE printf("Fatal error in flex scanner: %s\n", msg); #else printf("Fatal error in flex scanner: %s\n", msg); #endif } void LexInit(const wxString& pszInput) { _pszLexStr = strdup(unicode2UTF8(pszInput)); _pszLexBuff = _pszLexStr; } void LexFree() { yylex_destroy(); yyleng = 0; yytext = NULL; yyin = NULL; yyout = NULL; yy_hold_char = '\0'; yy_n_chars = 0; yy_c_buf_p = NULL; yy_start = 0; yy_did_buffer_switch_on_eof = 0; yy_last_accepting_state = 0; yy_last_accepting_cpos = NULL; #if YY_STACK_USED yy_start_stack_ptr = 0; yy_start_stack_depth = 0; yy_start_stack = NULL; #endif free(_pszLexStr); } amule_2.3.1+git20151120.0023527bc2.orig/src/ScopedPtr.h0000644000175000017500000001103012611472361020341 0ustar morphmorph// -*- C++ -*- // This file is part of the aMule Project. // // Copyright (c) 2006-2011 Mikkel Schubert ( xaignar@users.sourceforge.net ) // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SCOPEDPTR_H #define SCOPEDPTR_H #include "OtherFunctions.h" // Needed for DeleteContents() /** * CScopedPtr is a simple smart pointer. * * This class is a replacement for std::auto_ptr, with simpler * copying schematics, in that it doesn't allow copying or * assignment, compared to auto_ptr, which allows only one * instance to own a pointer (swapping at assignment). */ template class CScopedPtr { public: /** Constructor. Note that CScopedPtr takes ownership of the pointer. */ CScopedPtr(TYPE* ptr) : m_ptr(ptr) {} CScopedPtr() { m_ptr = new TYPE; } /** Frees the pointer owned by the instance. */ ~CScopedPtr() { delete m_ptr; } //@{ /** Deference operators. */ TYPE& operator*() const { return *m_ptr; } TYPE* operator->() const { return m_ptr; } //@} /** Returns the actual pointer value. */ TYPE* get() const { return m_ptr; } /** Sets the actual pointer to a different value. The old pointer is freed. */ void reset(TYPE* ptr = 0) { delete m_ptr; m_ptr = ptr; } /** Returns the actual pointer. The scoped-ptr will thereafter contain NULL. */ TYPE* release() { TYPE* ptr = m_ptr; m_ptr = 0; return ptr; } private: //@{ //! A scoped pointer is neither copyable, nor assignable. CScopedPtr(const CScopedPtr&); CScopedPtr& operator=(const CScopedPtr&); //@} TYPE* m_ptr; }; /** * Similar to CScopedPtr, except that an array is expected. * * @see CScopedPtr */ template class CScopedArray { public: /** Constructor. Note that CScopedArray takes ownership of the array. */ CScopedArray(TYPE* ptr) : m_ptr(ptr) {} /** Constructor, allocating nr elements. */ CScopedArray(size_t nr) { m_ptr = new TYPE[nr]; } /** Frees the array owned by this instance. */ ~CScopedArray() { delete[] m_ptr; } /** Accessor. */ TYPE& operator[](unsigned i) const { return m_ptr[i]; } /** @see CScopedPtr::get */ TYPE* get() const { return m_ptr; } /** @see CScopedPtr::reset */ void reset(TYPE* ptr = 0) { delete[] m_ptr; m_ptr = ptr; } /** free the existing array and allocate a new one with nr elements */ void reset(size_t nr) { delete[] m_ptr; m_ptr = new TYPE[nr]; } /** @see CScopedPtr::release */ TYPE* release() { TYPE* ptr = m_ptr; m_ptr = 0; return ptr; } private: //@{ //! A scoped array is neither copyable, nor assignable. CScopedArray(const CScopedArray&); CScopedArray& operator=(const CScopedArray&); //@} TYPE* m_ptr; }; /** * Similar to CScopedPtr, except that a STL container of pointers is expected * which has to be freed with DeleteContents. * * @see CScopedPtr */ template class CScopedContainer { public: /** Constructor. Note that CScopedContainer takes ownership of the array. */ CScopedContainer(STL_CONTAINER* ptr) : m_ptr(ptr) {} CScopedContainer() { m_ptr = new STL_CONTAINER; } ~CScopedContainer() { if (m_ptr) { DeleteContents(*m_ptr); delete m_ptr; } } //@{ /** Deference operators. */ STL_CONTAINER& operator*() const { return *m_ptr; } //@} /** Returns the actual pointer value. */ STL_CONTAINER* get() const { return m_ptr; } private: //@{ //! A scoped container is neither copyable, nor assignable. CScopedContainer(const CScopedContainer&); CScopedContainer& operator=(const CScopedContainer&); //@} STL_CONTAINER* m_ptr; }; #endif // SCOPEDPTR_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SearchDlg.cpp0000644000175000017500000004333112611472361020636 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include // Do_not_auto_remove (win32) #include #include "SearchDlg.h" // Interface declarations. #include "SearchListCtrl.h" // Needed for CSearchListCtrl #include "muuli_wdr.h" // Needed for IDC_STARTS #include "amuleDlg.h" // Needed for CamuleDlg #include "MuleNotebook.h" #include "GetTickCount.h" #include "Preferences.h" #include "amule.h" // Needed for theApp #include "SearchList.h" // Needed for CSearchList #include #include "Logger.h" #define ID_SEARCHLISTCTRL wxID_HIGHEST+667 // just to keep compiler happy static wxCommandEvent nullEvent; BEGIN_EVENT_TABLE(CSearchDlg, wxPanel) EVT_BUTTON( IDC_STARTS, CSearchDlg::OnBnClickedStart) EVT_TEXT_ENTER( IDC_SEARCHNAME, CSearchDlg::OnBnClickedStart) EVT_BUTTON(IDC_CANCELS, CSearchDlg::OnBnClickedStop) EVT_LIST_ITEM_SELECTED(ID_SEARCHLISTCTRL, CSearchDlg::OnListItemSelected) EVT_BUTTON(IDC_SDOWNLOAD, CSearchDlg::OnBnClickedDownload) EVT_BUTTON(IDC_SEARCH_RESET, CSearchDlg::OnBnClickedReset) EVT_BUTTON(IDC_CLEAR_RESULTS, CSearchDlg::OnBnClickedClear) EVT_CHECKBOX(IDC_EXTENDEDSEARCHCHECK,CSearchDlg::OnExtendedSearchChange) EVT_CHECKBOX(IDC_FILTERCHECK,CSearchDlg::OnFilterCheckChange) EVT_MULENOTEBOOK_PAGE_CLOSING(ID_NOTEBOOK, CSearchDlg::OnSearchClosing) EVT_NOTEBOOK_PAGE_CHANGED(ID_NOTEBOOK, CSearchDlg::OnSearchPageChanged) // Event handlers for the parameter fields getting changed EVT_CUSTOM( wxEVT_COMMAND_TEXT_UPDATED, IDC_SEARCHNAME, CSearchDlg::OnFieldChanged) EVT_CUSTOM( wxEVT_COMMAND_TEXT_UPDATED, IDC_EDITSEARCHEXTENSION, CSearchDlg::OnFieldChanged) EVT_CUSTOM( wxEVT_COMMAND_SPINCTRL_UPDATED, wxID_ANY, CSearchDlg::OnFieldChanged) EVT_CUSTOM( wxEVT_COMMAND_CHOICE_SELECTED, wxID_ANY, CSearchDlg::OnFieldChanged) // Event handlers for the filter fields getting changed. EVT_TEXT_ENTER(ID_FILTER_TEXT, CSearchDlg::OnFilteringChange) EVT_CHECKBOX(ID_FILTER_INVERT, CSearchDlg::OnFilteringChange) EVT_CHECKBOX(ID_FILTER_KNOWN, CSearchDlg::OnFilteringChange) EVT_BUTTON(ID_FILTER, CSearchDlg::OnFilteringChange) END_EVENT_TABLE() CSearchDlg::CSearchDlg(wxWindow* pParent) : wxPanel(pParent, -1) { m_last_search_time = 0; wxSizer* content = searchDlg(this, true); content->Show(this, true); m_progressbar = CastChild( ID_SEARCHPROGRESS, wxGauge ); m_progressbar->SetRange(100); m_notebook = CastChild( ID_NOTEBOOK, CMuleNotebook ); #ifdef __WXMAC__ //#warning TODO: restore the image list if/when wxMac supports locating the image #else // Initialise the image list wxImageList* m_ImageList = new wxImageList(16,16); m_ImageList->Add(amuleSpecial(3)); m_ImageList->Add(amuleSpecial(4)); m_notebook->AssignImageList(m_ImageList); #endif // Sanity sanity wxChoice* searchchoice = CastChild( ID_SEARCHTYPE, wxChoice ); wxASSERT(searchchoice); wxASSERT(searchchoice->GetString(0) == _("Local")); wxASSERT(searchchoice->GetString(2) == _("Kad")); wxASSERT(searchchoice->GetCount() == 4); m_searchchoices = searchchoice->GetStrings(); // Let's break it now. FixSearchTypes(); CastChild( IDC_TypeSearch, wxChoice )->SetSelection(0); CastChild( IDC_SEARCHMINSIZE, wxChoice )->SetSelection(2); CastChild( IDC_SEARCHMAXSIZE, wxChoice )->SetSelection(2); // Not there initially. s_searchsizer->Show(s_extendedsizer, false); s_searchsizer->Show(s_filtersizer, false); Layout(); } CSearchDlg::~CSearchDlg() { } void CSearchDlg::FixSearchTypes() { wxChoice* searchchoice = CastChild( ID_SEARCHTYPE, wxChoice ); searchchoice->Clear(); // We should have only filedonkey now. Let's insert stuff. int pos = 0; if (thePrefs::GetNetworkED2K()){ searchchoice->Insert(m_searchchoices[0], pos++); searchchoice->Insert(m_searchchoices[1], pos++); } if (thePrefs::GetNetworkKademlia()) { searchchoice->Insert(m_searchchoices[2], pos++); } searchchoice->Insert(m_searchchoices[3], pos++); searchchoice->SetSelection(0); } CSearchListCtrl* CSearchDlg::GetSearchList( wxUIntPtr id ) { int nPages = m_notebook->GetPageCount(); for ( int i = 0; i < nPages; i++ ) { CSearchListCtrl* page = dynamic_cast(m_notebook->GetPage(i)); if (page->GetSearchId() == id) { return page; } } return NULL; } void CSearchDlg::AddResult(CSearchFile* toadd) { CSearchListCtrl* outputwnd = GetSearchList( toadd->GetSearchID() ); if ( outputwnd ) { outputwnd->AddResult( toadd ); // Update the result count UpdateHitCount( outputwnd ); } } void CSearchDlg::UpdateResult(CSearchFile* toupdate) { CSearchListCtrl* outputwnd = GetSearchList( toupdate->GetSearchID() ); if ( outputwnd ) { outputwnd->UpdateResult( toupdate ); // Update the result count UpdateHitCount( outputwnd ); } } void CSearchDlg::OnListItemSelected(wxListEvent& event) { FindWindow(IDC_SDOWNLOAD)->Enable(true); event.Skip(); } void CSearchDlg::OnExtendedSearchChange(wxCommandEvent& event) { s_searchsizer->Show(s_extendedsizer, event.IsChecked()); Layout(); } void CSearchDlg::OnFilterCheckChange(wxCommandEvent& event) { s_searchsizer->Show(s_filtersizer, event.IsChecked()); Layout(); int nPages = m_notebook->GetPageCount(); for ( int i = 0; i < nPages; i++ ) { CSearchListCtrl* page = dynamic_cast(m_notebook->GetPage(i)); page->EnableFiltering(event.IsChecked()); UpdateHitCount(page); } } void CSearchDlg::OnSearchClosing(wxBookCtrlEvent& evt) { // Abort global search if it was last tab that was closed. if ( evt.GetSelection() == ((int)m_notebook->GetPageCount() - 1 ) ) { OnBnClickedStop(nullEvent); } CSearchListCtrl *ctrl = dynamic_cast(m_notebook->GetPage(evt.GetSelection())); wxASSERT(ctrl); // Zero to avoid results added while destructing. ctrl->ShowResults(0); theApp->searchlist->RemoveResults(ctrl->GetSearchId()); // Do cleanups if this was the last tab if ( m_notebook->GetPageCount() == 1 ) { FindWindow(IDC_SDOWNLOAD)->Enable(FALSE); FindWindow(IDC_CLEAR_RESULTS)->Enable(FALSE); } } void CSearchDlg::OnSearchPageChanged(wxBookCtrlEvent& WXUNUSED(evt)) { int selection = m_notebook->GetSelection(); // Workaround for a bug in wxWidgets, where deletions of pages // can result in an invalid selection. This has been reported as // http://sourceforge.net/tracker/index.php?func=detail&aid=1865141&group_id=9863&atid=109863 if (selection >= (int)m_notebook->GetPageCount()) { selection = m_notebook->GetPageCount() - 1; } // Only enable the Download button for pages where files have been selected if ( selection != -1 ) { CSearchListCtrl *ctrl = dynamic_cast(m_notebook->GetPage(selection)); bool enable = (ctrl->GetSelectedItemCount() > 0); FindWindow(IDC_SDOWNLOAD)->Enable( enable ); } } void CSearchDlg::OnBnClickedStart(wxCommandEvent& WXUNUSED(evt)) { wxString searchString = CastChild( IDC_SEARCHNAME, wxTextCtrl )->GetValue(); searchString.Trim(true); searchString.Trim(false); if ( searchString.IsEmpty() ) { return; } wxChoice* choice = CastChild( ID_SEARCHTYPE, wxChoice ); // Magic. int searchtype = choice->GetSelection(); if (!thePrefs::GetNetworkED2K()) { searchtype += 2; } if (!thePrefs::GetNetworkKademlia()) { searchtype += 1; } switch ( searchtype ) { // Local Search case 0: // Global Search case 1: // Kad Search case 2: // We musn't search more often than once every 2 secs if ((GetTickCount() - m_last_search_time) > 2000) { m_last_search_time = GetTickCount(); OnBnClickedStop(nullEvent); StartNewSearch(); } break; // Web Search (FileHash.com) case 3: theApp->amuledlg->LaunchUrl(theApp->amuledlg->GenWebSearchUrl(searchString, CamuleDlg::WS_FILEHASH)); break; // Error default: wxFAIL; } } void CSearchDlg::OnFieldChanged( wxEvent& WXUNUSED(evt) ) { bool enable = false; // These are the IDs of the search-fields int textfields[] = { IDC_SEARCHNAME, IDC_EDITSEARCHEXTENSION }; for ( uint16 i = 0; i < itemsof(textfields); i++ ) { enable |= !CastChild( textfields[i], wxTextCtrl )->GetValue().IsEmpty(); } // Check if either of the dropdowns have been changed enable |= (CastChild(IDC_SEARCHMINSIZE, wxChoice)->GetSelection() != 2); enable |= (CastChild(IDC_SEARCHMAXSIZE, wxChoice)->GetSelection() != 2); enable |= (CastChild(IDC_TypeSearch, wxChoice)->GetSelection() > 0); enable |= (CastChild(ID_AUTOCATASSIGN, wxChoice)->GetSelection() > 0); // These are the IDs of the search-fields int spinfields[] = { IDC_SPINSEARCHMIN, IDC_SPINSEARCHMAX, IDC_SPINSEARCHAVAIBILITY }; for ( uint16 i = 0; i < itemsof(spinfields); i++ ) { enable |= (CastChild( spinfields[i], wxSpinCtrl )->GetValue() > 0); } // Enable the "Reset" button if any fields contain text FindWindow(IDC_SEARCH_RESET)->Enable( enable ); // Enable the Server Search button if the Name field contains text enable = !CastChild( IDC_SEARCHNAME, wxTextCtrl )->GetValue().IsEmpty(); FindWindow(IDC_STARTS)->Enable( enable ); } void CSearchDlg::OnFilteringChange(wxCommandEvent& WXUNUSED(evt)) { wxString filter = CastChild(ID_FILTER_TEXT, wxTextCtrl)->GetValue(); bool invert = CastChild(ID_FILTER_INVERT, wxCheckBox)->GetValue(); bool known = CastChild(ID_FILTER_KNOWN, wxCheckBox)->GetValue(); // Check that the expression compiles before we try to assign it // Otherwise we will get an error-dialog for each result-list. if (wxRegEx(filter, wxRE_DEFAULT | wxRE_ICASE).IsValid()) { int nPages = m_notebook->GetPageCount(); for ( int i = 0; i < nPages; i++ ) { CSearchListCtrl* page = dynamic_cast(m_notebook->GetPage(i)); page->SetFilter(filter, invert, known); UpdateHitCount(page); } } } bool CSearchDlg::CheckTabNameExists(const wxString& searchString) { int nPages = m_notebook->GetPageCount(); for ( int i = 0; i < nPages; i++ ) { // The BeforeLast(' ') is to strip the hit-count from the name if ( m_notebook->GetPageText(i).BeforeLast(wxT(' ')) == searchString ) { return true; } } return false; } void CSearchDlg::CreateNewTab(const wxString& searchString, wxUIntPtr nSearchID) { CSearchListCtrl* list = new CSearchListCtrl(m_notebook, ID_SEARCHLISTCTRL, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxNO_BORDER); m_notebook->AddPage(list, searchString, true, 0); // Ensure that new results are filtered bool enable = CastChild(IDC_FILTERCHECK, wxCheckBox)->GetValue(); wxString filter = CastChild(ID_FILTER_TEXT, wxTextCtrl)->GetValue(); bool invert = CastChild(ID_FILTER_INVERT, wxCheckBox)->GetValue(); bool known = CastChild(ID_FILTER_KNOWN, wxCheckBox)->GetValue(); list->SetFilter(filter, invert, known); list->EnableFiltering(enable); list->ShowResults(nSearchID); Layout(); FindWindow(IDC_CLEAR_RESULTS)->Enable(true); } void CSearchDlg::OnBnClickedStop(wxCommandEvent& WXUNUSED(evt)) { theApp->searchlist->StopSearch(); ResetControls(); } void CSearchDlg::ResetControls() { m_progressbar->SetValue(0); FindWindow(IDC_CANCELS)->Disable(); FindWindow(IDC_STARTS)->Enable(!CastChild( IDC_SEARCHNAME, wxTextCtrl )->GetValue().IsEmpty()); } void CSearchDlg::LocalSearchEnd() { ResetControls(); } void CSearchDlg::KadSearchEnd(uint32 id) { int nPages = m_notebook->GetPageCount(); for (int i = 0; i < nPages; ++i) { CSearchListCtrl* page = dynamic_cast(m_notebook->GetPage(i)); if (page->GetSearchId() == id || id == 0) { // 0: just update all pages (there is only one KAD search running at a time anyway) wxString rest; if (m_notebook->GetPageText(i).StartsWith(wxT("!"),&rest)) { m_notebook->SetPageText(i,rest); } } } } void CSearchDlg::OnBnClickedDownload(wxCommandEvent& WXUNUSED(evt)) { int sel = m_notebook->GetSelection(); if (sel != -1) { CSearchListCtrl* list = dynamic_cast(m_notebook->GetPage(sel)); // Download with items added to category specified in the drop-down menu list->DownloadSelected(); } } void CSearchDlg::OnBnClickedClear(wxCommandEvent& WXUNUSED(ev)) { OnBnClickedStop(nullEvent); m_notebook->DeleteAllPages(); FindWindow(IDC_CLEAR_RESULTS)->Enable(FALSE); FindWindow(IDC_SDOWNLOAD)->Enable(FALSE); } void CSearchDlg::StartNewSearch() { static uint32 m_nSearchID = 0; m_nSearchID++; FindWindow(IDC_STARTS)->Disable(); FindWindow(IDC_SDOWNLOAD)->Disable(); FindWindow(IDC_CANCELS)->Enable(); CSearchList::CSearchParams params; params.searchString = CastChild( IDC_SEARCHNAME, wxTextCtrl )->GetValue(); params.searchString.Trim(true); params.searchString.Trim(false); if (params.searchString.IsEmpty()) { return; } if (CastChild(IDC_EXTENDEDSEARCHCHECK, wxCheckBox)->GetValue()) { params.extension = CastChild( IDC_EDITSEARCHEXTENSION, wxTextCtrl )->GetValue(); uint32 sizemin = GetTypeSize( (uint8) CastChild( IDC_SEARCHMINSIZE, wxChoice )->GetSelection() ); uint32 sizemax = GetTypeSize( (uint8) CastChild( IDC_SEARCHMAXSIZE, wxChoice )->GetSelection() ); // Parameter Minimum Size params.minSize = (uint64_t)(CastChild( IDC_SPINSEARCHMIN, wxSpinCtrl )->GetValue()) * (uint64_t)sizemin; // Parameter Maximum Size params.maxSize = (uint64_t)(CastChild( IDC_SPINSEARCHMAX, wxSpinCtrl )->GetValue()) * (uint64_t)sizemax; if ((params.maxSize < params.minSize) && (params.maxSize)) { wxMessageDialog dlg(this, _("Min size must be smaller than max size. Max size ignored."), _("Search warning"), wxOK|wxCENTRE|wxICON_INFORMATION); dlg.ShowModal(); params.maxSize = 0; } // Parameter Availability params.availability = CastChild( IDC_SPINSEARCHAVAIBILITY, wxSpinCtrl )->GetValue(); switch ( CastChild( IDC_TypeSearch, wxChoice )->GetSelection() ) { case 0: params.typeText.Clear(); break; case 1: params.typeText = ED2KFTSTR_ARCHIVE; break; case 2: params.typeText = ED2KFTSTR_AUDIO; break; case 3: params.typeText = ED2KFTSTR_CDIMAGE; break; case 4: params.typeText = ED2KFTSTR_IMAGE; break; case 5: params.typeText = ED2KFTSTR_PROGRAM; break; case 6: params.typeText = ED2KFTSTR_DOCUMENT; break; case 7: params.typeText = ED2KFTSTR_VIDEO; break; default: AddDebugLogLineC( logGeneral, CFormat( wxT("Warning! Unknown search-category (%s) selected!") ) % params.typeText ); break; } } SearchType search_type = KadSearch; int selection = CastChild( ID_SEARCHTYPE, wxChoice )->GetSelection(); if (!thePrefs::GetNetworkED2K()) { selection += 2; } if (!thePrefs::GetNetworkKademlia()) { selection += 1; } switch (selection) { case 0: // Local Search search_type = LocalSearch; break; case 1: // Global Search search_type = GlobalSearch; break; case 2: // Kad search search_type = KadSearch; break; default: // Should never happen wxFAIL; break; } uint32 real_id = m_nSearchID; wxString error = theApp->searchlist->StartNewSearch(&real_id, search_type, params); if (!error.IsEmpty()) { // Search failed / Remote in progress wxMessageBox(error, _("Search warning"), wxOK | wxCENTRE | wxICON_INFORMATION, this); FindWindow(IDC_STARTS)->Enable(); FindWindow(IDC_SDOWNLOAD)->Disable(); FindWindow(IDC_CANCELS)->Disable(); } else { CreateNewTab( ((search_type == KadSearch) ? wxT("!") : wxEmptyString) + params.searchString + wxT(" (0)"), real_id); } } void CSearchDlg::UpdateHitCount(CSearchListCtrl* page) { for ( uint32 i = 0; i < (uint32)m_notebook->GetPageCount(); ++i ) { if ( m_notebook->GetPage(i) == page ) { wxString searchtxt = m_notebook->GetPageText(i).BeforeLast(wxT(' ')); if ( !searchtxt.IsEmpty() ) { size_t shown = page->GetItemCount(); size_t hidden = page->GetHiddenItemCount(); if (hidden) { searchtxt += CFormat(wxT(" (%u/%u)")) % shown % (shown + hidden); } else { searchtxt += CFormat(wxT(" (%u)")) % shown; } m_notebook->SetPageText(i, searchtxt); } break; } } } void CSearchDlg::OnBnClickedReset(wxCommandEvent& WXUNUSED(evt)) { CastChild( IDC_SEARCHNAME, wxTextCtrl )->Clear(); CastChild( IDC_EDITSEARCHEXTENSION, wxTextCtrl )->Clear(); CastChild( IDC_SPINSEARCHMIN, wxSpinCtrl )->SetValue(0); CastChild( IDC_SEARCHMINSIZE, wxChoice )->SetSelection(2); CastChild( IDC_SPINSEARCHMAX, wxSpinCtrl )->SetValue(0); CastChild( IDC_SEARCHMAXSIZE, wxChoice )->SetSelection(2); CastChild( IDC_SPINSEARCHAVAIBILITY, wxSpinCtrl )->SetValue(0); CastChild( IDC_TypeSearch, wxChoice )->SetSelection(0); CastChild( ID_AUTOCATASSIGN, wxChoice )->SetSelection(0); FindWindow(IDC_SEARCH_RESET)->Enable(FALSE); } void CSearchDlg::UpdateCatChoice() { wxChoice* c_cat = CastChild( ID_AUTOCATASSIGN, wxChoice ); c_cat->Clear(); c_cat->Append(_("Main")); for ( unsigned i = 1; i < theApp->glob_prefs->GetCatCount(); i++ ) { c_cat->Append( theApp->glob_prefs->GetCategory( i )->title ); } c_cat->SetSelection( 0 ); } void CSearchDlg::UpdateProgress(uint32 new_value) { m_progressbar->SetValue(new_value); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SearchDlg.h0000644000175000017500000001057712611472361020311 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SEARCHDLG_H #define SEARCHDLG_H #include // Needed for wxPanel #include // needed for wxBookCtrlEvent in wx 2.8 #include "Types.h" // Needed for uint16 and uint32 class CMuleNotebook; class CSearchListCtrl; class CMuleNotebookEvent; class wxListEvent; class wxSpinEvent; class wxGauge; class CSearchFile; /** * This class represents the Search Dialog, which takes care of * enabling the user to search and to display results in a readable * manner. */ class CSearchDlg : public wxPanel { public: /** * Constructor. * * @param pParent The parent widget passed to the wxPanel constructor. */ CSearchDlg(wxWindow* pParent); /** * Destructor. */ ~CSearchDlg(); /** * Adds the provided result to the right result-list. * * Please note that there is no duplicates checking, so the files should * indeed be a new result. */ void AddResult(CSearchFile* toadd); /** * Updates a changed result. * * @param A pointer to the updated CSearchFile. * * This function will update the source-count and color of the result, and * if needed, it will also move the result so that the current sorting * is maintained. */ void UpdateResult(CSearchFile* toupdate); /** * Checks if a result-page with the specified heading exists. * * @param searchString The heading to look for. */ bool CheckTabNameExists(const wxString& searchString); /** * Creates a new tab and displays the specified results. * * @param searchString This will be the heading of the new page. * @param nSearchID The results with this searchId will be displayed. */ void CreateNewTab(const wxString& searchString, wxUIntPtr nSearchID); /** * Call this function to signify that the local search is over. */ void LocalSearchEnd(); /** * Call this function to signify that the kad search is over. */ void KadSearchEnd(uint32 id); /** * This function updates the category list according to existing categories. */ void UpdateCatChoice(); /** * This function displays the the hit-count in the heading for the specified page. * * @param page The page to have its heading updated. */ void UpdateHitCount(CSearchListCtrl* page); /** * Helper function which resets the controls. */ void ResetControls(); // Event handler and helper function void OnBnClickedDownload(wxCommandEvent& ev); CSearchListCtrl* GetSearchList( wxUIntPtr id ); void UpdateProgress(uint32 new_value); void StartNewSearch(); void FixSearchTypes(); private: // Event handlers void OnFieldChanged(wxEvent& evt); void OnListItemSelected(wxListEvent& ev); void OnBnClickedReset(wxCommandEvent& ev); void OnBnClickedClear(wxCommandEvent& ev); void OnExtendedSearchChange(wxCommandEvent& ev); void OnFilterCheckChange(wxCommandEvent& ev); void OnFilteringChange(wxCommandEvent& ev); void OnSearchClosing(wxBookCtrlEvent& evt); void OnBnClickedStart(wxCommandEvent& evt); void OnBnClickedStop(wxCommandEvent& evt); /** * Event-handler for page-chages which takes care of enabling/disabling the download button. */ void OnSearchPageChanged(wxBookCtrlEvent& evt); uint32 m_last_search_time; wxGauge* m_progressbar; CMuleNotebook* m_notebook; wxArrayString m_searchchoices; DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SearchExpr.h0000644000175000017500000000432612611472361020514 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SEARCHEXPR_H #define SEARCHEXPR_H #include enum ESearchOperators { SEARCHOP_AND, SEARCHOP_OR, SEARCHOP_NOT }; #define SEARCHOPTOK_AND wxT("\255AND") #define SEARCHOPTOK_OR wxT("\255OR") #define SEARCHOPTOK_NOT wxT("\255NOT") class CSearchExpr { public: CSearchExpr(){} CSearchExpr(const wxString& pszString) { Add(pszString); } void Add(ESearchOperators eOperator) { if (eOperator == SEARCHOP_AND) { m_aExpr.Add(SEARCHOPTOK_AND); } if (eOperator == SEARCHOP_OR) { m_aExpr.Add(SEARCHOPTOK_OR); } if (eOperator == SEARCHOP_NOT) { m_aExpr.Add(SEARCHOPTOK_NOT); } } void Add(const wxString& pszString) { m_aExpr.Add(pszString); } void Add(const CSearchExpr* pexpr) { //m_aExpr.Append(pexpr->m_aExpr); for (unsigned int i=0; i < pexpr->m_aExpr.GetCount(); ++i) { m_aExpr.Add(pexpr->m_aExpr[i]); } } void Concatenate(const wxString& pstrString) { wxASSERT( m_aExpr.GetCount() == 1 ); m_aExpr[0] += ' '; m_aExpr[0] += pstrString; } wxArrayString m_aExpr; }; #ifdef _MSC_VER #define YY_NO_UNISTD_H #define DEBUG_NEW new #endif #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SearchFile.cpp0000644000175000017500000002445312611472361021013 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "SearchFile.h" // Interface declarations. #include #include "amule.h" // Needed for theApp #include "CanceledFileList.h" #include "MemFile.h" // Needed for CMemFile #include "Preferences.h" // Needed for thePrefs #include "GuiEvents.h" #include "Logger.h" #include "PartFile.h" // Needed for CPartFile::CanAddSource #include "DownloadQueue.h" // Needed for CDownloadQueue #include "KnownFileList.h" // Needed for CKnownFileList CSearchFile::CSearchFile(const CMemFile& data, bool optUTF8, wxUIntPtr searchID, uint32_t serverIP, uint16_t serverPort, const wxString& directory, bool kademlia) : m_parent(NULL), m_showChildren(false), m_searchID(searchID), m_sourceCount(0), m_completeSourceCount(0), m_kademlia(kademlia), m_downloadStatus(NEW), m_directory(directory), m_clientServerIP(serverIP), m_clientServerPort(serverPort), m_kadPublishInfo(0) { m_abyFileHash = data.ReadHash(); SetDownloadStatus(); m_clientID = data.ReadUInt32(); m_clientPort = data.ReadUInt16(); if (!m_clientID || !m_clientPort || !IsGoodIP(m_clientID, thePrefs::FilterLanIPs())) { m_clientID = 0; m_clientPort = 0; } uint32 tagcount = data.ReadUInt32(); for (unsigned int i = 0; i < tagcount; ++i) { CTag tag(data, optUTF8); switch (tag.GetNameID()) { case FT_FILENAME: SetFileName(CPath(tag.GetStr())); break; case FT_FILESIZE: SetFileSize(tag.GetInt()); break; case FT_FILESIZE_HI: SetFileSize((((uint64)tag.GetInt()) << 32) + GetFileSize()); break; case FT_FILERATING: m_iUserRating = (tag.GetInt() & 0xF) / 3; break; case FT_SOURCES: m_sourceCount = tag.GetInt(); break; case FT_COMPLETE_SOURCES: m_completeSourceCount = tag.GetInt(); break; case FT_PERMISSIONS: case FT_KADLASTPUBLISHKEY: case FT_PARTFILENAME: // Just ignore break; default: AddTagUnique(tag); } } if (!GetFileName().IsOk()) { throw CInvalidPacket(wxT("No filename in search result")); } } CSearchFile::CSearchFile(const CSearchFile& other) : CAbstractFile(other), CECID(), // create a new ID for now m_parent(other.m_parent), m_showChildren(other.m_showChildren), m_searchID(other.m_searchID), m_sourceCount(other.m_sourceCount), m_completeSourceCount(other.m_completeSourceCount), m_kademlia(other.m_kademlia), m_downloadStatus(other.m_downloadStatus), m_directory(other.m_directory), m_clients(other.m_clients), m_clientID(other.m_clientID), m_clientPort(other.m_clientPort), m_clientServerIP(other.m_clientServerIP), m_clientServerPort(other.m_clientServerPort), m_kadPublishInfo(other.m_kadPublishInfo) { for (size_t i = 0; i < other.m_children.size(); ++i) { m_children.push_back(new CSearchFile(*other.m_children.at(i))); } } CSearchFile::~CSearchFile() { for (size_t i = 0; i < m_children.size(); ++i) { delete m_children.at(i); } } void CSearchFile::AddClient(const ClientStruct& client) { for (std::list::const_iterator it = m_clients.begin(); it != m_clients.end(); ++it) { if (client.m_ip == it->m_ip && client.m_port == it->m_port) return; } m_clients.push_back(client); } void CSearchFile::MergeResults(const CSearchFile& other) { // Sources if (m_kademlia) { m_sourceCount = std::max(m_sourceCount, other.m_sourceCount); m_completeSourceCount = std::max(m_completeSourceCount, other.m_completeSourceCount); } else { m_sourceCount += other.m_sourceCount; m_completeSourceCount += other.m_completeSourceCount; } // Publish info if (m_kadPublishInfo == 0) { if (other.m_kadPublishInfo != 0) { m_kadPublishInfo = other.m_kadPublishInfo; } } else { if (other.m_kadPublishInfo != 0) { m_kadPublishInfo = std::max(m_kadPublishInfo & 0xFF000000, other.m_kadPublishInfo & 0xFF000000) | std::max(m_kadPublishInfo & 0x00FF0000, other.m_kadPublishInfo & 0x00FF0000) | (((m_kadPublishInfo & 0x0000FFFF) + (other.m_kadPublishInfo & 0x0000FFFF)) >> 1); } } // Rating if (m_iUserRating != 0) { if (other.m_iUserRating != 0) { m_iUserRating = (m_iUserRating + other.m_iUserRating) / 2; } } else { if (other.m_iUserRating != 0) { m_iUserRating = other.m_iUserRating; } } // copy possible available sources from new result if (other.GetClientID() && other.GetClientPort()) { // pre-filter sources which would be dropped by CPartFile::AddSources if (CPartFile::CanAddSource(other.GetClientID(), other.GetClientPort(), other.GetClientServerIP(), other.GetClientServerPort())) { CSearchFile::ClientStruct client(other.GetClientID(), other.GetClientPort(), other.GetClientServerIP(), other.GetClientServerPort()); AddClient(client); } } } void CSearchFile::AddChild(CSearchFile* file) { wxCHECK_RET(file, wxT("Not a valid child!")); wxCHECK_RET(!file->GetParent(), wxT("Search-result can only be child of one other result")); wxCHECK_RET(!file->HasChildren(), wxT("Result already has children, cannot become child.")); wxCHECK_RET(!GetParent(), wxT("A child cannot have children of its own")); wxCHECK_RET(GetFileHash() == file->GetFileHash(), wxT("Mismatching child/parent hashes")); wxCHECK_RET(GetFileSize() == file->GetFileSize(), wxT("Mismatching child/parent sizes")); // If no children exists, then we add the current item. if (GetChildren().empty()) { // Merging duplicate names instead of adding a new one if (file->GetFileName() == GetFileName()) { AddDebugLogLineN(logSearch, CFormat(wxT("Merged results for '%s'")) % GetFileName()); MergeResults(*file); delete file; return; } else { // The first child will always be the first result we received. AddDebugLogLineN(logSearch, CFormat(wxT("Created initial child for result '%s'")) % GetFileName()); m_children.push_back(new CSearchFile(*this)); m_children.back()->m_parent = this; } } file->m_parent = this; for (size_t i = 0; i < m_children.size(); ++i) { CSearchFile* other = m_children.at(i); // Merge duplicate filenames if (other->GetFileName() == file->GetFileName()) { other->MergeResults(*file); UpdateParent(); delete file; return; } } // New unique child. m_children.push_back(file); UpdateParent(); if (ShowChildren()) { Notify_Search_Add_Result(file); } } void CSearchFile::UpdateParent() { wxCHECK_RET(!m_parent, wxT("UpdateParent called on child item")); uint32_t sourceCount = 0; // ed2k: sum of all sources, kad: the max sources found uint32_t completeSourceCount = 0; // ed2k: sum of all sources, kad: the max sources found uint32_t differentNames = 0; // max known different names uint32_t publishersKnown = 0; // max publishers known uint32_t trustValue = 0; // average trust value unsigned publishInfoTags = 0; unsigned ratingCount = 0; unsigned ratingTotal = 0; CSearchResultList::const_iterator best = m_children.begin(); for (CSearchResultList::const_iterator it = m_children.begin(); it != m_children.end(); ++it) { const CSearchFile* child = *it; // Locate the most common name if (child->GetSourceCount() > (*best)->GetSourceCount()) { best = it; } // Sources if (m_kademlia) { sourceCount = std::max(sourceCount, child->m_sourceCount); completeSourceCount = std::max(completeSourceCount, child->m_completeSourceCount); } else { sourceCount += child->m_sourceCount; completeSourceCount += child->m_completeSourceCount; } // Publish info if (child->GetKadPublishInfo() != 0) { differentNames = std::max(differentNames, (child->GetKadPublishInfo() & 0xFF000000) >> 24); publishersKnown = std::max(publishersKnown, (child->GetKadPublishInfo() & 0x00FF0000) >> 16); trustValue += child->GetKadPublishInfo() & 0x0000FFFF; publishInfoTags++; } // Rating if (child->HasRating()) { ratingCount++; ratingTotal += child->UserRating(); } // Available sources if (child->GetClientID() && child->GetClientPort()) { CSearchFile::ClientStruct client(child->GetClientID(), child->GetClientPort(), child->GetClientServerIP(), child->GetClientServerPort()); AddClient(client); } for (std::list::const_iterator cit = child->m_clients.begin(); cit != child->m_clients.end(); ++cit) { AddClient(*cit); } } m_sourceCount = sourceCount; m_completeSourceCount = completeSourceCount; if (publishInfoTags > 0) { m_kadPublishInfo = ((differentNames & 0x000000FF) << 24) | ((publishersKnown & 0x000000FF) << 16) | ((trustValue / publishInfoTags) & 0x0000FFFF); } else { m_kadPublishInfo = 0; } if (ratingCount > 0) { m_iUserRating = ratingTotal / ratingCount; } else { m_iUserRating = 0; } SetFileName((*best)->GetFileName()); } void CSearchFile::SetDownloadStatus() { bool isPart = theApp->downloadqueue->GetFileByID(m_abyFileHash) != NULL; bool isKnown = theApp->knownfiles->FindKnownFileByID(m_abyFileHash) != NULL; bool isCanceled = theApp->canceledfiles->IsCanceledFile(m_abyFileHash); if (isCanceled && isPart) { m_downloadStatus = QUEUEDCANCELED; } else if (isCanceled) { m_downloadStatus = CANCELED; } else if (isPart) { m_downloadStatus = QUEUED; } else if (isKnown) { m_downloadStatus = DOWNLOADED; } else { m_downloadStatus = NEW; } // Update status of children too for (CSearchResultList::iterator it = m_children.begin(); it != m_children.end(); ++it) { Notify_Search_Update_Sources(*it); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SearchFile.h0000644000175000017500000001770212611472361020457 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SEARCHFILE_H #define SEARCHFILE_H #include "KnownFile.h" // Needed for CAbstractFile class CMemFile; class CMD4Hash; class CSearchFile; typedef std::vector CSearchResultList; /** * Represents a search-result returned from a server or client. * * A file may have either a parent or any number of children. * When a child is added to a result, the parent becomes a generic * representation of all its children, which will include a copy * of the original result. The parent object will contain the sum * of sources (total/complete) and will have the most common * filename. Children are owned by their parents, and can be * displayed on CSearchListCtrl. * * Basic file parameters (hash, name, size, rating) can be read * via the CAbstractFile functions. Tags pertaining to meta-data * are stored in the taglist inherited from CAbstractFile. * * TODO: Server IP/Port are currently not used. * TODO: Client ID/Port are currently not used. */ class CSearchFile : public CAbstractFile, public CECID { public: /** Constructor used to create results on the remote GUI. */ CSearchFile(const class CEC_SearchFile_Tag* tag); /** Copy constructor, also copies children. */ CSearchFile(const CSearchFile& other); /** * Normal constructor, reads a result from a packet. * * @param data Source of results-packet. * @param optUTF8 Specifies if text-strings are to be read as UTF8. * @param searchID searchID The * @param serverIP The IP of the server that sent this result. * @param serverPort The port of the server that sent this result. * @param directory If from a clients shared files, the directory this file is in. * @param kademlia Specifies if this was from a kad-search. */ CSearchFile( const CMemFile& data, bool optUTF8, wxUIntPtr searchID, uint32_t serverIP = 0, uint16_t serverPort = 0, const wxString& directory = wxEmptyString, bool kademlia = false); /** Frees all children owned by this file. */ virtual ~CSearchFile(); /** * Merges the two results into one. * * Merges the other result into this one, updating * various informations. * * @param other The file to be merged into this. */ void MergeResults(const CSearchFile& other); /** Returns the total number of sources. */ uint32 GetSourceCount() const { return m_sourceCount; } /** Returns the number of sources that have the entire file. */ uint32 GetCompleteSourceCount() const { return m_completeSourceCount; } /** Returns the ID of the search, used to select the right list when displaying. */ wxUIntPtr GetSearchID() const { return m_searchID; } /** Returns true if the result is from a Kademlia search. */ bool IsKademlia() const { return m_kademlia; } // Possible download status of a file enum DownloadStatus { NEW, // not known DOWNLOADED, // successfully downloaded or shared QUEUED, // downloading (Partfile) CANCELED, // canceled QUEUEDCANCELED // canceled once, but now downloading again }; /** Returns the download status. */ enum DownloadStatus GetDownloadStatus() const { return m_downloadStatus; } /** Set download status according to the global lists of knownfile, partfiles, canceledfiles. */ void SetDownloadStatus(); /** Set download status directly. */ void SetDownloadStatus(enum DownloadStatus s) { m_downloadStatus = s; } /** Returns the parent of this file. */ CSearchFile *GetParent() const { return m_parent; } /** Returns the list of children belonging to this file. */ const CSearchResultList &GetChildren() const { return m_children; } /** Returns true if this item has children. */ bool HasChildren() const { return !m_children.empty(); } /** Returns true if children should be displayed. */ bool ShowChildren() const { return m_showChildren; } /** Enable/Disable displaying of children (set in CSearchListCtrl). */ void SetShowChildren(bool show) { m_showChildren = show; } /** * Adds the given file as a child of this file. * * Note that a file can either be a parent _or_ * a child, but not both. Also note that it is * only legal to add children whose filesize and * filehash matches the parent's. AddChild takes * ownership of the file. */ void AddChild(CSearchFile* file); struct ClientStruct { ClientStruct() : m_ip(0), m_port(0), m_serverIP(0), m_serverPort(0) {} ClientStruct(uint32_t ip, uint16_t port, uint32_t serverIP, uint16_t serverPort) : m_ip(ip), m_port(port), m_serverIP(serverIP), m_serverPort(serverPort) {} uint32_t m_ip; uint16_t m_port; uint32_t m_serverIP; uint32_t m_serverPort; }; void AddClient(const ClientStruct& client); const std::list& GetClients() const { return m_clients; } uint32_t GetClientID() const throw() { return m_clientID; } void SetClientID(uint32_t clientID) throw() { m_clientID = clientID; } uint16_t GetClientPort() const throw() { return m_clientPort; } void SetClientPort(uint16_t port) throw() { m_clientPort = port; } uint32_t GetClientServerIP() const throw() { return m_clientServerIP; } void SetClientServerIP(uint32_t serverIP) throw() { m_clientServerIP = serverIP; } uint16_t GetClientServerPort() const throw() { return m_clientServerPort; } void SetClientServerPort(uint16_t port) throw() { m_clientServerPort = port; } int GetClientsCount() const { return ((GetClientID() && GetClientPort()) ? 1 : 0) + m_clients.size(); } void SetKadPublishInfo(uint32_t val) throw() { m_kadPublishInfo = val; } uint32_t GetKadPublishInfo() const throw() { return m_kadPublishInfo; } const wxString& GetDirectory() const throw() { return m_directory; } private: //! CSearchFile is not assignable. CSearchFile& operator=(const CSearchFile& other); /** * Updates a parent file so that it shows various common traits. * * Currently, the most common filename is selected, and an average * of fileratings is set, based on files that have a rating only. */ void UpdateParent(); //! The parent of this result. CSearchFile* m_parent; //! Any children this result may have. CSearchResultList m_children; //! If true, children will be shown on the GUI. bool m_showChildren; //! The unique ID of this search owning this result. wxUIntPtr m_searchID; //! The total number of sources for this file. uint32 m_sourceCount; //! The number of sources that have the complete file. uint32 m_completeSourceCount; //! Specifies if the result is from a kademlia search. bool m_kademlia; //! The download status. enum DownloadStatus m_downloadStatus; //! Directory where file is stored (when it is part of a remote shared files list). wxString m_directory; std::list m_clients; uint32_t m_clientID; uint16_t m_clientPort; uint32_t m_clientServerIP; uint16_t m_clientServerPort; //! Kademlia publish information. uint32_t m_kadPublishInfo; friend class CPartFile; friend class CSearchListRem; }; #endif // SEARCHLIST_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SearchList.cpp0000644000175000017500000007462112611472361021051 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "SearchList.h" // Interface declarations. #include #include #include #include #include "updownclient.h" // Needed for CUpDownClient #include "MemFile.h" // Needed for CMemFile #include "amule.h" // Needed for theApp #include "ServerConnect.h" // Needed for theApp->serverconnect #include "Server.h" // Needed for CServer #include "ServerList.h" // Needed for theApp->serverlist #include "Statistics.h" // Needed for theStats #include "ObservableQueue.h"// Needed for CQueueObserver #include #include "Logger.h" // Needed for AddLogLineM/... #include "Packet.h" // Needed for CPacket #include "GuiEvents.h" // Needed for Notify_* #ifndef AMULE_DAEMON #include "amuleDlg.h" // Needed for CamuleDlg #include "SearchDlg.h" // Needed for CSearchDlg #endif #include "kademlia/kademlia/Kademlia.h" #include "kademlia/kademlia/Search.h" #include "SearchExpr.h" #include "Scanner.h.in" extern int yyparse(); extern int yyerror(const char* errstr); extern int yyerror(wxString errstr); static wxString s_strCurKadKeyword; static CSearchExpr _SearchExpr; wxArrayString _astrParserErrors; // Helper function for lexer. void ParsedSearchExpression(const CSearchExpr* pexpr) { int iOpAnd = 0; int iOpOr = 0; int iOpNot = 0; for (unsigned int i = 0; i < pexpr->m_aExpr.GetCount(); i++) { wxString str(pexpr->m_aExpr[i]); if (str == SEARCHOPTOK_AND) { iOpAnd++; } else if (str == SEARCHOPTOK_OR) { iOpOr++; } else if (str == SEARCHOPTOK_NOT) { iOpNot++; } } // this limit (+ the additional operators which will be added later) has to match the limit in 'CreateSearchExpressionTree' // +1 Type (Audio, Video) // +1 MinSize // +1 MaxSize // +1 Avail // +1 Extension // +1 Complete sources // +1 Codec // +1 Bitrate // +1 Length // +1 Title // +1 Album // +1 Artist // --------------- // 12 if (iOpAnd + iOpOr + iOpNot > 10) { yyerror(wxT("Search expression is too complex")); } _SearchExpr.m_aExpr.Empty(); // optimize search expression, if no OR nor NOT specified if (iOpAnd > 0 && iOpOr == 0 && iOpNot == 0) { wxString strAndTerms; for (unsigned int i = 0; i < pexpr->m_aExpr.GetCount(); i++) { if (pexpr->m_aExpr[i] != SEARCHOPTOK_AND) { // Minor optimization: Because we added the Kad keyword to the boolean search expression, // we remove it here (and only here) again because we know that the entire search expression // does only contain (implicit) ANDed strings. if (pexpr->m_aExpr[i] != s_strCurKadKeyword) { if (!strAndTerms.IsEmpty()) { strAndTerms += ' '; } strAndTerms += pexpr->m_aExpr[i]; } } } wxASSERT( _SearchExpr.m_aExpr.GetCount() == 0); _SearchExpr.m_aExpr.Add(strAndTerms); } else { if (pexpr->m_aExpr.GetCount() != 1 || pexpr->m_aExpr[0] != s_strCurKadKeyword) _SearchExpr.Add(pexpr); } } //! Helper class for packet creation class CSearchExprTarget { public: CSearchExprTarget(CMemFile* pData, EUtf8Str eStrEncode, bool supports64bit, bool& using64bit) : m_data(pData), m_eStrEncode(eStrEncode), m_supports64bit(supports64bit), m_using64bit(using64bit) { m_using64bit = false; } void WriteBooleanAND() { m_data->WriteUInt8(0); // boolean operator parameter type m_data->WriteUInt8(0x00); // "AND" } void WriteBooleanOR() { m_data->WriteUInt8(0); // boolean operator parameter type m_data->WriteUInt8(0x01); // "OR" } void WriteBooleanNOT() { m_data->WriteUInt8(0); // boolean operator parameter type m_data->WriteUInt8(0x02); // "NOT" } void WriteMetaDataSearchParam(const wxString& rstrValue) { m_data->WriteUInt8(1); // string parameter type m_data->WriteString(rstrValue, m_eStrEncode); // string value } void WriteMetaDataSearchParam(uint8 uMetaTagID, const wxString& rstrValue) { m_data->WriteUInt8(2); // string parameter type m_data->WriteString(rstrValue, m_eStrEncode); // string value m_data->WriteUInt16(sizeof(uint8)); // meta tag ID length m_data->WriteUInt8(uMetaTagID); // meta tag ID name } void WriteMetaDataSearchParamASCII(uint8 uMetaTagID, const wxString& rstrValue) { m_data->WriteUInt8(2); // string parameter type m_data->WriteString(rstrValue, utf8strNone); // string value m_data->WriteUInt16(sizeof(uint8)); // meta tag ID length m_data->WriteUInt8(uMetaTagID); // meta tag ID name } void WriteMetaDataSearchParam(const wxString& pszMetaTagID, const wxString& rstrValue) { m_data->WriteUInt8(2); // string parameter type m_data->WriteString(rstrValue, m_eStrEncode); // string value m_data->WriteString(pszMetaTagID); // meta tag ID } void WriteMetaDataSearchParam(uint8_t uMetaTagID, uint8_t uOperator, uint64_t value) { bool largeValue = value > wxULL(0xFFFFFFFF); if (largeValue && m_supports64bit) { m_using64bit = true; m_data->WriteUInt8(8); // numeric parameter type (int64) m_data->WriteUInt64(value); // numeric value } else { if (largeValue) { value = 0xFFFFFFFFu; } m_data->WriteUInt8(3); // numeric parameter type (int32) m_data->WriteUInt32(value); // numeric value } m_data->WriteUInt8(uOperator); // comparison operator m_data->WriteUInt16(sizeof(uint8)); // meta tag ID length m_data->WriteUInt8(uMetaTagID); // meta tag ID name } void WriteMetaDataSearchParam(const wxString& pszMetaTagID, uint8_t uOperator, uint64_t value) { bool largeValue = value > wxULL(0xFFFFFFFF); if (largeValue && m_supports64bit) { m_using64bit = true; m_data->WriteUInt8(8); // numeric parameter type (int64) m_data->WriteUInt64(value); // numeric value } else { if (largeValue) { value = 0xFFFFFFFFu; } m_data->WriteUInt8(3); // numeric parameter type (int32) m_data->WriteUInt32(value); // numeric value } m_data->WriteUInt8(uOperator); // comparison operator m_data->WriteString(pszMetaTagID); // meta tag ID } protected: CMemFile* m_data; EUtf8Str m_eStrEncode; bool m_supports64bit; bool& m_using64bit; }; /////////////////////////////////////////////////////////// // CSearchList BEGIN_EVENT_TABLE(CSearchList, wxEvtHandler) EVT_MULE_TIMER(wxID_ANY, CSearchList::OnGlobalSearchTimer) END_EVENT_TABLE() CSearchList::CSearchList() : m_searchTimer(this, 0 /* Timer-id doesn't matter. */ ), m_searchType(LocalSearch), m_searchInProgress(false), m_currentSearch(-1), m_searchPacket(NULL), m_64bitSearchPacket(false), m_KadSearchFinished(true) {} CSearchList::~CSearchList() { StopSearch(); while (!m_results.empty()) { RemoveResults(m_results.begin()->first); } } void CSearchList::RemoveResults(long searchID) { // A non-existant search id will just be ignored Kademlia::CSearchManager::StopSearch(searchID, true); ResultMap::iterator it = m_results.find(searchID); if ( it != m_results.end() ) { CSearchResultList& list = it->second; for (size_t i = 0; i < list.size(); ++i) { delete list.at(i); } m_results.erase( it ); } } wxString CSearchList::StartNewSearch(uint32* searchID, SearchType type, const CSearchParams& params) { // Check that we can actually perform the specified desired search. if ((type == KadSearch) && !Kademlia::CKademlia::IsRunning()) { return _("Kad search can't be done if Kad is not running"); } else if ((type != KadSearch) && !theApp->IsConnectedED2K()) { return _("eD2k search can't be done if eD2k is not connected"); } if (params.typeText != ED2KFTSTR_PROGRAM) { if (params.typeText.CmpNoCase(wxT("Any"))) { m_resultType = params.typeText; } else { m_resultType.Clear(); } } else { // No check is to be made on returned results if the // type is 'Programs', since this returns multiple types. m_resultType.Clear(); } bool supports64bit = type == KadSearch ? true : theApp->serverconnect->GetCurrentServer() != NULL && (theApp->serverconnect->GetCurrentServer()->GetTCPFlags() & SRV_TCPFLG_LARGEFILES); bool packetUsing64bit; // This MemFile is automatically free'd CMemFilePtr data = CreateSearchData(params, type, supports64bit, packetUsing64bit); if (data.get() == NULL) { wxASSERT(_astrParserErrors.GetCount()); wxString error; for (unsigned int i = 0; i < _astrParserErrors.GetCount(); ++i) { error += _astrParserErrors[i] + wxT("\n"); } return error; } m_searchType = type; if (type == KadSearch) { try { if (*searchID == 0xffffffff) { Kademlia::CSearchManager::StopSearch(0xffffffff, false); } // searchstring will get tokenized there // The tab must be created with the Kad search ID, so searchID is updated. Kademlia::CSearch* search = Kademlia::CSearchManager::PrepareFindKeywords( params.searchString, data->GetLength(), data->GetRawBuffer(), *searchID); *searchID = search->GetSearchID(); m_currentSearch = *searchID; m_KadSearchFinished = false; } catch (const wxString& what) { AddLogLineC(what); return _("Unexpected error while attempting Kad search: ") + what; } } else { // This is an ed2k search, local or global m_currentSearch = *(searchID); m_searchInProgress = true; CPacket* searchPacket = new CPacket(*data.get(), OP_EDONKEYPROT, OP_SEARCHREQUEST); theStats::AddUpOverheadServer(searchPacket->GetPacketSize()); theApp->serverconnect->SendPacket(searchPacket, (type == LocalSearch)); if (type == GlobalSearch) { delete m_searchPacket; m_searchPacket = searchPacket; m_64bitSearchPacket = packetUsing64bit; m_searchPacket->SetOpCode(OP_GLOBSEARCHREQ); // will be changed later when actually sending the packet!! } } return wxEmptyString; } void CSearchList::LocalSearchEnd() { if (m_searchType == GlobalSearch) { wxCHECK_RET(m_searchPacket, wxT("Global search, but no packet")); // Ensure that every global search starts over. theApp->serverlist->RemoveObserver(&m_serverQueue); m_searchTimer.Start(750); } else { m_searchInProgress = false; Notify_SearchLocalEnd(); } } uint32 CSearchList::GetSearchProgress() const { if (m_searchType == KadSearch) { // We cannot measure the progress of Kad searches. // But we can tell when they are over. return m_KadSearchFinished ? 0xfffe : 0; } if (m_searchInProgress == false) { // true only for ED2K search // No search, no progress ;) return 0; } switch (m_searchType) { case LocalSearch: return 0xffff; case GlobalSearch: return 100 - (m_serverQueue.GetRemaining() * 100) / theApp->serverlist->GetServerCount(); default: wxFAIL; } return 0; } void CSearchList::OnGlobalSearchTimer(CTimerEvent& WXUNUSED(evt)) { // Ensure that the server-queue contains the current servers. if (m_searchPacket == NULL) { // This was a pending event, handled after 'Stop' was pressed. return; } else if (!m_serverQueue.IsActive()) { theApp->serverlist->AddObserver(&m_serverQueue); } // UDP requests must not be sent to this server. const CServer* localServer = theApp->serverconnect->GetCurrentServer(); if (localServer) { uint32 localIP = localServer->GetIP(); uint16 localPort = localServer->GetPort(); while (m_serverQueue.GetRemaining()) { CServer* server = m_serverQueue.GetNext(); // Compare against the currently connected server. if ((server->GetPort() == localPort) && (server->GetIP() == localIP)) { // We've already requested from the local server. continue; } else { if (server->SupportsLargeFilesUDP() && (server->GetUDPFlags() & SRV_UDPFLG_EXT_GETFILES)) { CMemFile data(50); uint32_t tagCount = 1; data.WriteUInt32(tagCount); CTagVarInt flags(CT_SERVER_UDPSEARCH_FLAGS, SRVCAP_UDP_NEWTAGS_LARGEFILES); flags.WriteNewEd2kTag(&data); CPacket *extSearchPacket = new CPacket(OP_GLOBSEARCHREQ3, m_searchPacket->GetPacketSize() + (uint32_t)data.GetLength(), OP_EDONKEYPROT); extSearchPacket->CopyToDataBuffer(0, data.GetRawBuffer(), data.GetLength()); extSearchPacket->CopyToDataBuffer(data.GetLength(), m_searchPacket->GetDataBuffer(), m_searchPacket->GetPacketSize()); theStats::AddUpOverheadServer(extSearchPacket->GetPacketSize()); theApp->serverconnect->SendUDPPacket(extSearchPacket, server, true); AddDebugLogLineN(logServerUDP, wxT("Sending OP_GLOBSEARCHREQ3 to server ") + Uint32_16toStringIP_Port(server->GetIP(), server->GetPort())); } else if (server->GetUDPFlags() & SRV_UDPFLG_EXT_GETFILES) { if (!m_64bitSearchPacket || server->SupportsLargeFilesUDP()) { m_searchPacket->SetOpCode(OP_GLOBSEARCHREQ2); AddDebugLogLineN(logServerUDP, wxT("Sending OP_GLOBSEARCHREQ2 to server ") + Uint32_16toStringIP_Port(server->GetIP(), server->GetPort())); theStats::AddUpOverheadServer(m_searchPacket->GetPacketSize()); theApp->serverconnect->SendUDPPacket(m_searchPacket, server, false); } else { AddDebugLogLineN(logServerUDP, wxT("Skipped UDP search on server ") + Uint32_16toStringIP_Port(server->GetIP(), server->GetPort()) + wxT(": No large file support")); } } else { if (!m_64bitSearchPacket || server->SupportsLargeFilesUDP()) { m_searchPacket->SetOpCode(OP_GLOBSEARCHREQ); AddDebugLogLineN(logServerUDP, wxT("Sending OP_GLOBSEARCHREQ to server ") + Uint32_16toStringIP_Port(server->GetIP(), server->GetPort())); theStats::AddUpOverheadServer(m_searchPacket->GetPacketSize()); theApp->serverconnect->SendUDPPacket(m_searchPacket, server, false); } else { AddDebugLogLineN(logServerUDP, wxT("Skipped UDP search on server ") + Uint32_16toStringIP_Port(server->GetIP(), server->GetPort()) + wxT(": No large file support")); } } CoreNotify_Search_Update_Progress(GetSearchProgress()); return; } } } // No more servers left to ask. StopSearch(true); } void CSearchList::ProcessSharedFileList(const byte* in_packet, uint32 size, CUpDownClient* sender, bool *moreResultsAvailable, const wxString& directory) { wxCHECK_RET(sender, wxT("No sender in search-results from client.")); long searchID = reinterpret_cast(sender); #ifndef AMULE_DAEMON if (!theApp->amuledlg->m_searchwnd->CheckTabNameExists(sender->GetUserName())) { theApp->amuledlg->m_searchwnd->CreateNewTab(sender->GetUserName() + wxT(" (0)"), searchID); } #endif const CMemFile packet(in_packet, size); uint32 results = packet.ReadUInt32(); bool unicoded = (sender->GetUnicodeSupport() != utf8strNone); for (unsigned int i = 0; i != results; ++i){ CSearchFile* toadd = new CSearchFile(packet, unicoded, searchID, 0, 0, directory); toadd->SetClientID(sender->GetUserIDHybrid()); toadd->SetClientPort(sender->GetUserPort()); AddToList(toadd, true); } if (moreResultsAvailable) *moreResultsAvailable = false; int iAddData = (int)(packet.GetLength() - packet.GetPosition()); if (iAddData == 1) { uint8 ucMore = packet.ReadUInt8(); if (ucMore == 0x00 || ucMore == 0x01){ if (moreResultsAvailable) { *moreResultsAvailable = (ucMore == 1); } } } } void CSearchList::ProcessSearchAnswer(const uint8_t* in_packet, uint32_t size, bool optUTF8, uint32_t serverIP, uint16_t serverPort) { CMemFile packet(in_packet, size); uint32_t results = packet.ReadUInt32(); for (; results > 0; --results) { AddToList(new CSearchFile(packet, optUTF8, m_currentSearch, serverIP, serverPort), false); } } void CSearchList::ProcessUDPSearchAnswer(const CMemFile& packet, bool optUTF8, uint32_t serverIP, uint16_t serverPort) { AddToList(new CSearchFile(packet, optUTF8, m_currentSearch, serverIP, serverPort), false); } bool CSearchList::AddToList(CSearchFile* toadd, bool clientResponse) { const uint64 fileSize = toadd->GetFileSize(); // If filesize is 0, or file is too large for the network, drop it if ((fileSize == 0) || (fileSize > MAX_FILE_SIZE)) { AddDebugLogLineN(logSearch, CFormat(wxT("Dropped result with filesize %u: %s")) % fileSize % toadd->GetFileName()); delete toadd; return false; } // If the result was not the type the user wanted, drop it. if ((clientResponse == false) && !m_resultType.IsEmpty()) { if (GetFileTypeByName(toadd->GetFileName()) != m_resultType) { AddDebugLogLineN(logSearch, CFormat( wxT("Dropped result type %s != %s, file %s") ) % GetFileTypeByName(toadd->GetFileName()) % m_resultType % toadd->GetFileName()); delete toadd; return false; } } // Get, or implictly create, the map of results for this search CSearchResultList& results = m_results[toadd->GetSearchID()]; for (size_t i = 0; i < results.size(); ++i) { CSearchFile* item = results.at(i); if ((toadd->GetFileHash() == item->GetFileHash()) && (toadd->GetFileSize() == item->GetFileSize())) { AddDebugLogLineN(logSearch, CFormat(wxT("Received duplicate results for '%s' : %s")) % item->GetFileName() % item->GetFileHash().Encode()); // Add the child, possibly updating the parents filename. item->AddChild(toadd); Notify_Search_Update_Sources(item); return true; } } AddDebugLogLineN(logSearch, CFormat(wxT("Added new result '%s' : %s")) % toadd->GetFileName() % toadd->GetFileHash().Encode()); // New unique result, simply add and display. results.push_back(toadd); Notify_Search_Add_Result(toadd); return true; } const CSearchResultList& CSearchList::GetSearchResults(long searchID) const { ResultMap::const_iterator it = m_results.find(searchID); if (it != m_results.end()) { return it->second; } // TODO: Should we assert in this case? static CSearchResultList list; return list; } void CSearchList::AddFileToDownloadByHash(const CMD4Hash& hash, uint8 cat) { ResultMap::iterator it = m_results.begin(); for ( ; it != m_results.end(); ++it ) { CSearchResultList& list = it->second; for ( unsigned int i = 0; i < list.size(); ++i ) { if ( list[i]->GetFileHash() == hash ) { CoreNotify_Search_Add_Download( list[i], cat ); return; } } } } void CSearchList::StopSearch(bool globalOnly) { if (m_searchType == GlobalSearch) { m_currentSearch = -1; delete m_searchPacket; m_searchPacket = NULL; m_searchInProgress = false; // Order is crucial here: on wx_MSW an additional event can be generated during the stop. // So the packet has to be deleted first, so that OnGlobalSearchTimer() returns immediately // without calling StopGlobalSearch() again. m_searchTimer.Stop(); CoreNotify_Search_Update_Progress(0xffff); } else if (m_searchType == KadSearch && !globalOnly) { Kademlia::CSearchManager::StopSearch(m_currentSearch, false); m_currentSearch = -1; } } CSearchList::CMemFilePtr CSearchList::CreateSearchData(const CSearchParams& params, SearchType WXUNUSED(type), bool supports64bit, bool& packetUsing64bit) { // Count the number of used parameters unsigned int parametercount = 0; if ( !params.typeText.IsEmpty() ) ++parametercount; if ( params.minSize > 0 ) ++parametercount; if ( params.maxSize > 0 ) ++parametercount; if ( params.availability > 0 ) ++parametercount; if ( !params.extension.IsEmpty() ) ++parametercount; wxString typeText = params.typeText; if (typeText == ED2KFTSTR_ARCHIVE){ // eDonkeyHybrid 0.48 uses type "Pro" for archives files // www.filedonkey.com uses type "Pro" for archives files typeText = ED2KFTSTR_PROGRAM; } else if (typeText == ED2KFTSTR_CDIMAGE){ // eDonkeyHybrid 0.48 uses *no* type for iso/nrg/cue/img files // www.filedonkey.com uses type "Pro" for CD-image files typeText = ED2KFTSTR_PROGRAM; } // Must write parametercount - 1 parameter headers CMemFilePtr data(new CMemFile(100)); _astrParserErrors.Empty(); _SearchExpr.m_aExpr.Empty(); LexInit(params.searchString); int iParseResult = yyparse(); LexFree(); #ifdef __DEBUG__ AddLogLineNS(CFormat(wxT("Search parsing result for \"%s\": %i")) % params.searchString % iParseResult); #endif if (_astrParserErrors.GetCount() > 0) { for (unsigned int i=0; i < _astrParserErrors.GetCount(); ++i) { AddLogLineNS(CFormat(wxT("Error %u: %s\n")) % i % _astrParserErrors[i]); } return CMemFilePtr(NULL); } if (iParseResult != 0) { _astrParserErrors.Add(CFormat(wxT("Undefined error %i on search expression")) % iParseResult); return CMemFilePtr(NULL); } #ifdef __DEBUG__ wxString mes(wxT("Search expression:")); for (unsigned int i = 0; i < _SearchExpr.m_aExpr.GetCount(); i++) { mes << wxT(" ") << _SearchExpr.m_aExpr[i]; } AddLogLineNS(mes); AddLogLineNS(CFormat(wxT("Expression count: %i")) % _SearchExpr.m_aExpr.GetCount()); #endif parametercount += _SearchExpr.m_aExpr.GetCount(); #ifdef __DEBUG__ AddLogLineNS(CFormat(wxT("Parameters: %i")) % parametercount); #endif /* Leave the unicode comment there, please... */ CSearchExprTarget target(data.get(), true /*I assume everyone is unicoded */ ? utf8strRaw : utf8strNone, supports64bit, packetUsing64bit); unsigned int iParameterCount = 0; if (_SearchExpr.m_aExpr.GetCount() <= 1) { // lugdunummaster requested that searchs without OR or NOT operators, // and hence with no more expressions than the string itself, be sent // using a series of ANDed terms, intersecting the ANDs on the terms // (but prepending them) instead of putting the boolean tree at the start // like other searches. This type of search is supposed to take less load // on servers. Go figure. // // input: "a" AND min=1 AND max=2 // instead of: AND AND "a" min=1 max=2 // we use: AND "a" AND min=1 max=2 if (_SearchExpr.m_aExpr.GetCount() > 0) { if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } target.WriteMetaDataSearchParam(_SearchExpr.m_aExpr[0]); } if (!typeText.IsEmpty()) { if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } // Type is always ascii string target.WriteMetaDataSearchParamASCII(FT_FILETYPE, typeText); } if (params.minSize > 0) { if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } target.WriteMetaDataSearchParam(FT_FILESIZE, ED2K_SEARCH_OP_GREATER, params.minSize); } if (params.maxSize > 0){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } target.WriteMetaDataSearchParam(FT_FILESIZE, ED2K_SEARCH_OP_LESS, params.maxSize); } if (params.availability > 0){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } target.WriteMetaDataSearchParam(FT_SOURCES, ED2K_SEARCH_OP_GREATER, params.availability); } if (!params.extension.IsEmpty()){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } target.WriteMetaDataSearchParam(FT_FILEFORMAT, params.extension); } //#warning TODO - I keep this here, ready if we ever allow such searches... #if 0 if (complete > 0){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } target.WriteMetaDataSearchParam(FT_COMPLETE_SOURCES, ED2K_SEARCH_OP_GREATER, complete); } if (minBitrate > 0){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } target.WriteMetaDataSearchParam(type == KadSearch ? TAG_MEDIA_BITRATE : FT_ED2K_MEDIA_BITRATE, ED2K_SEARCH_OP_GREATER, minBitrate); } if (minLength > 0){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } target.WriteMetaDataSearchParam(type == KadSearch ? TAG_MEDIA_LENGTH : FT_ED2K_MEDIA_LENGTH, ED2K_SEARCH_OP_GREATER, minLength); } if (!codec.IsEmpty()){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } target.WriteMetaDataSearchParam(type == KadSearch ? TAG_MEDIA_CODEC : FT_ED2K_MEDIA_CODEC, codec); } if (!title.IsEmpty()){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } target.WriteMetaDataSearchParam(type == KadSearch ? TAG_MEDIA_TITLE : FT_ED2K_MEDIA_TITLE, title); } if (!album.IsEmpty()){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } target.WriteMetaDataSearchParam(type == KadSearch ? TAG_MEDIA_ALBUM : FT_ED2K_MEDIA_ALBUM, album); } if (!artist.IsEmpty()){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } target.WriteMetaDataSearchParam(type == KadSearch ? TAG_MEDIA_ARTIST : FT_ED2K_MEDIA_ARTIST, artist); } #endif // 0 // If this assert fails... we're seriously fucked up wxASSERT( iParameterCount == parametercount ); } else { if (!params.extension.IsEmpty()) { if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } } if (params.availability > 0) { if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } } if (params.maxSize > 0){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } } if (params.minSize > 0) { if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } } if (!typeText.IsEmpty()){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } } //#warning TODO - same as above... #if 0 if (complete > 0){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } } if (minBitrate > 0){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } } if (minLength > 0) { if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } } if (!codec.IsEmpty()){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } } if (!title.IsEmpty()){ if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } } if (!album.IsEmpty()) { if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } } if (!artist.IsEmpty()) { if (++iParameterCount < parametercount) { target.WriteBooleanAND(); } } #endif // 0 // As above, if this fails, we're seriously fucked up. wxASSERT( iParameterCount + _SearchExpr.m_aExpr.GetCount() == parametercount ); for (unsigned int j = 0; j < _SearchExpr.m_aExpr.GetCount(); ++j) { if (_SearchExpr.m_aExpr[j] == SEARCHOPTOK_AND) { target.WriteBooleanAND(); } else if (_SearchExpr.m_aExpr[j] == SEARCHOPTOK_OR) { target.WriteBooleanOR(); } else if (_SearchExpr.m_aExpr[j] == SEARCHOPTOK_NOT) { target.WriteBooleanNOT(); } else { target.WriteMetaDataSearchParam(_SearchExpr.m_aExpr[j]); } } if (!params.typeText.IsEmpty()) { // Type is always ASCII string target.WriteMetaDataSearchParamASCII(FT_FILETYPE, params.typeText); } if (params.minSize > 0) { target.WriteMetaDataSearchParam(FT_FILESIZE, ED2K_SEARCH_OP_GREATER, params.minSize); } if (params.maxSize > 0) { target.WriteMetaDataSearchParam(FT_FILESIZE, ED2K_SEARCH_OP_LESS, params.maxSize); } if (params.availability > 0) { target.WriteMetaDataSearchParam(FT_SOURCES, ED2K_SEARCH_OP_GREATER, params.availability); } if (!params.extension.IsEmpty()) { target.WriteMetaDataSearchParam(FT_FILEFORMAT, params.extension); } //#warning TODO - third and last warning of the same series. #if 0 if (complete > 0) { target.WriteMetaDataSearchParam(FT_COMPLETE_SOURCES, ED2K_SEARCH_OP_GREATER, pParams->uComplete); } if (minBitrate > 0) { target.WriteMetaDataSearchParam(type == KadSearch ? TAG_MEDIA_BITRATE : FT_ED2K_MEDIA_BITRATE, ED2K_SEARCH_OP_GREATER, minBitrate); } if (minLength > 0) { target.WriteMetaDataSearchParam(type == KadSearch ? TAG_MEDIA_LENGTH : FT_ED2K_MEDIA_LENGTH, ED2K_SEARCH_OP_GREATER, minLength); } if (!codec.IsEmpty()) { target.WriteMetaDataSearchParam(type == KadSearch ? TAG_MEDIA_CODEC : FT_ED2K_MEDIA_CODEC, codec); } if (!title.IsEmpty()) { target.WriteMetaDataSearchParam(type == KadSearch ? TAG_MEDIA_TITLE : FT_ED2K_MEDIA_TITLE, title); } if (!album.IsEmpty()) { target.WriteMetaDataSearchParam(type == KadSearch ? TAG_MEDIA_ALBUM : FT_ED2K_MEDIA_ALBUM, album); } if (!artist.IsEmpty()) { target.WriteMetaDataSearchParam(type == KadSearch ? TAG_MEDIA_ARTIST : FT_ED2K_MEDIA_ARTIST, artist); } #endif // 0 } // Packet ready to go. return data; } void CSearchList::KademliaSearchKeyword(uint32_t searchID, const Kademlia::CUInt128 *fileID, const wxString& name, uint64_t size, const wxString& type, uint32_t kadPublishInfo, const TagPtrList& taglist) { EUtf8Str eStrEncode = utf8strRaw; CMemFile temp(250); byte fileid[16]; fileID->ToByteArray(fileid); temp.WriteHash(CMD4Hash(fileid)); temp.WriteUInt32(0); // client IP temp.WriteUInt16(0); // client port // write tag list unsigned int uFilePosTagCount = temp.GetPosition(); uint32 tagcount = 0; temp.WriteUInt32(tagcount); // dummy tag count, will be filled later // standard tags CTagString tagName(FT_FILENAME, name); tagName.WriteTagToFile(&temp, eStrEncode); tagcount++; CTagInt64 tagSize(FT_FILESIZE, size); tagSize.WriteTagToFile(&temp, eStrEncode); tagcount++; if (!type.IsEmpty()) { CTagString tagType(FT_FILETYPE, type); tagType.WriteTagToFile(&temp, eStrEncode); tagcount++; } // Misc tags (bitrate, etc) for (TagPtrList::const_iterator it = taglist.begin(); it != taglist.end(); ++it) { (*it)->WriteTagToFile(&temp,eStrEncode); tagcount++; } temp.Seek(uFilePosTagCount, wxFromStart); temp.WriteUInt32(tagcount); temp.Seek(0, wxFromStart); CSearchFile *tempFile = new CSearchFile(temp, (eStrEncode == utf8strRaw), searchID, 0, 0, wxEmptyString, true); tempFile->SetKadPublishInfo(kadPublishInfo); AddToList(tempFile); } void CSearchList::UpdateSearchFileByHash(const CMD4Hash& hash) { for (ResultMap::iterator it = m_results.begin(); it != m_results.end(); ++it) { CSearchResultList& results = it->second; for (size_t i = 0; i < results.size(); ++i) { CSearchFile* item = results.at(i); if (hash == item->GetFileHash()) { // This covers only parent items, // child items have to be updated separately. Notify_Search_Update_Sources(item); } } } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SearchList.h0000644000175000017500000001736512611472361020520 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SEARCHLIST_H #define SEARCHLIST_H #include "Timer.h" // Needed for CTimer #include "ObservableQueue.h" // Needed for CQueueObserver #include "SearchFile.h" // Needed for CSearchFile #include // Do_not_auto_remove (lionel's Mac, 10.3) class CMemFile; class CMD4Hash; class CPacket; class CServer; class CSearchFile; namespace Kademlia { class CUInt128; } enum SearchType { LocalSearch, GlobalSearch, KadSearch }; typedef std::vector CSearchResultList; class CSearchList : public wxEvtHandler { public: //! Structure used to pass search-parameters. struct CSearchParams { /** Prevents accidential use of uninitialized variables. */ CSearchParams() { minSize = maxSize = availability = 0; } //! The actual string to search for. wxString searchString; //! The type of files to search for (may be empty), one of ED2KFTSTR_* wxString typeText; //! The filename extension. May be empty. wxString extension; //! The smallest filesize in bytes to accept, zero for any. uint64_t minSize; //! The largest filesize in bytes to accept, zero for any. uint64_t maxSize; //! The minumum available (source-count), zero for any. uint32_t availability; }; /** Constructor. */ CSearchList(); /** Frees any remaining search-results. */ ~CSearchList(); /** * Starts a new search. * * @param searchID The ID of the search, which may be modified. * @param type The type of search, see SearchType. * @param params The search parameters, see CSearchParams. * @return An empty string on success, otherwise an error-message. */ wxString StartNewSearch(uint32* searchID, SearchType type, const CSearchParams& params); /** Stops the current search (global or Kad), if any is in progress. */ void StopSearch(bool globalOnly = false); /** Returns the completion percentage of the current search. */ uint32 GetSearchProgress() const; /** This function is called once the local (ed2k) search has ended. */ void LocalSearchEnd(); /** * Returns the list of results for the specified search. * * If the search is not valid, an empty list is returned. */ const CSearchResultList& GetSearchResults(long searchID) const; /** Removes all results for the specified search. */ void RemoveResults(long searchID); /** Finds the search-result (by hash) and downloads it in the given category. */ void AddFileToDownloadByHash(const CMD4Hash& hash, uint8 category = 0); /** * Processes a list of shared files from a client. * * @param packet The raw packet received from the client. * @param size the length of the packet. * @param sender The sender of the packet. * @param moreResultsAvailable Set to a value specifying if more results are available. * @param directory The directory containing the shared files. */ void ProcessSharedFileList(const byte* packet, uint32 size, CUpDownClient* sender, bool* moreResultsAvailable, const wxString& directory); /** * Processes a search-result sent via TCP from the local server. All results are added. * * @param packet The packet containing one or more search-results. * @param size the length of the packet. * @param optUTF8 Specifies if the server supports UTF8. * @param serverIP The IP of the server sending the results. * @param serverPort The Port of the server sending the results. */ void ProcessSearchAnswer(const uint8_t* packet, uint32_t size, bool optUTF8, uint32_t serverIP, uint16_t serverPort); /** * Processes a search-result sent via UDP. Only one result is read from the packet. * * @param packet The packet containing one or more search-results. * @param optUTF8 Specifies if the server supports UTF8. * @param serverIP The IP of the server sending the results. * @param serverPort The Port of the server sending the results. */ void ProcessUDPSearchAnswer(const CMemFile& packet, bool optUTF8, uint32 serverIP, uint16 serverPort); /** * Adds a result in the form of a kad search-keyword to the specified result-list. * * @param searchID The search to which this result belongs. * @param fileID The hash of the result-file. * @param name The filename of the result. * @param size The filesize of the result. * @param type The filetype of the result (TODO: Not used?) * @param kadPublishInfo The kademlia publish information of the result. * @param taglist List of additional tags associated with the search-result. */ void KademliaSearchKeyword(uint32_t searchID, const Kademlia::CUInt128 *fileID, const wxString& name, uint64_t size, const wxString& type, uint32_t kadPublishInfo, const TagPtrList& taglist); /** Update a certain search result in all lists */ void UpdateSearchFileByHash(const CMD4Hash& hash); /** Mark current KAD search as finished */ void SetKadSearchFinished() { m_KadSearchFinished = true; } private: /** Event-handler for global searches. */ void OnGlobalSearchTimer(CTimerEvent& evt); /** * Adds the specified file to the current search's results. * * @param toadd The result to add. * @param clientResponse Is the result sent by a client (shared-files list). * @return True if the results were added, false otherwise. * * Note that this function takes ownership of the CSearchFile object, * regardless of whenever or not it was actually added to the results list. */ bool AddToList(CSearchFile* toadd, bool clientResponse = false); //! This auto-pointer is used to safely prevent leaks. typedef std::auto_ptr CMemFilePtr; /** Create a basic search-packet for the given search-type. */ CMemFilePtr CreateSearchData(const CSearchParams& params, SearchType type, bool supports64bit, bool& packetUsing64bit); //! Timer used for global search intervals. CTimer m_searchTimer; //! The current search-type, regarding the last/current search. SearchType m_searchType; //! Specifies if a search is being performed. bool m_searchInProgress; //! The ID of the current search. long m_currentSearch; //! The current packet used for searches. CPacket* m_searchPacket; //! Does the current search packet contain 64bit values? bool m_64bitSearchPacket; //! If the current search is a KAD search this signals if it is finished. bool m_KadSearchFinished; //! Queue of servers to ask when doing global searches. //! TODO: Replace with 'cookie' system. CQueueObserver m_serverQueue; //! Shorthand for the map of results (key is a SearchID). typedef std::map ResultMap; //! Map of all search-results added. ResultMap m_results; //! Contains the results type desired in the current search. //! If not empty, results of different types are filtered. wxString m_resultType; DECLARE_EVENT_TABLE() }; #endif // SEARCHLIST_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SearchListCtrl.cpp0000644000175000017500000006745712611472361021707 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "SearchListCtrl.h" // Interface declarations #include #include "amule.h" // Needed for theApp #include "KnownFileList.h" // Needed for CKnownFileList #include "SearchList.h" // Needed for CSearchFile #include "SearchDlg.h" // Needed for CSearchDlg #include "amuleDlg.h" // Needed for CamuleDlg #include "muuli_wdr.h" // Needed for clientImages #include "Preferences.h" // Needed for thePrefs #include "GuiEvents.h" // Needed for CoreNotify_Search_Add_Download #include "MuleColour.h" BEGIN_EVENT_TABLE(CSearchListCtrl, CMuleListCtrl) EVT_LIST_ITEM_RIGHT_CLICK(-1, CSearchListCtrl::OnRightClick) EVT_LIST_COL_CLICK( -1, CSearchListCtrl::OnColumnLClick) EVT_LIST_COL_END_DRAG( -1, CSearchListCtrl::OnColumnResize) EVT_MENU( MP_GETED2KLINK, CSearchListCtrl::OnPopupGetUrl) EVT_MENU( MP_RAZORSTATS, CSearchListCtrl::OnRazorStatsCheck) EVT_MENU( MP_SEARCHRELATED, CSearchListCtrl::OnRelatedSearch) EVT_MENU( MP_MARK_AS_KNOWN, CSearchListCtrl::OnMarkAsKnown) EVT_MENU( MP_RESUME, CSearchListCtrl::OnPopupDownload) EVT_MENU_RANGE( MP_ASSIGNCAT, MP_ASSIGNCAT + 99, CSearchListCtrl::OnPopupDownload ) EVT_LIST_ITEM_ACTIVATED( -1, CSearchListCtrl::OnItemActivated) END_EVENT_TABLE() std::list CSearchListCtrl::s_lists; enum SearchListColumns { ID_SEARCH_COL_NAME = 0, ID_SEARCH_COL_SIZE, ID_SEARCH_COL_SOURCES, ID_SEARCH_COL_TYPE, ID_SEARCH_COL_FILEID, ID_SEARCH_COL_STATUS, ID_SEARCH_COL_DIRECTORY }; CSearchListCtrl::CSearchListCtrl( wxWindow *parent, wxWindowID winid, const wxPoint &pos, const wxSize &size, long style, const wxValidator &validator, const wxString &name) : CMuleListCtrl(parent, winid, pos, size, style | wxLC_OWNERDRAW, validator, name), m_filterKnown(false), m_invert(false), m_filterEnabled(false) { // Setting the sorter function. SetSortFunc( SortProc ); InsertColumn( ID_SEARCH_COL_NAME, _("File Name"), wxLIST_FORMAT_LEFT, 500, wxT("N") ); InsertColumn( ID_SEARCH_COL_SIZE, _("Size"), wxLIST_FORMAT_LEFT, 100, wxT("Z") ); InsertColumn( ID_SEARCH_COL_SOURCES, _("Sources"), wxLIST_FORMAT_LEFT, 50, wxT("u") ); InsertColumn( ID_SEARCH_COL_TYPE, _("Type"), wxLIST_FORMAT_LEFT, 65, wxT("Y") ); InsertColumn( ID_SEARCH_COL_FILEID, _("FileID"), wxLIST_FORMAT_LEFT, 280, wxT("I") ); InsertColumn( ID_SEARCH_COL_STATUS, _("Status"), wxLIST_FORMAT_LEFT, 100, wxT("S") ); InsertColumn( ID_SEARCH_COL_DIRECTORY, _("Directories"), wxLIST_FORMAT_LEFT, 280, wxT("D") ); // I would have prefered "Directory" but this is already translated m_nResultsID = 0; // Only load settings for first list, otherwise sync with current lists if ( s_lists.empty() ) { // Set the name to enable loading of settings SetTableName( wxT("Search") ); LoadSettings(); // Unset the name to avoid the settings getting saved every time a list is closed SetTableName( wxEmptyString ); } else { // Sync this list with one of the others SyncLists( s_lists.front(), this ); } // Add the list so that it will be synced with the other lists s_lists.push_back( this ); } wxString CSearchListCtrl::GetOldColumnOrder() const { return wxT("N,Z,u,Y,I,S"); } CSearchListCtrl::~CSearchListCtrl() { std::list::iterator it = std::find( s_lists.begin(), s_lists.end(), this ); if ( it != s_lists.end() ) s_lists.erase( it ); // We only save the settings if the last list was closed if ( s_lists.empty() ) { // In order to get the settings saved, we need to set the name SetTableName( wxT("Search") ); } } void CSearchListCtrl::AddResult(CSearchFile* toshow) { wxCHECK_RET(toshow->GetSearchID() == m_nResultsID, wxT("Wrong search-id for result-list")); const wxUIntPtr toshowdata = reinterpret_cast(toshow); CSearchFile* parent = toshow->GetParent(); // Check if the result should be shown if (FindItem(-1, toshowdata) != -1) { return; } else if (parent && !parent->ShowChildren()) { return; } else if (!IsFiltered(toshow)) { if (toshow->HasChildren() && toshow->ShowChildren()) { // Only filter the parent if none of the children are shown. bool foundChild = false; const CSearchResultList& children = toshow->GetChildren(); for (size_t i = 0; i < children.size(); ++i) { if (IsFiltered(children.at(i))) { foundChild = true; break; } } if (!foundChild) { // No children left, and the parent is filtered. m_filteredOut.push_back(toshow); return; } } else { m_filteredOut.push_back(toshow); return; } } // Insert the item before the item found by the search long insertPos; if (parent) { insertPos = FindItem(-1, (wxUIntPtr)parent); if (insertPos == -1) { wxFAIL; insertPos = GetItemCount(); } else { insertPos++; } } else { insertPos = GetInsertPos(toshowdata); } long newid = InsertItem(insertPos, toshow->GetFileName().GetPrintable()); // Sanity checks to ensure that results/children are properly positioned. #ifdef __WXDEBUG__ { if (newid > 0) { CSearchFile* before = reinterpret_cast(GetItemData(newid - 1)); wxASSERT(before); if (parent) { wxASSERT((before->GetParent() == parent) || (before == parent)); } else { wxASSERT(before->GetParent() != toshow); } } if ((int)newid < GetItemCount() - 1) { CSearchFile* after = reinterpret_cast(GetItemData(newid + 1)); wxASSERT(after); if (parent) { wxASSERT((after->GetParent() == parent) || (!after->GetParent())); } else { wxASSERT((after->GetParent() == toshow) || (!after->GetParent())); } } } #endif SetItemPtrData(newid, toshowdata); // Filesize SetItem(newid, ID_SEARCH_COL_SIZE, CastItoXBytes( toshow->GetFileSize() ) ); // Source count wxString temp = CFormat(wxT("%d")) % toshow->GetSourceCount(); if (toshow->GetCompleteSourceCount()) { temp += CFormat(wxT(" (%d)")) % toshow->GetCompleteSourceCount(); } if (toshow->GetClientsCount()) { temp += CFormat(wxT(" [%d]")) % toshow->GetClientsCount(); } #if defined(__DEBUG__) && !defined(CLIENT_GUI) if (toshow->GetKadPublishInfo() == 0) { temp += wxT(" | -"); } else { temp += CFormat(wxT(" | N:%u, P:%u, T:%0.2f")) % ((toshow->GetKadPublishInfo() & 0xFF000000) >> 24) % ((toshow->GetKadPublishInfo() & 0x00FF0000) >> 16) % ((toshow->GetKadPublishInfo() & 0x0000FFFF) / 100.0); } #endif SetItem( newid, ID_SEARCH_COL_SOURCES, temp ); // File-type SetItem( newid, ID_SEARCH_COL_TYPE, GetFiletypeByName( toshow->GetFileName() ) ); // File-hash SetItem(newid, ID_SEARCH_COL_FILEID, toshow->GetFileHash().Encode() ); // File status SetItem(newid, ID_SEARCH_COL_STATUS, DetermineStatusPrintable(toshow)); // Directory where file is located (has a value when search file comes from a "view shared files" request) SetItem(newid, ID_SEARCH_COL_DIRECTORY, toshow->GetDirectory()); // Set the color of the item UpdateItemColor( newid ); } void CSearchListCtrl::RemoveResult(CSearchFile* toremove) { ShowChildren(toremove, false); long index = FindItem(-1, reinterpret_cast(toremove)); if (index != -1) { DeleteItem(index); } else { ResultList::iterator it = std::find(m_filteredOut.begin(), m_filteredOut.end(), toremove); if ( it != m_filteredOut.end()) { m_filteredOut.erase(it); } } } void CSearchListCtrl::UpdateResult(CSearchFile* toupdate) { long index = FindItem(-1, reinterpret_cast(toupdate)); if (index != -1) { // Update the filename, which may be changed in case of multiple variants. SetItem(index, ID_SEARCH_COL_NAME, toupdate->GetFileName().GetPrintable()); wxString temp = CFormat(wxT("%d")) % toupdate->GetSourceCount(); if (toupdate->GetCompleteSourceCount()) { temp += CFormat(wxT(" (%d)")) % toupdate->GetCompleteSourceCount(); } if (toupdate->GetClientsCount()) { temp += CFormat(wxT(" [%d]")) % toupdate->GetClientsCount(); } #if defined(__DEBUG__) && !defined(CLIENT_GUI) if (toupdate->GetKadPublishInfo() == 0) { temp += wxT(" | -"); } else { temp += CFormat(wxT(" | N:%u, P:%u, T:%0.2f")) % ((toupdate->GetKadPublishInfo() & 0xFF000000) >> 24) % ((toupdate->GetKadPublishInfo() & 0x00FF0000) >> 16) % ((toupdate->GetKadPublishInfo() & 0x0000FFFF) / 100.0); } #endif SetItem(index, ID_SEARCH_COL_SOURCES, temp); SetItem(index, ID_SEARCH_COL_STATUS, DetermineStatusPrintable(toupdate)); UpdateItemColor(index); // Deletions of items causes rather large amount of flicker, so to // avoid this, we resort the list to ensure correct ordering. if (!IsItemSorted(index)) { SortList(); } } } void CSearchListCtrl::UpdateItemColor(long index) { wxListItem item; item.SetId( index ); item.SetColumn( ID_SEARCH_COL_SIZE ); item.SetMask( wxLIST_MASK_STATE | wxLIST_MASK_TEXT | wxLIST_MASK_IMAGE | wxLIST_MASK_DATA | wxLIST_MASK_WIDTH | wxLIST_MASK_FORMAT); if (GetItem(item)) { CMuleColour newcol(wxSYS_COLOUR_WINDOWTEXT); CSearchFile* file = reinterpret_cast(GetItemData(index)); int red = newcol.Red(); int green = newcol.Green(); int blue = newcol.Blue(); switch (file->GetDownloadStatus()) { case CSearchFile::DOWNLOADED: // File has already been downloaded. Mark as green. green = 255; break; case CSearchFile::QUEUED: // File is downloading. case CSearchFile::QUEUEDCANCELED: // File is downloading and has been canceled before. // Mark as red red = 255; break; case CSearchFile::CANCELED: // File has been canceled. Mark as magenta. red = 255; blue = 255; break; default: // File is new, colour after number of files blue += file->GetSourceCount() * 5; if ( blue > 255 ) { blue = 255; } } // don't forget to set the item data back... wxListItem newitem; newitem.SetId( index ); newitem.SetTextColour( wxColour( red, green, blue ) ); SetItem( newitem ); } } void CSearchListCtrl::ShowResults( long ResultsID ) { DeleteAllItems(); m_nResultsID = ResultsID; if (ResultsID) { const CSearchResultList& list = theApp->searchlist->GetSearchResults(ResultsID); for (unsigned int i = 0; i < list.size(); ++i) { AddResult( list[i] ); } } } wxUIntPtr CSearchListCtrl::GetSearchId() { return m_nResultsID; } void CSearchListCtrl::SetFilter(const wxString& regExp, bool invert, bool filterKnown) { if (regExp.IsEmpty()) { // Show everything m_filterText = wxT(".*"); } else { m_filterText = regExp; } m_filter.Compile(m_filterText, wxRE_DEFAULT | wxRE_ICASE); m_filterKnown = filterKnown; m_invert = invert; if (m_filterEnabled) { // Swap the list of filtered results so we can freely add new items to the list ResultList curFiltered; std::swap(curFiltered, m_filteredOut); // Filter items already on the list for (int i = 0; i < GetItemCount();) { CSearchFile* file = reinterpret_cast(GetItemData(i)); if (IsFiltered(file)) { ++i; } else { m_filteredOut.push_back(file); DeleteItem(i); } } // Check the previously filtered items. ResultList::iterator it = curFiltered.begin(); for (; it != curFiltered.end(); ++it) { if (IsFiltered(*it)) { AddResult(*it); } else { m_filteredOut.push_back(*it); } } } } void CSearchListCtrl::EnableFiltering(bool enabled) { if (enabled != m_filterEnabled) { m_filterEnabled = enabled; if (enabled) { SetFilter(m_filterText, m_invert, m_filterKnown); } else { ResultList::iterator it = m_filteredOut.begin(); for (; it != m_filteredOut.end(); ++it) { AddResult(*it); } m_filteredOut.clear(); } } } size_t CSearchListCtrl::GetHiddenItemCount() const { return m_filteredOut.size(); } bool CSearchListCtrl::IsFiltered(const CSearchFile* file) { // By default, everything is displayed bool result = true; if (m_filterEnabled && m_filter.IsValid()) { result = m_filter.Matches(file->GetFileName().GetPrintable()); result = ((result && !m_invert) || (!result && m_invert)); if (result && m_filterKnown) { result = file->GetDownloadStatus() == CSearchFile::NEW; } } return result; } int CSearchListCtrl::SortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData) { CSearchFile* file1 = reinterpret_cast(item1); CSearchFile* file2 = reinterpret_cast(item2); // Modifies the result, 1 for ascending, -1 for decending int modifier = (sortData & CMuleListCtrl::SORT_DES) ? -1 : 1; bool alternate = (sortData & CMuleListCtrl::SORT_ALT) != 0; // Decide if which should files we should sort by. wxUIntPtr parent1 = reinterpret_cast(file1->GetParent()); wxUIntPtr parent2 = reinterpret_cast(file2->GetParent()); wxUIntPtr filePtr1 = reinterpret_cast(file1); wxUIntPtr filePtr2 = reinterpret_cast(file2); if (parent1 && parent2) { if (parent1 != parent2) { return SortProc(parent1, parent2, sortData); } } else if (parent1) { if (parent1 == filePtr2) { return 1; } else { return SortProc(parent1, filePtr2, sortData); } } else if (parent2) { if (parent2 == filePtr1) { return -1; } else { return SortProc(filePtr1, parent2, sortData); } } int result = 0; switch (sortData & CMuleListCtrl::COLUMN_MASK) { // Sort by filename case ID_SEARCH_COL_NAME: result = CmpAny(file1->GetFileName(), file2->GetFileName()); break; // Sort file-size case ID_SEARCH_COL_SIZE: result = CmpAny( file1->GetFileSize(), file2->GetFileSize() ); break; // Sort by sources case ID_SEARCH_COL_SOURCES: { int cmp = CmpAny( file1->GetSourceCount(), file2->GetSourceCount() ); int cmp2 = CmpAny( file1->GetCompleteSourceCount(), file2->GetCompleteSourceCount() ); if ( alternate ) { // Swap criterias int temp = cmp2; cmp2 = cmp; cmp = temp; } if ( cmp == 0 ) { cmp = cmp2; } result = cmp; break; } // Sort by file-types case ID_SEARCH_COL_TYPE: { result = GetFiletypeByName(file1->GetFileName()).Cmp(GetFiletypeByName(file2->GetFileName())); if (result == 0) { // Same file-type, sort by extension result = CmpAny(file1->GetFileName().GetExt(), file2->GetFileName().GetExt()); } break; } // Sort by file-hash case ID_SEARCH_COL_FILEID: result = CmpAny(file2->GetFileHash(), file1->GetFileHash()); break; // Sort by file status case ID_SEARCH_COL_STATUS: result = CmpAny(DetermineStatusPrintable(file2), DetermineStatusPrintable(file1)); break; // Sort by directory case ID_SEARCH_COL_DIRECTORY: result = CmpAny(file1->GetDirectory(), file2->GetDirectory()); if (result == 0) { // if equal sort by name result = CmpAny(file1->GetFileName(), file2->GetFileName()); } break; } return modifier * result; } void CSearchListCtrl::SetSorting(unsigned column, unsigned order) { Freeze(); // First collapse all parent items // Backward order means our index won't be influenced by items getting collapsed. for (int i = GetItemCount(); i--;) { CSearchFile* file = reinterpret_cast(GetItemData(i)); if (file->ShowChildren()) { ShowChildren(file, false); } } // Then do the sorting CMuleListCtrl::SetSorting(column, order); Thaw(); } void CSearchListCtrl::SyncLists( CSearchListCtrl* src, CSearchListCtrl* dst ) { wxCHECK_RET(src && dst, wxT("NULL argument in SyncLists")); // Column widths for ( int i = 0; i < src->GetColumnCount(); i++ ) { // We do this check since just setting the width causes a redraw if ( dst->GetColumnWidth( i ) != src->GetColumnWidth( i ) ) { dst->SetColumnWidth( i, src->GetColumnWidth( i ) ); } } // Sync sorting unsigned column = src->GetSortColumn(); unsigned order = src->GetSortOrder(); if (column != dst->GetSortColumn() || order != dst->GetSortOrder()) { dst->SetSorting(column, order); } } void CSearchListCtrl::SyncOtherLists(CSearchListCtrl *src) { std::list::iterator it; for (it = s_lists.begin(); it != s_lists.end(); ++it) { if ((*it) != src) { SyncLists( src, *it ); } } } void CSearchListCtrl::OnRightClick(wxListEvent& event) { CheckSelection(event); if (GetSelectedItemCount()) { // Create the popup-menu wxMenu menu(_("File")); menu.Append(MP_RESUME, _("Download")); wxMenu* cats = new wxMenu(_("Category")); cats->Append(MP_ASSIGNCAT, _("Main")); for (unsigned i = 1; i < theApp->glob_prefs->GetCatCount(); i++) { cats->Append(MP_ASSIGNCAT + i, theApp->glob_prefs->GetCategory(i)->title); } menu.Append(MP_MENU_CATS, _("Download in category"), cats); menu.AppendSeparator(); const wxString & statsServer = thePrefs::GetStatsServerName(); if (!statsServer.IsEmpty()) { menu.Append(MP_RAZORSTATS, CFormat(_("Get %s for this file")) % statsServer); menu.AppendSeparator(); } menu.Append(MP_SEARCHRELATED, _("Search related files (eD2k, local server)")); menu.AppendSeparator(); //#warning Uncomment this here to test the MP_MARK_AS_KNOWN feature. Beware! You are on your own here, this might break "known.met" #if 0 menu.Append(MP_MARK_AS_KNOWN, _("Mark as known file")); menu.AppendSeparator(); #endif menu.Append(MP_GETED2KLINK, _("Copy eD2k link to clipboard")); // These should only be enabled for single-selections bool enable = (GetSelectedItemCount() == 1); menu.Enable(MP_GETED2KLINK, enable); menu.Enable(MP_MENU_CATS, (theApp->glob_prefs->GetCatCount() > 1)); PopupMenu(&menu, event.GetPoint()); } else { event.Skip(); } } void CSearchListCtrl::OnColumnLClick( wxListEvent& event ) { // Let the real event handler do its work first CMuleListCtrl::OnColumnLClick( event ); SyncOtherLists( this ); } void CSearchListCtrl::OnColumnResize( wxListEvent& WXUNUSED(event) ) { SyncOtherLists( this ); } void CSearchListCtrl::OnPopupGetUrl( wxCommandEvent& WXUNUSED(event) ) { wxString URIs; long index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while (index != -1) { CSearchFile* file = reinterpret_cast(GetItemData(index)); URIs += theApp->CreateED2kLink( file ) + wxT("\n"); index = GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } if (!URIs.IsEmpty()) { theApp->CopyTextToClipboard( URIs.RemoveLast() ); } } void CSearchListCtrl::OnRazorStatsCheck( wxCommandEvent& WXUNUSED(event) ) { int item = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); if (item == -1) { return; } CSearchFile* file = reinterpret_cast(GetItemData(item)); theApp->amuledlg->LaunchUrl(thePrefs::GetStatsServerURL() + file->GetFileHash().Encode()); } void CSearchListCtrl::OnRelatedSearch( wxCommandEvent& WXUNUSED(event) ) { int item = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); if (item == -1) { return; } CSearchFile* file = reinterpret_cast(GetItemData(item)); theApp->searchlist->StopSearch(true); theApp->amuledlg->m_searchwnd->ResetControls(); CastByID( IDC_SEARCHNAME, theApp->amuledlg->m_searchwnd, wxTextCtrl )-> SetValue(wxT("related::") + file->GetFileHash().Encode()); theApp->amuledlg->m_searchwnd->StartNewSearch(); } void CSearchListCtrl::OnMarkAsKnown( wxCommandEvent& WXUNUSED(event) ) { #ifndef CLIENT_GUI long index = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); while (index > -1) { CSearchFile *searchFile = reinterpret_cast(GetItemData(index)); CKnownFile *knownFile(new CKnownFile(*searchFile)); theApp->knownfiles->SafeAddKFile(knownFile); index = GetNextItem(index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); } #endif } void CSearchListCtrl::OnPopupDownload(wxCommandEvent& event) { if (event.GetId() == MP_RESUME) { // Via the "Download" menu-item, use category specified in drop-down menu DownloadSelected(); } else { // Via an "Download in category" item DownloadSelected(event.GetId() - MP_ASSIGNCAT); } } void CSearchListCtrl::OnItemActivated(wxListEvent& event) { CSearchFile* file = reinterpret_cast(GetItemData(event.GetIndex())); if (file->HasChildren()) { ShowChildren(file, !file->ShowChildren()); } else { DownloadSelected(); } } bool CSearchListCtrl::AltSortAllowed(unsigned column) const { switch (column) { case ID_SEARCH_COL_SOURCES: return true; default: return false; } } void CSearchListCtrl::DownloadSelected(int category) { FindWindowById(IDC_SDOWNLOAD)->Enable(FALSE); // Either the "Download" menu-item, the download-button, double-click or enter if (category == -1) { // Defaults to main category category = 0; if (CastByID(IDC_EXTENDEDSEARCHCHECK, NULL, wxCheckBox)->GetValue()) { category = CastByID(ID_AUTOCATASSIGN, NULL, wxChoice)->GetSelection(); } } // Process all selections long index = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); while (index > -1) { CSearchFile* file = reinterpret_cast(GetItemData(index)); CoreNotify_Search_Add_Download(file, category); index = GetNextItem(index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); } // Listcontrol gets updated by notification when download is started } const wxBrush& GetBrush(wxSystemColour index) { return CMuleColour(index).GetBrush(); } void CSearchListCtrl::OnDrawItem( int item, wxDC* dc, const wxRect& rect, const wxRect& rectHL, bool highlighted) { CSearchFile* file = reinterpret_cast(GetItemData(item)); // Define text-color and background if (highlighted) { if (GetFocus()) { dc->SetBackground(GetBrush(wxSYS_COLOUR_HIGHLIGHT)); dc->SetTextForeground(CMuleColour(wxSYS_COLOUR_HIGHLIGHTTEXT)); } else { dc->SetBackground(GetBrush(wxSYS_COLOUR_BTNSHADOW)); dc->SetTextForeground(CMuleColour(wxSYS_COLOUR_HIGHLIGHTTEXT)); } } else { dc->SetBackground(GetBrush(wxSYS_COLOUR_LISTBOX)); dc->SetTextForeground(CMuleColour(wxSYS_COLOUR_WINDOWTEXT)); } // Define the border of the drawn area if (highlighted) { dc->SetPen(*(wxThePenList->FindOrCreatePen(CMuleColour(dc->GetBackground().GetColour()).Blend(65), 1, wxSOLID))); } else { dc->SetPen(*wxTRANSPARENT_PEN); dc->SetTextForeground(GetItemTextColour(item)); } // Clear the background, not done automatically since the drawing is buffered. dc->SetBrush( dc->GetBackground() ); dc->DrawRectangle( rectHL.x, rectHL.y, rectHL.width, rectHL.height ); // Various constant values we use const int iTextOffset = ( rect.GetHeight() - dc->GetCharHeight() ) / 2; const int iOffset = 4; const int treeOffset = 11; const int treeCenter = 6; bool tree_show = false; wxRect cur_rec(iOffset, rect.y, 0, rect.height ); for (int i = 0; i < GetColumnCount(); i++) { wxListItem listitem; GetColumn(i, listitem); if ( listitem.GetWidth() > 0 ) { cur_rec.width = listitem.GetWidth() - 2*iOffset; // Make a copy of the current rectangle so we can apply specific tweaks wxRect target_rec = cur_rec; // will ensure that text is about in the middle ;) target_rec.y += iTextOffset; if (i == 0) { if (file->HasChildren() || file->GetParent()) { tree_show = (listitem.GetWidth() > 0); target_rec.x += treeOffset; target_rec.width -= treeOffset; // Children are indented a bit if (file->GetParent()) { target_rec.x += 4; target_rec.width -= 4; } } // Check if the rating icon should be drawn if (file->HasRating()) { int image = Client_InvalidRating_Smiley + file->UserRating() - 1; int imgWidth = 16; theApp->amuledlg->m_imagelist.Draw(image, *dc, target_rec.GetX(), target_rec.GetY() - 1, wxIMAGELIST_DRAW_TRANSPARENT); // Move the text past the icon. target_rec.x += imgWidth + 4; target_rec.width -= imgWidth + 4; } } wxListItem cellitem; cellitem.SetColumn(i); cellitem.SetId(item); // Force clipper (clip 2 px more than the rectangle from the right side) wxDCClipper clipper(*dc, target_rec.x, target_rec.y, target_rec.width - 2, target_rec.height); if (GetItem(cellitem)) { dc->DrawText(cellitem.GetText(), target_rec.GetX(), target_rec.GetY()); } else { dc->DrawText(wxT("GetItem failed!"), target_rec.GetX(), target_rec.GetY()); } // Increment to the next column cur_rec.x += listitem.GetWidth(); } } // Draw tree last so it draws over selected and focus (looks better) if (tree_show) { // Gather some information const bool notLast = (item + 1 < GetItemCount()); const bool notFirst = (item != 0); const bool hasNext = notLast && reinterpret_cast(GetItemData(item + 1))->GetParent(); const int middle = cur_rec.y + ( cur_rec.height + 1 ) / 2; // Set up a new pen for drawing the tree dc->SetPen( *(wxThePenList->FindOrCreatePen(dc->GetTextForeground(), 1, wxSOLID)) ); if (file->GetParent()) { // Draw the line to the filename dc->DrawLine(treeCenter, middle, treeOffset + 4, middle); // Draw the line to the child node if (hasNext) { dc->DrawLine(treeCenter, middle, treeCenter, cur_rec.y + cur_rec.height + 1); } // Draw the line back up to parent node if (notFirst) { dc->DrawLine(treeCenter, middle, treeCenter, cur_rec.y - 1); } } else if (file->HasChildren()) { if (file->ShowChildren()) { // Draw empty circle dc->SetBrush(*wxTRANSPARENT_BRUSH); } else { dc->SetBrush(*(wxTheBrushList->FindOrCreateBrush(GetItemTextColour(item)))); } dc->DrawCircle( treeCenter, middle, 3 ); // Draw the line to the child node if there are any children if (hasNext && file->ShowChildren()) { dc->DrawLine(treeCenter, middle + 3, treeCenter, cur_rec.y + cur_rec.height + 1); } } } // Sanity checks to ensure that results/children are properly positioned. #ifdef __WXDEBUG__ { CSearchFile* parent = file->GetParent(); if (item > 0) { CSearchFile* before = reinterpret_cast(GetItemData(item - 1)); wxASSERT(before); if (parent) { wxASSERT((before->GetParent() == parent) || (before == parent)); } else { wxASSERT(before->GetParent() != file); } } if (item < GetItemCount() - 1) { CSearchFile* after = reinterpret_cast(GetItemData(item + 1)); wxASSERT(after); if (parent) { wxASSERT((after->GetParent() == parent) || (!after->GetParent())); } else { wxASSERT((after->GetParent() == file) || (!after->GetParent())); } } } #endif } void CSearchListCtrl::ShowChildren(CSearchFile* file, bool show) { Freeze(); file->SetShowChildren(show); const CSearchResultList& results = file->GetChildren(); for (size_t i = 0; i < results.size(); ++i) { if (show) { AddResult(results[i]); } else { RemoveResult(results[i]); } } Thaw(); } wxString CSearchListCtrl::GetTTSText(unsigned item) const { return GetItemText(item); } wxString CSearchListCtrl::DetermineStatusPrintable(CSearchFile *toshow) { switch (toshow->GetDownloadStatus()) { case CSearchFile::DOWNLOADED: // File has already been downloaded. return _("Downloaded"); case CSearchFile::QUEUED: // File is downloading. case CSearchFile::QUEUEDCANCELED: // File is downloading and has been canceled before. return _("Queued"); case CSearchFile::CANCELED: // File has been canceled. return _("Canceled"); default: // File is new. return _("New"); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SearchListCtrl.h0000644000175000017500000002127012611472361021333 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SEARCHLISTCTRL_H #define SEARCHLISTCTRL_H #include // Needed for wxColour #include // Needed for wxRegExp #include "MuleListCtrl.h" // Needed for CMuleListCtrl class CSearchList; class CSearchFile; /** * This class is used to display search results. * * Results on added to the list will be colored according to * the number of sources and other parameters (see UpdateColor). * * To display results, first use the ShowResults function, which will display * all current results with the specified id and afterwards you can use the * AddResult function to add new results or the UpdateResult function to update * already present results. Please note that it is not possible to add results * with the AddResult function before calling ShowResults. */ class CSearchListCtrl : public CMuleListCtrl { public: /** * Constructor. * * @see CMuleListCtrl::CMuleListCtrl for documentation of parameters. */ CSearchListCtrl( wxWindow *parent, wxWindowID winid = -1, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, const wxString &name = wxT("mulelistctrl") ); /** * Destructor. */ virtual ~CSearchListCtrl(); /** * Adds ths specified file to the list. * * @param The new result to be shown. * * Please note that no duplicates checking is done, so the pointer should * point to a new file in order to avoid problems. Also note that the result * will be inserted sorted according to current sort-type, so there is no * need to resort the list after adding new items. */ void AddResult(CSearchFile* toshow); /** * Removes the specified file from the list. */ void RemoveResult(CSearchFile* toshow); /** * Updates the specified source. * * @param The search result to be updated. */ void UpdateResult(CSearchFile* toupdate); /** * Clears the list and inserts all results with the specified Id instead. * * @param nResult The ID of the results or Zero to simply reset the list. */ void ShowResults( long ResultsId ); /** * Updates the colors of item at the specified index. * * @param index The zero-based index of the item. * * This function sets the color of the item based on the following: * - Downloading files are marked in red. * - Known (shared/completed) files are marked in green. * - New files are marked in blue depending on the number of sources. * - Canceled files are marked in magenta. */ void UpdateItemColor(long index); /** * Returns the current Search Id. * * @return The Search Id of the displayed results (set through ShowResults()). */ wxUIntPtr GetSearchId(); /** * Sets the filter which decides which results should be shown. * * @param regExp A regular expression targeting the filenames. * @param invert If true, invert the results of the filter-test. * @param filterKnown Should files that are queued or known be filtered out. * * An invalid regExp will result in all results being displayed. */ void SetFilter(const wxString& regExp, bool invert, bool filterKnown); /** * Toggles the use of filtering on and off. */ void EnableFiltering(bool enabled); /** * Returns the number of items hidden due to filtering. */ size_t GetHiddenItemCount() const; /** * Attempts to download all selected items, updating color-scheme as needed. * * @param category The target category, or -1 to use the drop-down selection. */ void DownloadSelected(int category = -1); static wxString DetermineStatusPrintable(CSearchFile *toshow); protected: /// Return old column order. wxString GetOldColumnOrder() const; /** * Set the sort column * * @param column The column with which the list should be sorted. * @param order The order in which to sort the column. * * Note that attempting to sort a column in an unsupported order * is an illegal operation. */ void SetSorting(unsigned column, unsigned order); protected: typedef std::list ResultList; //! List used to store results that are hidden due to matching the filter. ResultList m_filteredOut; //! The current filter reg-exp. wxRegEx m_filter; //! The text from which the filter is compiled. wxString m_filterText; //! Controls if shared/queued results should be shown. bool m_filterKnown; //! Controls if the result of filter-hits should be inverted bool m_invert; //! Specifies if filtering should be used bool m_filterEnabled; /** * Returns true if the filename is filtered. */ bool IsFiltered(const CSearchFile* file); /** * Sorter function used by wxListCtrl::SortItems function. * * @see CMuleListCtrl::SetSortFunc * @see wxListCtrl::SortItems */ static int wxCALLBACK SortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData); /** @see CMuleListCtrl::AltSortAllowed */ virtual bool AltSortAllowed(unsigned column) const; /** @see CMuleListCtrl::GetTTSText */ virtual wxString GetTTSText(unsigned item) const; /** * Helper function which syncs two lists. * * @param src The source list. * @param dst The list to be synced with the source list. * * This function syncronises the following settings of two lists: * - Sort column * - Sort direction * - Column widths * * If either sort column or direction is changed, then the dst list will * be resorted. This function is used to ensure that all results list act * as one, while still allowing individual selection. */ static void SyncLists( CSearchListCtrl* src, CSearchListCtrl* dst ); /** * Helper function which syncs all other lists against the specified one. * * @param src The list which all other lists should be synced against. * * This function just calls SyncLists() on all lists in s_lists, using * the src argument as the src argument of the SyncLists function. */ static void SyncOtherLists( CSearchListCtrl* src ); //! This list contains pointers to all current instances of CSearchListCtrl. static std::list s_lists; //! The ID of the search-results which the list is displaying or zero if unset. wxUIntPtr m_nResultsID; //! Custom drawing, needed to display children of search-results. void OnDrawItem(int item, wxDC* dc, const wxRect& rect, const wxRect& rectHL, bool highlighted); /** * Removes or adds child-entries for the given file. */ void ShowChildren(CSearchFile* file, bool show); /** * Event handler for right mouse clicks. */ void OnRightClick( wxListEvent& event ); /** * Event handler for double-clicks or enter. */ void OnItemActivated( wxListEvent& event ); /** * Event handler for left-clicks on the column headers. * * This eventhandler takes care of sync'ing all the other lists with this one. */ void OnColumnLClick( wxListEvent& event ); /** * Event handler for resizing of the columns. * * This eventhandler takes care of sync'ing all the other lists with this one. */ void OnColumnResize( wxListEvent& event ); /** * Event handler for get-url menu items. */ void OnPopupGetUrl( wxCommandEvent& event ); /** * Event handler for Razorback 2 stats menu items. */ void OnRazorStatsCheck( wxCommandEvent& event ); /** * Event handler for related search. */ void OnRelatedSearch( wxCommandEvent& event ); /** * Event handler for "mark as known". */ void OnMarkAsKnown( wxCommandEvent& event ); /** * Event handler for download-file(s) menu item. */ void OnPopupDownload( wxCommandEvent& event ); DECLARE_EVENT_TABLE() }; #endif // SEARCHLISTCTRL_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Server.cpp0000644000175000017500000001542712611472361020255 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "Server.h" // Interface declarations. #include #include "NetworkFunctions.h" // Needed for StringIPtoUint32 #include "OtherStructs.h" // Needed for ServerMet_Struct #include "amule.h" CServer::CServer(ServerMet_Struct* in_data) { port = in_data->port; ip = in_data->ip; Init(); } CServer::CServer(uint16 in_port, const wxString& i_addr) { port = in_port; ip = StringIPtoUint32(i_addr); Init(); // GonoszTopi - Init() would clear dynip ! // Check that the ip isn't in fact 0.0.0.0 if (!ip && !StringIPtoUint32( i_addr, ip ) ) { // If ip == 0, the address is a hostname dynip = i_addr; } } // copy constructor CServer::CServer(CServer* pOld) : CECID(pOld->ECID()) { wxASSERT(pOld != NULL); TagPtrList::iterator it = pOld->m_taglist.begin(); for ( ; it != pOld->m_taglist.end(); ++it ) { m_taglist.push_back((*it)->CloneTag()); } port = pOld->port; ip = pOld->ip; realport = pOld->realport; staticservermember=pOld->IsStaticMember(); tagcount = pOld->tagcount; ipfull = pOld->ipfull; files = pOld->files; users = pOld->users; preferences = pOld->preferences; ping = pOld->ping; failedcount = pOld->failedcount; lastpinged = pOld->lastpinged; lastpingedtime = pOld->lastpingedtime; m_dwRealLastPingedTime = pOld->m_dwRealLastPingedTime; description = pOld->description; listname = pOld->listname; dynip = pOld->dynip; maxusers = pOld->maxusers; m_strVersion = pOld->m_strVersion; m_uTCPFlags = pOld->m_uTCPFlags; m_uUDPFlags = pOld->m_uUDPFlags; challenge = pOld->challenge; softfiles = pOld->softfiles; hardfiles = pOld->hardfiles; m_uDescReqChallenge = pOld->m_uDescReqChallenge; m_uLowIDUsers = pOld->m_uLowIDUsers; lastdescpingedcout = pOld->lastdescpingedcout; m_auxPorts = pOld->m_auxPorts; m_dwServerKeyUDP = pOld->m_dwServerKeyUDP; m_bCryptPingReplyPending = pOld->m_bCryptPingReplyPending; m_dwIPServerKeyUDP = pOld->m_dwIPServerKeyUDP; m_nObfuscationPortTCP = pOld->m_nObfuscationPortTCP; m_nObfuscationPortUDP = pOld->m_nObfuscationPortUDP; } CServer::~CServer() { deleteTagPtrListEntries(&m_taglist); m_taglist.clear(); } void CServer::Init() { ipfull = Uint32toStringIP(ip); realport = 0; tagcount = 0; files = 0; users = 0; preferences = 0; ping = 0; description.Clear(); listname.Clear(); dynip.Clear(); failedcount = 0; lastpinged = 0; lastpingedtime = 0; m_dwRealLastPingedTime = 0; staticservermember=false; maxusers=0; m_uTCPFlags = 0; m_uUDPFlags = 0; challenge = 0; softfiles = 0; hardfiles = 0; m_strVersion = _("Unknown"); m_uLowIDUsers = 0; m_uDescReqChallenge = 0; lastdescpingedcout = 0; m_auxPorts.Clear(); m_lastdnssolve = 0; m_dnsfailure = false; m_dwServerKeyUDP = 0; m_bCryptPingReplyPending = false; m_dwIPServerKeyUDP = 0; m_nObfuscationPortTCP = 0; m_nObfuscationPortUDP = 0; } bool CServer::AddTagFromFile(CFileDataIO* servermet) { if (servermet == NULL) { return false; } CTag tag(*servermet, true); switch(tag.GetNameID()){ case ST_SERVERNAME: if (listname.IsEmpty()) { listname = tag.GetStr(); } break; case ST_DESCRIPTION: if (description.IsEmpty()) { description = tag.GetStr(); } break; case ST_PREFERENCE: preferences = tag.GetInt(); break; case ST_PING: ping = tag.GetInt(); break; case ST_DYNIP: if (dynip.IsEmpty()) { dynip = tag.GetStr(); } break; case ST_FAIL: failedcount = tag.GetInt(); break; case ST_LASTPING: lastpinged = tag.GetInt(); break; case ST_MAXUSERS: maxusers = tag.GetInt(); break; case ST_SOFTFILES: softfiles = tag.GetInt(); break; case ST_HARDFILES: hardfiles = tag.GetInt(); break; case ST_VERSION: if (tag.IsStr()) { // m_strVersion defaults to _("Unknown"), so check for that as well if ((m_strVersion.IsEmpty()) || (m_strVersion == _("Unknown"))) { m_strVersion = tag.GetStr(); } } else if (tag.IsInt()) { m_strVersion = CFormat(wxT("%u.%u")) % (tag.GetInt() >> 16) % (tag.GetInt() & 0xFFFF); } else { wxFAIL; } break; case ST_UDPFLAGS: m_uUDPFlags = tag.GetInt(); break; case ST_AUXPORTSLIST: m_auxPorts = tag.GetStr(); // Some server.mets contain empty ST_AUXPORTSLIST tags if (!m_auxPorts.IsEmpty()) { realport = port; port = StrToULong(m_auxPorts.BeforeFirst(',')); } break; case ST_LOWIDUSERS: m_uLowIDUsers = tag.GetInt(); break; case ST_UDPKEY: m_dwServerKeyUDP = tag.GetInt(); break; case ST_UDPKEYIP: m_dwIPServerKeyUDP = tag.GetInt(); break; case ST_TCPPORTOBFUSCATION: m_nObfuscationPortTCP = (uint16)tag.GetInt(); break; case ST_UDPPORTOBFUSCATION: m_nObfuscationPortUDP = (uint16)tag.GetInt(); break; default: if (!tag.GetName().IsEmpty()) { if (tag.GetName() == wxT("files")) { files = tag.GetInt(); } else if (tag.GetName() == wxT("users")) { users = tag.GetInt(); } } else { wxFAIL; } } return true; } void CServer::SetListName(const wxString& newname) { listname = newname; } void CServer::SetDescription(const wxString& newname) { description = newname; } void CServer::SetID(uint32 newip) { wxASSERT(newip); ip = newip; ipfull = Uint32toStringIP(ip); } void CServer::SetDynIP(const wxString& newdynip) { dynip = newdynip; } void CServer::SetLastDescPingedCount(bool bReset) { if (bReset) { lastdescpingedcout = 0; } else { lastdescpingedcout++; } } uint32 CServer::GetServerKeyUDP(bool bForce) const { if ((m_dwIPServerKeyUDP != 0 && m_dwIPServerKeyUDP == theApp->GetPublicIP()) || bForce) { return m_dwServerKeyUDP; } else { return 0; } } void CServer::SetServerKeyUDP(uint32 dwServerKeyUDP) { wxASSERT( theApp->GetPublicIP() != 0 || dwServerKeyUDP == 0 ); m_dwServerKeyUDP = dwServerKeyUDP; m_dwIPServerKeyUDP = theApp->GetPublicIP(); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Server.h0000644000175000017500000001727312611472361017723 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SERVER_H #define SERVER_H #include "Tag.h" #include "OtherStructs.h" #include // Needed for CECID #include #include class CFileDataIO; // Server priority #define SRV_PR_LOW 2 #define SRV_PR_NORMAL 0 #define SRV_PR_HIGH 1 // Server priority max and min values #define SRV_PR_MAX 2 #define SRV_PR_MID 1 #define SRV_PR_MIN 0 class CServer : public CECID { friend class CServerListRem; public: CServer(ServerMet_Struct* in_data); CServer(uint16 in_port, const wxString& i_addr); CServer(CServer* pOld); CServer(const class CEC_Server_Tag *); ~CServer(); void AddTag(CTag* in_tag) {m_taglist.push_back(in_tag);} const wxString &GetListName() const {return listname;} const wxString &GetFullIP() const {return ipfull;} const wxString &GetAddress() const { if (!dynip.IsEmpty()) { return dynip; } else { return ipfull; } } // the official port uint16 GetPort() const {return realport ? realport : port;} // the connection port uint16 GetConnPort() const {return port;} void SetPort(uint32 val) {realport = val;} bool AddTagFromFile(CFileDataIO* servermet); void SetListName(const wxString& newname); void SetDescription(const wxString& newdescription); uint32 GetIP() const {return ip;} uint32 GetFiles() const {return files;} uint32 GetUsers() const {return users;} const wxString &GetDescription() const {return description;} uint32 GetPing() const {return ping;} uint32 GetPreferences() const {return preferences;} uint32 GetMaxUsers() const {return maxusers;} void SetMaxUsers(uint32 in_maxusers) {maxusers = in_maxusers;} void SetUserCount(uint32 in_users) {users = in_users;} void SetFileCount(uint32 in_files) {files = in_files;} void ResetFailedCount() {failedcount = 0;} void AddFailedCount() {failedcount++;} uint32 GetFailedCount() const {return failedcount;} void SetID(uint32 newip); const wxString &GetDynIP() const {return dynip;} bool HasDynIP() const {return !dynip.IsEmpty() ;} void SetDynIP(const wxString& newdynip); uint32 GetLastPingedTime() const {return lastpingedtime;} void SetLastPingedTime(uint32 in_lastpingedtime) {lastpingedtime = in_lastpingedtime;} uint32 GetRealLastPingedTime() const {return m_dwRealLastPingedTime;} // last pinged time without any random modificator void SetRealLastPingedTime(uint32 in_lastpingedtime) {m_dwRealLastPingedTime = in_lastpingedtime;} uint32 GetLastPinged() const {return lastpinged;} void SetLastPinged(uint32 in_lastpinged) {lastpinged = in_lastpinged;} void SetPing(uint32 in_ping) {ping = in_ping;} void SetPreference(uint32 in_preferences) {preferences = in_preferences;} void SetIsStaticMember(bool in) {staticservermember=in;} bool IsStaticMember() const {return staticservermember;} uint32 GetChallenge() const {return challenge;} void SetChallenge(uint32 in_challenge) {challenge = in_challenge;} uint32 GetSoftFiles() const {return softfiles;} void SetSoftFiles(uint32 in_softfiles) {softfiles = in_softfiles;} uint32 GetHardFiles() const {return hardfiles;} void SetHardFiles(uint32 in_hardfiles) {hardfiles = in_hardfiles;} const wxString &GetVersion() const {return m_strVersion;} void SetVersion(const wxString &pszVersion) {m_strVersion = pszVersion;} void SetTCPFlags(uint32 uFlags) {m_uTCPFlags = uFlags;} uint32 GetTCPFlags() const {return m_uTCPFlags;} void SetUDPFlags(uint32 uFlags) {m_uUDPFlags = uFlags;} uint32 GetUDPFlags() const {return m_uUDPFlags;} uint32 GetLowIDUsers() const {return m_uLowIDUsers;} void SetLowIDUsers(uint32 uLowIDUsers) {m_uLowIDUsers = uLowIDUsers;} uint32 GetDescReqChallenge() const {return m_uDescReqChallenge;} void SetDescReqChallenge(uint32 uDescReqChallenge) {m_uDescReqChallenge = uDescReqChallenge;} uint8 GetLastDescPingedCount() const {return lastdescpingedcout;} void SetLastDescPingedCount(bool reset); uint16 GetObfuscationPortTCP() const {return m_nObfuscationPortTCP;} void SetObfuscationPortTCP(uint16 nPort) {m_nObfuscationPortTCP = nPort;} uint16 GetObfuscationPortUDP() const {return m_nObfuscationPortUDP;} void SetObfuscationPortUDP(uint16 nPort) {m_nObfuscationPortUDP = nPort;} uint32 GetServerKeyUDP(bool bForce = false) const; void SetServerKeyUDP(uint32 dwServerKeyUDP); bool GetCryptPingReplyPending() const {return m_bCryptPingReplyPending;} void SetCryptPingReplyPending(bool bVal) {m_bCryptPingReplyPending = bVal;} uint32 GetServerKeyUDPIP() const {return m_dwIPServerKeyUDP;} bool GetUnicodeSupport() const {return (GetTCPFlags() & SRV_TCPFLG_UNICODE) != 0;} bool GetRelatedSearchSupport() const {return (GetTCPFlags() & SRV_TCPFLG_RELATEDSEARCH) != 0;} bool SupportsLargeFilesTCP() const {return (GetTCPFlags() & SRV_TCPFLG_LARGEFILES) != 0;} bool SupportsLargeFilesUDP() const {return (GetUDPFlags() & SRV_UDPFLG_LARGEFILES) != 0;} bool SupportsObfuscationUDP() const {return (GetUDPFlags() & SRV_UDPFLG_UDPOBFUSCATION) != 0;} bool SupportsObfuscationTCP() const {return (GetObfuscationPortTCP() != 0) && (((GetUDPFlags() & SRV_UDPFLG_TCPOBFUSCATION) != 0) || ((GetTCPFlags() & SRV_TCPFLG_TCPOBFUSCATION) != 0));} bool SupportsGetSourcesObfuscation() const {return (GetTCPFlags() & SRV_TCPFLG_TCPOBFUSCATION) != 0;} // mapped to TCPFLAG_TCPOBFU const wxString& GetAuxPortsList() const {return m_auxPorts;} void SetAuxPortsList(const wxString& val) {m_auxPorts = val;} uint64 GetLastDNSSolve() const { return m_lastdnssolve; } void SetLastDNSSolve(uint64 value) { m_lastdnssolve = value; } bool GetDNSError() const { return m_dnsfailure; } void SetDNSError(bool value) { m_dnsfailure = value; } private: uint32 challenge; uint32 lastpinged; //This is to get the ping delay. uint32 lastpingedtime; //This is to decided when we retry the ping. uint32 files; uint32 users; uint32 maxusers; uint32 softfiles; uint32 hardfiles; uint32 preferences; uint32 ping; wxString description; wxString listname; wxString dynip; uint32 tagcount; wxString ipfull; uint32 ip; uint16 port; uint16 realport; uint32 failedcount; uint32 m_uDescReqChallenge; uint8 lastdescpingedcout; TagPtrList m_taglist; bool staticservermember; wxString m_strVersion; uint32 m_uTCPFlags; uint32 m_uUDPFlags; uint32 m_uLowIDUsers; wxString m_auxPorts; uint64 m_lastdnssolve; bool m_dnsfailure; bool m_bCryptPingReplyPending; uint32 m_dwServerKeyUDP; uint32 m_dwIPServerKeyUDP; uint16 m_nObfuscationPortTCP; uint16 m_nObfuscationPortUDP; uint32 m_dwRealLastPingedTime; void Init(); }; #endif // SERVER_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ServerConnect.cpp0000644000175000017500000004462512611472361021571 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ServerConnect.h" // Interface declarations. #include #include // Sometimes we reply with TCP packets. #include #include #include #include "SearchList.h" // Needed for CSearchList #include "ServerUDPSocket.h" // Needed for CServerUDPSocket #include "SharedFileList.h" // Needed for CSharedFileList #include "Packet.h" // Needed for CTag #include "MemFile.h" // Needed for CMemFile #include "ServerSocket.h" // Needed for CServerSocket #include "ListenSocket.h" // Needed for CListenSocket #include "Server.h" // Needed for CServer #include "amule.h" // Needed for theApp #include "ServerList.h" // Needed for CServerList #include "Preferences.h" // Needed for CPreferences #include "Statistics.h" // Needed for theStats #include "Logger.h" #include "GuiEvents.h" // Needed for Notify_* #include "IPFilter.h" // Needed for theApp->ipfilter->IsReady() #include //#define DEBUG_CLIENT_PROTOCOL void CServerConnect::TryAnotherConnectionrequest() { if (m_recurseTryAnotherConnectionrequest) { return; } if ( connectionattemps.size() < (unsigned)(( thePrefs::IsSafeServerConnectEnabled()) ? 1 : 2) ) { CServer* next_server = used_list->GetNextServer(m_bTryObfuscated); if ( thePrefs::AutoConnectStaticOnly() ) { while (next_server && !next_server->IsStaticMember()) { next_server = used_list->GetNextServer(m_bTryObfuscated); } } if (!next_server) { if ( connectionattemps.empty() ) { m_recurseTryAnotherConnectionrequest = true; if (m_bTryObfuscated && !thePrefs::IsClientCryptLayerRequired()){ AddLogLineC(_("Failed to connect to all obfuscated servers listed. Making another pass without obfuscation.")); // try all servers on the non-obfuscated port next m_bTryObfuscated = false; ConnectToAnyServer( false, true); } else { AddLogLineC(_("Failed to connect to all servers listed. Making another pass.")); ConnectToAnyServer( false ); } m_recurseTryAnotherConnectionrequest = false; } return; } ConnectToServer(next_server, true, !m_bTryObfuscated); } } void CServerConnect::ConnectToAnyServer(bool prioSort, bool bNoCrypt) { if (!thePrefs::GetNetworkED2K()){ AddLogLineC(_("eD2k network disabled on preferences, not connecting.")); return; } if (!theApp->ipfilter->IsReady()) { // do it later when ipfilter is up theApp->ipfilter->ConnectToAnyServerWhenReady(); return; } StopConnectionTry(); Disconnect(); connecting = true; singleconnecting = false; m_bTryObfuscated = thePrefs::IsServerCryptLayerTCPRequested() && !bNoCrypt; // Barry - Only auto-connect to static server option if (thePrefs::AutoConnectStaticOnly()) { bool anystatic = false; CServer *next_server; used_list->ResetServerPos(); while ((next_server = used_list->GetNextServer(false)) != NULL) { if (next_server->IsStaticMember()) { anystatic = true; break; } } if (!anystatic) { connecting = false; AddLogLineC(_("No valid servers to which to connect found in server list")); return; } } if ( thePrefs::Score() && prioSort ) { used_list->Sort(); } used_list->ResetServerPos(); if (used_list->GetServerCount()==0 ) { connecting = false; AddLogLineC(_("No valid servers to which to connect found in server list")); return; } theApp->listensocket->Process(); TryAnotherConnectionrequest(); } void CServerConnect::ConnectToServer(CServer* server, bool multiconnect, bool bNoCrypt) { if (!thePrefs::GetNetworkED2K()){ AddLogLineC(_("eD2k network disabled on preferences, not connecting.")); return; } if (!multiconnect) { StopConnectionTry(); Disconnect(); } connecting = true; singleconnecting = !multiconnect; CServerSocket* newsocket = new CServerSocket(this, thePrefs::GetProxyData()); m_lstOpenSockets.push_back(newsocket); newsocket->ConnectToServer(server, bNoCrypt); connectionattemps[GetTickCount()] = newsocket; } void CServerConnect::StopConnectionTry() { connectionattemps.clear(); connecting = false; singleconnecting = false; if (m_idRetryTimer.IsRunning()) { m_idRetryTimer.Stop(); } // close all currenty opened sockets except the one which is connected to our current server for(SocketsList::iterator it = m_lstOpenSockets.begin(); it != m_lstOpenSockets.end(); ) { CServerSocket *pSck = *it++; if (pSck == connectedsocket) // don't destroy socket which is connected to server continue; if (pSck->m_bIsDeleting == false) // don't destroy socket if it is going to destroy itself later on DestroySocket(pSck); } } void CServerConnect::ConnectionEstablished(CServerSocket* sender) { if (connecting == false) { // we are already connected to another server DestroySocket(sender); return; } if (sender->GetConnectionState() == CS_WAITFORLOGIN) { AddLogLineN(CFormat( _("Connected to %s (%s:%i)") ) % sender->cur_server->GetListName() % sender->cur_server->GetFullIP() % sender->cur_server->GetPort() ); //send loginpacket CServer* update = theApp->serverlist->GetServerByAddress( sender->cur_server->GetAddress(), sender->cur_server->GetPort() ); if (update){ update->ResetFailedCount(); Notify_ServerRefresh( update ); } CMemFile data(256); data.WriteHash(thePrefs::GetUserHash()); // Why pass an ID, if we are loggin in? data.WriteUInt32(GetClientID()); data.WriteUInt16(thePrefs::GetPort()); data.WriteUInt32(4); // tagcount // Kry - Server doesn't support VBT tags afaik. // Not to mention we don't know its flags yet CTagString tagname(CT_NAME,thePrefs::GetUserNick()); tagname.WriteTagToFile(&data); CTagInt32 tagversion(CT_VERSION,EDONKEYVERSION); tagversion.WriteTagToFile(&data); uint32 dwCryptFlags = 0; if (thePrefs::IsClientCryptLayerSupported()) { dwCryptFlags |= SRVCAP_SUPPORTCRYPT; } if (thePrefs::IsClientCryptLayerRequested()) { dwCryptFlags |= SRVCAP_REQUESTCRYPT; } if (thePrefs::IsClientCryptLayerRequired()) { dwCryptFlags |= SRVCAP_REQUIRECRYPT; } // FLAGS for server connection CTagInt32 tagflags(CT_SERVER_FLAGS, CAPABLE_ZLIB | CAPABLE_AUXPORT | CAPABLE_NEWTAGS | CAPABLE_UNICODE | CAPABLE_LARGEFILES | dwCryptFlags ); tagflags.WriteTagToFile(&data); // eMule Version (14-Mar-2004: requested by lugdunummaster (need for LowID clients which have no chance // to send an Hello packet to the server during the callback test)) CTagInt32 tagMuleVersion(CT_EMULE_VERSION, (SO_AMULE << 24) | make_full_ed2k_version(VERSION_MJR, VERSION_MIN, VERSION_UPDATE) ); tagMuleVersion.WriteTagToFile(&data); CPacket* packet = new CPacket(data, OP_EDONKEYPROT, OP_LOGINREQUEST); #ifdef DEBUG_CLIENT_PROTOCOL AddLogLineC(wxT("Client: OP_LOGINREQUEST")); AddLogLineC(wxString(wxT(" Hash : ")) << thePrefs::GetUserHash().Encode()); AddLogLineC(wxString(wxT(" ClientID : ")) << GetClientID()); AddLogLineC(wxString(wxT(" Port : ")) << thePrefs::GetPort()); AddLogLineC(wxString(wxT(" User Nick: ")) << thePrefs::GetUserNick()); AddLogLineC(wxString(wxT(" Edonkey : ")) << EDONKEYVERSION); #endif theStats::AddUpOverheadServer(packet->GetPacketSize()); SendPacket(packet, true, sender); } else if (sender->GetConnectionState() == CS_CONNECTED){ theStats::AddReconnect(); theStats::GetServerConnectTimer()->ResetTimer(); connected = true; AddLogLineC(CFormat( _("Connection established on: %s") ) % sender->cur_server->GetListName()); connectedsocket = sender; StopConnectionTry(); CServer* update = theApp->serverlist->GetServerByAddress(connectedsocket->cur_server->GetAddress(),sender->cur_server->GetPort()); if ( update ) { Notify_ServerHighlight(update, true); } theApp->sharedfiles->ClearED2KPublishInfo(); Notify_ServerRemoveDead(); // tecxx 1609 2002 - serverlist update if (thePrefs::AddServersFromServer()) { CPacket* packet = new CPacket(OP_GETSERVERLIST, 0, OP_EDONKEYPROT); theStats::AddUpOverheadServer(packet->GetPacketSize()); SendPacket(packet, true); #ifdef DEBUG_CLIENT_PROTOCOL AddLogLineC(wxT("Client: OP_GETSERVERLIST")); #endif } } theApp->ShowConnectionState(); } bool CServerConnect::SendPacket(CPacket* packet,bool delpacket, CServerSocket* to) { if (!to) { if (connected) { connectedsocket->SendPacket(packet, delpacket, true); return true; } else { if ( delpacket ) { delete packet; } return false; } } else { to->SendPacket(packet, delpacket, true); return true; } } bool CServerConnect::SendUDPPacket(CPacket* packet, CServer* host, bool delpacket, bool rawpacket, uint16 port_offset) { if (connected) { serverudpsocket->SendPacket(packet, host, delpacket, rawpacket, port_offset); } else if (delpacket) { delete packet; } return true; } void CServerConnect::ConnectionFailed(CServerSocket* sender) { if (connecting == false && sender != connectedsocket) { // just return, cleanup is done by the socket itself return; } //messages CServer* pServer = theApp->serverlist->GetServerByAddress(sender->cur_server->GetAddress(), sender->cur_server->GetPort()); switch (sender->GetConnectionState()){ case CS_FATALERROR: AddLogLineC(_("Fatal Error while trying to connect. Internet connection might be down")); break; case CS_DISCONNECTED: theApp->sharedfiles->ClearED2KPublishInfo(); AddLogLineN(CFormat( _("Lost connection to %s (%s:%i)") ) % sender->cur_server->GetListName() % sender->cur_server->GetFullIP() % sender->cur_server->GetPort() ); if (pServer){ Notify_ServerHighlight(pServer, false); } break; case CS_SERVERDEAD: AddLogLineN(CFormat( _("%s (%s:%i) appears to be dead.") ) % sender->cur_server->GetListName() % sender->cur_server->GetFullIP() % sender->cur_server->GetPort() ); if (pServer) { pServer->AddFailedCount(); Notify_ServerRefresh( pServer ); } break; case CS_ERROR: break; case CS_SERVERFULL: AddLogLineN(CFormat( _("%s (%s:%i) appears to be full.") ) % sender->cur_server->GetListName() % sender->cur_server->GetFullIP() % sender->cur_server->GetPort() ); break; case CS_NOTCONNECTED:; break; } // IMPORTANT: mark this socket not to be deleted in StopConnectionTry(), // because it will delete itself after this function! sender->m_bIsDeleting = true; switch (sender->GetConnectionState()) { case CS_FATALERROR:{ bool autoretry= !singleconnecting; StopConnectionTry(); if ((thePrefs::Reconnect()) && (autoretry) && (!m_idRetryTimer.IsRunning())) { AddLogLineN(CFormat(wxPLURAL("Automatic connection to server will retry in %d second", "Automatic connection to server will retry in %d seconds", CS_RETRYCONNECTTIME)) % CS_RETRYCONNECTTIME); m_idRetryTimer.Start(1000*CS_RETRYCONNECTTIME); } break; } case CS_DISCONNECTED:{ theApp->sharedfiles->ClearED2KPublishInfo(); connected = false; Notify_ServerHighlight(sender->cur_server,false); if (connectedsocket) { connectedsocket->Close(); } connectedsocket = NULL; theApp->searchlist->StopSearch(true); Notify_SearchCancel(); theStats::GetServerConnectTimer()->StopTimer(); if (thePrefs::Reconnect() && !connecting){ ConnectToAnyServer(); } AddLogLineC(_("Connection lost") ); break; } case CS_ERROR: case CS_NOTCONNECTED:{ if (!connecting) break; AddLogLineN(CFormat( _("Connecting to %s (%s:%i) failed.") ) % sender->info % sender->cur_server->GetFullIP() % sender->cur_server->GetPort() ); } case CS_SERVERDEAD: case CS_SERVERFULL:{ if (!connecting) { break; } if (singleconnecting) { if (pServer && sender->IsServerCryptEnabledConnection() && !thePrefs::IsClientCryptLayerRequired()){ // try reconnecting without obfuscation ConnectToServer(pServer, false, true); break; } StopConnectionTry(); break; } ServerSocketMap::iterator it = connectionattemps.begin(); while ( it != connectionattemps.end() ){ if ( it->second == sender ) { connectionattemps.erase( it ); break; } ++it; } TryAnotherConnectionrequest(); } } theApp->ShowConnectionState(); } void CServerConnect::CheckForTimeout() { uint32 dwCurTick = GetTickCount(); ServerSocketMap::iterator it = connectionattemps.begin(); while ( it != connectionattemps.end() ){ if ( !it->second ) { AddLogLineN(_("ERROR: Socket invalid at timeout check")); connectionattemps.erase( it ); return; } if ( dwCurTick - it->first > CONSERVTIMEOUT) { uint32 key = it->first; CServerSocket* value = it->second; ++it; if (!value->IsSolving()) { AddLogLineN(CFormat( _("Connection attempt to %s (%s:%i) timed out.") ) % value->info % value->cur_server->GetFullIP() % value->cur_server->GetPort() ); connectionattemps.erase( key ); TryAnotherConnectionrequest(); DestroySocket( value ); } } else { ++it; } } } bool CServerConnect::Disconnect() { if (connected && connectedsocket) { theApp->sharedfiles->ClearED2KPublishInfo(); connected = false; CServer* update = theApp->serverlist->GetServerByAddress( connectedsocket->cur_server->GetAddress(), connectedsocket->cur_server->GetPort()); Notify_ServerHighlight(update, false); theApp->SetPublicIP(0); DestroySocket(connectedsocket); connectedsocket = NULL; theApp->ShowConnectionState(); theStats::GetServerConnectTimer()->StopTimer(); return true; } else { return false; } } CServerConnect::CServerConnect(CServerList* in_serverlist, amuleIPV4Address &address) : m_idRetryTimer(theApp,ID_SERVER_RETRY_TIMER_EVENT) { connectedsocket = NULL; used_list = in_serverlist; max_simcons = (thePrefs::IsSafeServerConnectEnabled()) ? 1 : 2; connecting = false; connected = false; clientid = 0; singleconnecting = false; m_recurseTryAnotherConnectionrequest = false; m_bTryObfuscated = thePrefs::IsServerCryptLayerTCPRequested(); // initalize socket for udp packets if (thePrefs::GetNetworkED2K()) { serverudpsocket = new CServerUDPSocket(address, thePrefs::GetProxyData()); } else { serverudpsocket = NULL; } } CServerConnect::~CServerConnect() { m_idRetryTimer.Stop(); // stop all connections StopConnectionTry(); // close connected socket, if any DestroySocket(connectedsocket); connectedsocket = NULL; // close udp socket delete serverudpsocket; } CServer* CServerConnect::GetCurrentServer() { if (IsConnected() && connectedsocket) { return connectedsocket->cur_server; } return NULL; } void CServerConnect::SetClientID(uint32 newid) { clientid = newid; if (!::IsLowID(newid)) { theApp->SetPublicIP(newid); } } void CServerConnect::DestroySocket(CServerSocket* pSck) { if (pSck == NULL) { return; } m_lstOpenSockets.remove(pSck); pSck->Destroy(); } bool CServerConnect::IsLocalServer(uint32 dwIP, uint16 nPort) { if (IsConnected()){ if (connectedsocket->cur_server->GetIP() == dwIP && connectedsocket->cur_server->GetPort() == nPort) return true; } return false; } void CServerConnect::KeepConnectionAlive() { uint32 dwServerKeepAliveTimeout = thePrefs::GetServerKeepAliveTimeout(); if (dwServerKeepAliveTimeout && connected && connectedsocket && connectedsocket->connectionstate == CS_CONNECTED && GetTickCount() - connectedsocket->GetLastTransmission() >= dwServerKeepAliveTimeout) { // "Ping" the server if the TCP connection was not used for the specified interval with // an empty publish files packet -> recommended by lugdunummaster himself! CMemFile files(4); files.WriteUInt32(0); //nFiles CPacket* packet = new CPacket(files, OP_EDONKEYPROT, OP_OFFERFILES); #ifdef DEBUG_CLIENT_PROTOCOL AddLogLineC(wxT("Client: OP_OFFERFILES")); #endif // compress packet // - this kind of data is highly compressable (N * (1 MD4 and at least 3 string meta data tags and 1 integer meta data tag)) // - the min. amount of data needed for one published file is ~100 bytes // - this function is called once when connecting to a server and when a file becomes shareable - so, it's called rarely. // - if the compressed size is still >= the original size, we send the uncompressed packet // therefor we always try to compress the packet theStats::AddUpOverheadServer(packet->GetPacketSize()); connectedsocket->SendPacket(packet,true); AddDebugLogLineN(logServer, wxT("Refreshing server connection")); } } // true if the IP is one of a server which we currently try to connect to bool CServerConnect::AwaitingTestFromIP(uint32 dwIP) { ServerSocketMap::iterator it = connectionattemps.begin(); while (it != connectionattemps.end()) { const CServerSocket* serversocket = it->second; if (serversocket && (serversocket->GetConnectionState() == CS_WAITFORLOGIN) && (serversocket->GetServerIP() == dwIP)) { return true; } ++it; } return false; } bool CServerConnect::IsConnectedObfuscated() const { return connectedsocket != NULL && connectedsocket->IsObfusicating(); } void CServerConnect::OnServerHostnameResolved(void* socket, uint32 ip) { // The socket object might have been deleted while we waited for the hostname // to be resolved, so we check if it's still among the open sockets. SocketsList::iterator it = std::find(m_lstOpenSockets.begin(), m_lstOpenSockets.end(), socket); if (it != m_lstOpenSockets.end()) { (*it)->OnHostnameResolved(ip); } else { AddLogLineNS(_("Received late result of DNS lookup, discarding.")); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ServerConnect.h0000644000175000017500000000754512611472361021236 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // // Client to Server communication // #ifndef SERVERCONNECT_H #define SERVERCONNECT_H #include "amuleIPV4Address.h" // Needed for amuleIPV4Address #include "Timer.h" // Needed for CTimer #include // Needed for std::map class CServerList; class CServerSocket; class CServer; class CPacket; class CServerUDPSocket; #define CS_FATALERROR -5 #define CS_DISCONNECTED -4 #define CS_SERVERDEAD -3 #define CS_ERROR -2 #define CS_SERVERFULL -1 #define CS_NOTCONNECTED 0 #define CS_CONNECTING 1 #define CS_CONNECTED 2 #define CS_WAITFORLOGIN 3 #define CS_RETRYCONNECTTIME 30 // seconds typedef std::map ServerSocketMap; class CServerConnect { public: CServerConnect(CServerList* in_serverlist, amuleIPV4Address &address); ~CServerConnect(); void ConnectionFailed(CServerSocket* sender); void ConnectionEstablished(CServerSocket* sender); void ConnectToAnyServer(bool prioSort = true, bool bNoCrypt = false); void ConnectToServer(CServer* toconnect, bool multiconnect = false, bool bNoCrypt = false); void StopConnectionTry(); void CheckForTimeout(); // safe socket closure and destruction void DestroySocket(CServerSocket* pSck); bool SendPacket(CPacket* packet,bool delpacket = true, CServerSocket* to = 0); // Creteil Begin bool IsUDPSocketAvailable() const { return serverudpsocket != NULL; } // Creteil End bool SendUDPPacket(CPacket* packet,CServer* host, bool delpacket, bool rawpacket = false, uint16 port_offset = 4); bool Disconnect(); bool IsConnecting() { return connecting; } bool IsConnected() { return connected; } uint32 GetClientID() { return clientid; } CServer*GetCurrentServer(); uint32 clientid; bool IsLowID() { return ::IsLowID(clientid); } void SetClientID(uint32 newid); bool IsLocalServer(uint32 dwIP, uint16 nPort); void TryAnotherConnectionrequest(); bool IsSingleConnect() { return singleconnecting; } void KeepConnectionAlive(); bool AwaitingTestFromIP(uint32 ip); bool IsConnectedObfuscated() const; /** * Called when a socket has been DNS resolved. * * @param socket The socket object requesting DNS resolution. * @param ip The found IP, or zero on error. * * Note that 'socket' may or may not refer to an valid object, * and should be checked before being used. */ void OnServerHostnameResolved(void* socket, uint32 ip); private: bool connecting; bool singleconnecting; bool connected; int8 max_simcons; bool m_bTryObfuscated; bool m_recurseTryAnotherConnectionrequest; CServerSocket* connectedsocket; CServerList* used_list; CServerUDPSocket* serverudpsocket; // list of currently opened sockets typedef std::list SocketsList; SocketsList m_lstOpenSockets; CTimer m_idRetryTimer; ServerSocketMap connectionattemps; }; #endif // SERVERCONNECT_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ServerList.cpp0000644000175000017500000007377012611472361021116 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include "ServerList.h" // Interface declarations. #include #include #include #include #include #include #include // Needed for wxURL #include #include "DownloadQueue.h" // Needed for CDownloadQueue #include "ServerConnect.h" // Needed for CServerConnect #include "Server.h" // Needed for CServer and SRV_PR_* #include "OtherStructs.h" // Needed for ServerMet_Struct #include "CFile.h" // Needed for CFile #include "HTTPDownload.h" // Needed for HTTPThread #include "Preferences.h" // Needed for thePrefs #include "amule.h" // Needed for theApp #include "Statistics.h" // Needed for theStats #include "Packet.h" // Neeed for CPacket #include "Logger.h" #include "ScopedPtr.h" #include #include "IPFilter.h" #include // Needed for UnpackArchive #include // Needed for CTextFile CServerList::CServerList() { m_serverpos = m_servers.end(); m_statserverpos = m_servers.end(); m_nLastED2KServerLinkCheck = ::GetTickCount(); m_initialized = false; } bool CServerList::Init() { // Load Metfile bool bRes = LoadServerMet(CPath(thePrefs::GetConfigDir() + wxT("server.met"))); // insert static servers from textfile m_staticServersConfig = thePrefs::GetConfigDir() + wxT("staticservers.dat"); LoadStaticServers(); // Send the auto-update of server.met via HTTPThread requests current_url_index = 0; if ( thePrefs::AutoServerlist()) { AutoUpdate(); } m_initialized = true; return bRes; } bool CServerList::LoadServerMet(const CPath& path) { AddLogLineN(CFormat(_("Loading server.met file: %s")) % path); bool merge = !m_servers.empty(); if (!path.FileExists()) { AddLogLineN(_("Server.met file not found!")); return false; } // Try to unpack the file, might be an archive const wxChar* mets[] = { wxT("server.met"), NULL }; // Try to unpack the file, might be an archive if (UnpackArchive(path, mets).second != EFT_Met) { AddLogLineC(CFormat(_("Failed to load server.met file '%s', unknown format encountered.")) % path); return false; } CFile servermet(path, CFile::read); if ( !servermet.IsOpened() ){ AddLogLineN(_("Failed to open server.met!") ); return false; } try { Notify_ServerFreeze(); byte version = servermet.ReadUInt8(); if (version != 0xE0 && version != MET_HEADER) { AddLogLineC(CFormat(_("Server.met file corrupt, found invalid versiontag: 0x%x, size %i")) % version % sizeof(version)); Notify_ServerThaw(); return false; } uint32 fservercount = servermet.ReadUInt32(); ServerMet_Struct sbuffer; uint32 iAddCount = 0; for ( uint32 j = 0; j < fservercount; ++j ) { sbuffer.ip = servermet.ReadUInt32(); sbuffer.port = servermet.ReadUInt16(); sbuffer.tagcount = servermet.ReadUInt32(); CServer* newserver = new CServer(&sbuffer); // Load tags for ( uint32 i = 0; i < sbuffer.tagcount; ++i ) { newserver->AddTagFromFile(&servermet); } // Server priorities are not in sorted order // High = 1, Low = 2, Normal = 0, so we have to check // in a less logical fashion. int priority = newserver->GetPreferences(); if (priority < SRV_PR_MIN || priority > SRV_PR_MAX) { newserver->SetPreference(SRV_PR_NORMAL); } // set listname for server if ( newserver->GetListName().IsEmpty() ) { newserver->SetListName(wxT("Server ") +newserver->GetAddress()); } if ( !theApp->AddServer(newserver) ) { CServer* update = GetServerByAddress(newserver->GetAddress(), newserver->GetPort()); if(update) { update->SetListName( newserver->GetListName()); if(!newserver->GetDescription().IsEmpty()) { update->SetDescription( newserver->GetDescription()); } Notify_ServerRefresh(update); } delete newserver; } else { ++iAddCount; } } Notify_ServerThaw(); // cppcheck-suppress duplicateBranch if (!merge) { AddLogLineC(CFormat(wxPLURAL("%i server in server.met found", "%i servers in server.met found", fservercount)) % fservercount); } else { AddLogLineC(CFormat(wxPLURAL("%d server added", "%d servers added", iAddCount)) % iAddCount); } } catch (const CInvalidPacket& err) { AddLogLineC(_("Error: the file 'server.met' is corrupted: ") + err.what()); Notify_ServerThaw(); return false; } catch (const CSafeIOException& err) { AddLogLineC(_("IO error while reading 'server.met': ") + err.what()); Notify_ServerThaw(); return false; } return true; } bool CServerList::AddServer(CServer* in_server, bool fromUser) { if ( !in_server->GetPort() ) { if ( fromUser ) { AddLogLineC(CFormat( _("Server not added: [%s:%d] does not specify a valid port.") ) % in_server->GetAddress() % in_server->GetPort() ); } return false; } else if ( !in_server->HasDynIP() && ( !IsGoodIP( in_server->GetIP(), thePrefs::FilterLanIPs() ) || ( // don't test for filtered while ipfilter is still loading, // it will be filtered when filter loading is finished theApp->ipfilter->IsReady() && theApp->ipfilter->IsFiltered(in_server->GetIP(), true)) ) ) { if ( fromUser ) { AddLogLineC(CFormat( _("Server not added: The IP of [%s:%d] is filtered or invalid.") ) % in_server->GetAddress() % in_server->GetPort() ); } return false; } CServer* test_server = GetServerByAddress(in_server->GetAddress(), in_server->GetPort()); // Avoid duplicate (dynIP) servers: If the server which is to be added, is a dynIP-server // but we don't know yet it's DN, we need to search for an already available server with // that IP. if (test_server == NULL && in_server->GetIP() != 0) { test_server = GetServerByIPTCP(in_server->GetIP(), in_server->GetPort()); } if (test_server) { if ( fromUser ) { AddLogLineC(CFormat( _("Server not added: Server with matching IP:Port [%s:%d] found in list.") ) % in_server->GetAddress() % in_server->GetPort() ); } test_server->ResetFailedCount(); Notify_ServerRefresh( test_server ); return false; } theStats::AddServer(); m_servers.push_back(in_server); NotifyObservers( EventType( EventType::INSERTED, in_server ) ); if ( fromUser ) { AddLogLineC(CFormat( _("Server added: Server at [%s:%d] using the name '%s'.") ) % in_server->GetAddress() % in_server->GetPort() % in_server->GetListName() ); } return true; } void CServerList::ServerStats() { uint32 tNow = ::GetTickCount(); if (theApp->IsConnectedED2K() && !m_servers.empty()) { CServer* ping_server = GetNextStatServer(); CServer* test = ping_server; if (!ping_server) { return; } while (ping_server->GetLastPingedTime() && (tNow - ping_server->GetLastPingedTime()) < UDPSERVSTATREASKTIME) { ping_server = GetNextStatServer(); if (ping_server == test) { return; } } if (ping_server->GetFailedCount() >= thePrefs::GetDeadserverRetries() && thePrefs::DeadServer() && !ping_server->IsStaticMember()) { RemoveServer(ping_server); return; } srand((unsigned)time(NULL)); ping_server->SetRealLastPingedTime(tNow); // this is not used to calcualte the next ping, but only to ensure a minimum delay for premature pings if (!ping_server->GetCryptPingReplyPending() && (!ping_server->GetLastPingedTime() || (tNow - ping_server->GetLastPingedTime()) >= UDPSERVSTATREASKTIME) && theApp->GetPublicIP() && thePrefs::IsServerCryptLayerUDPEnabled()) { // We try a obfsucation ping first and wait 20 seconds for an answer // if it doesn't get responsed, we don't count it as error but continue with a normal ping ping_server->SetCryptPingReplyPending(true); uint32 nPacketLen = 4 + (uint8)(rand() % 16); // max padding 16 bytes CScopedArray pRawPacket(nPacketLen); uint32 dwChallenge = (rand() << 17) | (rand() << 2) | (rand() & 0x03); if (dwChallenge == 0) { dwChallenge++; } memcpy(pRawPacket.get(), &dwChallenge, sizeof(uint32)); for (uint32 i = 4; i < nPacketLen; i++) { // fillng up the remaining bytes with random data pRawPacket[i] = (uint8)rand(); } ping_server->SetChallenge(dwChallenge); ping_server->SetLastPinged(tNow); ping_server->SetLastPingedTime((tNow - (uint32)UDPSERVSTATREASKTIME) + 20); // give it 20 seconds to respond AddDebugLogLineN(logServerUDP, CFormat(wxT(">> Sending OP__GlobServStatReq (obfuscated) to server %s:%u")) % ping_server->GetAddress() % ping_server->GetPort()); CPacket* packet = new CPacket(pRawPacket[1], nPacketLen - 2, pRawPacket[0]); packet->CopyToDataBuffer(0, pRawPacket.get() + 2, nPacketLen - 2); theStats::AddUpOverheadServer(packet->GetPacketSize()); theApp->serverconnect->SendUDPPacket(packet, ping_server, true, true /*raw packet*/, 12 /* Port offset is 12 for obfuscated encryption*/); } else if (ping_server->GetCryptPingReplyPending() || theApp->GetPublicIP() == 0 || !thePrefs::IsServerCryptLayerUDPEnabled()){ // our obfsucation ping request was not answered, so probably the server doesn'T supports obfuscation // continue with a normal request if (ping_server->GetCryptPingReplyPending() && thePrefs::IsServerCryptLayerUDPEnabled()) { AddDebugLogLineN(logServerUDP, wxT("CryptPing failed for server ") + ping_server->GetListName()); } else if (thePrefs::IsServerCryptLayerUDPEnabled()) { AddDebugLogLineN(logServerUDP, wxT("CryptPing skipped because our public IP is unknown for server ") + ping_server->GetListName()); } ping_server->SetCryptPingReplyPending(false); CPacket* packet = new CPacket(OP_GLOBSERVSTATREQ, 4, OP_EDONKEYPROT); uint32 challenge = 0x55AA0000 + (uint16)rand(); ping_server->SetChallenge(challenge); packet->CopyUInt32ToDataBuffer(challenge); ping_server->SetLastPinged(tNow); ping_server->SetLastPingedTime(tNow - (rand() % HR2S(1))); ping_server->AddFailedCount(); Notify_ServerRefresh(ping_server); theStats::AddUpOverheadServer(packet->GetPacketSize()); theApp->serverconnect->SendUDPPacket(packet, ping_server, true); } else { wxFAIL; } } } void CServerList::RemoveServer(CServer* in_server) { if (in_server == theApp->serverconnect->GetCurrentServer()) { theApp->ShowAlert(_("You are connected to the server you are trying to delete. please disconnect first."), _("Info"), wxOK); } else { CInternalList::iterator it = std::find(m_servers.begin(), m_servers.end(), in_server); if ( it != m_servers.end() ) { if (theApp->downloadqueue->GetUDPServer() == in_server) { theApp->downloadqueue->SetUDPServer( 0 ); } NotifyObservers( EventType( EventType::REMOVED, in_server ) ); if (m_serverpos == it) { ++m_serverpos; } if (m_statserverpos == it) { ++m_statserverpos; } m_servers.erase(it); theStats::DeleteServer(); Notify_ServerRemove(in_server); delete in_server; } } } void CServerList::RemoveAllServers() { NotifyObservers( EventType( EventType::CLEARED ) ); theStats::DeleteAllServers(); // no connection, safely remove all servers while ( !m_servers.empty() ) { delete m_servers.back(); m_servers.pop_back(); } m_serverpos = m_servers.end(); m_statserverpos = m_servers.end(); } void CServerList::GetStatus(uint32 &failed, uint32 &user, uint32 &file, uint32 &tuser, uint32 &tfile,float &occ) { failed = 0; user = 0; file = 0; tuser=0; tfile = 0; occ=0; uint32 maxusers=0; uint32 tuserk = 0; for (CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it) { const CServer* const curr = *it; if( curr->GetFailedCount() ) { ++failed; } else { user += curr->GetUsers(); file += curr->GetFiles(); } tuser += curr->GetUsers(); tfile += curr->GetFiles(); if (curr->GetMaxUsers()) { tuserk += curr->GetUsers(); // total users on servers with known maximum maxusers+=curr->GetMaxUsers(); } } if (maxusers>0) { occ=(float)(tuserk*100)/maxusers; } } void CServerList::GetUserFileStatus(uint32 &user, uint32 &file) { user = 0; file = 0; for (CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it) { const CServer* const curr = *it; if( !curr->GetFailedCount() ) { user += curr->GetUsers(); file += curr->GetFiles(); } } } CServerList::~CServerList() { if (thePrefs::GetNetworkED2K() && IsInitialized()) { SaveServerMet(); } while ( !m_servers.empty() ) { delete m_servers.back(); m_servers.pop_back(); } } void CServerList::LoadStaticServers() { if ( !CPath::FileExists(m_staticServersConfig) ) { return; } wxFileInputStream stream(m_staticServersConfig); wxTextInputStream f(stream); while ( !stream.Eof() ) { wxString line = f.ReadLine(); // Skip comments if (line.IsEmpty() || line.GetChar(0) == '#' || line.GetChar(0) == '/') { continue; } wxStringTokenizer tokens( line, wxT(",") ); if ( tokens.CountTokens() != 3 ) { continue; } // format is host:port,priority,Name wxString addy = tokens.GetNextToken().Strip( wxString::both ); wxString prio = tokens.GetNextToken().Strip( wxString::both ); wxString name = tokens.GetNextToken().Strip( wxString::both ); wxString host = addy.BeforeFirst( wxT(':') ); wxString port = addy.AfterFirst( wxT(':') ); int priority = StrToLong( prio ); if (priority < SRV_PR_MIN || priority > SRV_PR_MAX) { priority = SRV_PR_NORMAL; } // We need a valid name for the list if ( name.IsEmpty() ) { name = addy; } // create server object and add it to the list CServer* server = new CServer( StrToLong( port ), host ); server->SetListName( name ); server->SetIsStaticMember( true ); server->SetPreference( priority ); // Try to add the server to the list if ( !theApp->AddServer( server ) ) { delete server; CServer* existing = GetServerByAddress( host, StrToULong( port ) ); if ( existing) { existing->SetListName( name ); existing->SetIsStaticMember( true ); existing->SetPreference( priority ); Notify_ServerRefresh( existing ); } } } } void CServerList::SaveStaticServers() { CTextFile file; if (!file.Open(m_staticServersConfig, CTextFile::write)) { AddLogLineN(CFormat( _("Failed to open '%s'") ) % m_staticServersConfig ); return; } for (CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it) { const CServer* server = *it; if (server->IsStaticMember()) { file.WriteLine(CFormat(wxT("%s:%u,%u,%s")) % server->GetAddress() % server->GetPort() % server->GetPreferences() % server->GetListName()); } } file.Close(); } struct ServerPriorityComparator { // Return true iff lhs should strictly appear earlier in the list than rhs. // In this case, we want higher priority servers to appear earlier. bool operator()(const CServer* lhs, const CServer* rhs) { wxASSERT ( rhs->GetPreferences() == SRV_PR_LOW || rhs->GetPreferences() == SRV_PR_NORMAL || rhs->GetPreferences() == SRV_PR_HIGH ); switch (lhs->GetPreferences()) { case SRV_PR_LOW: return false; case SRV_PR_NORMAL: return rhs->GetPreferences() == SRV_PR_LOW; case SRV_PR_HIGH: return rhs->GetPreferences() != SRV_PR_HIGH; default: wxFAIL; return false; } } }; void CServerList::Sort() { m_servers.sort(ServerPriorityComparator()); // Once the list has been sorted, it doesn't really make sense to continue // traversing the new order from the old position. Plus, there's a bug in // version of libstdc++ before gcc4 such that iterators that were equal to // end() were left dangling. m_serverpos = m_servers.begin(); m_statserverpos = m_servers.begin(); } CServer* CServerList::GetNextServer(bool bOnlyObfuscated) { while (bOnlyObfuscated && (m_serverpos != m_servers.end()) && !((*m_serverpos)->SupportsObfuscationTCP() || (*m_serverpos)->SupportsObfuscationUDP())) { wxASSERT(*m_serverpos != NULL); ++m_serverpos; } if (m_serverpos == m_servers.end()) { return 0; } else { if (*m_serverpos) { return *m_serverpos++; } else { return 0; } } } CServer* CServerList::GetNextStatServer() { if (m_statserverpos == m_servers.end()) { m_statserverpos = m_servers.begin(); } if (m_statserverpos == m_servers.end()) { return 0; } else { wxASSERT(*m_statserverpos != NULL); return *m_statserverpos++; } } CServer* CServerList::GetServerByAddress(const wxString& address, uint16 port) const { for (CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it) { CServer* const s = *it; if (port == s->GetPort() && s->GetAddress() == address) { return s; } } return NULL; } CServer* CServerList::GetServerByIP(uint32 nIP) const { for (CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it){ CServer* const s = *it; if (s->GetIP() == nIP) return s; } return NULL; } CServer* CServerList::GetServerByIPTCP(uint32 nIP, uint16 nPort) const { for (CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it){ CServer* const s = *it; if (s->GetIP() == nIP && s->GetPort() == nPort) return s; } return NULL; } CServer* CServerList::GetServerByIPUDP(uint32 nIP, uint16 nUDPPort, bool bObfuscationPorts) const { for (CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it){ CServer* const s =*it; if (s->GetIP() == nIP && (s->GetPort() == nUDPPort-4 || (bObfuscationPorts && s->GetObfuscationPortUDP() == nUDPPort) || s->GetPort() == nUDPPort - 12)) return s; } return NULL; } CServer* CServerList::GetServerByECID(uint32 ecid) const { for (CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it){ CServer* const s = *it; if (s->ECID() == ecid) { return s; } } return NULL; } void CServerList::SetStaticServer(CServer* server, bool isStatic) { server->SetIsStaticMember(isStatic); Notify_ServerRefresh(server); SaveStaticServers(); } void CServerList::SetServerPrio(CServer* server, uint32 prio) { server->SetPreference(prio); Notify_ServerRefresh(server); } bool CServerList::SaveServerMet() { CPath curservermet = CPath(thePrefs::GetConfigDir() + wxT("server.met")); CFile servermet(curservermet, CFile::write_safe); if (!servermet.IsOpened()) { AddLogLineN(_("Failed to save server.met!")); return false; } try { servermet.WriteUInt8(0xE0); servermet.WriteUInt32( m_servers.size() ); for ( CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it) { const CServer* const server = *it; uint16 tagcount = 12; if (!server->GetListName().IsEmpty()) { ++tagcount; } if (!server->GetDynIP().IsEmpty()) { ++tagcount; } if (!server->GetDescription().IsEmpty()) { ++tagcount; } if (server->GetConnPort() != server->GetPort()) { ++tagcount; } // For unicoded name, description, and dynip if ( !server->GetListName().IsEmpty() ) { ++tagcount; } if ( !server->GetDynIP().IsEmpty() ) { ++tagcount; } if ( !server->GetDescription().IsEmpty() ) { ++tagcount; } if (!server->GetVersion().IsEmpty()) { ++tagcount; } if (server->GetServerKeyUDP(true)) { ++tagcount; } if (server->GetServerKeyUDPIP()) { ++tagcount; } if (server->GetObfuscationPortTCP()) { ++tagcount; } if (server->GetObfuscationPortUDP()) { ++tagcount; } servermet.WriteUInt32(server->GetIP()); servermet.WriteUInt16(server->GetPort()); servermet.WriteUInt32(tagcount); if ( !server->GetListName().IsEmpty() ) { // This is BOM to keep eMule compatibility CTagString( ST_SERVERNAME, server->GetListName()).WriteTagToFile( &servermet, utf8strOptBOM); CTagString( ST_SERVERNAME, server->GetListName()).WriteTagToFile( &servermet ); } if ( !server->GetDynIP().IsEmpty() ) { // This is BOM to keep eMule compatibility CTagString( ST_DYNIP, server->GetDynIP()).WriteTagToFile( &servermet, utf8strOptBOM ); CTagString( ST_DYNIP, server->GetDynIP()).WriteTagToFile( &servermet ); } if ( !server->GetDescription().IsEmpty() ) { // This is BOM to keep eMule compatibility CTagString( ST_DESCRIPTION, server->GetDescription()).WriteTagToFile( &servermet, utf8strOptBOM ); CTagString( ST_DESCRIPTION, server->GetDescription()).WriteTagToFile( &servermet ); } if ( server->GetConnPort() != server->GetPort() ) { CTagString( ST_AUXPORTSLIST, server->GetAuxPortsList() ).WriteTagToFile( &servermet ); } CTagInt32( ST_FAIL, server->GetFailedCount() ).WriteTagToFile( &servermet ); CTagInt32( ST_PREFERENCE, server->GetPreferences() ).WriteTagToFile( &servermet ); CTagInt32( wxT("users"), server->GetUsers() ).WriteTagToFile( &servermet ); CTagInt32( wxT("files"), server->GetFiles() ).WriteTagToFile( &servermet ); CTagInt32( ST_PING, server->GetPing() ).WriteTagToFile( &servermet ); CTagInt32( ST_LASTPING, server->GetLastPingedTime()).WriteTagToFile( &servermet ); CTagInt32( ST_MAXUSERS, server->GetMaxUsers() ).WriteTagToFile( &servermet ); CTagInt32( ST_SOFTFILES, server->GetSoftFiles() ).WriteTagToFile( &servermet ); CTagInt32( ST_HARDFILES, server->GetHardFiles() ).WriteTagToFile( &servermet ); if (!server->GetVersion().IsEmpty()){ CTagString( ST_VERSION, server->GetVersion() ).WriteTagToFile( &servermet, utf8strOptBOM ); CTagString( ST_VERSION, server->GetVersion() ).WriteTagToFile( &servermet ); } CTagInt32( ST_UDPFLAGS, server->GetUDPFlags() ).WriteTagToFile( &servermet ); CTagInt32( ST_LOWIDUSERS, server->GetLowIDUsers() ).WriteTagToFile( &servermet ); if (server->GetServerKeyUDP(true)) { CTagInt32(ST_UDPKEY, server->GetServerKeyUDP(true)).WriteTagToFile( &servermet ); } if (server->GetServerKeyUDPIP()) { CTagInt32(ST_UDPKEYIP, server->GetServerKeyUDPIP()).WriteTagToFile( &servermet ); } if (server->GetObfuscationPortTCP()) { CTagInt16(ST_TCPPORTOBFUSCATION, server->GetObfuscationPortTCP()).WriteTagToFile( &servermet ); } if (server->GetObfuscationPortUDP()) { CTagInt16(ST_UDPPORTOBFUSCATION, server->GetObfuscationPortUDP()).WriteTagToFile( &servermet ); } } // Now server.met.new is ready to be closed and renamed to server.met. // But first rename existing server.met to server.met.bak (replacing old .bak file). const CPath oldservermet = CPath(thePrefs::GetConfigDir() + wxT("server.met.bak")); if (curservermet.FileExists()) { CPath::RenameFile(curservermet, oldservermet, true); } servermet.Close(); } catch (const CIOFailureException& e) { AddLogLineC(wxT("IO failure while writing 'server.met': ") + e.what()); return false; } return true; } void CServerList::RemoveDeadServers() { if ( thePrefs::DeadServer() ) { for ( CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ) { CServer* server = *it++; if ( server->GetFailedCount() > thePrefs::GetDeadserverRetries() && !server->IsStaticMember()) { RemoveServer(server); } } } } void CServerList::UpdateServerMetFromURL(const wxString& strURL) { if (strURL.Find(wxT("://")) == -1) { AddLogLineC(_("Invalid URL")); return; } m_URLUpdate = strURL; wxString strTempFilename(thePrefs::GetConfigDir() + wxT("server.met.download")); CHTTPDownloadThread *downloader = new CHTTPDownloadThread(strURL, strTempFilename, thePrefs::GetConfigDir() + wxT("server.met"), HTTP_ServerMet, false, false); downloader->Create(); downloader->Run(); } bool CServerList::DownloadFinished(uint32 result) { bool ret = false; if(result == HTTP_Success) { const CPath tempFilename = CPath(thePrefs::GetConfigDir() + wxT("server.met.download")); // curl succeeded. proceed with server.met loading LoadServerMet(tempFilename); SaveServerMet(); // So, file is loaded and merged, and also saved CPath::RemoveFile(tempFilename); AddLogLineN(CFormat(_("Finished downloading the server list from %s")) % m_URLUpdate); ret = true; // cppcheck-suppress duplicateBranch } else if (result == HTTP_Skipped) { AddLogLineN(CFormat(_("Skipped download of %s, because requested file is not newer.")) % wxT("server.met")); } else { AddLogLineC(CFormat(_("Failed to download %s from %s")) % wxT("server.met") % m_URLUpdate); } return ret; } void CServerList::AutoUpdate() { uint8 url_count = theApp->glob_prefs->adresses_list.GetCount(); if (!url_count) { AddLogLineC(_("No server list address entry in 'addresses.dat' found. Please paste a valid server list address into this file in order to auto-update your server list")); return; } // Do current URL. Callback function will take care of the others. while ( current_url_index < url_count ) { wxString URI = theApp->glob_prefs->adresses_list[current_url_index]; // We use wxURL to validate the URI if ( wxURL( URI ).GetError() == wxURL_NOERR ) { // Ok, got a valid URI m_URLUpdate = URI; wxString strTempFilename = thePrefs::GetConfigDir() + wxT("server_auto.met"); AddLogLineC(CFormat( _("Start downloading server list from %s")) % URI); CHTTPDownloadThread *downloader = new CHTTPDownloadThread( URI, strTempFilename, thePrefs::GetConfigDir() + wxT("server.met"), HTTP_ServerMetAuto, false, false); downloader->Create(); downloader->Run(); return; } else { AddLogLineC(CFormat( _("WARNING: invalid URL specified for auto-updating of servers: %s") ) % URI); } current_url_index++; } AddLogLineC(_("No valid server.met auto-download url on addresses.dat")); } void CServerList::AutoDownloadFinished(uint32 result) { if (result == HTTP_Success) { CPath tempFilename = CPath(thePrefs::GetConfigDir() + wxT("server_auto.met")); // curl succeeded. proceed with server.met loading LoadServerMet(tempFilename); SaveServerMet(); // So, file is loaded and merged, and also saved CPath::RemoveFile(tempFilename); } else { AddLogLineC(CFormat(_("Failed to download the server list from %s") ) % m_URLUpdate); } ++current_url_index; if (current_url_index < theApp->glob_prefs->adresses_list.GetCount()) { // Next! AutoUpdate(); } } void CServerList::ObserverAdded( ObserverType* o ) { CObservableQueue::ObserverAdded( o ); EventType::ValueList ilist; ilist.reserve( m_servers.size() ); ilist.assign( m_servers.begin(), m_servers.end() ); NotifyObservers( EventType( EventType::INITIAL, &ilist ), o ); } uint32 CServerList::GetAvgFile() const { //Since there is no real way to know how many files are in the kad network, //I figure to try to use the ED2K network stats to find how many files the //average user shares.. uint32 totaluser = 0; uint32 totalfile = 0; for (CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it){ const CServer* const curr = *it; //If this server has reported Users/Files and doesn't limit it's files too much //use this in the calculation.. if( curr->GetUsers() && curr->GetFiles() && curr->GetSoftFiles() > 1000 ) { totaluser += curr->GetUsers(); totalfile += curr->GetFiles(); } } //If the user count is a little low, don't send back a average.. //I added 50 to the count as many servers do not allow a large amount of files to be shared.. //Therefore the estimate here will be lower then the actual. //I would love to add a way for the client to send some statistics back so we could see the real //values here.. if ( totaluser > 500000 ) { return (totalfile/totaluser)+50; } else { return 0; } } std::vector CServerList::CopySnapshot() const { std::vector result; result.reserve(m_servers.size()); result.assign(m_servers.begin(), m_servers.end()); return result; } void CServerList::FilterServers() { CInternalList::iterator it = m_servers.begin(); while (it != m_servers.end()) { CServer* server = *it++; if (server->HasDynIP()) { continue; } if (theApp->ipfilter->IsFiltered(server->GetIP(), true)) { if (server == theApp->serverconnect->GetCurrentServer()) { AddLogLineC(_("Local server is filtered by the IPFilters, reconnecting to a different server!")); theApp->serverconnect->Disconnect(); RemoveServer(server); theApp->serverconnect->ConnectToAnyServer(); } else { RemoveServer(server); } } } } void CServerList::CheckForExpiredUDPKeys() { if (!thePrefs::IsServerCryptLayerUDPEnabled()) { return; } uint32 cKeysTotal = 0; uint32 cKeysExpired = 0; uint32 cPingDelayed = 0; const uint32 dwIP = theApp->GetPublicIP(); const uint32 tNow = ::GetTickCount(); wxASSERT( dwIP != 0 ); for (CInternalList::const_iterator it = m_servers.begin(); it != m_servers.end(); ++it) { CServer* pServer = *it; if (pServer->SupportsObfuscationUDP() && pServer->GetServerKeyUDP(true) != 0 && pServer->GetServerKeyUDPIP() != dwIP){ cKeysTotal++; cKeysExpired++; if (tNow - pServer->GetRealLastPingedTime() < UDPSERVSTATMINREASKTIME){ cPingDelayed++; // next ping: Now + (MinimumDelay - already elapsed time) pServer->SetLastPingedTime((tNow - (uint32)UDPSERVSTATREASKTIME) + (UDPSERVSTATMINREASKTIME - (tNow - pServer->GetRealLastPingedTime()))); } else { pServer->SetLastPingedTime(0); } } else if (pServer->SupportsObfuscationUDP() && pServer->GetServerKeyUDP(false) != 0) { cKeysTotal++; } } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ServerList.h0000644000175000017500000000701612611472361020551 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SERVERLIST_H #define SERVERLIST_H #include "ObservableQueue.h" class CServer; class CPacket; class CServerList : public CObservableQueue { friend class CServerListCtrl; public: CServerList(); ~CServerList(); bool Init(); bool AddServer(CServer* in_server, bool fromUser = false); void RemoveServer(CServer* in_server); void RemoveAllServers(); void RemoveDeadServers(); bool LoadServerMet(const CPath& path); bool SaveServerMet(); void ServerStats(); void ResetServerPos() {m_serverpos = m_servers.begin();} CServer* GetNextServer(bool bOnlyObfuscated = false); size_t GetServerCount() {return m_servers.size();} CServer* GetServerByAddress(const wxString& address, uint16 port) const; CServer* GetServerByIP(uint32 nIP) const; CServer* GetServerByIPTCP(uint32 nIP, uint16 nPort) const; CServer* GetServerByIPUDP(uint32 nIP, uint16 nUDPPort, bool bObfuscationPorts = true) const; CServer* GetServerByECID(uint32 ecid) const; void GetStatus(uint32 &failed, uint32 &user, uint32 &file, uint32 &tuser, uint32 &tfile, float &occ); void GetUserFileStatus( uint32 &user, uint32 &file); bool IsInitialized() const { return m_initialized; } void Sort(); void UpdateServerMetFromURL(const wxString& strURL); bool DownloadFinished(uint32 result); void AutoDownloadFinished(uint32 result); uint32 GetAvgFile() const; std::vector CopySnapshot() const; /** Refilters all servers though the IPFilter. */ void FilterServers(); void CheckForExpiredUDPKeys(); /** * Marks the specified server as static or not. * * @param The server to be marked or unmarked as static. * @param The new static state. * * Other than setting the static setting of the specified server, it * also adds or removes the server from the static-list file. */ void SetStaticServer(CServer* server, bool isStatic); void SetServerPrio(CServer* server, uint32 prio); private: virtual void ObserverAdded( ObserverType* ); void AutoUpdate(); CServer* GetNextStatServer(); wxString m_staticServersConfig; void LoadStaticServers(); void SaveStaticServers(); uint8 current_url_index; typedef std::list CInternalList; CInternalList m_servers; CInternalList::const_iterator m_serverpos; CInternalList::const_iterator m_statserverpos; uint32 m_nLastED2KServerLinkCheck;// emanuelw(20030924) added wxString m_URLUpdate; bool m_initialized; }; #endif // SERVERLIST_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ServerListCtrl.cpp0000644000175000017500000004626712611472361021744 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ServerListCtrl.h" // Interface declarations #include #include #include #include #include #include "amule.h" // Needed for theApp #include "DownloadQueue.h" // Needed for CDownloadQueue #ifdef ENABLE_IP2COUNTRY #include "IP2Country.h" // Needed for IP2Country #include "amuleDlg.h" // Needed for IP2Country #endif #include "ServerList.h" // Needed for CServerList #include "ServerConnect.h" // Needed for CServerConnect #include "Server.h" // Needed for CServer and SRV_PR_* #include "Logger.h" #include // Needed for CFormat #include "Preferences.h" // Needed for thePrefs #define CMuleColour(x) (wxSystemSettings::GetColour(x)) BEGIN_EVENT_TABLE(CServerListCtrl,CMuleListCtrl) EVT_LIST_ITEM_RIGHT_CLICK( -1, CServerListCtrl::OnItemRightClicked) EVT_LIST_ITEM_ACTIVATED( -1, CServerListCtrl::OnItemActivated ) EVT_MENU( MP_PRIOLOW, CServerListCtrl::OnPriorityChange ) EVT_MENU( MP_PRIONORMAL, CServerListCtrl::OnPriorityChange ) EVT_MENU( MP_PRIOHIGH, CServerListCtrl::OnPriorityChange ) EVT_MENU( MP_ADDTOSTATIC, CServerListCtrl::OnStaticChange ) EVT_MENU( MP_REMOVEFROMSTATIC, CServerListCtrl::OnStaticChange ) EVT_MENU( MP_CONNECTTO, CServerListCtrl::OnConnectToServer ) EVT_MENU( MP_REMOVE, CServerListCtrl::OnRemoveServers ) EVT_MENU( MP_REMOVEALL, CServerListCtrl::OnRemoveServers ) EVT_MENU( MP_GETED2KLINK, CServerListCtrl::OnGetED2kURL ) EVT_CHAR( CServerListCtrl::OnKeyPressed ) END_EVENT_TABLE() CServerListCtrl::CServerListCtrl( wxWindow *parent, wxWindowID winid, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name ) : CMuleListCtrl( parent, winid, pos, size, style, validator, name ) { // Setting the sorter function. SetSortFunc( SortProc ); // Set the table-name (for loading and saving preferences). SetTableName( wxT("Server") ); m_connected = 0; InsertColumn( COLUMN_SERVER_NAME, _("Server Name"), wxLIST_FORMAT_LEFT, 150, wxT("N") ); InsertColumn( COLUMN_SERVER_ADDR, _("Address"), wxLIST_FORMAT_LEFT, 140, wxT("A") ); InsertColumn( COLUMN_SERVER_PORT, _("Port"), wxLIST_FORMAT_LEFT, 25, wxT("P") ); InsertColumn( COLUMN_SERVER_DESC, _("Description"), wxLIST_FORMAT_LEFT, 150, wxT("D") ); InsertColumn( COLUMN_SERVER_PING, _("Ping"), wxLIST_FORMAT_LEFT, 25, wxT("p") ); InsertColumn( COLUMN_SERVER_USERS, _("Users"), wxLIST_FORMAT_LEFT, 40, wxT("U") ); InsertColumn( COLUMN_SERVER_FILES, _("Files"), wxLIST_FORMAT_LEFT, 45, wxT("F") ); InsertColumn( COLUMN_SERVER_PRIO, _("Priority"), wxLIST_FORMAT_LEFT, 60, wxT("r") ); InsertColumn( COLUMN_SERVER_FAILS, _("Failed"), wxLIST_FORMAT_LEFT, 40, wxT("f") ); InsertColumn( COLUMN_SERVER_STATIC, _("Static"), wxLIST_FORMAT_LEFT, 40, wxT("S") ); InsertColumn( COLUMN_SERVER_VERSION, _("Version"), wxLIST_FORMAT_LEFT, 80, wxT("V") ); #ifdef __DEBUG__ InsertColumn( COLUMN_SERVER_TCPFLAGS, wxT("TCP Flags"), wxLIST_FORMAT_LEFT, 80, wxT("t") ); InsertColumn( COLUMN_SERVER_UDPFLAGS, wxT("UDP Flags"), wxLIST_FORMAT_LEFT, 80, wxT("u") ); #endif LoadSettings(); } wxString CServerListCtrl::GetOldColumnOrder() const { return wxT("N,A,P,D,p,U,F,r,f,S,V,t,u"); } CServerListCtrl::~CServerListCtrl() { } void CServerListCtrl::AddServer( CServer* toadd ) { // RefreshServer will add the server. // This also means that we have simple duplicity checking. ;) RefreshServer( toadd ); ShowServerCount(); } void CServerListCtrl::RemoveServer(CServer* server) { long result = FindItem(-1, reinterpret_cast(server)); if ( result != -1 ) { DeleteItem(result); ShowServerCount(); } } void CServerListCtrl::RemoveAllServers(int state) { int pos = GetNextItem( -1, wxLIST_NEXT_ALL, state); bool connected = theApp->IsConnectedED2K() || theApp->serverconnect->IsConnecting(); while ( pos != -1 ) { CServer* server = reinterpret_cast(GetItemData(pos)); if (server == m_connected && connected) { wxMessageBox(_("You are connected to a server you are trying to delete. Please disconnect first. The server was NOT deleted."), _("Info"), wxOK, this); ++pos; } else if (server->IsStaticMember()) { const wxString name = (!server->GetListName() ? wxString(_("(Unknown name)")) : server->GetListName()); if (wxMessageBox(CFormat(_("Are you sure you want to delete the static server %s")) % name, _("Cancel"), wxICON_QUESTION | wxYES_NO, this) == wxYES) { theApp->serverlist->SetStaticServer(server, false); DeleteItem( pos ); theApp->serverlist->RemoveServer( server ); } else { ++pos; } } else { DeleteItem( pos ); theApp->serverlist->RemoveServer( server ); } pos = GetNextItem(pos - 1, wxLIST_NEXT_ALL, state); } ShowServerCount(); } void CServerListCtrl::RefreshServer( CServer* server ) { // Cant really refresh a NULL server if (!server) { return; } wxUIntPtr ptr = reinterpret_cast(server); long itemnr = FindItem( -1, ptr ); if ( itemnr == -1 ) { // We are not at the sure that the server isn't in the list, so we can re-add itemnr = InsertItem( GetInsertPos( ptr ), server->GetListName() ); SetItemPtrData( itemnr, ptr ); wxListItem item; item.SetId( itemnr ); item.SetBackgroundColour(CMuleColour(wxSYS_COLOUR_LISTBOX)); SetItem( item ); } wxString serverName; #ifdef ENABLE_IP2COUNTRY // Get the country name if (theApp->amuledlg->m_IP2Country->IsEnabled() && thePrefs::IsGeoIPEnabled()) { const CountryData& countrydata = theApp->amuledlg->m_IP2Country->GetCountryData(server->GetFullIP()); serverName << countrydata.Name; serverName << wxT(" - "); } #endif // ENABLE_IP2COUNTRY serverName << server->GetListName(); SetItem(itemnr, COLUMN_SERVER_NAME, serverName); SetItem(itemnr, COLUMN_SERVER_ADDR, server->GetAddress()); if (server->GetAuxPortsList().IsEmpty()) { SetItem( itemnr, COLUMN_SERVER_PORT, CFormat(wxT("%u")) % server->GetPort()); } else { SetItem( itemnr, COLUMN_SERVER_PORT, CFormat(wxT("%u (%s)")) % server->GetPort() % server->GetAuxPortsList()); } SetItem( itemnr, COLUMN_SERVER_DESC, server->GetDescription() ); if ( server->GetPing() ) { SetItem( itemnr, COLUMN_SERVER_PING, CastSecondsToHM(server->GetPing()/1000, server->GetPing() % 1000 ) ); } else { SetItem( itemnr, COLUMN_SERVER_PING, wxEmptyString ); } if ( server->GetUsers() ) { SetItem( itemnr, COLUMN_SERVER_USERS, CFormat(wxT("%u")) % server->GetUsers()); } else { SetItem( itemnr, COLUMN_SERVER_USERS, wxEmptyString ); } if ( server->GetFiles() ) { SetItem( itemnr, COLUMN_SERVER_FILES, CFormat(wxT("%u")) % server->GetFiles()); } else { SetItem( itemnr, COLUMN_SERVER_FILES, wxEmptyString ); } switch ( server->GetPreferences() ) { case SRV_PR_LOW: SetItem(itemnr, COLUMN_SERVER_PRIO, _("Low")); break; case SRV_PR_NORMAL: SetItem(itemnr, COLUMN_SERVER_PRIO, _("Normal")); break; case SRV_PR_HIGH: SetItem(itemnr, COLUMN_SERVER_PRIO, _("High") ); break; default: SetItem(itemnr, COLUMN_SERVER_PRIO, wxT("---")); // this should never happen } SetItem( itemnr, COLUMN_SERVER_FAILS, CFormat(wxT("%u")) % server->GetFailedCount()); SetItem( itemnr, COLUMN_SERVER_STATIC, ( server->IsStaticMember() ? _("Yes") : _("No") ) ); SetItem( itemnr, COLUMN_SERVER_VERSION, server->GetVersion() ); #if defined(__DEBUG__) && !defined(CLIENT_GUI) wxString flags; /* TCP */ if (server->GetTCPFlags() & SRV_TCPFLG_COMPRESSION) { flags += wxT("c"); } if (server->GetTCPFlags() & SRV_TCPFLG_NEWTAGS) { flags += wxT("n"); } if (server->GetTCPFlags() & SRV_TCPFLG_UNICODE) { flags += wxT("u"); } if (server->GetTCPFlags() & SRV_TCPFLG_RELATEDSEARCH) { flags += wxT("r"); } if (server->GetTCPFlags() & SRV_TCPFLG_TYPETAGINTEGER) { flags += wxT("t"); } if (server->GetTCPFlags() & SRV_TCPFLG_LARGEFILES) { flags += wxT("l"); } if (server->GetTCPFlags() & SRV_TCPFLG_TCPOBFUSCATION) { flags += wxT("o"); } SetItem( itemnr, COLUMN_SERVER_TCPFLAGS, flags ); /* UDP */ flags.Clear(); if (server->GetUDPFlags() & SRV_UDPFLG_EXT_GETSOURCES) { flags += wxT("g"); } if (server->GetUDPFlags() & SRV_UDPFLG_EXT_GETFILES) { flags += wxT("f"); } if (server->GetUDPFlags() & SRV_UDPFLG_NEWTAGS) { flags += wxT("n"); } if (server->GetUDPFlags() & SRV_UDPFLG_UNICODE) { flags += wxT("u"); } if (server->GetUDPFlags() & SRV_UDPFLG_EXT_GETSOURCES2) { flags += wxT("G"); } if (server->GetUDPFlags() & SRV_UDPFLG_LARGEFILES) { flags += wxT("l"); } if (server->GetUDPFlags() & SRV_UDPFLG_UDPOBFUSCATION) { flags += wxT("o"); } if (server->GetUDPFlags() & SRV_UDPFLG_TCPOBFUSCATION) { flags += wxT("O"); } SetItem( itemnr, COLUMN_SERVER_UDPFLAGS, flags ); #endif // Deletions of items causes rather large ammount of flicker, so to // avoid this, we resort the list to ensure correct ordering. if (!IsItemSorted(itemnr)) { SortList(); } } void CServerListCtrl::HighlightServer( const CServer* server, bool highlight ) { // Unset the old highlighted server if we are going to set a new one if ( m_connected && highlight ) { // A recursive call to do the real work. HighlightServer( m_connected, false ); m_connected = 0; } long itemnr = FindItem( -1, reinterpret_cast(server) ); if ( itemnr > -1 ) { wxListItem item; item.SetId( itemnr ); if ( GetItem( item ) ) { wxFont font = GetFont(); if ( highlight ) { font.SetWeight( wxBOLD ); m_connected = server; } item.SetFont( font ); SetItem( item ); } } } void CServerListCtrl::ShowServerCount() { wxStaticText* label = CastByName( wxT("serverListLabel"), GetParent(), wxStaticText ); if ( label ) { label->SetLabel(CFormat(_("Servers (%i)")) % GetItemCount()); label->GetParent()->Layout(); } } void CServerListCtrl::OnItemActivated( wxListEvent& event ) { // Unselect all items but the activated one long item = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while ( item > -1 ) { SetItemState( item, 0, wxLIST_STATE_SELECTED); item = GetNextItem( item, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } SetItemState( event.GetIndex(), wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED ); wxCommandEvent nulEvt; OnConnectToServer( nulEvt ); } void CServerListCtrl::OnItemRightClicked(wxListEvent& event) { // Check if clicked item is selected. If not, unselect all and select it. long index = CheckSelection(event); bool enable_reconnect = false; bool enable_static_on = false; bool enable_static_off = false; // Gather information on the selected items while ( index > -1 ) { CServer* server = reinterpret_cast(GetItemData(index)); // The current server is selected, so we might display the reconnect option if (server == m_connected) { enable_reconnect = true; } // We want to know which options should be enabled, either one or both enable_static_on |= !server->IsStaticMember(); enable_static_off |= server->IsStaticMember(); index = GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } wxMenu* serverMenu = new wxMenu(_("Server")); wxMenu* serverPrioMenu = new wxMenu(); serverPrioMenu->Append( MP_PRIOLOW, _("Low") ); serverPrioMenu->Append( MP_PRIONORMAL, _("Normal") ); serverPrioMenu->Append( MP_PRIOHIGH, _("High") ); serverMenu->Append( MP_CONNECTTO, _("Connect to server") ); serverMenu->Append( 12345, _("Priority"), serverPrioMenu ); serverMenu->AppendSeparator(); if (GetSelectedItemCount() == 1) { serverMenu->Append( MP_ADDTOSTATIC, _("Mark server as static") ); serverMenu->Append( MP_REMOVEFROMSTATIC, _("Mark server as non-static") ); } else { serverMenu->Append( MP_ADDTOSTATIC, _("Mark servers as static") ); serverMenu->Append( MP_REMOVEFROMSTATIC, _("Mark servers as non-static") ); } serverMenu->AppendSeparator(); if (GetSelectedItemCount() == 1) { serverMenu->Append( MP_REMOVE, _("Remove server") ); } else { serverMenu->Append( MP_REMOVE, _("Remove servers") ); } serverMenu->Append( MP_REMOVEALL, _("Remove all servers") ); serverMenu->AppendSeparator(); if (GetSelectedItemCount() == 1) { serverMenu->Append( MP_GETED2KLINK, _("Copy eD2k link to clipboard") ); } else { serverMenu->Append( MP_GETED2KLINK, _("Copy eD2k links to clipboard") ); } serverMenu->Enable( MP_REMOVEFROMSTATIC, enable_static_off ); serverMenu->Enable( MP_ADDTOSTATIC, enable_static_on ); if ( GetSelectedItemCount() == 1 ) { if ( enable_reconnect ) serverMenu->SetLabel( MP_CONNECTTO, _("Reconnect to server") ); } else { serverMenu->Enable( MP_CONNECTTO, false ); } PopupMenu( serverMenu, event.GetPoint() ); delete serverMenu; } void CServerListCtrl::OnPriorityChange( wxCommandEvent& event ) { uint32 priority = 0; switch ( event.GetId() ) { case MP_PRIOLOW: priority = SRV_PR_LOW; break; case MP_PRIONORMAL: priority = SRV_PR_NORMAL; break; case MP_PRIOHIGH: priority = SRV_PR_HIGH; break; default: return; } ItemDataList items = GetSelectedItems(); for ( unsigned int i = 0; i < items.size(); ++i ) { CServer* server = reinterpret_cast(items[i]); theApp->serverlist->SetServerPrio(server, priority); } } void CServerListCtrl::OnStaticChange( wxCommandEvent& event ) { bool isStatic = ( event.GetId() == MP_ADDTOSTATIC ); ItemDataList items = GetSelectedItems(); for ( unsigned int i = 0; i < items.size(); ++i ) { CServer* server = reinterpret_cast(items[i]); // Only update items that have the wrong setting if ( server->IsStaticMember() != isStatic ) { theApp->serverlist->SetStaticServer(server, isStatic); } } } void CServerListCtrl::OnConnectToServer( wxCommandEvent& WXUNUSED(event) ) { int item = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); if ( item > -1 ) { if ( theApp->IsConnectedED2K() ) { theApp->serverconnect->Disconnect(); } theApp->serverconnect->ConnectToServer( reinterpret_cast(GetItemData(item)) ); } } void CServerListCtrl::OnGetED2kURL( wxCommandEvent& WXUNUSED(event) ) { int pos = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); wxString URL; while ( pos != -1 ) { CServer* server = reinterpret_cast(GetItemData(pos)); URL += CFormat(wxT("ed2k://|server|%s|%d|/\n")) % server->GetFullIP() % server->GetPort(); pos = GetNextItem( pos, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } URL.RemoveLast(); theApp->CopyTextToClipboard( URL ); } void CServerListCtrl::OnRemoveServers( wxCommandEvent& event ) { if ( event.GetId() == MP_REMOVEALL ) { if ( GetItemCount() ) { wxString question = _("Are you sure that you wish to delete all servers?"); if ( wxMessageBox( question, _("Cancel"), wxICON_QUESTION | wxYES_NO, this) == wxYES ) { if ( theApp->serverconnect->IsConnecting() ) { theApp->downloadqueue->StopUDPRequests(); theApp->serverconnect->StopConnectionTry(); theApp->serverconnect->Disconnect(); } RemoveAllServers(wxLIST_STATE_DONTCARE); } } } else if ( event.GetId() == MP_REMOVE ) { if ( GetSelectedItemCount() ) { wxString question; if (GetSelectedItemCount() == 1) { question = _("Are you sure that you wish to delete the selected server?"); } else { question = _("Are you sure that you wish to delete the selected servers?"); } if ( wxMessageBox( question, _("Cancel"), wxICON_QUESTION | wxYES_NO, this) == wxYES ) { RemoveAllServers(wxLIST_STATE_SELECTED); } } } } void CServerListCtrl::OnKeyPressed( wxKeyEvent& event ) { // Check if delete was pressed if ((event.GetKeyCode() == WXK_DELETE) || (event.GetKeyCode() == WXK_NUMPAD_DELETE)) { wxCommandEvent evt; evt.SetId( MP_REMOVE ); OnRemoveServers( evt ); } else { event.Skip(); } } int CServerListCtrl::SortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData) { CServer* server1 = reinterpret_cast(item1); CServer* server2 = reinterpret_cast(item2); int mode = (sortData & CMuleListCtrl::SORT_DES) ? -1 : 1; switch (sortData & CMuleListCtrl::COLUMN_MASK) { // Sort by server-name case COLUMN_SERVER_NAME: return mode * server1->GetListName().CmpNoCase(server2->GetListName()); // Sort by address case COLUMN_SERVER_ADDR: { if ( server1->HasDynIP() && server2->HasDynIP()) { return mode * server1->GetDynIP().CmpNoCase( server2->GetDynIP() ); } else if (server1->HasDynIP()) { return mode * -1; } else if (server2->HasDynIP()) { return mode * 1; } else { uint32 a = wxUINT32_SWAP_ALWAYS(server1->GetIP()); uint32 b = wxUINT32_SWAP_ALWAYS(server2->GetIP()); return mode * CmpAny(a, b); } } // Sort by port case COLUMN_SERVER_PORT: return mode * CmpAny( server1->GetPort(), server2->GetPort() ); // Sort by description case COLUMN_SERVER_DESC: return mode * server1->GetDescription().CmpNoCase( server2->GetDescription() ); // Sort by Ping // The -1 ensures that a value of zero (no ping known) is sorted last. case COLUMN_SERVER_PING: return mode * CmpAny( server1->GetPing() - 1, server2->GetPing() -1 ); // Sort by user-count case COLUMN_SERVER_USERS: return mode * CmpAny( server1->GetUsers(), server2->GetUsers() ); // Sort by file-count case COLUMN_SERVER_FILES: return mode * CmpAny( server1->GetFiles(), server2->GetFiles() ); // Sort by priority case COLUMN_SERVER_PRIO: { uint32 srv_pr1 = server1->GetPreferences(); uint32 srv_pr2 = server2->GetPreferences(); switch ( srv_pr1 ) { case SRV_PR_HIGH: srv_pr1 = SRV_PR_MAX; break; case SRV_PR_NORMAL: srv_pr1 = SRV_PR_MID; break; case SRV_PR_LOW: srv_pr1 = SRV_PR_MIN; break; default: return 0; } switch ( srv_pr2 ) { case SRV_PR_HIGH: srv_pr2 = SRV_PR_MAX; break; case SRV_PR_NORMAL: srv_pr2 = SRV_PR_MID; break; case SRV_PR_LOW: srv_pr2 = SRV_PR_MIN; break; default: return 0; } return mode * CmpAny( srv_pr1, srv_pr2 ); } // Sort by failure-count case COLUMN_SERVER_FAILS: return mode * CmpAny( server1->GetFailedCount(), server2->GetFailedCount() ); // Sort by static servers case COLUMN_SERVER_STATIC: { return mode * CmpAny( server2->IsStaticMember(), server1->IsStaticMember() ); } // Sort by version case COLUMN_SERVER_VERSION: return mode * FuzzyStrCmp(server1->GetVersion(), server2->GetVersion()); default: return 0; } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ServerListCtrl.h0000644000175000017500000001253412611472361021377 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SERVERLISTCTRL_H #define SERVERLISTCTRL_H #include "MuleListCtrl.h" // Needed for CMuleListCtrl #define COLUMN_SERVER_NAME 0 #define COLUMN_SERVER_ADDR 1 #define COLUMN_SERVER_PORT 2 #define COLUMN_SERVER_DESC 3 #define COLUMN_SERVER_PING 4 #define COLUMN_SERVER_USERS 5 #define COLUMN_SERVER_FILES 6 #define COLUMN_SERVER_PRIO 7 #define COLUMN_SERVER_FAILS 8 #define COLUMN_SERVER_STATIC 9 #define COLUMN_SERVER_VERSION 10 #define COLUMN_SERVER_TCPFLAGS 11 #define COLUMN_SERVER_UDPFLAGS 12 class CServer; class CServerList; class wxListEvent; class wxCommandEvent; /** * The CServerListCtrl is used to display the list of servers which the user * can connect to and which we request sources from. It is a permanently sorted * list in that it always ensure that the items are sorted in the correct order. */ class CServerListCtrl : public CMuleListCtrl { public: /** * Constructor. * * @see CMuleListCtrl::CMuleListCtrl */ CServerListCtrl( wxWindow *parent, wxWindowID winid = -1, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, const wxString &name = wxT("mulelistctrl") ); /** * Destructor. */ virtual ~CServerListCtrl(); /** * Adds a server to the list. * * @param A pointer to the new server. * * Internally this function calls RefreshServer and ShowServerCount, with * the result that it is legal to add servers already in the list, though * not recommended. */ void AddServer( CServer* toadd ); /** * Removes a server from the displayed list. */ void RemoveServer(CServer* server); /** * Removes all servers with the specified state. * * @param state All items with this state will be removed, default being all. */ void RemoveAllServers(int state = wxLIST_STATE_DONTCARE); /** * Updates the displayed information on a server. * * @param server The server to be updated. * * This function will not only update the displayed information, it will also * reposition the item should it be nescecarry to enforce the current sorting. * Also note that this function does not require that the server actually is * on the list already, since AddServer makes use of it, but this should * generally be avoided, since it will result in the server-count getting * skewed until the next AddServer call. */ void RefreshServer( CServer* server ); /** * Sets the highlighting of the specified server. * * @param server The server to have its highlighting set. * @param highlight The new highlighting state. * * Please note that only _one_ item is allowed to be highlighted at any * one time, so calling this function while another item is already * highlighted will result in the old item not being highlighted any more. */ void HighlightServer( const CServer* server, bool highlight ); /** * This function updates the server-count in the server-wnd. */ void ShowServerCount(); protected: /// Return old column order. wxString GetOldColumnOrder() const; private: /** * Event-handler for handling item activation (connect). */ void OnItemActivated( wxListEvent& event ); /** * Event-handler for displaying the popup-menu. */ void OnItemRightClicked( wxListEvent& event ); /** * Event-handler for priority changes. */ void OnPriorityChange( wxCommandEvent& event ); /** * Event-handler for static changes. */ void OnStaticChange( wxCommandEvent& event ); /** * Event-handler for server connections. */ void OnConnectToServer( wxCommandEvent& event ); /** * Event-handler for copying server-urls to the clipboard. */ void OnGetED2kURL( wxCommandEvent& event ); /** * Event-handler for server removal. */ void OnRemoveServers( wxCommandEvent& event ); /** * Event-handler for deleting servers when the delete-key is pressed. */ void OnKeyPressed( wxKeyEvent& event ); /** * Sorter function. * * @see wxListCtrl::SortItems */ static int wxCALLBACK SortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData); //! Used to keep track of the last high-lighted item. const CServer* m_connected; DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ServerSocket.cpp0000644000175000017500000005705312611472361021427 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ServerSocket.h" // Interface declarations #include #include #include #include #include "Packet.h" // Needed for CPacket #include "updownclient.h" // Needed for CUpDownClient #include "ClientList.h" // Needed for CClientList #include "MemFile.h" // Needed for CMemFile #include "PartFile.h" // Needed for CPartFile #include "SearchList.h" // Needed for CSearchList #include "Preferences.h" // Needed for CPreferences #include "DownloadQueue.h" // Needed for CDownloadQueue #include "ServerList.h" // Needed for CServerList #include "Server.h" // Needed for CServer #include "amule.h" // Needed for theApp #include "Statistics.h" // Needed for theStats #include "AsyncDNS.h" // Needed for CAsyncDNS #include "Logger.h" #include #include "IPFilter.h" #include "GuiEvents.h" // Needed for Notify_* #ifdef ASIO_SOCKETS # include #endif //------------------------------------------------------------------------------ // CServerSocketHandler //------------------------------------------------------------------------------ class CServerSocketHandler: public wxEvtHandler { public: CServerSocketHandler() {}; public: private: void ServerSocketHandler(wxSocketEvent& event); DECLARE_EVENT_TABLE() }; BEGIN_EVENT_TABLE(CServerSocketHandler, wxEvtHandler) EVT_SOCKET(ID_SERVERSOCKET_EVENT, CServerSocketHandler::ServerSocketHandler) END_EVENT_TABLE() void CServerSocketHandler::ServerSocketHandler(wxSocketEvent& event) { CServerSocket *socket = dynamic_cast(event.GetSocket()); wxASSERT(socket); if (!socket) { return; } if (socket->IsDestroying()) { return; } switch(event.GetSocketEvent()) { case wxSOCKET_CONNECTION: socket->OnConnect(wxSOCKET_NOERROR); break; case wxSOCKET_LOST: socket->OnError(socket->LastError()); break; case wxSOCKET_INPUT: socket->OnReceive(wxSOCKET_NOERROR); break; case wxSOCKET_OUTPUT: socket->OnSend(wxSOCKET_NOERROR); break; default: wxFAIL; break; } } // // There can be only one. :) // static CServerSocketHandler g_serverSocketHandler; //------------------------------------------------------------------------------ // CServerSocket //------------------------------------------------------------------------------ CServerSocket::CServerSocket(CServerConnect* in_serverconnect, const CProxyData *ProxyData) : CEMSocket(ProxyData) { serverconnect = in_serverconnect; connectionstate = 0; cur_server = 0; info.Clear(); m_bIsDeleting = false; SetEventHandler(g_serverSocketHandler, ID_SERVERSOCKET_EVENT); SetNotify( wxSOCKET_CONNECTION_FLAG | wxSOCKET_INPUT_FLAG | wxSOCKET_OUTPUT_FLAG | wxSOCKET_LOST_FLAG); Notify(true); m_dwLastTransmission = 0; m_IsSolving = false; m_bNoCrypt = false; } CServerSocket::~CServerSocket() { // remove event handler... SetNotify(0); Notify(FALSE); if (cur_server) { delete cur_server; } cur_server = NULL; } void CServerSocket::OnConnect(int nErrorCode) { switch (nErrorCode) { #ifdef ASIO_SOCKETS case boost::system::errc::success: #else case wxSOCKET_NOERROR: #endif if (cur_server->HasDynIP()) { uint32 server_ip = GetPeerInt(); cur_server->SetID(server_ip); // GetServerByAddress may return NULL, so we must test! // This was the reason why amule would crash when trying to // connect in wxWidgets 2.5.2 CServer *pServer = theApp->serverlist->GetServerByAddress( cur_server->GetAddress(), cur_server->GetPort()); if (pServer) { pServer->SetID(server_ip); } else { AddDebugLogLineN(logServer, wxT("theApp->serverlist->GetServerByAddress() returned NULL")); return; } } SetConnectionState(CS_WAITFORLOGIN); break; #ifdef ASIO_SOCKETS case boost::system::errc::address_in_use: case boost::system::errc::address_not_available: case boost::system::errc::bad_address: case boost::system::errc::connection_refused: case boost::system::errc::host_unreachable: case boost::system::errc::invalid_argument: case boost::system::errc::timed_out: #else case wxSOCKET_INVADDR: case wxSOCKET_NOHOST: case wxSOCKET_INVPORT: case wxSOCKET_TIMEDOUT: #endif m_bIsDeleting = true; SetConnectionState(CS_SERVERDEAD); serverconnect->DestroySocket(this); return; default: m_bIsDeleting = true; SetConnectionState(CS_FATALERROR); serverconnect->DestroySocket(this); return; } } void CServerSocket::OnReceive(int nErrorCode) { if (connectionstate != CS_CONNECTED && !serverconnect->IsConnecting()) { serverconnect->DestroySocket(this); return; } CEMSocket::OnReceive(nErrorCode); m_dwLastTransmission = GetTickCount(); } bool CServerSocket::ProcessPacket(const byte* packet, uint32 size, int8 opcode) { try { AddDebugLogLineN( logServer, wxT("Processing Server Packet: ") ); switch(opcode) { case OP_SERVERMESSAGE: { /* Kry import of lugdunum 16.40 new features */ AddDebugLogLineN( logServer, wxT("Server: OP_SERVERMESSAGE") ); theStats::AddDownOverheadServer(size); char* buffer = new char[size-1]; memcpy(buffer,&packet[2],size-2); buffer[size-2] = 0; wxString strMessages(char2unicode(buffer)); delete[] buffer; // 16.40 servers do not send separate OP_SERVERMESSAGE packets for each line; // instead of this they are sending all text lines with one OP_SERVERMESSAGE packet. wxStringTokenizer token(strMessages,wxT("\r\n"),wxTOKEN_DEFAULT ); while (token.HasMoreTokens()) { wxString message = token.GetNextToken(); bool bOutputMessage = true; if (message.StartsWith(wxT("server version"))) { wxString strVer = message.Mid(15,64); // truncate string to avoid misuse by servers in showing ads strVer.Trim(); CServer* eserver = theApp->serverlist->GetServerByAddress(cur_server->GetAddress(),cur_server->GetPort()); if (eserver) { eserver->SetVersion(strVer); Notify_ServerRefresh(eserver); } } else if (message.StartsWith(wxT("ERROR"))) { CServer* pServer = theApp->serverlist->GetServerByAddress(cur_server->GetAddress(),cur_server->GetPort()); wxString servername; if (pServer) { servername = pServer->GetListName(); } else { servername = _("Server"); } AddLogLineN(CFormat( _("ERROR: %s (%s) - %s") ) % servername % Uint32_16toStringIP_Port(cur_server->GetIP(), cur_server->GetPort()) % message.Mid(5,message.Len()).Trim(wxT(" :"))); bOutputMessage = false; } else if (message.StartsWith(wxT("WARNING"))) { CServer* pServer = theApp->serverlist->GetServerByAddress(cur_server->GetAddress(),cur_server->GetPort()); wxString servername; if (pServer) { servername = pServer->GetListName(); } else { servername = _("Server"); } AddLogLineN(CFormat( _("WARNING: %s (%s) - %s") ) % servername % Uint32_16toStringIP_Port(cur_server->GetIP(), cur_server->GetPort()) % message.Mid(5,message.Len()).Trim(wxT(" :"))); bOutputMessage = false; } if (message.Find(wxT("[emDynIP: ")) != (-1) && message.Find(wxT("]")) != (-1) && message.Find(wxT("[emDynIP: ")) < message.Find(wxT("]"))){ wxString dynip = message.Mid(message.Find(wxT("[emDynIP: "))+10,message.Find(wxT("]")) - (message.Find(wxT("[emDynIP: "))+10)); dynip.Trim(wxT(" ")); if ( dynip.Length() && dynip.Length() < 51){ CServer* eserver = theApp->serverlist->GetServerByAddress(cur_server->GetAddress(),cur_server->GetPort()); if (eserver){ eserver->SetDynIP(dynip); cur_server->SetDynIP(dynip); Notify_ServerRefresh(eserver); } } } if (bOutputMessage) { theApp->AddServerMessageLine(message); } } break; } case OP_IDCHANGE: { AddDebugLogLineN(logServer, wxT("Server: OP_IDCHANGE")); theStats::AddDownOverheadServer(size); if (size < 4 /* uint32 (ID)*/) { throw wxString(wxT("Corrupt or invalid loginanswer from server received")); } CMemFile data(packet, size); uint32 new_id = data.ReadUInt32(); // save TCP flags in 'cur_server' wxASSERT(cur_server); CServer* pServer = NULL; if (cur_server) { uint32 ConnPort = 0; uint32 rport = cur_server->GetConnPort(); pServer = theApp->serverlist->GetServerByAddress(cur_server->GetAddress(), rport); if (size >= 4+4 /* uint32 (ID) + uint32 (TCP flags)*/) { cur_server->SetTCPFlags(data.ReadUInt32()); if (size >= 4+4+4 /* uint32 (ID) + uint32 (TCP flags) + uint32 (aux port) */) { // aux port login : we should use the 'standard' port of this server to advertize to other clients ConnPort = data.ReadUInt32(); cur_server->SetPort(ConnPort); if (cur_server->GetAuxPortsList().IsEmpty()) { cur_server->SetAuxPortsList(CFormat(wxT("%u")) % rport); } } } else { cur_server->SetTCPFlags(0); } // copy TCP flags into the server in the server list if (pServer) { pServer->SetTCPFlags(cur_server->GetTCPFlags()); if (ConnPort) { pServer->SetPort(ConnPort); if (pServer->GetAuxPortsList().IsEmpty()) { pServer->SetAuxPortsList(CFormat(wxT("%u")) % pServer->GetConnPort()); } Notify_ServerRefresh(pServer); Notify_ServerUpdateED2KInfo(); } } } uint32 dwServerReportedIP = 0; if (size >= 4 + 4 + 4 + 4 + 4 /* All of the above + reported ip + obfuscation port */) { dwServerReportedIP = data.ReadUInt32(); if (::IsLowID(dwServerReportedIP)){ wxFAIL; dwServerReportedIP = 0; } wxASSERT( dwServerReportedIP == new_id || ::IsLowID(new_id) ); uint32 dwObfuscationTCPPort = data.ReadUInt32(); if (dwObfuscationTCPPort != 0) { if (cur_server != NULL) { cur_server->SetObfuscationPortTCP(dwObfuscationTCPPort); } if (pServer != NULL) { pServer->SetObfuscationPortTCP(dwObfuscationTCPPort); } } } if (new_id == 0) { uint8 state = thePrefs::GetSmartIdState(); if ( state > 0 ) { state++; if(state > 3) { thePrefs::SetSmartIdState(0); } else { thePrefs::SetSmartIdState(state); } } break; } if(thePrefs::GetSmartIdCheck()) { if (!IsLowID(new_id)) { thePrefs::SetSmartIdState(1); } else { uint8 state = thePrefs::GetSmartIdState(); if ( state > 0 ) { state++; if(state > 3) { thePrefs::SetSmartIdState(0); } else { thePrefs::SetSmartIdState(state); } break; } } } // we need to know our client when sending our shared files (done indirectly on SetConnectionState) serverconnect->SetClientID(new_id); if (::IsLowID(new_id) && dwServerReportedIP != 0) { theApp->SetPublicIP(dwServerReportedIP); } if (connectionstate != CS_CONNECTED) { AddDebugLogLineN(logServer, wxT("Connected")); SetConnectionState(CS_CONNECTED); theApp->OnlineSig(); // Added By Bouc7 } theApp->ShowConnectionState(); AddLogLineN(CFormat(_("New clientid is %u")) % new_id); if (::IsLowID(new_id)) { AddLogLineC(_("WARNING: You have received Low-ID!")); AddLogLineN(_("\tMost likely this is because you're behind a firewall or router.")); AddLogLineN(_("\tFor more information, please refer to http://wiki.amule.org")); } theApp->downloadqueue->ResetLocalServerRequests(); break; } case OP_SEARCHRESULT: { AddDebugLogLineN(logServer, wxT("Server: OP_SEARCHRESULT")); theStats::AddDownOverheadServer(size); CServer* cur_srv = (serverconnect) ? serverconnect->GetCurrentServer() : NULL; theApp->searchlist->ProcessSearchAnswer( packet, size, true /*(cur_srv && cur_srv->GetUnicodeSupport())*/, cur_srv ? cur_srv->GetIP() : 0, cur_srv ? cur_srv->GetPort() : 0); theApp->searchlist->LocalSearchEnd(); break; } case OP_FOUNDSOURCES_OBFU: case OP_FOUNDSOURCES: { AddDebugLogLineN(logServer, CFormat(wxT("ServerMsg - OP_FoundSources; sources = %u")) % packet[16]); theStats::AddDownOverheadServer(size); CMemFile sources(packet,size); CMD4Hash fileid = sources.ReadHash(); if (CPartFile* file = theApp->downloadqueue->GetFileByID(fileid)) { file->AddSources(sources, cur_server->GetIP(), cur_server->GetPort(), SF_LOCAL_SERVER, (opcode == OP_FOUNDSOURCES_OBFU)); } else { AddDebugLogLineN(logServer, wxT("Sources received for unknown file: ") + fileid.Encode()); } break; } case OP_SERVERSTATUS: { AddDebugLogLineN(logServer, wxT("Server: OP_SERVERSTATUS")); // FIXME some statuspackets have a different size -> why? structur? if (size < 8) { throw wxString(wxT("Invalid server status packet")); } CServer* update = theApp->serverlist->GetServerByAddress(cur_server->GetAddress(), cur_server->GetPort()); if (update) { CMemFile data(packet, size); update->SetUserCount(data.ReadUInt32()); update->SetFileCount(data.ReadUInt32()); Notify_ServerRefresh( update ); theApp->ShowUserCount(); } break; } // Cleaned. case OP_SERVERIDENT: { AddDebugLogLineN(logServer, wxT("Server: OP_SERVERIDENT")); theStats::AddDownOverheadServer(size); if (size<38) { AddLogLineN(_("Unknown server info received! - too short")); // throw wxString(wxT("Unknown server info received!")); break; } CServer* update = theApp->serverlist->GetServerByAddress(cur_server->GetAddress(),cur_server->GetPort()); if (update) { CMemFile data(packet,size); CMD4Hash hash = data.ReadHash(); if (RawPeekUInt32(hash.GetHash()) == 0x2A2A2A2A){ // No endian problem here const wxString& rstrVersion = update->GetVersion(); if (!rstrVersion.IsEmpty()) { update->SetVersion(wxT("eFarm ") + rstrVersion); } else { update->SetVersion(wxT("eFarm")); } } // Unused /*uint32 nServerIP = */data.ReadUInt32(); /*uint16 nServerPort = */data.ReadUInt16(); uint32 nTags = data.ReadUInt32(); for (uint32 i = 0; i < nTags; i++){ CTag tag(data, update->GetUnicodeSupport()); if (tag.GetNameID() == ST_SERVERNAME){ update->SetListName(tag.GetStr()); } else if (tag.GetNameID() == ST_DESCRIPTION){ update->SetDescription(tag.GetStr()); } // No more known tags from server } theApp->ShowConnectionState(); Notify_ServerRefresh(update); } break; } // tecxx 1609 2002 - add server's serverlist to own serverlist case OP_SERVERLIST: { AddDebugLogLineN(logServer, wxT("Server: OP_SERVERLIST")); CMemFile* servers = new CMemFile(packet,size); uint8 count = servers->ReadUInt8(); if (((int32)(count*6 + 1) > size)) { count = 0; } int addcount = 0; while(count) { uint32 ip = servers->ReadUInt32(); uint16 port = servers->ReadUInt16(); CServer* srv = new CServer( port , // Port Uint32toStringIP(ip)); // Ip srv->SetListName(srv->GetFullIP()); if (!theApp->AddServer(srv)) { delete srv; } else { addcount++; } count--; } delete servers; if (addcount) { AddLogLineN(CFormat(wxPLURAL("Received %d new server", "Received %d new servers", addcount)) % addcount); } theApp->serverlist->SaveServerMet(); AddLogLineN(_("Saving of server-list completed.")); break; } case OP_CALLBACKREQUESTED: { AddDebugLogLineN(logServer, wxT("Server: OP_CALLBACKREQUESTED")); theStats::AddDownOverheadServer(size); if (size >= 6) { CMemFile data(packet,size); uint32 dwIP = data.ReadUInt32(); uint16 nPort = data.ReadUInt16(); uint8 byCryptOptions = 0; CMD4Hash achUserHash; if (size >= 23){ byCryptOptions = data.ReadUInt8();; achUserHash = data.ReadHash(); } CUpDownClient* client = theApp->clientlist->FindClientByIP(dwIP,nPort); if (!client) { client = new CUpDownClient(nPort,dwIP,0,0,0, true, true); theApp->clientlist->AddClient(client); } if (size >= 23 && client->HasValidHash()){ if (client->GetUserHash() != achUserHash){ AddDebugLogLineN(logServer, wxT("Reported Userhash from OP_CALLBACKREQUESTED differs with our stored hash")); // disable crypt support since we dont know which hash is true client->SetCryptLayerRequest(false); client->SetCryptLayerSupport(false); client->SetCryptLayerRequires(false); } else { client->SetConnectOptions(byCryptOptions, true, false); } } else if (size >= 23) { client->SetUserHash(achUserHash); client->SetConnectOptions(byCryptOptions, true, false); } client->TryToConnect(); } break; } case OP_CALLBACK_FAIL: { AddDebugLogLineN(logServer, wxT("Server: OP_CALLBACK_FAIL")); break; } case OP_REJECT: { AddDebugLogLineN(logServer, wxT("Server: OP_REJECT")); AddLogLineN(_("Server rejected last command")); break; } default: AddDebugLogLineN(logPacketErrors, CFormat(wxT("Unknown server packet with OPcode %x")) % opcode); } return true; } catch (const CInvalidPacket& e) { AddLogLineN(CFormat( _("Bogus packet received from server: %s") ) % e.what()); } catch (const CEOFException& e) { AddLogLineN(CFormat( _("Bogus packet received from server: %s") ) % e.what()); } catch (const wxString& error) { AddLogLineN(CFormat( _("Unhandled error while processing packet from server: %s") ) % error); } // Don't disconnect because of wrong sources. if (opcode==OP_SEARCHRESULT || opcode==OP_FOUNDSOURCES) { return true; } SetConnectionState(CS_DISCONNECTED); return false; } void CServerSocket::ConnectToServer(CServer* server, bool bNoCrypt) { AddDebugLogLineN(logServer, wxT("Trying to connect")); if (cur_server){ wxFAIL; delete cur_server; cur_server = NULL; } cur_server = new CServer(server); m_bNoCrypt = bNoCrypt; SetConnectionState(CS_CONNECTING); info = cur_server->GetListName(); // This must be used if we want to reverse-check the addr of the server if (cur_server->HasDynIP() || !cur_server->GetIP()) { m_IsSolving = true; // Send it to solving thread. CAsyncDNS* dns = new CAsyncDNS(server->GetAddress(), DNS_SERVER_CONNECT, theApp, this); if ( dns->Create() == wxTHREAD_NO_ERROR ) { if ( dns->Run() != wxTHREAD_NO_ERROR ) { dns->Delete(); AddLogLineN(CFormat( _("Cannot create DNS solving thread for connecting to %s") ) % cur_server->GetAddress()); } } else { dns->Delete(); AddLogLineN(CFormat( _("Cannot create DNS solving thread for connecting to %s") ) % cur_server->GetAddress()); } } else { // Nothing to solve, we already have the IP OnHostnameResolved(cur_server->GetIP()); } } void CServerSocket::OnError(int DEBUG_ONLY(nErrorCode)) { AddDebugLogLineN(logServer, CFormat(wxT("Error in serversocket: %s(%s:%i): %u")) % cur_server->GetListName() % cur_server->GetFullIP() % cur_server->GetPort() % nErrorCode); SetConnectionState(CS_DISCONNECTED); } bool CServerSocket::PacketReceived(CPacket* packet) { AddDebugLogLineN(logServer, CFormat(wxT("Server: Packet Received: Prot %x, Opcode %x, Length %u")) % packet->GetProtocol() % packet->GetOpCode() % packet->GetPacketSize()); if (packet->GetProtocol() == OP_PACKEDPROT) { if (!packet->UnPackPacket(250000)){ AddDebugLogLineN(logZLib, CFormat(wxT("Failed to decompress server TCP packet: protocol=0x%02x opcode=0x%02x size=%u")) % packet->GetProtocol() % packet->GetOpCode() % packet->GetPacketSize()); theStats::AddDownOverheadServer(packet->GetPacketSize()); return true; } packet->SetProtocol(OP_EDONKEYPROT); } if (packet->GetProtocol() == OP_EDONKEYPROT) { ProcessPacket(packet->GetDataBuffer(), packet->GetPacketSize(), packet->GetOpCode()); } else { AddDebugLogLineN(logServer, CFormat(wxT("Received server TCP packet with unknown protocol: protocol=0x%02x opcode=0x%02x size=%u")) % packet->GetProtocol() % packet->GetOpCode() % packet->GetPacketSize()); theStats::AddDownOverheadServer(packet->GetPacketSize()); } return true; } void CServerSocket::OnClose(int WXUNUSED(nErrorCode)) { CEMSocket::OnClose(0); switch (connectionstate) { case CS_WAITFORLOGIN: SetConnectionState(CS_SERVERFULL); break; case CS_CONNECTED: SetConnectionState(CS_DISCONNECTED); break; default: SetConnectionState(CS_NOTCONNECTED); } serverconnect->DestroySocket(this); } void CServerSocket::SetConnectionState(sint8 newstate) { connectionstate = newstate; if (newstate < CS_CONNECTING) { serverconnect->ConnectionFailed(this); } else if (newstate == CS_CONNECTED || newstate == CS_WAITFORLOGIN) { if (serverconnect) { serverconnect->ConnectionEstablished(this); } } } void CServerSocket::SendPacket(CPacket* packet, bool delpacket, bool controlpacket, uint32 actualPayloadSize) { m_dwLastTransmission = GetTickCount(); CEMSocket::SendPacket(packet, delpacket, controlpacket, actualPayloadSize); } void CServerSocket::OnHostnameResolved(uint32 ip) { m_IsSolving = false; if (ip) { if (theApp->ipfilter->IsFiltered(ip, true)) { AddLogLineC(CFormat( _("Server IP %s (%s) is filtered. Not connecting.") ) % Uint32toStringIP(ip) % cur_server->GetAddress() ); #ifdef ASIO_SOCKETS OnConnect(boost::system::errc::invalid_argument); #else OnConnect(wxSOCKET_INVADDR); #endif } else { amuleIPV4Address addr; addr.Hostname(ip); uint16 nPort = 0; wxString useObfuscation; if ( !m_bNoCrypt && thePrefs::IsServerCryptLayerTCPRequested() && cur_server->GetObfuscationPortTCP() != 0 && cur_server->SupportsObfuscationTCP()){ nPort = cur_server->GetObfuscationPortTCP(); useObfuscation = _("using protocol obfuscation."); SetConnectionEncryption(true, NULL, true); } else { nPort = cur_server->GetConnPort(); SetConnectionEncryption(false, NULL, true); } addr.Service(nPort); AddLogLineN(CFormat( _("Connecting to %s (%s - %s:%i) %s") ) % cur_server->GetListName() % cur_server->GetAddress() % cur_server->GetFullIP() % nPort % useObfuscation ); AddDebugLogLineN(logServer, CFormat(wxT("Server %s(%s) Port %i")) % cur_server->GetAddress() % Uint32toStringIP(ip) % cur_server->GetConnPort()); Connect(addr, false); } } else { AddLogLineC(CFormat( _("Could not solve dns for server %s: Unable to connect!") ) % cur_server->GetAddress() ); #ifdef ASIO_SOCKETS OnConnect(boost::system::errc::host_unreachable); #else OnConnect(wxSOCKET_NOHOST); #endif } } uint32 CServerSocket::GetServerIP() const { return cur_server ? cur_server->GetIP() : 0; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ServerSocket.h0000644000175000017500000000546312611472361021072 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // // Client to Server communication // #ifndef SERVERSOCKET_H #define SERVERSOCKET_H #include "EMSocket.h" // Needed for CEMSocket #include "ServerConnect.h" //------------------------------------------------------------------------------ // CServerSocket //------------------------------------------------------------------------------ class CServer; class CServerSocket : public CEMSocket { friend class CServerConnect; public: CServerSocket(CServerConnect* in_serverconnect, const CProxyData *ProxyData = NULL); virtual ~CServerSocket(); void ConnectToServer(CServer* server, bool bNoCrypt = false); sint8 GetConnectionState() const { return connectionstate; } uint32 GetLastTransmission() const { return m_dwLastTransmission; } wxString info; void OnClose(int nErrorCode); void OnConnect(int nErrorCode); void OnReceive(int nErrorCode); void OnError(int nErrorCode); bool PacketReceived(CPacket* packet); void SendPacket(CPacket* packet, bool delpacket = true, bool controlpacket = true, uint32 actualPayloadSize = 0); bool IsSolving() const { return m_IsSolving;}; void OnHostnameResolved(uint32 ip); CServer *GetServerConnected() const { return serverconnect->GetCurrentServer(); } uint32 GetServerIP() const; private: bool ProcessPacket(const byte* packet, uint32 size, int8 opcode); void SetConnectionState(sint8 newstate); CServerConnect* serverconnect; sint8 connectionstate; CServer* cur_server; bool m_bNoCrypt; bool headercomplete; int32 sizetoget; int32 sizereceived; char* rbuffer; bool m_bIsDeleting; // true: socket is already in deletion phase, don't destroy it in ::StopConnectionTry uint32 m_dwLastTransmission; bool m_IsSolving; }; #endif // SERVERSOCKET_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ServerUDPSocket.cpp0000644000175000017500000004374212611472361022000 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ServerUDPSocket.h" // Interface declarations. #include #include #include #include "Packet.h" // Needed for CPacket #include "PartFile.h" // Needed for CPartFile #include "SearchList.h" // Needed for CSearchList #include "MemFile.h" // Needed for CMemFile #include "DownloadQueue.h" // Needed for CDownloadQueue #include "ServerList.h" // Needed for CServerList #include "Server.h" // Needed for CServer #include "amule.h" // Needed for theApp #include "AsyncDNS.h" // Needed for CAsyncDNS #include "Statistics.h" // Needed for theStats #include "Logger.h" #include #include "updownclient.h" // Needed for SF_REMOTE_SERVER #include "GuiEvents.h" // Needed for Notify_* #include "Preferences.h" #include "EncryptedDatagramSocket.h" #include "RandomFunctions.h" #include "ServerConnect.h" // // (TCP+3) UDP socket // CServerUDPSocket::CServerUDPSocket(amuleIPV4Address &address, const CProxyData *ProxyData) : CMuleUDPSocket(wxT("Server UDP-Socket"), ID_SERVERUDPSOCKET_EVENT, address, ProxyData) { Open(); } void CServerUDPSocket::OnPacketReceived(uint32 serverip, uint16 serverport, byte* buffer, size_t length) { wxCHECK_RET(length >= 2, wxT("Invalid packet.")); size_t nPayLoadLen = length; byte* pBuffer = buffer; CServer* pServer = theApp->serverlist->GetServerByIPUDP(serverip, serverport, true); if (pServer && thePrefs::IsServerCryptLayerUDPEnabled() && ((pServer->GetServerKeyUDP() != 0 && pServer->SupportsObfuscationUDP()) || (pServer->GetCryptPingReplyPending() && pServer->GetChallenge() != 0))) { // eMule TODO uint32 dwKey = 0; if (pServer->GetCryptPingReplyPending() && pServer->GetChallenge() != 0 /* && pServer->GetPort() == ntohs(sockAddr.sin_port) - 12 */) { dwKey = pServer->GetChallenge(); } else { dwKey = pServer->GetServerKeyUDP(); } wxASSERT( dwKey != 0 ); nPayLoadLen = CEncryptedDatagramSocket::DecryptReceivedServer(buffer, length, &pBuffer, dwKey, serverip); #ifdef __DEBUG__ if (nPayLoadLen == length) { AddDebugLogLineN(logServerUDP, CFormat(wxT("Expected encrypted packet, but received unencrytped from server %s, UDPKey %u, Challenge: %u")) % pServer->GetListName() % pServer->GetServerKeyUDP() % pServer->GetChallenge()); } else { AddDebugLogLineN(logServerUDP, CFormat(wxT("Received encrypted packet from server %s, UDPKey %u, Challenge: %u")) % pServer->GetListName() % pServer->GetServerKeyUDP() % pServer->GetChallenge()); } #endif } uint8 protocol = pBuffer[0]; uint8 opcode = pBuffer[1]; if (protocol == OP_EDONKEYPROT) { CMemFile data(pBuffer + 2, nPayLoadLen - 2); ProcessPacket(data, opcode, serverip, serverport); } else { AddDebugLogLineN(logServerUDP, CFormat(wxT("Received invalid packet, protocol (0x%x) and opcode (0x%x)")) % protocol % opcode); theStats::AddDownOverheadOther(length); } } void CServerUDPSocket::ProcessPacket(CMemFile& packet, uint8 opcode, uint32 ip, uint16 port) { CServer* update = theApp->serverlist->GetServerByIPUDP(ip, port, true); unsigned size = packet.GetLength(); theStats::AddDownOverheadOther(size); AddDebugLogLineN( logServerUDP, CFormat( wxT("Received UDP server packet from %s:%u, opcode (0x%x)")) % Uint32toStringIP(ip) % port % opcode ); try { // Imported: OP_GLOBSEARCHRES, OP_GLOBFOUNDSOURCES & OP_GLOBSERVSTATRES // This makes Server UDP Flags to be set correctly so we use less bandwith on asking servers for sources // Also we process Search results and Found sources correctly now on 16.40 behaviour. switch(opcode){ case OP_GLOBSEARCHRES: { // process all search result packets do{ theApp->searchlist->ProcessUDPSearchAnswer(packet, true, ip, port - 4); if (packet.GetPosition() + 2 < size) { // An additional packet? uint8 protocol = packet.ReadUInt8(); uint8 new_opcode = packet.ReadUInt8(); if (protocol != OP_EDONKEYPROT || new_opcode != OP_GLOBSEARCHRES) { AddDebugLogLineC( logServerUDP, wxT("Server search reply got additional bogus bytes.") ); break; } else { AddDebugLogLineC( logServerUDP, wxT("Got server search reply with additional packet.") ); } } } while (packet.GetPosition()+2 < size); break; } case OP_GLOBFOUNDSOURCES:{ // process all source packets do { CMD4Hash fileid = packet.ReadHash(); if (CPartFile* file = theApp->downloadqueue->GetFileByID(fileid)) { file->AddSources(packet, ip, port-4, SF_REMOTE_SERVER, false); } else { AddDebugLogLineC( logServerUDP, wxT("Sources received for unknown file") ); // skip sources for that file uint8 count = packet.ReadUInt8(); packet.Seek(count*(4+2), wxFromCurrent); } if (packet.GetPosition()+2 < size) { // An additional packet? uint8 protocol = packet.ReadUInt8(); uint8 new_opcode = packet.ReadUInt8(); if (protocol != OP_EDONKEYPROT || new_opcode != OP_GLOBFOUNDSOURCES) { AddDebugLogLineC( logServerUDP, wxT("Server sources reply got additional bogus bytes.") ); break; } } } while ((packet.GetPosition() + 2) < size); break; } case OP_GLOBSERVSTATRES:{ // Reviewed with 0.47c if (!update) { throw wxString(CFormat(wxT("Unknown server on a OP_GLOBSERVSTATRES packet (%s:%d)")) % Uint32toStringIP(ip) % (port-4)); } if (size < 12) { throw wxString(CFormat(wxT("Invalid OP_GLOBSERVSTATRES packet (size=%u)")) % size); } uint32 challenge = packet.ReadUInt32(); if (challenge != update->GetChallenge()) { throw wxString(CFormat(wxT("Invalid challenge on OP_GLOBSERVSTATRES packet (0x%x != 0x%x)")) % challenge % update->GetChallenge()); } update->SetChallenge(0); update->SetCryptPingReplyPending(false); uint32 tNow = ::GetTickCount(); update->SetLastPingedTime(tNow - (rand() % HR2S(1))); // if we used Obfuscated ping, we still need to reset the time properly uint32 cur_user = packet.ReadUInt32(); uint32 cur_files = packet.ReadUInt32(); uint32 cur_maxusers = 0; uint32 cur_softfiles = 0; uint32 cur_hardfiles = 0; uint32 uUDPFlags = 0; uint32 uLowIDUsers = 0; uint32 dwServerUDPKey = 0; uint16 nTCPObfuscationPort = 0; uint16 nUDPObfuscationPort = 0; if( size >= 16 ){ cur_maxusers = packet.ReadUInt32(); if( size >= 24 ){ cur_softfiles = packet.ReadUInt32(); cur_hardfiles = packet.ReadUInt32(); if( size >= 28 ){ uUDPFlags = packet.ReadUInt32(); if( size >= 32 ){ uLowIDUsers = packet.ReadUInt32(); if (size >= 40) { nUDPObfuscationPort = packet.ReadUInt16(); nTCPObfuscationPort = packet.ReadUInt16(); dwServerUDPKey = packet.ReadUInt32(); } } } } } update->SetPing( ::GetTickCount() - update->GetLastPinged() ); update->SetUserCount( cur_user ); update->SetFileCount( cur_files ); update->SetMaxUsers( cur_maxusers ); update->SetSoftFiles( cur_softfiles ); update->SetHardFiles( cur_hardfiles ); update->SetUDPFlags( uUDPFlags ); update->SetLowIDUsers( uLowIDUsers ); update->SetServerKeyUDP(dwServerUDPKey); update->SetObfuscationPortTCP(nTCPObfuscationPort); update->SetObfuscationPortUDP(nUDPObfuscationPort); Notify_ServerRefresh( update ); update->SetLastDescPingedCount(false); if (update->GetLastDescPingedCount() < 2) { // eserver 16.45+ supports a new OP_SERVER_DESC_RES answer, if the OP_SERVER_DESC_REQ contains a uint32 // challenge, the server returns additional info with OP_SERVER_DESC_RES. To properly distinguish the // old and new OP_SERVER_DESC_RES answer, the challenge has to be selected carefully. The first 2 bytes // of the challenge (in network byte order) MUST NOT be a valid string-len-int16! CPacket* sendpacket = new CPacket(OP_SERVER_DESC_REQ, 4, OP_EDONKEYPROT); uint32 uDescReqChallenge = ((uint32)GetRandomUint16() << 16) + INV_SERV_DESC_LEN; // 0xF0FF = an 'invalid' string length. update->SetDescReqChallenge(uDescReqChallenge); sendpacket->CopyUInt32ToDataBuffer(uDescReqChallenge); //theStats.AddUpDataOverheadServer(packet->size); AddDebugLogLineN(logServerUDP, CFormat(wxT(">>> Sending OP__ServDescReq to server %s:%u, challenge %08x\n")) % update->GetAddress() % update->GetPort() % uDescReqChallenge); theApp->serverconnect->SendUDPPacket(sendpacket, update, true); } else { update->SetLastDescPingedCount(true); } theApp->ShowUserCount(); break; } case OP_SERVER_DESC_RES:{ // Reviewed with 0.47c if (!update) { throw(wxString(wxT("Received OP_SERVER_DESC_RES from an unknown server"))); } // old packet: // new packet: // // NOTE: To properly distinguish between the two packets which are both useing the same opcode... // the first two bytes of (in network byte order) have to be an invalid at least. uint16 Len = packet.ReadUInt16(); packet.Seek(-2, wxFromCurrent); // Step back if (size >= 8 && Len == INV_SERV_DESC_LEN) { if (update->GetDescReqChallenge() != 0 && packet.ReadUInt32() == update->GetDescReqChallenge()) { update->SetDescReqChallenge(0); uint32 uTags = packet.ReadUInt32(); for (uint32 i = 0; i < uTags; ++i) { CTag tag(packet, update->GetUnicodeSupport()); switch (tag.GetNameID()) { case ST_SERVERNAME: update->SetListName(tag.GetStr()); break; case ST_DESCRIPTION: update->SetDescription(tag.GetStr()); break; case ST_DYNIP: update->SetDynIP(tag.GetStr()); break; case ST_VERSION: if (tag.IsStr()) { update->SetVersion(tag.GetStr()); } else if (tag.IsInt()) { update->SetVersion(CFormat(wxT("%u.%u")) % (tag.GetInt() >> 16) % (tag.GetInt() & 0xFFFF)); } break; case ST_AUXPORTSLIST: update->SetAuxPortsList(tag.GetStr()); break; default: // Unknown tag ; } } } else { // A server sent us a new server description packet (including a challenge) although we did not // ask for it. This may happen, if there are multiple servers running on the same machine with // multiple IPs. If such a server is asked for a description, the server will answer 2 times, // but with the same IP. // ignore this packet } } else { update->SetDescription(packet.ReadString(update->GetUnicodeSupport())); update->SetListName(packet.ReadString(update->GetUnicodeSupport())); } break; } default: AddDebugLogLineC(logServerUDP, CFormat(wxT("Unknown Server UDP opcode %x")) % opcode); } } catch (const wxString& DEBUG_ONLY(error)) { AddDebugLogLineN(logServerUDP, wxT("Error while processing incoming UDP Packet: ") + error); } catch (const CInvalidPacket& DEBUG_ONLY(error)) { AddDebugLogLineN(logServerUDP, wxT("Invalid UDP packet encountered: ") + error.what()); } catch (const CEOFException& DEBUG_ONLY(e)) { AddDebugLogLineN(logServerUDP, wxT("IO error while processing incoming UDP Packet: ") + e.what()); } if (update) { update->ResetFailedCount(); Notify_ServerRefresh( update ); } } void CServerUDPSocket::OnReceiveError(int errorCode, uint32 ip, uint16 port) { CMuleUDPSocket::OnReceiveError(errorCode, ip, port); // If we are not currently pinging this server, increase the failure counter CServer* pServer = theApp->serverlist->GetServerByIPUDP(ip, port, true); if (pServer && !pServer->GetCryptPingReplyPending() && GetTickCount() - pServer->GetLastPinged() >= SEC2MS(30)) { pServer->AddFailedCount(); Notify_ServerRefresh(pServer); } } void CServerUDPSocket::SendPacket(CPacket* packet, CServer* host, bool delPacket, bool rawpacket, uint16 port_offset) { ServerUDPPacket item = { NULL, 0, 0, wxEmptyString }; if (host->HasDynIP()) { item.addr = host->GetDynIP(); } else { item.ip = host->GetIP(); } // 4 (default) for standard sending, 12 for obfuscated ping, that's all for now. // Might be changed if encrypted bellow, so don't move it. item.port = host->GetPort() + port_offset; // We might need to encrypt the packet for this server. if (!rawpacket && thePrefs::IsServerCryptLayerUDPEnabled() && host->GetServerKeyUDP() != 0 && host->SupportsObfuscationUDP()) { uint16 uRawPacketSize = packet->GetPacketSize() + 2; byte* pRawPacket = new byte[uRawPacketSize]; memcpy(pRawPacket, packet->GetUDPHeader(), 2); memcpy(pRawPacket + 2, packet->GetDataBuffer(), packet->GetPacketSize()); uRawPacketSize = CEncryptedDatagramSocket::EncryptSendServer(&pRawPacket, uRawPacketSize, host->GetServerKeyUDP()); AddDebugLogLineN(logServerUDP, CFormat(wxT("Sending encrypted packet to server %s, UDPKey %u, port %u, original OPCode 0x%02x")) % host->GetListName() % host->GetServerKeyUDP() % host->GetObfuscationPortUDP() % packet->GetOpCode()); item.port = host->GetObfuscationPortUDP(); CMemFile encryptedpacket(pRawPacket + 2, uRawPacketSize - 2); item.packet = new CPacket(encryptedpacket, pRawPacket[0], pRawPacket[1]); delete[] pRawPacket; if (delPacket) { delete packet; } } else { AddDebugLogLineN(logServerUDP, CFormat(wxT("Sending regular packet to server %s, port %u (raw = %s), OPCode 0x%02x")) % host->GetListName() % host->GetObfuscationPortUDP() % (rawpacket ? wxT("True") : wxT("False")) % packet->GetOpCode()); if (delPacket) { item.packet = packet; } else { item.packet = new CPacket(*packet); } } m_queue.push_back(item); // If there is more than one item in the queue, // then we are already waiting for a dns query. if (m_queue.size() == 1) { SendQueue(); } } void CServerUDPSocket::SendQueue() { while (!m_queue.empty()) { ServerUDPPacket item = m_queue.front(); CPacket* packet = item.packet; // Do we need to do a DNS lookup before sending? wxASSERT(item.ip || !item.addr.IsEmpty()); if (!item.addr.IsEmpty()) { // This not an ip but a hostname. Resolve it. CServer* update = theApp->serverlist->GetServerByAddress(item.addr, item.port); if (update) { if (update->GetLastDNSSolve() + DNS_SOLVE_TIME < ::GetTickCount64()) { // Its time for a new check. CAsyncDNS* dns = new CAsyncDNS(item.addr, DNS_UDP, theApp, this); if ((dns->Create() != wxTHREAD_NO_ERROR) || (dns->Run() != wxTHREAD_NO_ERROR)) { // Not much we can do here, just drop the packet. m_queue.pop_front(); continue; } update->SetDNSError(false); update->SetLastDNSSolve(::GetTickCount64()); // Wait for the DNS query to be resolved return; } else { // It has been checked recently, don't re-check yet. if (update->GetDNSError()) { // Drop the packet, dns failed last time AddDebugLogLineN(logServerUDP, wxT("Trying to send a UDP packet to a server host that failed DNS: ")+item.addr); m_queue.pop_front(); continue; } else { // It has been solved or is solving. if (update->GetIP()) { // It has been solved and ok AddDebugLogLineN(logServerUDP, wxT("Sending a UDP packet to a resolved DNS server host: ")+item.addr); // Update the item IP item.ip = update->GetIP(); // It'll fallback to the sending. } else { AddDebugLogLineN(logServerUDP, wxT("Trying to send a UDP packet to a server host that is checking DNS: ")+item.addr); // Let the packet queued, and wait for resolution // Meanwhile, send other packets. m_queue.pop_front(); m_queue.push_back(item); return; } } } } else { AddDebugLogLineN(logServerUDP, wxT("Trying to send a UDP packet to a server host that is not on serverlist")); // Not much we can do here, just drop the packet. m_queue.pop_front(); continue; } } CServer* update = theApp->serverlist->GetServerByIPUDP(item.ip, item.port, true); if (update) { AddDebugLogLineN(logServerUDP, wxT("Sending a UDP packet to a server: ")+update->GetAddress()); // Don't encrypt, as this is already either encrypted or refused to encrypt. CMuleUDPSocket::SendPacket(packet, item.ip, item.port, false, NULL, false, 0); } else { AddDebugLogLineN(logServerUDP, wxT("Sending a UDP packet to a server no in serverlist: ")+Uint32_16toStringIP_Port(item.ip,item.port)); } m_queue.pop_front(); } } void CServerUDPSocket::OnHostnameResolved(uint32 ip) { wxCHECK_RET(m_queue.size(), wxT("DNS query returned, but no packets are queued.")); ServerUDPPacket item = m_queue.front(); wxCHECK_RET(!item.ip && !item.addr.IsEmpty(), wxT("DNS resolution not expected.")); /* An asynchronous database routine completed. */ CServer* update = theApp->serverlist->GetServerByAddress(item.addr, item.port); if (ip == 0) { update->SetDNSError(true); m_queue.pop_front(); } else { if (update) { update->SetID(ip); } item.addr.Clear(); item.ip = ip; } SendQueue(); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ServerUDPSocket.h0000644000175000017500000000372012611472361021435 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SERVERUDPSOCKET_H #define SERVERUDPSOCKET_H #include "MuleUDPSocket.h" class CPacket; class CServer; class CMemFile; class CServerUDPSocket : public CMuleUDPSocket { public: CServerUDPSocket(amuleIPV4Address& addr, const CProxyData* ProxyData = NULL); void SendPacket(CPacket* packet, CServer* host, bool delPacket, bool rawpacket, uint16 port_offset); void OnHostnameResolved(uint32 ip); virtual void OnReceiveError(int errorCode, uint32 ip, uint16 port); private: void OnPacketReceived(uint32 ip, uint16 port, byte* buffer, size_t length); void ProcessPacket(CMemFile& packet, uint8 opcode, uint32 ip, uint16 port); void SendQueue(); struct ServerUDPPacket { CPacket* packet; uint32 ip; uint16 port; wxString addr; }; typedef std::list PacketList; PacketList m_queue; }; #endif // SERVERUDPSOCKET_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ServerWnd.cpp0000644000175000017500000002361012611472361020717 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "muuli_wdr.h" // Needed for ID_ADDTOLIST #include "ServerWnd.h" // Interface declarations. #include "Server.h" // Needed for CServer #include "ServerList.h" // Needed for CServerList #include "ServerListCtrl.h" // Needed for CServerListCtrl #include "Preferences.h" // Needed for CPreferences #include "ServerConnect.h" #include "amuleDlg.h" // Needed for CamuleDlg #include "amule.h" // Needed for theApp #include "Logger.h" #include "ClientList.h" BEGIN_EVENT_TABLE(CServerWnd,wxPanel) EVT_BUTTON(ID_ADDTOLIST,CServerWnd::OnBnClickedAddserver) EVT_BUTTON(IDC_ED2KDISCONNECT,CServerWnd::OnBnClickedED2KDisconnect) EVT_BUTTON(ID_UPDATELIST,CServerWnd::OnBnClickedUpdateservermetfromurl) EVT_TEXT_ENTER(IDC_SERVERLISTURL,CServerWnd::OnBnClickedUpdateservermetfromurl) EVT_BUTTON(ID_BTN_RESET, CServerWnd::OnBnClickedResetLog) EVT_BUTTON(ID_BTN_RESET_SERVER, CServerWnd::OnBnClickedResetServerLog) EVT_SPLITTER_SASH_POS_CHANGED(ID_SRV_SPLITTER,CServerWnd::OnSashPositionChanged) END_EVENT_TABLE() CServerWnd::CServerWnd(wxWindow* pParent /*=NULL*/, int splitter_pos) : wxPanel(pParent, -1) { wxSizer* sizer = serverListDlg(this,TRUE); // init serverlist // no use now. too early. serverlistctrl = CastChild( ID_SERVERLIST, CServerListCtrl ); CastChild( ID_SRV_SPLITTER, wxSplitterWindow )->SetSashPosition(splitter_pos, true); CastChild( ID_SRV_SPLITTER, wxSplitterWindow )->SetSashGravity(0.5f); CastChild( IDC_NODESLISTURL, wxTextCtrl )->SetValue(thePrefs::GetKadNodesUrl()); CastChild( IDC_SERVERLISTURL, wxTextCtrl )->SetValue(thePrefs::GetEd2kServersUrl()); // Insert two columns, currently without a header wxListCtrl* ED2KInfoList = CastChild( ID_ED2KINFO, wxListCtrl ); wxASSERT(ED2KInfoList); ED2KInfoList->InsertColumn(0, wxEmptyString); ED2KInfoList->InsertColumn(1, wxEmptyString); wxListCtrl* KadInfoList = CastChild( ID_KADINFO, wxListCtrl ); wxASSERT(KadInfoList); KadInfoList->InsertColumn(0, wxEmptyString); KadInfoList->InsertColumn(1, wxEmptyString); sizer->Show(this,TRUE); } CServerWnd::~CServerWnd() { thePrefs::SetEd2kServersUrl(CastChild( IDC_SERVERLISTURL, wxTextCtrl )->GetValue()); thePrefs::SetKadNodesUrl(CastChild( IDC_NODESLISTURL, wxTextCtrl )->GetValue()); } void CServerWnd::UpdateServerMetFromURL(const wxString& strURL) { thePrefs::SetEd2kServersUrl(strURL); theApp->serverlist->UpdateServerMetFromURL(strURL); } void CServerWnd::OnBnClickedAddserver(wxCommandEvent& WXUNUSED(evt)) { wxString servername = CastChild( IDC_SERVERNAME, wxTextCtrl )->GetValue(); wxString serveraddr = CastChild( IDC_IPADDRESS, wxTextCtrl )->GetValue(); long port = StrToULong( CastChild( IDC_SPORT, wxTextCtrl )->GetValue() ); if ( serveraddr.IsEmpty() ) { AddLogLineC(_("Server not added: No IP or hostname specified.")); return; } if ( port <= 0 || port > 65535 ) { AddLogLineC(_("Server not added: Invalid server-port specified.")); return; } CServer* toadd = new CServer( port, serveraddr ); toadd->SetListName( servername.IsEmpty() ? serveraddr : servername ); if ( theApp->AddServer( toadd, true ) ) { CastChild( IDC_SERVERNAME, wxTextCtrl )->Clear(); CastChild( IDC_IPADDRESS, wxTextCtrl )->Clear(); CastChild( IDC_SPORT, wxTextCtrl )->Clear(); } else { CServer* update = theApp->serverlist->GetServerByAddress(toadd->GetAddress(), toadd->GetPort()); // See note on CServerList::AddServer if (update == NULL && toadd->GetIP() != 0) { update = theApp->serverlist->GetServerByIPTCP(toadd->GetIP(), toadd->GetPort()); } if ( update ) { update->SetListName(toadd->GetListName()); serverlistctrl->RefreshServer(update); } delete toadd; } theApp->serverlist->SaveServerMet(); } void CServerWnd::OnBnClickedUpdateservermetfromurl(wxCommandEvent& WXUNUSED(evt)) { wxString strURL = CastChild( IDC_SERVERLISTURL, wxTextCtrl )->GetValue(); UpdateServerMetFromURL(strURL); } void CServerWnd::OnBnClickedResetLog(wxCommandEvent& WXUNUSED(evt)) { theApp->GetLog(true); // Reset it. } void CServerWnd::OnBnClickedResetServerLog(wxCommandEvent& WXUNUSED(evt)) { theApp->GetServerLog(true); // Reset it } void CServerWnd::UpdateED2KInfo() { wxListCtrl* ED2KInfoList = CastChild( ID_ED2KINFO, wxListCtrl ); ED2KInfoList->DeleteAllItems(); ED2KInfoList->InsertItem(0, _("eD2k Status:")); if (theApp->IsConnectedED2K()) { ED2KInfoList->SetItem(0, 1, _("Connected")); // Connection data ED2KInfoList->InsertItem(1, _("IP:Port")); ED2KInfoList->SetItem(1, 1, theApp->serverconnect->IsLowID() ? wxString(_("LowID")) : Uint32_16toStringIP_Port( theApp->GetED2KID(), thePrefs::GetPort())); ED2KInfoList->InsertItem(2, _("ID")); // No need to test the server connect, it's already true ED2KInfoList->SetItem(2, 1, CFormat(wxT("%u")) % theApp->GetED2KID()); ED2KInfoList->InsertItem(3, wxEmptyString); if (theApp->serverconnect->IsLowID()) { ED2KInfoList->SetItem(1, 1, _("Server")); // LowID, unknown ip ED2KInfoList->SetItem(3, 1, _("LowID")); } else { ED2KInfoList->SetItem(1, 1, Uint32_16toStringIP_Port(theApp->GetED2KID(), thePrefs::GetPort())); ED2KInfoList->SetItem(3, 1, _("HighID")); } } else { // No data ED2KInfoList->SetItem(0, 1, _("Not Connected")); } // Fit the width of the columns ED2KInfoList->SetColumnWidth(0, -1); ED2KInfoList->SetColumnWidth(1, -1); } void CServerWnd::UpdateKadInfo() { wxListCtrl* KadInfoList = CastChild( ID_KADINFO, wxListCtrl ); int next_row = 0; KadInfoList->DeleteAllItems(); KadInfoList->InsertItem(next_row, _("Kademlia Status:")); if (theApp->IsKadRunning()) { KadInfoList->SetItem(next_row++, 1, (theApp->IsKadRunningInLanMode() ? _("Running in LAN mode") : _("Running"))); // Connection data KadInfoList->InsertItem(next_row, _("Status:")); KadInfoList->SetItem(next_row++, 1, theApp->IsConnectedKad() ? _("Connected"): _("Disconnected")); if (theApp->IsConnectedKad()) { KadInfoList->InsertItem(next_row, _("Connection State:")); KadInfoList->SetItem(next_row++, 1, theApp->IsFirewalledKad() ? wxString(CFormat(_("Firewalled - open TCP port %d in your router or firewall")) % thePrefs::GetPort()) : wxString(_("OK"))); KadInfoList->InsertItem(next_row, _("UDP Connection State:")); bool UDPFirewalled = theApp->IsFirewalledKadUDP(); KadInfoList->SetItem(next_row++, 1, UDPFirewalled ? wxString(CFormat(_("Firewalled - open UDP port %d in your router or firewall")) % thePrefs::GetUDPPort()) : wxString(_("OK"))); if (theApp->IsFirewalledKad() || UDPFirewalled) { KadInfoList->InsertItem(next_row, _("Firewalled state: ")); wxString BuddyState; switch ( theApp->GetBuddyStatus() ) { case Disconnected: if (!theApp->IsFirewalledKad()) { BuddyState = _("No buddy required - TCP port open"); } else if (!UDPFirewalled) { BuddyState = _("No buddy required - UDP port open"); } else { BuddyState = _("No buddy"); } break; case Connecting: BuddyState = _("Connecting to buddy"); break; case Connected: BuddyState = CFormat(_("Connected to buddy at %s")) % Uint32_16toStringIP_Port(theApp->GetBuddyIP(), theApp->GetBuddyPort()); break; } KadInfoList->SetItem(next_row++, 1, BuddyState); } KadInfoList->InsertItem(next_row, _("IP address:")); KadInfoList->SetItem(next_row++, 1, Uint32toStringIP(theApp->GetKadIPAdress())); // Index info KadInfoList->InsertItem(next_row, _("Indexed sources:")); KadInfoList->SetItem(next_row++, 1, CFormat(wxT("%d")) % theApp->GetKadIndexedSources()); KadInfoList->InsertItem(next_row, _("Indexed keywords:")); KadInfoList->SetItem(next_row++, 1, CFormat(wxT("%d")) % theApp->GetKadIndexedKeywords()); KadInfoList->InsertItem(next_row, _("Indexed notes:")); KadInfoList->SetItem(next_row++, 1, CFormat(wxT("%d")) % theApp->GetKadIndexedNotes()); KadInfoList->InsertItem(next_row, _("Indexed load:")); KadInfoList->SetItem(next_row++, 1, CFormat(wxT("%d")) % theApp->GetKadIndexedLoad()); KadInfoList->InsertItem(next_row, _("Average Users:")); KadInfoList->SetItem(next_row, 1, CastItoIShort(theApp->GetKadUsers())); ++next_row; KadInfoList->InsertItem(next_row, _("Average Files:")); KadInfoList->SetItem(next_row, 1, CastItoIShort(theApp->GetKadFiles())); } } else { // No data KadInfoList->SetItem(next_row, 1, _("Not running")); } // Fit the width of the columns KadInfoList->SetColumnWidth(0, -1); KadInfoList->SetColumnWidth(1, -1); } void CServerWnd::OnSashPositionChanged(wxSplitterEvent& WXUNUSED(evt)) { if (theApp->amuledlg) { theApp->amuledlg->m_srv_split_pos = CastChild( wxT("SrvSplitterWnd"), wxSplitterWindow )->GetSashPosition(); } } void CServerWnd::OnBnClickedED2KDisconnect(wxCommandEvent& WXUNUSED(evt)) { if (theApp->serverconnect->IsConnecting()) { theApp->serverconnect->StopConnectionTry(); } else { theApp->serverconnect->Disconnect(); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ServerWnd.h0000644000175000017500000000357712611472361020376 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SERVERWND_H #define SERVERWND_H #include // Needed for wxSplitter class CServerListCtrl; class CServerWnd : public wxPanel { public: CServerWnd(wxWindow* pParent, int splitter_pos); // standard constructor virtual ~CServerWnd(); void UpdateServerMetFromURL(const wxString& strURL); void UpdateED2KInfo(); void UpdateKadInfo(); CServerListCtrl* serverlistctrl; private: void OnSashPositionChanged(wxSplitterEvent& evt); void OnBnClickedAddserver(wxCommandEvent& evt); void OnBnClickedED2KDisconnect(wxCommandEvent& evt); void OnBnClickedUpdateservermetfromurl(wxCommandEvent& evt); void OnBnClickedResetLog(wxCommandEvent& evt); void OnBnClickedResetServerLog(wxCommandEvent& evt); DECLARE_EVENT_TABLE() }; #endif // SERVERWND_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SharedFileList.cpp0000644000175000017500000007652212611472361021654 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "SharedFileList.h" // Interface declarations // Do_not_auto_remove #include #include #include #include #include "Packet.h" // Needed for CPacket #include "MemFile.h" // Needed for CMemFile #include "ServerConnect.h" // Needed for CServerConnect #include "KnownFileList.h" // Needed for CKnownFileList #include "ThreadTasks.h" // Needed for CThreadScheduler and CHasherTask #include "Preferences.h" // Needed for thePrefs #include "DownloadQueue.h" // Needed for CDownloadQueue #include "amule.h" // Needed for theApp #include "PartFile.h" // Needed for PartFile #include "Server.h" // Needed for CServer #include "Statistics.h" // Needed for theStats #include "Logger.h" #include #include #include "GuiEvents.h" // Needed for Notify_* #include "SHAHashSet.h" // Needed for CAICHHash #include "kademlia/kademlia/Kademlia.h" #include "kademlia/kademlia/Search.h" #include "ClientList.h" typedef std::deque KnownFileArray; /////////////////////////////////////////////////////////////////////////////// // CPublishKeyword class CPublishKeyword { public: CPublishKeyword(const wxString& rstrKeyword) { m_strKeyword = rstrKeyword; // min. keyword char is allowed to be < 3 in some cases (see also 'CSearchManager::getWords') //ASSERT( rstrKeyword.GetLength() >= 3 ); wxASSERT( !rstrKeyword.IsEmpty() ); KadGetKeywordHash(rstrKeyword, &m_nKadID); SetNextPublishTime(0); SetPublishedCount(0); } const Kademlia::CUInt128& GetKadID() const { return m_nKadID; } const wxString& GetKeyword() const { return m_strKeyword; } int GetRefCount() const { return m_aFiles.size(); } const KnownFileArray& GetReferences() const { return m_aFiles; } uint32 GetNextPublishTime() const { return m_tNextPublishTime; } void SetNextPublishTime(uint32 tNextPublishTime) { m_tNextPublishTime = tNextPublishTime; } uint32 GetPublishedCount() const { return m_uPublishedCount; } void SetPublishedCount(uint32 uPublishedCount) { m_uPublishedCount = uPublishedCount; } void IncPublishedCount() { m_uPublishedCount++; } bool AddRef(CKnownFile* pFile) { if (std::find(m_aFiles.begin(), m_aFiles.end(), pFile) != m_aFiles.end()) { wxFAIL; return false; } m_aFiles.push_back(pFile); return true; } int RemoveRef(CKnownFile* pFile) { KnownFileArray::iterator it = std::find(m_aFiles.begin(), m_aFiles.end(), pFile); if (it != m_aFiles.end()) { m_aFiles.erase(it); } return m_aFiles.size(); } void RemoveAllReferences() { m_aFiles.clear(); } void RotateReferences(unsigned iRotateSize) { wxCHECK_RET(m_aFiles.size(), wxT("RotateReferences: Rotating empty array")); unsigned shift = (iRotateSize % m_aFiles.size()); std::rotate(m_aFiles.begin(), m_aFiles.begin() + shift, m_aFiles.end()); } protected: wxString m_strKeyword; Kademlia::CUInt128 m_nKadID; uint32 m_tNextPublishTime; uint32 m_uPublishedCount; KnownFileArray m_aFiles; }; /////////////////////////////////////////////////////////////////////////////// // CPublishKeywordList class CPublishKeywordList { public: CPublishKeywordList(); ~CPublishKeywordList(); void AddKeyword(const wxString& keyword, CKnownFile *file); void AddKeywords(CKnownFile* pFile); void RemoveKeyword(const wxString& keyword, CKnownFile *file); void RemoveKeywords(CKnownFile* pFile); void RemoveAllKeywords(); void RemoveAllKeywordReferences(); void PurgeUnreferencedKeywords(); int GetCount() const { return m_lstKeywords.size(); } CPublishKeyword* GetNextKeyword(); void ResetNextKeyword(); uint32 GetNextPublishTime() const { return m_tNextPublishKeywordTime; } void SetNextPublishTime(uint32 tNextPublishKeywordTime) { m_tNextPublishKeywordTime = tNextPublishKeywordTime; } protected: // can't use a CMap - too many disadvantages in processing the 'list' //CTypedPtrMap m_lstKeywords; typedef std::list CKeyWordList; CKeyWordList m_lstKeywords; CKeyWordList::iterator m_posNextKeyword; uint32 m_tNextPublishKeywordTime; CPublishKeyword* FindKeyword(const wxString& rstrKeyword, CKeyWordList::iterator* ppos = NULL); }; CPublishKeywordList::CPublishKeywordList() { ResetNextKeyword(); SetNextPublishTime(0); } CPublishKeywordList::~CPublishKeywordList() { RemoveAllKeywords(); } CPublishKeyword* CPublishKeywordList::GetNextKeyword() { if (m_posNextKeyword == m_lstKeywords.end()) { m_posNextKeyword = m_lstKeywords.begin(); if (m_posNextKeyword == m_lstKeywords.end()) { return NULL; } } return *m_posNextKeyword++; } void CPublishKeywordList::ResetNextKeyword() { m_posNextKeyword = m_lstKeywords.begin(); } CPublishKeyword* CPublishKeywordList::FindKeyword(const wxString& rstrKeyword, CKeyWordList::iterator* ppos) { CKeyWordList::iterator it = m_lstKeywords.begin(); for (; it != m_lstKeywords.end(); ++it) { CPublishKeyword* pPubKw = *it; if (pPubKw->GetKeyword() == rstrKeyword) { if (ppos) { (*ppos) = it; } return pPubKw; } } return NULL; } void CPublishKeywordList::AddKeyword(const wxString& keyword, CKnownFile *file) { CPublishKeyword* pubKw = FindKeyword(keyword); if (pubKw == NULL) { pubKw = new CPublishKeyword(keyword); m_lstKeywords.push_back(pubKw); SetNextPublishTime(0); } pubKw->AddRef(file); } void CPublishKeywordList::AddKeywords(CKnownFile* pFile) { const Kademlia::WordList& wordlist = pFile->GetKadKeywords(); Kademlia::WordList::const_iterator it; for (it = wordlist.begin(); it != wordlist.end(); ++it) { AddKeyword(*it, pFile); } } void CPublishKeywordList::RemoveKeyword(const wxString& keyword, CKnownFile *file) { CKeyWordList::iterator pos; CPublishKeyword* pubKw = FindKeyword(keyword, &pos); if (pubKw != NULL) { if (pubKw->RemoveRef(file) == 0) { if (pos == m_posNextKeyword) { ++m_posNextKeyword; } m_lstKeywords.erase(pos); delete pubKw; SetNextPublishTime(0); } } } void CPublishKeywordList::RemoveKeywords(CKnownFile* pFile) { const Kademlia::WordList& wordlist = pFile->GetKadKeywords(); Kademlia::WordList::const_iterator it; for (it = wordlist.begin(); it != wordlist.end(); ++it) { RemoveKeyword(*it, pFile); } } void CPublishKeywordList::RemoveAllKeywords() { DeleteContents(m_lstKeywords); ResetNextKeyword(); SetNextPublishTime(0); } void CPublishKeywordList::RemoveAllKeywordReferences() { CKeyWordList::iterator it = m_lstKeywords.begin(); for (; it != m_lstKeywords.end(); ++it) { (*it)->RemoveAllReferences(); } } void CPublishKeywordList::PurgeUnreferencedKeywords() { CKeyWordList::iterator it = m_lstKeywords.begin(); while (it != m_lstKeywords.end()) { CPublishKeyword* pPubKw = *it; if (pPubKw->GetRefCount() == 0) { if (it == m_posNextKeyword) { ++m_posNextKeyword; } m_lstKeywords.erase(it++); delete pPubKw; SetNextPublishTime(0); } else { ++it; } } } CSharedFileList::CSharedFileList(CKnownFileList* in_filelist){ filelist = in_filelist; reloading = false; m_lastPublishED2K = 0; m_lastPublishED2KFlag = true; /* Kad Stuff */ m_keywords = new CPublishKeywordList; m_currFileSrc = 0; m_currFileNotes = 0; m_lastPublishKadSrc = 0; m_lastPublishKadNotes = 0; m_currFileKey = 0; } CSharedFileList::~CSharedFileList() { delete m_keywords; } void CSharedFileList::FindSharedFiles() { /* Abort loading if we are shutting down. */ if(theApp->IsOnShutDown()) { return; } // Clear statistics. theStats::ClearSharedFilesInfo(); // Reload shareddir.dat theApp->glob_prefs->ReloadSharedFolders(); { wxMutexLocker lock(list_mut); m_Files_map.clear(); } // All part files are automatically shared. for ( uint32 i = 0; i < theApp->downloadqueue->GetFileCount(); ++i ) { CPartFile* file = theApp->downloadqueue->GetFileByIndex( i ); if ( file->GetStatus(true) == PS_READY ) { AddLogLineNS(CFormat(_("Adding file %s to shares")) % file->GetFullName().GetPrintable()); AddFile(file); } } // Create a list of all shared paths and weed out duplicates. std::list sharedPaths; // Global incoming dir and all category incoming directories are automatically shared. sharedPaths.push_back(thePrefs::GetIncomingDir()); for (unsigned int i = 1;i < theApp->glob_prefs->GetCatCount(); ++i) { sharedPaths.push_back(theApp->glob_prefs->GetCatPath(i)); } const thePrefs::PathList& shared = theApp->glob_prefs->shareddir_list; sharedPaths.insert(sharedPaths.end(), shared.begin(), shared.end()); sharedPaths.sort(); sharedPaths.unique(); filelist->PrepareIndex(); // Gathering is done in the foreground and can be slowed down severely by parallel background hashing. // So just store the hashing tasks for now. TaskList hashTasks; for (std::list::iterator it = sharedPaths.begin(); it != sharedPaths.end(); ++it) { AddFilesFromDirectory(*it, hashTasks); } filelist->ReleaseIndex(); // Now that the shared files are gathered feed the hashing tasks to the scheduler to start hashing. unsigned addedFiles = 0; for (TaskList::iterator it = hashTasks.begin(); it != hashTasks.end(); ++it) { if (CThreadScheduler::AddTask(*it)) { addedFiles++; } } if (addedFiles == 0) { AddLogLineN(CFormat(wxPLURAL("Found %i known shared file", "Found %i known shared files", GetCount())) % GetCount()); // Make sure the AICH-hashes are up to date. CThreadScheduler::AddTask(new CAICHSyncTask()); } else { // New files, AICH thread will be run at the end of the hashing thread. AddLogLineN(CFormat(wxPLURAL("Found %i known shared file, %i unknown", "Found %i known shared files, %i unknown", GetCount())) % GetCount() % addedFiles); } } // Checks if the dir a is the same as b. If they are, then logs the message and returns true. bool CheckDirectory(const wxString& a, const CPath& b) { if (CPath(a).IsSameDir(b)) { AddLogLineC(CFormat( _("ERROR: Attempted to share %s") ) % a); return true; } return false; } unsigned CSharedFileList::AddFilesFromDirectory(const CPath& directory, TaskList & hashTasks) { // Do not allow these folders to be shared: // - The .aMule folder // - The Temp folder // - The users home-dir if (CheckDirectory(wxGetHomeDir(), directory)) { return 0; } else if (CheckDirectory(thePrefs::GetConfigDir(), directory)) { return 0; } else if (CheckDirectory(thePrefs::GetTempDir().GetRaw(), directory)) { return 0; } if (!directory.DirExists()) { AddLogLineNS(CFormat(_("Shared directory not found, skipping: %s")) % directory.GetPrintable()); return 0; } CDirIterator::FileType searchFor = CDirIterator::FileNoHidden; if (thePrefs::ShareHiddenFiles()) { searchFor = CDirIterator::File; } unsigned knownFiles = 0; unsigned addedFiles = 0; CDirIterator SharedDir(directory); for (CPath fname = SharedDir.GetFirstFile(searchFor); fname.IsOk(); fname = SharedDir.GetNextFile()) { CPath fullPath = directory.JoinPaths(fname); if (!fullPath.FileExists()) { AddDebugLogLineN(logKnownFiles, CFormat(wxT("Shared file does not exist (possibly a broken link): %s")) % fullPath); continue; } AddDebugLogLineN(logKnownFiles, CFormat(wxT("Found shared file: %s")) % fullPath); time_t fdate = CPath::GetModificationTime(fullPath); sint64 fsize = fullPath.GetFileSize(); // This will also catch files with too strict permissions. if ((fdate == (time_t)-1) || (fsize == wxInvalidOffset)) { AddDebugLogLineN(logKnownFiles, CFormat(wxT("Failed to retrieve modification time or size for '%s', skipping.")) % fullPath); continue; } if (fsize == 0) { AddDebugLogLineN(logKnownFiles, CFormat(wxT("Skip zero size file '%s'")) % fullPath); continue; } CKnownFile* toadd = filelist->FindKnownFile(fname, fdate, fsize); if (toadd) { knownFiles++; if (AddFile(toadd)) { AddDebugLogLineN(logKnownFiles, CFormat(wxT("Added known file '%s' to shares")) % fname); toadd->SetFilePath(directory); } else { AddDebugLogLineN(logKnownFiles, CFormat(wxT("File already shared, skipping: %s")) % fname); } } else { //not in knownfilelist - start adding thread to hash file AddDebugLogLineN(logKnownFiles, CFormat(wxT("Hashing new unknown shared file '%s'")) % fname); hashTasks.push_back(new CHashingTask(directory, fname)); addedFiles++; } } if ((addedFiles == 0) && (knownFiles == 0)) { AddLogLineN(CFormat(_("No shareable files found in directory: %s")) % directory.GetPrintable()); } return addedFiles; } bool CSharedFileList::AddFile(CKnownFile* pFile) { wxASSERT(pFile->GetHashCount() == pFile->GetED2KPartHashCount()); wxMutexLocker lock(list_mut); CKnownFileMap::value_type entry(pFile->GetFileHash(), pFile); if (m_Files_map.insert(entry).second) { /* Keywords to publish on Kad */ m_keywords->AddKeywords(pFile); theStats::AddSharedFile(pFile->GetFileSize()); return true; } return false; } void CSharedFileList::SafeAddKFile(CKnownFile* toadd, bool bOnlyAdd) { // TODO: Check if the file is already known - only with another date if (AddFile(toadd)) { Notify_SharedFilesShowFile(toadd); } if (!bOnlyAdd && theApp->IsConnectedED2K()) { // Publishing of files is not anymore handled here. // Instead, the timer does it by itself. m_lastPublishED2KFlag = true; } } // removes first occurrence of 'toremove' in 'list' void CSharedFileList::RemoveFile(CKnownFile* toremove){ Notify_SharedFilesRemoveFile(toremove); wxMutexLocker lock(list_mut); if (m_Files_map.erase(toremove->GetFileHash()) > 0) { theStats::RemoveSharedFile(toremove->GetFileSize()); } /* This file keywords must not be published to kad anymore */ m_keywords->RemoveKeywords(toremove); } void CSharedFileList::Reload() { // Madcat - Disable reloading if reloading already in progress. // Kry - Fixed to let non-english language users use the 'Reload' button :P // deltaHF - removed the old ugly button and changed the code to use the new small one // Kry - bah, let's use a var. if (!reloading) { AddDebugLogLineN(logKnownFiles, wxT("Reload shared files")); reloading = true; Notify_SharedFilesRemoveAllItems(); /* All Kad keywords must be removed */ m_keywords->RemoveAllKeywordReferences(); /* Public identifiers must be erased as they might be invalid now */ m_PublicSharedDirNames.clear(); FindSharedFiles(); /* And now the unreferenced keywords must be removed also */ m_keywords->PurgeUnreferencedKeywords(); Notify_SharedFilesShowFileList(); reloading = false; } } const CKnownFile *CSharedFileList::GetFileByIndex(unsigned int index) const { wxMutexLocker lock(list_mut); if ( index >= m_Files_map.size() ) { return NULL; } CKnownFileMap::const_iterator pos = m_Files_map.begin(); std::advance(pos, index); return pos->second; } CKnownFile* CSharedFileList::GetFileByID(const CMD4Hash& filehash) { wxMutexLocker lock(list_mut); CKnownFileMap::iterator it = m_Files_map.find(filehash); if ( it != m_Files_map.end() ) { return it->second; } else { return NULL; } } short CSharedFileList::GetFilePriorityByID(const CMD4Hash& filehash) { CKnownFile* tocheck = GetFileByID(filehash); if (tocheck) return tocheck->GetUpPriority(); else return -10; // file doesn't exist } void CSharedFileList::CopyFileList(std::vector& out_list) const { wxMutexLocker lock(list_mut); out_list.reserve(m_Files_map.size()); for ( CKnownFileMap::const_iterator it = m_Files_map.begin(); it != m_Files_map.end(); ++it ) { out_list.push_back(it->second); } } void CSharedFileList::UpdateItem(CKnownFile* toupdate) { Notify_SharedFilesUpdateItem(toupdate); } void CSharedFileList::GetSharedFilesByDirectory(const wxString& directory, CKnownFilePtrList& list) { wxMutexLocker lock(list_mut); const CPath dir = CPath(directory); for (CKnownFileMap::iterator pos = m_Files_map.begin(); pos != m_Files_map.end(); ++pos ) { CKnownFile *cur_file = pos->second; if (dir.IsSameDir(cur_file->GetFilePath())) { list.push_back(cur_file); } } } /* ---------------- Network ----------------- */ void CSharedFileList::ClearED2KPublishInfo(){ CKnownFile* cur_file; m_lastPublishED2KFlag = true; wxMutexLocker lock(list_mut); for (CKnownFileMap::iterator pos = m_Files_map.begin(); pos != m_Files_map.end(); ++pos ) { cur_file = pos->second; cur_file->SetPublishedED2K(false); } } void CSharedFileList::ClearKadSourcePublishInfo() { wxMutexLocker lock(list_mut); CKnownFile* cur_file; for (CKnownFileMap::iterator pos = m_Files_map.begin(); pos != m_Files_map.end(); ++pos ) { cur_file = pos->second; cur_file->SetLastPublishTimeKadSrc(0,0); } } void CSharedFileList::RepublishFile(CKnownFile* pFile) { CServer* server = theApp->serverconnect->GetCurrentServer(); if (server && (server->GetTCPFlags() & SRV_TCPFLG_COMPRESSION)) { m_lastPublishED2KFlag = true; pFile->SetPublishedED2K(false); // FIXME: this creates a wrong 'No' for the ed2k shared info in the listview until the file is shared again. } } uint8 GetRealPrio(uint8 in) { switch(in) { case 4 : return 0; case 0 : return 1; case 1 : return 2; case 2 : return 3; case 3 : return 4; } return 0; } bool SortFunc( const CKnownFile* fileA, const CKnownFile* fileB ) { return GetRealPrio(fileA->GetUpPriority()) < GetRealPrio(fileB->GetUpPriority()); } void CSharedFileList::SendListToServer(){ std::vector SortedList; { wxMutexLocker lock(list_mut); if (m_Files_map.empty() || !theApp->IsConnectedED2K() ) { return; } // Getting a sorted list of the non-published files. SortedList.reserve( m_Files_map.size() ); CKnownFileMap::iterator it = m_Files_map.begin(); for ( ; it != m_Files_map.end(); ++it ) { if (!it->second->GetPublishedED2K()) { SortedList.push_back( it->second ); } } } std::sort( SortedList.begin(), SortedList.end(), SortFunc ); // Limits for the server. CServer* server = theApp->serverconnect->GetCurrentServer(); uint32 limit = server ? server->GetSoftFiles() : 0; if( limit == 0 || limit > 200 ) { limit = 200; } if( (uint32)SortedList.size() < limit ) { limit = SortedList.size(); if (limit == 0) { m_lastPublishED2KFlag = false; return; } } CMemFile files; // Files sent. files.WriteUInt32(limit); uint16 count = 0; // Add to packet std::vector::iterator sorted_it = SortedList.begin(); for ( ; (sorted_it != SortedList.end()) && (count < limit); ++sorted_it ) { CKnownFile* file = *sorted_it; if (!file->IsLargeFile() || (server && server->SupportsLargeFilesTCP())) { file->CreateOfferedFilePacket(&files, server, NULL); } file->SetPublishedED2K(true); ++count; } wxASSERT(count == limit); CPacket* packet = new CPacket(files, OP_EDONKEYPROT, OP_OFFERFILES); // compress packet // - this kind of data is highly compressable (N * (1 MD4 and at least 3 string meta data tags and 1 integer meta data tag)) // - the min. amount of data needed for one published file is ~100 bytes // - this function is called once when connecting to a server and when a file becomes shareable - so, it's called rarely. // - if the compressed size is still >= the original size, we send the uncompressed packet // therefor we always try to compress the packet if (server->GetTCPFlags() & SRV_TCPFLG_COMPRESSION){ packet->PackPacket(); } theStats::AddUpOverheadServer(packet->GetPacketSize()); theApp->serverconnect->SendPacket(packet,true); } void CSharedFileList::Process() { Publish(); if( !m_lastPublishED2KFlag || ( ::GetTickCount() - m_lastPublishED2K < ED2KREPUBLISHTIME ) ) { return; } SendListToServer(); m_lastPublishED2K = ::GetTickCount(); } void CSharedFileList::Publish() { // Variables to save cpu. unsigned int tNow = time(NULL); bool IsFirewalled = theApp->IsFirewalled(); if( Kademlia::CKademlia::IsConnected() && ( !IsFirewalled || ( IsFirewalled && theApp->clientlist->GetBuddyStatus() == Connected)) && GetCount() && Kademlia::CKademlia::GetPublish()) { //We are connected to Kad. We are either open or have a buddy. And Kad is ready to start publishing. if( Kademlia::CKademlia::GetTotalStoreKey() < KADEMLIATOTALSTOREKEY) { //We are not at the max simultaneous keyword publishes if (tNow >= m_keywords->GetNextPublishTime()) { //Enough time has passed since last keyword publish //Get the next keyword which has to be (re)-published CPublishKeyword* pPubKw = m_keywords->GetNextKeyword(); if (pPubKw) { //We have the next keyword to check if it can be published //Debug check to make sure things are going well. wxASSERT( pPubKw->GetRefCount() != 0 ); if (tNow >= pPubKw->GetNextPublishTime()) { //This keyword can be published. Kademlia::CSearch* pSearch = Kademlia::CSearchManager::PrepareLookup(Kademlia::CSearch::STOREKEYWORD, false, pPubKw->GetKadID()); if (pSearch) { //pSearch was created. Which means no search was already being done with this HashID. //This also means that it was checked to see if network load wasn't a factor. //This sets the filename into the search object so we can show it in the gui. pSearch->SetFileName(pPubKw->GetKeyword()); //Add all file IDs which relate to the current keyword to be published const KnownFileArray& aFiles = pPubKw->GetReferences(); uint32 count = 0; for (unsigned int f = 0; f < aFiles.size(); ++f) { //Only publish complete files as someone else should have the full file to publish these keywords. //As a side effect, this may help reduce people finding incomplete files in the network. if( !aFiles[f]->IsPartFile() ) { count++; pSearch->AddFileID(Kademlia::CUInt128(aFiles[f]->GetFileHash().GetHash())); if( count > 150 ) { //We only publish up to 150 files per keyword publish then rotate the list. pPubKw->RotateReferences(f); break; } } } if( count ) { //Start our keyword publish pPubKw->SetNextPublishTime(tNow+(KADEMLIAREPUBLISHTIMEK)); pPubKw->IncPublishedCount(); Kademlia::CSearchManager::StartSearch(pSearch); } else { //There were no valid files to publish with this keyword. delete pSearch; } } } } m_keywords->SetNextPublishTime(KADEMLIAPUBLISHTIME+tNow); } } if( Kademlia::CKademlia::GetTotalStoreSrc() < KADEMLIATOTALSTORESRC) { if(tNow >= m_lastPublishKadSrc) { if(m_currFileSrc > GetCount()) { m_currFileSrc = 0; } CKnownFile* pCurKnownFile = const_cast(GetFileByIndex(m_currFileSrc)); if(pCurKnownFile) { if(pCurKnownFile->PublishSrc()) { Kademlia::CUInt128 kadFileID; kadFileID.SetValueBE(pCurKnownFile->GetFileHash().GetHash()); if(Kademlia::CSearchManager::PrepareLookup(Kademlia::CSearch::STOREFILE, true, kadFileID )==NULL) { pCurKnownFile->SetLastPublishTimeKadSrc(0,0); } } } m_currFileSrc++; // even if we did not publish a source, reset the timer so that this list is processed // only every KADEMLIAPUBLISHTIME seconds. m_lastPublishKadSrc = KADEMLIAPUBLISHTIME+tNow; } } if( Kademlia::CKademlia::GetTotalStoreNotes() < KADEMLIATOTALSTORENOTES) { if(tNow >= m_lastPublishKadNotes) { if(m_currFileNotes > GetCount()) { m_currFileNotes = 0; } CKnownFile* pCurKnownFile = const_cast(GetFileByIndex(m_currFileNotes)); if(pCurKnownFile) { if(pCurKnownFile->PublishNotes()) { Kademlia::CUInt128 kadFileID; kadFileID.SetValueBE(pCurKnownFile->GetFileHash().GetHash()); if(Kademlia::CSearchManager::PrepareLookup(Kademlia::CSearch::STORENOTES, true, kadFileID )==NULL) pCurKnownFile->SetLastPublishTimeKadNotes(0); } } m_currFileNotes++; // even if we did not publish a source, reset the timer so that this list is processed // only every KADEMLIAPUBLISHTIME seconds. m_lastPublishKadNotes = KADEMLIAPUBLISHTIME+tNow; } } } } void CSharedFileList::AddKeywords(CKnownFile* pFile) { m_keywords->AddKeywords(pFile); } void CSharedFileList::RemoveKeywords(CKnownFile* pFile) { m_keywords->RemoveKeywords(pFile); } bool CSharedFileList::RenameFile(CKnownFile* file, const CPath& newName) { if (file->IsPartFile()) { CPartFile* pfile = dynamic_cast(file); if (file->GetStatus() != PS_COMPLETING) { pfile->SetFileName(newName); pfile->SavePartFile(); Notify_SharedFilesUpdateItem(file); Notify_DownloadCtrlUpdateItem(file); return true; } } else { CPath oldPath = file->GetFilePath().JoinPaths(file->GetFileName()); CPath newPath = file->GetFilePath().JoinPaths(newName); if (CPath::RenameFile(oldPath, newPath)) { // Must create a copy of the word list because: // 1) it will be reset on SetFileName() // 2) we will want to edit it Kademlia::WordList oldwords = file->GetKadKeywords(); file->SetFileName(newName); theApp->knownfiles->Save(); UpdateItem(file); RepublishFile(file); const Kademlia::WordList& newwords = file->GetKadKeywords(); Kademlia::WordList::iterator itold; Kademlia::WordList::const_iterator itnew; // compare keywords in old and new names for (itnew = newwords.begin(); itnew != newwords.end(); ++itnew) { for (itold = oldwords.begin(); itold != oldwords.end(); ++itold) { if (*itold == *itnew) { break; } } if (itold != oldwords.end()) { // Remove keyword from old name which also exist in new name oldwords.erase(itold); } else { // This is a new keyword not present in the old name m_keywords->AddKeyword(*itnew, file); } } // Remove all remaining old keywords not present in the new name for (itold = oldwords.begin(); itold != oldwords.end(); ++itold) { m_keywords->RemoveKeyword(*itold, file); } Notify_DownloadCtrlUpdateItem(file); Notify_SharedFilesUpdateItem(file); return true; } } return false; } const CPath* CSharedFileList::GetDirForPublicSharedDirName(const wxString& strSharedDir) const { StringPathMap::const_iterator it = m_PublicSharedDirNames.find(strSharedDir); if (it != m_PublicSharedDirNames.end()) { return &(it->second); } else { return NULL; } } wxString CSharedFileList::GetPublicSharedDirName(const CPath& dir) { // safety check: is the directory supposed to be shared after all? if (!IsShared(dir)) { wxFAIL; return wxT(""); } // check if the public name for the directory is cached in our Map StringPathMap::const_iterator it; for (it = m_PublicSharedDirNames.begin(); it != m_PublicSharedDirNames.end(); ++it) { if (it->second.IsSameDir(dir)) { // public name for directory was determined earlier return it->first; } } // we store the path separator (forward or back slash) for quick access wxChar cPathSepa = wxFileName::GetPathSeparator(); // determine and cache the public name for "dir" ... // We need to use the 'raw' filename, so the receiving client can recognize it. wxString strDirectoryTmp = dir.GetRaw(); if (strDirectoryTmp.EndsWith(&cPathSepa)) { strDirectoryTmp.RemoveLast(); } wxString strPublicName; int iPos; // check all the subdirectories in the path for being shared // the public name will consist of these concatenated while ((iPos = strDirectoryTmp.Find( cPathSepa, true )) != wxNOT_FOUND) { strPublicName = strDirectoryTmp.Right(strDirectoryTmp.Length() - iPos) + strPublicName; strDirectoryTmp.Truncate(iPos); if (!IsShared(CPath(strDirectoryTmp))) break; } if (!strPublicName.IsEmpty()) { // remove first path separator ??? wxASSERT( strPublicName.GetChar(0) == cPathSepa ); strPublicName = strPublicName.Right(strPublicName.Length() - 1); } else { // must be a rootdirectory on Windos wxASSERT( strDirectoryTmp.Length() == 2 ); strPublicName = strDirectoryTmp; } // we have the name, make sure it is unique by appending an index if necessary if (m_PublicSharedDirNames.find(strPublicName) != m_PublicSharedDirNames.end()) { wxString strUniquePublicName; for (iPos = 2; ; ++iPos) { strUniquePublicName = CFormat(wxT("%s_%i")) % strPublicName % iPos; if (m_PublicSharedDirNames.find(strUniquePublicName) == m_PublicSharedDirNames.end()) { AddDebugLogLineN(logClient, CFormat(wxT("Using public name '%s' for directory '%s'")) % strUniquePublicName % dir.GetPrintable()); m_PublicSharedDirNames.insert(std::pair (strUniquePublicName, dir)); return strUniquePublicName; } // This is from eMule and it checks if there are more than 200 shared folders with the same public name. // The condition can be true if many shared subfolders with the same name exist in folders that are not // shared. So they get the names of each shared subfolders concatenated. But those might all be the same! // It's here for safety reasons so we should not run out of memory. else if (iPos > 200) // Only 200 identical names are indexed. { wxASSERT( false ); return wxT(""); } } } else { AddDebugLogLineN(logClient, CFormat(wxT("Using public name '%s' for directory '%s'")) % strPublicName % dir.GetPrintable()); m_PublicSharedDirNames.insert(std::pair (strPublicName, dir)); return strPublicName; } } bool CSharedFileList::IsShared(const CPath& path) const { if( path.IsDir(CPath::exists) ) { // check if it's a shared folder const unsigned folderCount = theApp->glob_prefs->shareddir_list.size(); for (unsigned i = 0; i < folderCount; ++i) { if (path.IsSameDir(theApp->glob_prefs->shareddir_list[i])) { return true; } } // check if it's one of the categories folders (category 0 = incoming) for (unsigned i = 0; i < theApp->glob_prefs->GetCatCount(); ++i) { if (path.IsSameDir(theApp->glob_prefs->GetCategory(i)->path)) { return true; } } } return false; } void CSharedFileList::CheckAICHHashes(const std::list& hashes) { wxMutexLocker locker(list_mut); // Now we check that all files which are in the sharedfilelist have a // corresponding hash in our list. Those how don't are queued for hashing. CKnownFileMap::iterator it = m_Files_map.begin(); for (; it != m_Files_map.end(); ++it) { const CKnownFile* file = it->second; if (file->IsPartFile() == false) { CAICHHashSet* hashset = file->GetAICHHashset(); if (hashset->GetStatus() == AICH_HASHSETCOMPLETE) { if (std::find(hashes.begin(), hashes.end(), hashset->GetMasterHash()) != hashes.end()) { continue; } } hashset->SetStatus(AICH_ERROR); CThreadScheduler::AddTask(new CHashingTask(file)); } } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SharedFileList.h0000644000175000017500000001056712611472361021316 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SHAREDFILELIST_H #define SHAREDFILELIST_H #include #include #include // Needed for wxMutex #include "Types.h" // Needed for uint16 and uint64 struct UnknownFile_Struct; class CKnownFileList; class CKnownFile; class CMemFile; class CMD4Hash; class CServer; class CPublishKeywordList; class CPath; class CAICHHash; class CThreadTask; typedef std::map CKnownFileMap; typedef std::map StringPathMap; typedef std::list PathList; class CSharedFileList { public: CSharedFileList(CKnownFileList* in_filelist); ~CSharedFileList(); void Reload(); void SafeAddKFile(CKnownFile* toadd, bool bOnlyAdd = false); void RemoveFile(CKnownFile* toremove); CKnownFile* GetFileByID(const CMD4Hash& filehash); short GetFilePriorityByID(const CMD4Hash& filehash); const CKnownFile* GetFileByIndex(unsigned int index) const; size_t GetCount() { wxMutexLocker lock(list_mut); return m_Files_map.size(); } size_t GetFileCount() { wxMutexLocker lock(list_mut); return m_Files_map.size(); } void CopyFileList(std::vector& out_list) const; void UpdateItem(CKnownFile* toupdate); void GetSharedFilesByDirectory(const wxString& directory, CKnownFilePtrList& list); void ClearED2KPublishInfo(); void RepublishFile(CKnownFile* pFile); void Process(); void PublishNextTurn() { m_lastPublishED2KFlag = true; } bool RenameFile(CKnownFile* pFile, const CPath& newName); /** * Returns the name of a folder visible to the public. * * @param dir The full path to a shared directory. * @return The name of the shared directory that will be visible to the public. * * This function is used to hide sensitive data considering the directory structure of the client. * The returned public name consists of only subdirectories that are shared. * Example: /ed2k/shared/games/tetris -> "games/tetris" if /ed2k/shared are not marked as shared */ wxString GetPublicSharedDirName(const CPath& dir); const CPath* GetDirForPublicSharedDirName(const wxString& strSharedDir) const; /** * Returns true, if the specified path points to a shared directory or single shared file. */ bool IsShared(const CPath& path) const; /* Kad Stuff */ void Publish(); void AddKeywords(CKnownFile* pFile); void RemoveKeywords(CKnownFile* pFile); // This is actually unused, but keep it here - will be needed later. void ClearKadSourcePublishInfo(); /** * Checks for files which missing or wrong AICH hashes. * Those that are found are scheduled for ACIH hashing. */ void CheckAICHHashes(const std::list& hashes); private: typedef std::list TaskList; bool AddFile(CKnownFile* pFile); unsigned AddFilesFromDirectory(const CPath& directory, TaskList & hashTasks); void FindSharedFiles(); bool reloading; void SendListToServer(); uint32 m_lastPublishED2K; bool m_lastPublishED2KFlag; CKnownFileList* filelist; CKnownFileMap m_Files_map; mutable wxMutex list_mut; StringPathMap m_PublicSharedDirNames; //! used for mapping strings to shared directories /* Kad Stuff */ CPublishKeywordList* m_keywords; unsigned int m_currFileSrc; unsigned int m_currFileNotes; unsigned int m_currFileKey; uint32 m_lastPublishKadSrc; uint32 m_lastPublishKadNotes; }; #endif // SHAREDFILELIST_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SharedFilePeersListCtrl.cpp0000644000175000017500000000563712611472361023477 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "SharedFilePeersListCtrl.h" #include "KnownFile.h" // Do_not_auto_remove static CGenericClientListCtrlColumn s_sources_column_info[] = { { ColumnUserName, wxTRANSLATE("User Name"), 260 }, { ColumnUserDownloaded, wxTRANSLATE("Downloaded"), 65 }, { ColumnUserSpeedDown, wxTRANSLATE("Download Speed"), 65 }, { ColumnUserUploaded, wxTRANSLATE("Uploaded"), 65 }, { ColumnUserSpeedUp, wxTRANSLATE("Upload Speed"), 65 }, { ColumnUserAvailable, wxTRANSLATE("Available Parts"), 170 }, { ColumnUserVersion, wxTRANSLATE("Version"), 50 }, { ColumnUserQueueRankLocal, wxTRANSLATE("Upload Status"), 70 }, { ColumnUserQueueRankRemote, wxTRANSLATE("Download Status"), 70 }, { ColumnUserOrigin, wxTRANSLATE("Origin"), 110 }, { ColumnUserFileNameUpload, wxTRANSLATE("Local File Name"), 200 }, { ColumnUserSharedFiles, wxTRANSLATE("Shares File List"), 100 } }; BEGIN_EVENT_TABLE(CSharedFilePeersListCtrl, CGenericClientListCtrl) END_EVENT_TABLE() CSharedFilePeersListCtrl::CSharedFilePeersListCtrl( wxWindow *parent, wxWindowID winid, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name ) : CGenericClientListCtrl( wxT("Peers"), parent, winid, pos, size, style | wxLC_OWNERDRAW, validator, name ) { // Setting the sorter function. SetSortFunc( SourceSortProc ); m_columndata.n_columns = sizeof(s_sources_column_info) / sizeof(CGenericClientListCtrlColumn); m_columndata.columns = s_sources_column_info; InitColumnData(); } CSharedFilePeersListCtrl::~CSharedFilePeersListCtrl() { } int CSharedFilePeersListCtrl::SourceSortProc(wxUIntPtr param1, wxUIntPtr param2, long sortData) { return CGenericClientListCtrl::SortProc(param1, param2, s_sources_column_info[sortData & CMuleListCtrl::COLUMN_MASK].cid | (sortData & CMuleListCtrl::SORT_DES)); } void CSharedFilePeersListCtrl::SetShowSources(CKnownFile * f, bool b) const { f->SetShowPeers(b); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SharedFilePeersListCtrl.h0000644000175000017500000000425512611472361023137 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SHAREDFILEPEERSLISTCTRL_H #define SHAREDFILEPEERSLISTCTRL_H #include "GenericClientListCtrl.h" // Needed for CGenericClientListCtrl /** * This class is responsible for representing the peers for a shared file. */ class CSharedFilePeersListCtrl : public CGenericClientListCtrl { public: /** * Constructor. * * @see CGenericClientListCtrl::CGenericClientListCtrl for documentation of parameters. */ CSharedFilePeersListCtrl( wxWindow *parent, wxWindowID winid = -1, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, const wxString &name = wxT("peerslistctrl") ); /** * Destructor. */ virtual ~CSharedFilePeersListCtrl(); private: virtual CamuleDlg::DialogType GetParentDialog() { return CamuleDlg::DT_SHARED_WND; } virtual void SetShowSources(CKnownFile * f, bool b) const; static int wxCALLBACK SourceSortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData); bool IsShowingDownloadSources() const { return false; } DECLARE_EVENT_TABLE() }; #endif amule_2.3.1+git20151120.0023527bc2.orig/src/SharedFilesCtrl.cpp0000644000175000017500000005655612611472361022035 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "SharedFilesCtrl.h" // Interface declarations #include #include "muuli_wdr.h" // Needed for ID_SHFILELIST #include "SharedFilesWnd.h" // Needed for CSharedFilesWnd #include "amuleDlg.h" // Needed for CamuleDlg #include "CommentDialog.h" // Needed for CCommentDialog #include "PartFile.h" // Needed for CPartFile #include "SharedFileList.h" // Needed for CKnownFileMap #include "amule.h" // Needed for theApp #include "ServerConnect.h" // Needed for CServerConnect #include "Preferences.h" // Needed for thePrefs #include "BarShader.h" // Needed for CBarShader #include "DataToText.h" // Needed for PriorityToStr #include "GuiEvents.h" // Needed for CoreNotify_* #include "MuleCollection.h" // Needed for CMuleCollection #include "DownloadQueue.h" // Needed for CDownloadQueue #include "TransferWnd.h" // Needed for CTransferWnd BEGIN_EVENT_TABLE(CSharedFilesCtrl,CMuleListCtrl) EVT_LIST_ITEM_RIGHT_CLICK(-1, CSharedFilesCtrl::OnRightClick) EVT_MENU( MP_PRIOVERYLOW, CSharedFilesCtrl::OnSetPriority ) EVT_MENU( MP_PRIOLOW, CSharedFilesCtrl::OnSetPriority ) EVT_MENU( MP_PRIONORMAL, CSharedFilesCtrl::OnSetPriority ) EVT_MENU( MP_PRIOHIGH, CSharedFilesCtrl::OnSetPriority ) EVT_MENU( MP_PRIOVERYHIGH, CSharedFilesCtrl::OnSetPriority ) EVT_MENU( MP_POWERSHARE, CSharedFilesCtrl::OnSetPriority ) EVT_MENU( MP_PRIOAUTO, CSharedFilesCtrl::OnSetPriorityAuto ) EVT_MENU( MP_CMT, CSharedFilesCtrl::OnEditComment ) EVT_MENU( MP_ADDCOLLECTION, CSharedFilesCtrl::OnAddCollection ) EVT_MENU( MP_GETMAGNETLINK, CSharedFilesCtrl::OnCreateURI ) EVT_MENU( MP_GETED2KLINK, CSharedFilesCtrl::OnCreateURI ) EVT_MENU( MP_GETSOURCEED2KLINK, CSharedFilesCtrl::OnCreateURI ) EVT_MENU( MP_GETCRYPTSOURCEDED2KLINK, CSharedFilesCtrl::OnCreateURI ) EVT_MENU( MP_GETHOSTNAMESOURCEED2KLINK, CSharedFilesCtrl::OnCreateURI ) EVT_MENU( MP_GETHOSTNAMECRYPTSOURCEED2KLINK, CSharedFilesCtrl::OnCreateURI ) EVT_MENU( MP_GETAICHED2KLINK, CSharedFilesCtrl::OnCreateURI ) EVT_MENU( MP_GETAICHED2KLINKSRC, CSharedFilesCtrl::OnCreateURI ) EVT_MENU( MP_RENAME, CSharedFilesCtrl::OnRename ) EVT_MENU( MP_WS, CSharedFilesCtrl::OnGetFeedback ) EVT_CHAR( CSharedFilesCtrl::OnKeyPressed ) END_EVENT_TABLE() enum SharedFilesListColumns { ID_SHARED_COL_NAME = 0, ID_SHARED_COL_SIZE, ID_SHARED_COL_TYPE, ID_SHARED_COL_PRIO, ID_SHARED_COL_ID, ID_SHARED_COL_REQ, ID_SHARED_COL_AREQ, ID_SHARED_COL_TRA, ID_SHARED_COL_RTIO, ID_SHARED_COL_PART, ID_SHARED_COL_CMPL, ID_SHARED_COL_PATH }; CSharedFilesCtrl::CSharedFilesCtrl(wxWindow* parent, int id, const wxPoint& pos, wxSize size, int flags) : CMuleListCtrl(parent, id, pos, size, flags | wxLC_OWNERDRAW ) { // Setting the sorter function. SetSortFunc( SortProc ); // Set the table-name (for loading and saving preferences). SetTableName( wxT("Shared") ); m_menu=NULL; InsertColumn(ID_SHARED_COL_NAME, _("File Name"), wxLIST_FORMAT_LEFT, 250, wxT("N") ); InsertColumn(ID_SHARED_COL_SIZE, _("Size"), wxLIST_FORMAT_LEFT, 100, wxT("Z") ); InsertColumn(ID_SHARED_COL_TYPE, _("Type"), wxLIST_FORMAT_LEFT, 50, wxT("Y") ); InsertColumn(ID_SHARED_COL_PRIO, _("Priority"), wxLIST_FORMAT_LEFT, 70, wxT("p") ); InsertColumn(ID_SHARED_COL_ID, _("FileID"), wxLIST_FORMAT_LEFT, 220, wxT("I") ); InsertColumn(ID_SHARED_COL_REQ, _("Requests"), wxLIST_FORMAT_LEFT, 100, wxT("Q") ); InsertColumn(ID_SHARED_COL_AREQ, _("Accepted Requests"), wxLIST_FORMAT_LEFT, 100, wxT("A") ); InsertColumn(ID_SHARED_COL_TRA, _("Transferred Data"), wxLIST_FORMAT_LEFT, 120, wxT("T") ); InsertColumn(ID_SHARED_COL_RTIO, _("Share Ratio"), wxLIST_FORMAT_LEFT, 100, wxT("R") ); InsertColumn(ID_SHARED_COL_PART, _("Obtained Parts"), wxLIST_FORMAT_LEFT, 120, wxT("P") ); InsertColumn(ID_SHARED_COL_CMPL, _("Complete Sources"), wxLIST_FORMAT_LEFT, 120, wxT("C") ); InsertColumn(ID_SHARED_COL_PATH, _("Directory Path"), wxLIST_FORMAT_LEFT, 220, wxT("D") ); LoadSettings(); } wxString CSharedFilesCtrl::GetOldColumnOrder() const { return wxT("N,Z,Y,p,I,Q,A,T,R,P,C,D"); } CSharedFilesCtrl::~CSharedFilesCtrl() { } void CSharedFilesCtrl::OnRightClick(wxListEvent& event) { long item_hit = CheckSelection(event); if ( (m_menu == NULL) && (item_hit != -1)) { m_menu = new wxMenu(_("Shared Files")); wxMenu* prioMenu = new wxMenu(); prioMenu->AppendCheckItem(MP_PRIOVERYLOW, _("Very low")); prioMenu->AppendCheckItem(MP_PRIOLOW, _("Low")); prioMenu->AppendCheckItem(MP_PRIONORMAL, _("Normal")); prioMenu->AppendCheckItem(MP_PRIOHIGH, _("High")); prioMenu->AppendCheckItem(MP_PRIOVERYHIGH, _("Very High")); prioMenu->AppendCheckItem(MP_POWERSHARE, _("Release")); prioMenu->AppendCheckItem(MP_PRIOAUTO, _("Auto")); m_menu->Append(0,_("Priority"),prioMenu); m_menu->AppendSeparator(); CKnownFile* file = reinterpret_cast(GetItemData(item_hit)); if (file->GetFileComment().IsEmpty() && !file->GetFileRating()) { m_menu->Append(MP_CMT, _("Add Comment/Rating")); } else { m_menu->Append(MP_CMT, _("Edit Comment/Rating")); } m_menu->AppendSeparator(); m_menu->Append(MP_RENAME, _("Rename")); m_menu->AppendSeparator(); if (file->GetFileName().GetExt() == wxT("emulecollection")) { m_menu->Append( MP_ADDCOLLECTION, _("Add files in collection to transfer list")); m_menu->AppendSeparator(); } m_menu->Append(MP_GETMAGNETLINK,_("Copy magnet &URI to clipboard")); m_menu->Append(MP_GETED2KLINK,_("Copy eD2k &link to clipboard")); m_menu->Append(MP_GETSOURCEED2KLINK,_("Copy eD2k link to clipboard (&Source)")); m_menu->Append(MP_GETCRYPTSOURCEDED2KLINK,_("Copy eD2k link to clipboard (Source) (&With Crypt options)")); m_menu->Append(MP_GETHOSTNAMESOURCEED2KLINK,_("Copy eD2k link to clipboard (&Hostname)")); m_menu->Append(MP_GETHOSTNAMECRYPTSOURCEED2KLINK,_("Copy eD2k link to clipboard (Hostname) (With &Crypt options)")); m_menu->Append(MP_GETAICHED2KLINK,_("Copy eD2k link to clipboard (&AICH info)")); m_menu->Append(MP_GETAICHED2KLINKSRC,_("Copy eD2k link to clipboard (&AICH info + Source)")); m_menu->Append(MP_WS,_("Copy feedback to clipboard")); m_menu->Enable(MP_GETAICHED2KLINK, file->HasProperAICHHashSet()); m_menu->Enable(MP_GETAICHED2KLINKSRC, file->HasProperAICHHashSet()); m_menu->Enable(MP_GETHOSTNAMESOURCEED2KLINK, !thePrefs::GetYourHostname().IsEmpty()); m_menu->Enable(MP_GETHOSTNAMECRYPTSOURCEED2KLINK, !thePrefs::GetYourHostname().IsEmpty()); int priority = file->IsAutoUpPriority() ? PR_AUTO : file->GetUpPriority(); prioMenu->Check(MP_PRIOVERYLOW, priority == PR_VERYLOW); prioMenu->Check(MP_PRIOLOW, priority == PR_LOW); prioMenu->Check(MP_PRIONORMAL, priority == PR_NORMAL); prioMenu->Check(MP_PRIOHIGH, priority == PR_HIGH); prioMenu->Check(MP_PRIOVERYHIGH,priority == PR_VERYHIGH); prioMenu->Check(MP_POWERSHARE, priority == PR_POWERSHARE); prioMenu->Check(MP_PRIOAUTO, priority == PR_AUTO); PopupMenu( m_menu, event.GetPoint() ); delete m_menu; m_menu = NULL; } } void CSharedFilesCtrl::OnGetFeedback(wxCommandEvent& WXUNUSED(event)) { wxString feed; long index = GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); while (index != -1) { if (feed.IsEmpty()) { feed = CFormat(_("Feedback from: %s (%s)\n\n")) % thePrefs::GetUserNick() % theApp->GetFullMuleVersion(); } else { feed += wxT("\n"); } feed += reinterpret_cast(GetItemData(index))->GetFeedback(); index = GetNextItem(index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); } if (!feed.IsEmpty()) { theApp->CopyTextToClipboard(feed); } } void CSharedFilesCtrl::ShowFileList() { Freeze(); DeleteAllItems(); std::vector files; theApp->sharedfiles->CopyFileList(files); for (unsigned i = 0; i < files.size(); ++i) { DoShowFile(files[i], true); } SortList(); ShowFilesCount(); Thaw(); } void CSharedFilesCtrl::RemoveFile(CKnownFile *toRemove) { long index = FindItem( -1, reinterpret_cast(toRemove) ); if ( index != -1 ) { DeleteItem( index ); ShowFilesCount(); } } void CSharedFilesCtrl::ShowFile(CKnownFile* file) { DoShowFile(file, false); } void CSharedFilesCtrl::DoShowFile(CKnownFile* file, bool batch) { wxUIntPtr ptr = reinterpret_cast(file); if ((!batch) && (FindItem(-1, ptr) > -1)) { return; } const long insertPos = (batch ? GetItemCount() : GetInsertPos(ptr)); long newitem = InsertItem(insertPos, wxEmptyString); SetItemPtrData( newitem, ptr ); if (!batch) { ShowFilesCount(); } } void CSharedFilesCtrl::OnSetPriority( wxCommandEvent& event ) { int priority = 0; switch ( event.GetId() ) { case MP_PRIOVERYLOW: priority = PR_VERYLOW; break; case MP_PRIOLOW: priority = PR_LOW; break; case MP_PRIONORMAL: priority = PR_NORMAL; break; case MP_PRIOHIGH: priority = PR_HIGH; break; case MP_PRIOVERYHIGH: priority = PR_VERYHIGH; break; case MP_POWERSHARE: priority = PR_POWERSHARE; break; } long index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while( index != -1 ) { CKnownFile* file = reinterpret_cast(GetItemData(index)); CoreNotify_KnownFile_Up_Prio_Set( file, priority ); RefreshItem( index ); index = GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } } void CSharedFilesCtrl::OnSetPriorityAuto( wxCommandEvent& WXUNUSED(event) ) { long index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while( index != -1 ) { CKnownFile* file = reinterpret_cast(GetItemData(index)); CoreNotify_KnownFile_Up_Prio_Auto(file); RefreshItem( index ); index = GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } } void CSharedFilesCtrl::OnCreateURI( wxCommandEvent& event ) { wxString URIs; if ( event.GetId() == MP_GETSOURCEED2KLINK || event.GetId() == MP_GETCRYPTSOURCEDED2KLINK) { if ( !( (theApp->IsConnectedED2K() && !theApp->serverconnect->IsLowID()) || (theApp->IsConnectedKad() && !theApp->IsFirewalledKad() ))) { wxMessageBox(_("You need a HighID to create a valid sourcelink"), _("WARNING"), wxOK | wxICON_ERROR, this); return; } } long index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); while( index != -1 ) { CKnownFile* file = reinterpret_cast(GetItemData(index)); switch ( event.GetId() ) { case MP_GETMAGNETLINK: URIs += theApp->CreateMagnetLink( file ) + wxT("\n"); break; case MP_GETED2KLINK: URIs += theApp->CreateED2kLink( file ) + wxT("\n"); break; case MP_GETSOURCEED2KLINK: URIs += theApp->CreateED2kLink( file , true) + wxT("\n"); break; case MP_GETCRYPTSOURCEDED2KLINK: URIs += theApp->CreateED2kLink( file , true, false, true) + wxT("\n"); break; case MP_GETHOSTNAMESOURCEED2KLINK: URIs += theApp->CreateED2kLink( file , true, true) + wxT("\n"); break; case MP_GETHOSTNAMECRYPTSOURCEED2KLINK: URIs += theApp->CreateED2kLink( file, true, true, true ) + wxT("\n"); break; case MP_GETAICHED2KLINK: URIs += theApp->CreateED2kLink(file, false, false, false, true) + wxT("\n"); break; case MP_GETAICHED2KLINKSRC: URIs += theApp->CreateED2kLink(file, true, false, false, true) + wxT("\n"); break; } index = GetNextItem( index, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); } if ( !URIs.IsEmpty() ) { theApp->CopyTextToClipboard( URIs.RemoveLast() ); } } void CSharedFilesCtrl::OnEditComment( wxCommandEvent& WXUNUSED(event) ) { long index = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); if ( index != -1 ) { CKnownFile* file = reinterpret_cast(GetItemData(index)); CCommentDialog dialog( this, file ); dialog.ShowModal(); } } int CSharedFilesCtrl::SortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData) { CKnownFile* file1 = reinterpret_cast(item1); CKnownFile* file2 = reinterpret_cast(item2); int mod = (sortData & CMuleListCtrl::SORT_DES) ? -1 : 1; bool altSorting = (sortData & CMuleListCtrl::SORT_ALT) > 0; switch (sortData & CMuleListCtrl::COLUMN_MASK) { // Sort by filename. case ID_SHARED_COL_NAME: return mod * CmpAny(file1->GetFileName(), file2->GetFileName()); // Sort by filesize. case ID_SHARED_COL_SIZE: return mod * CmpAny( file1->GetFileSize(), file2->GetFileSize() ); // Sort by filetype. case ID_SHARED_COL_TYPE: return mod * GetFiletypeByName(file1->GetFileName()).CmpNoCase(GetFiletypeByName( file2->GetFileName()) ); // Sort by priority. case ID_SHARED_COL_PRIO: { int8 prioA = file1->GetUpPriority(); int8 prioB = file2->GetUpPriority(); // Work-around for PR_VERYLOW which has value 4. See KnownFile.h for that stupidity ... return mod * CmpAny( ( prioB != PR_VERYLOW ? prioB : -1 ), ( prioA != PR_VERYLOW ? prioA : -1 ) ); } // Sort by fileID. case ID_SHARED_COL_ID: return mod * file1->GetFileHash().Encode().Cmp( file2->GetFileHash().Encode() ); // Sort by Requests this session. case ID_SHARED_COL_REQ: if (altSorting) { return mod * CmpAny( file1->statistic.GetAllTimeRequests(), file2->statistic.GetAllTimeRequests() ); } else { return mod * CmpAny( file1->statistic.GetRequests(), file2->statistic.GetRequests() ); } // Sort by accepted requests. Ascending. case ID_SHARED_COL_AREQ: if (altSorting) { return mod * CmpAny( file1->statistic.GetAllTimeAccepts(), file2->statistic.GetAllTimeAccepts() ); } else { return mod * CmpAny( file1->statistic.GetAccepts(), file2->statistic.GetAccepts() ); } // Sort by transferred. Ascending. case ID_SHARED_COL_TRA: if (altSorting) { return mod * CmpAny( file1->statistic.GetAllTimeTransferred(), file2->statistic.GetAllTimeTransferred() ); } else { return mod * CmpAny( file1->statistic.GetTransferred(), file2->statistic.GetTransferred() ); } // Sort by Share Ratio. Ascending. case ID_SHARED_COL_RTIO: return mod * CmpAny( (double)file1->statistic.GetAllTimeTransferred() / file1->GetFileSize(), (double)file2->statistic.GetAllTimeTransferred() / file2->GetFileSize() ); // Complete sources asc case ID_SHARED_COL_CMPL: return mod * CmpAny( file1->m_nCompleteSourcesCount, file2->m_nCompleteSourcesCount ); // Folders ascending case ID_SHARED_COL_PATH: { if ( file1->IsPartFile() && file2->IsPartFile() ) return mod * 0; if ( file1->IsPartFile() ) return mod * -1; if ( file2->IsPartFile() ) return mod * 1; return mod * CmpAny(file1->GetFilePath(), file2->GetFilePath()); } default: return 0; } } void CSharedFilesCtrl::UpdateItem(CKnownFile* toupdate) { long result = FindItem( -1, reinterpret_cast(toupdate) ); if ( result > -1 ) { RefreshItem(result); if ( GetItemState( result, wxLIST_STATE_SELECTED ) ) { theApp->amuledlg->m_sharedfileswnd->SelectionUpdated(); } } } void CSharedFilesCtrl::ShowFilesCount() { wxStaticText* label = CastByName( wxT("sharedFilesLabel"), GetParent(), wxStaticText ); label->SetLabel(CFormat(_("Shared Files (%i)")) % GetItemCount()); label->GetParent()->Layout(); // If file list was updated, the "selection" is involved too, if we chose to show clients for all files. // So update client list here too. theApp->amuledlg->m_sharedfileswnd->SelectionUpdated(); } void CSharedFilesCtrl::OnDrawItem( int item, wxDC* dc, const wxRect& rect, const wxRect& rectHL, bool highlighted ) { CKnownFile *file = reinterpret_cast(GetItemData(item)); wxASSERT( file ); if ( highlighted ) { CMuleColour newcol(GetFocus() ? wxSYS_COLOUR_HIGHLIGHT : wxSYS_COLOUR_BTNSHADOW); dc->SetBackground(newcol.Blend(125).GetBrush()); dc->SetTextForeground( CMuleColour(wxSYS_COLOUR_HIGHLIGHTTEXT)); // The second blending goes over the first one. dc->SetPen(newcol.Blend(65).GetPen()); } else { dc->SetBackground( CMuleColour(wxSYS_COLOUR_LISTBOX).GetBrush() ); dc->SetTextForeground(CMuleColour(wxSYS_COLOUR_WINDOWTEXT)); dc->SetPen(*wxTRANSPARENT_PEN); } dc->SetBrush(dc->GetBackground()); dc->DrawRectangle(rectHL); dc->SetPen(*wxTRANSPARENT_PEN); // Offset based on the height of the fonts const int textVOffset = ( rect.GetHeight() - dc->GetCharHeight() ) / 2; // Empty space to each side of a column const int SPARE_PIXELS_HORZ = 4; // The leftmost position of the current column int columnLeft = 0; for ( int i = 0; i < GetColumnCount(); ++i ) { const int columnWidth = GetColumnWidth(i); if (columnWidth > 2*SPARE_PIXELS_HORZ) { wxRect columnRect( columnLeft + SPARE_PIXELS_HORZ, rect.y, columnWidth - 2 * SPARE_PIXELS_HORZ, rect.height); wxDCClipper clipper(*dc, columnRect); wxString textBuffer; switch ( i ) { case ID_SHARED_COL_NAME: textBuffer = file->GetFileName().GetPrintable(); if (file->GetFileRating() || file->GetFileComment().Length()) { int image = Client_CommentOnly_Smiley; if (file->GetFileRating()) { image = Client_InvalidRating_Smiley + file->GetFileRating() - 1; } wxASSERT(image >= Client_InvalidRating_Smiley); wxASSERT(image <= Client_CommentOnly_Smiley); int imgWidth = 16; theApp->amuledlg->m_imagelist.Draw(image, *dc, columnRect.x, columnRect.y + 1, wxIMAGELIST_DRAW_TRANSPARENT); // Move the text to the right columnRect.x += (imgWidth + 4); } break; case ID_SHARED_COL_SIZE: textBuffer = CastItoXBytes(file->GetFileSize()); break; case ID_SHARED_COL_TYPE: textBuffer = GetFiletypeByName(file->GetFileName()); break; case ID_SHARED_COL_PRIO: textBuffer = PriorityToStr(file->GetUpPriority(), file->IsAutoUpPriority()); break; case ID_SHARED_COL_ID: textBuffer = file->GetFileHash().Encode(); break; case ID_SHARED_COL_REQ: textBuffer = CFormat(wxT("%u (%u)")) % file->statistic.GetRequests() % file->statistic.GetAllTimeRequests(); break; case ID_SHARED_COL_AREQ: textBuffer = CFormat(wxT("%u (%u)")) % file->statistic.GetAccepts() % file->statistic.GetAllTimeAccepts(); break; case ID_SHARED_COL_TRA: textBuffer = CastItoXBytes(file->statistic.GetTransferred()) + wxT(" (") + CastItoXBytes(file->statistic.GetAllTimeTransferred()) + wxT(")"); break; case ID_SHARED_COL_RTIO: textBuffer = CFormat(wxT("%.2f")) % ((double)file->statistic.GetAllTimeTransferred() / file->GetFileSize()); break; case ID_SHARED_COL_PART: if ( file->GetPartCount() ) { wxRect barRect(columnRect.x, columnRect. y + 1, columnRect.width, columnRect.height - 2); DrawAvailabilityBar(file, dc, barRect); } break; case ID_SHARED_COL_CMPL: if ( file->m_nCompleteSourcesCountLo == 0 ) { if ( file->m_nCompleteSourcesCountHi ) { textBuffer = CFormat(wxT("< %u")) % file->m_nCompleteSourcesCountHi; } else { textBuffer = wxT("0"); } } else if (file->m_nCompleteSourcesCountLo == file->m_nCompleteSourcesCountHi) { textBuffer = CFormat(wxT("%u")) % file->m_nCompleteSourcesCountLo; } else { textBuffer = CFormat(wxT("%u - %u")) % file->m_nCompleteSourcesCountLo % file->m_nCompleteSourcesCountHi; } break; case ID_SHARED_COL_PATH: if ( file->IsPartFile() ) { textBuffer = _("[PartFile]"); } else { textBuffer = file->GetFilePath().GetPrintable(); } } if (!textBuffer.IsEmpty()) { dc->DrawText(textBuffer, columnRect.x, columnRect.y + textVOffset); } } // Move to the next column columnLeft += columnWidth; } } wxString CSharedFilesCtrl::GetTTSText(unsigned item) const { return reinterpret_cast(GetItemData(item))->GetFileName().GetPrintable(); } bool CSharedFilesCtrl::AltSortAllowed(unsigned column) const { switch ( column ) { case ID_SHARED_COL_REQ: case ID_SHARED_COL_AREQ: case ID_SHARED_COL_TRA: return true; default: return false; } } void CSharedFilesCtrl::DrawAvailabilityBar(CKnownFile* file, wxDC* dc, const wxRect& rect ) const { // Reference to the availability list const ArrayOfUInts16& list = file->IsPartFile() ? static_cast(file)->m_SrcpartFrequency : file->m_AvailPartFrequency; wxPen old_pen = dc->GetPen(); wxBrush old_brush = dc->GetBrush(); bool bFlat = thePrefs::UseFlatBar(); wxRect barRect = rect; if (!bFlat) { // round bar has a black border, the bar itself is 1 pixel less on each border barRect.x ++; barRect.y ++; barRect.height -= 2; barRect.width -= 2; } static CBarShader s_ChunkBar; s_ChunkBar.SetFileSize( file->GetFileSize() ); s_ChunkBar.SetHeight( barRect.GetHeight() ); s_ChunkBar.SetWidth( barRect.GetWidth() ); s_ChunkBar.Set3dDepth( CPreferences::Get3DDepth() ); uint64 end = 0; for ( unsigned int i = 0; i < list.size(); ++i ) { uint64 start = PARTSIZE * static_cast(i); end = PARTSIZE * static_cast(i + 1); s_ChunkBar.FillRange(start, end, CMuleColour(list[i] ? 0 : 255, list[i] ? ((210-(22*( list[i] - 1 ) ) < 0) ? 0 : (210-(22*( list[i] - 1 ) ))) : 0, list[i] ? 255 : 0)); } s_ChunkBar.FillRange(end + 1, file->GetFileSize() - 1, CMuleColour(255, 0, 0)); s_ChunkBar.Draw(dc, barRect.x, barRect.y, bFlat); if (!bFlat) { // Draw black border dc->SetPen( *wxBLACK_PEN ); dc->SetBrush( *wxTRANSPARENT_BRUSH ); dc->DrawRectangle(rect); } dc->SetPen( old_pen ); dc->SetBrush( old_brush ); } void CSharedFilesCtrl::OnRename( wxCommandEvent& WXUNUSED(event) ) { int item = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); if ( item != -1 ) { CKnownFile* file = reinterpret_cast(GetItemData(item)); wxString strNewName = ::wxGetTextFromUser( _("Enter new name for this file:"), _("File rename"), file->GetFileName().GetPrintable()); CPath newName = CPath(strNewName); if (newName.IsOk() && (newName != file->GetFileName())) { theApp->sharedfiles->RenameFile(file, newName); } } } void CSharedFilesCtrl::OnKeyPressed( wxKeyEvent& event ) { if (event.GetKeyCode() == WXK_F2) { wxCommandEvent evt; OnRename(evt); return; } event.Skip(); } void CSharedFilesCtrl::OnAddCollection( wxCommandEvent& WXUNUSED(evt) ) { int item = GetNextItem( -1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED ); if (item != -1) { CKnownFile *file = reinterpret_cast(GetItemData(item)); wxString CollectionFile = file->GetFilePath().JoinPaths(file->GetFileName()).GetRaw(); CMuleCollection my_collection; if (my_collection.Open( (std::string)CollectionFile.mb_str() )) { //#warning This is probably not working on Unicode for (size_t e = 0; e < my_collection.size(); ++e) { theApp->downloadqueue->AddLink(wxString(my_collection[e].c_str(), wxConvUTF8)); } } } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SharedFilesCtrl.h0000644000175000017500000001135712611472361021470 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SHAREDFILESCTRL_H #define SHAREDFILESCTRL_H #include "MuleListCtrl.h" // Needed for CMuleListCtrl class CSharedFileList; class CKnownFile; class wxMenu; /** * This class represents the widget used to list shared files. */ class CSharedFilesCtrl : public CMuleListCtrl { public: /** * Constructor. * * @see CMuleListCtrl::CMuleListCtrl */ CSharedFilesCtrl(wxWindow* parent, int id, const wxPoint& pos, wxSize size, int flags); /** * Destructor. */ ~CSharedFilesCtrl(); /** Reloads the list of shared files. */ void ShowFileList(); /** * Adds the specified file to the list, updating filecount and more. * * @param file The new file to be shown. * * Note that the item is inserted in sorted order. */ void ShowFile(CKnownFile* file); /** * Removes a file from the list. * * @param toremove The file to be removed. */ void RemoveFile(CKnownFile* toremove); /** * Updates a file on the list. * * @param toupdate The file to be updated. */ void UpdateItem(CKnownFile* toupdate); /** * Updates the number of shared files displayed above the list. */ void ShowFilesCount(); protected: /// Return old column order. wxString GetOldColumnOrder() const; private: /** * Adds the specified file to the list. * * If 'batch' is true, the item will be inserted last, * and the files-count will not be updated, nor is * the list checked for dupes. */ void DoShowFile(CKnownFile* file, bool batch); /** * Draws the graph of file-part availability. * * @param file The file to make a graph over. * @param dc The wcDC to draw on. * @param rect The drawing area. * * This function draws a barspan showing the availability of the parts of * a file, for both Part-files and Known-files. Availability for Part-files * is determined using the currently known sources, while availability for * Known-files is determined using the sources requesting that file. */ void DrawAvailabilityBar( CKnownFile* file, wxDC* dc, const wxRect& rect ) const; /** * Overloaded function needed to do custom drawing of the items. */ virtual void OnDrawItem(int item, wxDC* dc, const wxRect& rect, const wxRect& rectHL, bool highlighted); /** * @see CMuleListCtrl::GetTTSText */ virtual wxString GetTTSText(unsigned item) const; /** * Sorter-function. * * @see wxListCtrl::SortItems */ static int wxCALLBACK SortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData); /** * Function that specifies which columns have alternate sorting. * * @see CMuleListCtrl::AltSortAllowed */ virtual bool AltSortAllowed(unsigned column) const; /** * Event-handler for right-clicks on the list-items. */ void OnRightClick(wxListEvent& event); /** * Event-handler for right-clicks on the list-items. */ void OnGetFeedback(wxCommandEvent& event); /** * Event-handler for the Set Priority menu items. */ void OnSetPriority( wxCommandEvent& event ); /** * Event-handler for the Auto-Priority menu item. */ void OnSetPriorityAuto( wxCommandEvent& event ); /** * Event-handler for the Create ED2K/Magnet URI items. */ void OnCreateURI( wxCommandEvent& event ); /** * Event-handler for the Edit Comment menu item. */ void OnEditComment( wxCommandEvent& event ); /** * Event-handler for the Rename menu item. */ void OnRename( wxCommandEvent& event ); /** * Checks for renaming via F2. */ void OnKeyPressed( wxKeyEvent& event ); /** * Adds links in a collection to transfers */ void OnAddCollection( wxCommandEvent& WXUNUSED(evt) ); //! Pointer used to ensure that the menu isn't displayed twice. wxMenu* m_menu; DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SharedFilesWnd.cpp0000644000175000017500000002745212611472361021652 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include // Do_not_auto_remove (win32) #include #include "SharedFilesWnd.h" // Interface declarations #include "SharedFilesCtrl.h" #include "SharedFilePeersListCtrl.h" #include "muuli_wdr.h" // Needed for ID_SHFILELIST #include "KnownFileList.h" // Needed for CKnownFileList #include "KnownFile.h" // Needed for CKnownFile #include "amule.h" // Needed for theApp #include "UploadQueue.h" // Needed for theApp->uploadqueue BEGIN_EVENT_TABLE(CSharedFilesWnd, wxPanel) EVT_LIST_ITEM_SELECTED( ID_SHFILELIST, CSharedFilesWnd::OnItemSelectionChanged ) EVT_LIST_ITEM_DESELECTED( ID_SHFILELIST, CSharedFilesWnd::OnItemSelectionChanged ) EVT_BUTTON( ID_BTNRELSHARED, CSharedFilesWnd::OnBtnReloadShared ) EVT_BUTTON(ID_SHAREDCLIENTTOGGLE, CSharedFilesWnd::OnToggleClientList) EVT_RADIOBOX(ID_SHOW_CLIENTS_MODE, CSharedFilesWnd::OnSelectClientsMode) EVT_SPLITTER_SASH_POS_CHANGING(ID_SHARESSPLATTER, CSharedFilesWnd::OnSashPositionChanging) END_EVENT_TABLE() CSharedFilesWnd::CSharedFilesWnd( wxWindow* pParent ) : wxPanel(pParent, -1) { wxSizer* content = sharedfilesDlg(this, true); content->Show(this, true); m_bar_requests = CastChild( wxT("popbar"), wxGauge ); m_bar_accepted = CastChild( wxT("popbarAccept"), wxGauge ); m_bar_transfer = CastChild( wxT("popbarTrans"), wxGauge ); m_radioClientMode = CastChild( ID_SHOW_CLIENTS_MODE, wxRadioBox ); sharedfilesctrl = CastChild( wxT("sharedFilesCt"), CSharedFilesCtrl ); peerslistctrl = CastChild( ID_SHAREDCLIENTLIST, CSharedFilePeersListCtrl ); wxASSERT(sharedfilesctrl); wxASSERT(peerslistctrl); m_prepared = false; m_splitter = 0; wxConfigBase *config = wxConfigBase::Get(); // Check if the clientlist is hidden bool show = true; config->Read( wxT("/GUI/SharedWnd/ShowClientList"), &show, true ); peerslistctrl->SetShowing(show); // Load the last used splitter position m_splitter = config->Read( wxT("/GUI/SharedWnd/Splitter"), 463l ); m_clientShow = (EClientShow) config->Read(wxT("/GUI/SharedWnd/ClientShowMode"), ClientShowSelected); m_radioClientMode->SetSelection(m_clientShow); } CSharedFilesWnd::~CSharedFilesWnd() { if (m_prepared) { wxConfigBase *config = wxConfigBase::Get(); if ( !peerslistctrl->GetShowing() ) { // Save the splitter position config->Write( wxT("/GUI/SharedWnd/Splitter"), m_splitter ); // Save the visible status of the list config->Write( wxT("/GUI/SharedWnd/ShowClientList"), false ); } else { wxSplitterWindow* splitter = CastChild( wxT("sharedsplitterWnd"), wxSplitterWindow ); // Save the splitter position config->Write(wxT("/GUI/SharedWnd/Splitter"), splitter->GetSashPosition()); // Save the visible status of the list config->Write( wxT("/GUI/SharedWnd/ShowClientList"), true ); } config->Write(wxT("/GUI/SharedWnd/ClientShowMode"), (int)m_clientShow); } } void CSharedFilesWnd::SelectionUpdated() { if (!sharedfilesctrl->IsSorting()) { uint64 lTransferred = theApp->knownfiles->transferred; uint32 lAccepted = theApp->knownfiles->accepted; uint32 lRequested = theApp->knownfiles->requested; m_bar_requests->SetRange( lRequested ); m_bar_accepted->SetRange( lAccepted ); m_bar_transfer->SetRange( lTransferred / 1024 ); CKnownFileVector fileVector; // Create a total statistic for the selected item(s) uint32 session_requests = 0; uint32 session_accepted = 0; uint64 session_transferred = 0; uint32 all_requests = 0; uint32 all_accepted = 0; uint64 all_transferred = 0; long index = -1; int filter = (m_clientShow == ClientShowSelected) ? wxLIST_STATE_SELECTED : wxLIST_STATE_DONTCARE; while ( (index = sharedfilesctrl->GetNextItem( index, wxLIST_NEXT_ALL, filter)) != -1) { CKnownFile* file = reinterpret_cast(sharedfilesctrl->GetItemData(index)); wxASSERT(file); // Bars are always for selected files if (sharedfilesctrl->GetItemState(index, wxLIST_STATE_SELECTED)) { session_requests += file->statistic.GetRequests(); session_accepted += file->statistic.GetAccepts(); session_transferred += file->statistic.GetTransferred(); all_requests += file->statistic.GetAllTimeRequests(); all_accepted += file->statistic.GetAllTimeAccepts(); all_transferred += file->statistic.GetAllTimeTransferred(); } if (m_clientShow != ClientShowUploading) { fileVector.push_back(file); } } if (fileVector.empty()) { // Requests m_bar_requests->SetValue( 0 ); CastChild(IDC_SREQUESTED, wxStaticText)->SetLabel( wxT("- / -") ); // Accepted requets m_bar_accepted->SetValue( 0 ); CastChild(IDC_SACCEPTED, wxStaticText)->SetLabel( wxT("- / -") ); // Transferred m_bar_transfer->SetValue( 0 ); CastChild(IDC_STRANSFERRED, wxStaticText)->SetLabel( wxT("- / -") ); } else { std::sort(fileVector.begin(), fileVector.end()); // Store text lengths, and layout() when the texts have grown static uint32 lReq = 0, lAcc = 0, lTrans = 0; // Requests session_requests = session_requests > lRequested ? lRequested : session_requests; m_bar_requests->SetValue( session_requests ); wxString labelReq = CFormat(wxT("%d / %d")) % session_requests % all_requests; CastChild(IDC_SREQUESTED, wxStaticText)->SetLabel(labelReq); // Accepted requets session_accepted = session_accepted > lAccepted ? lAccepted : session_accepted; m_bar_accepted->SetValue( session_accepted ); wxString labelAcc = CFormat(wxT("%d / %d")) % session_accepted % all_accepted; CastChild(IDC_SACCEPTED, wxStaticText)->SetLabel(labelAcc); // Transferred session_transferred = session_transferred > lTransferred ? lTransferred : session_transferred; m_bar_transfer->SetValue( session_transferred / 1024 ); wxString labelTrans = CastItoXBytes( session_transferred ) + wxT(" / ") + CastItoXBytes( all_transferred ); CastChild(IDC_STRANSFERRED, wxStaticText)->SetLabel(labelTrans); if (labelReq.Len() > lReq || labelAcc.Len() > lAcc || labelTrans.Len() > lTrans) { lReq = labelReq.Len(); lAcc = labelAcc.Len(); lTrans = labelTrans.Len(); s_sharedfilespeerHeader->Layout(); } } if (m_clientShow == ClientShowUploading) { // The GenericClientListCtrl is designed to show clients associated with a KnownFile. // So the uploadqueue carries a special known file with all ongoing uploads in its upload list. // This is a hack, but easier than trying to bend the class into a shape it was not intended for // to show all clients currently uploading. #ifdef CLIENT_GUI fileVector.push_back(theApp->m_allUploadingKnownFile); #else fileVector.push_back(theApp->uploadqueue->GetAllUploadingKnownFile()); #endif } peerslistctrl->ShowSources(fileVector); Refresh(); Layout(); } } void CSharedFilesWnd::OnBtnReloadShared( wxCommandEvent& WXUNUSED(evt) ) { theApp->sharedfiles->Reload(); #ifndef CLIENT_GUI // remote gui will update display when data is back SelectionUpdated(); #endif } void CSharedFilesWnd::OnItemSelectionChanged(wxListEvent& evt) { EClientShow clientShowMode = (EClientShow) m_radioClientMode->GetSelection(); // Only update the list of clients if that list shows clients related to the selected shared files if ( clientShowMode == ClientShowSelected ) { SelectionUpdated(); } evt.Skip(); } void CSharedFilesWnd::RemoveAllSharedFiles() { sharedfilesctrl->DeleteAllItems(); sharedfilesctrl->ShowFilesCount(); SelectionUpdated(); } void CSharedFilesWnd::Prepare() { if (m_prepared) { return; } m_prepared = true; wxSplitterWindow* splitter = CastChild( wxT("sharedsplitterWnd"), wxSplitterWindow ); int height = splitter->GetSize().GetHeight(); int header_height = s_sharedfilespeerHeader->GetSize().GetHeight(); if ( m_splitter ) { // Some sanity checking if ( m_splitter < s_splitterMin ) { m_splitter = s_splitterMin; } else if ( m_splitter > height - header_height * 2 ) { m_splitter = height - header_height * 2; } splitter->SetSashPosition( m_splitter ); m_splitter = 0; } if ( !peerslistctrl->GetShowing() ) { // use a toggle event to close it (calculate size, change button) peerslistctrl->SetShowing( true ); // so it will be toggled to false wxCommandEvent evt1; OnToggleClientList( evt1 ); } } void CSharedFilesWnd::OnToggleClientList(wxCommandEvent& WXUNUSED(evt)) { wxSplitterWindow* splitter = CastChild( wxT("sharedsplitterWnd"), wxSplitterWindow ); wxBitmapButton* button = CastChild( ID_SHAREDCLIENTTOGGLE, wxBitmapButton ); if ( !peerslistctrl->GetShowing() ) { splitter->SetSashPosition( m_splitter ); m_splitter = 0; peerslistctrl->SetShowing( true ); button->SetBitmapLabel( amuleDlgImages( 10 ) ); button->SetBitmapFocus( amuleDlgImages( 10 ) ); button->SetBitmapSelected( amuleDlgImages( 10 ) ); button->SetBitmapHover( amuleDlgImages( 10 ) ); } else { peerslistctrl->SetShowing( false ); m_splitter = splitter->GetSashPosition(); // Add the height of the listctrl to the top-window int height = peerslistctrl->GetSize().GetHeight() + splitter->GetWindow1()->GetSize().GetHeight(); splitter->SetSashPosition( height ); button->SetBitmapLabel( amuleDlgImages( 11 ) ); button->SetBitmapFocus( amuleDlgImages( 11 ) ); button->SetBitmapSelected( amuleDlgImages( 11 ) ); button->SetBitmapHover( amuleDlgImages( 11 ) ); } } void CSharedFilesWnd::OnSashPositionChanging(wxSplitterEvent& evt) { if ( evt.GetSashPosition() < s_splitterMin ) { evt.SetSashPosition( s_splitterMin ); } else { wxSplitterWindow* splitter = wxStaticCast( evt.GetEventObject(), wxSplitterWindow); wxCHECK_RET(splitter, wxT("ERROR: NULL splitter in CSharedFilesWnd::OnSashPositionChanging")); int height = splitter->GetSize().GetHeight(); int header_height = s_sharedfilespeerHeader->GetSize().GetHeight(); int mousey = wxGetMousePosition().y - splitter->GetScreenRect().GetTop(); if ( !peerslistctrl->GetShowing() ) { // lower window hidden if ( height - mousey < header_height * 2 ) { // no moving down if already hidden evt.Veto(); } else { // show it m_splitter = mousey; // prevent jumping if it was minimized and is then shown by dragging the sash wxCommandEvent evt1; OnToggleClientList( evt1 ); } } else { // lower window showing if ( height - mousey < header_height * 2 ) { // hide it wxCommandEvent evt1; OnToggleClientList( evt1 ); } else { // normal resize // If several events queue up, setting the sash to the current mouse position // will speed up things and make sash moving more smoothly. evt.SetSashPosition( mousey ); } } } } void CSharedFilesWnd::OnSelectClientsMode(wxCommandEvent& WXUNUSED(evt)) { EClientShow clientShowLast = m_clientShow; m_clientShow = (EClientShow) m_radioClientMode->GetSelection(); if (m_clientShow != clientShowLast) { SelectionUpdated(); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SharedFilesWnd.h0000644000175000017500000000714212611472361021311 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SHAREDFILESWND_H #define SHAREDFILESWND_H #include // Needed for wxPanel class CKnownFile; class CSharedFilesCtrl; class CSharedFilePeersListCtrl; class wxListEvent; class wxGauge; class wxSplitterEvent; class wxRadioBox; /** * This class represents the window containing the list of shared files. */ class CSharedFilesWnd : public wxPanel { public: /** * Constructor. */ CSharedFilesWnd(wxWindow* pParent = NULL); /** * Destructor. */ ~CSharedFilesWnd(); /** * This function updates the statistics of the selected items. * * Call this function when an item has been selected, or when a * selected item changes. It */ void SelectionUpdated(); /** * Deletes all files and updates widget */ void RemoveAllSharedFiles(); /** * Call this function before displaying the dialog. * * This functions does a few tasks to ensure that the dialog is looking the right way. */ void Prepare(); //! Pointer to the widget containing the list of shared files. CSharedFilesCtrl* sharedfilesctrl; //! Pointer to the list of clients. CSharedFilePeersListCtrl* peerslistctrl; //! Contains the current (or last if the clientlist is hidden) position of the splitter. int m_splitter; private: /** * Event-handler for reloading the list of shared files. */ void OnBtnReloadShared(wxCommandEvent &evt); /** * Event-handler for showing details about a shared file(s). */ void OnItemSelectionChanged(wxListEvent& evt); /** * Event-handler for the list-toggle button. */ void OnToggleClientList( wxCommandEvent& event ); /** * Event-handler for changes in the sash divider position. */ void OnSashPositionChanging(wxSplitterEvent& evt); /** * Event-handler for changes in the clients mode radio box. */ void OnSelectClientsMode( wxCommandEvent& WXUNUSED(evt) ); //! Pointer to the gauge used for showing requests ratio. wxGauge* m_bar_requests; //! Pointer to the gauge used for showing accepted-requests ratio. wxGauge* m_bar_accepted; //! Pointer to the gauge used for showing the transferred ratio. wxGauge* m_bar_transfer; //! Pointer to the radio box selecting the client mode. wxRadioBox* m_radioClientMode; //! Flag if window has been prepared bool m_prepared; //! Minimum position of splitter bar static const int s_splitterMin = 90; /** * Mode which clients are shown */ enum EClientShow { ClientShowAll = 0, ClientShowSelected, ClientShowUploading }; EClientShow m_clientShow; DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SourceListCtrl.cpp0000644000175000017500000000541712611472361021726 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "SourceListCtrl.h" #include "KnownFile.h" static CGenericClientListCtrlColumn s_sources_column_info[] = { { ColumnUserName, wxTRANSLATE("User Name"), 260 }, { ColumnUserDownloaded, wxTRANSLATE("Downloaded"), 65 }, { ColumnUserSpeedDown, wxTRANSLATE("Speed"), 65 }, { ColumnUserUploaded, wxTRANSLATE("Uploaded"), 65 }, { ColumnUserProgress, wxTRANSLATE("Available Parts"), 170 }, { ColumnUserVersion, wxTRANSLATE("Version"), 50 }, { ColumnUserQueueRankRemote, wxTRANSLATE("Download Status"), 55 }, { ColumnUserOrigin, wxTRANSLATE("Origin"), 110 }, { ColumnUserFileNameDownload, wxTRANSLATE("Local File Name"), 200 }, { ColumnUserFileNameDownloadRemote, wxTRANSLATE("Remote File Name"), 200 }, { ColumnUserSharedFiles, wxTRANSLATE("Shares File List"), 100 } }; BEGIN_EVENT_TABLE(CSourceListCtrl, CGenericClientListCtrl) END_EVENT_TABLE() CSourceListCtrl::CSourceListCtrl( wxWindow *parent, wxWindowID winid, const wxPoint& pos, const wxSize& size, long style, const wxValidator& validator, const wxString& name ) : CGenericClientListCtrl( wxT("Sources"), parent, winid, pos, size, style | wxLC_OWNERDRAW, validator, name ) { // Setting the sorter function. SetSortFunc( SourceSortProc ); m_columndata.n_columns = sizeof(s_sources_column_info) / sizeof(CGenericClientListCtrlColumn); m_columndata.columns = s_sources_column_info; InitColumnData(); } CSourceListCtrl::~CSourceListCtrl() { } int CSourceListCtrl::SourceSortProc(wxUIntPtr param1, wxUIntPtr param2, long sortData) { return CGenericClientListCtrl::SortProc(param1, param2, s_sources_column_info[sortData & CMuleListCtrl::COLUMN_MASK].cid | (sortData & CMuleListCtrl::SORT_DES)); } void CSourceListCtrl::SetShowSources(CKnownFile * f, bool b) const { f->SetShowSources(b); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/SourceListCtrl.h0000644000175000017500000000423212611472361021365 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SOURCELISTCTRL_H #define SOURCELISTCTRL_H #include "GenericClientListCtrl.h" // Needed for CGenericClientListCtrl /** * This class is responsible for representing the sources for a file. */ class CSourceListCtrl : public CGenericClientListCtrl { public: /** * Constructor. * * @see CGenericClientListCtrl::CGenericClientListCtrl for documentation of parameters. */ CSourceListCtrl( wxWindow *parent, wxWindowID winid = -1, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, const wxString &name = wxT("sourcelistctrl") ); /** * Destructor. */ virtual ~CSourceListCtrl(); private: virtual CamuleDlg::DialogType GetParentDialog() { return CamuleDlg::DT_TRANSFER_WND; } virtual void SetShowSources(CKnownFile * f, bool b) const; static int wxCALLBACK SourceSortProc(wxUIntPtr item1, wxUIntPtr item2, long sortData); bool IsShowingDownloadSources() const { return true; } DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/StatTree.cpp0000644000175000017500000004070712611472361020541 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2005-2011 Dévai Tamás ( gonosztopi@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "StatTree.h" #include #include "OtherFunctions.h" #ifndef CLIENT_GUI #include // Needed for CFormat #define a_brackets_b(a,b) (a + wxT(" (") + b + wxT(")")) #endif /* !CLIENT_GUI */ #include // Needed for CECTag #ifdef CLIENT_GUI #include // Needed for CEC_StatTree_Node_Tag #else uint32_t NewStatTreeItemId() { static uint32_t lastid = 0; return ++lastid; } #endif /* CStatTreeItemBase */ #ifdef CLIENT_GUI CStatTreeItemBase::CStatTreeItemBase(const CECTag *tag) : m_label(static_cast(tag)->GetDisplayString()), m_uniqueid(tag->GetTagByNameSafe(EC_TAG_STATTREE_NODEID)->GetInt()) { wxASSERT(tag->GetTagName() == EC_TAG_STATTREE_NODE); for (CECTag::const_iterator it = tag->begin(); it != tag->end(); ++it) { const CECTag *tmp = & *it; if (tmp->GetTagName() == EC_TAG_STATTREE_NODE) { m_children.push_back(new CStatTreeItemBase(tmp)); } } } #endif /* CLIENT_GUI */ CStatTreeItemBase::~CStatTreeItemBase() { DeleteContents(m_children); } #ifndef CLIENT_GUI CStatTreeItemBase* CStatTreeItemBase::AddChild( CStatTreeItemBase* child, uint32_t id, bool skipOneLevel) { wxMutexLocker lock(m_lock); if (skipOneLevel) { child->m_parent = m_parent; } else { child->m_parent = this; } child->m_id = id; if (m_flags & stSortChildren) { std::list::iterator it = m_children.begin(); while (it != m_children.end() && id < (*it)->m_id) { ++it; } m_children.insert(it, child); } else { m_children.push_back(child); } return child; } #endif /* !CLIENT_GUI */ bool CStatTreeItemBase::HasVisibleChildren() { wxMutexLocker lock(m_lock); for (std::list::const_iterator it = m_children.begin(); it != m_children.end(); ++it) { if ((*it)->IsVisible()) { return true; } } return false; } #ifndef CLIENT_GUI bool CStatTreeItemBase::HasChildWithId(uint32_t id) { wxMutexLocker lock(m_lock); for (std::list::const_iterator it = m_children.begin(); it != m_children.end(); ++it) { if ((*it)->m_id == id) { return true; } } return false; } CStatTreeItemBase* CStatTreeItemBase::GetChildById(uint32_t id) { wxMutexLocker lock(m_lock); for (std::list::const_iterator it = m_children.begin(); it != m_children.end(); ++it) { if ((*it)->m_id == id) { return *it; } } return NULL; } // Note: these functions do not lock the list, because it is already locked at the time they're called StatTreeItemIterator CStatTreeItemBase::GetFirstVisibleChild(uint32_t max_children) { StatTreeItemIterator it = m_children.begin(); m_visible_counter = --max_children; while (it != m_children.end() && !(*it)->IsVisible()) ++it; return it; } void CStatTreeItemBase::GetNextVisibleChild(StatTreeItemIterator& it) { if (m_flags & stCapChildren) { if (m_visible_counter == 0) { it = m_children.end(); return; } else { --m_visible_counter; } } if (it != m_children.end()) ++it; while (it != m_children.end() && !(*it)->IsVisible()) ++it; } // // Anything below is only for core. // bool CStatTreeItemBase::ValueSort(const CStatTreeItemBase* a, const CStatTreeItemBase* b) { if (a->m_id < 0x00000100 || a->m_id > 0x7fffffff || b->m_id < 0x00000100 || b->m_id > 0x7fffffff) { return a->m_id > b->m_id; } else { return dynamic_cast(a)->GetValue() > dynamic_cast(b)->GetValue(); } } #ifndef AMULE_DAEMON wxString CStatTreeItemBase::GetDisplayString() const { return wxGetTranslation(m_label); } #endif CECTag *CStatTreeItemBase::CreateECTag(uint32_t max_children) { if (IsVisible()) { wxMutexLocker lock(m_lock); CECTag *tag = new CECTag(EC_TAG_STATTREE_NODE, m_label); tag->AddTag(CECTag(EC_TAG_STATTREE_NODEID, m_uniqueid)); AddECValues(tag); m_visible_counter = max_children - 1; for (std::list::const_iterator it = m_children.begin(); it != m_children.end(); ++it) { CECTag *tmp = (*it)->CreateECTag(max_children); if (tmp) { tag->AddTag(*tmp); delete tmp; if (m_flags & stCapChildren) { if (m_visible_counter == 0) { break; } else { --m_visible_counter; } } } } return tag; } else { return NULL; } } /* CStatTreeItemSimple */ #ifndef AMULE_DAEMON wxString CStatTreeItemSimple::GetDisplayString() const { switch (m_valuetype) { case vtInteger: switch (m_displaymode) { case dmTime: return CFormat(wxGetTranslation(m_label)) % CastSecondsToHM(m_intvalue); case dmBytes: return CFormat(wxGetTranslation(m_label)) % CastItoXBytes(m_intvalue); default: return CFormat(wxGetTranslation(m_label)) % m_intvalue; } case vtFloat: return CFormat(wxGetTranslation(m_label)) % m_floatvalue; case vtString: return CFormat(wxGetTranslation(m_label)) % m_stringvalue; default: return wxGetTranslation(m_label); } } #endif bool CStatTreeItemSimple::IsVisible() const { if (m_flags & stHideIfZero) { switch (m_valuetype) { case vtInteger: return m_intvalue != 0; case vtFloat: return m_floatvalue != 0.0; case vtString: return !m_stringvalue.IsEmpty(); default: return false; } } return true; } void CStatTreeItemSimple::AddECValues(CECTag *tag) const { switch (m_valuetype) { case vtInteger: { if (m_displaymode == dmTime) { CECTag value(EC_TAG_STAT_NODE_VALUE, (uint32)m_intvalue); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_TIME)); tag->AddTag(value); } else { CECTag value(EC_TAG_STAT_NODE_VALUE, (uint64)m_intvalue); if (m_displaymode == dmBytes) { value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_BYTES)); } tag->AddTag(value); } break; } case vtFloat: { CECTag value(EC_TAG_STAT_NODE_VALUE, m_floatvalue); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_DOUBLE)); tag->AddTag(value); break; } case vtString: { CECTag value(EC_TAG_STAT_NODE_VALUE, m_stringvalue); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_STRING)); tag->AddTag(value); break; } default: break; } } /* CStatTreeItemCounterTmpl */ #ifndef AMULE_DAEMON template wxString CStatTreeItemCounterTmpl<_Tp>::GetDisplayString() const { wxString my_label = wxGetTranslation(m_label); // This is needed for client names, for example if (my_label == m_label) { if (m_label.Right(4) == wxT(": %s")) { my_label = wxGetTranslation( m_label.Mid(0, m_label.Length() - 4)) + wxString(wxT(": %s")); } } CFormat label(my_label); if (m_displaymode == dmBytes) { return label % CastItoXBytes(m_value); } else { wxString result = CFormat(wxT("%u")) % m_value; if ((m_flags & stShowPercent) && m_parent) { result += CFormat(wxT(" (%.2f%%)")) % ((double(m_value) / dynamic_cast*>(m_parent)->m_value) * 100.0); } return label % result; } } template wxString CStatTreeItemCounter::GetDisplayString() const; template wxString CStatTreeItemNativeCounter::GetDisplayString() const; #endif template void CStatTreeItemCounterTmpl<_Tp>::AddECValues(CECTag *tag) const { CECTag value(EC_TAG_STAT_NODE_VALUE, (uint64)m_value); if (m_displaymode == dmBytes) { value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_BYTES)); } else { value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_ISTRING)); if ((m_flags & stShowPercent) && m_parent) { CECTag tmp(EC_TAG_STAT_NODE_VALUE, (double(m_value) / dynamic_cast*>(m_parent)->m_value) * 100.0); tmp.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_DOUBLE)); value.AddTag(tmp); } } tag->AddTag(value); } template void CStatTreeItemCounter::AddECValues(CECTag *tag) const; template void CStatTreeItemNativeCounter::AddECValues(CECTag *tag) const; /* CStatTreeItemUlDlCounter */ #ifndef AMULE_DAEMON wxString CStatTreeItemUlDlCounter::GetDisplayString() const { return CFormat(wxGetTranslation(m_label)) % a_brackets_b(CastItoXBytes(m_value), CastItoXBytes(m_value + m_totalfunc())); } #endif void CStatTreeItemUlDlCounter::AddECValues(CECTag *tag) const { CECTag value(EC_TAG_STAT_NODE_VALUE, m_value); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_BYTES)); CECTag tmp(EC_TAG_STAT_NODE_VALUE, m_value + m_totalfunc()); tmp.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_BYTES)); value.AddTag(tmp); tag->AddTag(value); } /* CStatTreeItemCounterMax */ #ifndef AMULE_DAEMON wxString CStatTreeItemCounterMax::GetDisplayString() const { return CFormat(wxGetTranslation(m_label)) % m_value; } #endif void CStatTreeItemCounterMax::AddECValues(CECTag *tag) const { tag->AddTag(CECTag(EC_TAG_STAT_NODE_VALUE, (uint64)m_value)); } /* CStatTreeItemPackets */ #ifndef AMULE_DAEMON wxString CStatTreeItemPackets::GetDisplayString() const { return CFormat(wxGetTranslation(m_label)) % a_brackets_b(CastItoXBytes(m_bytes), CastItoIShort(m_packets)); } #endif void CStatTreeItemPackets::AddECValues(CECTag *tag) const { CECTag value(EC_TAG_STAT_NODE_VALUE, m_bytes); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_BYTES)); CECTag tmp(EC_TAG_STAT_NODE_VALUE, (uint64)m_packets); tmp.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_ISHORT)); value.AddTag(tmp); tag->AddTag(value); } /* CStatTreeItemPacketTotals */ #ifndef AMULE_DAEMON wxString CStatTreeItemPacketTotals::GetDisplayString() const { uint32_t tmp_packets = m_packets; uint64_t tmp_bytes = m_bytes; for (std::vector::const_iterator it = m_counters.begin(); it != m_counters.end(); ++it) { tmp_packets += (*it)->m_packets; tmp_bytes += (*it)->m_bytes; } return CFormat(wxGetTranslation(m_label)) % a_brackets_b(CastItoXBytes(tmp_bytes), CastItoIShort(tmp_packets)); } #endif void CStatTreeItemPacketTotals::AddECValues(CECTag *tag) const { uint32_t tmp_packets = m_packets; uint64_t tmp_bytes = m_bytes; for (std::vector::const_iterator it = m_counters.begin(); it != m_counters.end(); ++it) { tmp_packets += (*it)->m_packets; tmp_bytes += (*it)->m_bytes; } CECTag value(EC_TAG_STAT_NODE_VALUE, tmp_bytes); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_BYTES)); CECTag tmp(EC_TAG_STAT_NODE_VALUE, (uint64)tmp_packets); tmp.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_ISHORT)); value.AddTag(tmp); tag->AddTag(value); } /* CStatTreeItemTimer */ #ifndef AMULE_DAEMON wxString CStatTreeItemTimer::GetDisplayString() const { return CFormat(wxGetTranslation(m_label)) % CastSecondsToHM(m_value ? GetTimerSeconds() : 0); } #endif void CStatTreeItemTimer::AddECValues(CECTag *tag) const { CECTag value(EC_TAG_STAT_NODE_VALUE, m_value ? (uint32)GetTimerSeconds() : (uint32)0); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_TIME)); tag->AddTag(value); } /* CStatTreeItemAverage */ #ifndef AMULE_DAEMON wxString CStatTreeItemAverage::GetDisplayString() const { if ((*m_divisor) != 0) { switch (m_displaymode) { case dmBytes: return CFormat(wxGetTranslation(m_label)) % CastItoXBytes((*m_dividend)/(*m_divisor)); case dmTime: return CFormat(wxGetTranslation(m_label)) % CastSecondsToHM((*m_dividend)/(*m_divisor)); default: return CFormat(wxGetTranslation(m_label)) % (CFormat(wxT("%u")) % ((uint64)(*m_dividend)/(*m_divisor))).GetString(); } } else { return CFormat(wxGetTranslation(m_label)) % wxT("-"); } } #endif void CStatTreeItemAverage::AddECValues(CECTag *tag) const { if ((*m_divisor) != 0) { uint64 data = (*m_dividend)/(*m_divisor); if (m_displaymode == dmTime) { CECTag value(EC_TAG_STAT_NODE_VALUE, (uint32)data); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_TIME)); tag->AddTag(value); } else { CECTag value(EC_TAG_STAT_NODE_VALUE, data); if (m_displaymode == dmBytes) { value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_BYTES)); } tag->AddTag(value); } } else { CECTag value(EC_TAG_STAT_NODE_VALUE, wxString(wxT("-"))); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_STRING)); tag->AddTag(value); } } /* CStatTreeItemAverageSpeed */ #ifndef AMULE_DAEMON wxString CStatTreeItemAverageSpeed::GetDisplayString() const { uint64 time = m_timer->GetTimerSeconds(); if (time) { return CFormat(wxGetTranslation(m_label)) % CastItoSpeed((*m_counter)/time); } else { return CFormat(wxGetTranslation(m_label)) % CastItoSpeed(0); } } #endif void CStatTreeItemAverageSpeed::AddECValues(CECTag *tag) const { uint64 time = m_timer->GetTimerSeconds(); if (time) { CECTag value(EC_TAG_STAT_NODE_VALUE, (uint32)((*m_counter)/time)); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_SPEED)); tag->AddTag(value); } else { CECTag value(EC_TAG_STAT_NODE_VALUE, (uint32)0); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_SPEED)); tag->AddTag(value); } } /* CStatTreeItemRatio */ wxString CStatTreeItemRatio::GetString() const { wxString ret; double v1 = m_counter1->GetValue(); double v2 = m_counter2->GetValue(); if (v1 > 0 && v2 > 0) { if (v2 < v1) { ret = CFormat(wxT("%.2f : 1")) % (v1 / v2); } else { ret = CFormat(wxT("1 : %.2f")) % (v2 / v1); } if (m_totalfunc1 && m_totalfunc2) { double t1 = m_totalfunc1() + v1; double t2 = m_totalfunc2() + v2; if (t2 < t1) { ret += CFormat(wxT(" (%.2f : 1)")) % (t1 / t2); } else { ret += CFormat(wxT(" (1 : %.2f)")) % (t2 / t1); } } } else { ret = _("Not available"); } return ret; } #ifndef AMULE_DAEMON wxString CStatTreeItemRatio::GetDisplayString() const { return CFormat(wxGetTranslation(m_label)) % GetString(); } #endif void CStatTreeItemRatio::AddECValues(CECTag *tag) const { CECTag value(EC_TAG_STAT_NODE_VALUE, GetString()); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_STRING)); tag->AddTag(value); } /* CStatTreeItemReconnects */ #ifndef AMULE_DAEMON wxString CStatTreeItemReconnects::GetDisplayString() const { return CFormat(wxGetTranslation(m_label)) % (m_value ? m_value - 1 : 0); } #endif void CStatTreeItemReconnects::AddECValues(CECTag *tag) const { tag->AddTag(CECTag(EC_TAG_STAT_NODE_VALUE, m_value ? (uint64)(m_value - 1) : (uint64)0)); } /* CStatTreeItemMaxConnLimitReached */ #ifndef AMULE_DAEMON wxString CStatTreeItemMaxConnLimitReached::GetDisplayString() const { if (m_count) { return CFormat(wxGetTranslation(m_label)) % (CFormat(wxT("%i : %s %s")) % m_count % m_time.FormatISODate() % m_time.FormatISOTime()); } else { return CFormat(wxGetTranslation(m_label)) % _("Never"); } } #endif void CStatTreeItemMaxConnLimitReached::AddECValues(CECTag *tag) const { wxString result; if (m_count) { result = CFormat(wxT("%i : %s %s")) % m_count % m_time.FormatISODate() % m_time.FormatISOTime(); } else { result = wxTRANSLATE("Never"); } CECTag value(EC_TAG_STAT_NODE_VALUE, result); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_STRING)); tag->AddTag(value); } /* CStatTreeItemTotalClients */ #ifndef AMULE_DAEMON wxString CStatTreeItemTotalClients::GetDisplayString() const { return CFormat(wxGetTranslation(m_label)) % (m_known->GetValue() + m_unknown->GetValue()) % m_known->GetValue(); } #endif void CStatTreeItemTotalClients::AddECValues(CECTag *tag) const { CECTag value1(EC_TAG_STAT_NODE_VALUE, (uint64)(m_known->GetValue() + m_unknown->GetValue())); tag->AddTag(value1); CECTag value2(EC_TAG_STAT_NODE_VALUE, (uint64)m_known->GetValue()); tag->AddTag(value2); } #endif /* !CLIENT_GUI */ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/StatTree.h0000644000175000017500000006234212611472361020205 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2005-2011 Dévai Tamás ( gonosztopi@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef STATTREE_H #define STATTREE_H /** * @file StatTree.h * * Interface to stat tree nodes. * * This file defines various classes representing * statistics tree nodes. */ #ifndef CLIENT_GUI # define VIRTUAL virtual #else # define VIRTUAL #endif #include // Needed for std::list #include // Needed for wxString #include // Needed for wxMutex #include "Types.h" #ifndef CLIENT_GUI #include // Needed for wxDateTime #include "GetTickCount.h" // Needed for GetTickCount64() /** * Stat tree flags */ enum EStatTreeFlags { stNone = 0, ///< Nothing. Really. stSortChildren = 1, ///< Childrens are sorted descending by their ID. stShowPercent = 2, /*!< Shows percentage compared to parent. * Counters only, whose parent is also counter! (khmm...) */ stHideIfZero = 4, ///< Hides item (and children) if value is zero. stSortByValue = 8, /*!< Together with stSortChildren, sorts children by their value. * WARNING! This assumes that value-sorted children are * counters! * Sort-by-value works only on children with ID between 0x00000100-0x7fffffff. * @note CStatTreeItemBase::ReSortChildren() must be called to get sort order right. */ stCapChildren = 16 ///< Caps children list. /*!< Shows only top n children, where n is set by CStatisticsDlg::FillTree() to thePrefs::GetMaxClientVersions(). * The list itself is not changed, only visibility is ignored on items * outside the top n visible. * * On an EC request, visibility range can be set with the EC_TAG_STATTREE_CAPPING tag. */ }; enum EValueType { vtUnknown, vtString, vtInteger, vtFloat }; /** * Display modes for Simple and Counter items */ enum EDisplayMode { dmDefault, ///< Default display mode. dmTime, ///< Treat integer value as time in seconds. dmBytes ///< Treat integer value as bytes count. }; #endif /* !CLIENT_GUI */ class CStatTreeItemBase; typedef std::list::iterator StatTreeItemIterator; class CECTag; uint32_t NewStatTreeItemId(); /** * Base tree item class */ class CStatTreeItemBase { public: #ifndef CLIENT_GUI /** * Creates an item with a constant label. * * @param label Visible text for the item. * @param flags Flags to use. */ CStatTreeItemBase(const wxString &label, unsigned flags = stNone) : m_label(label), m_parent(NULL), m_flags(flags), m_id(0), m_visible_counter(0), m_uniqueid(NewStatTreeItemId()) {} #else /** * Creates an item with a constant label. * * @param label Visible text for the item. */ CStatTreeItemBase(const wxString &label, uint32_t uniqueid) : m_label(label), m_uniqueid(uniqueid) {} /** * Creates an item (and the whole subtree) from an EC tag. * * @param tag EC tag containing a stat subtree. */ CStatTreeItemBase(const CECTag *tag); #endif /** * Deletes all children. */ VIRTUAL ~CStatTreeItemBase(); #ifndef CLIENT_GUI /** * Adds a new child node. * * @param child child to add. * @param id an optional ID for the new item. * @param skipOneLevel activates a trick to let the code work for aMule OSInfo and Version trees. * * @return the newly added item. */ CStatTreeItemBase *AddChild( CStatTreeItemBase* child, uint32_t id = 0, bool skipOneLevel = false); #endif /** * Check for children. * * @return true if this node has children, false otherwise. */ bool HasChildren() { wxMutexLocker lock(m_lock); return !m_children.empty(); } /** * Check for visible children. * * @return true if this node has children and at least one of them is visible. */ bool HasVisibleChildren(); #ifndef CLIENT_GUI /** * Check for a given child. * * @return true if this node has a child with the given ID. */ bool HasChildWithId(uint32_t id); /** * Access a specific child. * * @return the child with the given ID, or NULL if not found. */ CStatTreeItemBase *GetChildById(uint32_t id); /** * Get the first visible child. * * @param max_children The maximum number of children to show, when the stCapChildren flag is set. Otherwise it has no effect. (0 = unlimited) * * @return An iterator, that should be passed to GetNextVisibleChild() and IsAtEndOfList(). */ StatTreeItemIterator GetFirstVisibleChild(uint32_t max_children); /** * Get the next visible child. */ void GetNextVisibleChild(StatTreeItemIterator& it); #else /* CLIENT_GUI */ /** * Get the first visible child. * * @return An iterator, that should be passed to GetNextVisibleChild() and IsAtEndOfList(). * * @note On a remote list every item is visible. */ StatTreeItemIterator GetFirstVisibleChild() { return m_children.begin(); } /** * Get the next visible child. * * @note On a remote list every item is visible. */ void GetNextVisibleChild(StatTreeItemIterator& it) { ++it; } #endif /* !CLIENT_GUI / CLIENT_GUI */ /** * Check if we are past the end of child list. */ bool IsAtEndOfList(StatTreeItemIterator& it) { return it == m_children.end(); } #ifndef CLIENT_GUI /** * Resorts children for the stSortByValue flag. */ void ReSortChildren() { wxMutexLocker lock(m_lock); m_children.sort(ValueSort); } #endif #ifndef AMULE_DAEMON #ifndef CLIENT_GUI /** * Returns a string that will be displayed on the GUI tree. */ virtual wxString GetDisplayString() const; #else /** * Returns the associated text (GUI item label). */ const wxString& GetDisplayString() const { return m_label; } #endif /* !CLIENT_GUI / CLIENT_GUI */ /** * Returns the mutex used to lock the child list of this node. * * This function is used by CStatisticsDlg to be able to lock the * core tree while updating the GUI tree. */ wxMutex& GetLock() { return m_lock; } /** * Returns the unique ID of this node. */ uint32_t GetUniqueId() const { return m_uniqueid; } #endif /* !AMULE_DAEMON */ /** * Check whether this node is visible. */ VIRTUAL bool IsVisible() const { return true; } #ifndef CLIENT_GUI /** * Create an EC tag from this node (and children). * * @param max_children The maximum number of children to show, when the stCapChildren flag is set. Otherwise it has no effect. (0 = unlimited) * * @return A EC tag containing this node and all its children. */ virtual CECTag *CreateECTag(uint32_t max_children); #endif protected: #ifndef CLIENT_GUI /** * Add values to the EC tag being generated. * * Should have a real implementation in children which have some value. * The given parameter is the tag to which values should be added. */ virtual void AddECValues(CECTag*) const {} #endif //! Unformatted and untranslated label of the node. Note: On remote gui it is already formatted and translated. const wxString m_label; #ifndef CLIENT_GUI //! Parent of this node. CStatTreeItemBase *m_parent; //! Flags for the node. unsigned m_flags; #endif private: #ifndef CLIENT_GUI //! Function used when sorting children by value. static bool ValueSort(const CStatTreeItemBase* a, const CStatTreeItemBase* b); //! ID of this node. uint32_t m_id; //! Counter to keep track of displayed visible items // (needed for the stCapChildren flag) uint32_t m_visible_counter; #endif //! Unique ID of this node. uint32_t m_uniqueid; //! Children of this node. std::list m_children; //! Lock to protect list from simultanous access. wxMutex m_lock; }; // // Anything below is only for core. // #ifndef CLIENT_GUI /** * Simple tree item. * * This tree item has one value and nothing speciality. :) * The value might be an arbitrary integer or floating point type, * or a wxString string. * * The item is able to display value in different formats, see SetDisplayMode(). * * @note that you have to specify the right format code on 'label', i.e.: * %s for string and integers with displayMode dmTime or dmBytes, * %u or similar for integers, and * %f or similar for floating point types. * * @note You have to call SetValue() after creation for non-integer values, otherwise * you'll get undesired results. */ class CStatTreeItemSimple : public CStatTreeItemBase { public: /** * Constructor. * * @see CStatTreeItemBase::CStatTreeItemBase */ CStatTreeItemSimple( const wxString &label, unsigned flags = stNone, enum EDisplayMode displaymode = dmDefault) : CStatTreeItemBase(label, flags), m_valuetype(vtUnknown), m_displaymode(displaymode) { SetValue((uint64_t)0); } /** * Sets the desired display mode of value. */ void SetDisplayMode(enum EDisplayMode mode) { m_displaymode = mode; } /** * Sets an integer type value. * * @param value the value to be set. */ void SetValue(uint64_t value) { m_valuetype = vtInteger; m_intvalue = value; } /** * Sets a floating point type value. * * @param value the value to be set. */ void SetValue(double value) { m_valuetype = vtFloat; m_floatvalue = value; } /** * Sets a string type value. * * @param value the value to be set. */ void SetValue(const wxString& value) { m_valuetype = vtString; m_stringvalue = value; } #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif /** * @see CStatTreeItemBase::IsVisible() */ virtual bool IsVisible() const; protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; //! Type of the value. enum EValueType m_valuetype; //! Display mode of the value. enum EDisplayMode m_displaymode; //! Union to save space. union { uint64_t m_intvalue; ///< Integer value. double m_floatvalue; ///< Floating point value. }; wxString m_stringvalue; ///< String value. }; /** * Counter-type tree item template. * * Able to show percentage compared to parent, hide itself * when value is zero, and nice functions for changing the value. * stShowPercent and stHideIfZero flags take effect only on * this node. */ template class CStatTreeItemCounterTmpl : public CStatTreeItemBase { public: /** * Constructor. * * @see CStatTreeItemBase::CStatTreeItemBase */ CStatTreeItemCounterTmpl( const wxString &label, unsigned flags = stNone) : CStatTreeItemBase(label, flags), m_value(0), m_displaymode(dmDefault) {} /** * Retrieve counter value. */ _Tp GetValue() const { return m_value; } /** * Retrieve counter value. */ operator _Tp() const { return m_value; } /** * Set counter to given value. */ void SetValue(_Tp value) { m_value = value; } /** * Set counter to given value. */ void operator=(_Tp value) { m_value = value; } /** * Increase value by 1. */ void operator++() { ++m_value; } /** * Decrease value by 1. */ void operator--() { --m_value; } /** * Increase value by given amount. */ void operator+=(_Tp value) { m_value += value; } /** * Decrease value by given amount. */ void operator-=(_Tp value) { m_value -= value; } /** * Sets the desired display mode of value. */ void SetDisplayMode(enum EDisplayMode mode) { m_displaymode = mode; } #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif /** * @see CStatTreeItemBase::IsVisible() */ virtual bool IsVisible() const { return (m_flags & stHideIfZero) ? (m_value != 0) : true; } protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; //! Actual value of the counter. _Tp m_value; //! Display mode of the value. enum EDisplayMode m_displaymode; }; typedef CStatTreeItemCounterTmpl CStatTreeItemCounter; typedef CStatTreeItemCounterTmpl CStatTreeItemNativeCounter; /** * A counter, which does not display its value :P */ class CStatTreeItemHiddenCounter : public CStatTreeItemCounter { public: /** * Constructor. * * @see CStatTreeItemCounter::CStatTreeItemCounter */ CStatTreeItemHiddenCounter( const wxString &label, unsigned flags = stNone) : CStatTreeItemCounter(label, flags) {} #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const { return CStatTreeItemBase::GetDisplayString(); } #endif /** * @see CStatTreeItemBase::IsVisible() */ virtual bool IsVisible() const { return true; } protected: //! Do nothing here. virtual void AddECValues(CECTag*) const {} }; /** * Item for the session/total upload/download counter */ class CStatTreeItemUlDlCounter : public CStatTreeItemCounter { public: /** * @param label format text for item. * @param totalfunc function that will return the totals. */ CStatTreeItemUlDlCounter( const wxString &label, uint64_t (*totalfunc)(), unsigned flags = stNone) : CStatTreeItemCounter(label, flags), m_totalfunc(totalfunc) {} #ifndef AMULE_DAEMON /** * @see CStatTreeBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; //! A function whose return value is the total (without current) value. uint64_t (*m_totalfunc)(); }; /** * Counter-like tree item which remembers its max value. * * Used for active connections counter, to be able to get peak connections. */ class CStatTreeItemCounterMax : public CStatTreeItemBase { public: /** * @see CStatTreeItemBase::CStatTreeItemBase */ CStatTreeItemCounterMax(const wxString &label) : CStatTreeItemBase(label), m_value(0), m_max_value(0) {} /** * Increase value */ void operator++() { if (++m_value > m_max_value) { m_max_value = m_value; } } /** * Decrease value */ void operator--() { --m_value; } /** * Retrieve actual value */ uint32_t GetValue() { return m_value; } /** * Retrieve max value */ uint32_t GetMaxValue() { return m_max_value; } #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; //! Actual value of the counter. uint32_t m_value; //! Maximal value the counter has ever reached. uint32_t m_max_value; }; /** * Tree item for counting packets */ class CStatTreeItemPackets : public CStatTreeItemBase { friend class CStatTreeItemPacketTotals; public: /** * @see CStatTreeItemBase::CStatTreeItemBase */ CStatTreeItemPackets(const wxString &label) : CStatTreeItemBase(label, stNone), m_packets(0), m_bytes(0) {} /** * Add a packet of size 'size'. */ void operator+=(long size) { ++m_packets; m_bytes += size; } #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; //! Total number of packets. uint32_t m_packets; //! Total bytes in the packets. uint64_t m_bytes; }; /** * Tree item for counting totals on packet counters. * * This item sums up a number of packet counters, plus adds its own values. */ class CStatTreeItemPacketTotals : public CStatTreeItemPackets { public: /** * @see CStatTreeItemPackets::CStatTreeItemPackets */ CStatTreeItemPacketTotals(const wxString &label) : CStatTreeItemPackets(label) {} /** * Adds a packet counter, whose values should be counted in the totals. */ void AddPacketCounter(CStatTreeItemPackets* counter) { m_counters.push_back(counter); } #ifndef AMULE_DAEMON /** * @see CStatTreeItemPackets::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; //! List of packet counters to sum. std::vector m_counters; }; /** * Tree item for timer type nodes. */ class CStatTreeItemTimer : public CStatTreeItemBase { public: /** * @see CStatTreeItemBase::CStatTreeItemBase */ CStatTreeItemTimer( const wxString &label, unsigned flags = stNone) : CStatTreeItemBase(label, flags), m_value(0) {} /** * Sets timer start time (and thus starts timer). */ void SetStartTime(uint64_t value) { m_value = value; } /** * Starts the timer if it's not running. */ void StartTimer() { if (!m_value) m_value = GetTickCount64(); } /** * Stops the timer. */ void StopTimer() { m_value = 0; } /** * Check whether the timer is running. */ bool IsRunning() const { return m_value != 0; } /** * Reset timer unconditionally. */ void ResetTimer() { m_value = GetTickCount64(); } /** * Get timer value. */ uint64_t GetTimerValue() const { return m_value ? GetTickCount64() - m_value : 0; } /** * Get timer value (in ticks). */ operator uint64_t() const { return m_value ? GetTickCount64() - m_value : 0; } /** * Get elapsed time in seconds. */ uint64_t GetTimerSeconds() const { return m_value ? (GetTickCount64() - m_value) / 1000 : 0; } /** * Get start time of the timer. */ uint64_t GetTimerStart() const { return m_value; } #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif /** * @see CStatTreeItemBase::IsVisible() */ virtual bool IsVisible() const { return (m_flags & stHideIfZero) ? m_value != 0 : true; } protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; //! Tick count value when timer was started. uint64_t m_value; }; /** * Tree item for shared files average size. * * Average is counted as dividend / divisor, if divisor is non-zero. */ class CStatTreeItemAverage : public CStatTreeItemBase { public: /** * @see CStatTreeItemBase::CStatTreeItemBase * * @param dividend What to divide. * @param divisor Divide by what. */ CStatTreeItemAverage( const wxString &label, const CStatTreeItemCounter *dividend, const CStatTreeItemCounter *divisor, enum EDisplayMode displaymode) : CStatTreeItemBase(label, stNone), m_dividend(dividend), m_divisor(divisor), m_displaymode(displaymode) {} #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif /** * @see CStatTreeItemBase::IsVisible() */ virtual bool IsVisible() const { return (*m_divisor) != 0; } protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; //! What to divide. const CStatTreeItemCounter *m_dividend; //! Divide by what. const CStatTreeItemCounter *m_divisor; //! Display mode. enum EDisplayMode m_displaymode; }; /** * Tree item for average up/down speed. */ class CStatTreeItemAverageSpeed : public CStatTreeItemBase { public: /** * @see CStatTreeItemBase::CStatTreeItemBase * * @param counter Session up/down counter. * @param timer Session uptime timer. */ CStatTreeItemAverageSpeed( const wxString &label, const CStatTreeItemUlDlCounter *counter, const CStatTreeItemTimer *timer) : CStatTreeItemBase(label, stNone), m_counter(counter), m_timer(timer) {} #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; //! Session sent/received bytes counter. const CStatTreeItemUlDlCounter *m_counter; //! Session uptime. const CStatTreeItemTimer *m_timer; }; /** * Tree item for displaying ratio between two counters. * * Ratio is counted as counter1:counter2. */ class CStatTreeItemRatio : public CStatTreeItemBase { public: /** * @see CStatTreeItemBase::CStatTreeItemBase * * @param cnt1 First counter to use. * @param cnt2 Second counter to use. */ CStatTreeItemRatio( const wxString &label, const CStatTreeItemCounter *cnt1, const CStatTreeItemCounter* cnt2, uint64_t (*totalfunc1)() = NULL, uint64_t (*totalfunc2)() = NULL) : CStatTreeItemBase(label, stNone), m_counter1(cnt1), m_counter2(cnt2), m_totalfunc1(totalfunc1), m_totalfunc2(totalfunc2){} #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; //! First counter. const CStatTreeItemCounter *m_counter1; //! Second counter. const CStatTreeItemCounter *m_counter2; //! A function for each whose return value is the total (without current) value. uint64_t (*m_totalfunc1)(); uint64_t (*m_totalfunc2)(); private: //! Formatted String for display or EC wxString GetString() const; }; /** * Special counter for reconnects. */ class CStatTreeItemReconnects : public CStatTreeItemNativeCounter { public: /** * @see CStatTreeItemBase::CStatTreeItemBase */ CStatTreeItemReconnects(const wxString &label) : CStatTreeItemNativeCounter(label, stNone) {} #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; }; /** * Special item for Max Connection Limit Reached */ class CStatTreeItemMaxConnLimitReached : public CStatTreeItemBase { public: /** * @see CStatTreeItemBase::CStatTreeItemBase */ CStatTreeItemMaxConnLimitReached(const wxString &label) : CStatTreeItemBase(label), m_count(0) {} /** * Increase counter and save time. */ void operator++() { ++m_count; m_time.SetToCurrent(); } #ifndef AMULE_DAEMON /** * Returns a string to be displayed on GUI. * * For m_count == 0 it will display "Never", * for other values it will display the counter value and the * date & time of the event. */ virtual wxString GetDisplayString() const; #endif protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; //! Number of times max conn limit reached. uint32_t m_count; //! Last time when max conn limit reached. wxDateTime m_time; }; /** * Special item for total client count */ class CStatTreeItemTotalClients : public CStatTreeItemBase { public: /** * @see CStatTreeItemBase::CStatTreeItemBase * * @param known Counter that counts known clients. * @param unknown Counter that counts unknown clients. */ CStatTreeItemTotalClients( const wxString &label, const CStatTreeItemCounter *known, const CStatTreeItemCounter *unknown) : CStatTreeItemBase(label), m_known(known), m_unknown(unknown) {} #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag *tag) const; //! Counter counting known clients. const CStatTreeItemCounter *m_known; //! Counter counting unknown clients. const CStatTreeItemCounter *m_unknown; }; #endif /* !CLIENT_GUI */ #endif /* STATTREE_H */ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/StateMachine.cpp0000644000175000017500000000526112611472361021347 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "StateMachine.h" #include CStateMachine::CStateMachine( const wxString &name, const unsigned int maxStates, const t_sm_state initialState ) : m_stateMutex(wxMUTEX_RECURSIVE), m_queueMutex(wxMUTEX_RECURSIVE), m_name(name), m_maxStates(maxStates) { m_state = initialState; m_clockCounter = 0; m_clocksInCurrentState = 0; } CStateMachine::~CStateMachine() { } void CStateMachine::Clock() { t_sm_state old_state; t_sm_event event; bool state_entry; old_state = m_state; /* Process state change acording to event */ if (!m_queue.empty()) { event = m_queue.front(); m_queue.pop(); } else { event = 0; } /* State changes can only happen here */ wxMutexLocker lock(m_stateMutex); m_state = next_state( event ); //#if 0 /* Debug */ ++m_clockCounter; state_entry = ( m_state != old_state ) || ( m_clockCounter == 1 ); if( state_entry ) { m_clocksInCurrentState = 0; printf( "%s(%04d): %d -> %d\n", (const char *)unicode2char(m_name), m_clockCounter, old_state, m_state); } ++m_clocksInCurrentState; //#endif /* Process new state entry */ if( m_state < m_maxStates ) { /* It should be ok to call Clock() recursively inside this * procedure because state change has already happened. Also * the m_state mutex is recursive. */ process_state(m_state, state_entry); } } /* In multithreaded implementations, this must be locked */ void CStateMachine::Schedule(t_sm_event event) { wxMutexLocker lock(m_queueMutex); m_queue.push(event); } void CStateMachine::flush_queue() { while (!m_queue.empty()) { m_queue.pop(); } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/StateMachine.h0000644000175000017500000000417312611472361021015 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // // Generic state machine implementation // #ifndef STATE_MACHINE_H #define STATE_MACHINE_H #include #include /* For wxMutex, wxMutexLocker */ #include /* For wxString */ typedef unsigned int t_sm_state; typedef unsigned int t_sm_event; class CStateMachine { public: CStateMachine( const wxString &name, const unsigned int maxStates, const t_sm_state initialState ); virtual ~CStateMachine() = 0; void Clock(); void Schedule(t_sm_event event); t_sm_state GetState() const { return m_state; } unsigned int GetClocksInCurrentState() const { return m_clocksInCurrentState; } virtual t_sm_state next_state(t_sm_event event) = 0; virtual void process_state(t_sm_state state, bool entry) = 0; private: void flush_queue(); t_sm_state m_state; wxMutex m_stateMutex; std::queue m_queue; wxMutex m_queueMutex; const wxString m_name; const unsigned int m_maxStates; unsigned int m_clockCounter; unsigned int m_clocksInCurrentState; }; #endif // STATE_MACHINE_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Statistics.cpp0000644000175000017500000012317712611472361021143 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // Copyright (c) 2005-2011 Dévai Tamás ( gonosztopi@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "Statistics.h" // Interface declarations #include #include // Needed for CECTag #ifndef CLIENT_GUI #ifndef AMULE_DAEMON #include // Needed for CFormat #endif #include "CFile.h" // Needed for CFile access #include // Needed for JoinPaths #include // Needed for wxConfig #include "DataToText.h" // Needed for GetSoftName() #include "ListenSocket.h" // (tree, GetAverageConnections) #include "ServerList.h" // Needed for CServerList (tree) #include // Needed for std::floor #include "updownclient.h" // Needed for CUpDownClient #else #include "GetTickCount.h" // Needed for GetTickCount64() #include // Needed for CRemoteConnect #endif #include "amule.h" // Needed for theApp #include #include "Logger.h" #include "Preferences.h" // Needed for thePrefs #ifdef __BSD__ // glibc -> bsd libc #define round rint #else #define round(x) floor(x+0.5) #endif /* __BSD__ */ #ifndef CLIENT_GUI /*----- CPreciseRateCounter -----*/ void CPreciseRateCounter::CalculateRate(uint64_t now) { wxMutexLocker lock(m_mutex); m_total += m_tmp_sum; m_byte_history.push_back(m_tmp_sum); m_tick_history.push_back(now); m_tmp_sum = 0; uint64_t timespan = now - m_tick_history.front(); // Checking maximal timespan, but make sure not to remove // the extra node in m_tick_history. while (timespan > m_timespan && !m_byte_history.empty()) { m_total -= m_byte_history.front(); m_byte_history.pop_front(); m_tick_history.pop_front(); timespan = now - m_tick_history.front(); } // Count rate/average if (m_count_average) { if (!m_byte_history.empty()) { m_rate = m_total / (double)m_byte_history.size(); } } else { if (timespan > 0) { m_rate = m_total / (timespan / 1000.0); } } if (m_rate > m_max_rate) { m_max_rate = m_rate; } } /*----- CStatTreeItemRateCounter -----*/ #ifndef AMULE_DAEMON wxString CStatTreeItemRateCounter::GetDisplayString() const { return CFormat(wxGetTranslation(m_label)) % CastItoSpeed(m_show_maxrate ? (uint32)m_max_rate : (uint32)m_rate); } #endif void CStatTreeItemRateCounter::AddECValues(CECTag* tag) const { CECTag value(EC_TAG_STAT_NODE_VALUE, m_show_maxrate ? (uint32)m_max_rate : (uint32)m_rate); value.AddTag(CECTag(EC_TAG_STAT_VALUE_TYPE, (uint8)EC_VALUE_SPEED)); tag->AddTag(value); } /*----- CStatTreeItemPeakConnections -----*/ #ifndef AMULE_DAEMON wxString CStatTreeItemPeakConnections::GetDisplayString() const { return CFormat(wxGetTranslation(m_label)) % theStats::GetPeakConnections(); } #endif void CStatTreeItemPeakConnections::AddECValues(CECTag* tag) const { tag->AddTag(CECTag(EC_TAG_STAT_NODE_VALUE, (uint64)theStats::GetPeakConnections())); } /*----- CStatistics -----*/ // Static variables // Rate counters CPreciseRateCounter* CStatistics::s_upOverheadRate; CPreciseRateCounter* CStatistics::s_downOverheadRate; CStatTreeItemRateCounter* CStatistics::s_uploadrate; CStatTreeItemRateCounter* CStatistics::s_downloadrate; #else /* CLIENT_GUI */ uint64 CStatistics::s_start_time; uint64 CStatistics::s_statData[sdTotalItems]; #endif /* !CLIENT_GUI / CLIENT_GUI */ // Tree root CStatTreeItemBase* CStatistics::s_statTree; #ifndef CLIENT_GUI // Uptime CStatTreeItemTimer* CStatistics::s_uptime; // Upload CStatTreeItemUlDlCounter* CStatistics::s_sessionUpload; CStatTreeItemPacketTotals* CStatistics::s_totalUpOverhead; CStatTreeItemPackets* CStatistics::s_fileReqUpOverhead; CStatTreeItemPackets* CStatistics::s_sourceXchgUpOverhead; CStatTreeItemPackets* CStatistics::s_serverUpOverhead; CStatTreeItemPackets* CStatistics::s_kadUpOverhead; CStatTreeItemCounter* CStatistics::s_cryptUpOverhead; CStatTreeItemNativeCounter* CStatistics::s_activeUploads; CStatTreeItemNativeCounter* CStatistics::s_waitingUploads; CStatTreeItemCounter* CStatistics::s_totalSuccUploads; CStatTreeItemCounter* CStatistics::s_totalFailedUploads; CStatTreeItemCounter* CStatistics::s_totalUploadTime; // Download CStatTreeItemUlDlCounter* CStatistics::s_sessionDownload; CStatTreeItemPacketTotals* CStatistics::s_totalDownOverhead; CStatTreeItemPackets* CStatistics::s_fileReqDownOverhead; CStatTreeItemPackets* CStatistics::s_sourceXchgDownOverhead; CStatTreeItemPackets* CStatistics::s_serverDownOverhead; CStatTreeItemPackets* CStatistics::s_kadDownOverhead; CStatTreeItemCounter* CStatistics::s_cryptDownOverhead; CStatTreeItemCounter* CStatistics::s_foundSources; CStatTreeItemNativeCounter* CStatistics::s_activeDownloads; // Connection CStatTreeItemReconnects* CStatistics::s_reconnects; CStatTreeItemTimer* CStatistics::s_sinceFirstTransfer; CStatTreeItemTimer* CStatistics::s_sinceConnected; CStatTreeItemCounterMax* CStatistics::s_activeConnections; CStatTreeItemMaxConnLimitReached* CStatistics::s_limitReached; CStatTreeItemSimple* CStatistics::s_avgConnections; // Clients CStatTreeItemHiddenCounter* CStatistics::s_clients; CStatTreeItemCounter* CStatistics::s_unknown; //CStatTreeItem CStatistics::s_lowID; //CStatTreeItem CStatistics::s_secIdentOnOff; #ifdef __DEBUG__ CStatTreeItemNativeCounter* CStatistics::s_hasSocket; #endif CStatTreeItemNativeCounter* CStatistics::s_filtered; CStatTreeItemNativeCounter* CStatistics::s_banned; // Servers CStatTreeItemSimple* CStatistics::s_workingServers; CStatTreeItemSimple* CStatistics::s_failedServers; CStatTreeItemNativeCounter* CStatistics::s_totalServers; CStatTreeItemNativeCounter* CStatistics::s_deletedServers; CStatTreeItemNativeCounter* CStatistics::s_filteredServers; CStatTreeItemSimple* CStatistics::s_usersOnWorking; CStatTreeItemSimple* CStatistics::s_filesOnWorking; CStatTreeItemSimple* CStatistics::s_totalUsers; CStatTreeItemSimple* CStatistics::s_totalFiles; CStatTreeItemSimple* CStatistics::s_serverOccupation; // Shared files CStatTreeItemCounter* CStatistics::s_numberOfShared; CStatTreeItemCounter* CStatistics::s_sizeOfShare; // Kad uint64_t CStatistics::s_kadNodesTotal; uint16_t CStatistics::s_kadNodesCur; // Totals uint64_t CStatistics::s_totalSent; uint64_t CStatistics::s_totalReceived; bool CStatistics::s_statsNeedSave; CStatistics::CStatistics() : m_graphRunningAvgDown(thePrefs::GetStatsAverageMinutes() * 60 * 1000, true), m_graphRunningAvgUp(thePrefs::GetStatsAverageMinutes() * 60 * 1000, true), m_graphRunningAvgKad(thePrefs::GetStatsAverageMinutes() * 60 * 1000, true) { uint64 start_time = GetTickCount64(); // Init graphs average_minutes = thePrefs::GetStatsAverageMinutes(); HR hr = {0.0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0}; hrInit = hr; nHistRanges = 7; // =ceil(log(max_update_delay)/log(2)) nPointsPerRange = GetPointsPerRange(); bitsHistClockMask = (1 << (nHistRanges-1)) - 1; aposRecycle = new listPOS[nHistRanges]; listPOS *ppos = aposRecycle+nHistRanges-1; for (int i=nHistRanges; i>0; --i) { // permanently allocated history list listHR.push_back(hr); *ppos-- = --listHR.end(); for (int j=nPointsPerRange; j>1; --j) listHR.push_back(hr); } // Init rate counters outside the tree s_upOverheadRate = new CPreciseRateCounter(5000); s_downOverheadRate = new CPreciseRateCounter(5000); // Init Tree InitStatsTree(); s_uptime->SetStartTime(start_time); // Load saved statistics Load(); s_statsNeedSave = false; } CStatistics::~CStatistics() { // clearing listHR frees the memory occupied by the nodes listHR.clear(); delete [] aposRecycle; delete s_statTree; // delete items not in the tree delete s_totalUploadTime; // delete rate counters outside the tree delete s_upOverheadRate; delete s_downOverheadRate; } uint64_t ReadUInt64FromCfg(wxConfigBase* cfg, const wxString& key) { wxString buffer; cfg->Read(key, &buffer, wxT("0")); uint64 tmp = 0; for (unsigned int i = 0; i < buffer.Length(); ++i) { if ((buffer[i] >= wxChar('0')) &&(buffer[i] <= wxChar('9'))) { tmp = tmp * 10 + (buffer[i] - wxChar('0')); } else { tmp = 0; break; } } return tmp; } void CStatistics::Load() { CFile f; s_totalSent = 0; s_totalReceived = 0; try { CPath path(JoinPaths(thePrefs::GetConfigDir(), wxT("statistics.dat"))); if (path.FileExists() && f.Open(path)) { uint8_t version = f.ReadUInt8(); if (version == 0) { s_totalSent = f.ReadUInt64(); s_totalReceived = f.ReadUInt64(); } } } catch (const CSafeIOException& e) { AddLogLineN(e.what()); } // Load old values from config bool cfgChanged = false; wxConfigBase* cfg = wxConfigBase::Get(); if (cfg->HasEntry(wxT("/Statistics/TotalUploadedBytes"))) { s_totalSent += ReadUInt64FromCfg(cfg, wxT("/Statistics/TotalUploadedBytes")); cfg->DeleteEntry(wxT("/Statistics/TotalUploadedBytes")); cfgChanged = true; } if (cfg->HasEntry(wxT("/Statistics/TotalDownloadedBytes"))) { s_totalReceived += ReadUInt64FromCfg(cfg, wxT("/Statistics/TotalDownloadedBytes")); cfg->DeleteEntry(wxT("/Statistics/TotalDownloadedBytes")); cfgChanged = true; } if (cfgChanged) { cfg->Flush(); s_statsNeedSave = s_totalSent > 0 || s_totalReceived > 0; Save(); } } void CStatistics::Save() { if (s_statsNeedSave) { CFile f; if (f.Open(JoinPaths(thePrefs::GetConfigDir(), wxT("statistics.dat")), CFile::write)) { f.WriteUInt8(0); /* version */ f.WriteUInt64(s_totalSent); f.WriteUInt64(s_totalReceived); } s_statsNeedSave = false; } } void CStatistics::CalculateRates() { uint64_t now = GetTickCount64(); s_downOverheadRate->CalculateRate(now); s_upOverheadRate->CalculateRate(now); s_downloadrate->CalculateRate(now); s_uploadrate->CalculateRate(now); } /* ------------------------------- GRAPHS ---------------------------- */ /* History List The basic idea here is that we want to keep as much history as we can without paying a high price in terms of memory space. Because we keep the history for display purposes, we can take advantage of the fact that when the period shown in the graphs is long then each pixel represents a long period. So as the most recent history we keep one window full of points at a resolution of 1 second, the next window full at 2 seconds, the next at 4 seconds and so on, up to the maximum desired. This way there is always at least one sample point per pixel for any update delay set by the user, and the memory required grows with the *log* of the total time period covered. The history is kept in a doubly-linked list, with the most recent snapshot at the tail. The number of nodes in the list is fixed, and there are no calls to RemoveHead() and AddTail() which would add overhead and contribute to memory fragmentation. Instead, every second when a new point gets recorded, one of the existing nodes is recycled; it is disjoined from its present place, put at the tail of the list, and then gets filled with new data. [Emilio Sandoz] This unfortunately does not work with stl classes, as none of them supports moving a node to another place, so we have to erase and re-add nodes. */ void CStatistics::RecordHistory() { // First we query and compute some values, then we store them in the history list // A few comments about the use of double and float in computations: // Even on a hi-res screen our graphs will have 10 bits of resolution at most, // so the 24 bits resolution of a float on 32 bit Intel processors is more than // enough for all displayed values. Rate computations however, and especially // running average computations, use differences (delta bytes/ delta time), and // for long uptimes the difference between two timestamps can lose too much // accuracy because the large mantissa causes less significant bits to be dropped // (same for the difference between two cumulative byte counts). [We don't store // these values as integers because they will be used in floating point calculations, // and we want to perform the conversion only once). Therefore timestamps and // Kbyte counts are stored in the history as doubles, while computed values use // float (to save space and execution time). /* Store values; first determine the node to be recycled (using the bits in iClock) oldest records ----------------- listHR ------------------ youngest records O-[Range 2^n sec]-O- ... -O-[Range 4 sec]-O-[Range 2 sec]-O-[Range 1 sec]-O | | | | > every 2 secs -^ | | ... | >--------------- every 4 secs -^ | | >------------------------ recycle every 8 secs -^ | | ... | >-the node at this position is recycled every 2^n secs -^ >-------------------(ditto for the oldest node at the head of the list) --^ ^ ^ aposRecycle[nHistRanges-1] ... aposRecycle[0] Tail */ listPOS *ppos; static int iClock; int iClockPrev = iClock++; int bits = (iClockPrev^iClock) & iClock; // identify the highest changed bit if (bits <= bitsHistClockMask) { ppos = aposRecycle; while ((bits /= 2) != 0) // count to the highest bit that was just toggled to 1 ++ppos; // recycle one node and jump over the next to move it to the next higher range listHR.push_back(**ppos); *ppos = ++listHR.erase(*ppos); } else { ppos = aposRecycle+nHistRanges-1; // recycle the node at the head; there is no higher range to move nodes into listHR.push_back(**ppos); *ppos = listHR.erase(*ppos); } // now save the latest data point in this node listPOS phr = --listHR.end(); phr->kBytesSent = GetSessionSentBytes() / 1024.0; phr->kBytesReceived = GetSessionReceivedBytes() / 1024.0; phr->kBpsUpCur = GetUploadRate() / 1024.0; phr->kBpsDownCur = GetDownloadRate() / 1024.0; phr->cntUploads = GetActiveUploadsCount(); phr->cntConnections = GetActiveConnections(); phr->cntDownloads = GetDownloadingSources(); phr->sTimestamp = GetUptimeMillis() / 1000.0; s_kadNodesTotal += s_kadNodesCur; phr->kadNodesTotal = s_kadNodesTotal; phr->kadNodesCur = s_kadNodesCur; } unsigned CStatistics::GetHistory( // Assemble arrays of sample points for a graph unsigned cntPoints, // number of sample points to assemble double sStep, // time difference between sample points double sFinal, // latest allowed timestamp const std::vector &ppf,// an array of pointers to arrays of floats for the result StatsGraphType which_graph) // the graph which will receive the points { if (sStep==0.0 || cntPoints==0) { return(0); } float *pf1 = ppf[0]; float *pf2 = ppf[1]; float *pf3 = ppf[2]; unsigned cntFilled = 0; listRPOS pos = listHR.rbegin(); // start of list should be an integer multiple of the sampling period for samples // to be consistent when the graphs are resized horizontally double sTarget; if (sFinal >= 0.0) { sTarget = sFinal; } else { sTarget = sStep==1.0 ? pos->sTimestamp : std::floor(pos->sTimestamp/sStep) * sStep; } HR **ahr = NULL, **pphr = NULL; bool bRateGraph = (which_graph != GRAPH_CONN); // rate graph or connections graph? if (bRateGraph) { ahr = new HR* [cntPoints]; pphr = ahr; } while (pos != listHR.rend()) { if (pos->sTimestamp > sTarget) { ++pos; continue; } if (bRateGraph) { // assemble an array of pointers for ComputeAverages *pphr++ = &(*pos); } else { // or build the arrays if possible *pf1++ = (float)pos->cntUploads; *pf2++ = (float)pos->cntConnections; *pf3++ = (float)pos->cntDownloads; } if (++cntFilled == cntPoints) { // enough points break; } if (pos->sTimestamp == 0.0) { // reached beginning of uptime break; } if ((sTarget -= sStep) <= 0.0) { // don't overshoot the beginning if (bRateGraph) { *pphr++ = &hrInit; } else { *pf1++ = *pf2++ = *pf3++ = 0.0; } ++cntFilled; break; } } if (bRateGraph) { if (cntFilled > 0) { ComputeAverages(pphr, pos, cntFilled, sStep, ppf, which_graph); } delete[] ahr; } return cntFilled; } unsigned CStatistics::GetHistoryForWeb( // Assemble arrays of sample points for the webserver unsigned cntPoints, // maximum number of sample points to assemble double sStep, // time difference between sample points double *sStart, // earliest allowed timestamp uint32 **graphData) // a pointer to a pointer that will point to the graph data array { if (*sStart < 0.0) { *sStart = 0.0; } if (sStep==0.0 || cntPoints==0) return(0); unsigned cntFilled = 0; listRPOS pos = listHR.rbegin(); double LastTimeStamp = pos->sTimestamp; double sTarget = LastTimeStamp; HR **pphr = new HR *[cntPoints]; while (pos != listHR.rend()) { if (pos->sTimestamp > sTarget) { ++pos; // find next history record continue; } pphr[cntFilled] = &(*pos); if (++cntFilled == cntPoints) // enough points break; if (pos->sTimestamp <= *sStart) // reached beginning of requested time break; if ((sTarget -= sStep) <= 0.0) { // don't overshoot the beginning pphr[cntFilled++] = NULL; break; } } if (cntFilled) { *graphData = new uint32 [4 * cntFilled]; if (*graphData) { for (unsigned int i = 0; i < cntFilled; i++) { HR *phr = pphr[cntFilled - i - 1]; if (phr) { (*graphData)[4 * i ] = ENDIAN_HTONL((uint32)(phr->kBpsDownCur * 1024.0)); (*graphData)[4 * i + 1] = ENDIAN_HTONL((uint32)(phr->kBpsUpCur * 1024.0)); (*graphData)[4 * i + 2] = ENDIAN_HTONL((uint32)phr->cntConnections); (*graphData)[4 * i + 3] = ENDIAN_HTONL((uint32)phr->kadNodesCur); } else { (*graphData)[4 * i] = (*graphData)[4 * i + 1] = 0; (*graphData)[4 * i + 2] = (*graphData)[4 * i + 3] = 0; } } } } else { *graphData = NULL; } delete [] pphr; *sStart = LastTimeStamp; return cntFilled; } void CStatistics::ComputeAverages( HR **pphr, // pointer to (end of) array of assembled history records listRPOS pos, // position in history list from which to backtrack unsigned cntFilled, // number of points in the sample data double sStep, // time difference between two samples const std::vector &ppf,// an array of pointers to arrays of floats with sample data StatsGraphType which_graph) // the graph which will receive the points { double sTarget, kValueRun; uint64 avgTime = average_minutes * 60; unsigned nBtPoints = (unsigned)(avgTime / sStep); CPreciseRateCounter* runningAvg = NULL; switch (which_graph) { case GRAPH_DOWN: runningAvg = &m_graphRunningAvgDown; break; case GRAPH_UP: runningAvg = &m_graphRunningAvgUp; break; case GRAPH_KAD: runningAvg = &m_graphRunningAvgKad; break; default: wxCHECK_RET(false, wxT("ComputeAverages called with unsupported graph type.")); } runningAvg->m_timespan = avgTime * 1000; runningAvg->m_tick_history.clear(); runningAvg->m_byte_history.clear(); runningAvg->m_total = 0; runningAvg->m_tmp_sum = 0; if (pos == listHR.rend()) { sTarget = 0.0; } else { sTarget = std::max(0.0, pos->sTimestamp - sStep); } while (nBtPoints--) { while (pos != listHR.rend() && pos->sTimestamp > sTarget) ++pos; // find next history record if (pos != listHR.rend()) { runningAvg->m_tick_history.push_front((uint64)(pos->sTimestamp * 1000.0)); uint32 value = 0; switch (which_graph) { case GRAPH_DOWN: value = (uint32)(pos->kBpsDownCur * 1024.0); break; case GRAPH_UP: value = (uint32)(pos->kBpsUpCur * 1024.0); break; case GRAPH_KAD: value = (uint32)(pos->kadNodesCur * 1024.0); break; default: wxCHECK_RET(false, wxT("ComputeAverages called with unsupported graph type.")); } runningAvg->m_byte_history.push_front(value); runningAvg->m_total += value; } else { break; } if ((sTarget -= sStep) < 0.0) { break; } }; // now compute averages in returned arrays, starting with the earliest values float *pf1 = ppf[0] + cntFilled - 1; // holds session avg float *pf2 = ppf[1] + cntFilled - 1; // holds running avg float *pf3 = ppf[2] + cntFilled - 1; // holds current rate for (int cnt=cntFilled; cnt>0; cnt--, pf1--, pf2--, pf3--) { HR *phr = *(--pphr); if (which_graph == GRAPH_DOWN) { kValueRun = phr->kBytesReceived; *pf3 = phr->kBpsDownCur; } else if (which_graph == GRAPH_UP) { kValueRun = phr->kBytesSent; *pf3 = phr->kBpsUpCur; } else { kValueRun = phr->kadNodesTotal; *pf3 = phr->kadNodesCur; } *pf1 = kValueRun / phr->sTimestamp; (*runningAvg) += (uint32)(*pf3 * 1024.0); runningAvg->CalculateRate((uint64)(phr->sTimestamp * 1000.0)); *pf2 = (float)(runningAvg->GetRate() / 1024.0); } } GraphUpdateInfo CStatistics::GetPointsForUpdate() { GraphUpdateInfo update; listPOS phr = --listHR.end(); update.timestamp = (double) phr->sTimestamp; m_graphRunningAvgDown += (uint32)(phr->kBpsDownCur * 1024.0); m_graphRunningAvgUp += (uint32)(phr->kBpsUpCur * 1024.0); // Note: kadNodesCur is multiplied by 1024 since the value is done // in other places, so we simply follow suit here to avoid trouble. m_graphRunningAvgKad += (uint32)(phr->kadNodesCur * 1024.0); m_graphRunningAvgDown.CalculateRate((uint64)(phr->sTimestamp * 1000.0)); m_graphRunningAvgUp.CalculateRate((uint64)(phr->sTimestamp * 1000.0)); m_graphRunningAvgKad.CalculateRate((uint64)(phr->sTimestamp * 1000.0)); update.downloads[0] = phr->kBytesReceived / phr->sTimestamp; update.downloads[1] = m_graphRunningAvgDown.GetRate() / 1024.0; update.downloads[2] = phr->kBpsDownCur; update.uploads[0] = phr->kBytesSent / phr->sTimestamp; update.uploads[1] = m_graphRunningAvgUp.GetRate() / 1024.0; update.uploads[2] = phr->kBpsUpCur; update.connections[0] = (float)phr->cntUploads; update.connections[1] = (float)phr->cntConnections; update.connections[2] = (float)phr->cntDownloads; update.kadnodes[0] = phr->kadNodesTotal / phr->sTimestamp; update.kadnodes[1] = m_graphRunningAvgKad.GetRate() / 1024.0; update.kadnodes[2] = phr->kadNodesCur; return update; } /* ------------------------------- TREE ---------------------------- */ void CStatistics::InitStatsTree() { s_statTree = new CStatTreeItemBase(wxTRANSLATE("Statistics")); CStatTreeItemBase* tmpRoot1; CStatTreeItemBase* tmpRoot2; s_uptime = static_cast(s_statTree->AddChild(new CStatTreeItemTimer(wxTRANSLATE("Uptime: %s")))); tmpRoot1 = s_statTree->AddChild(new CStatTreeItemBase(wxTRANSLATE("Transfer"), stSortChildren)); tmpRoot2 = tmpRoot1->AddChild(new CStatTreeItemBase(wxTRANSLATE("Uploads")), 2); s_sessionUpload = static_cast(tmpRoot2->AddChild(new CStatTreeItemUlDlCounter(wxTRANSLATE("Uploaded Data (Session (Total)): %s"), theStats::GetTotalSentBytes, stSortChildren | stSortByValue))); // Children will be added on-the-fly s_totalUpOverhead = static_cast(tmpRoot2->AddChild(new CStatTreeItemPacketTotals(wxTRANSLATE("Total Overhead (Packets): %s")))); s_fileReqUpOverhead = static_cast(tmpRoot2->AddChild(new CStatTreeItemPackets(wxTRANSLATE("File Request Overhead (Packets): %s")))); s_totalUpOverhead->AddPacketCounter(s_fileReqUpOverhead); s_sourceXchgUpOverhead = static_cast(tmpRoot2->AddChild(new CStatTreeItemPackets(wxTRANSLATE("Source Exchange Overhead (Packets): %s")))); s_totalUpOverhead->AddPacketCounter(s_sourceXchgUpOverhead); s_serverUpOverhead = static_cast(tmpRoot2->AddChild(new CStatTreeItemPackets(wxTRANSLATE("Server Overhead (Packets): %s")))); s_totalUpOverhead->AddPacketCounter(s_serverUpOverhead); s_kadUpOverhead = static_cast(tmpRoot2->AddChild(new CStatTreeItemPackets(wxTRANSLATE("Kad Overhead (Packets): %s")))); s_totalUpOverhead->AddPacketCounter(s_kadUpOverhead); s_cryptUpOverhead = static_cast(tmpRoot2->AddChild(new CStatTreeItemCounter(wxTRANSLATE("Crypt overhead (UDP): %s")))); s_cryptUpOverhead->SetDisplayMode(dmBytes); s_activeUploads = static_cast(tmpRoot2->AddChild(new CStatTreeItemNativeCounter(wxTRANSLATE("Active Uploads: %s")))); s_waitingUploads = static_cast(tmpRoot2->AddChild(new CStatTreeItemNativeCounter(wxTRANSLATE("Waiting Uploads: %s")))); s_totalSuccUploads = static_cast(tmpRoot2->AddChild(new CStatTreeItemCounter(wxTRANSLATE("Total successful upload sessions: %s")))); s_totalFailedUploads = static_cast(tmpRoot2->AddChild(new CStatTreeItemCounter(wxTRANSLATE("Total failed upload sessions: %s")))); s_totalUploadTime = new CStatTreeItemCounter(wxEmptyString); tmpRoot2->AddChild(new CStatTreeItemAverage(wxTRANSLATE("Average upload time: %s"), s_totalUploadTime, s_totalSuccUploads, dmTime)); tmpRoot2 = tmpRoot1->AddChild(new CStatTreeItemBase(wxTRANSLATE("Downloads")), 1); s_sessionDownload = static_cast(tmpRoot2->AddChild(new CStatTreeItemUlDlCounter(wxTRANSLATE("Downloaded Data (Session (Total)): %s"), theStats::GetTotalReceivedBytes, stSortChildren | stSortByValue))); // Children will be added on-the-fly s_totalDownOverhead = static_cast(tmpRoot2->AddChild(new CStatTreeItemPacketTotals(wxTRANSLATE("Total Overhead (Packets): %s")))); s_fileReqDownOverhead = static_cast(tmpRoot2->AddChild(new CStatTreeItemPackets(wxTRANSLATE("File Request Overhead (Packets): %s")))); s_totalDownOverhead->AddPacketCounter(s_fileReqDownOverhead); s_sourceXchgDownOverhead = static_cast(tmpRoot2->AddChild(new CStatTreeItemPackets(wxTRANSLATE("Source Exchange Overhead (Packets): %s")))); s_totalDownOverhead->AddPacketCounter(s_sourceXchgDownOverhead); s_serverDownOverhead = static_cast(tmpRoot2->AddChild(new CStatTreeItemPackets(wxTRANSLATE("Server Overhead (Packets): %s")))); s_totalDownOverhead->AddPacketCounter(s_serverDownOverhead); s_kadDownOverhead = static_cast(tmpRoot2->AddChild(new CStatTreeItemPackets(wxTRANSLATE("Kad Overhead (Packets): %s")))); s_totalDownOverhead->AddPacketCounter(s_kadDownOverhead); s_cryptDownOverhead = static_cast(tmpRoot2->AddChild(new CStatTreeItemCounter(wxTRANSLATE("Crypt overhead (UDP): %s")))); s_cryptDownOverhead->SetDisplayMode(dmBytes); s_foundSources = static_cast(tmpRoot2->AddChild(new CStatTreeItemCounter(wxTRANSLATE("Found Sources: %s"), stSortChildren | stSortByValue))); s_activeDownloads = static_cast(tmpRoot2->AddChild(new CStatTreeItemNativeCounter(wxTRANSLATE("Active Downloads (chunks): %s")))); tmpRoot1->AddChild(new CStatTreeItemRatio(wxTRANSLATE("Session UL:DL Ratio (Total): %s"), s_sessionUpload, s_sessionDownload, theStats::GetTotalSentBytes, theStats::GetTotalReceivedBytes), 3); tmpRoot1 = s_statTree->AddChild(new CStatTreeItemBase(wxTRANSLATE("Connection"))); tmpRoot1->AddChild(new CStatTreeItemAverageSpeed(wxTRANSLATE("Average download rate (Session): %s"), s_sessionDownload, s_uptime)); tmpRoot1->AddChild(new CStatTreeItemAverageSpeed(wxTRANSLATE("Average upload rate (Session): %s"), s_sessionUpload, s_uptime)); s_downloadrate = static_cast(tmpRoot1->AddChild(new CStatTreeItemRateCounter(wxTRANSLATE("Max download rate (Session): %s"), true, 30000))); s_uploadrate = static_cast(tmpRoot1->AddChild(new CStatTreeItemRateCounter(wxTRANSLATE("Max upload rate (Session): %s"), true, 30000))); s_reconnects = static_cast(tmpRoot1->AddChild(new CStatTreeItemReconnects(wxTRANSLATE("Reconnects: %i")))); s_sinceFirstTransfer = static_cast(tmpRoot1->AddChild(new CStatTreeItemTimer(wxTRANSLATE("Time Since First Transfer: %s"), stHideIfZero))); s_sinceConnected = static_cast(tmpRoot1->AddChild(new CStatTreeItemTimer(wxTRANSLATE("Connected To Server Since: %s")))); s_activeConnections = static_cast(tmpRoot1->AddChild(new CStatTreeItemCounterMax(wxTRANSLATE("Active Connections (estimate): %i")))); s_limitReached = static_cast(tmpRoot1->AddChild(new CStatTreeItemMaxConnLimitReached(wxTRANSLATE("Max Connection Limit Reached: %s")))); s_avgConnections = static_cast(tmpRoot1->AddChild(new CStatTreeItemSimple(wxTRANSLATE("Average Connections (estimate): %g")))); s_avgConnections->SetValue(0.0); tmpRoot1->AddChild(new CStatTreeItemPeakConnections(wxTRANSLATE("Peak Connections (estimate): %i"))); s_clients = static_cast(s_statTree->AddChild(new CStatTreeItemHiddenCounter(wxTRANSLATE("Clients"), stSortChildren | stSortByValue))); s_unknown = static_cast(s_clients->AddChild(new CStatTreeItemCounter(wxTRANSLATE("Unknown: %s")), 6)); //s_lowID = static_cast(s_clients->AddChild(new CStatTreeItem(wxTRANSLATE("LowID: %u (%.2f%% Total %.2f%% Known)")), 5)); //s_secIdentOnOff = static_cast(s_clients->AddChild(new CStatTreeItem(wxTRANSLATE("SecIdent On/Off: %u (%.2f%%) : %u (%.2f%%)")), 4)); #ifdef __DEBUG__ s_hasSocket = static_cast(s_clients->AddChild(new CStatTreeItemNativeCounter(wxT("HasSocket: %s")), 3)); #endif s_filtered = static_cast(s_clients->AddChild(new CStatTreeItemNativeCounter(wxTRANSLATE("Filtered: %s")), 2)); s_banned = static_cast(s_clients->AddChild(new CStatTreeItemNativeCounter(wxTRANSLATE("Banned: %s")), 1)); s_clients->AddChild(new CStatTreeItemTotalClients(wxTRANSLATE("Total: %i Known: %i"), s_clients, s_unknown), 0x80000000); // TODO: Use counters? tmpRoot1 = s_statTree->AddChild(new CStatTreeItemBase(wxTRANSLATE("Servers"))); s_workingServers = static_cast(tmpRoot1->AddChild(new CStatTreeItemSimple(wxTRANSLATE("Working Servers: %i")))); s_failedServers = static_cast(tmpRoot1->AddChild(new CStatTreeItemSimple(wxTRANSLATE("Failed Servers: %i")))); s_totalServers = static_cast(tmpRoot1->AddChild(new CStatTreeItemNativeCounter(wxTRANSLATE("Total: %s")))); s_deletedServers = static_cast(tmpRoot1->AddChild(new CStatTreeItemNativeCounter(wxTRANSLATE("Deleted Servers: %s")))); s_filteredServers = static_cast(tmpRoot1->AddChild(new CStatTreeItemNativeCounter(wxTRANSLATE("Filtered Servers: %s")))); s_usersOnWorking = static_cast(tmpRoot1->AddChild(new CStatTreeItemSimple(wxTRANSLATE("Users on Working Servers: %llu")))); s_filesOnWorking = static_cast(tmpRoot1->AddChild(new CStatTreeItemSimple(wxTRANSLATE("Files on Working Servers: %llu")))); s_totalUsers = static_cast(tmpRoot1->AddChild(new CStatTreeItemSimple(wxTRANSLATE("Total Users: %llu")))); s_totalFiles = static_cast(tmpRoot1->AddChild(new CStatTreeItemSimple(wxTRANSLATE("Total Files: %llu")))); s_serverOccupation = static_cast(tmpRoot1->AddChild(new CStatTreeItemSimple(wxTRANSLATE("Server Occupation: %.2f%%")))); s_serverOccupation->SetValue(0.0); tmpRoot1 = s_statTree->AddChild(new CStatTreeItemBase(wxTRANSLATE("Shared Files"))); s_numberOfShared = static_cast(tmpRoot1->AddChild(new CStatTreeItemCounter(wxTRANSLATE("Number of Shared Files: %s")))); s_sizeOfShare = static_cast(tmpRoot1->AddChild(new CStatTreeItemCounter(wxTRANSLATE("Total size of Shared Files: %s")))); s_sizeOfShare->SetDisplayMode(dmBytes); tmpRoot1->AddChild(new CStatTreeItemAverage(wxTRANSLATE("Average file size: %s"), s_sizeOfShare, s_numberOfShared, dmBytes)); } void CStatistics::UpdateStatsTree() { // get sort orders right s_sessionUpload->ReSortChildren(); s_sessionDownload->ReSortChildren(); s_clients->ReSortChildren(); s_foundSources->ReSortChildren(); // TODO: sort OS_Info subtrees. s_avgConnections->SetValue(theApp->listensocket->GetAverageConnections()); // get serverstats // TODO: make these realtime, too uint32 servfail; uint32 servuser; uint32 servfile; uint32 servtuser; uint32 servtfile; float servocc; theApp->serverlist->GetStatus(servfail, servuser, servfile, servtuser, servtfile, servocc); s_workingServers->SetValue((uint64)((*s_totalServers)-servfail)); s_failedServers->SetValue((uint64)servfail); s_usersOnWorking->SetValue((uint64)servuser); s_filesOnWorking->SetValue((uint64)servfile); s_totalUsers->SetValue((uint64)servtuser); s_totalFiles->SetValue((uint64)servtfile); s_serverOccupation->SetValue(servocc); } void CStatistics::AddSourceOrigin(unsigned origin) { CStatTreeItemCounter* counter = static_cast(s_foundSources->GetChildById(0x0100 + origin)); if (counter) { ++(*counter); } else { counter = new CStatTreeItemCounter(OriginToText(origin) + wxT(": %s"), stHideIfZero | stShowPercent); ++(*counter); s_foundSources->AddChild(counter, 0x0100 + origin); } } void CStatistics::RemoveSourceOrigin(unsigned origin) { CStatTreeItemCounter* counter = static_cast(s_foundSources->GetChildById(0x0100 + origin)); wxASSERT(counter); --(*counter); } uint32 GetSoftID(uint8 SoftType) { // prevent appearing multiple tree entries with the same name // this should be kept in sync with GetSoftName(). switch (SoftType) { case SO_OLDEMULE: return 0x0100 + SO_EMULE; case SO_NEW_SHAREAZA: case SO_NEW2_SHAREAZA: return 0x0100 + SO_SHAREAZA; case SO_NEW2_MLDONKEY: return 0x0100 + SO_NEW_MLDONKEY; default: return 0x0100 + SoftType; } } void CStatistics::AddDownloadFromSoft(uint8 SoftType, uint32 bytes) { AddReceivedBytes(bytes); uint32 id = GetSoftID(SoftType); if (s_sessionDownload->HasChildWithId(id)) { (*static_cast(s_sessionDownload->GetChildById(id))) += bytes; } else { CStatTreeItemCounter* tmp = new CStatTreeItemCounter(GetSoftName(SoftType) + wxT(": %s")); tmp->SetDisplayMode(dmBytes); (*tmp) += bytes; s_sessionDownload->AddChild(tmp, id); } } void CStatistics::AddUploadToSoft(uint8 SoftType, uint32 bytes) { uint32 id = GetSoftID(SoftType); if (s_sessionUpload->HasChildWithId(id)) { (*static_cast(s_sessionUpload->GetChildById(id))) += bytes; } else { CStatTreeItemCounter* tmp = new CStatTreeItemCounter(GetSoftName(SoftType) + wxT(": %s")); tmp->SetDisplayMode(dmBytes); (*tmp) += bytes; s_sessionUpload->AddChild(tmp, id); } } inline bool SupportsOSInfo(unsigned clientSoft) { return (clientSoft == SO_AMULE) || (clientSoft == SO_HYDRANODE) || (clientSoft == SO_NEW2_MLDONKEY); } // Do some random black magic to strings to get a relatively unique number for them. uint32 GetIdFromString(const wxString& str) { uint32 id = 0; for (unsigned i = 0; i < str.Length(); ++i) { unsigned old_id = id; id += (uint32)str.GetChar(i); id <<= 2; id ^= old_id; id -= old_id; } return (((id >> 1) + id) | 0x00000100) & 0x7fffffff; } void CStatistics::AddKnownClient(CUpDownClient *pClient) { ++(*s_clients); uint32 clientSoft = pClient->GetClientSoft(); uint32 id = GetSoftID(clientSoft); CStatTreeItemCounter *client; if (s_clients->HasChildWithId(id)) { client = static_cast(s_clients->GetChildById(id)); ++(*client); } else { uint32 flags = stSortChildren | stShowPercent | stHideIfZero; if (!SupportsOSInfo(clientSoft)) { flags |= stCapChildren; } client = new CStatTreeItemCounter(GetSoftName(clientSoft) + wxT(": %s"), flags); ++(*client); s_clients->AddChild(client, id); if (SupportsOSInfo(clientSoft)) { client->AddChild(new CStatTreeItemBase(wxTRANSLATE("Version"), stSortChildren | stCapChildren), 2); client->AddChild(new CStatTreeItemBase(wxTRANSLATE("Operating System"), stSortChildren | stSortByValue), 1); } } CStatTreeItemBase *versionRoot = SupportsOSInfo(clientSoft) ? client->GetChildById(2) : client; uint32 clientVersion = pClient->GetVersion(); if (versionRoot->HasChildWithId(clientVersion)) { CStatTreeItemCounter *version = static_cast(versionRoot->GetChildById(clientVersion)); ++(*version); } else { const wxString& versionStr = pClient->GetVersionString(); CStatTreeItemCounter *version = new CStatTreeItemCounter((versionStr.IsEmpty() ? wxString(wxTRANSLATE("Unknown")) : versionStr) + wxT(": %s"), stShowPercent | stHideIfZero); ++(*version); versionRoot->AddChild(version, clientVersion, SupportsOSInfo(clientSoft)); } if (SupportsOSInfo(clientSoft)) { const wxString& OSInfo = pClient->GetClientOSInfo(); uint32 OS_ID = OSInfo.IsEmpty() ? 0 : GetIdFromString(OSInfo); CStatTreeItemBase* OSRoot = client->GetChildById(1); CStatTreeItemCounter* OSNode = static_cast(OSRoot->GetChildById(OS_ID)); if (OSNode) { ++(*OSNode); } else { OSNode = new CStatTreeItemCounter((OS_ID ? OSInfo : wxString(wxTRANSLATE("Not Received"))) + wxT(": %s"), stShowPercent | stHideIfZero); ++(*OSNode); OSRoot->AddChild(OSNode, OS_ID, true); } } } void CStatistics::RemoveKnownClient(uint32 clientSoft, uint32 clientVersion, const wxString& OSInfo) { --(*s_clients); uint32 id = GetSoftID(clientSoft); CStatTreeItemCounter *client = static_cast(s_clients->GetChildById(id)); wxASSERT(client); --(*client); CStatTreeItemBase *versionRoot = SupportsOSInfo(clientSoft) ? client->GetChildById(2) : client; CStatTreeItemCounter *version = static_cast(versionRoot->GetChildById(clientVersion)); wxASSERT(version); --(*version); if (SupportsOSInfo(clientSoft)) { uint32 OS_ID = OSInfo.IsEmpty() ? 0 : GetIdFromString(OSInfo); CStatTreeItemCounter* OSNode = static_cast(client->GetChildById(1)->GetChildById(OS_ID)); wxASSERT(OSNode); --(*OSNode); } } #else /* CLIENT_GUI */ CStatistics::CStatistics(CRemoteConnect &conn) : m_conn(conn) { s_start_time = GetTickCount64(); // Init Tree s_statTree = new CStatTreeItemBase(_("Statistics"), 0); // Clear stat data container for (int i = 0; i < sdTotalItems; ++i) { s_statData[i] = 0; } } CStatistics::~CStatistics() { delete s_statTree; } void CStatistics::UpdateStats(const CECPacket* stats) { s_statData[sdUpload] = stats->GetTagByNameSafe(EC_TAG_STATS_UL_SPEED)->GetInt(); s_statData[sdUpOverhead] = stats->GetTagByNameSafe(EC_TAG_STATS_UP_OVERHEAD)->GetInt(); s_statData[sdDownload] = stats->GetTagByNameSafe(EC_TAG_STATS_DL_SPEED)->GetInt(); s_statData[sdDownOverhead] = stats->GetTagByNameSafe(EC_TAG_STATS_DOWN_OVERHEAD)->GetInt(); s_statData[sdWaitingClients] = stats->GetTagByNameSafe(EC_TAG_STATS_UL_QUEUE_LEN)->GetInt(); s_statData[sdBannedClients] = stats->GetTagByNameSafe(EC_TAG_STATS_BANNED_COUNT)->GetInt(); s_statData[sdED2KUsers] = stats->GetTagByNameSafe(EC_TAG_STATS_ED2K_USERS)->GetInt(); s_statData[sdKadUsers] = stats->GetTagByNameSafe(EC_TAG_STATS_KAD_USERS)->GetInt(); s_statData[sdED2KFiles] = stats->GetTagByNameSafe(EC_TAG_STATS_ED2K_FILES)->GetInt(); s_statData[sdKadFiles] = stats->GetTagByNameSafe(EC_TAG_STATS_KAD_FILES)->GetInt(); s_statData[sdKadFirewalledUDP] = stats->GetTagByNameSafe(EC_TAG_STATS_KAD_FIREWALLED_UDP)->GetInt(); s_statData[sdKadIndexedSources] = stats->GetTagByNameSafe(EC_TAG_STATS_KAD_INDEXED_SOURCES)->GetInt(); s_statData[sdKadIndexedKeywords] = stats->GetTagByNameSafe(EC_TAG_STATS_KAD_INDEXED_KEYWORDS)->GetInt(); s_statData[sdKadIndexedNotes] = stats->GetTagByNameSafe(EC_TAG_STATS_KAD_INDEXED_NOTES)->GetInt(); s_statData[sdKadIndexedLoad] = stats->GetTagByNameSafe(EC_TAG_STATS_KAD_INDEXED_LOAD)->GetInt(); s_statData[sdKadIPAdress] = stats->GetTagByNameSafe(EC_TAG_STATS_KAD_IP_ADRESS)->GetInt(); s_statData[sdKadNodes] = stats->GetTagByNameSafe(EC_TAG_STATS_KAD_NODES)->GetInt(); s_statData[sdBuddyStatus] = stats->GetTagByNameSafe(EC_TAG_STATS_BUDDY_STATUS)->GetInt(); s_statData[sdBuddyIP] = stats->GetTagByNameSafe(EC_TAG_STATS_BUDDY_IP)->GetInt(); s_statData[sdBuddyPort] = stats->GetTagByNameSafe(EC_TAG_STATS_BUDDY_PORT)->GetInt(); s_statData[sdKadInLanMode] = stats->GetTagByNameSafe(EC_TAG_STATS_KAD_IN_LAN_MODE)->GetInt(); s_statData[sdTotalSentBytes] = stats->GetTagByNameSafe(EC_TAG_STATS_TOTAL_SENT_BYTES)->GetInt(); s_statData[sdTotalReceivedBytes] = stats->GetTagByNameSafe(EC_TAG_STATS_TOTAL_RECEIVED_BYTES)->GetInt(); s_statData[sdSharedFileCount] = stats->GetTagByNameSafe(EC_TAG_STATS_SHARED_FILE_COUNT)->GetInt(); const CECTag * LoggerTag = stats->GetTagByName(EC_TAG_STATS_LOGGER_MESSAGE); if (LoggerTag) { for (CECTag::const_iterator it = LoggerTag->begin(); it != LoggerTag->end(); ++it) { theApp->AddRemoteLogLine(it->GetStringData()); } } } void CStatistics::UpdateStatsTree() {} void CStatistics::RebuildStatTreeRemote(const CECTag * tag) { delete s_statTree; s_statTree = new CStatTreeItemBase(tag); } uint64 CStatistics::GetUptimeMillis() { return GetTickCount64() - s_start_time; } uint64 CStatistics::GetUptimeSeconds() { return (GetTickCount64() - s_start_time) / 1000; } #endif /* !CLIENT_GUI */ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Statistics.h0000644000175000017500000004565712611472361020616 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // Copyright (c) 2005-2011 Dévai Tamás ( gonosztopi@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef STATISTICS_H #define STATISTICS_H #include "Constants.h" // Needed for StatsGraphType #include "StatTree.h" // Needed for CStatTreeItem* classes #include // Needed for std::deque typedef struct UpdateInfo { double timestamp; float downloads[3]; float uploads[3]; float connections[3]; float kadnodes[3]; } GraphUpdateInfo; typedef struct HistoryRecord { double kBytesSent; double kBytesReceived; float kBpsUpCur; float kBpsDownCur; double sTimestamp; uint16 cntDownloads; uint16 cntUploads; uint16 cntConnections; uint16 kadNodesCur; uint64 kadNodesTotal; } HR; #ifndef CLIENT_GUI /** * Counts precise rate/average on added bytes/values. * * @note This class is MT-safe. */ class CPreciseRateCounter { friend class CStatistics; // for playing dirty tricks to compute running average :P public: /** * Constructor * * @param timespan Desired timespan for rate calculations. * @param count_average Counts average instead of rate. */ CPreciseRateCounter(uint32_t timespan, bool count_average = false) : m_timespan(timespan), m_total(0), m_rate(0.0), m_max_rate(0.0), m_tmp_sum(0), m_count_average(count_average) { if (!count_average) { uint64_t cur_time = GetTickCount64(); uint64_t target_time = cur_time - timespan; while (cur_time > target_time) { m_tick_history.push_front(cur_time); m_byte_history.push_front(0); cur_time -= 100; // default update period } m_tick_history.push_front(cur_time); } } /** * Calculate current rate. * * This function should be called reasonably often, to * keep rates up-to-date, and prevent history growing * to the skies. */ void CalculateRate(uint64_t now); /** * Get current rate. * * @return Current rate in bytes/second. */ double GetRate() { wxMutexLocker lock(m_mutex); return m_rate; }; /** * Gets ever seen maximal rate. * * @return The maximal rate which occured. */ double GetMaxRate() { wxMutexLocker lock(m_mutex); return m_max_rate; } /** * Sets desired timespan for rate calculations. * * If new timespan is greater than the old was, then the change * takes effect with time. The exact time needed for the change * to take effect is new minus old value of the timespan. * * If the new timespan is lower than the old, the change takes * effect immediately at the next call to CalculateRate(). */ void SetTimespan(uint32_t timespan) { wxMutexLocker lock(m_mutex); m_timespan = timespan; } /** * Add bytes to be tracked for rate-counting. */ void operator+=(uint32_t bytes) { wxMutexLocker lock(m_mutex); m_tmp_sum += bytes; } protected: std::deque m_byte_history; std::deque m_tick_history; uint32_t m_timespan; uint32_t m_total; double m_rate; double m_max_rate; uint32_t m_tmp_sum; wxMutex m_mutex; bool m_count_average; }; class CECTag; /** * Stat tree item for rates/averages. */ class CStatTreeItemRateCounter : public CStatTreeItemBase, public CPreciseRateCounter { public: /** * @see CStatTreeItemBase::CStatTreeItemBase, CPreciseRateCounter::CPreciseRateCounter * * @param show_maxrate If true, shows max rate instead of current rate. */ CStatTreeItemRateCounter(const wxString& label, bool show_maxrate, uint32_t timespan, bool count_average = false) : CStatTreeItemBase(label, stNone), CPreciseRateCounter(timespan, count_average), m_show_maxrate(show_maxrate) {} #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag* tag) const; //! Whether to show max rate instead of actual rate. bool m_show_maxrate; }; /** * Stat tree item for Peak Connections. */ class CStatTreeItemPeakConnections : public CStatTreeItemBase { public: /** * @see CStatTreeItemBase::CStatTreeItemBase */ CStatTreeItemPeakConnections(const wxString& label) : CStatTreeItemBase(label) {} #ifndef AMULE_DAEMON /** * @see CStatTreeItemBase::GetDisplayString() */ virtual wxString GetDisplayString() const; #endif protected: /** * Add values to EC tag being generated. * * @param tag The tag to which values should be added. * * @see CStatTreeItemBase::AddECValues */ virtual void AddECValues(CECTag* tag) const; }; class CUpDownClient; class CStatistics { friend class CStatisticsDlg; // to access CStatistics::GetTreeRoot() public: CStatistics(); ~CStatistics(); static void Load(); static void Save(); /* Statistics graph functions */ void RecordHistory(); unsigned GetHistoryForWeb(unsigned cntPoints, double sStep, double *sStart, uint32 **graphData); unsigned GetHistory(unsigned cntPoints, double sStep, double sFinal, const std::vector &ppf, StatsGraphType which_graph); GraphUpdateInfo GetPointsForUpdate(); /* Statistics tree functions */ void UpdateStatsTree(); /* Access to the tree */ // uptime static uint64 GetUptimeMillis() { return s_uptime->GetTimerValue(); } static uint64 GetUptimeSeconds() { return s_uptime->GetTimerSeconds(); } static uint64 GetStartTime() { return s_uptime->GetTimerStart(); } // Upload static uint64 GetTotalSentBytes() { return s_totalSent; } static uint64 GetSessionSentBytes() { return (*s_sessionUpload); } static void AddUpOverheadFileRequest(uint32 size) { (*s_fileReqUpOverhead) += size; (*s_upOverheadRate) += size; } static void AddUpOverheadSourceExchange(uint32 size){ (*s_sourceXchgUpOverhead) += size; (*s_upOverheadRate) += size; } static void AddUpOverheadServer(uint32 size) { (*s_serverUpOverhead) += size; (*s_upOverheadRate) += size; } static void AddUpOverheadKad(uint32 size) { (*s_kadUpOverhead) += size; (*s_upOverheadRate) += size; } static void AddUpOverheadCrypt(uint32_t size) { (*s_cryptUpOverhead) += size; } static void AddUpOverheadOther(uint32 size) { (*s_totalUpOverhead) += size; (*s_upOverheadRate) += size; } static double GetUpOverheadRate() { return s_upOverheadRate->GetRate(); } static void AddSuccessfulUpload() { ++(*s_totalSuccUploads); } static void AddFailedUpload() { ++(*s_totalFailedUploads); } static void AddUploadTime(uint32 time) { (*s_totalUploadTime) += time; } static void AddUploadingClient() { ++(*s_activeUploads); } static void RemoveUploadingClient() { --(*s_activeUploads); } static uint32 GetActiveUploadsCount() { return (*s_activeUploads); } static void AddWaitingClient() { ++(*s_waitingUploads); } static void RemoveWaitingClient() { --(*s_waitingUploads); } static uint32 GetWaitingUserCount() { return (*s_waitingUploads); } static double GetUploadRate() { return s_uploadrate->GetRate(); } // Download static uint64 GetTotalReceivedBytes() { return s_totalReceived; } static uint64 GetSessionReceivedBytes() { return (*s_sessionDownload); } static void AddDownOverheadFileRequest(uint32 size) { (*s_fileReqDownOverhead) += size; (*s_downOverheadRate) += size; } static void AddDownOverheadSourceExchange(uint32 size){ (*s_sourceXchgDownOverhead) += size; (*s_downOverheadRate) += size; } static void AddDownOverheadServer(uint32 size) { (*s_serverDownOverhead) += size; (*s_downOverheadRate) += size; } static void AddDownOverheadKad(uint32 size) { (*s_kadDownOverhead) += size; (*s_downOverheadRate) += size; } static void AddDownOverheadCrypt(uint32_t size) { (*s_cryptDownOverhead) += size; } static void AddDownOverheadOther(uint32 size) { (*s_totalDownOverhead) += size; (*s_downOverheadRate) += size; } static double GetDownOverheadRate() { return s_downOverheadRate->GetRate(); } static void AddFoundSource() { ++(*s_foundSources); } static void RemoveFoundSource() { --(*s_foundSources); } static uint32 GetFoundSources() { return (*s_foundSources); } static void AddSourceOrigin(unsigned origin); static void RemoveSourceOrigin(unsigned origin); static void AddDownloadingSource() { ++(*s_activeDownloads); } static void RemoveDownloadingSource() { --(*s_activeDownloads); } static uint32 GetDownloadingSources() { return (*s_activeDownloads); } static double GetDownloadRate() { return s_downloadrate->GetRate(); } // Connection static CStatTreeItemTimer* GetServerConnectTimer() { return s_sinceConnected; } static void AddReconnect() { ++(*s_reconnects); } static void AddActiveConnection() { ++(*s_activeConnections); } static void RemoveActiveConnection() { --(*s_activeConnections); } static uint32 GetActiveConnections() { return s_activeConnections->GetValue(); } static uint32 GetPeakConnections() { return s_activeConnections->GetMaxValue(); } static void AddMaxConnectionLimitReached() { ++(*s_limitReached); } // Clients static void AddFilteredClient() { ++(*s_filtered); } static void AddUnknownClient() { ++(*s_unknown); } static void RemoveUnknownClient() { --(*s_unknown); } static void AddKnownClient(CUpDownClient *pClient); static void RemoveKnownClient(uint32 clientSoft, uint32 clientVersion, const wxString& OSInfo); #ifdef __DEBUG__ static void SocketAssignedToClient() { ++(*s_hasSocket); } static void SocketUnassignedFromClient() { --(*s_hasSocket); } #endif static uint32 GetBannedCount() { return (*s_banned); } static void AddBannedClient() { ++(*s_banned); } static void RemoveBannedClient() { --(*s_banned); } // Servers static void AddServer() { ++(*s_totalServers); } static void DeleteServer() { ++(*s_deletedServers); --(*s_totalServers); } static void DeleteAllServers() { (*s_deletedServers) += (*s_totalServers); (*s_totalServers) = 0; } static void AddFilteredServer() { ++(*s_filteredServers); } // Shared files static void ClearSharedFilesInfo() { (*s_numberOfShared) = 0; (*s_sizeOfShare) = 0; } static void AddSharedFile(uint64 size) { ++(*s_numberOfShared); (*s_sizeOfShare) += size; } static void RemoveSharedFile(uint64 size) { --(*s_numberOfShared); (*s_sizeOfShare) -= size; } static uint32 GetSharedFileCount() { return (*s_numberOfShared); } // Kad nodes static void AddKadNode() { ++s_kadNodesCur; } static void RemoveKadNode() { --s_kadNodesCur; } static uint16_t GetKadNodes() { return s_kadNodesCur; } // Other static void CalculateRates(); static void AddReceivedBytes(uint32 bytes) { if (!s_sinceFirstTransfer->IsRunning()) { s_sinceFirstTransfer->StartTimer(); } (*s_sessionDownload) += bytes; (*s_downloadrate) += bytes; s_totalReceived += bytes; s_statsNeedSave = true; } static void AddSentBytes(uint32 bytes) { if (!s_sinceFirstTransfer->IsRunning()) { s_sinceFirstTransfer->StartTimer(); } (*s_sessionUpload) += bytes; (*s_uploadrate) += bytes; s_totalSent += bytes; s_statsNeedSave = true; } static void AddDownloadFromSoft(uint8 SoftType, uint32 bytes); static void AddUploadToSoft(uint8 SoftType, uint32 bytes); // EC static CECTag* GetECStatTree(uint8 tree_capping_value) { return s_statTree->CreateECTag(tree_capping_value); } void SetAverageMinutes(uint8 minutes) { average_minutes = minutes; } private: std::list
listHR; typedef std::list
::iterator listPOS; typedef std::list
::reverse_iterator listRPOS; /* Graph-related functions */ void ComputeAverages(HR **pphr, listRPOS pos, unsigned cntFilled, double sStep, const std::vector &ppf, StatsGraphType which_graph); int GetPointsPerRange() { return (1280/2) - 80; // This used to be a calc. based on GUI width } /* Graphs-related vars */ CPreciseRateCounter m_graphRunningAvgDown; CPreciseRateCounter m_graphRunningAvgUp; CPreciseRateCounter m_graphRunningAvgKad; uint8 average_minutes; int nHistRanges; int bitsHistClockMask; int nPointsPerRange; listPOS* aposRecycle; HR hrInit; /* Rate/Average counters */ static CPreciseRateCounter* s_upOverheadRate; static CPreciseRateCounter* s_downOverheadRate; static CStatTreeItemRateCounter* s_uploadrate; static CStatTreeItemRateCounter* s_downloadrate; /* Tree-related functions */ static void InitStatsTree(); static CStatTreeItemBase* GetTreeRoot() { return s_statTree; } /* Tree-related vars */ // the tree static CStatTreeItemBase* s_statTree; // Uptime static CStatTreeItemTimer* s_uptime; // Upload static CStatTreeItemUlDlCounter* s_sessionUpload; static CStatTreeItemPacketTotals* s_totalUpOverhead; static CStatTreeItemPackets* s_fileReqUpOverhead; static CStatTreeItemPackets* s_sourceXchgUpOverhead; static CStatTreeItemPackets* s_serverUpOverhead; static CStatTreeItemPackets* s_kadUpOverhead; static CStatTreeItemCounter* s_cryptUpOverhead; static CStatTreeItemNativeCounter* s_activeUploads; static CStatTreeItemNativeCounter* s_waitingUploads; static CStatTreeItemCounter* s_totalSuccUploads; static CStatTreeItemCounter* s_totalFailedUploads; static CStatTreeItemCounter* s_totalUploadTime; // Download static CStatTreeItemUlDlCounter* s_sessionDownload; static CStatTreeItemPacketTotals* s_totalDownOverhead; static CStatTreeItemPackets* s_fileReqDownOverhead; static CStatTreeItemPackets* s_sourceXchgDownOverhead; static CStatTreeItemPackets* s_serverDownOverhead; static CStatTreeItemPackets* s_kadDownOverhead; static CStatTreeItemCounter* s_cryptDownOverhead; static CStatTreeItemCounter* s_foundSources; static CStatTreeItemNativeCounter* s_activeDownloads; // Connection static CStatTreeItemReconnects* s_reconnects; static CStatTreeItemTimer* s_sinceFirstTransfer; static CStatTreeItemTimer* s_sinceConnected; static CStatTreeItemCounterMax* s_activeConnections; static CStatTreeItemMaxConnLimitReached* s_limitReached; static CStatTreeItemSimple* s_avgConnections; // Clients static CStatTreeItemHiddenCounter* s_clients; static CStatTreeItemCounter* s_unknown; //static CStatTreeItem s_lowID; //static CStatTreeItem s_secIdentOnOff; #ifdef __DEBUG__ static CStatTreeItemNativeCounter* s_hasSocket; #endif static CStatTreeItemNativeCounter* s_filtered; static CStatTreeItemNativeCounter* s_banned; // Servers static CStatTreeItemSimple* s_workingServers; static CStatTreeItemSimple* s_failedServers; static CStatTreeItemNativeCounter* s_totalServers; static CStatTreeItemNativeCounter* s_deletedServers; static CStatTreeItemNativeCounter* s_filteredServers; static CStatTreeItemSimple* s_usersOnWorking; static CStatTreeItemSimple* s_filesOnWorking; static CStatTreeItemSimple* s_totalUsers; static CStatTreeItemSimple* s_totalFiles; static CStatTreeItemSimple* s_serverOccupation; // Shared files static CStatTreeItemCounter* s_numberOfShared; static CStatTreeItemCounter* s_sizeOfShare; // Kad nodes static uint64_t s_kadNodesTotal; static uint16_t s_kadNodesCur; // Total sent/received bytes static uint64_t s_totalSent; static uint64_t s_totalReceived; static bool s_statsNeedSave; }; #else /* CLIENT_GUI */ class CECPacket; class CRemoteConnect; enum StatDataIndex { sdUpload, sdUpOverhead, sdDownload, sdDownOverhead, sdWaitingClients, sdBannedClients, sdED2KUsers, sdKadUsers, sdED2KFiles, sdKadFiles, sdKadFirewalledUDP, sdKadIndexedSources, sdKadIndexedKeywords, sdKadIndexedNotes, sdKadIndexedLoad, sdKadIPAdress, sdKadNodes, sdBuddyStatus, sdBuddyIP, sdBuddyPort, sdKadInLanMode, sdTotalSentBytes, sdTotalReceivedBytes, sdSharedFileCount, sdTotalItems }; class CStatistics { friend class CStatisticsDlg; // to access CStatistics::GetTreeRoot() private: CRemoteConnect &m_conn; static CStatTreeItemBase* s_statTree; static uint64 s_start_time; static uint64 s_statData[sdTotalItems]; uint8 average_minutes; public: CStatistics(CRemoteConnect &conn); ~CStatistics(); static uint64 GetUptimeMillis(); static uint64 GetUptimeSeconds(); static uint64 GetTotalSentBytes() { return s_statData[sdTotalSentBytes]; } static double GetUploadRate() { return (double)s_statData[sdUpload]; } static double GetUpOverheadRate() { return (double)s_statData[sdUpOverhead]; } static uint64 GetTotalReceivedBytes() { return s_statData[sdTotalReceivedBytes]; } static double GetDownloadRate() { return (double)s_statData[sdDownload]; } static double GetDownOverheadRate() { return (double)s_statData[sdDownOverhead]; } static uint32 GetWaitingUserCount() { return s_statData[sdWaitingClients]; } static uint32 GetBannedCount() { return s_statData[sdBannedClients]; } static uint32 GetSharedFileCount() { return s_statData[sdSharedFileCount]; } static uint32 GetED2KUsers() { return s_statData[sdED2KUsers]; } static uint32 GetKadUsers() { return s_statData[sdKadUsers]; } static uint32 GetED2KFiles() { return s_statData[sdED2KFiles]; } static uint32 GetKadFiles() { return s_statData[sdKadFiles]; } static bool IsFirewalledKadUDP() { return s_statData[sdKadFirewalledUDP] != 0; } static uint32 GetKadIndexedSources() { return s_statData[sdKadIndexedSources]; } static uint32 GetKadIndexedKeywords() { return s_statData[sdKadIndexedKeywords]; } static uint32 GetKadIndexedNotes() { return s_statData[sdKadIndexedNotes]; } static uint32 GetKadIndexedLoad() { return s_statData[sdKadIndexedLoad]; } static uint32 GetKadIPAdress() { return s_statData[sdKadIPAdress]; } static uint8 GetBuddyStatus() { return s_statData[sdBuddyStatus]; } static uint32 GetBuddyIP() { return s_statData[sdBuddyIP]; } static uint32 GetBuddyPort() { return s_statData[sdBuddyPort]; } static bool IsKadRunningInLanMode() { return s_statData[sdKadInLanMode] != 0; } static uint32 GetKadNodes() { return s_statData[sdKadNodes]; } static void UpdateStats(const CECPacket* stats); void UpdateStatsTree(); void RebuildStatTreeRemote(const CECTag *); void SetAverageMinutes(uint8 minutes) { average_minutes = minutes; } private: static CStatTreeItemBase* GetTreeRoot() { return s_statTree; } }; #endif /* !CLIENT_GUI / CLIENT_GUI */ /** * Shortcut for CStatistics */ typedef CStatistics theStats; #endif // STATISTICS_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/StatisticsDlg.cpp0000644000175000017500000002530012611472361021557 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include // Needed for std::ceil #include "ColorFrameCtrl.h" // Needed for CColorFrameCtrl #include "OtherFunctions.h" // Needed for CastChild() #include "OScopeCtrl.h" // Needed for COScopeCtrl #include "Preferences.h" // Needed for thePrefs #include "muuli_wdr.h" // Needed for statsDlg() #include "StatisticsDlg.h" // Interface declarations #include "Statistics.h" class CTreeItemData : public wxTreeItemData { public: explicit CTreeItemData(uint32_t uniqueid) : m_uniqueid(uniqueid) {} uint32_t GetUniqueId() const throw() { return m_uniqueid; } void SetUniqueId(uint32_t val) throw() { m_uniqueid = val; } private: uint32_t m_uniqueid; }; // CStatisticsDlg panel const wxColour& CStatisticsDlg::getColors(unsigned num) { wxCHECK(num < 15, *wxBLACK); return acrStat[num]; } CStatisticsDlg::CStatisticsDlg(wxWindow* pParent, CStatistics* stats) : wxPanel(pParent, -1) { wxSizer* content=statsDlg(this,TRUE); content->Show(this,TRUE); pscopeDL = CastChild( wxT("dloadScope"), COScopeCtrl ); pscopeDL->graph_type = GRAPH_DOWN; pscopeUL = CastChild( wxT("uloadScope"), COScopeCtrl ); pscopeUL->graph_type = GRAPH_UP; pscopeConn = CastChild( wxT("otherScope"), COScopeCtrl ); pscopeConn->graph_type = GRAPH_CONN; stattree = CastChild( wxT("statTree"), wxTreeCtrl ); m_stats = stats; } CStatisticsDlg::~CStatisticsDlg() { } void CStatisticsDlg::Init() { InitGraphs(); InitTree(); } void CStatisticsDlg::InitGraphs() { // called after preferences get initialised for (int index=0; index<=10; ++index) { ApplyStatsColor(index); } pscopeDL->SetRanges(0.0, (float)(thePrefs::GetMaxGraphDownloadRate()+4)); pscopeDL->SetYUnits(_("kB/s")); pscopeUL->SetRanges(0.0, (float)(thePrefs::GetMaxGraphUploadRate()+4)); pscopeUL->SetYUnits(_("kB/s")); pscopeConn->SetRanges(0.0, (float)(thePrefs::GetStatsMax())); pscopeConn->SetYUnits(wxEmptyString); SetUpdatePeriod(thePrefs::GetTrafficOMeterInterval()); } // this array is now used to store the current color settings and to define the defaults wxColour CStatisticsDlg::acrStat[cntStatColors] = { wxColour(0,0,64), wxColour(192,192,255), wxColour(128, 255, 128), wxColour(0, 210, 0), wxColour(0, 128, 0), wxColour(255, 128, 128), wxColour(200, 0, 0), wxColour(140, 0, 0), wxColour(150, 150, 255), wxColour(192, 0, 192), wxColour(255, 255, 128), wxColour(0, 0, 0), wxColour(128, 255, 128), wxColour(0, 210, 0), wxColour(0, 128, 0) }; void CStatisticsDlg::ApplyStatsColor(int index) { static char aTrend[] = { 0,0, 2, 1, 0, 2, 1, 0, 1, 2, 0 }; static int aRes[] = { 0,0, IDC_C0,IDC_C0_3,IDC_C0_2, IDC_C1,IDC_C1_3,IDC_C1_2, IDC_S0,IDC_S3,IDC_S1 }; static COScopeCtrl** apscope[] = { NULL, NULL, &pscopeDL,&pscopeDL,&pscopeDL, &pscopeUL,&pscopeUL,&pscopeUL, &pscopeConn,&pscopeConn,&pscopeConn }; const wxColour& cr = acrStat[index]; int iRes = aRes[index]; int iTrend = aTrend[index]; COScopeCtrl** ppscope = apscope[index]; CColorFrameCtrl* ctrl; switch (index) { case 0: pscopeDL->SetBackgroundColor(cr); pscopeUL->SetBackgroundColor(cr); pscopeConn->SetBackgroundColor(cr); break; case 1: pscopeDL->SetGridColor(cr); pscopeUL->SetGridColor(cr); pscopeConn->SetGridColor(cr); break; case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: (*ppscope)->SetPlotColor(cr, iTrend); if ((ctrl = CastChild(iRes, CColorFrameCtrl)) == NULL) { throw wxString(CFormat(wxT("CStatisticsDlg::ApplyStatsColor: control missing (%d)\n")) % iRes); } ctrl->SetBackgroundBrushColour(cr); ctrl->SetFrameBrushColour(*wxBLACK); break; default: break; // ignore unknown index, like SysTray speedbar color } } void CStatisticsDlg::UpdateStatGraphs(const uint32 peakconnections, const GraphUpdateInfo& update) { std::vector v1(3); v1[0] = const_cast(&update.downloads[0]); v1[1] = const_cast(&update.downloads[1]); v1[2] = const_cast(&update.downloads[2]); const std::vector &apfDown(v1); std::vector v2(3); v2[0] = const_cast(&update.uploads[0]); v2[1] = const_cast(&update.uploads[1]); v2[2] = const_cast(&update.uploads[2]); const std::vector &apfUp(v2); std::vector v3(3); v3[0] = const_cast(&update.connections[0]); v3[1] = const_cast(&update.connections[1]); v3[2] = const_cast(&update.connections[2]); const std::vector &apfConn(v3); if (!IsShownOnScreen()) { pscopeDL->DelayPoints(); pscopeUL->DelayPoints(); pscopeConn->DelayPoints(); } static unsigned nScalePrev=1; unsigned nScale = (unsigned)std::ceil((float)peakconnections / pscopeConn->GetUpperLimit()); if (nScale != nScalePrev) { nScalePrev = nScale; wxStaticText* label = CastChild( ID_ACTIVEC, wxStaticText ); label->SetLabel(CFormat(_("Active connections (1:%u)")) % nScale); label->GetParent()->Layout(); pscopeConn->SetRange(0.0, (float)nScale*pscopeConn->GetUpperLimit(), 1); } if (!IsShownOnScreen()) { return; } pscopeDL->AppendPoints(update.timestamp, apfDown); pscopeUL->AppendPoints(update.timestamp, apfUp); pscopeConn->AppendPoints(update.timestamp, apfConn); } void CStatisticsDlg::SetUpdatePeriod(int step) { // this gets called after the value in Preferences/Statistics/Update delay has been changed if (step == 0) { pscopeDL->Stop(); pscopeUL->Stop(); pscopeConn->Stop(); } else { pscopeDL->Reset(step); pscopeUL->Reset(step); pscopeConn->Reset(step); } } void CStatisticsDlg::ResetAveragingTime() { // this gets called after the value in Preferences/Statistics/time for running avg has been changed pscopeDL->InvalidateGraph(); pscopeUL->InvalidateGraph(); } void CStatisticsDlg::SetARange(bool SetDownload,int maxValue) { if ( SetDownload ) { pscopeDL->SetRanges( 0, maxValue + 4 ); } else { pscopeUL->SetRanges( 0, maxValue + 4 ); } } void CStatisticsDlg::InitTree() { #ifndef CLIENT_GUI wxTreeItemId root = #endif stattree->AddRoot(theStats::GetTreeRoot()->GetDisplayString()); ShowStatistics(true); #ifndef CLIENT_GUI // Expand root stattree->Expand(root); // Expand main items wxTreeItemIdValue cookie; wxTreeItemId expand_it = stattree->GetFirstChild(root,cookie); while(expand_it.IsOk()) { stattree->Expand(expand_it); // Next on this level expand_it = stattree->GetNextSibling(expand_it); } #endif } void CStatisticsDlg::GetExpandedNodes(NodeIdSet& nodeset, const wxTreeItemId& root) { wxTreeItemIdValue cookie; wxTreeItemId temp_it = stattree->GetFirstChild(root,cookie); while (temp_it.IsOk()) { if (stattree->IsExpanded(temp_it)) { nodeset.insert(dynamic_cast(stattree->GetItemData(temp_it))->GetUniqueId()); } if (stattree->ItemHasChildren(temp_it)) { GetExpandedNodes(nodeset, temp_it); } temp_it = stattree->GetNextSibling(temp_it); } } void CStatisticsDlg::ShowStatistics(bool init) { NodeIdSet ExpandedNodes; // If it's not the first initialization of the tree, i.e. application startup if (!init) { GetExpandedNodes(ExpandedNodes, stattree->GetRootItem()); // Update sorting / get tree via EC m_stats->UpdateStatsTree(); } CStatTreeItemBase* treeRoot = theStats::GetTreeRoot(); wxTreeItemId root = stattree->GetRootItem(); FillTree(treeRoot, root, ExpandedNodes); #ifdef CLIENT_GUI if (!init) { static bool firstUpdate = true; if (firstUpdate) { // Expand root root = stattree->GetRootItem(); stattree->Expand(root); // Expand main items wxTreeItemIdValue cookie; wxTreeItemId expand_it = stattree->GetFirstChild(root,cookie); while(expand_it.IsOk()) { stattree->Expand(expand_it); // Next on this level expand_it = stattree->GetNextSibling(expand_it); } firstUpdate = false; } } #endif } #ifdef CLIENT_GUI void CStatisticsDlg::RebuildStatTreeRemote(const CECTag * tag) { m_stats->RebuildStatTreeRemote(tag); } #endif void CStatisticsDlg::FillTree(CStatTreeItemBase* statssubtree, wxTreeItemId& StatsGUITree, const NodeIdSet& expandednodes) { wxMutexLocker lock(statssubtree->GetLock()); #ifndef CLIENT_GUI StatTreeItemIterator temp_it = statssubtree->GetFirstVisibleChild(thePrefs::GetMaxClientVersions()); #else StatTreeItemIterator temp_it = statssubtree->GetFirstVisibleChild(); #endif wxTreeItemIdValue cookie; wxTreeItemId temp_GUI_it = stattree->GetFirstChild(StatsGUITree,cookie); while (!statssubtree->IsAtEndOfList(temp_it)) { wxTreeItemId temp_item; if (temp_GUI_it.IsOk()) { // There's already a child there, update it. stattree->SetItemText(temp_GUI_it, (*temp_it)->GetDisplayString()); temp_item = temp_GUI_it; uint32_t uid = (*temp_it)->GetUniqueId(); dynamic_cast(stattree->GetItemData(temp_GUI_it))->SetUniqueId(uid); if (expandednodes.find(uid) != expandednodes.end()) { stattree->Expand(temp_GUI_it); } else { stattree->Collapse(temp_GUI_it); } temp_GUI_it = stattree->GetNextSibling(temp_GUI_it); } else { // No more child on GUI, add them. temp_item = stattree->AppendItem(StatsGUITree,(*temp_it)->GetDisplayString()); stattree->SetItemData(temp_item, new CTreeItemData((*temp_it)->GetUniqueId())); } // Has childs? if ((*temp_it)->HasVisibleChildren()) { FillTree((*temp_it), temp_item, expandednodes); } else { stattree->DeleteChildren(temp_item); } statssubtree->GetNextVisibleChild(temp_it); } // What if GUI has more items than tree? // Delete the extra items. while (temp_GUI_it.IsOk()) { wxTreeItemId backup_node = stattree->GetNextSibling(temp_GUI_it); stattree->DeleteChildren(temp_GUI_it); stattree->Delete(temp_GUI_it); temp_GUI_it = backup_node; } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/StatisticsDlg.h0000644000175000017500000000504012611472361021223 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef STATISTICSDLG_H #define STATISTICSDLG_H #include // Needed for wxPanel #include #include // Needed for std::set typedef std::set NodeIdSet; class COScopeCtrl; class CStatistics; class CStatTreeItemBase; class CECTag; class wxTreeCtrl; class wxTreeItemId; //struct UpdateInfo; typedef struct UpdateInfo GraphUpdateInfo; // CStatisticsDlg panel class CStatisticsDlg : public wxPanel { friend class PrefsUnifiedDlg; friend class CPreferences; public: CStatisticsDlg(wxWindow* pParent, CStatistics* stats); ~CStatisticsDlg(); void UpdateStatGraphs(const uint32 peakconnections, const GraphUpdateInfo& update); void SetUpdatePeriod(int step); void ResetAveragingTime(); void ShowStatistics(bool init = false); void SetARange(bool SetDownload, int maxValue); void FillTree(CStatTreeItemBase* statssubtree, wxTreeItemId& StatsGUITree, const NodeIdSet& expandednodes); void GetExpandedNodes(NodeIdSet& nodeset, const wxTreeItemId& root); void Init(); void InitTree(); void InitGraphs(); void ApplyStatsColor(int index); void RebuildStatTreeRemote(const CECTag *); static const wxColour& getColors(unsigned num); COScopeCtrl* GetDLScope() { return pscopeDL; }; COScopeCtrl* GetConnScope() { return pscopeConn; }; protected: static wxColour acrStat[15]; COScopeCtrl* pscopeDL,*pscopeUL,*pscopeConn; wxTreeCtrl* stattree; CStatistics* m_stats; }; #endif // STATISTICSDLG_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Tag.cpp0000644000175000017500000002620112611472361017512 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "Tag.h" // Interface declarations #include // Needed for WXLONGLONGFMTSPEC #include "SafeFile.h" // Needed for CFileDataIO #include "MD4Hash.h" // Needed for CMD4Hash #include "CompilerSpecific.h" // Needed for __FUNCTION__ /////////////////////////////////////////////////////////////////////////////// // CTag CTag::CTag(const wxString& Name) { m_uType = 0; m_uName = 0; m_Name = Name; m_uVal = 0; m_nSize = 0; } CTag::CTag(uint8 uName) { m_uType = 0; m_uName = uName; m_uVal = 0; m_nSize = 0; } CTag::CTag(const CTag& rTag) { m_uType = rTag.m_uType; m_uName = rTag.m_uName; m_Name = rTag.m_Name; m_nSize = 0; if (rTag.IsStr()) { m_pstrVal = new wxString(rTag.GetStr()); } else if (rTag.IsInt()) { m_uVal = rTag.GetInt(); } else if (rTag.IsFloat()) { m_fVal = rTag.GetFloat(); } else if (rTag.IsHash()) { m_hashVal = new CMD4Hash(rTag.GetHash()); } else if (rTag.IsBlob()) { m_nSize = rTag.GetBlobSize(); m_pData = new unsigned char[rTag.GetBlobSize()]; memcpy(m_pData, rTag.GetBlob(), rTag.GetBlobSize()); } else if (rTag.IsBsob()) { m_nSize = rTag.GetBsobSize(); m_pData = new unsigned char[rTag.GetBsobSize()]; memcpy(m_pData, rTag.GetBsob(), rTag.GetBsobSize()); } else { wxFAIL; m_uVal = 0; } } CTag::CTag(const CFileDataIO& data, bool bOptUTF8) { // Zero variables to allow for safe deletion m_uType = m_uName = m_nSize = m_uVal = 0; m_pData = NULL; try { m_uType = data.ReadUInt8(); if (m_uType & 0x80) { m_uType &= 0x7F; m_uName = data.ReadUInt8(); } else { uint16 length = data.ReadUInt16(); if (length == 1) { m_uName = data.ReadUInt8(); } else { m_uName = 0; m_Name = data.ReadOnlyString(utf8strNone,length); } } // NOTE: It's very important that we read the *entire* packet data, // even if we do not use each tag. Otherwise we will get in trouble // when the packets are returned in a list - like the search results // from a server. If we cannot do this, then we throw an exception. switch (m_uType) { case TAGTYPE_STRING: m_pstrVal = new wxString(data.ReadString(bOptUTF8)); break; case TAGTYPE_UINT32: m_uVal = data.ReadUInt32(); break; case TAGTYPE_UINT64: m_uVal = data.ReadUInt64(); break; case TAGTYPE_UINT16: m_uVal = data.ReadUInt16(); m_uType = TAGTYPE_UINT32; break; case TAGTYPE_UINT8: m_uVal = data.ReadUInt8(); m_uType = TAGTYPE_UINT32; break; case TAGTYPE_FLOAT32: //#warning Endianess problem? data.Read(&m_fVal, 4); break; case TAGTYPE_HASH16: m_hashVal = new CMD4Hash(data.ReadHash()); break; case TAGTYPE_BOOL: printf("***NOTE: %s; Reading BOOL tag\n", __FUNCTION__); data.ReadUInt8(); break; case TAGTYPE_BOOLARRAY: { printf("***NOTE: %s; Reading BOOL Array tag\n", __FUNCTION__); uint16 len = data.ReadUInt16(); // 07-Apr-2004: eMule versions prior to 0.42e.29 used the formula "(len+7)/8"! //#warning This seems to be off by one! 8 / 8 + 1 == 2, etc. data.Seek((len / 8) + 1, wxFromCurrent); break; } case TAGTYPE_BLOB: // 07-Apr-2004: eMule versions prior to 0.42e.29 handled the "len" as int16! m_nSize = data.ReadUInt32(); // Since the length is 32b, this check is needed to avoid // huge allocations in case of bad tags. if (m_nSize > data.GetLength() - data.GetPosition()) { throw CInvalidPacket(wxT("Malformed tag")); } m_pData = new unsigned char[m_nSize]; data.Read(m_pData, m_nSize); break; default: if (m_uType >= TAGTYPE_STR1 && m_uType <= TAGTYPE_STR16) { uint8 length = m_uType - TAGTYPE_STR1 + 1; m_pstrVal = new wxString(data.ReadOnlyString(bOptUTF8, length)); m_uType = TAGTYPE_STRING; } else { // Since we cannot determine the length of this tag, we // simply have to abort reading the file. throw CInvalidPacket(CFormat(wxT("Unknown tag type encounted %x, cannot proceed!")) % m_uType); } } } catch (...) { if (m_uType == TAGTYPE_BLOB) { delete[] m_pData; } throw; } } CTag::~CTag() { if (IsStr()) { delete m_pstrVal; } else if (IsHash()) { delete m_hashVal; } else if (IsBlob() || IsBsob()) { delete[] m_pData; } } CTag &CTag::operator=(const CTag &rhs) { if (&rhs != this) { m_uType = rhs.m_uType; m_uName = rhs.m_uName; m_Name = rhs.m_Name; m_nSize = 0; if (rhs.IsStr()) { wxString *p = new wxString(rhs.GetStr()); delete m_pstrVal; m_pstrVal = p; } else if (rhs.IsInt()) { m_uVal = rhs.GetInt(); } else if (rhs.IsFloat()) { m_fVal = rhs.GetFloat(); } else if (rhs.IsHash()) { CMD4Hash *p = new CMD4Hash(rhs.GetHash()); delete m_hashVal; m_hashVal = p; } else if (rhs.IsBlob()) { m_nSize = rhs.GetBlobSize(); unsigned char *p = new unsigned char[rhs.GetBlobSize()]; delete [] m_pData; m_pData = p; memcpy(m_pData, rhs.GetBlob(), rhs.GetBlobSize()); } else if (rhs.IsBsob()) { m_nSize = rhs.GetBsobSize(); unsigned char *p = new unsigned char[rhs.GetBsobSize()]; delete [] m_pData; m_pData = p; memcpy(m_pData, rhs.GetBsob(), rhs.GetBsobSize()); } else { wxFAIL; m_uVal = 0; } } return *this; } #define CHECK_TAG_TYPE(check, expected) \ if (!(check)) { \ throw CInvalidPacket(wxT(#expected) wxT(" tag expected, but found ") + GetFullInfo()); \ } uint64 CTag::GetInt() const { CHECK_TAG_TYPE(IsInt(), Integer); return m_uVal; } const wxString& CTag::GetStr() const { CHECK_TAG_TYPE(IsStr(), String); return *m_pstrVal; } float CTag::GetFloat() const { CHECK_TAG_TYPE(IsFloat(), Float); return m_fVal; } const CMD4Hash& CTag::GetHash() const { CHECK_TAG_TYPE(IsHash(), Hash); return *m_hashVal; } uint32 CTag::GetBlobSize() const { CHECK_TAG_TYPE(IsBlob(), Blob); return m_nSize; } const byte* CTag::GetBlob() const { CHECK_TAG_TYPE(IsBlob(), Blob); return m_pData; } uint32 CTag::GetBsobSize() const { CHECK_TAG_TYPE(IsBsob(), Bsob); return m_nSize; } const byte* CTag::GetBsob() const { CHECK_TAG_TYPE(IsBsob(), Bsob); return m_pData; } bool CTag::WriteNewEd2kTag(CFileDataIO* data, EUtf8Str eStrEncode) const { // Write tag type uint8 uType; if (IsInt()) { if (m_uVal <= 0xFF) { uType = TAGTYPE_UINT8; } else if (m_uVal <= 0xFFFF) { uType = TAGTYPE_UINT16; } else if (m_uVal <= 0xFFFFFFFF) { uType = TAGTYPE_UINT32; } else { uType = TAGTYPE_UINT64; } } else if (IsStr()) { uint16 uStrValLen = GetRawSize(*m_pstrVal, eStrEncode); if (uStrValLen >= 1 && uStrValLen <= 16) { uType = TAGTYPE_STR1 + uStrValLen - 1; } else { uType = TAGTYPE_STRING; } } else { uType = m_uType; } // Write tag name if (!m_Name.IsEmpty()) { data->WriteUInt8(uType); data->WriteString(m_Name,utf8strNone); } else { wxASSERT( m_uName != 0 ); data->WriteUInt8(uType | 0x80); data->WriteUInt8(m_uName); } // Write tag data switch (uType) { case TAGTYPE_STRING: data->WriteString(*m_pstrVal,eStrEncode); break; case TAGTYPE_UINT64: data->WriteUInt64(m_uVal); break; case TAGTYPE_UINT32: data->WriteUInt32(m_uVal); break; case TAGTYPE_UINT16: data->WriteUInt16(m_uVal); break; case TAGTYPE_UINT8: data->WriteUInt8(m_uVal); break; case TAGTYPE_FLOAT32: //#warning Endianess problem? data->Write(&m_fVal, 4); break; case TAGTYPE_HASH16: data->WriteHash(*m_hashVal); break; case TAGTYPE_BLOB: data->WriteUInt32(m_nSize); data->Write(m_pData, m_nSize); break; default: // See comment on the default: of CTag::CTag(const CFileDataIO& data, bool bOptUTF8) if (uType >= TAGTYPE_STR1 && uType <= TAGTYPE_STR16) { // Sending '0' as len size makes it not write the len on the IO file. // This is because this tag types send the len as their type. data->WriteString(*m_pstrVal,eStrEncode,0); } else { printf("%s; Unknown tag: type=0x%02X\n", __FUNCTION__, uType); wxFAIL; return false; } break; } return true; } bool CTag::WriteTagToFile(CFileDataIO* file, EUtf8Str WXUNUSED(eStrEncode), bool restrictive) const { // Don't write tags of unknown types, we wouldn't be able to read them in again // and the met file would be corrupted if (!restrictive || (IsStr() || IsInt() || IsFloat() || IsBlob())) { // If this fails, it'll throw. file->WriteTag(*this); return true; } else { printf("%s; Ignored tag with unknown type=0x%02X\n", __FUNCTION__, m_uType); return false; } } wxString CTag::GetFullInfo() const { wxString strTag; if (!m_Name.IsEmpty()) { // Special case: Kad tags, and some ED2k tags ... if (m_Name.Length() == 1) { strTag = CFormat(wxT("0x%02X")) % (unsigned)m_Name[0]; } else { strTag = wxT('\"'); strTag += m_Name; strTag += wxT('\"'); } } else { strTag = CFormat(wxT("0x%02X")) % m_uName; } strTag += wxT("="); if (m_uType == TAGTYPE_STRING) { strTag += wxT("\""); strTag += *m_pstrVal; strTag += wxT("\""); } else if (m_uType >= TAGTYPE_STR1 && m_uType <= TAGTYPE_STR16) { strTag += CFormat(wxT("(Str%u)\"")) % (m_uType - TAGTYPE_STR1 + 1) + *m_pstrVal + wxT("\""); } else if (m_uType == TAGTYPE_UINT64) { strTag += CFormat(wxT("(Int64)%u")) % m_uVal; } else if (m_uType == TAGTYPE_UINT32) { strTag += CFormat(wxT("(Int32)%u")) % m_uVal; } else if (m_uType == TAGTYPE_UINT16) { strTag += CFormat(wxT("(Int16)%u")) % m_uVal; } else if (m_uType == TAGTYPE_UINT8) { strTag += CFormat(wxT("(Int8)%u")) % m_uVal; } else if (m_uType == TAGTYPE_FLOAT32) { strTag += CFormat(wxT("(Float32)%f")) % m_fVal; } else if (m_uType == TAGTYPE_BLOB) { strTag += CFormat(wxT("(Blob)%u")) % m_nSize; } else if (m_uType == TAGTYPE_BSOB) { strTag += CFormat(wxT("(Bsob)%u")) % m_nSize; } else { strTag += CFormat(wxT("Type=%u")) % m_uType; } return strTag; } CTagHash::CTagHash(const wxString& name, const CMD4Hash& value) : CTag(name) { m_hashVal = new CMD4Hash(value); m_uType = TAGTYPE_HASH16; } CTagHash::CTagHash(uint8 name, const CMD4Hash& value) : CTag(name) { m_hashVal = new CMD4Hash(value); m_uType = TAGTYPE_HASH16; } void deleteTagPtrListEntries(TagPtrList* taglist) { DeleteContents(*taglist); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Tag.h0000644000175000017500000001535012611472361017162 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef TAG_H #define TAG_H #include // Needed for EUtf8Str #include #include "OtherFunctions.h" class CMD4Hash; class CFileDataIO; /////////////////////////////////////////////////////////////////////////////// // CTag class CTag { public: CTag(const CTag& rTag); CTag(const CFileDataIO& data, bool bOptUTF8); virtual ~CTag(); CTag& operator=(const CTag&); uint8 GetType() const { return m_uType; } uint8 GetNameID() const { return m_uName; } const wxString& GetName() const { return m_Name; } bool IsStr() const { return m_uType == TAGTYPE_STRING; } bool IsInt() const { return (m_uType == TAGTYPE_UINT64) || (m_uType == TAGTYPE_UINT32) || (m_uType == TAGTYPE_UINT16) || (m_uType == TAGTYPE_UINT8); } bool IsFloat() const { return m_uType == TAGTYPE_FLOAT32; } bool IsHash() const { return m_uType == TAGTYPE_HASH16; } bool IsBlob() const { return m_uType == TAGTYPE_BLOB; } bool IsBsob() const { return m_uType == TAGTYPE_BSOB; } uint64 GetInt() const; const wxString& GetStr() const; float GetFloat() const; const CMD4Hash& GetHash() const; const byte* GetBlob() const; uint32 GetBlobSize() const; const byte* GetBsob() const; uint32 GetBsobSize() const; CTag* CloneTag() { return new CTag(*this); } bool WriteTagToFile(CFileDataIO* file, EUtf8Str eStrEncode = utf8strNone, bool restrictive = true) const; // old eD2K tags bool WriteNewEd2kTag(CFileDataIO* file, EUtf8Str eStrEncode = utf8strNone) const; // new eD2K tags wxString GetFullInfo() const; protected: CTag(const wxString& Name); CTag(uint8 uName); uint8 m_uType; union { CMD4Hash* m_hashVal; wxString* m_pstrVal; uint64 m_uVal; float m_fVal; unsigned char* m_pData; }; uint32 m_nSize; private: uint8 m_uName; wxString m_Name; }; typedef std::list TagPtrList; class CTagIntSized : public CTag { public: CTagIntSized(const wxString& name, uint64 value, uint8 bitsize) : CTag(name) { Init(value, bitsize); } CTagIntSized(uint8 name, uint64 value, uint8 bitsize) : CTag(name) { Init(value, bitsize); } protected: CTagIntSized(const wxString& name) : CTag(name) {} CTagIntSized(uint8 name) : CTag(name) {} void Init(uint64 value, uint8 bitsize) { switch (bitsize) { case 64: wxASSERT(value <= ULONGLONG(0xFFFFFFFFFFFFFFFF)); m_uVal = value; m_uType = TAGTYPE_UINT64; break; case 32: wxASSERT(value <= 0xFFFFFFFF); m_uVal = value; m_uType = TAGTYPE_UINT32; break; case 16: wxASSERT(value <= 0xFFFF); m_uVal = value; m_uType = TAGTYPE_UINT16; break; case 8: wxASSERT(value <= 0xFF); m_uVal = value; m_uType = TAGTYPE_UINT8; break; default: throw wxString(wxT("Invalid bitsize on int tag")); } } }; class CTagVarInt : public CTagIntSized { public: CTagVarInt(const wxString& name, uint64 value, uint8 forced_bits = 0) : CTagIntSized(name) { SizedInit(value, forced_bits); } CTagVarInt(uint8 name, uint64 value, uint8 forced_bits = 0) : CTagIntSized(name) { SizedInit(value, forced_bits); } private: void SizedInit(uint64 value, uint8 forced_bits) { if (forced_bits) { // The bitsize was forced. Init(value,forced_bits); } else { m_uVal = value; if (value <= 0xFF) { m_uType = TAGTYPE_UINT8; } else if (value <= 0xFFFF) { m_uType = TAGTYPE_UINT16; } else if (value <= 0xFFFFFFFF) { m_uType = TAGTYPE_UINT32; } else { m_uType = TAGTYPE_UINT64; } } } }; class CTagInt64 : public CTagIntSized { public: CTagInt64(const wxString& name, uint64 value) : CTagIntSized(name, value, 64) { } CTagInt64(uint8 name, uint64 value) : CTagIntSized(name, value, 64) { } }; class CTagInt32 : public CTagIntSized { public: CTagInt32(const wxString& name, uint64 value) : CTagIntSized(name, value, 32) { } CTagInt32(uint8 name, uint64 value) : CTagIntSized(name, value, 32) { } }; class CTagInt16 : public CTagIntSized { public: CTagInt16(const wxString& name, uint64 value) : CTagIntSized(name, value, 16) { } CTagInt16(uint8 name, uint64 value) : CTagIntSized(name, value, 16) { } }; class CTagInt8 : public CTagIntSized { public: CTagInt8(const wxString& name, uint64 value) : CTagIntSized(name, value, 8) { } CTagInt8(uint8 name, uint64 value) : CTagIntSized(name, value, 8) { } }; class CTagFloat : public CTag { public: CTagFloat(const wxString& name, float value) : CTag(name) { m_fVal = value; m_uType = TAGTYPE_FLOAT32; } CTagFloat(uint8 name, float value) : CTag(name) { m_fVal = value; m_uType = TAGTYPE_FLOAT32; } }; class CTagString : public CTag { public: CTagString(const wxString& name, const wxString& value) : CTag(name) { m_pstrVal = new wxString(value); m_uType = TAGTYPE_STRING; } CTagString(uint8 name, const wxString& value) : CTag(name) { m_pstrVal = new wxString(value); m_uType = TAGTYPE_STRING; } }; class CTagHash : public CTag { public: // Implementation on .cpp to allow forward declaration of CMD4Hash CTagHash(const wxString& name, const CMD4Hash& value); CTagHash(uint8 name, const CMD4Hash& value); }; class CTagBsob : public CTag { public: CTagBsob(const wxString& name, const byte* value, uint8 nSize) : CTag(name) { m_uType = TAGTYPE_BSOB; m_pData = new byte[nSize]; memcpy(m_pData, value, nSize); m_nSize = nSize; } }; class CTagBlob : public CTag { public: CTagBlob(const wxString& name, const byte* value, uint8 nSize) : CTag(name) { m_uType = TAGTYPE_BLOB; m_pData = new byte[nSize]; memcpy(m_pData, value, nSize); m_nSize = nSize; } }; void deleteTagPtrListEntries(TagPtrList* taglist); #endif // TAG_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/TerminationProcess.cpp0000644000175000017500000000303112611472361022623 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "TerminationProcess.h" #include // Needed for _() #include // Needed for CFormat #include "Logger.h" // Needed for AddLogLineM CTerminationProcess::CTerminationProcess(const wxString &cmd) : wxProcess(), m_cmd(cmd) { } void CTerminationProcess::OnTerminate(int pid, int status) { AddLogLineN(CFormat(_("Command '%s' with pid '%d' has finished with status code '%d'.")) % m_cmd % pid % status); delete this; } amule_2.3.1+git20151120.0023527bc2.orig/src/TerminationProcess.h0000644000175000017500000000271612611472361022301 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef TERMINATIONPROCESS_H #define TERMINATIONPROCESS_H #include // This is the handler for process termination events. // Used on some calls to wxExecute(). class CTerminationProcess : public wxProcess { public: CTerminationProcess(const wxString &cmd); virtual void OnTerminate(int pid, int status); private: wxString m_cmd; }; #endif // TERMINATIONPROCESS_H amule_2.3.1+git20151120.0023527bc2.orig/src/TerminationProcessAmuleweb.cpp0000644000175000017500000000310712611472361024311 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // Copyright (c) 2008-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "TerminationProcessAmuleweb.h" CTerminationProcessAmuleweb::CTerminationProcessAmuleweb(const wxString &cmd, long *webserver_pid) : CTerminationProcess(cmd), m_webserver_pid(webserver_pid) { // Don't open a command window on Windows Redirect(); } void CTerminationProcessAmuleweb::OnTerminate(int pid, int status) { // Tell the application that the webserver is no longer running *m_webserver_pid = 0; // Normal termination processing here CTerminationProcess::OnTerminate(pid, status); } amule_2.3.1+git20151120.0023527bc2.orig/src/TerminationProcessAmuleweb.h0000644000175000017500000000307712611472361023764 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // Copyright (c) 2008-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef TERMINATIONPROCESSAMULEWEB_H #define TERMINATIONPROCESSAMULEWEB_H #include "TerminationProcess.h" // for CTerminationProcess // This is the handler for process termination events. // Used on some calls to wxExecute(). class CTerminationProcessAmuleweb : public CTerminationProcess { private: long *m_webserver_pid; public: CTerminationProcessAmuleweb(const wxString &cmd, long *webserver_pid); virtual void OnTerminate(int pid, int status); }; #endif // TERMINATIONPROCESSAMULEWEB_H amule_2.3.1+git20151120.0023527bc2.orig/src/TextClient.cpp0000644000175000017500000011613412611472361021067 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifdef HAVE_CONFIG_H #include "config.h" // Needed for VERSION #endif #include #include "TextClient.h" #ifndef __WINDOWS__ #include // Do_not_auto_remove #endif //------------------------------------------------------------------- //------------------------------------------------------------------- #include #include #include // Needed for CFormat #include "OtherFunctions.h" #include "Constants.h" // Needed for Priority Levels #include "DataToText.h" // Needed for PriorityToStr //------------------------------------------------------------------- enum { CMD_ID_STATUS, CMD_ID_RESUME, CMD_ID_PAUSE, CMD_ID_PRIORITY_LOW, CMD_ID_PRIORITY_NORMAL, CMD_ID_PRIORITY_HIGH, CMD_ID_PRIORITY_AUTO, CMD_ID_CANCEL, CMD_ID_CONNECT, CMD_ID_CONNECT_ED2K, CMD_ID_CONNECT_KAD, CMD_ID_DISCONNECT, CMD_ID_DISCONNECT_ED2K, CMD_ID_DISCONNECT_KAD, CMD_ID_RELOAD_SHARED, CMD_ID_RELOAD_IPFILTER_LOCAL, CMD_ID_RELOAD_IPFILTER_NET, CMD_ID_SET_IPFILTER_ON, CMD_ID_SET_IPFILTER_OFF, CMD_ID_SET_IPFILTER_CLIENTS_ON, CMD_ID_SET_IPFILTER_CLIENTS_OFF, CMD_ID_SET_IPFILTER_SERVERS_ON, CMD_ID_SET_IPFILTER_SERVERS_OFF, CMD_ID_SET_IPFILTER_LEVEL, CMD_ID_GET_IPFILTER, CMD_ID_GET_IPFILTER_STATE, CMD_ID_GET_IPFILTER_STATE_CLIENTS, CMD_ID_GET_IPFILTER_STATE_SERVERS, CMD_ID_GET_IPFILTER_LEVEL, CMD_ID_SHOW_UL, CMD_ID_SHOW_DL, CMD_ID_SHOW_LOG, CMD_ID_SHOW_SERVERS, CMD_ID_SHOW_SHARED, CMD_ID_RESET_LOG, CMD_ID_SHUTDOWN, CMD_ID_ADDLINK, CMD_ID_SET_BWLIMIT_UP, CMD_ID_SET_BWLIMIT_DOWN, CMD_ID_GET_BWLIMITS, CMD_ID_STATTREE, CMD_ID_SEARCH, CMD_ID_SEARCH_GLOBAL, CMD_ID_SEARCH_LOCAL, CMD_ID_SEARCH_KAD, CMD_ID_SEARCH_RESULTS, CMD_ID_SEARCH_PROGRESS, CMD_ID_DOWNLOAD, // IDs for deprecated commands CMD_ID_SET_IPFILTER }; // method to create a SearchFile SearchFile::SearchFile(const CEC_SearchFile_Tag *tag) { nHash = tag->FileHash(); sHash = nHash.Encode(); sFileName = tag->FileName(); lFileSize = tag->SizeFull(); lSourceCount = tag->SourceCount(); bPresent = tag->AlreadyHave(); } //------------------------------------------------------------------- IMPLEMENT_APP (CamulecmdApp) //------------------------------------------------------------------- void CamulecmdApp::OnInitCmdLine(wxCmdLineParser& parser) { CaMuleExternalConnector::OnInitCmdLine(parser, "amulecmd"); parser.AddOption(wxT("c"), wxT("command"), _("Execute and exit."), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL); } bool CamulecmdApp::OnCmdLineParsed(wxCmdLineParser& parser) { m_HasCmdOnCmdLine = parser.Found(wxT("command"), &m_CmdString); if (m_CmdString.Lower().StartsWith(wxT("help"))) { OnInitCommandSet(); printf("%s %s\n", m_appname, (const char *)unicode2char(GetMuleVersion())); Parse_Command(m_CmdString); exit(0); } m_interactive = !m_HasCmdOnCmdLine; return CaMuleExternalConnector::OnCmdLineParsed(parser); } void CamulecmdApp::TextShell(const wxString& prompt) { if (m_HasCmdOnCmdLine) Parse_Command(m_CmdString); else CaMuleExternalConnector::TextShell(prompt); } int CamulecmdApp::ProcessCommand(int CmdId) { wxString args = GetCmdArgs(); CECPacket *request = 0; std::list request_list; int tmp_int = 0; EC_SEARCH_TYPE search_type = EC_SEARCH_KAD; // Implementation of the deprecated command 'SetIPFilter'. if (CmdId == CMD_ID_SET_IPFILTER) { if ( ! args.IsEmpty() ) { if (args.IsSameAs(wxT("ON"), false)) { CmdId = CMD_ID_SET_IPFILTER_ON; } else if (args.IsSameAs(wxT("OFF"), false)) { CmdId = CMD_ID_SET_IPFILTER_OFF; } else { return CMD_ERR_INVALID_ARG; } } else { CmdId = CMD_ID_GET_IPFILTER_STATE; } } switch (CmdId) { case CMD_ID_STATUS: request_list.push_back(new CECPacket(EC_OP_STAT_REQ, EC_DETAIL_CMD)); break; case CMD_ID_SHUTDOWN: request_list.push_back(new CECPacket(EC_OP_SHUTDOWN)); break; case CMD_ID_CONNECT: if ( !args.IsEmpty() ) { unsigned int ip[4]; unsigned int port; // Not much we can do against this unicode2char. int result = sscanf(unicode2char(args), "%3d.%3d.%3d.%3d:%5d", &ip[0], &ip[1], &ip[2], &ip[3], &port); if (result != 5) { // Try to resolve DNS -- good for dynamic IP servers wxString serverName(args.BeforeFirst(wxT(':'))); long lPort; bool ok = args.AfterFirst(wxT(':')).ToLong(&lPort); port = (unsigned int)lPort; amuleIPV4Address a; a.Hostname(serverName); a.Service(port); result = sscanf(unicode2char(a.IPAddress()), "%3d.%3d.%3d.%3d", &ip[0], &ip[1], &ip[2], &ip[3]); if (serverName.IsEmpty() || !ok || (result != 4)) { Show(_("Invalid IP format. Use xxx.xxx.xxx.xxx:xxxx\n")); return 0; } } EC_IPv4_t addr; addr.m_ip[0] = ip[0]; addr.m_ip[1] = ip[1]; addr.m_ip[2] = ip[2]; addr.m_ip[3] = ip[3]; addr.m_port = port; request = new CECPacket(EC_OP_SERVER_CONNECT); request->AddTag(CECTag(EC_TAG_SERVER, addr)); request_list.push_back(request); } else { request_list.push_back(new CECPacket(EC_OP_CONNECT)); } break; case CMD_ID_CONNECT_ED2K: request_list.push_back(new CECPacket(EC_OP_SERVER_CONNECT)); break; case CMD_ID_CONNECT_KAD: request_list.push_back(new CECPacket(EC_OP_KAD_START)); break; case CMD_ID_DISCONNECT: request_list.push_back(new CECPacket(EC_OP_DISCONNECT)); break; case CMD_ID_DISCONNECT_ED2K: request_list.push_back(new CECPacket(EC_OP_SERVER_DISCONNECT)); break; case CMD_ID_DISCONNECT_KAD: request_list.push_back(new CECPacket(EC_OP_KAD_STOP)); break; case CMD_ID_RELOAD_SHARED: request_list.push_back(new CECPacket(EC_OP_SHAREDFILES_RELOAD)); break; case CMD_ID_RELOAD_IPFILTER_LOCAL: request_list.push_back(new CECPacket(EC_OP_IPFILTER_RELOAD)); break; case CMD_ID_RELOAD_IPFILTER_NET: request = new CECPacket(EC_OP_IPFILTER_UPDATE); request->AddTag(EC_TAG_STRING, args); request_list.push_back(request); break; case CMD_ID_SET_IPFILTER_ON: case CMD_ID_SET_IPFILTER_CLIENTS_ON: case CMD_ID_SET_IPFILTER_SERVERS_ON: tmp_int = 1; case CMD_ID_SET_IPFILTER_OFF: case CMD_ID_SET_IPFILTER_CLIENTS_OFF: case CMD_ID_SET_IPFILTER_SERVERS_OFF: { if (CmdId == CMD_ID_SET_IPFILTER_CLIENTS_ON || CmdId == CMD_ID_SET_IPFILTER_CLIENTS_OFF) { CmdId = CMD_ID_GET_IPFILTER_STATE_CLIENTS; } else if (CmdId == CMD_ID_SET_IPFILTER_SERVERS_ON || CmdId == CMD_ID_SET_IPFILTER_SERVERS_OFF) { CmdId = CMD_ID_GET_IPFILTER_STATE_SERVERS; } else { CmdId = CMD_ID_GET_IPFILTER_STATE; } request = new CECPacket(EC_OP_SET_PREFERENCES); CECEmptyTag prefs(EC_TAG_PREFS_SECURITY); if (CmdId != CMD_ID_GET_IPFILTER_STATE_SERVERS) { prefs.AddTag(CECTag(EC_TAG_IPFILTER_CLIENTS, (uint8)tmp_int)); } if (CmdId != CMD_ID_GET_IPFILTER_STATE_CLIENTS) { prefs.AddTag(CECTag(EC_TAG_IPFILTER_SERVERS, (uint8)tmp_int)); } request->AddTag(prefs); request_list.push_back(request); } case CMD_ID_GET_IPFILTER: case CMD_ID_GET_IPFILTER_STATE: case CMD_ID_GET_IPFILTER_STATE_CLIENTS: case CMD_ID_GET_IPFILTER_STATE_SERVERS: request = new CECPacket(EC_OP_GET_PREFERENCES); request->AddTag(CECTag(EC_TAG_SELECT_PREFS, (uint32)EC_PREFS_SECURITY)); request_list.push_back(request); break; case CMD_ID_SET_IPFILTER_LEVEL: if (!args.IsEmpty()) // This 'if' must stay as long as we support the deprecated 'IPLevel' command. { unsigned long int level = 0; if (args.ToULong(&level) == true && level < 256) { request = new CECPacket(EC_OP_SET_PREFERENCES); CECEmptyTag prefs(EC_TAG_PREFS_SECURITY); prefs.AddTag(CECTag(EC_TAG_IPFILTER_LEVEL, (uint8)level)); request->AddTag(prefs); request_list.push_back(request); } else { return CMD_ERR_INVALID_ARG; } } CmdId = CMD_ID_GET_IPFILTER_LEVEL; case CMD_ID_GET_IPFILTER_LEVEL: request = new CECPacket(EC_OP_GET_PREFERENCES); request->AddTag(CECTag(EC_TAG_SELECT_PREFS, (uint32)EC_PREFS_SECURITY)); request_list.push_back(request); break; case CMD_ID_PAUSE: case CMD_ID_CANCEL: case CMD_ID_RESUME: { if ( args.IsEmpty() ) { Show(_("This command requires an argument. Valid arguments: 'all', filename, or a number.\n")); return 0; } else { wxStringTokenizer argsTokenizer(args); wxString token; CMD4Hash hash; // Grab the entire dl queue right away CECPacket request_all(EC_OP_GET_DLOAD_QUEUE, EC_DETAIL_CMD); const CECPacket *reply_all = SendRecvMsg_v2(&request_all); if (reply_all) { switch(CmdId) { case CMD_ID_PAUSE: request = new CECPacket(EC_OP_PARTFILE_PAUSE); break; case CMD_ID_CANCEL: request = new CECPacket(EC_OP_PARTFILE_DELETE); break; case CMD_ID_RESUME: request = new CECPacket(EC_OP_PARTFILE_RESUME); break; default: wxFAIL; } // We loop through all the arguments while(argsTokenizer.HasMoreTokens()) { token=argsTokenizer.GetNextToken(); // If the user requested all, then we select all files and exit the loop // since there is little point to add anything more to "everything" if( token == wxT("all") ) { for (CECPacket::const_iterator it = reply_all->begin(); it != reply_all->end(); ++it) { const CEC_PartFile_Tag *tag = static_cast(&*it); request->AddTag(CECTag(EC_TAG_PARTFILE, tag->FileHash())); } break; } else if ( hash.Decode(token.Trim(false).Trim(true)) ) { if ( !hash.IsEmpty() ) { Show(_("Processing by hash: "+token+wxT("\n"))); request->AddTag(CECTag(EC_TAG_PARTFILE, hash)); } } else { // Go through the dl queue and look at each filename for (CECPacket::const_iterator it = reply_all->begin(); it != reply_all->end(); ++it) { const CEC_PartFile_Tag *tag = static_cast(&*it); wxString partmetname = tag->PartMetName(); // We check for filename, XXX.pat.met, XXX.part, XXX if( tag->FileName() == token || partmetname == token || partmetname.Truncate(partmetname.Len()-4) == token || partmetname.Truncate(partmetname.Len()-5) == token) { Show(_("Processing by filename: "+token+wxT("\n"))); request->AddTag(CECTag(EC_TAG_PARTFILE, tag->FileHash())); } } } // End of filename check else } // End of argument token loop request_list.push_back(request); delete reply_all; } // End of dl queue processing } // end of command processing break; } case CMD_ID_PRIORITY_LOW: case CMD_ID_PRIORITY_NORMAL: case CMD_ID_PRIORITY_HIGH: case CMD_ID_PRIORITY_AUTO: if ( args.IsEmpty() ) { Show(_("This command requires an argument. Valid arguments: a file hash.\n")); return 0; } else { CMD4Hash hash; if (hash.Decode(args.Trim(false).Trim(true))) { if (!hash.IsEmpty()) { request = new CECPacket(EC_OP_PARTFILE_PRIO_SET); CECTag hashtag(EC_TAG_PARTFILE, hash); switch(CmdId) { case CMD_ID_PRIORITY_LOW: hashtag.AddTag(CECTag(EC_TAG_PARTFILE_PRIO, (uint8)PR_LOW)); break; case CMD_ID_PRIORITY_NORMAL: hashtag.AddTag(CECTag(EC_TAG_PARTFILE_PRIO, (uint8)PR_NORMAL)); break; case CMD_ID_PRIORITY_HIGH: hashtag.AddTag(CECTag(EC_TAG_PARTFILE_PRIO, (uint8)PR_HIGH)); break; case CMD_ID_PRIORITY_AUTO: hashtag.AddTag(CECTag(EC_TAG_PARTFILE_PRIO, (uint8)PR_AUTO)); break; default: wxFAIL; } request->AddTag(hashtag); request_list.push_back(request); } else { Show(_("Not a valid number\n")); return 0; } } else { Show(_("Not a valid hash (length should be exactly 32 chars)\n")); return 0; } } break; case CMD_ID_SHOW_UL: request_list.push_back(new CECPacket(EC_OP_GET_ULOAD_QUEUE)); break; case CMD_ID_SHOW_DL: request_list.push_back(new CECPacket(EC_OP_GET_DLOAD_QUEUE)); break; case CMD_ID_SHOW_LOG: request_list.push_back(new CECPacket(EC_OP_GET_LOG)); break; case CMD_ID_SHOW_SERVERS: request_list.push_back(new CECPacket(EC_OP_GET_SERVER_LIST, EC_DETAIL_CMD)); break; case CMD_ID_SHOW_SHARED: request_list.push_back(new CECPacket(EC_OP_GET_SHARED_FILES)); break; case CMD_ID_RESET_LOG: request_list.push_back(new CECPacket(EC_OP_RESET_LOG)); break; case CMD_ID_ADDLINK: if (args.StartsWith(wxT("ed2k://"))) { //aMule doesn't like AICH links without |/| in front of h= if (args.Find(wxT("|h=")) > -1 && args.Find(wxT("|/|h=")) == -1) { args.Replace(wxT("|h="),wxT("|/|h=")); } // repair links where | is replaced with %7C (Firefox) if (args.StartsWith(wxT("ed2k://%7C"))) { args.Replace(wxT("%7C"),wxT("|")); } } request = new CECPacket(EC_OP_ADD_LINK); request->AddTag(CECTag(EC_TAG_STRING, args)); request_list.push_back(request); break; case CMD_ID_SET_BWLIMIT_UP: tmp_int = EC_TAG_CONN_MAX_UL - EC_TAG_CONN_MAX_DL; case CMD_ID_SET_BWLIMIT_DOWN: tmp_int += EC_TAG_CONN_MAX_DL; { unsigned long int limit; if (args.ToULong(&limit)) { request = new CECPacket(EC_OP_SET_PREFERENCES); CECEmptyTag prefs(EC_TAG_PREFS_CONNECTIONS); prefs.AddTag(CECTag(tmp_int, (uint16)limit)); request->AddTag(prefs); request_list.push_back(request); } else { return CMD_ERR_INVALID_ARG; } } case CMD_ID_GET_BWLIMITS: request = new CECPacket(EC_OP_GET_PREFERENCES); request->AddTag(CECTag(EC_TAG_SELECT_PREFS, (uint32)EC_PREFS_CONNECTIONS)); request_list.push_back(request); break; case CMD_ID_STATTREE: request = new CECPacket(EC_OP_GET_STATSTREE); if (!args.IsEmpty()) { unsigned long int max_versions; if (args.ToULong(&max_versions)) { if (max_versions < 256) { request->AddTag(CECTag(EC_TAG_STATTREE_CAPPING, (uint8)max_versions)); } else { delete request; return CMD_ERR_INVALID_ARG; } } else { delete request; return CMD_ERR_INVALID_ARG; } } request_list.push_back(request); break; case CMD_ID_SEARCH_GLOBAL: search_type = EC_SEARCH_GLOBAL; case CMD_ID_SEARCH_LOCAL: if (search_type != EC_SEARCH_GLOBAL){ search_type = EC_SEARCH_LOCAL; } case CMD_ID_SEARCH_KAD: if (search_type != EC_SEARCH_GLOBAL && search_type != EC_SEARCH_LOCAL){ search_type = EC_SEARCH_KAD; } if (!args.IsEmpty()) { wxString search = args; wxString type; wxString extention; uint32 avail = 0; uint32 min_size = 0; uint32 max_size = 0; request = new CECPacket(EC_OP_SEARCH_START); request->AddTag(CEC_Search_Tag (search, search_type, type, extention, avail, min_size, max_size)); request_list.push_back(request); } break; case CMD_ID_SEARCH: /* TRANSLATORS: 'help search' is a command to the program, do not translate it. */ Show(_("No search type defined.\nType 'help search' to get more help.\n")); break; case CMD_ID_SEARCH_RESULTS: request_list.push_back(new CECPacket(EC_OP_SEARCH_RESULTS, EC_DETAIL_FULL)); break; case CMD_ID_SEARCH_PROGRESS: request_list.push_back(new CECPacket(EC_OP_SEARCH_PROGRESS)); break; case CMD_ID_DOWNLOAD: if (!args.IsEmpty()) { unsigned long int id = 0; if (args.ToULong(&id) == true && id < m_Results_map.size()) { SearchFile* file = m_Results_map[id]; Show(CFormat(_("Download File: %lu %s\n")) % id % file->sFileName); request = new CECPacket(EC_OP_DOWNLOAD_SEARCH_RESULT); // get with id the hash and category=0 uint32 category = 0; CECTag hashtag(EC_TAG_PARTFILE, file->nHash); hashtag.AddTag(CECTag(EC_TAG_PARTFILE_CAT, category)); request->AddTag(hashtag); request_list.push_back(request); } else { return CMD_ERR_INVALID_ARG; } } break; default: return CMD_ERR_PROCESS_CMD; } m_last_cmd_id = CmdId; if ( ! request_list.empty() ) { std::list::iterator it = request_list.begin(); while ( it != request_list.end() ) { CECPacket *curr = *it++; if (curr->GetOpCode() == EC_OP_SHUTDOWN) { SendPacket(curr); delete curr; return CMD_ID_QUIT; } const CECPacket *reply = SendRecvMsg_v2(curr); delete curr; if ( reply ) { Process_Answer_v2(reply); delete reply; } } request_list.resize(0); } return CMD_OK; } /* * Method to show the results in the console */ void CamulecmdApp::ShowResults(CResultMap results_map) { unsigned int name_max = 80; unsigned int mb_max = 5; unsigned int nr_max = 5; unsigned long int id = 0; wxString output, name, sources, mb , kb; printf("Nr. Filename: Size(MB): Sources: \n"); printf("-----------------------------------------------------------------------------------------------------------\n"); for( std::map::iterator iter = results_map.begin(); iter != results_map.end(); ++iter ) { id = (*iter).first; SearchFile* file = (*iter).second; output.Printf(wxT("%i. "), id); output = output.SubString(0, nr_max).Append(file->sFileName).Append(' ', name_max); mb.Printf(wxT(" %d"), file->lFileSize/1024/1024); kb.Printf(wxT(".%d"), file->lFileSize/1024%1024); output = output.SubString(0, nr_max + name_max + mb_max - mb.Length() ).Append(mb).Append(kb); printf("%s %ld\n",(const char*)unicode2char(output), file->lSourceCount ); } } // Formats a statistics (sub)tree to text wxString StatTree2Text(const CEC_StatTree_Node_Tag *tree, int depth) { if (!tree) { return wxEmptyString; } wxString result = wxString(wxChar(' '), depth) + tree->GetDisplayString() + wxT("\n"); for (CECTag::const_iterator it = tree->begin(); it != tree->end(); ++it) { const CEC_StatTree_Node_Tag *tmp = static_cast(&*it); if (tmp->GetTagName() == EC_TAG_STATTREE_NODE) { result += StatTree2Text(tmp, depth + 1); } } return result; } /* * Format EC packet into text form for output to console */ void CamulecmdApp::Process_Answer_v2(const CECPacket *response) { wxString s; wxString msgFailedUnknown(_("Request failed with an unknown error.")); wxASSERT(response); switch (response->GetOpCode()) { case EC_OP_NOOP: s << _("Operation was successful."); break; case EC_OP_FAILED: { const CECTag *tag = response->GetFirstTagSafe(); if (tag->IsString()) { s << CFormat(_("Request failed with the following error: %s")) % wxGetTranslation(tag->GetStringData()); } else { s << msgFailedUnknown; } } break; case EC_OP_SET_PREFERENCES: { const CECTag *tab = response->GetTagByNameSafe(EC_TAG_PREFS_SECURITY); const CECTag *ipfilterLevel = tab->GetTagByName(EC_TAG_IPFILTER_LEVEL); if (ipfilterLevel) { if (m_last_cmd_id == CMD_ID_GET_IPFILTER || m_last_cmd_id == CMD_ID_GET_IPFILTER_STATE || m_last_cmd_id == CMD_ID_GET_IPFILTER_STATE_CLIENTS) { s += CFormat(_("IP filtering for clients is %s.\n")) % ((tab->GetTagByName(EC_TAG_IPFILTER_CLIENTS) == NULL) ? _("OFF") : _("ON")); } if (m_last_cmd_id == CMD_ID_GET_IPFILTER || m_last_cmd_id == CMD_ID_GET_IPFILTER_STATE || m_last_cmd_id == CMD_ID_GET_IPFILTER_STATE_SERVERS) { s += CFormat(_("IP filtering for servers is %s.\n")) % ((tab->GetTagByName(EC_TAG_IPFILTER_SERVERS) == NULL) ? _("OFF") : _("ON")); } if (m_last_cmd_id == CMD_ID_GET_IPFILTER || m_last_cmd_id == CMD_ID_GET_IPFILTER_LEVEL) { s << CFormat(_("Current IPFilter Level is %d.\n")) % ipfilterLevel->GetInt(); } } tab = response->GetTagByNameSafe(EC_TAG_PREFS_CONNECTIONS); const CECTag *connMaxUL = tab->GetTagByName(EC_TAG_CONN_MAX_UL); const CECTag *connMaxDL = tab->GetTagByName(EC_TAG_CONN_MAX_DL); if (connMaxUL && connMaxDL) { s << CFormat(_("Bandwidth limits: Up: %u kB/s, Down: %u kB/s.\n")) % connMaxUL->GetInt() % connMaxDL->GetInt(); } } break; case EC_OP_STRINGS: for (CECPacket::const_iterator it = response->begin(); it != response->end(); ++it) { const CECTag &tag = *it; s << tag.GetStringData() << wxT("\n"); } break; case EC_OP_STATS: { const CEC_ConnState_Tag *connState = static_cast(response->GetTagByName(EC_TAG_CONNSTATE)); if (connState) { s << _("eD2k") << wxT(": "); if (connState->IsConnectedED2K()) { const CECTag *server = connState->GetTagByName(EC_TAG_SERVER); const CECTag *serverName = server ? server->GetTagByName(EC_TAG_SERVER_NAME) : NULL; if (server && serverName) { s << CFormat(_("Connected to %s %s %s")) % serverName->GetStringData() % server->GetIPv4Data().StringIP() % (connState->HasLowID() ? _("with LowID") : _("with HighID")); } } else if (connState->IsConnectingED2K()) { s << _("Now connecting"); } else { s << _("Not connected"); } s << wxT('\n') << _("Kad") << wxT(": "); if (connState->IsKadRunning()) { if (connState->IsConnectedKademlia()) { s << _("Connected") << wxT(" ("); if (connState->IsKadFirewalled()) { s << _("firewalled"); } else { s << _("ok"); } s << wxT(')'); } else { s << _("Not connected"); } } else { s << _("Not running"); } s << wxT('\n'); } const CECTag *tmpTag; if ((tmpTag = response->GetTagByName(EC_TAG_STATS_DL_SPEED)) != 0) { s << CFormat(_("\nDownload:\t%s")) % CastItoSpeed(tmpTag->GetInt()); } if ((tmpTag = response->GetTagByName(EC_TAG_STATS_UL_SPEED)) != 0) { s << CFormat(_("\nUpload:\t%s")) % CastItoSpeed(tmpTag->GetInt()); } if ((tmpTag = response->GetTagByName(EC_TAG_STATS_UL_QUEUE_LEN)) != 0) { s << CFormat(_("\nClients in queue:\t%d\n")) % tmpTag->GetInt(); } if ((tmpTag = response->GetTagByName(EC_TAG_STATS_TOTAL_SRC_COUNT)) != 0) { s << CFormat(_("\nTotal sources:\t%d\n")) % tmpTag->GetInt(); } break; } case EC_OP_DLOAD_QUEUE: for (CECPacket::const_iterator it = response->begin(); it != response->end(); ++it) { const CEC_PartFile_Tag *tag = static_cast(&*it); uint64 filesize, donesize; filesize = tag->SizeFull(); donesize = tag->SizeDone(); s << tag->FileHashString() << wxT(" ") << tag->FileName() << (CFormat(wxT("\n\t [%.1f%%] %4i/%4i ")) % ((float)donesize / ((float)filesize)*100.0) % ((int)tag->SourceCount() - (int)tag->SourceNotCurrCount()) % (int)tag->SourceCount()) << ((int)tag->SourceCountA4AF() ? wxString(CFormat(wxT("+%2.2i ")) % (int)tag->SourceCountA4AF()) : wxString(wxT(" "))) << ((int)tag->SourceXferCount() ? wxString(CFormat(wxT("(%2.2i) - ")) % (int)tag->SourceXferCount()) : wxString(wxT(" - "))) << tag->GetFileStatusString(); s << wxT(" - ") << tag->PartMetName(); if (tag->DownPrio() < 10) { s << wxT(" - ") << PriorityToStr((int)tag->DownPrio(), 0); } else { s << wxT(" - ") << PriorityToStr((tag->DownPrio() - 10), 1); } if ( tag->SourceXferCount() > 0) { s << wxT(" - ") + CastItoSpeed(tag->Speed()); } s << wxT("\n"); } break; case EC_OP_ULOAD_QUEUE: for (CECPacket::const_iterator it = response->begin(); it != response->end(); ++it) { const CECTag *tag = & *it; const CECTag *clientName = tag->GetTagByName(EC_TAG_CLIENT_NAME); const CECTag *partfileName = tag->GetTagByName(EC_TAG_PARTFILE_NAME); const CECTag *partfileSizeXfer = tag->GetTagByName(EC_TAG_PARTFILE_SIZE_XFER); const CECTag *partfileSpeed = tag->GetTagByName(EC_TAG_CLIENT_UP_SPEED); if (clientName && partfileName && partfileSizeXfer && partfileSpeed) { s << wxT("\n") << CFormat(wxT("%10u ")) % tag->GetInt() << clientName->GetStringData() << wxT(" ") << partfileName->GetStringData() << wxT(" ") << CastItoXBytes(partfileSizeXfer->GetInt()) << wxT(" ") << CastItoSpeed(partfileSpeed->GetInt()); } } break; case EC_OP_LOG: for (CECPacket::const_iterator it = response->begin(); it != response->end(); ++it) { const CECTag &tag = *it; s << tag.GetStringData() << wxT("\n"); } break; case EC_OP_SERVER_LIST: for (CECPacket::const_iterator it = response->begin(); it != response->end(); ++it) { const CECTag &tag = *it; const CECTag *serverName = tag.GetTagByName(EC_TAG_SERVER_NAME); if (serverName) { wxString ip = tag.GetIPv4Data().StringIP(); ip.Append(' ', 24 - ip.Length()); s << ip << serverName->GetStringData() << wxT("\n"); } } break; case EC_OP_SHARED_FILES: for (CECPacket::const_iterator it = response->begin(); it != response->end(); ++it) { const CEC_SharedFile_Tag *tag = static_cast(&*it); s << tag->FileHashString() << wxT(" "); wxString filePath = tag->FilePath(); bool ispartfile = true; if (filePath.EndsWith(wxT(".part"))) { for (unsigned i = 0; i < filePath.Length() - 5; i++) { if (filePath[i] < wxT('0') || filePath[i] > wxT('9')) { ispartfile = false; break; } } } else { ispartfile = false; } if (ispartfile) { s << _("[PartFile]") << wxT(" "); } else { s << filePath #ifdef __WINDOWS__ << wxT('\\'); #else << wxT('/'); #endif } s << tag->FileName() << wxT("\n\t") << PriorityToStr(tag->UpPrio() % 10, tag->UpPrio() >= 10) << wxT(" - ") << CFormat(wxT("%i(%i) / %i(%i) - %s (%s) - %.2f\n")) % tag->GetRequests() % tag->GetAllRequests() % tag->GetAccepts() % tag->GetAllAccepts() % CastItoXBytes(tag->GetXferred()) % CastItoXBytes(tag->GetAllXferred()) % (static_cast(tag->GetAllXferred()) / static_cast(tag->SizeFull())); } break; case EC_OP_STATSTREE: s << StatTree2Text(static_cast(response->GetTagByName(EC_TAG_STATTREE_NODE)), 0); break; case EC_OP_SEARCH_RESULTS: { int i = 0; m_Results_map.clear(); s += CFormat(_("Number of search results: %i\n")) % response->GetTagCount(); for (CECPacket::const_iterator it = response->begin(); it != response->end(); ++it) { const CEC_SearchFile_Tag *tag = static_cast(&*it); //printf("Tag FileName: %s \n",(const char*)unicode2char(tag->FileName())); m_Results_map[i++] = new SearchFile(tag); } ShowResults(m_Results_map); break; } case EC_OP_SEARCH_PROGRESS: { const CECTag *tab = response->GetTagByNameSafe(EC_TAG_SEARCH_STATUS); uint32 progress = tab->GetInt(); if (progress <= 100) { s += CFormat(_("Search progress: %u %% \n")) % progress; } else { s += _("Search progress not available"); } break; } default: s += CFormat(_("Received an unknown reply from the server, OpCode = %#x.")) % response->GetOpCode(); } Process_Answer(s); } void CamulecmdApp::OnInitCommandSet() { CCommandTree *tmp; CCommandTree *tmp2; CCommandTree *tmp3; CaMuleExternalConnector::OnInitCommandSet(); m_commands.AddCommand(wxT("Status"), CMD_ID_STATUS, wxTRANSLATE("Show short status information."), wxTRANSLATE("Show connection status, current up/download speeds, etc.\n"), CMD_PARAM_NEVER); m_commands.AddCommand(wxT("Statistics"), CMD_ID_STATTREE, wxTRANSLATE("Show full statistics tree."), wxTRANSLATE("Optionally, a number in the range 0-255 can be passed as an argument to this\ncommand, which tells how many entries of the client version subtrees should be\nshown. Passing 0 or omitting it means 'unlimited'.\n\nExample: 'statistics 5' will show only the top 5 versions for each client type.\n")); m_commands.AddCommand(wxT("Shutdown"), CMD_ID_SHUTDOWN, wxTRANSLATE("Shut down aMule."), wxTRANSLATE("Shut down the remote running core (amule/amuled).\nThis will also shut down the text client, since it is unusable without a\nrunning core.\n"), CMD_PARAM_NEVER); tmp = m_commands.AddCommand(wxT("Reload"), CMD_ERR_INCOMPLETE, wxTRANSLATE("Reload the given object."), wxEmptyString, CMD_PARAM_NEVER); tmp->AddCommand(wxT("Shared"), CMD_ID_RELOAD_SHARED, wxTRANSLATE("Reload shared files list."), wxEmptyString, CMD_PARAM_NEVER); tmp2 = tmp->AddCommand(wxT("IPFilter"), CMD_ID_RELOAD_IPFILTER_LOCAL, wxTRANSLATE("Reload IP filtering table."), wxEmptyString, CMD_PARAM_OPTIONAL); tmp2->AddCommand(wxT("File"), CMD_ID_RELOAD_IPFILTER_LOCAL, wxTRANSLATE("Reload current IP filtering table."), wxEmptyString, CMD_PARAM_NEVER); tmp2->AddCommand(wxT("Net"), CMD_ID_RELOAD_IPFILTER_NET, wxTRANSLATE("Update IP filtering table from URL."), wxTRANSLATE("If URL is omitted the URL from the preferences is used."), CMD_PARAM_OPTIONAL); tmp = m_commands.AddCommand(wxT("Connect"), CMD_ID_CONNECT, wxTRANSLATE("Connect to the network."), wxTRANSLATE("This will connect to all networks that are enabled in Preferences.\nYou may also optionally specify a server address in IP:Port form, to connect to\nthat server only. The IP must be a dotted decimal IPv4 address,\nor a resolvable DNS name."), CMD_PARAM_OPTIONAL); tmp->AddCommand(wxT("ED2K"), CMD_ID_CONNECT_ED2K, wxTRANSLATE("Connect to eD2k only."), wxEmptyString, CMD_PARAM_NEVER); tmp->AddCommand(wxT("Kad"), CMD_ID_CONNECT_KAD, wxTRANSLATE("Connect to Kad only."), wxEmptyString, CMD_PARAM_NEVER); tmp = m_commands.AddCommand(wxT("Disconnect"), CMD_ID_DISCONNECT, wxTRANSLATE("Disconnect from the network."), wxTRANSLATE("This will disconnect from all networks that are currently connected.\n"), CMD_PARAM_NEVER); tmp->AddCommand(wxT("ED2K"), CMD_ID_DISCONNECT_ED2K, wxTRANSLATE("Disconnect from eD2k only."), wxEmptyString, CMD_PARAM_NEVER); tmp->AddCommand(wxT("Kad"), CMD_ID_DISCONNECT_KAD, wxTRANSLATE("Disconnect from Kad only."), wxEmptyString, CMD_PARAM_NEVER); m_commands.AddCommand(wxT("Add"), CMD_ID_ADDLINK, wxTRANSLATE("Add an eD2k or magnet link to core."), wxTRANSLATE("The eD2k link to be added can be:\n*) a file link (ed2k://|file|...), it will be added to the download queue,\n*) a server link (ed2k://|server|...), it will be added to the server list,\n*) or a serverlist link, in which case all servers in the list will be added to the\n server list.\n\nThe magnet link must contain the eD2k hash and file length.\n"), CMD_PARAM_ALWAYS); tmp = m_commands.AddCommand(wxT("Set"), CMD_ERR_INCOMPLETE, wxTRANSLATE("Set a preference value."), wxEmptyString, CMD_PARAM_NEVER); tmp2 = tmp->AddCommand(wxT("IPFilter"), CMD_ERR_INCOMPLETE, wxTRANSLATE("Set IP filtering preferences."), wxEmptyString, CMD_PARAM_NEVER); tmp2->AddCommand(wxT("On"), CMD_ID_SET_IPFILTER_ON, wxTRANSLATE("Turn IP filtering on for both clients and servers."), wxEmptyString, CMD_PARAM_NEVER); tmp2->AddCommand(wxT("Off"), CMD_ID_SET_IPFILTER_OFF, wxTRANSLATE("Turn IP filtering off for both clients and servers."), wxEmptyString, CMD_PARAM_NEVER); tmp3 = tmp2->AddCommand(wxT("Clients"), CMD_ERR_INCOMPLETE, wxTRANSLATE("Enable/Disable IP filtering for clients."), wxEmptyString, CMD_PARAM_NEVER); tmp3->AddCommand(wxT("On"), CMD_ID_SET_IPFILTER_CLIENTS_ON, wxTRANSLATE("Turn IP filtering on for clients."), wxEmptyString, CMD_PARAM_NEVER); tmp3->AddCommand(wxT("Off"), CMD_ID_SET_IPFILTER_CLIENTS_OFF, wxTRANSLATE("Turn IP filtering off for clients."), wxEmptyString, CMD_PARAM_NEVER); tmp3 = tmp2->AddCommand(wxT("Servers"), CMD_ERR_INCOMPLETE, wxTRANSLATE("Enable/Disable IP filtering for servers."), wxEmptyString, CMD_PARAM_NEVER); tmp3->AddCommand(wxT("On"), CMD_ID_SET_IPFILTER_SERVERS_ON, wxTRANSLATE("Turn IP filtering on for servers."), wxEmptyString, CMD_PARAM_NEVER); tmp3->AddCommand(wxT("Off"), CMD_ID_SET_IPFILTER_SERVERS_OFF, wxTRANSLATE("Turn IP filtering off for servers."), wxEmptyString, CMD_PARAM_NEVER); tmp2->AddCommand(wxT("Level"), CMD_ID_SET_IPFILTER_LEVEL, wxTRANSLATE("Select IP filtering level."), wxTRANSLATE("Valid filtering levels are in the range 0-255, and it's default (initial)\nvalue is 127.\n"), CMD_PARAM_ALWAYS); tmp2 = tmp->AddCommand(wxT("BwLimit"), CMD_ERR_INCOMPLETE, wxTRANSLATE("Set bandwidth limits."), wxTRANSLATE("The value given to these commands has to be in kilobytes/sec.\n"), CMD_PARAM_NEVER); tmp2->AddCommand(wxT("Up"), CMD_ID_SET_BWLIMIT_UP, wxTRANSLATE("Set upload bandwidth limit."), wxTRANSLATE("The given value must be in kilobytes/sec.\n"), CMD_PARAM_ALWAYS); tmp2->AddCommand(wxT("Down"), CMD_ID_SET_BWLIMIT_DOWN, wxTRANSLATE("Set download bandwidth limit."), wxTRANSLATE("The given value must be in kilobytes/sec.\n"), CMD_PARAM_ALWAYS); tmp = m_commands.AddCommand(wxT("Get"), CMD_ERR_INCOMPLETE, wxTRANSLATE("Get and display a preference value."), wxEmptyString, CMD_PARAM_NEVER); tmp2 = tmp->AddCommand(wxT("IPFilter"), CMD_ID_GET_IPFILTER, wxTRANSLATE("Get IP filtering preferences."), wxEmptyString, CMD_PARAM_NEVER); tmp3 = tmp2->AddCommand(wxT("State"), CMD_ID_GET_IPFILTER_STATE, wxTRANSLATE("Get IP filtering state for both clients and servers."), wxEmptyString, CMD_PARAM_NEVER); tmp3->AddCommand(wxT("Clients"), CMD_ID_GET_IPFILTER_STATE_CLIENTS, wxTRANSLATE("Get IP filtering state for clients only."), wxEmptyString, CMD_PARAM_NEVER); tmp3->AddCommand(wxT("Servers"), CMD_ID_GET_IPFILTER_STATE_SERVERS, wxTRANSLATE("Get IP filtering state for servers only."), wxEmptyString, CMD_PARAM_NEVER); tmp2->AddCommand(wxT("Level"), CMD_ID_GET_IPFILTER_LEVEL, wxTRANSLATE("Get IP filtering level."), wxEmptyString, CMD_PARAM_NEVER); tmp->AddCommand(wxT("BwLimits"), CMD_ID_GET_BWLIMITS, wxTRANSLATE("Get bandwidth limits."), wxEmptyString, CMD_PARAM_NEVER); tmp = m_commands.AddCommand(wxT("Search"), CMD_ID_SEARCH, wxTRANSLATE("Execute a search."), wxTRANSLATE("A search type has to be specified by giving the type:\n GLOBAL\n LOCAL\n KAD\nExample: 'search kad file' will execute a kad search for \"file\".\n"), CMD_PARAM_ALWAYS); tmp->AddCommand(wxT("global"), CMD_ID_SEARCH_GLOBAL, wxTRANSLATE("Execute a global search."), wxEmptyString, CMD_PARAM_ALWAYS); tmp->AddCommand(wxT("local"), CMD_ID_SEARCH_LOCAL, wxTRANSLATE("Execute a local search"), wxEmptyString, CMD_PARAM_ALWAYS); tmp->AddCommand(wxT("kad"), CMD_ID_SEARCH_KAD, wxTRANSLATE("Execute a kad search"), wxEmptyString, CMD_PARAM_ALWAYS); m_commands.AddCommand(wxT("Results"), CMD_ID_SEARCH_RESULTS, wxTRANSLATE("Show the results of the last search."), wxTRANSLATE("Return the results of the previous search.\n"), CMD_PARAM_NEVER); m_commands.AddCommand(wxT("Progress"), CMD_ID_SEARCH_PROGRESS, wxTRANSLATE("Show the progress of a search."), wxTRANSLATE("Show the progress of a search.\n"), CMD_PARAM_NEVER); m_commands.AddCommand(wxT("Download"), CMD_ID_DOWNLOAD, wxTRANSLATE("Start downloading a file"), wxTRANSLATE("The number of a file from the last search has to be given.\nExample: 'download 12' will start to download the file with the number 12 of the previous search.\n"), CMD_PARAM_ALWAYS); // // TODO: These commands below need implementation and/or rewrite! // m_commands.AddCommand(wxT("Pause"), CMD_ID_PAUSE, wxTRANSLATE("Pause download."), wxEmptyString, CMD_PARAM_ALWAYS); m_commands.AddCommand(wxT("Resume"), CMD_ID_RESUME, wxTRANSLATE("Resume download."), wxEmptyString, CMD_PARAM_ALWAYS); m_commands.AddCommand(wxT("Cancel"), CMD_ID_CANCEL, wxTRANSLATE("Cancel download."), wxEmptyString, CMD_PARAM_ALWAYS); tmp = m_commands.AddCommand(wxT("Priority"), CMD_ERR_INCOMPLETE, wxTRANSLATE("Set download priority."), wxTRANSLATE("Set priority of a download to Low, Normal, High or Auto.\n"), CMD_PARAM_ALWAYS); tmp->AddCommand(wxT("Low"), CMD_ID_PRIORITY_LOW, wxTRANSLATE("Set priority to low."), wxEmptyString, CMD_PARAM_ALWAYS); tmp->AddCommand(wxT("Normal"), CMD_ID_PRIORITY_NORMAL, wxTRANSLATE("Set priority to normal."), wxEmptyString, CMD_PARAM_ALWAYS); tmp->AddCommand(wxT("High"), CMD_ID_PRIORITY_HIGH, wxTRANSLATE("Set priority to high."), wxEmptyString, CMD_PARAM_ALWAYS); tmp->AddCommand(wxT("Auto"), CMD_ID_PRIORITY_AUTO, wxTRANSLATE("Set priority to auto."), wxEmptyString, CMD_PARAM_ALWAYS); tmp = m_commands.AddCommand(wxT("Show"), CMD_ERR_INCOMPLETE, wxTRANSLATE("Show queues/lists."), wxTRANSLATE("Show upload/download queue, server list or shared files list.\n"), CMD_PARAM_ALWAYS); tmp->AddCommand(wxT("UL"), CMD_ID_SHOW_UL, wxTRANSLATE("Show upload queue."), wxEmptyString, CMD_PARAM_NEVER); tmp->AddCommand(wxT("DL"), CMD_ID_SHOW_DL, wxTRANSLATE("Show download queue."), wxEmptyString, CMD_PARAM_NEVER); tmp->AddCommand(wxT("Log"), CMD_ID_SHOW_LOG, wxTRANSLATE("Show log."), wxEmptyString, CMD_PARAM_NEVER); tmp->AddCommand(wxT("Servers"), CMD_ID_SHOW_SERVERS, wxTRANSLATE("Show servers list."), wxEmptyString, CMD_PARAM_NEVER); tmp->AddCommand(wxT("Shared"), CMD_ID_SHOW_SHARED, wxTRANSLATE("Show shared files list."), wxEmptyString, CMD_PARAM_NEVER); m_commands.AddCommand(wxT("Reset"), CMD_ID_RESET_LOG, wxTRANSLATE("Reset log."), wxEmptyString, CMD_PARAM_NEVER); // // Deprecated commands, kept for backwards compatibility only. // #define DEPRECATED(OLDCMD, ID, NEWCMD, PARAM) \ m_commands.AddCommand(wxT(OLDCMD), CMD_ID_##ID | CMD_DEPRECATED, CFormat(wxTRANSLATE("Deprecated command, use '%s' instead.")) % wxT(NEWCMD), \ CFormat(wxTRANSLATE("This is a deprecated command, and may be removed in the future.\nUse '%s' instead.\n")) % wxT(NEWCMD), CMD_PARAM_##PARAM) DEPRECATED("Stats", STATUS, "Status", NEVER); DEPRECATED("SetIPFilter", SET_IPFILTER, "Set IPFilter", OPTIONAL); DEPRECATED("GetIPLevel", GET_IPFILTER_LEVEL, "Get IPFilter Level", NEVER); DEPRECATED("SetIPLevel", SET_IPFILTER_LEVEL, "Set IPFilter Level", ALWAYS); DEPRECATED("IPLevel", SET_IPFILTER_LEVEL, "Get/Set IPFilter Level", OPTIONAL); DEPRECATED("Servers", SHOW_SERVERS, "Show Servers", NEVER); DEPRECATED("GetBWLimits", GET_BWLIMITS, "Get BwLimits", NEVER); DEPRECATED("SetUpBWLimit", SET_BWLIMIT_UP, "Set BwLimit Up", ALWAYS); DEPRECATED("SetDownBWLimit", SET_BWLIMIT_DOWN, "Set BwLimit Down", ALWAYS); } int CamulecmdApp::OnRun() { ConnectAndRun(wxT("aMulecmd"), wxT(VERSION)); return 0; } // Dummy functions for EC logging bool ECLogIsEnabled() { return false; } void DoECLogLine(const wxString &) { } namespace MuleNotify { void HandleNotification(const class CMuleNotiferBase&) {} void HandleNotificationAlways(const class CMuleNotiferBase&) {} void UDPSocketSend(class CMuleUDPSocket *) {} void UDPSocketReceive(class CMuleUDPSocket *) {} } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/TextClient.h0000644000175000017500000000427612611472361020537 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2003-2011 Angel Vidal ( kry@amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef TEXTCLIENT_H #define TEXTCLIENT_H #include "ExternalConnector.h" #include class CEC_SearchFile_Tag; class SearchFile { public: wxString sFileName; unsigned long lFileSize; CMD4Hash nHash; wxString sHash; long lSourceCount; bool bPresent; SearchFile(const CEC_SearchFile_Tag *); static class SearchInfo *GetContainerInstance(); CMD4Hash ID() { return nHash; } }; typedef std::map CResultMap; wxString ECv2_Response2String(CECPacket *response); class CamulecmdApp : public CaMuleExternalConnector { public: const wxString GetGreetingTitle() { return _("aMule text client"); } int ProcessCommand(int ID); void Process_Answer_v2(const CECPacket *reply); void OnInitCommandSet(); private: // other command line switches void OnInitCmdLine(wxCmdLineParser& amuleweb_parser); bool OnCmdLineParsed(wxCmdLineParser& parser); void TextShell(const wxString& prompt); void ShowResults(CResultMap results_map); bool m_HasCmdOnCmdLine; wxString m_CmdString; virtual int OnRun(); int m_last_cmd_id; CResultMap m_Results_map; }; #endif // TEXTCLIENT_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ThreadScheduler.cpp0000644000175000017500000002324312611472361022050 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2006-2011 Mikkel Schubert ( xaignar@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "ThreadScheduler.h" // Interface declarations #include "Logger.h" // Needed for Add(Debug)LogLine{C,N} #include // Needed for CFormat #include "ScopedPtr.h" // Needed for CScopedPtr #include // Needed for std::sort // Do_not_auto_remove (mingw-gcc-3.4.5) //! Global lock the scheduler and its thread. static wxMutex s_lock; //! Pointer to the global scheduler instance (automatically instantiated). static CThreadScheduler* s_scheduler = NULL; //! Specifies if the scheduler is running. static bool s_running = false; //! Specifies if the gobal scheduler has been terminated. static bool s_terminated = false; /** * This class is used in a custom implementation of wxThreadHelper. * * The reason for not using wxThreadHelper are as follows: * - wxThreadHelper makes use of wxThread:Kill, which is warned against * serveral times in the docs, and even calls it in its destructor. * - Managing the thread-object is difficult, since the only way to * destroy it is to create a new thread. */ class CTaskThread : public CMuleThread { public: CTaskThread(CThreadScheduler* owner) : CMuleThread(wxTHREAD_JOINABLE), m_owner(owner) { } //! For simplicity's sake, all code is placed in CThreadScheduler::Entry void* Entry() { return m_owner->Entry(); } private: //! The scheduler owning this thread. CThreadScheduler* m_owner; }; void CThreadScheduler::Start() { wxMutexLocker lock(s_lock); s_running = true; s_terminated = false; // Ensures that a thread is started if tasks are already waiting. if (s_scheduler) { AddDebugLogLineN(logThreads, wxT("Starting scheduler")); s_scheduler->CreateSchedulerThread(); } } void CThreadScheduler::Terminate() { AddDebugLogLineN(logThreads, wxT("Terminating scheduler")); CThreadScheduler* ptr = NULL; { wxMutexLocker lock(s_lock); // Safely unlink the scheduler, as to avoid race-conditions. ptr = s_scheduler; s_running = false; s_terminated = true; s_scheduler = NULL; } delete ptr; AddDebugLogLineN(logThreads, wxT("Scheduler terminated")); } bool CThreadScheduler::AddTask(CThreadTask* task, bool overwrite) { wxMutexLocker lock(s_lock); // When terminated (on shutdown), all tasks are ignored. if (s_terminated) { AddDebugLogLineN(logThreads, wxT("Task discarded: ") + task->GetDesc()); delete task; return false; } else if (s_scheduler == NULL) { s_scheduler = new CThreadScheduler(); AddDebugLogLineN(logThreads, wxT("Scheduler created.")); } return s_scheduler->DoAddTask(task, overwrite); } /** Returns string representation of error code. */ wxString GetErrMsg(wxThreadError err) { switch (err) { case wxTHREAD_NO_ERROR: return wxT("wxTHREAD_NO_ERROR"); case wxTHREAD_NO_RESOURCE: return wxT("wxTHREAD_NO_RESOURCE"); case wxTHREAD_RUNNING: return wxT("wxTHREAD_RUNNING"); case wxTHREAD_NOT_RUNNING: return wxT("wxTHREAD_NOT_RUNNING"); case wxTHREAD_KILLED: return wxT("wxTHREAD_KILLED"); case wxTHREAD_MISC_ERROR: return wxT("wxTHREAD_MISC_ERROR"); default: return wxT("Unknown error"); } } void CThreadScheduler::CreateSchedulerThread() { if ((m_thread && m_thread->IsAlive()) || m_tasks.empty()) { return; } // A thread can only be run once, so the old one must be safely disposed of if (m_thread) { AddDebugLogLineN(logThreads, wxT("CreateSchedulerThread: Disposing of old thread.")); m_thread->Stop(); delete m_thread; } m_thread = new CTaskThread(this); wxThreadError err = m_thread->Create(); if (err == wxTHREAD_NO_ERROR) { // Try to avoid reducing the latency of the main thread m_thread->SetPriority(WXTHREAD_MIN_PRIORITY); err = m_thread->Run(); if (err == wxTHREAD_NO_ERROR) { AddDebugLogLineN(logThreads, wxT("Scheduler thread started")); return; } else { AddDebugLogLineC(logThreads, wxT("Error while starting scheduler thread: ") + GetErrMsg(err)); } } else { AddDebugLogLineC(logThreads, wxT("Error while creating scheduler thread: ") + GetErrMsg(err)); } // Creation or running failed. m_thread->Stop(); delete m_thread; m_thread = NULL; } /** This is the sorter functor for the task-queue. */ struct CTaskSorter { bool operator()(const CThreadScheduler::CEntryPair& a, const CThreadScheduler::CEntryPair& b) { if (a.first->GetPriority() != b.first->GetPriority()) { return a.first->GetPriority() > b.first->GetPriority(); } // Compare tasks numbers. return a.second < b.second; } }; CThreadScheduler::CThreadScheduler() : m_tasksDirty(false), m_thread(NULL), m_currentTask(NULL) { } CThreadScheduler::~CThreadScheduler() { if (m_thread) { m_thread->Stop(); delete m_thread; } } size_t CThreadScheduler::GetTaskCount() const { wxMutexLocker lock(s_lock); return m_tasks.size(); } bool CThreadScheduler::DoAddTask(CThreadTask* task, bool overwrite) { // GetTick is too lowres, so we just use a counter to ensure that // the sorted order will match the order in which the tasks were added. static unsigned taskAge = 0; // Get the map for this task type, implicitly creating it as needed. CDescMap& map = m_taskDescs[task->GetType()]; CDescMap::value_type entry(task->GetDesc(), task); if (map.insert(entry).second) { AddDebugLogLineN(logThreads, wxT("Task scheduled: ") + task->GetType() + wxT(" - ") + task->GetDesc()); m_tasks.push_back(CEntryPair(task, taskAge++)); m_tasksDirty = true; } else if (overwrite) { AddDebugLogLineN(logThreads, wxT("Task overwritten: ") + task->GetType() + wxT(" - ") + task->GetDesc()); CThreadTask* existingTask = map[task->GetDesc()]; if (m_currentTask == existingTask) { // The duplicate is already being executed, abort it. m_currentTask->m_abort = true; } else { // Task not yet started, simply remove and delete. wxCHECK2(map.erase(existingTask->GetDesc()), /* Do nothing. */); delete existingTask; } m_tasks.push_back(CEntryPair(task, taskAge++)); map[task->GetDesc()] = task; m_tasksDirty = true; } else { AddDebugLogLineN(logThreads, wxT("Duplicate task, discarding: ") + task->GetType() + wxT(" - ") + task->GetDesc()); delete task; return false; } if (s_running) { CreateSchedulerThread(); } return true; } void* CThreadScheduler::Entry() { AddDebugLogLineN(logThreads, wxT("Entering scheduling loop")); while (!m_thread->TestDestroy()) { CScopedPtr task(NULL); { wxMutexLocker lock(s_lock); // Resort tasks by priority/age if list has been modified. if (m_tasksDirty) { AddDebugLogLineN(logThreads, wxT("Resorting tasks")); std::sort(m_tasks.begin(), m_tasks.end(), CTaskSorter()); m_tasksDirty = false; } else if (m_tasks.empty()) { AddDebugLogLineN(logThreads, wxT("No more tasks, stopping")); break; } // Select the next task task.reset(m_tasks.front().first); m_tasks.pop_front(); m_currentTask = task.get(); } AddDebugLogLineN(logThreads, wxT("Current task: ") + task->GetType() + wxT(" - ") + task->GetDesc()); // Execute the task task->m_owner = m_thread; task->Entry(); task->OnExit(); // Check if this was the last task of this type bool isLastTask = false; { wxMutexLocker lock(s_lock); // If the task has been aborted, the entry now refers to // a different task, so dont remove it. That also means // that it cant be the last task of this type. if (!task->m_abort) { AddDebugLogLineN(logThreads, CFormat(wxT("Completed task '%s%s', %u tasks remaining.")) % task->GetType() % (task->GetDesc().IsEmpty() ? wxString() : (wxT(" - ") + task->GetDesc())) % m_tasks.size() ); CDescMap& map = m_taskDescs[task->GetType()]; if (!map.erase(task->GetDesc())) { wxFAIL; } else if (map.empty()) { m_taskDescs.erase(task->GetType()); isLastTask = true; } } m_currentTask = NULL; } if (isLastTask) { // Allow the task to signal that all sub-tasks have been completed AddDebugLogLineN(logThreads, wxT("Last task, calling OnLastTask")); task->OnLastTask(); } } AddDebugLogLineN(logThreads, wxT("Leaving scheduling loop")); return 0; } CThreadTask::CThreadTask(const wxString& type, const wxString& desc, ETaskPriority priority) : m_type(type), m_desc(desc), m_priority(priority), m_owner(NULL), m_abort(false) { } CThreadTask::~CThreadTask() { } void CThreadTask::OnLastTask() { // Does nothing by default. } void CThreadTask::OnExit() { // Does nothing by default. } bool CThreadTask::TestDestroy() const { wxCHECK(m_owner, m_abort); return m_abort || m_owner->TestDestroy(); } const wxString& CThreadTask::GetType() const { return m_type; } const wxString& CThreadTask::GetDesc() const { return m_desc; } ETaskPriority CThreadTask::GetPriority() const { return m_priority; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ThreadScheduler.h0000644000175000017500000001307412611472361021516 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2006-2011 Mikkel Schubert ( xaignar@amule.org / http://www.amule.org ) // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef THREADSCHEDULER_H #define THREADSCHEDULER_H #include #include #include "Types.h" #include "MuleThread.h" class CThreadTask; //! The priority values of tasks. enum ETaskPriority { ETP_Low = 0, ETP_Normal, ETP_High, //! For tasks such as finding shared files and ipfilter.dat loading only. ETP_Critical }; /** * This class mananges scheduling of background tasks. * * Currently it is assumed that all tasks are IO intensive, * so that only a single task is allowed to proceed at any * one time. All threads are run in lowest priority mode. * * Tasks are sorted by priority (see ETaskPriority) and age. * * Note that the scheduler starts in suspended mode, in * which tasks are queued but not executed. Call Start() * to begin execution of the tasks. */ class CThreadScheduler { public: /** Starts execution of queued tasks. */ static void Start(); /** * Terminates task execution and frees the scheduler object. * * Tasks added after this are discarded. */ static void Terminate(); /** * Adds a new task to the queue, returning true if the task was queued. * * Before the task is queued, it is checked against the * existing tasks based on type and description. If an * matching task already exists, this task-object is * discarded. The task is also discarded if the scheduler * has been terminated. If 'overwrite' is true, any * existing duplicate task is dropped, and if already * running, terminated. * * Note: This function takes ownership of the task. * * @see Start * @see Terminate */ static bool AddTask(CThreadTask* task, bool overwrite = false); private: CThreadScheduler(); ~CThreadScheduler(); /** Returns the number of tasks on the queue. */ size_t GetTaskCount() const; /** Tries to add the given task to the queue, returning true on success. */ bool DoAddTask(CThreadTask* task, bool overwrite); /** Creates the actual scheduler thread if none exist. */ void CreateSchedulerThread(); /** Entry function called via internal thread-object. */ void* Entry(); //! Contains a task and its age. typedef std::pair CEntryPair; //! List of currently scheduled tasks. std::deque m_tasks; //! Specifies if tasks should be resorted by priority. bool m_tasksDirty; typedef std::map CDescMap; typedef std::map CTypeMap; //! Map of current task by type -> desc. Used to avoid duplicate tasks. CTypeMap m_taskDescs; //! The actual worker thread. CMuleThread* m_thread; //! The currently running task, if any. CThreadTask* m_currentTask; friend class CTaskThread; friend struct CTaskSorter; }; /** * Base-class of all threaded tasks. * * This class acts as a pseudo-thread, and is transparently * executed on a worker thread by the CThreadScheduler * class. * * Note that the task type should be an unique description * of the task type, as it is used to detect completion of * all tasks of a given type and in duplicate detection * with the description. The description should be unique * for the given task, such that duplicates can be discovered. */ class CThreadTask { public: /** * @param type Should be a name constant among tasks of the type (hashing, completion, etc). * @param desc Should be an unique description for this task, for detecting duplicates. * @param priority Decides how soon the task will be carried out. */ CThreadTask(const wxString& type, const wxString& desc, ETaskPriority priority = ETP_Normal); /** Needed since CThreadScheduler only works with CThreadTask pointers. */ virtual ~CThreadTask(); /** Returns the task type, used for debugging and duplicate detection. */ const wxString& GetType() const; /** Returns the task description, used for debugging and duplicate detection. */ const wxString& GetDesc() const; /** Returns the priority of the task. Used when selecting the next task. */ ETaskPriority GetPriority() const; protected: //! @see wxThread::Entry virtual void Entry() = 0; /** Called when the last task of a specific type has been completed. */ virtual void OnLastTask(); /** @see wxThread::OnExit */ virtual void OnExit(); /** @see wxThread::TestDestroy */ bool TestDestroy() const; private: wxString m_type; wxString m_desc; ETaskPriority m_priority; //! The owner (scheduler), used when calling TestDestroy. CMuleThread* m_owner; //! Specifies if the specifc task should be aborted. bool m_abort; friend class CThreadScheduler; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ThreadTasks.cpp0000644000175000017500000005020512611472361021215 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2006-2011 Mikkel Schubert ( xaignar@amule.org / http:://www.amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include // Needed for wxTheApp #include "ThreadTasks.h" // Interface declarations #include "PartFile.h" // Needed for CPartFile #include "Logger.h" // Needed for Add(Debug)LogLine{C,N} #include // Needed for CFormat #include "amule.h" // Needed for theApp #include "KnownFileList.h" // Needed for theApp->knownfiles #include "Preferences.h" // Needed for thePrefs #include "ScopedPtr.h" // Needed for CScopedPtr and CScopedArray #include "PlatformSpecific.h" // Needed for CanFSHandleSpecialChars #ifdef HAVE_CONFIG_H # include "config.h" #endif //! This hash represents the value for an empty MD4 hashing const byte g_emptyMD4Hash[16] = { 0x31, 0xD6, 0xCF, 0xE0, 0xD1, 0x6A, 0xE9, 0x31, 0xB7, 0x3C, 0x59, 0xD7, 0xE0, 0xC0, 0x89, 0xC0 }; //////////////////////////////////////////////////////////// // CHashingTask CHashingTask::CHashingTask(const CPath& path, const CPath& filename, const CPartFile* part) // GetPrintable is used to improve the readability of the log. : CThreadTask(wxT("Hashing"), path.JoinPaths(filename).GetPrintable(), (part ? ETP_High : ETP_Normal)), m_path(path), m_filename(filename), m_toHash((EHashes)(EH_MD4 | EH_AICH)), m_owner(part) { // We can only create the AICH hashset if the file is a knownfile or // if the partfile is complete, since the MD4 hashset is checked first, // so that the AICH hashset only gets assigned if the MD4 hashset // matches what we expected. Due to the rareity of post-completion // corruptions, this gives us a nice speedup in most cases. if (part && !part->GetGapList().empty()) { m_toHash = EH_MD4; } } CHashingTask::CHashingTask(const CKnownFile* toAICHHash) // GetPrintable is used to improve the readability of the log. : CThreadTask(wxT("AICH Hashing"), toAICHHash->GetFilePath().JoinPaths(toAICHHash->GetFileName()).GetPrintable(), ETP_Low), m_path(toAICHHash->GetFilePath()), m_filename(toAICHHash->GetFileName()), m_toHash(EH_AICH), m_owner(toAICHHash) { } void CHashingTask::Entry() { CFileAutoClose file; CPath fullPath = m_path.JoinPaths(m_filename); if (!file.Open(fullPath, CFile::read)) { AddDebugLogLineC(logHasher, CFormat(wxT("Warning, failed to open file, skipping: %s")) % fullPath); return; } uint64 fileLength = 0; try { fileLength = file.GetLength(); } catch (const CIOFailureException&) { AddDebugLogLineC(logHasher, CFormat(wxT("Warning, failed to retrieve file-length, skipping: %s")) % fullPath); return; } if (fileLength > MAX_FILE_SIZE) { AddDebugLogLineC(logHasher, CFormat(wxT("Warning, file is larger than supported size, skipping: %s")) % fullPath); return; } else if (fileLength == 0) { if (m_owner) { // It makes no sense to try to hash empty partfiles ... wxFAIL; } else { // Zero-size partfiles should be hashed, but not zero-sized shared-files. AddDebugLogLineC(logHasher, CFormat(wxT("Warning, 0-size file, skipping: %s")) % fullPath); } return; } // For thread-safety, results are passed via a temporary file object. CScopedPtr knownfile; knownfile->m_filePath = m_path; knownfile->SetFileName(m_filename); knownfile->SetFileSize(fileLength); knownfile->m_lastDateChanged = CPath::GetModificationTime(fullPath); knownfile->m_AvailPartFrequency.insert( knownfile->m_AvailPartFrequency.begin(), knownfile->GetPartCount(), 0); if ((m_toHash & EH_MD4) && (m_toHash & EH_AICH)) { knownfile->GetAICHHashset()->FreeHashSet(); AddDebugLogLineN( logHasher, CFormat( wxT("Starting to create MD4 and AICH hash for file: %s")) % m_filename ); } else if ((m_toHash & EH_MD4)) { AddDebugLogLineN( logHasher, CFormat( wxT("Starting to create MD4 hash for file: %s")) % m_filename ); } else if ((m_toHash & EH_AICH)) { knownfile->GetAICHHashset()->FreeHashSet(); AddDebugLogLineN( logHasher, CFormat( wxT("Starting to create AICH hash for file: %s")) % m_filename ); } else { wxCHECK_RET(0, (CFormat(wxT("No hashes requested for file, skipping: %s")) % m_filename).GetString()); } // This loops creates the part-hashes, loop-de-loop. try { for (uint16 part = 0; part < knownfile->GetPartCount() && !TestDestroy(); part++) { SetHashingProgress(part + 1); if (CreateNextPartHash(file, part, knownfile.get(), m_toHash) == false) { AddDebugLogLineC(logHasher, CFormat(wxT("Error while hashing file, skipping: %s")) % m_filename); SetHashingProgress(0); return; } } } catch (const CSafeIOException& e) { AddDebugLogLineC(logHasher, wxT("IO exception while hashing file: ") + e.what()); SetHashingProgress(0); return; } SetHashingProgress(0); if ((m_toHash & EH_MD4) && !TestDestroy()) { // If the file is < PARTSIZE, then the filehash is that one hash, // otherwise, the filehash is the hash of the parthashes if ( knownfile->m_hashlist.size() == 1 ) { knownfile->m_abyFileHash = knownfile->m_hashlist[0]; knownfile->m_hashlist.clear(); } else if ( knownfile->m_hashlist.size() ) { CMD4Hash hash; knownfile->CreateHashFromHashlist(knownfile->m_hashlist, &hash); knownfile->m_abyFileHash = hash; } else { // This should not happen! wxFAIL; } } // Did we create a AICH hashset? if ((m_toHash & EH_AICH) && !TestDestroy()) { CAICHHashSet* AICHHashSet = knownfile->GetAICHHashset(); AICHHashSet->ReCalculateHash(false); if (AICHHashSet->VerifyHashTree(true) ) { AICHHashSet->SetStatus(AICH_HASHSETCOMPLETE); if (!AICHHashSet->SaveHashSet()) { AddDebugLogLineC( logHasher, CFormat(wxT("Warning, failed to save AICH hashset for file: %s")) % m_filename ); } // delete hashset now to free memory AICHHashSet->FreeHashSet(); } } if ((m_toHash == EH_AICH) && !TestDestroy()) { CHashingEvent evt(MULE_EVT_AICH_HASHING, knownfile.release(), m_owner); wxPostEvent(wxTheApp, evt); } else if (!TestDestroy()) { CHashingEvent evt(MULE_EVT_HASHING, knownfile.release(), m_owner); wxPostEvent(wxTheApp, evt); } } void CHashingTask::SetHashingProgress(uint16 part) { if (m_owner) { m_owner->SetHashingProgress(part); } } bool CHashingTask::CreateNextPartHash(CFileAutoClose& file, uint16 part, CKnownFile* owner, EHashes toHash) { wxCHECK_MSG(!file.Eof(), false, wxT("Unexpected EOF in CreateNextPartHash")); const uint64 offset = part * PARTSIZE; // We'll read at most PARTSIZE bytes per cycle const uint64 partLength = owner->GetPartSize(part); CMD4Hash hash; CMD4Hash* md4Hash = ((toHash & EH_MD4) ? &hash : NULL); CAICHHashTree* aichHash = NULL; // Setup for AICH hashing if (toHash & EH_AICH) { aichHash = owner->GetAICHHashset()->m_pHashTree.FindHash(offset, partLength); } owner->CreateHashFromFile(file, offset, partLength, md4Hash, aichHash); if (toHash & EH_MD4) { // Store the md4 hash owner->m_hashlist.push_back(hash); // This is because of the ed2k implementation for parts. A 2 * PARTSIZE // file i.e. will have 3 parts (see CKnownFile::SetFileSize for comments). // So we have to create the hash for the 0-size data, which will be the default // md4 hash for null data: 31D6CFE0D16AE931B73C59D7E0C089C0 if ((partLength == PARTSIZE) && file.Eof()) { owner->m_hashlist.push_back(CMD4Hash(g_emptyMD4Hash)); } } return true; } void CHashingTask::OnLastTask() { if (GetType() == wxT("Hashing")) { // To prevent rehashing in case of crashes, we // explicity save the list of hashed files here. theApp->knownfiles->Save(); // Make sure the AICH-hashes are up to date. CThreadScheduler::AddTask(new CAICHSyncTask()); } } //////////////////////////////////////////////////////////// // CAICHSyncTask CAICHSyncTask::CAICHSyncTask() : CThreadTask(wxT("AICH Syncronizing"), wxEmptyString, ETP_Low) { } void CAICHSyncTask::Entry() { ConvertToKnown2ToKnown264(); AddDebugLogLineN( logAICHThread, wxT("Syncronization thread started.") ); // We collect all masterhashs which we find in the known2.met and store them in a list std::list hashlist; const CPath fullpath = CPath(thePrefs::GetConfigDir() + KNOWN2_MET_FILENAME); CFile file; if (!fullpath.FileExists()) { // File does not exist. Try to create it to see if it can be created at all (and don't start hashing otherwise). if (!file.Open(fullpath, CFile::write)) { AddDebugLogLineC( logAICHThread, wxT("Error, failed to open 'known2_64.met' file!") ); return; } try { file.WriteUInt8(KNOWN2_MET_VERSION); } catch (const CIOFailureException& e) { AddDebugLogLineC(logAICHThread, wxT("IO failure while creating hashlist (Aborting): ") + e.what()); return; } } else { if (!file.Open(fullpath, CFile::read)) { AddDebugLogLineC( logAICHThread, wxT("Error, failed to open 'known2_64.met' file!") ); return; } uint32 nLastVerifiedPos = 0; try { if (file.ReadUInt8() != KNOWN2_MET_VERSION) { throw CEOFException(wxT("Invalid met-file header found, removing file.")); } uint64 nExistingSize = file.GetLength(); while (file.GetPosition() < nExistingSize) { // Read the next hash hashlist.push_back(CAICHHash(&file)); uint32 nHashCount = file.ReadUInt32(); if (file.GetPosition() + nHashCount * CAICHHash::GetHashSize() > nExistingSize){ throw CEOFException(wxT("Hashlist ends past end of file.")); } // skip the rest of this hashset nLastVerifiedPos = file.Seek(nHashCount * HASHSIZE, wxFromCurrent); } } catch (const CEOFException&) { AddDebugLogLineC(logAICHThread, wxT("Hashlist corrupted, truncating file.")); file.Close(); file.Reopen(CFile::read_write); file.SetLength(nLastVerifiedPos); } catch (const CIOFailureException& e) { AddDebugLogLineC(logAICHThread, wxT("IO failure while reading hashlist (Aborting): ") + e.what()); return; } AddDebugLogLineN( logAICHThread, wxT("Masterhashes of known files have been loaded.") ); } // Now we check that all files which are in the sharedfilelist have a // corresponding hash in our list. Those how don't are queued for hashing. theApp->sharedfiles->CheckAICHHashes(hashlist); } bool CAICHSyncTask::ConvertToKnown2ToKnown264() { // converting known2.met to known2_64.met to support large files // changing hashcount from uint16 to uint32 const CPath oldfullpath = CPath(thePrefs::GetConfigDir() + OLD_KNOWN2_MET_FILENAME); const CPath newfullpath = CPath(thePrefs::GetConfigDir() + KNOWN2_MET_FILENAME); if (newfullpath.FileExists() || !oldfullpath.FileExists()) { // In this case, there is nothing that we need to do. return false; } CFile oldfile; CFile newfile; if (!oldfile.Open(oldfullpath, CFile::read)) { AddDebugLogLineC(logAICHThread, wxT("Failed to open 'known2.met' file.")); // else -> known2.met also doesn't exists, so nothing to convert return false; } if (!newfile.Open(newfullpath, CFile::write_excl)) { AddDebugLogLineC(logAICHThread, wxT("Failed to create 'known2_64.met' file.")); return false; } AddLogLineN(CFormat(_("Converting old AICH hashsets in '%s' to 64b in '%s'.")) % OLD_KNOWN2_MET_FILENAME % KNOWN2_MET_FILENAME); try { newfile.WriteUInt8(KNOWN2_MET_VERSION); while (newfile.GetPosition() < oldfile.GetLength()) { CAICHHash aichHash(&oldfile); uint32 nHashCount = oldfile.ReadUInt16(); CScopedArray buffer(nHashCount * CAICHHash::GetHashSize()); oldfile.Read(buffer.get(), nHashCount * CAICHHash::GetHashSize()); newfile.Write(aichHash.GetRawHash(), CAICHHash::GetHashSize()); newfile.WriteUInt32(nHashCount); newfile.Write(buffer.get(), nHashCount * CAICHHash::GetHashSize()); } newfile.Flush(); } catch (const CEOFException& e) { AddDebugLogLineC(logAICHThread, wxT("Error reading old 'known2.met' file.") + e.what()); return false; } catch (const CIOFailureException& e) { AddDebugLogLineC(logAICHThread, wxT("IO error while converting 'known2.met' file: ") + e.what()); return false; } // FIXME LARGE FILES (uncomment) //DeleteFile(oldfullpath); return true; } //////////////////////////////////////////////////////////// // CCompletionTask CCompletionTask::CCompletionTask(const CPartFile* file) // GetPrintable is used to improve the readability of the log. : CThreadTask(wxT("Completing"), file->GetFullName().GetPrintable(), ETP_High), m_filename(file->GetFileName()), m_metPath(file->GetFullName()), m_category(file->GetCategory()), m_owner(file), m_error(false) { wxASSERT(m_filename.IsOk()); wxASSERT(m_metPath.IsOk()); wxASSERT(m_owner); } void CCompletionTask::Entry() { CPath targetPath; { #ifndef AMULE_DAEMON // Prevent the preference values from changing underneeth us. wxMutexGuiLocker guiLock; #else //#warning Thread-safety needed #endif targetPath = theApp->glob_prefs->GetCategory(m_category)->path; if (!targetPath.DirExists()) { targetPath = thePrefs::GetIncomingDir(); } } CPath dstName = m_filename.Cleanup(true, !PlatformSpecific::CanFSHandleSpecialChars(targetPath)); // Avoid empty filenames ... if (!dstName.IsOk()) { dstName = CPath(wxT("Unknown")); } if (m_filename != dstName) { AddLogLineC(CFormat(_("WARNING: The filename '%s' is invalid and has been renamed to '%s'.")) % m_filename % dstName); } // Avoid saving to an already existing filename CPath newName = targetPath.JoinPaths(dstName); for (unsigned count = 0; newName.FileExists(); ++count) { wxString postfix = CFormat(wxT("(%u)")) % count; newName = targetPath.JoinPaths(dstName.AddPostfix(postfix)); } if (newName != targetPath.JoinPaths(dstName)) { AddLogLineC(CFormat(_("WARNING: The file '%s' already exists, new file renamed to '%s'.")) % dstName % newName.GetFullName()); } // Move will handle dirs on the same partition, otherwise copy is needed. CPath partfilename = m_metPath.RemoveExt(); if (!CPath::RenameFile(partfilename, newName)) { if (!CPath::CloneFile(partfilename, newName, true)) { m_error = true; return; } if (!CPath::RemoveFile(partfilename)) { AddDebugLogLineC(logPartFile, CFormat(wxT("WARNING: Could not remove original '%s' after creating backup")) % partfilename); } } // Removes the various other data-files const wxChar* otherMetExt[] = { wxT(""), PARTMET_BAK_EXT, wxT(".seeds"), NULL }; for (size_t i = 0; otherMetExt[i]; ++i) { CPath toRemove = m_metPath.AppendExt(otherMetExt[i]); if (toRemove.FileExists()) { if (!CPath::RemoveFile(toRemove)) { AddDebugLogLineC(logPartFile, CFormat(wxT("WARNING: Failed to delete %s")) % toRemove); } } } m_newName = newName; } void CCompletionTask::OnExit() { // Notify the app that the completion has finished for this file. CCompletionEvent evt(m_error, m_owner, m_newName); wxPostEvent(wxTheApp, evt); } //////////////////////////////////////////////////////////// // CAllocateFileTask #ifdef HAVE_FALLOCATE # ifndef _GNU_SOURCE # define _GNU_SOURCE # endif # ifdef HAVE_FCNTL_H # include # endif # include #elif defined HAVE_SYS_FALLOCATE # include # include # include #elif defined HAVE_POSIX_FALLOCATE # define _XOPEN_SOURCE 600 # include # ifdef HAVE_FCNTL_H # include # endif #endif #include #include CAllocateFileTask::CAllocateFileTask(CPartFile *file, bool pause) // GetPrintable is used to improve the readability of the log. : CThreadTask(wxT("Allocating"), file->GetFullName().RemoveExt().GetPrintable(), ETP_High), m_file(file), m_pause(pause), m_result(ENOSYS) { wxASSERT(file != NULL); } void CAllocateFileTask::Entry() { if (m_file->GetFileSize() == 0) { m_result = 0; return; } uint64_t minFree = thePrefs::IsCheckDiskspaceEnabled() ? thePrefs::GetMinFreeDiskSpace() : 0; int64_t freeSpace = CPath::GetFreeSpaceAt(thePrefs::GetTempDir()); // Don't even try to allocate, if there's no space to complete the operation. if (freeSpace != wxInvalidOffset) { if ((uint64_t)freeSpace < m_file->GetFileSize() + minFree) { m_result = ENOSPC; return; } } CFile file; file.Open(m_file->GetFullName().RemoveExt(), CFile::read_write); #ifdef __WINDOWS__ try { // File is already created as non-sparse, so we only need to set the length. // This will fail to allocate the file e.g. under wine on linux/ext3, // but works with NTFS and FAT32. file.Seek(m_file->GetFileSize() - 1, wxFromStart); file.WriteUInt8(0); file.Close(); m_result = 0; } catch (const CSafeIOException&) { m_result = errno; } #else // Use kernel level routines if possible # ifdef HAVE_FALLOCATE m_result = fallocate(file.fd(), 0, 0, m_file->GetFileSize()); # elif defined HAVE_SYS_FALLOCATE m_result = syscall(SYS_fallocate, file.fd(), 0, (loff_t)0, (loff_t)m_file->GetFileSize()); if (m_result == -1) { m_result = errno; } # elif defined HAVE_POSIX_FALLOCATE // otherwise use glibc implementation, if available m_result = posix_fallocate(file.fd(), 0, m_file->GetFileSize()); # endif if (m_result != 0 && m_result != ENOSPC) { // If everything else fails, use slow-and-dirty method of allocating the file: write the whole file with zeroes. # define BLOCK_SIZE 1048576 /* Write 1 MB blocks */ void *zero = calloc(1, BLOCK_SIZE); if (zero != NULL) { try { uint64_t size = m_file->GetFileSize(); for (; size >= BLOCK_SIZE; size -= BLOCK_SIZE) { file.Write(zero, BLOCK_SIZE); } if (size > 0) { file.Write(zero, size); } file.Close(); m_result = 0; } catch (const CSafeIOException&) { m_result = errno; } free(zero); } else { m_result = ENOMEM; } } #endif if (file.IsOpened()) { file.Close(); } } void CAllocateFileTask::OnExit() { // Notify the app that the preallocation has finished for this file. CAllocFinishedEvent evt(m_file, m_pause, m_result); wxPostEvent(wxTheApp, evt); } //////////////////////////////////////////////////////////// // CHashingEvent DEFINE_LOCAL_EVENT_TYPE(MULE_EVT_HASHING) DEFINE_LOCAL_EVENT_TYPE(MULE_EVT_AICH_HASHING) CHashingEvent::CHashingEvent(wxEventType type, CKnownFile* result, const CKnownFile* owner) : wxEvent(-1, type), m_owner(owner), m_result(result) { } wxEvent* CHashingEvent::Clone() const { return new CHashingEvent(GetEventType(), m_result, m_owner); } const CKnownFile* CHashingEvent::GetOwner() const { return m_owner; } CKnownFile* CHashingEvent::GetResult() const { return m_result; } //////////////////////////////////////////////////////////// // CCompletionEvent DEFINE_LOCAL_EVENT_TYPE(MULE_EVT_FILE_COMPLETED) CCompletionEvent::CCompletionEvent(bool errorOccured, const CPartFile* owner, const CPath& fullPath) : wxEvent(-1, MULE_EVT_FILE_COMPLETED), m_fullPath(fullPath), m_owner(owner), m_error(errorOccured) { } wxEvent* CCompletionEvent::Clone() const { return new CCompletionEvent(m_error, m_owner, m_fullPath); } bool CCompletionEvent::ErrorOccured() const { return m_error; } const CPartFile* CCompletionEvent::GetOwner() const { return m_owner; } const CPath& CCompletionEvent::GetFullPath() const { return m_fullPath; } //////////////////////////////////////////////////////////// // CAllocFinishedEvent DEFINE_LOCAL_EVENT_TYPE(MULE_EVT_ALLOC_FINISHED) wxEvent *CAllocFinishedEvent::Clone() const { return new CAllocFinishedEvent(m_file, m_pause, m_result); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ThreadTasks.h0000644000175000017500000002345212611472361020666 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2006-2011 Mikkel Schubert ( xaignar@amule.org / http:://www.amule.org ) // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef TASKS_H #define TASKS_H #include "ThreadScheduler.h" #include class CKnownFile; class CPartFile; class CFileAutoClose; /** * This task performs MD4 and/or AICH hashings of a file, * depending on the type. For new shared files (using the * first constructor, with part == NULL), both MD4 and * AICH hashes are created. For incomplete partfiles * (rehashed due to changed timestamps), only MD4 hashing * is done. For complete partfiles, both MD4 and AICH * hashing is done. * * For existing shared files (using the second constructor), * only an AICH hash is created. * * @see CHashingEvent * @see CAICHSyncTask */ class CHashingTask : public CThreadTask { public: /** * Schedules a partfile or new shared file for hashing. * * @param path The full path, without filename. * @param filename The actual filename. * @param part Used to identify the owner in the event-handler (PartFiles only). * * CHashingEvents sent by this type of tasks have the id MULE_EVT_HASHING. * @see EVT_MULE_HASHING */ CHashingTask(const CPath& path, const CPath& filename, const CPartFile* part = NULL); /** * Schedules a KnownFile to have a AICH hashset created, used by CAICHSyncTask. * * CHashingEvents sent by this type of tasks have the id MULE_EVT_AICH_HASHING. * @see EVT_MULE_AICH_HASHING **/ CHashingTask(const CKnownFile* toAICHHash); protected: //! Specifies which hashes should be calculated when the task is executed. enum EHashes { EH_AICH = 1, EH_MD4 = 2 }; //! @see CThreadTask::OnLastTask virtual void OnLastTask(); //! @see CThreadTask::Entry virtual void Entry(); /** * Helper function for hashing a PARTSIZE chunk of a file. * * @param file The file to read from. * @param part The number of the part to hash. * @param owner The known- (or part) file representing that file. * @bool createAICH Specifies if AICH hash-sets should be created as well. * @return Returns false on read-errors, true otherwise. * * This function will create a MD4 hash and, if specified, a AICH hashset for * the next part of the file. This function makes the assumption that it wont * be called for closed or EOF files. */ bool CreateNextPartHash(CFileAutoClose& file, uint16 part, CKnownFile* owner, EHashes toHash); //! The path to the file to be hashed (shared or part), without filename. CPath m_path; //! The filename of the file to be hashed (filename only). CPath m_filename; //! Specifies which hash-types should be calculated EHashes m_toHash; //! If a partfile or an AICH hashing, this pointer stores it for callbacks. const CKnownFile* m_owner; private: void SetHashingProgress(uint16 part); }; /** * This task synchronizes the AICH hashlist. * * Shared files that are lacking a AICH-hash are scheduled for hashing. */ class CAICHSyncTask : public CThreadTask { public: CAICHSyncTask(); protected: /** See CThreadTask::Entry */ virtual void Entry(); /** Converts old known2.met files to known2_64.met files. */ bool ConvertToKnown2ToKnown264(); }; /** * This task performs the final tasks on a complete download. * * This includes finding a usable destination filename, removing * old data files and moving the part-file (potentially to a * different partition). **/ class CCompletionTask : public CThreadTask { public: /** * Creates a thread which will complete the given download. */ CCompletionTask(const CPartFile* file); protected: /** See CThreadTask::Entry */ virtual void Entry(); /** See CThreadTask::OnExit */ virtual void OnExit(); //! The target filename. CPath m_filename; //! The full path to the .met-file CPath m_metPath; //! The category of the download. uint8 m_category; //! Owner of the file, used when sending completion-event. const CPartFile* m_owner; //! Specifies if an error occured during completion. bool m_error; //! The resulting full path. File may be be renamed. CPath m_newName; }; /** * This task preallocates space for a newly created partfile. */ class CAllocateFileTask : public CThreadTask { public: /** Creates a thread that will allocate disk space for the full file. */ CAllocateFileTask(CPartFile *file, bool pause); protected: /** See CThreadTask::Entry */ virtual void Entry(); /** See CThreadTask::OnExit */ virtual void OnExit(); private: //! The partfile for which this task allocates space. CPartFile * m_file; //! Should this download start paused? bool m_pause; //! Result of the preallocation. long m_result; }; /** * This event is used to signal the completion of a hashing event. * * @see CHashingTask */ class CHashingEvent : public wxEvent { public: /** * @param type MULE_EVT_HASHING or MULE_EVT_AICH_HASHING. * @param result */ CHashingEvent(wxEventType type, CKnownFile* result, const CKnownFile* owner = NULL); /** @see wxEvent::Clone */ virtual wxEvent* Clone() const; /** Returns the owner (may be NULL) of the hashing result. */ const CKnownFile* GetOwner() const; /** Returns a CKnownfile used to store the results of the hashing. */ CKnownFile* GetResult() const; private: //! The file owner. const CKnownFile* m_owner; //! The hashing results. CKnownFile* m_result; }; /** * This event is sent when a part-file has been completed. */ class CCompletionEvent : public wxEvent { public: /** Constructor, see getter funtion for description of parameters. */ CCompletionEvent(bool errorOccured, const CPartFile* owner, const CPath& fullPath); /** @see wxEvent::Clone */ virtual wxEvent* Clone() const; /** Returns true if completion failed. */ bool ErrorOccured() const; /** Returns the owner of the file that was being completed. */ const CPartFile* GetOwner() const; /** Returns the full path to the completed file (empty on failure). */ const CPath& GetFullPath() const; private: //! The full path to the completed file. CPath m_fullPath; //! The owner of the completed .part file. const CPartFile* m_owner; //! Specifies if completion failed. bool m_error; }; /** * This event is sent when preallocation of a new partfile is finished. */ DECLARE_LOCAL_EVENT_TYPE(MULE_EVT_ALLOC_FINISHED, -1); class CAllocFinishedEvent : public wxEvent { public: /** Constructor, see getter function for description of parameters. */ CAllocFinishedEvent(CPartFile *file, bool pause, long result) : wxEvent(-1, MULE_EVT_ALLOC_FINISHED), m_file(file), m_pause(pause), m_result(result) {} /** @see wxEvent::Clone */ virtual wxEvent *Clone() const; /** Returns the partfile for which preallocation was requested. */ CPartFile *GetFile() const throw() { return m_file; } /** Returns whether the partfile should start paused. */ bool IsPaused() const throw() { return m_pause; } /** Returns the result of preallocation: true on success, false otherwise. */ bool Succeeded() const throw() { return m_result == 0; } /** Returns the result of the preallocation. */ long GetResult() const throw() { return m_result; } private: //! The partfile for which preallocation was requested. CPartFile * m_file; //! Should the download start paused? bool m_pause; //! Result of preallocation long m_result; }; DECLARE_LOCAL_EVENT_TYPE(MULE_EVT_HASHING, -1) DECLARE_LOCAL_EVENT_TYPE(MULE_EVT_AICH_HASHING, -1) DECLARE_LOCAL_EVENT_TYPE(MULE_EVT_FILE_COMPLETED, -1) typedef void (wxEvtHandler::*MuleHashingEventFunction)(CHashingEvent&); typedef void (wxEvtHandler::*MuleCompletionEventFunction)(CCompletionEvent&); typedef void (wxEvtHandler::*MuleAllocFinishedEventFunction)(CAllocFinishedEvent&); //! Event-handler for completed hashings of new shared files and partfiles. #define EVT_MULE_HASHING(func) \ DECLARE_EVENT_TABLE_ENTRY(MULE_EVT_HASHING, -1, -1, \ (wxObjectEventFunction) (wxEventFunction) \ wxStaticCastEvent(MuleHashingEventFunction, &func), (wxObject*) NULL), //! Event-handler for completed hashings of files that were missing a AICH hash. #define EVT_MULE_AICH_HASHING(func) \ DECLARE_EVENT_TABLE_ENTRY(MULE_EVT_AICH_HASHING, -1, -1, \ (wxObjectEventFunction) (wxEventFunction) \ wxStaticCastEvent(MuleHashingEventFunction, &func), (wxObject*) NULL), //! Event-handler for completion of part-files. #define EVT_MULE_FILE_COMPLETED(func) \ DECLARE_EVENT_TABLE_ENTRY(MULE_EVT_FILE_COMPLETED, -1, -1, \ (wxObjectEventFunction) (wxEventFunction) \ wxStaticCastEvent(MuleCompletionEventFunction, &func), (wxObject*) NULL), //! Event-handler for partfile preallocation finished events. #define EVT_MULE_ALLOC_FINISHED(func) \ DECLARE_EVENT_TABLE_ENTRY(MULE_EVT_ALLOC_FINISHED, -1, -1, \ (wxObjectEventFunction) (wxEventFunction) \ wxStaticCastEvent(MuleAllocFinishedEventFunction, &func), (wxObject*) NULL), #endif // TASKS_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/ThrottledSocket.h0000644000175000017500000000335312611472361021571 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef THROTTLEDSOCKET_H #define THROTTLEDSOCKET_H struct SocketSentBytes { bool success; uint32 sentBytesStandardPackets; uint32 sentBytesControlPackets; }; class ThrottledControlSocket { public: virtual ~ThrottledControlSocket() {} virtual SocketSentBytes SendControlData(uint32 maxNumberOfBytesToSend, uint32 minFragSize) = 0; }; class ThrottledFileSocket : public ThrottledControlSocket { public: virtual SocketSentBytes SendFileAndControlData(uint32 maxNumberOfBytesToSend, uint32 minFragSize) = 0; virtual uint32 GetLastCalledSend() = 0; virtual uint32 GetNeededBytes() = 0; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Timer.cpp0000644000175000017500000000765312611472361020071 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "Timer.h" // Interface declaration #include "GetTickCount.h" // Needed for GetTickCountFullRes #include "MuleThread.h" // Needed for CMuleThread //////////////////////// Timer Thread //////////////////// class CTimerThread : public CMuleThread { public: CTimerThread() : CMuleThread(wxTHREAD_JOINABLE) { } void* Entry() { CTimerEvent evt(m_id); uint32 lastEvent = GetTickCountFullRes(); do { // current time uint32 now = GetTickCountFullRes(); // This is typically zero, because lastEvent was already incremented by one period. sint32 delta = now - lastEvent; if (delta > 100 * m_period) { // We're way too far behind. Probably what really happened is // the system time was adjusted backwards a bit. So, // the calculation of delta has produced an absurd value. delta = 100 * m_period; lastEvent = now - delta; } // Wait one period (adjusted by the difference just calculated) sint32 timeout = ((m_period < delta) ? 0 : (m_period - delta)); // In normal operation, we will never actually acquire the // semaphore; we will always timeout. This is used to // implement a Sleep operation which the owning CTimer can // interrupt by posting to the semaphore. So, it follows // that if we do acquire the semaphore it means the owner // wants us to exit. if (m_sleepSemaphore.WaitTimeout(timeout) == wxSEMA_TIMEOUT) { // Increment for one event only, so no events can be lost. lastEvent += m_period; wxPostEvent(m_owner, evt); } else { break; } } while (!m_oneShot); return NULL; } sint32 m_period; bool m_oneShot; wxEvtHandler* m_owner; int m_id; wxSemaphore m_sleepSemaphore; }; ////////////////////// CTimer //////////////////////// CTimer::~CTimer() { Stop(); } CTimer::CTimer(wxEvtHandler* owner, int id) { wxASSERT(owner); m_owner = owner; m_id = id; m_thread = NULL; } bool CTimer::IsRunning() const { return (m_thread && m_thread->IsRunning()); } bool CTimer::Start(int millisecs, bool oneShot) { wxCHECK_MSG(m_id != -1, false, wxT("Invalid target-ID for timer-events.")); // Since this class generally matches wxTimer, calling // start on a running timer stops and then restarts it. Stop(); m_thread = new CTimerThread(); m_thread->m_period = millisecs; m_thread->m_oneShot = oneShot; m_thread->m_owner = m_owner; m_thread->m_id = m_id; if (m_thread->Create() == wxTHREAD_NO_ERROR) { if (m_thread->Run() == wxTHREAD_NO_ERROR) { return true; } } // Something went wrong ... m_thread->Stop(); delete m_thread; m_thread = NULL; return false; } void CTimer::Stop() { if (m_thread) { m_thread->m_sleepSemaphore.Post(); m_thread->Stop(); delete m_thread; m_thread = NULL; } } DEFINE_LOCAL_EVENT_TYPE(MULE_EVT_TIMER) CTimerEvent::CTimerEvent(int id) : wxEvent(id, MULE_EVT_TIMER) { } wxEvent* CTimerEvent::Clone() const { return new CTimerEvent(GetId()); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Timer.h0000644000175000017500000000436412611472361017532 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef TIMER_H #define TIMER_H class wxEvtHandler; class CTimerThread; #include /** * Replacement for wxTimer as it doesn't work on non-X builds */ class CTimer { public: CTimer(wxEvtHandler *owner, int timerid = -1); ~CTimer(); /** * Starts the timer. * * @param millisecs The frequency of events. * @param oneShot Specifies if only one event should be produced. */ bool Start(int millisecs, bool oneShot = false); /** * Returns true if the timer is running. */ bool IsRunning() const; /** * Stops the timer. * * Note that this does not delete the actual thread * immediatly, but no new events will be queued after * calling this function. */ void Stop(); private: CTimerThread* m_thread; wxEvtHandler* m_owner; int m_id; }; class CTimerEvent : public wxEvent { public: CTimerEvent(int id = 0); virtual wxEvent* Clone() const; }; DECLARE_LOCAL_EVENT_TYPE(MULE_EVT_TIMER, -1) typedef void (wxEvtHandler::*MuleTimerEventFunction)(CTimerEvent&); #define EVT_MULE_TIMER(id, func) \ DECLARE_EVENT_TABLE_ENTRY(MULE_EVT_TIMER, id, -1, \ (wxObjectEventFunction) (wxEventFunction) \ wxStaticCastEvent(MuleTimerEventFunction, &func), (wxObject*) NULL), #endif /* TIMER_H */ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/TransferWnd.cpp0000644000175000017500000003461312611472361021242 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "TransferWnd.h" // Interface declarations #include #include // This include must be before amuleDlg.h #ifdef __WINDOWS__ #include // Needed for windows compilation #endif #include "amuleDlg.h" // Needed for CamuleDlg #include "PartFile.h" // Needed for PR_LOW #include "DownloadQueue.h" // Needed for CDownloadQueue #include "CatDialog.h" // Needed for CCatDialog #include "DownloadListCtrl.h" // Needed for CDownloadListCtrl #include "SourceListCtrl.h" // Needed for CSourceListCtrl #include "amule.h" // Needed for theApp #include "muuli_wdr.h" // Needed for ID_CATEGORIES #include "SearchDlg.h" // Needed for CSearchDlg->UpdateCatChoice() #include "MuleNotebook.h" #include "Preferences.h" #include "Statistics.h" // Needed for theStats #include "SharedFileList.h" // Needed for CSharedFileList #include "GuiEvents.h" // Needed for CoreNotify_* BEGIN_EVENT_TABLE(CTransferWnd, wxPanel) EVT_RIGHT_DOWN(CTransferWnd::OnNMRclickDLtab) EVT_NOTEBOOK_PAGE_CHANGED(ID_CATEGORIES, CTransferWnd::OnCategoryChanged) EVT_SPLITTER_SASH_POS_CHANGING(ID_DOWNLOADSSPLATTER, CTransferWnd::OnSashPositionChanging) EVT_BUTTON(ID_BTNCLRCOMPL, CTransferWnd::OnBtnClearDownloads) EVT_BUTTON(ID_CLIENTTOGGLE, CTransferWnd::OnToggleClientList) EVT_MENU_RANGE(MP_CAT_SET0, MP_CAT_SET0 + 15, CTransferWnd::OnSetDefaultCat) EVT_MENU(MP_CAT_ADD, CTransferWnd::OnAddCategory) EVT_MENU(MP_CAT_EDIT, CTransferWnd::OnEditCategory) EVT_MENU(MP_CAT_REMOVE, CTransferWnd::OnDelCategory) EVT_MENU(MP_PRIOLOW, CTransferWnd::OnSetCatPriority) EVT_MENU(MP_PRIONORMAL, CTransferWnd::OnSetCatPriority) EVT_MENU(MP_PRIOHIGH, CTransferWnd::OnSetCatPriority) EVT_MENU(MP_PRIOAUTO, CTransferWnd::OnSetCatPriority) EVT_MENU(MP_PAUSE, CTransferWnd::OnSetCatStatus) EVT_MENU(MP_STOP, CTransferWnd::OnSetCatStatus) EVT_MENU(MP_CANCEL, CTransferWnd::OnSetCatStatus) EVT_MENU(MP_RESUME, CTransferWnd::OnSetCatStatus) END_EVENT_TABLE() CTransferWnd::CTransferWnd( wxWindow* pParent ) : wxPanel( pParent, -1 ) { wxSizer* content = transferDlg(this, true); content->Show(this, true); downloadlistctrl = CastChild( wxT("downloadList"), CDownloadListCtrl ); clientlistctrl = CastChild( ID_CLIENTLIST, CSourceListCtrl ); m_dlTab = CastChild( ID_CATEGORIES, CMuleNotebook ); // Set disabled image for clear complete button CastChild(ID_BTNCLRCOMPL, wxBitmapButton)->SetBitmapDisabled(amuleDlgImages(34)); // We want to use our own popup m_dlTab->SetPopupHandler( this ); // Set default category theApp->glob_prefs->GetCategory(0)->title = GetCatTitle(thePrefs::GetAllcatFilter()); theApp->glob_prefs->GetCategory(0)->path = thePrefs::GetIncomingDir(); // Show default + userdefined categories for ( uint32 i = 0; i < theApp->glob_prefs->GetCatCount(); i++ ) { m_dlTab->AddPage( new wxPanel(m_dlTab), theApp->glob_prefs->GetCategory(i)->title ); } m_menu = NULL; m_splitter = 0; wxConfigBase *config = wxConfigBase::Get(); // Check if the clientlist is hidden bool show = true; config->Read( wxT("/GUI/TransferWnd/ShowClientList"), &show, true ); clientlistctrl->SetShowing(show); // Load the last used splitter position m_splitter = config->Read( wxT("/GUI/TransferWnd/Splitter"), 463l ); } CTransferWnd::~CTransferWnd() { wxConfigBase *config = wxConfigBase::Get(); if ( !clientlistctrl->GetShowing() ) { // Save the splitter position config->Write( wxT("/GUI/TransferWnd/Splitter"), m_splitter ); // Save the visible status of the list config->Write( wxT("/GUI/TransferWnd/ShowClientList"), false ); } else { wxSplitterWindow* splitter = CastChild( wxT("splitterWnd"), wxSplitterWindow ); // Save the splitter position config->Write( wxT("/GUI/TransferWnd/Splitter"), splitter->GetSashPosition() ); // Save the visible status of the list config->Write( wxT("/GUI/TransferWnd/ShowClientList"), true ); } } void CTransferWnd::AddCategory( Category_Struct* category ) { // Add the initial page m_dlTab->AddPage( new wxPanel(m_dlTab), category->title ); // Update the title UpdateCategory( m_dlTab->GetPageCount() - 1 ); theApp->amuledlg->m_searchwnd->UpdateCatChoice(); } void CTransferWnd::UpdateCategory(int index) { uint32 nrCats = theApp->glob_prefs->GetCatCount(); std::vector files, downloads; bool showCatTabInfos = thePrefs::ShowCatTabInfos(); if (showCatTabInfos) { files.insert(files.begin(), nrCats, 0); downloads.insert(downloads.begin(), nrCats, 0); #ifdef CLIENT_GUI for (CDownQueueRem::const_iterator it = theApp->downloadqueue->begin(); it != theApp->downloadqueue->end(); ++it) { CPartFile *cur_file = it->second; #else std::vector fileList; theApp->downloadqueue->CopyFileList(fileList, true); int size = fileList.size(); for (int i = 0; i < size; ++i ) { CPartFile *cur_file = fileList[i]; #endif bool downloading = cur_file->GetTransferingSrcCount() > 0; int fileCat = cur_file->GetCategory(); if ((index == -1 || fileCat == index) && cur_file->CheckShowItemInGivenCat(fileCat)) { files[fileCat]++; if (downloading) { downloads[fileCat]++; } } if (index == -1 && fileCat > 0 && cur_file->CheckShowItemInGivenCat(0)) { files[0]++; if (downloading) { downloads[0]++; } } } } int start, end; if (index == -1) { start = 0; end = nrCats - 1; } else { start = index; end = index; } for (int i = start; i <= end; i++) { wxString label = theApp->glob_prefs->GetCategory(i)->title; if (showCatTabInfos) { label += CFormat(wxT(" (%u/%u)")) % downloads[i] % files[i]; } m_dlTab->SetPageText(i, label); } } void CTransferWnd::OnSetCatStatus( wxCommandEvent& event ) { if ( event.GetId() == MP_CANCEL ) { if ( wxMessageBox(_("Are you sure you wish to cancel and delete all files in this category?"),_("Confirmation Required"), wxYES_NO|wxCENTRE|wxICON_EXCLAMATION, this) == wxNO) { return; } } CoreNotify_Download_Set_Cat_Status( m_dlTab->GetSelection(), event.GetId() ); } void CTransferWnd::OnSetCatPriority( wxCommandEvent& event ) { int priority = 0; switch ( event.GetId() ) { case MP_PRIOLOW: priority = PR_LOW; break; case MP_PRIONORMAL: priority = PR_NORMAL; break; case MP_PRIOHIGH: priority = PR_HIGH; break; case MP_PRIOAUTO: priority = PR_AUTO; break; default: return; } CoreNotify_Download_Set_Cat_Prio( m_dlTab->GetSelection(), priority ); } void CTransferWnd::OnAddCategory(wxCommandEvent& WXUNUSED(event)) { if (theApp->glob_prefs->GetCatCount() >= 99) { wxMessageBox(_("Only 99 categories are supported."), _("Too many categories!"), wxOK | wxICON_EXCLAMATION); return; } CCatDialog dialog( this, // Allow browse? #ifdef CLIENT_GUI false #else true #endif ); dialog.ShowModal(); } void CTransferWnd::OnDelCategory(wxCommandEvent& WXUNUSED(event)) { RemoveCategory(m_dlTab->GetSelection()); } void CTransferWnd::RemoveCategory(int index) { if ( index > 0 ) { theApp->downloadqueue->ResetCatParts(index); theApp->glob_prefs->RemoveCat(index); RemoveCategoryPage(index); if ( theApp->glob_prefs->GetCatCount() == 1 ) { thePrefs::SetAllcatFilter( acfAll ); } theApp->glob_prefs->SaveCats(); theApp->amuledlg->m_searchwnd->UpdateCatChoice(); } } void CTransferWnd::RemoveCategoryPage(int index) { m_dlTab->RemovePage(index); m_dlTab->SetSelection(0); downloadlistctrl->ChangeCategory(0); } void CTransferWnd::OnEditCategory( wxCommandEvent& WXUNUSED(event) ) { CCatDialog dialog( this, // Allow browse? #ifdef CLIENT_GUI false #else true #endif , m_dlTab->GetSelection()); dialog.ShowModal(); } void CTransferWnd::OnSetDefaultCat( wxCommandEvent& event ) { thePrefs::SetAllcatFilter( static_cast(event.GetId() - MP_CAT_SET0) ); theApp->glob_prefs->GetCategory(0)->title = GetCatTitle( thePrefs::GetAllcatFilter() ); UpdateCategory( 0 ); downloadlistctrl->ChangeCategory( 0 ); theApp->glob_prefs->SaveCats(); downloadlistctrl->SortList(); } void CTransferWnd::OnCategoryChanged(wxNotebookEvent& evt) { // First remove currently showing sources (switching cat will deselect all) CKnownFileVector filesVector; clientlistctrl->ShowSources(filesVector); // Then change cat downloadlistctrl->ChangeCategory(evt.GetSelection()); downloadlistctrl->SortList(); } void CTransferWnd::OnNMRclickDLtab(wxMouseEvent& evt) { // Only handle events from the category-notebook if ( evt.GetEventObject() != (wxObject*)m_dlTab ) return; if ( m_dlTab->GetSelection() == -1 ) { return; } // Avoid opening another menu when it's already open if ( m_menu == NULL ) { m_menu = new wxMenu( _("Category") ); if ( m_dlTab->GetSelection() == 0 ) { wxMenu* catmenu = new wxMenu(); catmenu->Append( MP_CAT_SET0, _("All") ); catmenu->Append( MP_CAT_SET0 + 1, _("All others") ); catmenu->AppendSeparator(); catmenu->Append( MP_CAT_SET0 + 2, _("Incomplete") ); catmenu->Append( MP_CAT_SET0 + 3, _("Completed") ); catmenu->Append( MP_CAT_SET0 + 4, _("Waiting") ); catmenu->Append( MP_CAT_SET0 + 5, _("Downloading") ); catmenu->Append( MP_CAT_SET0 + 6, _("Erroneous") ); catmenu->Append( MP_CAT_SET0 + 7, _("Paused") ); catmenu->Append( MP_CAT_SET0 + 8, _("Stopped") ); catmenu->Append( MP_CAT_SET0 + 15, _("Active") ); catmenu->AppendSeparator(); catmenu->Append( MP_CAT_SET0 + 9, _("Video") ); catmenu->Append( MP_CAT_SET0 + 10, _("Audio") ); catmenu->Append( MP_CAT_SET0 + 11, _("Archive") ); catmenu->Append( MP_CAT_SET0 + 12, _("CD-Images") ); catmenu->Append( MP_CAT_SET0 + 13, _("Pictures") ); catmenu->Append( MP_CAT_SET0 + 14, _("Text") ); m_menu->Append(0, _("Select view filter"), catmenu); } m_menu->Append( MP_CAT_ADD, _("Add category") ); if ( m_dlTab->GetSelection() ) { m_menu->Append(MP_CAT_EDIT,_("Edit category")); m_menu->Append(MP_CAT_REMOVE, _("Remove category")); } m_menu->AppendSeparator(); m_menu->Append( MP_CANCEL, _("Cancel")); m_menu->Append( MP_STOP, _("&Stop")); m_menu->Append( MP_PAUSE, _("&Pause")); m_menu->Append( MP_RESUME, _("&Resume")); PopupMenu(m_menu, evt.GetPosition()); delete m_menu; m_menu = NULL; } } void CTransferWnd::OnBtnClearDownloads( wxCommandEvent& WXUNUSED(evt) ) { downloadlistctrl->Freeze(); downloadlistctrl->ClearCompleted(); downloadlistctrl->Thaw(); } void CTransferWnd::Prepare() { wxSplitterWindow* splitter = CastChild( wxT("splitterWnd"), wxSplitterWindow ); int height = splitter->GetSize().GetHeight(); int header_height = s_clientlistHeader->GetSize().GetHeight(); if ( m_splitter ) { // Some sanity checking if ( m_splitter < s_splitterMin ) { m_splitter = s_splitterMin; } else if ( m_splitter > height - header_height * 2 ) { m_splitter = height - header_height * 2; } splitter->SetSashPosition( m_splitter ); m_splitter = 0; } if ( !clientlistctrl->GetShowing() ) { // use a toggle event to close it (calculate size, change button) clientlistctrl->SetShowing( true ); // so it will be toggled to false wxCommandEvent evt1; OnToggleClientList( evt1 ); } } void CTransferWnd::OnToggleClientList(wxCommandEvent& WXUNUSED(evt)) { wxSplitterWindow* splitter = CastChild( wxT("splitterWnd"), wxSplitterWindow ); wxBitmapButton* button = CastChild( ID_CLIENTTOGGLE, wxBitmapButton ); if ( !clientlistctrl->GetShowing() ) { splitter->SetSashPosition( m_splitter ); m_splitter = 0; clientlistctrl->SetShowing( true ); button->SetBitmapLabel( amuleDlgImages( 10 ) ); button->SetBitmapFocus( amuleDlgImages( 10 ) ); button->SetBitmapSelected( amuleDlgImages( 10 ) ); button->SetBitmapHover( amuleDlgImages( 10 ) ); } else { clientlistctrl->SetShowing( false ); m_splitter = splitter->GetSashPosition(); // Add the height of the listctrl to the top-window int height = clientlistctrl->GetSize().GetHeight() + splitter->GetWindow1()->GetSize().GetHeight(); splitter->SetSashPosition( height ); button->SetBitmapLabel( amuleDlgImages( 11 ) ); button->SetBitmapFocus( amuleDlgImages( 11 ) ); button->SetBitmapSelected( amuleDlgImages( 11 ) ); button->SetBitmapHover( amuleDlgImages( 11 ) ); } } void CTransferWnd::OnSashPositionChanging(wxSplitterEvent& evt) { if ( evt.GetSashPosition() < s_splitterMin ) { evt.SetSashPosition( s_splitterMin ); } else { wxSplitterWindow* splitter = wxStaticCast( evt.GetEventObject(), wxSplitterWindow); wxCHECK_RET(splitter, wxT("ERROR: NULL splitter in CTransferWnd::OnSashPositionChanging")); int height = splitter->GetSize().GetHeight(); int header_height = s_clientlistHeader->GetSize().GetHeight(); int mousey = wxGetMousePosition().y - splitter->GetScreenRect().GetTop(); if ( !clientlistctrl->GetShowing() ) { // lower window hidden if ( height - mousey < header_height * 2 ) { // no moving down if already hidden evt.Veto(); } else { // show it m_splitter = mousey; // prevent jumping if it was minimized and is then shown by dragging the sash wxCommandEvent event; OnToggleClientList( event ); } } else { // lower window showing if ( height - mousey < header_height * 2 ) { // hide it wxCommandEvent event; OnToggleClientList( event ); } else { // normal resize // If several events queue up, setting the sash to the current mouse position // will speed up things and make sash moving more smoothly. evt.SetSashPosition( mousey ); } } } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/TransferWnd.h0000644000175000017500000001107312611472361020702 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef TRANSFERWND_H #define TRANSFERWND_H #include // Needed for wxPanel #include // needed for wxBookCtrlEvent in wx 2.8 #include "Types.h" // Needed for uint32 #include "OtherStructs.h" class CSourceListCtrl; class CDownloadListCtrl; class CMuleNotebook; class wxListCtrl; class wxSplitterEvent; class wxCommandEvent; class wxMouseEvent; class wxEvent; class wxMenu; /** * This class takes care of managing the lists and other controls contained * in the transfer-window. It's primary function is to manage the user-defined * categories. */ class CTransferWnd : public wxPanel { public: /** * Constructor. */ CTransferWnd(wxWindow* pParent = NULL); /** * Destructor. */ ~CTransferWnd(); /** * Adds the specified category to the end of the list. * * @param category A pointer to the new category. * * This function should be called after a category has been * added to the lists of categories. The new category is assumed * to be the last, and thus will be appended to the end of the tabs * on the category-notebook. */ void AddCategory( Category_Struct* category ); /** * Updates the title of the specified category. * * @param index The index of the category on the notebook. -1 will update all categories. */ void UpdateCategory(int index); /** * Remove category */ void RemoveCategory(int index); void RemoveCategoryPage(int index); /** * Helper-function which updates the displayed titles of all existing categories. */ void UpdateCatTabTitles() { UpdateCategory(-1); } /** * Call this function before displaying the dialog. * * This functions does a few tasks to ensure that the dialog is looking the right way. */ void Prepare(); //! Pointer to the download-queue. CDownloadListCtrl* downloadlistctrl; //! Pointer to the list of clients. CSourceListCtrl* clientlistctrl; private: //! Contains the current (or last if the clientlist is hidden) position of the splitter. int m_splitter; //! Minimum position of splitter bar static const int s_splitterMin = 90; /** * Event-handler for the set status by category menu-item. */ void OnSetCatStatus( wxCommandEvent& event ); /** * Event-handler for the set priority by category menu-item. */ void OnSetCatPriority( wxCommandEvent& event ); /** * Event-handler for the "Add Category" menu-item. */ void OnAddCategory( wxCommandEvent& event ); /** * Event-handler for the "Delete Category" menu-item. */ void OnDelCategory( wxCommandEvent& event ); /** * Event-handler for the "Edit Category" menu-item. */ void OnEditCategory( wxCommandEvent& event ); /** * Event-handler for manipulating the default category. */ void OnSetDefaultCat( wxCommandEvent& event ); /** * Event-handler for the "Clear Completed" button. */ void OnBtnClearDownloads(wxCommandEvent &evt); /** * Event-handler for changing categories. */ void OnCategoryChanged(wxBookCtrlEvent& evt); /** * Event-handler for displaying the category-popup menu. */ void OnNMRclickDLtab(wxMouseEvent& evt); /** * Event-handler for the list-toggle button. */ void OnToggleClientList( wxCommandEvent& event ); /** * Event-handler for changes in the sash divider position. */ void OnSashPositionChanging(wxSplitterEvent& evt); //! Variable used to ensure that the category menu doesn't get displayed twice. wxMenu* m_menu; //! Pointer to the category tabs. CMuleNotebook* m_dlTab; DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/Types.h0000644000175000017500000001275612611472361017562 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef TYPES_H #define TYPES_H #ifndef USE_STD_STRING #include // Needed for wxString and wxEmptyString #endif #include // Needed for std::list #include // Needed for std::vector #ifndef _MSC_VER #ifndef __STDC_FORMAT_MACROS #define __STDC_FORMAT_MACROS #endif #include #define LONGLONG(x) x##ll #define ULONGLONG(x) x##llu #else typedef unsigned __int8 byte; typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; typedef unsigned __int64 uint64_t; typedef signed __int8 int8_t; typedef signed __int16 int16_t; typedef signed __int32 int32_t; typedef signed __int64 int64_t; #define LONGLONG(x) x##i64 #define ULONGLONG(x) x##ui64 #endif // These are _MSC_VER defines used in eMule. They should // not be used in aMule, instead, use this table to // find the type to use in order to get the desired // effect. ////////////////////////////////////////////////// // Name // Type To Use In Amule // ////////////////////////////////////////////////// // BOOL // bool // // WORD // uint16 // // INT // int32 // // UINT // uint32 // // UINT_PTR // uint32* // // PUINT // uint32* // // DWORD // uint32 // // LONG // long // // ULONG // unsigned long // // LONGLONG // long long // // ULONGLONG // unsigned long long // // LPBYTE // char* // // VOID // void // // PVOID // void* // // LPVOID // void* // // LPCVOID // const void* // // CHAR // char // // LPSTR // char* // // LPCSTR // const char* // // TCHAR // char // // LPTSTR // char* // // LPCTSTR // const char* // // WCHAR // wchar_t // // LPWSTR // wchar_t* // // LPCWSTR // const wchar_t* // // WPARAM // uint16 // // LPARAM // uint32 // // POINT // wxPoint // ////////////////////////////////////////////////// /* * Backwards compatibility with emule. * Note that the int* types are indeed unsigned. */ typedef uint8_t int8; typedef uint8_t uint8; typedef uint16_t int16; typedef uint16_t uint16; typedef uint32_t int32; typedef uint32_t uint32; typedef uint64_t int64; typedef uint64_t uint64; typedef int8_t sint8; typedef int16_t sint16; typedef int32_t sint32; typedef int64_t sint64; typedef uint8_t byte; class CKnownFile; //! Various common list-types. //@{ #ifndef USE_STD_STRING typedef std::list CStringList; #endif typedef std::list CKnownFilePtrList; //@} typedef std::vector ArrayOfUInts8; typedef std::vector ArrayOfUInts16; typedef std::vector ArrayOfUInts32; typedef std::vector ArrayOfUInts64; typedef std::list ListOfUInts32; /* This is the Evil Void String For Returning On Const References From Hell */ // IT MEANS I WANT TO USE IT EVERYWHERE. DO NOT MOVE IT. // THE FACT SOMETHING IS USED IN JUST ONE PLACE DOESN'T MEAN IT HAS // TO BE MOVED TO THAT PLACE. I MIGHT NEED IT ELSEWHERE LATER. // #ifndef USE_STD_STRING static const wxString EmptyString = wxEmptyString; #endif #ifndef __cplusplus typedef int bool; #endif #ifdef _WIN32 // Used in non-wx-apps too (ed2k), so don't use __WINDOWS__ here ! #ifndef NOMINMAX #define NOMINMAX #endif #include // Needed for RECT // Do_not_auto_remove // Windows compilers don't have these constants #ifndef W_OK enum { F_OK = 0, // test for existence X_OK = 1, // execute permission W_OK = 2, // write R_OK = 4 // read }; #endif // W_OK #ifdef __WINDOWS__ #include // Do_not_auto_remove #endif #undef GetUserName #else // _WIN32 typedef struct sRECT { uint32 left; uint32 top; uint32 right; uint32 bottom; } RECT; #endif /* _WIN32 */ #endif /* TYPES_H */ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/UPnPBase.cpp0000644000175000017500000013131612611472361020420 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifdef HAVE_CONFIG_H # include "config.h" // Needed for ENABLE_UPNP #endif #ifdef ENABLE_UPNP // check for broken Debian-hacked libUPnP #include #ifdef STRING_H // defined in UpnpString.h Yes, I would have liked UPNPSTRING_H much better. #define BROKEN_DEBIAN_LIBUPNP #endif #include "UPnPBase.h" #include // For transform() #ifdef BROKEN_DEBIAN_LIBUPNP #define GET_UPNP_STRING(a) UpnpString_get_String(a) #else #define GET_UPNP_STRING(a) (a) #endif std::string stdEmptyString; const char s_argument[] = "argument"; const char s_argumentList[] = "argumentList"; const char s_action[] = "action"; const char s_actionList[] = "actionList"; const char s_allowedValue[] = "allowedValue"; const char s_allowedValueList[] = "allowedValueList"; const char s_stateVariable[] = "stateVariable"; const char s_serviceStateTable[] = "serviceStateTable"; const char s_service[] = "service"; const char s_serviceList[] = "serviceList"; const char s_device[] = "device"; const char s_deviceList[] = "deviceList"; /** * Case insensitive std::string comparison */ bool stdStringIsEqualCI(const std::string &s1, const std::string &s2) { std::string ns1(s1); std::string ns2(s2); std::transform(ns1.begin(), ns1.end(), ns1.begin(), tolower); std::transform(ns2.begin(), ns2.end(), ns2.begin(), tolower); return ns1 == ns2; } CUPnPPortMapping::CUPnPPortMapping( int port, const std::string &protocol, bool enabled, const std::string &description) : m_port(), m_protocol(protocol), m_enabled(enabled ? "1" : "0"), m_description(description), m_key() { std::ostringstream oss; oss << port; m_port = oss.str(); m_key = m_protocol + m_port; } namespace UPnP { static const std::string ROOT_DEVICE("upnp:rootdevice"); namespace Device { static const std::string IGW("urn:schemas-upnp-org:device:InternetGatewayDevice:1"); static const std::string WAN("urn:schemas-upnp-org:device:WANDevice:1"); static const std::string WAN_Connection("urn:schemas-upnp-org:device:WANConnectionDevice:1"); static const std::string LAN("urn:schemas-upnp-org:device:LANDevice:1"); } namespace Service { static const std::string Layer3_Forwarding("urn:schemas-upnp-org:service:Layer3Forwarding:1"); static const std::string WAN_Common_Interface_Config("urn:schemas-upnp-org:service:WANCommonInterfaceConfig:1"); static const std::string WAN_IP_Connection("urn:schemas-upnp-org:service:WANIPConnection:1"); static const std::string WAN_PPP_Connection("urn:schemas-upnp-org:service:WANPPPConnection:1"); } static std::string ProcessErrorMessage( const std::string &messsage, int errorCode, const DOMString errorString, IXML_Document *doc) { std::ostringstream msg; if (errorString == NULL || *errorString == 0) { errorString = "Not available"; } if (errorCode > 0) { msg << "Error: " << messsage << ": Error code :'"; if (doc) { CUPnPError e(doc); msg << e.getErrorCode() << "', Error description :'" << e.getErrorDescription() << "'."; } else { msg << errorCode << "', Error description :'" << errorString << "'."; } AddDebugLogLineN(logUPnP, msg); } else { msg << "Error: " << messsage << ": UPnP SDK error: " << UpnpGetErrorMessage(errorCode) << " (" << errorCode << ")."; AddDebugLogLineN(logUPnP, msg); } return msg.str(); } static void ProcessActionResponse( IXML_Document *RespDoc, const std::string &actionName) { std::ostringstream msg; msg << "Response: "; IXML_Element *root = IXML::Document::GetRootElement(RespDoc); IXML_Element *child = IXML::Element::GetFirstChild(root); if (child) { while (child) { const DOMString childTag = IXML::Element::GetTag(child); std::string childValue = IXML::Element::GetTextValue(child); msg << "\n " << childTag << "='" << childValue << "'"; child = IXML::Element::GetNextSibling(child); } } else { msg << "\n Empty response for action '" << actionName << "'."; } AddDebugLogLineN(logUPnP, msg); } } /* namespace UPnP */ namespace IXML { /*! * \brief Returns the root node of a given document. */ IXML_Element *Document::GetRootElement(IXML_Document *doc) { return reinterpret_cast(ixmlNode_getFirstChild(&doc->n)); } namespace Element { /*! * \brief Returns the first child of a given element. */ IXML_Element *GetFirstChild(IXML_Element *parent) { return reinterpret_cast(ixmlNode_getFirstChild(&parent->n)); } /*! * \brief Returns the next sibling of a given child. */ IXML_Element *GetNextSibling(IXML_Element *child) { return reinterpret_cast(ixmlNode_getNextSibling(&child->n)); } /*! * \brief Returns the element tag (name) */ const DOMString GetTag(IXML_Element *element) { return ixmlNode_getNodeName(&element->n); } /*! * \brief Returns the TEXT node value of the current node. */ const std::string GetTextValue(IXML_Element *element) { if (!element) { return stdEmptyString; } IXML_Node *text = ixmlNode_getFirstChild(&element->n); const DOMString s = ixmlNode_getNodeValue(text); std::string ret; if (s) { ret = s; } return ret; } /*! * \brief Returns the TEXT node value of the first child matching tag. */ const std::string GetChildValueByTag(IXML_Element *element, const DOMString tag) { return GetTextValue(GetFirstChildByTag(element, tag)); } /*! * \brief Returns the first child element that matches the requested tag or * NULL if not found. */ IXML_Element *GetFirstChildByTag(IXML_Element *element, const DOMString tag) { if (!element || !tag) { return NULL; } IXML_Node *child = ixmlNode_getFirstChild(&element->n); const DOMString childTag = ixmlNode_getNodeName(child); while(child && childTag && strcmp(tag, childTag)) { child = ixmlNode_getNextSibling(child); childTag = ixmlNode_getNodeName(child); } return reinterpret_cast(child); } /*! * \brief Returns the next sibling element that matches the requested tag. Should be * used with the return value of GetFirstChildByTag(). */ IXML_Element *GetNextSiblingByTag(IXML_Element *element, const DOMString tag) { if (!element || !tag) { return NULL; } IXML_Node *child = &element->n; const DOMString childTag = NULL; do { child = ixmlNode_getNextSibling(child); childTag = ixmlNode_getNodeName(child); } while(child && childTag && strcmp(tag, childTag)); return reinterpret_cast(child); } const std::string GetAttributeByTag(IXML_Element *element, const DOMString tag) { IXML_NamedNodeMap *NamedNodeMap = ixmlNode_getAttributes(&element->n); IXML_Node *attribute = ixmlNamedNodeMap_getNamedItem(NamedNodeMap, tag); const DOMString s = ixmlNode_getNodeValue(attribute); std::string ret; if (s) { ret = s; } ixmlNamedNodeMap_free(NamedNodeMap); return ret; } } /* namespace Element */ } /* namespace IXML */ CUPnPError::CUPnPError(IXML_Document *errorDoc) : m_root (IXML::Document::GetRootElement(errorDoc)), m_ErrorCode (IXML::Element::GetChildValueByTag(m_root, "errorCode")), m_ErrorDescription(IXML::Element::GetChildValueByTag(m_root, "errorDescription")) { } CUPnPArgument::CUPnPArgument( const CUPnPControlPoint &WXUNUSED(upnpControlPoint), IXML_Element *argument, const std::string &WXUNUSED(SCPDURL)) : m_name (IXML::Element::GetChildValueByTag(argument, "name")), m_direction (IXML::Element::GetChildValueByTag(argument, "direction")), m_retval (IXML::Element::GetFirstChildByTag(argument, "retval")), m_relatedStateVariable(IXML::Element::GetChildValueByTag(argument, "relatedStateVariable")) { std::ostringstream msg; msg << "\n Argument:" << "\n name: " << m_name << "\n direction: " << m_direction << "\n retval: " << m_retval << "\n relatedStateVariable: " << m_relatedStateVariable; AddDebugLogLineN(logUPnP, msg); } CUPnPAction::CUPnPAction( const CUPnPControlPoint &upnpControlPoint, IXML_Element *action, const std::string &SCPDURL) : m_ArgumentList(upnpControlPoint, action, SCPDURL), m_name(IXML::Element::GetChildValueByTag(action, "name")) { std::ostringstream msg; msg << "\n Action:" << "\n name: " << m_name; AddDebugLogLineN(logUPnP, msg); } CUPnPAllowedValue::CUPnPAllowedValue( const CUPnPControlPoint &WXUNUSED(upnpControlPoint), IXML_Element *allowedValue, const std::string &WXUNUSED(SCPDURL)) : m_allowedValue(IXML::Element::GetTextValue(allowedValue)) { std::ostringstream msg; msg << "\n AllowedValue:" << "\n allowedValue: " << m_allowedValue; AddDebugLogLineN(logUPnP, msg); } CUPnPStateVariable::CUPnPStateVariable( const CUPnPControlPoint &upnpControlPoint, IXML_Element *stateVariable, const std::string &SCPDURL) : m_AllowedValueList(upnpControlPoint, stateVariable, SCPDURL), m_name (IXML::Element::GetChildValueByTag(stateVariable, "name")), m_dataType (IXML::Element::GetChildValueByTag(stateVariable, "dataType")), m_defaultValue(IXML::Element::GetChildValueByTag(stateVariable, "defaultValue")), m_sendEvents (IXML::Element::GetAttributeByTag (stateVariable, "sendEvents")) { std::ostringstream msg; msg << "\n StateVariable:" << "\n name: " << m_name << "\n dataType: " << m_dataType << "\n defaultValue: " << m_defaultValue << "\n sendEvents: " << m_sendEvents; AddDebugLogLineN(logUPnP, msg); } CUPnPSCPD::CUPnPSCPD( const CUPnPControlPoint &upnpControlPoint, IXML_Element *scpd, const std::string &SCPDURL) : m_ActionList(upnpControlPoint, scpd, SCPDURL), m_ServiceStateTable(upnpControlPoint, scpd, SCPDURL), m_SCPDURL(SCPDURL) { } CUPnPArgumentValue::CUPnPArgumentValue() : m_argument(), m_value() { } CUPnPArgumentValue::CUPnPArgumentValue( const std::string &argument, const std::string &value) : m_argument(argument), m_value(value) { } CUPnPService::CUPnPService( const CUPnPControlPoint &upnpControlPoint, IXML_Element *service, const std::string &URLBase) : m_UPnPControlPoint(upnpControlPoint), m_serviceType(IXML::Element::GetChildValueByTag(service, "serviceType")), m_serviceId (IXML::Element::GetChildValueByTag(service, "serviceId")), m_SCPDURL (IXML::Element::GetChildValueByTag(service, "SCPDURL")), m_controlURL (IXML::Element::GetChildValueByTag(service, "controlURL")), m_eventSubURL(IXML::Element::GetChildValueByTag(service, "eventSubURL")), m_timeout(1801), m_SCPD(NULL) { std::ostringstream msg; int errcode; std::vector vscpdURL(URLBase.length() + m_SCPDURL.length() + 1); char *scpdURL = &vscpdURL[0]; errcode = UpnpResolveURL( URLBase.c_str(), m_SCPDURL.c_str(), scpdURL); if( errcode != UPNP_E_SUCCESS ) { msg << "Error generating scpdURL from " << "|" << URLBase << "|" << m_SCPDURL << "|."; AddDebugLogLineN(logUPnP, msg); } else { m_absSCPDURL = scpdURL; } std::vector vcontrolURL( URLBase.length() + m_controlURL.length() + 1); char *controlURL = &vcontrolURL[0]; errcode = UpnpResolveURL( URLBase.c_str(), m_controlURL.c_str(), controlURL); if( errcode != UPNP_E_SUCCESS ) { msg << "Error generating controlURL from " << "|" << URLBase << "|" << m_controlURL << "|."; AddDebugLogLineN(logUPnP, msg); } else { m_absControlURL = controlURL; } std::vector veventURL( URLBase.length() + m_eventSubURL.length() + 1); char *eventURL = &veventURL[0]; errcode = UpnpResolveURL( URLBase.c_str(), m_eventSubURL.c_str(), eventURL); if( errcode != UPNP_E_SUCCESS ) { msg << "Error generating eventURL from " << "|" << URLBase << "|" << m_eventSubURL << "|."; AddDebugLogLineN(logUPnP, msg); } else { m_absEventSubURL = eventURL; } msg << "\n Service:" << "\n serviceType: " << m_serviceType << "\n serviceId: " << m_serviceId << "\n SCPDURL: " << m_SCPDURL << "\n absSCPDURL: " << m_absSCPDURL << "\n controlURL: " << m_controlURL << "\n absControlURL: " << m_absControlURL << "\n eventSubURL: " << m_eventSubURL << "\n absEventSubURL: " << m_absEventSubURL; AddDebugLogLineN(logUPnP, msg); if (m_serviceType == UPnP::Service::WAN_IP_Connection || m_serviceType == UPnP::Service::WAN_PPP_Connection) { #if 0 m_serviceType == UPnP::Service::WAN_PPP_Connection || m_serviceType == UPnP::Service::WAN_Common_Interface_Config || m_serviceType == UPnP::Service::Layer3_Forwarding) { #endif #if 0 //#warning Delete this code on release. if (!upnpControlPoint.WanServiceDetected()) { // This condition can be used to suspend the parse // of the XML tree. #endif //#warning Delete this code when m_WanService is no longer used. const_cast(upnpControlPoint).SetWanService(this); // Log it msg.str(""); msg << "WAN Service Detected: '" << m_serviceType << "'."; AddDebugLogLineC(logUPnP, msg); // Subscribe const_cast(upnpControlPoint).Subscribe(*this); #if 0 //#warning Delete this code on release. } else { msg.str(""); msg << "WAN service detected again: '" << m_serviceType << "'. Will only use the first instance."; AddDebugLogLineC(logUPnP, msg); } #endif } else { msg.str(""); msg << "Uninteresting service detected: '" << m_serviceType << "'. Ignoring."; AddDebugLogLineC(logUPnP, msg); } } CUPnPService::~CUPnPService() { } bool CUPnPService::Execute( const std::string &ActionName, const std::vector &ArgValue) const { std::ostringstream msg; if (m_SCPD.get() == NULL) { msg << "Service without SCPD Document, cannot execute action '" << ActionName << "' for service '" << GetServiceType() << "'."; AddDebugLogLineN(logUPnP, msg); return false; } std::ostringstream msgAction("Sending action "); // Check for correct action name ActionList::const_iterator itAction = m_SCPD->GetActionList().find(ActionName); if (itAction == m_SCPD->GetActionList().end()) { msg << "Invalid action name '" << ActionName << "' for service '" << GetServiceType() << "'."; AddDebugLogLineN(logUPnP, msg); return false; } msgAction << ActionName << "("; bool firstTime = true; // Check for correct Argument/Value pairs const CUPnPAction &action = *(itAction->second); for (unsigned int i = 0; i < ArgValue.size(); ++i) { ArgumentList::const_iterator itArg = action.GetArgumentList().find(ArgValue[i].GetArgument()); if (itArg == action.GetArgumentList().end()) { msg << "Invalid argument name '" << ArgValue[i].GetArgument() << "' for action '" << action.GetName() << "' for service '" << GetServiceType() << "'."; AddDebugLogLineN(logUPnP, msg); return false; } const CUPnPArgument &argument = *(itArg->second); if (tolower(argument.GetDirection()[0]) != 'i' || tolower(argument.GetDirection()[1]) != 'n') { msg << "Invalid direction for argument '" << ArgValue[i].GetArgument() << "' for action '" << action.GetName() << "' for service '" << GetServiceType() << "'."; AddDebugLogLineN(logUPnP, msg); return false; } const std::string relatedStateVariableName = argument.GetRelatedStateVariable(); if (!relatedStateVariableName.empty()) { ServiceStateTable::const_iterator itSVT = m_SCPD->GetServiceStateTable(). find(relatedStateVariableName); if (itSVT == m_SCPD->GetServiceStateTable().end()) { msg << "Inconsistent Service State Table, did not find '" << relatedStateVariableName << "' for argument '" << argument.GetName() << "' for action '" << action.GetName() << "' for service '" << GetServiceType() << "'."; AddDebugLogLineN(logUPnP, msg); return false; } const CUPnPStateVariable &stateVariable = *(itSVT->second); if ( !stateVariable.GetAllowedValueList().empty() && stateVariable.GetAllowedValueList().find(ArgValue[i].GetValue()) == stateVariable.GetAllowedValueList().end()) { msg << "Value not allowed '" << ArgValue[i].GetValue() << "' for state variable '" << relatedStateVariableName << "' for argument '" << argument.GetName() << "' for action '" << action.GetName() << "' for service '" << GetServiceType() << "'."; AddDebugLogLineN(logUPnP, msg); return false; } } if (firstTime) { firstTime = false; } else { msgAction << ", "; } msgAction << ArgValue[i].GetArgument() << "='" << ArgValue[i].GetValue() << "'"; } msgAction << ")"; AddDebugLogLineN(logUPnP, msgAction); // Everything is ok, make the action IXML_Document *ActionDoc = NULL; if (!ArgValue.empty()) { for (unsigned int i = 0; i < ArgValue.size(); ++i) { int ret = UpnpAddToAction( &ActionDoc, action.GetName().c_str(), GetServiceType().c_str(), ArgValue[i].GetArgument().c_str(), ArgValue[i].GetValue().c_str()); if (ret != UPNP_E_SUCCESS) { UPnP::ProcessErrorMessage( "UpnpAddToAction", ret, NULL, NULL); return false; } } } else { ActionDoc = UpnpMakeAction( action.GetName().c_str(), GetServiceType().c_str(), 0, NULL); if (!ActionDoc) { msg << "Error: UpnpMakeAction returned NULL."; AddDebugLogLineN(logUPnP, msg); return false; } } #if 0 // Send the action asynchronously UpnpSendActionAsync( m_UPnPControlPoint.GetUPnPClientHandle(), GetAbsControlURL().c_str(), GetServiceType().c_str(), NULL, ActionDoc, static_cast(&CUPnPControlPoint::Callback), NULL); return true; #endif // Send the action synchronously IXML_Document *RespDoc = NULL; int ret = UpnpSendAction( m_UPnPControlPoint.GetUPnPClientHandle(), GetAbsControlURL().c_str(), GetServiceType().c_str(), NULL, ActionDoc, &RespDoc); if (ret != UPNP_E_SUCCESS) { UPnP::ProcessErrorMessage( "UpnpSendAction", ret, NULL, RespDoc); ixmlDocument_free(ActionDoc); ixmlDocument_free(RespDoc); return false; } ixmlDocument_free(ActionDoc); // Check the response document UPnP::ProcessActionResponse(RespDoc, action.GetName()); // Free the response document ixmlDocument_free(RespDoc); return true; } const std::string CUPnPService::GetStateVariable( const std::string &stateVariableName) const { std::ostringstream msg; DOMString StVarVal; int ret = UpnpGetServiceVarStatus( m_UPnPControlPoint.GetUPnPClientHandle(), GetAbsControlURL().c_str(), stateVariableName.c_str(), &StVarVal); if (ret != UPNP_E_SUCCESS) { msg << "GetStateVariable(\"" << stateVariableName << "\"): in a call to UpnpGetServiceVarStatus"; UPnP::ProcessErrorMessage( msg.str(), ret, StVarVal, NULL); return stdEmptyString; } msg << "GetStateVariable: " << stateVariableName << "='" << StVarVal << "'."; AddDebugLogLineN(logUPnP, msg); return StVarVal; } CUPnPDevice::CUPnPDevice( const CUPnPControlPoint &upnpControlPoint, IXML_Element *device, const std::string &URLBase) : m_DeviceList(upnpControlPoint, device, URLBase), m_ServiceList(upnpControlPoint, device, URLBase), m_deviceType (IXML::Element::GetChildValueByTag(device, "deviceType")), m_friendlyName (IXML::Element::GetChildValueByTag(device, "friendlyName")), m_manufacturer (IXML::Element::GetChildValueByTag(device, "manufacturer")), m_manufacturerURL (IXML::Element::GetChildValueByTag(device, "manufacturerURL")), m_modelDescription (IXML::Element::GetChildValueByTag(device, "modelDescription")), m_modelName (IXML::Element::GetChildValueByTag(device, "modelName")), m_modelNumber (IXML::Element::GetChildValueByTag(device, "modelNumber")), m_modelURL (IXML::Element::GetChildValueByTag(device, "modelURL")), m_serialNumber (IXML::Element::GetChildValueByTag(device, "serialNumber")), m_UDN (IXML::Element::GetChildValueByTag(device, "UDN")), m_UPC (IXML::Element::GetChildValueByTag(device, "UPC")), m_presentationURL (IXML::Element::GetChildValueByTag(device, "presentationURL")) { std::ostringstream msg; int presURLlen = strlen(URLBase.c_str()) + strlen(m_presentationURL.c_str()) + 2; std::vector vpresURL(presURLlen); char* presURL = &vpresURL[0]; int errcode = UpnpResolveURL( URLBase.c_str(), m_presentationURL.c_str(), presURL); if (errcode != UPNP_E_SUCCESS) { msg << "Error generating presentationURL from " << "|" << URLBase << "|" << m_presentationURL << "|."; AddDebugLogLineN(logUPnP, msg); } else { m_presentationURL = presURL; } msg.str(""); msg << "\n Device: " << "\n friendlyName: " << m_friendlyName << "\n deviceType: " << m_deviceType << "\n manufacturer: " << m_manufacturer << "\n manufacturerURL: " << m_manufacturerURL << "\n modelDescription: " << m_modelDescription << "\n modelName: " << m_modelName << "\n modelNumber: " << m_modelNumber << "\n modelURL: " << m_modelURL << "\n serialNumber: " << m_serialNumber << "\n UDN: " << m_UDN << "\n UPC: " << m_UPC << "\n presentationURL: " << m_presentationURL; AddDebugLogLineN(logUPnP, msg); } CUPnPRootDevice::CUPnPRootDevice( const CUPnPControlPoint &upnpControlPoint, IXML_Element *rootDevice, const std::string &OriginalURLBase, const std::string &FixedURLBase, const char *location, int expires) : CUPnPDevice(upnpControlPoint, rootDevice, FixedURLBase), m_URLBase(OriginalURLBase), m_location(location), m_expires(expires) { std::ostringstream msg; msg << "\n Root Device: " << "\n URLBase: " << m_URLBase << "\n Fixed URLBase: " << FixedURLBase << "\n location: " << m_location << "\n expires: " << m_expires; AddDebugLogLineN(logUPnP, msg); } CUPnPControlPoint *CUPnPControlPoint::s_CtrlPoint = NULL; CUPnPControlPoint::CUPnPControlPoint(unsigned short udpPort) : m_UPnPClientHandle(), m_RootDeviceMap(), m_ServiceMap(), m_ActivePortMappingsMap(), m_RootDeviceListMutex(), m_IGWDeviceDetected(false), m_WanService(NULL) { // Pointer to self s_CtrlPoint = this; // Null string at first std::ostringstream msg; // Start UPnP int ret; char *ipAddress = NULL; unsigned short port = 0; ret = UpnpInit(ipAddress, udpPort); if (ret != UPNP_E_SUCCESS) { msg << "error(UpnpInit): Error code "; goto error; } port = UpnpGetServerPort(); ipAddress = UpnpGetServerIpAddress(); msg << "bound to " << ipAddress << ":" << port << "."; AddDebugLogLineN(logUPnP, msg); msg.str(""); ret = UpnpRegisterClient( static_cast(&CUPnPControlPoint::Callback), &m_UPnPClientHandle, &m_UPnPClientHandle); if (ret != UPNP_E_SUCCESS) { msg << "error(UpnpRegisterClient): Error registering callback: "; goto error; } // We could ask for just the right device here. If the root device // contains the device we want, it will respond with the full XML doc, // including the root device and every sub-device it has. // // But let's find out what we have in our network by calling UPnP::ROOT_DEVICE. // // We should not search twice, because this will produce two // UPNP_DISCOVERY_SEARCH_TIMEOUT events, and we might end with problems // on the mutex. ret = UpnpSearchAsync(m_UPnPClientHandle, 3, UPnP::ROOT_DEVICE.c_str(), NULL); //ret = UpnpSearchAsync(m_UPnPClientHandle, 3, UPnP::Device::IGW.c_str(), this); //ret = UpnpSearchAsync(m_UPnPClientHandle, 3, UPnP::Device::LAN.c_str(), this); //ret = UpnpSearchAsync(m_UPnPClientHandle, 3, UPnP::Device::WAN_Connection.c_str(), this); if (ret != UPNP_E_SUCCESS) { msg << "error(UpnpSearchAsync): Error sending search request: "; goto error; } // Wait for the UPnP initialization to complete. { // Lock the search timeout mutex m_WaitForSearchTimeoutMutex.Lock(); // Lock it again, so that we block. Unlocking will only happen // when the UPNP_DISCOVERY_SEARCH_TIMEOUT event occurs at the // callback. CUPnPMutexLocker lock(m_WaitForSearchTimeoutMutex); } return; // Error processing error: UpnpFinish(); msg << ret << ": " << UpnpGetErrorMessage(ret) << "."; throw CUPnPException(msg); } CUPnPControlPoint::~CUPnPControlPoint() { for( RootDeviceMap::iterator it = m_RootDeviceMap.begin(); it != m_RootDeviceMap.end(); ++it) { delete it->second; } // Remove all first // RemoveAll(); UpnpUnRegisterClient(m_UPnPClientHandle); UpnpFinish(); } bool CUPnPControlPoint::AddPortMappings( std::vector &upnpPortMapping) { std::ostringstream msg; if (!WanServiceDetected()) { msg << "UPnP Error: " "CUPnPControlPoint::AddPortMapping: " "WAN Service not detected."; AddDebugLogLineC(logUPnP, msg); return false; } int n = upnpPortMapping.size(); bool ok = false; // Check the number of port mappings before std::istringstream PortMappingNumberOfEntries( m_WanService->GetStateVariable( "PortMappingNumberOfEntries")); unsigned long oldNumberOfEntries; PortMappingNumberOfEntries >> oldNumberOfEntries; // Add the enabled port mappings for (int i = 0; i < n; ++i) { if (upnpPortMapping[i].getEnabled() == "1") { // Add the mapping to the control point // active mappings list m_ActivePortMappingsMap[upnpPortMapping[i].getKey()] = upnpPortMapping[i]; // Add the port mapping PrivateAddPortMapping(upnpPortMapping[i]); } } // Test some variables, this is deprecated, might not work // with some routers m_WanService->GetStateVariable("ConnectionType"); m_WanService->GetStateVariable("PossibleConnectionTypes"); m_WanService->GetStateVariable("ConnectionStatus"); m_WanService->GetStateVariable("Uptime"); m_WanService->GetStateVariable("LastConnectionError"); m_WanService->GetStateVariable("RSIPAvailable"); m_WanService->GetStateVariable("NATEnabled"); m_WanService->GetStateVariable("ExternalIPAddress"); m_WanService->GetStateVariable("PortMappingNumberOfEntries"); m_WanService->GetStateVariable("PortMappingLeaseDuration"); // Just for testing std::vector argval; argval.resize(0); m_WanService->Execute("GetStatusInfo", argval); #if 0 // These do not work. Their value must be requested for a // specific port mapping. m_WanService->GetStateVariable("PortMappingEnabled"); m_WanService->GetStateVariable("RemoteHost"); m_WanService->GetStateVariable("ExternalPort"); m_WanService->GetStateVariable("InternalPort"); m_WanService->GetStateVariable("PortMappingProtocol"); m_WanService->GetStateVariable("InternalClient"); m_WanService->GetStateVariable("PortMappingDescription"); #endif // Debug only msg.str(""); msg << "CUPnPControlPoint::AddPortMappings: " "m_ActivePortMappingsMap.size() == " << m_ActivePortMappingsMap.size(); AddDebugLogLineN(logUPnP, msg); // Not very good, must find a better test PortMappingNumberOfEntries.str( m_WanService->GetStateVariable( "PortMappingNumberOfEntries")); unsigned long newNumberOfEntries; PortMappingNumberOfEntries >> newNumberOfEntries; ok = newNumberOfEntries - oldNumberOfEntries == 4; return ok; } void CUPnPControlPoint::RefreshPortMappings() { for ( PortMappingMap::iterator it = m_ActivePortMappingsMap.begin(); it != m_ActivePortMappingsMap.end(); ++it) { PrivateAddPortMapping(it->second); } // For testing m_WanService->GetStateVariable("PortMappingNumberOfEntries"); } bool CUPnPControlPoint::PrivateAddPortMapping( CUPnPPortMapping &upnpPortMapping) { // Get an IP address. The UPnP server one must do. std::string ipAddress(UpnpGetServerIpAddress()); // Start building the action std::string actionName("AddPortMapping"); std::vector argval(8); // Action parameters argval[0].SetArgument("NewRemoteHost"); argval[0].SetValue(""); argval[1].SetArgument("NewExternalPort"); argval[1].SetValue(upnpPortMapping.getPort()); argval[2].SetArgument("NewProtocol"); argval[2].SetValue(upnpPortMapping.getProtocol()); argval[3].SetArgument("NewInternalPort"); argval[3].SetValue(upnpPortMapping.getPort()); argval[4].SetArgument("NewInternalClient"); argval[4].SetValue(ipAddress); argval[5].SetArgument("NewEnabled"); argval[5].SetValue("1"); argval[6].SetArgument("NewPortMappingDescription"); argval[6].SetValue(upnpPortMapping.getDescription()); argval[7].SetArgument("NewLeaseDuration"); argval[7].SetValue("0"); // Execute bool ret = true; for (ServiceMap::iterator it = m_ServiceMap.begin(); it != m_ServiceMap.end(); ++it) { ret &= it->second->Execute(actionName, argval); } return ret; } bool CUPnPControlPoint::DeletePortMappings( std::vector &upnpPortMapping) { std::ostringstream msg; if (!WanServiceDetected()) { msg << "UPnP Error: " "CUPnPControlPoint::DeletePortMapping: " "WAN Service not detected."; AddDebugLogLineC(logUPnP, msg); return false; } int n = upnpPortMapping.size(); bool ok = false; // Check the number of port mappings before std::istringstream PortMappingNumberOfEntries( m_WanService->GetStateVariable( "PortMappingNumberOfEntries")); unsigned long oldNumberOfEntries; PortMappingNumberOfEntries >> oldNumberOfEntries; // Delete the enabled port mappings for (int i = 0; i < n; ++i) { if (upnpPortMapping[i].getEnabled() == "1") { // Delete the mapping from the control point // active mappings list PortMappingMap::iterator it = m_ActivePortMappingsMap.find( upnpPortMapping[i].getKey()); if (it != m_ActivePortMappingsMap.end()) { m_ActivePortMappingsMap.erase(it); } else { msg << "UPnP Error: " "CUPnPControlPoint::DeletePortMapping: " "Mapping was not found in the active " "mapping map."; AddDebugLogLineC(logUPnP, msg); } // Delete the port mapping PrivateDeletePortMapping(upnpPortMapping[i]); } } // Debug only msg.str(""); msg << "CUPnPControlPoint::DeletePortMappings: " "m_ActivePortMappingsMap.size() == " << m_ActivePortMappingsMap.size(); AddDebugLogLineN(logUPnP, msg); // Not very good, must find a better test PortMappingNumberOfEntries.str( m_WanService->GetStateVariable( "PortMappingNumberOfEntries")); unsigned long newNumberOfEntries; PortMappingNumberOfEntries >> newNumberOfEntries; ok = oldNumberOfEntries - newNumberOfEntries == 4; return ok; } bool CUPnPControlPoint::PrivateDeletePortMapping( CUPnPPortMapping &upnpPortMapping) { // Start building the action std::string actionName("DeletePortMapping"); std::vector argval(3); // Action parameters argval[0].SetArgument("NewRemoteHost"); argval[0].SetValue(""); argval[1].SetArgument("NewExternalPort"); argval[1].SetValue(upnpPortMapping.getPort()); argval[2].SetArgument("NewProtocol"); argval[2].SetValue(upnpPortMapping.getProtocol()); // Execute bool ret = true; for (ServiceMap::iterator it = m_ServiceMap.begin(); it != m_ServiceMap.end(); ++it) { ret &= it->second->Execute(actionName, argval); } return ret; } // This function is static int CUPnPControlPoint::Callback(Upnp_EventType EventType, void *Event, void * /*Cookie*/) { std::ostringstream msg; std::ostringstream msg2; // Somehow, this is unreliable. UPNP_DISCOVERY_ADVERTISEMENT_ALIVE events // happen with a wrong cookie and... boom! // CUPnPControlPoint *upnpCP = static_cast(Cookie); CUPnPControlPoint *upnpCP = CUPnPControlPoint::s_CtrlPoint; //fprintf(stderr, "Callback: %d, Cookie: %p\n", EventType, Cookie); switch (EventType) { case UPNP_DISCOVERY_ADVERTISEMENT_ALIVE: //fprintf(stderr, "Callback: UPNP_DISCOVERY_ADVERTISEMENT_ALIVE\n"); msg << "error(UPNP_DISCOVERY_ADVERTISEMENT_ALIVE): "; msg2<< "UPNP_DISCOVERY_ADVERTISEMENT_ALIVE: "; goto upnpDiscovery; case UPNP_DISCOVERY_SEARCH_RESULT: { //fprintf(stderr, "Callback: UPNP_DISCOVERY_SEARCH_RESULT\n"); msg << "error(UPNP_DISCOVERY_SEARCH_RESULT): "; msg2<< "UPNP_DISCOVERY_SEARCH_RESULT: "; // UPnP Discovery upnpDiscovery: struct Upnp_Discovery *d_event = (struct Upnp_Discovery *)Event; IXML_Document *doc = NULL; int ret; if (d_event->ErrCode != UPNP_E_SUCCESS) { msg << UpnpGetErrorMessage(d_event->ErrCode) << "."; AddDebugLogLineC(logUPnP, msg); } // Get the XML tree device description in doc ret = UpnpDownloadXmlDoc(d_event->Location, &doc); if (ret != UPNP_E_SUCCESS) { msg << "Error retrieving device description from " << d_event->Location << ": " << UpnpGetErrorMessage(ret) << "(" << ret << ")."; AddDebugLogLineC(logUPnP, msg); } else { msg2 << "Retrieving device description from " << d_event->Location << "."; AddDebugLogLineN(logUPnP, msg2); } if (doc) { // Get the root node IXML_Element *root = IXML::Document::GetRootElement(doc); // Extract the URLBase const std::string urlBase = IXML::Element::GetChildValueByTag(root, "URLBase"); // Get the root device IXML_Element *rootDevice = IXML::Element::GetFirstChildByTag(root, "device"); // Extract the deviceType std::string devType(IXML::Element::GetChildValueByTag(rootDevice, "deviceType")); // Only add device if it is an InternetGatewayDevice if (stdStringIsEqualCI(devType, UPnP::Device::IGW)) { // This condition can be used to auto-detect // the UPnP device we are interested in. // Obs.: Don't block the entry here on this // condition! There may be more than one device, // and the first that enters may not be the one // we are interested in! upnpCP->SetIGWDeviceDetected(true); // Log it if not UPNP_DISCOVERY_ADVERTISEMENT_ALIVE, // we don't want to spam our logs. if (EventType != UPNP_DISCOVERY_ADVERTISEMENT_ALIVE) { msg.str("Internet Gateway Device Detected."); AddDebugLogLineC(logUPnP, msg); } // Add the root device to our list upnpCP->AddRootDevice(rootDevice, urlBase, d_event->Location, d_event->Expires); } // Free the XML doc tree ixmlDocument_free(doc); } break; } case UPNP_DISCOVERY_SEARCH_TIMEOUT: { //fprintf(stderr, "Callback: UPNP_DISCOVERY_SEARCH_TIMEOUT\n"); // Search timeout msg << "UPNP_DISCOVERY_SEARCH_TIMEOUT."; AddDebugLogLineN(logUPnP, msg); // Unlock the search timeout mutex upnpCP->m_WaitForSearchTimeoutMutex.Unlock(); break; } case UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE: { //fprintf(stderr, "Callback: UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE\n"); // UPnP Device Removed struct Upnp_Discovery *dab_event = (struct Upnp_Discovery *)Event; if (dab_event->ErrCode != UPNP_E_SUCCESS) { msg << "error(UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE): " << UpnpGetErrorMessage(dab_event->ErrCode) << "."; AddDebugLogLineC(logUPnP, msg); } std::string devType = dab_event->DeviceType; // Check for an InternetGatewayDevice and removes it from the list std::transform(devType.begin(), devType.end(), devType.begin(), tolower); if (stdStringIsEqualCI(devType, UPnP::Device::IGW)) { upnpCP->RemoveRootDevice(dab_event->DeviceId); } break; } case UPNP_EVENT_RECEIVED: { //fprintf(stderr, "Callback: UPNP_EVENT_RECEIVED\n"); // Event reveived struct Upnp_Event *e_event = (struct Upnp_Event *)Event; const std::string Sid = e_event->Sid; // Parses the event upnpCP->OnEventReceived(Sid, e_event->EventKey, e_event->ChangedVariables); break; } case UPNP_EVENT_SUBSCRIBE_COMPLETE: //fprintf(stderr, "Callback: UPNP_EVENT_SUBSCRIBE_COMPLETE\n"); msg << "error(UPNP_EVENT_SUBSCRIBE_COMPLETE): "; goto upnpEventRenewalComplete; case UPNP_EVENT_UNSUBSCRIBE_COMPLETE: //fprintf(stderr, "Callback: UPNP_EVENT_UNSUBSCRIBE_COMPLETE\n"); msg << "error(UPNP_EVENT_UNSUBSCRIBE_COMPLETE): "; goto upnpEventRenewalComplete; case UPNP_EVENT_RENEWAL_COMPLETE: { //fprintf(stderr, "Callback: UPNP_EVENT_RENEWAL_COMPLETE\n"); msg << "error(UPNP_EVENT_RENEWAL_COMPLETE): "; upnpEventRenewalComplete: struct Upnp_Event_Subscribe *es_event = (struct Upnp_Event_Subscribe *)Event; if (es_event->ErrCode != UPNP_E_SUCCESS) { msg << "Error in Event Subscribe Callback"; UPnP::ProcessErrorMessage( msg.str(), es_event->ErrCode, NULL, NULL); } else { #if 0 TvCtrlPointHandleSubscribeUpdate( GET_UPNP_STRING(es_event->PublisherUrl), es_event->Sid, es_event->TimeOut ); #endif } break; } case UPNP_EVENT_AUTORENEWAL_FAILED: //fprintf(stderr, "Callback: UPNP_EVENT_AUTORENEWAL_FAILED\n"); msg << "error(UPNP_EVENT_AUTORENEWAL_FAILED): "; msg2 << "UPNP_EVENT_AUTORENEWAL_FAILED: "; goto upnpEventSubscriptionExpired; case UPNP_EVENT_SUBSCRIPTION_EXPIRED: { //fprintf(stderr, "Callback: UPNP_EVENT_SUBSCRIPTION_EXPIRED\n"); msg << "error(UPNP_EVENT_SUBSCRIPTION_EXPIRED): "; msg2 << "UPNP_EVENT_SUBSCRIPTION_EXPIRED: "; upnpEventSubscriptionExpired: struct Upnp_Event_Subscribe *es_event = (struct Upnp_Event_Subscribe *)Event; Upnp_SID newSID; int TimeOut = 1801; int ret = UpnpSubscribe( upnpCP->m_UPnPClientHandle, GET_UPNP_STRING(es_event->PublisherUrl), &TimeOut, newSID); if (ret != UPNP_E_SUCCESS) { msg << "Error Subscribing to EventURL"; UPnP::ProcessErrorMessage( msg.str(), es_event->ErrCode, NULL, NULL); } else { ServiceMap::iterator it = upnpCP->m_ServiceMap.find(GET_UPNP_STRING(es_event->PublisherUrl)); if (it != upnpCP->m_ServiceMap.end()) { CUPnPService &service = *(it->second); service.SetTimeout(TimeOut); service.SetSID(newSID); msg2 << "Re-subscribed to EventURL '" << GET_UPNP_STRING(es_event->PublisherUrl) << "' with SID == '" << newSID << "'."; AddDebugLogLineC(logUPnP, msg2); // In principle, we should test to see if the // service is the same. But here we only have one // service, so... upnpCP->RefreshPortMappings(); } else { msg << "Error: did not find service " << newSID << " in the service map."; AddDebugLogLineC(logUPnP, msg); } } break; } case UPNP_CONTROL_ACTION_COMPLETE: { //fprintf(stderr, "Callback: UPNP_CONTROL_ACTION_COMPLETE\n"); // This is here if we choose to do this asynchronously struct Upnp_Action_Complete *a_event = (struct Upnp_Action_Complete *)Event; if (a_event->ErrCode != UPNP_E_SUCCESS) { UPnP::ProcessErrorMessage( "UpnpSendActionAsync", a_event->ErrCode, NULL, a_event->ActionResult); } else { // Check the response document UPnP::ProcessActionResponse( a_event->ActionResult, ""); } /* No need for any processing here, just print out results. * Service state table updates are handled by events. */ break; } case UPNP_CONTROL_GET_VAR_COMPLETE: { //fprintf(stderr, "Callback: UPNP_CONTROL_GET_VAR_COMPLETE\n"); msg << "error(UPNP_CONTROL_GET_VAR_COMPLETE): "; struct Upnp_State_Var_Complete *sv_event = (struct Upnp_State_Var_Complete *)Event; if (sv_event->ErrCode != UPNP_E_SUCCESS) { msg << "m_UpnpGetServiceVarStatusAsync"; UPnP::ProcessErrorMessage( msg.str(), sv_event->ErrCode, NULL, NULL); } else { #if 0 // Warning: The use of UpnpGetServiceVarStatus and // UpnpGetServiceVarStatusAsync is deprecated by the // UPnP forum. TvCtrlPointHandleGetVar( sv_event->CtrlUrl, sv_event->StateVarName, sv_event->CurrentVal ); #endif } break; } // ignore these cases, since this is not a device case UPNP_CONTROL_GET_VAR_REQUEST: //fprintf(stderr, "Callback: UPNP_CONTROL_GET_VAR_REQUEST\n"); msg << "error(UPNP_CONTROL_GET_VAR_REQUEST): "; goto eventSubscriptionRequest; case UPNP_CONTROL_ACTION_REQUEST: //fprintf(stderr, "Callback: UPNP_CONTROL_ACTION_REQUEST\n"); msg << "error(UPNP_CONTROL_ACTION_REQUEST): "; goto eventSubscriptionRequest; case UPNP_EVENT_SUBSCRIPTION_REQUEST: //fprintf(stderr, "Callback: UPNP_EVENT_SUBSCRIPTION_REQUEST\n"); msg << "error(UPNP_EVENT_SUBSCRIPTION_REQUEST): "; eventSubscriptionRequest: msg << "This is not a UPnP Device, this is a UPnP Control Point, event ignored."; AddDebugLogLineC(logUPnP, msg); break; default: // Humm, this is not good, we forgot to handle something... fprintf(stderr, "Callback: default... Unknown event:'%d', not good.\n", EventType); msg << "error(UPnP::Callback): Event not handled:'" << EventType << "'."; fprintf(stderr, "%s\n", msg.str().c_str()); AddDebugLogLineC(logUPnP, msg); // Better not throw in the callback. Who would catch it? //throw CUPnPException(msg); break; } return 0; } void CUPnPControlPoint::OnEventReceived( const std::string &Sid, int EventKey, IXML_Document *ChangedVariablesDoc) { std::ostringstream msg; msg << "UPNP_EVENT_RECEIVED:" << "\n SID: " << Sid << "\n Key: " << EventKey << "\n Property list:"; IXML_Element *root = IXML::Document::GetRootElement(ChangedVariablesDoc); IXML_Element *child = IXML::Element::GetFirstChild(root); if (child) { while (child) { IXML_Element *child2 = IXML::Element::GetFirstChild(child); const DOMString childTag = IXML::Element::GetTag(child2); std::string childValue = IXML::Element::GetTextValue(child2); msg << "\n " << childTag << "='" << childValue << "'"; child = IXML::Element::GetNextSibling(child); } } else { msg << "\n Empty property list."; } AddDebugLogLineC(logUPnP, msg); // Freeing that doc segfaults. Probably should not be freed. //ixmlDocument_free(ChangedVariablesDoc); } void CUPnPControlPoint::AddRootDevice( IXML_Element *rootDevice, const std::string &urlBase, const char *location, int expires) { // Lock the Root Device List CUPnPMutexLocker lock(m_RootDeviceListMutex); // Root node's URLBase std::string OriginalURLBase(urlBase); std::string FixedURLBase(OriginalURLBase.empty() ? location : OriginalURLBase); // Get the UDN (Unique Device Name) std::string UDN(IXML::Element::GetChildValueByTag(rootDevice, "UDN")); RootDeviceMap::iterator it = m_RootDeviceMap.find(UDN); bool alreadyAdded = it != m_RootDeviceMap.end(); if (alreadyAdded) { // Just set the expires field it->second->SetExpires(expires); } else { // Add a new root device to the root device list CUPnPRootDevice *upnpRootDevice = new CUPnPRootDevice( *this, rootDevice, OriginalURLBase, FixedURLBase, location, expires); m_RootDeviceMap[upnpRootDevice->GetUDN()] = upnpRootDevice; } } void CUPnPControlPoint::RemoveRootDevice(const char *udn) { // Lock the Root Device List CUPnPMutexLocker lock(m_RootDeviceListMutex); // Remove std::string UDN(udn); RootDeviceMap::iterator it = m_RootDeviceMap.find(UDN); if (it != m_RootDeviceMap.end()) { delete it->second; m_RootDeviceMap.erase(UDN); } } void CUPnPControlPoint::Subscribe(CUPnPService &service) { std::ostringstream msg; IXML_Document *scpdDoc = NULL; int errcode = UpnpDownloadXmlDoc( service.GetAbsSCPDURL().c_str(), &scpdDoc); if (errcode == UPNP_E_SUCCESS) { // Get the root node of this service (the SCPD Document) IXML_Element *scpdRoot = IXML::Document::GetRootElement(scpdDoc); CUPnPSCPD *scpd = new CUPnPSCPD(*this, scpdRoot, service.GetAbsSCPDURL()); service.SetSCPD(scpd); m_ServiceMap[service.GetAbsEventSubURL()] = &service; msg << "Successfully retrieved SCPD Document for service " << service.GetServiceType() << ", absEventSubURL: " << service.GetAbsEventSubURL() << "."; AddDebugLogLineC(logUPnP, msg); msg.str(""); // Now try to subscribe to this service. If the subscription // is not successfull, we will not be notified about events, // but it may be possible to use the service anyway. errcode = UpnpSubscribe(m_UPnPClientHandle, service.GetAbsEventSubURL().c_str(), service.GetTimeoutAddr(), service.GetSID()); if (errcode == UPNP_E_SUCCESS) { msg << "Successfully subscribed to service " << service.GetServiceType() << ", absEventSubURL: " << service.GetAbsEventSubURL() << "."; AddDebugLogLineC(logUPnP, msg); } else { msg << "Error subscribing to service " << service.GetServiceType() << ", absEventSubURL: " << service.GetAbsEventSubURL() << ", error: " << UpnpGetErrorMessage(errcode) << "."; goto error; } } else { msg << "Error getting SCPD Document from " << service.GetAbsSCPDURL() << "."; AddDebugLogLineC(logUPnP, msg); } return; // Error processing error: AddDebugLogLineC(logUPnP, msg); } void CUPnPControlPoint::Unsubscribe(CUPnPService &service) { ServiceMap::iterator it = m_ServiceMap.find(service.GetAbsEventSubURL()); if (it != m_ServiceMap.end()) { m_ServiceMap.erase(it); UpnpUnSubscribe(m_UPnPClientHandle, service.GetSID()); } } #endif /* ENABLE_UPNP */ amule_2.3.1+git20151120.0023527bc2.orig/src/UPnPBase.h0000644000175000017500000003271112611472361020064 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // This define must not conflict with the one in the standard header #ifndef AMULE_UPNP_H #define AMULE_UPNP_H #include #include #include #include #include "UPnPCompatibility.h" extern std::string stdEmptyString; class CUPnPPortMapping { private: std::string m_port; std::string m_protocol; std::string m_enabled; std::string m_description; std::string m_key; public: CUPnPPortMapping( int port = 0, const std::string &protocol = stdEmptyString, bool enabled = false, const std::string &description = stdEmptyString); ~CUPnPPortMapping() {} const std::string &getPort() const { return m_port; } const std::string &getProtocol() const { return m_protocol; } const std::string &getEnabled() const { return m_enabled; } const std::string &getDescription() const { return m_description; } const std::string &getKey() const { return m_key; } }; namespace IXML { namespace Document { IXML_Element *GetRootElement(IXML_Document *doc); } namespace Element { IXML_Element *GetFirstChild(IXML_Element *parent); IXML_Element *GetNextSibling(IXML_Element *child); const DOMString GetTag(IXML_Element *element); const std::string GetTextValue(IXML_Element *element); const std::string GetChildValueByTag(IXML_Element *element, const DOMString tag); IXML_Element *GetFirstChildByTag(IXML_Element *element, const DOMString tag); IXML_Element *GetNextSiblingByTag(IXML_Element *element, const DOMString tag); const std::string GetAttributeByTag(IXML_Element *element, const DOMString tag); } } class CUPnPControlPoint; template class CXML_List : public std::map { public: CXML_List( const CUPnPControlPoint &upnpControlPoint, IXML_Element *parent, const std::string &url); ~CXML_List(); }; template CXML_List::CXML_List( const CUPnPControlPoint &upnpControlPoint, IXML_Element *parent, const std::string &url) { IXML_Element *elementList = IXML::Element::GetFirstChildByTag(parent, XML_LIST_NAME); unsigned int i = 0; for ( IXML_Element *element = IXML::Element::GetFirstChildByTag(elementList, XML_ELEMENT_NAME); element; element = IXML::Element::GetNextSiblingByTag(element, XML_ELEMENT_NAME)) { // Add a new element to the element list T *upnpElement = new T(upnpControlPoint, element, url); (*this)[upnpElement->GetKey()] = upnpElement; ++i; } std::ostringstream msg; msg << "\n " << XML_LIST_NAME << ": " << i << " " << XML_ELEMENT_NAME << "s."; AddDebugLogLineN(logUPnP, msg); } template CXML_List::~CXML_List() { typename CXML_List::iterator it; for(it = this->begin(); it != this->end(); ++it) { delete (*it).second; } } extern const char s_argument[]; extern const char s_argumentList[]; extern const char s_action[]; extern const char s_actionList[]; extern const char s_allowedValue[]; extern const char s_allowedValueList[]; extern const char s_stateVariable[]; extern const char s_serviceStateTable[]; extern const char s_service[]; extern const char s_serviceList[]; extern const char s_device[]; extern const char s_deviceList[]; class CUPnPArgument; typedef CXML_List ArgumentList; class CUPnPAction; typedef CXML_List ActionList; class CUPnPStateVariable; typedef CXML_List ServiceStateTable; class CUPnPAllowedValue; typedef CXML_List AllowedValueList; class CUPnPService; typedef CXML_List ServiceList; class CUPnPDevice; typedef CXML_List DeviceList; class CUPnPError { private: IXML_Element *m_root; const std::string m_ErrorCode; const std::string m_ErrorDescription; public: CUPnPError(IXML_Document *errorDoc); ~CUPnPError() {} const std::string &getErrorCode() const { return m_ErrorCode; } const std::string &getErrorDescription() const { return m_ErrorDescription; } }; class CUPnPArgument { private: const std::string m_name; const std::string m_direction; bool m_retval; const std::string m_relatedStateVariable; public: CUPnPArgument( const CUPnPControlPoint &upnpControlPoint, IXML_Element *argument, const std::string &SCPDURL); ~CUPnPArgument() {} const std::string &GetName() const { return m_name; } const std::string &GetDirection() const { return m_direction; } bool GetRetVal() const { return m_retval; } const std::string &GetRelatedStateVariable() const { return m_relatedStateVariable; } const std::string &GetKey() const { return m_name; } }; class CUPnPAction { private: ArgumentList m_ArgumentList; const std::string m_name; public: CUPnPAction( const CUPnPControlPoint &upnpControlPoint, IXML_Element *action, const std::string &SCPDURL); ~CUPnPAction() {} const std::string &GetName() const { return m_name; } const std::string &GetKey() const { return m_name; } const ArgumentList &GetArgumentList() const { return m_ArgumentList; } }; class CUPnPAllowedValue { private: const std::string m_allowedValue; public: CUPnPAllowedValue( const CUPnPControlPoint &upnpControlPoint, IXML_Element *allowedValue, const std::string &SCPDURL); ~CUPnPAllowedValue() {} const std::string &GetAllowedValue() const { return m_allowedValue; } const std::string &GetKey() const { return m_allowedValue; } }; class CUPnPStateVariable { private: AllowedValueList m_AllowedValueList; const std::string m_name; const std::string m_dataType; const std::string m_defaultValue; const std::string m_sendEvents; public: CUPnPStateVariable( const CUPnPControlPoint &upnpControlPoint, IXML_Element *stateVariable, const std::string &URLBase); ~CUPnPStateVariable() {} const std::string &GetNname() const { return m_name; } const std::string &GetDataType() const { return m_dataType; } const std::string &GetDefaultValue() const { return m_defaultValue; } const std::string &GetKey() const { return m_name; } const AllowedValueList &GetAllowedValueList() const { return m_AllowedValueList; } }; class CUPnPSCPD { private: ActionList m_ActionList; ServiceStateTable m_ServiceStateTable; const std::string m_SCPDURL; public: CUPnPSCPD( const CUPnPControlPoint &upnpControlPoint, IXML_Element *scpd, const std::string &SCPDURL); ~CUPnPSCPD() {} const ActionList &GetActionList() const { return m_ActionList; } const ServiceStateTable &GetServiceStateTable() const { return m_ServiceStateTable; } }; class CUPnPArgumentValue { private: std::string m_argument; std::string m_value; public: CUPnPArgumentValue(); CUPnPArgumentValue(const std::string &argument, const std::string &value); ~CUPnPArgumentValue() {} const std::string &GetArgument() const { return m_argument; } const std::string &GetValue() const { return m_value; } const std::string &SetArgument(const std::string& argument) { return m_argument = argument; } const std::string &SetValue(const std::string &value) { return m_value = value; } }; class CUPnPService { private: const CUPnPControlPoint &m_UPnPControlPoint; const std::string m_serviceType; const std::string m_serviceId; const std::string m_SCPDURL; const std::string m_controlURL; const std::string m_eventSubURL; std::string m_absSCPDURL; std::string m_absControlURL; std::string m_absEventSubURL; int m_timeout; Upnp_SID m_SID; std::auto_ptr m_SCPD; public: CUPnPService( const CUPnPControlPoint &upnpControlPoint, IXML_Element *service, const std::string &URLBase); ~CUPnPService(); const std::string &GetServiceType() const { return m_serviceType; } const std::string &GetServiceId() const { return m_serviceId; } const std::string &GetSCPDURL() const { return m_SCPDURL; } const std::string &GetAbsSCPDURL() const { return m_absSCPDURL; } const std::string &GetControlURL() const { return m_controlURL; } const std::string &GetEventSubURL() const { return m_eventSubURL; } const std::string &GetAbsControlURL() const { return m_absControlURL; } const std::string &GetAbsEventSubURL() const { return m_absEventSubURL; } int GetTimeout() const { return m_timeout; } void SetTimeout(int t) { m_timeout = t; } int *GetTimeoutAddr() { return &m_timeout; } char *GetSID() { return m_SID; } void SetSID(const char *s) { memcpy(m_SID, s, sizeof(Upnp_SID)); } const std::string &GetKey() const { return m_serviceId; } bool IsSubscribed() const { return m_SCPD.get() != NULL; } void SetSCPD(CUPnPSCPD *SCPD) { m_SCPD.reset(SCPD); } bool Execute( const std::string &ActionName, const std::vector &ArgValue) const; const std::string GetStateVariable( const std::string &stateVariableName) const; }; class CUPnPDevice { private: // Please, lock these lists before use DeviceList m_DeviceList; ServiceList m_ServiceList; const std::string m_deviceType; const std::string m_friendlyName; const std::string m_manufacturer; const std::string m_manufacturerURL; const std::string m_modelDescription; const std::string m_modelName; const std::string m_modelNumber; const std::string m_modelURL; const std::string m_serialNumber; const std::string m_UDN; const std::string m_UPC; std::string m_presentationURL; public: CUPnPDevice( const CUPnPControlPoint &upnpControlPoint, IXML_Element *device, const std::string &URLBase); ~CUPnPDevice() {} const std::string &GetUDN() const { return m_UDN; } const std::string &GetDeviceType() const { return m_deviceType; } const std::string &GetFriendlyName() const { return m_friendlyName; } const std::string &GetPresentationURL() const { return m_presentationURL; } const std::string &GetKey() const { return m_UDN; } }; class CUPnPRootDevice : public CUPnPDevice { private: const std::string m_URLBase; const std::string m_location; int m_expires; public: CUPnPRootDevice( const CUPnPControlPoint &upnpControlPoint, IXML_Element *rootDevice, const std::string &OriginalURLBase, const std::string &FixedURLBase, const char *location, int expires); ~CUPnPRootDevice() {} const std::string &GetURLBase() const { return m_URLBase; } const std::string &GetLocation() const { return m_location; } int GetExpires() const { return m_expires; } void SetExpires(int expires) { m_expires = expires; } }; typedef std::map RootDeviceMap; typedef std::map ServiceMap; typedef std::map PortMappingMap; class CUPnPControlPoint { private: static CUPnPControlPoint *s_CtrlPoint; // upnp stuff UpnpClient_Handle m_UPnPClientHandle; RootDeviceMap m_RootDeviceMap; ServiceMap m_ServiceMap; PortMappingMap m_ActivePortMappingsMap; CUPnPMutex m_RootDeviceListMutex; bool m_IGWDeviceDetected; //#warning This variable is for testing purposes only and should disappear on release. CUPnPService *m_WanService; CUPnPMutex m_WaitForSearchTimeoutMutex; public: CUPnPControlPoint(unsigned short udpPort); ~CUPnPControlPoint(); void Subscribe(CUPnPService &service); void Unsubscribe(CUPnPService &service); bool AddPortMappings( std::vector &upnpPortMapping); bool DeletePortMappings( std::vector &upnpPortMapping); UpnpClient_Handle GetUPnPClientHandle() const { return m_UPnPClientHandle; } bool GetIGWDeviceDetected() const { return m_IGWDeviceDetected; } void SetIGWDeviceDetected(bool b) { m_IGWDeviceDetected = b; } bool WanServiceDetected() const { return !m_ServiceMap.empty(); } void SetWanService(CUPnPService *service) { m_WanService = service; } // Callback function static int Callback( Upnp_EventType EventType, void* Event, void* Cookie); private: void OnEventReceived( const std::string &Sid, int EventKey, IXML_Document *ChangedVariables); void AddRootDevice( IXML_Element *rootDevice, const std::string &urlBase, const char *location, int expires); void RemoveRootDevice( const char *udn); void RefreshPortMappings(); bool PrivateAddPortMapping( CUPnPPortMapping &upnpPortMapping); bool PrivateDeletePortMapping( CUPnPPortMapping &upnpPortMapping); }; #endif /* AMULE_UPNP_H */ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/UPnPCompatibility.h0000644000175000017500000000337712611472361022031 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Marcelo Roberto Jimenez ( phoenix@amule.org ) // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef UPNPCOMPATIBILITY_H #define UPNPCOMPATIBILITY_H #include #include #include #include // for CMuleException:: #include // for char2unicode() #include "Logger.h" // for Add(Debug)LogLineM() class CUPnPException : public CMuleException { public: CUPnPException(const std::ostringstream& msg) : CMuleException( wxT("CUPnPException"), wxString(char2unicode(msg.str().c_str()))) {} }; // There is no need to create mutex/mutex locker classes using ithread.h // because wx already has them. #define CUPnPMutex wxMutex #define CUPnPMutexLocker wxMutexLocker #endif // UPNPCOMPATIBILITY_H amule_2.3.1+git20151120.0023527bc2.orig/src/UpDownClientEC.h0000644000175000017500000001647412611472361021242 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2003-2011 Stu Redman ( sturedman@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef UPDOWNCLIENTEC_H #define UPDOWNCLIENTEC_H #include // Needed for CECID #include "BitVector.h" // Needed for BitVector #include "ClientRef.h" // Needed for debug defines class CKnownFile; class CPartFile; class CFriend; class CUpDownClient : public CECID { friend class CUpDownClientListRem; friend class CClientRef; private: /** * Please note that only the ClientList is allowed to delete the clients. */ ~CUpDownClient(); /** * Reference count which is increased whenever client is linked to a clientref. * Clients are to be stored only by ClientRefs, CUpDownClient * are for temporary * use only. * Linking is done only by CClientRef which is friend, so methods are private. */ uint16 m_linked; #ifdef DEBUG_ZOMBIE_CLIENTS bool m_linkedDebug; std::multiset m_linkedFrom; void Link(const wxString& from) { m_linked++; m_linkedFrom.insert(from); } void Unlink(const wxString& from); wxString GetLinkedFrom() { wxString ret; for (std::multiset::iterator it = m_linkedFrom.begin(); it != m_linkedFrom.end(); it++) { ret += *it + wxT(", "); } return ret; } #else void Link() { m_linked++; } void Unlink(); #endif public: CUpDownClient(const class CEC_UpDownClient_Tag *); void RequestSharedFileList(); // Wrapped by CClientRef bool ExtProtocolAvailable() const { return m_bEmuleProtocol; } uint16 GetAvailablePartCount() const { return m_AvailPartCount; } const wxString& GetClientFilename() const { return m_clientFilename; } const wxString& GetClientModString() const { return m_strModVersion; } const wxString& GetClientOSInfo() const { return m_sClientOSInfo; } uint8 GetClientSoft() const { return m_clientSoft; } const wxString& GetClientVerString() const { return m_fullClientVerString; } uint64 GetDownloadedTotal() const; uint8 GetDownloadState() const { return m_nDownloadState; } CFriend* GetFriend() const { return m_Friend; } bool GetFriendSlot() const { return m_bFriendSlot; } wxString GetFullIP() const { return Uint32toStringIP(m_dwUserIP); } uint16 GetKadPort() const { return m_nKadPort; } float GetKBpsDown() const { return m_kBpsDown; } uint32 GetIP() const { return m_dwUserIP; } uint16 GetLastDownloadingPart() const { return m_lastDownloadingPart; } uint16 GetNextRequestedPart() const { return m_nextRequestedPart; } uint8 GetObfuscationStatus() const { return m_obfuscationStatus; } uint16 GetOldRemoteQueueRank() const { return m_nOldRemoteQueueRank; } const BitVector& GetPartStatus() const { return m_downPartStatus; } uint16 GetRemoteQueueRank() const { return m_nRemoteQueueRank; } CPartFile* GetRequestFile() const { return m_reqfile; } uint32 GetScore() const { return m_score; } double GetScoreRatio() const; uint32 GetServerIP() const { return m_dwServerIP; } const wxString GetServerName() const { return m_ServerName; } uint16 GetServerPort() const { return m_nServerPort; } const wxString& GetSoftStr() const { return m_clientSoftString; } const wxString& GetSoftVerStr() const { return m_clientVerString; } ESourceFrom GetSourceFrom() const { return m_nSourceFrom; } uint64 GetTransferredDown() const { return m_nTransferredDown; } uint64 GetTransferredUp() const { return m_nTransferredUp; } uint32 GetUploadDatarate() const { return m_nUpDatarate; } uint64 GetUploadedTotal() const; const CKnownFile* GetUploadFile() const { return m_uploadingfile; } uint16 GetUploadQueueWaitingPosition() const { return m_waitingPosition; } uint8 GetUploadState() const { return m_nUploadState; } size_t GetUpPartCount() const { return m_upPartStatus.size(); } const CMD4Hash& GetUserHash() const { return m_UserHash; } uint32 GetUserIDHybrid() const { return m_nUserIDHybrid; } const wxString& GetUserName() const { return m_Username; } uint16 GetUserPort() const { return m_nUserPort; } uint32 GetVersion() const { return m_nClientVersion; } bool HasDisabledSharedFiles() const { return m_fNoViewSharedFiles; } bool HasLowID() const { return IsLowID(m_nUserIDHybrid); } bool IsBadGuy() const { return m_identState == IS_IDBADGUY; } bool IsFriend() const { return m_Friend != NULL; } bool IsIdentified() const { return m_identState == IS_IDENTIFIED; } bool IsRemoteQueueFull() const { return m_bRemoteQueueFull; } bool IsUpPartAvailable(uint16 iPart) const { return ( iPart < m_upPartStatus.size() ) ? m_upPartStatus.get(iPart) : 0; } void RequestSharedFileList() const; void SetFriend(CFriend* newfriend) { m_Friend = newfriend; } void SetFriendSlot(bool bNV) { m_bFriendSlot = bNV; } bool SUIFailed() const { return m_identState == IS_IDFAILED; } bool SUINeeded() const { return m_identState == IS_IDNEEDED; } bool SUINotSupported() const { return m_identState == IS_NOTAVAILABLE; } bool SwapToAnotherFile(bool bIgnoreNoNeeded, bool ignoreSuspensions, bool bRemoveCompletely, CPartFile* toFile = NULL); private: bool m_bEmuleProtocol; uint16 m_AvailPartCount; wxString m_clientFilename; wxString m_strModVersion; wxString m_sClientOSInfo; uint8 m_clientSoft; wxString m_fullClientVerString; uint8 m_nDownloadState; CFriend* m_Friend; bool m_bFriendSlot; uint16 m_nKadPort; float m_kBpsDown; uint32 m_dwUserIP; uint16 m_lastDownloadingPart; uint16 m_nextRequestedPart; uint8 m_obfuscationStatus; uint16 m_nOldRemoteQueueRank; BitVector m_downPartStatus; uint16 m_nRemoteQueueRank; CPartFile* m_reqfile; uint32 m_score; uint32 m_dwServerIP; wxString m_ServerName; uint16 m_nServerPort; wxString m_clientSoftString; wxString m_clientVerString; ESourceFrom m_nSourceFrom; uint64 m_nTransferredDown; uint64 m_nTransferredUp; uint32 m_nUpDatarate; CKnownFile* m_uploadingfile; uint16 m_waitingPosition; uint8 m_nUploadState; BitVector m_upPartStatus; CMD4Hash m_UserHash; uint32 m_nUserIDHybrid; wxString m_Username; uint16 m_nUserPort; uint32 m_nClientVersion; bool m_fNoViewSharedFiles; EIdentState m_identState; bool m_bRemoteQueueFull; // other stuff CClientCredits *credits; }; #endif amule_2.3.1+git20151120.0023527bc2.orig/src/UploadBandwidthThrottler.cpp0000644000175000017500000003627012611472361023767 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "UploadBandwidthThrottler.h" #include #include #include #include #include // Do_not_auto_remove (NetBSD) #include "OtherFunctions.h" #include "ThrottledSocket.h" #include "Logger.h" #include "Preferences.h" #include "Statistics.h" #ifndef _MSC_VER #ifdef _UI64_MAX #undef _UI64_MAX #endif #ifdef _I64_MAX #undef _I64_MAX #endif const uint32 _UI32_MAX = std::numeric_limits::max(); const sint32 _I32_MAX = std::numeric_limits::max(); const uint64 _UI64_MAX = std::numeric_limits::max(); const sint64 _I64_MAX = std::numeric_limits::max(); #endif ///////////////////////////////////// /** * The constructor starts the thread. */ UploadBandwidthThrottler::UploadBandwidthThrottler() : wxThread( wxTHREAD_JOINABLE ) { m_SentBytesSinceLastCall = 0; m_SentBytesSinceLastCallOverhead = 0; m_doRun = true; Create(); Run(); } /** * The destructor stops the thread. If the thread has already stoppped, destructor does nothing. */ UploadBandwidthThrottler::~UploadBandwidthThrottler() { EndThread(); } /** * Find out how many bytes that has been put on the sockets since the last call to this * method. Includes overhead of control packets. * * @return the number of bytes that has been put on the sockets since the last call */ uint64 UploadBandwidthThrottler::GetNumberOfSentBytesSinceLastCallAndReset() { wxMutexLocker lock( m_sendLocker ); uint64 numberOfSentBytesSinceLastCall = m_SentBytesSinceLastCall; m_SentBytesSinceLastCall = 0; return numberOfSentBytesSinceLastCall; } /** * Find out how many bytes that has been put on the sockets since the last call to this * method. Excludes overhead of control packets. * * @return the number of bytes that has been put on the sockets since the last call */ uint64 UploadBandwidthThrottler::GetNumberOfSentBytesOverheadSinceLastCallAndReset() { wxMutexLocker lock( m_sendLocker ); uint64 numberOfSentBytesSinceLastCall = m_SentBytesSinceLastCallOverhead; m_SentBytesSinceLastCallOverhead = 0; return numberOfSentBytesSinceLastCall; } /** * Add a socket to the list of sockets that have upload slots. The main thread will * continously call send on these sockets, to give them chance to work off their queues. * The sockets are called in the order they exist in the list, so the top socket (index 0) * will be given a chance first to use bandwidth, and then the next socket (index 1) etc. * * It is possible to add a socket several times to the list without removing it inbetween, * but that should be avoided. * * @param index insert the socket at this place in the list. An index that is higher than the * current number of sockets in the list will mean that the socket should be inserted * last in the list. * * @param socket the address to the socket that should be added to the list. If the address is NULL, * this method will do nothing. */ void UploadBandwidthThrottler::AddToStandardList(uint32 index, ThrottledFileSocket* socket) { if ( socket ) { wxMutexLocker lock( m_sendLocker ); RemoveFromStandardListNoLock(socket); if (index > (uint32)m_StandardOrder_list.size()) { index = m_StandardOrder_list.size(); } m_StandardOrder_list.insert(m_StandardOrder_list.begin() + index, socket); } } /** * Remove a socket from the list of sockets that have upload slots. * * If the socket has mistakenly been added several times to the list, this method * will return all of the entries for the socket. * * @param socket the address of the socket that should be removed from the list. If this socket * does not exist in the list, this method will do nothing. */ bool UploadBandwidthThrottler::RemoveFromStandardList(ThrottledFileSocket* socket) { wxMutexLocker lock( m_sendLocker ); return RemoveFromStandardListNoLock(socket); } /** * Remove a socket from the list of sockets that have upload slots. NOT THREADSAFE! * This is an internal method that doesn't take the necessary lock before it removes * the socket. This method should only be called when the current thread already owns * the m_sendLocker lock! * * @param socket address of the socket that should be removed from the list. If this socket * does not exist in the list, this method will do nothing. */ bool UploadBandwidthThrottler::RemoveFromStandardListNoLock(ThrottledFileSocket* socket) { return (EraseFirstValue( m_StandardOrder_list, socket ) > 0); } /** * Notifies the send thread that it should try to call controlpacket send * for the supplied socket. It is allowed to call this method several times * for the same socket, without having controlpacket send called for the socket * first. The doublette entries are never filtered, since it is incurs less cpu * overhead to simply call Send() in the socket for each double. Send() will * already have done its work when the second Send() is called, and will just * return with little cpu overhead. * * @param socket address to the socket that requests to have controlpacket send * to be called on it */ void UploadBandwidthThrottler::QueueForSendingControlPacket(ThrottledControlSocket* socket, bool hasSent) { // Get critical section wxMutexLocker lock( m_tempQueueLocker ); if ( m_doRun ) { if( hasSent ) { m_TempControlQueueFirst_list.push_back(socket); } else { m_TempControlQueue_list.push_back(socket); } } } /** * Remove the socket from all lists and queues. This will make it safe to * erase/delete the socket. It will also cause the main thread to stop calling * send() for the socket. * * @param socket address to the socket that should be removed */ void UploadBandwidthThrottler::DoRemoveFromAllQueues(ThrottledControlSocket* socket) { if ( m_doRun ) { // Remove this socket from control packet queue EraseValue( m_ControlQueue_list, socket ); EraseValue( m_ControlQueueFirst_list, socket ); wxMutexLocker lock( m_tempQueueLocker ); EraseValue( m_TempControlQueue_list, socket ); EraseValue( m_TempControlQueueFirst_list, socket ); } } void UploadBandwidthThrottler::RemoveFromAllQueues(ThrottledControlSocket* socket) { wxMutexLocker lock( m_sendLocker ); DoRemoveFromAllQueues( socket ); } void UploadBandwidthThrottler::RemoveFromAllQueues(ThrottledFileSocket* socket) { wxMutexLocker lock( m_sendLocker ); if (m_doRun) { DoRemoveFromAllQueues(socket); // And remove it from upload slots RemoveFromStandardListNoLock(socket); } } /** * Make the thread exit. This method will not return until the thread has stopped * looping. This guarantees that the thread will not access the CEMSockets after this * call has exited. */ void UploadBandwidthThrottler::EndThread() { if (m_doRun) { // do it only once { wxMutexLocker lock(m_sendLocker); // signal the thread to stop looping and exit. m_doRun = false; } Wait(); } } /** * The thread method that handles calling send for the individual sockets. * * Control packets will always be tried to be sent first. If there is any bandwidth leftover * after that, send() for the upload slot sockets will be called in priority order until we have run * out of available bandwidth for this loop. Upload slots will not be allowed to go without having sent * called for more than a defined amount of time (i.e. two seconds). * * @return always returns 0. */ void* UploadBandwidthThrottler::Entry() { const uint32 TIME_BETWEEN_UPLOAD_LOOPS = 1; uint32 lastLoopTick = GetTickCountFullRes(); // Bytes to spend in current cycle. If we spend more this becomes negative and causes a wait next time. sint32 bytesToSpend = 0; uint32 allowedDataRate = 0; uint32 rememberedSlotCounter = 0; uint32 extraSleepTime = TIME_BETWEEN_UPLOAD_LOOPS; while (m_doRun && !TestDestroy()) { uint32 timeSinceLastLoop = GetTickCountFullRes() - lastLoopTick; // Calculate data rate if (thePrefs::GetMaxUpload() == UNLIMITED) { // Try to increase the upload rate from UploadSpeedSense allowedDataRate = (uint32)theStats::GetUploadRate() + 5 * 1024; } else { allowedDataRate = thePrefs::GetMaxUpload() * 1024; } uint32 minFragSize = 1300; uint32 doubleSendSize = minFragSize*2; // send two packages at a time so they can share an ACK if (allowedDataRate < 6*1024) { minFragSize = 536; doubleSendSize = minFragSize; // don't send two packages at a time at very low speeds to give them a smoother load } uint32 sleepTime; if (bytesToSpend < 1) { // We have sent more than allowed in last cycle so we have to wait now // until we can send at least 1 byte. sleepTime = std::max((-bytesToSpend + 1) * 1000 / allowedDataRate + 2, // add 2 ms to allow for rounding inaccuracies extraSleepTime); } else { // We could send at once, but sleep a while to not suck up all cpu sleepTime = extraSleepTime; } if (timeSinceLastLoop < sleepTime) { Sleep(sleepTime-timeSinceLastLoop); } // Check after sleep in case the thread has been signaled to end if (!m_doRun || TestDestroy()) { break; } const uint32 thisLoopTick = GetTickCountFullRes(); timeSinceLastLoop = thisLoopTick - lastLoopTick; lastLoopTick = thisLoopTick; if (timeSinceLastLoop > sleepTime + 2000) { AddDebugLogLineN(logGeneral, CFormat(wxT("UploadBandwidthThrottler: Time since last loop too long. time: %ims wanted: %ims Max: %ims")) % timeSinceLastLoop % sleepTime % (sleepTime + 2000)); timeSinceLastLoop = sleepTime + 2000; } // Calculate how many bytes we can spend bytesToSpend += (sint32) (allowedDataRate / 1000.0 * timeSinceLastLoop); if (bytesToSpend >= 1) { sint32 spentBytes = 0; sint32 spentOverhead = 0; wxMutexLocker sendLock(m_sendLocker); { wxMutexLocker queueLock(m_tempQueueLocker); // are there any sockets in m_TempControlQueue_list? Move them to normal m_ControlQueue_list; m_ControlQueueFirst_list.insert( m_ControlQueueFirst_list.end(), m_TempControlQueueFirst_list.begin(), m_TempControlQueueFirst_list.end() ); m_ControlQueue_list.insert( m_ControlQueue_list.end(), m_TempControlQueue_list.begin(), m_TempControlQueue_list.end() ); m_TempControlQueue_list.clear(); m_TempControlQueueFirst_list.clear(); } // Send any queued up control packets first while (spentBytes < bytesToSpend && (!m_ControlQueueFirst_list.empty() || !m_ControlQueue_list.empty())) { ThrottledControlSocket* socket = NULL; if (!m_ControlQueueFirst_list.empty()) { socket = m_ControlQueueFirst_list.front(); m_ControlQueueFirst_list.pop_front(); } else if (!m_ControlQueue_list.empty()) { socket = m_ControlQueue_list.front(); m_ControlQueue_list.pop_front(); } if (socket != NULL) { SocketSentBytes socketSentBytes = socket->SendControlData(bytesToSpend-spentBytes, minFragSize); spentBytes += socketSentBytes.sentBytesControlPackets + socketSentBytes.sentBytesStandardPackets; spentOverhead += socketSentBytes.sentBytesControlPackets; } } // Check if any sockets haven't gotten data for a long time. Then trickle them a package. uint32 slots = m_StandardOrder_list.size(); for (uint32 slotCounter = 0; slotCounter < slots; slotCounter++) { ThrottledFileSocket* socket = m_StandardOrder_list[ slotCounter ]; if (socket != NULL) { if (thisLoopTick-socket->GetLastCalledSend() > SEC2MS(1)) { // trickle uint32 neededBytes = socket->GetNeededBytes(); if (neededBytes > 0) { SocketSentBytes socketSentBytes = socket->SendFileAndControlData(neededBytes, minFragSize); spentBytes += socketSentBytes.sentBytesControlPackets + socketSentBytes.sentBytesStandardPackets; spentOverhead += socketSentBytes.sentBytesControlPackets; } } } else { AddDebugLogLineN(logGeneral, CFormat( wxT("There was a NULL socket in the UploadBandwidthThrottler Standard list (trickle)! Prevented usage. Index: %i Size: %i")) % slotCounter % m_StandardOrder_list.size()); } } // Give available bandwidth to slots, starting with the one we ended with last time. // There are two passes. First pass gives packets of doubleSendSize, second pass // gives as much as possible. // Second pass starts with the last slot of the first pass actually. for (uint32 slotCounter = 0; (slotCounter < slots * 2) && spentBytes < bytesToSpend; slotCounter++) { if (rememberedSlotCounter >= slots) { // wrap around pointer rememberedSlotCounter = 0; } uint32 data = (slotCounter < slots - 1) ? doubleSendSize // pass 1 : (bytesToSpend - spentBytes); // pass 2 ThrottledFileSocket* socket = m_StandardOrder_list[ rememberedSlotCounter ]; if (socket != NULL) { SocketSentBytes socketSentBytes = socket->SendFileAndControlData(data, doubleSendSize); spentBytes += socketSentBytes.sentBytesControlPackets + socketSentBytes.sentBytesStandardPackets; spentOverhead += socketSentBytes.sentBytesControlPackets; } else { AddDebugLogLineN(logGeneral, CFormat(wxT("There was a NULL socket in the UploadBandwidthThrottler Standard list (equal-for-all)! Prevented usage. Index: %i Size: %i")) % rememberedSlotCounter % m_StandardOrder_list.size()); } rememberedSlotCounter++; } // Do some limiting of what we keep for the next loop. bytesToSpend -= spentBytes; sint32 minBytesToSpend = (slots + 1) * minFragSize; if (bytesToSpend < - minBytesToSpend) { bytesToSpend = - minBytesToSpend; } else { sint32 bandwidthSavedTolerance = slots * 512 + 1; if (bytesToSpend > bandwidthSavedTolerance) { bytesToSpend = bandwidthSavedTolerance; } } m_SentBytesSinceLastCall += spentBytes; m_SentBytesSinceLastCallOverhead += spentOverhead; if (spentBytes == 0) { // spentBytes includes the overhead extraSleepTime = std::min(extraSleepTime * 5, 1000); // 1s at most } else { extraSleepTime = TIME_BETWEEN_UPLOAD_LOOPS; } } } { wxMutexLocker queueLock(m_tempQueueLocker); m_TempControlQueue_list.clear(); m_TempControlQueueFirst_list.clear(); } wxMutexLocker sendLock(m_sendLocker); m_ControlQueue_list.clear(); m_StandardOrder_list.clear(); return 0; } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/UploadBandwidthThrottler.h0000644000175000017500000000564312611472361023434 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef UPLOADBANDWIDTHTHROTTLER_H #define UPLOADBANDWIDTHTHROTTLER_H #include #include #include "Types.h" class ThrottledControlSocket; class ThrottledFileSocket; class UploadBandwidthThrottler : public wxThread { public: UploadBandwidthThrottler(); ~UploadBandwidthThrottler(); uint64 GetNumberOfSentBytesSinceLastCallAndReset(); uint64 GetNumberOfSentBytesOverheadSinceLastCallAndReset(); void AddToStandardList(uint32 index, ThrottledFileSocket* socket); bool RemoveFromStandardList(ThrottledFileSocket* socket); void QueueForSendingControlPacket(ThrottledControlSocket* socket, bool hasSent = false); void RemoveFromAllQueues(ThrottledControlSocket* socket); void RemoveFromAllQueues(ThrottledFileSocket* socket); void EndThread(); private: void DoRemoveFromAllQueues(ThrottledControlSocket* socket); bool RemoveFromStandardListNoLock(ThrottledFileSocket* socket); void* Entry(); bool m_doRun; wxMutex m_sendLocker; wxMutex m_tempQueueLocker; typedef std::deque SocketQueue; // a queue for all the sockets that want to have Send() called on them. SocketQueue m_ControlQueue_list; // a queue for all the sockets that want to have Send() called on them. SocketQueue m_ControlQueueFirst_list; // sockets that wants to enter m_ControlQueue_list SocketQueue m_TempControlQueue_list; // sockets that wants to enter m_ControlQueue_list and has been able to send before SocketQueue m_TempControlQueueFirst_list; typedef std::deque FileSocketQueue; // sockets that have upload slots. Ordered so the most prioritized socket is first FileSocketQueue m_StandardOrder_list; uint64 m_SentBytesSinceLastCall; uint64 m_SentBytesSinceLastCallOverhead; }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/UploadClient.cpp0000644000175000017500000007041112611472361021364 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "updownclient.h" // Needed for CUpDownClient #include #include #include #include "ClientCredits.h" // Needed for CClientCredits #include "Packet.h" // Needed for CPacket #include "MemFile.h" // Needed for CMemFile #include "UploadQueue.h" // Needed for CUploadQueue #include "DownloadQueue.h" // Needed for CDownloadQueue #include "PartFile.h" // Needed for PR_POWERSHARE #include "ClientTCPSocket.h" // Needed for CClientTCPSocket #include "SharedFileList.h" // Needed for CSharedFileList #include "amule.h" // Needed for theApp #include "ClientList.h" #include "Statistics.h" // Needed for theStats #include "Logger.h" #include "ScopedPtr.h" // Needed for CScopedArray #include "GuiEvents.h" // Needed for Notify_* #include "FileArea.h" // Needed for CFileArea // members of CUpDownClient // which are mainly used for uploading functions void CUpDownClient::SetUploadState(uint8 eNewState) { if (eNewState != m_nUploadState) { if (m_nUploadState == US_UPLOADING) { // Reset upload data rate computation m_nUpDatarate = 0; m_nSumForAvgUpDataRate = 0; m_AvarageUDR_list.clear(); } if (eNewState == US_UPLOADING) { m_fSentOutOfPartReqs = 0; } // don't add any final cleanups for US_NONE here m_nUploadState = eNewState; UpdateDisplayedInfo(true); } } uint32 CUpDownClient::CalculateScoreInternal() { //TODO: complete this (friends, uploadspeed, amuleuser etc etc) if (m_Username.IsEmpty()) { return 0; } if (credits == 0) { return 0; } const CKnownFile* pFile = GetUploadFile(); if ( !pFile ) { return 0; } // bad clients (see note in function) if (IsBadGuy()) { return 0; } // friend slot if (IsFriend() && GetFriendSlot() && !HasLowID()) { return 0x0FFFFFFF; } if (IsBanned()) return 0; // score applies only to waiting clients, not to downloading clients if (IsDownloading()) { return 0; } // calculate score, based on waitingtime and other factors float fBaseValue = (float)(::GetTickCount()-GetWaitStartTime())/1000; fBaseValue *= GetScoreRatio(); // credits // Take file upload priority into account // // One yet unsolved problem here: // sometimes a client asks for 2 files and there is no way to decide, which file the // client finally gets. so it could happen that he is queued first because of a // high prio file, but then asks for something completely different. float filepriority; switch (pFile->GetUpPriority()) { case PR_POWERSHARE: filepriority = 250.0f; break; case PR_VERYHIGH: filepriority = 1.8f; break; case PR_HIGH: filepriority = 0.9f; break; case PR_LOW: filepriority = 0.6f; break; case PR_VERYLOW: filepriority = 0.2f; break; case PR_NORMAL: default: filepriority = 0.7f; break; } fBaseValue *= filepriority; if ( (IsEmuleClient() || GetClientSoft() < 10) && m_byEmuleVersion <= 0x19) { fBaseValue *= 0.5f; } return (uint32)fBaseValue; } // Checks if it is next requested block from another chunk of the actual file or from another file // // [Returns] // true : Next requested block is from another different chunk or file than last downloaded block // false: Next requested block is from same chunk that last downloaded block bool CUpDownClient::IsDifferentPartBlock() const // [Tarod 12/22/2002] { bool different_part = false; // Check if we have good lists and proceed to check for different chunks if ((!m_BlockRequests_queue.empty()) && !m_DoneBlocks_list.empty()) { Requested_Block_Struct* last_done_block = NULL; Requested_Block_Struct* next_requested_block = NULL; uint64 last_done_part = 0xffffffff; uint64 next_requested_part = 0xffffffff; // Get last block and next pending last_done_block = m_DoneBlocks_list.front(); next_requested_block = m_BlockRequests_queue.front(); // Calculate corresponding parts to blocks last_done_part = last_done_block->StartOffset / PARTSIZE; next_requested_part = next_requested_block->StartOffset / PARTSIZE; // Test is we are asking same file and same part if ( last_done_part != next_requested_part) { different_part = true; AddDebugLogLineN(logClient, wxT("Session ended due to new chunk.")); } if (md4cmp(last_done_block->FileID, next_requested_block->FileID) != 0) { different_part = true; AddDebugLogLineN(logClient, wxT("Session ended due to different file.")); } } return different_part; } void CUpDownClient::CreateNextBlockPackage() { try { // Buffer new data if current buffer is less than 100 KBytes while (!m_BlockRequests_queue.empty() && m_addedPayloadQueueSession - m_nCurQueueSessionPayloadUp < 100*1024) { Requested_Block_Struct* currentblock = m_BlockRequests_queue.front(); CKnownFile* srcfile = theApp->sharedfiles->GetFileByID(CMD4Hash(currentblock->FileID)); if (!srcfile) { throw wxString(wxT("requested file not found")); } // Check if this know file is a CPartFile. // For completed part files IsPartFile() returns false, so they are // correctly treated as plain CKnownFile. CPartFile* srcPartFile = srcfile->IsPartFile() ? static_cast(srcfile) : NULL; // THIS EndOffset points BEHIND the last byte requested // (other than the offsets used in the PartFile code) if (currentblock->EndOffset > srcfile->GetFileSize()) { throw wxString(CFormat(wxT("Asked for data up to %d beyond end of file (%d)")) % currentblock->EndOffset % srcfile->GetFileSize()); } else if (currentblock->StartOffset > currentblock->EndOffset) { throw wxString(CFormat(wxT("Asked for invalid block (start %d > end %d)")) % currentblock->StartOffset % currentblock->EndOffset); } uint64 togo = currentblock->EndOffset - currentblock->StartOffset; if (togo > EMBLOCKSIZE * 3) { throw wxString(CFormat(wxT("Client requested too large block (%d > %d)")) % togo % (EMBLOCKSIZE * 3)); } CFileArea area; if (srcPartFile) { if (!srcPartFile->IsComplete(currentblock->StartOffset,currentblock->EndOffset-1)) { throw wxString(CFormat(wxT("Asked for incomplete block (%d - %d)")) % currentblock->StartOffset % (currentblock->EndOffset-1)); } if (!srcPartFile->ReadData(area, currentblock->StartOffset, togo)) { throw wxString(wxT("Failed to read from requested partfile")); } } else { CFileAutoClose file; CPath fullname = srcfile->GetFilePath().JoinPaths(srcfile->GetFileName()); if ( !file.Open(fullname, CFile::read) ) { // The file was most likely moved/deleted. So remove it from the list of shared files. AddLogLineN(CFormat( _("Failed to open file (%s), removing from list of shared files.") ) % srcfile->GetFileName() ); theApp->sharedfiles->RemoveFile(srcfile); throw wxString(wxT("Failed to open requested file: Removing from list of shared files!")); } area.ReadAt(file, currentblock->StartOffset, togo); } area.CheckError(); SetUploadFileID(srcfile); // check extention to decide whether to compress or not if (m_byDataCompVer == 1 && GetFiletype(srcfile->GetFileName()) != ftArchive) { CreatePackedPackets(area.GetBuffer(), togo, currentblock); } else { CreateStandardPackets(area.GetBuffer(), togo, currentblock); } // file statistic srcfile->statistic.AddTransferred(togo); m_addedPayloadQueueSession += togo; Requested_Block_Struct* block = m_BlockRequests_queue.front(); m_BlockRequests_queue.pop_front(); m_DoneBlocks_list.push_front(block); } return; } catch (const wxString& DEBUG_ONLY(error)) { AddDebugLogLineN(logClient, CFormat(wxT("Client '%s' (%s) caused error while creating packet (%s) - disconnecting client")) % GetUserName() % GetFullIP() % error); } catch (const CIOFailureException& error) { AddDebugLogLineC(logClient, wxT("IO failure while reading requested file: ") + error.what()); } catch (const CEOFException& WXUNUSED(error)) { AddDebugLogLineN(logClient, GetClientFullInfo() + wxT(" requested file-data at an invalid position - disconnecting")); } // Error occured. theApp->uploadqueue->RemoveFromUploadQueue(this); } void CUpDownClient::CreateStandardPackets(const byte* buffer, uint32 togo, Requested_Block_Struct* currentblock) { uint32 nPacketSize; CMemFile memfile(buffer, togo); if (togo > 10240) { nPacketSize = togo/(uint32)(togo/10240); } else { nPacketSize = togo; } while (togo){ if (togo < nPacketSize*2) { nPacketSize = togo; } wxASSERT(nPacketSize); togo -= nPacketSize; uint64 endpos = (currentblock->EndOffset - togo); uint64 startpos = endpos - nPacketSize; bool bLargeBlocks = (startpos > 0xFFFFFFFF) || (endpos > 0xFFFFFFFF); CMemFile data(nPacketSize + 16 + 2 * (bLargeBlocks ? 8 :4)); data.WriteHash(GetUploadFileID()); if (bLargeBlocks) { data.WriteUInt64(startpos); data.WriteUInt64(endpos); } else { data.WriteUInt32(startpos); data.WriteUInt32(endpos); } char *tempbuf = new char[nPacketSize]; memfile.Read(tempbuf, nPacketSize); data.Write(tempbuf, nPacketSize); delete [] tempbuf; CPacket* packet = new CPacket(data, (bLargeBlocks ? OP_EMULEPROT : OP_EDONKEYPROT), (bLargeBlocks ? (uint8)OP_SENDINGPART_I64 : (uint8)OP_SENDINGPART)); theStats::AddUpOverheadFileRequest(16 + 2 * (bLargeBlocks ? 8 :4)); theStats::AddUploadToSoft(GetClientSoft(), nPacketSize); AddDebugLogLineN(logLocalClient, CFormat(wxT("Local Client: %s to %s")) % (bLargeBlocks ? wxT("OP_SENDINGPART_I64") : wxT("OP_SENDINGPART")) % GetFullIP() ); m_socket->SendPacket(packet,true,false, nPacketSize); } } void CUpDownClient::CreatePackedPackets(const byte* buffer, uint32 togo, Requested_Block_Struct* currentblock) { uLongf newsize = togo+300; CScopedArray output(newsize); uint16 result = compress2(output.get(), &newsize, buffer, togo, 9); if (result != Z_OK || togo <= newsize){ CreateStandardPackets(buffer, togo, currentblock); return; } CMemFile memfile(output.get(), newsize); uint32 totalPayloadSize = 0; uint32 oldSize = togo; togo = newsize; uint32 nPacketSize; if (togo > 10240) { nPacketSize = togo/(uint32)(togo/10240); } else { nPacketSize = togo; } while (togo) { if (togo < nPacketSize*2) { nPacketSize = togo; } togo -= nPacketSize; bool isLargeBlock = (currentblock->StartOffset > 0xFFFFFFFF) || (currentblock->EndOffset > 0xFFFFFFFF); CMemFile data(nPacketSize + 16 + (isLargeBlock ? 12 : 8)); data.WriteHash(GetUploadFileID()); if (isLargeBlock) { data.WriteUInt64(currentblock->StartOffset); } else { data.WriteUInt32(currentblock->StartOffset); } data.WriteUInt32(newsize); char *tempbuf = new char[nPacketSize]; memfile.Read(tempbuf, nPacketSize); data.Write(tempbuf,nPacketSize); delete [] tempbuf; CPacket* packet = new CPacket(data, OP_EMULEPROT, (isLargeBlock ? OP_COMPRESSEDPART_I64 : OP_COMPRESSEDPART)); // approximate payload size uint32 payloadSize = nPacketSize*oldSize/newsize; if (togo == 0 && totalPayloadSize+payloadSize < oldSize) { payloadSize = oldSize-totalPayloadSize; } totalPayloadSize += payloadSize; // put packet directly on socket theStats::AddUpOverheadFileRequest(24); theStats::AddUploadToSoft(GetClientSoft(), nPacketSize); AddDebugLogLineN(logLocalClient, CFormat(wxT("Local Client: %s to %s")) % (isLargeBlock ? wxT("OP_COMPRESSEDPART_I64") : wxT("OP_COMPRESSEDPART")) % GetFullIP() ); m_socket->SendPacket(packet,true,false, payloadSize); } } void CUpDownClient::ProcessExtendedInfo(const CMemFile *data, CKnownFile *tempreqfile) { m_uploadingfile->UpdateUpPartsFrequency( this, false ); // Decrement m_upPartStatus.clear(); m_nUpCompleteSourcesCount= 0; if( GetExtendedRequestsVersion() == 0 ) { // Something is coded wrong on this client if he's sending something it doesn't advertise. return; } if (data->GetLength() == 16) { // Wrong again. Advertised >0 but send a 0-type packet. // But this time we'll disconnect it. throw CInvalidPacket(wxT("Wrong size on extended info packet")); } uint16 nED2KUpPartCount = data->ReadUInt16(); if (!nED2KUpPartCount) { m_upPartStatus.setsize( tempreqfile->GetPartCount(), 0 ); } else { if (tempreqfile->GetED2KPartCount() != nED2KUpPartCount) { // We already checked if we are talking about the same file.. So if we get here, something really strange happened! m_upPartStatus.clear(); return; } m_upPartStatus.setsize( tempreqfile->GetPartCount(), 0 ); try { uint16 done = 0; while (done != m_upPartStatus.size()) { uint8 toread = data->ReadUInt8(); for (sint32 i = 0;i != 8;i++){ m_upPartStatus.set(done, (toread>>i)&1); // We may want to use this for another feature.. // if (m_upPartStatus[done] && !tempreqfile->IsComplete(done*PARTSIZE,((done+1)*PARTSIZE)-1)) // bPartsNeeded = true; done++; if (done == m_upPartStatus.size()) { break; } } } } catch (...) { // We want the increment the frequency even if we didn't read everything m_uploadingfile->UpdateUpPartsFrequency( this, true ); // Increment throw; } if (GetExtendedRequestsVersion() > 1) { uint16 nCompleteCountLast = GetUpCompleteSourcesCount(); uint16 nCompleteCountNew = data->ReadUInt16(); SetUpCompleteSourcesCount(nCompleteCountNew); if (nCompleteCountLast != nCompleteCountNew) { tempreqfile->UpdatePartsInfo(); } } } m_uploadingfile->UpdateUpPartsFrequency( this, true ); // Increment Notify_SharedCtrlRefreshClient(ECID(), AVAILABLE_SOURCE); } void CUpDownClient::SetUploadFileID(CKnownFile* newreqfile) { if (m_uploadingfile == newreqfile) { return; } else if (m_uploadingfile) { m_uploadingfile->RemoveUploadingClient(this); m_uploadingfile->UpdateUpPartsFrequency(this, false); // Decrement } if (newreqfile) { // This is a new file! update info newreqfile->AddUploadingClient(this); if (m_requpfileid != newreqfile->GetFileHash()) { m_requpfileid = newreqfile->GetFileHash(); m_upPartStatus.setsize( newreqfile->GetPartCount(), 0 ); } else { // this is the same file we already had assigned. Only update data. newreqfile->UpdateUpPartsFrequency(this, true); // Increment } m_uploadingfile = newreqfile; } else { m_upPartStatus.clear(); m_nUpCompleteSourcesCount = 0; // This clears m_uploadingfile and m_requpfileid ClearUploadFileID(); } } void CUpDownClient::AddReqBlock(Requested_Block_Struct* reqblock) { if (GetUploadState() != US_UPLOADING) { AddDebugLogLineN(logRemoteClient, wxT("UploadClient: Client tried to add requested block when not in upload slot! Prevented requested blocks from being added.")); delete reqblock; return; } { std::list::iterator it = m_DoneBlocks_list.begin(); for (; it != m_DoneBlocks_list.end(); ++it) { if (reqblock->StartOffset == (*it)->StartOffset && reqblock->EndOffset == (*it)->EndOffset) { delete reqblock; return; } } } { std::list::iterator it = m_BlockRequests_queue.begin(); for (; it != m_BlockRequests_queue.end(); ++it) { if (reqblock->StartOffset == (*it)->StartOffset && reqblock->EndOffset == (*it)->EndOffset) { delete reqblock; return; } } } m_BlockRequests_queue.push_back(reqblock); } uint32 CUpDownClient::GetWaitStartTime() const { uint32 dwResult = 0; if ( credits ) { dwResult = credits->GetSecureWaitStartTime(GetIP()); if (dwResult > m_dwUploadTime && IsDownloading()) { // This happens only if two clients with invalid securehash are in the queue - if at all dwResult = m_dwUploadTime - 1; } } return dwResult; } void CUpDownClient::SetWaitStartTime() { if ( credits ) { credits->SetSecWaitStartTime(GetIP()); } } void CUpDownClient::ClearWaitStartTime() { if ( credits ) { credits->ClearWaitStartTime(); } } void CUpDownClient::ResetSessionUp() { m_nCurSessionUp = m_nTransferredUp; m_addedPayloadQueueSession = 0; m_nCurQueueSessionPayloadUp = 0; // If upload was resumed there can be a remaining payload in the socket // causing (prepared - sent) getting negative. So reset the counter here. if (m_socket) { CEMSocket* s = m_socket; s->GetSentPayloadSinceLastCallAndReset(); } } uint32 CUpDownClient::SendBlockData() { uint32 curTick = ::GetTickCount(); uint64 sentBytesCompleteFile = 0; uint64 sentBytesPartFile = 0; uint64 sentBytesPayload = 0; if (m_socket) { CEMSocket* s = m_socket; // uint32 uUpStatsPort = GetUserPort(); // Extended statistics information based on which client software and which port we sent this data to... // This also updates the grand total for sent bytes, etc. And where this data came from. sentBytesCompleteFile = s->GetSentBytesCompleteFileSinceLastCallAndReset(); sentBytesPartFile = s->GetSentBytesPartFileSinceLastCallAndReset(); // thePrefs.Add2SessionTransferData(GetClientSoft(), uUpStatsPort, false, true, sentBytesCompleteFile, (IsFriend() && GetFriendSlot())); // thePrefs.Add2SessionTransferData(GetClientSoft(), uUpStatsPort, true, true, sentBytesPartFile, (IsFriend() && GetFriendSlot())); m_nTransferredUp += sentBytesCompleteFile + sentBytesPartFile; credits->AddUploaded(sentBytesCompleteFile + sentBytesPartFile, GetIP(), theApp->CryptoAvailable()); sentBytesPayload = s->GetSentPayloadSinceLastCallAndReset(); m_nCurQueueSessionPayloadUp += sentBytesPayload; if (theApp->uploadqueue->CheckForTimeOver(this)) { theApp->uploadqueue->RemoveFromUploadQueue(this); SendOutOfPartReqsAndAddToWaitingQueue(); } else { // read blocks from file and put on socket CreateNextBlockPackage(); } } if(sentBytesCompleteFile + sentBytesPartFile > 0 || m_AvarageUDR_list.empty() || (curTick - m_AvarageUDR_list.back().timestamp) > 1*1000) { // Store how much data we've transferred this round, // to be able to calculate average speed later // keep sum of all values in list up to date TransferredData newitem = {(uint32) (sentBytesCompleteFile + sentBytesPartFile), curTick}; m_AvarageUDR_list.push_back(newitem); m_nSumForAvgUpDataRate += sentBytesCompleteFile + sentBytesPartFile; } // remove to old values in list while ((!m_AvarageUDR_list.empty()) && (curTick - m_AvarageUDR_list.front().timestamp) > 10*1000) { // keep sum of all values in list up to date m_nSumForAvgUpDataRate -= m_AvarageUDR_list.front().datalen; m_AvarageUDR_list.pop_front(); } // Calculate average speed for this slot if ((!m_AvarageUDR_list.empty()) && (curTick - m_AvarageUDR_list.front().timestamp) > 0 && GetUpStartTimeDelay() > 2*1000) { m_nUpDatarate = ((uint64)m_nSumForAvgUpDataRate*1000) / (curTick-m_AvarageUDR_list.front().timestamp); } else { // not enough values to calculate trustworthy speed. Use -1 to tell this m_nUpDatarate = 0; //-1; } // Check if it's time to update the display. m_cSendblock++; if (m_cSendblock == 30){ m_cSendblock = 0; Notify_SharedCtrlRefreshClient(ECID(), AVAILABLE_SOURCE); } return sentBytesCompleteFile + sentBytesPartFile; } void CUpDownClient::SendOutOfPartReqsAndAddToWaitingQueue() { // Kry - this is actually taken from eMule, but makes a lot of sense ;) //OP_OUTOFPARTREQS will tell the downloading client to go back to OnQueue.. //The main reason for this is that if we put the client back on queue and it goes //back to the upload before the socket times out... We get a situation where the //downloader thinks it already sent the requested blocks and the uploader thinks //the downloader didn't send any request blocks. Then the connection times out.. //I did some tests with eDonkey also and it seems to work well with them also.. // Send this inmediately, don't queue. CPacket* pPacket = new CPacket(OP_OUTOFPARTREQS, 0, OP_EDONKEYPROT); theStats::AddUpOverheadFileRequest(pPacket->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_OUTOFPARTREQS to ") + GetFullIP() ); SendPacket(pPacket, true, true); theApp->uploadqueue->AddClientToQueue(this); } /** * See description for CEMSocket::TruncateQueues(). */ void CUpDownClient::FlushSendBlocks() { // Call this when you stop upload, or the socket might be not able to send if (m_socket) { //socket may be NULL... m_socket->TruncateQueues(); } } void CUpDownClient::SendHashsetPacket(const CMD4Hash& forfileid) { CKnownFile* file = theApp->sharedfiles->GetFileByID( forfileid ); bool from_dq = false; if ( !file ) { from_dq = true; if ((file = theApp->downloadqueue->GetFileByID(forfileid)) == NULL) { AddLogLineN(CFormat( _("Hashset requested for unknown file: %s") ) % forfileid.Encode() ); return; } } if ( !file->GetHashCount() ) { if (from_dq) { AddDebugLogLineN(logRemoteClient, wxT("Requested hashset could not be found")); return; } else { file = theApp->downloadqueue->GetFileByID(forfileid); if (!(file && file->GetHashCount())) { AddDebugLogLineN(logRemoteClient, wxT("Requested hashset could not be found")); return; } } } CMemFile data(1024); data.WriteHash(file->GetFileHash()); uint16 parts = file->GetHashCount(); data.WriteUInt16(parts); for (int i = 0; i != parts; i++) { data.WriteHash(file->GetPartHash(i)); } CPacket* packet = new CPacket(data, OP_EDONKEYPROT, OP_HASHSETANSWER); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_HASHSETANSWER to ") + GetFullIP()); SendPacket(packet,true,true); } void CUpDownClient::ClearUploadBlockRequests() { FlushSendBlocks(); DeleteContents(m_BlockRequests_queue); DeleteContents(m_DoneBlocks_list); } void CUpDownClient::SendRankingInfo(){ if (!ExtProtocolAvailable()) { return; } uint16 nRank = GetUploadQueueWaitingPosition(); if (!nRank) { return; } CMemFile data; data.WriteUInt16(nRank); // Kry: what are these zero bytes for. are they really correct? // Kry - Well, eMule does like that. I guess they're ok. data.WriteUInt32(0); data.WriteUInt32(0); data.WriteUInt16(0); CPacket* packet = new CPacket(data, OP_EMULEPROT, OP_QUEUERANKING); theStats::AddUpOverheadOther(packet->GetPacketSize()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_QUEUERANKING to ") + GetFullIP()); SendPacket(packet,true,true); } void CUpDownClient::SendCommentInfo(CKnownFile* file) { if (!m_bCommentDirty || file == NULL || !ExtProtocolAvailable() || m_byAcceptCommentVer < 1) { return; } m_bCommentDirty = false; // Truncate to max len. wxString desc = file->GetFileComment().Left(MAXFILECOMMENTLEN); uint8 rating = file->GetFileRating(); if ( file->GetFileRating() == 0 && desc.IsEmpty() ) { return; } CMemFile data(256); data.WriteUInt8(rating); data.WriteString(desc, GetUnicodeSupport(), 4 /* size it's uint32 */); CPacket* packet = new CPacket(data, OP_EMULEPROT, OP_FILEDESC); theStats::AddUpOverheadOther(packet->GetPacketSize()); AddDebugLogLineN(logLocalClient, wxT("Local Client: OP_FILEDESC to ") + GetFullIP()); SendPacket(packet,true); } void CUpDownClient::UnBan(){ m_Aggressiveness = 0; theApp->clientlist->AddTrackClient(this); theApp->clientlist->RemoveBannedClient( GetIP() ); SetUploadState(US_NONE); ClearWaitStartTime(); } void CUpDownClient::Ban(){ theApp->clientlist->AddTrackClient(this); theApp->clientlist->AddBannedClient( GetIP() ); AddDebugLogLineN(logClient, wxT("Client '") + GetUserName() + wxT("' seems to be an aggressive client and is banned from the uploadqueue")); SetUploadState(US_BANNED); Notify_SharedCtrlRefreshClient(ECID(), UNAVAILABLE_SOURCE); } bool CUpDownClient::IsBanned() const { return ( (theApp->clientlist->IsBannedClient(GetIP()) ) && m_nDownloadState != DS_DOWNLOADING); } void CUpDownClient::CheckForAggressive() { uint32 cur_time = ::GetTickCount(); // First call, initalize if ( !m_LastFileRequest ) { m_LastFileRequest = cur_time; return; } // Is this an aggressive request? if ( ( cur_time - m_LastFileRequest ) < MIN_REQUESTTIME ) { m_Aggressiveness += 3; // Is the client EVIL? if ( m_Aggressiveness >= 10 && (!IsBanned() && m_nDownloadState != DS_DOWNLOADING )) { AddDebugLogLineN(logClient, CFormat( wxT("Aggressive client banned (score: %d): %s -- %s -- %s") ) % m_Aggressiveness % m_Username % m_strModVersion % m_fullClientVerString ); Ban(); } } else { // Polite request, reward client if ( m_Aggressiveness ) m_Aggressiveness--; } m_LastFileRequest = cur_time; } void CUpDownClient::SetUploadFileID(const CMD4Hash& new_id) { // Update the uploading file found CKnownFile* uploadingfile = theApp->sharedfiles->GetFileByID(new_id); if ( !uploadingfile ) { // Can this really happen? uploadingfile = theApp->downloadqueue->GetFileByID(new_id); } SetUploadFileID(uploadingfile); // This will update queue count on old and new file. } void CUpDownClient::ProcessRequestPartsPacket(const byte* pachPacket, uint32 nSize, bool largeblocks) { CMemFile data(pachPacket, nSize); CMD4Hash reqfilehash = data.ReadHash(); uint64 auStartOffsets[3]; uint64 auEndOffsets[3]; if (largeblocks) { auStartOffsets[0] = data.ReadUInt64(); auStartOffsets[1] = data.ReadUInt64(); auStartOffsets[2] = data.ReadUInt64(); auEndOffsets[0] = data.ReadUInt64(); auEndOffsets[1] = data.ReadUInt64(); auEndOffsets[2] = data.ReadUInt64(); } else { auStartOffsets[0] = data.ReadUInt32(); auStartOffsets[1] = data.ReadUInt32(); auStartOffsets[2] = data.ReadUInt32(); auEndOffsets[0] = data.ReadUInt32(); auEndOffsets[1] = data.ReadUInt32(); auEndOffsets[2] = data.ReadUInt32(); } for (unsigned int i = 0; i < itemsof(auStartOffsets); i++) { AddDebugLogLineN(logClient, CFormat(wxT("Client %s requests %d File block %d-%d (%d bytes):")) % GetFullIP() % i % auStartOffsets[i] % auEndOffsets[i] % (auEndOffsets[i] - auStartOffsets[i])); if (auEndOffsets[i] > auStartOffsets[i]) { Requested_Block_Struct* reqblock = new Requested_Block_Struct; reqblock->StartOffset = auStartOffsets[i]; reqblock->EndOffset = auEndOffsets[i]; md4cpy(reqblock->FileID, reqfilehash.GetHash()); reqblock->transferred = 0; AddReqBlock(reqblock); } else { if (auEndOffsets[i] != 0 || auStartOffsets[i] != 0) { AddDebugLogLineN(logClient, wxT("Client request is invalid!")); } } } } void CUpDownClient::ProcessRequestPartsPacketv2(const CMemFile& data) { CMD4Hash reqfilehash = data.ReadHash(); uint8 numblocks = data.ReadUInt8(); for (int i = 0; i < numblocks; i++) { Requested_Block_Struct* reqblock = new Requested_Block_Struct; try { reqblock->StartOffset = data.GetIntTagValue(); // We have to do +1, because the block matching uses that. reqblock->EndOffset = data.GetIntTagValue() + 1; if ((reqblock->StartOffset || reqblock->EndOffset) && (reqblock->StartOffset > reqblock->EndOffset)) { AddDebugLogLineN(logClient, CFormat(wxT("Client %s request is invalid! %d / %d")) % GetFullIP() % reqblock->StartOffset % reqblock->EndOffset); throw wxString(wxT("Client request is invalid!")); } AddDebugLogLineN(logClient, CFormat(wxT("Client %s requests %d File block %d-%d (%d bytes):")) % GetFullIP() % i % reqblock->StartOffset % reqblock->EndOffset % (reqblock->EndOffset - reqblock->StartOffset)); md4cpy(reqblock->FileID, reqfilehash.GetHash()); reqblock->transferred = 0; AddReqBlock(reqblock); } catch (...) { delete reqblock; throw; } } } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/UploadQueue.cpp0000644000175000017500000005557312611472361021246 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "UploadQueue.h" // Interface declarations #include #include #include #include #include #include "Types.h" // Do_not_auto_remove (win32) #ifdef __WINDOWS__ #include // Do_not_auto_remove #else #include // Do_not_auto_remove #include // Do_not_auto_remove #include // Do_not_auto_remove #endif #include "ServerConnect.h" // Needed for CServerConnect #include "KnownFile.h" // Needed for CKnownFile #include "Packet.h" // Needed for CPacket #include "ClientTCPSocket.h" // Needed for CClientTCPSocket #include "SharedFileList.h" // Needed for CSharedFileList #include "updownclient.h" // Needed for CUpDownClient #include "amule.h" // Needed for theApp #include "Preferences.h" #include "ClientList.h" #include "Statistics.h" // Needed for theStats #include "Logger.h" #include #include "UploadBandwidthThrottler.h" #include "GuiEvents.h" // Needed for Notify_* #include "ListenSocket.h" #include "DownloadQueue.h" #include "PartFile.h" //TODO rewrite the whole networkcode, use overlapped sockets CUploadQueue::CUploadQueue() { m_nLastStartUpload = 0; m_lastSort = 0; lastupslotHighID = true; m_allowKicking = true; m_allUploadingKnownFile = new CKnownFile; } void CUploadQueue::SortGetBestClient(CClientRef * bestClient) { uint32 tick = GetTickCount(); m_lastSort = tick; CClientRefList::iterator it = m_waitinglist.begin(); for (; it != m_waitinglist.end(); ) { CClientRefList::iterator it2 = it++; CUpDownClient* cur_client = it2->GetClient(); // clear dead clients if (tick - cur_client->GetLastUpRequest() > MAX_PURGEQUEUETIME || !theApp->sharedfiles->GetFileByID(cur_client->GetUploadFileID())) { cur_client->ClearWaitStartTime(); RemoveFromWaitingQueue(it2); if (!cur_client->GetSocket()) { if (cur_client->Disconnected(wxT("AddUpNextClient - purged"))) { cur_client->Safe_Delete(); cur_client = NULL; } } continue; } if (cur_client->IsBanned() || IsSuspended(cur_client->GetUploadFileID())) { // Banned client or suspended upload ? cur_client->ClearScore(); continue; } // finished clearing // Calculate score of current client uint32 cur_score = cur_client->CalculateScore(); // Check if it's better than that of a previous one, and move it up then. CClientRefList::iterator it1 = it2; while (it1 != m_waitinglist.begin()) { --it1; if (cur_score > it1->GetClient()->GetScore()) { // swap them std::swap(*it2, *it1); --it2; } else { // no need to check further since list is already sorted break; } } } // Second Pass: // - calculate queue rank // - find best high id client // - mark all better low id clients as enabled for upload uint16 rank = 1; bool bestClientFound = false; for (it = m_waitinglist.begin(); it != m_waitinglist.end(); ) { CClientRefList::iterator it2 = it++; CUpDownClient* cur_client = it2->GetClient(); cur_client->SetUploadQueueWaitingPosition(rank++); if (bestClientFound) { // There's a better high id client cur_client->m_bAddNextConnect = false; } else { if (cur_client->HasLowID() && !cur_client->IsConnected()) { // No better high id client, so start upload to this one once it connects cur_client->m_bAddNextConnect = true; } else { // We found a high id client (or a currently connected low id client) bestClientFound = true; cur_client->m_bAddNextConnect = false; if (bestClient) { bestClient->Link(cur_client CLIENT_DEBUGSTRING("CUploadQueue::SortGetBestClient")); RemoveFromWaitingQueue(it2); rank--; lastupslotHighID = true; // VQB LowID alternate } } } } #ifdef __DEBUG__ AddDebugLogLineN(logLocalClient, CFormat(wxT("Current UL queue (%d):")) % (rank - 1)); for (it = m_waitinglist.begin(); it != m_waitinglist.end(); ++it) { CUpDownClient* c = it->GetClient(); AddDebugLogLineN(logLocalClient, CFormat(wxT("%4d %7d %s %5d %s")) % c->GetUploadQueueWaitingPosition() % c->GetScore() % (c->HasLowID() ? (c->IsConnected() ? wxT("LoCon") : wxT("LowId")) : wxT("High ")) % c->ECID() % c->GetUserName() ); } #endif // __DEBUG__ } void CUploadQueue::AddUpNextClient(CUpDownClient* directadd) { CUpDownClient* newclient = NULL; CClientRef newClientRef; // select next client or use given client if (!directadd) { SortGetBestClient(&newClientRef); newclient = newClientRef.GetClient(); #if EXTENDED_UPLOADQUEUE if (!newclient) { // Nothing to upload. Try to find something from the sources. if (PopulatePossiblyWaitingList() > 0) { newClientRef = * m_possiblyWaitingList.begin(); m_possiblyWaitingList.pop_front(); newclient = newClientRef.GetClient(); AddDebugLogLineN( logLocalClient, wxT("Added client from possiblyWaitingList ") + newclient->GetFullIP() ); } } #endif if (!newclient) { return; } } else { // Check if requested file is suspended or not shared (maybe deleted recently) if (IsSuspended(directadd->GetUploadFileID()) || !theApp->sharedfiles->GetFileByID(directadd->GetUploadFileID())) { return; } else { newclient = directadd; } } if (IsDownloading(newclient)) { return; } // tell the client that we are now ready to upload if (!newclient->IsConnected()) { newclient->SetUploadState(US_CONNECTING); if (!newclient->TryToConnect(true)) { return; } } else { CPacket* packet = new CPacket(OP_ACCEPTUPLOADREQ, 0, OP_EDONKEYPROT); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ACCEPTUPLOADREQ to ") + newclient->GetFullIP() ); newclient->SendPacket(packet,true); newclient->SetUploadState(US_UPLOADING); } newclient->SetUpStartTime(); newclient->ResetSessionUp(); theApp->uploadBandwidthThrottler->AddToStandardList(m_uploadinglist.size(), newclient->GetSocket()); m_uploadinglist.push_back(CCLIENTREF(newclient, wxT("CUploadQueue::AddUpNextClient"))); m_allUploadingKnownFile->AddUploadingClient(newclient); theStats::AddUploadingClient(); // Statistic CKnownFile* reqfile = const_cast(newclient->GetUploadFile()); if (reqfile) { reqfile->statistic.AddAccepted(); } Notify_SharedCtrlRefreshClient(newclient->ECID(), AVAILABLE_SOURCE); } void CUploadQueue::Process() { // Check if someone's waiting, if there is a slot for him, // or if we should try to free a slot for him uint32 tick = GetTickCount(); // Nobody waiting or upload started recently // (Actually instead of "empty" it should check for "no HighID clients queued", // but the cost for that outweights the benefit. As it is, a slot will be freed // even if it can't be taken because all of the queue is LowID. But just one, // and the kicked client will instantly get it back if he has HighID.) // Also, if we are running out of sockets, don't add new clients, but also don't kick existing ones, // or uploading will cease right away. #if EXTENDED_UPLOADQUEUE if (tick - m_nLastStartUpload < 1000 #else if (m_waitinglist.empty() || tick - m_nLastStartUpload < 1000 #endif || theApp->listensocket->TooManySockets()) { m_allowKicking = false; // Already a slot free, try to fill it } else if (m_uploadinglist.size() < GetMaxSlots()) { m_allowKicking = false; m_nLastStartUpload = tick; AddUpNextClient(); // All slots taken, try to free one } else { m_allowKicking = true; } // The loop that feeds the upload slots with data. CClientRefList::iterator it = m_uploadinglist.begin(); while (it != m_uploadinglist.end()) { // Get the client. Note! Also updates pos as a side effect. CUpDownClient* cur_client = it++->GetClient(); // It seems chatting or friend slots can get stuck at times in upload.. This needs looked into.. if (!cur_client->GetSocket()) { RemoveFromUploadQueue(cur_client); if(cur_client->Disconnected(_T("CUploadQueue::Process"))){ cur_client->Safe_Delete(); } } else { cur_client->SendBlockData(); } } // Save used bandwidth for speed calculations uint64 sentBytes = theApp->uploadBandwidthThrottler->GetNumberOfSentBytesSinceLastCallAndReset(); (void)theApp->uploadBandwidthThrottler->GetNumberOfSentBytesOverheadSinceLastCallAndReset(); // Update statistics if (sentBytes) { theStats::AddSentBytes(sentBytes); } // Periodically resort queue if it doesn't happen anyway if ((sint32) (tick - m_lastSort) > MIN2MS(2)) { SortGetBestClient(); } } uint16 CUploadQueue::GetMaxSlots() const { uint16 nMaxSlots = 0; float kBpsUpPerClient = (float)thePrefs::GetSlotAllocation(); if (thePrefs::GetMaxUpload() == UNLIMITED) { float kBpsUp = theStats::GetUploadRate() / 1024.0f; nMaxSlots = (uint16)(kBpsUp / kBpsUpPerClient) + 2; } else { if (thePrefs::GetMaxUpload() >= 10) { nMaxSlots = (uint16)floor((float)thePrefs::GetMaxUpload() / kBpsUpPerClient + 0.5); // floor(x + 0.5) is a way of doing round(x) that works with gcc < 3 ... if (nMaxSlots < MIN_UP_CLIENTS_ALLOWED) { nMaxSlots=MIN_UP_CLIENTS_ALLOWED; } } else { nMaxSlots = MIN_UP_CLIENTS_ALLOWED; } } if (nMaxSlots > MAX_UP_CLIENTS_ALLOWED) { nMaxSlots = MAX_UP_CLIENTS_ALLOWED; } return nMaxSlots; } CUploadQueue::~CUploadQueue() { wxASSERT(m_waitinglist.empty()); wxASSERT(m_uploadinglist.empty()); delete m_allUploadingKnownFile; } bool CUploadQueue::IsOnUploadQueue(const CUpDownClient* client) const { for (CClientRefList::const_iterator it = m_waitinglist.begin(); it != m_waitinglist.end(); ++it) { if (it->GetClient() == client) { return true; } } return false; } bool CUploadQueue::IsDownloading(const CUpDownClient* client) const { for (CClientRefList::const_iterator it = m_uploadinglist.begin(); it != m_uploadinglist.end(); ++it) { if (it->GetClient() == client) { return true; } } return false; } CUpDownClient* CUploadQueue::GetWaitingClientByIP_UDP(uint32 dwIP, uint16 nUDPPort, bool bIgnorePortOnUniqueIP, bool* pbMultipleIPs) { CUpDownClient* pMatchingIPClient = NULL; int cMatches = 0; CClientRefList::iterator it = m_waitinglist.begin(); for (; it != m_waitinglist.end(); ++it) { CUpDownClient* cur_client = it->GetClient(); if ((dwIP == cur_client->GetIP()) && (nUDPPort == cur_client->GetUDPPort())) { return cur_client; } else if ((dwIP == cur_client->GetIP()) && bIgnorePortOnUniqueIP) { pMatchingIPClient = cur_client; cMatches++; } } if (pbMultipleIPs) { *pbMultipleIPs = cMatches > 1; } if (pMatchingIPClient && cMatches == 1) { return pMatchingIPClient; } else { return NULL; } } void CUploadQueue::AddClientToQueue(CUpDownClient* client) { if (theApp->serverconnect->IsConnected() && theApp->serverconnect->IsLowID() && !theApp->serverconnect->IsLocalServer(client->GetServerIP(),client->GetServerPort()) && client->GetDownloadState() == DS_NONE && !client->IsFriend() && theStats::GetWaitingUserCount() > 50) { // Well, all that issues finish in the same: don't allow to add to the queue return; } if ( client->IsBanned() ) { return; } client->AddAskedCount(); client->SetLastUpRequest(); // Find all clients with the same user-hash CClientList::SourceList found = theApp->clientlist->GetClientsByHash( client->GetUserHash() ); CClientList::SourceList::iterator it = found.begin(); while (it != found.end()) { CUpDownClient* cur_client = it++->GetClient(); if ( IsOnUploadQueue( cur_client ) ) { if ( cur_client == client ) { // This is where LowID clients get their upload slot assigned. // They can't be contacted if they reach top of the queue, so they are just marked for uploading. // When they reconnect next time AddClientToQueue() is called, and they get their slot // through the connection they initiated. // Since at that time no slot is free they get assigned an extra slot, // so then the number of slots exceeds the configured number by one. // To prevent a further increase no more LowID clients get a slot, until // - a HighID client has got one (which happens only after two clients // have been kicked so a slot is free again) // - or there is a free slot, which means there is no HighID client on queue if (client->m_bAddNextConnect) { uint16 maxSlots = GetMaxSlots(); if (lastupslotHighID) { maxSlots++; } if (m_uploadinglist.size() < maxSlots) { client->m_bAddNextConnect = false; RemoveFromWaitingQueue(client); AddUpNextClient(client); lastupslotHighID = false; // LowID alternate return; } } client->SendRankingInfo(); Notify_SharedCtrlRefreshClient(client->ECID(), AVAILABLE_SOURCE); return; } else { // Hash-clash, remove unidentified clients (possibly both) if ( !cur_client->IsIdentified() ) { // Cur_client isn't identifed, remove it theApp->clientlist->AddTrackClient( cur_client ); RemoveFromWaitingQueue( cur_client ); if ( !cur_client->GetSocket() ) { if (cur_client->Disconnected( wxT("AddClientToQueue - same userhash") ) ) { cur_client->Safe_Delete(); } } } if ( !client->IsIdentified() ) { // New client isn't identified, remove it theApp->clientlist->AddTrackClient( client ); if ( !client->GetSocket() ) { if ( client->Disconnected( wxT("AddClientToQueue - same userhash") ) ) { client->Safe_Delete(); } } return; } } } } // Count the number of clients with the same IP-address found = theApp->clientlist->GetClientsByIP( client->GetIP() ); int ipCount = 0; for ( it = found.begin(); it != found.end(); ++it ) { if ( ( it->GetClient() == client ) || IsOnUploadQueue( it->GetClient() ) ) { ipCount++; } } // We do not accept more than 3 clients from the same IP if ( ipCount > 3 ) { return; } else if ( theApp->clientlist->GetClientsFromIP(client->GetIP()) >= 3 ) { return; } // statistic values CKnownFile* reqfile = const_cast(client->GetUploadFile()); if (reqfile) { reqfile->statistic.AddRequest(); } if (client->IsDownloading()) { // he's already downloading and wants probably only another file CPacket* packet = new CPacket(OP_ACCEPTUPLOADREQ, 0, OP_EDONKEYPROT); theStats::AddUpOverheadFileRequest(packet->GetPacketSize()); AddDebugLogLineN( logLocalClient, wxT("Local Client: OP_ACCEPTUPLOADREQ to ") + client->GetFullIP() ); client->SendPacket(packet,true); return; } // TODO find better ways to cap the list if (m_waitinglist.size() >= (thePrefs::GetQueueSize())) { return; } uint32 tick = GetTickCount(); client->ClearWaitStartTime(); // if possible start upload right away if (m_waitinglist.empty() && tick - m_nLastStartUpload >= 1000 && m_uploadinglist.size() < GetMaxSlots() && !theApp->listensocket->TooManySockets()) { AddUpNextClient(client); m_nLastStartUpload = tick; } else { // add to waiting queue m_waitinglist.push_back(CCLIENTREF(client, wxT("CUploadQueue::AddClientToQueue m_waitinglist.push_back"))); // and sort it to update queue ranks SortGetBestClient(); theStats::AddWaitingClient(); client->ClearAskedCount(); client->SetUploadState(US_ONUPLOADQUEUE); client->SendRankingInfo(); //Notify_QlistAddClient(client); } } bool CUploadQueue::RemoveFromUploadQueue(CUpDownClient* client) { // Keep track of this client theApp->clientlist->AddTrackClient(client); CClientRefList::iterator it = std::find(m_uploadinglist.begin(), m_uploadinglist.end(), CCLIENTREF(client, wxEmptyString)); if (it != m_uploadinglist.end()) { m_uploadinglist.erase(it); m_allUploadingKnownFile->RemoveUploadingClient(client); theStats::RemoveUploadingClient(); if( client->GetTransferredUp() ) { theStats::AddSuccessfulUpload(); theStats::AddUploadTime(client->GetUpStartTimeDelay() / 1000); } else { theStats::AddFailedUpload(); } client->SetUploadState(US_NONE); client->ClearUploadBlockRequests(); return true; } return false; } bool CUploadQueue::CheckForTimeOver(CUpDownClient* client) { // Don't kick anybody if there's no need to if (!m_allowKicking) { return false; } // First, check if it is a VIP slot (friend or Release-Prio). if (client->GetFriendSlot()) { return false; // never drop the friend } // Release-Prio and nobody on queue for it? if (client->GetUploadFile()->GetUpPriority() == PR_POWERSHARE) { // Keep it unless half of the UL slots are occupied with friends or Release uploads. uint16 vips = 0; for (CClientRefList::iterator it = m_uploadinglist.begin(); it != m_uploadinglist.end(); ++it) { CUpDownClient* cur_client = it->GetClient(); if (cur_client->GetFriendSlot() || cur_client->GetUploadFile()->GetUpPriority() == PR_POWERSHARE) { vips++; } } // allow if VIP uploads occupy at most half of the possible upload slots if (vips <= GetMaxSlots() / 2) { return false; } // Otherwise normal rules apply. } // Ordinary slots // "Transfer full chunks": drop client after 10 MB upload, or after an hour. // (so average UL speed should at least be 2.84 kB/s) // We don't track what he is downloading, but if it's all from one chunk he gets it. if (client->GetUpStartTimeDelay() > 3600000 // time: 1h || client->GetSessionUp() > 10485760) { // data: 10MB m_allowKicking = false; // kick max one client per cycle return true; } return false; } /* * This function removes a file indicated by filehash from suspended_uploads_list. */ void CUploadQueue::ResumeUpload( const CMD4Hash& filehash ) { suspendedUploadsSet.erase(filehash); AddLogLineN(CFormat( _("Resuming uploads of file: %s" ) ) % filehash.Encode() ); } /* * This function stops upload of a file indicated by filehash. * * a) teminate == false: * File is suspended while a download completes. Then it is resumed after completion, * so it makes sense to keep the client. Such files are kept in suspendedUploadsSet. * b) teminate == true: * File is deleted. Then the client is not added to the waiting list. * Waiting clients are swept out with next run of AddUpNextClient, * because their file is not shared anymore. */ uint16 CUploadQueue::SuspendUpload(const CMD4Hash& filehash, bool terminate) { AddLogLineN(CFormat( _("Suspending upload of file: %s" ) ) % filehash.Encode() ); uint16 removed = 0; //Append the filehash to the list. if (!terminate) { suspendedUploadsSet.insert(filehash); } CClientRefList::iterator it = m_uploadinglist.begin(); while (it != m_uploadinglist.end()) { CUpDownClient *potential = it++->GetClient(); //check if the client is uploading the file we need to suspend if (potential->GetUploadFileID() == filehash) { // remove the unlucky client from the upload queue RemoveFromUploadQueue(potential); // if suspend isn't permanent add it to the waiting queue if (terminate) { potential->SetUploadState(US_NONE); } else { m_waitinglist.push_back(CCLIENTREF(potential, wxT("CUploadQueue::SuspendUpload"))); theStats::AddWaitingClient(); potential->SetUploadState(US_ONUPLOADQUEUE); potential->SendRankingInfo(); Notify_SharedCtrlRefreshClient(potential->ECID(), AVAILABLE_SOURCE); } removed++; } } return removed; } bool CUploadQueue::RemoveFromWaitingQueue(CUpDownClient* client) { CClientRefList::iterator it = m_waitinglist.begin(); uint16 rank = 1; while (it != m_waitinglist.end()) { CClientRefList::iterator it1 = it++; if (it1->GetClient() == client) { RemoveFromWaitingQueue(it1); // update ranks of remaining queue while (it != m_waitinglist.end()) { it->GetClient()->SetUploadQueueWaitingPosition(rank++); ++it; } return true; } rank++; } return false; } void CUploadQueue::RemoveFromWaitingQueue(CClientRefList::iterator pos) { CUpDownClient* todelete = pos->GetClient(); m_waitinglist.erase(pos); theStats::RemoveWaitingClient(); if( todelete->IsBanned() ) { todelete->UnBan(); } //Notify_QlistRemoveClient(todelete); todelete->SetUploadState(US_NONE); todelete->ClearScore(); todelete->SetUploadQueueWaitingPosition(0); } #if EXTENDED_UPLOADQUEUE int CUploadQueue::PopulatePossiblyWaitingList() { static uint32 lastPopulate = 0; uint32 tick = GetTickCount(); int ret = m_possiblyWaitingList.size(); if (tick - lastPopulate > MIN2MS(15)) { // repopulate in any case after this time m_possiblyWaitingList.clear(); } else if (ret || tick - lastPopulate < SEC2MS(30)) { // don't retry too fast if list is empty return ret; } lastPopulate = tick; // Get our downloads int nrDownloads = theApp->downloadqueue->GetFileCount(); for (int idownload = 0; idownload < nrDownloads; idownload++) { CPartFile * download = theApp->downloadqueue->GetFileByIndex(idownload); if (!download || download->GetAvailablePartCount() == 0) { continue; } const CKnownFile::SourceSet& sources = download->GetSourceList(); if (sources.empty()) { continue; } // Make a table which parts are available. No need to notify a client // which needs nothing we have. uint16 parts = download->GetPartCount(); std::vector partsAvailable; partsAvailable.resize(parts); for (uint32 i = parts; i--;) { partsAvailable[i] = download->IsComplete(i); } for (CKnownFile::SourceSet::const_iterator it = sources.begin(); it != sources.end(); it++) { // Iterate over our sources, find those where download == upload CUpDownClient * client = it->GetClient(); if (!client || client->GetUploadFile() != download || client->HasLowID()) { continue; } const BitVector& partStatus = client->GetPartStatus(); if (partStatus.size() != parts) { continue; } // Do we have something for him? bool haveSomething = false; for (uint32 i = parts; i--;) { if (partsAvailable[i] && !partStatus.get(i)) { haveSomething = true; break; } } if (haveSomething) { m_possiblyWaitingList.push_back(*it); } } } ret = m_possiblyWaitingList.size(); AddDebugLogLineN(logLocalClient, CFormat(wxT("Populated PossiblyWaitingList: %d")) % ret); return ret; } #endif // EXTENDED_UPLOADQUEUE // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/UploadQueue.h0000644000175000017500000000677612611472361020714 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef UPLOADQUEUE_H #define UPLOADQUEUE_H #include "ClientRef.h" // Needed for CClientRefList #include "MD4Hash.h" // Needed for CMD4Hash // Experimental extended upload queue population // // When a client is set up from scratch (no shares, all downloads empty) // it takes a while after completion of the first downloaded chunks until // uploads start. Problem is, upload queue is empty, because clients that // find nothing to download don't stay queued. // // Set this to 1 for faster finding of upload slots in this case. // aMule will then try to contact its sources for uploading if the // upload queue is empty. #define EXTENDED_UPLOADQUEUE 0 class CUpDownClient; class CKnownFile; class CUploadQueue { public: CUploadQueue(); ~CUploadQueue(); void Process(); void AddClientToQueue(CUpDownClient* client); bool RemoveFromUploadQueue(CUpDownClient* client); bool RemoveFromWaitingQueue(CUpDownClient* client); bool IsOnUploadQueue(const CUpDownClient* client) const; bool IsDownloading(const CUpDownClient* client) const; bool CheckForTimeOver(CUpDownClient* client); void ResortQueue() { SortGetBestClient(); } const CClientRefList& GetWaitingList() const { return m_waitinglist; } const CClientRefList& GetUploadingList() const { return m_uploadinglist; } CUpDownClient* GetWaitingClientByIP_UDP(uint32 dwIP, uint16 nUDPPort, bool bIgnorePortOnUniqueIP, bool* pbMultipleIPs = NULL); uint16 SuspendUpload(const CMD4Hash &, bool terminate); void ResumeUpload(const CMD4Hash &); CKnownFile* GetAllUploadingKnownFile() { return m_allUploadingKnownFile; } private: void RemoveFromWaitingQueue(CClientRefList::iterator pos); uint16 GetMaxSlots() const; void AddUpNextClient(CUpDownClient* directadd = 0); bool IsSuspended(const CMD4Hash& hash) { return suspendedUploadsSet.find(hash) != suspendedUploadsSet.end(); } void SortGetBestClient(CClientRef * bestClient = NULL); CClientRefList m_waitinglist; CClientRefList m_uploadinglist; #if EXTENDED_UPLOADQUEUE CClientRefList m_possiblyWaitingList; int PopulatePossiblyWaitingList(); #endif std::set suspendedUploadsSet; // set for suspended uploads uint32 m_nLastStartUpload; uint32 m_lastSort; bool lastupslotHighID; // VQB lowID alternation bool m_allowKicking; // This KnownFile collects all currently uploading clients for display in the upload list control CKnownFile * m_allUploadingKnownFile; }; #endif // UPLOADQUEUE_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/UserEvents.cpp0000644000175000017500000001047212611472361021105 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "UserEvents.h" #include #include "Logger.h" #include "Preferences.h" #include "PartFile.h" #include "TerminationProcess.h" // Needed for CTerminationProcess #include #define USEREVENTS_EVENT(ID, NAME, VARS) { wxT(#ID), NAME, false, wxEmptyString, false, wxEmptyString }, static struct { const wxString key; const wxString name; bool core_enabled; wxString core_command; bool gui_enabled; wxString gui_command; } s_EventList[] = { USEREVENTS_EVENTLIST() /* This macro expands to initialise the list of user event types. Example: { wxT("NewChatSession"), wxTRANSLATE("New chat session started"), false, wxEmptyString, false, wxEmptyString }, */ }; #undef USEREVENTS_EVENT #ifdef __WXDEBUG__ inline bool CheckIndex(const unsigned int idx) { return (idx < itemsof(s_EventList)); } #endif unsigned int CUserEvents::GetCount() { return itemsof(s_EventList); } const wxString& CUserEvents::GetDisplayName(enum EventType event) { wxASSERT(CheckIndex(event)); return s_EventList[event].name; } bool CUserEvents::IsCoreCommandEnabled(enum EventType event) { wxASSERT(CheckIndex(event)); return s_EventList[event].core_enabled; } bool CUserEvents::IsGUICommandEnabled(enum EventType event) { wxASSERT(CheckIndex(event)); return s_EventList[event].gui_enabled; } const wxString& CUserEvents::GetKey(const unsigned int event) { wxASSERT(CheckIndex(event)); return s_EventList[event].key; } bool& CUserEvents::GetCoreEnableVar(const unsigned int event) { wxASSERT(CheckIndex(event)); return s_EventList[event].core_enabled; } wxString& CUserEvents::GetCoreCommandVar(const unsigned int event) { wxASSERT(CheckIndex(event)); return s_EventList[event].core_command; } bool& CUserEvents::GetGUIEnableVar(const unsigned int event) { wxASSERT(CheckIndex(event)); return s_EventList[event].gui_enabled; } wxString& CUserEvents::GetGUICommandVar(const unsigned int event) { wxASSERT(CheckIndex(event)); return s_EventList[event].gui_command; } #define USEREVENTS_EVENT(ID, NAME, VARS) case CUserEvents::ID: { VARS break; } #define USEREVENTS_REPLACE_VAR(VAR, DESC, CODE) command.Replace(wxT("%") VAR, CODE); static void ExecuteCommand( enum CUserEvents::EventType event, const void* object, const wxString& cmd) { // This variable is needed by the USEREVENTS_EVENTLIST macro. wxString command = cmd; switch (event) { USEREVENTS_EVENTLIST() /* This macro expands to handle all user event types. Example: case CUserEvents::NewChatSession: { command.Replace( wxT("%SENDER"), *((wxString*)object) ); break; } */ } if (!command.empty()) { CTerminationProcess *p = new CTerminationProcess(cmd); if (!wxExecute(command, wxEXEC_ASYNC, p)) { // If wxExecute fails, we need to delete the CTerminationProcess // otherwise it will leak. delete p; AddLogLineC(CFormat(_("Failed to execute command `%s' on `%s' event.")) % command % s_EventList[event].name); } } } void CUserEvents::ProcessEvent(enum EventType event, const void* object) { wxASSERT(CheckIndex(event)); wxASSERT(object != NULL); #ifndef CLIENT_GUI if (s_EventList[event].core_enabled) { ExecuteCommand(event, object, s_EventList[event].core_command); } #endif #ifndef AMULE_DAEMON if (s_EventList[event].gui_enabled) { ExecuteCommand(event, object, s_EventList[event].gui_command); } #endif } amule_2.3.1+git20151120.0023527bc2.orig/src/UserEvents.h0000644000175000017500000001333212611472361020550 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2006-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef USEREVENTS_H #define USEREVENTS_H #include // Needed for wxTRANSLATE #ifdef _MSC_VER #define ATTR(x) #else #define ATTR(x) __attribute__((x)) #endif /* Each event will use 5 IDs: - the panel that shows the prefs for this event - the 'Core command enabled' checkbox - the 'Core command' textctrl - the 'GUI command enabled' checkbox - the 'GUI command' textctrl */ #define USEREVENTS_IDS_PER_EVENT 5 const int USEREVENTS_FIRST_ID = 11500; /* Some safe GUI ID to start from */ /** * Macro listing all the events. * * This huge macro is expanded 5 times in the sources, each time producing * different code. If we decide to get rid of the macro either because of coding style * decision, or someone finds a compiler that doesn't support this big macro, we * have to maintain these five places in sync. They are: * - one in PrefsUnifiedDlg.cpp (EVENT_LIST, PrefsUnifiedDlg::PrefsUnifiedDlg()) * - one in this header (CUserEvents::EventType) * - two in UserEvents.cpp (static struct EventList[]; CUserEvent::ExecuteCommand()) */ #define USEREVENTS_EVENTLIST() \ USEREVENTS_EVENT(DownloadCompleted, wxTRANSLATE("Download completed"), \ USEREVENTS_REPLACE_VAR( \ wxT("FILE"), \ wxTRANSLATE("The full path to the file."), \ static_cast(object)->GetFullName().GetRaw() ) \ USEREVENTS_REPLACE_VAR( \ wxT("NAME"), \ wxTRANSLATE("The name of the file without path component."), \ static_cast(object)->GetFileName().GetRaw() ) \ USEREVENTS_REPLACE_VAR( \ wxT("HASH"), \ wxTRANSLATE("The eD2k hash of the file."), \ static_cast(object)->GetFileHash().Encode() ) \ USEREVENTS_REPLACE_VAR( \ wxT("SIZE"), \ wxTRANSLATE("The size of the file in bytes."), \ (CFormat(wxT("%llu")) % static_cast(object)->GetFileSize()).GetString() ) \ USEREVENTS_REPLACE_VAR( \ wxT("DLACTIVETIME"), \ wxTRANSLATE("Cumulative download activity time."), \ CastSecondsToHM(static_cast(object)->GetDlActiveTime()) ) \ ) \ USEREVENTS_EVENT(NewChatSession, wxTRANSLATE("New chat session started"), \ USEREVENTS_REPLACE_VAR( \ wxT("SENDER"), \ wxTRANSLATE("Message sender."), \ *static_cast(object) ) \ ) \ USEREVENTS_EVENT(OutOfDiskSpace, wxTRANSLATE("Out of space"), \ USEREVENTS_REPLACE_VAR( \ wxT("PARTITION"), \ wxTRANSLATE("Disk partition."), \ wxString(static_cast(object)) ) \ ) \ USEREVENTS_EVENT(ErrorOnCompletion, wxTRANSLATE("Error on completion"), \ USEREVENTS_REPLACE_VAR( \ wxT("FILE"), \ wxTRANSLATE("The full path to the file."), \ static_cast(object)->GetFullName().GetRaw() ) \ ) #define USEREVENTS_EVENT(ID, NAME, VARS) ID, /** * Class to handle userspace events. * * These events that we publish to the user and let him * specify a command to be run when one of these events occur. */ class CUserEvents { friend class CPreferences; public: //! Event list enum EventType { USEREVENTS_EVENTLIST() /* This macro expands to the following list of user event types: DownloadCompleted, NewChatSession, OutOfDiskSpace, ErrorOnCompletion */ }; /** * Process a user event. * * Notes on the 'object' argument: this should be a pointer to * an object instance, from which all of the replacement texts * can be generated. * * Unfortunately this approach does not provide any type-safety, * a list of string pairs (key, replacement) would be the best. * However, this would need either expanding the macro at all of * the places where CUserEvents::ProcessEvent is called from, or * creating lists of parameters for each event, etc = more lists * to keep in sync manually. */ static void ProcessEvent(enum EventType event, const void* object); /** * Returns the number of defined user events. */ static unsigned int GetCount() ATTR(__const__); /** * Returs the human-readable name of the event. */ static const wxString& GetDisplayName(enum EventType event) ATTR(__pure__); /** * Checks whether the core command is enabled. */ static bool IsCoreCommandEnabled(enum EventType event) ATTR(__pure__); /** * Checks whether the GUI command is enabled. */ static bool IsGUICommandEnabled(enum EventType event) ATTR(__pure__); private: // functions for CPreferences static const wxString& GetKey(const unsigned int event) ATTR(__pure__); static bool& GetCoreEnableVar(const unsigned int event) ATTR(__pure__); static wxString& GetCoreCommandVar(const unsigned int event) ATTR(__pure__); static bool& GetGUIEnableVar(const unsigned int event) ATTR(__pure__); static wxString& GetGUICommandVar(const unsigned int event) ATTR(__pure__); }; #undef USEREVENTS_EVENT #endif /* USEREVENTS_H */ amule_2.3.1+git20151120.0023527bc2.orig/src/aMule.xpm0000644000175000017500000001563312611472361020073 0ustar morphmorph/* XPM */ static const char * aMule_xpm[] = { /* columns rows colors chars-per-pixel */ "32 42 256 2", " c None", ". c #CC8234", "X c #84420C", "o c #44464C", "O c #C46214", "+ c #94969C", "@ c #C41A1C", "# c #34220C", "$ c #944A0C", "% c #7C827C", "& c #14222C", "* c #8C623C", "= c #FCD6A4", "- c #E45654", "; c #613514", ": c #676664", "> c #61452C", ", c #DC9654", "< c #AEB3B4", "1 c #0C120C", "2 c #C4824C", "3 c #CC9E74", "4 c #BC7224", "5 c #CC4634", "6 c #C27334", "7 c #5C6A74", "8 c #8B4F1C", "9 c #B48A6C", "0 c #27231C", "q c #C4CED4", "w c #483424", "e c #E98F44", "r c #AC5614", "t c #ECEAE4", "y c #B46424", "u c #7C766C", "i c #595754", "p c #F49EAC", "a c #74828C", "s c #68421C", "d c #A6A7A4", "f c #08131C", "g c #CE7834", "h c #C16824", "j c #E78334", "k c #492A1C", "l c #67381C", "z c #7C522C", "x c #80441C", "c c #070D14", "v c #C1C3C4", "b c #979694", "n c #342A1C", "m c #A45A1C", "M c #141A1C", "N c #6C5E54", "B c #38322C", "V c #CC623C", "C c #ECDED4", "Z c #F4F6F4", "A c #69777C", "S c #CC7E34", "D c #B25E1C", "F c #DC8E4C", "G c #D87424", "H c #64727C", "J c #3A241C", "K c #B06B2C", "L c #8F8C8C", "P c #9CAAB4", "I c #0C0A04", "U c #DB8544", "Y c #9C9E9C", "T c #542604", "R c #944F1C", "E c #9C7654", "W c #F4A65C", "Q c #985C2C", "! c #74726C", "~ c #8C5624", "^ c #5C3A1C", "/ c #C46E24", "( c #E48A44", ") c #6A3E1C", "_ c #74524C", "` c #942E14", "' c #4C423C", "] c #BCBAB4", "[ c #BF7B44", "{ c #824E24", "} c #EC8A94", "| c #F1F1F4", " . c #744A1C", ".. c #B0AEAC", "X. c #EC8A3C", "o. c #845A34", "O. c #804A1C", "+. c #A05E24", "@. c #413D3C", "#. c #D7E1E4", "$. c #7E7C7C", "%. c #945E3C", "&. c #54514C", "*. c #A46E3C", "=. c #A87A54", "-. c #743E0C", ";. c #EC9E64", ":. c #BC9674", ">. c #5C341C", ",. c #A8642C", "<. c #684224", "1. c #17161C", "2. c #CF763C", "3. c #E7863C", "4. c #8C542C", "5. c #CCCAC4", "6. c #211D1C", "7. c #585E64", "8. c #A45E34", "9. c #A45214", "0. c #AC9274", "q. c #9C724C", "w. c #DC9E54", "e. c #2C1E14", "r. c #B47244", "t. c #292524", "y. c #4C5A64", "u. c #AAAAAC", "i. c #040D1C", "p. c #CC323C", "a. c #FC6E74", "s. c #E4B68C", "d. c #CCCECC", "f. c #BC9E8C", "g. c #E46464", "h. c #9C826C", "j. c #E4D2BC", "k. c #5C3E2C", "l. c #7C3E0C", "z. c #C41634", "x. c #2C2E34", "c. c #5C4A34", "v. c #B86D34", "b. c #D43A44", "n. c #D9894C", "m. c #B4927C", "M. c #4F2C14", "N. c #8C7E64", "B. c #D47A2C", "V. c #C49A7C", "C. c #9C8A7C", "Z. c #C45E0C", "A. c #F4E6D4", "S. c #B4BEC4", "D. c #747E84", "F. c #A46234", "G. c #6D6D6C", "H. c #FC923C", "J. c #878484", "K. c #EC924C", "L. c #744E2C", "P. c #CC6A1C", "I. c #FCFEFC", "U. c #A48A74", "Y. c #C4926C", "T. c #D4D6D4", "R. c #4C4A44", "E. c #D4966C", "W. c #DC833C", "Q. c #994B14", "!. c #DC985C", "~. c #C7732C", "^. c #B4723C", "/. c #ECEBEC", "(. c #442E24", "). c #2C2A24", "_. c #985924", "`. c #848E94", "'. c #343E44", "]. c #907054", "[. c #9C9A94", "{. c #DC8A44", "}. c #615E5C", "|. c #DCDEDC", " X c #D57E3C", ".X c #697274", "XX c #4C3A24", "oX c #C06E2C", "OX c #673E24", "+X c #7C4A24", "@X c #AC9E94", "#X c #844614", "$X c #B0B6BC", "%X c #131414", "&X c #5C5A5C", "*X c #041224", "=X c #BC6A2C", "-X c #7C4624", ";X c #C0C6CC", ":X c #3C3634", ">X c #AC5A24", ",X c #DA9054", "X4XQ.c. ", " ).; l R z 2X { 2.,X$ x. ", " 2X>.k FXQ BX x , U HXM ", " M J M.VXE.V. t. uX;. X) ", " e.nXxX#X= J nXvXxX2 =X> ", " t.e.; ; M.VXHX~ 9 Q ^. ", " %X%Xe.l 8 _.Q dX^.F.%. ", " %X8Xl R Q jXv.=Xy D / f ", " l.PXwXy 6 LXg s.g n ", " X A.C O g G tXI.I.xX ", " Y.I.I.lXB.e I.I.I.E ", " 0XV.I.#.I.e W *X: I.m. ", " =.I. '.2 *.u.| I.j.' ", " 0.I.I.I.T.#.d.d.|./.| ", " t Z rXd < hX/.| t L i d ", " I.d L L JX+ b b 3X}.M I.i ", " [.yX5Xu.qXb b b b u.@.R./.5. ", " | J.I 3XY [.qXUX[.3Xt.u.v | ", " %XI.v B 5XqXb L L L L ! ] u.t %X ", " f | GXu.R.J.J.J.J.J.$.b 3X3XS.& f 2X ", " t.}.7.N MX<.#.u.u.u.! $.$.yXyXKXL d P q.9.2.,X+ + $. ", " G.< C.3.j Z.f.aXUX3XyXG.KX: 7 ! .XaXN.X D .>.8 +.v.6 S U !.!.F W.g S > k.L.7X* ].H yXkX", " ..UXo.P.P._.gXuX>.M.8 Q =Xv. XU F ,XU X6 6 .O.m X~ x l J ^ gX~.g S CXW.6 _.O.O.O.bXh S j u a L [.", " IXi i 5XF.O.w 0 %Xc c 2Xc 0Xt.t.t.f f i.f t.vXOX_.W.e y.}.: }.", " 1 B 6.0X 0X2X6.B ' :X", " 2X2X" }; amule_2.3.1+git20151120.0023527bc2.orig/src/amule-gui.cpp0000644000175000017500000002260112611472361020664 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "amule.h" // Interface declarations. #include #include #include // Needed for wxClipBoard #include // Needed for wxStringTokenizer #include "SharedFilesWnd.h" // Needed for CSharedFilesWnd #include "Timer.h" // Needed for CTimer #include "PartFile.h" // Needed for CPartFile #include "muuli_wdr.h" // Needed for IDs #include "amuleDlg.h" // Needed for CamuleDlg #include "PartFileConvert.h" #include "ThreadTasks.h" #include "Logger.h" // Needed for EVT_MULE_LOGGING #include "GuiEvents.h" // Needed for EVT_MULE_NOTIFY #ifdef __WXMAC__ #include // Do_not_auto_remove #include // For LSRegisterURL // Do_not_auto_remove #endif #ifndef CLIENT_GUI #include "InternalEvents.h" // Needed for wxEVT_* BEGIN_EVENT_TABLE(CamuleGuiApp, wxApp) // Socket handlers // Listen Socket EVT_SOCKET(ID_LISTENSOCKET_EVENT, CamuleGuiApp::ListenSocketHandler) // UDP Socket (servers) EVT_SOCKET(ID_SERVERUDPSOCKET_EVENT, CamuleGuiApp::UDPSocketHandler) // UDP Socket (clients) EVT_SOCKET(ID_CLIENTUDPSOCKET_EVENT, CamuleGuiApp::UDPSocketHandler) // Socket timers (TCP + UDP) EVT_MULE_TIMER(ID_SERVER_RETRY_TIMER_EVENT, CamuleGuiApp::OnTCPTimer) // Core timer EVT_MULE_TIMER(ID_CORE_TIMER_EVENT, CamuleGuiApp::OnCoreTimer) EVT_MULE_NOTIFY(CamuleGuiApp::OnNotifyEvent) // Async dns handling EVT_MULE_INTERNAL(wxEVT_CORE_UDP_DNS_DONE, -1, CamuleGuiApp::OnUDPDnsDone) EVT_MULE_INTERNAL(wxEVT_CORE_SOURCE_DNS_DONE, -1, CamuleGuiApp::OnSourceDnsDone) EVT_MULE_INTERNAL(wxEVT_CORE_SERVER_DNS_DONE, -1, CamuleGuiApp::OnServerDnsDone) // Hash ended notifier EVT_MULE_HASHING(CamuleGuiApp::OnFinishedHashing) EVT_MULE_AICH_HASHING(CamuleGuiApp::OnFinishedAICHHashing) // File completion ended notifier EVT_MULE_FILE_COMPLETED(CamuleGuiApp::OnFinishedCompletion) // HTTPDownload finished EVT_MULE_INTERNAL(wxEVT_CORE_FINISHED_HTTP_DOWNLOAD, -1, CamuleGuiApp::OnFinishedHTTPDownload) // Disk space preallocation finished EVT_MULE_ALLOC_FINISHED(CamuleGuiApp::OnFinishedAllocation) END_EVENT_TABLE() IMPLEMENT_APP(CamuleGuiApp) #endif // CLIENT_GUI CamuleGuiBase::CamuleGuiBase() { amuledlg = NULL; m_FileDetailDialogActive = 0; } CamuleGuiBase::~CamuleGuiBase() { #ifndef CLIENT_GUI CPartFileConvert::StopThread(); #endif } int CamuleGuiBase::ShowAlert(wxString msg, wxString title, int flags) { return wxMessageBox(msg, title, flags); } int CamuleGuiBase::InitGui(bool geometry_enabled, wxString &geom_string) { // Standard size is 800x600 at position (0,0) int geometry_x = 0; int geometry_y = 0; unsigned int geometry_width = 800; unsigned int geometry_height = 600; if ( geometry_enabled ) { // I plan on moving this to a separate function, as it just clutters up OnInit() /* This implementation might work with mac, provided that the SetSize() function works as expected. */ // Remove possible prefix if ( geom_string.GetChar(0) == '=' ) { geom_string.Remove( 0, 1 ); } // Stupid ToLong functions forces me to use longs =( long width = geometry_width; long height = geometry_height; // Get the avilable display area wxRect display = wxGetClientDisplayRect(); // We want to place aMule inside the client area by default long x = display.x; long y = display.y; // Tokenize the string wxStringTokenizer tokens(geom_string, wxT("xX+-")); // First part: Program width if ( tokens.GetNextToken().ToLong( &width ) ) { wxString prefix = geom_string[ tokens.GetPosition() - 1 ]; if ( prefix == wxT("x") || prefix == wxT("X") ) { // Second part: Program height if ( tokens.GetNextToken().ToLong( &height ) ) { prefix = geom_string[ tokens.GetPosition() - 1 ]; if ( prefix == wxT("+") || prefix == wxT("-") ) { // Third part: X-Offset if ( tokens.GetNextToken().ToLong( &x ) ) { if ( prefix == wxT("-") ) x = display.GetRight() - ( width + x ); prefix = geom_string[ tokens.GetPosition() - 1 ]; if ( prefix == wxT("+") || prefix == wxT("-") ) { // Fourth part: Y-Offset if ( tokens.GetNextToken().ToLong( &y ) ) { if ( prefix == wxT("-") ) y = display.GetBottom() - ( height + y ); } } } } // We need at least height and width to override default geometry geometry_enabled = true; geometry_x = x; geometry_y = y; geometry_width = width; geometry_height = height; } } } } ResetTitle(); // Should default/last-used position be overridden? if ( geometry_enabled ) { amuledlg = new CamuleDlg(NULL, m_FrameTitle, wxPoint(geometry_x,geometry_y), wxSize( geometry_width, geometry_height - 58 )); } else { amuledlg = new CamuleDlg(NULL, m_FrameTitle); } return 0; } // Sets m_FrameTitle void CamuleGuiBase::ResetTitle() { #ifdef SVNDATE #ifdef CLIENT_GUI m_FrameTitle = CFormat(wxT("aMule remote control %s %s")) % wxT( VERSION ) % wxT( SVNDATE ); #else m_FrameTitle = CFormat(wxT("aMule %s %s")) % wxT( VERSION ) % wxT( SVNDATE ); #endif #else #ifdef CLIENT_GUI m_FrameTitle = _("aMule remote control"); #else m_FrameTitle = _("aMule"); #endif if (thePrefs::ShowVersionOnTitle()) { m_FrameTitle += wxT(' '); m_FrameTitle += wxT( VERSION ); } #endif } // Sets the contents of the clipboard. Prior content erased. bool CamuleGuiBase::CopyTextToClipboard(wxString strText) { bool ClipBoardOpen = wxTheClipboard->Open(); if (ClipBoardOpen) { wxTheClipboard->UsePrimarySelection(false); wxTheClipboard->SetData(new wxTextDataObject(strText)); wxTheClipboard->Close(); } return ClipBoardOpen; } void CamuleGuiBase::AddGuiLogLine(const wxString& line) { if (amuledlg) { while ( !m_logLines.empty() ) { amuledlg->AddLogLine(m_logLines.front()); m_logLines.pop_front(); } amuledlg->AddLogLine(line); } else { m_logLines.push_back(line); } } #ifndef CLIENT_GUI int CamuleGuiApp::InitGui(bool geometry_enable, wxString &geometry_string) { CamuleGuiBase::InitGui(geometry_enable, geometry_string); SetTopWindow(amuledlg); return 0; } int CamuleGuiApp::ShowAlert(wxString msg, wxString title, int flags) { return CamuleGuiBase::ShowAlert(msg, title, flags); } int CamuleGuiApp::OnExit() { delete core_timer; return CamuleApp::OnExit(); } void CamuleGuiApp::ShutDown(wxCloseEvent &WXUNUSED(evt)) { amuledlg->DlgShutDown(); amuledlg->Destroy(); CamuleApp::ShutDown(); } bool CamuleGuiApp::OnInit() { amuledlg = NULL; if ( !CamuleApp::OnInit() ) { return false; } // Create the Core timer core_timer = new CTimer(this,ID_CORE_TIMER_EVENT); if (!core_timer) { AddLogLineCS(_("Fatal Error: Failed to create Core Timer")); OnExit(); } // Start the Core and Gui timers // Note: wxTimer can be off by more than 10% !!! // In addition to the systematic error introduced by wxTimer, we are losing // timer cycles due to high CPU load. I've observed about 0.5% random loss of cycles under // low load, and more than 6% lost cycles with heavy download traffic and/or other tasks // in the system, such as a video player or a VMware virtual machine. // The upload queue process loop has now been rewritten to compensate for timer errors. // When adding functionality, assume that the timer is only approximately correct; // for measurements, always use the system clock [::GetTickCount()]. core_timer->Start(CORE_TIMER_PERIOD); amuledlg->StartGuiTimer(); #ifdef __WXMAC__ // This tells the OS to notice the ed2kHelperScript.app inside aMule.app. // ed2kHelperScript.app describes itself (Info.plist) as handling ed2k URLs. // So, from then on the OS will know to pass ed2k URLs to the helper app. CFURLRef ed2kHelperUrl = CFBundleCopyAuxiliaryExecutableURL( CFBundleGetMainBundle(), CFSTR("ed2kHelperScript.app")); if (ed2kHelperUrl) { LSRegisterURL(ed2kHelperUrl, true); CFRelease(ed2kHelperUrl); } #endif return true; } wxString CamuleGuiApp::GetLog(bool reset) { if ( reset ) { amuledlg->ResetLog(ID_LOGVIEW); } return CamuleApp::GetLog(reset); } wxString CamuleGuiApp::GetServerLog(bool reset) { if ( reset ) { amuledlg->ResetLog(ID_SERVERINFO); } return CamuleApp::GetServerLog(reset); } void CamuleGuiApp::AddServerMessageLine(wxString &msg) { amuledlg->AddServerMessageLine(msg); CamuleApp::AddServerMessageLine(msg); } #endif /* CLIENT_GUI */ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/amule-remote-gui.cpp0000644000175000017500000015674012611472361022171 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include // Needed for wxCmdLineParser #include // Do_not_auto_remove (win32) #include // Needed for wxFileConfig #include #include #include #include #include "amule.h" // Interface declarations. #include "amuleDlg.h" // Needed for CamuleDlg #include "ClientCredits.h" #include "SourceListCtrl.h" #include "ChatWnd.h" #include "DataToText.h" // Needed for GetSoftName() #include "DownloadListCtrl.h" // Needed for CDownloadListCtrl #include "Friend.h" #include "GetTickCount.h" // Needed for GetTickCount #include "GuiEvents.h" #ifdef ENABLE_IP2COUNTRY #include "IP2Country.h" // Needed for IP2Country #endif #include "InternalEvents.h" // Needed for wxEVT_CORE_FINISHED_HTTP_DOWNLOAD #include "Logger.h" #include "muuli_wdr.h" // Needed for IDs #include "PartFile.h" // Needed for CPartFile #include "SearchDlg.h" // Needed for CSearchDlg #include "Server.h" // Needed for GetListName #include "ServerWnd.h" // Needed for CServerWnd #include "SharedFilesCtrl.h" // Needed for CSharedFilesCtrl #include "SharedFilesWnd.h" // Needed for CSharedFilesWnd #include "TransferWnd.h" // Needed for CTransferWnd #include "UpDownClientEC.h" // Needed for CUpDownClient #include "ServerListCtrl.h" // Needed for CServerListCtrl #include "ScopedPtr.h" #include "StatisticsDlg.h" // Needed for CStatisticsDlg CEConnectDlg::CEConnectDlg() : wxDialog(theApp->amuledlg, -1, _("Connect to remote amule"), wxDefaultPosition) { CoreConnect(this, true); wxString pref_host, pref_port; wxConfig::Get()->Read(wxT("/EC/Host"), &pref_host, wxT("localhost")); wxConfig::Get()->Read(wxT("/EC/Port"), &pref_port, wxT("4712")); wxConfig::Get()->Read(wxT("/EC/Password"), &pwd_hash); CastChild(ID_REMOTE_HOST, wxTextCtrl)->SetValue(pref_host); CastChild(ID_REMOTE_PORT, wxTextCtrl)->SetValue(pref_port); CastChild(ID_EC_PASSWD, wxTextCtrl)->SetValue(pwd_hash); CentreOnParent(); } wxString CEConnectDlg::PassHash() { return pwd_hash; } BEGIN_EVENT_TABLE(CEConnectDlg, wxDialog) EVT_BUTTON(wxID_OK, CEConnectDlg::OnOK) END_EVENT_TABLE() void CEConnectDlg::OnOK(wxCommandEvent& evt) { wxString s_port = CastChild(ID_REMOTE_PORT, wxTextCtrl)->GetValue(); port = StrToLong(s_port); host = CastChild(ID_REMOTE_HOST, wxTextCtrl)->GetValue(); passwd = CastChild(ID_EC_PASSWD, wxTextCtrl)->GetValue(); if (passwd != pwd_hash) { pwd_hash = MD5Sum(passwd).GetHash(); } m_save_user_pass = CastChild(ID_EC_SAVE, wxCheckBox)->IsChecked(); evt.Skip(); } DEFINE_LOCAL_EVENT_TYPE(wxEVT_EC_INIT_DONE) BEGIN_EVENT_TABLE(CamuleRemoteGuiApp, wxApp) // Core timer EVT_TIMER(ID_CORE_TIMER_EVENT, CamuleRemoteGuiApp::OnPollTimer) EVT_CUSTOM(wxEVT_EC_CONNECTION, -1, CamuleRemoteGuiApp::OnECConnection) EVT_CUSTOM(wxEVT_EC_INIT_DONE, -1, CamuleRemoteGuiApp::OnECInitDone) EVT_MULE_NOTIFY(CamuleRemoteGuiApp::OnNotifyEvent) #ifdef ENABLE_IP2COUNTRY // HTTPDownload finished EVT_MULE_INTERNAL(wxEVT_CORE_FINISHED_HTTP_DOWNLOAD, -1, CamuleRemoteGuiApp::OnFinishedHTTPDownload) #endif END_EVENT_TABLE() IMPLEMENT_APP(CamuleRemoteGuiApp) int CamuleRemoteGuiApp::OnExit() { StopTickTimer(); return wxApp::OnExit(); } void CamuleRemoteGuiApp::OnPollTimer(wxTimerEvent&) { static int request_step = 0; static uint32 msPrevStats = 0; if (m_connect->RequestFifoFull()) { return; } switch (request_step) { case 0: // We used to update the connection state here, but that's done with the stats in the next step now. request_step++; break; case 1: { CECPacket stats_req(EC_OP_STAT_REQ, EC_DETAIL_INC_UPDATE); m_connect->SendRequest(&m_stats_updater, &stats_req); request_step++; break; } case 2: if (amuledlg->m_sharedfileswnd->IsShown() || amuledlg->m_chatwnd->IsShown() || amuledlg->m_serverwnd->IsShown()) { // update downloads, shared files and servers knownfiles->DoRequery(EC_OP_GET_UPDATE, EC_TAG_KNOWNFILE); } else if (amuledlg->m_transferwnd->IsShown()) { // update both downloads and shared files knownfiles->DoRequery(EC_OP_GET_UPDATE, EC_TAG_KNOWNFILE); } else if (amuledlg->m_searchwnd->IsShown()) { if (searchlist->m_curr_search != -1) { searchlist->DoRequery(EC_OP_SEARCH_RESULTS, EC_TAG_SEARCHFILE); } } else if (amuledlg->m_statisticswnd->IsShown()) { int sStatsUpdate = thePrefs::GetStatsInterval(); uint32 msCur = theStats::GetUptimeMillis(); if ((sStatsUpdate > 0) && ((int)(msCur - msPrevStats) > sStatsUpdate*1000)) { msPrevStats = msCur; stattree->DoRequery(); } } // Back to the roots request_step = 0; break; default: wxFAIL; request_step = 0; } // Check for new links once per second. static uint32 lastED2KLinkCheck = 0; if (GetTickCount() - lastED2KLinkCheck >= 1000) { AddLinksFromFile(); lastED2KLinkCheck = GetTickCount(); } } void CamuleRemoteGuiApp::OnFinishedHTTPDownload(CMuleInternalEvent& event) { if (event.GetInt() == HTTP_GeoIP) { amuledlg->IP2CountryDownloadFinished(event.GetExtraLong()); // If we updated, the dialog is already up. Redraw it to show the flags. amuledlg->Refresh(); } } void CamuleRemoteGuiApp::ShutDown(wxCloseEvent &WXUNUSED(evt)) { // Stop the Core Timer delete poll_timer; poll_timer = NULL; m_AsioService->Stop(); delete m_AsioService; m_AsioService = NULL; // Destroy the EC socket m_connect->Destroy(); m_connect = NULL; // if (amuledlg) { amuledlg->DlgShutDown(); amuledlg->Destroy(); amuledlg = NULL; } delete m_allUploadingKnownFile; delete stattree; } bool CamuleRemoteGuiApp::OnInit() { StartTickTimer(); amuledlg = NULL; // Get theApp theApp = &wxGetApp(); // Handle uncaught exceptions InstallMuleExceptionHandler(); // Parse cmdline arguments. if (!InitCommon(AMULE_APP_BASE::argc, AMULE_APP_BASE::argv)) { return false; } // Create the polling timer poll_timer = new wxTimer(this,ID_CORE_TIMER_EVENT); if (!poll_timer) { AddLogLineCS(_("Fatal Error: Failed to create Poll Timer")); OnExit(); } m_connect = new CRemoteConnect(this); m_AsioService = new CAsioService; glob_prefs = new CPreferencesRem(m_connect); long enableZLIB; wxConfig::Get()->Read(wxT("/EC/ZLIB"), &enableZLIB, 1); m_connect->SetCapabilities(enableZLIB != 0, true, false); // ZLIB, UTF8 numbers, notification InitCustomLanguages(); InitLocale(m_locale, StrLang2wx(thePrefs::GetLanguageID())); if (ShowConnectionDialog()) { AddLogLineNS(_("Going to event loop...")); return true; } return false; } bool CamuleRemoteGuiApp::CryptoAvailable() const { return thePrefs::IsSecureIdentEnabled(); // good enough } bool CamuleRemoteGuiApp::ShowConnectionDialog() { dialog = new CEConnectDlg; if (m_skipConnectionDialog) { wxCommandEvent evt; dialog->OnOK(evt); } else if (dialog->ShowModal() != wxID_OK) { dialog->Destroy(); return false; } AddLogLineNS(_("Connecting...")); if (!m_connect->ConnectToCore(dialog->Host(), dialog->Port(), dialog->Login(), dialog->PassHash(), wxT("amule-remote"), wxT("0x0001"))) { wxMessageBox(_("Connection failed "),_("ERROR"),wxOK); return false; } return true; } void CamuleRemoteGuiApp::OnECConnection(wxEvent& event) { wxECSocketEvent& evt = *((wxECSocketEvent*)&event); AddLogLineNS(_("Remote GUI EC event handler")); wxString reply = evt.GetServerReply(); AddLogLineC(reply); if (evt.GetResult() == true) { // Connected - go to next init step glob_prefs->LoadRemote(); } else { AddLogLineNS(_("Going down")); if (dialog) { // connect failed wxMessageBox( (CFormat(_("Connection Failed. Unable to connect to %s:%d\n")) % dialog->Host() % dialog->Port()) + reply, _("ERROR"), wxOK); } else { // server disconnected (probably terminated) later wxMessageBox(_("Connection closed - aMule has terminated probably."), _("ERROR"), wxOK); } wxCloseEvent ev; ShutDown(ev); ExitMainLoop(); } } void CamuleRemoteGuiApp::OnECInitDone(wxEvent& ) { Startup(); } void CamuleRemoteGuiApp::OnNotifyEvent(CMuleGUIEvent& evt) { evt.Notify(); } void CamuleRemoteGuiApp::Startup() { if (dialog->SaveUserPass()) { wxConfig::Get()->Write(wxT("/EC/Host"), dialog->Host()); wxConfig::Get()->Write(wxT("/EC/Port"), dialog->Port()); wxConfig::Get()->Write(wxT("/EC/Password"), dialog->PassHash()); } dialog->Destroy(); dialog = NULL; m_ConnState = 0; m_clientID = 0; serverconnect = new CServerConnectRem(m_connect); m_statistics = new CStatistics(*m_connect); stattree = new CStatTreeRem(m_connect); clientlist = new CUpDownClientListRem(m_connect); searchlist = new CSearchListRem(m_connect); serverlist = new CServerListRem(m_connect); friendlist = new CFriendListRem(m_connect); sharedfiles = new CSharedFilesRem(m_connect); knownfiles = new CKnownFilesRem(m_connect); downloadqueue = new CDownQueueRem(m_connect); ipfilter = new CIPFilterRem(m_connect); m_allUploadingKnownFile = new CKnownFile; // Create main dialog InitGui(m_geometryEnabled, m_geometryString); // Forward wxLog events to CLogger wxLog::SetActiveTarget(new CLoggerTarget); knownfiles->DoRequery(EC_OP_GET_UPDATE, EC_TAG_KNOWNFILE); // Start the Poll Timer poll_timer->Start(1000); amuledlg->StartGuiTimer(); // Now activate GeoIP, so that the download dialog doesn't get destroyed immediately #ifdef ENABLE_IP2COUNTRY if (thePrefs::IsGeoIPEnabled()) { amuledlg->m_IP2Country->Enable(); } #endif } int CamuleRemoteGuiApp::ShowAlert(wxString msg, wxString title, int flags) { return CamuleGuiBase::ShowAlert(msg, title, flags); } void CamuleRemoteGuiApp::AddRemoteLogLine(const wxString& line) { amuledlg->AddLogLine(line); } int CamuleRemoteGuiApp::InitGui(bool geometry_enabled, wxString &geom_string) { CamuleGuiBase::InitGui(geometry_enabled, geom_string); SetTopWindow(amuledlg); AddLogLineN(_("Ready")); // The first log line after the window is up triggers output of all the ones before return 0; } bool CamuleRemoteGuiApp::CopyTextToClipboard(wxString strText) { return CamuleGuiBase::CopyTextToClipboard(strText); } uint32 CamuleRemoteGuiApp::GetPublicIP() { return 0; } wxString CamuleRemoteGuiApp::GetLog(bool reset) { if (reset) { amuledlg->ResetLog(ID_LOGVIEW); CECPacket req(EC_OP_RESET_LOG); m_connect->SendPacket(&req); } return wxEmptyString; } wxString CamuleRemoteGuiApp::GetServerLog(bool) { return wxEmptyString; } bool CamuleRemoteGuiApp::AddServer(CServer * server, bool) { CECPacket req(EC_OP_SERVER_ADD); req.AddTag(CECTag(EC_TAG_SERVER_ADDRESS, CFormat(wxT("%s:%d")) % server->GetAddress() % server->GetPort())); req.AddTag(CECTag(EC_TAG_SERVER_NAME, server->GetListName())); m_connect->SendPacket(&req); return true; } bool CamuleRemoteGuiApp::IsFirewalled() const { if (IsConnectedED2K() && !serverconnect->IsLowID()) { return false; } return IsFirewalledKad(); } bool CamuleRemoteGuiApp::IsConnectedED2K() const { return serverconnect && serverconnect->IsConnected(); } void CamuleRemoteGuiApp::StartKad() { m_connect->StartKad(); } void CamuleRemoteGuiApp::StopKad() { m_connect->StopKad(); } void CamuleRemoteGuiApp::BootstrapKad(uint32 ip, uint16 port) { CECPacket req(EC_OP_KAD_BOOTSTRAP_FROM_IP); req.AddTag(CECTag(EC_TAG_BOOTSTRAP_IP, ip)); req.AddTag(CECTag(EC_TAG_BOOTSTRAP_PORT, port)); m_connect->SendPacket(&req); } void CamuleRemoteGuiApp::UpdateNotesDat(const wxString& url) { CECPacket req(EC_OP_KAD_UPDATE_FROM_URL); req.AddTag(CECTag(EC_TAG_KADEMLIA_UPDATE_URL, url)); m_connect->SendPacket(&req); } void CamuleRemoteGuiApp::DisconnectED2K() { if (IsConnectedED2K()) { m_connect->DisconnectED2K(); } } uint32 CamuleRemoteGuiApp::GetED2KID() const { return serverconnect ? serverconnect->GetClientID() : 0; } uint32 CamuleRemoteGuiApp::GetID() const { return m_clientID; } void CamuleRemoteGuiApp::ShowUserCount() { wxString buffer; static const wxString s_singlenetstatusformat = _("Users: %s | Files: %s"); static const wxString s_bothnetstatusformat = _("Users: E: %s K: %s | Files: E: %s K: %s"); if (thePrefs::GetNetworkED2K() && thePrefs::GetNetworkKademlia()) { buffer = CFormat(s_bothnetstatusformat) % CastItoIShort(theStats::GetED2KUsers()) % CastItoIShort(theStats::GetKadUsers()) % CastItoIShort(theStats::GetED2KFiles()) % CastItoIShort(theStats::GetKadFiles()); } else if (thePrefs::GetNetworkED2K()) { buffer = CFormat(s_singlenetstatusformat) % CastItoIShort(theStats::GetED2KUsers()) % CastItoIShort(theStats::GetED2KFiles()); } else if (thePrefs::GetNetworkKademlia()) { buffer = CFormat(s_singlenetstatusformat) % CastItoIShort(theStats::GetKadUsers()) % CastItoIShort(theStats::GetKadFiles()); } else { buffer = _("No networks selected"); } Notify_ShowUserCount(buffer); } /* * Preferences: holds both local and remote settings. * * First, everything is loaded from local config file. Later, settings * that are relevant on remote side only are loaded thru EC */ CPreferencesRem::CPreferencesRem(CRemoteConnect *conn) { m_conn = conn; // // Settings queried from remote side // m_exchange_send_selected_prefs = EC_PREFS_GENERAL | EC_PREFS_CONNECTIONS | EC_PREFS_MESSAGEFILTER | EC_PREFS_ONLINESIG | EC_PREFS_SERVERS | EC_PREFS_FILES | EC_PREFS_DIRECTORIES | EC_PREFS_SECURITY | EC_PREFS_CORETWEAKS | EC_PREFS_REMOTECONTROLS | EC_PREFS_KADEMLIA; m_exchange_recv_selected_prefs = m_exchange_send_selected_prefs | EC_PREFS_CATEGORIES; } void CPreferencesRem::HandlePacket(const CECPacket *packet) { static_cast(packet)->Apply(); const CECTag *cat_tags = packet->GetTagByName(EC_TAG_PREFS_CATEGORIES); if (cat_tags) { for (CECTag::const_iterator it = cat_tags->begin(); it != cat_tags->end(); ++it) { const CECTag &cat_tag = *it; Category_Struct *cat = new Category_Struct; cat->title = cat_tag.GetTagByName(EC_TAG_CATEGORY_TITLE)->GetStringData(); cat->path = CPath(cat_tag.GetTagByName(EC_TAG_CATEGORY_PATH)->GetStringData()); cat->comment = cat_tag.GetTagByName(EC_TAG_CATEGORY_COMMENT)->GetStringData(); cat->color = cat_tag.GetTagByName(EC_TAG_CATEGORY_COLOR)->GetInt(); cat->prio = cat_tag.GetTagByName(EC_TAG_CATEGORY_PRIO)->GetInt(); theApp->glob_prefs->AddCat(cat); } } else { Category_Struct *cat = new Category_Struct; cat->title = _("All"); cat->color = 0; cat->prio = PR_NORMAL; theApp->glob_prefs->AddCat(cat); } wxECInitDoneEvent event; theApp->AddPendingEvent(event); } bool CPreferencesRem::LoadRemote() { // // override local settings with remote CECPacket req(EC_OP_GET_PREFERENCES, EC_DETAIL_UPDATE); // bring categories too req.AddTag(CECTag(EC_TAG_SELECT_PREFS, m_exchange_recv_selected_prefs)); m_conn->SendRequest(this, &req); return true; } void CPreferencesRem::SendToRemote() { CEC_Prefs_Packet pref_packet(m_exchange_send_selected_prefs, EC_DETAIL_UPDATE, EC_DETAIL_FULL); m_conn->SendPacket(&pref_packet); } class CCatHandler : public CECPacketHandlerBase { virtual void HandlePacket(const CECPacket *packet); }; void CCatHandler::HandlePacket(const CECPacket *packet) { if (packet->GetOpCode() == EC_OP_FAILED) { const CECTag * catTag = packet->GetTagByName(EC_TAG_CATEGORY); const CECTag * pathTag = packet->GetTagByName(EC_TAG_CATEGORY_PATH); if (catTag && pathTag && catTag->GetInt() < theApp->glob_prefs->GetCatCount()) { int cat = catTag->GetInt(); Category_Struct* cs = theApp->glob_prefs->GetCategory(cat); wxMessageBox(CFormat(_("Can't create directory '%s' for category '%s', keeping directory '%s'.")) % cs->path.GetPrintable() % cs->title % pathTag->GetStringData(), _("ERROR"), wxOK); cs->path = CPath(pathTag->GetStringData()); theApp->amuledlg->m_transferwnd->UpdateCategory(cat); theApp->amuledlg->m_transferwnd->downloadlistctrl->Refresh(); } } delete this; } bool CPreferencesRem::CreateCategory( Category_Struct *& category, const wxString& name, const CPath& path, const wxString& comment, uint32 color, uint8 prio) { CECPacket req(EC_OP_CREATE_CATEGORY); CEC_Category_Tag tag(0xffffffff, name, path.GetRaw(), comment, color, prio); req.AddTag(tag); m_conn->SendRequest(new CCatHandler, &req); category = new Category_Struct(); category->path = path; category->title = name; category->comment = comment; category->color = color; category->prio = prio; AddCat(category); return true; } bool CPreferencesRem::UpdateCategory( uint8 cat, const wxString& name, const CPath& path, const wxString& comment, uint32 color, uint8 prio) { CECPacket req(EC_OP_UPDATE_CATEGORY); CEC_Category_Tag tag(cat, name, path.GetRaw(), comment, color, prio); req.AddTag(tag); m_conn->SendRequest(new CCatHandler, &req); Category_Struct *category = m_CatList[cat]; category->path = path; category->title = name; category->comment = comment; category->color = color; category->prio = prio; return true; } void CPreferencesRem::RemoveCat(uint8 cat) { CECPacket req(EC_OP_DELETE_CATEGORY); CEC_Category_Tag tag(cat, EC_DETAIL_CMD); req.AddTag(tag); m_conn->SendPacket(&req); CPreferences::RemoveCat(cat); } // // Container implementation // CServerConnectRem::CServerConnectRem(CRemoteConnect *conn) { m_CurrServer = 0; m_Conn = conn; } void CServerConnectRem::ConnectToAnyServer() { CECPacket req(EC_OP_SERVER_CONNECT); m_Conn->SendPacket(&req); } void CServerConnectRem::StopConnectionTry() { // lfroen: isn't Disconnect the same ? } void CServerConnectRem::Disconnect() { CECPacket req(EC_OP_SERVER_DISCONNECT); m_Conn->SendPacket(&req); } void CServerConnectRem::ConnectToServer(CServer *server) { m_Conn->ConnectED2K(server->GetIP(), server->GetPort()); } void CServerConnectRem::HandlePacket(const CECPacket *packet) { const CEC_ConnState_Tag *tag = static_cast(packet->GetTagByName(EC_TAG_CONNSTATE)); if (!tag) { return; } theApp->m_ConnState = 0; CServer *server; m_ID = tag->GetEd2kId(); theApp->m_clientID = tag->GetClientId(); if (tag->IsConnectedED2K()) { const CECTag *srvtag = tag->GetTagByName(EC_TAG_SERVER); if (srvtag) { server = theApp->serverlist->GetByID(srvtag->GetInt()); if (server != m_CurrServer) { theApp->amuledlg->m_serverwnd->serverlistctrl->HighlightServer(server, true); m_CurrServer = server; } } theApp->m_ConnState |= CONNECTED_ED2K; } else if ( m_CurrServer ) { theApp->amuledlg->m_serverwnd->serverlistctrl->HighlightServer(m_CurrServer, false); m_CurrServer = 0; } if (tag->IsConnectedKademlia()) { if (tag->IsKadFirewalled()) { theApp->m_ConnState |= CONNECTED_KAD_FIREWALLED; } else { theApp->m_ConnState |= CONNECTED_KAD_OK; } } else { if (tag->IsKadRunning()) { theApp->m_ConnState |= CONNECTED_KAD_NOT; } } theApp->amuledlg->ShowConnectionState(); } /* * Server list: host list of ed2k servers. */ CServerListRem::CServerListRem(CRemoteConnect *conn) : CRemoteContainer(conn, true) { } void CServerListRem::HandlePacket(const CECPacket *) { // There is no packet for the server list, it is part of the general update packet wxFAIL; // CRemoteContainer::HandlePacket(packet); } void CServerListRem::UpdateServerMetFromURL(wxString url) { CECPacket req(EC_OP_SERVER_UPDATE_FROM_URL); req.AddTag(CECTag(EC_TAG_SERVERS_UPDATE_URL, url)); m_conn->SendPacket(&req); } void CServerListRem::SetStaticServer(CServer* server, bool isStatic) { // update display right away server->SetIsStaticMember(isStatic); Notify_ServerRefresh(server); CECPacket req(EC_OP_SERVER_SET_STATIC_PRIO); req.AddTag(CECTag(EC_TAG_SERVER, server->ECID())); req.AddTag(CECTag(EC_TAG_SERVER_STATIC, isStatic)); m_conn->SendPacket(&req); } void CServerListRem::SetServerPrio(CServer* server, uint32 prio) { // update display right away server->SetPreference(prio); Notify_ServerRefresh(server); CECPacket req(EC_OP_SERVER_SET_STATIC_PRIO); req.AddTag(CECTag(EC_TAG_SERVER, server->ECID())); req.AddTag(CECTag(EC_TAG_SERVER_PRIO, prio)); m_conn->SendPacket(&req); } void CServerListRem::RemoveServer(CServer* server) { m_conn->RemoveServer(server->GetIP(),server->GetPort()); } void CServerListRem::UpdateUserFileStatus(CServer *server) { if (server) { m_TotalUser = server->GetUsers(); m_TotalFile = server->GetFiles(); } } CServer *CServerListRem::GetServerByAddress(const wxString& WXUNUSED(address), uint16 WXUNUSED(port)) const { // It's ok to return 0 for context where this code is used in remote gui return 0; } CServer *CServerListRem::GetServerByIPTCP(uint32 WXUNUSED(nIP), uint16 WXUNUSED(nPort)) const { // It's ok to return 0 for context where this code is used in remote gui return 0; } CServer *CServerListRem::CreateItem(const CEC_Server_Tag *tag) { CServer * server = new CServer(tag); ProcessItemUpdate(tag, server); return server; } void CServerListRem::DeleteItem(CServer *in_srv) { CScopedPtr srv(in_srv); theApp->amuledlg->m_serverwnd->serverlistctrl->RemoveServer(srv.get()); } uint32 CServerListRem::GetItemID(CServer *server) { return server->ECID(); } void CServerListRem::ProcessItemUpdate(const CEC_Server_Tag * tag, CServer * server) { if (!tag->HasChildTags()) { return; } tag->ServerName(& server->listname); tag->ServerDesc(& server->description); tag->ServerVersion(& server->m_strVersion); tag->GetMaxUsers(& server->maxusers); tag->GetFiles(& server->files); tag->GetUsers(& server->users); tag->GetPrio(& server->preferences); // SRV_PR_NORMAL = 0, so it's ok tag->GetStatic(& server->staticservermember); tag->GetPing(& server->ping); tag->GetFailed(& server->failedcount); theApp->amuledlg->m_serverwnd->serverlistctrl->RefreshServer(server); } CServer::CServer(const CEC_Server_Tag *tag) : CECID(tag->GetInt()) { ip = tag->GetTagByNameSafe(EC_TAG_SERVER_IP)->GetInt(); port = tag->GetTagByNameSafe(EC_TAG_SERVER_PORT)->GetInt(); Init(); } /* * IP filter */ CIPFilterRem::CIPFilterRem(CRemoteConnect* conn) { m_conn = conn; } void CIPFilterRem::Reload() { CECPacket req(EC_OP_IPFILTER_RELOAD); m_conn->SendPacket(&req); } void CIPFilterRem::Update(wxString url) { CECPacket req(EC_OP_IPFILTER_UPDATE); req.AddTag(CECTag(EC_TAG_STRING, url)); m_conn->SendPacket(&req); } /* * Shared files list */ CSharedFilesRem::CSharedFilesRem(CRemoteConnect *conn) { m_conn = conn; } void CSharedFilesRem::Reload(bool, bool) { CECPacket req(EC_OP_SHAREDFILES_RELOAD); m_conn->SendPacket(&req); } bool CSharedFilesRem::RenameFile(CKnownFile* file, const CPath& newName) { // We use the printable name, as the filename originated from user input, // and the filesystem name might not be valid on the remote host. const wxString strNewName = newName.GetPrintable(); CECPacket request(EC_OP_RENAME_FILE); request.AddTag(CECTag(EC_TAG_KNOWNFILE, file->GetFileHash())); request.AddTag(CECTag(EC_TAG_PARTFILE_NAME, strNewName)); m_conn->SendPacket(&request); return true; } void CSharedFilesRem::SetFileCommentRating(CKnownFile* file, const wxString& newComment, int8 newRating) { CECPacket request(EC_OP_SHARED_FILE_SET_COMMENT); request.AddTag(CECTag(EC_TAG_KNOWNFILE, file->GetFileHash())); request.AddTag(CECTag(EC_TAG_KNOWNFILE_COMMENT, newComment)); request.AddTag(CECTag(EC_TAG_KNOWNFILE_RATING, newRating)); m_conn->SendPacket(&request); } void CSharedFilesRem::CopyFileList(std::vector& out_list) const { out_list.reserve(size()); for (const_iterator it = begin(); it != end(); ++it) { out_list.push_back(it->second); } } void CKnownFilesRem::DeleteItem(CKnownFile * file) { uint32 id = file->ECID(); if (theApp->sharedfiles->count(id)) { theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl->RemoveFile(file); theApp->sharedfiles->erase(id); } if (theApp->downloadqueue->count(id)) { theApp->amuledlg->m_transferwnd->downloadlistctrl->RemoveFile(static_cast(file)); theApp->downloadqueue->erase(id); } delete file; } uint32 CKnownFilesRem::GetItemID(CKnownFile *file) { return file->ECID(); } void CKnownFilesRem::ProcessItemUpdate(const CEC_SharedFile_Tag *tag, CKnownFile *file) { const CECTag *parttag = tag->GetTagByName(EC_TAG_PARTFILE_PART_STATUS); if (parttag) { const uint8 *data = file->m_partStatus.Decode( (uint8 *)parttag->GetTagData(), parttag->GetTagDataLen()); for(int i = 0; i < file->GetPartCount(); ++i) { file->m_AvailPartFrequency[i] = data[i]; } } wxString fileName; if (tag->FileName(fileName)) { file->SetFileName(CPath(fileName)); } if (tag->FilePath(fileName)) { file->m_filePath = CPath(fileName); } tag->UpPrio(&file->m_iUpPriorityEC); tag->GetAICHHash(file->m_AICHMasterHash); // Bad thing - direct writing another class' members tag->GetRequests(&file->statistic.requested); tag->GetAllRequests(&file->statistic.alltimerequested); tag->GetAccepts(&file->statistic.accepted); tag->GetAllAccepts(&file->statistic.alltimeaccepted); tag->GetXferred(&file->statistic.transferred); tag->GetAllXferred(&file->statistic.alltimetransferred); tag->UpPrio(&file->m_iUpPriorityEC); if (file->m_iUpPriorityEC >= 10) { file->m_iUpPriority = file->m_iUpPriorityEC - 10; file->m_bAutoUpPriority = true; } else { file->m_iUpPriority = file->m_iUpPriorityEC; file->m_bAutoUpPriority = false; } tag->GetCompleteSourcesLow(&file->m_nCompleteSourcesCountLo); tag->GetCompleteSourcesHigh(&file->m_nCompleteSourcesCountHi); tag->GetCompleteSources(&file->m_nCompleteSourcesCount); tag->GetOnQueue(&file->m_queuedCount); tag->GetComment(file->m_strComment); tag->GetRating(file->m_iRating); requested += file->statistic.requested; transferred += file->statistic.transferred; accepted += file->statistic.transferred; if (!m_initialUpdate) { theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl->UpdateItem(file); } if (file->IsPartFile()) { ProcessItemUpdatePartfile(static_cast(tag), static_cast(file)); } } void CSharedFilesRem::SetFilePrio(CKnownFile *file, uint8 prio) { CECPacket req(EC_OP_SHARED_SET_PRIO); CECTag hashtag(EC_TAG_PARTFILE, file->GetFileHash()); hashtag.AddTag(CECTag(EC_TAG_PARTFILE_PRIO, prio)); req.AddTag(hashtag); m_conn->SendPacket(&req); } void CKnownFilesRem::ProcessUpdate(const CECTag *reply, CECPacket *, int) { requested = 0; transferred = 0; accepted = 0; std::set core_files; for (CECPacket::const_iterator it = reply->begin(); it != reply->end(); ++it) { const CECTag * curTag = &*it; ec_tagname_t tagname = curTag->GetTagName(); if (tagname == EC_TAG_CLIENT) { theApp->clientlist->ProcessUpdate(curTag, NULL, EC_TAG_CLIENT); } else if (tagname == EC_TAG_SERVER) { theApp->serverlist->ProcessUpdate(curTag, NULL, EC_TAG_SERVER); } else if (tagname == EC_TAG_FRIEND) { theApp->friendlist->ProcessUpdate(curTag, NULL, EC_TAG_FRIEND); } else if (tagname == EC_TAG_KNOWNFILE || tagname == EC_TAG_PARTFILE) { const CEC_SharedFile_Tag *tag = static_cast(curTag); uint32 id = tag->ID(); bool isNew = true; if (!m_initialUpdate) { core_files.insert(id); std::map::iterator it2 = m_items_hash.find(id); if (it2 != m_items_hash.end() ) { // Item already known: update it if (tag->HasChildTags()) { ProcessItemUpdate(tag, it2->second); } isNew = false; } } if (isNew) { CKnownFile * newFile; if (tag->GetTagName() == EC_TAG_PARTFILE) { CPartFile *file = new CPartFile(static_cast(tag)); ProcessItemUpdate(tag, file); (*theApp->downloadqueue)[id] = file; theApp->amuledlg->m_transferwnd->downloadlistctrl->AddFile(file); newFile = file; } else { newFile = new CKnownFile(tag); ProcessItemUpdate(tag, newFile); (*theApp->sharedfiles)[id] = newFile; if (!m_initialUpdate) { theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl->ShowFile(newFile); } } AddItem(newFile); } } } if (m_initialUpdate) { theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl->ShowFileList(); m_initialUpdate = false; } else { // remove items no longer present for(iterator it = begin(); it != end();) { iterator it2 = it++; if (!core_files.count(GetItemID(*it2))) { RemoveItem(it2); // This calls DeleteItem, where it is removed from lists and views. } } } } CKnownFilesRem::CKnownFilesRem(CRemoteConnect * conn) : CRemoteContainer(conn, true) { requested = 0; transferred = 0; accepted = 0; m_initialUpdate = true; } /* * List of uploading and waiting clients. */ CUpDownClientListRem::CUpDownClientListRem(CRemoteConnect *conn) : CRemoteContainer(conn, true) { } CClientRef::CClientRef(const CEC_UpDownClient_Tag *tag) { m_client = new CUpDownClient(tag); #ifdef DEBUG_ZOMBIE_CLIENTS m_client->Link(wxT("TAG")); #else m_client->Link(); #endif } CUpDownClient::CUpDownClient(const CEC_UpDownClient_Tag *tag) : CECID(tag->ID()) { m_linked = 0; #ifdef DEBUG_ZOMBIE_CLIENTS m_linkedDebug = false; #endif // Clients start up empty, then get asked for their data. // So all data here is processed in ProcessItemUpdate and thus updatable. m_bEmuleProtocol = false; m_AvailPartCount = 0; m_clientSoft = 0; m_nDownloadState = 0; m_Friend = NULL; m_bFriendSlot = false; m_nKadPort = 0; m_kBpsDown = 0; m_dwUserIP = 0; m_lastDownloadingPart = 0xffff; m_nextRequestedPart = 0xffff; m_obfuscationStatus = 0; m_nOldRemoteQueueRank = 0; m_nRemoteQueueRank = 0; m_reqfile = NULL; m_score = 0; m_dwServerIP = 0; m_nServerPort = 0; m_nSourceFrom = SF_NONE; m_nTransferredDown = 0; m_nTransferredUp = 0; m_nUpDatarate = 0; m_uploadingfile = NULL; m_waitingPosition = 0; m_nUploadState = 0; m_nUserIDHybrid = 0; m_nUserPort = 0; m_nClientVersion = 0; m_fNoViewSharedFiles = true; m_identState = IS_NOTAVAILABLE; m_bRemoteQueueFull = false; credits = new CClientCredits(new CreditStruct()); } #ifdef DEBUG_ZOMBIE_CLIENTS void CUpDownClient::Unlink(const wxString& from) { std::multiset::iterator it = m_linkedFrom.find(from); if (it != m_linkedFrom.end()) { m_linkedFrom.erase(it); } m_linked--; if (!m_linked) { if (m_linkedDebug) { AddLogLineN(CFormat(wxT("Last reference to client %d %p unlinked, delete it.")) % ECID() % this); } delete this; } } #else void CUpDownClient::Unlink() { m_linked--; if (!m_linked) { delete this; } } #endif uint64 CUpDownClient::GetDownloadedTotal() const { return credits->GetDownloadedTotal(); } uint64 CUpDownClient::GetUploadedTotal() const { return credits->GetUploadedTotal(); } double CUpDownClient::GetScoreRatio() const { return credits->GetScoreRatio(GetIP(), theApp->CryptoAvailable()); } /* End Warning */ CUpDownClient::~CUpDownClient() { delete credits; } CClientRef *CUpDownClientListRem::CreateItem(const CEC_UpDownClient_Tag *tag) { CClientRef *client = new CClientRef(tag); ProcessItemUpdate(tag, client); return client; } void CUpDownClientListRem::DeleteItem(CClientRef *clientref) { CUpDownClient* client = clientref->GetClient(); if (client->m_reqfile) { client->m_reqfile->DelSource(client); client->m_reqfile = NULL; } Notify_SourceCtrlRemoveSource(client->ECID(), (CPartFile*) NULL); if (client->m_uploadingfile) { client->m_uploadingfile->RemoveUploadingClient(client); // this notifies client->m_uploadingfile = NULL; } theApp->m_allUploadingKnownFile->RemoveUploadingClient(client); // in case it vanished directly while uploading Notify_SharedCtrlRemoveClient(client->ECID(), (CKnownFile*) NULL); if (client->m_Friend) { client->m_Friend->UnLinkClient(); // this notifies client->m_Friend = NULL; } #ifdef DEBUG_ZOMBIE_CLIENTS if (client->m_linked > 1) { AddLogLineC(CFormat(wxT("Client %d still linked in %d places: %s")) % client->ECID() % (client->m_linked - 1) % client->GetLinkedFrom()); client->m_linkedDebug = true; } #endif delete clientref; } uint32 CUpDownClientListRem::GetItemID(CClientRef *client) { return client->ECID(); } void CUpDownClientListRem::ProcessItemUpdate( const CEC_UpDownClient_Tag *tag, CClientRef *clientref) { if (!tag->HasChildTags()) { return; // speed exit for clients without any change } CUpDownClient *client = clientref->GetClient(); tag->UserID(&client->m_nUserIDHybrid); tag->ClientName(&client->m_Username); // Client Software bool sw_updated = false; if (tag->ClientSoftware(client->m_clientSoft)) { client->m_clientSoftString = GetSoftName(client->m_clientSoft); sw_updated = true; } if (tag->SoftVerStr(client->m_clientVerString) || sw_updated) { if (client->m_clientSoftString == _("Unknown")) { client->m_fullClientVerString = client->m_clientSoftString; } else { client->m_fullClientVerString = client->m_clientSoftString + wxT(" ") + client->m_clientVerString; } } // User hash tag->UserHash(&client->m_UserHash); // User IP:Port tag->UserIP(client->m_dwUserIP); tag->UserPort(&client->m_nUserPort); // Server IP:Port tag->ServerIP(&client->m_dwServerIP); tag->ServerPort(&client->m_nServerPort); tag->ServerName(&client->m_ServerName); tag->KadPort(client->m_nKadPort); tag->FriendSlot(client->m_bFriendSlot); tag->GetCurrentIdentState(&client->m_identState); tag->ObfuscationStatus(client->m_obfuscationStatus); tag->HasExtendedProtocol(&client->m_bEmuleProtocol); tag->WaitingPosition(&client->m_waitingPosition); tag->RemoteQueueRank(&client->m_nRemoteQueueRank); client->m_bRemoteQueueFull = client->m_nRemoteQueueRank == 0xffff; tag->OldRemoteQueueRank(&client->m_nOldRemoteQueueRank); tag->ClientDownloadState(client->m_nDownloadState); if (tag->ClientUploadState(client->m_nUploadState)) { if (client->m_nUploadState == US_UPLOADING) { theApp->m_allUploadingKnownFile->AddUploadingClient(client); } else { theApp->m_allUploadingKnownFile->RemoveUploadingClient(client); } } tag->SpeedUp(&client->m_nUpDatarate); if ( client->m_nDownloadState == DS_DOWNLOADING ) { tag->SpeedDown(&client->m_kBpsDown); } else { client->m_kBpsDown = 0; } //tag->WaitTime(&client->m_WaitTime); //tag->XferTime(&client->m_UpStartTimeDelay); //tag->LastReqTime(&client->m_dwLastUpRequest); //tag->QueueTime(&client->m_WaitStartTime); CreditStruct *credit_struct = const_cast(client->credits->GetDataStruct()); tag->XferUp(&credit_struct->uploaded); tag->XferUpSession(&client->m_nTransferredUp); tag->XferDown(&credit_struct->downloaded); tag->XferDownSession(&client->m_nTransferredDown); tag->Score(&client->m_score); tag->NextRequestedPart(client->m_nextRequestedPart); tag->LastDownloadingPart(client->m_lastDownloadingPart); uint8 sourceFrom = 0; if (tag->GetSourceFrom(sourceFrom)) { client->m_nSourceFrom = (ESourceFrom)sourceFrom; } tag->RemoteFilename(client->m_clientFilename); tag->DisableViewShared(client->m_fNoViewSharedFiles); tag->Version(client->m_nClientVersion); tag->ModVersion(client->m_strModVersion); tag->OSInfo(client->m_sClientOSInfo); tag->AvailableParts(client->m_AvailPartCount); // Download client uint32 fileID; bool notified = false; if (tag->RequestFile(fileID)) { if (client->m_reqfile) { Notify_SourceCtrlRemoveSource(client->ECID(), client->m_reqfile); client->m_reqfile->DelSource(client); client->m_reqfile = NULL; client->m_downPartStatus.clear(); } CKnownFile * kf = theApp->knownfiles->GetByID(fileID); if (kf && kf->IsCPartFile()) { client->m_reqfile = static_cast(kf); client->m_reqfile->AddSource(client); client->m_downPartStatus.setsize(kf->GetPartCount(), 0); Notify_SourceCtrlAddSource(client->m_reqfile, CCLIENTREF(client, wxT("AddSource")), A4AF_SOURCE); notified = true; } } // Part status const CECTag * partStatusTag = tag->GetTagByName(EC_TAG_CLIENT_PART_STATUS); if (partStatusTag) { if (partStatusTag->GetTagDataLen() == 0) { // empty tag means full source client->m_downPartStatus.SetAllTrue(); } else if (partStatusTag->GetTagDataLen() == client->m_downPartStatus.SizeBuffer()) { client->m_downPartStatus.SetBuffer(partStatusTag->GetTagData()); } notified = false; } if (!notified && client->m_reqfile && client->m_reqfile->ShowSources()) { SourceItemType type; switch (client->GetDownloadState()) { case DS_DOWNLOADING: case DS_ONQUEUE: // We will send A4AF, which will be checked. type = A4AF_SOURCE; break; default: type = UNAVAILABLE_SOURCE; break; } Notify_SourceCtrlUpdateSource(client->ECID(), type); } // Upload client notified = false; if (tag->UploadFile(fileID)) { if (client->m_uploadingfile) { client->m_uploadingfile->RemoveUploadingClient(client); // this notifies notified = true; client->m_uploadingfile = NULL; } CKnownFile * kf = theApp->knownfiles->GetByID(fileID); if (kf) { client->m_uploadingfile = kf; client->m_upPartStatus.setsize(kf->GetPartCount(), 0); client->m_uploadingfile->AddUploadingClient(client); // this notifies notified = true; } } // Part status partStatusTag = tag->GetTagByName(EC_TAG_CLIENT_UPLOAD_PART_STATUS); if (partStatusTag) { if (partStatusTag->GetTagDataLen() == client->m_upPartStatus.SizeBuffer()) { client->m_upPartStatus.SetBuffer(partStatusTag->GetTagData()); } notified = false; } if (!notified && client->m_uploadingfile && (client->m_uploadingfile->ShowPeers() || (client->m_nUploadState == US_UPLOADING))) { // notify if KnowFile is selected, or if it's uploading (in case clients are in show uploading mode) SourceItemType type; switch (client->GetUploadState()) { case US_UPLOADING: case US_ONUPLOADQUEUE: type = AVAILABLE_SOURCE; break; default: type = UNAVAILABLE_SOURCE; break; } Notify_SharedCtrlRefreshClient(client->ECID(), type); } } /* * Download queue container: hold PartFiles with progress status * */ bool CDownQueueRem::AddLink(const wxString &link, uint8 cat) { CECPacket req(EC_OP_ADD_LINK); CECTag link_tag(EC_TAG_STRING, link); link_tag.AddTag(CECTag(EC_TAG_PARTFILE_CAT, cat)); req.AddTag(link_tag); m_conn->SendPacket(&req); return true; } void CDownQueueRem::ResetCatParts(int cat) { // Called when category is deleted. Command will be performed on the remote side, // but files still should be updated here right away, or drawing errors (colour not available) // will happen. for (iterator it = begin(); it != end(); ++it) { CPartFile* file = it->second; file->RemoveCategory(cat); } } void CKnownFilesRem::ProcessItemUpdatePartfile(const CEC_PartFile_Tag *tag, CPartFile *file) { // // update status // tag->Speed(&file->m_kbpsDown); file->kBpsDown = file->m_kbpsDown / 1024.0; tag->SizeXfer(&file->transferred); tag->SizeDone(&file->completedsize); tag->SourceXferCount(&file->transferingsrc); tag->SourceNotCurrCount(&file->m_notCurrentSources); tag->SourceCount(&file->m_source_count); tag->SourceCountA4AF(&file->m_a4af_source_count); tag->FileStatus(&file->status); tag->Stopped(&file->m_stopped); tag->LastSeenComplete(&file->lastseencomplete); tag->LastDateChanged(&file->m_lastDateChanged); tag->DownloadActiveTime(&file->m_nDlActiveTime); tag->AvailablePartCount(&file->m_availablePartsCount); tag->Shared(&file->m_isShared); tag->A4AFAuto(file->m_is_A4AF_auto); tag->HashingProgress(file->m_hashingProgress); tag->GetLostDueToCorruption(&file->m_iLostDueToCorruption); tag->GetGainDueToCompression(&file->m_iGainDueToCompression); tag->TotalPacketsSavedDueToICH(&file->m_iTotalPacketsSavedDueToICH); tag->FileCat(&file->m_category); tag->DownPrio(&file->m_iDownPriorityEC); if ( file->m_iDownPriorityEC >= 10 ) { file->m_iDownPriority = file->m_iDownPriorityEC - 10; file->m_bAutoDownPriority = true; } else { file->m_iDownPriority = file->m_iDownPriorityEC; file->m_bAutoDownPriority = false; } file->percentcompleted = (100.0*file->GetCompletedSize()) / file->GetFileSize(); // // Copy part/gap status // const CECTag *gaptag = tag->GetTagByName(EC_TAG_PARTFILE_GAP_STATUS); const CECTag *parttag = tag->GetTagByName(EC_TAG_PARTFILE_PART_STATUS); const CECTag *reqtag = tag->GetTagByName(EC_TAG_PARTFILE_REQ_STATUS); if (gaptag || parttag || reqtag) { PartFileEncoderData &encoder = file->m_PartFileEncoderData; if (gaptag) { ArrayOfUInts64 gaps; encoder.DecodeGaps(gaptag, gaps); int gap_size = gaps.size() / 2; // clear gaplist file->m_gaplist.Init(file->GetFileSize(), false); // and refill it for (int j = 0; j < gap_size; j++) { file->m_gaplist.AddGap(gaps[2*j], gaps[2*j+1]); } } if (parttag) { encoder.DecodeParts(parttag, file->m_SrcpartFrequency); // sanity check wxASSERT (file->m_SrcpartFrequency.size() == file->GetPartCount()); } if (reqtag) { ArrayOfUInts64 reqs; encoder.DecodeReqs(reqtag, reqs); int req_size = reqs.size() / 2; // clear reqlist DeleteContents(file->m_requestedblocks_list); // and refill it for (int j = 0; j < req_size; j++) { Requested_Block_Struct* block = new Requested_Block_Struct; block->StartOffset = reqs[2*j]; block->EndOffset = reqs[2*j+1]; file->m_requestedblocks_list.push_back(block); } } } // Get source names and counts const CECTag *srcnametag = tag->GetTagByName(EC_TAG_PARTFILE_SOURCE_NAMES); if (srcnametag) { SourcenameItemMap &map = file->GetSourcenameItemMap(); for (CECTag::const_iterator it = srcnametag->begin(); it != srcnametag->end(); ++it) { uint32 key = it->GetInt(); int count = it->GetTagByNameSafe(EC_TAG_PARTFILE_SOURCE_NAMES_COUNTS)->GetInt(); if (count == 0) { map.erase(key); } else { SourcenameItem &item = map[key]; item.count = count; const CECTag *nametag = it->GetTagByName(EC_TAG_PARTFILE_SOURCE_NAMES); if (nametag) { item.name = nametag->GetStringData(); } } } } // Get comments const CECTag *commenttag = tag->GetTagByName(EC_TAG_PARTFILE_COMMENTS); if (commenttag) { file->ClearFileRatingList(); for (CECTag::const_iterator it = commenttag->begin(); it != commenttag->end(); ) { wxString u = (it++)->GetStringData(); wxString f = (it++)->GetStringData(); int r = (it++)->GetInt(); wxString c = (it++)->GetStringData(); file->AddFileRatingList(u, f, r, c); } file->UpdateFileRatingCommentAvail(); } // Update A4AF sources ListOfUInts32 & clientIDs = file->GetA4AFClientIDs(); const CECTag *a4aftag = tag->GetTagByName(EC_TAG_PARTFILE_A4AF_SOURCES); if (a4aftag) { file->ClearA4AFList(); clientIDs.clear(); for (CECTag::const_iterator it = a4aftag->begin(); it != a4aftag->end(); ++it) { if (it->GetTagName() != EC_TAG_ECID) { // should always be this continue; } uint32 id = it->GetInt(); CClientRef * src = theApp->clientlist->GetByID(id); if (src) { file->AddA4AFSource(src->GetClient()); } else { // client wasn't transmitted yet, try it later clientIDs.push_back(id); } } } else if (!clientIDs.empty()) { // Process clients from the last pass whose ids were still unknown then for (ListOfUInts32::iterator it = clientIDs.begin(); it != clientIDs.end(); ) { ListOfUInts32::iterator it1 = it++; uint32 id = *it1; CClientRef * src = theApp->clientlist->GetByID(id); if (src) { file->AddA4AFSource(src->GetClient()); clientIDs.erase(it1); } } } theApp->amuledlg->m_transferwnd->downloadlistctrl->UpdateItem(file); // If file is shared check if it is already listed in shared files. // If not, add it and show it. if (file->IsShared() && !theApp->sharedfiles->count(file->ECID())) { (*theApp->sharedfiles)[file->ECID()] = file; theApp->amuledlg->m_sharedfileswnd->sharedfilesctrl->ShowFile(file); } } void CDownQueueRem::SendFileCommand(CPartFile *file, ec_tagname_t cmd) { CECPacket req(cmd); req.AddTag(CECTag(EC_TAG_PARTFILE, file->GetFileHash())); m_conn->SendPacket(&req); } void CDownQueueRem::Prio(CPartFile *file, uint8 prio) { CECPacket req(EC_OP_PARTFILE_PRIO_SET); CECTag hashtag(EC_TAG_PARTFILE, file->GetFileHash()); hashtag.AddTag(CECTag(EC_TAG_PARTFILE_PRIO, prio)); req.AddTag(hashtag); m_conn->SendPacket(&req); } void CDownQueueRem::AutoPrio(CPartFile *file, bool flag) { CECPacket req(EC_OP_PARTFILE_PRIO_SET); CECTag hashtag(EC_TAG_PARTFILE, file->GetFileHash()); hashtag.AddTag(CECTag(EC_TAG_PARTFILE_PRIO, (uint8)(flag ? PR_AUTO : file->GetDownPriority()))); req.AddTag(hashtag); m_conn->SendPacket(&req); } void CDownQueueRem::Category(CPartFile *file, uint8 cat) { CECPacket req(EC_OP_PARTFILE_SET_CAT); file->SetCategory(cat); CECTag hashtag(EC_TAG_PARTFILE, file->GetFileHash()); hashtag.AddTag(CECTag(EC_TAG_PARTFILE_CAT, cat)); req.AddTag(hashtag); m_conn->SendPacket(&req); } void CDownQueueRem::AddSearchToDownload(CSearchFile* file, uint8 category) { CECPacket req(EC_OP_DOWNLOAD_SEARCH_RESULT); CECTag hashtag(EC_TAG_PARTFILE, file->GetFileHash()); hashtag.AddTag(CECTag(EC_TAG_PARTFILE_CAT, category)); req.AddTag(hashtag); m_conn->SendPacket(&req); } void CDownQueueRem::ClearCompleted(const ListOfUInts32 & ecids) { CECPacket req(EC_OP_CLEAR_COMPLETED); for (ListOfUInts32::const_iterator it = ecids.begin(); it != ecids.end(); ++it) { req.AddTag(CECTag(EC_TAG_ECID, *it)); } m_conn->SendPacket(&req); } /* * List of friends. */ CFriendListRem::CFriendListRem(CRemoteConnect *conn) : CRemoteContainer(conn, true) { } void CFriendListRem::HandlePacket(const CECPacket *) { wxFAIL; // not needed } CFriend * CFriendListRem::CreateItem(const CEC_Friend_Tag * tag) { CFriend * Friend = new CFriend(tag->ID()); ProcessItemUpdate(tag, Friend); return Friend; } void CFriendListRem::DeleteItem(CFriend * Friend) { Friend->UnLinkClient(false); Notify_ChatRemoveFriend(Friend); } uint32 CFriendListRem::GetItemID(CFriend * Friend) { return Friend->ECID(); } void CFriendListRem::ProcessItemUpdate(const CEC_Friend_Tag * tag, CFriend * Friend) { if (!tag->HasChildTags()) { return; } tag->Name(Friend->m_strName); tag->UserHash(Friend->m_UserHash); tag->IP(Friend->m_dwLastUsedIP); tag->Port(Friend->m_nLastUsedPort); uint32 clientID; bool notified = false; if (tag->Client(clientID)) { if (clientID) { CClientRef * client = theApp->clientlist->GetByID(clientID); if (client) { Friend->LinkClient(*client); // this notifies notified = true; } } else { // Unlink Friend->UnLinkClient(false); } } if (!notified) { Notify_ChatUpdateFriend(Friend); } } void CFriendListRem::AddFriend(const CClientRef& toadd) { CECPacket req(EC_OP_FRIEND); CECEmptyTag addtag(EC_TAG_FRIEND_ADD); addtag.AddTag(CECTag(EC_TAG_CLIENT, toadd.ECID())); req.AddTag(addtag); m_conn->SendPacket(&req); } void CFriendListRem::AddFriend(const CMD4Hash& userhash, uint32 lastUsedIP, uint32 lastUsedPort, const wxString& name) { CECPacket req(EC_OP_FRIEND); CECEmptyTag addtag(EC_TAG_FRIEND_ADD); addtag.AddTag(CECTag(EC_TAG_FRIEND_HASH, userhash)); addtag.AddTag(CECTag(EC_TAG_FRIEND_IP, lastUsedIP)); addtag.AddTag(CECTag(EC_TAG_FRIEND_PORT, lastUsedPort)); addtag.AddTag(CECTag(EC_TAG_FRIEND_NAME, name)); req.AddTag(addtag); m_conn->SendPacket(&req); } void CFriendListRem::RemoveFriend(CFriend* toremove) { CECPacket req(EC_OP_FRIEND); CECEmptyTag removetag(EC_TAG_FRIEND_REMOVE); removetag.AddTag(CECTag(EC_TAG_FRIEND, toremove->ECID())); req.AddTag(removetag); m_conn->SendPacket(&req); } void CFriendListRem::SetFriendSlot(CFriend* Friend, bool new_state) { CECPacket req(EC_OP_FRIEND); CECTag slottag(EC_TAG_FRIEND_FRIENDSLOT, new_state); slottag.AddTag(CECTag(EC_TAG_FRIEND, Friend->ECID())); req.AddTag(slottag); m_conn->SendPacket(&req); } void CFriendListRem::RequestSharedFileList(CFriend* Friend) { CECPacket req(EC_OP_FRIEND); CECEmptyTag sharedtag(EC_TAG_FRIEND_SHARED); sharedtag.AddTag(CECTag(EC_TAG_FRIEND, Friend->ECID())); req.AddTag(sharedtag); m_conn->SendPacket(&req); } void CFriendListRem::RequestSharedFileList(CClientRef& client) { CECPacket req(EC_OP_FRIEND); CECEmptyTag sharedtag(EC_TAG_FRIEND_SHARED); sharedtag.AddTag(CECTag(EC_TAG_CLIENT, client.ECID())); req.AddTag(sharedtag); m_conn->SendPacket(&req); } /* * Search results */ CSearchListRem::CSearchListRem(CRemoteConnect *conn) : CRemoteContainer(conn, true) { m_curr_search = -1; } wxString CSearchListRem::StartNewSearch( uint32* nSearchID, SearchType search_type, const CSearchList::CSearchParams& params) { CECPacket search_req(EC_OP_SEARCH_START); EC_SEARCH_TYPE ec_search_type = EC_SEARCH_LOCAL; switch(search_type) { case LocalSearch: ec_search_type = EC_SEARCH_LOCAL; break; case GlobalSearch: ec_search_type = EC_SEARCH_GLOBAL; break; case KadSearch: ec_search_type = EC_SEARCH_KAD; break; } search_req.AddTag( CEC_Search_Tag(params.searchString, ec_search_type, params.typeText, params.extension, params.availability, params.minSize, params.maxSize)); m_conn->SendPacket(&search_req); m_curr_search = *(nSearchID); // No kad remote search yet. Flush(); return wxEmptyString; // EC reply will have the error mesg is needed. } void CSearchListRem::StopSearch(bool) { if (m_curr_search != -1) { CECPacket search_req(EC_OP_SEARCH_STOP); m_conn->SendPacket(&search_req); } } void CSearchListRem::HandlePacket(const CECPacket *packet) { if ( packet->GetOpCode() == EC_OP_SEARCH_PROGRESS ) { CoreNotify_Search_Update_Progress(packet->GetFirstTagSafe()->GetInt()); } else { CRemoteContainer::HandlePacket(packet); } } CSearchFile::CSearchFile(const CEC_SearchFile_Tag *tag) : CECID(tag->ID()), m_parent(NULL), m_showChildren(false), m_sourceCount(0), m_completeSourceCount(0), m_kademlia(false), m_downloadStatus(NEW), m_clientID(0), m_clientPort(0), m_kadPublishInfo(0) { SetFileName(CPath(tag->FileName())); m_abyFileHash = tag->FileHash(); SetFileSize(tag->SizeFull()); m_searchID = theApp->searchlist->m_curr_search; uint32 parentID = tag->ParentID(); if (parentID) { CSearchFile * parent = theApp->searchlist->GetByID(parentID); if (parent) { parent->AddChild(this); } } } void CSearchFile::AddChild(CSearchFile* file) { m_children.push_back(file); file->m_parent = this; } // dtor is virtual - must be implemented CSearchFile::~CSearchFile() { } CSearchFile *CSearchListRem::CreateItem(const CEC_SearchFile_Tag *tag) { CSearchFile *file = new CSearchFile(tag); ProcessItemUpdate(tag, file); theApp->amuledlg->m_searchwnd->AddResult(file); return file; } void CSearchListRem::DeleteItem(CSearchFile *file) { delete file; } uint32 CSearchListRem::GetItemID(CSearchFile *file) { return file->ECID(); } void CSearchListRem::ProcessItemUpdate(const CEC_SearchFile_Tag *tag, CSearchFile *file) { uint32 sourceCount = file->m_sourceCount; uint32 completeSourceCount = file->m_completeSourceCount; CSearchFile::DownloadStatus status = file->m_downloadStatus; tag->SourceCount(&file->m_sourceCount); tag->CompleteSourceCount(&file->m_completeSourceCount); tag->DownloadStatus((uint32 *) &file->m_downloadStatus); if (file->m_sourceCount != sourceCount || file->m_completeSourceCount != completeSourceCount || file->m_downloadStatus != status) { if (theApp->amuledlg && theApp->amuledlg->m_searchwnd) { theApp->amuledlg->m_searchwnd->UpdateResult(file); } } } bool CSearchListRem::Phase1Done(const CECPacket *WXUNUSED(reply)) { CECPacket progress_req(EC_OP_SEARCH_PROGRESS); m_conn->SendRequest(this, &progress_req); return true; } void CSearchListRem::RemoveResults(long nSearchID) { ResultMap::iterator it = m_results.find(nSearchID); if (it != m_results.end()) { CSearchResultList& list = it->second; for (unsigned int i = 0; i < list.size(); ++i) { delete list[i]; } m_results.erase(it); } } const CSearchResultList& CSearchListRem::GetSearchResults(long nSearchID) { ResultMap::const_iterator it = m_results.find(nSearchID); if (it != m_results.end()) { return it->second; } // TODO: Should we assert in this case? static CSearchResultList list; return list; } void CStatsUpdaterRem::HandlePacket(const CECPacket *packet) { theStats::UpdateStats(packet); theApp->amuledlg->ShowTransferRate(); theApp->ShowUserCount(); // maybe there should be a check if a usercount changed ? // handle the connstate tag which is included in the stats packet theApp->serverconnect->HandlePacket(packet); } void CUpDownClient::RequestSharedFileList() { CClientRef ref = CCLIENTREF(this, wxEmptyString); theApp->friendlist->RequestSharedFileList(ref); } bool CUpDownClient::SwapToAnotherFile( bool WXUNUSED(bIgnoreNoNeeded), bool WXUNUSED(ignoreSuspensions), bool WXUNUSED(bRemoveCompletely), CPartFile* toFile) { CECPacket req(EC_OP_CLIENT_SWAP_TO_ANOTHER_FILE); req.AddTag(CECTag(EC_TAG_CLIENT, ECID())); req.AddTag(CECTag(EC_TAG_PARTFILE, toFile->GetFileHash())); theApp->m_connect->SendPacket(&req); return true; } wxString CAICHHash::GetString() const { return EncodeBase32(m_abyBuffer, HASHSIZE); } // // Those functions are virtual. So even they don't get called they must // be defined so linker will be happy // CPacket* CKnownFile::CreateSrcInfoPacket(const CUpDownClient *, uint8 /*byRequestedVersion*/, uint16 /*nRequestedOptions*/) { wxFAIL; return 0; } bool CKnownFile::LoadFromFile(const class CFileDataIO*) { wxFAIL; return false; } void CKnownFile::UpdatePartsInfo() { wxFAIL; } CPacket* CPartFile::CreateSrcInfoPacket(CUpDownClient const *, uint8 /*byRequestedVersion*/, uint16 /*nRequestedOptions*/) { wxFAIL; return 0; } void CPartFile::UpdatePartsInfo() { wxFAIL; } void CPartFile::UpdateFileRatingCommentAvail() { bool prevComment = m_hasComment; int prevRating = m_iUserRating; m_hasComment = false; m_iUserRating = 0; int ratingCount = 0; FileRatingList::iterator it = m_FileRatingList.begin(); for (; it != m_FileRatingList.end(); ++it) { SFileRating& cur_rat = *it; if (!cur_rat.Comment.IsEmpty()) { m_hasComment = true; } uint8 rating = cur_rat.Rating; if (rating) { wxASSERT(rating <= 5); ratingCount++; m_iUserRating += rating; } } if (ratingCount) { m_iUserRating /= ratingCount; wxASSERT(m_iUserRating > 0 && m_iUserRating <= 5); } if ((prevComment != m_hasComment) || (prevRating != m_iUserRating)) { UpdateDisplayedInfo(); } } void CStatTreeRem::DoRequery() { CECPacket request(EC_OP_GET_STATSTREE); if (thePrefs::GetMaxClientVersions() != 0) { request.AddTag(CECTag(EC_TAG_STATTREE_CAPPING, (uint8)thePrefs::GetMaxClientVersions())); } m_conn->SendRequest(this, &request); } void CStatTreeRem::HandlePacket(const CECPacket * p) { const CECTag* treeRoot = p->GetTagByName(EC_TAG_STATTREE_NODE); if (treeRoot) { theApp->amuledlg->m_statisticswnd->RebuildStatTreeRemote(treeRoot); theApp->amuledlg->m_statisticswnd->ShowStatistics(); } } CamuleRemoteGuiApp *theApp; // // since gui is not linked with amule.cpp - define events here // DEFINE_LOCAL_EVENT_TYPE(wxEVT_CORE_FINISHED_HTTP_DOWNLOAD) DEFINE_LOCAL_EVENT_TYPE(wxEVT_CORE_SOURCE_DNS_DONE) DEFINE_LOCAL_EVENT_TYPE(wxEVT_CORE_UDP_DNS_DONE) DEFINE_LOCAL_EVENT_TYPE(wxEVT_CORE_SERVER_DNS_DONE) // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/amule-remote-gui.h0000644000175000017500000004630612611472361021632 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2005-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef AMULE_REMOTE_GUI_H #define AMULE_REMOTE_GUI_H #include // Needed for CRemoteConnect #include "Statistics.h" #include "Preferences.h" #include "Statistics.h" #include "RLE.h" #include "SearchList.h" // Needed for CSearchFile class CED2KFileLink; class CServer; class CKnownFile; class CSearchFile; class CPartFile; class CClientRef; class CStatistics; class CPath; class wxEvtHandler; class wxTimer; class wxTimerEvent; #include class CEConnectDlg : public wxDialog { wxString host; int port; wxString pwd_hash; wxString login, passwd; bool m_save_user_pass; DECLARE_EVENT_TABLE() public: CEConnectDlg(); void OnOK(wxCommandEvent& event); wxString Host() { return host; } int Port() { return port; } wxString Login() { return login; } wxString PassHash(); bool SaveUserPass() { return m_save_user_pass; } }; DECLARE_LOCAL_EVENT_TYPE(wxEVT_EC_INIT_DONE, wxEVT_USER_FIRST + 1001) class wxECInitDoneEvent : public wxEvent { public: wxECInitDoneEvent() : wxEvent(-1, wxEVT_EC_INIT_DONE) { } wxEvent *Clone(void) const { return new wxECInitDoneEvent(*this); } }; class CPreferencesRem : public CPreferences, public CECPacketHandlerBase { CRemoteConnect *m_conn; uint32 m_exchange_send_selected_prefs; uint32 m_exchange_recv_selected_prefs; virtual void HandlePacket(const CECPacket *packet); public: CPreferencesRem(CRemoteConnect *); bool CreateCategory(Category_Struct *& category, const wxString& name, const CPath& path, const wxString& comment, uint32 color, uint8 prio); bool UpdateCategory(uint8 cat, const wxString& name, const CPath& path, const wxString& comment, uint32 color, uint8 prio); void RemoveCat(uint8 cat); bool LoadRemote(); void SendToRemote(); }; // // T - type if item in container // I - type of id of item // G - type of tag used to create/update items // template class CRemoteContainer : public CECPacketHandlerBase { protected: enum { IDLE, // no request in the air STATUS_REQ_SENT, // sent request for item status FULL_REQ_SENT // sent request for full info } m_state; CRemoteConnect *m_conn; std::list m_items; std::map m_items_hash; // .size() is O(N) operation in stl int m_item_count; // use incremental tags algorithm bool m_inc_tags; // command that will be used in full request int m_full_req_cmd, m_full_req_tag; virtual void HandlePacket(const CECPacket *packet) { switch(this->m_state) { case IDLE: wxFAIL; break; // not expecting anything case STATUS_REQ_SENT: // if derived class choose not to proceed, return - but with good status this->m_state = IDLE; if ( this->Phase1Done(packet) ) { if (this->m_inc_tags) { // Incremental tags: new items always carry full info. ProcessUpdate(packet, NULL, m_full_req_tag); } else { // Non-incremental tags: we might get partial info on new items. // Collect all this items in a tag, and then request full info about them. CECPacket req_full(this->m_full_req_cmd); ProcessUpdate(packet, &req_full, m_full_req_tag); // Phase 3: request full info about files we don't have yet if ( req_full.HasChildTags() ) { m_conn->SendRequest(this, &req_full); this->m_state = FULL_REQ_SENT; } } } break; case FULL_REQ_SENT: ProcessFull(packet); m_state = IDLE; break; } } public: CRemoteContainer(CRemoteConnect *conn, bool inc_tags) : m_state(IDLE), m_conn(conn), m_item_count(0), m_inc_tags(inc_tags), m_full_req_cmd(0), m_full_req_tag(0) {} virtual ~CRemoteContainer() {} typedef typename std::list::iterator iterator; iterator begin() { return m_items.begin(); } iterator end() { return m_items.end(); } uint32 GetCount() { return m_item_count; } void AddItem(T *item) { m_items.push_back(item); m_items_hash[GetItemID(item)] = item; m_item_count++; } T *GetByID(I id) { // avoid creating nodes return m_items_hash.count(id) ? m_items_hash[id] : NULL; } void Flush() { m_items.clear(); m_items_hash.clear(); m_item_count = 0; } // // Flush & reload // /* We usually don't keep outdated code as comments, but this blocking implementation shows the overall procedure well. It had to be scattered for the event driven implementation. bool FullReload(int cmd) { CECPacket req(cmd); CScopedPtr reply(this->m_conn->SendRecvPacket(&req)); if ( !reply.get() ) { return false; } for(typename std::list::iterator j = this->m_items.begin(); j != this->m_items.end(); j++) { this->DeleteItem(*j); } Flush(); ProcessFull(reply.get()); return true; } */ void FullReload(int cmd) { if ( this->m_state != IDLE ) { return; } for(typename std::list::iterator j = this->m_items.begin(); j != this->m_items.end(); ++j) { this->DeleteItem(*j); } Flush(); CECPacket req(cmd); this->m_conn->SendRequest(this, &req); this->m_state = FULL_REQ_SENT; this->m_full_req_cmd = cmd; } // // Following are like basicly same code as in webserver. Eventually it must // be same class // void DoRequery(int cmd, int tag) { if ( this->m_state != IDLE ) { return; } CECPacket req_sts(cmd, m_inc_tags ? EC_DETAIL_INC_UPDATE : EC_DETAIL_UPDATE); this->m_conn->SendRequest(this, &req_sts); this->m_state = STATUS_REQ_SENT; this->m_full_req_cmd = cmd; this->m_full_req_tag = tag; } /* We usually don't keep outdated code as comments, but this blocking implementation shows the overall procedure well. It had to be scattered for the event driven implementation. bool DoRequery(int cmd, int tag) { CECPacket req_sts(cmd, m_inc_tags ? EC_DETAIL_INC_UPDATE : EC_DETAIL_UPDATE); // // Phase 1: request status CScopedPtr reply(this->m_conn->SendRecvPacket(&req_sts)); if ( !reply.get() ) { return false; } if ( !this->Phase1Done(reply.get()) ) { // if derived class choose not to proceed, return - but with good status return true; } // // Phase 2: update status, mark new files for subsequent query CECPacket req_full(cmd); ProcessUpdate(reply.get(), &req_full, tag); reply.reset(); if ( !m_inc_tags ) { // Phase 3: request full info about files we don't have yet if ( req_full.GetTagCount() ) { reply.reset(this->m_conn->SendRecvPacket(&req_full)); if ( !reply.get() ) { return false; } ProcessFull(reply.get()); } } return true; } */ void ProcessFull(const CECPacket *reply) { for (CECPacket::const_iterator it = reply->begin(); it != reply->end(); ++it) { const G *tag = static_cast(&*it); // initialize item data from EC tag AddItem(CreateItem(tag)); } } void RemoveItem(iterator & it) { I item_id = GetItemID(*it); // reduce count m_item_count--; // remove from map m_items_hash.erase(item_id); // item may contain data that need to be freed externally, before // dtor is called and memory freed DeleteItem(*it); m_items.erase(it); } virtual void ProcessUpdate(const CECTag *reply, CECPacket *full_req, int req_type) { std::set core_files; for (CECPacket::const_iterator it = reply->begin(); it != reply->end(); ++it) { const G *tag = static_cast(&*it); if ( tag->GetTagName() != req_type ) { continue; } core_files.insert(tag->ID()); if ( m_items_hash.count(tag->ID()) ) { // Item already known: update it T *item = m_items_hash[tag->ID()]; ProcessItemUpdate(tag, item); } else { // New item if (full_req) { // Non-incremental mode: we have only partial info // so we need to request full info before we can use the item full_req->AddTag(CECTag(req_type, tag->ID())); } else { // Incremental mode: new items always carry full info, // so we can add it right away AddItem(CreateItem(tag)); } } } for(iterator it = begin(); it != end();) { iterator it2 = it++; if ( core_files.count(GetItemID(*it2)) == 0 ) { RemoveItem(it2); } } } virtual T *CreateItem(const G *) { return 0; } virtual void DeleteItem(T *) { } virtual I GetItemID(T *) { return I(); } virtual void ProcessItemUpdate(const G *, T *) { } virtual bool Phase1Done(const CECPacket *) { return true; } }; class CServerConnectRem { CRemoteConnect *m_Conn; uint32 m_ID; CServer *m_CurrServer; public: void HandlePacket(const CECPacket *packet); CServerConnectRem(CRemoteConnect *); bool IsConnected() { return (m_ID != 0) && (m_ID != 0xffffffff); } bool IsConnecting() { return m_ID == 0xffffffff; } bool IsLowID() { return m_ID < 16777216; } uint32 GetClientID() { return m_ID; } CServer *GetCurrentServer() { return m_CurrServer; } // // Actions // void ConnectToServer(CServer* server); void ConnectToAnyServer(); void StopConnectionTry(); void Disconnect(); }; class CServerListRem : public CRemoteContainer { uint32 m_TotalUser, m_TotalFile; virtual void HandlePacket(const CECPacket *packet); public: CServerListRem(CRemoteConnect *); void GetUserFileStatus(uint32 &total_user, uint32 &total_file) { total_user = m_TotalUser; total_file = m_TotalFile; } void UpdateUserFileStatus(CServer *server); CServer* GetServerByAddress(const wxString& address, uint16 port) const; CServer* GetServerByIPTCP(uint32 nIP, uint16 nPort) const; // // Actions // void RemoveServer(CServer* server); void UpdateServerMetFromURL(wxString url); void SetStaticServer(CServer* server, bool isStatic); void SetServerPrio(CServer* server, uint32 prio); void SaveServerMet() {} // not needed here void FilterServers() {} // not needed here // // template // CServer *CreateItem(const CEC_Server_Tag *); void DeleteItem(CServer *); uint32 GetItemID(CServer *); void ProcessItemUpdate(const CEC_Server_Tag *, CServer *); }; class CUpDownClientListRem : public CRemoteContainer { public: CUpDownClientListRem(CRemoteConnect *); void FilterQueues() {} // not needed here // // template // CClientRef *CreateItem(const CEC_UpDownClient_Tag *); void DeleteItem(CClientRef *); uint32 GetItemID(CClientRef *); void ProcessItemUpdate(const CEC_UpDownClient_Tag *, CClientRef *); }; class CDownQueueRem : public std::map { CRemoteConnect *m_conn; public: CDownQueueRem(CRemoteConnect * conn) { m_conn = conn; } CPartFile* GetFileByID(uint32 id); // // User actions // void Prio(CPartFile *file, uint8 prio); void AutoPrio(CPartFile *file, bool flag); void Category(CPartFile *file, uint8 cat); void SendFileCommand(CPartFile *file, ec_tagname_t cmd); // // Actions // void StopUDPRequests() {} void AddFileLinkToDownload(CED2KFileLink*, uint8); bool AddLink(const wxString &link, uint8 category = 0); void UnsetCompletedFilesExist(); void ResetCatParts(int cat); void AddSearchToDownload(CSearchFile* toadd, uint8 category); void ClearCompleted(const ListOfUInts32 & ecids); }; class CSharedFilesRem : public std::map { CRemoteConnect *m_conn; public: CSharedFilesRem(CRemoteConnect * conn); CKnownFile *GetFileByID(uint32 id); void SetFilePrio(CKnownFile *file, uint8 prio); // // Actions // void Reload(bool sendtoserver = true, bool firstload = false); bool RenameFile(CKnownFile* file, const CPath& newName); void SetFileCommentRating(CKnownFile* file, const wxString& newComment, int8 newRating); void CopyFileList(std::vector& out_list) const; }; class CKnownFilesRem : public CRemoteContainer { CKnownFile * CreateKnownFile(const CEC_SharedFile_Tag *tag, CKnownFile *file = NULL); CPartFile * CreatePartFile(const CEC_PartFile_Tag *tag); bool m_initialUpdate; // improved handling for first data transfer public: CKnownFilesRem(CRemoteConnect * conn); CKnownFile *FindKnownFileByID(uint32 id) { return GetByID(id); } uint16 requested; uint32 transferred; uint16 accepted; // // template // CKnownFile *CreateItem(const CEC_SharedFile_Tag *) { wxFAIL; return NULL; } // unused, required by template void DeleteItem(CKnownFile *); uint32 GetItemID(CKnownFile *); void ProcessItemUpdate(const CEC_SharedFile_Tag *, CKnownFile *); bool Phase1Done(const CECPacket *) { return true; } void ProcessUpdate(const CECTag *reply, CECPacket *full_req, int req_type); void ProcessItemUpdatePartfile(const CEC_PartFile_Tag *, CPartFile *); }; class CIPFilterRem { CRemoteConnect *m_conn; public: CIPFilterRem(CRemoteConnect *conn); // // Actions // void Reload(); void Update(wxString strURL = wxEmptyString); bool IsReady() const { return true; } }; class CSearchListRem : public CRemoteContainer { virtual void HandlePacket(const CECPacket *); public: CSearchListRem(CRemoteConnect *); int m_curr_search; typedef std::map ResultMap; ResultMap m_results; const CSearchResultList& GetSearchResults(long nSearchID); void RemoveResults(long nSearchID); const CSearchResultList& GetSearchResults(long nSearchID) const; // // Actions // wxString StartNewSearch(uint32* nSearchID, SearchType search_type, const CSearchList::CSearchParams& params); void StopSearch(bool globalOnly = false); // // template // CSearchFile *CreateItem(const CEC_SearchFile_Tag *); void DeleteItem(CSearchFile *); uint32 GetItemID(CSearchFile *); void ProcessItemUpdate(const CEC_SearchFile_Tag *, CSearchFile *); bool Phase1Done(const CECPacket *); }; class CFriendListRem : public CRemoteContainer { virtual void HandlePacket(const CECPacket *); public: CFriendListRem(CRemoteConnect *); void AddFriend(const CClientRef& toadd); void AddFriend(const CMD4Hash& userhash, uint32 lastUsedIP, uint32 lastUsedPort, const wxString& name); void RemoveFriend(CFriend* toremove); void RequestSharedFileList(CFriend* Friend); void RequestSharedFileList(CClientRef& client); void SetFriendSlot(CFriend* Friend, bool new_state); // // template // CFriend *CreateItem(const CEC_Friend_Tag *); void DeleteItem(CFriend *); uint32 GetItemID(CFriend *); void ProcessItemUpdate(const CEC_Friend_Tag *, CFriend *); }; class CStatsUpdaterRem : public CECPacketHandlerBase { virtual void HandlePacket(const CECPacket *); public: CStatsUpdaterRem() {} }; class CStatTreeRem : public CECPacketHandlerBase { virtual void HandlePacket(const CECPacket *); CRemoteConnect *m_conn; public: CStatTreeRem(CRemoteConnect * conn) { m_conn = conn; } void DoRequery(); }; class CListenSocketRem { uint32 m_peak_connections; public: uint32 GetPeakConnections() { return m_peak_connections; } }; class CamuleRemoteGuiApp : public wxApp, public CamuleGuiBase, public CamuleAppCommon { wxTimer* poll_timer; virtual int InitGui(bool geometry_enable, wxString &geometry_string); bool OnInit(); int OnExit(); void OnPollTimer(wxTimerEvent& evt); void OnECConnection(wxEvent& event); void OnECInitDone(wxEvent& event); void OnNotifyEvent(CMuleGUIEvent& evt); void OnFinishedHTTPDownload(CMuleInternalEvent& event); CStatsUpdaterRem m_stats_updater; public: void Startup(); bool ShowConnectionDialog(); class CRemoteConnect *m_connect; CEConnectDlg *dialog; bool CopyTextToClipboard(wxString strText); virtual int ShowAlert(wxString msg, wxString title, int flags); void ShutDown(wxCloseEvent &evt); CPreferencesRem *glob_prefs; CAsioService* m_AsioService; // // Provide access to core data thru EC CServerConnectRem *serverconnect; CServerListRem *serverlist; CDownQueueRem *downloadqueue; CSharedFilesRem *sharedfiles; CKnownFilesRem *knownfiles; CUpDownClientListRem *clientlist; CIPFilterRem *ipfilter; CSearchListRem *searchlist; CFriendListRem *friendlist; CListenSocketRem *listensocket; CStatTreeRem * stattree; CStatistics *m_statistics; bool AddServer(CServer *srv, bool fromUser = false); uint32 GetPublicIP(); wxString GetLog(bool reset = false); wxString GetServerLog(bool reset = false); void AddServerMessageLine(wxString &msg); void AddRemoteLogLine(const wxString& line); void SetOSFiles(wxString ) { /* onlinesig is created on remote side */ } bool IsConnected() const { return IsConnectedED2K() || IsConnectedKad(); } bool IsFirewalled() const; bool IsConnectedED2K() const; bool IsConnectedKad() const { return ((m_ConnState & CONNECTED_KAD_OK) || (m_ConnState & CONNECTED_KAD_FIREWALLED)); } bool IsFirewalledKad() const { return (m_ConnState & CONNECTED_KAD_FIREWALLED) != 0; } bool IsKadRunning() const { return ((m_ConnState & CONNECTED_KAD_OK) || (m_ConnState & CONNECTED_KAD_FIREWALLED) || (m_ConnState & CONNECTED_KAD_NOT)); } // Check Kad state (UDP) bool IsFirewalledKadUDP() const { return theStats::IsFirewalledKadUDP(); } bool IsKadRunningInLanMode() const { return theStats::IsKadRunningInLanMode(); } // Kad stats uint32 GetKadUsers() const { return theStats::GetKadUsers(); } uint32 GetKadFiles() const { return theStats::GetKadFiles(); } uint32 GetKadIndexedSources() const { return theStats::GetKadIndexedSources(); } uint32 GetKadIndexedKeywords() const{ return theStats::GetKadIndexedKeywords(); } uint32 GetKadIndexedNotes() const { return theStats::GetKadIndexedNotes(); } uint32 GetKadIndexedLoad() const { return theStats::GetKadIndexedLoad(); } // True IP of machine uint32 GetKadIPAdress() const { return theStats::GetKadIPAdress(); } // Buddy status uint8 GetBuddyStatus() const { return theStats::GetBuddyStatus(); } uint32 GetBuddyIP() const { return theStats::GetBuddyIP(); } uint32 GetBuddyPort() const { return theStats::GetBuddyPort(); } void StartKad(); void StopKad(); /** Bootstraps kad from the specified IP (must be in hostorder). */ void BootstrapKad(uint32 ip, uint16 port); /** Updates the nodes.dat file from the specified url. */ void UpdateNotesDat(const wxString& str); void DisconnectED2K(); bool CryptoAvailable() const; uint32 GetED2KID() const; uint32 GetID() const; void ShowUserCount(); uint8 m_ConnState; uint32 m_clientID; wxLocale m_locale; // This KnownFile collects all currently uploading clients for display in the upload list control CKnownFile * m_allUploadingKnownFile; DECLARE_EVENT_TABLE() }; DECLARE_APP(CamuleRemoteGuiApp) extern CamuleRemoteGuiApp *theApp; #endif /* AMULE_REMOTE_GUI_H */ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/amule.cpp0000644000175000017500000015622212611472361020111 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "amule.h" // Interface declarations. #include #include #include #include #ifdef HAVE_CONFIG_H #include "config.h" // Needed for HAVE_GETRLIMIT, HAVE_SETRLIMIT, // HAVE_SYS_RESOURCE_H, HAVE_SYS_STATVFS_H, VERSION // and ENABLE_NLS #endif #include #include // Needed for wxCmdLineParser #include // Do_not_auto_remove (win32) #include #include #include #include // Needed for CFormat #include "kademlia/kademlia/Kademlia.h" #include "kademlia/kademlia/Prefs.h" #include "kademlia/kademlia/UDPFirewallTester.h" #include "CanceledFileList.h" #include "ClientCreditsList.h" // Needed for CClientCreditsList #include "ClientList.h" // Needed for CClientList #include "ClientUDPSocket.h" // Needed for CClientUDPSocket & CMuleUDPSocket #include "ExternalConn.h" // Needed for ExternalConn & MuleConnection #include // Needed for CDirIterator #include "FriendList.h" // Needed for CFriendList #include "HTTPDownload.h" // Needed for CHTTPDownloadThread #include "InternalEvents.h" // Needed for CMuleInternalEvent #include "IPFilter.h" // Needed for CIPFilter #include "KnownFileList.h" // Needed for CKnownFileList #include "ListenSocket.h" // Needed for CListenSocket #include "Logger.h" // Needed for CLogger // Do_not_auto_remove #include "MagnetURI.h" // Needed for CMagnetURI #include "OtherFunctions.h" #include "PartFile.h" // Needed for CPartFile #include "PlatformSpecific.h" // Needed for PlatformSpecific::AllowSleepMode(); #include "Preferences.h" // Needed for CPreferences #include "SearchList.h" // Needed for CSearchList #include "Server.h" // Needed for GetListName #include "ServerList.h" // Needed for CServerList #include "ServerConnect.h" // Needed for CServerConnect #include "ServerUDPSocket.h" // Needed for CServerUDPSocket #include "Statistics.h" // Needed for CStatistics #include "TerminationProcessAmuleweb.h" // Needed for CTerminationProcessAmuleweb #include "ThreadTasks.h" #include "UploadQueue.h" // Needed for CUploadQueue #include "UploadBandwidthThrottler.h" #include "UserEvents.h" #include "ScopedPtr.h" #ifdef ENABLE_UPNP #include "UPnPBase.h" // Needed for UPnP #endif #ifdef __WXMAC__ #include // Do_not_auto_remove #endif #ifndef AMULE_DAEMON #ifdef __WXMAC__ #include // Do_not_auto_remove #if wxCHECK_VERSION(2, 9, 0) #include // Do_not_auto_remove #else #include // Do_not_auto_remove #endif #endif #include #include "amuleDlg.h" #endif #ifdef HAVE_SYS_RESOURCE_H #include #endif #ifdef HAVE_SYS_STATVFS_H #include // Do_not_auto_remove #endif #ifdef __GLIBC__ # define RLIMIT_RESOURCE __rlimit_resource #else # define RLIMIT_RESOURCE int #endif #ifdef AMULE_DAEMON CamuleDaemonApp *theApp; #else CamuleGuiApp *theApp; #endif static void UnlimitResource(RLIMIT_RESOURCE resType) { #if defined(HAVE_GETRLIMIT) && defined(HAVE_SETRLIMIT) struct rlimit rl; getrlimit(resType, &rl); rl.rlim_cur = rl.rlim_max; setrlimit(resType, &rl); #endif } static void SetResourceLimits() { #ifdef HAVE_SYS_RESOURCE_H UnlimitResource(RLIMIT_DATA); #ifndef __UCLIBC__ UnlimitResource(RLIMIT_FSIZE); #endif UnlimitResource(RLIMIT_NOFILE); #ifdef RLIMIT_RSS UnlimitResource(RLIMIT_RSS); #endif #endif } // We store the received signal in order to avoid race-conditions // in the signal handler. bool g_shutdownSignal = false; void OnShutdownSignal( int /* sig */ ) { signal(SIGINT, SIG_DFL); signal(SIGTERM, SIG_DFL); g_shutdownSignal = true; #ifdef AMULE_DAEMON theApp->ExitMainLoop(); #endif } CamuleApp::CamuleApp() { // Madcat - Initialize timer as the VERY FIRST thing to avoid any issues later. // Kry - I love to init the vars on init, even before timer. StartTickTimer(); // Initialization m_app_state = APP_STATE_STARTING; theApp = &wxGetApp(); clientlist = NULL; searchlist = NULL; knownfiles = NULL; canceledfiles = NULL; serverlist = NULL; serverconnect = NULL; sharedfiles = NULL; listensocket = NULL; clientudp = NULL; clientcredits = NULL; friendlist = NULL; downloadqueue = NULL; uploadqueue = NULL; ipfilter = NULL; ECServerHandler = NULL; glob_prefs = NULL; m_statistics = NULL; uploadBandwidthThrottler = NULL; #ifdef ENABLE_UPNP m_upnp = NULL; m_upnpMappings.resize(4); #endif core_timer = NULL; m_localip = 0; m_dwPublicIP = 0; webserver_pid = 0; enable_daemon_fork = false; // Apprently needed for *BSD SetResourceLimits(); #ifdef _MSC_VER _CrtSetDbgFlag(0); // Disable useless memleak debugging #endif } CamuleApp::~CamuleApp() { // Closing the log-file as the very last thing, since // wxWidgets log-events are saved in it as well. theLogger.CloseLogfile(); } int CamuleApp::OnExit() { if (m_app_state!=APP_STATE_STARTING) { AddLogLineNS(_("Now, exiting main app...")); } // From wxWidgets docs, wxConfigBase: // ... // Note that you must delete this object (usually in wxApp::OnExit) // in order to avoid memory leaks, wxWidgets won't do it automatically. // // As it happens, you may even further simplify the procedure described // above: you may forget about calling Set(). When Get() is called and // there is no current object, it will create one using Create() function. // To disable this behaviour DontCreateOnDemand() is provided. delete wxConfigBase::Set((wxConfigBase *)NULL); // Save credits clientcredits->SaveList(); // Kill amuleweb if running if (webserver_pid) { AddLogLineNS(CFormat(_("Terminating amuleweb instance with pid '%ld' ... ")) % webserver_pid); wxKillError rc; if (wxKill(webserver_pid, wxSIGTERM, &rc) == -1) { AddLogLineNS(CFormat(_("Killing amuleweb instance with pid '%ld' ... ")) % webserver_pid); if (wxKill(webserver_pid, wxSIGKILL, &rc) == -1) { AddLogLineNS(_("Failed")); } } } if (m_app_state!=APP_STATE_STARTING) { AddLogLineNS(_("aMule OnExit: Terminating core.")); } delete serverlist; serverlist = NULL; delete searchlist; searchlist = NULL; delete clientcredits; clientcredits = NULL; delete friendlist; friendlist = NULL; // Destroying CDownloadQueue calls destructor for CPartFile // calling CSharedFileList::SafeAddKFile occasionally. delete sharedfiles; sharedfiles = NULL; delete serverconnect; serverconnect = NULL; delete listensocket; listensocket = NULL; delete clientudp; clientudp = NULL; delete knownfiles; knownfiles = NULL; delete canceledfiles; canceledfiles = NULL; delete clientlist; clientlist = NULL; delete uploadqueue; uploadqueue = NULL; delete downloadqueue; downloadqueue = NULL; delete ipfilter; ipfilter = NULL; #ifdef ENABLE_UPNP delete m_upnp; m_upnp = NULL; #endif delete ECServerHandler; ECServerHandler = NULL; delete m_statistics; m_statistics = NULL; delete glob_prefs; glob_prefs = NULL; CPreferences::EraseItemList(); delete uploadBandwidthThrottler; uploadBandwidthThrottler = NULL; delete m_AsioService; m_AsioService = NULL; wxSocketBase::Shutdown(); // needed because we also called Initialize() manually if (m_app_state!=APP_STATE_STARTING) { AddLogLineNS(_("aMule shutdown completed.")); } #if wxUSE_MEMORY_TRACING AddLogLineNS(_("Memory debug results for aMule exit:")); // Log mem debug mesages to wxLogStderr wxLog* oldLog = wxLog::SetActiveTarget(new wxLogStderr); //AddLogLineNS(wxT("**************Classes**************"); //wxDebugContext::PrintClasses(); //AddLogLineNS(wxT("***************Dump***************"); //wxDebugContext::Dump(); AddLogLineNS(wxT("***************Stats**************")); wxDebugContext::PrintStatistics(true); // Set back to wxLogGui delete wxLog::SetActiveTarget(oldLog); #endif StopTickTimer(); // Return 0 for succesful program termination return AMULE_APP_BASE::OnExit(); } int CamuleApp::InitGui(bool, wxString &) { return 0; } // // Application initialization // bool CamuleApp::OnInit() { #if wxUSE_MEMORY_TRACING // any text before call of Localize_mule needs not to be translated. AddLogLineNS(wxT("Checkpoint set on app init for memory debug")); // debug output wxDebugContext::SetCheckpoint(); #endif // Forward wxLog events to CLogger wxLog::SetActiveTarget(new CLoggerTarget); m_localip = StringHosttoUint32(::wxGetFullHostName()); #ifndef __WINDOWS__ // get rid of sigpipe signal(SIGPIPE, SIG_IGN); #else // Handle CTRL-Break signal(SIGBREAK, OnShutdownSignal); #endif // Handle sigint and sigterm signal(SIGINT, OnShutdownSignal); signal(SIGTERM, OnShutdownSignal); #ifdef __WXMAC__ // For listctrl's to behave on Mac wxSystemOptions::SetOption(wxT("mac.listctrl.always_use_generic"), 1); #endif // Handle uncaught exceptions InstallMuleExceptionHandler(); if (!InitCommon(AMULE_APP_BASE::argc, AMULE_APP_BASE::argv)) { return false; } glob_prefs = new CPreferences(); CPath outDir; if (CheckMuleDirectory(wxT("temp"), thePrefs::GetTempDir(), thePrefs::GetConfigDir() + wxT("Temp"), outDir)) { thePrefs::SetTempDir(outDir); } else { return false; } if (CheckMuleDirectory(wxT("incoming"), thePrefs::GetIncomingDir(), thePrefs::GetConfigDir() + wxT("Incoming"), outDir)) { thePrefs::SetIncomingDir(outDir); } else { return false; } // Initialize wx sockets (needed for http download in background with Asio sockets) wxSocketBase::Initialize(); // Some sanity check if (!thePrefs::UseTrayIcon()) { thePrefs::SetMinToTray(false); } // Build the filenames for the two OS files SetOSFiles(thePrefs::GetOSDir().GetRaw()); // Check if we have the old style locale config bool old_localedef = false; wxString langId = thePrefs::GetLanguageID(); if (!langId.IsEmpty() && (langId.GetChar(0) >= '0' && langId.GetChar(0) <= '9')) { old_localedef = true; thePrefs::SetLanguageID(wxLang2Str(wxLANGUAGE_DEFAULT)); glob_prefs->Save(); } #ifdef ENABLE_NLS // Load localization settings Localize_mule(); if (old_localedef) { ShowAlert(_("Your locale has been changed to System Default due to a configuration change. Sorry."), _("Info"), wxCENTRE | wxOK | wxICON_ERROR); } #endif // Configure EC for amuled when invoked with ec-config if (ec_config) { AddLogLineNS(_("\nEC configuration")); thePrefs::SetECPass(GetPassword(false).Encode()); thePrefs::EnableExternalConnections(true); AddLogLineNS(_("Password set and external connections enabled.")); } #ifndef __WINDOWS__ if (getuid() == 0) { wxString msg = wxT("Warning! You are running aMule as root.\n") wxT("Doing so is not recommended for security reasons,\n") wxT("and you are advised to run aMule as an normal\n") wxT("user instead."); ShowAlert(msg, _("WARNING"), wxCENTRE | wxOK | wxICON_ERROR); fprintf(stderr, "\n--------------------------------------------------\n"); fprintf(stderr, "%s", (const char*)unicode2UTF8(msg)); fprintf(stderr, "\n--------------------------------------------------\n\n"); } #endif // Display notification on new version or first run wxTextFile vfile( thePrefs::GetConfigDir() + wxT("lastversion") ); wxString newMule(wxT( VERSION )); if ( !wxFileExists( vfile.GetName() ) ) { vfile.Create(); } if ( vfile.Open() ) { // Check if this version has been run before bool found = false; for ( size_t i = 0; i < vfile.GetLineCount(); i++ ) { // Check if this version has been run before if ( vfile.GetLine(i) == newMule ) { found = true; break; } } // We havent run this version before? if ( !found ) { // Insert new at top to provide faster searches vfile.InsertLine( newMule, 0 ); Trigger_New_version( newMule ); } // Keep at most 10 entires while ( vfile.GetLineCount() > 10 ) vfile.RemoveLine( vfile.GetLineCount() - 1 ); vfile.Write(); vfile.Close(); } m_statistics = new CStatistics(); clientlist = new CClientList(); friendlist = new CFriendList(); searchlist = new CSearchList(); knownfiles = new CKnownFileList(); canceledfiles = new CCanceledFileList; serverlist = new CServerList(); sharedfiles = new CSharedFileList(knownfiles); clientcredits = new CClientCreditsList(); // bugfix - do this before creating the uploadqueue downloadqueue = new CDownloadQueue(); uploadqueue = new CUploadQueue(); ipfilter = new CIPFilter(); // Creates all needed listening sockets wxString msg; if (!ReinitializeNetwork(&msg)) { AddLogLineNS(wxT("\n")); AddLogLineNS(msg); } // Test if there's any new version if (thePrefs::GetCheckNewVersion()) { // We use the thread base because I don't want a dialog to pop up. CHTTPDownloadThread* version_check = new CHTTPDownloadThread(wxT("http://amule.sourceforge.net/lastversion"), thePrefs::GetConfigDir() + wxT("last_version_check"), thePrefs::GetConfigDir() + wxT("last_version"), HTTP_VersionCheck, false, false); version_check->Create(); version_check->Run(); } // Create main dialog, or fork to background (daemon). InitGui(m_geometryEnabled, m_geometryString); #ifdef AMULE_DAEMON // Need to refresh wxSingleInstanceChecker after the daemon fork() ! if (enable_daemon_fork) { RefreshSingleInstanceChecker(); // No need to check IsAnotherRunning() - we've done it before. } #endif // Has to be created after the call to InitGui, as fork // (when using posix threads) only replicates the mainthread, // and the UBT constructor creates a thread. uploadBandwidthThrottler = new UploadBandwidthThrottler(); m_AsioService = new CAsioService; // Start performing background tasks // This will start loading the IP filter. It will start right away. // Log is confusing, because log entries from background will only be printed // once foreground becomes idle, and that will only be after loading // of the partfiles has finished. CThreadScheduler::Start(); // These must be initialized after the gui is loaded. if (thePrefs::GetNetworkED2K()) { serverlist->Init(); } downloadqueue->LoadMetFiles(thePrefs::GetTempDir()); sharedfiles->Reload(); // Ensure that the up/down ratio is used CPreferences::CheckUlDlRatio(); // Load saved friendlist (now, so it can update in GUI right away) friendlist->LoadList(); // The user can start pressing buttons like mad if he feels like it. m_app_state = APP_STATE_RUNNING; if (!serverlist->GetServerCount() && thePrefs::GetNetworkED2K()) { // There are no servers and ED2K active -> ask for download. // As we cannot ask in amuled, we just update there #ifndef AMULE_DAEMON if (wxYES == wxMessageBox( wxString( _("You don't have any server in the server list.\nDo you want aMule to download a new list now?")), wxString(_("Server list download")), wxYES_NO, static_cast(theApp->amuledlg))) #endif { serverlist->UpdateServerMetFromURL(thePrefs::GetEd2kServersUrl()); } } // Autoconnect if that option is enabled if (thePrefs::DoAutoConnect()) { // IP filter is still loading and will be finished on event. // Tell it to autoconnect. if (thePrefs::GetNetworkED2K()) { ipfilter->ConnectToAnyServerWhenReady(); } if (thePrefs::GetNetworkKademlia()) { ipfilter->StartKADWhenReady(); } } // Enable GeoIP #ifdef ENABLE_IP2COUNTRY theApp->amuledlg->EnableIP2Country(); #endif // Run webserver? if (thePrefs::GetWSIsEnabled()) { wxString aMuleConfigFile = thePrefs::GetConfigDir() + m_configFile; wxString amulewebPath = thePrefs::GetWSPath(); #if defined(__WXMAC__) && !defined(AMULE_DAEMON) // For the Mac GUI application, look for amuleweb in the bundle CFURLRef amulewebUrl = CFBundleCopyAuxiliaryExecutableURL( CFBundleGetMainBundle(), CFSTR("amuleweb")); if (amulewebUrl) { CFURLRef absoluteUrl = CFURLCopyAbsoluteURL(amulewebUrl); CFRelease(amulewebUrl); if (absoluteUrl) { CFStringRef amulewebCfstr = CFURLCopyFileSystemPath(absoluteUrl, kCFURLPOSIXPathStyle); CFRelease(absoluteUrl); #if wxCHECK_VERSION(2, 9, 0) amulewebPath = wxCFStringRef(amulewebCfstr).AsString(wxLocale::GetSystemEncoding()); #else amulewebPath = wxMacCFStringHolder(amulewebCfstr).AsString(wxLocale::GetSystemEncoding()); #endif } } #endif #ifdef __WINDOWS__ # define QUOTE wxT("\"") #else # define QUOTE wxT("\'") #endif wxString cmd = QUOTE + amulewebPath + QUOTE wxT(" ") QUOTE wxT("--amule-config-file=") + aMuleConfigFile + QUOTE; CTerminationProcessAmuleweb *p = new CTerminationProcessAmuleweb(cmd, &webserver_pid); webserver_pid = wxExecute(cmd, wxEXEC_ASYNC, p); bool webserver_ok = webserver_pid > 0; if (webserver_ok) { AddLogLineC(CFormat(_("web server running on pid %d")) % webserver_pid); } else { delete p; ShowAlert(_( "You requested to run web server on startup, but the amuleweb binary cannot be run. Please install the package containing aMule web server, or compile aMule using --enable-webserver and run make install"), _("ERROR"), wxOK | wxICON_ERROR); } } return true; } bool CamuleApp::ReinitializeNetwork(wxString* msg) { bool ok = true; static bool firstTime = true; if (!firstTime) { // TODO: Destroy previously created sockets } firstTime = false; // Some sanity checks first if (thePrefs::ECPort() == thePrefs::GetPort()) { // Select a random usable port in the range 1025 ... 2^16 - 1 uint16 port = thePrefs::ECPort(); while ( port < 1024 || port == thePrefs::GetPort() ) { port = (uint16)rand(); } thePrefs::SetECPort( port ); wxString err = wxT("Network configuration failed! You cannot use the same port\n") wxT("for the main TCP port and the External Connections port.\n") wxT("The EC port has been changed to avoid conflict, see the\n") wxT("preferences for the new value.\n"); *msg << err; AddLogLineN(wxEmptyString ); AddLogLineC(err ); AddLogLineN(wxEmptyString ); ok = false; } if (thePrefs::GetUDPPort() == thePrefs::GetPort() + 3) { // Select a random usable value in the range 1025 ... 2^16 - 1 uint16 port = thePrefs::GetUDPPort(); while ( port < 1024 || port == thePrefs::GetPort() + 3 ) { port = (uint16)rand(); } thePrefs::SetUDPPort( port ); wxString err = wxT("Network configuration failed! You set your UDP port to\n") wxT("the value of the main TCP port plus 3.\n") wxT("This port has been reserved for the Server-UDP port. The\n") wxT("port value has been changed to avoid conflict, see the\n") wxT("preferences for the new value\n"); *msg << err; AddLogLineN(wxEmptyString ); AddLogLineC(err ); AddLogLineN(wxEmptyString ); ok = false; } // Create the address where we are going to listen // TODO: read this from configuration file amuleIPV4Address myaddr[4]; // Create the External Connections Socket. // Default is 4712. // Get ready to handle connections from apps like amulecmd if (thePrefs::GetECAddress().IsEmpty() || !myaddr[0].Hostname(thePrefs::GetECAddress())) { myaddr[0].AnyAddress(); } myaddr[0].Service(thePrefs::ECPort()); ECServerHandler = new ExternalConn(myaddr[0], msg); // Create the UDP socket TCP+3. // Used for source asking on servers. if (thePrefs::GetAddress().IsEmpty()) { myaddr[1].AnyAddress(); } else if (!myaddr[1].Hostname(thePrefs::GetAddress())) { myaddr[1].AnyAddress(); AddLogLineC(CFormat(_("Could not bind ports to the specified address: %s")) % thePrefs::GetAddress()); } wxString ip = myaddr[1].IPAddress(); myaddr[1].Service(thePrefs::GetPort()+3); serverconnect = new CServerConnect(serverlist, myaddr[1]); *msg << CFormat( wxT("*** Server UDP socket (TCP+3) at %s:%u\n") ) % ip % ((unsigned int)thePrefs::GetPort() + 3u); // Create the ListenSocket (aMule TCP socket). // Used for Client Port / Connections from other clients, // Client to Client Source Exchange. // Default is 4662. myaddr[2] = myaddr[1]; myaddr[2].Service(thePrefs::GetPort()); listensocket = new CListenSocket(myaddr[2]); *msg << CFormat( wxT("*** TCP socket (TCP) listening on %s:%u\n") ) % ip % (unsigned int)(thePrefs::GetPort()); // Notify(true) has already been called to the ListenSocket, so events may // be already comming in. if (!listensocket->IsOk()) { // If we wern't able to start listening, we need to warn the user wxString err; err = CFormat(_("Port %u is not available. You will be LOWID\n")) % (unsigned int)(thePrefs::GetPort()); *msg << err; AddLogLineC(err); err.Clear(); err = CFormat( _("Port %u is not available!\n\nThis means that you will be LOWID.\n\nCheck your network to make sure the port is open for output and input.")) % (unsigned int)(thePrefs::GetPort()); ShowAlert(err, _("ERROR"), wxOK | wxICON_ERROR); } // Create the UDP socket. // Used for extended eMule protocol, Queue Rating, File Reask Ping. // Also used for Kademlia. // Default is port 4672. myaddr[3] = myaddr[1]; myaddr[3].Service(thePrefs::GetUDPPort()); clientudp = new CClientUDPSocket(myaddr[3], thePrefs::GetProxyData()); if (!thePrefs::IsUDPDisabled()) { *msg << CFormat( wxT("*** Client UDP socket (extended eMule) at %s:%u") ) % ip % thePrefs::GetUDPPort(); } else { *msg << wxT("*** Client UDP socket (extended eMule) disabled on preferences"); } #ifdef ENABLE_UPNP if (thePrefs::GetUPnPEnabled()) { try { m_upnpMappings[0] = CUPnPPortMapping( myaddr[0].Service(), "TCP", thePrefs::GetUPnPECEnabled(), "aMule TCP External Connections Socket"); m_upnpMappings[1] = CUPnPPortMapping( myaddr[1].Service(), "UDP", thePrefs::GetUPnPEnabled(), "aMule UDP socket (TCP+3)"); m_upnpMappings[2] = CUPnPPortMapping( myaddr[2].Service(), "TCP", thePrefs::GetUPnPEnabled(), "aMule TCP Listen Socket"); m_upnpMappings[3] = CUPnPPortMapping( myaddr[3].Service(), "UDP", thePrefs::GetUPnPEnabled(), "aMule UDP Extended eMule Socket"); m_upnp = new CUPnPControlPoint(thePrefs::GetUPnPTCPPort()); m_upnp->AddPortMappings(m_upnpMappings); } catch(CUPnPException &e) { wxString error_msg; error_msg << e.what(); AddLogLineC(error_msg); fprintf(stderr, "%s\n", (const char *)unicode2char(error_msg)); } } #endif return ok; } /* Original implementation by Bouc7 of the eMule Project. aMule Signature idea was designed by BigBob and implemented by Un-Thesis, with design inputs and suggestions from bothie. */ void CamuleApp::OnlineSig(bool zero /* reset stats (used on shutdown) */) { // Do not do anything if online signature is disabled in Preferences if (!thePrefs::IsOnlineSignatureEnabled() || m_emulesig_path.IsEmpty()) { // We do not need to check m_amulesig_path because if m_emulesig_path is empty, // that means m_amulesig_path is empty too. return; } // Remove old signature files if ( wxFileExists( m_emulesig_path ) ) { wxRemoveFile( m_emulesig_path ); } if ( wxFileExists( m_amulesig_path ) ) { wxRemoveFile( m_amulesig_path ); } wxTextFile amulesig_out; wxTextFile emulesig_out; // Open both files if needed if ( !emulesig_out.Create( m_emulesig_path) ) { AddLogLineC(_("Failed to create OnlineSig File")); // Will never try again. m_amulesig_path.Clear(); m_emulesig_path.Clear(); return; } if ( !amulesig_out.Create(m_amulesig_path) ) { AddLogLineC(_("Failed to create aMule OnlineSig File")); // Will never try again. m_amulesig_path.Clear(); m_emulesig_path.Clear(); return; } wxString emulesig_string; wxString temp; if (zero) { emulesig_string = wxT("0\xA0.0|0.0|0"); amulesig_out.AddLine(wxT("0\n0\n0\n0\n0\n0\n0.0\n0.0\n0\n0")); } else { if (IsConnectedED2K()) { temp = CFormat(wxT("%d")) % serverconnect->GetCurrentServer()->GetPort(); // We are online emulesig_string = // Connected wxT("1|") //Server name + serverconnect->GetCurrentServer()->GetListName() + wxT("|") // IP and port of the server + serverconnect->GetCurrentServer()->GetFullIP() + wxT("|") + temp; // Now for amule sig // Connected. State 1, full info amulesig_out.AddLine(wxT("1")); // Server Name amulesig_out.AddLine(serverconnect->GetCurrentServer()->GetListName()); // Server IP amulesig_out.AddLine(serverconnect->GetCurrentServer()->GetFullIP()); // Server Port amulesig_out.AddLine(temp); if (serverconnect->IsLowID()) { amulesig_out.AddLine(wxT("L")); } else { amulesig_out.AddLine(wxT("H")); } } else if (serverconnect->IsConnecting()) { emulesig_string = wxT("0"); // Connecting. State 2, No info. amulesig_out.AddLine(wxT("2\n0\n0\n0\n0")); } else { // Not connected to a server emulesig_string = wxT("0"); // Not connected, state 0, no info amulesig_out.AddLine(wxT("0\n0\n0\n0\n0")); } if (IsConnectedKad()) { if(Kademlia::CKademlia::IsFirewalled()) { // Connected. Firewalled. State 1. amulesig_out.AddLine(wxT("1")); } else { // Connected. State 2. amulesig_out.AddLine(wxT("2")); } } else { // Not connected.State 0. amulesig_out.AddLine(wxT("0")); } emulesig_string += wxT("\xA"); // Datarate for downloads temp = CFormat(wxT("%.1f")) % (theStats::GetDownloadRate() / 1024.0); emulesig_string += temp + wxT("|"); amulesig_out.AddLine(temp); // Datarate for uploads temp = CFormat(wxT("%.1f")) % (theStats::GetUploadRate() / 1024.0); emulesig_string += temp + wxT("|"); amulesig_out.AddLine(temp); // Number of users waiting for upload temp = CFormat(wxT("%d")) % theStats::GetWaitingUserCount(); emulesig_string += temp; amulesig_out.AddLine(temp); // Number of shared files (not on eMule) amulesig_out.AddLine(CFormat(wxT("%d")) % theStats::GetSharedFileCount()); } // eMule signature finished here. Write the line to the wxTextFile. emulesig_out.AddLine(emulesig_string); // Now for aMule signature extras // Nick on the network amulesig_out.AddLine(thePrefs::GetUserNick()); // Total received in bytes amulesig_out.AddLine(CFormat(wxT("%llu")) % theStats::GetTotalReceivedBytes()); // Total sent in bytes amulesig_out.AddLine(CFormat(wxT("%llu")) % theStats::GetTotalSentBytes()); // amule version #ifdef SVNDATE amulesig_out.AddLine(wxT(VERSION) wxT(" ") wxT(SVNDATE)); #else amulesig_out.AddLine(wxT(VERSION)); #endif if (zero) { amulesig_out.AddLine(wxT("0")); amulesig_out.AddLine(wxT("0")); amulesig_out.AddLine(wxT("0")); } else { // Total received bytes in session amulesig_out.AddLine( CFormat( wxT("%llu") ) % theStats::GetSessionReceivedBytes() ); // Total sent bytes in session amulesig_out.AddLine( CFormat( wxT("%llu") ) % theStats::GetSessionSentBytes() ); // Uptime amulesig_out.AddLine(CFormat(wxT("%llu")) % theStats::GetUptimeSeconds()); } // Flush the files emulesig_out.Write(); amulesig_out.Write(); } //End Added By Bouc7 #if wxUSE_ON_FATAL_EXCEPTION // Gracefully handle fatal exceptions and print backtrace if possible void CamuleApp::OnFatalException() { /* Print the backtrace */ wxString msg; msg << wxT("\n--------------------------------------------------------------------------------\n") << wxT("A fatal error has occurred and aMule has crashed.\n") << wxT("Please assist us in fixing this problem by posting the backtrace below in our\n") << wxT("'aMule Crashes' forum and include as much information as possible regarding the\n") << wxT("circumstances of this crash. The forum is located here:\n") << wxT(" http://forum.amule.org/index.php?board=67.0\n") << wxT("If possible, please try to generate a real backtrace of this crash:\n") << wxT(" http://wiki.amule.org/wiki/Backtraces\n\n") << wxT("----------------------------=| BACKTRACE FOLLOWS: |=----------------------------\n") << wxT("Current version is: ") << FullMuleVersion << wxT("\nRunning on: ") << OSDescription << wxT("\n\n") << get_backtrace(1) // 1 == skip this function. << wxT("\n--------------------------------------------------------------------------------\n"); theLogger.EmergencyLog(msg, true); } #endif // Sets the localization of aMule void CamuleApp::Localize_mule() { InitCustomLanguages(); InitLocale(m_locale, StrLang2wx(thePrefs::GetLanguageID())); if (!m_locale.IsOk()) { AddLogLineN(_("The selected locale seems not to be installed on your box. (Note: I'll try to set it anyway)")); } } // Displays information related to important changes in aMule. // Is called when the user runs a new version of aMule void CamuleApp::Trigger_New_version(wxString new_version) { wxString info = wxT(" --- ") + CFormat(_("This is the first time you run aMule %s")) % new_version + wxT(" ---\n\n"); if (new_version == wxT("SVN")) { info += _("This version is a testing version, updated daily, and\n"); info += _("we give no warranty it won't break anything, burn your house,\n"); info += _("or kill your dog. But it *should* be safe to use anyway.\n"); } // General info info += wxT("\n"); info += _("More information, support and new releases can found at our homepage,\n"); info += _("at www.aMule.org, or in our IRC channel #aMule at irc.freenode.net.\n"); info += wxT("\n"); info += _("Feel free to report any bugs to http://forum.amule.org"); ShowAlert(info, _("Info"), wxCENTRE | wxOK | wxICON_ERROR); } void CamuleApp::SetOSFiles(const wxString& new_path) { if ( thePrefs::IsOnlineSignatureEnabled() ) { if ( ::wxDirExists(new_path) ) { m_emulesig_path = JoinPaths(new_path, wxT("onlinesig.dat")); m_amulesig_path = JoinPaths(new_path, wxT("amulesig.dat")); } else { ShowAlert(_("The folder for Online Signature files you specified is INVALID!\n OnlineSignature will be DISABLED until you fix it on preferences."), _("ERROR"), wxOK | wxICON_ERROR); m_emulesig_path.Clear(); m_amulesig_path.Clear(); } } else { m_emulesig_path.Clear(); m_amulesig_path.Clear(); } } #ifdef __WXDEBUG__ #ifndef wxUSE_STACKWALKER #define wxUSE_STACKWALKER 0 #endif void CamuleApp::OnAssertFailure(const wxChar* file, int line, const wxChar* func, const wxChar* cond, const wxChar* msg) { wxString errmsg = CFormat( wxT("Assertion failed: %s:%s:%d: Assertion '%s' failed. %s\nBacktrace follows:\n%s\n") ) % file % func % line % cond % ( msg ? msg : wxT("") ) % get_backtrace(2); // Skip the function-calls directly related to the assert call. theLogger.EmergencyLog(errmsg, false); if (wxThread::IsMain() && IsRunning()) { AMULE_APP_BASE::OnAssertFailure(file, line, func, cond, msg); } else { #ifdef _MSC_VER wxString s = CFormat(wxT("%s in %s")) % cond % func; if (msg) { s << wxT(" : ") << msg; } _wassert(s.wc_str(), file, line); #else // Abort, allows gdb to catch the assertion raise( SIGABRT ); #endif } } #endif void CamuleApp::OnUDPDnsDone(CMuleInternalEvent& evt) { CServerUDPSocket* socket =reinterpret_cast(evt.GetClientData()); socket->OnHostnameResolved(evt.GetExtraLong()); } void CamuleApp::OnSourceDnsDone(CMuleInternalEvent& evt) { downloadqueue->OnHostnameResolved(evt.GetExtraLong()); } void CamuleApp::OnServerDnsDone(CMuleInternalEvent& evt) { AddLogLineNS(_("Server hostname notified")); serverconnect->OnServerHostnameResolved(evt.GetClientData(), evt.GetExtraLong()); } void CamuleApp::OnTCPTimer(CTimerEvent& WXUNUSED(evt)) { if(!IsRunning()) { return; } serverconnect->StopConnectionTry(); if (IsConnectedED2K() ) { return; } serverconnect->ConnectToAnyServer(); } void CamuleApp::OnCoreTimer(CTimerEvent& WXUNUSED(evt)) { // Former TimerProc section static uint64 msPrev1, msPrev5, msPrevSave, msPrevHist, msPrevOS, msPrevKnownMet; uint64 msCur = theStats::GetUptimeMillis(); TheTime = msCur / 1000; if (!IsRunning()) { return; } #ifndef AMULE_DAEMON // Check if we should terminate the app if ( g_shutdownSignal ) { wxWindow* top = GetTopWindow(); if ( top ) { top->Close(true); } else { // No top-window, have to force termination. wxExit(); } } #endif // There is a theoretical chance that the core time function can recurse: // if an event function gets blocked on a mutex (communicating with the // UploadBandwidthThrottler) wx spawns a new event loop and processes more events. // If CPU load gets high a new core timer event could be generated before the last // one was finished and so recursion could occur, which would be bad. // Detect this and do an early return then. static bool recurse = false; if (recurse) { return; } recurse = true; uploadqueue->Process(); downloadqueue->Process(); //theApp->clientcredits->Process(); theStats::CalculateRates(); if (msCur-msPrevHist > 1000) { // unlike the other loop counters in this function this one will sometimes // produce two calls in quick succession (if there was a gap of more than one // second between calls to TimerProc) - this is intentional! This way the // history list keeps an average of one node per second and gets thinned out // correctly as time progresses. msPrevHist += 1000; m_statistics->RecordHistory(); } if (msCur-msPrev1 > 1000) { // approximately every second msPrev1 = msCur; clientcredits->Process(); clientlist->Process(); // Publish files to server if needed. sharedfiles->Process(); if( Kademlia::CKademlia::IsRunning() ) { Kademlia::CKademlia::Process(); if(Kademlia::CKademlia::GetPrefs()->HasLostConnection()) { StopKad(); clientudp->Close(); clientudp->Open(); if (thePrefs::Reconnect()) { StartKad(); } } } if( serverconnect->IsConnecting() && !serverconnect->IsSingleConnect() ) { serverconnect->TryAnotherConnectionrequest(); } if (serverconnect->IsConnecting()) { serverconnect->CheckForTimeout(); } listensocket->UpdateConnectionsStatus(); } if (msCur-msPrev5 > 5000) { // every 5 seconds msPrev5 = msCur; listensocket->Process(); } if (msCur-msPrevSave >= 60000) { msPrevSave = msCur; theStats::Save(); } // Special if (msCur - msPrevOS >= thePrefs::GetOSUpdate() * 1000ull) { OnlineSig(); // Added By Bouc7 msPrevOS = msCur; } if (msCur - msPrevKnownMet >= 30*60*1000/*There must be a prefs option for this*/) { // Save Shared Files data knownfiles->Save(); msPrevKnownMet = msCur; } // Recomended by lugdunummaster himself - from emule 0.30c serverconnect->KeepConnectionAlive(); // Disarm recursion protection recurse = false; } void CamuleApp::OnFinishedHashing(CHashingEvent& evt) { wxCHECK_RET(evt.GetResult(), wxT("No result of hashing")); CKnownFile* owner = const_cast(evt.GetOwner()); CKnownFile* result = evt.GetResult(); if (owner) { // Check if the partfile still exists, as it might have // been deleted in the mean time. if (downloadqueue->IsPartFile(owner)) { // This cast must not be done before the IsPartFile // call, as dynamic_cast will barf on dangling pointers. dynamic_cast(owner)->PartFileHashFinished(result); } } else { static uint64 bytecount = 0; if (knownfiles->SafeAddKFile(result, true)) { AddDebugLogLineN(logKnownFiles, CFormat(wxT("Safe adding file to sharedlist: %s")) % result->GetFileName()); sharedfiles->SafeAddKFile(result); bytecount += result->GetFileSize(); // If we have added files with a total size of ~3000mb if (bytecount >= wxULL(3145728000)) { AddDebugLogLineN(logKnownFiles, wxT("Failsafe for crash on file hashing creation")); if ( m_app_state != APP_STATE_SHUTTINGDOWN ) { knownfiles->Save(); bytecount = 0; } } } else { AddDebugLogLineN(logKnownFiles, CFormat(wxT("File not added to sharedlist: %s")) % result->GetFileName()); delete result; } } } void CamuleApp::OnFinishedAICHHashing(CHashingEvent& evt) { wxCHECK_RET(evt.GetResult(), wxT("No result of AICH-hashing")); CKnownFile* owner = const_cast(evt.GetOwner()); CScopedPtr result(evt.GetResult()); if (result->GetAICHHashset()->GetStatus() == AICH_HASHSETCOMPLETE) { CAICHHashSet* oldSet = owner->GetAICHHashset(); CAICHHashSet* newSet = result->GetAICHHashset(); owner->SetAICHHashset(newSet); newSet->SetOwner(owner); result->SetAICHHashset(oldSet); oldSet->SetOwner(result.get()); } } void CamuleApp::OnFinishedCompletion(CCompletionEvent& evt) { CPartFile* completed = const_cast(evt.GetOwner()); wxCHECK_RET(completed, wxT("Completion event sent for unspecified file")); wxASSERT_MSG(downloadqueue->IsPartFile(completed), wxT("CCompletionEvent for unknown partfile.")); completed->CompleteFileEnded(evt.ErrorOccured(), evt.GetFullPath()); if (evt.ErrorOccured()) { CUserEvents::ProcessEvent(CUserEvents::ErrorOnCompletion, completed); } // Check if we should execute an script/app/whatever. CUserEvents::ProcessEvent(CUserEvents::DownloadCompleted, completed); } void CamuleApp::OnFinishedAllocation(CAllocFinishedEvent& evt) { CPartFile *file = evt.GetFile(); wxCHECK_RET(file, wxT("Allocation finished event sent for unspecified file")); wxASSERT_MSG(downloadqueue->IsPartFile(file), wxT("CAllocFinishedEvent for unknown partfile")); file->SetStatus(PS_EMPTY); if (evt.Succeeded()) { if (evt.IsPaused()) { file->StopFile(); } else { file->ResumeFile(); } } else { AddLogLineN(CFormat(_("Disk space preallocation for file '%s' failed: %s")) % file->GetFileName() % wxString(UTF82unicode(std::strerror(evt.GetResult())))); file->StopFile(); } file->AllocationFinished(); }; void CamuleApp::OnNotifyEvent(CMuleGUIEvent& evt) { #ifdef AMULE_DAEMON evt.Notify(); #else if (theApp->amuledlg) { evt.Notify(); } #endif } void CamuleApp::ShutDown() { // Just in case PlatformSpecific::AllowSleepMode(); // Log AddDebugLogLineN(logGeneral, wxT("CamuleApp::ShutDown() has started.")); // Signal the hashing thread to terminate m_app_state = APP_STATE_SHUTTINGDOWN; // Stop ASIO thread #ifdef ASIO_SOCKETS // only needed to suppress the log message in non-Asio build AddDebugLogLineN(logGeneral, wxT("Terminate ASIO thread.")); m_AsioService->Stop(); #endif StopKad(); // Kry - Save the sources seeds on app exit if (thePrefs::GetSrcSeedsOn()) { downloadqueue->SaveSourceSeeds(); } OnlineSig(true); // Added By Bouc7 // Exit HTTP downloads CHTTPDownloadThread::StopAll(); // Exit thread scheduler and upload thread CThreadScheduler::Terminate(); AddDebugLogLineN(logGeneral, wxT("Terminate upload thread.")); uploadBandwidthThrottler->EndThread(); // Close sockets to avoid new clients coming in if (listensocket) { listensocket->Close(); listensocket->KillAllSockets(); } if (serverconnect) { serverconnect->Disconnect(); } ECServerHandler->KillAllSockets(); #ifdef ENABLE_UPNP if (thePrefs::GetUPnPEnabled()) { if (m_upnp) { m_upnp->DeletePortMappings(m_upnpMappings); } } #endif // saving data & stuff if (knownfiles) { knownfiles->Save(); } theStats::Save(); CPath configFileName = CPath(thePrefs::GetConfigDir() + m_configFile); CPath::BackupFile(configFileName, wxT(".bak")); if (clientlist) { clientlist->DeleteAll(); } // Log AddDebugLogLineN(logGeneral, wxT("CamuleApp::ShutDown() has ended.")); } bool CamuleApp::AddServer(CServer *srv, bool fromUser) { if ( serverlist->AddServer(srv, fromUser) ) { Notify_ServerAdd(srv); return true; } return false; } uint32 CamuleApp::GetPublicIP(bool ignorelocal) const { if (m_dwPublicIP == 0) { if (Kademlia::CKademlia::IsConnected() && Kademlia::CKademlia::GetIPAddress() ) { return wxUINT32_SWAP_ALWAYS(Kademlia::CKademlia::GetIPAddress()); } else { return ignorelocal ? 0 : m_localip; } } return m_dwPublicIP; } void CamuleApp::SetPublicIP(const uint32 dwIP) { wxASSERT((dwIP == 0) || !IsLowID(dwIP)); if (dwIP != 0 && dwIP != m_dwPublicIP && serverlist != NULL) { m_dwPublicIP = dwIP; serverlist->CheckForExpiredUDPKeys(); } else { m_dwPublicIP = dwIP; } } wxString CamuleApp::GetLog(bool reset) { wxFile logfile; logfile.Open(thePrefs::GetConfigDir() + wxT("logfile")); if ( !logfile.IsOpened() ) { return _("ERROR: can't open logfile"); } int len = logfile.Length(); if ( len == 0 ) { return _("WARNING: logfile is empty. Something is wrong."); } char *tmp_buffer = new char[len + sizeof(wxChar)]; logfile.Read(tmp_buffer, len); memset(tmp_buffer + len, 0, sizeof(wxChar)); // try to guess file format wxString str; if (tmp_buffer[0] && tmp_buffer[1]) { str = wxString(UTF82unicode(tmp_buffer)); } else { str = wxWCharBuffer((wchar_t *)tmp_buffer); } delete [] tmp_buffer; if ( reset ) { theLogger.CloseLogfile(); if (theLogger.OpenLogfile(thePrefs::GetConfigDir() + wxT("logfile"))) { AddLogLineN(_("Log has been reset")); } ECServerHandler->ResetAllLogs(); } return str; } wxString CamuleApp::GetServerLog(bool reset) { wxString ret = server_msg; if ( reset ) { server_msg.Clear(); } return ret; } wxString CamuleApp::GetDebugLog(bool reset) { return GetLog(reset); } void CamuleApp::AddServerMessageLine(wxString &msg) { server_msg += msg + wxT("\n"); AddLogLineN(CFormat(_("ServerMessage: %s")) % msg); } void CamuleApp::OnFinishedHTTPDownload(CMuleInternalEvent& event) { switch (event.GetInt()) { case HTTP_IPFilter: ipfilter->DownloadFinished(event.GetExtraLong()); break; case HTTP_ServerMet: if (serverlist->DownloadFinished(event.GetExtraLong()) && !IsConnectedED2K()) { // If successfully downloaded a server list, and are not connected at the moment, try to connect. // This happens when no server met is available on startup. serverconnect->ConnectToAnyServer(); } break; case HTTP_ServerMetAuto: serverlist->AutoDownloadFinished(event.GetExtraLong()); break; case HTTP_VersionCheck: CheckNewVersion(event.GetExtraLong()); break; case HTTP_NodesDat: if (event.GetExtraLong() == HTTP_Success) { wxString file = thePrefs::GetConfigDir() + wxT("nodes.dat"); if (wxFileExists(file)) { wxRemoveFile(file); } if ( Kademlia::CKademlia::IsRunning() ) { Kademlia::CKademlia::Stop(); } wxRenameFile(file + wxT(".download"),file); Kademlia::CKademlia::Start(); theApp->ShowConnectionState(); // cppcheck-suppress duplicateBranch } else if (event.GetExtraLong() == HTTP_Skipped) { AddLogLineN(CFormat(_("Skipped download of %s, because requested file is not newer.")) % wxT("nodes.dat")); } else { AddLogLineC(_("Failed to download the nodes list.")); } break; #ifdef ENABLE_IP2COUNTRY case HTTP_GeoIP: theApp->amuledlg->IP2CountryDownloadFinished(event.GetExtraLong()); // If we updated, the dialog is already up. Redraw it to show the flags. theApp->amuledlg->Refresh(); break; #endif } } void CamuleApp::CheckNewVersion(uint32 result) { if (result == HTTP_Success) { wxString filename = thePrefs::GetConfigDir() + wxT("last_version_check"); wxTextFile file; if (!file.Open(filename)) { AddLogLineC(_("Failed to open the downloaded version check file") ); return; } else if (!file.GetLineCount()) { AddLogLineC(_("Corrupted version check file")); } else { wxString versionLine = file.GetFirstLine(); wxStringTokenizer tkz(versionLine, wxT(".")); AddDebugLogLineN(logGeneral, wxString(wxT("Running: ")) + wxT(VERSION) + wxT(", Version check: ") + versionLine); long fields[] = {0, 0, 0}; for (int i = 0; i < 3; ++i) { if (!tkz.HasMoreTokens()) { AddLogLineC(_("Corrupted version check file")); return; } else { wxString token = tkz.GetNextToken(); if (!token.ToLong(&fields[i])) { AddLogLineC(_("Corrupted version check file")); return; } } } long curVer = make_full_ed2k_version(VERSION_MJR, VERSION_MIN, VERSION_UPDATE); long newVer = make_full_ed2k_version(fields[0], fields[1], fields[2]); if (curVer < newVer) { AddLogLineC(_("You are using an outdated version of aMule!")); // cppcheck-suppress zerodiv AddLogLineN(CFormat(_("Your aMule version is %i.%i.%i and the latest version is %li.%li.%li")) % VERSION_MJR % VERSION_MIN % VERSION_UPDATE % fields[0] % fields[1] % fields[2]); AddLogLineN(_("The latest version can always be found at http://www.amule.org")); #ifdef AMULE_DAEMON AddLogLineCS(CFormat(_("WARNING: Your aMuled version is outdated: %i.%i.%i < %li.%li.%li")) % VERSION_MJR % VERSION_MIN % VERSION_UPDATE % fields[0] % fields[1] % fields[2]); #endif } else { AddLogLineN(_("Your copy of aMule is up to date.")); } } file.Close(); wxRemoveFile(filename); } else { AddLogLineC(_("Failed to download the version check file")); } } bool CamuleApp::IsConnected() const { return (IsConnectedED2K() || IsConnectedKad()); } bool CamuleApp::IsConnectedED2K() const { return serverconnect && serverconnect->IsConnected(); } bool CamuleApp::IsConnectedKad() const { return Kademlia::CKademlia::IsConnected(); } bool CamuleApp::IsFirewalled() const { if (theApp->IsConnectedED2K() && !theApp->serverconnect->IsLowID()) { return false; // we have an eD2K HighID -> not firewalled } return IsFirewalledKad(); // If kad says ok, it's ok. } bool CamuleApp::IsFirewalledKad() const { return !Kademlia::CKademlia::IsConnected() // not connected counts as firewalled || Kademlia::CKademlia::IsFirewalled(); } bool CamuleApp::IsFirewalledKadUDP() const { return !Kademlia::CKademlia::IsConnected() // not connected counts as firewalled || Kademlia::CUDPFirewallTester::IsFirewalledUDP(true); } bool CamuleApp::IsKadRunning() const { return Kademlia::CKademlia::IsRunning(); } bool CamuleApp::IsKadRunningInLanMode() const { return Kademlia::CKademlia::IsRunningInLANMode(); } // Kad stats uint32 CamuleApp::GetKadUsers() const { return Kademlia::CKademlia::GetKademliaUsers(); } uint32 CamuleApp::GetKadFiles() const { return Kademlia::CKademlia::GetKademliaFiles(); } uint32 CamuleApp::GetKadIndexedSources() const { return Kademlia::CKademlia::GetIndexed()->m_totalIndexSource; } uint32 CamuleApp::GetKadIndexedKeywords() const { return Kademlia::CKademlia::GetIndexed()->m_totalIndexKeyword; } uint32 CamuleApp::GetKadIndexedNotes() const { return Kademlia::CKademlia::GetIndexed()->m_totalIndexNotes; } uint32 CamuleApp::GetKadIndexedLoad() const { return Kademlia::CKademlia::GetIndexed()->m_totalIndexLoad; } // True IP of machine uint32 CamuleApp::GetKadIPAdress() const { return wxUINT32_SWAP_ALWAYS(Kademlia::CKademlia::GetPrefs()->GetIPAddress()); } // Buddy status uint8 CamuleApp::GetBuddyStatus() const { return clientlist->GetBuddyStatus(); } uint32 CamuleApp::GetBuddyIP() const { return clientlist->GetBuddyIP(); } uint32 CamuleApp::GetBuddyPort() const { return clientlist->GetBuddyPort(); } bool CamuleApp::CanDoCallback(uint32 clientServerIP, uint16 clientServerPort) { if (Kademlia::CKademlia::IsConnected()) { if (IsConnectedED2K()) { if (serverconnect->IsLowID()) { if (Kademlia::CKademlia::IsFirewalled()) { //Both Connected - Both Firewalled return false; } else { if (clientServerIP == theApp->serverconnect->GetCurrentServer()->GetIP() && clientServerPort == theApp->serverconnect->GetCurrentServer()->GetPort()) { // Both Connected - Server lowID, Kad Open - Client on same server // We prevent a callback to the server as this breaks the protocol // and will get you banned. return false; } else { // Both Connected - Server lowID, Kad Open - Client on remote server return true; } } } else { //Both Connected - Server HighID, Kad don't care return true; } } else { if (Kademlia::CKademlia::IsFirewalled()) { //Only Kad Connected - Kad Firewalled return false; } else { //Only Kad Conected - Kad Open return true; } } } else { if (IsConnectedED2K()) { if (serverconnect->IsLowID()) { //Only Server Connected - Server LowID return false; } else { //Only Server Connected - Server HighID return true; } } else { //We are not connected at all! return false; } } } void CamuleApp::ShowUserCount() { uint32 totaluser = 0, totalfile = 0; theApp->serverlist->GetUserFileStatus( totaluser, totalfile ); wxString buffer; static const wxString s_singlenetstatusformat = _("Users: %s | Files: %s"); static const wxString s_bothnetstatusformat = _("Users: E: %s K: %s | Files: E: %s K: %s"); if (thePrefs::GetNetworkED2K() && thePrefs::GetNetworkKademlia()) { buffer = CFormat(s_bothnetstatusformat) % CastItoIShort(totaluser) % CastItoIShort(Kademlia::CKademlia::GetKademliaUsers()) % CastItoIShort(totalfile) % CastItoIShort(Kademlia::CKademlia::GetKademliaFiles()); } else if (thePrefs::GetNetworkED2K()) { buffer = CFormat(s_singlenetstatusformat) % CastItoIShort(totaluser) % CastItoIShort(totalfile); } else if (thePrefs::GetNetworkKademlia()) { buffer = CFormat(s_singlenetstatusformat) % CastItoIShort(Kademlia::CKademlia::GetKademliaUsers()) % CastItoIShort(Kademlia::CKademlia::GetKademliaFiles()); } else { buffer = _("No networks selected"); } Notify_ShowUserCount(buffer); } void CamuleApp::ListenSocketHandler(wxSocketEvent& event) { { wxCHECK_RET(listensocket, wxT("Connection-event for NULL'd listen-socket")); } { wxCHECK_RET(event.GetSocketEvent() == wxSOCKET_CONNECTION, wxT("Invalid event received for listen-socket")); } if (m_app_state == APP_STATE_RUNNING) { listensocket->OnAccept(); } else if (m_app_state == APP_STATE_STARTING) { // When starting up, connection may be made before we are able // to handle them. However, if these are ignored, no futher // connection-events will be triggered, so we have to accept it. CLibSocket* socket = listensocket->Accept(false); wxCHECK_RET(socket, wxT("NULL returned by Accept() during startup")); socket->Destroy(); } } void CamuleApp::ShowConnectionState(bool forceUpdate) { static uint8 old_state = (1<<7); // This flag doesn't exist uint8 state = 0; if (theApp->serverconnect->IsConnected()) { state |= CONNECTED_ED2K; } if (Kademlia::CKademlia::IsRunning()) { if (Kademlia::CKademlia::IsConnected()) { if (!Kademlia::CKademlia::IsFirewalled()) { state |= CONNECTED_KAD_OK; } else { state |= CONNECTED_KAD_FIREWALLED; } } else { state |= CONNECTED_KAD_NOT; } } if (old_state != state) { // Get the changed value int changed_flags = old_state ^ state; if (changed_flags & CONNECTED_ED2K) { // ED2K status changed wxString connected_server; CServer* ed2k_server = theApp->serverconnect->GetCurrentServer(); if (ed2k_server) { connected_server = ed2k_server->GetListName(); } if (state & CONNECTED_ED2K) { // We connected to some server const wxString id = theApp->serverconnect->IsLowID() ? _("with LowID") : _("with HighID"); AddLogLineC(CFormat(_("Connected to %s %s")) % connected_server % id); } else { // cppcheck-suppress duplicateBranch if ( theApp->serverconnect->IsConnecting() ) { AddLogLineC(CFormat(_("Connecting to %s")) % connected_server); } else { AddLogLineC(_("Disconnected from eD2k")); } } } if (changed_flags & CONNECTED_KAD_NOT) { // cppcheck-suppress duplicateBranch if (state & CONNECTED_KAD_NOT) { AddLogLineC(_("Kad started.")); } else { AddLogLineC(_("Kad stopped.")); } } if (changed_flags & (CONNECTED_KAD_OK | CONNECTED_KAD_FIREWALLED)) { if (state & (CONNECTED_KAD_OK | CONNECTED_KAD_FIREWALLED)) { // cppcheck-suppress duplicateBranch if (state & CONNECTED_KAD_OK) { AddLogLineC(_("Connected to Kad (ok)")); } else { AddLogLineC(_("Connected to Kad (firewalled)")); } } else { AddLogLineC(_("Disconnected from Kad")); } } old_state = state; theApp->downloadqueue->OnConnectionState(IsConnected()); } ShowUserCount(); Notify_ShowConnState(forceUpdate); } void CamuleApp::UDPSocketHandler(wxSocketEvent& event) { CMuleUDPSocket* socket = reinterpret_cast(event.GetClientData()); wxCHECK_RET(socket, wxT("No socket owner specified.")); if (IsOnShutDown() || thePrefs::IsUDPDisabled()) return; if (!IsRunning()) { if (event.GetSocketEvent() == wxSOCKET_INPUT) { // Back to the queue! theApp->AddPendingEvent(event); return; } } switch (event.GetSocketEvent()) { case wxSOCKET_INPUT: socket->OnReceive(0); break; case wxSOCKET_OUTPUT: socket->OnSend(0); break; case wxSOCKET_LOST: socket->OnDisconnected(0); break; default: wxFAIL; break; } } void CamuleApp::OnUnhandledException() { // Call the generic exception-handler. fprintf(stderr, "\taMule Version: %s\n", (const char*)unicode2char(GetFullMuleVersion())); ::OnUnhandledException(); } void CamuleApp::StartKad() { if (!Kademlia::CKademlia::IsRunning() && thePrefs::GetNetworkKademlia()) { // Kad makes no sense without the Client-UDP socket. if (!thePrefs::IsUDPDisabled()) { if (ipfilter->IsReady()) { Kademlia::CKademlia::Start(); } else { ipfilter->StartKADWhenReady(); } } else { AddLogLineC(_("Kad network cannot be used if UDP port is disabled on preferences, not starting.")); } } else if (!thePrefs::GetNetworkKademlia()) { AddLogLineC(_("Kad network disabled on preferences, not connecting.")); } } void CamuleApp::StopKad() { // Stop Kad if it's running if (Kademlia::CKademlia::IsRunning()) { Kademlia::CKademlia::Stop(); } } void CamuleApp::BootstrapKad(uint32 ip, uint16 port) { if (!Kademlia::CKademlia::IsRunning()) { Kademlia::CKademlia::Start(); theApp->ShowConnectionState(); } Kademlia::CKademlia::Bootstrap(ip, port); } void CamuleApp::UpdateNotesDat(const wxString& url) { wxString strTempFilename(thePrefs::GetConfigDir() + wxT("nodes.dat.download")); CHTTPDownloadThread *downloader = new CHTTPDownloadThread(url, strTempFilename, thePrefs::GetConfigDir() + wxT("nodes.dat"), HTTP_NodesDat, true, false); downloader->Create(); downloader->Run(); } void CamuleApp::DisconnectED2K() { // Stop ED2K if it's running if (IsConnectedED2K()) { serverconnect->Disconnect(); } } bool CamuleApp::CryptoAvailable() const { return clientcredits && clientcredits->CryptoAvailable(); } uint32 CamuleApp::GetED2KID() const { return serverconnect ? serverconnect->GetClientID() : 0; } uint32 CamuleApp::GetID() const { uint32 ID; if( Kademlia::CKademlia::IsConnected() && !Kademlia::CKademlia::IsFirewalled() ) { // We trust Kad above ED2K ID = ENDIAN_NTOHL(Kademlia::CKademlia::GetIPAddress()); } else if( theApp->serverconnect->IsConnected() ) { ID = theApp->serverconnect->GetClientID(); } else if ( Kademlia::CKademlia::IsConnected() && Kademlia::CKademlia::IsFirewalled() ) { // A firewalled Kad client get's a "1" ID = 1; } else { ID = 0; } return ID; } DEFINE_LOCAL_EVENT_TYPE(wxEVT_CORE_FINISHED_HTTP_DOWNLOAD) DEFINE_LOCAL_EVENT_TYPE(wxEVT_CORE_SOURCE_DNS_DONE) DEFINE_LOCAL_EVENT_TYPE(wxEVT_CORE_UDP_DNS_DONE) DEFINE_LOCAL_EVENT_TYPE(wxEVT_CORE_SERVER_DNS_DONE) // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/amule.h0000644000175000017500000003347212611472361017557 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef AMULE_H #define AMULE_H #include // Needed for wxApp #include // Needed for wxLocale #include "Types.h" // Needed for int32, uint16 and uint64 #include #ifndef __WINDOWS__ #include // #include #endif // __WINDOWS__ class CAbstractFile; class CKnownFile; class ExternalConn; class CamuleDlg; class CPreferences; class CDownloadQueue; class CUploadQueue; class CServerConnect; class CSharedFileList; class CServer; class CFriend; class CMD4Hash; class CServerList; class CListenSocket; class CClientList; class CKnownFileList; class CCanceledFileList; class CSearchList; class CClientCreditsList; class CFriendList; class CClientUDPSocket; class CIPFilter; class UploadBandwidthThrottler; class CAsioService; #ifdef ENABLE_UPNP class CUPnPControlPoint; class CUPnPPortMapping; #endif class CStatistics; class wxSocketEvent; class wxCommandEvent; class wxCloseEvent; class wxFFileOutputStream; class CTimer; class CTimerEvent; class wxSingleInstanceChecker; class CHashingEvent; class CMuleInternalEvent; class CCompletionEvent; class CAllocFinishedEvent; class wxExecuteData; class CLoggingEvent; namespace MuleNotify { class CMuleGUIEvent; } using MuleNotify::CMuleGUIEvent; #ifdef AMULE_DAEMON #define AMULE_APP_BASE wxAppConsole #define CORE_TIMER_PERIOD 300 #else #define AMULE_APP_BASE wxApp #define CORE_TIMER_PERIOD 100 #endif #define CONNECTED_ED2K (1<<0) #define CONNECTED_KAD_NOT (1<<1) #define CONNECTED_KAD_OK (1<<2) #define CONNECTED_KAD_FIREWALLED (1<<3) // Base class common to amule, aamuled and amulegui class CamuleAppCommon { private: // Used to detect a previous running instance of aMule wxSingleInstanceChecker* m_singleInstance; bool CheckPassedLink(const wxString &in, wxString &out, int cat); protected: wxString FullMuleVersion; wxString OSDescription; wxString OSType; bool enable_daemon_fork; bool ec_config; bool m_skipConnectionDialog; bool m_geometryEnabled; wxString m_geometryString; wxString m_logFile; wxString m_appName; wxString m_PidFile; bool InitCommon(int argc, wxChar ** argv); void RefreshSingleInstanceChecker(); bool CheckMuleDirectory(const wxString& desc, const class CPath& directory, const wxString& alternative, class CPath& outDir); public: wxString m_configFile; CamuleAppCommon(); ~CamuleAppCommon(); void AddLinksFromFile(); // URL functions wxString CreateMagnetLink(const CAbstractFile *f); wxString CreateED2kLink(const CAbstractFile* f, bool add_source = false, bool use_hostname = false, bool add_cryptoptions = false, bool add_AICH = false); // Who am I ? #ifdef AMULE_DAEMON bool IsDaemon() const { return true; } #else bool IsDaemon() const { return false; } #endif #ifdef CLIENT_GUI bool IsRemoteGui() const { return true; } #else bool IsRemoteGui() const { return false; } #endif const wxString& GetMuleAppName() const { return m_appName; } const wxString GetFullMuleVersion() const; }; class CamuleApp : public AMULE_APP_BASE, public CamuleAppCommon { private: enum APPState { APP_STATE_RUNNING = 0, APP_STATE_SHUTTINGDOWN, APP_STATE_STARTING }; public: CamuleApp(); virtual ~CamuleApp(); virtual bool OnInit(); int OnExit(); #if wxUSE_ON_FATAL_EXCEPTION void OnFatalException(); #endif bool ReinitializeNetwork(wxString *msg); // derived classes may override those virtual int InitGui(bool geometry_enable, wxString &geometry_string); // Socket handlers void ListenSocketHandler(wxSocketEvent& event); void ServerSocketHandler(wxSocketEvent& event); void UDPSocketHandler(wxSocketEvent& event); virtual int ShowAlert(wxString msg, wxString title, int flags) = 0; // Barry - To find out if app is running or shutting/shut down bool IsRunning() const { return (m_app_state == APP_STATE_RUNNING); } bool IsOnShutDown() const { return (m_app_state == APP_STATE_SHUTTINGDOWN); } // Check ED2K and Kademlia state bool IsFirewalled() const; // Are we connected to at least one network? bool IsConnected() const; // Connection to ED2K bool IsConnectedED2K() const; // What about Kad? Is it running? bool IsKadRunning() const; // Connection to Kad bool IsConnectedKad() const; // Check Kad state (TCP) bool IsFirewalledKad() const; // Check Kad state (UDP) bool IsFirewalledKadUDP() const; // Check Kad state (LAN mode) bool IsKadRunningInLanMode() const; // Kad stats uint32 GetKadUsers() const; uint32 GetKadFiles() const; uint32 GetKadIndexedSources() const; uint32 GetKadIndexedKeywords() const; uint32 GetKadIndexedNotes() const; uint32 GetKadIndexedLoad() const; // True IP of machine uint32 GetKadIPAdress() const; // Buddy status uint8 GetBuddyStatus() const; uint32 GetBuddyIP() const; uint32 GetBuddyPort() const; // Check if we should callback this client bool CanDoCallback(uint32 clientServerIP, uint16 clientServerPort); // Misc functions void OnlineSig(bool zero = false); void Localize_mule(); void Trigger_New_version(wxString newMule); // shakraw - new EC code using wxSocketBase ExternalConn* ECServerHandler; // return current (valid) public IP or 0 if unknown // If ignorelocal is true, don't use m_localip uint32 GetPublicIP(bool ignorelocal = false) const; void SetPublicIP(const uint32 dwIP); uint32 GetED2KID() const; uint32 GetID() const; // Other parts of the interface and such CPreferences* glob_prefs; CDownloadQueue* downloadqueue; CUploadQueue* uploadqueue; CServerConnect* serverconnect; CSharedFileList* sharedfiles; CServerList* serverlist; CListenSocket* listensocket; CClientList* clientlist; CKnownFileList* knownfiles; CCanceledFileList* canceledfiles; CSearchList* searchlist; CClientCreditsList* clientcredits; CFriendList* friendlist; CClientUDPSocket* clientudp; CStatistics* m_statistics; CIPFilter* ipfilter; UploadBandwidthThrottler* uploadBandwidthThrottler; CAsioService* m_AsioService; #ifdef ENABLE_UPNP CUPnPControlPoint* m_upnp; std::vector m_upnpMappings; #endif wxLocale m_locale; void ShutDown(); wxString GetLog(bool reset = false); wxString GetServerLog(bool reset = false); wxString GetDebugLog(bool reset = false); bool AddServer(CServer *srv, bool fromUser = false); void AddServerMessageLine(wxString &msg); #ifdef __DEBUG__ void AddSocketDeleteDebug(uint32 socket_pointer, uint32 creation_time); #endif void SetOSFiles(const wxString& new_path); const wxString& GetOSType() const { return OSType; } void ShowUserCount(); void ShowConnectionState(bool forceUpdate = false); void StartKad(); void StopKad(); /** Bootstraps kad from the specified IP (must be in hostorder). */ void BootstrapKad(uint32 ip, uint16 port); /** Updates the nodes.dat file from the specified url. */ void UpdateNotesDat(const wxString& str); void DisconnectED2K(); bool CryptoAvailable() const; protected: #ifdef __WXDEBUG__ /** * Handles asserts in a thread-safe manner. */ virtual void OnAssertFailure(const wxChar* file, int line, const wxChar* func, const wxChar* cond, const wxChar* msg); #endif void OnUDPDnsDone(CMuleInternalEvent& evt); void OnSourceDnsDone(CMuleInternalEvent& evt); void OnServerDnsDone(CMuleInternalEvent& evt); void OnTCPTimer(CTimerEvent& evt); void OnCoreTimer(CTimerEvent& evt); void OnFinishedHashing(CHashingEvent& evt); void OnFinishedAICHHashing(CHashingEvent& evt); void OnFinishedCompletion(CCompletionEvent& evt); void OnFinishedAllocation(CAllocFinishedEvent& evt); void OnFinishedHTTPDownload(CMuleInternalEvent& evt); void OnHashingShutdown(CMuleInternalEvent&); void OnNotifyEvent(CMuleGUIEvent& evt); void SetTimeOnTransfer(); APPState m_app_state; wxString m_emulesig_path; wxString m_amulesig_path; uint32 m_dwPublicIP; long webserver_pid; wxString server_msg; CTimer* core_timer; private: virtual void OnUnhandledException(); void CheckNewVersion(uint32 result); uint32 m_localip; }; #ifndef AMULE_DAEMON class CamuleGuiBase { public: CamuleGuiBase(); virtual ~CamuleGuiBase(); wxString m_FrameTitle; CamuleDlg* amuledlg; int m_FileDetailDialogActive; bool CopyTextToClipboard( wxString strText ); void ResetTitle(); virtual int InitGui(bool geometry_enable, wxString &geometry_string); virtual int ShowAlert(wxString msg, wxString title, int flags); void AddGuiLogLine(const wxString& line); protected: /** * This list is used to contain log messages that are to be displayed * on the GUI, when it is currently impossible to do so. This is in order * to allows us to queue messages till after the dialog has been created. */ std::list m_logLines; }; #ifndef CLIENT_GUI class CamuleGuiApp : public CamuleApp, public CamuleGuiBase { virtual int InitGui(bool geometry_enable, wxString &geometry_string); int OnExit(); bool OnInit(); public: virtual int ShowAlert(wxString msg, wxString title, int flags); void ShutDown(wxCloseEvent &evt); wxString GetLog(bool reset = false); wxString GetServerLog(bool reset = false); void AddServerMessageLine(wxString &msg); DECLARE_EVENT_TABLE() }; DECLARE_APP(CamuleGuiApp) extern CamuleGuiApp *theApp; #else /* !CLIENT_GUI */ #include "amule-remote-gui.h" #endif // CLIENT_GUI #define CALL_APP_DATA_LOCK #else /* ! AMULE_DAEMON */ // wxWidgets 2.8 requires special code for event handling and sockets. // 2.9 doesn't, so standard event loop and sockets can be used // // Windows: aMuled compiles with 2.8 (without the special code), // but works only with 2.9 #if !wxCHECK_VERSION(2, 9, 0) // wx 2.8 needs a hand-made event loop in any case #define AMULED28_EVENTLOOP // wx 2.8 also needs extra socket code, unless we have ASIO sockets // #ifdef HAVE_CONFIG_H # include "config.h" // defines ASIO_SOCKETS #endif #ifndef ASIO_SOCKETS // MSW: can't run amuled with 2.8 without ASIO sockets, just get it compiled #ifndef __WINDOWS__ #define AMULED28_SOCKETS #endif #endif #endif #ifdef AMULED28_SOCKETS #include class CSocketSet; class CAmuledGSocketFuncTable : public GSocketGUIFunctionsTable { private: CSocketSet *m_in_set, *m_out_set; wxMutex m_lock; public: CAmuledGSocketFuncTable(); void AddSocket(GSocket *socket, GSocketEvent event); void RemoveSocket(GSocket *socket, GSocketEvent event); void RunSelect(); virtual bool OnInit(); virtual void OnExit(); virtual bool CanUseEventLoop(); virtual bool Init_Socket(GSocket *socket); virtual void Destroy_Socket(GSocket *socket); virtual void Install_Callback(GSocket *socket, GSocketEvent event); virtual void Uninstall_Callback(GSocket *socket, GSocketEvent event); virtual void Enable_Events(GSocket *socket); virtual void Disable_Events(GSocket *socket); }; #endif // AMULED28_SOCKETS // AppTrait functionality is required for 2.8 wx sockets // Otherwise it's used to prevent zombie child processes, // which stops working with wx 2.9.5. // So disable it there (no idea if this has a noticeable impact). #if !wxCHECK_VERSION(2, 9, 5) && !defined(__WINDOWS__ ) #define AMULED_APPTRAITS #endif #ifdef AMULED_APPTRAITS typedef std::map EndProcessDataMap; #include class CDaemonAppTraits : public wxConsoleAppTraits { private: struct sigaction m_oldSignalChildAction; struct sigaction m_newSignalChildAction; #ifdef AMULED28_SOCKETS CAmuledGSocketFuncTable *m_table; wxMutex m_lock; std::list m_sched_delete; public: CDaemonAppTraits(CAmuledGSocketFuncTable *table); virtual GSocketGUIFunctionsTable* GetSocketGUIFunctionsTable(); virtual void ScheduleForDestroy(wxObject *object); virtual void RemoveFromPendingDelete(wxObject *object); void DeletePending(); #else // AMULED28_SOCKETS public: CDaemonAppTraits(); #endif // !AMULED28_SOCKETS virtual int WaitForChild(wxExecuteData& execData); #if defined(__WXMAC__) && !wxCHECK_VERSION(2, 9, 0) virtual wxStandardPathsBase& GetStandardPaths(); #endif }; void OnSignalChildHandler(int signal, siginfo_t *siginfo, void *ucontext); pid_t AmuleWaitPid(pid_t pid, int *status, int options, wxString *msg); #endif // AMULED_APPTRAITS class CamuleDaemonApp : public CamuleApp { private: #ifdef AMULED28_EVENTLOOP bool m_Exit; #endif #ifdef AMULED28_SOCKETS CAmuledGSocketFuncTable *m_table; #endif bool OnInit(); int OnRun(); int OnExit(); virtual int InitGui(bool geometry_enable, wxString &geometry_string); #ifdef AMULED_APPTRAITS struct sigaction m_oldSignalChildAction; struct sigaction m_newSignalChildAction; public: wxAppTraits *CreateTraits(); #endif // AMULED_APPTRAITS public: #ifdef AMULED28_EVENTLOOP CamuleDaemonApp(); void ExitMainLoop() { m_Exit = true; } #endif bool CopyTextToClipboard(wxString strText); virtual int ShowAlert(wxString msg, wxString title, int flags); DECLARE_EVENT_TABLE() }; DECLARE_APP(CamuleDaemonApp) extern CamuleDaemonApp *theApp; #endif /* ! AMULE_DAEMON */ #endif // AMULE_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/amuleAppCommon.cpp0000644000175000017500000004345512611472361021726 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // // This file is for functions common to all three apps (amule, amuled, amulegui), // but preprocessor-dependent (using theApp, thePrefs), so it is compiled seperately for each app. // #include #include // Needed for wxCmdLineParser #include // Needed for wxSingleInstanceChecker #include // Needed for wxTextFile #include // Do_not_auto_remove (win32) #include #include "amule.h" // Interface declarations. #include // Needed for CFormat #include "CFile.h" // Needed for CFile #include "ED2KLink.h" // Needed for command line passing of links #include "FileLock.h" // Needed for CFileLock #include "GuiEvents.h" // Needed for Notify_* #include "KnownFile.h" #include "Logger.h" #include "MagnetURI.h" // Needed for CMagnetURI #include "Preferences.h" #include "ScopedPtr.h" #ifndef CLIENT_GUI #include "DownloadQueue.h" #endif CamuleAppCommon::CamuleAppCommon() { m_singleInstance = NULL; ec_config = false; m_geometryEnabled = false; if (IsRemoteGui()) { m_appName = wxT("aMuleGUI"); m_configFile = wxT("remote.conf"); m_logFile = wxT("remotelogfile"); } else { m_configFile = wxT("amule.conf"); m_logFile = wxT("logfile"); if (IsDaemon()) { m_appName = wxT("aMuleD"); } else { m_appName = wxT("aMule"); } } } CamuleAppCommon::~CamuleAppCommon() { #if defined(__WXMAC__) && defined(AMULE_DAEMON) //#warning TODO: fix wxSingleInstanceChecker for amuled on Mac (wx link problems) #else delete m_singleInstance; #endif } void CamuleAppCommon::RefreshSingleInstanceChecker() { #if defined(__WXMAC__) && defined(AMULE_DAEMON) //#warning TODO: fix wxSingleInstanceChecker for amuled on Mac (wx link problems) #else delete m_singleInstance; m_singleInstance = new wxSingleInstanceChecker(wxT("muleLock"), thePrefs::GetConfigDir()); #endif } void CamuleAppCommon::AddLinksFromFile() { const wxString fullPath = thePrefs::GetConfigDir() + wxT("ED2KLinks"); if (!wxFile::Exists(fullPath)) { return; } // Attempt to lock the ED2KLinks file. CFileLock lock((const char*)unicode2char(fullPath)); wxTextFile file(fullPath); if ( file.Open() ) { for ( unsigned int i = 0; i < file.GetLineCount(); i++ ) { wxString line = file.GetLine( i ).Strip( wxString::both ); if ( !line.IsEmpty() ) { // Special case! used by a secondary running mule to raise this one. if (line == wxT("RAISE_DIALOG")) { Notify_ShowGUI(); continue; } unsigned long category = 0; if (line.AfterLast(wxT(':')).ToULong(&category) == true) { line = line.BeforeLast(wxT(':')); } else { // If ToULong returns false the category still can have been changed! // This is fixed in wx 2.9 category = 0; } theApp->downloadqueue->AddLink(line, category); } } file.Close(); } else { AddLogLineNS(_("Failed to open ED2KLinks file.")); } // Delete the file. wxRemoveFile(thePrefs::GetConfigDir() + wxT("ED2KLinks")); } // Returns a magnet ed2k URI wxString CamuleAppCommon::CreateMagnetLink(const CAbstractFile *f) { CMagnetURI uri; uri.AddField(wxT("dn"), f->GetFileName().Cleanup(false).GetPrintable()); uri.AddField(wxT("xt"), wxString(wxT("urn:ed2k:")) + f->GetFileHash().Encode().Lower()); uri.AddField(wxT("xt"), wxString(wxT("urn:ed2khash:")) + f->GetFileHash().Encode().Lower()); uri.AddField(wxT("xl"), CFormat(wxT("%d")) % f->GetFileSize()); return uri.GetLink(); } // Returns a ed2k file URL wxString CamuleAppCommon::CreateED2kLink(const CAbstractFile *f, bool add_source, bool use_hostname, bool add_cryptoptions, bool add_AICH) { wxASSERT(!(!add_source && (use_hostname || add_cryptoptions))); // Construct URL like this: ed2k://|file||||/ wxString strURL = CFormat(wxT("ed2k://|file|%s|%i|%s|")) % f->GetFileName().Cleanup(false) % f->GetFileSize() % f->GetFileHash().Encode(); // Append the AICH info if (add_AICH) { const CKnownFile* kf = dynamic_cast(f); if (kf && kf->HasProperAICHHashSet()) { strURL << wxT("h=") << kf->GetAICHMasterHash() << wxT("|"); } } strURL << wxT("/"); if (add_source && theApp->IsConnected() && !theApp->IsFirewalled()) { // Create the first part of the URL strURL << wxT("|sources,"); if (use_hostname) { strURL << thePrefs::GetYourHostname(); } else { uint32 clientID = theApp->GetID(); strURL = CFormat(wxT("%s%u.%u.%u.%u")) % strURL % (clientID & 0xff) % ((clientID >> 8) & 0xff) % ((clientID >> 16) & 0xff) % ((clientID >> 24) & 0xff); } strURL << wxT(":") << thePrefs::GetPort(); if (add_cryptoptions) { uint8 uSupportsCryptLayer = thePrefs::IsClientCryptLayerSupported() ? 1 : 0; uint8 uRequestsCryptLayer = thePrefs::IsClientCryptLayerRequested() ? 1 : 0; uint8 uRequiresCryptLayer = thePrefs::IsClientCryptLayerRequired() ? 1 : 0; uint16 byCryptOptions = (uRequiresCryptLayer << 2) | (uRequestsCryptLayer << 1) | (uSupportsCryptLayer << 0) | (uSupportsCryptLayer ? 0x80 : 0x00); strURL << wxT(":") << byCryptOptions; if (byCryptOptions & 0x80) { strURL << wxT(":") << thePrefs::GetUserHash().Encode(); } } strURL << wxT("|/"); } else if (add_source) { AddLogLineC(_("WARNING: You can't add yourself as a source for an eD2k link while having a lowid.")); } // Result is "ed2k://|file||||[h=|]/|sources,[(|):[:cryptoptions[:hash]]]|/" return strURL; } bool CamuleAppCommon::InitCommon(int argc, wxChar ** argv) { theApp->SetAppName(wxT("aMule")); FullMuleVersion = GetFullMuleVersion(); OSDescription = wxGetOsDescription(); OSType = OSDescription.BeforeFirst( wxT(' ') ); if ( OSType.IsEmpty() ) { OSType = wxT("Unknown"); } // Parse cmdline arguments. wxCmdLineParser cmdline(argc, argv); // Handle these arguments. cmdline.AddSwitch(wxT("v"), wxT("version"), wxT("Displays the current version number.")); cmdline.AddSwitch(wxT("h"), wxT("help"), wxT("Displays this information.")); cmdline.AddOption(wxT("c"), wxT("config-dir"), wxT("read config from instead of home")); #ifdef AMULE_DAEMON cmdline.AddSwitch(wxT("f"), wxT("full-daemon"), wxT("Fork to background.")); cmdline.AddOption(wxT("p"), wxT("pid-file"), wxT("After fork, create a pid-file in the given fullname file.")); cmdline.AddSwitch(wxT("e"), wxT("ec-config"), wxT("Configure EC (External Connections).")); #else #ifdef __WINDOWS__ // MSW shows help otions in a dialog box, and the formatting doesn't fit there #define HELPTAB wxT("\t") #else #define HELPTAB wxT("\t\t\t") #endif cmdline.AddOption(wxT("geometry"), wxEmptyString, wxT("Sets the geometry of the app.\n") HELPTAB wxT(" uses the same format as standard X11 apps:\n") HELPTAB wxT("[=][{xX}][{+-}{+-}]")); #endif // !AMULE_DAEMON cmdline.AddSwitch(wxT("o"), wxT("log-stdout"), wxT("Print log messages to stdout.")); cmdline.AddSwitch(wxT("r"), wxT("reset-config"), wxT("Resets config to default values.")); #ifdef CLIENT_GUI cmdline.AddSwitch(wxT("s"), wxT("skip"), wxT("Skip connection dialog.")); #else // Change webserver path. This is also a config option, so this switch will go at some time. cmdline.AddOption(wxT("w"), wxT("use-amuleweb"), wxT("Specify location of amuleweb binary.")); #endif #ifndef __WINDOWS__ cmdline.AddSwitch(wxT("d"), wxT("disable-fatal"), wxT("Do not handle fatal exception.")); // Keep stdin open to run valgrind --gen_suppressions cmdline.AddSwitch(wxT("i"), wxT("enable-stdin"), wxT("Do not disable stdin.")); #endif // Allow passing of links to the app cmdline.AddOption(wxT("t"), wxT("category"), wxT("Set category for passed ED2K links."), wxCMD_LINE_VAL_NUMBER); cmdline.AddParam(wxT("ED2K link"), wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL | wxCMD_LINE_PARAM_MULTIPLE); // wx asserts in debug mode if there is a check for an option that wasn't added. // So we have to wrap around the same #ifdefs as above. >:( // Show help on --help or invalid commands if ( cmdline.Parse() ) { return false; } else if (cmdline.Found(wxT("help"))) { cmdline.Usage(); return false; } if ( cmdline.Found(wxT("version"))) { // This looks silly with logging macros that add a timestamp. printf("%s\n", (const char*)unicode2char(wxString(CFormat(wxT("%s (OS: %s)")) % FullMuleVersion % OSType))); return false; } wxString configdir; if (cmdline.Found(wxT("config-dir"), &configdir)) { // Make an absolute path from the config dir wxFileName fn(configdir); fn.MakeAbsolute(); configdir = fn.GetFullPath(); if (configdir.Last() != wxFileName::GetPathSeparator()) { configdir += wxFileName::GetPathSeparator(); } thePrefs::SetConfigDir(configdir); } else { thePrefs::SetConfigDir(/*OtherFunctions::*/GetConfigDir()); } // Backtracing works in MSW. // Problem is just that the backtraces are useless, because apparently the context gets lost // in the try/catch somewhere. // So leave it out. #ifndef __WINDOWS__ #if wxUSE_ON_FATAL_EXCEPTION if ( !cmdline.Found(wxT("disable-fatal")) ) { // catch fatal exceptions wxHandleFatalExceptions(true); } #endif #endif theLogger.SetEnabledStdoutLog(cmdline.Found(wxT("log-stdout"))); #ifdef AMULE_DAEMON enable_daemon_fork = cmdline.Found(wxT("full-daemon")); if ( cmdline.Found(wxT("pid-file"), &m_PidFile) ) { // Remove any existing PidFile if ( wxFileExists (m_PidFile) ) wxRemoveFile (m_PidFile); } ec_config = cmdline.Found(wxT("ec-config")); #else enable_daemon_fork = false; // Default geometry of the GUI. Can be changed with a cmdline argument... if ( cmdline.Found(wxT("geometry"), &m_geometryString) ) { m_geometryEnabled = true; } #endif if (theLogger.IsEnabledStdoutLog()) { if ( enable_daemon_fork ) { AddLogLineNS(wxT("Daemon will fork to background - log to stdout disabled")); // localization not active yet theLogger.SetEnabledStdoutLog(false); } else { AddLogLineNS(wxT("Logging to stdout enabled")); } } AddLogLineNS(wxT("Initialising ") + FullMuleVersion); // Ensure that "~/.aMule/" is accessible. CPath outDir; if (!CheckMuleDirectory(wxT("configuration"), CPath(thePrefs::GetConfigDir()), wxEmptyString, outDir)) { return false; } if (cmdline.Found(wxT("reset-config"))) { // Make a backup first. wxRemoveFile(thePrefs::GetConfigDir() + m_configFile + wxT(".backup")); wxRenameFile(thePrefs::GetConfigDir() + m_configFile, thePrefs::GetConfigDir() + m_configFile + wxT(".backup")); AddLogLineNS(CFormat(wxT("Your settings have been reset to default values.\nThe old config file has been saved as %s.backup\n")) % m_configFile); } size_t linksPassed = cmdline.GetParamCount(); // number of links from the command line // cppcheck-suppress variableScope int linksActuallyPassed = 0; // number of links that pass the syntax check if (linksPassed) { long cat = 0; if (!cmdline.Found(wxT("t"), &cat)) { cat = 0; } wxTextFile ed2kFile(thePrefs::GetConfigDir() + wxT("ED2KLinks")); if (!ed2kFile.Exists()) { ed2kFile.Create(); } if (ed2kFile.Open()) { for (size_t i = 0; i < linksPassed; i++) { wxString link; if (CheckPassedLink(cmdline.GetParam(i), link, cat)) { ed2kFile.AddLine(link); linksActuallyPassed++; } } ed2kFile.Write(); } else { AddLogLineCS(wxT("Failed to open 'ED2KLinks', cannot add links.")); } } #if defined(__WXMAC__) && defined(AMULE_DAEMON) //#warning TODO: fix wxSingleInstanceChecker for amuled on Mac (wx link problems) AddLogLineCS(wxT("WARNING: The check for other instances is currently disabled in amuled.\n" "Please make sure that no other instance of aMule is running or your files might be corrupted.\n")); #else AddLogLineNS(wxT("Checking if there is an instance already running...")); m_singleInstance = new wxSingleInstanceChecker(); wxString lockfile = IsRemoteGui() ? wxT("muleLockRGUI") : wxT("muleLock"); if (m_singleInstance->Create(lockfile, thePrefs::GetConfigDir()) && m_singleInstance->IsAnotherRunning()) { AddLogLineCS(CFormat(wxT("There is an instance of %s already running")) % m_appName); AddLogLineNS(CFormat(wxT("(lock file: %s%s)")) % thePrefs::GetConfigDir() % lockfile); if (linksPassed) { AddLogLineNS(CFormat(wxT("passed %d %s to it, finished")) % linksActuallyPassed % (linksPassed == 1 ? wxT("link") : wxT("links"))); return false; } // This is very tricky. The most secure way to communicate is via ED2K links file wxTextFile ed2kFile(thePrefs::GetConfigDir() + wxT("ED2KLinks")); if (!ed2kFile.Exists()) { ed2kFile.Create(); } if (ed2kFile.Open()) { ed2kFile.AddLine(wxT("RAISE_DIALOG")); ed2kFile.Write(); AddLogLineNS(wxT("Raising current running instance.")); } else { AddLogLineCS(wxT("Failed to open 'ED2KFile', cannot signal running instance.")); } return false; } else { AddLogLineNS(wxT("No other instances are running.")); } #endif #ifndef __WINDOWS__ // Close standard-input if ( !cmdline.Found(wxT("enable-stdin")) ) { // The full daemon will close all std file-descriptors by itself, // so closing it here would lead to the closing on the first open // file, which is the logfile opened below if (!enable_daemon_fork) { close(0); } } #endif // Create the CFG file we shall use and set the config object as the global cfg file wxConfig::Set(new wxFileConfig( wxEmptyString, wxEmptyString, thePrefs::GetConfigDir() + m_configFile)); // Make a backup of the log file CPath logfileName = CPath(thePrefs::GetConfigDir() + m_logFile); if (logfileName.FileExists()) { CPath::BackupFile(logfileName, wxT(".bak")); } // Open the log file if (!theLogger.OpenLogfile(logfileName.GetRaw())) { // use std err as last resolt to indicate problem fputs("ERROR: unable to open log file\n", stderr); // failure to open log is serious problem return false; } // Load Preferences CPreferences::BuildItemList(thePrefs::GetConfigDir()); CPreferences::LoadAllItems( wxConfigBase::Get() ); #ifdef CLIENT_GUI m_skipConnectionDialog = cmdline.Found(wxT("skip")); #else wxString amulewebPath; if (cmdline.Found(wxT("use-amuleweb"), &amulewebPath)) { thePrefs::SetWSPath(amulewebPath); AddLogLineNS(CFormat(wxT("Using amuleweb in '%s'.")) % amulewebPath); } #endif return true; } /** * Returns a description of the version of aMule being used. * * @return A detailed description of the aMule version, including application * name and wx information. */ const wxString CamuleAppCommon::GetFullMuleVersion() const { return GetMuleAppName() + wxT(" ") + GetMuleVersion(); } bool CamuleAppCommon::CheckPassedLink(const wxString &in, wxString &out, int cat) { wxString link(in); // restore ASCII-encoded pipes link.Replace(wxT("%7C"), wxT("|")); link.Replace(wxT("%7c"), wxT("|")); if (link.compare(0, 7, wxT("magnet:")) == 0) { link = CMagnetED2KConverter(link); if (link.empty()) { AddLogLineCS(CFormat(wxT("Cannot convert magnet link to eD2k: %s")) % in); return false; } } try { CScopedPtr uri(CED2KLink::CreateLinkFromUrl(link)); out = uri.get()->GetLink(); if (cat && uri.get()->GetKind() == CED2KLink::kFile) { out += CFormat(wxT(":%d")) % cat; } return true; } catch ( const wxString& err ) { AddLogLineCS(CFormat(wxT("Invalid eD2k link \"%s\" - ERROR: %s")) % link % err); } return false; } /** * Checks permissions on a aMule directory, creating if needed. * * @param desc A description of the directory in question, used for error messages. * @param directory The directory in question. * @param alternative If the dir specified with 'directory' could not be created, try this instead. * @param outDir Returns the used path. * @return False on error. */ bool CamuleAppCommon::CheckMuleDirectory(const wxString& desc, const CPath& directory, const wxString& alternative, CPath& outDir) { wxString msg; if (directory.IsDir(CPath::readwritable)) { outDir = directory; return true; } else if (directory.DirExists()) { // Strings are not translated here because translation isn't up yet. msg = CFormat(wxT("Permissions on the %s directory too strict!\n") wxT("aMule cannot proceed. To fix this, you must set read/write/exec\n") wxT("permissions for the folder '%s'")) % desc % directory; } else if (CPath::MakeDir(directory)) { outDir = directory; return true; } else { msg << CFormat(wxT("Could not create the %s directory at '%s'.")) % desc % directory; } // Attempt to use fallback directory. const CPath fallback(alternative); if (fallback.IsOk() && (directory != fallback)) { msg << wxT("\nAttempting to use default directory at location \n'") << alternative << wxT("'."); if (theApp->ShowAlert(msg, wxT("Error accessing directory."), wxICON_ERROR | wxOK | wxCANCEL) == wxCANCEL) { outDir = CPath(wxEmptyString); return false; } return CheckMuleDirectory(desc, fallback, wxEmptyString, outDir); } theApp->ShowAlert(msg, wxT("Fatal error."), wxICON_ERROR | wxOK); outDir = CPath(wxEmptyString); return false; } amule_2.3.1+git20151120.0023527bc2.orig/src/amuleDlg.cpp0000644000175000017500000012673112611472361020542 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include #include #include // Do_not_auto_remove (MacOS 10.3, wx 2.7) #include // Do_not_auto_remove (MacOS 10.3, wx 2.7) #include #include // Do_not_auto_remove (win32) #include #include #include // Do_not_auto_remove (win32) #include #include #include #include #include // Needed for wxWindowUpdateLocker #include #ifdef HAVE_CONFIG_H #include "config.h" // Needed for SVNDATE, PACKAGE, VERSION #else #include #endif // HAVE_CONFIG_H #include "amuleDlg.h" // Interface declarations. #include // Needed for CFormat #include "amule.h" // Needed for theApp #include "ChatWnd.h" // Needed for CChatWnd #include "SourceListCtrl.h" // Needed for CSourceListCtrl #include "DownloadListCtrl.h" // Needed for CDownloadListCtrl #include "DownloadQueue.h" // Needed for CDownloadQueue #include "KadDlg.h" // Needed for CKadDlg #include "Logger.h" #include "MuleTrayIcon.h" #include "muuli_wdr.h" // Needed for ID_BUTTON* #include "Preferences.h" // Needed for CPreferences #include "PrefsUnifiedDlg.h" #include "SearchDlg.h" // Needed for CSearchDlg #include "Server.h" // Needed for CServer #include "ServerConnect.h" // Needed for CServerConnect #include "ServerWnd.h" // Needed for CServerWnd #include "SharedFilesWnd.h" // Needed for CSharedFilesWnd #include "SharedFilePeersListCtrl.h" // Needed for CSharedFilePeersListCtrl #include "Statistics.h" // Needed for theStats #include "StatisticsDlg.h" // Needed for CStatisticsDlg #include "TerminationProcess.h" // Needed for CTerminationProcess #include "TransferWnd.h" // Needed for CTransferWnd #ifndef CLIENT_GUI #include "PartFileConvertDlg.h" #endif #include "IPFilter.h" #ifndef __WINDOWS__ #include "aMule.xpm" #endif #include "kademlia/kademlia/Kademlia.h" #ifdef ENABLE_IP2COUNTRY #include "IP2Country.h" // Needed for IP2Country #endif #ifdef ENABLE_IP2COUNTRY // That's no bug. MSVC has ENABLE_IP2COUNTRY always on, // but dummy GeoIP.h turns ENABLE_IP2COUNTRY off again. void CamuleDlg::IP2CountryDownloadFinished(uint32 result) { m_IP2Country->DownloadFinished(result); } void CamuleDlg::EnableIP2Country() { if (thePrefs::IsGeoIPEnabled()) { m_IP2Country->Enable(); } } #else void CamuleDlg::IP2CountryDownloadFinished(uint32){} void CamuleDlg::EnableIP2Country(){} #endif BEGIN_EVENT_TABLE(CamuleDlg, wxFrame) EVT_TOOL(ID_BUTTONNETWORKS, CamuleDlg::OnToolBarButton) EVT_TOOL(ID_BUTTONSEARCH, CamuleDlg::OnToolBarButton) EVT_TOOL(ID_BUTTONDOWNLOADS, CamuleDlg::OnToolBarButton) EVT_TOOL(ID_BUTTONSHARED, CamuleDlg::OnToolBarButton) EVT_TOOL(ID_BUTTONMESSAGES, CamuleDlg::OnToolBarButton) EVT_TOOL(ID_BUTTONSTATISTICS, CamuleDlg::OnToolBarButton) EVT_TOOL(ID_ABOUT, CamuleDlg::OnAboutButton) EVT_TOOL(ID_BUTTONNEWPREFERENCES, CamuleDlg::OnPrefButton) EVT_TOOL(ID_BUTTONIMPORT, CamuleDlg::OnImportButton) EVT_TOOL(ID_BUTTONCONNECT, CamuleDlg::OnBnConnect) EVT_CLOSE(CamuleDlg::OnClose) EVT_ICONIZE(CamuleDlg::OnMinimize) EVT_BUTTON(ID_BUTTON_FAST, CamuleDlg::OnBnClickedFast) EVT_TIMER(ID_GUI_TIMER_EVENT, CamuleDlg::OnGUITimer) EVT_SIZE(CamuleDlg::OnMainGUISizeChange) EVT_KEY_UP(CamuleDlg::OnKeyPressed) EVT_MENU(wxID_EXIT, CamuleDlg::OnExit) END_EVENT_TABLE() #ifndef wxCLOSE_BOX #define wxCLOSE_BOX 0 #endif CamuleDlg::CamuleDlg( wxWindow* pParent, const wxString &title, wxPoint where, wxSize dlg_size) : wxFrame( pParent, -1, title, where, dlg_size, wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxDIALOG_NO_PARENT| wxRESIZE_BORDER|wxMINIMIZE_BOX|wxMAXIMIZE_BOX|wxCLOSE_BOX, wxT("aMule")), m_activewnd(NULL), m_transferwnd(NULL), m_serverwnd(NULL), m_sharedfileswnd(NULL), m_searchwnd(NULL), m_chatwnd(NULL), m_statisticswnd(NULL), m_kademliawnd(NULL), m_prefsDialog(NULL), m_srv_split_pos(0), m_imagelist(16,16), m_tblist(32,32), m_prefsVisible(false), m_wndToolbar(NULL), m_wndTaskbarNotifier(NULL), m_nActiveDialog(DT_NETWORKS_WND), m_is_safe_state(false), m_BlinkMessages(false), m_CurrentBlinkBitmap(24), m_last_iconizing(0), m_skinFileName(), m_clientSkinNames(CLIENT_SKIN_SIZE) { // Initialize skin names m_clientSkinNames[Client_Green_Smiley] = wxT("Transfer"); m_clientSkinNames[Client_Red_Smiley] = wxT("Connecting"); m_clientSkinNames[Client_Yellow_Smiley] = wxT("OnQueue"); m_clientSkinNames[Client_Grey_Smiley] = wxT("A4AFNoNeededPartsQueueFull"); m_clientSkinNames[Client_White_Smiley] = wxT("StatusUnknown"); m_clientSkinNames[Client_ExtendedProtocol_Smiley] = wxT("ExtendedProtocol"); m_clientSkinNames[Client_SecIdent_Smiley] = wxT("SecIdent"); m_clientSkinNames[Client_BadGuy_Smiley] = wxT("BadGuy"); m_clientSkinNames[Client_CreditsGrey_Smiley] = wxT("CreditsGrey"); m_clientSkinNames[Client_CreditsYellow_Smiley] = wxT("CreditsYellow"); m_clientSkinNames[Client_Upload_Smiley] = wxT("Upload"); m_clientSkinNames[Client_Friend_Smiley] = wxT("Friend"); m_clientSkinNames[Client_eMule_Smiley] = wxT("eMule"); m_clientSkinNames[Client_mlDonkey_Smiley] = wxT("mlDonkey"); m_clientSkinNames[Client_eDonkeyHybrid_Smiley] = wxT("eDonkeyHybrid"); m_clientSkinNames[Client_aMule_Smiley] = wxT("aMule"); m_clientSkinNames[Client_lphant_Smiley] = wxT("lphant"); m_clientSkinNames[Client_Shareaza_Smiley] = wxT("Shareaza"); m_clientSkinNames[Client_xMule_Smiley] = wxT("xMule"); m_clientSkinNames[Client_Unknown] = wxT("Unknown"); m_clientSkinNames[Client_InvalidRating_Smiley] = wxT("InvalidRatingOnFile"); m_clientSkinNames[Client_PoorRating_Smiley] = wxT("PoorRatingOnFile"); m_clientSkinNames[Client_GoodRating_Smiley] = wxT("GoodRatingOnFile"); m_clientSkinNames[Client_FairRating_Smiley] = wxT("FairRatingOnFile"); m_clientSkinNames[Client_ExcellentRating_Smiley] = wxT("ExcellentRatingOnFile"); m_clientSkinNames[Client_CommentOnly_Smiley] = wxT("CommentOnly"); m_clientSkinNames[Client_Encryption_Smiley] = wxT("Encrypted"); // wxWidgets send idle events to ALL WINDOWS by default... *SIGH* wxIdleEvent::SetMode(wxIDLE_PROCESS_SPECIFIED); wxUpdateUIEvent::SetMode(wxUPDATE_UI_PROCESS_SPECIFIED); wxInitAllImageHandlers(); Apply_Clients_Skin(); #ifdef __WINDOWS__ wxSystemOptions::SetOption(wxT("msw.remap"), 0); #endif #if !(wxCHECK_VERSION(2, 9, 0) && defined(__WXMAC__)) // this crashes on Mac with wx 2.9 SetIcon(wxICON(aMule)); #endif srand(time(NULL)); // Create new sizer and stuff a wxPanel in there. wxFlexGridSizer *s_main = new wxFlexGridSizer(1); s_main->AddGrowableCol(0); s_main->AddGrowableRow(0); wxPanel* p_cnt = new wxPanel(this, -1, wxDefaultPosition, wxDefaultSize); s_main->Add(p_cnt, 0, wxGROW|wxEXPAND, 0); muleDlg(p_cnt, false, true); SetSizer(s_main, true); m_serverwnd = new CServerWnd(p_cnt, m_srv_split_pos); AddLogLineN(wxEmptyString); AddLogLineN(wxT(" - ") + CFormat(_("This is aMule %s based on eMule.")) % GetMuleVersion()); AddLogLineN(wxT(" ") + CFormat(_("Running on %s")) % wxGetOsDescription()); AddLogLineN(wxT(" - ") + wxString(_("Visit http://www.amule.org to check if a new version is available."))); AddLogLineN(wxEmptyString); #ifdef ENABLE_IP2COUNTRY m_GeoIPavailable = true; m_IP2Country = new CIP2Country(thePrefs::GetConfigDir()); #else m_GeoIPavailable = false; #endif m_searchwnd = new CSearchDlg(p_cnt); m_transferwnd = new CTransferWnd(p_cnt); m_sharedfileswnd = new CSharedFilesWnd(p_cnt); m_statisticswnd = new CStatisticsDlg(p_cnt, theApp->m_statistics); m_chatwnd = new CChatWnd(p_cnt); m_kademliawnd = CastChild(wxT("kadWnd"), CKadDlg); m_serverwnd->Show(false); m_searchwnd->Show(false); m_transferwnd->Show(false); m_sharedfileswnd->Show(false); m_statisticswnd->Show(false); m_chatwnd->Show(false); // Create the GUI timer gui_timer=new wxTimer(this,ID_GUI_TIMER_EVENT); if (!gui_timer) { AddLogLineN(_("FATAL ERROR: Failed to create Timer")); exit(1); } // Set transfers as active window Create_Toolbar(thePrefs::VerticalToolbar()); SetActiveDialog(DT_TRANSFER_WND, m_transferwnd); m_wndToolbar->ToggleTool(ID_BUTTONDOWNLOADS, true ); bool override_where = (where != wxDefaultPosition); bool override_size = ( (dlg_size.x != DEFAULT_SIZE_X) || (dlg_size.y != DEFAULT_SIZE_Y) ); if (!LoadGUIPrefs(override_where, override_size)) { // Prefs not loaded for some reason, exit AddLogLineC(wxT("Error! Unable to load Preferences") ); return; } // Prepare the dialog, sets the splitter-position (AFTER window size is set) m_transferwnd->Prepare(); m_is_safe_state = true; // Init statistics stuff, better do it asap m_statisticswnd->Init(); m_kademliawnd->Init(); m_searchwnd->UpdateCatChoice(); if (thePrefs::UseTrayIcon()) { CreateSystray(); } Show(true); // Must we start minimized? if (thePrefs::GetStartMinimized()) { DoIconize(true); } // Set shortcut keys wxAcceleratorEntry entries[] = { wxAcceleratorEntry(wxACCEL_CTRL, wxT('Q'), wxID_EXIT) }; SetAcceleratorTable(wxAcceleratorTable(itemsof(entries), entries)); ShowED2KLinksHandler( thePrefs::GetFED2KLH() ); wxNotebook* logs_notebook = CastChild( ID_SRVLOG_NOTEBOOK, wxNotebook); wxNotebook* networks_notebook = CastChild( ID_NETNOTEBOOK, wxNotebook); wxASSERT(logs_notebook->GetPageCount() == 4); wxASSERT(networks_notebook->GetPageCount() == 2); for (uint32 i = 0; i < logs_notebook->GetPageCount(); ++i) { m_logpages[i].page = logs_notebook->GetPage(i); m_logpages[i].name = logs_notebook->GetPageText(i); } for (uint32 i = 0; i < networks_notebook->GetPageCount(); ++i) { m_networkpages[i].page = networks_notebook->GetPage(i); m_networkpages[i].name = networks_notebook->GetPageText(i); } DoNetworkRearrange(); } // Madcat - Sets Fast ED2K Links Handler on/off. void CamuleDlg::ShowED2KLinksHandler( bool show ) { // Errorchecking in case the pointer becomes invalid ... if (s_fed2klh == NULL) { wxLogWarning(wxT("Unable to find Fast ED2K Links handler sizer! Hiding FED2KLH aborted.")); return; } s_dlgcnt->Show( s_fed2klh, show ); s_dlgcnt->Layout(); } // Toogles ed2k link handler. void CamuleDlg::ToogleED2KLinksHandler() { // Errorchecking in case the pointer becomes invalid ... if (s_fed2klh == NULL) { wxLogWarning(wxT("Unable to find Fast ED2K Links handler sizer! Toogling FED2KLH aborted.")); return; } ShowED2KLinksHandler(!s_dlgcnt->IsShown(s_fed2klh)); } void CamuleDlg::SetActiveDialog(DialogType type, wxWindow* dlg) { m_nActiveDialog = type; if ( type == DT_TRANSFER_WND ) { if (thePrefs::ShowCatTabInfos()) { m_transferwnd->UpdateCatTabTitles(); } } if ( m_activewnd ) { m_activewnd->Show(false); contentSizer->Detach(m_activewnd); } contentSizer->Add(dlg, 1, wxALIGN_LEFT|wxEXPAND); dlg->Show(true); m_activewnd=dlg; s_dlgcnt->Layout(); // Since we might be suspending redrawing while hiding the dialog // we have to refresh it once it is visible again dlg->Refresh( true ); dlg->SetFocus(); if ( type == DT_SHARED_WND ) { // set up splitter now that window sizes are defined m_sharedfileswnd->Prepare(); } } void CamuleDlg::UpdateTrayIcon(int percent) { // set trayicon-icon if(!theApp->IsConnected()) { m_wndTaskbarNotifier->SetTrayIcon(TRAY_ICON_DISCONNECTED, percent); } else { if(theApp->IsConnectedED2K() && theApp->serverconnect->IsLowID()) { m_wndTaskbarNotifier->SetTrayIcon(TRAY_ICON_LOWID, percent); } else { m_wndTaskbarNotifier->SetTrayIcon(TRAY_ICON_HIGHID, percent); } } } void CamuleDlg::CreateSystray() { wxCHECK_RET(m_wndTaskbarNotifier == NULL, wxT("Systray already created")); m_wndTaskbarNotifier = new CMuleTrayIcon(); // This will effectively show the Tray Icon. UpdateTrayIcon(0); } void CamuleDlg::RemoveSystray() { delete m_wndTaskbarNotifier; m_wndTaskbarNotifier = NULL; } void CamuleDlg::OnToolBarButton(wxCommandEvent& ev) { static int lastbutton = ID_BUTTONDOWNLOADS; // Kry - just if the GUI is ready for it if ( m_is_safe_state ) { // Rehide the handler if needed if ( lastbutton == ID_BUTTONSEARCH && !thePrefs::GetFED2KLH() ) { if (ev.GetId() != ID_BUTTONSEARCH) { ShowED2KLinksHandler( false ); } else { // Toogle ED2K handler. ToogleED2KLinksHandler(); } } if ( lastbutton != ev.GetId() ) { switch ( ev.GetId() ) { case ID_BUTTONNETWORKS: SetActiveDialog(DT_NETWORKS_WND, m_serverwnd); // Set serverlist splitter position CastChild( wxT("SrvSplitterWnd"), wxSplitterWindow )->SetSashPosition(m_srv_split_pos, true); break; case ID_BUTTONSEARCH: // The search dialog should always display the handler if ( !thePrefs::GetFED2KLH() ) ShowED2KLinksHandler( true ); SetActiveDialog(DT_SEARCH_WND, m_searchwnd); break; case ID_BUTTONDOWNLOADS: SetActiveDialog(DT_TRANSFER_WND, m_transferwnd); // Prepare the dialog, sets the splitter-position m_transferwnd->Prepare(); break; case ID_BUTTONSHARED: SetActiveDialog(DT_SHARED_WND, m_sharedfileswnd); break; case ID_BUTTONMESSAGES: m_BlinkMessages = false; SetActiveDialog(DT_CHAT_WND, m_chatwnd); break; case ID_BUTTONSTATISTICS: SetActiveDialog(DT_STATS_WND, m_statisticswnd); break; // This shouldn't happen, but just in case default: AddLogLineC(wxT("Unknown button triggered CamuleApp::OnToolBarButton().") ); break; } } m_wndToolbar->ToggleTool(lastbutton, lastbutton == ev.GetId() ); lastbutton = ev.GetId(); } } void CamuleDlg::OnAboutButton(wxCommandEvent& WXUNUSED(ev)) { wxString msg = wxT(" "); #ifdef CLIENT_GUI msg << _("aMule remote control ") << wxT(VERSION); #else msg << wxT("aMule ") << wxT(VERSION); #endif msg << wxT(" "); #ifdef SVNDATE msg << _("Snapshot:") << wxT("\n ") << wxT(SVNDATE); #endif msg << wxT("\n\n") << _("'All-Platform' p2p client based on eMule \n\n") << _("Website: http://www.amule.org \n") << _("Forum: http://forum.amule.org \n") << _("FAQ: http://wiki.amule.org \n\n") << _("Contact: admin@amule.org (administrative issues) \n") << _("Copyright (c) 2003-2011 aMule Team \n\n") << _("Part of aMule is based on \n") << _("Kademlia: Peer-to-peer routing based on the XOR metric.\n") << _(" Copyright (c) 2002-2011 Petar Maymounkov ( petar@post.harvard.edu )\n") << _("http://kademlia.scs.cs.nyu.edu\n"); if (m_is_safe_state) { wxMessageBox(msg, _("Message"), wxOK | wxICON_INFORMATION, this); } } void CamuleDlg::OnPrefButton(wxCommandEvent& WXUNUSED(ev)) { if (m_is_safe_state) { if (m_prefsDialog == NULL) { m_prefsDialog = new PrefsUnifiedDlg(this); } m_prefsDialog->TransferToWindow(); m_prefsDialog->Show(true); m_prefsDialog->Raise(); } } void CamuleDlg::OnImportButton(wxCommandEvent& WXUNUSED(ev)) { #ifndef CLIENT_GUI if (m_is_safe_state) { CPartFileConvertDlg::ShowGUI(NULL); } #endif } CamuleDlg::~CamuleDlg() { theApp->amuledlg = NULL; #ifdef ENABLE_IP2COUNTRY delete m_IP2Country; #endif AddLogLineN(_("aMule dialog destroyed")); } void CamuleDlg::OnBnConnect(wxCommandEvent& WXUNUSED(evt)) { bool disconnect = (theApp->IsConnectedED2K() || theApp->serverconnect->IsConnecting()) #ifdef CLIENT_GUI || theApp->IsConnectedKad() // there's no Kad running state atm #else || (Kademlia::CKademlia::IsRunning()) #endif ; if (thePrefs::GetNetworkED2K()) { if (disconnect) { //disconnect if currently connected if (theApp->serverconnect->IsConnecting()) { theApp->serverconnect->StopConnectionTry(); } else { theApp->serverconnect->Disconnect(); } } else { //connect if not currently connected AddLogLineC(_("Connecting")); theApp->serverconnect->ConnectToAnyServer(); } } else { wxASSERT(!theApp->IsConnectedED2K()); } // Connect Kad also if (thePrefs::GetNetworkKademlia()) { if( disconnect ) { theApp->StopKad(); } else { theApp->StartKad(); } } else { #ifndef CLIENT_GUI wxASSERT(!Kademlia::CKademlia::IsRunning()); #endif } ShowConnectionState(); } void CamuleDlg::ResetLog(int id) { wxTextCtrl* ct = CastByID(id, m_serverwnd, wxTextCtrl); wxCHECK_RET(ct, wxT("Resetting unknown log")); ct->Clear(); if (id == ID_LOGVIEW) { // Also clear the log line wxStaticText* text = CastChild(wxT("infoLabel"), wxStaticText); text->SetLabel(wxEmptyString); text->GetParent()->Layout(); } } void CamuleDlg::AddLogLine(const wxString& line) { bool addtostatusbar = line[0] == '!'; wxString bufferline = line.Mid(1); // Add the message to the log-view wxTextCtrl* ct = CastByID( ID_LOGVIEW, m_serverwnd, wxTextCtrl ); if ( ct ) { // Bold critical log-lines // Works in Windows too thanks to wxTE_RICH2 style in muuli wxTextAttr style = ct->GetDefaultStyle(); wxFont font = style.GetFont(); font.SetWeight(addtostatusbar ? wxFONTWEIGHT_BOLD : wxFONTWEIGHT_NORMAL); style.SetFont(font); #if wxCHECK_VERSION(2, 9, 0) style.SetFontSize(8); #endif ct->SetDefaultStyle(style); ct->AppendText(bufferline); ct->ShowPosition( ct->GetLastPosition() - 1 ); } // Set the status-bar if the event warrents it if ( addtostatusbar ) { // Escape "&"s, which would otherwise not show up bufferline.Replace( wxT("&"), wxT("&&") ); wxStaticText* text = CastChild( wxT("infoLabel"), wxStaticText ); // Only show the first line if multiple lines text->SetLabel( bufferline.BeforeFirst( wxT('\n') ) ); text->SetToolTip( bufferline ); text->GetParent()->Layout(); } } void CamuleDlg::AddServerMessageLine(wxString& message) { wxTextCtrl* cv= CastByID( ID_SERVERINFO, m_serverwnd, wxTextCtrl ); if(cv) { if (message.Length() > 500) { cv->AppendText(message.Left(500) + wxT("\n")); } else { cv->AppendText(message + wxT("\n")); } cv->ShowPosition(cv->GetLastPosition()-1); } } void CamuleDlg::ShowConnectionState(bool skinChanged) { static wxImageList status_arrows(16,16,true,0); if (!status_arrows.GetImageCount()) { // Generate the image list (This is only done once) for (int t = 0; t < 7; ++t) { status_arrows.Add(connImages(t)); } } m_serverwnd->UpdateED2KInfo(); m_serverwnd->UpdateKadInfo(); //////////////////////////////////////////////////////////// // Determine the status of the networks // enum ED2KState { ED2KOff = 0, ED2KLowID = 1, ED2KConnecting = 2, ED2KHighID = 3, ED2KUndef = -1 }; enum EKadState { EKadOff = 4, EKadFW = 5, EKadConnecting = 5, EKadOK = 6, EKadUndef = -1 }; ED2KState ed2kState = ED2KOff; EKadState kadState = EKadOff; //////////////////////////////////////////////////////////// // Update the label on the status-bar and determine // the states of the two networks. // wxString msgED2K; if (theApp->IsConnectedED2K()) { CServer* server = theApp->serverconnect->GetCurrentServer(); if (server) { msgED2K = CFormat(wxT("eD2k: %s")) % server->GetListName(); } if (theApp->serverconnect->IsLowID()) { ed2kState = ED2KLowID; } else { ed2kState = ED2KHighID; } } else if (theApp->serverconnect->IsConnecting()) { msgED2K = _("eD2k: Connecting"); ed2kState = ED2KConnecting; } else if (thePrefs::GetNetworkED2K()) { msgED2K = _("eD2k: Disconnected"); } wxString msgKad; if (theApp->IsConnectedKad()) { if (theApp->IsFirewalledKad()) { msgKad = _("Kad: Firewalled"); kadState = EKadFW; } else { msgKad = _("Kad: Connected"); kadState = EKadOK; } } else if (theApp->IsKadRunning()) { msgKad = _("Kad: Connecting"); kadState = EKadConnecting; } else if (thePrefs::GetNetworkKademlia()) { msgKad = _("Kad: Off"); } wxStaticText* connLabel = CastChild( wxT("connLabel"), wxStaticText ); { wxCHECK_RET(connLabel, wxT("'connLabel' widget not found")); } wxString labelMsg; if (msgED2K.Length() && msgKad.Length()) { labelMsg = msgED2K + wxT(" | ") + msgKad; } else { labelMsg = msgED2K + msgKad; } connLabel->SetLabel(labelMsg); connLabel->GetParent()->Layout(); //////////////////////////////////////////////////////////// // Update the connect/disconnect/cancel button. // enum EConnState { ECS_Unknown, ECS_Connected, ECS_Connecting, ECS_Disconnected }; static EConnState s_oldState = ECS_Unknown; EConnState currentState = ECS_Disconnected; if (theApp->serverconnect->IsConnecting() || (theApp->IsKadRunning() && !theApp->IsConnectedKad())) { currentState = ECS_Connecting; } else if (theApp->IsConnected()) { currentState = ECS_Connected; } else { currentState = ECS_Disconnected; } if ( (true == skinChanged) || (currentState != s_oldState) ) { wxWindowUpdateLocker freezer(m_wndToolbar); wxToolBarToolBase* toolbarTool = m_wndToolbar->RemoveTool(ID_BUTTONCONNECT); switch (currentState) { case ECS_Connecting: toolbarTool->SetLabel(_("Cancel")); toolbarTool->SetShortHelp(_("Stop the current connection attempts")); toolbarTool->SetNormalBitmap(m_tblist.GetBitmap(2)); break; case ECS_Connected: toolbarTool->SetLabel(_("Disconnect")); toolbarTool->SetShortHelp(_("Disconnect from the currently connected networks")); toolbarTool->SetNormalBitmap(m_tblist.GetBitmap(1)); break; default: toolbarTool->SetLabel(_("Connect")); toolbarTool->SetShortHelp(_("Connect to the currently enabled networks")); toolbarTool->SetNormalBitmap(m_tblist.GetBitmap(0)); } m_wndToolbar->InsertTool(0, toolbarTool); m_wndToolbar->Realize(); m_wndToolbar->EnableTool(ID_BUTTONCONNECT, (thePrefs::GetNetworkED2K() || thePrefs::GetNetworkKademlia()) && theApp->ipfilter->IsReady()); s_oldState = currentState; } //////////////////////////////////////////////////////////// // Update the globe-icon in the lower-right corner. // (only if connection state has changed) // static ED2KState s_ED2KOldState = ED2KUndef; static EKadState s_EKadOldState = EKadUndef; if (ed2kState != s_ED2KOldState || kadState != s_EKadOldState) { s_ED2KOldState = ed2kState; s_EKadOldState = kadState; wxStaticBitmap* connBitmap = CastChild( wxT("connImage"), wxStaticBitmap ); wxCHECK_RET(connBitmap, wxT("'connImage' widget not found")); wxBitmap statusIcon = connBitmap->GetBitmap(); // Sanity check - otherwise there's a crash here if aMule runs out of resources if (statusIcon.GetRefData() == NULL) { return; } wxMemoryDC bitmapDC(statusIcon); status_arrows.Draw(kadState, bitmapDC, 0, 0, wxIMAGELIST_DRAW_TRANSPARENT); status_arrows.Draw(ed2kState, bitmapDC, 0, 0, wxIMAGELIST_DRAW_TRANSPARENT); connBitmap->SetBitmap(statusIcon); } } void CamuleDlg::ShowUserCount(const wxString& info) { wxStaticText* label = CastChild( wxT("userLabel"), wxStaticText ); // Update Kad tab m_serverwnd->UpdateKadInfo(); label->SetLabel(info); label->GetParent()->Layout(); } void CamuleDlg::ShowTransferRate() { float kBpsUp = theStats::GetUploadRate() / 1024.0; float kBpsDown = theStats::GetDownloadRate() / 1024.0; wxString buffer; if( thePrefs::ShowOverhead() ) { buffer = CFormat(_("Up: %.1f(%.1f) | Down: %.1f(%.1f)")) % kBpsUp % (theStats::GetUpOverheadRate() / 1024.0) % kBpsDown % (theStats::GetDownOverheadRate() / 1024.0); } else { buffer = CFormat(_("Up: %.1f | Down: %.1f")) % kBpsUp % kBpsDown; } buffer.Truncate(50); // Max size 50 wxStaticText* label = CastChild( wxT("speedLabel"), wxStaticText ); label->SetLabel(buffer); label->GetParent()->Layout(); // Show upload/download speed in title if (thePrefs::GetShowRatesOnTitle()) { wxString UpDownSpeed = CFormat(wxT("Up: %.1f | Down: %.1f")) % kBpsUp % kBpsDown; if (thePrefs::GetShowRatesOnTitle() == 1) { SetTitle(theApp->m_FrameTitle + wxT(" -- ") + UpDownSpeed); } else { SetTitle(UpDownSpeed + wxT(" -- ") + theApp->m_FrameTitle); } } wxASSERT((m_wndTaskbarNotifier != NULL) == thePrefs::UseTrayIcon()); if (m_wndTaskbarNotifier) { // set trayicon-icon int percentDown = (int)ceil((kBpsDown*100) / thePrefs::GetMaxGraphDownloadRate()); UpdateTrayIcon( ( percentDown > 100 ) ? 100 : percentDown); wxString buffer2; if ( theApp->IsConnected() ) { buffer2 = CFormat(_("aMule (%s | Connected)")) % buffer; } else { buffer2 = CFormat(_("aMule (%s | Disconnected)")) % buffer; } m_wndTaskbarNotifier->SetTrayToolTip(buffer2); } wxStaticBitmap* bmp = CastChild( wxT("transferImg"), wxStaticBitmap ); bmp->SetBitmap(dlStatusImages((kBpsUp>0.01 ? 2 : 0) + (kBpsDown>0.01 ? 1 : 0))); } void CamuleDlg::DlgShutDown() { // Are we already shutting down or still on init? if ( m_is_safe_state == false ) { return; } // we are going DOWN m_is_safe_state = false; // Stop the GUI Timer delete gui_timer; m_transferwnd->downloadlistctrl->DeleteAllItems(); // We want to delete the systray too! RemoveSystray(); } void CamuleDlg::OnClose(wxCloseEvent& evt) { if (thePrefs::HideOnClose() && evt.CanVeto()) { Show(false); evt.Veto(); return; } // This will be here till the core close is != app close if (evt.CanVeto() && thePrefs::IsConfirmExitEnabled() ) { if (wxNO == wxMessageBox(wxString(CFormat(_("Do you really want to exit %s?")) % theApp->GetMuleAppName()), wxString(_("Exit confirmation")), wxYES_NO, this)) { evt.Veto(); return; } } SaveGUIPrefs(); Enable(false); Show(false); theApp->ShutDown(evt); } void CamuleDlg::OnBnClickedFast(wxCommandEvent& WXUNUSED(evt)) { wxTextCtrl* ctl = CastChild( wxT("FastEd2kLinks"), wxTextCtrl ); for ( int i = 0; i < ctl->GetNumberOfLines(); i++ ) { wxString strlink = ctl->GetLineText(i); strlink.Trim(true); strlink.Trim(false); if ( !strlink.IsEmpty() ) { theApp->downloadqueue->AddLink( strlink, m_transferwnd->downloadlistctrl->GetCategory() ); } } ctl->SetValue(wxEmptyString); } // Formerly known as LoadRazorPrefs() bool CamuleDlg::LoadGUIPrefs(bool override_pos, bool override_size) { // Create a config base for loading razor preferences wxConfigBase *config = wxConfigBase::Get(); // If config haven't been created exit without loading if (config == NULL) { return false; } // The section where to save in in file wxString section = wxT("/Razor_Preferences/"); // Get window size and position int x1 = config->Read(section + wxT("MAIN_X_POS"), -1); int y1 = config->Read(section + wxT("MAIN_Y_POS"), -1); int x2 = config->Read(section + wxT("MAIN_X_SIZE"), -1); int y2 = config->Read(section + wxT("MAIN_Y_SIZE"), -1); int maximized = config->Read(section + wxT("Maximized"), 01); // Kry - Random usable pos for m_srv_split_pos m_srv_split_pos = config->Read(section + wxT("SRV_SPLITTER_POS"), 463l); if (!override_size) { if (x2 > 0 && y2 > 0) { SetSize(x2, y2); } else { #ifndef __WXGTK__ // Probably first run. Maximize(); #endif } } if (!override_pos) { // If x1 and y1 != -1 Redefine location if(x1 != -1 && y1 != -1) { wxRect display = wxGetClientDisplayRect(); if (x1 <= display.GetRightTop().x && y1 <= display.GetRightBottom().y) { Move(x1, y1); } else { // It's offscreen... so let's not. } } } if (!override_size && !override_pos && maximized) { Maximize(); } return true; } bool CamuleDlg::SaveGUIPrefs() { /* Razor 1a - Modif by MikaelB Save client size and position */ // Create a config base for saving razor preferences wxConfigBase *config = wxConfigBase::Get(); // If config haven't been created exit without saving if (config == NULL) { return false; } // The section where to save in in file wxString section = wxT("/Razor_Preferences/"); if (!IsIconized()) { // Main window location and size int x1, y1, x2, y2; GetPosition(&x1, &y1); GetSize(&x2, &y2); // Saving window size and position config->Write(section+wxT("MAIN_X_POS"), (long) x1); config->Write(section+wxT("MAIN_Y_POS"), (long) y1); config->Write(section+wxT("MAIN_X_SIZE"), (long) x2); config->Write(section+wxT("MAIN_Y_SIZE"), (long) y2); config->Write(section+wxT("Maximized"), (long) (IsMaximized() ? 1 : 0)); } // Saving sash position of splitter in server window config->Write(section+wxT("SRV_SPLITTER_POS"), (long) m_srv_split_pos); config->Flush(true); /* End modif */ return true; } void CamuleDlg::DoIconize(bool iconize) { if (m_wndTaskbarNotifier && thePrefs::DoMinToTray()) { if (iconize) { // Skip() will do it. //Iconize(true); if (SafeState()) { Show(false); } } else { Show(true); Raise(); } } else { // Will be done by Skip(); //Iconize(iconize); } } void CamuleDlg::OnMinimize(wxIconizeEvent& evt) { // Evil Hack: check if the mouse is inside the window #ifndef __WINDOWS__ if (GetScreenRect().Contains(wxGetMousePosition())) #endif { if (m_prefsDialog && m_prefsDialog->IsShown()) { // Veto. } else { if (m_wndTaskbarNotifier) { #if wxCHECK_VERSION(2, 9, 0) DoIconize(evt.IsIconized()); #else DoIconize(evt.Iconized()); #endif } evt.Skip(); } } } void CamuleDlg::OnGUITimer(wxTimerEvent& WXUNUSED(evt)) { // Former TimerProc section static uint32 msPrev1, msPrev5; uint32 msCur = theStats::GetUptimeMillis(); // can this actually happen under wxwin ? if (!SafeState()) { return; } #ifndef CLIENT_GUI static uint32 msPrevGraph, msPrevStats; int msGraphUpdate = thePrefs::GetTrafficOMeterInterval() * 1000; if ((msGraphUpdate > 0) && ((msCur / msGraphUpdate) > (msPrevGraph / msGraphUpdate))) { // trying to get the graph shifts evenly spaced after a change in the update period msPrevGraph = msCur; GraphUpdateInfo update = theApp->m_statistics->GetPointsForUpdate(); m_statisticswnd->UpdateStatGraphs(theStats::GetPeakConnections(), update); m_kademliawnd->UpdateGraph(update); } int sStatsUpdate = thePrefs::GetStatsInterval(); if ((sStatsUpdate > 0) && ((int)(msCur - msPrevStats) > sStatsUpdate*1000)) { if (m_statisticswnd->IsShownOnScreen()) { msPrevStats = msCur; m_statisticswnd->ShowStatistics(); } } #endif if (msCur-msPrev5 > 5000) { // every 5 seconds msPrev5 = msCur; ShowTransferRate(); if (thePrefs::ShowCatTabInfos() && theApp->amuledlg->m_activewnd == theApp->amuledlg->m_transferwnd) { m_transferwnd->UpdateCatTabTitles(); } if (thePrefs::AutoSortDownload()) { m_transferwnd->downloadlistctrl->SortList(); m_transferwnd->clientlistctrl->SortList(); m_sharedfileswnd->peerslistctrl->SortList(); } m_kademliawnd->UpdateNodeCount(CStatistics::GetKadNodes()); } if (msCur-msPrev1 > 1000) { // every second msPrev1 = msCur; if (m_CurrentBlinkBitmap == 12) { m_CurrentBlinkBitmap = 7; SetMessagesTool(); } else { if (m_BlinkMessages) { m_CurrentBlinkBitmap = 12; SetMessagesTool(); } } } } void CamuleDlg::SetMessagesTool() { wxWindowUpdateLocker freezer(m_wndToolbar); #ifdef __WXCOCOA__ m_wndToolbar->FindById(ID_BUTTONMESSAGES)->SetNormalBitmap(m_tblist.GetBitmap(m_CurrentBlinkBitmap)); #else m_wndToolbar->SetToolNormalBitmap(ID_BUTTONMESSAGES, m_tblist.GetBitmap(m_CurrentBlinkBitmap)); #endif } void CamuleDlg::LaunchUrl( const wxString& url ) { wxString cmd; cmd = thePrefs::GetBrowser(); wxString tmp = url; // Pipes cause problems, so escape them tmp.Replace( wxT("|"), wxT("%7C") ); if ( !cmd.IsEmpty() ) { if (!cmd.Replace(wxT("%s"), tmp)) { // No %s found, just append the url cmd += wxT(" ") + tmp; } CTerminationProcess *p = new CTerminationProcess(cmd); if (wxExecute(cmd, wxEXEC_ASYNC, p)) { AddLogLineN(_("Launch Command: ") + cmd); return; } else { delete p; } } else { wxLaunchDefaultBrowser(tmp); return; } // Unable to execute browser. But this error message doesn't make sense, // cosidering that you _can't_ set the browser executable path... =/ wxLogError(wxT("Unable to launch browser. Please set correct browser executable path in Preferences.")); } wxString CamuleDlg::GenWebSearchUrl(const wxString &filename, WebSearch wsProvider ) { wxString URL; switch (wsProvider) { case WS_FILEHASH: URL = wxT("http://www.filehash.com/search.html?pattern=FILENAME&submit=Find"); break; default: wxFAIL; } URL.Replace(wxT("FILENAME"), filename); return URL; } bool CamuleDlg::Check_and_Init_Skin() { bool ret = true; wxString skinFileName(thePrefs::GetSkin()); if (skinFileName.IsEmpty() || skinFileName.IsSameAs(_("- default -"))) { return false; } wxString userDir(JoinPaths(GetConfigDir(), wxT("skins")) + wxFileName::GetPathSeparator()); wxStandardPathsBase &spb(wxStandardPaths::Get()); #ifdef __WINDOWS__ wxString dataDir(spb.GetPluginsDir()); #elif defined(__WXMAC__) wxString dataDir(spb.GetDataDir()); #else wxString dataDir(spb.GetDataDir().BeforeLast(wxT('/')) + wxT("/amule")); #endif wxString systemDir(JoinPaths(dataDir,wxT("skins")) + wxFileName::GetPathSeparator()); skinFileName.Replace(wxT("User:"), userDir ); skinFileName.Replace(wxT("System:"), systemDir ); m_skinFileName.Assign(skinFileName); if (!m_skinFileName.FileExists()) { AddLogLineC(CFormat( _("Skin directory '%s' does not exist")) % skinFileName ); ret = false; } else if (!m_skinFileName.IsFileReadable()) { AddLogLineC(CFormat( _("WARNING: Unable to open skin file '%s' for read")) % skinFileName); ret = false; } wxFFileInputStream in(m_skinFileName.GetFullPath()); wxZipInputStream zip(in); wxZipEntry *entry; while ((entry = zip.GetNextEntry()) != NULL) { wxZipEntry*& current = cat[entry->GetInternalName()]; delete current; current = entry; } return ret; } void CamuleDlg::Add_Skin_Icon( const wxString &iconName, const wxBitmap &stdIcon, bool useSkins) { wxImage new_image; if (useSkins) { wxFFileInputStream in(m_skinFileName.GetFullPath()); wxZipInputStream zip(in); ZipCatalog::iterator it = cat.find(wxZipEntry::GetInternalName(iconName + wxT(".png"))); if ( it != cat.end() ) { zip.OpenEntry(*it->second); if ( !new_image.LoadFile(zip,wxBITMAP_TYPE_PNG) ) { AddLogLineN(wxT("Warning: Error loading icon for ") + iconName); useSkins = false; } }else { AddLogLineN(wxT("Warning: Can't load icon for ") + iconName); useSkins = false; } } wxBitmap bmp(useSkins ? new_image : stdIcon); if (iconName.StartsWith(wxT("Client_"))) { m_imagelist.Add(bmp); } else if (iconName.StartsWith(wxT("Toolbar_"))) { m_tblist.Add(bmp); } } void CamuleDlg::Apply_Clients_Skin() { bool useSkins = Check_and_Init_Skin(); // Clear the client image list m_imagelist.RemoveAll(); // Add the images to the image list for (int i = 0; i < CLIENT_SKIN_SIZE; ++i) { Add_Skin_Icon(wxT("Client_") + m_clientSkinNames[i], clientImages(i), useSkins); } } void CamuleDlg::Apply_Toolbar_Skin(wxToolBar *wndToolbar) { bool useSkins = Check_and_Init_Skin(); // Clear the toolbar image list m_tblist.RemoveAll(); // Add the images to the image list Add_Skin_Icon(wxT("Toolbar_Connect"), connButImg(0), useSkins); Add_Skin_Icon(wxT("Toolbar_Disconnect"), connButImg(1), useSkins); Add_Skin_Icon(wxT("Toolbar_Connecting"), connButImg(2), useSkins); Add_Skin_Icon(wxT("Toolbar_Network"), amuleDlgImages(20), useSkins); Add_Skin_Icon(wxT("Toolbar_Transfers"), amuleDlgImages(21), useSkins); Add_Skin_Icon(wxT("Toolbar_Search"), amuleDlgImages(22), useSkins); Add_Skin_Icon(wxT("Toolbar_Shared"), amuleDlgImages(23), useSkins); Add_Skin_Icon(wxT("Toolbar_Messages"), amuleDlgImages(24), useSkins); Add_Skin_Icon(wxT("Toolbar_Stats"), amuleDlgImages(25), useSkins); Add_Skin_Icon(wxT("Toolbar_Prefs"), amuleDlgImages(26), useSkins); Add_Skin_Icon(wxT("Toolbar_Import"), amuleDlgImages(32), useSkins); Add_Skin_Icon(wxT("Toolbar_About"), amuleDlgImages(29), useSkins); Add_Skin_Icon(wxT("Toolbar_Blink"), amuleDlgImages(33), useSkins); // Build aMule toolbar wndToolbar->SetMargins(0, 0); // Placeholder. Gets updated by ShowConnectionState wndToolbar->AddTool(ID_BUTTONCONNECT, wxT("..."), m_tblist.GetBitmap(0)); wndToolbar->AddSeparator(); wndToolbar->AddTool(ID_BUTTONNETWORKS, _("Networks"), m_tblist.GetBitmap(3), wxNullBitmap, wxITEM_CHECK, _("Networks Window")); wndToolbar->AddTool(ID_BUTTONSEARCH, _("Searches"), m_tblist.GetBitmap(5), wxNullBitmap, wxITEM_CHECK, _("Searches Window")); wndToolbar->AddTool(ID_BUTTONDOWNLOADS, _("Downloads"), m_tblist.GetBitmap(4), wxNullBitmap, wxITEM_CHECK, _("Downloads Window")); wndToolbar->AddTool(ID_BUTTONSHARED, _("Shared files"), m_tblist.GetBitmap(6), wxNullBitmap, wxITEM_CHECK, _("Shared Files Window")); wndToolbar->AddTool(ID_BUTTONMESSAGES, _("Messages"), m_tblist.GetBitmap(7), wxNullBitmap, wxITEM_CHECK, _("Messages Window")); wndToolbar->AddTool(ID_BUTTONSTATISTICS, _("Statistics"), m_tblist.GetBitmap(8), wxNullBitmap, wxITEM_CHECK, _("Statistics Graph Window")); wndToolbar->AddSeparator(); wndToolbar->AddTool(ID_BUTTONNEWPREFERENCES, _("Preferences"), m_tblist.GetBitmap(9), wxNullBitmap, wxITEM_NORMAL, _("Preferences Settings Window")); #ifndef CLIENT_GUI wndToolbar->AddTool(ID_BUTTONIMPORT, _("Import"), m_tblist.GetBitmap(10), wxNullBitmap, wxITEM_NORMAL, _("The partfile importer tool")); #endif wndToolbar->AddTool(ID_ABOUT, _("About"), m_tblist.GetBitmap(11), wxNullBitmap, wxITEM_NORMAL, _("About/Help")); wndToolbar->ToggleTool(ID_BUTTONDOWNLOADS, true); // Needed for non-GTK platforms, where the // items don't get added immediatly. wndToolbar->Realize(); // Updates the "Connect" button, and so on. ShowConnectionState(true); } void CamuleDlg::Create_Toolbar(bool orientation) { Freeze(); // Create ToolBar from the one designed by wxDesigner (BigBob) wxToolBar *current = GetToolBar(); wxASSERT(current == m_wndToolbar); if (current) { bool oldorientation = ((current->GetWindowStyle() & wxTB_VERTICAL) == wxTB_VERTICAL); if (oldorientation != orientation) { current->Destroy(); SetToolBar(NULL); // Remove old one if present m_wndToolbar = NULL; } else { current->ClearTools(); } } if (!m_wndToolbar) { m_wndToolbar = CreateToolBar( (orientation ? wxTB_VERTICAL : wxTB_HORIZONTAL) | wxNO_BORDER | wxTB_TEXT | wxTB_3DBUTTONS | wxTB_FLAT | wxCLIP_CHILDREN | wxTB_NODIVIDER); m_wndToolbar->SetToolBitmapSize(wxSize(32, 32)); } Apply_Toolbar_Skin(m_wndToolbar); Thaw(); } void CamuleDlg::OnMainGUISizeChange(wxSizeEvent& evt) { wxFrame::OnSize(evt); if (m_transferwnd && m_transferwnd->clientlistctrl) { // Transfer window's splitter set again if it's hidden. if (!m_transferwnd->clientlistctrl->GetShowing()) { int height = m_transferwnd->clientlistctrl->GetSize().GetHeight(); wxSplitterWindow* splitter = CastChild(wxT("splitterWnd"), wxSplitterWindow); height += splitter->GetWindow1()->GetSize().GetHeight(); splitter->SetSashPosition( height ); } } } void CamuleDlg::OnKeyPressed(wxKeyEvent& event) { if (event.GetKeyCode() == WXK_F1) { // Ctrl/Alt/Shift must not be pressed, to avoid // conflicts with other (global) shortcuts. if (!event.HasModifiers() && !event.ShiftDown()) { LaunchUrl(wxT("http://wiki.amule.org")); return; } } event.Skip(); } void CamuleDlg::OnExit(wxCommandEvent& WXUNUSED(evt)) { Close(true); } void CamuleDlg::DoNetworkRearrange() { #if !defined(__WXOSX_COCOA__) // in Mac OS with wxWidgets >= 3.0 and COCOA the following seems to cause problems // (window is not refreshed after changes in network settings) wxWindowUpdateLocker freezer(this); #endif wxToolBarToolBase* toolbarTool = m_wndToolbar->RemoveTool(ID_BUTTONNETWORKS); // set the log windows wxNotebook* logs_notebook = CastChild( ID_SRVLOG_NOTEBOOK, wxNotebook); while (logs_notebook->GetPageCount() > 1) { logs_notebook->RemovePage(logs_notebook->GetPageCount() - 1); } if (thePrefs::GetNetworkED2K()) { #ifndef CLIENT_GUI logs_notebook->AddPage(m_logpages[1].page, m_logpages[1].name); #endif logs_notebook->AddPage(m_logpages[2].page, m_logpages[2].name); } if (thePrefs::GetNetworkKademlia()) { logs_notebook->AddPage(m_logpages[3].page, m_logpages[3].name); } // Set the main window. // If we have both networks active, activate a notebook to select between them. // If only one is active, show the window directly without a surrounding one tab notebook. // States: // 1: ED2K only // 2: Kad only // 3: both (in Notebook) static uint8 currentState = 3; // on startup we have both enabled uint8 newState; if (thePrefs::GetNetworkED2K() && thePrefs::GetNetworkKademlia()) { newState = 3; toolbarTool->SetLabel(_("Networks")); } else if (thePrefs::GetNetworkED2K()) { newState = 1; toolbarTool->SetLabel(_("eD2k network")); } else { // Kad only or no network newState = 2; // no network makes no sense anyway, so just show Kad there toolbarTool->SetLabel(thePrefs::GetNetworkKademlia() ? _("Kad network") : _("No network")); } if (newState != currentState) { wxNotebook* networks_notebook = CastChild(ID_NETNOTEBOOK, wxNotebook); // First hide all windows networks_notebook->Show(false); m_networkpages[0].page->Show(false); m_networkpages[1].page->Show(false); m_networknotebooksizer->Clear(); wxWindow* replacement = NULL; // Move both pages into the notebook if they aren't already there. if (currentState == 1) { // ED2K m_networkpages[0].page->Reparent(networks_notebook); networks_notebook->InsertPage(0, m_networkpages[0].page, m_networkpages[0].name); } else if (currentState == 2) { // Kad m_networkpages[1].page->Reparent(networks_notebook); networks_notebook->AddPage(m_networkpages[1].page, m_networkpages[1].name); } // Now both pages are in the notebook. If we want to show one of them outside, move it back out again. // Windows that are part of a notebook can't be reparented. if (newState == 3) { // Since we messed with the notebook, we now have to show both pages, one after the other. // Otherwise GTK gets confused and shows the first tab only. // (So much for "platform independent".) networks_notebook->SetSelection(1); m_networkpages[1].page->Show(); networks_notebook->SetSelection(0); m_networkpages[0].page->Show(); replacement = networks_notebook; } else if (newState == 1) { replacement = m_networkpages[0].page; networks_notebook->RemovePage(0); } else { replacement = m_networkpages[1].page; networks_notebook->RemovePage(1); } replacement->Reparent(m_networknotebooksizer->GetContainingWindow()); replacement->Show(); m_networknotebooksizer->Add(replacement, 1, wxGROW | wxALIGN_CENTER_VERTICAL | wxTOP, 5); m_networknotebooksizer->Layout(); currentState = newState; } // Tool bar m_wndToolbar->InsertTool(2, toolbarTool); m_wndToolbar->EnableTool(ID_BUTTONNETWORKS, (thePrefs::GetNetworkED2K() || thePrefs::GetNetworkKademlia())); m_wndToolbar->EnableTool(ID_BUTTONCONNECT, (thePrefs::GetNetworkED2K() || thePrefs::GetNetworkKademlia()) && theApp->ipfilter->IsReady()); m_wndToolbar->Realize(); ShowConnectionState(); // status in the bottom right m_searchwnd->FixSearchTypes(); } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/amuleDlg.h0000644000175000017500000001457112611472361020205 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef AMULEDLG_H #define AMULEDLG_H #include #include #include // Needed for wxFrame #include #include #include #include #include "Types.h" // Needed for uint32 #include "StatisticsDlg.h" class wxTimerEvent; class wxTextCtrl; class CIP2Country; class CTransferWnd; class CServerWnd; class CSharedFilesWnd; class CSearchDlg; class CChatWnd; class CKadDlg; class PrefsUnifiedDlg; class CMuleTrayIcon; struct PageType { wxWindow* page; wxString name; }; #define MP_RESTORE 4001 #define MP_CONNECT 4002 #define MP_DISCONNECT 4003 #define MP_EXIT 4004 #define DEFAULT_SIZE_X 800 #define DEFAULT_SIZE_Y 600 enum ClientSkinEnum { Client_Green_Smiley = 0, Client_Red_Smiley, Client_Yellow_Smiley, Client_Grey_Smiley, Client_White_Smiley, Client_ExtendedProtocol_Smiley, Client_SecIdent_Smiley, Client_BadGuy_Smiley, Client_CreditsGrey_Smiley, Client_CreditsYellow_Smiley, Client_Upload_Smiley, Client_Friend_Smiley, Client_eMule_Smiley, Client_mlDonkey_Smiley, Client_eDonkeyHybrid_Smiley, Client_aMule_Smiley, Client_lphant_Smiley, Client_Shareaza_Smiley, Client_xMule_Smiley, Client_Unknown, Client_InvalidRating_Smiley, Client_PoorRating_Smiley, Client_FairRating_Smiley, Client_GoodRating_Smiley, Client_ExcellentRating_Smiley, Client_CommentOnly_Smiley, Client_Encryption_Smiley, // Add items here. CLIENT_SKIN_SIZE }; // CamuleDlg Dialogfeld class CamuleDlg : public wxFrame { public: CamuleDlg( wxWindow *pParent = NULL, const wxString &title = wxEmptyString, wxPoint where = wxDefaultPosition, wxSize dlg_size = wxSize(DEFAULT_SIZE_X,DEFAULT_SIZE_Y)); ~CamuleDlg(); void AddLogLine(const wxString& line); void AddServerMessageLine(wxString& message); void ResetLog(int id); void ShowUserCount(const wxString& info = wxEmptyString); void ShowConnectionState(bool skinChanged = false); void ShowTransferRate(); bool StatisticsWindowActive() { return (m_activewnd == static_cast(m_statisticswnd)); } /* Returns the active dialog. Needed to check what to redraw. */ enum DialogType { DT_TRANSFER_WND, DT_NETWORKS_WND, DT_SEARCH_WND, DT_SHARED_WND, DT_CHAT_WND, DT_STATS_WND, DT_KAD_WND // this one is still unused }; DialogType GetActiveDialog() { return m_nActiveDialog; } void SetActiveDialog(DialogType type, wxWindow* dlg); /** * Helper function for deciding if a certian dlg is visible. * * @return True if the dialog is visible to the user, false otherwise. */ bool IsDialogVisible( DialogType dlg ) { return m_nActiveDialog == dlg && m_is_safe_state /* && !IsIconized() */; } void ShowED2KLinksHandler( bool show ); void DlgShutDown(); void OnClose(wxCloseEvent& evt); void OnBnConnect(wxCommandEvent& evt); void DoIconize(bool iconize); bool SafeState() { return m_is_safe_state; } void LaunchUrl(const wxString &url); //! These are the currently known web-search providers enum WebSearch { WS_FILEHASH }; // websearch function wxString GenWebSearchUrl( const wxString &filename, WebSearch provider ); void CreateSystray(); void RemoveSystray(); void StartGuiTimer() { gui_timer->Start(100); } void StopGuiTimer() { gui_timer->Stop(); } /** * This function ensures that _all_ list widgets are properly sorted. */ void InitSort(); void SetMessageBlink(bool state) { m_BlinkMessages = state; } void Create_Toolbar(bool orientation); void DoNetworkRearrange(); CIP2Country* m_IP2Country; void IP2CountryDownloadFinished(uint32 result); void EnableIP2Country(); wxWindow* m_activewnd; CTransferWnd* m_transferwnd; CServerWnd* m_serverwnd; CSharedFilesWnd* m_sharedfileswnd; CSearchDlg* m_searchwnd; CChatWnd* m_chatwnd; CStatisticsDlg* m_statisticswnd; CKadDlg* m_kademliawnd; //! Pointer to the current preference dialog, if any. PrefsUnifiedDlg* m_prefsDialog; int m_srv_split_pos; wxImageList m_imagelist; wxImageList m_tblist; protected: void OnToolBarButton(wxCommandEvent& ev); void OnAboutButton(wxCommandEvent& ev); void OnPrefButton(wxCommandEvent& ev); void OnImportButton(wxCommandEvent& ev); void OnMinimize(wxIconizeEvent& evt); void OnBnClickedFast(wxCommandEvent& evt); void OnGUITimer(wxTimerEvent& evt); void OnMainGUISizeChange(wxSizeEvent& evt); void OnExit(wxCommandEvent& evt); private: //! Specifies if the prefs-dialog was shown before minimizing. bool m_prefsVisible; wxToolBar *m_wndToolbar; wxTimer *gui_timer; CMuleTrayIcon *m_wndTaskbarNotifier; DialogType m_nActiveDialog; bool m_is_safe_state; bool m_BlinkMessages; int m_CurrentBlinkBitmap; uint32 m_last_iconizing; wxFileName m_skinFileName; std::vector m_clientSkinNames; bool m_GeoIPavailable; WX_DECLARE_STRING_HASH_MAP(wxZipEntry*, ZipCatalog); ZipCatalog cat; PageType m_logpages[4]; PageType m_networkpages[2]; bool LoadGUIPrefs(bool override_pos, bool override_size); bool SaveGUIPrefs(); void UpdateTrayIcon(int percent); void Apply_Clients_Skin(); void Apply_Toolbar_Skin(wxToolBar *wndToolbar); bool Check_and_Init_Skin(); void Add_Skin_Icon(const wxString &iconName, const wxBitmap &stdIcon, bool useSkins); void ToogleED2KLinksHandler(); void SetMessagesTool(); void OnKeyPressed(wxKeyEvent& evt); DECLARE_EVENT_TABLE() }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/amuleIPV4Address.h0000644000175000017500000000461112611472361021521 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Carlo Wood ( carlo@alinoe.com ) // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef AMULEIPV4ADDRESS_H #define AMULEIPV4ADDRESS_H #include "NetworkFunctions.h" // Needed for Uint32toStringIP class amuleIPV4Address { public: amuleIPV4Address(); amuleIPV4Address(const amuleIPV4Address &a); amuleIPV4Address(const class CamuleIPV4Endpoint &ep); virtual ~amuleIPV4Address(); amuleIPV4Address& operator=(const amuleIPV4Address &a); amuleIPV4Address& operator=(const class CamuleIPV4Endpoint &a); virtual bool Hostname(const wxString& name); virtual bool Hostname(uint32 ip) { // Some people are sometimes fools. if (!ip) { return false; } return Hostname(Uint32toStringIP(ip)); } // Set the port to that corresponding to the specified service. // Returns true on success, false if something goes wrong (invalid service). virtual bool Service(uint16 service); // Returns the current service. virtual uint16 Service() const; // Determines if current address is set to localhost. virtual bool IsLocalHost() const; // Returns a wxString containing the IP address. virtual wxString IPAddress() const; // Set address to any of the addresses of the current machine. virtual bool AnyAddress(); const class CamuleIPV4Endpoint & GetEndpoint() const; class CamuleIPV4Endpoint & GetEndpoint(); private: class CamuleIPV4Endpoint * m_endpoint; }; #endif // AMULEIPV4ADDRESS_H // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/amuled.cpp0000644000175000017500000004402012611472361020245 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #include "amule.h" // Interface declarations. #include #ifdef HAVE_CONFIG_H #include "config.h" // Needed for HAVE_SYS_RESOURCE_H, etc #endif // Include the necessary headers for select(2), properly guarded #if defined HAVE_SYS_SELECT_H && !defined __IRIX__ # include #else # ifdef HAVE_SYS_TIME_H # include # endif # ifdef HAVE_SYS_TYPES_H # include # endif # ifdef HAVE_UNISTD_H # include # endif #endif #include #include "Preferences.h" // Needed for CPreferences #include "PartFile.h" // Needed for CPartFile #include "Logger.h" #include #include "InternalEvents.h" // Needed for wxEVT_* #include "ThreadTasks.h" #include "GuiEvents.h" // Needed for EVT_MULE_NOTIFY #include "Timer.h" // Needed for EVT_MULE_TIMER #include "ClientUDPSocket.h" // Do_not_auto_remove (forward declaration not enough) #include "ListenSocket.h" // Do_not_auto_remove (forward declaration not enough) #ifdef HAVE_SYS_RESOURCE_H #include // Do_not_auto_remove #endif #ifndef __WINDOWS__ #ifdef HAVE_SYS_WAIT_H #include // Do_not_auto_remove #endif #include #endif #ifdef AMULED_APPTRAITS #include #endif BEGIN_EVENT_TABLE(CamuleDaemonApp, wxAppConsole) // // Socket handlers // // Listen Socket EVT_SOCKET(ID_LISTENSOCKET_EVENT, CamuleDaemonApp::ListenSocketHandler) // UDP Socket (servers) EVT_SOCKET(ID_SERVERUDPSOCKET_EVENT, CamuleDaemonApp::UDPSocketHandler) // UDP Socket (clients) EVT_SOCKET(ID_CLIENTUDPSOCKET_EVENT, CamuleDaemonApp::UDPSocketHandler) // Socket timer (TCP) EVT_MULE_TIMER(ID_SERVER_RETRY_TIMER_EVENT, CamuleDaemonApp::OnTCPTimer) // Core timer EVT_MULE_TIMER(ID_CORE_TIMER_EVENT, CamuleDaemonApp::OnCoreTimer) EVT_MULE_NOTIFY(CamuleDaemonApp::OnNotifyEvent) // Async dns handling EVT_MULE_INTERNAL(wxEVT_CORE_UDP_DNS_DONE, -1, CamuleDaemonApp::OnUDPDnsDone) EVT_MULE_INTERNAL(wxEVT_CORE_SOURCE_DNS_DONE, -1, CamuleDaemonApp::OnSourceDnsDone) EVT_MULE_INTERNAL(wxEVT_CORE_SERVER_DNS_DONE, -1, CamuleDaemonApp::OnServerDnsDone) // Hash ended notifier EVT_MULE_HASHING(CamuleDaemonApp::OnFinishedHashing) EVT_MULE_AICH_HASHING(CamuleDaemonApp::OnFinishedAICHHashing) // File completion ended notifier EVT_MULE_FILE_COMPLETED(CamuleDaemonApp::OnFinishedCompletion) // HTTPDownload finished EVT_MULE_INTERNAL(wxEVT_CORE_FINISHED_HTTP_DOWNLOAD, -1, CamuleDaemonApp::OnFinishedHTTPDownload) // Disk space preallocation finished EVT_MULE_ALLOC_FINISHED(CamuleDaemonApp::OnFinishedAllocation) END_EVENT_TABLE() IMPLEMENT_APP(CamuleDaemonApp) #ifdef AMULED28_SOCKETS /* * Socket handling in wxBase * */ class CSocketSet { int m_count; int m_fds[FD_SETSIZE], m_fd_idx[FD_SETSIZE]; GSocket *m_gsocks[FD_SETSIZE]; fd_set m_set; public: CSocketSet(); void AddSocket(GSocket *); void RemoveSocket(GSocket *); void FillSet(int &max_fd); void Detected(void (GSocket::*func)()); fd_set *Set() { return &m_set; } }; CSocketSet::CSocketSet() { m_count = 0; for(int i = 0; i < FD_SETSIZE; i++) { m_fds[i] = 0; m_fd_idx[i] = 0xffff; m_gsocks[i] = 0; } } void CSocketSet::AddSocket(GSocket *socket) { wxASSERT(socket); int fd = socket->m_fd; if ( fd == -1 ) { return; } wxASSERT( (fd > 2) && (fd < FD_SETSIZE) ); if ( m_gsocks[fd] ) { return; } m_fds[m_count] = fd; m_fd_idx[fd] = m_count; m_gsocks[fd] = socket; m_count++; } void CSocketSet::RemoveSocket(GSocket *socket) { wxASSERT(socket); int fd = socket->m_fd; if ( fd == -1 ) { return; } wxASSERT( (fd > 2) && (fd < FD_SETSIZE) ); int i = m_fd_idx[fd]; if ( i == 0xffff ) { return; } wxASSERT(m_fds[i] == fd); m_fds[i] = m_fds[m_count-1]; m_gsocks[fd] = 0; m_fds[m_count-1] = 0; m_fd_idx[fd] = 0xffff; m_fd_idx[m_fds[i]] = i; m_count--; } void CSocketSet::FillSet(int &max_fd) { FD_ZERO(&m_set); for(int i = 0; i < m_count; i++) { FD_SET(m_fds[i], &m_set); if ( m_fds[i] > max_fd ) { max_fd = m_fds[i]; } } } void CSocketSet::Detected(void (GSocket::*func)()) { for (int i = 0; i < m_count; i++) { int fd = m_fds[i]; if ( FD_ISSET(fd, &m_set) ) { GSocket *socket = m_gsocks[fd]; (*socket.*func)(); } } } CAmuledGSocketFuncTable::CAmuledGSocketFuncTable() : m_lock(wxMUTEX_RECURSIVE) { m_in_set = new CSocketSet; m_out_set = new CSocketSet; m_lock.Unlock(); } void CAmuledGSocketFuncTable::AddSocket(GSocket *socket, GSocketEvent event) { wxMutexLocker lock(m_lock); if ( event == GSOCK_INPUT ) { m_in_set->AddSocket(socket); } else { m_out_set->AddSocket(socket); } } void CAmuledGSocketFuncTable::RemoveSocket(GSocket *socket, GSocketEvent event) { wxMutexLocker lock(m_lock); if ( event == GSOCK_INPUT ) { m_in_set->RemoveSocket(socket); } else { m_out_set->RemoveSocket(socket); } } void CAmuledGSocketFuncTable::RunSelect() { wxMutexLocker lock(m_lock); int max_fd = -1; m_in_set->FillSet(max_fd); m_out_set->FillSet(max_fd); struct timeval tv; tv.tv_sec = 0; tv.tv_usec = 10000; // 10ms int result = select(max_fd + 1, m_in_set->Set(), m_out_set->Set(), 0, &tv); if ( result > 0 ) { m_in_set->Detected(&GSocket::Detected_Read); m_out_set->Detected(&GSocket::Detected_Write); } } GSocketGUIFunctionsTable *CDaemonAppTraits::GetSocketGUIFunctionsTable() { return m_table; } bool CAmuledGSocketFuncTable::OnInit() { return true; } void CAmuledGSocketFuncTable::OnExit() { } bool CAmuledGSocketFuncTable::CanUseEventLoop() { /* * FIXME: (lfroen) Not sure whether it's right. * I will review it later. */ return false; } bool CAmuledGSocketFuncTable::Init_Socket(GSocket *) { return true; } void CAmuledGSocketFuncTable::Destroy_Socket(GSocket *) { } void CAmuledGSocketFuncTable::Install_Callback(GSocket *sock, GSocketEvent e) { AddSocket(sock, e); } void CAmuledGSocketFuncTable::Uninstall_Callback(GSocket *sock, GSocketEvent e) { RemoveSocket(sock, e); } void CAmuledGSocketFuncTable::Enable_Events(GSocket *socket) { Install_Callback(socket, GSOCK_INPUT); Install_Callback(socket, GSOCK_OUTPUT); } void CAmuledGSocketFuncTable::Disable_Events(GSocket *socket) { Uninstall_Callback(socket, GSOCK_INPUT); Uninstall_Callback(socket, GSOCK_OUTPUT); } CDaemonAppTraits::CDaemonAppTraits(CAmuledGSocketFuncTable *table) : wxConsoleAppTraits(), m_oldSignalChildAction(), m_newSignalChildAction(), m_table(table), m_lock(wxMUTEX_RECURSIVE), m_sched_delete() { m_lock.Unlock(); } void CDaemonAppTraits::ScheduleForDestroy(wxObject *object) { wxMutexLocker lock(m_lock); //delete object; m_sched_delete.push_back(object); } void CDaemonAppTraits::RemoveFromPendingDelete(wxObject *object) { wxMutexLocker lock(m_lock); for(std::list::iterator i = m_sched_delete.begin(); i != m_sched_delete.end(); i++) { if ( *i == object ) { m_sched_delete.erase(i); return; } } } void CDaemonAppTraits::DeletePending() { wxMutexLocker lock(m_lock); while ( !m_sched_delete.empty() ) { std::list::iterator i = m_sched_delete.begin(); wxObject *object = *i; delete object; } //m_sched_delete.erase(m_sched_delete.begin(), m_sched_delete.end()); } wxAppTraits *CamuleDaemonApp::CreateTraits() { return new CDaemonAppTraits(m_table); } #else // AMULED28_SOCKETS #ifdef AMULED_APPTRAITS CDaemonAppTraits::CDaemonAppTraits() : wxConsoleAppTraits(), m_oldSignalChildAction(), m_newSignalChildAction() { } wxAppTraits *CamuleDaemonApp::CreateTraits() { return new CDaemonAppTraits(); } #endif // AMULED_APPTRAITS #endif // !AMULED28_SOCKETS #if defined(__WXMAC__) && !wxCHECK_VERSION(2, 9, 0) #include // Do_not_auto_remove (guess) static wxStandardPathsCF gs_stdPaths; wxStandardPathsBase& CDaemonAppTraits::GetStandardPaths() { return gs_stdPaths; } #endif #ifdef AMULED28_EVENTLOOP CamuleDaemonApp::CamuleDaemonApp() : m_Exit(false) #ifdef AMULED28_SOCKETS ,m_table(new CAmuledGSocketFuncTable()) #endif { // work around problem from http://trac.wxwidgets.org/ticket/2145 wxPendingEventsLocker = new wxCriticalSection; } #endif // AMULED28_EVENTLOOP #ifdef AMULED_APPTRAITS static EndProcessDataMap endProcDataMap; int CDaemonAppTraits::WaitForChild(wxExecuteData &execData) { int status = 0; pid_t result = 0; // Build the log message wxString msg; msg << wxT("WaitForChild() has been called for child process with pid `") << execData.pid << wxT("'. "); if (execData.flags & wxEXEC_SYNC) { result = AmuleWaitPid(execData.pid, &status, 0, &msg); if (result == -1 || (!WIFEXITED(status) && !WIFSIGNALED(status))) { msg << wxT(" Waiting for subprocess termination failed."); AddDebugLogLineN(logGeneral, msg); } } else { /** wxEXEC_ASYNC */ // Give the process a chance to start or forked child to exit // 1 second is enough time to fail on "path not found" wxSleep(1); result = AmuleWaitPid(execData.pid, &status, WNOHANG, &msg); if (result == 0) { // Add a WxEndProcessData entry to the map, so that we can // support process termination wxEndProcessData *endProcData = new wxEndProcessData(); endProcData->pid = execData.pid; endProcData->process = execData.process; endProcData->tag = 0; endProcDataMap[execData.pid] = endProcData; status = execData.pid; } else { // if result != 0, then either waitpid() failed (result == -1) // and there is nothing we can do, or the child has changed // status, which means it is probably dead. status = 0; } } // Log our passage here AddDebugLogLineN(logGeneral, msg); return status; } void OnSignalChildHandler(int /*signal*/, siginfo_t *siginfo, void * /*ucontext*/) { // Build the log message wxString msg; msg << wxT("OnSignalChildHandler() has been called for child process with pid `") << siginfo->si_pid << wxT("'. "); // Make sure we leave no zombies by calling waitpid() int status = 0; pid_t result = AmuleWaitPid(siginfo->si_pid, &status, WNOHANG, &msg); if (result != 1 && result != 0 && (WIFEXITED(status) || WIFSIGNALED(status))) { // Fetch the wxEndProcessData structure corresponding to this pid EndProcessDataMap::iterator it = endProcDataMap.find(siginfo->si_pid); if (it != endProcDataMap.end()) { wxEndProcessData *endProcData = it->second; // Remove this entry from the process map endProcDataMap.erase(siginfo->si_pid); // Save the exit code for the wxProcess object to read later endProcData->exitcode = result != -1 && WIFEXITED(status) ? WEXITSTATUS(status) : -1; // Make things work as in wxGUI wxHandleProcessTermination(endProcData); // wxHandleProcessTermination() will "delete endProcData;" // So we do not delete it again, ok? Do not uncomment this line. //delete endProcData; } else { msg << wxT(" Error: the child process pid is not on the pid map."); } } // Log our passage here AddDebugLogLineN(logGeneral, msg); } pid_t AmuleWaitPid(pid_t pid, int *status, int options, wxString *msg) { *status = 0; pid_t result = waitpid(pid, status, options); if (result == -1) { *msg << CFormat(wxT("Error: waitpid() call failed: %m.")); } else if (result == 0) { if (options & WNOHANG) { *msg << wxT("The child is alive."); } else { *msg << wxT("Error: waitpid() call returned 0 but " "WNOHANG was not specified in options."); } } else { if (WIFEXITED(*status)) { *msg << wxT("Child has terminated with status code `") << WEXITSTATUS(*status) << wxT("'."); } else if (WIFSIGNALED(*status)) { *msg << wxT("Child was killed by signal `") << WTERMSIG(*status) << wxT("'."); if (WCOREDUMP(*status)) { *msg << wxT(" A core file has been dumped."); } } else if (WIFSTOPPED(*status)) { *msg << wxT("Child has been stopped by signal `") << WSTOPSIG(*status) << wxT("'."); #ifdef WIFCONTINUED /* Only found in recent kernels. */ } else if (WIFCONTINUED(*status)) { *msg << wxT("Child has received `SIGCONT' and has continued execution."); #endif } else { *msg << wxT("The program was not able to determine why the child has signaled."); } } return result; } #endif // AMULED_APPTRAITS #ifdef __WINDOWS__ // // CTRL-C-Handler // see http://msdn.microsoft.com/en-us/library/windows/desktop/ms685049%28v=vs.85%29.aspx // static BOOL CtrlHandler(DWORD fdwCtrlType) { switch (fdwCtrlType) { case CTRL_C_EVENT: case CTRL_CLOSE_EVENT: case CTRL_BREAK_EVENT: // handle these AddLogLineNS(wxT("Received break event, exit main loop")); theApp->ExitMainLoop(); return TRUE; break; case CTRL_LOGOFF_EVENT: case CTRL_SHUTDOWN_EVENT: default: // don't handle these return FALSE; break; } } #endif // __WINDOWS__ int CamuleDaemonApp::OnRun() { if (!thePrefs::AcceptExternalConnections()) { AddLogLineCS(_("ERROR: aMule daemon cannot be used when external connections are disabled. To enable External Connections, use either a normal aMule, start amuled with the option --ec-config or set the key \"AcceptExternalConnections\" to 1 in the file ~/.aMule/amule.conf")); return 0; } else if (thePrefs::ECPassword().IsEmpty()) { AddLogLineCS(_("ERROR: A valid password is required to use external connections, and aMule daemon cannot be used without external connections. To run aMule deamon, you must set the \"ECPassword\" field in the file ~/.aMule/amule.conf with an appropriate value. Execute amuled with the flag --ec-config to set the password. More information can be found at http://wiki.amule.org")); return 0; } #ifdef __WINDOWS__ SetConsoleCtrlHandler((PHANDLER_ROUTINE) CtrlHandler, TRUE); #endif // __WINDOWS__ #ifdef AMULED_APPTRAITS // Process the return code of dead children so that we do not create // zombies. wxBase does not implement wxProcess callbacks, so no one // actualy calls wxHandleProcessTermination() in console applications. // We do our best here. DEBUG_ONLY( int ret = 0; ) DEBUG_ONLY( ret = ) sigaction(SIGCHLD, NULL, &m_oldSignalChildAction); m_newSignalChildAction = m_oldSignalChildAction; m_newSignalChildAction.sa_sigaction = OnSignalChildHandler; m_newSignalChildAction.sa_flags |= SA_SIGINFO; m_newSignalChildAction.sa_flags &= ~SA_RESETHAND; DEBUG_ONLY( ret = ) sigaction(SIGCHLD, &m_newSignalChildAction, NULL); #ifdef __DEBUG__ if (ret == -1) { AddDebugLogLineC(logStandard, CFormat(wxT("CamuleDaemonApp::OnRun(): Installation of SIGCHLD callback with sigaction() failed: %m."))); } else { AddDebugLogLineN(logGeneral, wxT("CamuleDaemonApp::OnRun(): Installation of SIGCHLD callback with sigaction() succeeded.")); } #endif #endif // AMULED_APPTRAITS #ifdef AMULED28_EVENTLOOP while ( !m_Exit ) { #ifdef AMULED28_SOCKETS m_table->RunSelect(); ProcessPendingEvents(); ((CDaemonAppTraits *)GetTraits())->DeletePending(); #else wxMilliSleep(10); ProcessPendingEvents(); #endif } // ShutDown is beeing called twice. Once here and again in OnExit(). ShutDown(); return 0; #else return wxApp::OnRun(); #endif } bool CamuleDaemonApp::OnInit() { if ( !CamuleApp::OnInit() ) { return false; } AddLogLineNS(_("amuled: OnInit - starting timer")); core_timer = new CTimer(this,ID_CORE_TIMER_EVENT); core_timer->Start(CORE_TIMER_PERIOD); glob_prefs->GetCategory(0)->title = GetCatTitle(thePrefs::GetAllcatFilter()); glob_prefs->GetCategory(0)->path = thePrefs::GetIncomingDir(); return true; } int CamuleDaemonApp::InitGui(bool ,wxString &) { #ifndef __WINDOWS__ if ( !enable_daemon_fork ) { return 0; } AddLogLineNS(_("amuled: forking to background - see you")); theLogger.SetEnabledStdoutLog(false); // // fork to background and detach from controlling tty // while redirecting stdout to /dev/null // for(int i_fd = 0;i_fd < 3; i_fd++) { close(i_fd); } int fd = open("/dev/null",O_RDWR); if (dup(fd)){} // prevent GCC warning if (dup(fd)){} pid_t pid = fork(); wxASSERT(pid != -1); if ( pid ) { exit(0); } else { pid = setsid(); // // Create a Pid file with the Pid of the Child, so any daemon-manager // can easily manage the process // if (!m_PidFile.IsEmpty()) { wxString temp = CFormat(wxT("%d\n")) % pid; wxFFile ff(m_PidFile, wxT("w")); if (!ff.Error()) { ff.Write(temp); ff.Close(); } else { AddLogLineNS(_("Cannot Create Pid File")); } } } #endif return 0; } int CamuleDaemonApp::OnExit() { #ifdef AMULED28_SOCKETS /* * Stop all socket threads before entering * shutdown sequence. */ delete listensocket; listensocket = 0; if (clientudp) { delete clientudp; clientudp = NULL; } #endif ShutDown(); #ifdef AMULED_APPTRAITS DEBUG_ONLY( int ret = ) sigaction(SIGCHLD, &m_oldSignalChildAction, NULL); #ifdef __DEBUG__ if (ret == -1) { AddDebugLogLineC(logStandard, CFormat(wxT("CamuleDaemonApp::OnRun(): second sigaction() failed: %m."))); } else { AddDebugLogLineN(logGeneral, wxT("CamuleDaemonApp::OnRun(): Uninstallation of SIGCHLD callback with sigaction() succeeded.")); } #endif #endif // AMULED_APPTRAITS delete core_timer; return CamuleApp::OnExit(); } int CamuleDaemonApp::ShowAlert(wxString msg, wxString title, int flags) { if ( flags | wxICON_ERROR ) { title = CFormat(_("ERROR: %s")) % title; } AddLogLineCS(title + wxT(" ") + msg); return 0; // That's neither yes nor no, ok, cancel } // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/extern/0000755000175000017500000000000012611472361017577 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/extern/wxWidgets/0000755000175000017500000000000012611472361021564 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/extern/wxWidgets/listctrl.cpp0000644000175000017500000050631512611472361024142 0ustar morphmorph///////////////////////////////////////////////////////////////////////////// // Name: src/generic/listctrl.cpp // Purpose: generic implementation of wxListCtrl // Author: Robert Roebling // Vadim Zeitlin (virtual list control support) // Id: $Id$ // Copyright: Copyright (c) 1998-2011 Robert Roebling // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // TODO // // 1. we need to implement searching/sorting for virtual controls somehow // 2. when changing selection the lines are refreshed twice // For compilers that support precompilation, includes "wx.h". #include #ifdef __BORLANDC__ #pragma hdrstop #endif #if wxUSE_LISTCTRL #include "listctrl.h" #ifndef WX_PRECOMP #include #include #include #include #include #include #include #endif #include #include #include #include #if wxCHECK_VERSION(2, 9, 0) // wxWidgets 2.9+ does not include a mac/private anymore. #else #if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__) && (wxOSX_USE_CARBON || TARGET_CARBON) #include #endif #endif // NOTE: If using the wxListBox visual attributes works everywhere then this can // be removed, as well as the #else case below. #define _USE_VISATTR 0 namespace MuleExtern { // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- // // the height of the header window (FIXME: should depend on its font!) // static const int HEADER_HEIGHT = 23; static const int SCROLL_UNIT_X = 15; // the spacing between the lines (in report mode) static const int LINE_SPACING = 0; // extra margins around the text label #ifdef __WXGTK__ static const int EXTRA_WIDTH = 6; #else static const int EXTRA_WIDTH = 4; #endif static const int EXTRA_HEIGHT = 4; // margin between the window and the items static const int EXTRA_BORDER_X = 2; static const int EXTRA_BORDER_Y = 2; // offset for the header window static const int HEADER_OFFSET_X = 0; static const int HEADER_OFFSET_Y = 0; // margin between rows of icons in [small] icon view static const int MARGIN_BETWEEN_ROWS = 6; // when autosizing the columns, add some slack static const int AUTOSIZE_COL_MARGIN = 10; // default width for the header columns static const int WIDTH_COL_DEFAULT = 80; // the space between the image and the text in the report mode static const int IMAGE_MARGIN_IN_REPORT_MODE = 5; // the space between the image and the text in the report mode in header static const int HEADER_IMAGE_MARGIN_IN_REPORT_MODE = 2; const wxChar wxListCtrlNameStr[] = wxT("listCtrl"); // ============================================================================ // private classes // ============================================================================ //----------------------------------------------------------------------------- // wxColWidthInfo (internal) //----------------------------------------------------------------------------- struct wxColWidthInfo { int nMaxWidth; bool bNeedsUpdate; // only set to true when an item whose // width == nMaxWidth is removed wxColWidthInfo(int w = 0, bool needsUpdate = false) { nMaxWidth = w; bNeedsUpdate = needsUpdate; } }; WX_DEFINE_ARRAY_PTR(wxColWidthInfo *, ColWidthArray); //----------------------------------------------------------------------------- // wxListItemData (internal) //----------------------------------------------------------------------------- class wxListItemData { public: wxListItemData(wxListMainWindow *owner); ~wxListItemData(); void SetItem( const wxListItem &info ); void SetImage( int image ) { m_image = image; } void SetData( wxUIntPtr data ) { m_data = data; } void SetPosition( int x, int y ); void SetSize( int width, int height ); bool HasText() const { return !m_text.empty(); } const wxString& GetText() const { return m_text; } void SetText(const wxString& text) { m_text = text; } // we can't use empty string for measuring the string width/height, so // always return something wxString GetTextForMeasuring() const { wxString s = GetText(); if ( s.empty() ) s = _T('H'); return s; } bool IsHit( int x, int y ) const; int GetX() const; int GetY() const; int GetWidth() const; int GetHeight() const; int GetImage() const { return m_image; } bool HasImage() const { return GetImage() != -1; } void GetItem( wxListItem &info ) const; void SetAttr(wxListItemAttr *attr) { m_attr = attr; } wxListItemAttr *GetAttr() const { return m_attr; } public: // the item image or -1 int m_image; // user data associated with the item wxUIntPtr m_data; // the item coordinates are not used in report mode; instead this pointer is // NULL and the owner window is used to retrieve the item position and size wxRect *m_rect; // the list ctrl we are in wxListMainWindow *m_owner; // custom attributes or NULL wxListItemAttr *m_attr; protected: // common part of all ctors void Init(); wxString m_text; }; //----------------------------------------------------------------------------- // wxListHeaderData (internal) //----------------------------------------------------------------------------- class wxListHeaderData : public wxObject { public: wxListHeaderData(); wxListHeaderData( const wxListItem &info ); void SetItem( const wxListItem &item ); void SetPosition( int x, int y ); void SetWidth( int w ); void SetState( int state ); void SetFormat( int format ); void SetHeight( int h ); bool HasImage() const; bool HasText() const { return !m_text.empty(); } const wxString& GetText() const { return m_text; } void SetText(const wxString& text) { m_text = text; } void GetItem( wxListItem &item ); bool IsHit( int x, int y ) const; int GetImage() const; int GetWidth() const; int GetFormat() const; int GetState() const; protected: long m_mask; int m_image; wxString m_text; int m_format; int m_width; int m_xpos, m_ypos; int m_height; int m_state; private: void Init(); }; //----------------------------------------------------------------------------- // wxListLineData (internal) //----------------------------------------------------------------------------- WX_DECLARE_LIST(wxListItemData, wxListItemDataList); #include WX_DEFINE_LIST(wxListItemDataList) class wxListLineData { public: // the list of subitems: only may have more than one item in report mode wxListItemDataList m_items; // this is not used in report view struct GeometryInfo { // total item rect wxRect m_rectAll; // label only wxRect m_rectLabel; // icon only wxRect m_rectIcon; // the part to be highlighted wxRect m_rectHighlight; // extend all our rects to be centered inside the one of given width void ExtendWidth(wxCoord w) { wxASSERT_MSG( m_rectAll.width <= w, _T("width can only be increased") ); m_rectAll.width = w; m_rectLabel.x = m_rectAll.x + (w - m_rectLabel.width) / 2; m_rectIcon.x = m_rectAll.x + (w - m_rectIcon.width) / 2; m_rectHighlight.x = m_rectAll.x + (w - m_rectHighlight.width) / 2; } } *m_gi; // is this item selected? [NB: not used in virtual mode] bool m_highlighted; // back pointer to the list ctrl wxListMainWindow *m_owner; public: wxListLineData(wxListMainWindow *owner); ~wxListLineData() { WX_CLEAR_LIST(wxListItemDataList, m_items); delete m_gi; } // are we in report mode? inline bool InReportView() const; // are we in virtual report mode? inline bool IsVirtual() const; // these 2 methods shouldn't be called for report view controls, in that // case we determine our position/size ourselves // calculate the size of the line void CalculateSize( wxDC *dc, int spacing ); // remember the position this line appears at void SetPosition( int x, int y, int spacing ); // wxListCtrl API void SetImage( int image ) { SetImage(0, image); } int GetImage() const { return GetImage(0); } void SetImage( int index, int image ); int GetImage( int index ) const; bool HasImage() const { return GetImage() != -1; } bool HasText() const { return !GetText(0).empty(); } void SetItem( int index, const wxListItem &info ); void GetItem( int index, wxListItem &info ); wxString GetText(int index) const; void SetText( int index, const wxString& s ); wxListItemAttr *GetAttr() const; void SetAttr(wxListItemAttr *attr); // return true if the highlighting really changed bool Highlight( bool on ); void ReverseHighlight(); bool IsHighlighted() const { wxASSERT_MSG( !IsVirtual(), _T("unexpected call to IsHighlighted") ); return m_highlighted; } // draw the line on the given DC in icon/list mode void Draw( wxDC *dc ); // the same in report mode void DrawInReportMode( wxDC *dc, const wxRect& rect, const wxRect& rectHL, bool highlighted ); private: // set the line to contain num items (only can be > 1 in report mode) void InitItems( int num ); // get the mode (i.e. style) of the list control inline int GetMode() const; // prepare the DC for drawing with these item's attributes, return true if // we need to draw the items background to highlight it, false otherwise bool SetAttributes(wxDC *dc, const wxListItemAttr *attr, bool highlight); // draw the text on the DC with the correct justification; also add an // ellipsis if the text is too large to fit in the current width void DrawTextFormatted(wxDC *dc, const wxString &text, int col, int x, int yMid, // this is middle, not top, of the text int width); }; WX_DECLARE_OBJARRAY(wxListLineData, wxListLineDataArray); #include WX_DEFINE_OBJARRAY(wxListLineDataArray) //----------------------------------------------------------------------------- // wxListHeaderWindow (internal) //----------------------------------------------------------------------------- class wxListHeaderWindow : public wxWindow { protected: wxListMainWindow *m_owner; const wxCursor *m_currentCursor; wxCursor *m_resizeCursor; bool m_isDragging; // column being resized or -1 int m_column; // divider line position in logical (unscrolled) coords int m_currentX; // minimal position beyond which the divider line // can't be dragged in logical coords int m_minX; public: wxListHeaderWindow(); wxListHeaderWindow( wxWindow *win, wxWindowID id, wxListMainWindow *owner, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = 0, const wxString &name = wxT("wxlistctrlcolumntitles") ); virtual ~wxListHeaderWindow(); void DrawCurrent(); void AdjustDC( wxDC& dc ); void OnPaint( wxPaintEvent &event ); void OnMouse( wxMouseEvent &event ); void OnSetFocus( wxFocusEvent &event ); // needs refresh bool m_dirty; private: // common part of all ctors void Init(); // generate and process the list event of the given type, return true if // it wasn't vetoed, i.e. if we should proceed bool SendListEvent(wxEventType type, const wxPoint& pos); DECLARE_EVENT_TABLE() }; //----------------------------------------------------------------------------- // wxListRenameTimer (internal) //----------------------------------------------------------------------------- class wxListRenameTimer: public wxTimer { private: wxListMainWindow *m_owner; public: wxListRenameTimer( wxListMainWindow *owner ); void Notify(); }; //----------------------------------------------------------------------------- // wxListTextCtrlWrapper: wraps a wxTextCtrl to make it work for inline editing //----------------------------------------------------------------------------- class wxListTextCtrlWrapper : public wxEvtHandler { public: // NB: text must be a valid object but not Create()d yet wxListTextCtrlWrapper(wxListMainWindow *owner, wxTextCtrl *text, size_t itemEdit); wxTextCtrl *GetText() const { return m_text; } void AcceptChangesAndFinish(); protected: void OnChar( wxKeyEvent &event ); void OnKeyUp( wxKeyEvent &event ); void OnKillFocus( wxFocusEvent &event ); bool AcceptChanges(); void Finish(); private: wxListMainWindow *m_owner; wxTextCtrl *m_text; wxString m_startValue; size_t m_itemEdited; bool m_finished; bool m_aboutToFinish; DECLARE_EVENT_TABLE() }; //----------------------------------------------------------------------------- // wxListMainWindow (internal) //----------------------------------------------------------------------------- WX_DECLARE_LIST(wxListHeaderData, wxListHeaderDataList); #include WX_DEFINE_LIST(wxListHeaderDataList) class wxListMainWindow : public wxScrolledWindow { public: wxListMainWindow(); wxListMainWindow( wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, const wxString &name = _T("listctrlmainwindow") ); virtual ~wxListMainWindow(); bool HasFlag(int flag) const { return m_parent->HasFlag(flag); } // return true if this is a virtual list control bool IsVirtual() const { return HasFlag(wxLC_VIRTUAL); } // return true if the control is in report mode bool InReportView() const { return HasFlag(wxLC_REPORT); } // return true if we are in single selection mode, false if multi sel bool IsSingleSel() const { return HasFlag(wxLC_SINGLE_SEL); } // do we have a header window? bool HasHeader() const { return InReportView() && !HasFlag(wxLC_NO_HEADER); } void HighlightAll( bool on ); // all these functions only do something if the line is currently visible // change the line "selected" state, return true if it really changed bool HighlightLine( size_t line, bool highlight = true); // as HighlightLine() but do it for the range of lines: this is incredibly // more efficient for virtual list controls! // // NB: unlike HighlightLine() this one does refresh the lines on screen void HighlightLines( size_t lineFrom, size_t lineTo, bool on = true ); // toggle the line state and refresh it void ReverseHighlight( size_t line ) { HighlightLine(line, !IsHighlighted(line)); RefreshLine(line); } // return true if the line is highlighted bool IsHighlighted(size_t line) const; // refresh one or several lines at once void RefreshLine( size_t line ); void RefreshLines( size_t lineFrom, size_t lineTo ); // refresh all selected items void RefreshSelected(); // refresh all lines below the given one: the difference with // RefreshLines() is that the index here might not be a valid one (happens // when the last line is deleted) void RefreshAfter( size_t lineFrom ); // the methods which are forwarded to wxListLineData itself in list/icon // modes but are here because the lines don't store their positions in the // report mode // get the bound rect for the entire line wxRect GetLineRect(size_t line) const; // get the bound rect of the label wxRect GetLineLabelRect(size_t line) const; // get the bound rect of the items icon (only may be called if we do have // an icon!) wxRect GetLineIconRect(size_t line) const; // get the rect to be highlighted when the item has focus wxRect GetLineHighlightRect(size_t line) const; // get the size of the total line rect wxSize GetLineSize(size_t line) const { return GetLineRect(line).GetSize(); } // return the hit code for the corresponding position (in this line) long HitTestLine(size_t line, int x, int y) const; // bring the selected item into view, scrolling to it if necessary void MoveToItem(size_t item); // bring the current item into view void MoveToFocus() { MoveToItem(m_current); } // start editing the label of the given item wxTextCtrl *EditLabel(long item, wxClassInfo* textControlClass = CLASSINFO(wxTextCtrl)); wxTextCtrl *GetEditControl() const { return m_textctrlWrapper ? m_textctrlWrapper->GetText() : NULL; } void FinishEditing(wxTextCtrl *text) { delete text; m_textctrlWrapper = NULL; SetFocusIgnoringChildren(); } // suspend/resume redrawing the control void Freeze(); void Thaw(); void OnRenameTimer(); bool OnRenameAccept(size_t itemEdit, const wxString& value); void OnRenameCancelled(size_t itemEdit); void OnMouse( wxMouseEvent &event ); // called to switch the selection from the current item to newCurrent, void OnArrowChar( size_t newCurrent, const wxKeyEvent& event ); void OnChar( wxKeyEvent &event ); void OnKeyDown( wxKeyEvent &event ); void OnKeyUp( wxKeyEvent &event ); void OnSetFocus( wxFocusEvent &event ); void OnKillFocus( wxFocusEvent &event ); void OnScroll( wxScrollWinEvent& event ); void OnPaint( wxPaintEvent &event ); void OnErase( wxEraseEvent& event ) { // This is needed to avoid garbage on empty lists. if ( IsEmpty() ) { event.Skip(); } } void OnChildFocus(wxChildFocusEvent& event); void DrawImage( int index, wxDC *dc, int x, int y ); void GetImageSize( int index, int &width, int &height ) const; int GetTextLength( const wxString &s ) const; void SetImageList( wxImageList *imageList, int which ); void SetItemSpacing( int spacing, bool isSmall = false ); int GetItemSpacing( bool isSmall = false ); void SetColumn( int col, wxListItem &item ); void SetColumnWidth( int col, int width ); void GetColumn( int col, wxListItem &item ) const; int GetColumnWidth( int col ) const; int GetColumnCount() const { return m_columns.GetCount(); } // returns the sum of the heights of all columns int GetHeaderWidth() const; int GetCountPerPage() const; void SetItem( wxListItem &item ); void GetItem( wxListItem &item ) const; void SetItemState( long item, long state, long stateMask ); void SetItemStateAll( long state, long stateMask ); int GetItemState( long item, long stateMask ) const; void GetItemRect( long index, wxRect &rect ) const; wxRect GetViewRect() const; bool GetItemPosition( long item, wxPoint& pos ) const; int GetSelectedItemCount() const; wxString GetItemText(long item) const { wxListItem info; info.m_mask = wxLIST_MASK_TEXT; info.m_itemId = item; GetItem( info ); return info.m_text; } void SetItemText(long item, const wxString& value) { wxListItem info; info.m_mask = wxLIST_MASK_TEXT; info.m_itemId = item; info.m_text = value; SetItem( info ); } // set the scrollbars and update the positions of the items void RecalculatePositions(bool noRefresh = false); // refresh the window and the header void RefreshAll(); long GetNextItem( long item, int geometry, int state ) const; void DeleteItem( long index ); void DeleteAllItems(); void DeleteColumn( int col ); void DeleteEverything(); void EnsureVisible( long index ); long FindItem( long start, const wxString& str, bool partial = false ); long FindItem( long start, wxUIntPtr data); long FindItem( const wxPoint& pt ); long HitTest( int x, int y, int &flags ) const; void InsertItem( wxListItem &item ); void InsertColumn( long col, wxListItem &item ); int GetItemWidthWithImage(wxListItem * item); void SortItems( MuleListCtrlCompare fn, long data ); size_t GetItemCount() const; bool IsEmpty() const { return GetItemCount() == 0; } void SetItemCount(long count); // change the current (== focused) item, send a notification event void ChangeCurrent(size_t current); void ResetCurrent() { ChangeCurrent((size_t)-1); } bool HasCurrent() const { return m_current != (size_t)-1; } // send out a wxListEvent void SendNotify( size_t line, wxEventType command, const wxPoint& point = wxDefaultPosition ); // override base class virtual to reset m_lineHeight when the font changes virtual bool SetFont(const wxFont& font) { if ( !wxScrolledWindow::SetFont(font) ) return false; m_lineHeight = 0; return true; } // these are for wxListLineData usage only // get the backpointer to the list ctrl wxGenericListCtrl *GetListCtrl() const { return wxStaticCast(GetParent(), wxGenericListCtrl); } // get the height of all lines (assuming they all do have the same height) wxCoord GetLineHeight() const; // get the y position of the given line (only for report view) wxCoord GetLineY(size_t line) const; // get the brush to use for the item highlighting const wxBrush& GetHighlightBrush() const { return m_hasFocus ? m_highlightBrush : m_highlightUnfocusedBrush; } bool HasFocus() const { return m_hasFocus; } //protected: // the array of all line objects for a non virtual list control (for the // virtual list control we only ever use m_lines[0]) wxListLineDataArray m_lines; // the list of column objects wxListHeaderDataList m_columns; // currently focused item or -1 size_t m_current; // the number of lines per page int m_linesPerPage; // this flag is set when something which should result in the window // redrawing happens (i.e. an item was added or deleted, or its appearance // changed) and OnPaint() doesn't redraw the window while it is set which // allows to minimize the number of repaintings when a lot of items are // being added. The real repainting occurs only after the next OnIdle() // call bool m_dirty; wxColour *m_highlightColour; wxImageList *m_small_image_list; wxImageList *m_normal_image_list; int m_small_spacing; int m_normal_spacing; bool m_hasFocus; bool m_lastOnSame; wxTimer *m_renameTimer; bool m_isCreated; int m_dragCount; wxPoint m_dragStart; ColWidthArray m_aColWidths; // for double click logic size_t m_lineLastClicked, m_lineBeforeLastClicked, m_lineSelectSingleOnUp; protected: wxWindow *GetMainWindowOfCompositeControl() { return GetParent(); } // the total count of items in a virtual list control size_t m_countVirt; // the object maintaining the items selection state, only used in virtual // controls wxSelectionStore m_selStore; // common part of all ctors void Init(); // get the line data for the given index wxListLineData *GetLine(size_t n) const { wxASSERT_MSG( n != (size_t)-1, _T("invalid line index") ); if ( IsVirtual() ) { wxConstCast(this, wxListMainWindow)->CacheLineData(n); n = 0; } return &m_lines[n]; } // get a dummy line which can be used for geometry calculations and such: // you must use GetLine() if you want to really draw the line wxListLineData *GetDummyLine() const; // cache the line data of the n-th line in m_lines[0] void CacheLineData(size_t line); // get the range of visible lines void GetVisibleLinesRange(size_t *from, size_t *to); // force us to recalculate the range of visible lines void ResetVisibleLinesRange() { m_lineFrom = (size_t)-1; } // get the colour to be used for drawing the rules wxColour GetRuleColour() const { return wxSystemSettings::GetColour(wxSYS_COLOUR_3DLIGHT); } private: // initialize the current item if needed void UpdateCurrent(); // delete all items but don't refresh: called from dtor void DoDeleteAllItems(); // the height of one line using the current font wxCoord m_lineHeight; // the total header width or 0 if not calculated yet wxCoord m_headerWidth; // the first and last lines being shown on screen right now (inclusive), // both may be -1 if they must be calculated so never access them directly: // use GetVisibleLinesRange() above instead size_t m_lineFrom, m_lineTo; // the brushes to use for item highlighting when we do/don't have focus wxBrush m_highlightBrush, m_highlightUnfocusedBrush; // if this is > 0, the control is frozen and doesn't redraw itself size_t m_freezeCount; // wrapper around the text control currently used for in place editing or // NULL if no item is being edited wxListTextCtrlWrapper *m_textctrlWrapper; DECLARE_EVENT_TABLE() friend class wxGenericListCtrl; }; wxListItemData::~wxListItemData() { // in the virtual list control the attributes are managed by the main // program, so don't delete them if ( !m_owner->IsVirtual() ) delete m_attr; delete m_rect; } void wxListItemData::Init() { m_image = -1; m_data = 0; m_attr = NULL; } wxListItemData::wxListItemData(wxListMainWindow *owner) { Init(); m_owner = owner; if ( owner->InReportView() ) m_rect = NULL; else m_rect = new wxRect; } void wxListItemData::SetItem( const wxListItem &info ) { if ( info.m_mask & wxLIST_MASK_TEXT ) SetText(info.m_text); if ( info.m_mask & wxLIST_MASK_IMAGE ) m_image = info.m_image; if ( info.m_mask & wxLIST_MASK_DATA ) m_data = info.m_data; if ( info.HasAttributes() ) { if ( m_attr ) m_attr->AssignFrom(*info.GetAttributes()); else m_attr = new wxListItemAttr(*info.GetAttributes()); } if ( m_rect ) { m_rect->x = m_rect->y = m_rect->height = 0; m_rect->width = info.m_width; } } void wxListItemData::SetPosition( int x, int y ) { wxCHECK_RET( m_rect, _T("unexpected SetPosition() call") ); m_rect->x = x; m_rect->y = y; } void wxListItemData::SetSize( int width, int height ) { wxCHECK_RET( m_rect, _T("unexpected SetSize() call") ); if ( width != -1 ) m_rect->width = width; if ( height != -1 ) m_rect->height = height; } bool wxListItemData::IsHit( int x, int y ) const { wxCHECK_MSG( m_rect, false, _T("can't be called in this mode") ); return wxRect(GetX(), GetY(), GetWidth(), GetHeight()).Contains(x, y); } int wxListItemData::GetX() const { wxCHECK_MSG( m_rect, 0, _T("can't be called in this mode") ); return m_rect->x; } int wxListItemData::GetY() const { wxCHECK_MSG( m_rect, 0, _T("can't be called in this mode") ); return m_rect->y; } int wxListItemData::GetWidth() const { wxCHECK_MSG( m_rect, 0, _T("can't be called in this mode") ); return m_rect->width; } int wxListItemData::GetHeight() const { wxCHECK_MSG( m_rect, 0, _T("can't be called in this mode") ); return m_rect->height; } void wxListItemData::GetItem( wxListItem &info ) const { long mask = info.m_mask; if ( !mask ) // by default, get everything for backwards compatibility mask = -1; if ( mask & wxLIST_MASK_TEXT ) info.m_text = m_text; if ( mask & wxLIST_MASK_IMAGE ) info.m_image = m_image; if ( mask & wxLIST_MASK_DATA ) info.m_data = m_data; if ( m_attr ) { if ( m_attr->HasTextColour() ) info.SetTextColour(m_attr->GetTextColour()); if ( m_attr->HasBackgroundColour() ) info.SetBackgroundColour(m_attr->GetBackgroundColour()); if ( m_attr->HasFont() ) info.SetFont(m_attr->GetFont()); } } //----------------------------------------------------------------------------- // wxListHeaderData //----------------------------------------------------------------------------- void wxListHeaderData::Init() { m_mask = 0; m_image = -1; m_format = 0; m_width = 0; m_xpos = 0; m_ypos = 0; m_height = 0; m_state = 0; } wxListHeaderData::wxListHeaderData() { Init(); } wxListHeaderData::wxListHeaderData( const wxListItem &item ) { Init(); SetItem( item ); } void wxListHeaderData::SetItem( const wxListItem &item ) { m_mask = item.m_mask; if ( m_mask & wxLIST_MASK_TEXT ) m_text = item.m_text; if ( m_mask & wxLIST_MASK_IMAGE ) m_image = item.m_image; if ( m_mask & wxLIST_MASK_FORMAT ) m_format = item.m_format; if ( m_mask & wxLIST_MASK_WIDTH ) SetWidth(item.m_width); if ( m_mask & wxLIST_MASK_STATE ) SetState(item.m_state); } void wxListHeaderData::SetPosition( int x, int y ) { m_xpos = x; m_ypos = y; } void wxListHeaderData::SetHeight( int h ) { m_height = h; } void wxListHeaderData::SetWidth( int w ) { m_width = w < 0 ? WIDTH_COL_DEFAULT : w; } void wxListHeaderData::SetState( int flag ) { m_state = flag; } void wxListHeaderData::SetFormat( int format ) { m_format = format; } bool wxListHeaderData::HasImage() const { return m_image != -1; } bool wxListHeaderData::IsHit( int x, int y ) const { return ((x >= m_xpos) && (x <= m_xpos+m_width) && (y >= m_ypos) && (y <= m_ypos+m_height)); } void wxListHeaderData::GetItem( wxListItem& item ) { item.m_mask = m_mask; item.m_text = m_text; item.m_image = m_image; item.m_format = m_format; item.m_width = m_width; item.m_state = m_state; } int wxListHeaderData::GetImage() const { return m_image; } int wxListHeaderData::GetWidth() const { return m_width; } int wxListHeaderData::GetFormat() const { return m_format; } int wxListHeaderData::GetState() const { return m_state; } //----------------------------------------------------------------------------- // wxListLineData //----------------------------------------------------------------------------- inline int wxListLineData::GetMode() const { return m_owner->GetListCtrl()->GetWindowStyleFlag() & wxLC_MASK_TYPE; } inline bool wxListLineData::InReportView() const { return m_owner->HasFlag(wxLC_REPORT); } inline bool wxListLineData::IsVirtual() const { return m_owner->IsVirtual(); } wxListLineData::wxListLineData( wxListMainWindow *owner ) { m_owner = owner; if ( InReportView() ) m_gi = NULL; else // !report m_gi = new GeometryInfo; m_highlighted = false; InitItems( GetMode() == wxLC_REPORT ? m_owner->GetColumnCount() : 1 ); } void wxListLineData::CalculateSize( wxDC *dc, int spacing ) { wxListItemDataList::compatibility_iterator node = m_items.GetFirst(); wxCHECK_RET( node, _T("no subitems at all??") ); wxListItemData *item = node->GetData(); wxString s; wxCoord lw, lh; switch ( GetMode() ) { case wxLC_ICON: case wxLC_SMALL_ICON: m_gi->m_rectAll.width = spacing; s = item->GetText(); if ( s.empty() ) { lh = m_gi->m_rectLabel.width = m_gi->m_rectLabel.height = 0; } else // has label { dc->GetTextExtent( s, &lw, &lh ); lw += EXTRA_WIDTH; lh += EXTRA_HEIGHT; m_gi->m_rectAll.height = spacing + lh; if (lw > spacing) m_gi->m_rectAll.width = lw; m_gi->m_rectLabel.width = lw; m_gi->m_rectLabel.height = lh; } if (item->HasImage()) { int w, h; m_owner->GetImageSize( item->GetImage(), w, h ); m_gi->m_rectIcon.width = w + 8; m_gi->m_rectIcon.height = h + 8; if ( m_gi->m_rectIcon.width > m_gi->m_rectAll.width ) m_gi->m_rectAll.width = m_gi->m_rectIcon.width; if ( m_gi->m_rectIcon.height + lh > m_gi->m_rectAll.height - 4 ) m_gi->m_rectAll.height = m_gi->m_rectIcon.height + lh + 4; } if ( item->HasText() ) { m_gi->m_rectHighlight.width = m_gi->m_rectLabel.width; m_gi->m_rectHighlight.height = m_gi->m_rectLabel.height; } else // no text, highlight the icon { m_gi->m_rectHighlight.width = m_gi->m_rectIcon.width; m_gi->m_rectHighlight.height = m_gi->m_rectIcon.height; } break; case wxLC_LIST: s = item->GetTextForMeasuring(); dc->GetTextExtent( s, &lw, &lh ); lw += EXTRA_WIDTH; lh += EXTRA_HEIGHT; m_gi->m_rectLabel.width = lw; m_gi->m_rectLabel.height = lh; m_gi->m_rectAll.width = lw; m_gi->m_rectAll.height = lh; if (item->HasImage()) { int w, h; m_owner->GetImageSize( item->GetImage(), w, h ); m_gi->m_rectIcon.width = w; m_gi->m_rectIcon.height = h; m_gi->m_rectAll.width += 4 + w; if (h > m_gi->m_rectAll.height) m_gi->m_rectAll.height = h; } m_gi->m_rectHighlight.width = m_gi->m_rectAll.width; m_gi->m_rectHighlight.height = m_gi->m_rectAll.height; break; case wxLC_REPORT: wxFAIL_MSG( _T("unexpected call to SetSize") ); break; default: wxFAIL_MSG( _T("unknown mode") ); break; } } void wxListLineData::SetPosition( int x, int y, int spacing ) { wxListItemDataList::compatibility_iterator node = m_items.GetFirst(); wxCHECK_RET( node, _T("no subitems at all??") ); wxListItemData *item = node->GetData(); switch ( GetMode() ) { case wxLC_ICON: case wxLC_SMALL_ICON: m_gi->m_rectAll.x = x; m_gi->m_rectAll.y = y; if ( item->HasImage() ) { m_gi->m_rectIcon.x = m_gi->m_rectAll.x + 4 + (m_gi->m_rectAll.width - m_gi->m_rectIcon.width) / 2; m_gi->m_rectIcon.y = m_gi->m_rectAll.y + 4; } if ( item->HasText() ) { if (m_gi->m_rectAll.width > spacing) m_gi->m_rectLabel.x = m_gi->m_rectAll.x + (EXTRA_WIDTH/2); else m_gi->m_rectLabel.x = m_gi->m_rectAll.x + (EXTRA_WIDTH/2) + (spacing / 2) - (m_gi->m_rectLabel.width / 2); m_gi->m_rectLabel.y = m_gi->m_rectAll.y + m_gi->m_rectAll.height + 2 - m_gi->m_rectLabel.height; m_gi->m_rectHighlight.x = m_gi->m_rectLabel.x - 2; m_gi->m_rectHighlight.y = m_gi->m_rectLabel.y - 2; } else // no text, highlight the icon { m_gi->m_rectHighlight.x = m_gi->m_rectIcon.x - 4; m_gi->m_rectHighlight.y = m_gi->m_rectIcon.y - 4; } break; case wxLC_LIST: m_gi->m_rectAll.x = x; m_gi->m_rectAll.y = y; m_gi->m_rectHighlight.x = m_gi->m_rectAll.x; m_gi->m_rectHighlight.y = m_gi->m_rectAll.y; m_gi->m_rectLabel.y = m_gi->m_rectAll.y + 2; if (item->HasImage()) { m_gi->m_rectIcon.x = m_gi->m_rectAll.x + 2; m_gi->m_rectIcon.y = m_gi->m_rectAll.y + 2; m_gi->m_rectLabel.x = m_gi->m_rectAll.x + 4 + (EXTRA_WIDTH/2) + m_gi->m_rectIcon.width; } else { m_gi->m_rectLabel.x = m_gi->m_rectAll.x + (EXTRA_WIDTH/2); } break; case wxLC_REPORT: wxFAIL_MSG( _T("unexpected call to SetPosition") ); break; default: wxFAIL_MSG( _T("unknown mode") ); break; } } void wxListLineData::InitItems( int num ) { for (int i = 0; i < num; i++) m_items.Append( new wxListItemData(m_owner) ); } void wxListLineData::SetItem( int index, const wxListItem &info ) { wxListItemDataList::compatibility_iterator node = m_items.Item( index ); wxCHECK_RET( node, _T("invalid column index in SetItem") ); wxListItemData *item = node->GetData(); item->SetItem( info ); } void wxListLineData::GetItem( int index, wxListItem &info ) { wxListItemDataList::compatibility_iterator node = m_items.Item( index ); if (node) { wxListItemData *item = node->GetData(); item->GetItem( info ); } } wxString wxListLineData::GetText(int index) const { wxString s; wxListItemDataList::compatibility_iterator node = m_items.Item( index ); if (node) { wxListItemData *item = node->GetData(); s = item->GetText(); } return s; } void wxListLineData::SetText( int index, const wxString& s ) { wxListItemDataList::compatibility_iterator node = m_items.Item( index ); if (node) { wxListItemData *item = node->GetData(); item->SetText( s ); } } void wxListLineData::SetImage( int index, int image ) { wxListItemDataList::compatibility_iterator node = m_items.Item( index ); wxCHECK_RET( node, _T("invalid column index in SetImage()") ); wxListItemData *item = node->GetData(); item->SetImage(image); } int wxListLineData::GetImage( int index ) const { wxListItemDataList::compatibility_iterator node = m_items.Item( index ); wxCHECK_MSG( node, -1, _T("invalid column index in GetImage()") ); wxListItemData *item = node->GetData(); return item->GetImage(); } wxListItemAttr *wxListLineData::GetAttr() const { wxListItemDataList::compatibility_iterator node = m_items.GetFirst(); wxCHECK_MSG( node, NULL, _T("invalid column index in GetAttr()") ); wxListItemData *item = node->GetData(); return item->GetAttr(); } void wxListLineData::SetAttr(wxListItemAttr *attr) { wxListItemDataList::compatibility_iterator node = m_items.GetFirst(); wxCHECK_RET( node, _T("invalid column index in SetAttr()") ); wxListItemData *item = node->GetData(); item->SetAttr(attr); } bool wxListLineData::SetAttributes(wxDC *dc, const wxListItemAttr *attr, bool highlighted) { wxWindow *listctrl = m_owner->GetParent(); // fg colour // don't use foreground colour for drawing highlighted items - this might // make them completely invisible (and there is no way to do bit // arithmetics on wxColour, unfortunately) wxColour colText; if ( highlighted ) #ifdef __WXMAC__ { if (m_owner->HasFocus() #if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__) && wxOSX_USE_CARBON && IsControlActive( (ControlRef)m_owner->GetHandle() ) #endif ) colText = *wxWHITE; else colText = *wxBLACK; } #else colText = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHTTEXT); #endif else if ( attr && attr->HasTextColour() ) colText = attr->GetTextColour(); else colText = listctrl->GetForegroundColour(); dc->SetTextForeground(colText); // font wxFont font; if ( attr && attr->HasFont() ) font = attr->GetFont(); else font = listctrl->GetFont(); dc->SetFont(font); // bg colour bool hasBgCol = attr && attr->HasBackgroundColour(); if ( highlighted || hasBgCol ) { if ( highlighted ) dc->SetBrush( m_owner->GetHighlightBrush() ); else dc->SetBrush(*(wxTheBrushList->FindOrCreateBrush(attr->GetBackgroundColour(), wxSOLID))); dc->SetPen( *wxTRANSPARENT_PEN ); return true; } return false; } void wxListLineData::Draw( wxDC *dc ) { wxListItemDataList::compatibility_iterator node = m_items.GetFirst(); wxCHECK_RET( node, _T("no subitems at all??") ); bool highlighted = IsHighlighted(); wxListItemAttr *attr = GetAttr(); if ( SetAttributes(dc, attr, highlighted) ) #if ( !defined(__WXGTK20__) && !defined(__WXMAC__) ) { dc->DrawRectangle( m_gi->m_rectHighlight ); } #else { if (highlighted) { int flags = wxCONTROL_SELECTED; if (m_owner->HasFocus() #if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__) && wxOSX_USE_CARBON && IsControlActive( (ControlRef)m_owner->GetHandle() ) #endif ) flags |= wxCONTROL_FOCUSED; wxRendererNative::Get().DrawItemSelectionRect( m_owner, *dc, m_gi->m_rectHighlight, flags ); } else { dc->DrawRectangle( m_gi->m_rectHighlight ); } } #endif // just for debugging to better see where the items are #if 0 dc->SetPen(*wxRED_PEN); dc->SetBrush(*wxTRANSPARENT_BRUSH); dc->DrawRectangle( m_gi->m_rectAll ); dc->SetPen(*wxGREEN_PEN); dc->DrawRectangle( m_gi->m_rectIcon ); #endif wxListItemData *item = node->GetData(); if (item->HasImage()) { // centre the image inside our rectangle, this looks nicer when items // ae aligned in a row const wxRect& rectIcon = m_gi->m_rectIcon; m_owner->DrawImage(item->GetImage(), dc, rectIcon.x, rectIcon.y); } if (item->HasText()) { const wxRect& rectLabel = m_gi->m_rectLabel; wxDCClipper clipper(*dc, rectLabel); dc->DrawText(item->GetText(), rectLabel.x, rectLabel.y); } } void wxListLineData::DrawInReportMode( wxDC *dc, const wxRect& rect, const wxRect& rectHL, bool highlighted ) { // TODO: later we should support setting different attributes for // different columns - to do it, just add "col" argument to // GetAttr() and move these lines into the loop below wxListItemAttr *attr = GetAttr(); if ( SetAttributes(dc, attr, highlighted) ) #if ( !defined(__WXGTK20__) && !defined(__WXMAC__) ) { dc->DrawRectangle( rectHL ); } #else { if (highlighted) { int flags = wxCONTROL_SELECTED; if (m_owner->HasFocus() #if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__) && wxOSX_USE_CARBON && IsControlActive( (ControlRef)m_owner->GetHandle() ) #endif ) flags |= wxCONTROL_FOCUSED; wxRendererNative::Get().DrawItemSelectionRect( m_owner, *dc, rectHL, flags ); } else { dc->DrawRectangle( rectHL ); } } #endif wxCoord x = rect.x + HEADER_OFFSET_X, yMid = rect.y + rect.height/2; #ifdef __WXGTK__ // This probably needs to be done // on all platforms as the icons // otherwise nearly touch the border x += 2; #endif size_t col = 0; for ( wxListItemDataList::compatibility_iterator node = m_items.GetFirst(); node; node = node->GetNext(), col++ ) { wxListItemData *item = node->GetData(); int width = m_owner->GetColumnWidth(col); int xOld = x; x += width; if ( item->HasImage() ) { int ix, iy; m_owner->GetImageSize( item->GetImage(), ix, iy ); m_owner->DrawImage( item->GetImage(), dc, xOld, yMid - iy/2 ); ix += IMAGE_MARGIN_IN_REPORT_MODE; xOld += ix; width -= ix; } if ( item->HasText() ) DrawTextFormatted(dc, item->GetText(), col, xOld, yMid, width - 8); } } void wxListLineData::DrawTextFormatted(wxDC *dc, const wxString& textOrig, int col, int x, int yMid, int width) { // we don't support displaying multiple lines currently (and neither does // wxMSW FWIW) so just merge all the lines wxString text(textOrig); text.Replace(_T("\n"), _T(" ")); wxCoord w, h; dc->GetTextExtent(text, &w, &h); const wxCoord y = yMid - (h + 1)/2; wxDCClipper clipper(*dc, x, y, width, h); // determine if the string can fit inside the current width if (w <= width) { // it can, draw it using the items alignment wxListItem item; m_owner->GetColumn(col, item); switch ( item.GetAlign() ) { case wxLIST_FORMAT_LEFT: // nothing to do break; case wxLIST_FORMAT_RIGHT: x += width - w; break; case wxLIST_FORMAT_CENTER: x += (width - w) / 2; break; default: wxFAIL_MSG( _T("unknown list item format") ); break; } dc->DrawText(text, x, y); } else // otherwise, truncate and add an ellipsis if possible { // determine the base width wxString ellipsis(wxT("...")); wxCoord base_w; dc->GetTextExtent(ellipsis, &base_w, &h); // continue until we have enough space or only one character left wxCoord w_c, h_c; size_t len = text.length(); wxString drawntext = text.Left(len); while (len > 1) { dc->GetTextExtent(drawntext.Last(), &w_c, &h_c); drawntext.RemoveLast(); len--; w -= w_c; if (w + base_w <= width) break; } // if still not enough space, remove ellipsis characters while (ellipsis.length() > 0 && w + base_w > width) { ellipsis = ellipsis.Left(ellipsis.length() - 1); dc->GetTextExtent(ellipsis, &base_w, &h); } // now draw the text dc->DrawText(drawntext, x, y); dc->DrawText(ellipsis, x + w, y); } } bool wxListLineData::Highlight( bool on ) { wxCHECK_MSG( !IsVirtual(), false, _T("unexpected call to Highlight") ); if ( on == m_highlighted ) return false; m_highlighted = on; return true; } void wxListLineData::ReverseHighlight( void ) { Highlight(!IsHighlighted()); } //----------------------------------------------------------------------------- // wxListHeaderWindow //----------------------------------------------------------------------------- BEGIN_EVENT_TABLE(wxListHeaderWindow,wxWindow) EVT_PAINT (wxListHeaderWindow::OnPaint) EVT_MOUSE_EVENTS (wxListHeaderWindow::OnMouse) EVT_SET_FOCUS (wxListHeaderWindow::OnSetFocus) END_EVENT_TABLE() void wxListHeaderWindow::Init() { m_currentCursor = (wxCursor *) NULL; m_isDragging = false; m_dirty = false; } wxListHeaderWindow::wxListHeaderWindow() { Init(); m_owner = (wxListMainWindow *) NULL; m_resizeCursor = (wxCursor *) NULL; } wxListHeaderWindow::wxListHeaderWindow( wxWindow *win, wxWindowID id, wxListMainWindow *owner, const wxPoint& pos, const wxSize& size, long style, const wxString &name ) : wxWindow( win, id, pos, size, style, name ) { Init(); m_owner = owner; m_resizeCursor = new wxCursor( wxCURSOR_SIZEWE ); #if _USE_VISATTR wxVisualAttributes attr = wxPanel::GetClassDefaultAttributes(); SetOwnForegroundColour( attr.colFg ); SetOwnBackgroundColour( attr.colBg ); if (!m_hasFont) SetOwnFont( attr.font ); #else SetOwnForegroundColour( wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT)); SetOwnBackgroundColour( wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)); if (!m_hasFont) SetOwnFont( wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT )); #endif } wxListHeaderWindow::~wxListHeaderWindow() { delete m_resizeCursor; } #ifdef __WXUNIVERSAL__ #include #include #endif // shift the DC origin to match the position of the main window horz // scrollbar: this allows us to always use logical coords void wxListHeaderWindow::AdjustDC(wxDC& dc) { int xpix; m_owner->GetScrollPixelsPerUnit( &xpix, NULL ); int view_start; m_owner->GetViewStart( &view_start, NULL ); int org_x = 0; int org_y = 0; dc.GetDeviceOrigin( &org_x, &org_y ); // account for the horz scrollbar offset #ifdef __WXGTK__ if (GetLayoutDirection() == wxLayout_RightToLeft) { // Maybe we just have to check for m_signX // in the DC, but I leave the #ifdef __WXGTK__ // for now dc.SetDeviceOrigin( org_x + (view_start * xpix), org_y ); } else #endif dc.SetDeviceOrigin( org_x - (view_start * xpix), org_y ); } void wxListHeaderWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) { wxPaintDC dc( this ); PrepareDC( dc ); AdjustDC( dc ); dc.SetFont( GetFont() ); // width and height of the entire header window int w, h; GetClientSize( &w, &h ); m_owner->CalcUnscrolledPosition(w, 0, &w, NULL); dc.SetBackgroundMode(wxTRANSPARENT); dc.SetTextForeground(GetForegroundColour()); int x = HEADER_OFFSET_X; int numColumns = m_owner->GetColumnCount(); wxListItem item; for ( int i = 0; i < numColumns && x < w; i++ ) { m_owner->GetColumn( i, item ); int wCol = item.m_width; int cw = wCol; int ch = h; int flags = 0; if (!m_parent->IsEnabled()) flags |= wxCONTROL_DISABLED; // NB: The code below is not really Mac-specific, but since we are close // to 2.8 release and I don't have time to test on other platforms, I // defined this only for wxMac. If this behavior is desired on // other platforms, please go ahead and revise or remove the #ifdef. #ifdef __WXMAC__ if ( !m_owner->IsVirtual() && (item.m_mask & wxLIST_MASK_STATE) && (item.m_state & wxLIST_STATE_SELECTED) ) flags |= wxCONTROL_SELECTED; #endif wxRendererNative::Get().DrawHeaderButton ( this, dc, wxRect(x, HEADER_OFFSET_Y, cw, ch), flags ); // see if we have enough space for the column label // for this we need the width of the text wxCoord wLabel; wxCoord hLabel; dc.GetTextExtent(item.GetText(), &wLabel, &hLabel); wLabel += 2 * EXTRA_WIDTH; // and the width of the icon, if any int ix = 0, iy = 0; // init them just to suppress the compiler warnings const int image = item.m_image; wxImageList *imageList; if ( image != -1 ) { imageList = m_owner->m_small_image_list; if ( imageList ) { imageList->GetSize(image, ix, iy); wLabel += ix + HEADER_IMAGE_MARGIN_IN_REPORT_MODE; } } else { imageList = NULL; } // ignore alignment if there is not enough space anyhow int xAligned; switch ( wLabel < cw ? item.GetAlign() : wxLIST_FORMAT_LEFT ) { default: wxFAIL_MSG( _T("unknown list item format") ); // fall through case wxLIST_FORMAT_LEFT: xAligned = x; break; case wxLIST_FORMAT_RIGHT: xAligned = x + cw - wLabel; break; case wxLIST_FORMAT_CENTER: xAligned = x + (cw - wLabel) / 2; break; } // draw the text and image clipping them so that they // don't overwrite the column boundary wxDCClipper clipper(dc, x, HEADER_OFFSET_Y, cw, h ); // if we have an image, draw it on the right of the label if ( imageList ) { imageList->Draw ( image, dc, xAligned + wLabel - ix - HEADER_IMAGE_MARGIN_IN_REPORT_MODE, HEADER_OFFSET_Y + (h - 4 - iy)/2, wxIMAGELIST_DRAW_TRANSPARENT ); } dc.DrawText( item.GetText(), xAligned + EXTRA_WIDTH, h / 2 - hLabel / 2 ); //HEADER_OFFSET_Y + EXTRA_HEIGHT ); x += wCol; } // Fill in what's missing to the right of the columns, otherwise we will // leave an unpainted area when columns are removed (and it looks better) if ( x < w ) { wxRendererNative::Get().DrawHeaderButton ( this, dc, wxRect(x, HEADER_OFFSET_Y, w - x, h), 0 ); } } void wxListHeaderWindow::DrawCurrent() { #if 1 m_owner->SetColumnWidth( m_column, m_currentX - m_minX ); #else int x1 = m_currentX; int y1 = 0; m_owner->ClientToScreen( &x1, &y1 ); int x2 = m_currentX; int y2 = 0; m_owner->GetClientSize( NULL, &y2 ); m_owner->ClientToScreen( &x2, &y2 ); wxScreenDC dc; dc.SetLogicalFunction( wxINVERT ); dc.SetPen( *(wxThePenList->FindOrCreatePen(*wxBLACK, 2, wxSOLID ) )); dc.SetBrush( *wxTRANSPARENT_BRUSH ); AdjustDC(dc); dc.DrawLine( x1, y1, x2, y2 ); dc.SetLogicalFunction( wxCOPY ); dc.SetPen( wxNullPen ); dc.SetBrush( wxNullBrush ); #endif } void wxListHeaderWindow::OnMouse( wxMouseEvent &event ) { // we want to work with logical coords int x; m_owner->CalcUnscrolledPosition(event.GetX(), 0, &x, NULL); int y = event.GetY(); if (m_isDragging) { SendListEvent(wxEVT_COMMAND_LIST_COL_DRAGGING, event.GetPosition()); // we don't draw the line beyond our window, but we allow dragging it // there int w = 0; GetClientSize( &w, NULL ); m_owner->CalcUnscrolledPosition(w, 0, &w, NULL); w -= 6; // erase the line if it was drawn if ( m_currentX < w ) DrawCurrent(); if (event.ButtonUp()) { ReleaseMouse(); m_isDragging = false; m_dirty = true; m_owner->SetColumnWidth( m_column, m_currentX - m_minX ); SendListEvent(wxEVT_COMMAND_LIST_COL_END_DRAG, event.GetPosition()); } else { if (x > m_minX + 7) m_currentX = x; else m_currentX = m_minX + 7; // draw in the new location if ( m_currentX < w ) DrawCurrent(); } } else // not dragging { m_minX = 0; bool hit_border = false; // end of the current column int xpos = 0; // find the column where this event occurred int col, countCol = m_owner->GetColumnCount(); for (col = 0; col < countCol; col++) { xpos += m_owner->GetColumnWidth( col ); m_column = col; if ( (abs(x-xpos) < 3) && (y < 22) ) { // near the column border hit_border = true; break; } if ( x < xpos ) { // inside the column break; } m_minX = xpos; } if ( col == countCol ) m_column = -1; if (event.LeftDown() || event.RightUp()) { if (hit_border && event.LeftDown()) { if ( SendListEvent(wxEVT_COMMAND_LIST_COL_BEGIN_DRAG, event.GetPosition()) ) { m_isDragging = true; m_currentX = x; CaptureMouse(); DrawCurrent(); } //else: column resizing was vetoed by the user code } else // click on a column { // record the selected state of the columns if (event.LeftDown()) { for (int i=0; i < m_owner->GetColumnCount(); i++) { wxListItem colItem; m_owner->GetColumn(i, colItem); long state = colItem.GetState(); if (i == m_column) colItem.SetState(state | wxLIST_STATE_SELECTED); else colItem.SetState(state & ~wxLIST_STATE_SELECTED); m_owner->SetColumn(i, colItem); } } SendListEvent( event.LeftDown() ? wxEVT_COMMAND_LIST_COL_CLICK : wxEVT_COMMAND_LIST_COL_RIGHT_CLICK, event.GetPosition()); } } else if (event.Moving()) { bool setCursor; if (hit_border) { setCursor = m_currentCursor == wxSTANDARD_CURSOR; m_currentCursor = m_resizeCursor; } else { setCursor = m_currentCursor != wxSTANDARD_CURSOR; m_currentCursor = wxSTANDARD_CURSOR; } if ( setCursor ) SetCursor(*m_currentCursor); } } } void wxListHeaderWindow::OnSetFocus( wxFocusEvent &WXUNUSED(event) ) { m_owner->SetFocus(); m_owner->Update(); } bool wxListHeaderWindow::SendListEvent(wxEventType type, const wxPoint& pos) { wxWindow *parent = GetParent(); wxListEvent le( type, parent->GetId() ); le.SetEventObject( parent ); le.m_pointDrag = pos; // the position should be relative to the parent window, not // this one for compatibility with MSW and common sense: the // user code doesn't know anything at all about this header // window, so why should it get positions relative to it? le.m_pointDrag.y -= GetSize().y; le.m_col = m_column; return !parent->GetEventHandler()->ProcessEvent( le ) || le.IsAllowed(); } //----------------------------------------------------------------------------- // wxListRenameTimer (internal) //----------------------------------------------------------------------------- wxListRenameTimer::wxListRenameTimer( wxListMainWindow *owner ) { m_owner = owner; } void wxListRenameTimer::Notify() { m_owner->OnRenameTimer(); } //----------------------------------------------------------------------------- // wxListTextCtrlWrapper (internal) //----------------------------------------------------------------------------- BEGIN_EVENT_TABLE(wxListTextCtrlWrapper, wxEvtHandler) EVT_CHAR (wxListTextCtrlWrapper::OnChar) EVT_KEY_UP (wxListTextCtrlWrapper::OnKeyUp) EVT_KILL_FOCUS (wxListTextCtrlWrapper::OnKillFocus) END_EVENT_TABLE() wxListTextCtrlWrapper::wxListTextCtrlWrapper(wxListMainWindow *owner, wxTextCtrl *text, size_t itemEdit) : m_startValue(owner->GetItemText(itemEdit)), m_itemEdited(itemEdit) { m_owner = owner; m_text = text; m_finished = false; m_aboutToFinish = false; wxRect rectLabel = owner->GetLineLabelRect(itemEdit); m_owner->CalcScrolledPosition(rectLabel.x, rectLabel.y, &rectLabel.x, &rectLabel.y); m_text->Create(owner, wxID_ANY, m_startValue, wxPoint(rectLabel.x-4,rectLabel.y-4), wxSize(rectLabel.width+11,rectLabel.height+8)); m_text->SetFocus(); m_text->PushEventHandler(this); } void wxListTextCtrlWrapper::Finish() { if ( !m_finished ) { m_finished = true; m_text->RemoveEventHandler(this); m_owner->FinishEditing(m_text); wxPendingDelete.Append( this ); } } bool wxListTextCtrlWrapper::AcceptChanges() { const wxString value = m_text->GetValue(); // notice that we should always call OnRenameAccept() to generate the "end // label editing" event, even if the user hasn't really changed anything if ( !m_owner->OnRenameAccept(m_itemEdited, value) ) { // vetoed by the user return false; } // accepted, do rename the item (unless nothing changed) if ( value != m_startValue ) m_owner->SetItemText(m_itemEdited, value); return true; } void wxListTextCtrlWrapper::AcceptChangesAndFinish() { m_aboutToFinish = true; // Notify the owner about the changes AcceptChanges(); // Even if vetoed, close the control (consistent with MSW) Finish(); } void wxListTextCtrlWrapper::OnChar( wxKeyEvent &event ) { switch ( event.m_keyCode ) { case WXK_RETURN: AcceptChangesAndFinish(); break; case WXK_ESCAPE: m_owner->OnRenameCancelled( m_itemEdited ); Finish(); break; default: event.Skip(); } } void wxListTextCtrlWrapper::OnKeyUp( wxKeyEvent &event ) { if (m_finished) { event.Skip(); return; } // auto-grow the textctrl: wxSize parentSize = m_owner->GetSize(); wxPoint myPos = m_text->GetPosition(); wxSize mySize = m_text->GetSize(); int sx, sy; m_text->GetTextExtent(m_text->GetValue() + _T("MM"), &sx, &sy); if (myPos.x + sx > parentSize.x) sx = parentSize.x - myPos.x; if (mySize.x > sx) sx = mySize.x; m_text->SetSize(sx, wxDefaultCoord); event.Skip(); } void wxListTextCtrlWrapper::OnKillFocus( wxFocusEvent &event ) { if ( !m_finished && !m_aboutToFinish ) { if ( !AcceptChanges() ) m_owner->OnRenameCancelled( m_itemEdited ); Finish(); } // We must let the native text control handle focus event.Skip(); } //----------------------------------------------------------------------------- // wxListMainWindow //----------------------------------------------------------------------------- BEGIN_EVENT_TABLE(wxListMainWindow,wxScrolledWindow) EVT_PAINT (wxListMainWindow::OnPaint) EVT_ERASE_BACKGROUND (wxListMainWindow::OnErase) EVT_MOUSE_EVENTS (wxListMainWindow::OnMouse) EVT_CHAR (wxListMainWindow::OnChar) EVT_KEY_DOWN (wxListMainWindow::OnKeyDown) EVT_KEY_UP (wxListMainWindow::OnKeyUp) EVT_SET_FOCUS (wxListMainWindow::OnSetFocus) EVT_KILL_FOCUS (wxListMainWindow::OnKillFocus) EVT_SCROLLWIN (wxListMainWindow::OnScroll) EVT_CHILD_FOCUS (wxListMainWindow::OnChildFocus) END_EVENT_TABLE() void wxListMainWindow::Init() { m_dirty = true; m_countVirt = 0; m_lineFrom = m_lineTo = (size_t)-1; m_linesPerPage = 0; m_headerWidth = m_lineHeight = 0; m_small_image_list = (wxImageList *) NULL; m_normal_image_list = (wxImageList *) NULL; m_small_spacing = 30; m_normal_spacing = 40; m_hasFocus = false; m_dragCount = 0; m_isCreated = false; m_lastOnSame = false; m_renameTimer = new wxListRenameTimer( this ); m_textctrlWrapper = NULL; m_current = m_lineLastClicked = m_lineSelectSingleOnUp = m_lineBeforeLastClicked = (size_t)-1; m_freezeCount = 0; } wxListMainWindow::wxListMainWindow() { Init(); } wxListMainWindow::wxListMainWindow( wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString &name ) : wxScrolledWindow( parent, id, pos, size, style | wxHSCROLL | wxVSCROLL, name ) { Init(); m_highlightBrush = *(wxTheBrushList->FindOrCreateBrush( wxSystemSettings::GetColour ( wxSYS_COLOUR_HIGHLIGHT ), wxSOLID )); m_highlightUnfocusedBrush = *(wxTheBrushList->FindOrCreateBrush( wxSystemSettings::GetColour ( wxSYS_COLOUR_BTNSHADOW ), wxSOLID )); SetScrollbars( 0, 0, 0, 0, 0, 0 ); wxVisualAttributes attr = wxGenericListCtrl::GetClassDefaultAttributes(); SetOwnForegroundColour( attr.colFg ); SetOwnBackgroundColour( attr.colBg ); if (!m_hasFont) SetOwnFont( attr.font ); } wxListMainWindow::~wxListMainWindow() { DoDeleteAllItems(); WX_CLEAR_LIST(wxListHeaderDataList, m_columns); WX_CLEAR_ARRAY(m_aColWidths); delete m_renameTimer; } void wxListMainWindow::CacheLineData(size_t line) { wxGenericListCtrl *listctrl = GetListCtrl(); wxListLineData *ld = GetDummyLine(); size_t countCol = GetColumnCount(); for ( size_t col = 0; col < countCol; col++ ) { ld->SetText(col, listctrl->OnGetItemText(line, col)); ld->SetImage(col, listctrl->OnGetItemColumnImage(line, col)); } ld->SetAttr(listctrl->OnGetItemAttr(line)); } wxListLineData *wxListMainWindow::GetDummyLine() const { wxASSERT_MSG( !IsEmpty(), _T("invalid line index") ); wxASSERT_MSG( IsVirtual(), _T("GetDummyLine() shouldn't be called") ); wxListMainWindow *self = wxConstCast(this, wxListMainWindow); // we need to recreate the dummy line if the number of columns in the // control changed as it would have the incorrect number of fields // otherwise if ( !m_lines.IsEmpty() && m_lines[0].m_items.GetCount() != (size_t)GetColumnCount() ) { self->m_lines.Clear(); } if ( m_lines.IsEmpty() ) { wxListLineData *line = new wxListLineData(self); self->m_lines.Add(line); // don't waste extra memory -- there never going to be anything // else/more in this array self->m_lines.Shrink(); } return &m_lines[0]; } // ---------------------------------------------------------------------------- // line geometry (report mode only) // ---------------------------------------------------------------------------- wxCoord wxListMainWindow::GetLineHeight() const { // we cache the line height as calling GetTextExtent() is slow if ( !m_lineHeight ) { wxListMainWindow *self = wxConstCast(this, wxListMainWindow); wxClientDC dc( self ); dc.SetFont( GetFont() ); wxCoord y; dc.GetTextExtent(_T("H"), NULL, &y); if ( m_small_image_list && m_small_image_list->GetImageCount() ) { int iw = 0, ih = 0; m_small_image_list->GetSize(0, iw, ih); y = wxMax(y, ih); } y += EXTRA_HEIGHT; self->m_lineHeight = y + LINE_SPACING; } return m_lineHeight; } wxCoord wxListMainWindow::GetLineY(size_t line) const { wxASSERT_MSG( InReportView(), _T("only works in report mode") ); return LINE_SPACING + line * GetLineHeight(); } wxRect wxListMainWindow::GetLineRect(size_t line) const { if ( !InReportView() ) return GetLine(line)->m_gi->m_rectAll; wxRect rect; rect.x = HEADER_OFFSET_X; rect.y = GetLineY(line); rect.width = GetHeaderWidth(); rect.height = GetLineHeight(); return rect; } wxRect wxListMainWindow::GetLineLabelRect(size_t line) const { if ( !InReportView() ) return GetLine(line)->m_gi->m_rectLabel; int image_x = 0; wxListLineData *data = GetLine(line); wxListItemDataList::compatibility_iterator node = data->m_items.GetFirst(); if (node) { wxListItemData *item = node->GetData(); if ( item->HasImage() ) { int ix, iy; GetImageSize( item->GetImage(), ix, iy ); image_x = 3 + ix + IMAGE_MARGIN_IN_REPORT_MODE; } } wxRect rect; rect.x = image_x + HEADER_OFFSET_X; rect.y = GetLineY(line); rect.width = GetColumnWidth(0) - image_x; rect.height = GetLineHeight(); return rect; } wxRect wxListMainWindow::GetLineIconRect(size_t line) const { if ( !InReportView() ) return GetLine(line)->m_gi->m_rectIcon; wxListLineData *ld = GetLine(line); wxASSERT_MSG( ld->HasImage(), _T("should have an image") ); wxRect rect; rect.x = HEADER_OFFSET_X; rect.y = GetLineY(line); GetImageSize(ld->GetImage(), rect.width, rect.height); return rect; } wxRect wxListMainWindow::GetLineHighlightRect(size_t line) const { return InReportView() ? GetLineRect(line) : GetLine(line)->m_gi->m_rectHighlight; } long wxListMainWindow::HitTestLine(size_t line, int x, int y) const { wxASSERT_MSG( line < GetItemCount(), _T("invalid line in HitTestLine") ); wxListLineData *ld = GetLine(line); if ( ld->HasImage() && GetLineIconRect(line).Contains(x, y) ) return wxLIST_HITTEST_ONITEMICON; // VS: Testing for "ld->HasText() || InReportView()" instead of // "ld->HasText()" is needed to make empty lines in report view // possible if ( ld->HasText() || InReportView() ) { wxRect rect = InReportView() ? GetLineRect(line) : GetLineLabelRect(line); if ( rect.Contains(x, y) ) return wxLIST_HITTEST_ONITEMLABEL; } return 0; } // ---------------------------------------------------------------------------- // highlight (selection) handling // ---------------------------------------------------------------------------- bool wxListMainWindow::IsHighlighted(size_t line) const { if ( IsVirtual() ) { return m_selStore.IsSelected(line); } else // !virtual { wxListLineData *ld = GetLine(line); wxCHECK_MSG( ld, false, _T("invalid index in IsHighlighted") ); return ld->IsHighlighted(); } } void wxListMainWindow::HighlightLines( size_t lineFrom, size_t lineTo, bool highlight ) { if ( IsVirtual() ) { wxArrayInt linesChanged; if ( !m_selStore.SelectRange(lineFrom, lineTo, highlight, &linesChanged) ) { // meny items changed state, refresh everything RefreshLines(lineFrom, lineTo); } else // only a few items changed state, refresh only them { size_t count = linesChanged.GetCount(); for ( size_t n = 0; n < count; n++ ) { RefreshLine(linesChanged[n]); } } } else // iterate over all items in non report view { for ( size_t line = lineFrom; line <= lineTo; line++ ) { if ( HighlightLine(line, highlight) ) RefreshLine(line); } } } bool wxListMainWindow::HighlightLine( size_t line, bool highlight ) { bool changed; if ( IsVirtual() ) { changed = m_selStore.SelectItem(line, highlight); } else // !virtual { wxListLineData *ld = GetLine(line); wxCHECK_MSG( ld, false, _T("invalid index in HighlightLine") ); changed = ld->Highlight(highlight); } if ( changed ) { SendNotify( line, highlight ? wxEVT_COMMAND_LIST_ITEM_SELECTED : wxEVT_COMMAND_LIST_ITEM_DESELECTED ); } return changed; } void wxListMainWindow::RefreshLine( size_t line ) { if ( InReportView() ) { size_t visibleFrom, visibleTo; GetVisibleLinesRange(&visibleFrom, &visibleTo); if ( line < visibleFrom || line > visibleTo ) return; } wxRect rect = GetLineRect(line); CalcScrolledPosition( rect.x, rect.y, &rect.x, &rect.y ); RefreshRect( rect ); } void wxListMainWindow::RefreshLines( size_t lineFrom, size_t lineTo ) { // we suppose that they are ordered by caller wxASSERT_MSG( lineFrom <= lineTo, _T("indices in disorder") ); wxASSERT_MSG( lineTo < GetItemCount(), _T("invalid line range") ); if ( InReportView() ) { size_t visibleFrom, visibleTo; GetVisibleLinesRange(&visibleFrom, &visibleTo); if ( lineFrom < visibleFrom ) lineFrom = visibleFrom; if ( lineTo > visibleTo ) lineTo = visibleTo; wxRect rect; rect.x = 0; rect.y = GetLineY(lineFrom); rect.width = GetClientSize().x; rect.height = GetLineY(lineTo) - rect.y + GetLineHeight(); CalcScrolledPosition( rect.x, rect.y, &rect.x, &rect.y ); RefreshRect( rect ); } else // !report { // TODO: this should be optimized... for ( size_t line = lineFrom; line <= lineTo; line++ ) { RefreshLine(line); } } } void wxListMainWindow::RefreshAfter( size_t lineFrom ) { if ( InReportView() ) { size_t visibleFrom, visibleTo; GetVisibleLinesRange(&visibleFrom, &visibleTo); if ( lineFrom < visibleFrom ) lineFrom = visibleFrom; else if ( lineFrom > visibleTo ) return; wxRect rect; rect.x = 0; rect.y = GetLineY(lineFrom); CalcScrolledPosition( rect.x, rect.y, &rect.x, &rect.y ); wxSize size = GetClientSize(); rect.width = size.x; // refresh till the bottom of the window rect.height = size.y - rect.y; RefreshRect( rect ); } else // !report { // TODO: how to do it more efficiently? m_dirty = true; } } void wxListMainWindow::RefreshSelected() { if ( IsEmpty() ) return; size_t from, to; if ( InReportView() ) { GetVisibleLinesRange(&from, &to); } else // !virtual { from = 0; to = GetItemCount() - 1; } if ( HasCurrent() && m_current >= from && m_current <= to ) RefreshLine(m_current); for ( size_t line = from; line <= to; line++ ) { // NB: the test works as expected even if m_current == -1 if ( line != m_current && IsHighlighted(line) ) RefreshLine(line); } } void wxListMainWindow::Freeze() { m_freezeCount++; } void wxListMainWindow::Thaw() { wxCHECK_RET( m_freezeCount > 0, _T("thawing unfrozen list control?") ); if ( --m_freezeCount == 0 ) Refresh(); } void wxListMainWindow::OnPaint( wxPaintEvent &WXUNUSED(event) ) { // Note: a wxPaintDC must be constructed even if no drawing is // done (a Windows requirement). wxBufferedPaintDC dc( this ); // Ensure an uniform background color, as to avoid differences between // the automatically cleared parts and the rest of the canvas. dc.SetBackground(*(wxTheBrushList->FindOrCreateBrush(wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOX), wxSOLID))); // We need to clear the DC manually, since we intercept BG-erase events. // Clearing must be done first thing because caching of the double-buffering causes artifacts otherwise. dc.Clear(); if ( m_freezeCount ) return; if ( m_dirty ) // delay the repainting until we calculate all the items positions return; PrepareDC( dc ); // IsEmpty is checked now, after clearing, to avoid garbage on empty lists. if ( IsEmpty() ) { return; } int dev_x, dev_y; CalcScrolledPosition( 0, 0, &dev_x, &dev_y ); dc.SetFont( GetFont() ); if ( InReportView() ) { int lineHeight = GetLineHeight(); size_t visibleFrom, visibleTo; GetVisibleLinesRange(&visibleFrom, &visibleTo); wxRect rectLine; int xOrig = dc.LogicalToDeviceX( 0 ); int yOrig = dc.LogicalToDeviceY( 0 ); // tell the caller cache to cache the data if ( IsVirtual() ) { wxListEvent evCache(wxEVT_COMMAND_LIST_CACHE_HINT, GetParent()->GetId()); evCache.SetEventObject( GetParent() ); evCache.m_oldItemIndex = visibleFrom; evCache.m_itemIndex = visibleTo; GetParent()->GetEventHandler()->ProcessEvent( evCache ); } for ( size_t line = visibleFrom; line <= visibleTo; line++ ) { rectLine = GetLineRect(line); if ( !IsExposed(rectLine.x + xOrig, rectLine.y + yOrig, rectLine.width, rectLine.height) ) { // don't redraw unaffected lines to avoid flicker continue; } if (HasFlag(wxLC_OWNERDRAW)) { ((wxGenericListCtrl*)m_parent)->OnDrawItem(line, &dc, rectLine, GetLineHighlightRect(line), IsHighlighted(line)); } else { GetLine(line)->DrawInReportMode( &dc, rectLine, GetLineHighlightRect(line), IsHighlighted(line) ); } } if ( HasFlag(wxLC_HRULES) ) { wxPen pen = *(wxThePenList->FindOrCreatePen(GetRuleColour(), 1, wxSOLID)); wxSize clientSize = GetClientSize(); size_t i = visibleFrom; if (i == 0) i = 1; // Don't draw the first one for ( ; i <= visibleTo; i++ ) { dc.SetPen(pen); dc.SetBrush( *wxTRANSPARENT_BRUSH ); dc.DrawLine(0 - dev_x, i * lineHeight, clientSize.x - dev_x, i * lineHeight); } // Draw last horizontal rule if ( visibleTo == GetItemCount() - 1 ) { dc.SetPen( pen ); dc.SetBrush( *wxTRANSPARENT_BRUSH ); dc.DrawLine(0 - dev_x, (m_lineTo + 1) * lineHeight, clientSize.x - dev_x , (m_lineTo + 1) * lineHeight ); } } // Draw vertical rules if required if ( HasFlag(wxLC_VRULES) && !IsEmpty() ) { wxPen pen = *(wxThePenList->FindOrCreatePen(GetRuleColour(), 1, wxSOLID)); wxRect firstItemRect, lastItemRect; GetItemRect(visibleFrom, firstItemRect); GetItemRect(visibleTo, lastItemRect); int x = firstItemRect.GetX(); dc.SetPen(pen); dc.SetBrush(* wxTRANSPARENT_BRUSH); for (int col = 0; col < GetColumnCount(); col++) { int colWidth = GetColumnWidth(col); x += colWidth; int x_pos = x - dev_x; if (col < GetColumnCount()-1) x_pos -= 2; dc.DrawLine(x_pos, firstItemRect.GetY() - 1 - dev_y, x_pos, lastItemRect.GetBottom() + 1 - dev_y); } } } else // !report { size_t count = GetItemCount(); for ( size_t i = 0; i < count; i++ ) { GetLine(i)->Draw( &dc ); } } #ifndef __WXMAC__ // Don't draw rect outline under Mac at all. if ( HasCurrent() ) { if ( m_hasFocus ) { wxRect rect( GetLineHighlightRect( m_current ) ); #ifndef __WXGTK20__ dc.SetPen( *wxBLACK_PEN ); dc.SetBrush( *wxTRANSPARENT_BRUSH ); dc.DrawRectangle( rect ); #else wxRendererNative::Get().DrawItemSelectionRect( this, dc, rect, wxCONTROL_CURRENT|wxCONTROL_FOCUSED ); #endif } } #endif } void wxListMainWindow::HighlightAll( bool on ) { if ( IsSingleSel() ) { wxASSERT_MSG( !on, _T("can't do this in a single selection control") ); // we just have one item to turn off if ( HasCurrent() && IsHighlighted(m_current) ) { HighlightLine(m_current, false); RefreshLine(m_current); } } else // multi selection { if ( !IsEmpty() ) HighlightLines(0, GetItemCount() - 1, on); } } void wxListMainWindow::OnChildFocus(wxChildFocusEvent& WXUNUSED(event)) { // Do nothing here. This prevents the default handler in wxScrolledWindow // from needlessly scrolling the window when the edit control is // dismissed. See ticket #9563. } void wxListMainWindow::SendNotify( size_t line, wxEventType command, const wxPoint& point ) { wxListEvent le( command, GetParent()->GetId() ); le.SetEventObject( GetParent() ); le.m_itemIndex = line; // set only for events which have position if ( point != wxDefaultPosition ) le.m_pointDrag = point; // don't try to get the line info for virtual list controls: the main // program has it anyhow and if we did it would result in accessing all // the lines, even those which are not visible now and this is precisely // what we're trying to avoid if ( !IsVirtual() ) { if ( line != (size_t)-1 ) { GetLine(line)->GetItem( 0, le.m_item ); } //else: this happens for wxEVT_COMMAND_LIST_ITEM_FOCUSED event } //else: there may be no more such item GetParent()->GetEventHandler()->ProcessEvent( le ); } void wxListMainWindow::ChangeCurrent(size_t current) { m_current = current; // as the current item changed, we shouldn't start editing it when the // "slow click" timer expires as the click happened on another item if ( m_renameTimer->IsRunning() ) m_renameTimer->Stop(); SendNotify(current, wxEVT_COMMAND_LIST_ITEM_FOCUSED); } wxTextCtrl *wxListMainWindow::EditLabel(long item, wxClassInfo* textControlClass) { wxCHECK_MSG( (item >= 0) && ((size_t)item < GetItemCount()), NULL, wxT("wrong index in wxGenericListCtrl::EditLabel()") ); wxASSERT_MSG( textControlClass->IsKindOf(CLASSINFO(wxTextCtrl)), wxT("EditLabel() needs a text control") ); size_t itemEdit = (size_t)item; wxListEvent le( wxEVT_COMMAND_LIST_BEGIN_LABEL_EDIT, GetParent()->GetId() ); le.SetEventObject( GetParent() ); le.m_itemIndex = item; wxListLineData *data = GetLine(itemEdit); wxCHECK_MSG( data, NULL, _T("invalid index in EditLabel()") ); data->GetItem( 0, le.m_item ); if ( GetParent()->GetEventHandler()->ProcessEvent( le ) && !le.IsAllowed() ) { // vetoed by user code return NULL; } // We have to call this here because the label in question might just have // been added and no screen update taken place. if ( m_dirty ) { wxSafeYield(); // Pending events dispatched by wxSafeYield might have changed the item // count if ( (size_t)item >= GetItemCount() ) return NULL; } wxTextCtrl * const text = (wxTextCtrl *)textControlClass->CreateObject(); m_textctrlWrapper = new wxListTextCtrlWrapper(this, text, item); return m_textctrlWrapper->GetText(); } void wxListMainWindow::OnRenameTimer() { wxCHECK_RET( HasCurrent(), wxT("unexpected rename timer") ); EditLabel( m_current ); } bool wxListMainWindow::OnRenameAccept(size_t itemEdit, const wxString& value) { wxListEvent le( wxEVT_COMMAND_LIST_END_LABEL_EDIT, GetParent()->GetId() ); le.SetEventObject( GetParent() ); le.m_itemIndex = itemEdit; wxListLineData *data = GetLine(itemEdit); wxCHECK_MSG( data, false, _T("invalid index in OnRenameAccept()") ); data->GetItem( 0, le.m_item ); le.m_item.m_text = value; return !GetParent()->GetEventHandler()->ProcessEvent( le ) || le.IsAllowed(); } void wxListMainWindow::OnRenameCancelled(size_t itemEdit) { // let owner know that the edit was cancelled wxListEvent le( wxEVT_COMMAND_LIST_END_LABEL_EDIT, GetParent()->GetId() ); le.SetEditCanceled(true); le.SetEventObject( GetParent() ); le.m_itemIndex = itemEdit; wxListLineData *data = GetLine(itemEdit); wxCHECK_RET( data, _T("invalid index in OnRenameCancelled()") ); data->GetItem( 0, le.m_item ); GetEventHandler()->ProcessEvent( le ); } void wxListMainWindow::OnMouse( wxMouseEvent &event ) { #ifdef __WXMAC__ // On wxMac we can't depend on the EVT_KILL_FOCUS event to properly // shutdown the edit control when the mouse is clicked elsewhere on the // listctrl because the order of events is different (or something like // that), so explicitly end the edit if it is active. if ( event.LeftDown() && m_textctrlWrapper ) m_textctrlWrapper->AcceptChangesAndFinish(); #endif // __WXMAC__ if ( event.LeftDown() ) SetFocusIgnoringChildren(); event.SetEventObject( GetParent() ); if ( GetParent()->GetEventHandler()->ProcessEvent( event) ) return; if (event.GetEventType() == wxEVT_MOUSEWHEEL) { // let the base handle mouse wheel events. event.Skip(); return; } if ( !HasCurrent() || IsEmpty() ) { if (event.RightDown()) { SendNotify( (size_t)-1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, event.GetPosition() ); // Allow generation of context menu event event.Skip(); } return; } if (m_dirty) return; if ( !(event.Dragging() || event.ButtonDown() || event.LeftUp() || event.ButtonDClick()) ) return; int x = event.GetX(); int y = event.GetY(); CalcUnscrolledPosition( x, y, &x, &y ); // where did we hit it (if we did)? long hitResult = 0; size_t count = GetItemCount(), current; if ( InReportView() ) { current = y / GetLineHeight(); if ( current < count ) hitResult = HitTestLine(current, x, y); } else // !report { // TODO: optimize it too! this is less simple than for report view but // enumerating all items is still not a way to do it!! for ( current = 0; current < count; current++ ) { hitResult = HitTestLine(current, x, y); if ( hitResult ) break; } } if (event.Dragging()) { if (m_dragCount == 0) { // we have to report the raw, physical coords as we want to be // able to call HitTest(event.m_pointDrag) from the user code to // get the item being dragged m_dragStart = event.GetPosition(); } m_dragCount++; if (m_dragCount != 3) return; int command = event.RightIsDown() ? wxEVT_COMMAND_LIST_BEGIN_RDRAG : wxEVT_COMMAND_LIST_BEGIN_DRAG; wxListEvent le( command, GetParent()->GetId() ); le.SetEventObject( GetParent() ); le.m_itemIndex = m_lineLastClicked; le.m_pointDrag = m_dragStart; GetParent()->GetEventHandler()->ProcessEvent( le ); return; } else { m_dragCount = 0; } if ( !hitResult ) { // outside of any item if (event.RightDown()) { SendNotify( (size_t) -1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, event.GetPosition() ); wxContextMenuEvent evtCtx( wxEVT_CONTEXT_MENU, GetParent()->GetId(), ClientToScreen(event.GetPosition())); evtCtx.SetEventObject(GetParent()); GetParent()->GetEventHandler()->ProcessEvent(evtCtx); } else { // reset the selection and bail out HighlightAll(false); } return; } bool forceClick = false; if (event.ButtonDClick()) { if ( m_renameTimer->IsRunning() ) m_renameTimer->Stop(); m_lastOnSame = false; if ( current == m_lineLastClicked ) { SendNotify( current, wxEVT_COMMAND_LIST_ITEM_ACTIVATED ); return; } else { // The first click was on another item, so don't interpret this as // a double click, but as a simple click instead forceClick = true; } } if (event.LeftUp()) { if (m_lineSelectSingleOnUp != (size_t)-1) { // select single line HighlightAll( false ); ReverseHighlight(m_lineSelectSingleOnUp); } if (m_lastOnSame) { if ((current == m_current) && (hitResult == wxLIST_HITTEST_ONITEMLABEL) && HasFlag(wxLC_EDIT_LABELS) ) { if (InReportView()) { wxRect label = GetLineLabelRect( current ); if (label.Contains( x, y )) m_renameTimer->Start( 250, true ); } else m_renameTimer->Start( 250, true ); } } m_lastOnSame = false; m_lineSelectSingleOnUp = (size_t)-1; } else { // This is necessary, because after a DnD operation in // from and to ourself, the up event is swallowed by the // DnD code. So on next non-up event (which means here and // now) m_lineSelectSingleOnUp should be reset. m_lineSelectSingleOnUp = (size_t)-1; } if (event.RightDown()) { m_lineBeforeLastClicked = m_lineLastClicked; m_lineLastClicked = current; // If the item is already selected, do not update the selection. // Multi-selections should not be cleared if a selected item is clicked. if (!IsHighlighted(current)) { HighlightAll(false); ChangeCurrent(current); ReverseHighlight(m_current); } SendNotify( current, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, event.GetPosition() ); wxContextMenuEvent evtCtx( wxEVT_CONTEXT_MENU, GetParent()->GetId(), ClientToScreen(event.GetPosition())); evtCtx.SetEventObject(GetParent()); GetParent()->GetEventHandler()->ProcessEvent(evtCtx); } else if (event.MiddleDown()) { SendNotify( current, wxEVT_COMMAND_LIST_ITEM_MIDDLE_CLICK ); } else if ( event.LeftDown() || forceClick ) { m_lineBeforeLastClicked = m_lineLastClicked; m_lineLastClicked = current; size_t oldCurrent = m_current; bool oldWasSelected = IsHighlighted(m_current); bool cmdModifierDown = event.CmdDown(); if ( IsSingleSel() || !(cmdModifierDown || event.ShiftDown()) ) { if ( IsSingleSel() || !IsHighlighted(current) ) { HighlightAll( false ); ChangeCurrent(current); ReverseHighlight(m_current); } else // multi sel & current is highlighted & no mod keys { m_lineSelectSingleOnUp = current; ChangeCurrent(current); // change focus } } else // multi sel & either ctrl or shift is down { if (cmdModifierDown) { ChangeCurrent(current); ReverseHighlight(m_current); } else if (event.ShiftDown()) { ChangeCurrent(current); size_t lineFrom = oldCurrent, lineTo = current; if ( lineTo < lineFrom ) { lineTo = lineFrom; lineFrom = m_current; } HighlightLines(lineFrom, lineTo); } else // !ctrl, !shift { // test in the enclosing if should make it impossible wxFAIL_MSG( _T("how did we get here?") ); } } if (m_current != oldCurrent) RefreshLine( oldCurrent ); // forceClick is only set if the previous click was on another item m_lastOnSame = !forceClick && (m_current == oldCurrent) && oldWasSelected; } } void wxListMainWindow::MoveToItem(size_t item) { if ( item == (size_t)-1 ) return; wxRect rect = GetLineRect(item); int client_w, client_h; GetClientSize( &client_w, &client_h ); const int hLine = GetLineHeight(); int view_x = SCROLL_UNIT_X * GetScrollPos( wxHORIZONTAL ); int view_y = hLine * GetScrollPos( wxVERTICAL ); if ( InReportView() ) { // the next we need the range of lines shown it might be different, // so recalculate it ResetVisibleLinesRange(); if (rect.y < view_y) Scroll( -1, rect.y / hLine ); if (rect.y + rect.height + 5 > view_y + client_h) Scroll( -1, (rect.y + rect.height - client_h + hLine) / hLine ); #ifdef __WXMAC__ // At least on Mac the visible lines value will get reset inside of // Scroll *before* it actually scrolls the window because of the // Update() that happens there, so it will still have the wrong value. // So let's reset it again and wait for it to be recalculated in the // next paint event. I would expect this problem to show up in wxGTK // too but couldn't duplicate it there. Perhaps the order of events // is different... --Robin ResetVisibleLinesRange(); #endif } else // !report { if (rect.x-view_x < 5) Scroll( (rect.x - 5) / SCROLL_UNIT_X, -1 ); if (rect.x + rect.width - 5 > view_x + client_w) Scroll( (rect.x + rect.width - client_w + SCROLL_UNIT_X) / SCROLL_UNIT_X, -1 ); } } // ---------------------------------------------------------------------------- // keyboard handling // ---------------------------------------------------------------------------- void wxListMainWindow::OnArrowChar(size_t newCurrent, const wxKeyEvent& event) { wxCHECK_RET( newCurrent < (size_t)GetItemCount(), _T("invalid item index in OnArrowChar()") ); size_t oldCurrent = m_current; // in single selection we just ignore Shift as we can't select several // items anyhow if ( event.ShiftDown() && !IsSingleSel() ) { ChangeCurrent(newCurrent); // refresh the old focus to remove it RefreshLine( oldCurrent ); // select all the items between the old and the new one if ( oldCurrent > newCurrent ) { newCurrent = oldCurrent; oldCurrent = m_current; } HighlightLines(oldCurrent, newCurrent); } else // !shift { // all previously selected items are unselected unless ctrl is held // in a multiselection control if ( !event.ControlDown() || IsSingleSel() ) HighlightAll(false); ChangeCurrent(newCurrent); // refresh the old focus to remove it RefreshLine( oldCurrent ); // in single selection mode we must always have a selected item if ( !event.ControlDown() || IsSingleSel() ) HighlightLine( m_current, true ); } RefreshLine( m_current ); MoveToFocus(); } void wxListMainWindow::OnKeyDown( wxKeyEvent &event ) { wxWindow *parent = GetParent(); // propagate the key event upwards wxKeyEvent ke(event); if (parent->GetEventHandler()->ProcessEvent( ke )) return; event.Skip(); } void wxListMainWindow::OnKeyUp( wxKeyEvent &event ) { wxWindow *parent = GetParent(); // propagate the key event upwards wxKeyEvent ke(event); ke.SetEventObject( parent ); if (parent->GetEventHandler()->ProcessEvent( ke )) return; event.Skip(); } void wxListMainWindow::OnChar( wxKeyEvent &event ) { wxWindow *parent = GetParent(); // send a list_key event up if ( HasCurrent() ) { wxListEvent le( wxEVT_COMMAND_LIST_KEY_DOWN, GetParent()->GetId() ); le.m_itemIndex = m_current; GetLine(m_current)->GetItem( 0, le.m_item ); le.m_code = event.GetKeyCode(); le.SetEventObject( parent ); parent->GetEventHandler()->ProcessEvent( le ); } // propagate the char event upwards wxKeyEvent ke(event); if (parent->GetEventHandler()->ProcessEvent( ke )) return; if (event.GetKeyCode() == WXK_TAB) { wxNavigationKeyEvent nevent; nevent.SetWindowChange( event.ControlDown() ); nevent.SetDirection( !event.ShiftDown() ); nevent.SetEventObject( GetParent()->GetParent() ); nevent.SetCurrentFocus( m_parent ); if (GetParent()->GetParent()->GetEventHandler()->ProcessEvent( nevent )) return; } // no item -> nothing to do if (!HasCurrent()) { event.Skip(); return; } // don't use m_linesPerPage directly as it might not be computed yet const int pageSize = GetCountPerPage(); wxCHECK_RET( pageSize, _T("should have non zero page size") ); if (GetLayoutDirection() == wxLayout_RightToLeft) { if (event.GetKeyCode() == WXK_RIGHT) event.m_keyCode = WXK_LEFT; else if (event.GetKeyCode() == WXK_LEFT) event.m_keyCode = WXK_RIGHT; } switch ( event.GetKeyCode() ) { case WXK_UP: if ( m_current > 0 ) OnArrowChar( m_current - 1, event ); break; case WXK_DOWN: if ( m_current < (size_t)GetItemCount() - 1 ) OnArrowChar( m_current + 1, event ); break; case WXK_END: if (!IsEmpty()) OnArrowChar( GetItemCount() - 1, event ); break; case WXK_HOME: if (!IsEmpty()) OnArrowChar( 0, event ); break; case WXK_PAGEUP: { int steps = InReportView() ? pageSize - 1 : m_current % pageSize; int index = m_current - steps; if (index < 0) index = 0; OnArrowChar( index, event ); } break; case WXK_PAGEDOWN: { int steps = InReportView() ? pageSize - 1 : pageSize - (m_current % pageSize) - 1; size_t index = m_current + steps; size_t count = GetItemCount(); if ( index >= count ) index = count - 1; OnArrowChar( index, event ); } break; case WXK_LEFT: if ( !InReportView() ) { int index = m_current - pageSize; if (index < 0) index = 0; OnArrowChar( index, event ); } break; case WXK_RIGHT: if ( !InReportView() ) { size_t index = m_current + pageSize; size_t count = GetItemCount(); if ( index >= count ) index = count - 1; OnArrowChar( index, event ); } break; case WXK_SPACE: if ( IsSingleSel() ) { if ( event.ControlDown() ) { ReverseHighlight(m_current); } else // normal space press { SendNotify( m_current, wxEVT_COMMAND_LIST_ITEM_ACTIVATED ); } } else // multiple selection { ReverseHighlight(m_current); } break; case WXK_RETURN: case WXK_EXECUTE: SendNotify( m_current, wxEVT_COMMAND_LIST_ITEM_ACTIVATED ); break; default: event.Skip(); } } // ---------------------------------------------------------------------------- // focus handling // ---------------------------------------------------------------------------- void wxListMainWindow::OnSetFocus( wxFocusEvent &WXUNUSED(event) ) { if ( GetParent() ) { wxFocusEvent event( wxEVT_SET_FOCUS, GetParent()->GetId() ); event.SetEventObject( GetParent() ); if ( GetParent()->GetEventHandler()->ProcessEvent( event) ) return; } // wxGTK sends us EVT_SET_FOCUS events even if we had never got // EVT_KILL_FOCUS before which means that we finish by redrawing the items // which are already drawn correctly resulting in horrible flicker - avoid // it if ( !m_hasFocus ) { m_hasFocus = true; RefreshSelected(); } } void wxListMainWindow::OnKillFocus( wxFocusEvent &WXUNUSED(event) ) { if ( GetParent() ) { wxFocusEvent event( wxEVT_KILL_FOCUS, GetParent()->GetId() ); event.SetEventObject( GetParent() ); if ( GetParent()->GetEventHandler()->ProcessEvent( event) ) return; } m_hasFocus = false; RefreshSelected(); } void wxListMainWindow::DrawImage( int index, wxDC *dc, int x, int y ) { if ( HasFlag(wxLC_ICON) && (m_normal_image_list)) { m_normal_image_list->Draw( index, *dc, x, y, wxIMAGELIST_DRAW_TRANSPARENT ); } else if ( HasFlag(wxLC_SMALL_ICON) && (m_small_image_list)) { m_small_image_list->Draw( index, *dc, x, y, wxIMAGELIST_DRAW_TRANSPARENT ); } else if ( HasFlag(wxLC_LIST) && (m_small_image_list)) { m_small_image_list->Draw( index, *dc, x, y, wxIMAGELIST_DRAW_TRANSPARENT ); } else if ( InReportView() && (m_small_image_list)) { m_small_image_list->Draw( index, *dc, x, y, wxIMAGELIST_DRAW_TRANSPARENT ); } } void wxListMainWindow::GetImageSize( int index, int &width, int &height ) const { if ( HasFlag(wxLC_ICON) && m_normal_image_list ) { m_normal_image_list->GetSize( index, width, height ); } else if ( HasFlag(wxLC_SMALL_ICON) && m_small_image_list ) { m_small_image_list->GetSize( index, width, height ); } else if ( HasFlag(wxLC_LIST) && m_small_image_list ) { m_small_image_list->GetSize( index, width, height ); } else if ( InReportView() && m_small_image_list ) { m_small_image_list->GetSize( index, width, height ); } else { width = height = 0; } } int wxListMainWindow::GetTextLength( const wxString &s ) const { wxClientDC dc( wxConstCast(this, wxListMainWindow) ); dc.SetFont( GetFont() ); wxCoord lw; dc.GetTextExtent( s, &lw, NULL ); return lw + AUTOSIZE_COL_MARGIN; } void wxListMainWindow::SetImageList( wxImageList *imageList, int which ) { m_dirty = true; // calc the spacing from the icon size int width = 0, height = 0; if ((imageList) && (imageList->GetImageCount()) ) imageList->GetSize(0, width, height); if (which == wxIMAGE_LIST_NORMAL) { m_normal_image_list = imageList; m_normal_spacing = width + 8; } if (which == wxIMAGE_LIST_SMALL) { m_small_image_list = imageList; m_small_spacing = width + 14; m_lineHeight = 0; // ensure that the line height will be recalc'd } } void wxListMainWindow::SetItemSpacing( int spacing, bool isSmall ) { m_dirty = true; if (isSmall) m_small_spacing = spacing; else m_normal_spacing = spacing; } int wxListMainWindow::GetItemSpacing( bool isSmall ) { return isSmall ? m_small_spacing : m_normal_spacing; } // ---------------------------------------------------------------------------- // columns // ---------------------------------------------------------------------------- void wxListMainWindow::SetColumn( int col, wxListItem &item ) { wxListHeaderDataList::compatibility_iterator node = m_columns.Item( col ); wxCHECK_RET( node, _T("invalid column index in SetColumn") ); if ( item.m_width == wxLIST_AUTOSIZE_USEHEADER ) item.m_width = GetTextLength( item.m_text ); wxListHeaderData *column = node->GetData(); column->SetItem( item ); wxListHeaderWindow *headerWin = GetListCtrl()->m_headerWin; if ( headerWin ) headerWin->m_dirty = true; m_dirty = true; // invalidate it as it has to be recalculated m_headerWidth = 0; } void wxListMainWindow::SetColumnWidth( int col, int width ) { { wxCHECK_RET( col >= 0 && col < GetColumnCount(), _T("invalid column index") ); } { wxCHECK_RET( InReportView(), _T("SetColumnWidth() can only be called in report mode.") ); } m_dirty = true; wxListHeaderWindow *headerWin = GetListCtrl()->m_headerWin; if ( headerWin ) headerWin->m_dirty = true; wxListHeaderDataList::compatibility_iterator node = m_columns.Item( col ); { wxCHECK_RET( node, _T("no column?") ); } wxListHeaderData *column = node->GetData(); size_t count = GetItemCount(); if (width == wxLIST_AUTOSIZE_USEHEADER) { width = GetTextLength(column->GetText()); width += 2*EXTRA_WIDTH; // check for column header's image availability const int image = column->GetImage(); if ( image != -1 ) { if ( m_small_image_list ) { int ix = 0, iy = 0; m_small_image_list->GetSize(image, ix, iy); width += ix + HEADER_IMAGE_MARGIN_IN_REPORT_MODE; } } } else if ( width == wxLIST_AUTOSIZE ) { if ( IsVirtual() ) { // TODO: determine the max width somehow... width = WIDTH_COL_DEFAULT; } else // !virtual { wxClientDC dc(this); dc.SetFont( GetFont() ); int max = AUTOSIZE_COL_MARGIN; // if the cached column width isn't valid then recalculate it if (m_aColWidths.Item(col)->bNeedsUpdate) { for (size_t i = 0; i < count; i++) { wxListLineData *line = GetLine( i ); wxListItemDataList::compatibility_iterator n = line->m_items.Item( col ); wxCHECK_RET( n, _T("no subitem?") ); wxListItemData *itemData = n->GetData(); wxListItem item; itemData->GetItem(item); int itemWidth = GetItemWidthWithImage(&item); if (itemWidth > max) max = itemWidth; } m_aColWidths.Item(col)->bNeedsUpdate = false; m_aColWidths.Item(col)->nMaxWidth = max; } max = m_aColWidths.Item(col)->nMaxWidth; width = max + AUTOSIZE_COL_MARGIN; } } column->SetWidth( width ); // invalidate it as it has to be recalculated m_headerWidth = 0; } int wxListMainWindow::GetHeaderWidth() const { if ( !m_headerWidth ) { wxListMainWindow *self = wxConstCast(this, wxListMainWindow); size_t count = GetColumnCount(); for ( size_t col = 0; col < count; col++ ) { self->m_headerWidth += GetColumnWidth(col); } } return m_headerWidth; } void wxListMainWindow::GetColumn( int col, wxListItem &item ) const { wxListHeaderDataList::compatibility_iterator node = m_columns.Item( col ); wxCHECK_RET( node, _T("invalid column index in GetColumn") ); wxListHeaderData *column = node->GetData(); column->GetItem( item ); } int wxListMainWindow::GetColumnWidth( int col ) const { wxListHeaderDataList::compatibility_iterator node = m_columns.Item( col ); wxCHECK_MSG( node, 0, _T("invalid column index") ); wxListHeaderData *column = node->GetData(); return column->GetWidth(); } // ---------------------------------------------------------------------------- // item state // ---------------------------------------------------------------------------- void wxListMainWindow::SetItem( wxListItem &item ) { long id = item.m_itemId; wxCHECK_RET( id >= 0 && (size_t)id < GetItemCount(), _T("invalid item index in SetItem") ); if ( !IsVirtual() ) { wxListLineData *line = GetLine((size_t)id); line->SetItem( item.m_col, item ); // Set item state if user wants if ( item.m_mask & wxLIST_MASK_STATE ) SetItemState( item.m_itemId, item.m_state, item.m_state ); if (InReportView()) { // update the Max Width Cache if needed int width = GetItemWidthWithImage(&item); if (width > m_aColWidths.Item(item.m_col)->nMaxWidth) m_aColWidths.Item(item.m_col)->nMaxWidth = width; } } // update the item on screen wxRect rectItem; GetItemRect(id, rectItem); RefreshRect(rectItem); } void wxListMainWindow::SetItemStateAll(long state, long stateMask) { if ( IsEmpty() ) return; // first deal with selection if ( stateMask & wxLIST_STATE_SELECTED ) { // set/clear select state if ( IsVirtual() ) { // optimized version for virtual listctrl. m_selStore.SelectRange(0, GetItemCount() - 1, state == wxLIST_STATE_SELECTED); Refresh(); } else if ( state & wxLIST_STATE_SELECTED ) { const long count = GetItemCount(); for( long i = 0; i < count; i++ ) { SetItemState( i, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED ); } } else { // clear for non virtual (somewhat optimized by using GetNextItem()) long i = -1; while ( (i = GetNextItem(i, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED)) != -1 ) { SetItemState( i, 0, wxLIST_STATE_SELECTED ); } } } if ( HasCurrent() && (state == 0) && (stateMask & wxLIST_STATE_FOCUSED) ) { // unfocus all: only one item can be focussed, so clearing focus for // all items is simply clearing focus of the focussed item. SetItemState(m_current, state, stateMask); } //(setting focus to all items makes no sense, so it is not handled here.) } void wxListMainWindow::SetItemState( long litem, long state, long stateMask ) { if ( litem == -1 ) { SetItemStateAll(state, stateMask); return; } wxCHECK_RET( litem >= 0 && (size_t)litem < GetItemCount(), _T("invalid list ctrl item index in SetItem") ); size_t oldCurrent = m_current; size_t item = (size_t)litem; // safe because of the check above // do we need to change the focus? if ( stateMask & wxLIST_STATE_FOCUSED ) { if ( state & wxLIST_STATE_FOCUSED ) { // don't do anything if this item is already focused if ( item != m_current ) { ChangeCurrent(item); if ( oldCurrent != (size_t)-1 ) { if ( IsSingleSel() ) { HighlightLine(oldCurrent, false); } RefreshLine(oldCurrent); } RefreshLine( m_current ); } } else // unfocus { // don't do anything if this item is not focused if ( item == m_current ) { ResetCurrent(); if ( IsSingleSel() ) { // we must unselect the old current item as well or we // might end up with more than one selected item in a // single selection control HighlightLine(oldCurrent, false); } RefreshLine( oldCurrent ); } } } // do we need to change the selection state? if ( stateMask & wxLIST_STATE_SELECTED ) { bool on = (state & wxLIST_STATE_SELECTED) != 0; if ( IsSingleSel() ) { if ( on ) { // selecting the item also makes it the focused one in the // single sel mode if ( m_current != item ) { ChangeCurrent(item); if ( oldCurrent != (size_t)-1 ) { HighlightLine( oldCurrent, false ); RefreshLine( oldCurrent ); } } } else // off { // only the current item may be selected anyhow if ( item != m_current ) return; } } if ( HighlightLine(item, on) ) { RefreshLine(item); } } } int wxListMainWindow::GetItemState( long item, long stateMask ) const { wxCHECK_MSG( item >= 0 && (size_t)item < GetItemCount(), 0, _T("invalid list ctrl item index in GetItemState()") ); int ret = wxLIST_STATE_DONTCARE; if ( stateMask & wxLIST_STATE_FOCUSED ) { if ( (size_t)item == m_current ) ret |= wxLIST_STATE_FOCUSED; } if ( stateMask & wxLIST_STATE_SELECTED ) { if ( IsHighlighted(item) ) ret |= wxLIST_STATE_SELECTED; } return ret; } void wxListMainWindow::GetItem( wxListItem &item ) const { wxCHECK_RET( item.m_itemId >= 0 && (size_t)item.m_itemId < GetItemCount(), _T("invalid item index in GetItem") ); wxListLineData *line = GetLine((size_t)item.m_itemId); line->GetItem( item.m_col, item ); // Get item state if user wants it if ( item.m_mask & wxLIST_MASK_STATE ) item.m_state = GetItemState( item.m_itemId, wxLIST_STATE_SELECTED | wxLIST_STATE_FOCUSED ); } // ---------------------------------------------------------------------------- // item count // ---------------------------------------------------------------------------- size_t wxListMainWindow::GetItemCount() const { return IsVirtual() ? m_countVirt : m_lines.GetCount(); } void wxListMainWindow::SetItemCount(long count) { m_selStore.SetItemCount(count); m_countVirt = count; ResetVisibleLinesRange(); // scrollbars must be reset m_dirty = true; } int wxListMainWindow::GetSelectedItemCount() const { // deal with the quick case first if ( IsSingleSel() ) return HasCurrent() ? IsHighlighted(m_current) : false; // virtual controls remmebers all its selections itself if ( IsVirtual() ) return m_selStore.GetSelectedCount(); // TODO: we probably should maintain the number of items selected even for // non virtual controls as enumerating all lines is really slow... size_t countSel = 0; size_t count = GetItemCount(); for ( size_t line = 0; line < count; line++ ) { if ( GetLine(line)->IsHighlighted() ) countSel++; } return countSel; } // ---------------------------------------------------------------------------- // item position/size // ---------------------------------------------------------------------------- wxRect wxListMainWindow::GetViewRect() const { wxASSERT_MSG( !HasFlag(wxLC_REPORT | wxLC_LIST), _T("wxListCtrl::GetViewRect() only works in icon mode") ); // we need to find the longest/tallest label wxCoord xMax = 0, yMax = 0; const int count = GetItemCount(); if ( count ) { for ( int i = 0; i < count; i++ ) { // we need logical, not physical, coordinates here, so use // GetLineRect() instead of GetItemRect() wxRect r = GetLineRect(i); wxCoord x = r.GetRight(), y = r.GetBottom(); if ( x > xMax ) xMax = x; if ( y > yMax ) yMax = y; } } // some fudge needed to make it look prettier xMax += 2 * EXTRA_BORDER_X; yMax += 2 * EXTRA_BORDER_Y; // account for the scrollbars if necessary const wxSize sizeAll = GetClientSize(); if ( xMax > sizeAll.x ) yMax += wxSystemSettings::GetMetric(wxSYS_HSCROLL_Y); if ( yMax > sizeAll.y ) xMax += wxSystemSettings::GetMetric(wxSYS_VSCROLL_X); return wxRect(0, 0, xMax, yMax); } void wxListMainWindow::GetItemRect( long index, wxRect &rect ) const { wxCHECK_RET( index >= 0 && (size_t)index < GetItemCount(), _T("invalid index in GetItemRect") ); // ensure that we're laid out, otherwise we could return nonsense if ( m_dirty ) { wxConstCast(this, wxListMainWindow)-> RecalculatePositions(true /* no refresh */); } rect = GetLineRect((size_t)index); CalcScrolledPosition(rect.x, rect.y, &rect.x, &rect.y); } bool wxListMainWindow::GetItemPosition(long item, wxPoint& pos) const { wxRect rect; GetItemRect(item, rect); pos.x = rect.x; pos.y = rect.y; return true; } // ---------------------------------------------------------------------------- // geometry calculation // ---------------------------------------------------------------------------- void wxListMainWindow::RecalculatePositions(bool noRefresh) { const int lineHeight = GetLineHeight(); wxClientDC dc( this ); dc.SetFont( GetFont() ); const size_t count = GetItemCount(); int iconSpacing; if ( HasFlag(wxLC_ICON) && m_normal_image_list ) iconSpacing = m_normal_spacing; else if ( HasFlag(wxLC_SMALL_ICON) && m_small_image_list ) iconSpacing = m_small_spacing; else iconSpacing = 0; // Note that we do not call GetClientSize() here but // GetSize() and subtract the border size for sunken // borders manually. This is technically incorrect, // but we need to know the client area's size WITHOUT // scrollbars here. Since we don't know if there are // any scrollbars, we use GetSize() instead. Another // solution would be to call SetScrollbars() here to // remove the scrollbars and call GetClientSize() then, // but this might result in flicker and - worse - will // reset the scrollbars to 0 which is not good at all // if you resize a dialog/window, but don't want to // reset the window scrolling. RR. // Furthermore, we actually do NOT subtract the border // width as 2 pixels is just the extra space which we // need around the actual content in the window. Other- // wise the text would e.g. touch the upper border. RR. int clientWidth, clientHeight; GetSize( &clientWidth, &clientHeight ); if ( InReportView() ) { // all lines have the same height and we scroll one line per step int entireHeight = count * lineHeight + LINE_SPACING; m_linesPerPage = clientHeight / lineHeight; ResetVisibleLinesRange(); SetScrollbars( SCROLL_UNIT_X, lineHeight, GetHeaderWidth() / SCROLL_UNIT_X, (entireHeight + lineHeight - 1) / lineHeight, GetScrollPos(wxHORIZONTAL), GetScrollPos(wxVERTICAL), true ); } else // !report { // we have 3 different layout strategies: either layout all items // horizontally/vertically (wxLC_ALIGN_XXX styles explicitly given) or // to arrange them in top to bottom, left to right (don't ask me why // not the other way round...) order if ( HasFlag(wxLC_ALIGN_LEFT | wxLC_ALIGN_TOP) ) { int x = EXTRA_BORDER_X; int y = EXTRA_BORDER_Y; wxCoord widthMax = 0; size_t i; for ( i = 0; i < count; i++ ) { wxListLineData *line = GetLine(i); line->CalculateSize( &dc, iconSpacing ); line->SetPosition( x, y, iconSpacing ); wxSize sizeLine = GetLineSize(i); if ( HasFlag(wxLC_ALIGN_TOP) ) { if ( sizeLine.x > widthMax ) widthMax = sizeLine.x; y += sizeLine.y; } else // wxLC_ALIGN_LEFT { x += sizeLine.x + MARGIN_BETWEEN_ROWS; } } if ( HasFlag(wxLC_ALIGN_TOP) ) { // traverse the items again and tweak their sizes so that they are // all the same in a row for ( i = 0; i < count; i++ ) { wxListLineData *line = GetLine(i); line->m_gi->ExtendWidth(widthMax); } } SetScrollbars ( SCROLL_UNIT_X, lineHeight, (x + SCROLL_UNIT_X) / SCROLL_UNIT_X, (y + lineHeight) / lineHeight, GetScrollPos( wxHORIZONTAL ), GetScrollPos( wxVERTICAL ), true ); } else // "flowed" arrangement, the most complicated case { // at first we try without any scrollbars, if the items don't fit into // the window, we recalculate after subtracting the space taken by the // scrollbar int entireWidth = 0; for (int tries = 0; tries < 2; tries++) { entireWidth = 2 * EXTRA_BORDER_X; if (tries == 1) { // Now we have decided that the items do not fit into the // client area, so we need a scrollbar entireWidth += SCROLL_UNIT_X; } int x = EXTRA_BORDER_X; int y = EXTRA_BORDER_Y; int maxWidthInThisRow = 0; m_linesPerPage = 0; int currentlyVisibleLines = 0; for (size_t i = 0; i < count; i++) { currentlyVisibleLines++; wxListLineData *line = GetLine( i ); line->CalculateSize( &dc, iconSpacing ); line->SetPosition( x, y, iconSpacing ); wxSize sizeLine = GetLineSize( i ); if ( maxWidthInThisRow < sizeLine.x ) maxWidthInThisRow = sizeLine.x; y += sizeLine.y; if (currentlyVisibleLines > m_linesPerPage) m_linesPerPage = currentlyVisibleLines; if ( y + sizeLine.y >= clientHeight ) { currentlyVisibleLines = 0; y = EXTRA_BORDER_Y; maxWidthInThisRow += MARGIN_BETWEEN_ROWS; x += maxWidthInThisRow; entireWidth += maxWidthInThisRow; maxWidthInThisRow = 0; } // We have reached the last item. if ( i == count - 1 ) entireWidth += maxWidthInThisRow; if ( (tries == 0) && (entireWidth + SCROLL_UNIT_X > clientWidth) ) { clientHeight -= wxSystemSettings:: GetMetric(wxSYS_HSCROLL_Y); m_linesPerPage = 0; break; } if ( i == count - 1 ) tries = 1; // Everything fits, no second try required. } } SetScrollbars ( SCROLL_UNIT_X, lineHeight, (entireWidth + SCROLL_UNIT_X) / SCROLL_UNIT_X, 0, GetScrollPos( wxHORIZONTAL ), 0, true ); } } if ( !noRefresh ) { // FIXME: why should we call it from here? UpdateCurrent(); RefreshAll(); } } void wxListMainWindow::RefreshAll() { m_dirty = false; Refresh(); wxListHeaderWindow *headerWin = GetListCtrl()->m_headerWin; if ( headerWin && headerWin->m_dirty ) { headerWin->m_dirty = false; headerWin->Refresh(); } } void wxListMainWindow::UpdateCurrent() { if ( !HasCurrent() && !IsEmpty() ) ChangeCurrent(0); } long wxListMainWindow::GetNextItem( long item, int WXUNUSED(geometry), int state ) const { long ret = item, max = GetItemCount(); wxCHECK_MSG( (ret == -1) || (ret < max), -1, _T("invalid listctrl index in GetNextItem()") ); // notice that we start with the next item (or the first one if item == -1) // and this is intentional to allow writing a simple loop to iterate over // all selected items ret++; if ( ret == max ) // this is not an error because the index was OK initially, // just no such item return -1; if ( !state ) // any will do return (size_t)ret; size_t count = GetItemCount(); for ( size_t line = (size_t)ret; line < count; line++ ) { if ( (state & wxLIST_STATE_FOCUSED) && (line == m_current) ) return line; if ( (state & wxLIST_STATE_SELECTED) && IsHighlighted(line) ) return line; } return -1; } // ---------------------------------------------------------------------------- // deleting stuff // ---------------------------------------------------------------------------- void wxListMainWindow::DeleteItem( long lindex ) { size_t count = GetItemCount(); wxCHECK_RET( (lindex >= 0) && ((size_t)lindex < count), _T("invalid item index in DeleteItem") ); size_t index = (size_t)lindex; // we don't need to adjust the index for the previous items if ( HasCurrent() && m_current >= index ) { // if the current item is being deleted, we want the next one to // become selected - unless there is no next one - so don't adjust // m_current in this case if ( m_current != index || m_current == count - 1 ) m_current--; } if ( InReportView() ) { // mark the Column Max Width cache as dirty if the items in the line // we're deleting contain the Max Column Width wxListLineData * const line = GetLine(index); wxListItemDataList::compatibility_iterator n; wxListItemData *itemData; wxListItem item; int itemWidth; for (size_t i = 0; i < m_columns.GetCount(); i++) { n = line->m_items.Item( i ); itemData = n->GetData(); itemData->GetItem(item); itemWidth = GetItemWidthWithImage(&item); if (itemWidth >= m_aColWidths.Item(i)->nMaxWidth) m_aColWidths.Item(i)->bNeedsUpdate = true; } ResetVisibleLinesRange(); } SendNotify( index, wxEVT_COMMAND_LIST_DELETE_ITEM, wxDefaultPosition ); if ( IsVirtual() ) { m_countVirt--; m_selStore.OnItemDelete(index); } else { m_lines.RemoveAt( index ); } // we need to refresh the (vert) scrollbar as the number of items changed m_dirty = true; RefreshAfter(index); } void wxListMainWindow::DeleteColumn( int col ) { wxListHeaderDataList::compatibility_iterator node = m_columns.Item( col ); wxCHECK_RET( node, wxT("invalid column index in DeleteColumn()") ); m_dirty = true; delete node->GetData(); m_columns.Erase( node ); if ( !IsVirtual() ) { // update all the items for ( size_t i = 0; i < m_lines.GetCount(); i++ ) { wxListLineData * const line = GetLine(i); wxListItemDataList::compatibility_iterator n = line->m_items.Item( col ); delete n->GetData(); line->m_items.Erase(n); } } if ( InReportView() ) // we only cache max widths when in Report View { delete m_aColWidths.Item(col); m_aColWidths.RemoveAt(col); } // invalidate it as it has to be recalculated m_headerWidth = 0; } void wxListMainWindow::DoDeleteAllItems() { if ( IsEmpty() ) // nothing to do - in particular, don't send the event return; ResetCurrent(); // to make the deletion of all items faster, we don't send the // notifications for each item deletion in this case but only one event // for all of them: this is compatible with wxMSW and documented in // DeleteAllItems() description wxListEvent event( wxEVT_COMMAND_LIST_DELETE_ALL_ITEMS, GetParent()->GetId() ); event.SetEventObject( GetParent() ); GetParent()->GetEventHandler()->ProcessEvent( event ); if ( IsVirtual() ) { m_countVirt = 0; m_selStore.Clear(); } if ( InReportView() ) { ResetVisibleLinesRange(); for (size_t i = 0; i < m_aColWidths.GetCount(); i++) { m_aColWidths.Item(i)->bNeedsUpdate = true; } } m_lines.Clear(); } void wxListMainWindow::DeleteAllItems() { DoDeleteAllItems(); RecalculatePositions(); } void wxListMainWindow::DeleteEverything() { WX_CLEAR_LIST(wxListHeaderDataList, m_columns); WX_CLEAR_ARRAY(m_aColWidths); DeleteAllItems(); } // ---------------------------------------------------------------------------- // scanning for an item // ---------------------------------------------------------------------------- void wxListMainWindow::EnsureVisible( long index ) { wxCHECK_RET( index >= 0 && (size_t)index < GetItemCount(), _T("invalid index in EnsureVisible") ); // We have to call this here because the label in question might just have // been added and its position is not known yet if ( m_dirty ) RecalculatePositions(true /* no refresh */); MoveToItem((size_t)index); } long wxListMainWindow::FindItem(long start, const wxString& str, bool partial ) { if (str.empty()) return wxNOT_FOUND; long pos = start; wxString str_upper = str.Upper(); if (pos < 0) pos = 0; size_t count = GetItemCount(); for ( size_t i = (size_t)pos; i < count; i++ ) { wxListLineData *line = GetLine(i); wxString line_upper = line->GetText(0).Upper(); if (!partial) { if (line_upper == str_upper ) return i; } else { if (line_upper.find(str_upper) == 0) return i; } } return wxNOT_FOUND; } long wxListMainWindow::FindItem(long start, wxUIntPtr data) { long pos = start; if (pos < 0) pos = 0; size_t count = GetItemCount(); for (size_t i = (size_t)pos; i < count; i++) { wxListLineData *line = GetLine(i); wxListItem item; line->GetItem( 0, item ); if (item.m_data == data) return i; } return wxNOT_FOUND; } long wxListMainWindow::FindItem( const wxPoint& pt ) { size_t topItem; GetVisibleLinesRange( &topItem, NULL ); wxPoint p; GetItemPosition( GetItemCount() - 1, p ); if ( p.y == 0 ) return topItem; long id = (long)floor( pt.y * double(GetItemCount() - topItem - 1) / p.y + topItem ); if ( id >= 0 && id < (long)GetItemCount() ) return id; return wxNOT_FOUND; } long wxListMainWindow::HitTest( int x, int y, int &flags ) const { CalcUnscrolledPosition( x, y, &x, &y ); size_t count = GetItemCount(); if ( InReportView() ) { size_t current = y / GetLineHeight(); if ( current < count ) { flags = HitTestLine(current, x, y); if ( flags ) return current; } } else // !report { // TODO: optimize it too! this is less simple than for report view but // enumerating all items is still not a way to do it!! for ( size_t current = 0; current < count; current++ ) { flags = HitTestLine(current, x, y); if ( flags ) return current; } } return wxNOT_FOUND; } // ---------------------------------------------------------------------------- // adding stuff // ---------------------------------------------------------------------------- void wxListMainWindow::InsertItem( wxListItem &item ) { wxASSERT_MSG( !IsVirtual(), _T("can't be used with virtual control") ); int count = GetItemCount(); wxCHECK_RET( item.m_itemId >= 0, _T("invalid item index") ); if (item.m_itemId > count) item.m_itemId = count; size_t id = item.m_itemId; m_dirty = true; if ( InReportView() ) { ResetVisibleLinesRange(); // calculate the width of the item and adjust the max column width wxColWidthInfo *pWidthInfo = m_aColWidths.Item(item.GetColumn()); int width = GetItemWidthWithImage(&item); item.SetWidth(width); if (width > pWidthInfo->nMaxWidth) pWidthInfo->nMaxWidth = width; } wxListLineData *line = new wxListLineData(this); line->SetItem( item.m_col, item ); m_lines.Insert( line, id ); m_dirty = true; // If an item is selected at or below the point of insertion, we need to // increment the member variables because the current row's index has gone // up by one if ( HasCurrent() && m_current >= id ) m_current++; SendNotify(id, wxEVT_COMMAND_LIST_INSERT_ITEM); RefreshLines(id, GetItemCount() - 1); } void wxListMainWindow::InsertColumn( long col, wxListItem &item ) { m_dirty = true; if ( InReportView() ) { if (item.m_width == wxLIST_AUTOSIZE_USEHEADER) item.m_width = GetTextLength( item.m_text ); wxListHeaderData *column = new wxListHeaderData( item ); wxColWidthInfo *colWidthInfo = new wxColWidthInfo(); bool insert = (col >= 0) && ((size_t)col < m_columns.GetCount()); if ( insert ) { wxListHeaderDataList::compatibility_iterator node = m_columns.Item( col ); m_columns.Insert( node, column ); m_aColWidths.Insert( colWidthInfo, col ); } else { m_columns.Append( column ); m_aColWidths.Add( colWidthInfo ); } if ( !IsVirtual() ) { // update all the items for ( size_t i = 0; i < m_lines.GetCount(); i++ ) { wxListLineData * const line = GetLine(i); wxListItemData * const data = new wxListItemData(this); if ( insert ) line->m_items.Insert(col, data); else line->m_items.Append(data); } } // invalidate it as it has to be recalculated m_headerWidth = 0; } } int wxListMainWindow::GetItemWidthWithImage(wxListItem * item) { int width = 0; wxClientDC dc(this); dc.SetFont( GetFont() ); if (item->GetImage() != -1) { int ix, iy; GetImageSize( item->GetImage(), ix, iy ); width += ix + 5; } if (!item->GetText().empty()) { wxCoord w; dc.GetTextExtent( item->GetText(), &w, NULL ); width += w; } return width; } // ---------------------------------------------------------------------------- // sorting // ---------------------------------------------------------------------------- MuleListCtrlCompare list_ctrl_compare_func_2; long list_ctrl_compare_data; int LINKAGEMODE list_ctrl_compare_func_1( wxListLineData **arg1, wxListLineData **arg2 ) { wxListLineData *line1 = *arg1; wxListLineData *line2 = *arg2; wxListItem item; line1->GetItem( 0, item ); wxUIntPtr data1 = item.m_data; line2->GetItem( 0, item ); wxUIntPtr data2 = item.m_data; return list_ctrl_compare_func_2( data1, data2, list_ctrl_compare_data ); } void wxListMainWindow::SortItems( MuleListCtrlCompare fn, long data ) { // selections won't make sense any more after sorting the items so reset // them HighlightAll(false); ResetCurrent(); list_ctrl_compare_func_2 = fn; list_ctrl_compare_data = data; m_lines.Sort( list_ctrl_compare_func_1 ); m_dirty = true; } // ---------------------------------------------------------------------------- // scrolling // ---------------------------------------------------------------------------- void wxListMainWindow::OnScroll(wxScrollWinEvent& event) { // FIXME #if ( defined(__WXGTK__) || defined(__WXMAC__) ) && !defined(__WXUNIVERSAL__) wxScrolledWindow::OnScroll(event); #else HandleOnScroll( event ); #endif // update our idea of which lines are shown when we redraw the window the // next time ResetVisibleLinesRange(); if ( event.GetOrientation() == wxHORIZONTAL && HasHeader() ) { wxGenericListCtrl* lc = GetListCtrl(); wxCHECK_RET( lc, _T("no listctrl window?") ); lc->m_headerWin->Refresh(); lc->m_headerWin->Update(); } } int wxListMainWindow::GetCountPerPage() const { if ( !m_linesPerPage ) { wxConstCast(this, wxListMainWindow)-> m_linesPerPage = GetClientSize().y / GetLineHeight(); } return m_linesPerPage; } void wxListMainWindow::GetVisibleLinesRange(size_t *from, size_t *to) { wxASSERT_MSG( InReportView(), _T("this is for report mode only") ); if ( m_lineFrom == (size_t)-1 ) { size_t count = GetItemCount(); if ( count ) { m_lineFrom = GetScrollPos(wxVERTICAL); // this may happen if SetScrollbars() hadn't been called yet if ( m_lineFrom >= count ) m_lineFrom = count - 1; // we redraw one extra line but this is needed to make the redrawing // logic work when there is a fractional number of lines on screen m_lineTo = m_lineFrom + m_linesPerPage; if ( m_lineTo >= count ) m_lineTo = count - 1; } else // empty control { m_lineFrom = 0; m_lineTo = (size_t)-1; } } wxASSERT_MSG( IsEmpty() || (m_lineFrom <= m_lineTo && m_lineTo < GetItemCount()), _T("GetVisibleLinesRange() returns incorrect result") ); if ( from ) *from = m_lineFrom; if ( to ) *to = m_lineTo; } // ------------------------------------------------------------------------------------- // wxGenericListCtrl // ------------------------------------------------------------------------------------- BEGIN_EVENT_TABLE(wxGenericListCtrl,wxControl) EVT_SIZE(wxGenericListCtrl::OnSize) END_EVENT_TABLE() wxGenericListCtrl::wxGenericListCtrl() { m_imageListNormal = (wxImageList *) NULL; m_imageListSmall = (wxImageList *) NULL; m_imageListState = (wxImageList *) NULL; m_ownsImageListNormal = m_ownsImageListSmall = m_ownsImageListState = false; m_mainWin = (wxListMainWindow*) NULL; m_headerWin = (wxListHeaderWindow*) NULL; m_headerHeight = 0; } wxGenericListCtrl::~wxGenericListCtrl() { if (m_ownsImageListNormal) delete m_imageListNormal; if (m_ownsImageListSmall) delete m_imageListSmall; if (m_ownsImageListState) delete m_imageListState; } void wxGenericListCtrl::CalculateAndSetHeaderHeight() { if ( m_headerWin ) { #if defined( __WXMAC__ ) && !defined(__WXUNIVERSAL__) && wxOSX_USE_CARBON SInt32 h; GetThemeMetric( kThemeMetricListHeaderHeight, &h ); #else // we use 'g' to get the descent, too int w, h, d; m_headerWin->GetTextExtent(wxT("Hg"), &w, &h, &d); h += d + 2 * HEADER_OFFSET_Y + EXTRA_HEIGHT; #endif // only update if changed if ( h != m_headerHeight ) { m_headerHeight = h; if ( HasHeader() ) ResizeReportView(true); else //why is this needed if it doesn't have a header? m_headerWin->SetSize(m_headerWin->GetSize().x, m_headerHeight); } } } void wxGenericListCtrl::CreateHeaderWindow() { m_headerWin = new wxListHeaderWindow ( this, wxID_ANY, m_mainWin, wxPoint(0,0), wxSize(GetClientSize().x, m_headerHeight), wxTAB_TRAVERSAL ); CalculateAndSetHeaderHeight(); } bool wxGenericListCtrl::GetFocus() { return m_mainWin->m_hasFocus; } bool wxGenericListCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, long style, const wxValidator &validator, const wxString &name) { m_imageListNormal = m_imageListSmall = m_imageListState = (wxImageList *) NULL; m_ownsImageListNormal = m_ownsImageListSmall = m_ownsImageListState = false; m_mainWin = (wxListMainWindow*) NULL; m_headerWin = (wxListHeaderWindow*) NULL; m_headerHeight = 0; if ( !(style & wxLC_MASK_TYPE) ) { style = style | wxLC_LIST; } // add more styles here that should only appear // in the main window unsigned long only_main_window_style = wxALWAYS_SHOW_SB; if ( !wxControl::Create( parent, id, pos, size, style & ~only_main_window_style, validator, name ) ) return false; // don't create the inner window with the border style &= ~wxBORDER_MASK; m_mainWin = new wxListMainWindow( this, wxID_ANY, wxPoint(0, 0), size, style ); #ifdef __WXMAC_CARBON__ // Human Interface Guidelines ask us for a special font in this case if ( GetWindowVariant() == wxWINDOW_VARIANT_NORMAL ) { wxFont font; font.MacCreateThemeFont( kThemeViewsFont ); SetFont( font ); } #endif if ( InReportView() ) { CreateHeaderWindow(); #ifdef __WXMAC_CARBON__ if (m_headerWin) { wxFont font; font.MacCreateThemeFont( kThemeSmallSystemFont ); m_headerWin->SetFont( font ); CalculateAndSetHeaderHeight(); } #endif if ( HasFlag(wxLC_NO_HEADER) ) // VZ: why do we create it at all then? m_headerWin->Show( false ); } SetInitialSize(size); return true; } void wxGenericListCtrl::SetSingleStyle( long style, bool add ) { wxASSERT_MSG( !(style & wxLC_VIRTUAL), _T("wxLC_VIRTUAL can't be [un]set") ); long flag = GetWindowStyle(); if (add) { if (style & wxLC_MASK_TYPE) flag &= ~(wxLC_MASK_TYPE | wxLC_VIRTUAL); if (style & wxLC_MASK_ALIGN) flag &= ~wxLC_MASK_ALIGN; if (style & wxLC_MASK_SORT) flag &= ~wxLC_MASK_SORT; } if (add) flag |= style; else flag &= ~style; // some styles can be set without recreating everything (as happens in // SetWindowStyleFlag() which calls wxListMainWindow::DeleteEverything()) if ( !(style & ~(wxLC_HRULES | wxLC_VRULES)) ) { Refresh(); wxWindow::SetWindowStyleFlag(flag); } else { SetWindowStyleFlag( flag ); } } void wxGenericListCtrl::SetWindowStyleFlag( long flag ) { if (m_mainWin) { m_mainWin->DeleteEverything(); // has the header visibility changed? bool hasHeader = HasHeader(); bool willHaveHeader = (flag & wxLC_REPORT) && !(flag & wxLC_NO_HEADER); if ( hasHeader != willHaveHeader ) { // toggle it if ( hasHeader ) { if ( m_headerWin ) { // don't delete, just hide, as we can reuse it later m_headerWin->Show(false); } //else: nothing to do } else // must show header { if (!m_headerWin) { CreateHeaderWindow(); } else // already have it, just show { m_headerWin->Show( true ); } } ResizeReportView(willHaveHeader); } } wxWindow::SetWindowStyleFlag( flag ); } bool wxGenericListCtrl::GetColumn(int col, wxListItem &item) const { m_mainWin->GetColumn( col, item ); return true; } bool wxGenericListCtrl::SetColumn( int col, wxListItem& item ) { m_mainWin->SetColumn( col, item ); return true; } int wxGenericListCtrl::GetColumnWidth( int col ) const { return m_mainWin->GetColumnWidth( col ); } bool wxGenericListCtrl::SetColumnWidth( int col, int width ) { m_mainWin->SetColumnWidth( col, width ); return true; } int wxGenericListCtrl::GetCountPerPage() const { return m_mainWin->GetCountPerPage(); // different from Windows ? } bool wxGenericListCtrl::GetItem( wxListItem &info ) const { m_mainWin->GetItem( info ); return true; } bool wxGenericListCtrl::SetItem( wxListItem &info ) { m_mainWin->SetItem( info ); return true; } long wxGenericListCtrl::SetItem( long index, int col, const wxString& label, int imageId ) { wxListItem info; info.m_text = label; info.m_mask = wxLIST_MASK_TEXT; info.m_itemId = index; info.m_col = col; if ( imageId > -1 ) { info.m_image = imageId; info.m_mask |= wxLIST_MASK_IMAGE; } m_mainWin->SetItem(info); return true; } int wxGenericListCtrl::GetItemState( long item, long stateMask ) const { return m_mainWin->GetItemState( item, stateMask ); } bool wxGenericListCtrl::SetItemState( long item, long state, long stateMask ) { m_mainWin->SetItemState( item, state, stateMask ); return true; } bool wxGenericListCtrl::SetItemImage( long item, int image, int WXUNUSED(selImage) ) { return SetItemColumnImage(item, 0, image); } bool wxGenericListCtrl::SetItemColumnImage( long item, long column, int image ) { wxListItem info; info.m_image = image; info.m_mask = wxLIST_MASK_IMAGE; info.m_itemId = item; info.m_col = column; m_mainWin->SetItem( info ); return true; } wxString wxGenericListCtrl::GetItemText( long item ) const { return m_mainWin->GetItemText(item); } void wxGenericListCtrl::SetItemText( long item, const wxString& str ) { m_mainWin->SetItemText(item, str); } wxUIntPtr wxGenericListCtrl::GetItemData( long item ) const { wxListItem info; info.m_mask = wxLIST_MASK_DATA; info.m_itemId = item; m_mainWin->GetItem( info ); return info.m_data; } bool wxGenericListCtrl::SetItemPtrData( long item, wxUIntPtr data ) { wxListItem info; info.m_mask = wxLIST_MASK_DATA; info.m_itemId = item; info.m_data = data; m_mainWin->SetItem( info ); return true; } #if 0 bool wxGenericListCtrl::SetItemData(long item, long data) { return SetItemPtrData(item, data); } #endif wxRect wxGenericListCtrl::GetViewRect() const { return m_mainWin->GetViewRect(); } bool wxGenericListCtrl::GetItemRect( long item, wxRect &rect, int WXUNUSED(code) ) const { m_mainWin->GetItemRect( item, rect ); if ( m_mainWin->HasHeader() ) rect.y += m_headerHeight + 1; return true; } bool wxGenericListCtrl::GetItemPosition( long item, wxPoint& pos ) const { m_mainWin->GetItemPosition( item, pos ); return true; } bool wxGenericListCtrl::SetItemPosition( long WXUNUSED(item), const wxPoint& WXUNUSED(pos) ) { return 0; } int wxGenericListCtrl::GetItemCount() const { return m_mainWin->GetItemCount(); } int wxGenericListCtrl::GetColumnCount() const { return m_mainWin->GetColumnCount(); } void wxGenericListCtrl::SetItemSpacing( int spacing, bool isSmall ) { m_mainWin->SetItemSpacing( spacing, isSmall ); } wxSize wxGenericListCtrl::GetItemSpacing() const { const int spacing = m_mainWin->GetItemSpacing(HasFlag(wxLC_SMALL_ICON)); return wxSize(spacing, spacing); } #if WXWIN_COMPATIBILITY_2_6 int wxGenericListCtrl::GetItemSpacing( bool isSmall ) const { return m_mainWin->GetItemSpacing( isSmall ); } #endif // WXWIN_COMPATIBILITY_2_6 void wxGenericListCtrl::OnDrawItem(int WXUNUSED(item), wxDC* WXUNUSED(dc), const wxRect& WXUNUSED(rect), const wxRect& WXUNUSED(rectHL), bool WXUNUSED(highlighted)) { // do nothing here, this is just a stub } void wxGenericListCtrl::SetItemTextColour( long item, const wxColour &col ) { wxListItem info; info.m_itemId = item; info.SetTextColour( col ); m_mainWin->SetItem( info ); } wxColour wxGenericListCtrl::GetItemTextColour( long item ) const { wxListItem info; info.m_itemId = item; m_mainWin->GetItem( info ); return info.GetTextColour(); } void wxGenericListCtrl::SetItemBackgroundColour( long item, const wxColour &col ) { wxListItem info; info.m_itemId = item; info.SetBackgroundColour( col ); m_mainWin->SetItem( info ); } wxColour wxGenericListCtrl::GetItemBackgroundColour( long item ) const { wxListItem info; info.m_itemId = item; m_mainWin->GetItem( info ); return info.GetBackgroundColour(); } int wxGenericListCtrl::GetScrollPos( int orient ) const { return m_mainWin->GetScrollPos( orient ); } void wxGenericListCtrl::SetScrollPos( int orient, int pos, bool refresh ) { m_mainWin->SetScrollPos( orient, pos, refresh ); } void wxGenericListCtrl::SetItemFont( long item, const wxFont &f ) { wxListItem info; info.m_itemId = item; info.SetFont( f ); m_mainWin->SetItem( info ); } wxFont wxGenericListCtrl::GetItemFont( long item ) const { wxListItem info; info.m_itemId = item; m_mainWin->GetItem( info ); return info.GetFont(); } int wxGenericListCtrl::GetSelectedItemCount() const { return m_mainWin->GetSelectedItemCount(); } wxColour wxGenericListCtrl::GetTextColour() const { return GetForegroundColour(); } void wxGenericListCtrl::SetTextColour(const wxColour& col) { SetForegroundColour(col); } long wxGenericListCtrl::GetTopItem() const { size_t top; m_mainWin->GetVisibleLinesRange(&top, NULL); return (long)top; } void wxGenericListCtrl::GetVisibleLines(long* first, long* last) { size_t from, to; m_mainWin->GetVisibleLinesRange(&from, &to); if (first) *first = (long)from; if (last) *last = (long)to; } long wxGenericListCtrl::GetNextItem( long item, int geom, int state ) const { return m_mainWin->GetNextItem( item, geom, state ); } wxImageList *wxGenericListCtrl::GetImageList(int which) const { if (which == wxIMAGE_LIST_NORMAL) return m_imageListNormal; else if (which == wxIMAGE_LIST_SMALL) return m_imageListSmall; else if (which == wxIMAGE_LIST_STATE) return m_imageListState; return (wxImageList *) NULL; } void wxGenericListCtrl::SetImageList( wxImageList *imageList, int which ) { if ( which == wxIMAGE_LIST_NORMAL ) { if (m_ownsImageListNormal) delete m_imageListNormal; m_imageListNormal = imageList; m_ownsImageListNormal = false; } else if ( which == wxIMAGE_LIST_SMALL ) { if (m_ownsImageListSmall) delete m_imageListSmall; m_imageListSmall = imageList; m_ownsImageListSmall = false; } else if ( which == wxIMAGE_LIST_STATE ) { if (m_ownsImageListState) delete m_imageListState; m_imageListState = imageList; m_ownsImageListState = false; } m_mainWin->SetImageList( imageList, which ); } void wxGenericListCtrl::AssignImageList(wxImageList *imageList, int which) { SetImageList(imageList, which); if ( which == wxIMAGE_LIST_NORMAL ) m_ownsImageListNormal = true; else if ( which == wxIMAGE_LIST_SMALL ) m_ownsImageListSmall = true; else if ( which == wxIMAGE_LIST_STATE ) m_ownsImageListState = true; } bool wxGenericListCtrl::Arrange( int WXUNUSED(flag) ) { return 0; } bool wxGenericListCtrl::DeleteItem( long item ) { m_mainWin->DeleteItem( item ); return true; } bool wxGenericListCtrl::DeleteAllItems() { m_mainWin->DeleteAllItems(); return true; } bool wxGenericListCtrl::DeleteAllColumns() { size_t count = m_mainWin->m_columns.GetCount(); for ( size_t n = 0; n < count; n++ ) DeleteColumn( 0 ); return true; } void wxGenericListCtrl::ClearAll() { m_mainWin->DeleteEverything(); } bool wxGenericListCtrl::DeleteColumn( int col ) { m_mainWin->DeleteColumn( col ); // if we don't have the header any longer, we need to relayout the window if ( !GetColumnCount() ) ResizeReportView(false /* no header */); return true; } wxTextCtrl *wxGenericListCtrl::EditLabel(long item, wxClassInfo* textControlClass) { return m_mainWin->EditLabel( item, textControlClass ); } wxTextCtrl *wxGenericListCtrl::GetEditControl() const { return m_mainWin->GetEditControl(); } bool wxGenericListCtrl::EnsureVisible( long item ) { m_mainWin->EnsureVisible( item ); return true; } long wxGenericListCtrl::FindItem( long start, const wxString& str, bool partial ) { return m_mainWin->FindItem( start, str, partial ); } long wxGenericListCtrl::FindItem( long start, wxUIntPtr data ) { return m_mainWin->FindItem( start, data ); } long wxGenericListCtrl::FindItem( long WXUNUSED(start), const wxPoint& pt, int WXUNUSED(direction)) { return m_mainWin->FindItem( pt ); } // TODO: sub item hit testing long wxGenericListCtrl::HitTest(const wxPoint& point, int& flags, long *) const { return m_mainWin->HitTest( (int)point.x, (int)point.y, flags ); } long wxGenericListCtrl::InsertItem( wxListItem& info ) { m_mainWin->InsertItem( info ); return info.m_itemId; } long wxGenericListCtrl::InsertItem( long index, const wxString &label ) { wxListItem info; info.m_text = label; info.m_mask = wxLIST_MASK_TEXT; info.m_itemId = index; return InsertItem( info ); } long wxGenericListCtrl::InsertItem( long index, int imageIndex ) { wxListItem info; info.m_mask = wxLIST_MASK_IMAGE; info.m_image = imageIndex; info.m_itemId = index; return InsertItem( info ); } long wxGenericListCtrl::InsertItem( long index, const wxString &label, int imageIndex ) { wxListItem info; info.m_text = label; info.m_image = imageIndex; info.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_IMAGE; info.m_itemId = index; return InsertItem( info ); } long wxGenericListCtrl::InsertColumn( long col, wxListItem &item ) { wxCHECK_MSG( m_headerWin, -1, _T("can't add column in non report mode") ); m_mainWin->InsertColumn( col, item ); // if we hadn't had a header before but have one now // then we need to relayout the window if ( GetColumnCount() == 1 && m_mainWin->HasHeader() ) ResizeReportView(true /* have header */); m_headerWin->Refresh(); return 0; } long wxGenericListCtrl::InsertColumn( long col, const wxString &heading, int format, int width ) { wxListItem item; item.m_mask = wxLIST_MASK_TEXT | wxLIST_MASK_FORMAT; item.m_text = heading; if (width >= -2) { item.m_mask |= wxLIST_MASK_WIDTH; item.m_width = width; } item.m_format = format; return InsertColumn( col, item ); } bool wxGenericListCtrl::ScrollList( int WXUNUSED(dx), int WXUNUSED(dy) ) { return 0; } // Sort items. // fn is a function which takes 3 long arguments: item1, item2, data. // item1 is the long data associated with a first item (NOT the index). // item2 is the long data associated with a second item (NOT the index). // data is the same value as passed to SortItems. // The return value is a negative number if the first item should precede the second // item, a positive number of the second item should precede the first, // or zero if the two items are equivalent. // data is arbitrary data to be passed to the sort function. bool wxGenericListCtrl::SortItems( MuleListCtrlCompare fn, long data ) { m_mainWin->SortItems( fn, data ); return true; } // ---------------------------------------------------------------------------- // event handlers // ---------------------------------------------------------------------------- void wxGenericListCtrl::OnSize(wxSizeEvent& WXUNUSED(event)) { if ( !m_mainWin ) return; ResizeReportView(m_mainWin->HasHeader()); m_mainWin->RecalculatePositions(); } void wxGenericListCtrl::ResizeReportView(bool showHeader) { int cw, ch; GetClientSize( &cw, &ch ); if ( showHeader ) { m_headerWin->SetSize( 0, 0, cw, m_headerHeight ); if(ch > m_headerHeight) m_mainWin->SetSize( 0, m_headerHeight + 1, cw, ch - m_headerHeight - 1 ); else m_mainWin->SetSize( 0, m_headerHeight + 1, cw, 0); } else // no header window { m_mainWin->SetSize( 0, 0, cw, ch ); } } void wxGenericListCtrl::OnInternalIdle() { wxWindow::OnInternalIdle(); // do it only if needed if ( !m_mainWin->m_dirty ) return; m_mainWin->RecalculatePositions(); } // ---------------------------------------------------------------------------- // font/colours // ---------------------------------------------------------------------------- bool wxGenericListCtrl::SetBackgroundColour( const wxColour &colour ) { if (m_mainWin) { m_mainWin->SetBackgroundColour( colour ); m_mainWin->m_dirty = true; } return true; } bool wxGenericListCtrl::SetForegroundColour( const wxColour &colour ) { if ( !wxWindow::SetForegroundColour( colour ) ) return false; if (m_mainWin) { m_mainWin->SetForegroundColour( colour ); m_mainWin->m_dirty = true; } if (m_headerWin) m_headerWin->SetForegroundColour( colour ); return true; } bool wxGenericListCtrl::SetFont( const wxFont &font ) { if ( !wxWindow::SetFont( font ) ) return false; if (m_mainWin) { m_mainWin->SetFont( font ); m_mainWin->m_dirty = true; } if (m_headerWin) { m_headerWin->SetFont( font ); CalculateAndSetHeaderHeight(); } Refresh(); return true; } // static wxVisualAttributes wxGenericListCtrl::GetClassDefaultAttributes(wxWindowVariant variant) { #if _USE_VISATTR // Use the same color scheme as wxListBox return wxListBox::GetClassDefaultAttributes(variant); #else wxUnusedVar(variant); wxVisualAttributes attr; attr.colFg = wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOXTEXT); attr.colBg = wxSystemSettings::GetColour(wxSYS_COLOUR_LISTBOX); attr.font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); return attr; #endif } // ---------------------------------------------------------------------------- // methods forwarded to m_mainWin // ---------------------------------------------------------------------------- #if wxUSE_DRAG_AND_DROP void wxGenericListCtrl::SetDropTarget( wxDropTarget *dropTarget ) { m_mainWin->SetDropTarget( dropTarget ); } wxDropTarget *wxGenericListCtrl::GetDropTarget() const { return m_mainWin->GetDropTarget(); } #endif bool wxGenericListCtrl::SetCursor( const wxCursor &cursor ) { return m_mainWin ? m_mainWin->wxWindow::SetCursor(cursor) : false; } wxColour wxGenericListCtrl::GetBackgroundColour() const { return m_mainWin ? m_mainWin->GetBackgroundColour() : wxColour(); } wxColour wxGenericListCtrl::GetForegroundColour() const { return m_mainWin ? m_mainWin->GetForegroundColour() : wxColour(); } bool wxGenericListCtrl::DoPopupMenu( wxMenu *menu, int x, int y ) { #if wxUSE_MENUS return m_mainWin->PopupMenu( menu, x, y ); #else return false; #endif } void wxGenericListCtrl::DoClientToScreen( int *x, int *y ) const { m_mainWin->DoClientToScreen(x, y); } void wxGenericListCtrl::DoScreenToClient( int *x, int *y ) const { m_mainWin->DoScreenToClient(x, y); } void wxGenericListCtrl::SetFocus() { // The test in window.cpp fails as we are a composite // window, so it checks against "this", but not m_mainWin. if ( DoFindFocus() != this ) m_mainWin->SetFocus(); } wxSize wxGenericListCtrl::DoGetBestSize() const { // Something is better than nothing... // 100x80 is what the MSW version will get from the default // wxControl::DoGetBestSize return wxSize(100, 80); } // ---------------------------------------------------------------------------- // virtual list control support // ---------------------------------------------------------------------------- wxString wxGenericListCtrl::OnGetItemText(long WXUNUSED(item), long WXUNUSED(col)) const { // this is a pure virtual function, in fact - which is not really pure // because the controls which are not virtual don't need to implement it wxFAIL_MSG( _T("wxGenericListCtrl::OnGetItemText not supposed to be called") ); return wxEmptyString; } int wxGenericListCtrl::OnGetItemImage(long WXUNUSED(item)) const { wxCHECK_MSG(!GetImageList(wxIMAGE_LIST_SMALL), -1, wxT("List control has an image list, OnGetItemImage or OnGetItemColumnImage should be overridden.")); return -1; } int wxGenericListCtrl::OnGetItemColumnImage(long item, long column) const { if (!column) return OnGetItemImage(item); return -1; } wxListItemAttr * wxGenericListCtrl::OnGetItemAttr(long WXUNUSED_UNLESS_DEBUG(item)) const { wxASSERT_MSG( item >= 0 && item < GetItemCount(), _T("invalid item index in OnGetItemAttr()") ); // no attributes by default return NULL; } void wxGenericListCtrl::SetItemCount(long count) { wxASSERT_MSG( IsVirtual(), _T("this is for virtual controls only") ); m_mainWin->SetItemCount(count); } void wxGenericListCtrl::RefreshItem(long item) { m_mainWin->RefreshLine(item); } void wxGenericListCtrl::RefreshItems(long itemFrom, long itemTo) { m_mainWin->RefreshLines(itemFrom, itemTo); } // Generic wxListCtrl is more or less a container for two other // windows which drawings are done upon. These are namely // 'm_headerWin' and 'm_mainWin'. // Here we override 'virtual wxWindow::Refresh()' to mimic the // behaviour wxListCtrl has under wxMSW. // void wxGenericListCtrl::Refresh(bool eraseBackground, const wxRect *rect) { if (!rect) { // The easy case, no rectangle specified. if (m_headerWin) m_headerWin->Refresh(eraseBackground); if (m_mainWin) m_mainWin->Refresh(eraseBackground); } else { // Refresh the header window if (m_headerWin) { wxRect rectHeader = m_headerWin->GetRect(); rectHeader.Intersect(*rect); if (rectHeader.GetWidth() && rectHeader.GetHeight()) { int x, y; m_headerWin->GetPosition(&x, &y); rectHeader.Offset(-x, -y); m_headerWin->Refresh(eraseBackground, &rectHeader); } } // Refresh the main window if (m_mainWin) { wxRect rectMain = m_mainWin->GetRect(); rectMain.Intersect(*rect); if (rectMain.GetWidth() && rectMain.GetHeight()) { int x, y; m_mainWin->GetPosition(&x, &y); rectMain.Offset(-x, -y); m_mainWin->Refresh(eraseBackground, &rectMain); } } } } void wxGenericListCtrl::Freeze() { m_mainWin->Freeze(); } void wxGenericListCtrl::Thaw() { m_mainWin->Thaw(); } } // namespace MuleExtern #endif // wxUSE_LISTCTRL amule_2.3.1+git20151120.0023527bc2.orig/src/extern/wxWidgets/listctrl.h0000644000175000017500000002555112611472361023605 0ustar morphmorph///////////////////////////////////////////////////////////////////////////// // Name: wx/generic/listctrl.h // Purpose: Generic list control // Author: Robert Roebling // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: Copyright (c) 1998-2011 Robert Roebling and Julian Smart // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef LISTCTRL_287_H #define LISTCTRL_287_H #include #include #include #define wxLC_OWNERDRAW 0x10000 #include #if wxUSE_DRAG_AND_DROP class WXDLLEXPORT wxDropTarget; #endif // Fix for bug in wx's implementation, which uses longs for item* typedef int (wxCALLBACK *MuleListCtrlCompare)(wxUIntPtr item1, wxUIntPtr item2, long sortData); namespace MuleExtern { // ---------------------------------------------------------------------------- // constants // ---------------------------------------------------------------------------- extern const wxChar wxListCtrlNameStr[]; //----------------------------------------------------------------------------- // internal classes //----------------------------------------------------------------------------- class wxListHeaderWindow; class wxListMainWindow; //----------------------------------------------------------------------------- // wxListCtrl //----------------------------------------------------------------------------- class wxGenericListCtrl: public wxControl { public: wxGenericListCtrl(); wxGenericListCtrl( wxWindow *parent, wxWindowID winid = wxID_ANY, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, const wxString &name = wxListCtrlNameStr) { Create(parent, winid, pos, size, style, validator, name); } virtual ~wxGenericListCtrl(); bool Create( wxWindow *parent, wxWindowID winid = wxID_ANY, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxLC_ICON, const wxValidator& validator = wxDefaultValidator, const wxString &name = wxListCtrlNameStr); bool GetColumn( int col, wxListItem& item ) const; bool SetColumn( int col, wxListItem& item ); int GetColumnWidth( int col ) const; bool SetColumnWidth( int col, int width); int GetCountPerPage() const; // not the same in wxGLC as in Windows, I think void GetVisibleLines(long* first, long* last); wxRect GetViewRect() const; bool GetItem( wxListItem& info ) const; bool SetItem( wxListItem& info ); long SetItem( long index, int col, const wxString& label, int imageId = -1 ); int GetItemState( long item, long stateMask ) const; bool SetItemState( long item, long state, long stateMask); bool SetItemImage( long item, int image, int selImage = -1 ); bool SetItemColumnImage( long item, long column, int image ); wxString GetItemText( long item ) const; void SetItemText( long item, const wxString& str ); wxUIntPtr GetItemData( long item ) const; #if wxABI_VERSION >= 20804 bool SetItemPtrData(long item, wxUIntPtr data); #endif // wxABI 2.8.4+ // It is not certain that sizeof(long) == sizeof(void*), and since we // just about only use pointers as item-data, I've choosen to disable // this function to prevent mistakes. Use SetItemPtrData instead. #if 0 bool SetItemData(long item, long data); #endif bool GetItemRect( long item, wxRect& rect, int code = wxLIST_RECT_BOUNDS ) const; bool GetItemPosition( long item, wxPoint& pos ) const; bool SetItemPosition( long item, const wxPoint& pos ); // not supported in wxGLC int GetItemCount() const; int GetColumnCount() const; void SetItemSpacing( int spacing, bool isSmall = false ); wxSize GetItemSpacing() const; void SetItemTextColour( long item, const wxColour& col); wxColour GetItemTextColour( long item ) const; void SetItemBackgroundColour( long item, const wxColour &col); wxColour GetItemBackgroundColour( long item ) const; void SetItemFont( long item, const wxFont &f); wxFont GetItemFont( long item ) const; int GetSelectedItemCount() const; wxColour GetTextColour() const; void SetTextColour(const wxColour& col); long GetTopItem() const; void SetSingleStyle( long style, bool add = true ) ; void SetWindowStyleFlag( long style ); void RecreateWindow() {} long GetNextItem( long item, int geometry = wxLIST_NEXT_ALL, int state = wxLIST_STATE_DONTCARE ) const; wxImageList *GetImageList( int which ) const; void SetImageList( wxImageList *imageList, int which ); void AssignImageList( wxImageList *imageList, int which ); bool Arrange( int flag = wxLIST_ALIGN_DEFAULT ); // always wxLIST_ALIGN_LEFT in wxGLC void ClearAll(); bool DeleteItem( long item ); bool DeleteAllItems(); bool DeleteAllColumns(); bool DeleteColumn( int col ); void SetItemCount(long count); wxTextCtrl *EditLabel(long item, wxClassInfo* textControlClass = CLASSINFO(wxTextCtrl)); wxTextCtrl* GetEditControl() const; void Edit( long item ) { EditLabel(item); } bool EnsureVisible( long item ); long FindItem( long start, const wxString& str, bool partial = false ); long FindItem( long start, wxUIntPtr data ); long FindItem( long start, const wxPoint& pt, int direction ); // not supported in wxGLC long HitTest( const wxPoint& point, int& flags, long *pSubItem = NULL ) const; long InsertItem(wxListItem& info); long InsertItem( long index, const wxString& label ); long InsertItem( long index, int imageIndex ); long InsertItem( long index, const wxString& label, int imageIndex ); long InsertColumn( long col, wxListItem& info ); long InsertColumn( long col, const wxString& heading, int format = wxLIST_FORMAT_LEFT, int width = -1 ); bool ScrollList( int dx, int dy ); bool SortItems( MuleListCtrlCompare fn, long data ); bool Update( long item ); // Must provide overload to avoid hiding it (and warnings about it) virtual void Update() { wxControl::Update(); } // are we in report mode? bool InReportView() const { return HasFlag(wxLC_REPORT); } // are we in virtual report mode? bool IsVirtual() const { return HasFlag(wxLC_VIRTUAL); } // do we have a header window? bool HasHeader() const { return InReportView() && !HasFlag(wxLC_NO_HEADER); } // refresh items selectively (only useful for virtual list controls) void RefreshItem(long item); void RefreshItems(long itemFrom, long itemTo); #if WXWIN_COMPATIBILITY_2_6 // obsolete, don't use wxDEPRECATED( int GetItemSpacing( bool isSmall ) const ); #endif // WXWIN_COMPATIBILITY_2_6 virtual wxVisualAttributes GetDefaultAttributes() const { return GetClassDefaultAttributes(GetWindowVariant()); } static wxVisualAttributes GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL); // implementation only from now on // ------------------------------- void OnInternalIdle( ); void OnSize( wxSizeEvent &event ); // We have to hand down a few functions virtual void Refresh(bool eraseBackground = true, const wxRect *rect = NULL); virtual void Freeze(); virtual void Thaw(); virtual void OnDrawItem(int item, wxDC* dc, const wxRect& rect, const wxRect& rectHL, bool highlighted); virtual bool SetBackgroundColour( const wxColour &colour ); virtual bool SetForegroundColour( const wxColour &colour ); virtual wxColour GetBackgroundColour() const; virtual wxColour GetForegroundColour() const; virtual bool SetFont( const wxFont &font ); virtual bool SetCursor( const wxCursor &cursor ); virtual int GetScrollPos(int orient) const; virtual void SetScrollPos(int orient, int pos, bool refresh = true); #if wxUSE_DRAG_AND_DROP virtual void SetDropTarget( wxDropTarget *dropTarget ); virtual wxDropTarget *GetDropTarget() const; #endif virtual bool ShouldInheritColours() const { return false; } virtual void SetFocus(); virtual bool GetFocus(); // implementation // -------------- wxImageList *m_imageListNormal; wxImageList *m_imageListSmall; wxImageList *m_imageListState; // what's that ? bool m_ownsImageListNormal, m_ownsImageListSmall, m_ownsImageListState; wxListHeaderWindow *m_headerWin; wxListMainWindow *m_mainWin; wxCoord m_headerHeight; protected: virtual bool DoPopupMenu( wxMenu *menu, int x, int y ); // take into account the coordinates difference between the container // window and the list control window itself here virtual void DoClientToScreen( int *x, int *y ) const; virtual void DoScreenToClient( int *x, int *y ) const; virtual wxSize DoGetBestSize() const; // return the text for the given column of the given item virtual wxString OnGetItemText(long item, long column) const; // return the icon for the given item. In report view, OnGetItemImage will // only be called for the first column. See OnGetItemColumnImage for // details. virtual int OnGetItemImage(long item) const; // return the icon for the given item and column. virtual int OnGetItemColumnImage(long item, long column) const; // return the attribute for the item (may return NULL if none) virtual wxListItemAttr *OnGetItemAttr(long item) const; // it calls our OnGetXXX() functions friend class wxListMainWindow; private: // create the header window void CreateHeaderWindow(); // calculate and set height of the header void CalculateAndSetHeaderHeight(); // reposition the header and the main window in the report view depending // on whether it should be shown or not void ResizeReportView(bool showHeader); DECLARE_EVENT_TABLE() }; #if (!defined(__WXMSW__) || defined(__WXUNIVERSAL__)) && (!defined(__WXMAC__) || defined(__WXUNIVERSAL__)) /* * wxListCtrl has to be a real class or we have problems with * the run-time information. */ class wxListCtrl: public wxGenericListCtrl { public: wxListCtrl() {} wxListCtrl(wxWindow *parent, wxWindowID winid = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxLC_ICON, const wxValidator &validator = wxDefaultValidator, const wxString &name = wxListCtrlNameStr) : wxGenericListCtrl(parent, winid, pos, size, style, validator, name) { } }; #endif // !__WXMSW__ || __WXUNIVERSAL__ } // namespace MuleExtern #endif // LISTCTRL_287_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/0000755000175000017500000000000012611472361017715 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/include/common/0000755000175000017500000000000012611472361021205 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/include/common/ClientVersion.h0000644000175000017500000000362112611472361024144 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CLIENTVERSION_H #define CLIENTVERSION_H #ifdef HAVE_CONFIG_H #include "config.h" // Needed for VERSION #endif // eMule version used on old MuleInfo packet (unimportant). #define CURRENT_VERSION_SHORT 0x47 // This is only used to server login. It has no real "version" meaning anymore. #define EDONKEYVERSION 0x3c // aMule version // No more Mod Version unless we're cvs // RELEASERS: REMOVE THE DEFINE ON THE RELEASES, PLEASE // AND FIX THE MOD_VERSION_LONG #define __SVN__ #ifndef VERSION #define VERSION "2.4.0" #endif #ifdef __SVN__ #define MOD_VERSION_LONG wxT("aMule SVN") #else #define MOD_VERSION_LONG (wxT("aMule ") wxT(VERSION)) #endif #define VERSION_MJR 2 #define VERSION_MIN 4 #define VERSION_UPDATE 0 #ifndef PACKAGE #define PACKAGE "amule" #endif #endif // CLIENTVERSION_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/common/Constants.h0000644000175000017500000000246612611472361023342 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef COMMONCONSTANTS_H #define COMMONCONSTANTS_H const unsigned UNLIMITED = 0; #define MINWAIT_BEFORE_DLDISPLAY_WINDOWUPDATE 1500 #define DISKSPACERECHECKTIME 60000 // checkDiskspace #endif // COMMONCONSTANTS_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/common/DataFileVersion.h0000644000175000017500000000323012611472361024373 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef DATAFILEVERSION_H #define DATAFILEVERSION_H enum PreferencesDatFileVersions { PREFFILE_VERSION = 0x14 //<<-- last change: reduced .dat, by using .ini }; enum PartMetFileVersions { PARTFILE_VERSION = 0xe0, PARTFILE_SPLITTEDVERSION = 0xe1, // For edonkey part files importing. PARTFILE_VERSION_LARGEFILE = 0xe2 }; enum CreditFileVersions { CREDITFILE_VERSION = 0x12 }; enum KnownFileListVersions { MET_HEADER = 0x0E, MET_HEADER_WITH_LARGEFILES = 0x0F }; enum CanceledFileListVersions { CANCELEDFILE_VERSION = 0x21 }; #endif // DATAFILEVERSION_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/common/EventIDs.h0000644000175000017500000000276212611472361023046 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef EVENTHANDLERS_H #define EVENTHANDLERS_H // Handlers enum { // Socket handlers ID_LISTENSOCKET_EVENT = wxID_HIGHEST+123, // random safe ID ID_CLIENTTCPSOCKET_EVENT, ID_SERVERUDPSOCKET_EVENT, ID_SERVERSOCKET_EVENT, ID_CLIENTUDPSOCKET_EVENT, ID_PROXY_SOCKET_EVENT, // Custom Timer Events ID_CORE_TIMER_EVENT, ID_GUI_TIMER_EVENT, ID_SERVER_RETRY_TIMER_EVENT }; #endif // EVENTHANDLERS_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/common/Macros.h0000644000175000017500000000331212611472361022601 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef COMMONMACROS_H #define COMMONMACROS_H #define SEC2MS(sec) ((sec)*1000) #define MIN2MS(min) SEC2MS((min)*60) #define HR2MS(hr) MIN2MS((hr)*60) #define DAY2MS(day) HR2MS((day)*24) #define SEC(sec) (sec) #define MIN2S(min) ((min)*60) #define HR2S(hr) MIN2S((hr)*60) #define DAY2S(day) HR2S((day)*24) #define COMPILE_DATE __DATE__ #define COMPILE_TIME __TIME__ //! Returns the number of items in an array. #define itemsof(x) (sizeof(x) / sizeof(x[0])) // Build type specific macro #ifdef __DEBUG__ # define DEBUG_ONLY(x) x #else # define DEBUG_ONLY(x) /* nothing */ #endif #endif // COMMONMACROS_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/common/MacrosProgramSpecific.h0000644000175000017500000000313212611472361025577 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef MACROSPROGRAMSPECIFIC_H #define MACROSPROGRAMSPECIFIC_H // Built program specific macros #ifdef AMULE_DAEMON # define ONLY_ON_DAEMON(x) x # define NOT_ON_DAEMON(x) #else # define ONLY_ON_DAEMON(x) # define NOT_ON_DAEMON(x) x #endif #ifdef CLIENT_GUI # define ONLY_ON_REMOTEGUI(x) x # define NOT_ON_REMOTEGUI(x) #else # define ONLY_ON_REMOTEGUI(x) # define NOT_ON_REMOTEGUI(x) x #endif #define GUI_ONLY(x) NOT_ON_DAEMON(x) #define CORE_ONLY(x) NOT_ON_REMOTEGUI(x) #endif // MACROSPROGRAMSPECIFIC_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/common/MenuIDs.h0000644000175000017500000000730412611472361022666 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef COMMONMENUIDS_H #define COMMONMENUIDS_H #include // To access wxID_HIGHEST menu item constant enum { MP_MESSAGE = wxID_HIGHEST + 1, // Start ID at next free value (defined by wx) MP_DETAIL, MP_ADDFRIEND, MP_REMOVEFRIEND, MP_SHOWLIST, MP_FRIENDSLOT, MP_CHANGE2FILE, MP_CANCEL, MP_STOP, MP_RESUME, MP_PAUSE, MP_CLEARCOMPLETED, MP_VIEW, MP_SENDMESSAGE, MP_WS, MP_RAZORSTATS, MP_ADDCOLLECTION, MP_GETCOMMENTS, MP_SEARCHRELATED, MP_MARK_AS_KNOWN, //For comments MP_CMT, MP_PRIOVERYLOW, MP_PRIOLOW, MP_PRIONORMAL, MP_PRIOHIGH, MP_PRIOVERYHIGH, MP_POWERSHARE, MP_PRIOAUTO, MP_GETMAGNETLINK, MP_GETED2KLINK, MP_GETSOURCEED2KLINK, MP_GETCRYPTSOURCEDED2KLINK, MP_GETHOSTNAMESOURCEED2KLINK, MP_GETHOSTNAMECRYPTSOURCEED2KLINK, MP_GETAICHED2KLINK, MP_GETAICHED2KLINKSRC, MP_METINFO, MP_CONNECTTO, MP_REMOVE, MP_REMOVEALL, MP_UNBAN, MP_ADDTOSTATIC, MP_REMOVEFROMSTATIC, MP_VIEWFILECOMMENTS, MP_CAT_ADD, MP_CAT_EDIT, MP_CAT_REMOVE, MP_TOOGLELIST, MP_CLOSE_TAB, MP_CLOSE_ALL_TABS, MP_CLOSE_OTHER_TABS, MP_RENAME, /* Razor 1a - Modif by MikaelB Opcodes for : - Drop No Needed Sources now - Drop Full Queue Sources now - Drop High Queue Rating Sources now - Clean Up Sources now ( drop NNS, FQS and HQRS ) - Swap every A4AF to this file now - Swap every A4AF to this file ( AUTO ) - Swap every A4AF to any other file now */ MP_DROP_NO_NEEDED_SOURCES, MP_DROP_FULL_QUEUE_SOURCES, MP_DROP_HIGH_QUEUE_RATING_SOURCES, MP_CLEAN_UP_SOURCES, MP_SWAP_A4AF_TO_THIS, MP_SWAP_A4AF_TO_THIS_AUTO, MP_SWAP_A4AF_TO_ANY_OTHER, //menus MP_MENU_PRIO, MP_MENU_EXTD, MP_MENU_CATS, // CMuleListCtrl tabs. MP_LISTCOL_1, MP_LISTCOL_2, MP_LISTCOL_3, MP_LISTCOL_4, MP_LISTCOL_5, MP_LISTCOL_6, MP_LISTCOL_7, MP_LISTCOL_8, MP_LISTCOL_9, MP_LISTCOL_10, MP_LISTCOL_11, MP_LISTCOL_12, MP_LISTCOL_13, MP_LISTCOL_14, MP_LISTCOL_15, MP_ASSIGNCAT = MP_LISTCOL_15 + 1, // reserve some for categories (about 100) MP_CAT_SET0 = MP_ASSIGNCAT + 100, // reserve some for change all-cats (about 50) MP_SWITCHCTRL_0 = MP_CAT_SET0 + 50, MP_SWITCHCTRL_9 = MP_SWITCHCTRL_0 + 9, // Pop-up menu clickable entries TRAY_MENU_INFO = 0, TRAY_MENU_CLIENTINFO = 0, TRAY_MENU_CLIENTINFO_ITEM = MP_SWITCHCTRL_9 + 1, // continue from MP_SWITCHCTRL_9 TRAY_MENU_DISCONNECT, TRAY_MENU_CONNECT, TRAY_MENU_HIDE, TRAY_MENU_SHOW, TRAY_MENU_EXIT, UPLOAD_ITEM1, UPLOAD_ITEM2, UPLOAD_ITEM3, UPLOAD_ITEM4, UPLOAD_ITEM5, UPLOAD_ITEM6, DOWNLOAD_ITEM1, DOWNLOAD_ITEM2, DOWNLOAD_ITEM3, DOWNLOAD_ITEM4, DOWNLOAD_ITEM5, DOWNLOAD_ITEM6 }; #endif // COMMONMENUIDS_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/0000755000175000017500000000000012611472361021556 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/Protocols.h0000644000175000017500000000330012611472361023707 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef ED2KPROTOCOLS_H #define ED2KPROTOCOLS_H // For MuleInfoPacket (OLD - DEPRECATED.) #define EMULE_PROTOCOL 0x01 // Known protocols enum Protocols { OP_EDONKEYHEADER = 0xE3, OP_EDONKEYPROT = OP_EDONKEYHEADER, OP_PACKEDPROT = 0xD4, OP_EMULEPROT = 0xC5, // Reserved for later UDP headers (important for EncryptedDatagramSocket) OP_UDPRESERVEDPROT1 = 0xA3, OP_UDPRESERVEDPROT2 = 0xB2, // Kademlia 1/2 OP_KADEMLIAHEADER = 0xE4, OP_KADEMLIAPACKEDPROT = 0xE5, // Kry tests OP_ED2KV2HEADER = 0xF4, OP_ED2KV2PACKEDPROT = 0xF5, OP_MLDONKEYPROT = 0x00 }; #endif // ED2KPROTOCOLS_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/ed2k/0000755000175000017500000000000012611472361022403 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/ed2k/Client2Client/0000755000175000017500000000000012611472361025042 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/ed2k/Client2Client/TCP.h0000644000175000017500000001134512611472361025645 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef ED2KC2CTCP_H #define ED2KC2CTCP_H // Client <-> Client enum ED2KStandardClientTCP { OP_HELLO = 0x01, // 0x10<1 Tag_set> OP_SENDINGPART = 0x46, // OP_REQUESTPARTS = 0x47, // OP_FILEREQANSNOFIL = 0x48, // OP_END_OF_DOWNLOAD = 0x49, // // Unused for sending OP_ASKSHAREDFILES = 0x4A, // (null) OP_ASKSHAREDFILESANSWER = 0x4B, // (<1 Tag_set>)[count] OP_HELLOANSWER = 0x4C, // <1 Tag_set> OP_CHANGE_CLIENT_ID = 0x4D, // // Unused for sending OP_MESSAGE = 0x4E, // OP_SETREQFILEID = 0x4F, // OP_FILESTATUS = 0x50, // OP_HASHSETREQUEST = 0x51, // OP_HASHSETANSWER = 0x52, // OP_STARTUPLOADREQ = 0x54, // OP_ACCEPTUPLOADREQ = 0x55, // (null) OP_CANCELTRANSFER = 0x56, // (null) OP_OUTOFPARTREQS = 0x57, // (null) OP_REQUESTFILENAME = 0x58, // (more correctly file_name_request) OP_REQFILENAMEANSWER = 0x59, // OP_CHANGE_SLOT = 0x5B, // // Not used for sending OP_QUEUERANK = 0x5C, // (slot index of the request) // Not used for sending OP_ASKSHAREDDIRS = 0x5D, // (null) OP_ASKSHAREDFILESDIR = 0x5E, // OP_ASKSHAREDDIRSANS = 0x5F, // ()[count] OP_ASKSHAREDFILESDIRANS = 0x60, // (<1 T OP_ASKSHAREDDENIEDANS = 0x61 // (null) }; // Extended prot client <-> Extended prot client enum ED2KExtendedClientTCP { OP_EMULEINFO = 0x01, // OP_EMULEINFOANSWER = 0x02, // OP_COMPRESSEDPART = 0x40, // OP_QUEUERANKING = 0x60, // OP_FILEDESC = 0x61, // OP_VERIFYUPSREQ = 0x71, // (never used) OP_VERIFYUPSANSWER = 0x72, // (never used) OP_UDPVERIFYUPREQ = 0x73, // (never used) OP_UDPVERIFYUPA = 0x74, // (never used) OP_REQUESTSOURCES = 0x81, // OP_ANSWERSOURCES = 0x82, // OP_REQUESTSOURCES2 = 0x83, // OP_ANSWERSOURCES2 = 0x84, // OP_PUBLICKEY = 0x85, // OP_SIGNATURE = 0x86, // v1: // v2: OP_SECIDENTSTATE = 0x87, // OP_REQUESTPREVIEW = 0x90, // // Never used for sending on aMule OP_PREVIEWANSWER = 0x91, // {frames * } // Never used for sending on aMule OP_MULTIPACKET = 0x92, OP_MULTIPACKETANSWER = 0x93, // OP_PEERCACHE_QUERY = 0x94, // Unused on aMule - no PeerCache // OP_PEERCACHE_ANSWER = 0x95, // Unused on aMule - no PeerCache // OP_PEERCACHE_ACK = 0x96, // Unused on aMule - no PeerCache OP_PUBLICIP_REQ = 0x97, OP_PUBLICIP_ANSWER = 0x98, OP_CALLBACK = 0x99, // OP_REASKCALLBACKTCP = 0x9A, OP_AICHREQUEST = 0x9B, // OP_AICHANSWER = 0x9C, // OP_AICHFILEHASHANS = 0x9D, OP_AICHFILEHASHREQ = 0x9E, OP_BUDDYPING = 0x9F, OP_BUDDYPONG = 0xA0, OP_COMPRESSEDPART_I64 = 0xA1, // OP_SENDINGPART_I64 = 0xA2, // OP_REQUESTPARTS_I64 = 0xA3, // OP_MULTIPACKET_EXT = 0xA4, OP_CHATCAPTCHAREQ = 0xA5, OP_CHATCAPTCHARES = 0xA6, }; #endif // ED2KC2CTCP_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/ed2k/Client2Client/UDP.h0000644000175000017500000000272412611472361025650 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef ED2KC2CUDP_H #define ED2KC2CUDP_H // Extended prot client <-> Extended prot client UDP enum ED2KExtendedClientUDP { OP_REASKFILEPING = 0x90, // OP_REASKACK = 0x91, // OP_FILENOTFOUND = 0x92, // (null) OP_QUEUEFULL = 0x93, // (null) OP_REASKCALLBACKUDP = 0x94, OP_PORTTEST = 0xFE // Connection Test }; #endif // ED2KC2CUDP_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/ed2k/Client2Server/0000755000175000017500000000000012611472361025072 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/ed2k/Client2Server/TCP.h0000644000175000017500000000710312611472361025672 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef ED2KC2STCP_H #define ED2KC2STCP_H enum OP_ClientToServerTCP { OP_LOGINREQUEST = 0x01, // <1 Tag_set> OP_REJECT = 0x05, // (null) OP_GETSERVERLIST = 0x14, // (null)client->server OP_OFFERFILES = 0x15, // (<1 Tag_set>)[count] OP_SEARCHREQUEST = 0x16, // OP_DISCONNECT = 0x18, // (not verified) OP_GETSOURCES = 0x19, // // v2 (17.3) (mandatory on 17.8) // v2large (17.9) (large files only) OP_SEARCH_USER = 0x1A, // OP_CALLBACKREQUEST = 0x1C, // // OP_QUERY_CHATS = 0x1D, // (deprecated, not supported by server any longer) // OP_CHAT_MESSAGE = 0x1E, // (deprecated, not supported by server any longer) // OP_JOIN_ROOM = 0x1F, // (deprecated, not supported by server any longer) OP_QUERY_MORE_RESULT = 0x21, // (null) OP_GETSOURCES_OBFU = 0x23, OP_SERVERLIST = 0x32, // ()[count] server->client OP_SEARCHRESULT = 0x33, // (<1 Tag_set>)[count] OP_SERVERSTATUS = 0x34, // OP_CALLBACKREQUESTED = 0x35, // OP_CALLBACK_FAIL = 0x36, // (null notverified) OP_SERVERMESSAGE = 0x38, // // OP_CHAT_ROOM_REQUEST = 0x39, // (deprecated, not supported by server any longer) // OP_CHAT_BROADCAST = 0x3A, // (deprecated, not supported by server any longer) // OP_CHAT_USER_JOIN = 0x3B, // (deprecated, not supported by server any longer) // OP_CHAT_USER_LEAVE = 0x3C, // (deprecated, not supported by server any longer) // OP_CHAT_USER = 0x3D, // (deprecated, not supported by server any longer) OP_IDCHANGE = 0x40, // OP_SERVERIDENT = 0x41, // {1 TAG_SET} OP_FOUNDSOURCES = 0x42, // ()[count] OP_USERS_LIST = 0x43, // (<1 Tag_set>)[count] OP_FOUNDSOURCES_OBFU = 0x44 // ((UserHash16 if obf&0x08))[count] }; // Server TCP flags #define SRV_TCPFLG_COMPRESSION 0x00000001 #define SRV_TCPFLG_NEWTAGS 0x00000008 #define SRV_TCPFLG_UNICODE 0x00000010 #define SRV_TCPFLG_RELATEDSEARCH 0x00000040 #define SRV_TCPFLG_TYPETAGINTEGER 0x00000080 #define SRV_TCPFLG_LARGEFILES 0x00000100 #define SRV_TCPFLG_TCPOBFUSCATION 0x00000400 #endif // ED2KC2STCP_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/ed2k/Client2Server/UDP.h0000644000175000017500000000457512611472361025706 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef ED2KC2SUDP_H #define ED2KC2SUDP_H enum OP_ClientToServerUDP { OP_GLOBSEARCHREQ3 = 0x90, // <1 tag set> OP_GLOBSEARCHREQ2 = 0x92, // OP_GLOBGETSOURCES2 = 0x94, // // largefiles only: (17.8) OP_GLOBSERVSTATREQ = 0x96, // (null) OP_GLOBSERVSTATRES = 0x97, // OP_GLOBSEARCHREQ = 0x98, // OP_GLOBSEARCHRES = 0x99, // OP_GLOBGETSOURCES = 0x9A, // OP_GLOBFOUNDSOURCES = 0x9B, // OP_GLOBCALLBACKREQ = 0x9C, // OP_INVALID_LOWID = 0x9E, // OP_SERVER_LIST_REQ = 0xA0, // OP_SERVER_LIST_RES = 0xA1, // ()[count] OP_SERVER_DESC_REQ = 0xA2, // (null) OP_SERVER_DESC_RES = 0xA3, // OP_SERVER_LIST_REQ2 = 0xA4 // (null) }; // Server UDP flags #define SRV_UDPFLG_EXT_GETSOURCES 0x00000001 #define SRV_UDPFLG_EXT_GETFILES 0x00000002 #define SRV_UDPFLG_NEWTAGS 0x00000008 #define SRV_UDPFLG_UNICODE 0x00000010 #define SRV_UDPFLG_EXT_GETSOURCES2 0x00000020 #define SRV_UDPFLG_LARGEFILES 0x00000100 #define SRV_UDPFLG_UDPOBFUSCATION 0x00000200 #define SRV_UDPFLG_TCPOBFUSCATION 0x00000400 #endif // ED2KC2SUDP_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/ed2k/ClientSoftware.h0000644000175000017500000000311712611472361025507 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CLIENTSOFTWARE_H #define CLIENTSOFTWARE_H enum EClientSoftware { SO_EMULE = 0, SO_CDONKEY = 1, SO_LXMULE = 2, SO_AMULE = 3, SO_SHAREAZA = 4, SO_EMULEPLUS = 5, SO_HYDRANODE = 6, SO_NEW2_MLDONKEY = 0x0a, SO_LPHANT = 0x14, SO_NEW2_SHAREAZA = 0x28, SO_EDONKEYHYBRID = 0x32, SO_EDONKEY = 0x33, SO_MLDONKEY = 0x34, SO_OLDEMULE = 0x35, SO_UNKNOWN = 0x36, SO_NEW_SHAREAZA = 0x44, SO_NEW_MLDONKEY = 0x98, SO_COMPAT_UNK = 0xFF }; #endif // CLIENTSOFTWARE_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/ed2k/Constants.h0000644000175000017500000001070512611472361024533 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef ED2KCONSTANTS_H #define ED2KCONSTANTS_H #include // MOD Note: Do not change this part - Merkur // Timeouts & Reask times #define CONNECTION_TIMEOUT 40000 // set this lower if you want less connections at once, set it higher if you have enough sockets (edonkey has its own timout too, so a very high value won't effect this) #define FILEREASKTIME 1300000 // 1300000 <- original value *** #define SERVERREASKTIME 800000 // don't set this too low, it wont speed up anything, but it could kill amule or your internetconnection #define UDPSERVERREASKTIME 1300000 // 1300000 <- original value *** #define SOURCECLIENTREASKS MIN2MS(40) //40 mins #define SOURCECLIENTREASKF MIN2MS(5) //5 mins #define UDPSERVERSTATTIME SEC2MS(5) //5 secs #define UDPSERVSTATREASKTIME HR2MS(4.5) //4 hours - eMule uses HR2S, we are based on GetTickCount, hence MS #define UDPSERVSTATMINREASKTIME MIN2MS(20) //minimum time between two pings even when trying to force a premature ping for a new UDP key #define MINCOMMONPENALTY 4 // For file sources reask #define ED2KREPUBLISHTIME MIN2MS(1) //1 min #define UDPMAXQUEUETIME SEC2MS(30) //30 Seconds #define RSAKEYSIZE 384 //384 bits #define MAX_SOURCES_FILE_SOFT 500 #define MAX_SOURCES_FILE_UDP 50 #define MAXFILECOMMENTLEN 50 #define MIN_UP_CLIENTS_ALLOWED 2 // min. clients allowed to download regardless UPLOAD_CLIENT_DATARATE or any other factors. Don't set this too high #define SOURCEEXCHANGE2_VERSION 4 // replaces the version sent in MISC_OPTIONS flag from SX1 // MOD Note: end #define MAXCONPER5SEC 20 #define MAX_UP_CLIENTS_ALLOWED 250 // max. clients allowed regardless UPLOAD_CLIENT_DATARATE or any other factors. Don't set this too low, use DATARATE to adjust uploadspeed per client #define DOWNLOADTIMEOUT 100000 #define CONSERVTIMEOUT 25000 // agelimit for pending connection attempts #define RARE_FILE 50 #define MIN_REQUESTTIME 590000 #define MAX_PURGEQUEUETIME HR2MS(1) #define PURGESOURCESWAPSTOP MIN2MS(15) // How long forbid swapping a source to a certain file (NNP,...) #define CONNECTION_LATENCY 22050 // latency for responces #define CLIENTBANTIME HR2MS(2) // 2h #define TRACKED_CLEANUP_TIME HR2MS(1) #define KEEPTRACK_TIME HR2MS(2) // how long to keep track of clients which were once in the uploadqueue #define CLIENTLIST_CLEANUP_TIME MIN2MS(34) // 34 min // (4294967295/PARTSIZE)*PARTSIZE = ~4GB #define OLD_MAX_FILE_SIZE 4290048000ull // = 2^38 = 256GB #define MAX_FILE_SIZE 0x4000000000ull const uint64 PARTSIZE = 9728000ull; const uint32 BLOCKSIZE = 184320u; const uint32 EMBLOCKSIZE = 184320u; #define INV_SERV_DESC_LEN 0xF0FF // Used as an 'invalid' string len for OP_SERVER_DESC_REQ/RES // This 'identifier' is used for referencing shared part (incomplete) files with the OP_ASKSHAREDDIRS and related opcodes // it was introduced with eDonkeyHybrid and is considered as part of the protocol. #define OP_INCOMPLETE_SHARED_FILES wxT("!Incomplete Files") // ed2k search expression comparison operators // kad operators used to be different, but are the same since eMule 0.47a enum ed2k_search_compare { ED2K_SEARCH_OP_EQUAL = 0, // eserver 16.45+ ED2K_SEARCH_OP_GREATER, // dserver ED2K_SEARCH_OP_LESS, // dserver ED2K_SEARCH_OP_GREATER_EQUAL, // eserver 16.45+ ED2K_SEARCH_OP_LESS_EQUAL, // eserver 16.45+ ED2K_SEARCH_OP_NOTEQUAL }; #endif // ED2KCONSTANTS_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/kad/0000755000175000017500000000000012611472361022315 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/kad/Client2Client/0000755000175000017500000000000012611472361024754 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/kad/Client2Client/UDP.h0000644000175000017500000000557112611472361025565 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef KADC2CUDP_H #define KADC2CUDP_H enum KademliaV1OPcodes { KADEMLIA_BOOTSTRAP_REQ_DEPRECATED = 0x00, // KADEMLIA_BOOTSTRAP_RES_DEPRECATED = 0x08, // *(CNT) KADEMLIA_HELLO_REQ_DEPRECATED = 0x10, // KADEMLIA_HELLO_RES_DEPRECATED = 0x18, // KADEMLIA_REQ_DEPRECATED = 0x20, // KADEMLIA_RES_DEPRECATED = 0x28, // *(CNT) KADEMLIA_SEARCH_REQ = 0x30, // [ext] // UNUSED = 0x31, // Old Opcode, don't use. KADEMLIA_SEARCH_NOTES_REQ = 0x32, // KADEMLIA_SEARCH_RES = 0x38, // ( *(CNT2))*(CNT1) // UNUSED = 0x39, // Old Opcode, don't use. KADEMLIA_SEARCH_NOTES_RES = 0x3A, // ( *(CNT2))*(CNT1) KADEMLIA_PUBLISH_REQ = 0x40, // ( *(CNT2))*(CNT1) // UNUSED = 0x41, // Old Opcode, don't use. KADEMLIA_PUBLISH_NOTES_REQ_DEPRECATED = 0x42, // *(CNT2))*(CNT1) KADEMLIA_PUBLISH_RES = 0x48, // // UNUSED = 0x49, // Old Opcode, don't use. KADEMLIA_PUBLISH_NOTES_RES_DEPRECATED = 0x4A, // KADEMLIA_FIREWALLED_REQ = 0x50, // KADEMLIA_FINDBUDDY_REQ = 0x51, // KADEMLIA_CALLBACK_REQ = 0x52, // KADEMLIA_FIREWALLED_RES = 0x58, // KADEMLIA_FIREWALLED_ACK_RES = 0x59, // (null) KADEMLIA_FINDBUDDY_RES = 0x5A // }; #endif // KADC2CUDP_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/kad/Constants.h0000644000175000017500000000452712611472361024452 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef KADCONSTANTS_H #define KADCONSTANTS_H #include // MOD Note: Do not change this part - Merkur #define KADEMLIAASKTIME SEC2MS(1) //1 second #define KADEMLIATOTALFILE 5 //Total files to search sources for. #define KADEMLIAREASKTIME HR2MS(1) //1 hour #define KADEMLIAPUBLISHTIME SEC(2) //2 second #define KADEMLIATOTALSTORENOTES 1 //Total hashes to store. #define KADEMLIATOTALSTORESRC 3 //Total hashes to store. #define KADEMLIATOTALSTOREKEY 2 //Total hashes to store. #define KADEMLIAREPUBLISHTIMES HR2S(5) //5 hours #define KADEMLIAREPUBLISHTIMEN HR2S(24) //24 hours #define KADEMLIAREPUBLISHTIMEK HR2S(24) //24 hours #define KADEMLIADISCONNECTDELAY MIN2S(20) //20 mins #define KADEMLIAMAXINDEX 50000 //Total keyword indexes. #define KADEMLIAMAXENTRIES 60000 //Total keyword entries. #define KADEMLIAMAXSOURCEPERFILE 1000 //Max number of sources per file in index. #define KADEMLIAMAXNOTESPERFILE 150 //Max number of notes per entry in index. #define KADEMLIAFIREWALLCHECKS 4 //Firewallcheck Request at a time // MOD Note: end // Kad parameters #define KADEMLIA_FIND_VALUE 0x02 #define KADEMLIA_STORE 0x04 #define KADEMLIA_FIND_NODE 0x0B #define KADEMLIA_FIND_VALUE_MORE KADEMLIA_FIND_NODE #endif // KADCONSTANTS_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/kad2/0000755000175000017500000000000012611472361022377 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/kad2/Client2Client/0000755000175000017500000000000012611472361025036 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/kad2/Client2Client/TCP.h0000644000175000017500000000266612611472361025647 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef KAD2_C2C_TCP_H #define KAD2_C2C_TCP_H enum Ed2kTCPOpcodesForKademliaV2 { OP_FWCHECKUDPREQ = 0xA7, // *Support required for Kadversion >= 6 OP_KAD_FWTCPCHECK_ACK = 0xA8 // (null/reserved), replaces KADEMLIA_FIREWALLED_ACK_RES, *Support required for Kadversion >= 7 }; #endif // KAD2_C2C_TCP_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/kad2/Client2Client/UDP.h0000644000175000017500000000410412611472361025636 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef KAD2C2CUDP_H #define KAD2C2CUDP_H enum Ed2kUDPOpcodesForKademliaV2 { OP_DIRECTCALLBACKREQ = 0x95 // }; enum Kademlia2Opcodes { KADEMLIA2_BOOTSTRAP_REQ = 0x01, KADEMLIA2_BOOTSTRAP_RES = 0x09, KADEMLIA2_HELLO_REQ = 0x11, KADEMLIA2_HELLO_RES = 0x19, KADEMLIA2_REQ = 0x21, KADEMLIA2_HELLO_RES_ACK = 0x22, // KADEMLIA2_RES = 0x29, KADEMLIA2_SEARCH_KEY_REQ = 0x33, KADEMLIA2_SEARCH_SOURCE_REQ = 0x34, KADEMLIA2_SEARCH_NOTES_REQ = 0x35, KADEMLIA2_SEARCH_RES = 0x3B, KADEMLIA2_PUBLISH_KEY_REQ = 0x43, KADEMLIA2_PUBLISH_SOURCE_REQ = 0x44, KADEMLIA2_PUBLISH_NOTES_REQ = 0x45, KADEMLIA2_PUBLISH_RES = 0x4B, KADEMLIA2_PUBLISH_RES_ACK = 0x4C, // (null) KADEMLIA_FIREWALLED2_REQ = 0x53, // KADEMLIA2_PING = 0x60, // (null) KADEMLIA2_PONG = 0x61, // (null) KADEMLIA2_FIREWALLUDP = 0x62 // }; #endif // KAD2C2CUDP_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/protocol/kad2/Constants.h0000644000175000017500000000232112611472361024522 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef KAD2CONSTANTS_H #define KAD2CONSTANTS_H #define KADEMLIA_VERSION 0x08 /* 0.49b */ #endif // KAD2CONSTANTS_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/tags/0000755000175000017500000000000012611472361020653 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/include/tags/ClientTags.h0000644000175000017500000000605612611472361023070 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef CLIENTTAGS_H #define CLIENTTAGS_H enum client_tags { CT_NAME = 0x01, CT_SERVER_UDPSEARCH_FLAGS = 0x0E, CT_PORT = 0x0F, CT_VERSION = 0x11, CT_SERVER_FLAGS = 0x20, // currently only used to inform a server about supported features CT_EMULECOMPAT_OPTIONS = 0xEF, CT_EMULE_RESERVED1 = 0xF0, CT_EMULE_RESERVED2 = 0xF1, CT_EMULE_RESERVED3 = 0xF2, CT_EMULE_RESERVED4 = 0xF3, CT_EMULE_RESERVED5 = 0xF4, CT_EMULE_RESERVED6 = 0xF5, CT_EMULE_RESERVED7 = 0xF6, CT_EMULE_RESERVED8 = 0xF7, CT_EMULE_RESERVED9 = 0xF8, CT_EMULE_UDPPORTS = 0xF9, CT_EMULE_MISCOPTIONS1 = 0xFA, CT_EMULE_VERSION = 0xFB, CT_EMULE_BUDDYIP = 0xFC, CT_EMULE_BUDDYUDP = 0xFD, CT_EMULE_MISCOPTIONS2 = 0xFE, CT_EMULE_RESERVED13 = 0xFF }; // Old MuleInfo tags enum MuleInfo_tags { ET_COMPRESSION = 0x20u, ET_UDPPORT = 0x21u, ET_UDPVER = 0x22u, ET_SOURCEEXCHANGE = 0x23u, ET_COMMENTS = 0x24u, ET_EXTENDEDREQUEST = 0x25u, ET_COMPATIBLECLIENT = 0x26u, ET_FEATURES = 0x27u, //! bit 0: SecIdent v1 - bit 1: SecIdent v2 ET_MOD_VERSION = 0x55u, // ET_FEATURESET = 0x54u, // int - [Bloodymad Featureset] // UNUSED ET_OS_INFO = 0x94u // Reused rand tag (MOD_OXY), because the type is unknown }; // Server capabilities, values for CT_SERVER_FLAGS enum ServerCapabilites { SRVCAP_ZLIB = 0x0001, SRVCAP_IP_IN_LOGIN = 0x0002, SRVCAP_AUXPORT = 0x0004, SRVCAP_NEWTAGS = 0x0008, SRVCAP_UNICODE = 0x0010, SRVCAP_LARGEFILES = 0x0100, SRVCAP_SUPPORTCRYPT = 0x0200, SRVCAP_REQUESTCRYPT = 0x0400, SRVCAP_REQUIRECRYPT = 0x0800 }; // aMule used to use these names #define CAPABLE_ZLIB SRVCAP_ZLIB #define CAPABLE_IP_IN_LOGIN_FRAME SRVCAP_IP_IN_LOGIN #define CAPABLE_AUXPORT SRVCAP_AUXPORT #define CAPABLE_NEWTAGS SRVCAP_NEWTAGS #define CAPABLE_UNICODE SRVCAP_UNICODE #define CAPABLE_LARGEFILES SRVCAP_LARGEFILES // Server capabilities, values for CT_SERVER_UDPSEARCH_FLAGS enum ServerUDPCapabilities { SRVCAP_UDP_NEWTAGS_LARGEFILES = 0x01 }; #endif // CLIENTTAGS_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/tags/FileTags.h0000644000175000017500000001323312611472361022524 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef FILETAGS_H #define FILETAGS_H // ED2K search + known.met + .part.met #define FT_FILENAME 0x01 // #define FT_FILESIZE 0x02 // #define FT_FILESIZE_HI 0x3A // #define FT_FILETYPE 0x03 // or #define FT_FILEFORMAT 0x04 // #define FT_LASTSEENCOMPLETE 0x05 // #define FT_TRANSFERRED 0x08 // #define FT_GAPSTART 0x09 // #define FT_GAPEND 0x0A // #define FT_PARTFILENAME 0x12 // #define FT_OLDDLPRIORITY 0x13 // Not used anymore #define FT_STATUS 0x14 // #define FT_SOURCES 0x15 // #define FT_PERMISSIONS 0x16 // #define FT_OLDULPRIORITY 0x17 // Not used anymore #define FT_DLPRIORITY 0x18 // Was 13 #define FT_ULPRIORITY 0x19 // Was 17 #define FT_KADLASTPUBLISHKEY 0x20 // #define FT_KADLASTPUBLISHSRC 0x21 // #define FT_FLAGS 0x22 // #define FT_DL_ACTIVE_TIME 0x23 // #define FT_CORRUPTEDPARTS 0x24 // #define FT_DL_PREVIEW 0x25 #define FT_KADLASTPUBLISHNOTES 0x26 // #define FT_AICH_HASH 0x27 #define FT_COMPLETE_SOURCES 0x30 // nr. of sources which share a // complete version of the // associated file (supported // by eserver 16.46+) statistic #define FT_PUBLISHINFO 0x33 // #define FT_ATTRANSFERRED 0x50 // #define FT_ATREQUESTED 0x51 // #define FT_ATACCEPTED 0x52 // #define FT_CATEGORY 0x53 // #define FT_ATTRANSFERREDHI 0x54 // #define FT_MEDIA_ARTIST 0xD0 // #define FT_MEDIA_ALBUM 0xD1 // #define FT_MEDIA_TITLE 0xD2 // #define FT_MEDIA_LENGTH 0xD3 // !!! #define FT_MEDIA_BITRATE 0xD4 // #define FT_MEDIA_CODEC 0xD5 // #define FT_FILERATING 0xF7 // // Kad search + some unused tags to mirror the ed2k ones. #define TAG_FILENAME wxT("\x01") // #define TAG_FILESIZE wxT("\x02") // #define TAG_FILESIZE_HI wxT("\x3A") // #define TAG_FILETYPE wxT("\x03") // #define TAG_FILEFORMAT wxT("\x04") // #define TAG_COLLECTION wxT("\x05") #define TAG_PART_PATH wxT("\x06") // #define TAG_PART_HASH wxT("\x07") #define TAG_COPIED wxT("\x08") // #define TAG_GAP_START wxT("\x09") // #define TAG_GAP_END wxT("\x0A") // #define TAG_DESCRIPTION wxT("\x0B") // #define TAG_PING wxT("\x0C") #define TAG_FAIL wxT("\x0D") #define TAG_PREFERENCE wxT("\x0E") #define TAG_PORT wxT("\x0F") #define TAG_IP_ADDRESS wxT("\x10") #define TAG_VERSION wxT("\x11") // #define TAG_TEMPFILE wxT("\x12") // #define TAG_PRIORITY wxT("\x13") // #define TAG_STATUS wxT("\x14") // #define TAG_SOURCES wxT("\x15") // #define TAG_AVAILABILITY wxT("\x15") // #define TAG_PERMISSIONS wxT("\x16") #define TAG_QTIME wxT("\x16") #define TAG_PARTS wxT("\x17") #define TAG_PUBLISHINFO wxT("\x33") // #define TAG_MEDIA_ARTIST wxT("\xD0") // #define TAG_MEDIA_ALBUM wxT("\xD1") // #define TAG_MEDIA_TITLE wxT("\xD2") // #define TAG_MEDIA_LENGTH wxT("\xD3") // !!! #define TAG_MEDIA_BITRATE wxT("\xD4") // #define TAG_MEDIA_CODEC wxT("\xD5") // #define TAG_KADMISCOPTIONS wxT("\xF2") // #define TAG_ENCRYPTION wxT("\xF3") // #define TAG_FILERATING wxT("\xF7") // #define TAG_BUDDYHASH wxT("\xF8") // #define TAG_CLIENTLOWID wxT("\xF9") // #define TAG_SERVERPORT wxT("\xFA") // #define TAG_SERVERIP wxT("\xFB") // #define TAG_SOURCEUPORT wxT("\xFC") // #define TAG_SOURCEPORT wxT("\xFD") // #define TAG_SOURCEIP wxT("\xFE") // #define TAG_SOURCETYPE wxT("\xFF") // // Media values for FT_FILETYPE #define ED2KFTSTR_AUDIO wxT("Audio") #define ED2KFTSTR_VIDEO wxT("Video") #define ED2KFTSTR_IMAGE wxT("Image") #define ED2KFTSTR_DOCUMENT wxT("Doc") #define ED2KFTSTR_PROGRAM wxT("Pro") #define ED2KFTSTR_ARCHIVE wxT("Arc") // *Mule internal use only #define ED2KFTSTR_CDIMAGE wxT("Iso") // *Mule internal use only // Additional media meta data tags from eDonkeyHybrid (note also the uppercase/lowercase) #define FT_ED2K_MEDIA_ARTIST "Artist" // #define FT_ED2K_MEDIA_ALBUM "Album" // #define FT_ED2K_MEDIA_TITLE "Title" // #define FT_ED2K_MEDIA_LENGTH "length" // !!! #define FT_ED2K_MEDIA_BITRATE "bitrate" // #define FT_ED2K_MEDIA_CODEC "codec" // #endif // FILETAGS_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/tags/ServerTags.h0000644000175000017500000000364612611472361023122 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef SERVERTAGS_H #define SERVERTAGS_H // server.met and server status. enum Server_tags { ST_SERVERNAME = 0x01, // // Unused (0x02-0x0A) ST_DESCRIPTION = 0x0B, // ST_PING = 0x0C, // ST_FAIL = 0x0D, // ST_PREFERENCE = 0x0E, // // Unused (0x0F-0x84) ST_DYNIP = 0x85, ST_LASTPING_DEPRECATED = 0x86, // // DEPRECATED, use 0x90 ST_MAXUSERS = 0x87, ST_SOFTFILES = 0x88, ST_HARDFILES = 0x89, // Unused (0x8A-0x8F) ST_LASTPING = 0x90, // ST_VERSION = 0x91, // ST_UDPFLAGS = 0x92, // ST_AUXPORTSLIST = 0x93, // ST_LOWIDUSERS = 0x94, // ST_UDPKEY = 0x95, // ST_UDPKEYIP = 0x96, // ST_TCPPORTOBFUSCATION = 0x97, // ST_UDPPORTOBFUSCATION = 0x98 // }; #endif // SERVERTAGS_H amule_2.3.1+git20151120.0023527bc2.orig/src/include/tags/TagTypes.h0000644000175000017500000000542512611472361022572 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef COMMONTAGTYPES_H #define COMMONTAGTYPES_H enum Tag_Types { TAGTYPE_HASH16 = 0x01, TAGTYPE_STRING = 0x02, TAGTYPE_UINT32 = 0x03, TAGTYPE_FLOAT32 = 0x04, TAGTYPE_BOOL = 0x05, TAGTYPE_BOOLARRAY = 0x06, TAGTYPE_BLOB = 0x07, TAGTYPE_UINT16 = 0x08, TAGTYPE_UINT8 = 0x09, TAGTYPE_BSOB = 0x0A, TAGTYPE_UINT64 = 0x0B, // Compressed string types TAGTYPE_STR1 = 0x11, TAGTYPE_STR2, TAGTYPE_STR3, TAGTYPE_STR4, TAGTYPE_STR5, TAGTYPE_STR6, TAGTYPE_STR7, TAGTYPE_STR8, TAGTYPE_STR9, TAGTYPE_STR10, TAGTYPE_STR11, TAGTYPE_STR12, TAGTYPE_STR13, TAGTYPE_STR14, TAGTYPE_STR15, TAGTYPE_STR16, TAGTYPE_STR17, // accepted by eMule 0.42f (02-Mai-2004) in receiving code // only because of a flaw, those tags are handled correctly, // but should not be handled at all TAGTYPE_STR18, // accepted by eMule 0.42f (02-Mai-2004) in receiving code // only because of a flaw, those tags are handled correctly, // but should not be handled at all TAGTYPE_STR19, // accepted by eMule 0.42f (02-Mai-2004) in receiving code // only because of a flaw, those tags are handled correctly, // but should not be handled at all TAGTYPE_STR20, // accepted by eMule 0.42f (02-Mai-2004) in receiving code // only because of a flaw, those tags are handled correctly, // but should not be handled at all TAGTYPE_STR21, // accepted by eMule 0.42f (02-Mai-2004) in receiving code // only because of a flaw, those tags are handled correctly, // but should not be handled at all TAGTYPE_STR22 // accepted by eMule 0.42f (02-Mai-2004) in receiving code // only because of a flaw, those tags are handled correctly, // but should not be handled at all }; #endif // COMMONTAGTYPES_H amule_2.3.1+git20151120.0023527bc2.orig/src/inetdownload.h0000644000175000017500000031203212611472361021133 0ustar morphmorph// This file is part of the aMule Project. // // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // #ifndef INETDOWNLOAD_H #define INETDOWNLOAD_H static unsigned char inetDownload[] = { 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x72, 0x00, 0x28, 0x00, 0x84, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xcf, 0xcf, 0xcf, 0xb0, 0xb0, 0xb0, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0, 0xa0, 0x20, 0x20, 0x20, 0x8f, 0x8f, 0x8f, 0x5f, 0x5f, 0x5f, 0xd0, 0xd0, 0xd0, 0xff, 0xff, 0xff, 0xbf, 0xbf, 0xbf, 0x6f, 0x6f, 0x6f, 0xef, 0xef, 0xef, 0xe0, 0xe0, 0xe0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0xff, 0xf0, 0xef, 0xff, 0xef, 0xd0, 0xff, 0xd0, 0xd0, 0xff, 0xaf, 0xc0, 0x70, 0x70, 0x70, 0xff, 0xaf, 0xaf, 0xff, 0xc0, 0xaf, 0x9a, 0x9a, 0x9a, 0x89, 0x89, 0x89, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x21, 0xff, 0x0b, 0x4e, 0x45, 0x54, 0x53, 0x43, 0x41, 0x50, 0x45, 0x32, 0x2e, 0x30, 0x03, 0x01, 0x00, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x24, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0xc0, 0xa0, 0x30, 0x67, 0x30, 0x0c, 0x8f, 0x06, 0xc2, 0xc2, 0x78, 0xe4, 0x05, 0x9e, 0xa2, 0xe4, 0x62, 0xd9, 0xd4, 0x05, 0x26, 0x93, 0x43, 0xe0, 0x23, 0xa5, 0x56, 0x6f, 0x57, 0x6c, 0xf6, 0x13, 0x20, 0x0c, 0xbc, 0xdf, 0xda, 0x95, 0x82, 0xd5, 0x96, 0xcf, 0xcc, 0x34, 0x6d, 0xcd, 0xae, 0x94, 0xcd, 0x83, 0xb8, 0x5c, 0x16, 0xb0, 0x50, 0x2c, 0x16, 0x76, 0x04, 0x66, 0x7a, 0x7b, 0x31, 0x57, 0x80, 0x13, 0x76, 0x10, 0x83, 0x85, 0x86, 0x2f, 0x6b, 0x58, 0x8b, 0x8d, 0x8f, 0x29, 0x45, 0x97, 0x7a, 0x01, 0x15, 0x75, 0x05, 0x01, 0x10, 0x8c, 0x8e, 0x95, 0x45, 0x09, 0xa4, 0xa4, 0x08, 0x97, 0x64, 0x15, 0x8a, 0x05, 0x9d, 0x9f, 0x10, 0xa1, 0x86, 0x06, 0xa4, 0x53, 0x0b, 0x03, 0x02, 0x0a, 0xb8, 0x0a, 0x06, 0x01, 0x05, 0x15, 0xac, 0x5a, 0x9f, 0x0b, 0x0c, 0xb0, 0x69, 0xb2, 0x02, 0x02, 0xb4, 0x0b, 0xb9, 0xb8, 0x0e, 0xc7, 0xac, 0x03, 0x08, 0xbc, 0xb8, 0xc3, 0x95, 0x51, 0x09, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0x03, 0xdd, 0xb6, 0xc7, 0x0a, 0x0d, 0x0d, 0xd4, 0x8f, 0xc6, 0xc7, 0xc8, 0x53, 0xcb, 0xcc, 0xde, 0xec, 0x02, 0xe2, 0xe3, 0xc4, 0x43, 0xb2, 0xd7, 0xdf, 0xe9, 0xea, 0x0a, 0x0e, 0xde, 0x4f, 0x01, 0xdf, 0xef, 0x0c, 0x5b, 0x7b, 0xcc, 0x2d, 0x40, 0xa7, 0x4d, 0x5d, 0xbe, 0x6e, 0x4f, 0x14, 0xf0, 0x73, 0xd7, 0xc0, 0xc1, 0xbf, 0x58, 0xd7, 0x90, 0x61, 0xbb, 0xb7, 0x0e, 0xe1, 0x3e, 0x5b, 0x0e, 0x32, 0x3a, 0x00, 0x58, 0x2c, 0xc1, 0x00, 0x02, 0xe8, 0xce, 0x50, 0xc4, 0x27, 0x40, 0xdf, 0x13, 0x8c, 0x1a, 0xb7, 0x39, 0x56, 0x09, 0x60, 0xa0, 0x1b, 0xc8, 0x29, 0xdd, 0xee, 0x45, 0x20, 0xc9, 0x8e, 0x9d, 0xc6, 0x8d, 0x69, 0xf8, 0xb5, 0xfc, 0x48, 0x70, 0x80, 0xcc, 0x08, 0x19, 0x4b, 0xd6, 0x7c, 0x97, 0x51, 0xe5, 0x11, 0x9d, 0x2e, 0x05, 0x28, 0xa9, 0xe5, 0x53, 0xc1, 0x4c, 0xa7, 0x11, 0x80, 0x72, 0xf3, 0x86, 0x2b, 0xc2, 0x04, 0x71, 0x46, 0x87, 0xe8, 0x84, 0x30, 0xe0, 0xc0, 0xa0, 0x03, 0x30, 0xab, 0x46, 0x1d, 0x2b, 0x55, 0xe8, 0xad, 0x08, 0x17, 0xd2, 0xc6, 0x03, 0xc2, 0x92, 0xeb, 0xc7, 0xaf, 0x0b, 0xcc, 0x40, 0x25, 0x3b, 0xf3, 0xa6, 0x03, 0xa8, 0x15, 0x22, 0xac, 0xfd, 0xd1, 0x96, 0xdd, 0xd7, 0x03, 0x3e, 0xc7, 0x3a, 0x9d, 0x1b, 0x41, 0x42, 0x84, 0x03, 0xc3, 0x76, 0xed, 0x0d, 0x62, 0xe0, 0x80, 0xe3, 0x9a, 0x81, 0xc9, 0x8a, 0x95, 0x20, 0xc1, 0xf1, 0x62, 0x24, 0x8e, 0x33, 0x0f, 0xa5, 0x1b, 0xb5, 0x41, 0x85, 0x03, 0xe2, 0x2e, 0x63, 0xce, 0xfc, 0xd8, 0x1b, 0x26, 0x03, 0xef, 0x1a, 0x38, 0x0e, 0x5d, 0x8d, 0x44, 0x00, 0xd2, 0xa4, 0x19, 0x30, 0x60, 0x8d, 0x3a, 0x75, 0x01, 0xd6, 0xad, 0xb9, 0xc8, 0xde, 0xcd, 0x3b, 0xb5, 0x91, 0xda, 0xef, 0x50, 0xe5, 0xde, 0x47, 0xfc, 0xc9, 0x69, 0x26, 0xc7, 0xab, 0x85, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0x9f, 0x06, 0xc3, 0x6f, 0x88, 0x32, 0x10, 0x16, 0x42, 0xe2, 0x2f, 0xc0, 0x14, 0x19, 0x17, 0x48, 0x65, 0x2f, 0x30, 0x99, 0x1c, 0x02, 0x9f, 0x67, 0x54, 0xaa, 0xa3, 0x56, 0xad, 0x9f, 0x00, 0x61, 0xb0, 0xe5, 0xe2, 0xa8, 0x94, 0xea, 0x55, 0x4c, 0x4e, 0x9a, 0x6f, 0xe8, 0x74, 0x45, 0x3c, 0x1e, 0xb8, 0xdf, 0xb5, 0x80, 0x85, 0x62, 0xb1, 0xcc, 0x09, 0x63, 0x77, 0x78, 0x34, 0x54, 0x7d, 0x13, 0x73, 0x10, 0x80, 0x82, 0x83, 0x32, 0x68, 0x55, 0x88, 0x8a, 0x8c, 0x36, 0x01, 0x15, 0x72, 0x05, 0x01, 0x10, 0x89, 0x8b, 0x92, 0x2f, 0x94, 0x87, 0x05, 0x97, 0x99, 0x10, 0x9b, 0x9c, 0x23, 0x41, 0xa7, 0x6e, 0x06, 0x01, 0x05, 0x15, 0xa0, 0x57, 0x99, 0x0b, 0x0c, 0xa4, 0x92, 0x41, 0x09, 0xb6, 0xb6, 0x08, 0xa7, 0x0e, 0x02, 0x02, 0xa0, 0x03, 0x08, 0xab, 0x0a, 0x0a, 0xb2, 0xa5, 0x25, 0x06, 0xb6, 0x50, 0x0b, 0x03, 0x02, 0xc2, 0xc2, 0xbb, 0x03, 0xd0, 0xcb, 0xbc, 0x0a, 0x0d, 0x0d, 0xc4, 0xc5, 0x59, 0x09, 0xbc, 0xc9, 0x0b, 0xcd, 0xce, 0xd1, 0xe0, 0x02, 0xd5, 0xd6, 0xb3, 0x66, 0xc7, 0xdb, 0xdc, 0xde, 0x0a, 0x0e, 0xd1, 0x4c, 0x01, 0xd2, 0xe3, 0x0c, 0x58, 0x9c, 0xe7, 0xbc, 0x02, 0xc9, 0xea, 0xeb, 0xed, 0x01, 0x0a, 0xef, 0xe2, 0x0d, 0x0e, 0xe4, 0xd1, 0xb3, 0x25, 0x40, 0x1a, 0x94, 0x7c, 0xfa, 0xa0, 0xb9, 0xf3, 0xe7, 0xa0, 0xa1, 0x83, 0x79, 0x8c, 0xea, 0x2d, 0xb8, 0x77, 0x30, 0xdf, 0x33, 0x85, 0x4c, 0x96, 0x39, 0x7c, 0x38, 0x70, 0xdb, 0x36, 0x84, 0xeb, 0x0a, 0x82, 0x8b, 0xb6, 0x11, 0x22, 0x9e, 0x63, 0x03, 0xbe, 0x08, 0x50, 0x24, 0x03, 0xb2, 0xa1, 0x48, 0x70, 0xe3, 0x1a, 0x9a, 0x34, 0x13, 0xc0, 0x00, 0x34, 0x95, 0x50, 0xa0, 0xe5, 0x8b, 0xa0, 0x20, 0x82, 0x4b, 0x70, 0xc2, 0x22, 0x4c, 0xa8, 0x36, 0x53, 0xca, 0x3b, 0x9b, 0x29, 0x29, 0x2a, 0xdb, 0x19, 0xa1, 0xe9, 0xcf, 0x65, 0x3d, 0x2f, 0x48, 0x2d, 0xb7, 0xc4, 0xce, 0x4d, 0x01, 0x47, 0x94, 0x0d, 0x08, 0x1a, 0xb4, 0x29, 0xcf, 0x8d, 0x0e, 0x7a, 0x46, 0xa8, 0x10, 0x81, 0xaa, 0x8f, 0xa3, 0x10, 0x06, 0x1c, 0x00, 0x74, 0x20, 0x67, 0x57, 0xaf, 0x62, 0x9b, 0x4a, 0x88, 0x70, 0x40, 0x96, 0x2a, 0xb3, 0x67, 0x47, 0xa5, 0x4d, 0xc9, 0x76, 0xc1, 0x98, 0xb8, 0x4d, 0xbb, 0x4a, 0x90, 0x70, 0xe0, 0x00, 0x5e, 0x25, 0x35, 0xf7, 0xde, 0x24, 0x50, 0x78, 0x2b, 0x5c, 0xaf, 0x11, 0x1a, 0x54, 0x38, 0x50, 0xed, 0xb0, 0x14, 0x03, 0x85, 0x0f, 0x8c, 0x74, 0x0c, 0xd9, 0xc0, 0xb8, 0x06, 0x85, 0x2b, 0x63, 0x73, 0x92, 0xb9, 0x31, 0x4c, 0xaf, 0x4c, 0x3c, 0x7f, 0x2e, 0x20, 0x7a, 0x34, 0xe6, 0xd2, 0x9a, 0xa3, 0xa1, 0x72, 0xf2, 0xb9, 0xc1, 0xa9, 0xd1, 0x22, 0x02, 0xc0, 0xce, 0xcc, 0x80, 0x41, 0xeb, 0x2c, 0xa8, 0x2c, 0x73, 0x31, 0xd0, 0xbb, 0xb8, 0xf1, 0xcf, 0x45, 0x71, 0x97, 0x58, 0xc8, 0x3c, 0xb8, 0x72, 0x13, 0x21, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0xb4, 0x61, 0xf0, 0x40, 0x97, 0x81, 0xb0, 0xf8, 0x05, 0x8f, 0xa3, 0x80, 0x52, 0x34, 0x5c, 0x14, 0x91, 0xc7, 0xc0, 0x64, 0x72, 0x08, 0x7c, 0x9a, 0x4f, 0x28, 0x4f, 0x3a, 0xa5, 0x7e, 0x02, 0x84, 0x41, 0x56, 0xab, 0x93, 0x52, 0xa6, 0x55, 0xb0, 0xd8, 0x48, 0xce, 0x99, 0xcf, 0x15, 0x70, 0x78, 0xc0, 0x6e, 0xdf, 0x02, 0x16, 0x8a, 0xc5, 0x12, 0x27, 0x84, 0xeb, 0x76, 0x36, 0x52, 0x7b, 0x13, 0x71, 0x10, 0x7e, 0x80, 0x81, 0x34, 0x66, 0x53, 0x86, 0x88, 0x8a, 0x38, 0x01, 0x15, 0x70, 0x05, 0x01, 0x10, 0x87, 0x89, 0x90, 0x31, 0x92, 0x85, 0x05, 0x95, 0x97, 0x10, 0x99, 0x9a, 0x25, 0x3e, 0xa5, 0x6c, 0x06, 0x01, 0x05, 0x15, 0x9e, 0x55, 0x97, 0x0b, 0x0c, 0xa2, 0xa3, 0x3e, 0x09, 0xb4, 0xb4, 0x08, 0xa5, 0x0e, 0x02, 0x02, 0x9e, 0x03, 0x08, 0xa9, 0x0a, 0x0a, 0xb0, 0xa3, 0x27, 0x06, 0xb4, 0x4e, 0x0b, 0x03, 0x02, 0xc0, 0xc0, 0xb9, 0x03, 0xce, 0xc9, 0xba, 0x0a, 0x0d, 0x0d, 0xc2, 0xc3, 0x23, 0xc5, 0xba, 0xc7, 0x0b, 0xcb, 0xcc, 0xcf, 0xde, 0x02, 0xd3, 0xd4, 0xb1, 0x76, 0xd8, 0x02, 0xda, 0xdb, 0xdc, 0x0e, 0xcf, 0x4a, 0x01, 0xd0, 0xe1, 0x0c, 0x56, 0xc3, 0xe5, 0xd9, 0x4e, 0xdc, 0xdd, 0xce, 0x4a, 0x0a, 0xed, 0xe0, 0x0d, 0x0e, 0xf0, 0xf2, 0xb4, 0x04, 0x40, 0xab, 0x67, 0x4f, 0x81, 0x3a, 0x7c, 0xec, 0x92, 0x39, 0x58, 0xe8, 0x20, 0x9e, 0xa6, 0x72, 0x0b, 0xcc, 0x11, 0xb4, 0xd7, 0x0c, 0xe1, 0x3e, 0x86, 0x0d, 0x01, 0x66, 0xcb, 0x56, 0x90, 0x99, 0x40, 0x6f, 0xcf, 0x30, 0x3a, 0x54, 0x54, 0x6c, 0x00, 0x01, 0x89, 0x62, 0xca, 0x3a, 0x1a, 0xac, 0xe8, 0x2d, 0xdc, 0xc2, 0x91, 0x76, 0x02, 0x18, 0x70, 0x76, 0xd2, 0x89, 0xb3, 0x82, 0x11, 0x14, 0x44, 0x58, 0xf8, 0xf1, 0xa6, 0xce, 0x09, 0xd3, 0x60, 0x92, 0x69, 0x37, 0xd3, 0xa4, 0x44, 0x64, 0x38, 0x23, 0x28, 0xe5, 0xe9, 0x4c, 0x59, 0x84, 0x0b, 0x50, 0xc7, 0x45, 0xa1, 0x43, 0x53, 0x00, 0x11, 0x64, 0x03, 0x80, 0xe5, 0xd4, 0xa9, 0x34, 0x27, 0x46, 0x07, 0x5c, 0x2b, 0x44, 0x90, 0x1a, 0x84, 0x28, 0x84, 0x01, 0x07, 0xfc, 0x1c, 0xb0, 0xa9, 0xb5, 0x6b, 0x4e, 0xb7, 0x12, 0x22, 0x1c, 0x80, 0x85, 0x8a, 0x6c, 0xd9, 0x50, 0x67, 0x4d, 0xaa, 0x5d, 0x10, 0x86, 0x6b, 0xd7, 0xb6, 0x12, 0x24, 0x1c, 0x38, 0x60, 0x57, 0x8b, 0xcc, 0xbc, 0x34, 0x09, 0x0c, 0xce, 0xfa, 0xd7, 0x6d, 0x83, 0x0a, 0x07, 0xa6, 0x15, 0x26, 0x63, 0x60, 0x31, 0x48, 0xc6, 0x01, 0xba, 0x1a, 0x08, 0xd7, 0x20, 0x40, 0xe4, 0x06, 0x93, 0xa1, 0x54, 0x3e, 0xe0, 0x8c, 0xf4, 0x3a, 0x76, 0xec, 0x0c, 0x40, 0x08, 0x9a, 0xaa, 0xb3, 0x35, 0x52, 0xde, 0x16, 0x2f, 0x31, 0xb1, 0xd9, 0x75, 0x80, 0x07, 0xa1, 0xa1, 0x78, 0x5e, 0x3c, 0x98, 0xdd, 0x09, 0x4b, 0x0f, 0xe2, 0x09, 0xb5, 0xb6, 0x7b, 0xb0, 0x71, 0x06, 0xf0, 0x64, 0x96, 0x98, 0xfd, 0x1a, 0x85, 0x12, 0xe4, 0xd0, 0x19, 0x70, 0x1e, 0xde, 0x5c, 0x05, 0x6a, 0x99, 0xa6, 0xaa, 0xab, 0x08, 0x01, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xc3, 0x06, 0xc3, 0x6f, 0x88, 0x32, 0x10, 0x16, 0x42, 0xe2, 0x2f, 0xc0, 0x14, 0x19, 0x17, 0x48, 0x65, 0x2f, 0x30, 0x99, 0x1c, 0x02, 0x9f, 0x67, 0x54, 0xaa, 0xa3, 0x56, 0xad, 0x9f, 0x00, 0x61, 0xb0, 0xe5, 0xe2, 0xa8, 0x94, 0xea, 0x55, 0x4c, 0x4e, 0x9a, 0x6f, 0xe8, 0x74, 0x45, 0x3c, 0x1e, 0xb8, 0xdf, 0xa7, 0x60, 0x33, 0x15, 0xb0, 0x50, 0x2c, 0x16, 0x73, 0x04, 0x63, 0x77, 0x78, 0x25, 0x06, 0x09, 0x89, 0x09, 0x41, 0x41, 0x26, 0x54, 0x80, 0x13, 0x73, 0x10, 0x83, 0x85, 0x86, 0x4e, 0x09, 0x02, 0x02, 0x8a, 0x8a, 0x08, 0x77, 0x68, 0x55, 0x92, 0x94, 0x96, 0x87, 0x98, 0x02, 0x0b, 0x09, 0x50, 0x0b, 0x03, 0x02, 0x0a, 0x0a, 0x58, 0x22, 0x01, 0x15, 0x72, 0x05, 0x01, 0x10, 0x93, 0x95, 0x78, 0x88, 0x99, 0x99, 0xa9, 0x50, 0xad, 0xad, 0xaf, 0xb1, 0x91, 0x05, 0xb4, 0xb6, 0x10, 0xb8, 0x66, 0x88, 0x98, 0xab, 0x9a, 0xbd, 0xbf, 0xc0, 0x06, 0x01, 0x05, 0x15, 0xc4, 0x57, 0xb6, 0x0b, 0x0c, 0xc8, 0x52, 0xba, 0xa6, 0xa6, 0xa8, 0xbe, 0xcf, 0xad, 0x0e, 0x99, 0xc4, 0x03, 0x08, 0xd2, 0xad, 0xd9, 0xa3, 0x59, 0xa5, 0x0b, 0xcd, 0xe0, 0xe1, 0x0a, 0xe3, 0x03, 0xf4, 0xcc, 0xac, 0x0d, 0x0d, 0xea, 0x86, 0x88, 0x03, 0x04, 0xa6, 0xa7, 0xa9, 0xe2, 0x89, 0xab, 0x47, 0x50, 0x00, 0xbe, 0x7c, 0xda, 0x96, 0x18, 0xa0, 0xe7, 0x0f, 0x0a, 0x99, 0x05, 0x02, 0x07, 0x12, 0xa4, 0x97, 0xe9, 0x20, 0x83, 0x57, 0x5c, 0x02, 0xd8, 0x61, 0xf8, 0x2f, 0x60, 0x44, 0x07, 0x04, 0x99, 0x50, 0xc4, 0xe7, 0xe0, 0xe2, 0x1b, 0x8d, 0x0b, 0xd5, 0xfb, 0x09, 0x38, 0xe2, 0x30, 0x5e, 0x04, 0x89, 0xf5, 0x44, 0x0a, 0x70, 0x40, 0xd3, 0x01, 0x46, 0x29, 0x28, 0x21, 0x0c, 0x38, 0x30, 0xe8, 0x40, 0xcb, 0x70, 0x2f, 0xe5, 0x09, 0x98, 0xa8, 0x71, 0x66, 0xcd, 0x9b, 0x38, 0x0d, 0xe8, 0xec, 0xd7, 0xb3, 0x4e, 0xab, 0xa0, 0x41, 0xe7, 0x4d, 0xa4, 0x57, 0xd3, 0x26, 0x9e, 0x00, 0x4a, 0x09, 0x0e, 0x3a, 0x32, 0xe0, 0x69, 0x84, 0xaf, 0xe2, 0xa4, 0x12, 0x3c, 0x48, 0x13, 0x29, 0x17, 0x03, 0x07, 0x0e, 0x68, 0x5d, 0x30, 0x46, 0xc1, 0x57, 0xb0, 0x6e, 0x69, 0x0e, 0xad, 0xf7, 0x74, 0x02, 0x3e, 0xb3, 0xdb, 0xd2, 0xd2, 0x53, 0xbb, 0x53, 0xad, 0x5b, 0xb8, 0x6f, 0xe5, 0x52, 0x74, 0x7b, 0xa1, 0x70, 0x42, 0x22, 0x01, 0xf8, 0xf6, 0xd5, 0xd8, 0x35, 0x42, 0x00, 0xb0, 0x6f, 0xe5, 0x55, 0xfd, 0x5b, 0x21, 0xc2, 0xe1, 0x21, 0x89, 0xd3, 0xa6, 0x65, 0xc2, 0xb9, 0xb3, 0xdb, 0xbf, 0x5f, 0x25, 0x44, 0x38, 0x90, 0x2d, 0xda, 0x65, 0xcc, 0x99, 0x99, 0x5c, 0x39, 0xf1, 0xf8, 0xaf, 0x04, 0x09, 0x69, 0x4f, 0x67, 0x4c, 0x9c, 0x9a, 0xcf, 0xd7, 0x06, 0x15, 0x0e, 0xe0, 0x93, 0x8d, 0x93, 0xf6, 0x6a, 0x15, 0x01, 0x0e, 0x26, 0x6e, 0x80, 0x77, 0x54, 0x70, 0xe2, 0xc5, 0x4b, 0x1c, 0x67, 0x52, 0x80, 0xf8, 0x3a, 0xe5, 0x77, 0x5d, 0x44, 0x6b, 0xe0, 0x2a, 0xc0, 0x03, 0xde, 0x4a, 0xf6, 0xb8, 0xb0, 0xee, 0x2a, 0x4c, 0xf2, 0xe7, 0x2f, 0xb4, 0x83, 0x1f, 0x5f, 0x23, 0x04, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0x40, 0xa0, 0xc1, 0x10, 0x2c, 0x92, 0x0c, 0x84, 0x05, 0xd1, 0xd8, 0x0b, 0x38, 0x45, 0xc8, 0x85, 0x92, 0xb9, 0x0b, 0x4c, 0x26, 0x87, 0xc0, 0x27, 0x3a, 0xa5, 0xe2, 0xac, 0x57, 0xec, 0x27, 0x40, 0x18, 0x74, 0xbd, 0x36, 0x2b, 0xe5, 0x9a, 0x25, 0x9b, 0x97, 0x68, 0xd3, 0xd0, 0xa9, 0x4d, 0xa9, 0xd7, 0x15, 0x72, 0x79, 0x00, 0x8f, 0x8f, 0x0c, 0x09, 0x81, 0x81, 0x43, 0x7d, 0x23, 0x01, 0x16, 0x14, 0x16, 0x16, 0x79, 0x04, 0x65, 0x85, 0x7e, 0x80, 0x02, 0x02, 0x82, 0x82, 0x08, 0x85, 0x56, 0x8a, 0x13, 0x79, 0x10, 0x8d, 0x8f, 0x68, 0x91, 0x02, 0x0b, 0x09, 0x52, 0x0b, 0x03, 0x02, 0x0a, 0x0a, 0x75, 0x22, 0x6a, 0x57, 0x9b, 0x9d, 0x7e, 0x7f, 0x09, 0x92, 0x92, 0xa4, 0x52, 0xa8, 0xa8, 0x4f, 0x63, 0x15, 0x78, 0x05, 0x01, 0x10, 0x9c, 0x9e, 0x4c, 0x80, 0xb2, 0xa6, 0x93, 0xb5, 0xb7, 0xb7, 0x5a, 0x01, 0x15, 0x9a, 0x05, 0xbd, 0xbf, 0x10, 0xc1, 0x46, 0xa0, 0x0b, 0xa1, 0xa3, 0xb6, 0xc8, 0xb7, 0x06, 0x01, 0x05, 0x15, 0xce, 0x59, 0xbf, 0x0b, 0x0c, 0xd2, 0x41, 0xd4, 0xc6, 0xd8, 0xd9, 0xa8, 0x0e, 0x92, 0xce, 0x03, 0x08, 0xdc, 0xa8, 0xe3, 0x90, 0x09, 0x03, 0x04, 0xa1, 0xa2, 0xa4, 0xe9, 0xb7, 0xeb, 0x03, 0xfd, 0xc5, 0xa7, 0x0d, 0x1a, 0xc8, 0xa3, 0xa2, 0xc5, 0x40, 0x3f, 0x7b, 0x52, 0xcc, 0x2c, 0xd0, 0xb7, 0xcf, 0x9f, 0x43, 0x01, 0x01, 0x05, 0x92, 0xab, 0xf2, 0x20, 0x80, 0xc1, 0x7a, 0xf7, 0xf2, 0x31, 0x54, 0xe0, 0xc0, 0x1f, 0x9d, 0x62, 0x11, 0x19, 0xa8, 0x0a, 0x12, 0xe0, 0x01, 0x9f, 0x83, 0x02, 0xdb, 0x92, 0x24, 0xdc, 0xc8, 0xd1, 0x63, 0x80, 0x54, 0xa6, 0x02, 0x3a, 0x10, 0xc9, 0xc4, 0x17, 0x1f, 0x08, 0x03, 0x0e, 0x34, 0x3a, 0xb0, 0x32, 0x5d, 0x04, 0x75, 0x2e, 0x9d, 0x98, 0x72, 0x40, 0xd4, 0xc1, 0x48, 0x92, 0xd1, 0x70, 0xd6, 0xdb, 0xb9, 0x07, 0xd5, 0x4f, 0xa7, 0xea, 0x04, 0x04, 0x1d, 0x5a, 0xf4, 0x28, 0x49, 0x03, 0x4a, 0x0f, 0x36, 0x2a, 0xe5, 0x34, 0xc2, 0xcf, 0xa7, 0xfc, 0x1c, 0xfa, 0x2b, 0x6a, 0x34, 0x8e, 0x81, 0x03, 0x07, 0x1c, 0x26, 0x29, 0xa3, 0xc0, 0xeb, 0x57, 0x75, 0x61, 0x1d, 0x46, 0x24, 0x6a, 0xb5, 0xc8, 0xd9, 0xb4, 0x39, 0xfb, 0xa1, 0x1d, 0x10, 0x20, 0x81, 0x57, 0xbf, 0x4e, 0x89, 0x4a, 0xf5, 0xe7, 0x74, 0x42, 0xc0, 0xba, 0x45, 0x02, 0xe0, 0xcd, 0x79, 0x00, 0x27, 0x1d, 0x3a, 0x09, 0xda, 0x7a, 0x15, 0xdc, 0xef, 0x54, 0x84, 0x0b, 0x98, 0x27, 0xfe, 0x50, 0x8c, 0x16, 0x2d, 0x1d, 0x13, 0x2f, 0xdd, 0x72, 0x24, 0x2b, 0xb9, 0x42, 0x04, 0xcd, 0x3e, 0x7c, 0x79, 0xce, 0x75, 0x22, 0xc0, 0x57, 0xb7, 0x12, 0x22, 0x1c, 0x18, 0xb7, 0x0d, 0x75, 0x6a, 0x08, 0x59, 0x3c, 0xab, 0x78, 0x29, 0x59, 0x82, 0x04, 0xb4, 0xb6, 0x91, 0xe6, 0x46, 0x4c, 0xc2, 0x75, 0x84, 0x06, 0x15, 0x0e, 0x04, 0x0c, 0x0e, 0x24, 0xc0, 0x61, 0xe2, 0x25, 0x9c, 0x07, 0x44, 0xbb, 0x1c, 0x56, 0xf1, 0xc3, 0x30, 0xa4, 0x07, 0x2c, 0x50, 0xdd, 0xfa, 0x2a, 0xe8, 0x28, 0xb4, 0x5b, 0x64, 0xee, 0x1d, 0x05, 0x21, 0xf2, 0xe5, 0xcb, 0x87, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x2e, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0xc0, 0xa0, 0x70, 0x88, 0x32, 0x18, 0x88, 0x43, 0x03, 0x61, 0x71, 0x44, 0xee, 0x02, 0x50, 0x91, 0x72, 0xc1, 0x74, 0xe6, 0x02, 0x93, 0xc9, 0x21, 0xf0, 0x99, 0x56, 0xad, 0x36, 0x6c, 0x56, 0xfb, 0x09, 0x10, 0x06, 0x5f, 0x30, 0x0d, 0x4b, 0xc9, 0x6e, 0xcd, 0xe8, 0xa6, 0x7a, 0xc6, 0x6e, 0x57, 0xcc, 0xe7, 0x81, 0x7c, 0x1e, 0x0b, 0x58, 0x28, 0x16, 0x16, 0x77, 0x04, 0x67, 0x7b, 0x7c, 0x30, 0x58, 0x81, 0x13, 0x77, 0x10, 0x84, 0x86, 0x87, 0x2e, 0x6c, 0x59, 0x8c, 0x8e, 0x90, 0x45, 0x46, 0x98, 0x24, 0x01, 0x15, 0x76, 0x05, 0x01, 0x10, 0x8d, 0x8f, 0x90, 0x46, 0x09, 0xa5, 0xa5, 0x08, 0x99, 0x9b, 0x8b, 0x05, 0x9e, 0xa0, 0x10, 0xa2, 0x7c, 0x06, 0xa5, 0x54, 0x0b, 0x03, 0x02, 0x0a, 0xb8, 0x0a, 0x06, 0x01, 0x05, 0x15, 0xac, 0x5b, 0xa0, 0x0b, 0x0c, 0xb0, 0x60, 0xb2, 0x02, 0x02, 0xb4, 0x0b, 0xb9, 0xb8, 0x0e, 0xc7, 0xac, 0x03, 0x08, 0xbc, 0xb8, 0xc3, 0x96, 0x5d, 0x09, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0x03, 0xdd, 0xb6, 0xc7, 0x0a, 0x0d, 0x0d, 0xd4, 0x87, 0xc6, 0xc7, 0xc8, 0x54, 0xcb, 0xcc, 0xde, 0xec, 0x02, 0xe2, 0xe3, 0xc4, 0x49, 0xa5, 0x02, 0xdf, 0xe9, 0xea, 0x0a, 0x0e, 0xde, 0x50, 0x01, 0xdf, 0xef, 0x0c, 0x5c, 0x73, 0xcc, 0x2d, 0x40, 0xa7, 0x4d, 0x5d, 0xbe, 0x6e, 0x01, 0x14, 0x40, 0xb1, 0x25, 0xce, 0xc1, 0xbf, 0x58, 0xd7, 0x90, 0x61, 0xbb, 0xb7, 0x0e, 0xe1, 0x3e, 0x5b, 0x0e, 0x32, 0x3a, 0x00, 0x58, 0x2c, 0xc1, 0x00, 0x02, 0xe8, 0xd0, 0x50, 0xc4, 0x47, 0xcf, 0x22, 0x3f, 0x01, 0x1a, 0xc0, 0x37, 0xaa, 0x09, 0x60, 0xa0, 0x1b, 0x48, 0x2a, 0xdd, 0xee, 0x45, 0x20, 0xc9, 0x8e, 0x5d, 0x4a, 0x8e, 0x48, 0x02, 0x3c, 0x68, 0xf9, 0x91, 0xe0, 0x00, 0x99, 0x11, 0x32, 0x96, 0x64, 0xf7, 0x2e, 0x23, 0x4e, 0x22, 0x3a, 0x79, 0x82, 0x5c, 0x52, 0xeb, 0xa7, 0x82, 0x99, 0x4f, 0x23, 0x04, 0xe5, 0xe6, 0x0d, 0x57, 0x84, 0x09, 0xe2, 0x8e, 0x0e, 0x49, 0x0a, 0x61, 0xc0, 0x01, 0x42, 0x07, 0x60, 0x5a, 0x95, 0x4a, 0x76, 0x6a, 0xc9, 0x5b, 0x11, 0x2e, 0xa8, 0x8d, 0x07, 0x84, 0x65, 0xd7, 0x8f, 0x60, 0x17, 0x9c, 0x89, 0x5a, 0x76, 0x66, 0x4a, 0x07, 0x51, 0x2b, 0x44, 0x60, 0x0b, 0xc4, 0xc0, 0x5b, 0x97, 0x04, 0x0e, 0x1c, 0xf8, 0x49, 0xf6, 0x29, 0xdd, 0x08, 0x12, 0x22, 0x1c, 0x18, 0xb6, 0x8b, 0x6f, 0x10, 0x03, 0x82, 0x07, 0xd7, 0x3c, 0x0c, 0x55, 0xaa, 0x04, 0x09, 0x82, 0x1d, 0x13, 0x81, 0x1c, 0x59, 0xb2, 0xb7, 0x06, 0x75, 0xa5, 0x36, 0xa8, 0x70, 0x40, 0x9c, 0xe6, 0xcd, 0x9d, 0x05, 0xb3, 0xc3, 0x64, 0xe4, 0x5d, 0x03, 0xc1, 0xa6, 0xab, 0x8d, 0x08, 0x90, 0x3a, 0x32, 0x03, 0x06, 0xb1, 0x0d, 0xb8, 0x6e, 0x50, 0x20, 0xb6, 0x6c, 0x03, 0xb7, 0x83, 0x0b, 0x77, 0x7d, 0x44, 0x37, 0x71, 0x23, 0xb2, 0xcb, 0xec, 0x5b, 0xce, 0x92, 0x75, 0x13, 0xe7, 0xa7, 0x5b, 0x84, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0a, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xe3, 0x06, 0xc3, 0x6f, 0x88, 0x32, 0x10, 0x16, 0x42, 0xe2, 0x2f, 0xc0, 0x14, 0x19, 0x17, 0x48, 0x65, 0x2f, 0x30, 0x99, 0x1c, 0x02, 0x9f, 0x67, 0x54, 0xaa, 0xa3, 0x56, 0xad, 0x9f, 0x00, 0x61, 0xb0, 0xe5, 0xe2, 0xa8, 0x94, 0xea, 0x55, 0x4c, 0x4e, 0x9a, 0x6f, 0xe8, 0x74, 0x45, 0x3c, 0x1e, 0xb8, 0xdf, 0xb5, 0x80, 0x85, 0x62, 0xb1, 0xcc, 0x09, 0x63, 0x77, 0x78, 0x34, 0x54, 0x7d, 0x13, 0x73, 0x10, 0x80, 0x82, 0x83, 0x32, 0x68, 0x55, 0x88, 0x8a, 0x8c, 0x36, 0x01, 0x15, 0x72, 0x05, 0x01, 0x10, 0x89, 0x8b, 0x92, 0x2f, 0x94, 0x87, 0x05, 0x97, 0x99, 0x10, 0x9b, 0x9c, 0x23, 0x41, 0xa7, 0x6e, 0x06, 0x01, 0x05, 0x15, 0xa0, 0x57, 0x99, 0x0b, 0x0c, 0xa4, 0x92, 0x41, 0x09, 0xb6, 0xb6, 0x08, 0xa7, 0x0e, 0x02, 0x02, 0xa0, 0x03, 0x08, 0xab, 0x0a, 0x0a, 0xb2, 0xa5, 0x25, 0x06, 0xb6, 0x50, 0x0b, 0x03, 0x02, 0xc2, 0xc2, 0xbb, 0x03, 0xd0, 0xcb, 0xbc, 0x0a, 0x0d, 0x0d, 0xc4, 0xc5, 0x59, 0x09, 0xbc, 0xc9, 0x0b, 0xcd, 0xce, 0xd1, 0xe0, 0x02, 0xd5, 0xd6, 0xb3, 0x66, 0xc7, 0xdb, 0xdc, 0xde, 0x0a, 0x0e, 0xd1, 0x4c, 0x01, 0xd2, 0xe3, 0x0c, 0x58, 0x9c, 0xe7, 0xbc, 0x02, 0xc9, 0xea, 0xeb, 0xed, 0x01, 0x0a, 0xef, 0xe2, 0x0d, 0x0e, 0xe4, 0xd1, 0xb3, 0x25, 0x40, 0x1a, 0x94, 0x7c, 0xfa, 0xa0, 0xb9, 0xf3, 0xe7, 0xa0, 0xa1, 0x83, 0x79, 0x8c, 0xea, 0x2d, 0xb8, 0x77, 0x30, 0xdf, 0x33, 0x85, 0x4c, 0x96, 0x39, 0x7c, 0x38, 0x70, 0xdb, 0x36, 0x84, 0xeb, 0x0a, 0x82, 0x8b, 0xb6, 0x11, 0x22, 0x9e, 0x63, 0x03, 0xc1, 0x08, 0x50, 0x24, 0x03, 0xb2, 0xa1, 0x48, 0x70, 0xe3, 0x1a, 0x9a, 0x34, 0x13, 0xc0, 0x00, 0x34, 0x95, 0x50, 0xa0, 0xe5, 0x8b, 0xa0, 0x20, 0x82, 0x4b, 0x70, 0xc2, 0x22, 0x4c, 0xa8, 0x36, 0x53, 0xca, 0x3b, 0x9b, 0x29, 0x29, 0x2a, 0xdb, 0x19, 0xa1, 0xe9, 0xcf, 0x65, 0x3d, 0x2f, 0x48, 0x2d, 0xb7, 0xc4, 0xce, 0x4d, 0x01, 0x47, 0x94, 0x0d, 0x08, 0x1a, 0xb4, 0x29, 0xcf, 0x8d, 0x0e, 0x7a, 0x46, 0xa8, 0x10, 0x81, 0xaa, 0x8f, 0xa3, 0x10, 0x06, 0x1c, 0x00, 0x74, 0x20, 0x67, 0x57, 0xaf, 0x62, 0x9b, 0x4a, 0x88, 0x70, 0x40, 0x96, 0x2a, 0xb3, 0x4b, 0x0c, 0xa4, 0x4d, 0xc9, 0x76, 0xc1, 0x98, 0xb8, 0x4d, 0xbb, 0x4a, 0x90, 0x70, 0xe0, 0x00, 0x5e, 0x25, 0x35, 0xf7, 0xde, 0x24, 0x50, 0x78, 0x2b, 0x5c, 0xaf, 0x11, 0x1a, 0x54, 0x38, 0x50, 0xed, 0xb0, 0x14, 0x03, 0x85, 0x0f, 0x8c, 0x74, 0x0c, 0xd9, 0xc0, 0xb8, 0x06, 0x01, 0x28, 0x37, 0xb0, 0x4c, 0x04, 0x73, 0x66, 0xcd, 0x30, 0xbd, 0x32, 0x51, 0x35, 0x8e, 0x49, 0x65, 0x6c, 0x4e, 0x4e, 0x37, 0x8e, 0x86, 0x6a, 0x44, 0x00, 0xa2, 0xae, 0x49, 0x13, 0x09, 0x2d, 0xbb, 0x30, 0x03, 0x06, 0xaf, 0x6d, 0x8f, 0x16, 0x51, 0xb4, 0x94, 0x81, 0xdf, 0xc8, 0x93, 0x7f, 0x36, 0x59, 0x1c, 0xf6, 0xc2, 0xe7, 0xa8, 0x74, 0xd7, 0x08, 0x01, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0xbc, 0x6a, 0x18, 0xbd, 0x20, 0xcb, 0x40, 0x58, 0x00, 0x85, 0xc8, 0x4f, 0x60, 0x29, 0x22, 0x2e, 0x8c, 0xc9, 0x60, 0x60, 0x32, 0x39, 0x04, 0x3e, 0x4e, 0x68, 0x74, 0x37, 0xa5, 0x56, 0x95, 0x84, 0x81, 0x76, 0x9b, 0x9b, 0x52, 0xa8, 0xd6, 0x40, 0x78, 0x4c, 0xbe, 0x99, 0xcf, 0x15, 0x75, 0x78, 0x70, 0x6c, 0xbb, 0x2d, 0x14, 0x8b, 0x25, 0x4e, 0x08, 0xd7, 0xed, 0x36, 0x53, 0x7a, 0x13, 0x71, 0x10, 0x7d, 0x7f, 0x80, 0x34, 0x66, 0x54, 0x85, 0x87, 0x89, 0x6e, 0x15, 0x70, 0x05, 0x01, 0x10, 0x86, 0x88, 0x8f, 0x31, 0x01, 0x15, 0x84, 0x05, 0x93, 0x95, 0x10, 0x97, 0x98, 0x25, 0x3f, 0xa4, 0x75, 0x06, 0x01, 0x05, 0x15, 0x9d, 0x56, 0x95, 0x0b, 0x0c, 0xa1, 0xa2, 0x3f, 0x09, 0xb3, 0xb3, 0x08, 0xa4, 0x0e, 0x02, 0x02, 0x9d, 0x03, 0x08, 0xa8, 0x0a, 0x0a, 0xaf, 0xa2, 0x26, 0x06, 0xb3, 0x4f, 0x0b, 0x03, 0x02, 0xbf, 0xbf, 0xb8, 0x03, 0xcd, 0xc8, 0xb9, 0x0a, 0x0d, 0x0d, 0xc1, 0xc2, 0x4d, 0x09, 0xb9, 0xc6, 0x0b, 0xca, 0xcb, 0xce, 0xdd, 0x02, 0xd2, 0xd3, 0xb0, 0x76, 0xc4, 0xd8, 0xd9, 0xdb, 0x0a, 0x0e, 0xce, 0x4b, 0x01, 0xcf, 0xe0, 0x0c, 0x57, 0xb1, 0xd7, 0xb9, 0x02, 0xc6, 0xe7, 0xe8, 0xea, 0x01, 0x0a, 0xec, 0xdf, 0x0d, 0x0e, 0xef, 0xf1, 0xd7, 0x9e, 0x3d, 0xb1, 0x77, 0xaf, 0xd9, 0xba, 0x7d, 0x0e, 0x12, 0x3a, 0x80, 0xf7, 0x88, 0x1c, 0x3d, 0x7a, 0x03, 0xed, 0x31, 0x33, 0xb8, 0x04, 0x99, 0xc2, 0x85, 0xf1, 0xb0, 0x61, 0x23, 0x88, 0x4e, 0x40, 0xb7, 0x6e, 0x17, 0x19, 0x02, 0x22, 0x36, 0x80, 0x00, 0x44, 0x31, 0x1c, 0xc3, 0x13, 0x7a, 0xfc, 0x08, 0x2e, 0xa1, 0xc8, 0x36, 0x01, 0x0c, 0x34, 0x33, 0xf9, 0xa4, 0x99, 0xbd, 0x08, 0x0a, 0x22, 0xa8, 0xec, 0xf6, 0x2b, 0xc2, 0x04, 0x69, 0x2f, 0xb7, 0xb0, 0x93, 0x59, 0x12, 0xe2, 0xb1, 0x9b, 0x11, 0x92, 0xee, 0x44, 0x96, 0xf3, 0x82, 0x53, 0x71, 0x48, 0x86, 0xce, 0x14, 0x50, 0xe4, 0xd8, 0x80, 0x9e, 0x3d, 0x93, 0xe2, 0xbc, 0xe8, 0x20, 0x67, 0x84, 0x0a, 0x11, 0xa0, 0x0a, 0x19, 0x0a, 0x61, 0xc0, 0x81, 0x3e, 0x07, 0x6a, 0x66, 0xd5, 0xea, 0x35, 0xa9, 0x84, 0x08, 0x07, 0x5e, 0x9d, 0x12, 0x1b, 0xd5, 0x40, 0xd9, 0x92, 0x68, 0x17, 0x84, 0x69, 0x9b, 0x34, 0xab, 0x04, 0x09, 0x07, 0x0e, 0xd0, 0x15, 0x6a, 0xb7, 0x1b, 0xda, 0x03, 0x57, 0xd9, 0x6a, 0x8d, 0xd0, 0xa0, 0xc2, 0x01, 0x69, 0x83, 0xc9, 0x18, 0x08, 0xfc, 0xd1, 0x66, 0x84, 0x00, 0x5a, 0x0d, 0x80, 0x6b, 0x10, 0xe0, 0x71, 0x83, 0xc8, 0x51, 0x26, 0x23, 0x36, 0xdb, 0xed, 0xe0, 0xba, 0x53, 0xe0, 0x96, 0x40, 0xae, 0x36, 0x82, 0x68, 0x33, 0xca, 0x4c, 0x4e, 0x04, 0x00, 0xaa, 0x1a, 0x74, 0x92, 0xce, 0x94, 0x03, 0xaf, 0x4b, 0x31, 0xfb, 0x48, 0x50, 0x51, 0xb8, 0x03, 0x0b, 0x67, 0xf0, 0x2e, 0xa6, 0x6c, 0xd6, 0x28, 0x96, 0x10, 0x5f, 0xce, 0x60, 0xf3, 0x6f, 0xe4, 0xbc, 0x0f, 0x96, 0xb2, 0x7d, 0x23, 0x04, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x9f, 0x61, 0xe0, 0xbc, 0x6d, 0x10, 0x8b, 0x5d, 0x6f, 0xb8, 0x0a, 0x18, 0x45, 0xbf, 0x45, 0x90, 0xc8, 0x34, 0x05, 0x26, 0x93, 0x43, 0x20, 0x07, 0x5c, 0x36, 0xaf, 0x4f, 0x68, 0xf4, 0x13, 0x20, 0x0c, 0xac, 0x57, 0xe6, 0x93, 0x02, 0x95, 0x76, 0xbf, 0xc2, 0x30, 0x71, 0x4c, 0xae, 0x74, 0xbd, 0x83, 0xb4, 0x9a, 0xa5, 0x3b, 0xa6, 0x02, 0x16, 0x8a, 0xc5, 0xe2, 0x26, 0x78, 0xe5, 0x73, 0x2a, 0x06, 0x09, 0x84, 0x09, 0x3a, 0x3a, 0x4e, 0x13, 0x7b, 0x13, 0x6e, 0x10, 0x7e, 0x80, 0x81, 0x27, 0x83, 0x02, 0x02, 0x85, 0x85, 0x08, 0x72, 0x63, 0x50, 0x8d, 0x8f, 0x91, 0x82, 0x09, 0x94, 0x0b, 0x09, 0x4a, 0x0b, 0x03, 0x02, 0x0a, 0x0a, 0x53, 0x22, 0x01, 0x15, 0x6d, 0x05, 0x01, 0x10, 0x8e, 0x90, 0x9e, 0x48, 0xa0, 0x94, 0x02, 0xa4, 0x4a, 0xa8, 0xa8, 0xaa, 0xac, 0x8c, 0x05, 0xaf, 0xb1, 0x10, 0xb3, 0x9e, 0x83, 0xa0, 0xa6, 0x95, 0xb9, 0xbb, 0xbc, 0x06, 0x01, 0x05, 0x15, 0xc0, 0x52, 0xb1, 0x0b, 0x0c, 0xc4, 0x81, 0x93, 0xb8, 0xb8, 0xa3, 0xba, 0xcb, 0xa8, 0x0e, 0x94, 0xc0, 0x03, 0x08, 0xce, 0xa8, 0xd5, 0xb4, 0x25, 0xd8, 0x0b, 0xc9, 0xdc, 0xdd, 0x0a, 0xdf, 0x03, 0xf0, 0xc8, 0xa7, 0x0d, 0x0d, 0xe6, 0xe7, 0x39, 0x09, 0x03, 0x04, 0xb8, 0xa2, 0xa4, 0xed, 0xde, 0xf1, 0x02, 0x0a, 0xa0, 0x57, 0xcf, 0x1a, 0x16, 0x03, 0xf0, 0xf6, 0x29, 0xf9, 0xb2, 0xe0, 0x1f, 0xc0, 0x80, 0xf0, 0x28, 0x11, 0x64, 0xa0, 0x2a, 0x52, 0x80, 0x38, 0x09, 0xf9, 0xf9, 0x73, 0xe8, 0x20, 0xa0, 0x91, 0x88, 0xf4, 0x1c, 0x50, 0xa4, 0x75, 0x11, 0xa1, 0x3e, 0x01, 0x55, 0xd2, 0x4a, 0xb5, 0x8b, 0xf0, 0x30, 0xde, 0x47, 0x01, 0x0e, 0x62, 0x3a, 0xa8, 0x18, 0xa8, 0x24, 0x84, 0x01, 0x07, 0xfc, 0x1c, 0x58, 0xb8, 0xd2, 0x9b, 0x00, 0x88, 0x17, 0x61, 0xca, 0xa4, 0x59, 0xd3, 0xc0, 0x4d, 0x7d, 0x3a, 0xe1, 0xa0, 0x62, 0xa9, 0x80, 0xe9, 0x3b, 0x88, 0xf0, 0x64, 0xce, 0x3c, 0x17, 0xc0, 0x68, 0x40, 0x3f, 0x40, 0x06, 0x2c, 0x8d, 0xc0, 0xd5, 0xdb, 0xd3, 0x80, 0x04, 0x63, 0x12, 0x8d, 0x64, 0xe0, 0xc0, 0x81, 0xab, 0x0b, 0xbc, 0x34, 0xe5, 0xca, 0x34, 0x42, 0xcc, 0x9f, 0xf1, 0x96, 0x4e, 0xa0, 0x37, 0xf6, 0x9a, 0x59, 0x78, 0x67, 0x71, 0x9e, 0x5d, 0xdb, 0x96, 0xeb, 0xdb, 0x88, 0x4d, 0x2f, 0x08, 0x36, 0xa8, 0x26, 0x40, 0x5e, 0xbd, 0x17, 0xb5, 0x46, 0x08, 0xd0, 0x95, 0xad, 0x3b, 0xa9, 0x6b, 0x2b, 0x44, 0x20, 0x1c, 0xc6, 0xb0, 0x59, 0xb3, 0x46, 0x32, 0x6b, 0x6e, 0xca, 0x37, 0x82, 0x84, 0x08, 0x07, 0xaa, 0x35, 0xa3, 0x5c, 0xd9, 0xb2, 0x11, 0x29, 0x27, 0x18, 0x6f, 0x95, 0x20, 0xc1, 0x2c, 0xe9, 0x9a, 0x86, 0x4d, 0xdf, 0x61, 0xdb, 0xa0, 0xc2, 0x01, 0x7a, 0xaf, 0xe7, 0x9c, 0x8e, 0xbd, 0xc2, 0x00, 0xc1, 0x06, 0x66, 0x71, 0xdf, 0x4b, 0x4d, 0xb7, 0xae, 0x09, 0xdf, 0xbf, 0x0b, 0x08, 0x1f, 0x4e, 0x22, 0x00, 0xdd, 0x17, 0xc8, 0x09, 0x1e, 0x62, 0x5e, 0xc2, 0x0e, 0xf4, 0x43, 0x88, 0xa8, 0x6b, 0xdf, 0xce, 0xbd, 0xbb, 0xf7, 0xef, 0xe0, 0x61, 0x84, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0xc0, 0x20, 0xcd, 0x60, 0x10, 0x1a, 0x45, 0x06, 0xc2, 0xa2, 0x78, 0xe4, 0x05, 0x9e, 0x48, 0xe5, 0xb2, 0xa9, 0x0b, 0x4c, 0x26, 0x87, 0xc0, 0x27, 0xb9, 0x98, 0x52, 0x6f, 0xd6, 0x2b, 0xf6, 0x13, 0x20, 0x0c, 0xbc, 0xdf, 0x9a, 0x95, 0x72, 0xcd, 0x96, 0xcf, 0xcc, 0x74, 0x89, 0xf8, 0xd4, 0xa6, 0xd6, 0xec, 0x4a, 0xd9, 0x3c, 0x88, 0xcb, 0x91, 0x09, 0x81, 0x81, 0x44, 0x7e, 0x23, 0x01, 0x16, 0x14, 0x16, 0x16, 0x7a, 0x04, 0x66, 0x85, 0x72, 0x06, 0x09, 0x02, 0x02, 0x82, 0x82, 0x08, 0x85, 0x56, 0x8a, 0x13, 0x7a, 0x10, 0x8d, 0x8f, 0x5f, 0x91, 0x93, 0x0b, 0x09, 0x5d, 0x0b, 0x03, 0x02, 0x0a, 0x0a, 0x76, 0x22, 0x6b, 0x57, 0x9c, 0x9e, 0x7f, 0x80, 0x93, 0xa2, 0xa5, 0x0b, 0xa9, 0xa9, 0x50, 0x64, 0x15, 0x79, 0x05, 0x01, 0x10, 0x9d, 0x9f, 0x47, 0x91, 0x92, 0xa7, 0x94, 0xb5, 0xb7, 0xb7, 0x5a, 0x01, 0x15, 0x9b, 0x05, 0xbd, 0xbf, 0x10, 0xc1, 0x46, 0xa1, 0x02, 0x0b, 0xd5, 0xa4, 0x5d, 0xc8, 0xc8, 0x06, 0x01, 0x05, 0x15, 0xce, 0x59, 0xbf, 0x0b, 0x0c, 0xd2, 0x41, 0xd4, 0xd6, 0xd8, 0xb6, 0xda, 0xb7, 0x0e, 0x93, 0xce, 0x03, 0x08, 0xdd, 0xa9, 0xe4, 0x90, 0x09, 0x03, 0x04, 0xd5, 0xa3, 0xa5, 0xeb, 0xec, 0x02, 0x03, 0xff, 0xc5, 0x50, 0x35, 0x68, 0x40, 0xaf, 0x89, 0x16, 0x03, 0xff, 0xf0, 0x75, 0x39, 0xa3, 0x8e, 0x9f, 0x02, 0x07, 0x00, 0x23, 0x0a, 0x18, 0x48, 0xb0, 0xdc, 0x8e, 0x00, 0x0f, 0x02, 0x20, 0xbc, 0x97, 0x6f, 0x9f, 0xc3, 0x87, 0x00, 0xeb, 0x14, 0xa3, 0xc8, 0x60, 0x55, 0x10, 0x8c, 0x7d, 0xdd, 0x12, 0x0a, 0x90, 0x62, 0xea, 0x23, 0xc8, 0x7f, 0x4f, 0x54, 0x9d, 0x1a, 0xe8, 0xa0, 0xe4, 0x11, 0x5f, 0x7d, 0x20, 0x0c, 0x38, 0xd0, 0xe8, 0xc0, 0x42, 0x7e, 0x11, 0x52, 0x41, 0x84, 0x29, 0x52, 0x80, 0x83, 0xa3, 0x0e, 0x4c, 0x9e, 0x8c, 0xa6, 0xf3, 0x5e, 0x4f, 0x3e, 0xa9, 0x82, 0x46, 0x15, 0xea, 0x8f, 0x68, 0x80, 0x53, 0x48, 0x93, 0x52, 0xd1, 0xd8, 0x34, 0x61, 0xa3, 0x96, 0x0a, 0x22, 0x88, 0x0d, 0x4b, 0x35, 0x62, 0xc4, 0xac, 0x4a, 0xa7, 0x1d, 0x38, 0x10, 0x51, 0x89, 0x99, 0xb0, 0x63, 0xa5, 0x1e, 0xad, 0x1a, 0x91, 0xe2, 0xd1, 0xb4, 0x42, 0x0c, 0xac, 0xfd, 0xc7, 0x76, 0x27, 0xdb, 0x00, 0x09, 0xc4, 0x06, 0x8e, 0x3a, 0x37, 0x62, 0xd4, 0x09, 0x03, 0xf1, 0x0a, 0x09, 0xd0, 0xd7, 0xaf, 0xce, 0x3a, 0x75, 0x12, 0xc0, 0x8d, 0x50, 0xf8, 0x54, 0xd8, 0x0b, 0x98, 0x2d, 0xfe, 0x60, 0xbc, 0x76, 0x6d, 0x1d, 0x13, 0x01, 0x26, 0x3f, 0xcc, 0x0a, 0xb7, 0x42, 0x04, 0xcd, 0x3e, 0x7c, 0x79, 0xce, 0x75, 0x22, 0x40, 0x50, 0xb1, 0x62, 0x25, 0x44, 0x38, 0x40, 0x8e, 0x1b, 0xea, 0xd4, 0x10, 0xb2, 0x78, 0x56, 0x11, 0x1a, 0xae, 0x04, 0x09, 0x6b, 0x6f, 0x2f, 0xd5, 0xad, 0x98, 0x84, 0xeb, 0x08, 0x0d, 0x2a, 0x1c, 0x18, 0x28, 0x1c, 0x48, 0x80, 0xc4, 0xc5, 0x4b, 0x3c, 0x1f, 0xb8, 0x96, 0x79, 0x2c, 0x43, 0x89, 0x61, 0x4c, 0x1f, 0x58, 0xc0, 0xfa, 0x75, 0x32, 0xd1, 0x4f, 0x18, 0xa0, 0xc8, 0x9c, 0xc8, 0xf7, 0x1a, 0x84, 0x08, 0x9d, 0xff, 0x12, 0x02, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x2e, 0x00, 0x1f, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0xc0, 0xa0, 0x70, 0xe8, 0x33, 0x18, 0x88, 0x43, 0x03, 0x61, 0x71, 0x44, 0xee, 0x02, 0x50, 0x91, 0x72, 0xc1, 0x74, 0xe6, 0x02, 0x93, 0xc9, 0x21, 0xf0, 0x99, 0x56, 0xad, 0x36, 0x6c, 0x56, 0xfb, 0x09, 0x10, 0x06, 0x5f, 0x30, 0x0d, 0x4b, 0xc9, 0x6e, 0xcd, 0xe8, 0xa6, 0x7a, 0xc6, 0x6e, 0x57, 0xcc, 0xe7, 0x81, 0x7c, 0x1e, 0x0b, 0x58, 0x28, 0x16, 0x16, 0x77, 0x04, 0x67, 0x7b, 0x7c, 0x30, 0x58, 0x81, 0x13, 0x77, 0x10, 0x84, 0x86, 0x87, 0x2e, 0x6c, 0x59, 0x8c, 0x8e, 0x90, 0x28, 0x46, 0x98, 0x7b, 0x01, 0x15, 0x76, 0x05, 0x01, 0x10, 0x8d, 0x8f, 0x90, 0x46, 0x09, 0xa5, 0xa5, 0x08, 0x98, 0x65, 0x15, 0x8b, 0x05, 0x9e, 0xa0, 0x10, 0xa2, 0x7c, 0x06, 0xa5, 0x54, 0x0b, 0x03, 0x02, 0x0a, 0xb9, 0x0a, 0x06, 0x01, 0x05, 0x15, 0xad, 0x5b, 0xa0, 0x0b, 0x0c, 0xb1, 0x60, 0xb3, 0x02, 0x02, 0xb5, 0x0b, 0xba, 0xb9, 0x0e, 0xc8, 0xad, 0x03, 0x08, 0xbd, 0xb9, 0xc4, 0x96, 0x5d, 0x09, 0xc8, 0xca, 0xcb, 0xcc, 0xce, 0x03, 0xde, 0xb7, 0xc8, 0x0a, 0x0d, 0x0d, 0xd5, 0x87, 0xc7, 0xc8, 0xc9, 0x54, 0xcc, 0xcd, 0xdf, 0xed, 0x02, 0xe3, 0xe4, 0xc5, 0x49, 0xa5, 0x02, 0xe0, 0xea, 0xeb, 0x0a, 0x0e, 0xdf, 0x50, 0x01, 0xe0, 0xf0, 0x0c, 0x5c, 0xe6, 0x9c, 0x5b, 0x90, 0x6e, 0xdb, 0x3a, 0x7d, 0xde, 0x02, 0x28, 0x80, 0x72, 0x6b, 0x9c, 0x03, 0x80, 0xb2, 0xb0, 0x25, 0xcb, 0x86, 0x8f, 0x5d, 0x42, 0x7e, 0xb7, 0x1c, 0x68, 0x74, 0x10, 0xd0, 0x58, 0x82, 0x01, 0x04, 0xd2, 0xa1, 0xa9, 0x98, 0xaf, 0xde, 0xc5, 0x7e, 0x02, 0xbe, 0x36, 0x72, 0x54, 0x13, 0xc0, 0x80, 0xb7, 0x90, 0x54, 0xbc, 0xe1, 0x8b, 0x50, 0xb2, 0x5d, 0x3b, 0x95, 0x1d, 0x91, 0x04, 0x78, 0xe0, 0x12, 0x64, 0xc1, 0x01, 0x33, 0x23, 0x68, 0x34, 0xd9, 0x0e, 0x9e, 0xc6, 0x9c, 0x44, 0x76, 0xf6, 0x0c, 0xb9, 0xc4, 0x16, 0x50, 0x05, 0x34, 0xa1, 0x46, 0x10, 0xda, 0xed, 0x5b, 0xae, 0x08, 0x13, 0xc6, 0x21, 0x1d, 0xa2, 0x14, 0xc2, 0x80, 0x03, 0x84, 0x0e, 0xc4, 0xbc, 0x3a, 0xb5, 0x2c, 0x55, 0x93, 0xb8, 0x22, 0x5c, 0x58, 0x2b, 0x0f, 0x48, 0x4b, 0xaf, 0x20, 0xc3, 0x2e, 0x38, 0x23, 0xd5, 0x2c, 0x4d, 0x95, 0x0e, 0xa4, 0x56, 0x88, 0xd0, 0x16, 0x88, 0x01, 0xb8, 0x2f, 0x09, 0x1c, 0x38, 0x00, 0xb4, 0x2c, 0xd4, 0xba, 0x11, 0x24, 0x44, 0x38, 0x40, 0x8c, 0x57, 0xdf, 0x20, 0x06, 0x06, 0x13, 0xb6, 0x89, 0x38, 0xea, 0x54, 0x09, 0x12, 0x06, 0x3f, 0x26, 0x12, 0x59, 0xf2, 0xe4, 0x6f, 0x0d, 0xec, 0x4e, 0x6d, 0x50, 0xe1, 0xc0, 0xb8, 0xcd, 0x9c, 0x3d, 0x0f, 0x6e, 0x97, 0xc9, 0x00, 0xbc, 0x06, 0x83, 0x4f, 0x5b, 0x1b, 0x11, 0x40, 0xb5, 0x64, 0x06, 0x0c, 0x64, 0xbb, 0x7e, 0x5d, 0x40, 0xf6, 0x6c, 0x03, 0xb8, 0x83, 0x0b, 0x7f, 0x7d, 0x64, 0x37, 0xbc, 0x54, 0xb3, 0xf9, 0x29, 0x87, 0xd2, 0xba, 0x49, 0x73, 0x13, 0x21, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0x9f, 0x06, 0xc3, 0x6f, 0x88, 0x32, 0x10, 0x16, 0x42, 0xe2, 0x2f, 0xc0, 0x14, 0x19, 0x17, 0x48, 0x65, 0x2f, 0x30, 0x99, 0x1c, 0x02, 0x9f, 0x67, 0x54, 0xaa, 0xa3, 0x56, 0xad, 0x9f, 0x00, 0x61, 0xb0, 0xe5, 0xe2, 0xa8, 0x94, 0xea, 0x55, 0x4c, 0x4e, 0x9a, 0x6f, 0xe8, 0x74, 0x45, 0x3c, 0x1e, 0xb8, 0xdf, 0xb5, 0x80, 0x85, 0x62, 0xb1, 0xcc, 0x09, 0x63, 0x77, 0x78, 0x34, 0x54, 0x7d, 0x13, 0x73, 0x10, 0x80, 0x82, 0x83, 0x32, 0x68, 0x55, 0x88, 0x8a, 0x8c, 0x36, 0x01, 0x15, 0x72, 0x05, 0x01, 0x10, 0x89, 0x8b, 0x92, 0x2f, 0x94, 0x87, 0x05, 0x97, 0x99, 0x10, 0x9b, 0x9c, 0x23, 0x41, 0xa7, 0x6e, 0x06, 0x01, 0x05, 0x15, 0xa0, 0x57, 0x99, 0x0b, 0x0c, 0xa4, 0x92, 0x41, 0x09, 0xb6, 0xb6, 0x08, 0xa7, 0x0e, 0x02, 0x02, 0xa0, 0x03, 0x08, 0xab, 0x0a, 0x0a, 0xb2, 0xa5, 0x25, 0x06, 0xb6, 0x50, 0x0b, 0x03, 0x02, 0xc2, 0xc2, 0xbb, 0x03, 0xd0, 0xcb, 0xbc, 0x0a, 0x0d, 0x0d, 0xc4, 0xc5, 0x59, 0x09, 0xbc, 0xc9, 0x0b, 0xcd, 0xce, 0xd1, 0xe0, 0x02, 0xd5, 0xd6, 0xb3, 0x66, 0xc7, 0xdb, 0xdc, 0xde, 0x0a, 0x0e, 0xd1, 0x4c, 0x01, 0xd2, 0xe3, 0x0c, 0x58, 0x9c, 0xe7, 0xbc, 0x02, 0xc9, 0xea, 0xeb, 0xed, 0x01, 0x0a, 0xef, 0xe2, 0x0d, 0x0e, 0xe4, 0xd1, 0xb3, 0x25, 0x40, 0x1a, 0x94, 0x7c, 0xfa, 0xa0, 0xb9, 0xf3, 0xe7, 0xa0, 0xa1, 0x83, 0x79, 0x8c, 0xea, 0x2d, 0xb8, 0x77, 0x30, 0xdf, 0x33, 0x85, 0x4c, 0x96, 0x39, 0x7c, 0x38, 0x70, 0xdb, 0x36, 0x84, 0xeb, 0x0a, 0x82, 0x8b, 0xb6, 0x11, 0x22, 0x9e, 0x63, 0x03, 0xbe, 0x08, 0x50, 0x24, 0x03, 0xb2, 0xa1, 0x48, 0x70, 0xe3, 0x1a, 0x9a, 0x34, 0x13, 0xc0, 0x00, 0x34, 0x95, 0x50, 0xa0, 0xe5, 0x8b, 0xa0, 0x20, 0x82, 0x4b, 0x70, 0xc2, 0x22, 0x4c, 0xa8, 0x36, 0x53, 0xca, 0x3b, 0x9b, 0x29, 0x29, 0x2a, 0xdb, 0x19, 0xa1, 0xe9, 0xcf, 0x65, 0x3d, 0x2f, 0x48, 0x2d, 0xb7, 0xc4, 0xce, 0x4d, 0x01, 0x47, 0x94, 0x0d, 0x08, 0x1a, 0xb4, 0x29, 0xcf, 0x8d, 0x0e, 0x7a, 0x46, 0xa8, 0x10, 0x81, 0xaa, 0x8f, 0xa3, 0x10, 0x06, 0x1c, 0x00, 0x74, 0x20, 0x67, 0x57, 0xaf, 0x62, 0x9b, 0x4a, 0x88, 0x70, 0x40, 0x96, 0x2a, 0xb3, 0x67, 0x47, 0xa5, 0x4d, 0xc9, 0x76, 0xc1, 0x98, 0xb8, 0x4d, 0xbb, 0x4a, 0x90, 0x70, 0xe0, 0x00, 0x5e, 0x25, 0x35, 0xf7, 0xde, 0x24, 0x50, 0x78, 0x2b, 0x5c, 0xaf, 0x11, 0x1a, 0x54, 0x38, 0x50, 0xed, 0xb0, 0x14, 0x03, 0x85, 0x0f, 0x8c, 0x74, 0x0c, 0xd9, 0xc0, 0xb8, 0x06, 0x85, 0x2b, 0x63, 0x73, 0x92, 0xb9, 0x31, 0x4c, 0xaf, 0x4c, 0x3c, 0x7f, 0x2e, 0x20, 0x7a, 0x34, 0xe6, 0xd2, 0x9a, 0xa3, 0xa1, 0x72, 0xf2, 0xb9, 0xc1, 0xa9, 0xd1, 0x22, 0x02, 0xc0, 0xce, 0xcc, 0x80, 0x41, 0xeb, 0x2c, 0xa8, 0x2c, 0x73, 0x31, 0xd0, 0xbb, 0xb8, 0xf1, 0xcf, 0x45, 0x71, 0x97, 0x58, 0xc8, 0x3c, 0xb8, 0x72, 0x13, 0x21, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0xb4, 0x61, 0xf0, 0x40, 0x97, 0x81, 0xb0, 0xf8, 0x05, 0x8f, 0xa3, 0x80, 0x52, 0x34, 0x5c, 0x14, 0x91, 0xc7, 0xc0, 0x64, 0x72, 0x08, 0x7c, 0x9a, 0x4f, 0x28, 0x4f, 0x3a, 0xa5, 0x7e, 0x02, 0x84, 0x41, 0x56, 0xab, 0x93, 0x52, 0xa6, 0x55, 0xb0, 0xd8, 0x48, 0xce, 0x99, 0xcf, 0x15, 0x70, 0x78, 0xc0, 0x6e, 0xdf, 0x02, 0x16, 0x8a, 0xc5, 0x12, 0x27, 0x84, 0xeb, 0x76, 0x36, 0x52, 0x7b, 0x13, 0x71, 0x10, 0x7e, 0x80, 0x81, 0x34, 0x66, 0x53, 0x86, 0x88, 0x8a, 0x38, 0x01, 0x15, 0x70, 0x05, 0x01, 0x10, 0x87, 0x89, 0x90, 0x31, 0x92, 0x85, 0x05, 0x95, 0x97, 0x10, 0x99, 0x9a, 0x25, 0x3e, 0xa5, 0x6c, 0x06, 0x01, 0x05, 0x15, 0x9e, 0x55, 0x97, 0x0b, 0x0c, 0xa2, 0xa3, 0x3e, 0x09, 0xb4, 0xb4, 0x08, 0xa5, 0x0e, 0x02, 0x02, 0x9e, 0x03, 0x08, 0xa9, 0x0a, 0x0a, 0xb0, 0xa3, 0x27, 0x06, 0xb4, 0x4e, 0x0b, 0x03, 0x02, 0xc0, 0xc0, 0xb9, 0x03, 0xce, 0xc9, 0xba, 0x0a, 0x0d, 0x0d, 0xc2, 0xc3, 0x23, 0xc5, 0xba, 0xc7, 0x0b, 0xcb, 0xcc, 0xcf, 0xde, 0x02, 0xd3, 0xd4, 0xb1, 0x76, 0xd8, 0x02, 0xda, 0xdb, 0xdc, 0x0e, 0xcf, 0x4a, 0x01, 0xd0, 0xe1, 0x0c, 0x56, 0xc3, 0xe5, 0xd9, 0x4e, 0xdc, 0xdd, 0xce, 0x4a, 0x0a, 0xed, 0xe0, 0x0d, 0x0e, 0xf0, 0xf2, 0xb4, 0x04, 0x40, 0xab, 0x67, 0x4f, 0x81, 0x3a, 0x7c, 0xec, 0x92, 0x39, 0x58, 0xe8, 0x20, 0x9e, 0xa6, 0x72, 0x0b, 0xcc, 0x11, 0xb4, 0xd7, 0x0c, 0xe1, 0x3e, 0x86, 0x0d, 0x01, 0x66, 0xcb, 0x56, 0x90, 0x99, 0x40, 0x6f, 0xcf, 0x30, 0x3a, 0x54, 0x54, 0x6c, 0x00, 0x01, 0x89, 0x62, 0xca, 0x3a, 0x1a, 0xac, 0xe8, 0x2d, 0xdc, 0xc2, 0x91, 0x76, 0x02, 0x18, 0x70, 0x76, 0xd2, 0x89, 0xb3, 0x82, 0x11, 0x14, 0x44, 0x58, 0xf8, 0xf1, 0xa6, 0xce, 0x09, 0xd3, 0x60, 0x92, 0x69, 0x37, 0xd3, 0xa4, 0x44, 0x64, 0x38, 0x23, 0x28, 0xe5, 0xe9, 0x4c, 0x59, 0x84, 0x0b, 0x50, 0xc7, 0x45, 0xa1, 0x43, 0x53, 0x00, 0x11, 0x64, 0x03, 0x80, 0xe5, 0xd4, 0xa9, 0x34, 0x27, 0x46, 0x07, 0x5c, 0x2b, 0x44, 0x90, 0x1a, 0x84, 0x28, 0x84, 0x01, 0x07, 0xfc, 0x1c, 0xb0, 0xa9, 0xb5, 0x6b, 0x4e, 0xb7, 0x12, 0x22, 0x1c, 0x80, 0x85, 0x8a, 0x6c, 0xd9, 0x50, 0x67, 0x4d, 0xaa, 0x5d, 0x10, 0x86, 0x6b, 0xd7, 0xb6, 0x12, 0x24, 0x1c, 0x38, 0x60, 0x57, 0x8b, 0xcc, 0xbc, 0x34, 0x09, 0x0c, 0xce, 0xfa, 0xd7, 0x6d, 0x83, 0x0a, 0x07, 0xa6, 0x15, 0x26, 0x63, 0x60, 0x31, 0x48, 0xc6, 0x01, 0xba, 0x1a, 0x08, 0xd7, 0x20, 0x40, 0xe4, 0x06, 0x93, 0xa1, 0x54, 0x3e, 0xe0, 0x8c, 0xf4, 0x3a, 0x76, 0xec, 0x0c, 0x40, 0x08, 0x9a, 0xaa, 0xb3, 0x35, 0x52, 0xde, 0x16, 0x2f, 0x31, 0xb1, 0xd9, 0x75, 0x80, 0x07, 0xa1, 0xa1, 0x78, 0x5e, 0x3c, 0x98, 0xdd, 0x09, 0x4b, 0x0f, 0xe2, 0x09, 0xb5, 0xb6, 0x7b, 0xb0, 0x71, 0x06, 0xf0, 0x64, 0x96, 0x98, 0xfd, 0x1a, 0x85, 0x12, 0xe4, 0xd0, 0x19, 0x70, 0x1e, 0xde, 0x5c, 0x05, 0x6a, 0x99, 0xa6, 0xaa, 0xab, 0x08, 0x01, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xc3, 0x06, 0xc3, 0x6f, 0x88, 0x32, 0x10, 0x16, 0x42, 0xe2, 0x2f, 0xc0, 0x14, 0x19, 0x17, 0x48, 0x65, 0x2f, 0x30, 0x99, 0x1c, 0x02, 0x9f, 0x67, 0x54, 0xaa, 0xa3, 0x56, 0xad, 0x9f, 0x00, 0x61, 0xb0, 0xe5, 0xe2, 0xa8, 0x94, 0xea, 0x55, 0x4c, 0x4e, 0x9a, 0x6f, 0xe8, 0x74, 0x45, 0x3c, 0x1e, 0xb8, 0xdf, 0xa7, 0x60, 0x33, 0x15, 0xb0, 0x50, 0x2c, 0x16, 0x73, 0x04, 0x63, 0x77, 0x78, 0x25, 0x06, 0x09, 0x89, 0x09, 0x41, 0x41, 0x26, 0x54, 0x80, 0x13, 0x73, 0x10, 0x83, 0x85, 0x86, 0x4e, 0x09, 0x02, 0x02, 0x8a, 0x8a, 0x08, 0x77, 0x68, 0x55, 0x92, 0x94, 0x96, 0x87, 0x98, 0x02, 0x0b, 0x09, 0x50, 0x0b, 0x03, 0x02, 0x0a, 0x0a, 0x58, 0x22, 0x01, 0x15, 0x72, 0x05, 0x01, 0x10, 0x93, 0x95, 0x78, 0x88, 0x99, 0x99, 0xa9, 0x50, 0xad, 0xad, 0xaf, 0xb1, 0x91, 0x05, 0xb4, 0xb6, 0x10, 0xb8, 0x66, 0x88, 0x98, 0xab, 0x9a, 0xbd, 0xbf, 0xc0, 0x06, 0x01, 0x05, 0x15, 0xc4, 0x57, 0xb6, 0x0b, 0x0c, 0xc8, 0x52, 0xba, 0xa6, 0xa6, 0xa8, 0xbe, 0xcf, 0xad, 0x0e, 0x99, 0xc4, 0x03, 0x08, 0xd2, 0xad, 0xd9, 0xa3, 0x59, 0xa5, 0x0b, 0xcd, 0xe0, 0xe1, 0x0a, 0xe3, 0x03, 0xf4, 0xcc, 0xac, 0x0d, 0x0d, 0xea, 0x86, 0x88, 0x03, 0x04, 0xa6, 0xa7, 0xa9, 0xe2, 0x89, 0xab, 0x47, 0x50, 0x00, 0xbe, 0x7c, 0xda, 0x96, 0x18, 0xa0, 0xe7, 0x0f, 0x0a, 0x99, 0x05, 0x02, 0x07, 0x12, 0xa4, 0x97, 0xe9, 0x20, 0x83, 0x57, 0x5c, 0x02, 0xd8, 0x61, 0xf8, 0x2f, 0x60, 0x44, 0x07, 0x04, 0x99, 0x50, 0xc4, 0xe7, 0xe0, 0xe2, 0x1b, 0x8d, 0x0b, 0xd5, 0xfb, 0x09, 0x38, 0xe2, 0x30, 0x5e, 0x04, 0x89, 0xf5, 0x44, 0x0a, 0x70, 0x40, 0xd3, 0x01, 0x46, 0x29, 0x28, 0x21, 0x0c, 0x38, 0x30, 0xe8, 0x40, 0xcb, 0x70, 0x2f, 0xe5, 0x09, 0x98, 0xa8, 0x71, 0x66, 0xcd, 0x9b, 0x38, 0x0d, 0xe8, 0xec, 0xd7, 0xb3, 0x4e, 0xab, 0xa0, 0x41, 0xe7, 0x4d, 0xa4, 0x57, 0xd3, 0x26, 0x9e, 0x00, 0x4a, 0x09, 0x0e, 0x3a, 0x32, 0xe0, 0x69, 0x84, 0xaf, 0xe2, 0xa4, 0x12, 0x3c, 0x48, 0x13, 0x29, 0x17, 0x03, 0x07, 0x0e, 0x68, 0x5d, 0x30, 0x46, 0xc1, 0x57, 0xb0, 0x6e, 0x69, 0x0e, 0xad, 0xf7, 0x74, 0x02, 0x3e, 0xb3, 0xdb, 0xd2, 0xd2, 0x53, 0xbb, 0x53, 0xad, 0x5b, 0xb8, 0x6f, 0xe5, 0x52, 0x74, 0x7b, 0xa1, 0x70, 0x42, 0x22, 0x01, 0xf8, 0xf6, 0xd5, 0xd8, 0x35, 0x42, 0x00, 0xb0, 0x6f, 0xe5, 0x55, 0xfd, 0x5b, 0x21, 0xc2, 0xe1, 0x21, 0x89, 0xd3, 0xa6, 0x65, 0xc2, 0xb9, 0xb3, 0xdb, 0xbf, 0x5f, 0x25, 0x44, 0x38, 0x90, 0x2d, 0xda, 0x65, 0xcc, 0x99, 0x99, 0x5c, 0x39, 0xf1, 0xf8, 0xaf, 0x04, 0x09, 0x69, 0x4f, 0x67, 0x4c, 0x9c, 0x9a, 0xcf, 0xd7, 0x06, 0x15, 0x0e, 0xe0, 0x93, 0x8d, 0x93, 0xf6, 0x6a, 0x15, 0x01, 0x0e, 0x26, 0x6e, 0x80, 0x77, 0x54, 0x70, 0xe2, 0xc5, 0x4b, 0x1c, 0x67, 0x52, 0x80, 0xf8, 0x3a, 0xe5, 0x77, 0x5d, 0x44, 0x6b, 0xe0, 0x2a, 0xc0, 0x03, 0xde, 0x4a, 0xf6, 0xb8, 0xb0, 0xee, 0x2a, 0x4c, 0xf2, 0xe7, 0x2f, 0xb4, 0x83, 0x1f, 0x5f, 0x23, 0x04, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0x40, 0xa0, 0xc1, 0x10, 0x2c, 0x92, 0x0c, 0x84, 0x05, 0xd1, 0xd8, 0x0b, 0x38, 0x45, 0xc8, 0x85, 0x92, 0xb9, 0x0b, 0x4c, 0x26, 0x87, 0xc0, 0x27, 0x3a, 0xa5, 0xe2, 0xac, 0x57, 0xec, 0x27, 0x40, 0x18, 0x74, 0xbd, 0x36, 0x2b, 0xe5, 0x9a, 0x25, 0x9b, 0x97, 0x68, 0xd3, 0xd0, 0xa9, 0x4d, 0xa9, 0xd7, 0x15, 0x72, 0x79, 0x00, 0x8f, 0x8f, 0x0c, 0x09, 0x81, 0x81, 0x43, 0x7d, 0x23, 0x01, 0x16, 0x14, 0x16, 0x16, 0x79, 0x04, 0x65, 0x85, 0x7e, 0x80, 0x02, 0x02, 0x82, 0x82, 0x08, 0x85, 0x56, 0x8a, 0x13, 0x79, 0x10, 0x8d, 0x8f, 0x68, 0x91, 0x02, 0x0b, 0x09, 0x52, 0x0b, 0x03, 0x02, 0x0a, 0x0a, 0x75, 0x22, 0x6a, 0x57, 0x9b, 0x9d, 0x7e, 0x7f, 0x09, 0x92, 0x92, 0xa4, 0x52, 0xa8, 0xa8, 0x4f, 0x63, 0x15, 0x78, 0x05, 0x01, 0x10, 0x9c, 0x9e, 0x4c, 0x80, 0xb2, 0xa6, 0x93, 0xb5, 0xb7, 0xb7, 0x5a, 0x01, 0x15, 0x9a, 0x05, 0xbd, 0xbf, 0x10, 0xc1, 0x46, 0xa0, 0x0b, 0xa1, 0xa3, 0xb6, 0xc8, 0xb7, 0x06, 0x01, 0x05, 0x15, 0xce, 0x59, 0xbf, 0x0b, 0x0c, 0xd2, 0x41, 0xd4, 0xc6, 0xd8, 0xd9, 0xa8, 0x0e, 0x92, 0xce, 0x03, 0x08, 0xdc, 0xa8, 0xe3, 0x90, 0x09, 0x03, 0x04, 0xa1, 0xa2, 0xa4, 0xe9, 0xb7, 0xeb, 0x03, 0xfd, 0xc5, 0xa7, 0x0d, 0x1a, 0xc8, 0xa3, 0xa2, 0xc5, 0x40, 0x3f, 0x7b, 0x52, 0xcc, 0x2c, 0xd0, 0xb7, 0xcf, 0x9f, 0x43, 0x01, 0x01, 0x05, 0x92, 0xab, 0xf2, 0x20, 0x80, 0xc1, 0x7a, 0xf7, 0xf2, 0x31, 0x54, 0xe0, 0xc0, 0x1f, 0x9d, 0x62, 0x11, 0x19, 0xa8, 0x0a, 0x12, 0xe0, 0x01, 0x9f, 0x83, 0x02, 0xdb, 0x92, 0x24, 0xdc, 0xc8, 0xd1, 0x63, 0x80, 0x54, 0xa6, 0x02, 0x3a, 0x10, 0xc9, 0xc4, 0x17, 0x1f, 0x08, 0x03, 0x0e, 0x34, 0x3a, 0xb0, 0x32, 0x5d, 0x04, 0x75, 0x2e, 0x9d, 0x98, 0x72, 0x40, 0xd4, 0xc1, 0x48, 0x92, 0xd1, 0x70, 0xd6, 0xdb, 0xb9, 0x07, 0xd5, 0x4f, 0xa7, 0xea, 0x04, 0x04, 0x1d, 0x5a, 0xf4, 0x28, 0x49, 0x03, 0x4a, 0x0f, 0x36, 0x2a, 0xe5, 0x34, 0xc2, 0xcf, 0xa7, 0xfc, 0x1c, 0xfa, 0x2b, 0x6a, 0x34, 0x8e, 0x81, 0x03, 0x07, 0x1c, 0x26, 0x29, 0xa3, 0xc0, 0xeb, 0x57, 0x75, 0x61, 0x1d, 0x46, 0x24, 0x6a, 0xb5, 0xc8, 0xd9, 0xb4, 0x39, 0xfb, 0xa1, 0x1d, 0x10, 0x20, 0x81, 0x57, 0xbf, 0x4e, 0x89, 0x4a, 0xf5, 0xe7, 0x74, 0x42, 0xc0, 0xba, 0x45, 0x02, 0xe0, 0xcd, 0x79, 0x00, 0x27, 0x1d, 0x3a, 0x09, 0xda, 0x7a, 0x15, 0xdc, 0xef, 0x54, 0x84, 0x0b, 0x98, 0x27, 0xfe, 0x50, 0x8c, 0x16, 0x2d, 0x1d, 0x13, 0x2f, 0xdd, 0x72, 0x24, 0x2b, 0xb9, 0x42, 0x04, 0xcd, 0x3e, 0x7c, 0x79, 0xce, 0x75, 0x22, 0xc0, 0x57, 0xb7, 0x12, 0x22, 0x1c, 0x18, 0xb7, 0x0d, 0x75, 0x6a, 0x08, 0x59, 0x3c, 0xab, 0x78, 0x29, 0x59, 0x82, 0x04, 0xb4, 0xb6, 0x91, 0xe6, 0x46, 0x4c, 0xc2, 0x75, 0x84, 0x06, 0x15, 0x0e, 0x04, 0x0c, 0x0e, 0x24, 0xc0, 0x61, 0xe2, 0x25, 0x9c, 0x07, 0x44, 0xbb, 0x1c, 0x56, 0xf1, 0xc3, 0x30, 0xa4, 0x07, 0x2c, 0x50, 0xdd, 0xfa, 0x2a, 0xe8, 0x28, 0xb4, 0x5b, 0x64, 0xee, 0x1d, 0x05, 0x21, 0xf2, 0xe5, 0xcb, 0x87, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x2e, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0xc0, 0xa0, 0x70, 0x88, 0x32, 0x18, 0x88, 0x43, 0x03, 0x61, 0x71, 0x44, 0xee, 0x02, 0x50, 0x91, 0x72, 0xc1, 0x74, 0xe6, 0x02, 0x93, 0xc9, 0x21, 0xf0, 0x99, 0x56, 0xad, 0x36, 0x6c, 0x56, 0xfb, 0x09, 0x10, 0x06, 0x5f, 0x30, 0x0d, 0x4b, 0xc9, 0x6e, 0xcd, 0xe8, 0xa6, 0x7a, 0xc6, 0x6e, 0x57, 0xcc, 0xe7, 0x81, 0x7c, 0x1e, 0x0b, 0x58, 0x28, 0x16, 0x16, 0x77, 0x04, 0x67, 0x7b, 0x7c, 0x30, 0x58, 0x81, 0x13, 0x77, 0x10, 0x84, 0x86, 0x87, 0x2e, 0x6c, 0x59, 0x8c, 0x8e, 0x90, 0x45, 0x46, 0x98, 0x24, 0x01, 0x15, 0x76, 0x05, 0x01, 0x10, 0x8d, 0x8f, 0x90, 0x46, 0x09, 0xa5, 0xa5, 0x08, 0x99, 0x9b, 0x8b, 0x05, 0x9e, 0xa0, 0x10, 0xa2, 0x7c, 0x06, 0xa5, 0x54, 0x0b, 0x03, 0x02, 0x0a, 0xb8, 0x0a, 0x06, 0x01, 0x05, 0x15, 0xac, 0x5b, 0xa0, 0x0b, 0x0c, 0xb0, 0x60, 0xb2, 0x02, 0x02, 0xb4, 0x0b, 0xb9, 0xb8, 0x0e, 0xc7, 0xac, 0x03, 0x08, 0xbc, 0xb8, 0xc3, 0x96, 0x5d, 0x09, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0x03, 0xdd, 0xb6, 0xc7, 0x0a, 0x0d, 0x0d, 0xd4, 0x87, 0xc6, 0xc7, 0xc8, 0x54, 0xcb, 0xcc, 0xde, 0xec, 0x02, 0xe2, 0xe3, 0xc4, 0x49, 0xa5, 0x02, 0xdf, 0xe9, 0xea, 0x0a, 0x0e, 0xde, 0x50, 0x01, 0xdf, 0xef, 0x0c, 0x5c, 0x73, 0xcc, 0x2d, 0x40, 0xa7, 0x4d, 0x5d, 0xbe, 0x6e, 0x01, 0x14, 0x40, 0xb1, 0x25, 0xce, 0xc1, 0xbf, 0x58, 0xd7, 0x90, 0x61, 0xbb, 0xb7, 0x0e, 0xe1, 0x3e, 0x5b, 0x0e, 0x32, 0x3a, 0x00, 0x58, 0x2c, 0xc1, 0x00, 0x02, 0xe8, 0xd0, 0x50, 0xc4, 0x47, 0xcf, 0x22, 0x3f, 0x01, 0x1a, 0xc0, 0x37, 0xaa, 0x09, 0x60, 0xa0, 0x1b, 0x48, 0x2a, 0xdd, 0xee, 0x45, 0x20, 0xc9, 0x8e, 0x5d, 0x4a, 0x8e, 0x48, 0x02, 0x3c, 0x68, 0xf9, 0x91, 0xe0, 0x00, 0x99, 0x11, 0x32, 0x96, 0x64, 0xf7, 0x2e, 0x23, 0x4e, 0x22, 0x3a, 0x79, 0x82, 0x5c, 0x52, 0xeb, 0xa7, 0x82, 0x99, 0x4f, 0x23, 0x04, 0xe5, 0xe6, 0x0d, 0x57, 0x84, 0x09, 0xe2, 0x8e, 0x0e, 0x49, 0x0a, 0x61, 0xc0, 0x01, 0x42, 0x07, 0x60, 0x5a, 0x95, 0x4a, 0x76, 0x6a, 0xc9, 0x5b, 0x11, 0x2e, 0xa8, 0x8d, 0x07, 0x84, 0x65, 0xd7, 0x8f, 0x60, 0x17, 0x9c, 0x89, 0x5a, 0x76, 0x66, 0x4a, 0x07, 0x51, 0x2b, 0x44, 0x60, 0x0b, 0xc4, 0xc0, 0x5b, 0x97, 0x04, 0x0e, 0x1c, 0xf8, 0x49, 0xf6, 0x29, 0xdd, 0x08, 0x12, 0x22, 0x1c, 0x18, 0xb6, 0x8b, 0x6f, 0x10, 0x03, 0x82, 0x07, 0xd7, 0x3c, 0x0c, 0x55, 0xaa, 0x04, 0x09, 0x82, 0x1d, 0x13, 0x81, 0x1c, 0x59, 0xb2, 0xb7, 0x06, 0x75, 0xa5, 0x36, 0xa8, 0x70, 0x40, 0x9c, 0xe6, 0xcd, 0x9d, 0x05, 0xb3, 0xc3, 0x64, 0xe4, 0x5d, 0x03, 0xc1, 0xa6, 0xab, 0x8d, 0x08, 0x90, 0x3a, 0x32, 0x03, 0x06, 0xb1, 0x0d, 0xb8, 0x6e, 0x50, 0x20, 0xb6, 0x6c, 0x03, 0xb7, 0x83, 0x0b, 0x77, 0x7d, 0x44, 0x37, 0x71, 0x23, 0xb2, 0xcb, 0xec, 0x5b, 0xce, 0x92, 0x75, 0x13, 0xe7, 0xa7, 0x5b, 0x84, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0a, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xe3, 0x06, 0xc3, 0x6f, 0x88, 0x32, 0x10, 0x16, 0x42, 0xe2, 0x2f, 0xc0, 0x14, 0x19, 0x17, 0x48, 0x65, 0x2f, 0x30, 0x99, 0x1c, 0x02, 0x9f, 0x67, 0x54, 0xaa, 0xa3, 0x56, 0xad, 0x9f, 0x00, 0x61, 0xb0, 0xe5, 0xe2, 0xa8, 0x94, 0xea, 0x55, 0x4c, 0x4e, 0x9a, 0x6f, 0xe8, 0x74, 0x45, 0x3c, 0x1e, 0xb8, 0xdf, 0xb5, 0x80, 0x85, 0x62, 0xb1, 0xcc, 0x09, 0x63, 0x77, 0x78, 0x34, 0x54, 0x7d, 0x13, 0x73, 0x10, 0x80, 0x82, 0x83, 0x32, 0x68, 0x55, 0x88, 0x8a, 0x8c, 0x36, 0x01, 0x15, 0x72, 0x05, 0x01, 0x10, 0x89, 0x8b, 0x92, 0x2f, 0x94, 0x87, 0x05, 0x97, 0x99, 0x10, 0x9b, 0x9c, 0x23, 0x41, 0xa7, 0x6e, 0x06, 0x01, 0x05, 0x15, 0xa0, 0x57, 0x99, 0x0b, 0x0c, 0xa4, 0x92, 0x41, 0x09, 0xb6, 0xb6, 0x08, 0xa7, 0x0e, 0x02, 0x02, 0xa0, 0x03, 0x08, 0xab, 0x0a, 0x0a, 0xb2, 0xa5, 0x25, 0x06, 0xb6, 0x50, 0x0b, 0x03, 0x02, 0xc2, 0xc2, 0xbb, 0x03, 0xd0, 0xcb, 0xbc, 0x0a, 0x0d, 0x0d, 0xc4, 0xc5, 0x59, 0x09, 0xbc, 0xc9, 0x0b, 0xcd, 0xce, 0xd1, 0xe0, 0x02, 0xd5, 0xd6, 0xb3, 0x66, 0xc7, 0xdb, 0xdc, 0xde, 0x0a, 0x0e, 0xd1, 0x4c, 0x01, 0xd2, 0xe3, 0x0c, 0x58, 0x9c, 0xe7, 0xbc, 0x02, 0xc9, 0xea, 0xeb, 0xed, 0x01, 0x0a, 0xef, 0xe2, 0x0d, 0x0e, 0xe4, 0xd1, 0xb3, 0x25, 0x40, 0x1a, 0x94, 0x7c, 0xfa, 0xa0, 0xb9, 0xf3, 0xe7, 0xa0, 0xa1, 0x83, 0x79, 0x8c, 0xea, 0x2d, 0xb8, 0x77, 0x30, 0xdf, 0x33, 0x85, 0x4c, 0x96, 0x39, 0x7c, 0x38, 0x70, 0xdb, 0x36, 0x84, 0xeb, 0x0a, 0x82, 0x8b, 0xb6, 0x11, 0x22, 0x9e, 0x63, 0x03, 0xc1, 0x08, 0x50, 0x24, 0x03, 0xb2, 0xa1, 0x48, 0x70, 0xe3, 0x1a, 0x9a, 0x34, 0x13, 0xc0, 0x00, 0x34, 0x95, 0x50, 0xa0, 0xe5, 0x8b, 0xa0, 0x20, 0x82, 0x4b, 0x70, 0xc2, 0x22, 0x4c, 0xa8, 0x36, 0x53, 0xca, 0x3b, 0x9b, 0x29, 0x29, 0x2a, 0xdb, 0x19, 0xa1, 0xe9, 0xcf, 0x65, 0x3d, 0x2f, 0x48, 0x2d, 0xb7, 0xc4, 0xce, 0x4d, 0x01, 0x47, 0x94, 0x0d, 0x08, 0x1a, 0xb4, 0x29, 0xcf, 0x8d, 0x0e, 0x7a, 0x46, 0xa8, 0x10, 0x81, 0xaa, 0x8f, 0xa3, 0x10, 0x06, 0x1c, 0x00, 0x74, 0x20, 0x67, 0x57, 0xaf, 0x62, 0x9b, 0x4a, 0x88, 0x70, 0x40, 0x96, 0x2a, 0xb3, 0x4b, 0x0c, 0xa4, 0x4d, 0xc9, 0x76, 0xc1, 0x98, 0xb8, 0x4d, 0xbb, 0x4a, 0x90, 0x70, 0xe0, 0x00, 0x5e, 0x25, 0x35, 0xf7, 0xde, 0x24, 0x50, 0x78, 0x2b, 0x5c, 0xaf, 0x11, 0x1a, 0x54, 0x38, 0x50, 0xed, 0xb0, 0x14, 0x03, 0x85, 0x0f, 0x8c, 0x74, 0x0c, 0xd9, 0xc0, 0xb8, 0x06, 0x01, 0x28, 0x37, 0xb0, 0x4c, 0x04, 0x73, 0x66, 0xcd, 0x30, 0xbd, 0x32, 0x51, 0x35, 0x8e, 0x49, 0x65, 0x6c, 0x4e, 0x4e, 0x37, 0x8e, 0x86, 0x6a, 0x44, 0x00, 0xa2, 0xae, 0x49, 0x13, 0x09, 0x2d, 0xbb, 0x30, 0x03, 0x06, 0xaf, 0x6d, 0x8f, 0x16, 0x51, 0xb4, 0x94, 0x81, 0xdf, 0xc8, 0x93, 0x7f, 0x36, 0x59, 0x1c, 0xf6, 0xc2, 0xe7, 0xa8, 0x74, 0xd7, 0x08, 0x01, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0xbc, 0x6a, 0x18, 0xbd, 0x20, 0xcb, 0x40, 0x58, 0x00, 0x85, 0xc8, 0x4f, 0x60, 0x29, 0x22, 0x2e, 0x8c, 0xc9, 0x60, 0x60, 0x32, 0x39, 0x04, 0x3e, 0x4e, 0x68, 0x74, 0x37, 0xa5, 0x56, 0x95, 0x84, 0x81, 0x76, 0x9b, 0x9b, 0x52, 0xa8, 0xd6, 0x40, 0x78, 0x4c, 0xbe, 0x99, 0xcf, 0x15, 0x75, 0x78, 0x70, 0x6c, 0xbb, 0x2d, 0x14, 0x8b, 0x25, 0x4e, 0x08, 0xd7, 0xed, 0x36, 0x53, 0x7a, 0x13, 0x71, 0x10, 0x7d, 0x7f, 0x80, 0x34, 0x66, 0x54, 0x85, 0x87, 0x89, 0x6e, 0x15, 0x70, 0x05, 0x01, 0x10, 0x86, 0x88, 0x8f, 0x31, 0x01, 0x15, 0x84, 0x05, 0x93, 0x95, 0x10, 0x97, 0x98, 0x25, 0x3f, 0xa4, 0x75, 0x06, 0x01, 0x05, 0x15, 0x9d, 0x56, 0x95, 0x0b, 0x0c, 0xa1, 0xa2, 0x3f, 0x09, 0xb3, 0xb3, 0x08, 0xa4, 0x0e, 0x02, 0x02, 0x9d, 0x03, 0x08, 0xa8, 0x0a, 0x0a, 0xaf, 0xa2, 0x26, 0x06, 0xb3, 0x4f, 0x0b, 0x03, 0x02, 0xbf, 0xbf, 0xb8, 0x03, 0xcd, 0xc8, 0xb9, 0x0a, 0x0d, 0x0d, 0xc1, 0xc2, 0x4d, 0x09, 0xb9, 0xc6, 0x0b, 0xca, 0xcb, 0xce, 0xdd, 0x02, 0xd2, 0xd3, 0xb0, 0x76, 0xc4, 0xd8, 0xd9, 0xdb, 0x0a, 0x0e, 0xce, 0x4b, 0x01, 0xcf, 0xe0, 0x0c, 0x57, 0xb1, 0xd7, 0xb9, 0x02, 0xc6, 0xe7, 0xe8, 0xea, 0x01, 0x0a, 0xec, 0xdf, 0x0d, 0x0e, 0xef, 0xf1, 0xd7, 0x9e, 0x3d, 0xb1, 0x77, 0xaf, 0xd9, 0xba, 0x7d, 0x0e, 0x12, 0x3a, 0x80, 0xf7, 0x88, 0x1c, 0x3d, 0x7a, 0x03, 0xed, 0x31, 0x33, 0xb8, 0x04, 0x99, 0xc2, 0x85, 0xf1, 0xb0, 0x61, 0x23, 0x88, 0x4e, 0x40, 0xb7, 0x6e, 0x17, 0x19, 0x02, 0x22, 0x36, 0x80, 0x00, 0x44, 0x31, 0x1c, 0xc3, 0x13, 0x7a, 0xfc, 0x08, 0x2e, 0xa1, 0xc8, 0x36, 0x01, 0x0c, 0x34, 0x33, 0xf9, 0xa4, 0x99, 0xbd, 0x08, 0x0a, 0x22, 0xa8, 0xec, 0xf6, 0x2b, 0xc2, 0x04, 0x69, 0x2f, 0xb7, 0xb0, 0x93, 0x59, 0x12, 0xe2, 0xb1, 0x9b, 0x11, 0x92, 0xee, 0x44, 0x96, 0xf3, 0x82, 0x53, 0x71, 0x48, 0x86, 0xce, 0x14, 0x50, 0xe4, 0xd8, 0x80, 0x9e, 0x3d, 0x93, 0xe2, 0xbc, 0xe8, 0x20, 0x67, 0x84, 0x0a, 0x11, 0xa0, 0x0a, 0x19, 0x0a, 0x61, 0xc0, 0x81, 0x3e, 0x07, 0x6a, 0x66, 0xd5, 0xea, 0x35, 0xa9, 0x84, 0x08, 0x07, 0x5e, 0x9d, 0x12, 0x1b, 0xd5, 0x40, 0xd9, 0x92, 0x68, 0x17, 0x84, 0x69, 0x9b, 0x34, 0xab, 0x04, 0x09, 0x07, 0x0e, 0xd0, 0x15, 0x6a, 0xb7, 0x1b, 0xda, 0x03, 0x57, 0xd9, 0x6a, 0x8d, 0xd0, 0xa0, 0xc2, 0x01, 0x69, 0x83, 0xc9, 0x18, 0x08, 0xfc, 0xd1, 0x66, 0x84, 0x00, 0x5a, 0x0d, 0x80, 0x6b, 0x10, 0xe0, 0x71, 0x83, 0xc8, 0x51, 0x26, 0x23, 0x36, 0xdb, 0xed, 0xe0, 0xba, 0x53, 0xe0, 0x96, 0x40, 0xae, 0x36, 0x82, 0x68, 0x33, 0xca, 0x4c, 0x4e, 0x04, 0x00, 0xaa, 0x1a, 0x74, 0x92, 0xce, 0x94, 0x03, 0xaf, 0x4b, 0x31, 0xfb, 0x48, 0x50, 0x51, 0xb8, 0x03, 0x0b, 0x67, 0xf0, 0x2e, 0xa6, 0x6c, 0xd6, 0x28, 0x96, 0x10, 0x5f, 0xce, 0x60, 0xf3, 0x6f, 0xe4, 0xbc, 0x0f, 0x96, 0xb2, 0x7d, 0x23, 0x04, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x9f, 0x61, 0xe0, 0xbc, 0x6d, 0x10, 0x8b, 0x5d, 0x6f, 0xb8, 0x0a, 0x18, 0x45, 0xbf, 0x45, 0x90, 0xc8, 0x34, 0x05, 0x26, 0x93, 0x43, 0x20, 0x07, 0x5c, 0x36, 0xaf, 0x4f, 0x68, 0xf4, 0x13, 0x20, 0x0c, 0xac, 0x57, 0xe6, 0x93, 0x02, 0x95, 0x76, 0xbf, 0xc2, 0x30, 0x71, 0x4c, 0xae, 0x74, 0xbd, 0x83, 0xb4, 0x9a, 0xa5, 0x3b, 0xa6, 0x02, 0x16, 0x8a, 0xc5, 0xe2, 0x26, 0x78, 0xe5, 0x73, 0x2a, 0x06, 0x09, 0x84, 0x09, 0x3a, 0x3a, 0x4e, 0x13, 0x7b, 0x13, 0x6e, 0x10, 0x7e, 0x80, 0x81, 0x27, 0x83, 0x02, 0x02, 0x85, 0x85, 0x08, 0x72, 0x63, 0x50, 0x8d, 0x8f, 0x91, 0x82, 0x09, 0x94, 0x0b, 0x09, 0x4a, 0x0b, 0x03, 0x02, 0x0a, 0x0a, 0x53, 0x22, 0x01, 0x15, 0x6d, 0x05, 0x01, 0x10, 0x8e, 0x90, 0x9e, 0x48, 0xa0, 0x94, 0x02, 0xa4, 0x4a, 0xa8, 0xa8, 0xaa, 0xac, 0x8c, 0x05, 0xaf, 0xb1, 0x10, 0xb3, 0x9e, 0x83, 0xa0, 0xa6, 0x95, 0xb9, 0xbb, 0xbc, 0x06, 0x01, 0x05, 0x15, 0xc0, 0x52, 0xb1, 0x0b, 0x0c, 0xc4, 0x81, 0x93, 0xb8, 0xb8, 0xa3, 0xba, 0xcb, 0xa8, 0x0e, 0x94, 0xc0, 0x03, 0x08, 0xce, 0xa8, 0xd5, 0xb4, 0x25, 0xd8, 0x0b, 0xc9, 0xdc, 0xdd, 0x0a, 0xdf, 0x03, 0xf0, 0xc8, 0xa7, 0x0d, 0x0d, 0xe6, 0xe7, 0x39, 0x09, 0x03, 0x04, 0xb8, 0xa2, 0xa4, 0xed, 0xde, 0xf1, 0x02, 0x0a, 0xa0, 0x57, 0xcf, 0x1a, 0x16, 0x03, 0xf0, 0xf6, 0x29, 0xf9, 0xb2, 0xe0, 0x1f, 0xc0, 0x80, 0xf0, 0x28, 0x11, 0x64, 0xa0, 0x2a, 0x52, 0x80, 0x38, 0x09, 0xf9, 0xf9, 0x73, 0xe8, 0x20, 0xa0, 0x91, 0x88, 0xf4, 0x1c, 0x50, 0xa4, 0x75, 0x11, 0xa1, 0x3e, 0x01, 0x55, 0xd2, 0x4a, 0xb5, 0x8b, 0xf0, 0x30, 0xde, 0x47, 0x01, 0x0e, 0x62, 0x3a, 0xa8, 0x18, 0xa8, 0x24, 0x84, 0x01, 0x07, 0xfc, 0x1c, 0x58, 0xb8, 0xd2, 0x9b, 0x00, 0x88, 0x17, 0x61, 0xca, 0xa4, 0x59, 0xd3, 0xc0, 0x4d, 0x7d, 0x3a, 0xe1, 0xa0, 0x62, 0xa9, 0x80, 0xe9, 0x3b, 0x88, 0xf0, 0x64, 0xce, 0x3c, 0x17, 0xc0, 0x68, 0x40, 0x3f, 0x40, 0x06, 0x2c, 0x8d, 0xc0, 0xd5, 0xdb, 0xd3, 0x80, 0x04, 0x63, 0x12, 0x8d, 0x64, 0xe0, 0xc0, 0x81, 0xab, 0x0b, 0xbc, 0x34, 0xe5, 0xca, 0x34, 0x42, 0xcc, 0x9f, 0xf1, 0x96, 0x4e, 0xa0, 0x37, 0xf6, 0x9a, 0x59, 0x78, 0x67, 0x71, 0x9e, 0x5d, 0xdb, 0x96, 0xeb, 0xdb, 0x88, 0x4d, 0x2f, 0x08, 0x36, 0xa8, 0x26, 0x40, 0x5e, 0xbd, 0x17, 0xb5, 0x46, 0x08, 0xd0, 0x95, 0xad, 0x3b, 0xa9, 0x6b, 0x2b, 0x44, 0x20, 0x1c, 0xc6, 0xb0, 0x59, 0xb3, 0x46, 0x32, 0x6b, 0x6e, 0xca, 0x37, 0x82, 0x84, 0x08, 0x07, 0xaa, 0x35, 0xa3, 0x5c, 0xd9, 0xb2, 0x11, 0x29, 0x27, 0x18, 0x6f, 0x95, 0x20, 0xc1, 0x2c, 0xe9, 0x9a, 0x86, 0x4d, 0xdf, 0x61, 0xdb, 0xa0, 0xc2, 0x01, 0x7a, 0xaf, 0xe7, 0x9c, 0x8e, 0xbd, 0xc2, 0x00, 0xc1, 0x06, 0x66, 0x71, 0xdf, 0x4b, 0x4d, 0xb7, 0xae, 0x09, 0xdf, 0xbf, 0x0b, 0x08, 0x1f, 0x4e, 0x22, 0x00, 0xdd, 0x17, 0xc8, 0x09, 0x1e, 0x62, 0x5e, 0xc2, 0x0e, 0xf4, 0x43, 0x88, 0xa8, 0x6b, 0xdf, 0xce, 0xbd, 0xbb, 0xf7, 0xef, 0xe0, 0x61, 0x84, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0xc0, 0x20, 0xcd, 0x60, 0x10, 0x1a, 0x45, 0x06, 0xc2, 0xa2, 0x78, 0xe4, 0x05, 0x9e, 0x48, 0xe5, 0xb2, 0xa9, 0x0b, 0x4c, 0x26, 0x87, 0xc0, 0x27, 0xb9, 0x98, 0x52, 0x6f, 0xd6, 0x2b, 0xf6, 0x13, 0x20, 0x0c, 0xbc, 0xdf, 0x9a, 0x95, 0x72, 0xcd, 0x96, 0xcf, 0xcc, 0x74, 0x89, 0xf8, 0xd4, 0xa6, 0xd6, 0xec, 0x4a, 0xd9, 0x3c, 0x88, 0xcb, 0x91, 0x09, 0x81, 0x81, 0x44, 0x7e, 0x23, 0x01, 0x16, 0x14, 0x16, 0x16, 0x7a, 0x04, 0x66, 0x85, 0x72, 0x06, 0x09, 0x02, 0x02, 0x82, 0x82, 0x08, 0x85, 0x56, 0x8a, 0x13, 0x7a, 0x10, 0x8d, 0x8f, 0x5f, 0x91, 0x93, 0x0b, 0x09, 0x5d, 0x0b, 0x03, 0x02, 0x0a, 0x0a, 0x76, 0x22, 0x6b, 0x57, 0x9c, 0x9e, 0x7f, 0x80, 0x93, 0xa2, 0xa5, 0x0b, 0xa9, 0xa9, 0x50, 0x64, 0x15, 0x79, 0x05, 0x01, 0x10, 0x9d, 0x9f, 0x47, 0x91, 0x92, 0xa7, 0x94, 0xb5, 0xb7, 0xb7, 0x5a, 0x01, 0x15, 0x9b, 0x05, 0xbd, 0xbf, 0x10, 0xc1, 0x46, 0xa1, 0x02, 0x0b, 0xd5, 0xa4, 0x5d, 0xc8, 0xc8, 0x06, 0x01, 0x05, 0x15, 0xce, 0x59, 0xbf, 0x0b, 0x0c, 0xd2, 0x41, 0xd4, 0xd6, 0xd8, 0xb6, 0xda, 0xb7, 0x0e, 0x93, 0xce, 0x03, 0x08, 0xdd, 0xa9, 0xe4, 0x90, 0x09, 0x03, 0x04, 0xd5, 0xa3, 0xa5, 0xeb, 0xec, 0x02, 0x03, 0xff, 0xc5, 0x50, 0x35, 0x68, 0x40, 0xaf, 0x89, 0x16, 0x03, 0xff, 0xf0, 0x75, 0x39, 0xa3, 0x8e, 0x9f, 0x02, 0x07, 0x00, 0x23, 0x0a, 0x18, 0x48, 0xb0, 0xdc, 0x8e, 0x00, 0x0f, 0x02, 0x20, 0xbc, 0x97, 0x6f, 0x9f, 0xc3, 0x87, 0x00, 0xeb, 0x14, 0xa3, 0xc8, 0x60, 0x55, 0x10, 0x8c, 0x7d, 0xdd, 0x12, 0x0a, 0x90, 0x62, 0xea, 0x23, 0xc8, 0x7f, 0x4f, 0x54, 0x9d, 0x1a, 0xe8, 0xa0, 0xe4, 0x11, 0x5f, 0x7d, 0x20, 0x0c, 0x38, 0xd0, 0xe8, 0xc0, 0x42, 0x7e, 0x11, 0x52, 0x41, 0x84, 0x29, 0x52, 0x80, 0x83, 0xa3, 0x0e, 0x4c, 0x9e, 0x8c, 0xa6, 0xf3, 0x5e, 0x4f, 0x3e, 0xa9, 0x82, 0x46, 0x15, 0xea, 0x8f, 0x68, 0x80, 0x53, 0x48, 0x93, 0x52, 0xd1, 0xd8, 0x34, 0x61, 0xa3, 0x96, 0x0a, 0x22, 0x88, 0x0d, 0x4b, 0x35, 0x62, 0xc4, 0xac, 0x4a, 0xa7, 0x1d, 0x38, 0x10, 0x51, 0x89, 0x99, 0xb0, 0x63, 0xa5, 0x1e, 0xad, 0x1a, 0x91, 0xe2, 0xd1, 0xb4, 0x42, 0x0c, 0xac, 0xfd, 0xc7, 0x76, 0x27, 0xdb, 0x00, 0x09, 0xc4, 0x06, 0x8e, 0x3a, 0x37, 0x62, 0xd4, 0x09, 0x03, 0xf1, 0x0a, 0x09, 0xd0, 0xd7, 0xaf, 0xce, 0x3a, 0x75, 0x12, 0xc0, 0x8d, 0x50, 0xf8, 0x54, 0xd8, 0x0b, 0x98, 0x2d, 0xfe, 0x60, 0xbc, 0x76, 0x6d, 0x1d, 0x13, 0x01, 0x26, 0x3f, 0xcc, 0x0a, 0xb7, 0x42, 0x04, 0xcd, 0x3e, 0x7c, 0x79, 0xce, 0x75, 0x22, 0x40, 0x50, 0xb1, 0x62, 0x25, 0x44, 0x38, 0x40, 0x8e, 0x1b, 0xea, 0xd4, 0x10, 0xb2, 0x78, 0x56, 0x11, 0x1a, 0xae, 0x04, 0x09, 0x6b, 0x6f, 0x2f, 0xd5, 0xad, 0x98, 0x84, 0xeb, 0x08, 0x0d, 0x2a, 0x1c, 0x18, 0x28, 0x1c, 0x48, 0x80, 0xc4, 0xc5, 0x4b, 0x3c, 0x1f, 0xb8, 0x96, 0x79, 0x2c, 0x43, 0x89, 0x61, 0x4c, 0x1f, 0x58, 0xc0, 0xfa, 0x75, 0x32, 0xd1, 0x4f, 0x18, 0xa0, 0xc8, 0x9c, 0xc8, 0xf7, 0x1a, 0x84, 0x08, 0x9d, 0xff, 0x12, 0x02, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x2e, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0xc0, 0xa0, 0x70, 0xe8, 0x33, 0x18, 0x88, 0x43, 0x03, 0x61, 0x71, 0x44, 0xee, 0x02, 0x50, 0x91, 0x72, 0xc1, 0x74, 0xe6, 0x02, 0x93, 0xc9, 0x21, 0xf0, 0x99, 0x56, 0xad, 0x36, 0x6c, 0x56, 0xfb, 0x09, 0x10, 0x06, 0x5f, 0x30, 0x0d, 0x4b, 0xc9, 0x6e, 0xcd, 0xe8, 0xa6, 0x7a, 0xc6, 0x6e, 0x57, 0xcc, 0xe7, 0x81, 0x7c, 0x1e, 0x0b, 0x58, 0x28, 0x16, 0x16, 0x77, 0x04, 0x67, 0x7b, 0x7c, 0x30, 0x58, 0x81, 0x13, 0x77, 0x10, 0x84, 0x86, 0x87, 0x2e, 0x6c, 0x59, 0x8c, 0x8e, 0x90, 0x28, 0x46, 0x98, 0x7b, 0x01, 0x15, 0x76, 0x05, 0x01, 0x10, 0x8d, 0x8f, 0x90, 0x46, 0x09, 0xa5, 0xa5, 0x08, 0x98, 0x65, 0x15, 0x8b, 0x05, 0x9e, 0xa0, 0x10, 0xa2, 0x7c, 0x06, 0xa5, 0x54, 0x0b, 0x03, 0x02, 0x0a, 0xb9, 0x0a, 0x06, 0x01, 0x05, 0x15, 0xad, 0x5b, 0xa0, 0x0b, 0x0c, 0xb1, 0x60, 0xb3, 0x02, 0x02, 0xb5, 0x0b, 0xba, 0xb9, 0x0e, 0xc8, 0xad, 0x03, 0x08, 0xbd, 0xb9, 0xc4, 0x96, 0x5d, 0x09, 0xc8, 0xca, 0xcb, 0xcc, 0xce, 0x03, 0xde, 0xb7, 0xc8, 0x0a, 0x0d, 0x0d, 0xd5, 0x87, 0xc7, 0xc8, 0xc9, 0x54, 0xcc, 0xcd, 0xdf, 0xed, 0x02, 0xe3, 0xe4, 0xc5, 0x49, 0xa5, 0x02, 0xe0, 0xea, 0xeb, 0x0a, 0x0e, 0xdf, 0x50, 0x01, 0xe0, 0xf0, 0x0c, 0x5c, 0xe6, 0x9c, 0x5b, 0x90, 0x6e, 0xdb, 0x3a, 0x7d, 0xde, 0x02, 0x28, 0x80, 0x72, 0x6b, 0x9c, 0x03, 0x80, 0xb2, 0xb0, 0x25, 0xcb, 0x86, 0x8f, 0x5d, 0x42, 0x7e, 0xb7, 0x1c, 0x68, 0x74, 0x10, 0xd0, 0x58, 0x82, 0x01, 0x04, 0xd2, 0xa1, 0xa9, 0x98, 0xaf, 0xde, 0xc5, 0x7e, 0x02, 0xbe, 0x36, 0x72, 0x54, 0x13, 0xc0, 0x80, 0xb7, 0x90, 0x54, 0xbc, 0xe1, 0x8b, 0x50, 0xb2, 0x5d, 0x3b, 0x95, 0x1d, 0x91, 0x04, 0x78, 0xe0, 0x12, 0x64, 0xc1, 0x01, 0x33, 0x23, 0x68, 0x34, 0xd9, 0x0e, 0x9e, 0xc6, 0x9c, 0x44, 0x76, 0xf6, 0x0c, 0xb9, 0xc4, 0x16, 0x50, 0x05, 0x34, 0xa1, 0x46, 0x10, 0xda, 0xed, 0x5b, 0xae, 0x08, 0x13, 0xc6, 0x21, 0x1d, 0xa2, 0x14, 0xc2, 0x80, 0x03, 0x84, 0x0e, 0xc4, 0xbc, 0x3a, 0xb5, 0x2c, 0x55, 0x93, 0xb8, 0x22, 0x5c, 0x58, 0x2b, 0x0f, 0x48, 0x4b, 0xaf, 0x20, 0xc3, 0x2e, 0x38, 0x23, 0xd5, 0x2c, 0x4d, 0x95, 0x0e, 0xa4, 0x56, 0x88, 0xd0, 0x16, 0x88, 0x01, 0xb8, 0x2f, 0x09, 0x1c, 0x38, 0x00, 0xb4, 0x2c, 0xd4, 0xba, 0x11, 0x24, 0x44, 0x38, 0x40, 0x8c, 0x57, 0xdf, 0x20, 0x06, 0x06, 0x13, 0xb6, 0x89, 0x38, 0xea, 0x54, 0x09, 0x12, 0x06, 0x3f, 0x26, 0x12, 0x59, 0xf2, 0xe4, 0x6f, 0x0d, 0xec, 0x4e, 0x6d, 0x50, 0xe1, 0xc0, 0xb8, 0xcd, 0x9c, 0x3d, 0x0f, 0x6e, 0x97, 0xc9, 0x00, 0xbc, 0x06, 0x83, 0x4f, 0x5b, 0x1b, 0x11, 0x40, 0xb5, 0x64, 0x06, 0x0c, 0x64, 0xbb, 0x7e, 0x5d, 0x40, 0xf6, 0x6c, 0x03, 0xb8, 0x83, 0x0b, 0x7f, 0x7d, 0x64, 0x37, 0xbc, 0x54, 0xb3, 0xf9, 0x29, 0x87, 0xd2, 0xba, 0x49, 0x73, 0x13, 0x21, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x12, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0xc0, 0xa0, 0x70, 0x48, 0x2c, 0x1a, 0x8f, 0xb7, 0x80, 0x48, 0x89, 0xe4, 0x05, 0x06, 0x81, 0x80, 0x80, 0xd9, 0xc4, 0x3d, 0xa1, 0x04, 0xc2, 0xb4, 0x6a, 0x1d, 0x60, 0xb5, 0x54, 0x2e, 0xed, 0x1a, 0xc8, 0x6e, 0xc5, 0xb6, 0x67, 0x19, 0x8c, 0x4e, 0x7b, 0xd7, 0xe1, 0xb6, 0x4c, 0x4d, 0x28, 0xc4, 0xe5, 0x23, 0x83, 0x7e, 0x7f, 0xa2, 0xdb, 0xf1, 0x25, 0x7a, 0x09, 0x83, 0x83, 0x08, 0x7c, 0x23, 0x6a, 0x05, 0x07, 0x77, 0x6d, 0x06, 0x83, 0x0b, 0x90, 0x03, 0x02, 0x0a, 0x94, 0x53, 0x4a, 0x51, 0x01, 0x07, 0x03, 0x08, 0x51, 0x80, 0x1f, 0x8e, 0x02, 0x02, 0x90, 0x90, 0x94, 0x95, 0xa1, 0x51, 0x02, 0x5e, 0xaa, 0x67, 0x8d, 0x09, 0xa1, 0xa3, 0xa4, 0xa5, 0x0a, 0xa1, 0xa1, 0xaa, 0xab, 0xac, 0x5c, 0xa0, 0xb4, 0xa3, 0xb2, 0xa6, 0xa9, 0xb6, 0x5e, 0xa1, 0x0c, 0x06, 0x62, 0x8e, 0xae, 0x92, 0xa2, 0x0b, 0xbd, 0x94, 0x0e, 0xb5, 0xb6, 0x98, 0x03, 0x0d, 0x0c, 0xc5, 0xae, 0xa2, 0xc9, 0xca, 0xcb, 0xcd, 0xbf, 0x5e, 0x0f, 0x51, 0x0a, 0x52, 0x0c, 0x8c, 0x44, 0xba, 0x0b, 0xaf, 0xcb, 0xcc, 0xce, 0xdc, 0x98, 0x01, 0x0e, 0x0e, 0xe2, 0x42, 0x8e, 0x03, 0x5a, 0x91, 0xd8, 0xd9, 0xb4, 0xaa, 0x0f, 0xdd, 0x51, 0xed, 0xef, 0x40, 0x01, 0x06, 0x5e, 0xe6, 0x2d, 0xf0, 0xb2, 0x2c, 0x82, 0x02, 0x6d, 0xdb, 0xf2, 0x41, 0x80, 0x30, 0x80, 0x1f, 0x92, 0x00, 0x0f, 0x00, 0xca, 0xbb, 0x36, 0xa0, 0x60, 0x84, 0x76, 0xe9, 0x80, 0x39, 0x3c, 0x02, 0x51, 0xa2, 0x16, 0x02, 0x91, 0x2a, 0x2a, 0x30, 0x38, 0x32, 0xc2, 0x45, 0x5a, 0xdb, 0x83, 0xbc, 0x34, 0x58, 0xd9, 0xcf, 0x47, 0x47, 0x86, 0x07, 0xb2, 0x1c, 0x88, 0x44, 0xc9, 0xa4, 0x4d, 0x93, 0x18, 0xd3, 0x51, 0x6a, 0x40, 0xac, 0xc9, 0x3f, 0x86, 0xf2, 0x64, 0x2e, 0x20, 0x50, 0xf1, 0xa6, 0xcd, 0x83, 0xed, 0xda, 0x95, 0xec, 0x94, 0x0b, 0x68, 0x40, 0x02, 0x07, 0x34, 0x95, 0x34, 0x48, 0xd5, 0xa6, 0x84, 0x08, 0x07, 0x86, 0xf5, 0x44, 0x63, 0x20, 0xaa, 0x26, 0x60, 0x53, 0x4d, 0xd6, 0x8c, 0x20, 0x41, 0x42, 0xd4, 0xad, 0x8d, 0xbc, 0x46, 0x05, 0xd6, 0xc0, 0xa8, 0xc9, 0x95, 0x0d, 0x02, 0xf0, 0xf4, 0xd4, 0x55, 0xed, 0x57, 0x2f, 0x7b, 0xf4, 0x44, 0x81, 0xbb, 0x68, 0x2e, 0xa0, 0x4c, 0x76, 0xa3, 0x32, 0x60, 0xb0, 0x72, 0xab, 0xdc, 0x95, 0x76, 0xfc, 0xca, 0x31, 0x30, 0xb8, 0xb1, 0x63, 0xb8, 0x8a, 0x0f, 0xf3, 0xd4, 0xf3, 0x77, 0xdd, 0xba, 0xbc, 0x94, 0xf3, 0x1c, 0x22, 0x11, 0x02, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x12, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0xc0, 0xa0, 0x70, 0x58, 0x0b, 0x88, 0x8c, 0x44, 0x60, 0x60, 0x10, 0x08, 0x08, 0x90, 0x49, 0xde, 0x92, 0x49, 0x20, 0x3c, 0xa3, 0xd2, 0x01, 0xd5, 0x0a, 0xc5, 0xe2, 0xa6, 0x81, 0xea, 0xd5, 0xab, 0x5b, 0x86, 0xb9, 0xe4, 0xb2, 0xf6, 0xdc, 0x4d, 0xdb, 0xcc, 0x84, 0x42, 0xdb, 0x4d, 0x83, 0xcb, 0xe9, 0x5f, 0x66, 0xe1, 0x30, 0xc7, 0xa3, 0x0c, 0x80, 0x81, 0x4d, 0x83, 0x07, 0x04, 0x08, 0x4d, 0x7e, 0x2a, 0x80, 0x09, 0x8c, 0x8c, 0x08, 0x81, 0x55, 0x91, 0x55, 0x7d, 0x89, 0x06, 0x8c, 0x0b, 0x0b, 0x09, 0x03, 0x02, 0x0b, 0x0a, 0x0a, 0x4f, 0x92, 0x93, 0x89, 0x26, 0x96, 0x02, 0x9c, 0x98, 0xa8, 0x9e, 0xa6, 0x02, 0x91, 0x5a, 0x4c, 0xa3, 0x23, 0xa5, 0xa7, 0x09, 0x99, 0x09, 0x9e, 0xaa, 0xa6, 0x04, 0xae, 0xaf, 0xb0, 0xb2, 0xa6, 0xa8, 0x98, 0xb7, 0x9f, 0xb9, 0xbb, 0x94, 0x64, 0x96, 0x09, 0x02, 0x9b, 0xb3, 0xc1, 0xb7, 0x0e, 0xa6, 0xbb, 0xbc, 0x95, 0xc9, 0x9c, 0xcc, 0xcd, 0x9e, 0xcf, 0xca, 0xae, 0x0f, 0xc6, 0x5e, 0xb2, 0x0b, 0xbf, 0xc0, 0x9d, 0xd8, 0xd0, 0xdb, 0xdd, 0x58, 0x96, 0x9b, 0x98, 0x03, 0xe2, 0xe3, 0x0a, 0xd9, 0xda, 0x03, 0xdc, 0xa3, 0x01, 0x06, 0x4b, 0xa7, 0x5a, 0xe2, 0x0a, 0x11, 0xef, 0xab, 0x6b, 0xe7, 0x49, 0x02, 0x3c, 0x78, 0xc0, 0xe4, 0xd4, 0x02, 0x76, 0xc0, 0xf6, 0x45, 0x70, 0x90, 0x6d, 0x0d, 0x2c, 0x81, 0x04, 0xd5, 0xad, 0xd3, 0x17, 0xa1, 0x22, 0x3c, 0x80, 0x51, 0x04, 0x6a, 0x79, 0x80, 0xe9, 0x40, 0xbb, 0x8a, 0x20, 0x17, 0x3e, 0xc3, 0x98, 0x51, 0x0b, 0x04, 0x08, 0x1d, 0x59, 0x17, 0x10, 0x40, 0x45, 0x20, 0x24, 0x3f, 0x07, 0x24, 0xd1, 0x9d, 0x84, 0xc0, 0x8e, 0xc0, 0x81, 0x03, 0x35, 0x5b, 0x2a, 0x94, 0x20, 0x21, 0x26, 0xba, 0x03, 0x34, 0x5d, 0x85, 0x0a, 0xd9, 0xa0, 0xa8, 0xcf, 0x28, 0x06, 0x80, 0x42, 0xb8, 0xb9, 0x0b, 0x13, 0xd1, 0xa2, 0x7c, 0x60, 0x95, 0x48, 0x8a, 0x53, 0x4b, 0x55, 0x2d, 0x81, 0xec, 0x05, 0x30, 0x2a, 0xb5, 0x44, 0x80, 0x9b, 0x60, 0xc1, 0x32, 0x60, 0x50, 0xd4, 0xc0, 0x11, 0x44, 0x5d, 0x63, 0x8d, 0x5d, 0xcb, 0xb6, 0x68, 0xd9, 0xb4, 0x27, 0x06, 0xc9, 0x6d, 0x92, 0x15, 0x90, 0x8b, 0x10, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x12, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0xc0, 0xa0, 0x70, 0xd8, 0x0a, 0x04, 0x48, 0x47, 0x62, 0x2f, 0x20, 0x48, 0x7e, 0x98, 0x4e, 0x25, 0x2e, 0x40, 0x20, 0x34, 0x9f, 0x82, 0x6a, 0x54, 0x5a, 0xa3, 0x5a, 0x8f, 0x4c, 0x2d, 0x77, 0x5a, 0xbd, 0x86, 0x09, 0xdb, 0xb1, 0xcc, 0x6b, 0xce, 0xa2, 0xd5, 0x37, 0x2f, 0x58, 0x0c, 0xb7, 0x51, 0x0b, 0xe0, 0xc2, 0xbb, 0xde, 0x25, 0xe0, 0x9f, 0x7a, 0x69, 0x7c, 0x2f, 0x01, 0x05, 0x07, 0x60, 0x07, 0x7f, 0x83, 0x33, 0x46, 0x8d, 0x01, 0x08, 0x46, 0x8b, 0x31, 0x06, 0x06, 0x0f, 0x96, 0x97, 0x96, 0x68, 0x82, 0x92, 0x26, 0x06, 0x09, 0x09, 0x96, 0x09, 0x03, 0x02, 0x0b, 0x96, 0x02, 0x0f, 0x7b, 0x9c, 0x28, 0x9e, 0xa7, 0x0f, 0x0b, 0xaf, 0xaf, 0xa6, 0x02, 0x59, 0x9b, 0x9c, 0xac, 0xa4, 0x0b, 0x09, 0xb9, 0xa0, 0x97, 0xb3, 0xb4, 0xaa, 0x25, 0xb7, 0xa7, 0xb0, 0xb1, 0xbd, 0xb3, 0xa9, 0xc0, 0x9e, 0x09, 0x02, 0xa3, 0xb8, 0xba, 0xa5, 0x97, 0x0e, 0xb3, 0x03, 0x03, 0xb5, 0x75, 0x9e, 0x0f, 0xa4, 0xa4, 0x9e, 0xa3, 0xd0, 0xc6, 0xd4, 0xd6, 0x70, 0xd8, 0xae, 0x4d, 0x06, 0x01, 0xdd, 0xde, 0xd9, 0x0f, 0xe0, 0xc0, 0x4f, 0x18, 0x97, 0x0b, 0x01, 0x96, 0xd5, 0xb8, 0x98, 0xa7, 0xcc, 0xd5, 0xc0, 0xf2, 0xf0, 0xfb, 0xe0, 0xc5, 0xa6, 0xd9, 0x06, 0x3c, 0x08, 0xc7, 0x65, 0x9f, 0xa5, 0x78, 0xeb, 0x04, 0x06, 0xf8, 0xd7, 0xeb, 0x01, 0x06, 0x82, 0x52, 0x02, 0x60, 0x78, 0xe7, 0x2a, 0x1e, 0x35, 0x08, 0x07, 0x18, 0x9a, 0x9a, 0x08, 0x51, 0x49, 0x80, 0x03, 0x14, 0x17, 0x1c, 0x18, 0x29, 0x32, 0x23, 0xa6, 0x4b, 0x1c, 0x4c, 0x3b, 0x12, 0xf9, 0x38, 0x71, 0x60, 0x86, 0x91, 0x30, 0x1d, 0x1a, 0x41, 0x89, 0xe1, 0x50, 0xbb, 0x0f, 0x06, 0x40, 0x06, 0xc8, 0x90, 0xe1, 0x23, 0x4c, 0x90, 0x3c, 0x25, 0x4e, 0xb4, 0x79, 0x33, 0x27, 0x84, 0x9d, 0x3d, 0xab, 0x54, 0x39, 0x14, 0xb4, 0x26, 0xd1, 0x9b, 0x4f, 0x8e, 0x8e, 0xf4, 0x09, 0x13, 0xe9, 0xc7, 0x48, 0x50, 0x47, 0x18, 0x09, 0xea, 0x68, 0x6b, 0x4f, 0x95, 0x83, 0xac, 0x96, 0x10, 0x9b, 0xf5, 0x04, 0xd6, 0xb1, 0x60, 0xcb, 0xce, 0x08, 0x01, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0xc0, 0xa0, 0x70, 0x58, 0x0a, 0x88, 0x8c, 0x44, 0x60, 0x40, 0x10, 0x08, 0x0c, 0x90, 0x49, 0xde, 0x92, 0x40, 0x70, 0x3e, 0xa3, 0x52, 0x01, 0xd5, 0x0a, 0xc5, 0xe2, 0xa6, 0xd5, 0xc1, 0xd5, 0x9b, 0x03, 0x3b, 0xbb, 0x64, 0x5b, 0x60, 0x2b, 0x46, 0x06, 0x0c, 0xf0, 0x78, 0x1a, 0x16, 0x28, 0x84, 0xdd, 0x06, 0x44, 0x62, 0xbf, 0x87, 0xcf, 0x5b, 0x75, 0x77, 0x1f, 0x01, 0x0a, 0x0a, 0x0b, 0x02, 0x03, 0x09, 0x0b, 0x0b, 0x7d, 0x7f, 0x2b, 0x01, 0x07, 0x05, 0x67, 0x84, 0x85, 0x8b, 0x96, 0x87, 0x02, 0x09, 0x06, 0x8e, 0x28, 0x4d, 0x08, 0x04, 0x07, 0x4d, 0x94, 0x85, 0x7b, 0x8c, 0x8b, 0x02, 0x99, 0x9b, 0x9c, 0x24, 0x6b, 0x54, 0xae, 0x04, 0x85, 0xb1, 0x97, 0x98, 0xa8, 0x9a, 0xab, 0x23, 0xad, 0xaf, 0xa3, 0x95, 0xa6, 0x98, 0x03, 0x99, 0xb6, 0xab, 0x56, 0x03, 0xae, 0xa8, 0xb1, 0xbc, 0xbd, 0x02, 0x98, 0xc1, 0x9c, 0xc3, 0xc4, 0xa8, 0x02, 0xc7, 0xb3, 0x98, 0xcb, 0xaa, 0xcd, 0x62, 0x62, 0x04, 0xd0, 0xd2, 0xb3, 0x03, 0xa7, 0x89, 0xd6, 0x8e, 0xce, 0xbf, 0x02, 0x0e, 0xdc, 0x96, 0x62, 0xdf, 0x6f, 0x68, 0x69, 0x01, 0x0f, 0xd8, 0xe4, 0xe6, 0xb2, 0x97, 0xde, 0xa7, 0x4e, 0x0f, 0x0f, 0xec, 0x5e, 0xee, 0xf0, 0xa8, 0xf2, 0xc8, 0x8b, 0xea, 0x1d, 0x12, 0x83, 0x4f, 0x1f, 0x16, 0x7e, 0x62, 0xa0, 0xfd, 0x8b, 0x10, 0x61, 0xda, 0x81, 0x45, 0xef, 0x06, 0xe4, 0x13, 0x66, 0x45, 0xa1, 0x82, 0x08, 0x17, 0x09, 0x58, 0xd2, 0xf8, 0x70, 0x01, 0x04, 0x08, 0x6d, 0x6e, 0x0d, 0x4a, 0x58, 0xce, 0x01, 0xc3, 0x8c, 0x1a, 0x69, 0x07, 0x1c, 0x38, 0x90, 0xf2, 0x23, 0x84, 0x70, 0xc2, 0x14, 0x32, 0x9c, 0x19, 0xe1, 0x15, 0x01, 0x78, 0x10, 0x0e, 0xc0, 0x6c, 0x56, 0x92, 0xe6, 0xcc, 0x80, 0xd8, 0x56, 0x7e, 0xd4, 0x29, 0x12, 0x97, 0x39, 0x9f, 0x70, 0xe0, 0x1d, 0x08, 0x4a, 0xb4, 0x28, 0x2e, 0x09, 0x12, 0x68, 0x36, 0x60, 0xc0, 0x20, 0x14, 0xa4, 0x95, 0x90, 0x0c, 0x0a, 0x6b, 0xc0, 0x55, 0x54, 0x13, 0x06, 0x01, 0xa8, 0x5a, 0x3d, 0xc0, 0x60, 0xe7, 0x2d, 0x48, 0x5d, 0x03, 0x44, 0x50, 0xd5, 0x04, 0xeb, 0xd5, 0x26, 0x4e, 0x71, 0x75, 0xfd, 0x60, 0x40, 0x81, 0x1b, 0xbb, 0x57, 0x43, 0xc5, 0x65, 0x05, 0x97, 0x2e, 0x14, 0xb8, 0x5e, 0xf7, 0x0a, 0x1e, 0xfc, 0x21, 0x04, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x2e, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xbf, 0x06, 0xc3, 0x6f, 0x88, 0x32, 0x2c, 0x08, 0x42, 0xa2, 0xf2, 0x63, 0x3c, 0x26, 0x03, 0xd0, 0x65, 0xaf, 0x89, 0xfc, 0x04, 0x0e, 0x93, 0x49, 0x40, 0xba, 0x33, 0x0e, 0x08, 0x5b, 0x6c, 0x56, 0xcb, 0xcd, 0x79, 0xc1, 0xd7, 0x2c, 0x85, 0x5c, 0xbe, 0x19, 0x06, 0x5f, 0x70, 0x65, 0x42, 0x59, 0x6f, 0xdb, 0xee, 0x78, 0xa0, 0x62, 0xb1, 0x50, 0x2c, 0x77, 0x78, 0x35, 0x06, 0x04, 0x04, 0x10, 0x7b, 0x13, 0x7d, 0x6c, 0x82, 0x34, 0x84, 0x86, 0x88, 0x74, 0x8b, 0x8c, 0x32, 0x84, 0x10, 0x87, 0x05, 0x73, 0x14, 0x15, 0x81, 0x4c, 0x41, 0x9e, 0x93, 0x2a, 0x06, 0x96, 0x97, 0x98, 0x13, 0x9b, 0x9d, 0x06, 0x08, 0x09, 0xab, 0xab, 0x41, 0xa0, 0x26, 0x06, 0x0c, 0x0b, 0x96, 0x57, 0x05, 0x98, 0x05, 0x01, 0x06, 0x0a, 0xbb, 0x0a, 0x02, 0x03, 0x0b, 0xc0, 0xad, 0xaf, 0x24, 0xb1, 0xbb, 0xb8, 0x08, 0x03, 0xb6, 0x02, 0x02, 0x0e, 0xbc, 0xbb, 0xc0, 0xc0, 0xcb, 0x09, 0x49, 0xaf, 0xb1, 0x0d, 0x0d, 0xbd, 0xcb, 0x70, 0x70, 0xcc, 0xce, 0x0a, 0xd0, 0xd1, 0x02, 0xd3, 0xc3, 0xd6, 0xd7, 0xbe, 0xdb, 0xdb, 0xcd, 0xde, 0xd0, 0xcb, 0xd2, 0xd4, 0x82, 0x01, 0x0c, 0xd7, 0x0d, 0xda, 0x50, 0x01, 0xe9, 0xde, 0xcf, 0x0b, 0xda, 0xe2, 0xe3, 0x8c, 0xf1, 0x0e, 0xcc, 0x0d, 0x08, 0xa0, 0x00, 0x0a, 0xbe, 0x7c, 0xec, 0xf6, 0x89, 0x7b, 0xd7, 0x26, 0x80, 0x83, 0x87, 0x0e, 0x7c, 0xd9, 0xbb, 0x07, 0x47, 0x1d, 0xc2, 0x65, 0x0a, 0xfd, 0xc1, 0x83, 0x18, 0x71, 0xa0, 0x41, 0x6e, 0x16, 0xd7, 0xfd, 0xda, 0x47, 0x60, 0x80, 0xc6, 0x86, 0x1c, 0xb7, 0xd1, 0xa1, 0xeb, 0x16, 0x21, 0x1f, 0x9c, 0x68, 0x25, 0x07, 0x18, 0xe0, 0xc4, 0xc5, 0x61, 0xc0, 0x6b, 0x2a, 0x07, 0x30, 0x73, 0x10, 0xa1, 0xa5, 0xb7, 0x91, 0x24, 0xe1, 0xbc, 0xa1, 0xb9, 0x24, 0xc0, 0xb5, 0x09, 0x3e, 0x57, 0x3e, 0xec, 0xe9, 0x33, 0xe9, 0x48, 0x02, 0x02, 0x62, 0x0e, 0x15, 0x64, 0xe0, 0x82, 0xd5, 0x96, 0xe7, 0x76, 0x32, 0xdd, 0xba, 0x6b, 0xe4, 0x81, 0x42, 0x07, 0x06, 0x40, 0x98, 0x8a, 0xc7, 0x40, 0x84, 0x0a, 0x3d, 0x15, 0x70, 0x6c, 0xb6, 0x95, 0xa9, 0x82, 0x2f, 0x0b, 0xbe, 0x16, 0x82, 0x33, 0x96, 0x28, 0x97, 0x99, 0x41, 0x18, 0x1c, 0x88, 0x20, 0x81, 0x6b, 0x4b, 0xb7, 0x03, 0x0e, 0xc8, 0x45, 0x57, 0x77, 0x18, 0x13, 0xc1, 0x12, 0xfa, 0x36, 0xe5, 0x9a, 0x53, 0xf0, 0x01, 0x86, 0xa0, 0x0c, 0x5c, 0x3b, 0x50, 0xa1, 0x41, 0xdb, 0x9e, 0x0d, 0x54, 0x3a, 0x16, 0x0c, 0x99, 0x91, 0xe4, 0x06, 0x82, 0xe7, 0x35, 0xf0, 0x14, 0x04, 0xdd, 0x66, 0xce, 0x86, 0x99, 0x5c, 0x2b, 0x20, 0x7a, 0xb4, 0xea, 0x06, 0x0c, 0xf4, 0x9e, 0x16, 0x6c, 0xd7, 0x73, 0x90, 0xd6, 0x42, 0x3e, 0x5f, 0x8b, 0xcd, 0xbb, 0x77, 0xe7, 0xc8, 0xa4, 0x93, 0x04, 0x9f, 0x39, 0x71, 0x62, 0xea, 0xe3, 0xc8, 0x5d, 0x84, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0x93, 0x86, 0x71, 0xef, 0xbb, 0xb1, 0x10, 0x3a, 0x9e, 0x30, 0xe6, 0xfb, 0x05, 0x03, 0xc8, 0xa1, 0x32, 0x55, 0x04, 0x7e, 0x02, 0x87, 0xc9, 0x24, 0xb0, 0xac, 0xe2, 0x16, 0x03, 0x02, 0x35, 0x2a, 0x9d, 0x5a, 0xad, 0xbe, 0x2c, 0x92, 0x4b, 0xf1, 0x7e, 0x97, 0x86, 0x41, 0x56, 0x5b, 0x99, 0x50, 0xca, 0xd4, 0x33, 0x7a, 0x1d, 0xa8, 0x58, 0x2c, 0x14, 0x4b, 0x5c, 0x3e, 0x34, 0x10, 0x08, 0x10, 0x75, 0x13, 0x77, 0x66, 0x7c, 0x42, 0x7e, 0x80, 0x82, 0x6e, 0x85, 0x86, 0x3d, 0x80, 0x81, 0x05, 0x6d, 0x14, 0x15, 0x7b, 0x8d, 0x37, 0x06, 0x10, 0x99, 0x01, 0x05, 0x91, 0x13, 0x94, 0x96, 0x3d, 0x0c, 0x0b, 0x9a, 0x07, 0x9c, 0x15, 0x05, 0x01, 0x41, 0x1f, 0x39, 0xac, 0xaa, 0xa0, 0x2a, 0x06, 0x0c, 0x0a, 0x0a, 0xa8, 0x08, 0x03, 0x9c, 0x02, 0x02, 0x0e, 0xac, 0x08, 0x09, 0xbe, 0xbe, 0x39, 0xaf, 0x4c, 0x0c, 0x0d, 0x0d, 0x0a, 0xb9, 0x02, 0x6a, 0x6a, 0xba, 0xb3, 0xb3, 0xc9, 0x0b, 0xd0, 0xc0, 0xc2, 0x27, 0xb1, 0xc5, 0x0d, 0xc9, 0xca, 0xca, 0x0e, 0xcd, 0xb3, 0xd0, 0xd0, 0xb9, 0x09, 0xae, 0xd3, 0x01, 0xc4, 0xc5, 0xb9, 0x03, 0x48, 0x01, 0xda, 0xdc, 0x0a, 0xde, 0xdf, 0x02, 0xe1, 0xd3, 0x23, 0xe4, 0x0e, 0xe6, 0xe8, 0x0a, 0x48, 0xeb, 0xec, 0xde, 0xc8, 0xf0, 0xe2, 0xa0, 0x01, 0x1c, 0x08, 0x74, 0x90, 0x2c, 0x9d, 0x3a, 0x35, 0xdb, 0xd8, 0xb5, 0x5b, 0x70, 0x0e, 0x5e, 0xbc, 0x71, 0x03, 0x09, 0xa2, 0xcb, 0xb7, 0x2c, 0xe1, 0xbe, 0x6f, 0x0c, 0xfd, 0xc9, 0x0b, 0x38, 0x30, 0x5b, 0x36, 0x66, 0x0a, 0xdb, 0xe5, 0xca, 0xf8, 0x50, 0x18, 0x47, 0x6b, 0x1e, 0xc9, 0x07, 0xe8, 0xb2, 0xb8, 0x6f, 0xc0, 0x37, 0x02, 0x03, 0x4a, 0x02, 0x2c, 0x36, 0x21, 0xc2, 0xac, 0x8f, 0x02, 0x6d, 0xda, 0x64, 0xa7, 0xe6, 0xa5, 0x1a, 0x03, 0x95, 0x2c, 0x19, 0xb8, 0x40, 0xd4, 0x26, 0xb6, 0x95, 0x11, 0x92, 0xee, 0xe4, 0xe6, 0xd2, 0xe7, 0x80, 0x34, 0x41, 0x0d, 0x19, 0x88, 0x50, 0x21, 0xa9, 0x82, 0x88, 0xdb, 0x94, 0xee, 0xdc, 0xd9, 0xf3, 0x87, 0x00, 0x98, 0x4f, 0xd1, 0x4d, 0x03, 0x9a, 0x83, 0xc1, 0x81, 0x08, 0x12, 0xb4, 0x2a, 0xd0, 0xca, 0x15, 0xda, 0x81, 0x3f, 0x07, 0x06, 0x40, 0x80, 0x2a, 0x6f, 0x84, 0x81, 0x03, 0x07, 0x24, 0xa4, 0xdd, 0xaa, 0x36, 0xcb, 0x82, 0xb7, 0x7f, 0xd4, 0xcc, 0x0d, 0x54, 0x57, 0x84, 0x81, 0x62, 0x07, 0x2a, 0x34, 0x50, 0xab, 0x54, 0xc1, 0x00, 0xbc, 0x81, 0x95, 0xcd, 0x8d, 0xfa, 0xea, 0x70, 0x03, 0xbc, 0xd6, 0x1a, 0x4c, 0x4d, 0x1a, 0xc0, 0x66, 0xca, 0xc7, 0x07, 0xfe, 0x8d, 0x6b, 0x50, 0x20, 0xb3, 0x66, 0x83, 0xe9, 0xb2, 0xc5, 0x05, 0x2d, 0x5a, 0xd8, 0xe1, 0x00, 0x99, 0x45, 0xe7, 0xc3, 0x9b, 0xad, 0xb5, 0xc9, 0x06, 0xb0, 0x35, 0xb7, 0x4e, 0x47, 0x1b, 0xef, 0x01, 0xca, 0x1b, 0x9f, 0x50, 0x06, 0x4a, 0xce, 0xac, 0x6f, 0xdf, 0xc0, 0x0b, 0x9f, 0xc8, 0x5d, 0x8c, 0x81, 0xf3, 0xe7, 0x49, 0x94, 0xbf, 0x68, 0x45, 0x3c, 0x9d, 0xf4, 0xeb, 0xd8, 0x69, 0x84, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0e, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0xfc, 0x1a, 0x86, 0x6c, 0xdf, 0xae, 0xb1, 0x10, 0x35, 0xee, 0xff, 0x22, 0xdd, 0xae, 0x17, 0x28, 0x02, 0x8f, 0xb3, 0xc5, 0xf0, 0x13, 0x38, 0x4c, 0x26, 0x01, 0xa4, 0x54, 0xa5, 0x1b, 0x10, 0xa2, 0xce, 0x27, 0x74, 0xca, 0x2d, 0x55, 0xaf, 0xcd, 0x27, 0x65, 0xdb, 0x2d, 0x1b, 0x06, 0xd6, 0x6b, 0x65, 0x42, 0x19, 0x47, 0xcb, 0xe6, 0x74, 0xa0, 0x62, 0xb1, 0x50, 0x2c, 0x6f, 0x54, 0x91, 0x06, 0x8f, 0x19, 0x08, 0x04, 0x10, 0x73, 0x13, 0x75, 0x64, 0x24, 0x34, 0x34, 0x09, 0x8a, 0x09, 0x3d, 0x7d, 0x2d, 0x7f, 0x81, 0x83, 0x6c, 0x86, 0x1f, 0x06, 0x08, 0x8b, 0x8b, 0x02, 0x02, 0x8c, 0x8e, 0x8f, 0x81, 0x82, 0x05, 0x6b, 0x14, 0x15, 0x79, 0x01, 0x0a, 0x0a, 0x02, 0x03, 0x4a, 0x0b, 0x09, 0x0b, 0x9a, 0x9c, 0x9d, 0x54, 0x10, 0xb3, 0x01, 0x05, 0xa1, 0x13, 0xa4, 0x22, 0xa6, 0xa7, 0x0a, 0xab, 0x4a, 0x9a, 0xaf, 0x8d, 0xb1, 0x5e, 0x0c, 0x0b, 0xb4, 0x07, 0xb6, 0x15, 0x05, 0x01, 0x06, 0xbb, 0xbc, 0xbe, 0x09, 0x9a, 0x03, 0x9b, 0xb0, 0xc3, 0x87, 0x0c, 0xa7, 0xcb, 0x08, 0x03, 0xb6, 0x9a, 0x0e, 0xbc, 0xe0, 0xab, 0xad, 0x02, 0xae, 0x9b, 0xc2, 0xd6, 0x06, 0x0c, 0x0d, 0x0d, 0xa8, 0xd2, 0x68, 0xd3, 0xdf, 0xe0, 0xcf, 0x4a, 0xd1, 0xe5, 0xd5, 0xd6, 0x95, 0xea, 0xeb, 0xa9, 0xef, 0xef, 0xf1, 0xf2, 0xbd, 0xe8, 0xfd, 0x22, 0x30, 0xe0, 0x5e, 0xac, 0x00, 0xfa, 0x1a, 0xb8, 0xeb, 0x37, 0xe0, 0x1f, 0x40, 0x25, 0xaa, 0x5c, 0x11, 0x1c, 0xd0, 0x0c, 0x1f, 0x42, 0x07, 0xfb, 0xd0, 0x14, 0xe9, 0xe7, 0x50, 0x9e, 0x2f, 0x89, 0x68, 0xce, 0xe4, 0xe9, 0x14, 0xc0, 0x81, 0x49, 0x07, 0xa9, 0xd6, 0x36, 0x72, 0x3c, 0x15, 0x01, 0x60, 0xc4, 0x1d, 0x02, 0x26, 0x8a, 0xb4, 0x56, 0xf2, 0x64, 0x4a, 0x86, 0x02, 0xe2, 0xb5, 0x94, 0x17, 0xf1, 0x00, 0xa0, 0x03, 0x03, 0x20, 0xcc, 0x1c, 0x56, 0xd3, 0x24, 0xc3, 0x77, 0x39, 0x59, 0x2a, 0x55, 0x80, 0x86, 0x80, 0x4f, 0x40, 0x68, 0x84, 0x8e, 0x24, 0x69, 0x72, 0x5d, 0x83, 0xa3, 0x39, 0x75, 0x46, 0xd8, 0x7a, 0x4a, 0x15, 0xa0, 0x89, 0x51, 0x2b, 0xd2, 0x5c, 0x37, 0x61, 0x67, 0xbf, 0xac, 0x3b, 0xb7, 0x72, 0xb5, 0xb2, 0xa3, 0xdf, 0x81, 0x03, 0xe7, 0x86, 0x19, 0xb8, 0x40, 0xb7, 0x25, 0x3f, 0xb4, 0x5c, 0x15, 0xa8, 0x65, 0xfa, 0x16, 0x0d, 0xd0, 0x01, 0x6f, 0xe3, 0xc6, 0x32, 0x10, 0xa1, 0x02, 0xd7, 0x93, 0x26, 0xf5, 0x72, 0xdd, 0x1a, 0xa0, 0xa5, 0xc6, 0xbe, 0x7e, 0xa7, 0xe2, 0x6b, 0x46, 0x83, 0xc1, 0x81, 0x08, 0x12, 0xd4, 0xb6, 0x6c, 0x59, 0xa4, 0xb3, 0xe7, 0xb7, 0xa0, 0x25, 0xe3, 0x1b, 0x61, 0xe0, 0xad, 0x84, 0xcc, 0x69, 0x45, 0x37, 0x29, 0xf2, 0xd6, 0xc8, 0xe8, 0x13, 0x06, 0xd6, 0x1d, 0xa8, 0xd0, 0x40, 0xad, 0x68, 0x5d, 0xad, 0x0f, 0xb8, 0x7e, 0x7d, 0x48, 0xf6, 0x01, 0xab, 0x0d, 0x04, 0x93, 0x58, 0xad, 0xfb, 0x36, 0xba, 0x75, 0x05, 0x80, 0x07, 0x6f, 0x51, 0x64, 0x9d, 0x71, 0xb9, 0x34, 0x94, 0x0b, 0x3f, 0x11, 0xc0, 0x39, 0x6f, 0x13, 0x88, 0x10, 0xc5, 0xd8, 0x7d, 0xbd, 0xbb, 0xf7, 0xef, 0xe0, 0xc3, 0x8b, 0x1f, 0x4f, 0xde, 0x7b, 0x08, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0e, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0x7f, 0x1b, 0x06, 0x9f, 0x50, 0x65, 0x58, 0x10, 0x82, 0xc3, 0xe4, 0xa8, 0x68, 0x44, 0x06, 0x9e, 0x4a, 0x1f, 0xf3, 0xf8, 0x09, 0x1c, 0x26, 0x93, 0x40, 0x94, 0x57, 0x1c, 0x10, 0xb4, 0x57, 0x6c, 0x76, 0xab, 0xeb, 0x7e, 0xad, 0x58, 0xca, 0x98, 0x8c, 0x33, 0x0c, 0xbc, 0xdf, 0xca, 0x84, 0xa2, 0xd6, 0xa6, 0x9e, 0x01, 0x20, 0x9b, 0x08, 0x0f, 0x54, 0x2c, 0x16, 0x14, 0x16, 0x76, 0x25, 0x40, 0x06, 0x09, 0x88, 0x88, 0x48, 0x7b, 0x26, 0x06, 0x04, 0x04, 0x10, 0x7e, 0x13, 0x80, 0x6b, 0x4b, 0x08, 0x89, 0x89, 0x02, 0x02, 0x09, 0x8b, 0x8c, 0x4b, 0x8f, 0x91, 0x72, 0x73, 0x95, 0x55, 0x0a, 0x0a, 0x02, 0x03, 0x0b, 0xaa, 0x09, 0x0b, 0x9a, 0x9c, 0x9e, 0x24, 0x8e, 0x10, 0x91, 0x05, 0x72, 0x14, 0x15, 0x76, 0x4f, 0xa6, 0xa6, 0xaa, 0xbd, 0x9a, 0xae, 0x9d, 0x8c, 0x06, 0xb3, 0xb4, 0xb5, 0x13, 0xb8, 0xa5, 0xbb, 0xbc, 0xbd, 0x09, 0x9a, 0x03, 0x9b, 0xaf, 0x9e, 0x06, 0x0c, 0x0b, 0xb3, 0x56, 0x05, 0xb5, 0x05, 0x79, 0xca, 0xca, 0xcc, 0xad, 0xad, 0x9b, 0xc1, 0x64, 0xd3, 0xa6, 0xda, 0x08, 0x03, 0xd8, 0x9a, 0x0e, 0xdc, 0xdd, 0xab, 0x02, 0xe0, 0xd1, 0x7b, 0xd3, 0x0d, 0x0d, 0xa7, 0xce, 0x6f, 0xcf, 0xeb, 0xec, 0xcb, 0x0b, 0xac, 0xad, 0x04, 0x03, 0xe2, 0x8d, 0x63, 0x40, 0xaf, 0x01, 0x2a, 0x7c, 0xf8, 0xf4, 0xed, 0x53, 0xa0, 0x2a, 0xd5, 0xbf, 0x37, 0x41, 0x08, 0x29, 0x09, 0x40, 0x90, 0x9e, 0x33, 0x3c, 0x09, 0x17, 0xf2, 0x53, 0x25, 0x00, 0xe0, 0x00, 0x03, 0x01, 0x1e, 0x48, 0x1c, 0x42, 0xd1, 0x81, 0xc5, 0x01, 0x01, 0xdf, 0x14, 0x3c, 0xc9, 0xa8, 0xd1, 0xa1, 0x91, 0x8e, 0x10, 0x07, 0x88, 0xdc, 0x12, 0xc0, 0x81, 0x4d, 0x07, 0xa8, 0xf0, 0x04, 0x60, 0x19, 0x61, 0x9f, 0xc3, 0x03, 0x8f, 0x0e, 0x0c, 0x80, 0xe0, 0x26, 0x12, 0xcd, 0x9b, 0x38, 0x51, 0xae, 0x7c, 0x23, 0x40, 0x5f, 0x4f, 0x53, 0x4f, 0xdf, 0x10, 0x00, 0xfa, 0xe8, 0x0d, 0x51, 0xa3, 0x47, 0x6f, 0x22, 0x44, 0xd8, 0x14, 0xaa, 0x82, 0x08, 0x60, 0x4d, 0xa5, 0x7a, 0xe4, 0xd1, 0x2a, 0x48, 0x36, 0x35, 0x4d, 0xd2, 0xdb, 0x9a, 0xcf, 0xe9, 0xd7, 0xb0, 0x5e, 0x8c, 0x20, 0x3c, 0x70, 0x40, 0xdc, 0x44, 0x7a, 0x13, 0xa2, 0xe2, 0x6b, 0xea, 0xe0, 0x69, 0x84, 0x04, 0x60, 0x13, 0xec, 0xa4, 0xfb, 0x46, 0xe8, 0x00, 0xba, 0x76, 0x95, 0x18, 0xb8, 0xc0, 0xb8, 0xe7, 0x41, 0xbe, 0x60, 0x7b, 0x0a, 0xd6, 0xb9, 0x13, 0x02, 0xe1, 0xc2, 0x23, 0xc7, 0x45, 0xa8, 0x10, 0x16, 0xe9, 0xba, 0xc8, 0x2a, 0x4d, 0xe0, 0xa1, 0x4b, 0x3a, 0xf3, 0xb8, 0x3c, 0xd3, 0x0e, 0x44, 0x90, 0x10, 0xb9, 0x67, 0x04, 0xd3, 0x22, 0x46, 0x1f, 0xc0, 0x0a, 0x6b, 0x09, 0x5d, 0x09, 0xac, 0x9f, 0xc2, 0x8e, 0x4d, 0xd7, 0x0a, 0xed, 0xda, 0x1f, 0x0c, 0xd0, 0x3b, 0x50, 0xa1, 0x01, 0xd8, 0xdd, 0x23, 0xac, 0xf8, 0x46, 0xbe, 0x45, 0x78, 0x03, 0xba, 0x05, 0x99, 0x27, 0x0f, 0x40, 0x4f, 0x7a, 0x12, 0xe7, 0x05, 0x0a, 0x36, 0xb0, 0x9e, 0xbc, 0x3a, 0xf0, 0xe0, 0x40, 0xb4, 0x37, 0x48, 0x7c, 0x87, 0xbb, 0x62, 0x43, 0x7a, 0xbe, 0xab, 0x5f, 0xcf, 0xbe, 0x45, 0x08, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x2e, 0x00, 0x1f, 0x00, 0x2c, 0x28, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0x40, 0x83, 0x01, 0x48, 0x34, 0x19, 0x16, 0x84, 0x61, 0xb1, 0x78, 0x44, 0x2a, 0x03, 0xd0, 0x65, 0xaf, 0x99, 0xfc, 0x04, 0x0e, 0x93, 0x49, 0x40, 0xba, 0x3b, 0x0e, 0x08, 0x5b, 0x6c, 0x56, 0xcb, 0xcd, 0x79, 0xc1, 0xd7, 0x2c, 0x85, 0x5c, 0xbe, 0x19, 0x06, 0x5f, 0x70, 0x65, 0x42, 0x59, 0x6f, 0xdb, 0xee, 0x78, 0xa0, 0x62, 0xb1, 0x50, 0x2c, 0x77, 0x78, 0x35, 0x06, 0x04, 0x04, 0x10, 0x7b, 0x13, 0x7d, 0x6c, 0x82, 0x34, 0x84, 0x86, 0x88, 0x74, 0x8b, 0x8c, 0x32, 0x84, 0x10, 0x87, 0x05, 0x73, 0x14, 0x15, 0x81, 0x1f, 0x42, 0x9e, 0x4a, 0x93, 0x28, 0x06, 0x96, 0x97, 0x98, 0x13, 0x9b, 0x9d, 0x42, 0x08, 0x09, 0xac, 0xac, 0x42, 0xa1, 0x46, 0x0c, 0x0b, 0x96, 0x57, 0x05, 0x98, 0x05, 0x01, 0x06, 0x0a, 0xbb, 0x0a, 0x02, 0x03, 0x0b, 0xc0, 0xae, 0xb0, 0x24, 0x06, 0x0c, 0xbb, 0xb8, 0x08, 0x03, 0xb6, 0x02, 0x02, 0x0e, 0xbc, 0xbb, 0xc0, 0xc0, 0xcc, 0x09, 0xa0, 0xa1, 0xc5, 0x0d, 0x0d, 0xbd, 0xcc, 0x70, 0x70, 0xcd, 0xcf, 0x0a, 0xd1, 0xd2, 0x02, 0xd4, 0xc3, 0xd7, 0xd8, 0xbe, 0xdc, 0xdc, 0xce, 0xdf, 0xd1, 0xcc, 0xd3, 0xd5, 0x78, 0x01, 0x0c, 0xd8, 0x0d, 0xdb, 0x50, 0x01, 0xea, 0xdf, 0xd0, 0x0b, 0xdb, 0xe3, 0xe4, 0x8c, 0xf2, 0x1c, 0x9c, 0x1b, 0x10, 0x40, 0x01, 0x94, 0x7c, 0xfa, 0xda, 0xf1, 0x1b, 0x07, 0xaf, 0x4c, 0x00, 0x07, 0x10, 0x1d, 0xf8, 0xba, 0x87, 0x0f, 0xce, 0xba, 0x84, 0xcc, 0x16, 0xfe, 0x13, 0xf4, 0x30, 0xe2, 0xc4, 0x83, 0xdd, 0x2e, 0xb2, 0xfb, 0xc5, 0x8f, 0xc0, 0x80, 0x8d, 0x6d, 0xb9, 0x3a, 0x42, 0x4c, 0x97, 0xce, 0x5b, 0x04, 0x7d, 0x70, 0xa4, 0x99, 0x1c, 0x60, 0x80, 0x13, 0x97, 0x8e, 0xf4, 0x58, 0x0e, 0x68, 0xe6, 0x20, 0xc2, 0xcb, 0x6f, 0x24, 0x4b, 0xc2, 0x31, 0xf0, 0xc0, 0xe6, 0x92, 0x00, 0xd8, 0x26, 0xfc, 0x6c, 0x09, 0xd1, 0xe7, 0xcf, 0xa5, 0x24, 0x09, 0x08, 0x98, 0x49, 0xd4, 0xe8, 0x12, 0x03, 0x17, 0xb2, 0xbe, 0x44, 0xc7, 0xd3, 0xa9, 0xd7, 0x5d, 0x24, 0x0f, 0x14, 0x3a, 0x30, 0x00, 0x42, 0x55, 0x41, 0x06, 0x22, 0x54, 0xf0, 0xa9, 0x20, 0x22, 0x44, 0x05, 0x5e, 0x9d, 0x2a, 0xf8, 0xb2, 0x40, 0x6c, 0x21, 0x38, 0x66, 0xad, 0x4a, 0xa9, 0x29, 0x84, 0xc1, 0x81, 0x08, 0x12, 0xbe, 0xbe, 0x94, 0x3b, 0xe0, 0x80, 0xdd, 0x74, 0x66, 0x87, 0x89, 0x30, 0x60, 0x58, 0x42, 0xe0, 0xa7, 0x5f, 0x75, 0x1a, 0x3e, 0xd0, 0x70, 0x92, 0x01, 0x6c, 0x07, 0x2a, 0x34, 0x88, 0xeb, 0xb3, 0x01, 0xcb, 0xc9, 0x86, 0x2b, 0xa3, 0xc5, 0x7c, 0x80, 0x5e, 0x83, 0x4f, 0x6f, 0xb8, 0x81, 0x0e, 0xad, 0xb8, 0x13, 0xb6, 0x02, 0xa6, 0x4f, 0xbb, 0x6e, 0xc0, 0xc0, 0xef, 0x6a, 0xc3, 0x7a, 0xd1, 0x0a, 0x89, 0x3d, 0xe4, 0x32, 0xbd, 0xda, 0xc0, 0x83, 0x8b, 0xb6, 0x8c, 0x7a, 0x31, 0x6a, 0x8a, 0xc8, 0x5b, 0x2b, 0x87, 0x11, 0x02, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x0d, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0x93, 0x86, 0x71, 0xef, 0xbb, 0xb1, 0x10, 0x3a, 0x9e, 0x30, 0xe6, 0xfb, 0x05, 0x03, 0xc8, 0xa1, 0x32, 0x55, 0x04, 0x7e, 0x02, 0x87, 0xc9, 0x24, 0xb0, 0xac, 0xe2, 0x16, 0x03, 0x02, 0x35, 0x2a, 0x9d, 0x5a, 0xad, 0xbe, 0x2c, 0x92, 0x4b, 0xf1, 0x7e, 0x97, 0x86, 0x41, 0x56, 0x5b, 0x99, 0x50, 0xca, 0xd4, 0x33, 0x7a, 0x1d, 0xa8, 0x58, 0x2c, 0x14, 0x4b, 0x5c, 0x3e, 0x34, 0x10, 0x08, 0x10, 0x75, 0x13, 0x77, 0x66, 0x7c, 0x42, 0x7e, 0x80, 0x82, 0x6e, 0x85, 0x86, 0x3d, 0x80, 0x81, 0x05, 0x6d, 0x14, 0x15, 0x7b, 0x8d, 0x37, 0x06, 0x10, 0x99, 0x01, 0x05, 0x91, 0x13, 0x94, 0x96, 0x3d, 0x0c, 0x0b, 0x9a, 0x07, 0x9c, 0x15, 0x05, 0x01, 0x41, 0x1f, 0x39, 0xac, 0xaa, 0xa0, 0x2a, 0x06, 0x0c, 0x0a, 0x0a, 0xa8, 0x08, 0x03, 0x9c, 0x02, 0x02, 0x0e, 0xac, 0x08, 0x09, 0xbe, 0xbe, 0x39, 0xaf, 0x4c, 0x0c, 0x0d, 0x0d, 0x0a, 0xb9, 0x02, 0x6a, 0x6a, 0xba, 0xb3, 0xb3, 0xc9, 0x0b, 0xd0, 0xc0, 0xc2, 0x27, 0xb1, 0xc5, 0x0d, 0xc9, 0xca, 0xca, 0x0e, 0xcd, 0xb3, 0xd0, 0xd0, 0xb9, 0x09, 0xae, 0xd3, 0x01, 0xc4, 0xc5, 0xb9, 0x03, 0x48, 0x01, 0xda, 0xdc, 0x0a, 0xde, 0xdf, 0x02, 0xe1, 0xd3, 0x23, 0xe4, 0x0e, 0xe6, 0xe8, 0x0a, 0x48, 0xeb, 0xec, 0xde, 0xc8, 0xf0, 0xe2, 0xa0, 0x01, 0x1c, 0x08, 0x74, 0x90, 0x2c, 0x9d, 0x3a, 0x35, 0xdb, 0xd8, 0xb5, 0x5b, 0x70, 0x0e, 0x5e, 0xbc, 0x71, 0x03, 0x09, 0xa2, 0xcb, 0xb7, 0x2c, 0xe1, 0xbe, 0x6f, 0x0c, 0xfd, 0xc9, 0x0b, 0x38, 0x30, 0x5b, 0x36, 0x66, 0x0a, 0xdb, 0xe5, 0xca, 0xf8, 0x50, 0x18, 0x47, 0x6b, 0x1e, 0xc9, 0x07, 0xe8, 0xb2, 0xb8, 0x6f, 0xc0, 0x37, 0x02, 0x03, 0x4a, 0x02, 0x2c, 0x36, 0x21, 0xc2, 0xac, 0x8f, 0x02, 0x6d, 0xda, 0x64, 0xa7, 0xe6, 0xa5, 0x1a, 0x03, 0x95, 0x2c, 0x19, 0xb8, 0x40, 0xd4, 0x26, 0xb6, 0x95, 0x11, 0x92, 0xee, 0xe4, 0xe6, 0xd2, 0xe7, 0x80, 0x34, 0x41, 0x0d, 0x19, 0x88, 0x50, 0x21, 0xa9, 0x82, 0x88, 0xdb, 0x94, 0xee, 0xdc, 0xd9, 0xf3, 0x87, 0x00, 0x98, 0x4f, 0xd1, 0x4d, 0x03, 0x9a, 0x83, 0xc1, 0x81, 0x08, 0x12, 0xb4, 0x2a, 0xd0, 0xca, 0x15, 0xda, 0x81, 0x3f, 0x07, 0x06, 0x40, 0x80, 0x2a, 0x6f, 0x84, 0x81, 0x03, 0x07, 0x24, 0xa4, 0xdd, 0xaa, 0x36, 0xcb, 0x82, 0xb7, 0x7f, 0xd4, 0xcc, 0x0d, 0x54, 0x57, 0x84, 0x81, 0x62, 0x07, 0x2a, 0x34, 0x50, 0xab, 0x54, 0xc1, 0x00, 0xbc, 0x81, 0x95, 0xcd, 0x8d, 0xfa, 0xea, 0x70, 0x03, 0xbc, 0xd6, 0x1a, 0x4c, 0x4d, 0x1a, 0xc0, 0x66, 0xca, 0xc7, 0x07, 0xfe, 0x8d, 0x6b, 0x50, 0x20, 0xb3, 0x66, 0x83, 0xe9, 0xb2, 0xc5, 0x05, 0x2d, 0x5a, 0xd8, 0xe1, 0x00, 0x99, 0x45, 0xe7, 0xc3, 0x9b, 0xad, 0xb5, 0xc9, 0x06, 0xb0, 0x35, 0xb7, 0x4e, 0x47, 0x1b, 0xef, 0x01, 0xca, 0x1b, 0x9f, 0x50, 0x06, 0x4a, 0xce, 0xac, 0x6f, 0xdf, 0xc0, 0x0b, 0x9f, 0xc8, 0x5d, 0x8c, 0x81, 0xf3, 0xe7, 0x49, 0x94, 0xbf, 0x68, 0x45, 0x3c, 0x9d, 0xf4, 0xeb, 0xd8, 0x69, 0x84, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0e, 0x00, 0x1f, 0x00, 0x2c, 0x0b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0xfc, 0x1a, 0x86, 0x6c, 0xdf, 0xae, 0xb1, 0x10, 0x35, 0xee, 0xff, 0x22, 0xdd, 0xae, 0x17, 0x28, 0x02, 0x8f, 0xb3, 0xc5, 0xf0, 0x13, 0x38, 0x4c, 0x26, 0x01, 0xa4, 0x54, 0xa5, 0x1b, 0x10, 0xa2, 0xce, 0x27, 0x74, 0xca, 0x2d, 0x55, 0xaf, 0xcd, 0x27, 0x65, 0xdb, 0x2d, 0x1b, 0x06, 0xd6, 0x6b, 0x65, 0x42, 0x19, 0x47, 0xcb, 0xe6, 0x74, 0xa0, 0x62, 0xb1, 0x50, 0x2c, 0x6f, 0x54, 0x91, 0x06, 0x8f, 0x19, 0x08, 0x04, 0x10, 0x73, 0x13, 0x75, 0x64, 0x24, 0x34, 0x34, 0x09, 0x8a, 0x09, 0x3d, 0x7d, 0x2d, 0x7f, 0x81, 0x83, 0x6c, 0x86, 0x1f, 0x06, 0x08, 0x8b, 0x8b, 0x02, 0x02, 0x8c, 0x8e, 0x8f, 0x81, 0x82, 0x05, 0x6b, 0x14, 0x15, 0x79, 0x01, 0x0a, 0x0a, 0x02, 0x03, 0x4a, 0x0b, 0x09, 0x0b, 0x9a, 0x9c, 0x9d, 0x54, 0x10, 0xb3, 0x01, 0x05, 0xa1, 0x13, 0xa4, 0x22, 0xa6, 0xa7, 0x0a, 0xab, 0x4a, 0x9a, 0xaf, 0x8d, 0xb1, 0x5e, 0x0c, 0x0b, 0xb4, 0x07, 0xb6, 0x15, 0x05, 0x01, 0x06, 0xbb, 0xbc, 0xbe, 0x09, 0x9a, 0x03, 0x9b, 0xb0, 0xc3, 0x87, 0x0c, 0xa7, 0xcb, 0x08, 0x03, 0xb6, 0x9a, 0x0e, 0xbc, 0xe0, 0xab, 0xad, 0x02, 0xae, 0x9b, 0xc2, 0xd6, 0x06, 0x0c, 0x0d, 0x0d, 0xa8, 0xd2, 0x68, 0xd3, 0xdf, 0xe0, 0xcf, 0x4a, 0xd1, 0xe5, 0xd5, 0xd6, 0x95, 0xea, 0xeb, 0xa9, 0xef, 0xef, 0xf1, 0xf2, 0xbd, 0xe8, 0xfd, 0x22, 0x30, 0xe0, 0x5e, 0xac, 0x00, 0xfa, 0x1a, 0xb8, 0xeb, 0x37, 0xe0, 0x1f, 0x40, 0x25, 0xaa, 0x5c, 0x11, 0x1c, 0xd0, 0x0c, 0x1f, 0x42, 0x07, 0xfb, 0xd0, 0x14, 0xe9, 0xe7, 0x50, 0x9e, 0x2f, 0x89, 0x68, 0xce, 0xe4, 0xe9, 0x14, 0xc0, 0x81, 0x49, 0x07, 0xa9, 0xd6, 0x36, 0x72, 0x3c, 0x15, 0x01, 0x60, 0xc4, 0x1d, 0x02, 0x26, 0x8a, 0xb4, 0x56, 0xf2, 0x64, 0x4a, 0x86, 0x02, 0xe2, 0xb5, 0x94, 0x17, 0xf1, 0x00, 0xa0, 0x03, 0x03, 0x20, 0xcc, 0x1c, 0x56, 0xd3, 0x24, 0xc3, 0x77, 0x39, 0x59, 0x2a, 0x55, 0x80, 0x86, 0x80, 0x4f, 0x40, 0x68, 0x84, 0x8e, 0x24, 0x69, 0x72, 0x5d, 0x83, 0xa3, 0x39, 0x75, 0x46, 0xd8, 0x7a, 0x4a, 0x15, 0xa0, 0x89, 0x51, 0x2b, 0xd2, 0x5c, 0x37, 0x61, 0x67, 0xbf, 0xac, 0x3b, 0xb7, 0x72, 0xb5, 0xb2, 0xa3, 0xdf, 0x81, 0x03, 0xe7, 0x86, 0x19, 0xb8, 0x40, 0xb7, 0x25, 0x3f, 0xb4, 0x5c, 0x15, 0xa8, 0x65, 0xfa, 0x16, 0x0d, 0xd0, 0x01, 0x6f, 0xe3, 0xc6, 0x32, 0x10, 0xa1, 0x02, 0xd7, 0x93, 0x26, 0xf5, 0x72, 0xdd, 0x1a, 0xa0, 0xa5, 0xc6, 0xbe, 0x7e, 0xa7, 0xe2, 0x6b, 0x46, 0x83, 0xc1, 0x81, 0x08, 0x12, 0xd4, 0xb6, 0x6c, 0x59, 0xa4, 0xb3, 0xe7, 0xb7, 0xa0, 0x25, 0xe3, 0x1b, 0x61, 0xe0, 0xad, 0x84, 0xcc, 0x69, 0x45, 0x37, 0x29, 0xf2, 0xd6, 0xc8, 0xe8, 0x13, 0x06, 0xd6, 0x1d, 0xa8, 0xd0, 0x40, 0xad, 0x68, 0x5d, 0xad, 0x0f, 0xb8, 0x7e, 0x7d, 0x48, 0xf6, 0x01, 0xab, 0x0d, 0x04, 0x93, 0x58, 0xad, 0xfb, 0x36, 0xba, 0x75, 0x05, 0x80, 0x07, 0x6f, 0x51, 0x64, 0x9d, 0x71, 0xb9, 0x34, 0x94, 0x0b, 0x3f, 0x11, 0xc0, 0x39, 0x6f, 0x13, 0x88, 0x10, 0xc5, 0xd8, 0x7d, 0xbd, 0xbb, 0xf7, 0xef, 0xe0, 0xc3, 0x8b, 0x1f, 0x4f, 0xde, 0x7b, 0x08, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0e, 0x00, 0x1f, 0x00, 0x2c, 0x09, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0x7f, 0x1b, 0x06, 0x9f, 0x50, 0x65, 0x58, 0x10, 0x82, 0xc3, 0xe4, 0xa8, 0x68, 0x44, 0x06, 0x9e, 0x4a, 0x1f, 0xf3, 0xf8, 0x09, 0x1c, 0x26, 0x93, 0x40, 0x94, 0x57, 0x1c, 0x10, 0xb4, 0x57, 0x6c, 0x76, 0xab, 0xeb, 0x7e, 0xad, 0x58, 0xca, 0x98, 0x8c, 0x33, 0x0c, 0xbc, 0xdf, 0xca, 0x84, 0xa2, 0xd6, 0xa6, 0x9e, 0x01, 0x20, 0x9b, 0x08, 0x0f, 0x54, 0x2c, 0x16, 0x14, 0x16, 0x76, 0x25, 0x40, 0x06, 0x09, 0x88, 0x88, 0x48, 0x7b, 0x26, 0x06, 0x04, 0x04, 0x10, 0x7e, 0x13, 0x80, 0x6b, 0x4b, 0x08, 0x89, 0x89, 0x02, 0x02, 0x09, 0x8b, 0x8c, 0x4b, 0x8f, 0x91, 0x72, 0x73, 0x95, 0x55, 0x0a, 0x0a, 0x02, 0x03, 0x0b, 0xaa, 0x09, 0x0b, 0x9a, 0x9c, 0x9e, 0x24, 0x8e, 0x10, 0x91, 0x05, 0x72, 0x14, 0x15, 0x76, 0x4f, 0xa6, 0xa6, 0xaa, 0xbd, 0x9a, 0xae, 0x9d, 0x8c, 0x06, 0xb3, 0xb4, 0xb5, 0x13, 0xb8, 0xa5, 0xbb, 0xbc, 0xbd, 0x09, 0x9a, 0x03, 0x9b, 0xaf, 0x9e, 0x06, 0x0c, 0x0b, 0xb3, 0x56, 0x05, 0xb5, 0x05, 0x79, 0xca, 0xca, 0xcc, 0xad, 0xad, 0x9b, 0xc1, 0x64, 0xd3, 0xa6, 0xda, 0x08, 0x03, 0xd8, 0x9a, 0x0e, 0xdc, 0xdd, 0xab, 0x02, 0xe0, 0xd1, 0x7b, 0xd3, 0x0d, 0x0d, 0xa7, 0xce, 0x6f, 0xcf, 0xeb, 0xec, 0xcb, 0x0b, 0xac, 0xad, 0x04, 0x03, 0xe2, 0x8d, 0x63, 0x40, 0xaf, 0x01, 0x2a, 0x7c, 0xf8, 0xf4, 0xed, 0x53, 0xa0, 0x2a, 0xd5, 0xbf, 0x37, 0x41, 0x08, 0x29, 0x09, 0x40, 0x90, 0x9e, 0x33, 0x3c, 0x09, 0x17, 0xf2, 0x53, 0x25, 0x00, 0xe0, 0x00, 0x03, 0x01, 0x1e, 0x48, 0x1c, 0x42, 0xd1, 0x81, 0xc5, 0x01, 0x01, 0xdf, 0x14, 0x3c, 0xc9, 0xa8, 0xd1, 0xa1, 0x91, 0x8e, 0x10, 0x07, 0x88, 0xdc, 0x12, 0xc0, 0x81, 0x4d, 0x07, 0xa8, 0xf0, 0x04, 0x60, 0x19, 0x61, 0x9f, 0xc3, 0x03, 0x8f, 0x0e, 0x0c, 0x80, 0xe0, 0x26, 0x12, 0xcd, 0x9b, 0x38, 0x51, 0xae, 0x7c, 0x23, 0x40, 0x5f, 0x4f, 0x53, 0x4f, 0xdf, 0x10, 0x00, 0xfa, 0xe8, 0x0d, 0x51, 0xa3, 0x47, 0x6f, 0x22, 0x44, 0xd8, 0x14, 0xaa, 0x82, 0x08, 0x60, 0x4d, 0xa5, 0x7a, 0xe4, 0xd1, 0x2a, 0x48, 0x36, 0x35, 0x4d, 0xd2, 0xdb, 0x9a, 0xcf, 0xe9, 0xd7, 0xb0, 0x5e, 0x8c, 0x20, 0x3c, 0x70, 0x40, 0xdc, 0x44, 0x7a, 0x13, 0xa2, 0xe2, 0x6b, 0xea, 0xe0, 0x69, 0x84, 0x04, 0x60, 0x13, 0xec, 0xa4, 0xfb, 0x46, 0xe8, 0x00, 0xba, 0x76, 0x95, 0x18, 0xb8, 0xc0, 0xb8, 0xe7, 0x41, 0xbe, 0x60, 0x7b, 0x0a, 0xd6, 0xb9, 0x13, 0x02, 0xe1, 0xc2, 0x23, 0xc7, 0x45, 0xa8, 0x10, 0x16, 0xe9, 0xba, 0xc8, 0x2a, 0x4d, 0xe0, 0xa1, 0x4b, 0x3a, 0xf3, 0xb8, 0x3c, 0xd3, 0x0e, 0x44, 0x90, 0x10, 0xb9, 0x67, 0x04, 0xd3, 0x22, 0x46, 0x1f, 0xc0, 0x0a, 0x6b, 0x09, 0x5d, 0x09, 0xac, 0x9f, 0xc2, 0x8e, 0x4d, 0xd7, 0x0a, 0xed, 0xda, 0x1f, 0x0c, 0xd0, 0x3b, 0x50, 0xa1, 0x01, 0xd8, 0xdd, 0x23, 0xac, 0xf8, 0x46, 0xbe, 0x45, 0x78, 0x03, 0xba, 0x05, 0x99, 0x27, 0x0f, 0x40, 0x4f, 0x7a, 0x12, 0xe7, 0x05, 0x0a, 0x36, 0xb0, 0x9e, 0xbc, 0x3a, 0xf0, 0xe0, 0x40, 0xb4, 0x37, 0x48, 0x7c, 0x87, 0xbb, 0x62, 0x43, 0x7a, 0xbe, 0xab, 0x5f, 0xcf, 0xbe, 0x45, 0x08, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x2e, 0x00, 0x1f, 0x00, 0x2c, 0x07, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0x7c, 0xef, 0xff, 0x40, 0x83, 0x01, 0x48, 0x34, 0x19, 0x16, 0x84, 0x61, 0xb1, 0x78, 0x44, 0x2a, 0x03, 0xd0, 0x65, 0xaf, 0x99, 0xfc, 0x04, 0x0e, 0x93, 0x49, 0x40, 0xba, 0x3b, 0x0e, 0x08, 0x5b, 0x6c, 0x56, 0xcb, 0xcd, 0x79, 0xc1, 0xd7, 0x2c, 0x85, 0x5c, 0xbe, 0x19, 0x06, 0x5f, 0x70, 0x65, 0x42, 0x59, 0x6f, 0xdb, 0xee, 0x78, 0xa0, 0x62, 0xb1, 0x50, 0x2c, 0x77, 0x78, 0x35, 0x06, 0x04, 0x04, 0x10, 0x7b, 0x13, 0x7d, 0x6c, 0x82, 0x34, 0x84, 0x86, 0x88, 0x74, 0x8b, 0x8c, 0x32, 0x84, 0x10, 0x87, 0x05, 0x73, 0x14, 0x15, 0x81, 0x1f, 0x42, 0x9e, 0x4a, 0x93, 0x28, 0x06, 0x96, 0x97, 0x98, 0x13, 0x9b, 0x9d, 0x42, 0x08, 0x09, 0xac, 0xac, 0x42, 0xa1, 0x46, 0x0c, 0x0b, 0x96, 0x57, 0x05, 0x98, 0x05, 0x01, 0x06, 0x0a, 0xbb, 0x0a, 0x02, 0x03, 0x0b, 0xc0, 0xae, 0xb0, 0x24, 0x06, 0x0c, 0xbb, 0xb8, 0x08, 0x03, 0xb6, 0x02, 0x02, 0x0e, 0xbc, 0xbb, 0xc0, 0xc0, 0xcc, 0x09, 0xa0, 0xa1, 0xc5, 0x0d, 0x0d, 0xbd, 0xcc, 0x70, 0x70, 0xcd, 0xcf, 0x0a, 0xd1, 0xd2, 0x02, 0xd4, 0xc3, 0xd7, 0xd8, 0xbe, 0xdc, 0xdc, 0xce, 0xdf, 0xd1, 0xcc, 0xd3, 0xd5, 0x78, 0x01, 0x0c, 0xd8, 0x0d, 0xdb, 0x50, 0x01, 0xea, 0xdf, 0xd0, 0x0b, 0xdb, 0xe3, 0xe4, 0x8c, 0xf2, 0x1c, 0x9c, 0x1b, 0x10, 0x40, 0x01, 0x94, 0x7c, 0xfa, 0xda, 0xf1, 0x1b, 0x07, 0xaf, 0x4c, 0x00, 0x07, 0x10, 0x1d, 0xf8, 0xba, 0x87, 0x0f, 0xce, 0xba, 0x84, 0xcc, 0x16, 0xfe, 0x13, 0xf4, 0x30, 0xe2, 0xc4, 0x83, 0xdd, 0x2e, 0xb2, 0xfb, 0xc5, 0x8f, 0xc0, 0x80, 0x8d, 0x6d, 0xb9, 0x3a, 0x42, 0x4c, 0x97, 0xce, 0x5b, 0x04, 0x7d, 0x70, 0xa4, 0x99, 0x1c, 0x60, 0x80, 0x13, 0x97, 0x8e, 0xf4, 0x58, 0x0e, 0x68, 0xe6, 0x20, 0xc2, 0xcb, 0x6f, 0x24, 0x4b, 0xc2, 0x31, 0xf0, 0xc0, 0xe6, 0x92, 0x00, 0xd8, 0x26, 0xfc, 0x6c, 0x09, 0xd1, 0xe7, 0xcf, 0xa5, 0x24, 0x09, 0x08, 0x98, 0x49, 0xd4, 0xe8, 0x12, 0x03, 0x17, 0xb2, 0xbe, 0x44, 0xc7, 0xd3, 0xa9, 0xd7, 0x5d, 0x24, 0x0f, 0x14, 0x3a, 0x30, 0x00, 0x42, 0x55, 0x41, 0x06, 0x22, 0x54, 0xf0, 0xa9, 0x20, 0x22, 0x44, 0x05, 0x5e, 0x9d, 0x2a, 0xf8, 0xb2, 0x40, 0x6c, 0x21, 0x38, 0x66, 0xad, 0x4a, 0xa9, 0x29, 0x84, 0xc1, 0x81, 0x08, 0x12, 0xbe, 0xbe, 0x94, 0x3b, 0xe0, 0x80, 0xdd, 0x74, 0x66, 0x87, 0x89, 0x30, 0x60, 0x58, 0x42, 0xe0, 0xa7, 0x5f, 0x75, 0x1a, 0x3e, 0xd0, 0x70, 0x92, 0x01, 0x6c, 0x07, 0x2a, 0x34, 0x88, 0xeb, 0xb3, 0x01, 0xcb, 0xc9, 0x86, 0x2b, 0xa3, 0xc5, 0x7c, 0x80, 0x5e, 0x83, 0x4f, 0x6f, 0xb8, 0x81, 0x0e, 0xad, 0xb8, 0x13, 0xb6, 0x02, 0xa6, 0x4f, 0xbb, 0x6e, 0xc0, 0xc0, 0xef, 0x6a, 0xc3, 0x7a, 0xd1, 0x0a, 0x89, 0x3d, 0xe4, 0x32, 0xbd, 0xda, 0xc0, 0x83, 0x8b, 0xb6, 0x8c, 0x7a, 0x31, 0x6a, 0x8a, 0xc8, 0x5b, 0x2b, 0x87, 0x11, 0x02, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x03, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0x6a, 0x18, 0x79, 0x4f, 0x1b, 0x0b, 0x02, 0xcf, 0x47, 0x6c, 0x01, 0x83, 0xc3, 0x80, 0xb2, 0xc8, 0x2c, 0x1d, 0x85, 0x9f, 0xc0, 0x61, 0x32, 0x09, 0x34, 0xaf, 0xc0, 0x01, 0xc1, 0x3a, 0xa5, 0x56, 0xaf, 0xcc, 0xec, 0x56, 0x4a, 0xa5, 0x7c, 0xc1, 0x44, 0xc3, 0x40, 0xbb, 0xad, 0x4c, 0x28, 0x66, 0x2b, 0x3a, 0xcd, 0x0e, 0x54, 0x2c, 0x16, 0x8a, 0x45, 0x3e, 0xef, 0x19, 0x08, 0x04, 0x10, 0x76, 0x13, 0x78, 0x67, 0x7d, 0x39, 0x7f, 0x81, 0x83, 0x6f, 0x86, 0x87, 0x37, 0x7f, 0x10, 0x82, 0x05, 0x6e, 0x14, 0x15, 0x7c, 0x8e, 0x36, 0x06, 0x91, 0x92, 0x93, 0x13, 0x96, 0x98, 0x8f, 0x0c, 0x0b, 0x91, 0x52, 0x05, 0x93, 0x05, 0x01, 0x06, 0x97, 0xa0, 0x30, 0x06, 0x0c, 0x0a, 0x0a, 0xa8, 0x08, 0x03, 0xa6, 0x02, 0x02, 0x0e, 0x0a, 0xa9, 0x3b, 0x43, 0xac, 0x2b, 0xae, 0x0d, 0x0d, 0x0a, 0xb6, 0x02, 0x6b, 0x6b, 0xb7, 0xb0, 0x09, 0xc9, 0x09, 0x3b, 0xbd, 0x2a, 0xbf, 0xc0, 0xc4, 0xc5, 0xc5, 0xb8, 0x0a, 0x03, 0x0b, 0xd7, 0xc9, 0xbc, 0xcd, 0x24, 0x01, 0x0c, 0xc0, 0x0d, 0xb6, 0x03, 0x4a, 0x01, 0xd3, 0xb0, 0xd7, 0xd7, 0xb6, 0xcb, 0xdb, 0x25, 0xdd, 0x0e, 0xd0, 0xe2, 0xb9, 0xe4, 0x6b, 0xd4, 0xe7, 0xe8, 0x02, 0xea, 0xeb, 0x22, 0x01, 0x0e, 0xfc, 0x0e, 0xc4, 0xe3, 0xf2, 0x06, 0x50, 0x53, 0x70, 0x6e, 0xd8, 0x3d, 0x6d, 0xcd, 0xf6, 0xf5, 0xfb, 0xa7, 0xa4, 0xd8, 0x31, 0x58, 0x04, 0x17, 0x84, 0xbb, 0x87, 0x6f, 0x9b, 0x42, 0x7e, 0xd2, 0xa4, 0x1d, 0x8b, 0x60, 0x0e, 0x9d, 0xc4, 0x83, 0xf9, 0x14, 0x7e, 0xcb, 0x38, 0xe0, 0x96, 0x83, 0x08, 0x1c, 0xbf, 0xcd, 0xd9, 0xfa, 0x98, 0xa0, 0xc1, 0x2a, 0x50, 0x01, 0x80, 0x4d, 0x48, 0xa9, 0x91, 0x1f, 0xca, 0x94, 0x04, 0xad, 0x49, 0x24, 0x30, 0xa0, 0x62, 0x33, 0x03, 0x17, 0x82, 0x72, 0x8c, 0x66, 0xf2, 0x26, 0xce, 0x35, 0xe8, 0x78, 0x0e, 0x50, 0xb5, 0xce, 0x40, 0x84, 0x0a, 0x28, 0x15, 0xf4, 0xe3, 0xa7, 0xc0, 0x28, 0x2c, 0xa4, 0x49, 0xd7, 0x18, 0x78, 0xf0, 0x12, 0x93, 0xaa, 0x1d, 0x0c, 0x0e, 0x44, 0x90, 0x60, 0x95, 0x26, 0x56, 0x02, 0x02, 0x94, 0x6e, 0xed, 0xda, 0xcb, 0xc0, 0x81, 0x03, 0x12, 0xc8, 0xa6, 0x8c, 0x8a, 0xf5, 0x00, 0xa0, 0x03, 0x03, 0x20, 0xac, 0xcd, 0x37, 0xc2, 0x00, 0xb0, 0x03, 0x15, 0x1a, 0x18, 0x8d, 0xb0, 0x86, 0xc0, 0x02, 0xbb, 0x80, 0xd6, 0xe8, 0x65, 0xdb, 0x2b, 0xe6, 0x81, 0x98, 0xc0, 0x74, 0x15, 0x7b, 0x9b, 0xb8, 0x98, 0x5e, 0xbe, 0x23, 0x62, 0xe6, 0xfa, 0x36, 0x4e, 0x0d, 0xc9, 0x01, 0x6f, 0x0f, 0x20, 0x0c, 0x19, 0x0c, 0xb2, 0x1c, 0x35, 0x01, 0xd7, 0x84, 0x7e, 0x3b, 0x7a, 0x5d, 0xcc, 0x54, 0xc0, 0x78, 0x8c, 0x23, 0xac, 0x7a, 0xb5, 0x68, 0xcc, 0xdc, 0xac, 0x8c, 0xd3, 0x87, 0xf2, 0x81, 0xed, 0xd0, 0x8c, 0x71, 0x67, 0x06, 0xc6, 0xa0, 0xb8, 0x71, 0xe3, 0xad, 0x85, 0x3b, 0xd9, 0x01, 0xb0, 0xb9, 0xf2, 0xe7, 0x2a, 0x42, 0x00, 0x00, 0x21, 0xf9, 0x04, 0x09, 0x0c, 0x00, 0x1f, 0x00, 0x2c, 0x02, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x28, 0x00, 0x00, 0x05, 0xfe, 0xe0, 0x27, 0x8e, 0x64, 0x69, 0x9e, 0x68, 0xaa, 0xae, 0x6c, 0xeb, 0xbe, 0x70, 0x2c, 0xcf, 0x74, 0x6d, 0xdf, 0x78, 0xae, 0xef, 0xb2, 0x61, 0xf0, 0x40, 0x97, 0x81, 0xb0, 0xf8, 0x05, 0x8f, 0xa3, 0x80, 0x52, 0x34, 0x5c, 0x14, 0x91, 0xc7, 0xc0, 0x64, 0x72, 0x08, 0x7c, 0x9a, 0x4f, 0x28, 0x4f, 0x3a, 0xa5, 0x7e, 0x02, 0x84, 0x41, 0x56, 0xab, 0x93, 0x52, 0xa6, 0x55, 0xb0, 0xd8, 0x48, 0xce, 0x99, 0xcf, 0x15, 0x70, 0x78, 0xc0, 0x6e, 0xdf, 0x02, 0x16, 0x8a, 0xc5, 0x12, 0x27, 0x84, 0xeb, 0x76, 0x31, 0x4a, 0x83, 0x52, 0x7b, 0x13, 0x71, 0x10, 0x7e, 0x80, 0x81, 0x2d, 0x4a, 0x02, 0x8f, 0x8f, 0x66, 0x53, 0x88, 0x8a, 0x8c, 0x30, 0x8e, 0x90, 0x02, 0x0f, 0x01, 0x15, 0x70, 0x05, 0x01, 0x10, 0x89, 0x8b, 0x96, 0x28, 0x06, 0x09, 0x99, 0x8f, 0x0a, 0x9c, 0x87, 0x05, 0x9f, 0xa1, 0x10, 0xa3, 0xa4, 0x25, 0xa6, 0xa8, 0x02, 0x0a, 0x06, 0x01, 0x05, 0x15, 0xad, 0x55, 0xa1, 0x0b, 0x0c, 0xb1, 0xb2, 0x57, 0x09, 0xa7, 0x03, 0xc4, 0xb6, 0x0a, 0x0e, 0x8f, 0xad, 0x03, 0x08, 0xb9, 0x0a, 0x0a, 0xc0, 0xc2, 0xa5, 0xa7, 0x02, 0xc6, 0xa9, 0xc9, 0xd6, 0x03, 0xdb, 0x90, 0x0a, 0x0d, 0x0d, 0xd2, 0xd3, 0x24, 0x01, 0x0d, 0xd5, 0xd7, 0xc8, 0x0e, 0xdb, 0xea, 0xdc, 0xdf, 0xe0, 0xc1, 0x96, 0x6a, 0x04, 0xda, 0xf2, 0xd0, 0xe9, 0xdb, 0x83, 0x03, 0x8f, 0xed, 0x0c, 0x56, 0xe2, 0x22, 0x01, 0xdb, 0xe4, 0xa9, 0x43, 0xa7, 0x4e, 0x89, 0xaa, 0x7c, 0xdf, 0x1c, 0xf0, 0xf3, 0xf7, 0x2f, 0xa0, 0xb6, 0x6d, 0xf5, 0x0a, 0xe2, 0x13, 0xe0, 0xa0, 0xa2, 0x83, 0x7e, 0xfe, 0x00, 0x0e, 0x10, 0xa8, 0xae, 0xde, 0xc3, 0x89, 0x16, 0x2f, 0x32, 0xfc, 0x02, 0x61, 0xc0, 0x81, 0x75, 0x10, 0x9c, 0x95, 0xa1, 0x54, 0x17, 0x12, 0xa3, 0x38, 0x50, 0x2b, 0xb7, 0x45, 0xa8, 0xf8, 0x60, 0x65, 0xbb, 0x8a, 0x2e, 0xa7, 0xc1, 0xdc, 0x38, 0x07, 0xe2, 0xcc, 0x07, 0x0f, 0x07, 0x40, 0x8b, 0x30, 0xe1, 0x5b, 0xce, 0x69, 0x06, 0x0e, 0x1c, 0xf0, 0x33, 0x67, 0x68, 0x84, 0x07, 0x50, 0xb9, 0x29, 0x88, 0x70, 0xa1, 0xea, 0x3b, 0x4b, 0x49, 0x95, 0x32, 0x95, 0x19, 0x21, 0x42, 0xb2, 0x90, 0x53, 0x23, 0x54, 0x88, 0x70, 0x15, 0xab, 0xd2, 0xa5, 0x7e, 0x06, 0x78, 0xed, 0xda, 0x55, 0x42, 0x84, 0x03, 0xc0, 0x70, 0x95, 0x85, 0x17, 0xe0, 0x2c, 0xd3, 0x07, 0x4e, 0x25, 0x48, 0x50, 0x3a, 0x57, 0xe7, 0x59, 0xbb, 0x01, 0xf0, 0x42, 0x1d, 0xdc, 0x57, 0x98, 0x92, 0x34, 0x4a, 0x7c, 0x08, 0x56, 0xf2, 0xa0, 0xc1, 0xd1, 0x91, 0x49, 0x94, 0xf6, 0x0b, 0x80, 0x0b, 0xef, 0x64, 0x6f, 0x8f, 0x21, 0x07, 0x50, 0x95, 0x64, 0x40, 0x60, 0xce, 0x5f, 0x30, 0x43, 0x3e, 0xb1, 0x64, 0xdc, 0x67, 0x8c, 0xe4, 0x32, 0x8f, 0x26, 0x9d, 0xb3, 0xf4, 0xea, 0xd7, 0xb0, 0xed, 0x84, 0x00, 0x00, 0x3b }; #endif // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/kademlia/0000755000175000017500000000000012611472361020041 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/kademlia/kademlia/0000755000175000017500000000000012611472361021610 5ustar morphmorphamule_2.3.1+git20151120.0023527bc2.orig/src/kademlia/kademlia/Defines.h0000644000175000017500000000546012611472361023343 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2004-2011 Angel Vidal ( kry@amule.org ) // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2003-2011 Barry Dunne (http://www.emule-project.net) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // Note To Mods // /* Please do not change anything here and release it.. There is going to be a new forum created just for the Kademlia side of the client.. If you feel there is an error or a way to improve something, please post it in the forum first and let us look at it.. If it is a real improvement, it will be added to the offical client.. Changing something without knowing what all it does can cause great harm to the network if released in mass form.. Any mod that changes anything within the Kademlia side will not be allowed to advertise there client on the eMule forum.. */ #ifndef __KAD_DEFINES_H__ #define __KAD_DEFINES_H__ //////////////////////////////////////// namespace Kademlia { //////////////////////////////////////// #define SEARCHTOLERANCE 16777216 const unsigned int K = 10; #define KBASE 4 #define KK 5 #define ALPHA_QUERY 3 #define LOG_BASE_EXPONENT 5 #define HELLO_TIMEOUT 20 #define SEARCH_JUMPSTART 1 #define SEARCH_LIFETIME 45 #define SEARCHFILE_LIFETIME 45 #define SEARCHKEYWORD_LIFETIME 45 #define SEARCHNOTES_LIFETIME 45 #define SEARCHNODE_LIFETIME 45 #define SEARCHNODECOMP_LIFETIME 10 #define SEARCHSTOREFILE_LIFETIME 140 #define SEARCHSTOREKEYWORD_LIFETIME 140 #define SEARCHSTORENOTES_LIFETIME 100 #define SEARCHFINDBUDDY_LIFETIME 100 #define SEARCHFINDSOURCE_LIFETIME 45 #define SEARCHFILE_TOTAL 300 #define SEARCHKEYWORD_TOTAL 300 #define SEARCHNOTES_TOTAL 50 #define SEARCHSTOREFILE_TOTAL 10 #define SEARCHSTOREKEYWORD_TOTAL 10 #define SEARCHSTORENOTES_TOTAL 10 #define SEARCHNODECOMP_TOTAL 10 #define SEARCHFINDBUDDY_TOTAL 10 #define SEARCHFINDSOURCE_TOTAL 20 } // End namespace #endif // __KAD_DEFINES_H__ // File_checked_for_headers amule_2.3.1+git20151120.0023527bc2.orig/src/kademlia/kademlia/Entry.cpp0000644000175000017500000005511312611472361023422 0ustar morphmorph// // This file is part of the aMule Project. // // Copyright (c) 2008-2011 Dévai Tamás ( gonosztopi@amule.org ) // Copyright (c) 2004-2011 aMule Team ( admin@amule.org / http://www.amule.org ) // Copyright (c) 2003-2011 Barry Dunne (http://www.emule-project.net) // // Any parts of this program derived from the xMule, lMule or eMule project, // or contributed by third-party developers are copyrighted by their // respective authors. // // 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, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA // // Note To Mods // /* Please do not change anything here and release it.. There is going to be a new forum created just for the Kademlia side of the client.. If you feel there is an error or a way to improve something, please post it in the forum first and let us look at it.. If it is a real improvement, it will be added to the offical client.. Changing something without knowing what all it does can cause great harm to the network if released in mass form.. Any mod that changes anything within the Kademlia side will not be allowed to advertise there client on the eMule forum.. */ #include "Entry.h" #include #include #include #include "Indexed.h" #include "../../SafeFile.h" #include "../../GetTickCount.h" #include "../../Logger.h" #include "../../NetworkFunctions.h" using namespace Kademlia; CKeyEntry::GlobalPublishIPMap CKeyEntry::s_globalPublishIPs; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////// CEntry CEntry::~CEntry() { deleteTagPtrListEntries(&m_taglist); } CEntry* CEntry::Copy() const { CEntry* entry = new CEntry(); for (FileNameList::const_iterator it = m_filenames.begin(); it != m_filenames.end(); ++it) { entry->m_filenames.push_back(*it); } entry->m_uIP = m_uIP; entry->m_uKeyID = m_uKeyID; entry->m_tLifeTime = m_tLifeTime; entry->m_uSize = m_uSize; entry->m_bSource = m_bSource; entry->m_uSourceID = m_uSourceID; entry->m_uTCPport = m_uTCPport; entry->m_uUDPport = m_uUDPport; for (TagPtrList::const_iterator it = m_taglist.begin(); it != m_taglist.end(); ++it) { entry->m_taglist.push_back((*it)->CloneTag()); } return entry; } bool CEntry::GetIntTagValue(const wxString& tagname, uint64_t& value, bool includeVirtualTags) const { for (TagPtrList::const_iterator it = m_taglist.begin(); it != m_taglist.end(); ++it) { if ((*it)->IsInt() && ((*it)->GetName() == tagname)) { value = (*it)->GetInt(); return true; } } if (includeVirtualTags) { // SizeTag is not stored anymore, but queried in some places if (tagname == TAG_FILESIZE) { value = m_uSize; return true; } } value = 0; return false; } wxString CEntry::GetStrTagValue(const wxString& tagname) const { for (TagPtrList::const_iterator it = m_taglist.begin(); it != m_taglist.end(); ++it) { if (((*it)->GetName() == tagname) && (*it)->IsStr()) { return (*it)->GetStr(); } } return wxEmptyString; } void CEntry::SetFileName(const wxString& name) { if (!m_filenames.empty()) { wxFAIL; m_filenames.clear(); } sFileNameEntry sFN = { name, 1 }; m_filenames.push_front(sFN); } wxString CEntry::GetCommonFileName() const { // return the filename on which most publishers seem to agree on // due to the counting, this doesn't has to be excact, we just want to make sure to not use a filename which just // a few bad publishers used and base or search matching and answering on this, instead of the most popular name // Note: The Index values are not the acutal numbers of publishers, but just a relativ number to compare to other entries FileNameList::const_iterator result = m_filenames.end(); uint32_t highestPopularityIndex = 0; for (FileNameList::const_iterator it = m_filenames.begin(); it != m_filenames.end(); ++it) { if (it->m_popularityIndex > highestPopularityIndex) { highestPopularityIndex = it->m_popularityIndex; result = it; } } wxString strResult(result != m_filenames.end() ? result->m_filename : wxString(wxEmptyString)); wxASSERT(!strResult.IsEmpty() || m_filenames.empty()); return strResult; } void CEntry::WriteTagListInc(CFileDataIO* data, uint32_t increaseTagNumber) { // write taglist and add name + size tag wxCHECK_RET(data != NULL, wxT("data must not be NULL")); uint32_t count = GetTagCount() + increaseTagNumber; // will include name and size tag in the count if needed wxASSERT(count <= 0xFF); data->WriteUInt8((uint8_t)count); if (!GetCommonFileName().IsEmpty()){ wxASSERT(count > m_taglist.size()); data->WriteTag(CTagString(TAG_FILENAME, GetCommonFileName())); } if (m_uSize != 0){ wxASSERT(count > m_taglist.size()); data->WriteTag(CTagVarInt(TAG_FILESIZE, m_uSize)); } for (TagPtrList::const_iterator it = m_taglist.begin(); it != m_taglist.end(); ++it) { data->WriteTag(**it); } } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////// CKeyEntry CKeyEntry::CKeyEntry() { m_publishingIPs = NULL; m_trustValue = 0; m_lastTrustValueCalc = 0; } CKeyEntry::~CKeyEntry() { if (m_publishingIPs != NULL) { for (PublishingIPList::const_iterator it = m_publishingIPs->begin(); it != m_publishingIPs->end(); ++it) { AdjustGlobalPublishTracking(it->m_ip, false, wxT("instance delete")); } delete m_publishingIPs; m_publishingIPs = NULL; } } bool CKeyEntry::SearchTermsMatch(const SSearchTerm* searchTerm) const { // boolean operators if (searchTerm->type == SSearchTerm::AND) { return SearchTermsMatch(searchTerm->left) && SearchTermsMatch(searchTerm->right); } if (searchTerm->type == SSearchTerm::OR) { return SearchTermsMatch(searchTerm->left) || SearchTermsMatch(searchTerm->right); } if (searchTerm->type == SSearchTerm::NOT) { return SearchTermsMatch(searchTerm->left) && !SearchTermsMatch(searchTerm->right); } // word which is to be searched in the file name (and in additional meta data as done by some ed2k servers???) if (searchTerm->type == SSearchTerm::String) { int strSearchTerms = searchTerm->astr->GetCount(); if (strSearchTerms == 0) { return false; } // if there are more than one search strings specified (e.g. "aaa bbb ccc") the entire string is handled // like "aaa AND bbb AND ccc". search all strings from the string search term in the tokenized list of // the file name. all strings of string search term have to be found (AND) wxString commonFileNameLower(GetCommonFileNameLowerCase()); for (int i = 0; i < strSearchTerms; i++) { // this will not give the same results as when tokenizing the filename string, but it is 20 times faster. if (commonFileNameLower.Find((*(searchTerm->astr))[i]) == -1) { return false; } } return true; } if (searchTerm->type == SSearchTerm::MetaTag) { if (searchTerm->tag->GetType() == 2) { // meta tags with string values if (searchTerm->tag->GetName() == TAG_FILEFORMAT) { // 21-Sep-2006 []: Special handling for TAG_FILEFORMAT which is already part // of the filename and thus does not need to get published nor stored explicitly, wxString commonFileName(GetCommonFileName()); int ext = commonFileName.Find(wxT('.'), true); if (ext != wxNOT_FOUND) { return commonFileName.Mid(ext + 1).CmpNoCase(searchTerm->tag->GetStr()) == 0; } } else { for (TagPtrList::const_iterator it = m_taglist.begin(); it != m_taglist.end(); ++it) { if ((*it)->IsStr() && searchTerm->tag->GetName() == (*it)->GetName()) { return (*it)->GetStr().CmpNoCase(searchTerm->tag->GetStr()) == 0; } } } } } else if (searchTerm->type == SSearchTerm::OpGreaterEqual) { if (searchTerm->tag->IsInt()) { // meta tags with integer values uint64_t value; if (GetIntTagValue(searchTerm->tag->GetName(), value, true)) { return value >= searchTerm->tag->GetInt(); } } else if (searchTerm->tag->IsFloat()) { // meta tags with float values for (TagPtrList::const_iterator it = m_taglist.begin(); it != m_taglist.end(); ++it) { if ((*it)->IsFloat() && searchTerm->tag->GetName() == (*it)->GetName()) { return (*it)->GetFloat() >= searchTerm->tag->GetFloat(); } } } } else if (searchTerm->type == SSearchTerm::OpLessEqual) { if (searchTerm->tag->IsInt()) { // meta tags with integer values uint64_t value; if (GetIntTagValue(searchTerm->tag->GetName(), value, true)) { return value <= searchTerm->tag->GetInt(); } } else if (searchTerm->tag->IsFloat()) { // meta tags with float values for (TagPtrList::const_iterator it = m_taglist.begin(); it != m_taglist.end(); ++it) { if ((*it)->IsFloat() && searchTerm->tag->GetName() == (*it)->GetName()) { return (*it)->GetFloat() <= searchTerm->tag->GetFloat(); } } } } else if (searchTerm->type == SSearchTerm::OpGreater) { if (searchTerm->tag->IsInt()) { // meta tags with integer values uint64_t value; if (GetIntTagValue(searchTerm->tag->GetName(), value, true)) { return value > searchTerm->tag->GetInt(); } } else if (searchTerm->tag->IsFloat()) { // meta tags with float values for (TagPtrList::const_iterator it = m_taglist.begin(); it != m_taglist.end(); ++it) { if ((*it)->IsFloat() && searchTerm->tag->GetName() == (*it)->GetName()) { return (*it)->GetFloat() > searchTerm->tag->GetFloat(); } } } } else if (searchTerm->type == SSearchTerm::OpLess) { if (searchTerm->tag->IsInt()) { // meta tags with integer values uint64_t value; if (GetIntTagValue(searchTerm->tag->GetName(), value, true)) { return value < searchTerm->tag->GetInt(); } } else if (searchTerm->tag->IsFloat()) { // meta tags with float values for (TagPtrList::const_iterator it = m_taglist.begin(); it != m_taglist.end(); ++it) { if ((*it)->IsFloat() && searchTerm->tag->GetName() == (*it)->GetName()) { return (*it)->GetFloat() < searchTerm->tag->GetFloat(); } } } } else if (searchTerm->type == SSearchTerm::OpEqual) { if (searchTerm->tag->IsInt()) { // meta tags with integer values uint64_t value; if (GetIntTagValue(searchTerm->tag->GetName(), value, true)) { return value == searchTerm->tag->GetInt(); } } else if (searchTerm->tag->IsFloat()) { // meta tags with float values for (TagPtrList::const_iterator it = m_taglist.begin(); it != m_taglist.end(); ++it) { if ((*it)->IsFloat() && searchTerm->tag->GetName() == (*it)->GetName()) { return (*it)->GetFloat() == searchTerm->tag->GetFloat(); } } } } else if (searchTerm->type == SSearchTerm::OpNotEqual) { if (searchTerm->tag->IsInt()) { // meta tags with integer values uint64_t value; if (GetIntTagValue(searchTerm->tag->GetName(), value, true)) { return value != searchTerm->tag->GetInt(); } } else if (searchTerm->tag->IsFloat()) { // meta tags with float values for (TagPtrList::const_iterator it = m_taglist.begin(); it != m_taglist.end(); ++it) { if ((*it)->IsFloat() && searchTerm->tag->GetName() == (*it)->GetName()) { return (*it)->GetFloat() != searchTerm->tag->GetFloat(); } } } } return false; } void CKeyEntry::AdjustGlobalPublishTracking(uint32_t ip, bool increase, const wxString& DEBUG_ONLY(dbgReason)) { uint32_t count = 0; bool found = false; GlobalPublishIPMap::const_iterator it = s_globalPublishIPs.find(ip & 0xFFFFFF00 /* /24 netmask, take care of endian if needed */ ); if (it != s_globalPublishIPs.end()) { count = it->second; found = true; } if (increase) { count++; } else { count--; } if (count > 0) { s_globalPublishIPs[ip & 0xFFFFFF00] = count; } else if (found) { s_globalPublishIPs.erase(ip & 0xFFFFFF00); } else { wxFAIL; } #ifdef __DEBUG__ if (!dbgReason.IsEmpty()) { AddDebugLogLineN(logKadEntryTracking, CFormat(wxT("%s %s (%s) - (%s), new count %u")) % (increase ? wxT("Adding") : wxT("Removing")) % KadIPToString(ip & 0xFFFFFF00) % KadIPToString(ip) % dbgReason % count); } #endif } void CKeyEntry::MergeIPsAndFilenames(CKeyEntry* fromEntry) { // this is called when replacing a stored entry with a refreshed one. // we want to take over the tracked IPs and the different filenames from the old entry, the rest is still // "overwritten" with the refreshed values. This might be not perfect for the taglist in some cases, but we can't afford // to store hundreds of taglists to figure out the best one like we do for the filenames now if (m_publishingIPs != NULL) { // This instance needs to be a new entry, otherwise we don't want/need to merge wxASSERT(fromEntry == NULL); wxASSERT(!m_publishingIPs->empty()); wxASSERT(!m_filenames.empty()); return; } bool refresh = false; if (fromEntry == NULL || fromEntry->m_publishingIPs == NULL) { wxASSERT(fromEntry == NULL); // if called with NULL, this is a complete new entry and we need to initalize our lists if (m_publishingIPs == NULL) { m_publishingIPs = new PublishingIPList(); } // update the global track map below } else { // merge the tracked IPs, add this one if not already on the list m_publishingIPs = fromEntry->m_publishingIPs; fromEntry->m_publishingIPs = NULL; bool fastRefresh = false; for (PublishingIPList::iterator it = m_publishingIPs->begin(); it != m_publishingIPs->end(); ++it) { if (it->m_ip == m_uIP) { refresh = true; if ((time(NULL) - it->m_lastPublish) < (KADEMLIAREPUBLISHTIMES - HR2S(1))) { AddDebugLogLineN(logKadEntryTracking, wxT("FastRefresh publish, ip: ") + KadIPToString(m_uIP)); fastRefresh = true; // refreshed faster than expected, will not count into filenamepopularity index } it->m_lastPublish = time(NULL); m_publishingIPs->push_back(*it); m_publishingIPs->erase(it); break; } } // copy over trust value, in case we don't want to recalculate m_trustValue = fromEntry->m_trustValue; m_lastTrustValueCalc = fromEntry->m_lastTrustValueCalc; // copy over the different names, if they are different the one we have right now wxASSERT(m_filenames.size() == 1); // we should have only one name here, since it's the entry from one single source sFileNameEntry currentName = { wxEmptyString, 0 }; if (m_filenames.size() != 0) { currentName = m_filenames.front(); m_filenames.pop_front(); } bool duplicate = false; for (FileNameList::iterator it = fromEntry->m_filenames.begin(); it != fromEntry->m_filenames.end(); ++it) { sFileNameEntry nameToCopy = *it; if (currentName.m_filename.CmpNoCase(nameToCopy.m_filename) == 0) { // the filename of our new entry matches with our old, increase the popularity index for the old one duplicate = true; if (!fastRefresh) { nameToCopy.m_popularityIndex++; } } m_filenames.push_back(nameToCopy); } if (!duplicate) { m_filenames.push_back(currentName); } } // if this was a refresh done, otherwise update the global track map if (!refresh) { wxASSERT(m_uIP != 0); sPublishingIP add = { m_uIP, time(NULL) }; m_publishingIPs->push_back(add); // add the publisher to the tacking list AdjustGlobalPublishTracking(m_uIP, true, wxT("new publisher")); // we keep track of max 100 IPs, in order to avoid too much time for calculation/storing/loading. if (m_publishingIPs->size() > 100) { sPublishingIP curEntry = m_publishingIPs->front(); m_publishingIPs->pop_front(); AdjustGlobalPublishTracking(curEntry.m_ip, false, wxT("more than 100 publishers purge")); } // since we added a new publisher, we want to (re)calculate the trust value for this entry ReCalculateTrustValue(); } AddDebugLogLineN(logKadEntryTracking, CFormat(wxT("Indexed Keyword, Refresh: %s, Current Publisher: %s, Total Publishers: %u, Total different Names: %u, TrustValue: %.2f, file: %s")) % (refresh ? wxT("Yes") : wxT("No")) % KadIPToString(m_uIP) % m_publishingIPs->size() % m_filenames.size() % m_trustValue % m_uSourceID.ToHexString()); } void CKeyEntry::ReCalculateTrustValue() { #define PUBLISHPOINTSSPERSUBNET 10.0 // The trustvalue is supposed to be an indicator how trustworthy/important (or spammy) this entry is and lies between 0 and ~10000, // but mostly we say everything below 1 is bad, everything above 1 is good. It is calculated by looking at how many different // IPs/24 have published this entry and how many entries each of those IPs have. // Each IP/24 has x (say 3) points. This means if one IP publishes 3 different entries without any other IP publishing those entries, // each of those entries will have 3 / 3 = 1 Trustvalue. Thats fine. If it publishes 6 alone, each entry has 3 / 6 = 0.5 trustvalue - not so good // However if there is another publisher for entry 5, which only publishes this entry then we have 3/6 + 3/1 = 3.5 trustvalue for this entry // // What's the point? With this rating we try to avoid getting spammed with entries for a given keyword by a small IP range, which blends out // all other entries for this keyword do to its amount as well as giving an indicator for the searcher. So if we are the node to index "Knoppix", and someone // from 1 IP publishes 500 times "knoppix casino 500% bonus.txt", all those entries will have a trustvalue of 0.006 and we make sure that // on search requests for knoppix, those entries are only returned after all entries with a trustvalue > 1 were sent (if there is still space). // // Its important to note that entry with < 1 do NOT get ignored or singled out, this only comes into play if we have 300 more results for // a search request rating > 1 wxCHECK_RET(m_publishingIPs != NULL, wxT("No publishing IPs?")); m_lastTrustValueCalc = ::GetTickCount(); m_trustValue = 0; wxASSERT(!m_publishingIPs->empty()); for (PublishingIPList::iterator it = m_publishingIPs->begin(); it != m_publishingIPs->end(); ++it) { sPublishingIP curEntry = *it; uint32_t count = 0; GlobalPublishIPMap::const_iterator itMap = s_globalPublishIPs.find(curEntry.m_ip & 0xFFFFFF00 /* /24 netmask, take care of endian if needed*/); if (itMap != s_globalPublishIPs.end()) { count = itMap->second; } if (count > 0) { m_trustValue += PUBLISHPOINTSSPERSUBNET / count; } else { AddDebugLogLineN(logKadEntryTracking, wxT("Inconsistency in RecalcualteTrustValue()")); wxFAIL; } } } double CKeyEntry::GetTrustValue() { // update if last calcualtion is too old, will assert if this entry is not supposed to have a trustvalue if (::GetTickCount() - m_lastTrustValueCalc > MIN2MS(10)) { ReCalculateTrustValue(); } return m_trustValue; } void CKeyEntry::CleanUpTrackedPublishers() { if (m_publishingIPs == NULL) { return; } time_t now = time(NULL); while (!m_publishingIPs->empty()) { // entries are ordered, older ones first sPublishingIP curEntry = m_publishingIPs->front(); if (now - curEntry.m_lastPublish > KADEMLIAREPUBLISHTIMEK) { AdjustGlobalPublishTracking(curEntry.m_ip, false, wxT("cleanup")); m_publishingIPs->pop_front(); } else { break; } } } void CKeyEntry::WritePublishTrackingDataToFile(CFileDataIO* data) { // format: <{} Names_Count><{